From 5de998bdb76c0354d43f5ef0511e08c2aebe96a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9gory=20Houllier?= Date: Fri, 7 Apr 2017 10:17:05 +0200 Subject: [PATCH 01/90] Add type definitions for zetapush-js --- types/zetapush-js/index.d.ts | 187 +++++++++++++++++++++++++ types/zetapush-js/tsconfig.json | 22 +++ types/zetapush-js/tslint.json | 1 + types/zetapush-js/zetapush-js-tests.ts | 23 +++ 4 files changed, 233 insertions(+) create mode 100644 types/zetapush-js/index.d.ts create mode 100644 types/zetapush-js/tsconfig.json create mode 100644 types/zetapush-js/tslint.json create mode 100644 types/zetapush-js/zetapush-js-tests.ts diff --git a/types/zetapush-js/index.d.ts b/types/zetapush-js/index.d.ts new file mode 100644 index 0000000000..879f5e6f2c --- /dev/null +++ b/types/zetapush-js/index.d.ts @@ -0,0 +1,187 @@ +// Type definitions for zetapush-js 3.1 +// Project: https://github.com/zetapush/zetapush-js +// Definitions by: ghoullier +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +interface HandshakeFields { + ext: any; +} + +interface AbstractHandshakeOptions { + authType: string; + sandboxId: string; + deploymentId: string; +} + +interface CredentialsHandshakeOptions { + authType: string; + deploymentId: string; + login: string; + password: string; +} + +interface TokenHandshakeOptions { + authType: string; + deploymentId: string; + token: string; +} + +interface AbstractHandshake { + authType: string; + authVersion: string; + sandboxId: string; + deploymentId: string; + getHandshakeFields(client: Client): HandshakeFields; +} + +interface CredentialsAuthData { + login: string; + password: string; +} + +interface CredentialsHandshake extends AbstractHandshake { + login: string; + password: string; + authData: CredentialsAuthData; +} + +interface TokenAuthData { + token: string; +} + +interface TokenHandshake extends AbstractHandshake { + token: string; + authData: TokenAuthData; +} + +type AuthenticationCallback = () => AbstractHandshake; + +type AsyncMacroServicePublisher = (method: string, parameters: any, hardFail?: boolean, debug?: number) => Promise; + +type MacroServicePublisher = (method: string, parameters: any, hardFail?: boolean, debug?: number) => void; + +type ServicePublisher = (method: string, parameters: any) => void; + +interface Options { + apiUrl?: string; + sandboxId: string; + forceHttps?: boolean; + resource?: string; + transports?: any[]; +} + +interface ClientOptions extends Options { + authentication(): AbstractHandshake; +} + +interface WeakClientOptions extends Options { + deploymentId?: string; +} + +interface Services { + Macro: AsyncMacroService; + Messaging: Service; +} + +interface Service { + DEFAULT_DEPLOYMENT_ID: string; + $publish: ServicePublisher; +} + +interface AsyncMacroService { + DEFAULT_DEPLOYMENT_ID: string; + $publish: AsyncMacroServicePublisher; +} + +interface MacroService { + DEFAULT_DEPLOYMENT_ID: string; + $publish: MacroServicePublisher; +} + +interface ServiceDeclaration { + Type: Service; + deploymentId?: string; +} + +interface Token { + token: string; +} + +interface Credentials { + login: string; + password: string; +} + +interface ClientHelper { + authentication: AuthenticationCallback; + servers: Promise; + getUniqRequestId(): string; +} + +type ConnectionStatusHandler = number; + +export class Authentication { + static delegating({ token }: TokenAuthData): TokenHandshake; + static simple({ login, password }: CredentialsAuthData): CredentialsHandshake; + static weak({ token }: TokenAuthData): TokenHandshake; +} + +export interface ConnectionStatusListener { + onConnectionBroken(): void; + onConnectionClosed(): void; + onConnectionEstablished(): void; + onConnectionToServerFail(failure: any): void; + onConnectionWillClose(): void; + onFailedHandshake(failure: any): void; + onMessageLost(): void; + onNoServerUrlAvailable(): void; + onSuccessfulHandshake(authentication: any): void; +} + +export class Client { + helper: ClientHelper; + constructor(options: ClientOptions); + addConnectionStatusListener(listener: ConnectionStatusListener): ConnectionStatusHandler; + connect(): void; + createService(declaration: ServiceDeclaration): Service; + createAsyncMacroService(declaration: ServiceDeclaration): AsyncMacroService; + disconnect(): void; + isConnected(): boolean; + getSandboxId(): string; + getResource(): string; + getUserId(): string; + removeConnectionStatusListener(listener: ConnectionStatusHandler): void; + setAuthentication(authentication: AuthenticationCallback): void; + setLogLevel(level: string): void; + setResource(resource: string): void; + unsubscribe(service: Service): void; + // + onConnectionBroken(handler: () => void): void; + onConnectionClosed(handler: () => void): void; + onConnectionEstablished(handler: () => void): void; + onConnectionToServerFail(handler: (failure: any) => void): void; + onConnectionWillClose(handler: () => void): void; + onFailedHandshake(handler: (failure: any) => void): void; + onMessageLost(handler: () => void): void; + onNoServerUrlAvailable(handler: () => void): void; + onSuccessfulHandshake(handler: (authentication: any) => void): void; +} + +export class SmartClient extends Client { + getCredentials(): any; + getSession(): any; + hasCredentials(): boolean; + isStronglyAuthenticated(session?: any): boolean; + isWeaklyAuthenticated(session?: any): boolean; + setCredentials(credentials: any): void; +} +export class WeakClient extends Client { + constructor(options: WeakClientOptions); + getToken(): Token; +} + +export const services: Services; + +export const VERSION: string; + +export as namespace ZetaPush; diff --git a/types/zetapush-js/tsconfig.json b/types/zetapush-js/tsconfig.json new file mode 100644 index 0000000000..78526186fb --- /dev/null +++ b/types/zetapush-js/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "zetapush-js-tests.ts" + ] +} diff --git a/types/zetapush-js/tslint.json b/types/zetapush-js/tslint.json new file mode 100644 index 0000000000..377cc837d4 --- /dev/null +++ b/types/zetapush-js/tslint.json @@ -0,0 +1 @@ +{ "extends": "../tslint.json" } diff --git a/types/zetapush-js/zetapush-js-tests.ts b/types/zetapush-js/zetapush-js-tests.ts new file mode 100644 index 0000000000..46eb822680 --- /dev/null +++ b/types/zetapush-js/zetapush-js-tests.ts @@ -0,0 +1,23 @@ +import { Authentication, Client, WeakClient } from 'zetapush-js'; + +const weak = new WeakClient({ + sandboxId: '' +}); + +weak.onConnectionEstablished(() => { + // onConnectionEstablished; +}); +weak.connect(); + +const client = new Client({ + apiUrl: '', + sandboxId: '', + authentication: () => Authentication.simple({ + login: 'login', + password: 'password' + }) +}); +client.onConnectionEstablished(() => { + // onConnectionEstablished; +}); +client.connect(); From 0fdb5ea6f30d2b39a8a91c95c6dbcb9f4a6cc30f Mon Sep 17 00:00:00 2001 From: kamek-pf Date: Mon, 10 Apr 2017 12:36:26 -0400 Subject: [PATCH 02/90] Fixed types for Thrift 0.10.0 --- types/thrift/index.d.ts | 302 ++++------------------------------- types/thrift/thrift-tests.ts | 3 +- types/thrift/tsconfig.json | 2 +- types/thrift/tslint.json | 3 + 4 files changed, 33 insertions(+), 277 deletions(-) create mode 100644 types/thrift/tslint.json diff --git a/types/thrift/index.d.ts b/types/thrift/index.d.ts index 3db53d91d9..cd11e25357 100644 --- a/types/thrift/index.d.ts +++ b/types/thrift/index.d.ts @@ -1,280 +1,34 @@ -// Type definitions for thrift 0.9.2 +// Type definitions for thrift 0.10.0 // Project: https://www.npmjs.com/package/thrift -// Definitions by: Zachary Collins +// Definitions by: Kamek // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. +export as namespace Thrift; + +/** + * Protocols and Transports */ +export class TBufferedTransport {} +export class TXHRTransport {} +export class TJSONProtocol {} +export class TBinaryProtocol {} -export declare module Thrift { - /** - * Thrift IDL type string to Id mapping. - * @property {number} STOP - End of a set of fields. - * @property {number} VOID - No value (only legal for return types). - * @property {number} BOOL - True/False integer. - * @property {number} BYTE - Signed 8 bit integer. - * @property {number} I08 - Signed 8 bit integer. - * @property {number} DOUBLE - 64 bit IEEE 854 floating point. - * @property {number} I16 - Signed 16 bit integer. - * @property {number} I32 - Signed 32 bit integer. - * @property {number} I64 - Signed 64 bit integer. - * @property {number} STRING - Array of bytes representing a string of characters. - * @property {number} UTF7 - Array of bytes representing a string of UTF7 encoded characters. - * @property {number} STRUCT - A multifield type. - * @property {number} MAP - A collection type (map/associative-array/dictionary). - * @property {number} SET - A collection type (unordered and without repeated values). - * @property {number} LIST - A collection type (unordered). - * @property {number} UTF8 - Array of bytes representing a string of UTF8 encoded characters. - * @property {number} UTF16 - Array of bytes representing a string of UTF16 encoded characters. - */ - interface Type { - 'STOP': number; - 'VOID': number; - 'BOOL': number; - 'BYTE': number; - 'I08': number; - 'DOUBLE': number; - 'I16': number; - 'I32': number; - 'I64': number; - 'STRING': number; - 'UTF7': number; - 'STRUCT': number; - 'MAP': number; - 'SET': number; - 'LIST': number; - 'UTF8': number; - 'UTF16': number; - } - var Type: Type; - - /** - * Thrift RPC message type string to Id mapping. - * @property {number} CALL - RPC call sent from client to server. - * @property {number} REPLY - RPC call normal response from server to client. - * @property {number} EXCEPTION - RPC call exception response from server to client. - * @property {number} ONEWAY - Oneway RPC call from client to server with no response. - */ - interface MessageType { - 'CALL': number; - 'REPLY': number; - 'EXCEPTION': number; - 'ONEWAY': number; - } - var MessageType: MessageType; - - /** - * Utility function returning the count of an object's own properties. - * @param {object} obj - Object to test. - * @returns {number} number of object's own properties - */ - function objectLength(obj: Object): number; - - /** - * Utility function to establish prototype inheritance. - * @param {function} constructor - Contstructor function to set as derived. - * @param {function} superConstructor - Contstructor function to set as base. - * @param {string} [name] - Type name to set as name property in derived prototype. - */ - function inherits(constructor: Function, superConstructor: Function, name?: string): void; - - /** - * TException is the base class for all Thrift exceptions types. - */ - class TException implements Error { - name: string; - message: string; - - /** - * Initializes a Thrift TException instance. - * @param {string} message - The TException message (distinct from the Error message). - */ - constructor(message: string); - - /** - * Returns the message set on the exception. - * @returns {string} exception message - */ - getMessage(): string; - } - - /** - * Thrift Application Exception type string to Id mapping. - * @property {number} UNKNOWN - Unknown/undefined. - * @property {number} UNKNOWN_METHOD - Client attempted to call a method unknown to the server. - * @property {number} INVALID_MESSAGE_TYPE - Client passed an unknown/unsupported MessageType. - * @property {number} WRONG_METHOD_NAME - Unused. - * @property {number} BAD_SEQUENCE_ID - Unused in Thrift RPC, used to flag proprietary sequence number errors. - * @property {number} MISSING_RESULT - Raised by a server processor if a handler fails to supply the required return result. - * @property {number} INTERNAL_ERROR - Something bad happened. - * @property {number} PROTOCOL_ERROR - The protocol layer failed to serialize or deserialize data. - * @property {number} INVALID_TRANSFORM - Unused. - * @property {number} INVALID_PROTOCOL - The protocol (or version) is not supported. - * @property {number} UNSUPPORTED_CLIENT_TYPE - Unused. - */ - interface TApplicationExceptionType { - 'UNKNOWN': number; - 'UNKNOWN_METHOD': number; - 'INVALID_MESSAGE_TYPE': number; - 'WRONG_METHOD_NAME': number; - 'BAD_SEQUENCE_ID': number; - 'MISSING_RESULT': number; - 'INTERNAL_ERROR': number; - 'PROTOCOL_ERROR': number; - 'INVALID_TRANSFORM': number; - 'INVALID_PROTOCOL': number; - 'UNSUPPORTED_CLIENT_TYPE': number; - } - var TApplicationExceptionType: TApplicationExceptionType; - - /** - * TApplicationException is the exception class used to propagate exceptions from an RPC server back to a calling client. - */ - class TApplicationException extends TException { - message: string; - code: number; - - /** - * Initializes a Thrift TApplicationException instance. - * @param {string} message - The TApplicationException message (distinct from the Error message). - * @param {Thrift.TApplicationExceptionType} [code] - The TApplicationExceptionType code. - */ - constructor(message: string, code?: number); - - /** - * Read a TApplicationException from the supplied protocol. - * @param {object} input - The input protocol to read from. - */ - read(input: Object): void; - - /** - * Write a TApplicationException to the supplied protocol. - * @param {object} output - The output protocol to write to. - */ - write(output: Object): void; - - /** - * Returns the application exception code set on the exception. - * @returns {Thrift.TApplicationExceptionType} exception code - */ - getCode(): number; - } - - /** - * The Apache Thrift Transport layer performs byte level I/O between RPC - * clients and servers. The JavaScript Transport object type uses Http[s]/XHR and is - * the sole browser based Thrift transport. Target servers must implement the http[s] - * transport (see: node.js example server). - */ - class TXHRTransport { - url: string; - wpos: number; - rpos: number; - useCORS: any; - send_buf: string; - recv_buf: string; - - /** - * If you do not specify a url then you must handle XHR operations on - * your own. This type can also be constructed using the Transport alias - * for backward compatibility. - * @param {string} [url] - The URL to connect to. - * @param {object} [options] - Options. - */ - constructor(url?: string, options?: Object); - - /** - * Gets the browser specific XmlHttpRequest Object. - * @returns {object} the browser XHR interface object - */ - getXmlHttpRequestObject(): Object; - - /** - * Sends the current XRH request if the transport was created with a URL and - * the async parameter if false. If the transport was not created with a URL - * or the async parameter is True or the URL is an empty string, the current - * send buffer is returned. - * @param {object} async - If true the current send buffer is returned. - * @param {function} callback - Optional async completion callback. - * @returns {undefined|string} Nothing or the current send buffer. - */ - flush(async: any, callback?: Function): string; - - /** - * Creates a jQuery XHR object to be used for a Thrift server call. - * @param {object} client - The Thrift Service client object generated by the IDL compiler. - * @param {object} postData - The message to send to the server. - * @param {function} args - The function to call if the request succeeds. - * @param {function} recv_method - The Thrift Service Client receive method for the call. - * @returns {object} A new jQuery XHR object. - */ - jqRequest(client: Object, postData: any, args: Function, recv_method: Function): Object; - - /** - * Sets the buffer to use when receiving server responses. - * @param {string} buf - The buffer to receive server responses. - */ - setRecvBuffer(buf: string): void; - - /** - * Returns true if the transport is open, in browser based JavaScript - * this function always returns true. - * @returns {boolean} Always True. - */ - isOpen(): boolean; - - /** - * Opens the transport connection, in browser based JavaScript - * this function is a nop. - */ - open(): void; - - /** - * Closes the transport connection, in browser based JavaScript - * this function is a nop. - */ - close(): void; - - /** - * Returns the specified number of characters from the response - * buffer. - * @param {number} len - The number of characters to return. - * @returns {string} Characters sent by the server. - */ - read(len: number): string; - - /** - * Returns the entire response buffer. - * @returns {string} Characters sent by the server. - */ - readAll(): string; - - /** - * Sets the send buffer to buf. - * @param {string} buf - The buffer to send. - */ - write(buf: string): void; - - /** - * Returns the send buffer. - * @returns {string} The send buffer. - */ - getSendBuffer(): string; - } +/** + * Server side + */ +export interface ThriftServer { + listen(port: number): any; } + +export function createServer(generatedService: any, serviceMethods: any): ThriftServer; + +/** + * Client side + */ +export interface ClientConnectionParams { + transport: TJSONProtocol | TBinaryProtocol; + protocol: TBufferedTransport | TXHRTransport; +} + +export function createConnection(host: string, port: number, params: ClientConnectionParams): {}; +export function createClient(generatedService: any, connection: {}): any; diff --git a/types/thrift/thrift-tests.ts b/types/thrift/thrift-tests.ts index f437764bc9..0d3ff97277 100644 --- a/types/thrift/thrift-tests.ts +++ b/types/thrift/thrift-tests.ts @@ -1,7 +1,6 @@ // Currently, the thrift bindings are minimal just to support the thrift generated -// evernote bindings. Add more tests if you flesh out and plan to use the thrift +// evernote bindings. Add more tests if you flesh out and plan to use the thrift // bindings more deeply. - import evernote = require("evernote"); 1 + 1; diff --git a/types/thrift/tsconfig.json b/types/thrift/tsconfig.json index 714c4108e9..29562363f2 100644 --- a/types/thrift/tsconfig.json +++ b/types/thrift/tsconfig.json @@ -19,4 +19,4 @@ "index.d.ts", "thrift-tests.ts" ] -} \ No newline at end of file +} diff --git a/types/thrift/tslint.json b/types/thrift/tslint.json new file mode 100644 index 0000000000..f9e30021f4 --- /dev/null +++ b/types/thrift/tslint.json @@ -0,0 +1,3 @@ +{ + "extends": "../tslint.json" +} From d06df75ac2fb393e239e874b5e0c7c9b180e15a2 Mon Sep 17 00:00:00 2001 From: kamek-pf Date: Mon, 10 Apr 2017 21:06:11 -0400 Subject: [PATCH 03/90] Added connexion event listener --- types/thrift/index.d.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/types/thrift/index.d.ts b/types/thrift/index.d.ts index cd11e25357..aea4bdf01a 100644 --- a/types/thrift/index.d.ts +++ b/types/thrift/index.d.ts @@ -17,7 +17,7 @@ export class TBinaryProtocol {} * Server side */ export interface ThriftServer { - listen(port: number): any; + listen(port: number): any; } export function createServer(generatedService: any, serviceMethods: any): ThriftServer; @@ -25,10 +25,16 @@ export function createServer(generatedService: any, serviceMethods: any): Thrift /** * Client side */ +export type ConnexionEvent = 'open' | 'message' | 'close' | 'error'; + export interface ClientConnectionParams { - transport: TJSONProtocol | TBinaryProtocol; - protocol: TBufferedTransport | TXHRTransport; + transport: TJSONProtocol | TBinaryProtocol; + protocol: TBufferedTransport | TXHRTransport; } -export function createConnection(host: string, port: number, params: ClientConnectionParams): {}; +export interface ClientConnection { + on(event: ConnexionEvent, callback: (...args: any[]) => void): void; +} + +export function createConnection(host: string, port: number, params: ClientConnectionParams): ClientConnection; export function createClient(generatedService: any, connection: {}): any; From bdbd1efbd057d407c4816c8b5135b5be534e7f90 Mon Sep 17 00:00:00 2001 From: satoshun00 Date: Tue, 11 Apr 2017 19:12:27 +0900 Subject: [PATCH 04/90] fix(mysql): Add definition for PoolCluster.end with callback --- types/mysql/index.d.ts | 1 + types/mysql/mysql-tests.ts | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/types/mysql/index.d.ts b/types/mysql/index.d.ts index 8df59f3d6b..ab3f8009ac 100644 --- a/types/mysql/index.d.ts +++ b/types/mysql/index.d.ts @@ -101,6 +101,7 @@ interface IPoolCluster { add(group: string, config: IPoolConfig): void; end(): void; + end(callback: (err: IError, ...args: any[]) => void): void; getConnection(callback: (err: IError, connection: IConnection) => void): void; getConnection(group: string, callback: (err: IError, connection: IConnection) => void): void; diff --git a/types/mysql/mysql-tests.ts b/types/mysql/mysql-tests.ts index 84c501e147..a6d9afc07e 100644 --- a/types/mysql/mysql-tests.ts +++ b/types/mysql/mysql-tests.ts @@ -17,7 +17,7 @@ connection.query('SELECT 1 + 1 AS solution', function (err, rows, fields) { console.log('The solution is: ', rows[0].solution); }); -connection.end(); +connection.end(function (err) {}); connection = mysql.createConnection({ host: 'example.org', @@ -396,4 +396,4 @@ connection = mysql.createConnection({ debug: ['ComQueryPacket', 'RowDataPacket'] var type: mysql.FieldType = mysql.FieldType.SHORT; var info: mysql.IFieldInfo; -info.type = type; \ No newline at end of file +info.type = type; From 00cef2e45b970f5cf903c168d56278ce43630939 Mon Sep 17 00:00:00 2001 From: efokschaner Date: Fri, 14 Apr 2017 03:08:17 -0700 Subject: [PATCH 05/90] Make THREE non-global --- types/three/detector.d.ts | 22 +- types/three/index.d.ts | 6924 +---------------- .../canvas/canvas_interactive_cubes_tween.ts | 2 - types/three/test/references.d.ts | 9 + types/three/test/three-tests-setup.ts | 15 - types/three/three-FirstPersonControls.d.ts | 77 +- types/three/three-canvasrenderer.d.ts | 96 +- types/three/three-colladaLoader.d.ts | 35 +- types/three/three-copyshader.d.ts | 11 +- types/three/three-core.d.ts | 6865 ++++++++++++++++ types/three/three-css3drenderer.d.ts | 36 +- types/three/three-ctmloader.d.ts | 54 +- types/three/three-editorcontrols.d.ts | 29 +- types/three/three-effectcomposer.d.ts | 37 +- types/three/three-examples.d.ts | 10 + types/three/three-maskpass.d.ts | 36 +- types/three/three-octree.d.ts | 45 +- types/three/three-orbitcontrols.d.ts | 108 +- .../three-orthographictrackballcontrols.d.ts | 76 +- types/three/three-projector.d.ts | 163 +- types/three/three-renderpass.d.ts | 43 +- types/three/three-shaderpass.d.ts | 44 +- types/three/three-trackballcontrols.d.ts | 70 +- types/three/three-transformcontrols.d.ts | 30 +- types/three/three-vrcontrols.d.ts | 28 +- types/three/three-vreffect.d.ts | 52 +- types/three/tsconfig.json | 38 +- 27 files changed, 7409 insertions(+), 7546 deletions(-) create mode 100644 types/three/test/references.d.ts delete mode 100644 types/three/test/three-tests-setup.ts create mode 100644 types/three/three-core.d.ts create mode 100644 types/three/three-examples.d.ts diff --git a/types/three/detector.d.ts b/types/three/detector.d.ts index 776f8806f7..0c6f0f4fc3 100644 --- a/types/three/detector.d.ts +++ b/types/three/detector.d.ts @@ -1,16 +1,8 @@ -// Type definitions for three.js (Detector.js) -// Project: https://github.com/mrdoob/three.js/blob/master/examples/js/Detector.js -// Definitions by: Satoru Kimura -// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +export var canvas: boolean; +export var webgl: boolean; +export var workers: boolean; +export var fileapi: boolean; +export function getWebGLErrorMessage(): HTMLElement; +export function addGetWebGLMessage(parameters?: {id?: string; parent?: HTMLElement}): void; -interface DetectorStatic { - canvas: boolean; - webgl: boolean; - workers: boolean; - fileapi: boolean; - - getWebGLErrorMessage(): HTMLElement; - addGetWebGLMessage(parameters?: {id?: string; parent?: HTMLElement}): void; -} - -declare var Detector: DetectorStatic; +export as namespace Detector; diff --git a/types/three/index.d.ts b/types/three/index.d.ts index 064d3e8660..b8c5b5669f 100644 --- a/types/three/index.d.ts +++ b/types/three/index.d.ts @@ -1,6899 +1,29 @@ // Type definitions for three.js 0.84 // Project: http://mrdoob.github.com/three.js/ -// Definitions by: Kon , Satoru Kimura , Florent Poujol , SereznoKot , HouChunlei , Ivo , David Asmuth -// Definitions: https://github.com/borisyankov/DefinitelyTyped - -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// -/// - -declare namespace THREE { - export const REVISION: string; - - // https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.button - export enum MOUSE { LEFT, MIDDLE, RIGHT } - - // GL STATE CONSTANTS - export enum CullFace { } - export const CullFaceNone: CullFace; - export const CullFaceBack: CullFace; - export const CullFaceFront: CullFace; - export const CullFaceFrontBack: CullFace; - - export enum FrontFaceDirection { } - export const FrontFaceDirectionCW: FrontFaceDirection; - export const FrontFaceDirectionCCW: FrontFaceDirection; - - // Shadowing Type - export enum ShadowMapType { } - export const BasicShadowMap: ShadowMapType; - export const PCFShadowMap: ShadowMapType; - export const PCFSoftShadowMap: ShadowMapType; - - // MATERIAL CONSTANTS - - // side - export enum Side { } - export const FrontSide: Side; - export const BackSide: Side; - export const DoubleSide: Side; - - // shading - export enum Shading { } - export const FlatShading: Shading; - export const SmoothShading: Shading; - - // colors - export enum Colors { } - export const NoColors: Colors; - export const FaceColors: Colors; - export const VertexColors: Colors; - - // blending modes - export enum Blending { } - export const NoBlending: Blending; - export const NormalBlending: Blending; - export const AdditiveBlending: Blending; - export const SubtractiveBlending: Blending; - export const MultiplyBlending: Blending; - export const CustomBlending: Blending; - - // custom blending equations - // (numbers start from 100 not to clash with other - // mappings to OpenGL constants defined in Texture.js) - export enum BlendingEquation { } - export const AddEquation: BlendingEquation; - export const SubtractEquation: BlendingEquation; - export const ReverseSubtractEquation: BlendingEquation; - export const MinEquation: BlendingEquation; - export const MaxEquation: BlendingEquation; - - // custom blending destination factors - export enum BlendingDstFactor { } - export const ZeroFactor: BlendingDstFactor; - export const OneFactor: BlendingDstFactor; - export const SrcColorFactor: BlendingDstFactor; - export const OneMinusSrcColorFactor: BlendingDstFactor; - export const SrcAlphaFactor: BlendingDstFactor; - export const OneMinusSrcAlphaFactor: BlendingDstFactor; - export const DstAlphaFactor: BlendingDstFactor; - export const OneMinusDstAlphaFactor: BlendingDstFactor; - - // custom blending src factors - export enum BlendingSrcFactor { } - export const DstColorFactor: BlendingSrcFactor; - export const OneMinusDstColorFactor: BlendingSrcFactor; - export const SrcAlphaSaturateFactor: BlendingSrcFactor; - - // depth modes - export enum DepthModes { } - export const NeverDepth: DepthModes; - export const AlwaysDepth: DepthModes; - export const LessDepth: DepthModes; - export const LessEqualDepth: DepthModes; - export const EqualDepth: DepthModes; - export const GreaterEqualDepth: DepthModes; - export const GreaterDepth: DepthModes; - export const NotEqualDepth: DepthModes; - - // TEXTURE CONSTANTS - // Operations - export enum Combine { } - export const MultiplyOperation: Combine; - export const MixOperation: Combine; - export const AddOperation: Combine; - - // Tone Mapping modes - export enum ToneMapping { } - export const NoToneMapping: ToneMapping; - export const LinearToneMapping: ToneMapping; - export const ReinhardToneMapping: ToneMapping; - export const Uncharted2ToneMapping: ToneMapping; - export const CineonToneMapping: ToneMapping; - - // Mapping modes - export enum Mapping { } - export const UVMapping: Mapping; - export const CubeReflectionMapping: Mapping; - export const CubeRefractionMapping: Mapping; - export const EquirectangularReflectionMapping: Mapping; - export const EquirectangularRefractionMapping: Mapping; - export const SphericalReflectionMapping: Mapping; - export const CubeUVReflectionMapping: Mapping; - export const CubeUVRefractionMapping: Mapping; - - // Wrapping modes - export enum Wrapping { } - export const RepeatWrapping: Wrapping; - export const ClampToEdgeWrapping: Wrapping; - export const MirroredRepeatWrapping: Wrapping; - - // Filters - export enum TextureFilter { } - export const NearestFilter: TextureFilter; - export const NearestMipMapNearestFilter: TextureFilter; - export const NearestMipMapLinearFilter: TextureFilter; - export const LinearFilter: TextureFilter; - export const LinearMipMapNearestFilter: TextureFilter; - export const LinearMipMapLinearFilter: TextureFilter; - - // Data types - export enum TextureDataType { } - export const UnsignedByteType: TextureDataType; - export const ByteType: TextureDataType; - export const ShortType: TextureDataType; - export const UnsignedShortType: TextureDataType; - export const IntType: TextureDataType; - export const UnsignedIntType: TextureDataType; - export const FloatType: TextureDataType; - export const HalfFloatType: TextureDataType; - - // Pixel types - export enum PixelType { } - export const UnsignedShort4444Type: PixelType; - export const UnsignedShort5551Type: PixelType; - export const UnsignedShort565Type: PixelType; - export const UnsignedInt248Type: PixelType; - - // Pixel formats - export enum PixelFormat { } - export const AlphaFormat: PixelFormat; - export const RGBFormat: PixelFormat; - export const RGBAFormat: PixelFormat; - export const LuminanceFormat: PixelFormat; - export const LuminanceAlphaFormat: PixelFormat; - export const RGBEFormat: PixelFormat; - export const DepthFormat: PixelFormat; - export const DepthStencilFormat: PixelFormat; - - // Compressed texture formats - // DDS / ST3C Compressed texture formats - export enum CompressedPixelFormat { } - export const RGB_S3TC_DXT1_Format: CompressedPixelFormat; - export const RGBA_S3TC_DXT1_Format: CompressedPixelFormat; - export const RGBA_S3TC_DXT3_Format: CompressedPixelFormat; - export const RGBA_S3TC_DXT5_Format: CompressedPixelFormat; - - // PVRTC compressed texture formats - export const RGB_PVRTC_4BPPV1_Format: CompressedPixelFormat; - export const RGB_PVRTC_2BPPV1_Format: CompressedPixelFormat; - export const RGBA_PVRTC_4BPPV1_Format: CompressedPixelFormat; - export const RGBA_PVRTC_2BPPV1_Format: CompressedPixelFormat; - - // ETC compressed texture formats - export const RGB_ETC1_Format: CompressedPixelFormat; - - // Loop styles for AnimationAction - export enum AnimationActionLoopStyles { } - export const LoopOnce: AnimationActionLoopStyles; - export const LoopRepeat: AnimationActionLoopStyles; - export const LoopPingPong: AnimationActionLoopStyles; - - // Interpolation - export enum InterpolationModes { } - export const InterpolateDiscrete: InterpolationModes; - export const InterpolateLinear: InterpolationModes; - export const InterpolateSmooth: InterpolationModes; - - // Interpolant ending modes - export enum InterpolationEndingModes { } - export const ZeroCurvatureEnding: InterpolationEndingModes; - export const ZeroSlopeEnding: InterpolationEndingModes; - export const WrapAroundEnding: InterpolationEndingModes; - - // Triangle Draw modes - export enum TrianglesDrawModes { } - export const TrianglesDrawMode: TrianglesDrawModes; - export const TriangleStripDrawMode: TrianglesDrawModes; - export const TriangleFanDrawMode: TrianglesDrawModes; - - // Texture Encodings - export enum TextureEncoding { } - export const LinearEncoding: TextureEncoding; - export const sRGBEncoding: TextureEncoding; - export const GammaEncoding: TextureEncoding; - export const RGBEEncoding: TextureEncoding; - export const LogLuvEncoding: TextureEncoding; - export const RGBM7Encoding: TextureEncoding; - export const RGBM16Encoding: TextureEncoding; - export const RGBDEncoding: TextureEncoding; - - // Depth packing strategies - export enum DepthPackingStrategies { } - export const BasicDepthPacking: DepthPackingStrategies; - export const RGBADepthPacking: DepthPackingStrategies; - - // log handlers - export function warn(message?: any, ...optionalParams: any[]): void; - export function error(message?: any, ...optionalParams: any[]): void; - export function log(message?: any, ...optionalParams: any[]): void; - - // Animation //////////////////////////////////////////////////////////////////////////////////////// - - export class AnimationAction { - loop: boolean; - time: number; - timeScale: number; - weight: number; - repetitions: number; - paused: boolean; - enabled: boolean; - clampWhenFinished: boolean; - zeroSlopeAtStart: boolean; - zeroSlopeAtEnd: boolean; - - play(): AnimationAction; - stop(): AnimationAction; - reset(): AnimationAction; - isRunning(): boolean; - startAt(time: number): AnimationAction; - setLoop(mode: AnimationActionLoopStyles, repetitions: number): AnimationAction; - setEffectiveWeight(weight: number): AnimationAction; - getEffectiveWeight(): number; - fadeIn(duration: number): AnimationAction; - fadeOut(duration: number): AnimationAction; - crossFadeFrom(fadeOutAction: AnimationAction, duration: number, warp: boolean): AnimationAction; - crossFadeTo(fadeInAction: AnimationAction, duration: number, warp: boolean): AnimationAction; - stopFading(): AnimationAction; - setEffectiveTimeScale(timeScale: number): AnimationAction; - getEffectiveTimeScale(): number; - setDuration(duration: number): AnimationAction; - syncWith(action: AnimationAction): AnimationAction; - halt(duration: number): AnimationAction; - warp(statTimeScale: number, endTimeScale: number, duration: number): AnimationAction; - stopWarping(): AnimationAction; - getMixer(): AnimationMixer; - getClip(): AnimationClip; - getRoot(): any; - } - - export class AnimationClip { - constructor( name?: string, duration?: number, tracks?: KeyframeTrack[] ); - - name: string; - tracks: KeyframeTrack[]; - duration: number; - uuid: string; - results: any[]; - - resetDuration(): void; - trim(): AnimationClip; - optimize(): AnimationClip; - - static CreateFromMorphTargetSequence( name: string, morphTargetSequence: MorphTarget[], fps: number, noLoop: boolean ): AnimationClip; - static findByName( clipArray: AnimationClip, name: string ): AnimationClip; - static CreateClipsFromMorphTargetSequences( morphTargets: MorphTarget[], fps: number, noLoop: boolean ): AnimationClip[]; - static parse( json: any ): AnimationClip; - static parseAnimation( animation: any, bones: Bone[], nodeName: string ): AnimationClip; - static toJSON(): any; - } - - export class AnimationMixer extends EventDispatcher { - constructor(root: any); - - time: number; - timeScale: number; - - clipAction(clip: AnimationClip, root?: any): AnimationAction; - existingAction(clip: AnimationClip, root?: any): AnimationAction; - stopAllAction(clip: AnimationClip, root?: any): AnimationMixer; - update(deltaTime: number): AnimationMixer; - getRoot(): any; - uncacheClip(clip: AnimationClip): void; - uncacheRoot(root: any): void; - uncacheAction(clip: AnimationClip, root?: any): void; - } - - export class AnimationObjectGroup { - constructor(...args: any[]); - - uuid: string; - stats: { - bindingsPerObject: number; - objects: { - total: number; - inUse: number; - } - }; - - add(...args: any[]): void; - remove(...args: any[]): void; - uncache(...args: any[]): void; - } - - export namespace AnimationUtils { - export function arraySlice(array: any, from: number, to: number): any; - export function convertArray(array: any, type: any, forceClone: boolean): any; - export function isTypedArray(object: any): boolean; - export function getKeyFrameOrder(times: number): number[]; - export function sortedArray(values: any[], stride: number, order: number[]): any[]; - export function flattenJSON(jsonKeys: string[], times: any[], values: any[], valuePropertyName: string): void; - } - - export class KeyframeTrack { - constructor(name: string, times: any[], values: any[], interpolation: InterpolationModes); - - name: string; - times: any[]; - values: any[]; - - ValueTypeName: string; - TimeBufferType: Float32Array; - ValueBufferType: Float32Array; - - DefaultInterpolation: InterpolationModes; - - InterpolantFactoryMethodDiscrete(result: any): DiscreteInterpolant; - InterpolantFactoryMethodLinear(result: any): LinearInterpolant; - InterpolantFactoryMethodSmooth(result: any): CubicInterpolant; - - setInterpolation(interpolation: InterpolationModes): void; - getInterpolation(): InterpolationModes; - - getValuesize(): number; - - shift( timeOffset: number ): KeyframeTrack; - scale( timeScale: number ): KeyframeTrack; - trim( startTime: number, endTime: number ): KeyframeTrack; - validate(): boolean; - optimize(): KeyframeTrack; - - static parse(json: any): KeyframeTrack; - static toJSON(track: KeyframeTrack): any; - } - - export class PropertyBinding { - constructor(rootNode: any, path: string, parsedPath?: any); - - path: string; - parsedPath: any; - node: any; - rootNode: any; - - getValue(targetArray: any, offset: number): any; - setValue(sourceArray: any, offset: number): void; - bind(): void; - unbind(): void; - - BindingType: { [bindingType: string]: number }; - Versioning: { [versioning: string]: number }; - - GetterByBindingType: Function[]; - SetterByBindingTypeAndVersioning: Array; - - static create(root: any, path: any, parsedPath?: any): PropertyBinding|PropertyBinding.Composite; - static parseTrackName(trackName: string): any; - static findNode(root: any, nodeName: string): any; - } - - export namespace PropertyBinding { - export class Composite { - constructor(targetGroup: any, path: any, parsedPath?: any); - - getValue(array: any, offset: number): any; - setValue(array: any, offset: number): void; - bind(): void; - unbind(): void; - } - } - - export class PropertyMixer { - constructor(binding: any, typeName: string, valueSize: number); - - binding: any; - valueSize: number; - buffer: any; - cumulativeWeight: number; - useCount: number; - referenceCount: number; - - accumulate(accuIndex: number, weight: number): void; - apply(accuIndex: number): void; - saveOriginalState(): void; - restoreOriginalState(): void; - } - - export class BooleanKeyframeTrack extends KeyframeTrack { - constructor(name: string, times: any[], values: any[]); - } - - export class ColorKeyframeTrack extends KeyframeTrack { - constructor(name: string, times: any[], values: any[], interpolation: InterpolationModes); - } - - export class NumberKeyframeTrack extends KeyframeTrack { - constructor(name: string, times: any[], values: any[], interpolation: InterpolationModes); - } - - export class QuaternionKeyframeTrack extends KeyframeTrack { - constructor(name: string, times: any[], values: any[], interpolation: InterpolationModes); - } - - export class StringKeyframeTrack extends KeyframeTrack { - constructor(name: string, times: any[], values: any[], interpolation: InterpolationModes); - } - - export class VectorKeyframeTrack extends KeyframeTrack { - constructor(name: string, times: any[], values: any[], interpolation: InterpolationModes); - } - - // Cameras //////////////////////////////////////////////////////////////////////////////////////// - - /** - * Abstract base class for cameras. This class should always be inherited when you build a new camera. - */ - export class Camera extends Object3D { - /** - * This constructor sets following properties to the correct type: matrixWorldInverse, projectionMatrix and projectionMatrixInverse. - */ - constructor(); - - /** - * This is the inverse of matrixWorld. MatrixWorld contains the Matrix which has the world transform of the Camera. - */ - matrixWorldInverse: Matrix4; - - /** - * This is the matrix which contains the projection. - */ - projectionMatrix: Matrix4; - - getWorldDirection(optionalTarget?: Vector3): Vector3; - - /** - * This make the camera look at the vector position in local space. - * @param vector point to look at - */ - lookAt(vector: Vector3): void; - } - - export class CubeCamera extends Object3D { - constructor(near?: number, far?: number, cubeResolution?: number); - - renderTarget: WebGLRenderTargetCube; - - updateCubeMap(renderer: Renderer, scene: Scene): void; - } - - /** - * Camera with orthographic projection - * - * @example - * var camera = new THREE.OrthographicCamera( width / - 2, width / 2, height / 2, height / - 2, 1, 1000 ); - * scene.add( camera ); - * - * @see src/cameras/OrthographicCamera.js - */ - export class OrthographicCamera extends Camera { - /** - * @param left Camera frustum left plane. - * @param right Camera frustum right plane. - * @param top Camera frustum top plane. - * @param bottom Camera frustum bottom plane. - * @param near Camera frustum near plane. - * @param far Camera frustum far plane. - */ - constructor(left: number, right: number, top: number, bottom: number, near?: number, far?: number); - - zoom: number; - view: { - fullWidth: number, - fullHeight: number, - offsetX: number, - offsetY: number, - width: number, - height: number - }; - - /** - * Camera frustum left plane. - */ - left: number; - - /** - * Camera frustum right plane. - */ - right: number; - - /** - * Camera frustum top plane. - */ - top: number; - - /** - * Camera frustum bottom plane. - */ - bottom: number; - - /** - * Camera frustum near plane. - */ - near: number; - - /** - * Camera frustum far plane. - */ - far: number; - - /** - * Updates the camera projection matrix. Must be called after change of parameters. - */ - updateProjectionMatrix(): void; - setViewOffset(fullWidth: number, fullHeight: number, offsetX: number, offsetY: number, width: number, height: number): void; - clearViewOffset(): void; - toJSON(meta?: any): any; - } - - /** - * Camera with perspective projection. - * - * # example - * var camera = new THREE.PerspectiveCamera( 45, width / height, 1, 1000 ); - * scene.add( camera ); - * - * @source https://github.com/mrdoob/three.js/blob/master/src/cameras/PerspectiveCamera.js - */ - export class PerspectiveCamera extends Camera { - /** - * @param fov Camera frustum vertical field of view. Default value is 50. - * @param aspect Camera frustum aspect ratio. Default value is 1. - * @param near Camera frustum near plane. Default value is 0.1. - * @param far Camera frustum far plane. Default value is 2000. - */ - constructor(fov?: number, aspect?: number, near?: number, far?: number); - - zoom: number; - - /** - * Camera frustum vertical field of view, from bottom to top of view, in degrees. - */ - fov: number; - - /** - * Camera frustum aspect ratio, window width divided by window height. - */ - aspect: number; - - /** - * Camera frustum near plane. - */ - near: number; - - /** - * Camera frustum far plane. - */ - far: number; - - focus: number; - view: { - fullWidth: number, - fullHeight: number, - offsetX: number, - offsetY: number, - width: number, - height: number - }; - filmGauge: number; - filmOffset: number; - - setFocalLength(focalLength: number): void; - getFocalLength(): number; - getEffectiveFOV(): number; - getFilmWidth(): number; - getFilmHeight(): number; - /** - * Sets an offset in a larger frustum. This is useful for multi-window or multi-monitor/multi-machine setups. - * For example, if you have 3x2 monitors and each monitor is 1920x1080 and the monitors are in grid like this: - * - * +---+---+---+ - * | A | B | C | - * +---+---+---+ - * | D | E | F | - * +---+---+---+ - * - * then for each monitor you would call it like this: - * - * var w = 1920; - * var h = 1080; - * var fullWidth = w * 3; - * var fullHeight = h * 2; - * - * // A - * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h ); - * // B - * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h ); - * // C - * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h ); - * // D - * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h ); - * // E - * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h ); - * // F - * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h ); Note there is no reason monitors have to be the same size or in a grid. - * - * @param fullWidth full width of multiview setup - * @param fullHeight full height of multiview setup - * @param x horizontal offset of subcamera - * @param y vertical offset of subcamera - * @param width width of subcamera - * @param height height of subcamera - */ - setViewOffset(fullWidth: number, fullHeight: number, x: number, y: number, width: number, height: number): void; - clearViewOffset(): void; - - /** - * Updates the camera projection matrix. Must be called after change of parameters. - */ - updateProjectionMatrix(): void; - toJSON(meta?: any): any; - - /** - * @deprecated - */ - setLens(focalLength: number, frameHeight?: number): void; - } - - export class StereoCamera extends Camera { - constructor(); - - aspect: number; - eyeSep: number; - cameraL: PerspectiveCamera; - cameraR: PerspectiveCamera; - - update(camera: PerspectiveCamera): void; - } - - // Core /////////////////////////////////////////////////////////////////////////////////////////////// - - /** - * @see src/core/BufferAttribute.js - */ - export class BufferAttribute { - constructor(array: ArrayLike, itemSize: number, normalized?: boolean); // array parameter should be TypedArray. - - uuid: string; - array: ArrayLike; - itemSize: number; - dynamic: boolean; - updateRange: {offset: number, count: number}; - version: number; - normalized: boolean; - needsUpdate: boolean; - count: number; - - setDynamic(dynamic: boolean): BufferAttribute; - clone(): this; - copy(source: this): this; - copyAt(index1: number, attribute: BufferAttribute, index2: number): BufferAttribute; - copyArray(array: ArrayLike): BufferAttribute; - copyColorsArray(colors: {r: number, g: number, b: number}[]): BufferAttribute; - copyIndicesArray(indices: {a: number, b: number, c: number}[]): BufferAttribute; - copyVector2sArray(vectors: {x: number, y: number}[]): BufferAttribute; - copyVector3sArray(vectors: {x: number, y: number, z: number}[]): BufferAttribute; - copyVector4sArray(vectors: {x: number, y: number, z: number, w: number}[]): BufferAttribute; - set(value: ArrayLike, offset?: number): BufferAttribute; - getX(index: number): number; - setX(index: number, x: number): BufferAttribute; - getY(index: number): number; - setY(index: number, y: number): BufferAttribute; - getZ(index: number): number; - setZ(index: number, z: number): BufferAttribute; - getW(index: number): number; - setW(index: number, z: number): BufferAttribute; - setXY(index: number, x: number, y: number): BufferAttribute; - setXYZ(index: number, x: number, y: number, z: number): BufferAttribute; - setXYZW(index: number, x: number, y: number, z: number, w: number): BufferAttribute; - /** - * @deprecated Use count instead. - */ - length: number; - } - - /** - * @deprecated THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead. - */ - export class Int8Attribute extends BufferAttribute { - constructor(array: any, itemSize: number); - } - - /** - * @deprecated THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead. - */ - export class Uint8Attribute extends BufferAttribute { - constructor(array: any, itemSize: number); - } - - /** - * @deprecated THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead. - */ - export class Uint8ClampedAttribute extends BufferAttribute { - constructor(array: any, itemSize: number); - } - - /** - * @deprecated THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead. - */ - export class Int16Attribute extends BufferAttribute { - constructor(array: any, itemSize: number); - } - - /** - * @deprecated THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead. - */ - export class Uint16Attribute extends BufferAttribute { - constructor(array: any, itemSize: number); - } - - /** - * @deprecated THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead. - */ - export class Int32Attribute extends BufferAttribute { - constructor(array: any, itemSize: number); - } - - /** - * @deprecated THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead. - */ - export class Uint32Attribute extends BufferAttribute { - constructor(array: any, itemSize: number); - } - - /** - * @deprecated THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead. - */ - export class Float32Attribute extends BufferAttribute { - constructor(array: any, itemSize: number); - } - - /** - * @deprecated THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead. - */ - export class Float64Attribute extends BufferAttribute { - constructor(array: any, itemSize: number); - } - - export class Int8BufferAttribute extends BufferAttribute { - constructor(array: Iterable | ArrayLike | ArrayBuffer, itemSize: number); - } - - export class Uint8BufferAttribute extends BufferAttribute { - constructor(array: Iterable | ArrayLike | ArrayBuffer, itemSize: number); - } - - export class Uint8ClampedBufferAttribute extends BufferAttribute { - constructor(array: Iterable | ArrayLike | ArrayBuffer, itemSize: number); - } - - export class Int16BufferAttribute extends BufferAttribute { - constructor(array: Iterable | ArrayLike | ArrayBuffer, itemSize: number); - } - - export class Uint16BufferAttribute extends BufferAttribute { - constructor(array: Iterable | ArrayLike | ArrayBuffer, itemSize: number); - } - - export class Int32BufferAttribute extends BufferAttribute { - constructor(array: Iterable | ArrayLike | ArrayBuffer, itemSize: number); - } - - export class Uint32BufferAttribute extends BufferAttribute { - constructor(array: Iterable | ArrayLike | ArrayBuffer, itemSize: number); - } - - export class Float32BufferAttribute extends BufferAttribute { - constructor(array: Iterable | ArrayLike | ArrayBuffer, itemSize: number); - } - - export class Float64BufferAttribute extends BufferAttribute { - constructor(array: Iterable | ArrayLike | ArrayBuffer, itemSize: number); - } - - /** - * @deprecated, use new THREE.BufferAttribute().setDynamic( true ). - */ - export class DynamicBufferAttribute extends BufferAttribute {} - - /** - * This is a superefficent class for geometries because it saves all data in buffers. - * It reduces memory costs and cpu cycles. But it is not as easy to work with because of all the nessecary buffer calculations. - * It is mainly interesting when working with static objects. - * - * @see src/core/BufferGeometry.js - */ - export class BufferGeometry extends EventDispatcher { - /** - * This creates a new BufferGeometry. It also sets several properties to an default value. - */ - constructor(); - - static MaxIndex: number; - - /** - * Unique number of this buffergeometry instance - */ - id: number; - uuid: string; - name: string; - type: string; - index: BufferAttribute; - attributes: BufferAttribute|InterleavedBufferAttribute[]; - morphAttributes: any; - groups: {start: number, count: number, materialIndex?: number}[]; - boundingBox: Box3; - boundingSphere: Sphere; - drawRange: { start: number, count: number }; - - getIndex(): BufferAttribute; - setIndex( index: BufferAttribute ): void; - - addAttribute(name: string, attribute: BufferAttribute|InterleavedBufferAttribute): BufferGeometry; - - getAttribute(name: string): BufferAttribute|InterleavedBufferAttribute; - removeAttribute(name: string): BufferGeometry; - - addGroup(start: number, count: number, materialIndex?: number): void; - clearGroups(): void; - - setDrawRange(start: number, count: number): void; - - /** - * Bakes matrix transform directly into vertex coordinates. - */ - applyMatrix(matrix: Matrix4): BufferGeometry; - - rotateX(angle: number): BufferGeometry; - rotateY(angle: number): BufferGeometry; - rotateZ(angle: number): BufferGeometry; - translate(x: number, y: number, z: number): BufferGeometry; - scale(x: number, y: number, z: number): BufferGeometry; - lookAt(v: Vector3): void; - - center(): Vector3; - - setFromObject(object: Object3D): void; - updateFromObject(object: Object3D): void; - - fromGeometry(geometry: Geometry, settings?: any): BufferGeometry; - - fromDirectGeometry(geometry: DirectGeometry): BufferGeometry; - - /** - * Computes bounding box of the geometry, updating Geometry.boundingBox attribute. - * Bounding boxes aren't computed by default. They need to be explicitly computed, otherwise they are null. - */ - computeBoundingBox(): void; - - /** - * Computes bounding sphere of the geometry, updating Geometry.boundingSphere attribute. - * Bounding spheres aren't' computed by default. They need to be explicitly computed, otherwise they are null. - */ - computeBoundingSphere(): void; - - /** - * Computes vertex normals by averaging face normals. - */ - computeVertexNormals(): void; - - merge(geometry: BufferGeometry, offset: number): BufferGeometry; - normalizeNormals(): void; - - toNonIndexed(): BufferGeometry; - - toJSON(): any; - clone(): this; - copy(source: this): this; - - /** - * Disposes the object from memory. - * You need to call this when you want the bufferGeometry removed while the application is running. - */ - dispose(): void; - - /** - * @deprecated - */ - drawcalls: any; - offsets: any; - - addIndex(index: any): void; - addDrawCall(start: any, count: any, indexOffset?: any): void; - clearDrawCalls(): void; - addAttribute(name: any, array: any, itemSize: any): any; - } - - /** - * Object for keeping track of time. - * - * @see src/core/Clock.js - */ - export class Clock { - /** - * @param autoStart Automatically start the clock. - */ - constructor(autoStart?: boolean); - - /** - * If set, starts the clock automatically when the first update is called. - */ - autoStart: boolean; - - /** - * When the clock is running, It holds the starttime of the clock. - * This counted from the number of milliseconds elapsed since 1 January 1970 00:00:00 UTC. - */ - startTime: number; - - /** - * When the clock is running, It holds the previous time from a update. - * This counted from the number of milliseconds elapsed since 1 January 1970 00:00:00 UTC. - */ - oldTime: number; - - /** - * When the clock is running, It holds the time elapsed between the start of the clock to the previous update. - * This parameter is in seconds of three decimal places. - */ - elapsedTime: number; - - /** - * This property keeps track whether the clock is running or not. - */ - running: boolean; - - /** - * Starts clock. - */ - start(): void; - - /** - * Stops clock. - */ - stop(): void; - - /** - * Get the seconds passed since the clock started. - */ - getElapsedTime(): number; - - /** - * Get the seconds passed since the last call to this method. - */ - getDelta(): number; - } - - /** - * @see src/core/DirectGeometry.js - */ - export class DirectGeometry extends EventDispatcher { - constructor(); - - id: number; - uuid: string; - name: string; - type: string; - indices: number[]; - vertices: Vector3[]; - normals: Vector3[]; - colors: Color[]; - uvs: Vector2[]; - uvs2: Vector2[]; - groups: {start: number, materialIndex: number}[]; - morphTargets: MorphTarget[]; - skinWeights: number[]; - skinIndices: number[]; - boundingBox: Box3; - boundingSphere: Sphere; - verticesNeedUpdate: boolean; - normalsNeedUpdate: boolean; - colorsNeedUpdate: boolean; - uvsNeedUpdate: boolean; - groupsNeedUpdate: boolean; - - computeBoundingBox(): void; - computeBoundingSphere(): void; - computeGroups(geometry: Geometry): void; - fromGeometry(geometry: Geometry): DirectGeometry; - dispose(): void; - - // EventDispatcher mixins - addEventListener(type: string, listener: (event: Event) => void ): void; - hasEventListener(type: string, listener: (event: Event) => void): void; - removeEventListener(type: string, listener: (event: Event) => void): void; - dispatchEvent(event: { type: string; [attachment: string]: any; }): void; - } - - - /** - * JavaScript events for custom objects - * - * # Example - * var Car = function () { - * - * EventDispatcher.call( this ); - * this.start = function () { - * - * this.dispatchEvent( { type: 'start', message: 'vroom vroom!' } ); - * - * }; - * - * }; - * - * var car = new Car(); - * car.addEventListener( 'start', function ( event ) { - * - * alert( event.message ); - * - * } ); - * car.start(); - * - * @source src/core/EventDispatcher.js - */ - export class EventDispatcher { - /** - * Creates eventDispatcher object. It needs to be call with '.call' to add the functionality to an object. - */ - constructor(); - - /** - * Adds a listener to an event type. - * @param type The type of the listener that gets removed. - * @param listener The listener function that gets removed. - */ - addEventListener(type: string, listener: (event: Event) => void ): void; - - /** - * Adds a listener to an event type. - * @param type The type of the listener that gets removed. - * @param listener The listener function that gets removed. - */ - hasEventListener(type: string, listener: (event: Event) => void): void; - - /** - * Removes a listener from an event type. - * @param type The type of the listener that gets removed. - * @param listener The listener function that gets removed. - */ - removeEventListener(type: string, listener: (event: Event) => void): void; - - /** - * Fire an event type. - * @param type The type of event that gets fired. - */ - dispatchEvent(event: { type: string; [attachment: string]: any; }): void; - } - - export interface Event { - type: string; - target: any; - } - - /** - * Triangle face. - * - * # Example - * var normal = new THREE.Vector3( 0, 1, 0 ); - * var color = new THREE.Color( 0xffaa00 ); - * var face = new THREE.Face3( 0, 1, 2, normal, color, 0 ); - * - * @source https://github.com/mrdoob/three.js/blob/master/src/core/Face3.js - */ - export class Face3 { - /** - * @param a Vertex A index. - * @param b Vertex B index. - * @param c Vertex C index. - * @param normal Face normal or array of vertex normals. - * @param color Face color or array of vertex colors. - * @param materialIndex Material index. - */ - constructor(a: number, b: number, c: number, normal?: Vector3, color?: Color, materialIndex?: number); - constructor(a: number, b: number, c: number, normal?: Vector3, vertexColors?: Color[], materialIndex?: number); - constructor(a: number, b: number, c: number, vertexNormals?: Vector3[], color?: Color, materialIndex?: number); - constructor(a: number, b: number, c: number, vertexNormals?: Vector3[], vertexColors?: Color[], materialIndex?: number); - - /** - * Vertex A index. - */ - a: number; - - /** - * Vertex B index. - */ - b: number; - - /** - * Vertex C index. - */ - c: number; - - /** - * Face normal. - */ - normal: Vector3; - - /** - * Array of 4 vertex normals. - */ - vertexNormals: Vector3[]; - - /** - * Face color. - */ - color: Color; - - /** - * Array of 4 vertex normals. - */ - vertexColors: Color[]; - - /** - * Material index (points to {@link Geometry.materials}). - */ - materialIndex: number; - - clone(): this; - copy(source: this): this; - } - - /** - * @deprecated Use Face3 instead. - */ - export class Face4 extends Face3 {} - - export interface MorphTarget { - name: string; - vertices: Vector3[]; - } - - export interface MorphColor { - name: string; - colors: Color[]; - } - - export interface MorphNormals { - name: string; - normals: Vector3[]; - } - - export let GeometryIdCount: number; - - /** - * Base class for geometries - * - * # Example - * var geometry = new THREE.Geometry(); - * geometry.vertices.push( new THREE.Vector3( -10, 10, 0 ) ); - * geometry.vertices.push( new THREE.Vector3( -10, -10, 0 ) ); - * geometry.vertices.push( new THREE.Vector3( 10, -10, 0 ) ); - * geometry.faces.push( new THREE.Face3( 0, 1, 2 ) ); - * geometry.computeBoundingSphere(); - * - * @see https://github.com/mrdoob/three.js/blob/master/src/core/Geometry.js - */ - export class Geometry extends EventDispatcher { - constructor(); - - /** - * Unique number of this geometry instance - */ - id: number; - - uuid: string; - - /** - * Name for this geometry. Default is an empty string. - */ - name: string; - - type: string; - - /** - * The array of vertices hold every position of points of the model. - * To signal an update in this array, Geometry.verticesNeedUpdate needs to be set to true. - */ - vertices: Vector3[]; - - /** - * Array of vertex colors, matching number and order of vertices. - * Used in ParticleSystem, Line and Ribbon. - * Meshes use per-face-use-of-vertex colors embedded directly in faces. - * To signal an update in this array, Geometry.colorsNeedUpdate needs to be set to true. - */ - colors: Color[]; - - /** - * Array of triangles or/and quads. - * The array of faces describe how each vertex in the model is connected with each other. - * To signal an update in this array, Geometry.elementsNeedUpdate needs to be set to true. - */ - faces: Face3[]; - - /** - * Array of face UV layers. - * Each UV layer is an array of UV matching order and number of vertices in faces. - * To signal an update in this array, Geometry.uvsNeedUpdate needs to be set to true. - */ - faceVertexUvs: Vector2[][][]; - - /** - * Array of morph targets. Each morph target is a Javascript object: - * - * { name: "targetName", vertices: [ new THREE.Vector3(), ... ] } - * - * Morph vertices match number and order of primary vertices. - */ - morphTargets: MorphTarget[]; - - /** - * Array of morph normals. Morph normals have similar structure as morph targets, each normal set is a Javascript object: - * - * morphNormal = { name: "NormalName", normals: [ new THREE.Vector3(), ... ] } - */ - morphNormals: MorphNormals[]; - - /** - * Array of skinning weights, matching number and order of vertices. - */ - skinWeights: number[]; - - /** - * Array of skinning indices, matching number and order of vertices. - */ - skinIndices: number[]; - - /** - * - */ - lineDistances: number[]; - - /** - * Bounding box. - */ - boundingBox: Box3; - - /** - * Bounding sphere. - */ - boundingSphere: Sphere; - - /** - * Set to true if the vertices array has been updated. - */ - verticesNeedUpdate: boolean; - - /** - * Set to true if the faces array has been updated. - */ - elementsNeedUpdate: boolean; - - /** - * Set to true if the uvs array has been updated. - */ - uvsNeedUpdate: boolean; - - /** - * Set to true if the normals array has been updated. - */ - normalsNeedUpdate: boolean; - - /** - * Set to true if the colors array has been updated. - */ - colorsNeedUpdate: boolean; - - /** - * Set to true if the linedistances array has been updated. - */ - lineDistancesNeedUpdate: boolean; - - /** - * - */ - groupsNeedUpdate: boolean; - - /** - * Bakes matrix transform directly into vertex coordinates. - */ - applyMatrix(matrix: Matrix4): Geometry; - - rotateX(angle: number): Geometry; - rotateY(angle: number): Geometry; - rotateZ(angle: number): Geometry; - - translate(x: number, y: number, z: number): Geometry; - scale(x: number, y: number, z: number): Geometry; - lookAt( vector: Vector3 ): void; - - fromBufferGeometry(geometry: BufferGeometry): Geometry; - - center(): Vector3; - - normalize(): Geometry; - - /** - * Computes face normals. - */ - computeFaceNormals(): void; - - /** - * Computes vertex normals by averaging face normals. - * Face normals must be existing / computed beforehand. - */ - computeVertexNormals(areaWeighted?: boolean): void; - - /** - * Compute vertex normals, but duplicating face normals. - */ - computeFlatVertexNormals(): void; - - /** - * Computes morph normals. - */ - computeMorphNormals(): void; - - computeLineDistances(): void; - - /** - * Computes bounding box of the geometry, updating {@link Geometry.boundingBox} attribute. - */ - computeBoundingBox(): void; - - /** - * Computes bounding sphere of the geometry, updating Geometry.boundingSphere attribute. - * Neither bounding boxes or bounding spheres are computed by default. They need to be explicitly computed, otherwise they are null. - */ - computeBoundingSphere(): void; - - merge(geometry: Geometry, matrix: Matrix, materialIndexOffset?: number): void; - - mergeMesh(mesh: Mesh): void; - - /** - * Checks for duplicate vertices using hashmap. - * Duplicated vertices are removed and faces' vertices are updated. - */ - mergeVertices(): number; - - sortFacesByMaterialIndex(): void; - - toJSON(): any; - - /** - * Creates a new clone of the Geometry. - */ - clone(): this; - - copy(source: this): this; - - /** - * Removes The object from memory. - * Don't forget to call this method when you remove an geometry because it can cuase meomory leaks. - */ - dispose(): void; - - - // These properties do not exist in a normal Geometry class, but if you use the instance that was passed by JSONLoader, it will be added. - bones: Bone[]; - animation: AnimationClip; - animations: AnimationClip[]; - - // EventDispatcher mixins - addEventListener(type: string, listener: (event: Event) => void ): void; - hasEventListener(type: string, listener: (event: Event) => void): void; - removeEventListener(type: string, listener: (event: Event) => void): void; - dispatchEvent(event: { type: string; [attachment: string]: any; }): void; - } - - /** - * @deprecated - */ - export namespace GeometryUtils { - /** - * @deprecated Use geometry.merge( geometry2, matrix, materialIndexOffset ). - */ - export function merge(geometry1: any, geometry2: any, materialIndexOffset?: any): any; - /** - * @deprecated Use geometry.center(). - */ - export function center(geometry: any): any; - } - - /** - * @see src/core/InstancedBufferAttribute.js - */ - export class InstancedBufferAttribute extends BufferAttribute { - constructor(data: ArrayLike, itemSize: number, meshPerAttribute?: number); - - meshPerAttribute: number; - } - - /** - * @see src/core/InstancedBufferGeometry.js - */ - export class InstancedBufferGeometry extends BufferGeometry { - constructor(); - - groups: {start: number, count: number, instances: number}[]; - maxInstancedCount: number; - - addGroup(start: number, count: number, instances: number): void; - } - - /** - * @see src/core/InterleavedBuffer.js - */ - export class InterleavedBuffer { - constructor(array: ArrayLike, stride: number); - - array: ArrayLike; - stride: number; - dynamic: boolean; - updateRange: { offset: number; count: number }; - version: number; - length: number; - count: number; - needsUpdate: boolean; - - setDynamic(dynamic: boolean): InterleavedBuffer; - clone(): this; - copy(source: this): this; - copyAt(index1: number, attribute: InterleavedBufferAttribute, index2: number): InterleavedBuffer; - set(value: ArrayLike, index: number): InterleavedBuffer; - clone(): this; - } - - /** - * @see src/core/InstancedInterleavedBuffer.js - */ - export class InstancedInterleavedBuffer extends InterleavedBuffer { - constructor(array: ArrayLike, stride: number, meshPerAttribute?: number); - - meshPerAttribute: number; - } - - /** - * @see src/core/InterleavedBufferAttribute.js - */ - export class InterleavedBufferAttribute { - constructor(interleavedBuffer: InterleavedBuffer, itemSize: number, offset: number, normalized: boolean); - - uuid: string; - data: InterleavedBuffer; - itemSize: number; - offset: number; - count: number; - normalized: boolean; - array: any[]; - - getX(index: number): number; - setX(index: number, x: number): InterleavedBufferAttribute; - getY(index: number): number; - setY(index: number, y: number): InterleavedBufferAttribute; - getZ(index: number): number; - setZ(index: number, z: number): InterleavedBufferAttribute; - getW(index: number): number; - setW(index: number, z: number): InterleavedBufferAttribute; - setXY(index: number, x: number, y: number): InterleavedBufferAttribute; - setXYZ(index: number, x: number, y: number, z: number): InterleavedBufferAttribute; - setXYZW(index: number, x: number, y: number, z: number, w: number): InterleavedBufferAttribute; - /** - * @deprecated Use count instead. - */ - length: number; - } - - export let Object3DIdCount: number; - - /** - * Base class for scene graph objects - */ - export class Object3D extends EventDispatcher { - constructor(); - - /** - * Unique number of this object instance. - */ - id: number; - - /** - * - */ - uuid: string; - - /** - * Optional name of the object (doesn't need to be unique). - */ - name: string; - - type: string; - - /** - * Object's parent in the scene graph. - */ - parent: Object3D; - - /** - * Array with object's children. - */ - children: Object3D[]; - - /** - * Up direction. - */ - up: Vector3; - - /** - * Object's local position. - */ - position: Vector3; - - /** - * Object's local rotation (Euler angles), in radians. - */ - rotation: Euler; - - /** - * Global rotation. - */ - quaternion: Quaternion; - - /** - * Object's local scale. - */ - scale: Vector3; - - modelViewMatrix: Matrix4; - - normalMatrix: Matrix3; - - /** - * Local transform. - */ - matrix: Matrix4; - - /** - * The global transform of the object. If the Object3d has no parent, then it's identical to the local transform. - */ - matrixWorld: Matrix4; - - /** - * When this is set, it calculates the matrix of position, (rotation or quaternion) and scale every frame and also recalculates the matrixWorld property. - */ - matrixAutoUpdate: boolean; - - /** - * When this is set, it calculates the matrixWorld in that frame and resets this property to false. - */ - matrixWorldNeedsUpdate: boolean; - - layers: Layers; - /** - * Object gets rendered if true. - */ - visible: boolean; - - /** - * Gets rendered into shadow map. - */ - castShadow: boolean; - - /** - * Material gets baked in shadow receiving. - */ - receiveShadow: boolean; - - /** - * When this is set, it checks every frame if the object is in the frustum of the camera. Otherwise the object gets drawn every frame even if it isn't visible. - */ - frustumCulled: boolean; - - renderOrder: number; - - /** - * An object that can be used to store custom data about the Object3d. It should not hold references to functions as these will not be cloned. - */ - userData: any; - - /** - * - */ - static DefaultUp: Vector3; - static DefaultMatrixAutoUpdate: boolean; - - /** - * This updates the position, rotation and scale with the matrix. - */ - applyMatrix(matrix: Matrix4): void; - - /** - * - */ - setRotationFromAxisAngle(axis: Vector3, angle: number): void; - - /** - * - */ - setRotationFromEuler(euler: Euler): void; - - /** - * - */ - setRotationFromMatrix(m: Matrix4): void; - - /** - * - */ - setRotationFromQuaternion(q: Quaternion): void; - - /** - * Rotate an object along an axis in object space. The axis is assumed to be normalized. - * @param axis A normalized vector in object space. - * @param angle The angle in radians. - */ - rotateOnAxis(axis: Vector3, angle: number): Object3D; - - /** - * - * @param angle - */ - rotateX(angle: number): Object3D; - - /** - * - * @param angle - */ - rotateY(angle: number): Object3D; - - /** - * - * @param angle - */ - rotateZ(angle: number): Object3D; - - /** - * @param axis A normalized vector in object space. - * @param distance The distance to translate. - */ - translateOnAxis(axis: Vector3, distance: number): Object3D; - - /** - * Translates object along x axis by distance. - * @param distance Distance. - */ - translateX(distance: number): Object3D; - - /** - * Translates object along y axis by distance. - * @param distance Distance. - */ - translateY(distance: number): Object3D; - - /** - * Translates object along z axis by distance. - * @param distance Distance. - */ - translateZ(distance: number): Object3D; - - /** - * Updates the vector from local space to world space. - * @param vector A local vector. - */ - localToWorld(vector: Vector3): Vector3; - - /** - * Updates the vector from world space to local space. - * @param vector A world vector. - */ - worldToLocal(vector: Vector3): Vector3; - - /** - * Rotates object to face point in space. - * @param vector A world vector to look at. - */ - lookAt(vector: Vector3): void; - - /** - * Adds object as child of this object. - */ - add(object: Object3D): void; - - /** - * Removes object as child of this object. - */ - remove(object: Object3D): void; - - /** - * Searches through the object's children and returns the first with a matching id, optionally recursive. - * @param id Unique number of the object instance - */ - getObjectById(id: number): Object3D; - - /** - * Searches through the object's children and returns the first with a matching name, optionally recursive. - * @param name String to match to the children's Object3d.name property. - */ - getObjectByName(name: string): Object3D; - - getObjectByProperty( name: string, value: string ): Object3D; - - getWorldPosition(optionalTarget?: Vector3): Vector3; - getWorldQuaternion(optionalTarget?: Quaternion): Quaternion; - getWorldRotation(optionalTarget?: Euler): Euler; - getWorldScale(optionalTarget?: Vector3): Vector3; - getWorldDirection(optionalTarget?: Vector3): Vector3; - - raycast(raycaster: Raycaster, intersects: any): void; - - traverse(callback: (object: Object3D) => any): void; - - traverseVisible(callback: (object: Object3D) => any): void; - - traverseAncestors(callback: (object: Object3D) => any): void; - - /** - * Updates local transform. - */ - updateMatrix(): void; - - /** - * Updates global transform of the object and its children. - */ - updateMatrixWorld(force: boolean): void; - - toJSON(meta?: { geometries: any, materials: any, textures: any, images: any }): any; - - clone(recursive?: boolean): this; - - /** - * - * @param object - * @param recursive - */ - copy(source: this, recursive?: boolean): this; - - /** - * @deprecated - */ - eulerOrder: string; - getChildByName(name: string): Object3D; - translate(distance: number, axis: Vector3): Object3D; - } - - export interface Intersection { - distance: number; - distanceToRay: number; - point: Vector3; - index: number; - face: Face3; - faceIndex: number; - object: Object3D; - } - - export interface RaycasterParameters { - Mesh?: any; - Line?: any; - LOD?: any; - Points?: { threshold: number }; - Sprite?: any; - } - - export class Raycaster { - constructor(origin?: Vector3, direction?: Vector3, near?: number, far?: number); - - ray: Ray; - near: number; - far: number; - params: RaycasterParameters; - precision: number; - linePrecision: number; - - set(origin: Vector3, direction: Vector3): void; - setFromCamera(coords: { x: number; y: number; }, camera: Camera ): void; - intersectObject(object: Object3D, recursive?: boolean): Intersection[]; - intersectObjects(objects: Object3D[], recursive?: boolean): Intersection[]; - } - - export class Layers { - constructor(); - - mask: number; - - set(channel: number): void; - enable(channel: number): void; - toggle(channel: number): void; - disable(channel: number): void; - test(layers: Layers): boolean; - } - - export class Font { - constructor(jsondata: string); - - data: string; - - generateShapes(text: string, size: number, divisions: number): any[]; - } - - // Lights ////////////////////////////////////////////////////////////////////////////////// - - /** - * Abstract base class for lights. - */ - export class Light extends Object3D { - constructor(hex?: number|string, intensity?: number); - - color: Color; - intensity: number; - receiveShadow: boolean; - shadow: LightShadow; - /** - * @deprecated Use shadow.camera.fov instead. - */ - shadowCameraFov: any; - /** - * @deprecated Use shadow.camera.left instead. - */ - shadowCameraLeft: any; - /** - * @deprecated Use shadow.camera.right instead. - */ - shadowCameraRight: any; - /** - * @deprecated Use shadow.camera.top instead. - */ - shadowCameraTop: any; - /** - * @deprecated Use shadow.camera.bottom instead. - */ - shadowCameraBottom: any; - /** - * @deprecated Use shadow.camera.near instead. - */ - shadowCameraNear: any; - /** - * @deprecated Use shadow.camera.far instead. - */ - shadowCameraFar: any; - /** - * @deprecated Use shadow.bias instead. - */ - shadowBias: any; - /** - * @deprecated Use shadow.mapSize.width instead. - */ - shadowMapWidth: any; - /** - * @deprecated Use shadow.mapSize.height instead. - */ - shadowMapHeight: any; - } - - export class LightShadow { - constructor(camera: Camera); - - camera: Camera; - bias: number; - radius: number; - mapSize: Vector2; - map: RenderTarget; - matrix: Matrix4; - - copy(source: this): this; - clone(recursive?: boolean): this; - toJSON(): any; - } - - /** - * This light's color gets applied to all the objects in the scene globally. - * - * # example - * var light = new THREE.AmbientLight( 0x404040 ); // soft white light - * scene.add( light ); - * - * @source https://github.com/mrdoob/three.js/blob/master/src/lights/AmbientLight.js - */ - export class AmbientLight extends Light { - /** - * This creates a Ambientlight with a color. - * @param hex Numeric value of the RGB component of the color. - */ - constructor(hex?: number|string, intensity?: number); - - castShadow: boolean; - } - - /** - * Affects objects using MeshLambertMaterial or MeshPhongMaterial. - * - * @example - * // White directional light at half intensity shining from the top. - * var directionalLight = new THREE.DirectionalLight( 0xffffff, 0.5 ); - * directionalLight.position.set( 0, 1, 0 ); - * scene.add( directionalLight ); - * - * @see src/lights/DirectionalLight.js - */ - export class DirectionalLight extends Light { - constructor(hex?: number|string, intensity?: number); - - /** - * Target used for shadow camera orientation. - */ - target: Object3D; - - /** - * Light's intensity. - * Default — 1.0. - */ - intensity: number; - - shadow: LightShadow; - } - - export class DirectionalLightShadow extends LightShadow {} - - export class HemisphereLight extends Light { - constructor(skyColorHex?: number|string, groundColorHex?: number|string, intensity?: number); - - groundColor: Color; - intensity: number; - } - - /** - * Affects objects using {@link MeshLambertMaterial} or {@link MeshPhongMaterial}. - * - * @example - * var light = new THREE.PointLight( 0xff0000, 1, 100 ); - * light.position.set( 50, 50, 50 ); - * scene.add( light ); - */ - export class PointLight extends Light { - constructor(hex?: number|string, intensity?: number, distance?: number, decay?: number); - - /* - * Light's intensity. - * Default - 1.0. - */ - intensity: number; - - /** - * If non-zero, light will attenuate linearly from maximum intensity at light position down to zero at distance. - * Default — 0.0. - */ - distance: number; - - decay: number; - shadow: LightShadow; - power: number; - } - - /** - * A point light that can cast shadow in one direction. - */ - export class SpotLight extends Light { - constructor(hex?: number|string, intensity?: number, distance?: number, angle?: number, exponent?: number, decay?: number); - - /** - * Spotlight focus points at target.position. - * Default position — (0,0,0). - */ - target: Object3D; - - /** - * Light's intensity. - * Default — 1.0. - */ - intensity: number; - - /** - * If non-zero, light will attenuate linearly from maximum intensity at light position down to zero at distance. - * Default — 0.0. - */ - distance: number; - - /* - * Maximum extent of the spotlight, in radians, from its direction. - * Default — Math.PI/2. - */ - angle: number; - - /** - * Rapidity of the falloff of light from its target direction. - * Default — 10.0. - */ - exponent: number; - - decay: number; - shadow: SpotLightShadow; - power: number; - penumbra: number; - } - - export class SpotLightShadow extends LightShadow { - update(light: Light): void; - } - - // Loaders ////////////////////////////////////////////////////////////////////////////////// - - /** - * Base class for implementing loaders. - * - * Events: - * load - * Dispatched when the image has completed loading - * content — loaded image - * - * error - * - * Dispatched when the image can't be loaded - * message — error message - */ - export class Loader { - constructor(); - - /** - * Will be called when load starts. - * The default is a function with empty body. - */ - onLoadStart: () => void; - - /** - * Will be called while load progresses. - * The default is a function with empty body. - */ - onLoadProgress: () => void; - - /** - * Will be called when load completes. - * The default is a function with empty body. - */ - onLoadComplete: () => void; - - /** - * default — null. - * If set, assigns the crossOrigin attribute of the image to the value of crossOrigin, prior to starting the load. - */ - crossOrigin: string; - - extractUrlBase(url: string): string; - initMaterials(materials: Material[], texturePath: string): Material[]; - createMaterial(m: Material, texturePath: string, crossOrigin?: string): boolean; - - static Handlers: LoaderHandler; - } - - export interface LoaderHandler { - handlers: (RegExp | Loader)[]; - - add(regex: RegExp, loader: Loader): void; - get(file: string): Loader; - } - - export class FileLoader { - constructor(manager?: LoadingManager); - - manager: LoadingManager; - mimeType: MimeType; - path: string; - responseType: string; - withCredentials: string; - - load(url: string, onLoad?: (responseText: string) => void, onProgress?: (request: ProgressEvent) => void, onError?:(event: ErrorEvent) => void): any; - setMimeType(mimeType: MimeType): FileLoader; - setPath(path: string) : FileLoader; - setResponseType(responseType: string) : FileLoader; - setWithCredentials(value: string): FileLoader; - } - - export class FontLoader { - constructor(manager?: LoadingManager); - - manager: LoadingManager; - - load(url: string, onLoad?: (responseText: string) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): void; - parse(json: string): Font; - } - - /** - * A loader for loading an image. - * Unlike other loaders, this one emits events instead of using predefined callbacks. So if you're interested in getting notified when things happen, you need to add listeners to the object. - */ - export class ImageLoader { - constructor(manager?: LoadingManager); - - manager: LoadingManager; - crossOrigin: string; - withCredentials: string; - path: string; - - /** - * Begin loading from url - * @param url - */ - load(url: string, onLoad?: (image: HTMLImageElement) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): HTMLImageElement; - setCrossOrigin(crossOrigin: string): ImageLoader; - setWithCredentials(value: string): ImageLoader; - setPath(value: string): ImageLoader; - } - - /** - * A loader for loading objects in JSON format. - */ - export class JSONLoader extends Loader { - constructor(manager?: LoadingManager); - - manager: LoadingManager; - withCredentials: boolean; - - load(url: string, onLoad?: (geometry: Geometry, materials: Material[]) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): void; - setTexturePath( value: string ): void; - parse(json: any, texturePath?: string): { geometry: Geometry; materials?: Material[] }; - } - - /** - * Handles and keeps track of loaded and pending data. - */ - export class LoadingManager { - constructor(onLoad?: () => void, onProgress?: (url: string, loaded: number, total: number) => void, onError?: () => void); - - onStart: () => void; - - /** - * Will be called when load starts. - * The default is a function with empty body. - */ - onLoad: () => void; - - /** - * Will be called while load progresses. - * The default is a function with empty body. - */ - onProgress: (item: any, loaded: number, total: number) => void; - - /** - * Will be called when each element in the scene completes loading. - * The default is a function with empty body. - */ - onError: () => void; - - itemStart(url: string): void; - itemEnd(url: string): void; - itemError(url: string): void; - } - - export const DefaultLoadingManager: LoadingManager; - - export class BufferGeometryLoader { - constructor(manager?: LoadingManager); - - manager: LoadingManager; - - load(url: string, onLoad: (bufferGeometry: BufferGeometry) => void, onProgress?: (event: any) => void, onError?: (event: any) => void): void; - parse(json: any): BufferGeometry; - } - - export class MaterialLoader { - constructor(manager?: LoadingManager); - - manager: LoadingManager; - textures: { [key: string]: Texture }; - - load(url: string, onLoad: (material: Material) => void): void; - setTextures(textures: { [key: string]: Texture }): void; - getTexture(name: string): Texture; - parse(json: any): Material; - } - - export class ObjectLoader { - constructor(manager?: LoadingManager); - - manager: LoadingManager; - texturePass: string; - crossOrigin: string; - - load(url: string, onLoad?: (object: Object3D) => void): void; - setTexturePath( value: string ): void; - setCrossOrigin(crossOrigin: string): void; - parse(json: any, onLoad?: (object: Object3D) => void): T; - parseGeometries(json: any): any[]; // Array of BufferGeometry or Geometry or Geometry2. - parseMaterials(json: any, textures: Texture[]): Material[]; // Array of Classes that inherits from Matrial. - parseAnimations(json: any): AnimationClip[]; - parseImages(json: any, onLoad: () => void): any[]; - parseTextures(json: any, images: any): Texture[]; - parseObject(data: any, geometries: any[], materials: Material[]): T; - } - - /** - * Class for loading a texture. - * Unlike other loaders, this one emits events instead of using predefined callbacks. So if you're interested in getting notified when things happen, you need to add listeners to the object. - */ - export class TextureLoader { - constructor(manager?: LoadingManager); - - manager: LoadingManager; - crossOrigin: string; - withCredentials: string; - path: string; - - /** - * Begin loading from url - * - * @param url - */ - load(url: string, onLoad?: (texture: Texture) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): Texture; - setCrossOrigin(crossOrigin: string): TextureLoader; - setWithCredentials(value: string): TextureLoader; - setPath(path: string): TextureLoader; - } - - export class CubeTextureLoader { - constructor(manager?: LoadingManager); - - manager: LoadingManager; - corssOrigin: string; - path: string; - - load(urls: Array, onLoad?: (texture: CubeTexture) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): void; - setCrossOrigin(crossOrigin: string): CubeTextureLoader; - setPath(path: string): CubeTextureLoader; - } - - export class DataTextureLoader { - constructor(manager?: LoadingManager); - - manager: LoadingManager; - - load(url: string, onLoad: (dataTexture: DataTexture) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): void; - } - - /** - * @deprecated since 0.84.0. Use DataTextureLoader (renamed) - */ - export class BinaryTextureLoader extends DataTextureLoader {} - - export class CompressedTextureLoader { - constructor(manager?: LoadingManager); - - manager: LoadingManager; - path: string; - - load(url: string, onLoad: (texture: CompressedTexture) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): void; - setPath(path: string): CompressedTextureLoader; - } - - export class AudioLoader { - constructor(manager?: LoadingManager); - - load(url: string, onLoad: Function, onPrgress: Function, onError: Function): void; - } - - export namespace Cache { - export let enabled: boolean; - export let files: any; - - export function add(key: string, file: any): void; - export function get(key: string): any; - export function remove(key: string): void; - export function clear(): void; - } - - // Materials ////////////////////////////////////////////////////////////////////////////////// - export let MaterialIdCount: number; - - export interface MaterialParameters { - name?: string; - side?: Side; - opacity?: number; - transparent?: boolean; - blending?: Blending; - blendSrc?: BlendingDstFactor; - blendDst?: BlendingSrcFactor; - blendEquation?: BlendingEquation; - blendSrcAlpha?: number; - blendDstAlpha?: number; - blendEquationAlpha?: number; - depthFunc?: DepthModes; - depthTest?: boolean; - depthWrite?: boolean; - colorWrite?: boolean; - precision?: number; - polygonOffset?: boolean; - polygonOffsetFactor?: number; - polygonOffsetUnits?: number; - alphaTest?: number; - premultipliedAlpha?: boolean; - overdraw?: number; - visible?: boolean; - fog?: boolean; - lights?: boolean; - shading?: Shading; - vertexColors?: Colors; - } - - /** - * Materials describe the appearance of objects. They are defined in a (mostly) renderer-independent way, so you don't have to rewrite materials if you decide to use a different renderer. - */ - export class Material extends EventDispatcher { - constructor(); - - /** - * Unique number of this material instance. - */ - id: number; - - uuid: string; - - /** - * Material name. Default is an empty string. - */ - name: string; - - type: string; - - /** - * Defines which of the face sides will be rendered - front, back or both. - * Default is THREE.FrontSide. Other options are THREE.BackSide and THREE.DoubleSide. - */ - side: Side; - - /** - * Opacity. Default is 1. - */ - opacity: number; - - /** - * Defines whether this material is transparent. This has an effect on rendering, as transparent objects need an special treatment, and are rendered after the opaque (i.e. non transparent) objects. For a working example of this behaviour, check the {@link WebGLRenderer} code. - * Default is false. - */ - transparent: boolean; - - /** - * Which blending to use when displaying objects with this material. Default is {@link NormalBlending}. - */ - blending: Blending; - - /** - * Blending source. It's one of the blending mode constants defined in Three.js. Default is {@link SrcAlphaFactor}. - */ - blendSrc: BlendingDstFactor; - - /** - * Blending destination. It's one of the blending mode constants defined in Three.js. Default is {@link OneMinusSrcAlphaFactor}. - */ - blendDst: BlendingSrcFactor; - - /** - * Blending equation to use when applying blending. It's one of the constants defined in Three.js. Default is AddEquation. - */ - blendEquation: BlendingEquation; - - blendSrcAlpha: number; - blendDstAlpha: number; - blendEquationAlpha: number; - - depthFunc: DepthModes; - - /** - * Whether to have depth test enabled when rendering this material. Default is true. - */ - depthTest: boolean; - - /** - * Whether rendering this material has any effect on the depth buffer. Default is true. - * When drawing 2D overlays it can be useful to disable the depth writing in order to layer several things together without creating z-index artifacts. - */ - depthWrite: boolean; - - clippingPlanes: any; - clipShadows: boolean; - - colorWrite: boolean; - - precision: any; - - /** - * Whether to use polygon offset. Default is false. This corresponds to the POLYGON_OFFSET_FILL WebGL feature. - */ - polygonOffset: boolean; - - /** - * Sets the polygon offset factor. Default is 0. - */ - polygonOffsetFactor: number; - - /** - * Sets the polygon offset units. Default is 0. - */ - polygonOffsetUnits: number; - - /** - * Sets the alpha value to be used when running an alpha test. Default is 0. - */ - alphaTest: number; - - premultipliedAlpha: boolean; - - /** - * Enables/disables overdraw. If greater than zero, polygons are drawn slightly bigger in order to fix antialiasing gaps when using the CanvasRenderer. Default is 0. - */ - overdraw: number; - - /** - * Defines whether this material is visible. Default is true. - */ - visible: boolean; - - /** - * Specifies that the material needs to be updated, WebGL wise. Set it to true if you made changes that need to be reflected in WebGL. - * This property is automatically set to true when instancing a new material. - */ - needsUpdate: boolean; - - fog: boolean; - lights: boolean; - shading: Shading; - vertexColors: Colors; - - setValues(parameters: MaterialParameters): void; - toJSON(meta?: any): any; - clone(): this; - copy(source: this): this; - update(): void; - dispose(): void; - - /** - * @deprecated - */ - warpRGB: Color; - } - - export interface LineBasicMaterialParameters extends MaterialParameters { - color?: number|string; - linewidth?: number; - linecap?: string; - linejoin?: string; - } - - export class LineBasicMaterial extends Material { - constructor(parameters?: LineBasicMaterialParameters); - - color: Color; - linewidth: number; - linecap: string; - linejoin: string; - - setValues(parameters: LineBasicMaterialParameters): void; - } - - export interface LineDashedMaterialParameters extends MaterialParameters { - color?: number|string; - linewidth?: number; - scale?: number; - dashSize?: number; - gapSize?: number; - } - - export class LineDashedMaterial extends Material { - constructor(parameters?: LineDashedMaterialParameters); - - color: Color; - linewidth: number; - scale: number; - dashSize: number; - gapSize: number; - - setValues(parameters: LineDashedMaterialParameters): void; - } - - /** - * parameters is an object with one or more properties defining the material's appearance. - */ - export interface MeshBasicMaterialParameters extends MaterialParameters { - color?: number|string; - opacity?: number; - map?: Texture; - aoMap?: Texture; - aoMapIntensity?: number; - specularMap?: Texture; - alphaMap?: Texture; - envMap?: Texture; - combine?: Combine; - reflectivity?: number; - refractionRatio?: number; - shading?: Shading; - wireframe?: boolean; - wireframeLinewidth?: number; - wireframeLinecap?: string; - wireframeLinejoin?: string; - skinning?: boolean; - morphTargets?: boolean; - } - - export class MeshBasicMaterial extends Material { - constructor(parameters?: MeshBasicMaterialParameters); - - color: Color; - map: Texture; - aoMap: Texture; - aoMapIntensity: number; - specularMap: Texture; - alphaMap: Texture; - envMap: Texture; - combine: Combine; - reflectivity: number; - refractionRatio: number; - shading: Shading; - wireframe: boolean; - wireframeLinewidth: number; - wireframeLinecap: string; - wireframeLinejoin: string; - skinning: boolean; - morphTargets: boolean; - - setValues(parameters: MeshBasicMaterialParameters): void; - } - - export interface MeshDepthMaterialParameters extends MaterialParameters { - wireframe?: boolean; - wireframeLinewidth?: number; - } - - export class MeshDepthMaterial extends Material { - constructor(parameters?: MeshDepthMaterialParameters); - - wireframe: boolean; - wireframeLinewidth: number; - - setValues(parameters: MeshDepthMaterialParameters): void; - } - - export interface MeshLambertMaterialParameters extends MaterialParameters { - color?: number|string; - emissive?: number|string; - emissiveIntensity?: number; - emissiveMap?: Texture; - map?: Texture; - lighhtMap?: Texture; - lightMapIntensity?: number; - aoMap?: Texture; - aoMapIntensity?: number; - specularMap?: Texture; - alphaMap?: Texture; - envMap?: Texture; - combine?: Combine; - reflectivity?: number; - refractionRatio?: number; - wireframe?: boolean; - wireframeLinewidth?: number; - wireframeLinecap?: string; - wireframeLinejoin?: string; - skinning?: boolean; - morphTargets?: boolean; - morphNormals?: boolean; - } - - export class MeshLambertMaterial extends Material { - constructor(parameters?: MeshLambertMaterialParameters); - - color: Color; - emissive: Color; - emissiveIntensity: number; - emissiveMap: Texture; - map: Texture; - lighhtMap: Texture; - lightMapIntensity: number; - aoMap: Texture; - aoMapIntensity: number; - specularMap: Texture; - alphaMap: Texture; - envMap: Texture; - combine: Combine; - reflectivity: number; - refractionRatio: number; - wireframe: boolean; - wireframeLinewidth: number; - wireframeLinecap: string; - wireframeLinejoin: string; - skinning: boolean; - morphTargets: boolean; - morphNormals: boolean; - - setValues(parameters: MeshLambertMaterialParameters): void; - } - - export interface MeshStandardMaterialParameters extends MaterialParameters { - color?: number|string; - roughness?: number; - metalness?: number; - map?: Texture; - lighhtMap?: Texture; - lightMapIntensity?: number; - aoMap?: Texture; - aoMapIntensity?: number; - emissive?: Color; - emissiveIntensity?: number; - emissiveMap?: Texture; - bumpMap?: Texture; - bumpScale?: number; - normalMap?: Texture; - normalScale?: number; - displacementMap?: Texture; - displacementScale?: number; - displacementBias?: number; - roughnessMap?: Texture; - metalMap?: Texture; - alphaMap?: Texture; - envMap?: Texture; - envMapIntensity?: number; - refractionRatio?: number; - wireframe?: boolean; - wireframeLinewidth?: number; - skinning?: boolean; - morphTargets?: boolean; - morphNormals?: boolean; - } - - export class MeshStandardMaterial extends Material { - constructor(parameters?: MeshStandardMaterialParameters); - - defines: any; - color: Color; - roughness: number; - metalness: number; - map: Texture; - lighhtMap: Texture; - lightMapIntensity: number; - aoMap: Texture; - aoMapIntensity: number; - emissive: Color; - emissiveIntensity: number; - emissiveMap: Texture; - bumpMap: Texture; - bumpScale: number; - normalMap: Texture; - normalScale: number; - displacementMap: Texture; - displacementScale: number; - displacementBias: number; - roughnessMap: Texture; - metalMap: Texture; - alphaMap: Texture; - envMap: Texture; - envMapIntensity: number; - refractionRatio: number; - wireframe: boolean; - wireframeLinewidth: number; - skinning: boolean; - morphTargets: boolean; - morphNormals: boolean; - - setValues(parameters: MeshStandardMaterialParameters): void; - } - - export interface MeshNormalMaterialParameters extends MaterialParameters { - /** Render geometry as wireframe. Default is false (i.e. render as smooth shaded). */ - wireframe?: boolean; - /** Controls wireframe thickness. Default is 1. */ - wireframeLinewidth?: number; - morphTargets?: boolean; - } - - export class MeshNormalMaterial extends Material { - constructor(parameters?: MeshNormalMaterialParameters); - - wireframe: boolean; - wireframeLinewidth: number; - morphTargets: boolean; - - setValues(parameters: MeshNormalMaterialParameters): void; - } - - export interface MeshPhongMaterialParameters extends MaterialParameters { - /** geometry color in hexadecimal. Default is 0xffffff. */ - color?: number|string; - specular?: number; - shininess?: number; - opacity?: number; - map?: Texture; - lightMap?: Texture; - lightMapIntensity?: number; - aoMap?: Texture; - aoMapIntensity?: number; - emissive?: number; - emissiveIntensity?: number; - emissiveMap?: Texture; - bumpMap?: Texture; - bumpScale?: number; - normalMap?: Texture; - normalScale?: Vector2; - displacementMap?: Texture; - displacementScale?: number; - displacementBias?: number; - specularMap?: Texture; - alphaMap?: Texture; - envMap?: Texture; - combine?: Combine; - reflectivity?: number; - refractionRatio?: number; - wireframe?: boolean; - wireframeLinewidth?: number; - wireframeLinecap?: string; - wireframeLinejoin?: string; - skinning?: boolean; - morphTargets?: boolean; - morphNormals?: boolean; - } - - export class MeshPhongMaterial extends Material { - constructor(parameters?: MeshPhongMaterialParameters); - - color: Color; // diffuse - specular: Color; - shininess: number; - map: Texture; - lightMap: Texture; - lightMapIntensity: number; - aoMap: Texture; - aoMapIntensity: number; - emissive: Color; - emissiveIntensity: number; - emissiveMap: Texture; - bumpMap: Texture; - bumpScale: number; - normalMap: Texture; - normalScale: Vector2; - displacementMap: Texture; - displacementScale: number; - displacementBias: number; - specularMap: Texture; - alphaMap: Texture; - envMap: Texture; - combine: Combine; - reflectivity: number; - refractionRatio: number; - wireframe: boolean; - wireframeLinewidth: number; - wireframeLinecap: string; - wireframeLinejoin: string; - skinning: boolean; - morphTargets: boolean; - morphNormals: boolean; - /** - * @deprecated - */ - metal: boolean; - - setValues(parameters: MeshPhongMaterialParameters): void; - } - - export interface MeshPhysicalMaterialParameters extends MeshStandardMaterialParameters { - reflectivity?: number; - clearCoat?: number; - clearCoatRoughness?: number; - } - - export class MeshPhysicalMaterial extends MeshStandardMaterial { - constructor(parameters: MeshPhysicalMaterialParameters); - - defines: any; - reflectivity: number; - clearCoat: number; - clearCoatRoughness: number; - } - - // MultiMaterial does not inherit the Material class in the original code. However, it should treat as Material class. - // See tests/canvas/canvas_materials.ts. - export class MultiMaterial extends Material { - constructor(materials?: Material[]); - - materials: Material[]; - - toJSON(meta: any): any; - } - - /** - * @deprecated Use MultiMaterial instead. - */ - export class MeshFaceMaterial extends MultiMaterial {} - - export interface PointsMaterialParameters extends MaterialParameters { - color?: number|string; - map?: Texture; - size?: number; - sizeAttenuation?: boolean; - } - - export class PointsMaterial extends Material { - constructor(parameters?: PointsMaterialParameters); - - color: Color; - map: Texture; - size: number; - sizeAttenuation: boolean; - - setValues(parameters: PointsMaterialParameters): void; - } - - /** - * @deprecated - */ - export class PointCloudMaterial extends PointsMaterial {} - /** - * @deprecated - */ - export class ParticleBasicMaterial extends PointsMaterial {} - /** - * @deprecated - */ - export class ParticleSystemMaterial extends PointsMaterial {} - - export interface ShaderMaterialParameters extends MaterialParameters { - defines?: any; - uniforms?: any; - vertexShader?: string; - fragmentShader?: string; - lineWidth?: number; - wireframe?: boolean; - wireframeLinewidth?: number; - lights?: boolean; - clipping?: boolean; - skinning?: boolean; - morphTargets?: boolean; - morphNormals?: boolean; - } - - export class ShaderMaterial extends Material { - constructor(parameters?: ShaderMaterialParameters); - - defines: any; - uniforms: { [uniform: string]: IUniform }; - vertexShader: string; - fragmentShader: string; - linewidth: number; - wireframe: boolean; - wireframeLinewidth: number; - lights: boolean; - clipping: boolean; - skinning: boolean; - morphTargets: boolean; - morphNormals: boolean; - /** - * @deprecated Use extensions.derivatives instead. - */ - derivatives: any; - extensions: { derivatives: boolean; fragDepth: boolean; drawBuffers: boolean; shaderTextureLOD: boolean }; - defaultAttributeValues: any; - index0AttributeName: string; - - setValues(parameters: ShaderMaterialParameters): void; - toJSON(meta: any): any; - } - - export class RawShaderMaterial extends ShaderMaterial { - constructor(parameters?: ShaderMaterialParameters); - } - - export interface SpriteMaterialParameters extends MaterialParameters { - color?: number|string; - map?: Texture; - rotation?: number; - } - - export class SpriteMaterial extends Material { - constructor(parameters?: SpriteMaterialParameters); - - color: Color; - map: Texture; - rotation: number; - - setValues(parameters: SpriteMaterialParameters): void; - } - - export class ShadowMaterial extends ShaderMaterial { - constructor(parameters?: ShaderMaterialParameters); - } - - // Math ////////////////////////////////////////////////////////////////////////////////// - - export class Box2 { - constructor(min?: Vector2, max?: Vector2); - - max: Vector2; - min: Vector2; - - set(min: Vector2, max: Vector2): Box2; - setFromPoints(points: Vector2[]): Box2; - setFromCenterAndSize(center: Vector2, size: Vector2): Box2; - clone(): this; - copy(box: this): this; - makeEmpty(): Box2; - isEmpty(): boolean; - getCenter(optionalTarget?: Vector2): Vector2; - getSize(optionalTarget?: Vector2): Vector2; - expandByPoint(point: Vector2): Box2; - expandByVector(vector: Vector2): Box2; - expandByScalar(scalar: number): Box2; - containsPoint(point: Vector2): boolean; - containsBox(box: Box2): boolean; - getParameter(point: Vector2): Vector2; - intersectsBox(box: Box2): boolean; - clampPoint(point: Vector2, optionalTarget?: Vector2): Vector2; - distanceToPoint(point: Vector2): number; - intersect(box: Box2): Box2; - union(box: Box2): Box2; - translate(offset: Vector2): Box2; - equals(box: Box2): boolean; - /** - * @deprecated Use isEmpty() instead. - */ - empty(): any; - /** - * @deprecated Use intersectsBox() instead. - */ - isIntersectionBox(b: any): any; - } - - export class Box3 { - constructor(min?: Vector3, max?: Vector3); - - max: Vector3; - min: Vector3; - - set(min: Vector3, max: Vector3): Box3; - setFromArray(array: ArrayLike): Box3; - setFromPoints(points: Vector3[]): Box3; - setFromCenterAndSize(center: Vector3, size: Vector3): Box3; - setFromObject(object: Object3D): Box3; - clone(): this; - copy(box: this): this; - makeEmpty(): Box3; - isEmpty(): boolean; - getCenter(optionalTarget?: Vector3): Vector3; - getSize(optionalTarget?: Vector3): Vector3; - expandByPoint(point: Vector3): Box3; - expandByVector(vector: Vector3): Box3; - expandByScalar(scalar: number): Box3; - expandByObject(object: Object3D): Box3; - containsPoint(point: Vector3): boolean; - containsBox(box: Box3): boolean; - getParameter(point: Vector3): Vector3; - intersectsBox(box: Box3): boolean; - intersectsSphere(sphere: Sphere): boolean; - intersectsPlane(plane: Plane): boolean; - clampPoint(point: Vector3, optionalTarget?: Vector3): Vector3; - distanceToPoint(point: Vector3): number; - getBoundingSphere(optionalTarget?: Sphere): Sphere; - intersect(box: Box3): Box3; - union(box: Box3): Box3; - applyMatrix4(matrix: Matrix4): Box3; - translate(offset: Vector3): Box3; - equals(box: Box3): boolean; - /** - * @deprecated Use isEmpty() instead. - */ - empty(): any; - /** - * @deprecated Use intersectsBox() instead. - */ - isIntersectionBox(b: any): any; - /** - * @deprecated Use intersectsSphere() instead. - */ - isIntersectionSphere(s: any): any; - } - - export interface HSL { - h: number; - s: number; - l: number; - } - - /** - * Represents a color. See also {@link ColorUtils}. - * - * @example - * var color = new THREE.Color( 0xff0000 ); - * - * @see src/math/Color.js - */ - export class Color { - constructor(color?: Color); - constructor(color?: string); - constructor(color?: number); - constructor(r: number, g: number, b: number); - - /** - * Red channel value between 0 and 1. Default is 1. - */ - r: number; - - /** - * Green channel value between 0 and 1. Default is 1. - */ - g: number; - - /** - * Blue channel value between 0 and 1. Default is 1. - */ - b: number; - - set(color: Color): Color; - set(color: number): Color; - set(color: string): Color; - setScalar(scalar: number): Color; - setHex(hex: number): Color; - - /** - * Sets this color from RGB values. - * @param r Red channel value between 0 and 1. - * @param g Green channel value between 0 and 1. - * @param b Blue channel value between 0 and 1. - */ - setRGB(r: number, g: number, b: number): Color; - - /** - * Sets this color from HSL values. - * Based on MochiKit implementation by Bob Ippolito. - * - * @param h Hue channel value between 0 and 1. - * @param s Saturation value channel between 0 and 1. - * @param l Value channel value between 0 and 1. - */ - setHSL(h: number, s: number, l: number): Color; - - /** - * Sets this color from a CSS context style string. - * @param contextStyle Color in CSS context style format. - */ - setStyle(style: string): Color; - - /** - * Clones this color. - */ - clone(): this; - - /** - * Copies given color. - * @param color Color to copy. - */ - copy(color: this): this; - - /** - * Copies given color making conversion from gamma to linear space. - * @param color Color to copy. - */ - copyGammaToLinear(color: Color, gammaFactor?: number): Color; - - /** - * Copies given color making conversion from linear to gamma space. - * @param color Color to copy. - */ - copyLinearToGamma(color: Color, gammaFactor?: number): Color; - - /** - * Converts this color from gamma to linear space. - */ - convertGammaToLinear(): Color; - - /** - * Converts this color from linear to gamma space. - */ - convertLinearToGamma(): Color; - - /** - * Returns the hexadecimal value of this color. - */ - getHex(): number; - - /** - * Returns the string formated hexadecimal value of this color. - */ - getHexString(): string; - - getHSL(): HSL; - - /** - * Returns the value of this color in CSS context style. - * Example: rgb(r, g, b) - */ - getStyle(): string; - - offsetHSL(h: number, s: number, l: number): Color; - - add(color: Color): Color; - addColors(color1: Color, color2: Color): Color; - addScalar(s: number): Color; - sub(color: Color): Color; - multiply(color: Color): Color; - multiplyScalar(s: number): Color; - lerp(color: Color, alpha: number): Color; - equals(color: Color): boolean; - fromArray(rgb: number[], offset?: number): Color; - toArray(array?: number[], offset?: number): number[]; - } - - export namespace ColorKeywords { - export const aliceblue: number; - export const antiquewhite: number; - export const aqua: number; - export const aquamarine: number; - export const azure: number; - export const beige: number; - export const bisque: number; - export const black: number; - export const blanchedalmond: number; - export const blue: number; - export const blueviolet: number; - export const brown: number; - export const burlywood: number; - export const cadetblue: number; - export const chartreuse: number; - export const chocolate: number; - export const coral: number; - export const cornflowerblue: number; - export const cornsilk: number; - export const crimson: number; - export const cyan: number; - export const darkblue: number; - export const darkcyan: number; - export const darkgoldenrod: number; - export const darkgray: number; - export const darkgreen: number; - export const darkgrey: number; - export const darkkhaki: number; - export const darkmagenta: number; - export const darkolivegreen: number; - export const darkorange: number; - export const darkorchid: number; - export const darkred: number; - export const darksalmon: number; - export const darkseagreen: number; - export const darkslateblue: number; - export const darkslategray: number; - export const darkslategrey: number; - export const darkturquoise: number; - export const darkviolet: number; - export const deeppink: number; - export const deepskyblue: number; - export const dimgray: number; - export const dimgrey: number; - export const dodgerblue: number; - export const firebrick: number; - export const floralwhite: number; - export const forestgreen: number; - export const fuchsia: number; - export const gainsboro: number; - export const ghostwhite: number; - export const gold: number; - export const goldenrod: number; - export const gray: number; - export const green: number; - export const greenyellow: number; - export const grey: number; - export const honeydew: number; - export const hotpink: number; - export const indianred: number; - export const indigo: number; - export const ivory: number; - export const khaki: number; - export const lavender: number; - export const lavenderblush: number; - export const lawngreen: number; - export const lemonchiffon: number; - export const lightblue: number; - export const lightcoral: number; - export const lightcyan: number; - export const lightgoldenrodyellow: number; - export const lightgray: number; - export const lightgreen: number; - export const lightgrey: number; - export const lightpink: number; - export const lightsalmon: number; - export const lightseagreen: number; - export const lightskyblue: number; - export const lightslategray: number; - export const lightslategrey: number; - export const lightsteelblue: number; - export const lightyellow: number; - export const lime: number; - export const limegreen: number; - export const linen: number; - export const magenta: number; - export const maroon: number; - export const mediumaquamarine: number; - export const mediumblue: number; - export const mediumorchid: number; - export const mediumpurple: number; - export const mediumseagreen: number; - export const mediumslateblue: number; - export const mediumspringgreen: number; - export const mediumturquoise: number; - export const mediumvioletred: number; - export const midnightblue: number; - export const mintcream: number; - export const mistyrose: number; - export const moccasin: number; - export const navajowhite: number; - export const navy: number; - export const oldlace: number; - export const olive: number; - export const olivedrab: number; - export const orange: number; - export const orangered: number; - export const orchid: number; - export const palegoldenrod: number; - export const palegreen: number; - export const paleturquoise: number; - export const palevioletred: number; - export const papayawhip: number; - export const peachpuff: number; - export const peru: number; - export const pink: number; - export const plum: number; - export const powderblue: number; - export const purple: number; - export const red: number; - export const rosybrown: number; - export const royalblue: number; - export const saddlebrown: number; - export const salmon: number; - export const sandybrown: number; - export const seagreen: number; - export const seashell: number; - export const sienna: number; - export const silver: number; - export const skyblue: number; - export const slateblue: number; - export const slategray: number; - export const slategrey: number; - export const snow: number; - export const springgreen: number; - export const steelblue: number; - export const tan: number; - export const teal: number; - export const thistle: number; - export const tomato: number; - export const turquoise: number; - export const violet: number; - export const wheat: number; - export const white: number; - export const whitesmoke: number; - export const yellow: number; - export const yellowgreen: number; - } - - export class Euler { - constructor(x?: number, y?: number, z?: number, order?: string); - - x: number; - y: number; - z: number; - order: string; - onChangeCallback: Function; - - set(x: number, y: number, z: number, order?: string): Euler; - clone(): this; - copy(euler: this): this; - setFromRotationMatrix(m: Matrix4, order?: string, update?: boolean): Euler; - setFromQuaternion(q: Quaternion, order?: string, update?: boolean): Euler; - setFromVector3( v: Vector3, order?: string ): Euler; - reorder(newOrder: string): Euler; - equals(euler: Euler): boolean; - fromArray(xyzo: any[]): Euler; - toArray(array?: number[], offset?: number): number[]; - toVector3(optionalResult?: Vector3): Vector3; - onChange(callback: Function): void; - - static RotationOrders: string[]; - static DefaultOrder: string; - } - - /** - * Frustums are used to determine what is inside the camera's field of view. They help speed up the rendering process. - */ - export class Frustum { - constructor(p0?: Plane, p1?: Plane, p2?: Plane, p3?: Plane, p4?: Plane, p5?: Plane); - - /** - * Array of 6 vectors. - */ - planes: Plane[]; - - set(p0?: number, p1?: number, p2?: number, p3?: number, p4?: number, p5?: number): Frustum; - clone(): this; - copy(frustum: this): this; - setFromMatrix(m: Matrix4): Frustum; - intersectsObject(object: Object3D): boolean; - intersectsObject(sprite: Sprite): boolean; - intersectsSphere(sphere: Sphere): boolean; - intersectsBox(box: Box3): boolean; - containsPoint(point: Vector3): boolean; - } - - export class Line3 { - constructor(start?: Vector3, end?: Vector3); - - start: Vector3; - end: Vector3; - - set(start?: Vector3, end?: Vector3): Line3; - clone(): this; - copy(line: this): this; - getCenter(optionalTarget?: Vector3): Vector3; - delta(optionalTarget?: Vector3): Vector3; - distanceSq(): number; - distance(): number; - at(t: number, optionalTarget?: Vector3): Vector3; - closestPointToPointParameter(point: Vector3, clampToLine?: boolean): number; - closestPointToPoint(point: Vector3, clampToLine?: boolean, optionalTarget?: Vector3): Vector3; - applyMatrix4(matrix: Matrix4): Line3; - equals(line: Line3): boolean; - } - - /** - * - * @see src/math/Math.js - */ - export namespace Math { - export const DEG2RAD: number; - export const RAD2DEG: number; - - export function generateUUID(): string; - - /** - * Clamps the x to be between a and b. - * - * @param value Value to be clamped. - * @param min Minimum value - * @param max Maximum value. - */ - export function clamp(value: number, min: number, max: number): number; - export function euclideanModulo( n: number, m: number ): number; - - /** - * Linear mapping of x from range [a1, a2] to range [b1, b2]. - * - * @param x Value to be mapped. - * @param a1 Minimum value for range A. - * @param a2 Maximum value for range A. - * @param b1 Minimum value for range B. - * @param b2 Maximum value for range B. - */ - export function mapLinear(x: number, a1: number, a2: number, b1: number, b2: number): number; - - export function smoothstep(x: number, min: number, max: number): number; - - export function smootherstep(x: number, min: number, max: number): number; - - /** - * Random float from 0 to 1 with 16 bits of randomness. - * Standard Math.random() creates repetitive patterns when applied over larger space. - * @deprecated Use Math.random() - */ - export function random16(): number; - - /** - * Random integer from low to high interval. - */ - export function randInt(low: number, high: number): number; - - /** - * Random float from low to high interval. - */ - export function randFloat(low: number, high: number): number; - - /** - * Random float from - range / 2 to range / 2 interval. - */ - export function randFloatSpread(range: number): number; - - export function degToRad(degrees: number): number; - - export function radToDeg(radians: number): number; - - export function isPowerOfTwo(value: number): boolean; - - export function nearestPowerOfTwo(value: number): number; - - export function nextPowerOfTwo(value: number): number; - } - - /** - * ( interface Matrix<T> ) - */ - export interface Matrix { - /** - * Float32Array with matrix values. - */ - elements: Float32Array; - - /** - * identity():T; - */ - identity(): Matrix; - - /** - * copy(m:T):T; - */ - copy(m: this): this; - - /** - * multiplyScalar(s:number):T; - */ - multiplyScalar(s: number): Matrix; - - determinant(): number; - - /** - * getInverse(matrix:T, throwOnInvertible?:boolean):T; - */ - getInverse(matrix: Matrix, throwOnInvertible?: boolean): Matrix; - - /** - * transpose():T; - */ - transpose(): Matrix; - - /** - * clone():T; - */ - clone(): this; - } - - /** - * ( class Matrix3 implements Matrix<Matrix3> ) - */ - export class Matrix3 implements Matrix { - /** - * Creates an identity matrix. - */ - constructor(); - - /** - * Float32Array with matrix values. - */ - elements: Float32Array; - - set(n11: number, n12: number, n13: number, n21: number, n22: number, n23: number, n31: number, n32: number, n33: number): Matrix3; - identity(): Matrix3; - clone(): this; - copy(m: this): this; - setFromMatrix4(m: Matrix4): Matrix3; - applyToBuffer(buffer: BufferAttribute, offset?: number, length?: number): BufferAttribute; - multiplyScalar(s: number): Matrix3; - determinant(): number; - getInverse(matrix: Matrix3, throwOnDegenerate?: boolean): Matrix3; - - /** - * Transposes this matrix in place. - */ - transpose(): Matrix3; - getNormalMatrix(matrix4: Matrix4): Matrix3; - - /** - * Transposes this matrix into the supplied array r, and returns itself. - */ - transposeIntoArray(r: number[]): number[]; - fromArray(array: number[], offset?: number): Matrix3; - toArray(): number[]; - - /** - * @deprecated - */ - multiplyVector3(vector: Vector3): any; - multiplyVector3Array(a: any): any; - getInverse(matrix: Matrix4, throwOnDegenerate?: boolean): Matrix3; - flattenToArrayOffset(array: number[], offset: number): number[]; - } - - /** - * A 4x4 Matrix. - * - * @example - * // Simple rig for rotating around 3 axes - * var m = new THREE.Matrix4(); - * var m1 = new THREE.Matrix4(); - * var m2 = new THREE.Matrix4(); - * var m3 = new THREE.Matrix4(); - * var alpha = 0; - * var beta = Math.PI; - * var gamma = Math.PI/2; - * m1.makeRotationX( alpha ); - * m2.makeRotationY( beta ); - * m3.makeRotationZ( gamma ); - * m.multiplyMatrices( m1, m2 ); - * m.multiply( m3 ); - */ - export class Matrix4 implements Matrix { - constructor(); - - /** - * Float32Array with matrix values. - */ - elements: Float32Array; - - /** - * Sets all fields of this matrix. - */ - set(n11: number, n12: number, n13: number, n14: number, n21: number, n22: number, n23: number, n24: number, n31: number, n32: number, n33: number, n34: number, n41: number, n42: number, n43: number, n44: number): Matrix4; - - /** - * Resets this matrix to identity. - */ - identity(): Matrix4; - clone(): this; - copy(m: this): this; - copyPosition(m: Matrix4): Matrix4; - extractBasis( xAxis: Vector3, yAxis: Vector3, zAxis: Vector3): Matrix4; - makeBasis( xAxis: Vector3, yAxis: Vector3, zAxis: Vector3): Matrix4; - - /** - * Copies the rotation component of the supplied matrix m into this matrix rotation component. - */ - extractRotation(m: Matrix4): Matrix4; - makeRotationFromEuler(euler: Euler): Matrix4; - makeRotationFromQuaternion(q: Quaternion): Matrix4; - /** - * Constructs a rotation matrix, looking from eye towards center with defined up vector. - */ - lookAt(eye: Vector3, target: Vector3, up: Vector3): Matrix4; - - /** - * Multiplies this matrix by m. - */ - multiply(m: Matrix4): Matrix4; - - premultiply(m: Matrix4): Matrix4; - - /** - * Sets this matrix to a x b. - */ - multiplyMatrices(a: Matrix4, b: Matrix4): Matrix4; - - /** - * Sets this matrix to a x b and stores the result into the flat array r. - * r can be either a regular Array or a TypedArray. - */ - multiplyToArray(a: Matrix4, b: Matrix4, r: number[]): Matrix4; - - /** - * Multiplies this matrix by s. - */ - multiplyScalar(s: number): Matrix4; - applyToBuffer( buffer: BufferAttribute, offset?: number, length?: number): BufferAttribute; - /** - * Computes determinant of this matrix. - * Based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm - */ - determinant(): number; - - /** - * Transposes this matrix. - */ - transpose(): Matrix4; - - - - /** - * Sets the position component for this matrix from vector v. - */ - setPosition(v: Vector3): Matrix4; - - - /** - * Sets this matrix to the inverse of matrix m. - * Based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm. - */ - getInverse(m: Matrix4, throwOnDegeneratee?: boolean): Matrix4; - - /** - * Multiplies the columns of this matrix by vector v. - */ - scale(v: Vector3): Matrix4; - - getMaxScaleOnAxis(): number; - /** - * Sets this matrix as translation transform. - */ - makeTranslation(x: number, y: number, z: number): Matrix4; - - /** - * Sets this matrix as rotation transform around x axis by theta radians. - * - * @param theta Rotation angle in radians. - */ - makeRotationX(theta: number): Matrix4; - - /** - * Sets this matrix as rotation transform around y axis by theta radians. - * - * @param theta Rotation angle in radians. - */ - makeRotationY(theta: number): Matrix4; - - /** - * Sets this matrix as rotation transform around z axis by theta radians. - * - * @param theta Rotation angle in radians. - */ - makeRotationZ(theta: number): Matrix4; - - /** - * Sets this matrix as rotation transform around axis by angle radians. - * Based on http://www.gamedev.net/reference/articles/article1199.asp. - * - * @param axis Rotation axis. - * @param theta Rotation angle in radians. - */ - makeRotationAxis(axis: Vector3, angle: number): Matrix4; - - /** - * Sets this matrix as scale transform. - */ - makeScale(x: number, y: number, z: number): Matrix4; - - /** - * Sets this matrix to the transformation composed of translation, rotation and scale. - */ - compose(translation: Vector3, rotation: Quaternion, scale: Vector3): Matrix4; - - /** - * Decomposes this matrix into the translation, rotation and scale components. - * If parameters are not passed, new instances will be created. - */ - decompose(translation?: Vector3, rotation?: Quaternion, scale?: Vector3): Object[]; // [Vector3, Quaternion, Vector3] - - /** - * Creates a frustum matrix. - */ - makePerspective(left: number, right: number, bottom: number, top: number, near: number, far: number): Matrix4; - - /** - * Creates a perspective projection matrix. - */ - makePerspective(fov: number, aspect: number, near: number, far: number): Matrix4; - - /** - * Creates an orthographic projection matrix. - */ - makeOrthographic(left: number, right: number, top: number, bottom: number, near: number, far: number): Matrix4; - equals( matrix: Matrix4 ): boolean; - fromArray(array: number[], offset?: number): Matrix4; - toArray(): number[]; - - /** - * @deprecated - */ - extractPosition(m: Matrix4): Matrix4; - setRotationFromQuaternion(q: Quaternion): Matrix4; - multiplyVector3(v: any): any; - multiplyVector4(v: any): any; - multiplyVector3Array(array: number[]): number[]; - rotateAxis(v: any): void; - crossVector(v: any): void; - flattenToArrayOffset(array: number[], offset: number): number[]; - } - - export class Plane { - constructor(normal?: Vector3, constant?: number); - - normal: Vector3; - constant: number; - - set(normal: Vector3, constant: number): Plane; - setComponents(x: number, y: number, z: number, w: number): Plane; - setFromNormalAndCoplanarPoint(normal: Vector3, point: Vector3): Plane; - setFromCoplanarPoints(a: Vector3, b: Vector3, c: Vector3): Plane; - clone(): this; - copy(plane: this): this; - normalize(): Plane; - negate(): Plane; - distanceToPoint(point: Vector3): number; - distanceToSphere(sphere: Sphere): number; - projectPoint(point: Vector3, optionalTarget?: Vector3): Vector3; - orthoPoint(point: Vector3, optionalTarget?: Vector3): Vector3; - intersectLine(line: Line3, optionalTarget?: Vector3): Vector3; - intersectsLine(line: Line3): boolean; - intersectsBox(box: Box3): boolean; - coplanarPoint(optionalTarget?: boolean): Vector3; - applyMatrix4(matrix: Matrix4, optionalNormalMatrix?: Matrix3): Plane; - translate(offset: Vector3): Plane; - equals(plane: Plane): boolean; - - /** - * @deprecated - */ - isIntersectionLine(l: any): any; - } - - export class Spherical { - constructor(radius?: number, phi?: number, theta?: number); - - radius: number; - phi: number; - theta: number; - - set(radius: number, phi: number, theta: number): Spherical; - clone(): this; - copy(other: this): this; - makeSafe(): void; - setFromVector3(vec3: Vector3): Spherical; - } - - /** - * Implementation of a quaternion. This is used for rotating things without incurring in the dreaded gimbal lock issue, amongst other advantages. - * - * @example - * var quaternion = new THREE.Quaternion(); - * quaternion.setFromAxisAngle( new THREE.Vector3( 0, 1, 0 ), Math.PI / 2 ); - * var vector = new THREE.Vector3( 1, 0, 0 ); - * vector.applyQuaternion( quaternion ); - */ - export class Quaternion { - /** - * @param x x coordinate - * @param y y coordinate - * @param z z coordinate - * @param w w coordinate - */ - constructor(x?: number, y?: number, z?: number, w?: number); - - x: number; - y: number; - z: number; - w: number; - - /** - * Sets values of this quaternion. - */ - set(x: number, y: number, z: number, w: number): Quaternion; - - /** - * Clones this quaternion. - */ - clone(): this; - - /** - * Copies values of q to this quaternion. - */ - copy(q: this): this; - - /** - * Sets this quaternion from rotation specified by Euler angles. - */ - setFromEuler(euler: Euler, update?: boolean): Quaternion; - - /** - * Sets this quaternion from rotation specified by axis and angle. - * Adapted from http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm. - * Axis have to be normalized, angle is in radians. - */ - setFromAxisAngle(axis: Vector3, angle: number): Quaternion; - - /** - * Sets this quaternion from rotation component of m. Adapted from http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm. - */ - setFromRotationMatrix(m: Matrix4): Quaternion; - setFromUnitVectors(vFrom: Vector3, vTo: Vector3): Quaternion; - /** - * Inverts this quaternion. - */ - inverse(): Quaternion; - - conjugate(): Quaternion; - dot(v: Quaternion): number; - lengthSq(): number; - - /** - * Computes length of this quaternion. - */ - length(): number; - - /** - * Normalizes this quaternion. - */ - normalize(): Quaternion; - - /** - * Multiplies this quaternion by b. - */ - multiply(q: Quaternion): Quaternion; - premultiply(q: Quaternion): Quaternion; - - /** - * Sets this quaternion to a x b - * Adapted from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm. - */ - multiplyQuaternions(a: Quaternion, b: Quaternion): Quaternion; - - - slerp(qb: Quaternion, t: number): Quaternion; - equals(v: Quaternion): boolean; - fromArray(n: number[]): Quaternion; - toArray(): number[]; - - fromArray(xyzw: number[], offset?: number): Quaternion; - toArray(xyzw?: number[], offset?: number): number[]; - - onChange(callback: Function): Quaternion; - onChangeCallback: Function; - - /** - * Adapted from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/. - */ - static slerp(qa: Quaternion, qb: Quaternion, qm: Quaternion, t: number): Quaternion; - - static slerpFlat(dst: number[], dstOffset: number, src0: number[], srcOffset: number, src1: number[], stcOffset1: number, t: number): Quaternion; - - /** - * @deprecated - */ - multiplyVector3(v: any): any; - } - - export class Ray { - constructor(origin?: Vector3, direction?: Vector3); - - origin: Vector3; - direction: Vector3; - - set(origin: Vector3, direction: Vector3): Ray; - clone(): this; - copy(ray: this): this; - at(t: number, optionalTarget?: Vector3): Vector3; - lookAt(v: Vector3): Vector3; - recast(t: number): Ray; - closestPointToPoint(point: Vector3, optionalTarget?: Vector3): Vector3; - distanceToPoint(point: Vector3): number; - distanceSqToPoint(point: Vector3): number; - distanceSqToSegment(v0: Vector3, v1: Vector3, optionalPointOnRay?: Vector3, optionalPointOnSegment?: Vector3): number; - intersectSphere(sphere: Sphere, optionalTarget?: Vector3): Vector3; - intersectsSphere(sphere: Sphere): boolean; - distanceToPlane(plane: Plane): number; - intersectPlane(plane: Plane, optionalTarget?: Vector3): Vector3; - intersectsPlane(plane: Plane): boolean; - intersectBox(box: Box3, optionalTarget?: Vector3): Vector3; - intersectsBox(box: Box3): boolean; - intersectTriangle(a: Vector3, b: Vector3, c: Vector3, backfaceCulling: boolean, optionalTarget?: Vector3): Vector3; - applyMatrix4(matrix4: Matrix4): Ray; - equals(ray: Ray): boolean; - - /** - * @deprecated - */ - isIntersectionBox(b: any): any; - isIntersectionPlane(p: any): any; - isIntersectionSphere(s: any): any; - } - - export class Sphere { - constructor(center?: Vector3, radius?: number); - - center: Vector3; - radius: number; - - set(center: Vector3, radius: number): Sphere; - setFromPoints(points: Vector3[], optionalCenter?: Vector3): Sphere; - clone(): this; - copy(sphere: this): this; - empty(): boolean; - containsPoint(point: Vector3): boolean; - distanceToPoint(point: Vector3): number; - intersectsSphere(sphere: Sphere): boolean; - intersectsBox(box: Box3): boolean; - intersectsPlane(plane: Plane): boolean; - clampPoint(point: Vector3, optionalTarget?: Vector3): Vector3; - getBoundingBox(optionalTarget?: Box3): Box3; - applyMatrix4(matrix: Matrix4): Sphere; - translate(offset: Vector3): Sphere; - equals(sphere: Sphere): boolean; - } - - export interface SplineControlPoint { - x: number; - y: number; - z: number; - } - - class Triangle { - constructor(a?: Vector3, b?: Vector3, c?: Vector3); - - a: Vector3; - b: Vector3; - c: Vector3; - - set(a: Vector3, b: Vector3, c: Vector3): Triangle; - setFromPointsAndIndices(points: Vector3[], i0: number, i1: number, i2: number): Triangle; - clone(): this; - copy(triangle: this): this; - area(): number; - midpoint(optionalTarget?: Vector3): Vector3; - normal(optionalTarget?: Vector3): Vector3; - plane(optionalTarget?: Vector3): Plane; - barycoordFromPoint(point: Vector3, optionalTarget?: Vector3): Vector3; - containsPoint(point: Vector3): boolean; - closestPointToPoint(): Vector3; - equals(triangle: Triangle): boolean; - - static normal(a: Vector3, b: Vector3, c: Vector3, optionalTarget?: Vector3): Vector3; - static barycoordFromPoint(point: Vector3, a: Vector3, b: Vector3, c: Vector3, optionalTarget: Vector3): Vector3; - static containsPoint(point: Vector3, a: Vector3, b: Vector3, c: Vector3): boolean; - } - - /** - * ( interface Vector<T> ) - * - * Abstract interface of Vector2, Vector3 and Vector4. - * Currently the members of Vector is NOT type safe because it accepts different typed vectors. - * Those definitions will be changed when TypeScript innovates Generics to be type safe. - * - * @example - * var v:THREE.Vector = new THREE.Vector3(); - * v.addVectors(new THREE.Vector2(0, 1), new THREE.Vector2(2, 3)); // invalid but compiled successfully - */ - export interface Vector { - setComponent(index: number, value: number): void; - - getComponent(index: number): number; - - /** - * copy(v:T):T; - */ - copy(v: this): this; - - /** - * add(v:T):T; - */ - add(v: Vector): Vector; - - /** - * addVectors(a:T, b:T):T; - */ - addVectors(a: Vector, b: Vector): Vector; - - /** - * sub(v:T):T; - */ - sub(v: Vector): Vector; - - /** - * subVectors(a:T, b:T):T; - */ - subVectors(a: Vector, b: Vector): Vector; - - /** - * multiplyScalar(s:number):T; - */ - multiplyScalar(s: number): Vector; - - /** - * divideScalar(s:number):T; - */ - divideScalar(s: number): Vector; - - /** - * negate():T; - */ - negate(): Vector; - - /** - * dot(v:T):T; - */ - dot(v: Vector): number; - - /** - * lengthSq():number; - */ - lengthSq(): number; - - /** - * length():number; - */ - length(): number; - - /** - * normalize():T; - */ - normalize(): Vector; - - /** - * NOTE: Vector4 doesn't have the property. - * - * distanceTo(v:T):number; - */ - distanceTo?(v: Vector): number; - - /** - * NOTE: Vector4 doesn't have the property. - * - * distanceToSquared(v:T):number; - */ - distanceToSquared?(v: Vector): number; - - /** - * setLength(l:number):T; - */ - setLength(l: number): Vector; - - /** - * lerp(v:T, alpha:number):T; - */ - lerp(v: Vector, alpha: number): Vector; - - /** - * equals(v:T):boolean; - */ - equals(v: Vector): boolean; - - /** - * clone():T; - */ - clone(): this; - } - - /** - * 2D vector. - * - * ( class Vector2 implements Vector ) - */ - export class Vector2 implements Vector { - constructor(x?: number, y?: number); - - x: number; - y: number; - width: number; - height: number; - - /** - * Sets value of this vector. - */ - set(x: number, y: number): Vector2; - - setScalar(scalar: number): Vector2; - - /** - * Sets X component of this vector. - */ - setX(x: number): Vector2; - - /** - * Sets Y component of this vector. - */ - setY(y: number): Vector2; - - /** - * Sets a component of this vector. - */ - setComponent(index: number, value: number): void; - - /** - * Gets a component of this vector. - */ - getComponent(index: number): number; - /** - * Clones this vector. - */ - clone(): this; - /** - * Copies value of v to this vector. - */ - copy(v: this): this; - - /** - * Adds v to this vector. - */ - add(v: Vector2): Vector2; - - /** - * Sets this vector to a + b. - */ - addScalar(s: number): Vector2; - addVectors(a: Vector2, b: Vector2): Vector2; - addScaledVector( v: Vector2, s: number ): Vector2; - /** - * Subtracts v from this vector. - */ - sub(v: Vector2): Vector2; - - /** - * Sets this vector to a - b. - */ - subVectors(a: Vector2, b: Vector2): Vector2; - - multiply(v: Vector2): Vector2; - /** - * Multiplies this vector by scalar s. - */ - multiplyScalar(scalar: number): Vector2; - - divide(v: Vector2): Vector2; - /** - * Divides this vector by scalar s. - * Set vector to ( 0, 0 ) if s == 0. - */ - divideScalar(s: number): Vector2; - - min(v: Vector2): Vector2; - - max(v: Vector2): Vector2; - clamp(min: Vector2, max: Vector2): Vector2; - clampScalar(min: number, max: number): Vector2; - clampLength(min: number, max: number): Vector2; - floor(): Vector2; - ceil(): Vector2; - round(): Vector2; - roundToZero(): Vector2; - - /** - * Inverts this vector. - */ - negate(): Vector2; - - /** - * Computes dot product of this vector and v. - */ - dot(v: Vector2): number; - - /** - * Computes squared length of this vector. - */ - lengthSq(): number; - - /** - * Computes length of this vector. - */ - length(): number; - lengthManhattan(): number; - - /** - * Normalizes this vector. - */ - normalize(): Vector2; - - /** - * computes the angle in radians with respect to the positive x-axis - */ - angle(): number; - - /** - * Computes distance of this vector to v. - */ - distanceTo(v: Vector2): number; - - /** - * Computes squared distance of this vector to v. - */ - distanceToSquared(v: Vector2): number; - distanceToManhattan(v: Vector2): number; - - /** - * Normalizes this vector and multiplies it by l. - */ - setLength(length: number): Vector2; - - lerp(v: Vector2, alpha: number): Vector2; - - lerpVectors(v1: Vector2, v2: Vector2, alpha: number): Vector2; - - /** - * Checks for strict equality of this vector and v. - */ - equals(v: Vector2): boolean; - - fromArray(xy: number[], offset?: number): Vector2; - - toArray(xy?: number[], offset?: number): number[]; - - fromBufferAttribute( attribute: BufferAttribute, index: number, offset?: number): Vector2; - - rotateAround( center: Vector2, angle: number ): Vector2; - } - - /** - * 3D vector. - * - * @example - * var a = new THREE.Vector3( 1, 0, 0 ); - * var b = new THREE.Vector3( 0, 1, 0 ); - * var c = new THREE.Vector3(); - * c.crossVectors( a, b ); - * - * @see src/math/Vector3.js - * - * ( class Vector3 implements Vector ) - */ - export class Vector3 implements Vector { - constructor(x?: number, y?: number, z?: number); - - x: number; - y: number; - z: number; - - /** - * Sets value of this vector. - */ - set(x: number, y: number, z: number): Vector3; - - /** - * Sets all values of this vector. - */ - setScalar(scalar: number): Vector3; - - /** - * Sets x value of this vector. - */ - setX(x: number): Vector3; - - /** - * Sets y value of this vector. - */ - setY(y: number): Vector3; - - /** - * Sets z value of this vector. - */ - setZ(z: number): Vector3; - - setComponent(index: number, value: number): void; - getComponent(index: number): number; - /** - * Clones this vector. - */ - clone(): this; - /** - * Copies value of v to this vector. - */ - copy(v: this): this; - - /** - * Adds v to this vector. - */ - add(a: Vector3): Vector3; - addScalar(s: number): Vector3; - addScaledVector(v: Vector3, s: number): Vector3; - - /** - * Sets this vector to a + b. - */ - addVectors(a: Vector3, b: Vector3): Vector3; - - /** - * Subtracts v from this vector. - */ - sub(a: Vector3): Vector3; - - subScalar( s: number ): Vector3; - - /** - * Sets this vector to a - b. - */ - subVectors(a: Vector3, b: Vector3): Vector3; - - multiply(v: Vector3): Vector3; - /** - * Multiplies this vector by scalar s. - */ - multiplyScalar(s: number): Vector3; - multiplyVectors(a: Vector3, b: Vector3): Vector3; - applyEuler(euler: Euler): Vector3; - applyAxisAngle(axis: Vector3, angle: number): Vector3; - applyMatrix3(m: Matrix3): Vector3; - applyMatrix4(m: Matrix4): Vector3; - applyQuaternion(q: Quaternion): Vector3; - project(camrea: Camera): Vector3; - unproject(camera: Camera): Vector3; - transformDirection(m: Matrix4): Vector3; - divide(v: Vector3): Vector3; - - /** - * Divides this vector by scalar s. - * Set vector to ( 0, 0, 0 ) if s == 0. - */ - divideScalar(s: number): Vector3; - min(v: Vector3): Vector3; - max(v: Vector3): Vector3; - clamp(min: Vector3, max: Vector3): Vector3; - clampScalar(min: number, max: number): Vector3; - clampLength(min: number, max: number): Vector3; - floor(): Vector3; - ceil(): Vector3; - round(): Vector3; - roundToZero(): Vector3; - - /** - * Inverts this vector. - */ - negate(): Vector3; - - /** - * Computes dot product of this vector and v. - */ - dot(v: Vector3): number; - - /** - * Computes squared length of this vector. - */ - lengthSq(): number; - - /** - * Computes length of this vector. - */ - length(): number; - - /** - * Computes Manhattan length of this vector. - * http://en.wikipedia.org/wiki/Taxicab_geometry - */ - lengthManhattan(): number; - - /** - * Normalizes this vector. - */ - normalize(): Vector3; - - /** - * Normalizes this vector and multiplies it by l. - */ - setLength(l: number): Vector3; - lerp(v: Vector3, alpha: number): Vector3; - - lerpVectors(v1: Vector3, v2: Vector3, alpha: number): Vector3; - - /** - * Sets this vector to cross product of itself and v. - */ - cross(a: Vector3): Vector3; - - /** - * Sets this vector to cross product of a and b. - */ - crossVectors(a: Vector3, b: Vector3): Vector3; - projectOnVector(v: Vector3): Vector3; - projectOnPlane(planeNormal: Vector3): Vector3; - reflect(vector: Vector3): Vector3; - angleTo(v: Vector3): number; - - /** - * Computes distance of this vector to v. - */ - distanceTo(v: Vector3): number; - - /** - * Computes squared distance of this vector to v. - */ - distanceToSquared(v: Vector3): number; - distanceToManhattan(v: Vector3): number; - - setFromSpherical(s: Spherical): Vector3; - setFromMatrixPosition(m: Matrix4): Vector3; - setFromMatrixScale(m: Matrix4): Vector3; - setFromMatrixColumn(matrix: Matrix4, index: number): Vector3; - - /** - * Checks for strict equality of this vector and v. - */ - equals(v: Vector3): boolean; - - fromArray(xyz: number[], offset?: number): Vector3; - toArray(xyz?: number[], offset?: number): number[]; - fromBufferAttribute( attribute: BufferAttribute, index: number, offset?: number): Vector3; - - /** - * @deprecated - */ - getPositionFromMatrix(m: Matrix4): Vector3; - getScaleFromMatrix(m: Matrix4): Vector3; - getColumnFromMatrix(index: number, matrix: Matrix4): Vector3; - } - - /** - * @deprecated use THREE.Vector3 instead. - */ - export class Vertex extends Vector3 {} - - /** - * 4D vector. - * - * ( class Vector4 implements Vector ) - */ - export class Vector4 implements Vector { - constructor(x?: number, y?: number, z?: number, w?: number); - - x: number; - y: number; - z: number; - w: number; - - /** - * Sets value of this vector. - */ - set(x: number, y: number, z: number, w: number): Vector4; - - /** - * Sets all values of this vector. - */ - setScalar(scalar: number): Vector4; - - /** - * Sets X component of this vector. - */ - setX(x: number): Vector4; - - /** - * Sets Y component of this vector. - */ - setY(y: number): Vector4; - - /** - * Sets Z component of this vector. - */ - setZ(z: number): Vector4; - - /** - * Sets w component of this vector. - */ - setW(w: number): Vector4; - - setComponent(index: number, value: number): void; - getComponent(index: number): number; - /** - * Clones this vector. - */ - clone(): this; - /** - * Copies value of v to this vector. - */ - copy(v: this): this; - - /** - * Adds v to this vector. - */ - add(v: Vector4): Vector4; - addScalar(s: number): Vector4; - - /** - * Sets this vector to a + b. - */ - addVectors(a: Vector4, b: Vector4): Vector4; - addScaledVector( v: Vector4, s: number ): Vector4; - /** - * Subtracts v from this vector. - */ - sub(v: Vector4): Vector4; - - subScalar(s: number): Vector4; - - /** - * Sets this vector to a - b. - */ - subVectors(a: Vector4, b: Vector4): Vector4; - - /** - * Multiplies this vector by scalar s. - */ - multiplyScalar(s: number): Vector4; - applyMatrix4(m: Matrix4): Vector4; - - /** - * Divides this vector by scalar s. - * Set vector to ( 0, 0, 0 ) if s == 0. - */ - divideScalar(s: number): Vector4; - - /** - * http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm - * @param q is assumed to be normalized - */ - setAxisAngleFromQuaternion(q: Quaternion): Vector4; - - /** - * http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm - * @param m assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled) - */ - setAxisAngleFromRotationMatrix(m: Matrix3): Vector4; - - min(v: Vector4): Vector4; - max(v: Vector4): Vector4; - clamp(min: Vector4, max: Vector4): Vector4; - clampScalar(min: number, max: number): Vector4; - floor(): Vector4; - ceil(): Vector4; - round(): Vector4; - roundToZero(): Vector4; - - /** - * Inverts this vector. - */ - negate(): Vector4; - - /** - * Computes dot product of this vector and v. - */ - dot(v: Vector4): number; - - /** - * Computes squared length of this vector. - */ - lengthSq(): number; - - /** - * Computes length of this vector. - */ - length(): number; - lengthManhattan(): number; - - /** - * Normalizes this vector. - */ - normalize(): Vector4; - /** - * Normalizes this vector and multiplies it by l. - */ - setLength(length: number): Vector4; - - /** - * Linearly interpolate between this vector and v with alpha factor. - */ - lerp(v: Vector4, alpha: number): Vector4; - - lerpVectors(v1: Vector4, v2: Vector4, alpha: number): Vector4; - - /** - * Checks for strict equality of this vector and v. - */ - equals(v: Vector4): boolean; - - fromArray(xyzw: number[], offset?: number): Vector4; - - toArray(xyzw?: number[], offset?: number): number[]; - - fromBufferAttribute( attribute: BufferAttribute, index: number, offset?: number): Vector4; - } - - export abstract class Interpolant { - constructor(parameterPositions: any, samplesValues: any, sampleSize: number, resultBuffer?: any); - - parameterPositions: any; - samplesValues: any; - valueSize: number; - resultBuffer: any; - - evaluate(time: number): any; - } - - export class CubicInterpolant extends Interpolant { - constructor(parameterPositions: any, samplesValues: any, sampleSize: number, resultBuffer?: any); - - interpolate_(i1: number, t0: number, t: number, t1: number): any; - } - - export class DiscreteInterpolant extends Interpolant { - constructor(parameterPositions: any, samplesValues: any, sampleSize: number, resultBuffer?: any); - - interpolate_(i1: number, t0: number, t: number, t1: number): any; - } - - export class LinearInterpolant extends Interpolant { - constructor(parameterPositions: any, samplesValues: any, sampleSize: number, resultBuffer?: any); - - interpolate_(i1: number, t0: number, t: number, t1: number): any; - } - - export class QuaternionLinearInterpolant extends Interpolant { - constructor(parameterPositions: any, samplesValues: any, sampleSize: number, resultBuffer?: any); - - interpolate_(i1: number, t0: number, t: number, t1: number): any; - } - - // Objects ////////////////////////////////////////////////////////////////////////////////// - - export class Bone extends Object3D { - constructor(skin: SkinnedMesh); - - skin: SkinnedMesh; - } - - export class Group extends Object3D { - constructor(); - } - - export class LOD extends Object3D { - constructor(); - - levels: any[]; - - addLevel(object: Object3D, distance?: number): void; - getObjectForDistance(distance: number): Object3D; - raycast(raycaster: Raycaster, intersects: any): void; - update(camera: Camera): void; - toJSON(meta: any): any; - - /** - * @deprecated - */ - objects: any[]; - } - - export interface LensFlareProperty { - texture: Texture; // Texture - size: number; // size in pixels (-1 = use texture.width) - distance: number; // distance (0-1) from light source (0=at light source) - x: number; - y: number; - z: number; // screen position (-1 => 1) z = 0 is ontop z = 1 is back - scale: number; // scale - rotation: number; // rotation - opacity: number; // opacity - color: Color; // color - blending: Blending; - } - - export class LensFlare extends Object3D { - constructor(texture?: Texture, size?: number, distance?: number, blending?: Blending, color?: Color); - - lensFlares: LensFlareProperty[]; - positionScreen: Vector3; - customUpdateCallback: (object: LensFlare) => void; - - add(object: Object3D): void; - add(texture: Texture, size?: number, distance?: number, blending?: Blending, color?: Color): void; - updateLensFlares(): void; - } - - export class Line extends Object3D { - constructor( - geometry?: Geometry | BufferGeometry, - material?: LineDashedMaterial | LineBasicMaterial | ShaderMaterial, - mode?: number - ); - - geometry: Geometry|BufferGeometry; - material: Material; // LineDashedMaterial or LineBasicMaterial or ShaderMaterial - - raycast(raycaster: Raycaster, intersects: any): void; - } - - /** - * @deprecated - */ - export const LineStrip: number; - /** - * @deprecated - */ - export const LinePieces: number; - - export class LineSegments extends Line { - constructor( - geometry?: Geometry | BufferGeometry, - material?: LineDashedMaterial | LineBasicMaterial | ShaderMaterial, - mode?: number - ); - } - - enum LineMode {} - - export class Mesh extends Object3D { - constructor(geometry?: Geometry, material?: Material); - constructor(geometry?: BufferGeometry, material?: Material); - - geometry: Geometry|BufferGeometry; - material: Material; - drawMode: TrianglesDrawModes; - - setDrawMode(drawMode: TrianglesDrawModes): void; - updateMorphTargets(): void; - getMorphTargetIndexByName(name: string): number; - raycast(raycaster: Raycaster, intersects: any): void; - } - - /** - * A class for displaying particles in the form of variable size points. For example, if using the WebGLRenderer, the particles are displayed using GL_POINTS. - * - * @see src/objects/ParticleSystem.js - */ - export class Points extends Object3D { - - /** - * @param geometry An instance of Geometry or BufferGeometry. - * @param material An instance of Material (optional). - */ - constructor( - geometry?: Geometry | BufferGeometry, - material?: Material - ); - - /** - * An instance of Geometry or BufferGeometry, where each vertex designates the position of a particle in the system. - */ - geometry: Geometry | BufferGeometry; - - /** - * An instance of Material, defining the object's appearance. Default is a PointsMaterial with randomised colour. - */ - material: Material; - - raycast(raycaster: Raycaster, intersects: any): void; - } - - /** - * @deprecated - */ - export class PointCloud extends Points {} - /** - * @deprecated - */ - export class ParticleSystem extends Points {} - - export class Skeleton { - constructor(bones: Bone[], boneInverses?: Matrix4[], useVertexTexture?: boolean); - - useVertexTexture: boolean; - identityMatrix: Matrix4; - bones: Bone[]; - boneTextureWidth: number; - boneTextureHeight: number; - boneMatrices: Float32Array; - boneTexture: DataTexture; - boneInverses: Matrix4[]; - - calculateInverses(bone: Bone): void; - pose(): void; - update(): void; - clone(): this; - } - - export class SkinnedMesh extends Mesh { - constructor(geometry?: Geometry|BufferGeometry, material?: MeshBasicMaterial, useVertexTexture?: boolean); - constructor(geometry?: Geometry|BufferGeometry, material?: MeshDepthMaterial, useVertexTexture?: boolean); - constructor(geometry?: Geometry|BufferGeometry, material?: MultiMaterial, useVertexTexture?: boolean); - constructor(geometry?: Geometry|BufferGeometry, material?: MeshLambertMaterial, useVertexTexture?: boolean); - constructor(geometry?: Geometry|BufferGeometry, material?: MeshNormalMaterial, useVertexTexture?: boolean); - constructor(geometry?: Geometry|BufferGeometry, material?: MeshPhongMaterial, useVertexTexture?: boolean); - constructor(geometry?: Geometry|BufferGeometry, material?: ShaderMaterial, useVertexTexture?: boolean); - - bindMode: string; - bindMatrix: Matrix4; - bindMatrixInverse: Matrix4; - skeleton: Skeleton; - - bind( skeleton: Skeleton, bindMatrix?: Matrix4 ): void; - pose(): void; - normalizeSkinWeights(): void; - updateMatrixWorld(force?: boolean): void; - } - - export class Sprite extends Object3D { - constructor(material?: Material); - - geometry: BufferGeometry; - material: SpriteMaterial; - - raycast(raycaster: Raycaster, intersects: any): void; - } - - /** - * @deprecated Use Sprite instead. - */ - export class Particle extends Sprite {} - - - // Renderers ////////////////////////////////////////////////////////////////////////////////// - - export interface Renderer { - domElement: HTMLCanvasElement; - - render(scene: Scene, camera: Camera): void; - setSize(width: number, height: number, updateStyle?: boolean): void; - } - - export interface WebGLRendererParameters { - /** - * A Canvas where the renderer draws its output. - */ - canvas?: HTMLCanvasElement; - - /** - * shader precision. Can be "highp", "mediump" or "lowp". - */ - precision?: string; - - /** - * default is true. - */ - alpha?: boolean; - - /** - * default is true. - */ - premultipliedAlpha?: boolean; - - /** - * default is false. - */ - antialias?: boolean; - - /** - * default is true. - */ - stencil?: boolean; - - /** - * default is false. - */ - preserveDrawingBuffer?: boolean; - - /** - * default is 0x000000. - */ - clearColor?: number; - - /** - * default is 0. - */ - clearAlpha?: number; - - devicePixelRatio?: number; - - /** - * default is false. - */ - logarithmicDepthBuffer?: boolean; - } - - - /** - * The WebGL renderer displays your beautifully crafted scenes using WebGL, if your device supports it. - * This renderer has way better performance than CanvasRenderer. - * - * @see src/renderers/WebGLRenderer.js - */ - export class WebGLRenderer implements Renderer { - /** - * parameters is an optional object with properties defining the renderer's behaviour. The constructor also accepts no parameters at all. In all cases, it will assume sane defaults when parameters are missing. - */ - constructor(parameters?: WebGLRendererParameters); - - /** - * A Canvas where the renderer draws its output. - * This is automatically created by the renderer in the constructor (if not provided already); you just need to add it to your page. - */ - domElement: HTMLCanvasElement; - - /** - * The HTML5 Canvas's 'webgl' context obtained from the canvas where the renderer will draw. - */ - context: WebGLRenderingContext; - - /** - * Defines whether the renderer should automatically clear its output before rendering. - */ - autoClear: boolean; - - /** - * If autoClear is true, defines whether the renderer should clear the color buffer. Default is true. - */ - autoClearColor: boolean; - - /** - * If autoClear is true, defines whether the renderer should clear the depth buffer. Default is true. - */ - autoClearDepth: boolean; - - /** - * If autoClear is true, defines whether the renderer should clear the stencil buffer. Default is true. - */ - autoClearStencil: boolean; - - /** - * Defines whether the renderer should sort objects. Default is true. - */ - sortObjects: boolean; - - clippingPlanes: any[]; - localClippingEnabled: boolean; - - extensions: WebGLExtensions; - - /** - * Default is false. - */ - gammaInput: boolean; - - /** - * Default is false. - */ - gammaOutput: boolean; - - physicallyCorrectLights: boolean; - toneMapping: ToneMapping; - toneMappingExposure: number; - toneMappingWhitePoint: number; - - /** - * Default is false. - */ - shadowMapDebug: boolean; - - /** - * Default is 8. - */ - maxMorphTargets: number; - - /** - * Default is 4. - */ - maxMorphNormals: number; - - /** - * An object with a series of statistical information about the graphics board memory and the rendering process. Useful for debugging or just for the sake of curiosity. The object contains the following fields: - */ - info: { - memory: { - geometries: number; - textures: number; - }; - render: { - calls: number; - vertices: number; - faces: number; - points: number; - }; - programs: number; - }; - - shadowMap: WebGLShadowMap; - - pixelRation: number; - - capabilities: WebGLCapabilities; - properties: WebGLProperties; - state: WebGLState; - allocTextureUnit: any; - - /** - * Return the WebGL context. - */ - getContext(): WebGLRenderingContext; - getContextAttributes(): any; - forceContextLoss(): void; - - getMaxAnisotropy(): number; - getPrecision(): string; - getPixelRatio(): number; - setPixelRatio(value: number): void; - - getSize(): { width: number; height: number; }; - - /** - * Resizes the output canvas to (width, height), and also sets the viewport to fit that size, starting in (0, 0). - */ - setSize(width: number, height: number, updateStyle?: boolean): void; - - /** - * Sets the viewport to render from (x, y) to (x + width, y + height). - */ - setViewport(x?: number, y?: number, width?: number, height?: number): void; - - /** - * Sets the scissor area from (x, y) to (x + width, y + height). - */ - setScissor(x: number, y: number, width: number, height: number): void; - - /** - * Enable the scissor test. When this is enabled, only the pixels within the defined scissor area will be affected by further renderer actions. - */ - setScissorTest(enable: boolean): void; - - /** - * Returns a THREE.Color instance with the current clear color. - */ - getClearColor(): Color; - - /** - * Sets the clear color, using color for the color and alpha for the opacity. - */ - setClearColor(color: Color, alpha?: number): void; - setClearColor(color: string, alpha?: number): void; - setClearColor(color: number, alpha?: number): void; - - /** - * Returns a float with the current clear alpha. Ranges from 0 to 1. - */ - getClearAlpha(): number; - - setClearAlpha(alpha: number): void; - - /** - * Tells the renderer to clear its color, depth or stencil drawing buffer(s). - * Arguments default to true - */ - clear(color?: boolean, depth?: boolean, stencil?: boolean): void; - - clearColor(): void; - clearDepth(): void; - clearStencil(): void; - clearTarget(renderTarget: WebGLRenderTarget, color: boolean, depth: boolean, stencil: boolean): void; - resetGLState(): void; - dispose(): void; - - /** - * Tells the shadow map plugin to update using the passed scene and camera parameters. - * - * @param scene an instance of Scene - * @param camera — an instance of Camera - */ - renderBufferImmediate(object: Object3D, program: Object, material: Material): void; - - renderBufferDirect(camera: Camera, fog: Fog, material: Material, geometryGroup: any, object: Object3D): void; - - /** - * Render a scene using a camera. - * The render is done to the renderTarget (if specified) or to the canvas as usual. - * If forceClear is true, the canvas will be cleared before rendering, even if the renderer's autoClear property is false. - */ - render(scene: Scene, camera: Camera, renderTarget?: RenderTarget, forceClear?: boolean): void; - - /** - * Used for setting the gl frontFace, cullFace states in the GPU, thus enabling/disabling face culling when rendering. - * If cullFace is false, culling will be disabled. - * @param cullFace "back", "front", "front_and_back", or false. - * @param frontFace "ccw" or "cw - */ - setFaceCulling(cullFace?: CullFace, frontFace?: FrontFaceDirection): void; - /** - * @deprecated - */ - setTexture(texture: Texture, slot: number): void; - setTexture2D(texture: Texture, slot: number): void; - setTextureCube(texture: Texture, slot: number): void; - getCurrentRenderTarget(): RenderTarget; - setRenderTarget(renderTarget: RenderTarget): void; - readRenderTargetPixels( renderTarget: RenderTarget, x: number, y: number, width: number, height: number, buffer: any ): void; - - /** - * @deprecated - */ - gammaFactor: number; - shadowMapEnabled: boolean; - shadowMapType: ShadowMapType; - shadowMapCullFace: CullFace; - - supportsFloatTextures(): any; - supportsHalfFloatTextures(): any; - supportsStandardDerivatives(): any; - supportsCompressedTextureS3TC(): any; - supportsCompressedTexturePVRTC(): any; - supportsBlendMinMax(): any; - supportsVertexTextures(): any; - supportsInstancedArrays(): any; - enableScissorTest(boolean: any): any; - } - - export interface RenderTarget {} // not defined in the code, used in LightShadow and WebGRenderer classes - - export interface WebGLRenderTargetOptions { - wrapS?: Wrapping; - wrapT?: Wrapping; - magFilter?: TextureFilter; - minFilter?: TextureFilter; - format?: number; // RGBAFormat; - type?: TextureDataType; // UnsignedByteType; - anisotropy?: number; // 1; - depthBuffer?: boolean; // true; - stencilBuffer?: boolean; // true; - } - - export class WebGLRenderTarget extends EventDispatcher { - constructor(width: number, height: number, options?: WebGLRenderTargetOptions); - - uuid: string; - width: number; - height: number; - scissor: Vector4; - scissorTest: boolean; - viewpport: Vector4; - texture: Texture; - depthBuffer: boolean; - stencilBuffer: boolean; - depthTexture: Texture; - /** - * @deprecated Use texture.wrapS instead. - */ - wrapS: any; - /** - * @deprecated Use texture.wrapT instead. - */ - wrapT: any; - /** - * @deprecated Use texture.magFilter instead. - */ - magFilter: any; - /** - * @deprecated Use texture.minFilter instead. - */ - minFilter: any; - /** - * @deprecated Use texture.anisotropy instead. - */ - anisotropy: any; - /** - * @deprecated Use texture.offset instead. - */ - offset: any; - /** - * @deprecated Use texture.repeat instead. - */ - repeat: any; - /** - * @deprecated Use texture.format instead. - */ - format: any; - /** - * @deprecated Use texture.type instead. - */ - type: any; - /** - * @deprecated Use texture.generateMipmaps instead. - */ - generateMipmaps: any; - - setSize(width: number, height: number): void; - clone(): this; - copy(source: this): this; - dispose(): void; - } - - export class WebGLRenderTargetCube extends WebGLRenderTarget { - constructor(width: number, height: number, options?: WebGLRenderTargetOptions); - - activeCubeFace: number; // PX 0, NX 1, PY 2, NY 3, PZ 4, NZ 5 - activeMipMapLevel: number; - } - - // Renderers / Shaders ///////////////////////////////////////////////////////////////////// - export let ShaderChunk: { - [name: string]: string; - - alphamap_fragment: string; - alphamap_pars_fragment: string; - alphatest_fragment: string; - aomap_fragment: string; - aomap_pars_fragment: string; - begin_vertex: string; - beginnormal_vertex: string; - bsdfs: string; - bumpmap_pars_fragment: string; - clipping_planes_fragment: string; - clipping_planes_pars_fragment: string; - clipping_planes_pars_vertex: string; - clipping_planes_vertex: string; - color_fragment: string; - color_pars_fragment: string; - color_pars_vertex: string; - color_vertex: string; - common: string; - cube_frag: string; - cube_vert: string; - cube_uv_reflection_fragment: string; - defaultnormal_vertex: string; - depth_frag: string; - depth_vert: string; - distanceRGBA_frag: string; - distanceRGBA_vert: string; - displacementmap_vertex: string; - displacementmap_pars_vertex: string; - emissivemap_fragment: string; - emissivemap_pars_fragment: string; - encodings_pars_fragment: string; - encodings_fragment: string; - envmap_fragment: string; - envmap_pars_fragment: string; - envmap_pars_vertex: string; - envmap_vertex: string; - equirect_frag: string; - equirect_vert: string; - fog_fragment: string; - fog_pars_fragment: string; - linedashed_frag: string; - linedashed_vert: string; - lightmap_fragment: string; - lightmap_pars_fragment: string; - lights_lambert_vertex: string; - lights_pars: string; - lights_phong_fragment: string; - lights_phong_pars_fragment: string; - lights_physical_fragment: string; - lights_physical_pars_fragment: string; - lights_template: string; - logdepthbuf_fragment: string; - logdepthbuf_pars_fragment: string; - logdepthbuf_pars_vertex: string; - logdepthbuf_vertex: string; - map_fragment: string; - map_pars_fragment: string; - map_particle_fragment: string; - map_particle_pars_fragment: string; - meshbasic_frag: string; - meshbasic_vert: string; - meshlambert_frag: string; - meshlambert_vert: string; - meshphong_frag: string; - meshphong_vert: string; - meshphysical_frag: string; - meshphysical_vert: string; - metalnessmap_fragment: string; - metalnessmap_pars_fragment: string; - morphnormal_vertex: string; - morphtarget_pars_vertex: string; - morphtarget_vertex: string; - normal_flip: string; - normal_frag: string; - normal_fragment: string; - normal_vert: string; - normalmap_pars_fragment: string; - packing: string; - points_frag: string; - points_vert: string; - shadow_frag: string; - shadow_vert: string; - - premultiplied_alpha_fragment: string; - project_vertex: string; - roughnessmap_fragment: string; - roughnessmap_pars_fragment: string; - shadowmap_pars_fragment: string; - shadowmap_pars_vertex: string; - shadowmap_vertex: string; - shadowmask_pars_fragment: string; - skinbase_vertex: string; - skinning_pars_vertex: string; - skinning_vertex: string; - skinnormal_vertex: string; - specularmap_fragment: string; - specularmap_pars_fragment: string; - tonemapping_fragment: string; - tonemapping_pars_fragment: string; - uv2_pars_fragment: string; - uv2_pars_vertex: string; - uv2_vertex: string; - uv_pars_fragment: string; - uv_pars_vertex: string; - uv_vertex: string; - worldpos_vertex: string; - }; - - export interface Shader { - uniforms: { [uniform: string]: IUniform }; - vertexShader: string; - fragmentShader: string; - } - - export let ShaderLib: { - [name: string]: Shader; - basic: Shader; - lambert: Shader; - phong: Shader; - standard: Shader; - points: Shader; - dashed: Shader; - depth: Shader; - normal: Shader; - cube: Shader; - equirect: Shader; - depthRGBA: Shader; - distanceRGBA: Shader; - physical: Shader; - }; - - export interface IUniform { - value: any; - } - - export let UniformsLib: { - common: { - diffuse: IUniform; - opacity: IUniform; - map: IUniform; - offsetRepeat: IUniform; - specularMap: IUniform; - alphaMap: IUniform; - envMap: IUniform; - flipEnvMap: IUniform; - reflectivity: IUniform; - refractionRation: IUniform; - }; - aomap: { - aoMap: IUniform; - aoMapIntensity: IUniform; - }; - lightmap: { - lightMap: IUniform; - lightMapIntensity: IUniform; - }; - emissivemap: { emissiveMap: IUniform }; - bumpmap: { - bumpMap: IUniform; - bumpScale: IUniform; - }; - normalmap: { - normalMap: IUniform; - normalScale: IUniform; - }; - displacementmap: { - displacementMap: IUniform; - displacementScale: IUniform; - displacementBias: IUniform; - }; - roughnessmap: { roughnessMap: IUniform }; - metalnessmap: { metalnessMap: IUniform }; - fog: { - fogDensity: IUniform; - fogNear: IUniform; - fogFar: IUniform; - fogColor: IUniform; - }; - lights: { - ambientLightColor: IUniform - directionalLights: { - value: any[]; - properties: { - direction: {}; - color: {}; - shadow: {}; - shadowBias: {}; - shadowRadius: {}; - shadowMapSize: {}; - }; - }; - directionalShadowMap: IUniform; - directionalShadowMatrix: IUniform; - spotLights: { - value: any[]; - properties: { - color: {}; - position: {}; - direction: {}; - distance: {}; - coneCos: {}; - penumbraCos: {}; - decay: {}; - shadow: {}; - shadowBias: {}; - shadowRadius: {}; - shadowMapSize: {}; - }; - }; - spotShadowMap: IUniform; - spotShadowMatrix: IUniform; - pointLights: { - value: any[]; - properties: { - color: {}; - position: {}; - decay: {}; - distance: {}; - shadow: {}; - shadowBias: {}; - shadowRadius: {}; - shadowMapSize: {}; - }; - }; - pointShadowMap: IUniform; - pointShadowMatrix: IUniform; - hemisphereLigtts: { - value: any[]; - properties: { - direction: {}; - skycolor: {}; - groundColor: {}; - }; - }; - }; - points: { - diffuse: IUniform; - opacity: IUniform; - size: IUniform; - scale: IUniform; - map: IUniform; - offsetRepeat: IUniform; - }; - }; - - export namespace UniformsUtils { - export function merge(uniforms: any[]): any; - export function clone(uniforms_src: any): any; - } - - export class Uniform { - constructor(value: any); - /** - * @deprecated - */ - constructor(type: string, value: any); - /** - * @deprecated - */ - type: string; - value: any; - dynamic: boolean; - onUpdateCallback: Function; - - onUpdate(callback: Function): Uniform; - } - - // Renderers / WebGL ///////////////////////////////////////////////////////////////////// - export class WebGLBufferRenderer { - constructor(_gl: WebGLRenderingContext, extensions: any, _infoRender: any); - - setMode(value: any): void; - render(start: any, count: number): void; - renderInstances(geometry: any): void; - } - - export class WebGLClipping { - uniform: { value: any, needsUpdate: boolean }; - numPlanes: number; - - init(planes: any[], enableLocalClipping: boolean, camera: Camera): boolean; - beginShadows(): void; - endShadows(): void; - setState(planes: any[], clipShadows: boolean, camera: Camera, cache: boolean, fromCache: boolean): void; - } - - export interface WebGLCapabilitiesParameters { - precision?: any; - logarithmicDepthBuffer?: any; - } - - export class WebGLCapabilities { - constructor(gl: WebGLRenderingContext, extensions: any, parameters: WebGLCapabilitiesParameters); - - precision: any; - logarithmicDepthBuffer: any; - maxTextures: any; - maxVertexTextures: any; - maxTextureSize: any; - maxCubemapSize: any; - maxAttributes: any; - maxVertexUniforms: any; - maxVaryings: any; - maxFragmentUniforms: any; - vertexTextures: any; - floatFragmentTextures: any; - floatVertexTextures: any; - - getMaxAnisotropy(): number; - getMaxPrecision(precision: string): string; - } - - export class WebGLExtensions { - constructor(gl: WebGLRenderingContext); - - get(name: string): any; - } - - export class WebGLGeometries { - constructor(gl: WebGLRenderingContext, extensions: any, _infoRender: any); - - get(object: any): any; - } - - export class WebGLLights { - constructor(gl: WebGLRenderingContext, properties: any, info: any); - - get(light: any): any; - } - - export class WebGLIndexedBufferRenderer { - constructor(gl: WebGLRenderingContext, properties: any, info: any); - - setMode(value: any): void; - setIndex(index: any): void; - render(start: any, count: number): void; - renderInstances(geometry: any, start: any, count: number): void; - } - - export class WebGLObjects { - constructor(gl: WebGLRenderingContext, properties: any, info: any); - - getAttributeBuffer(attribute: any): any; - getWireframeAttribute(geometry: any): any; - update(object: any): void; - } - - export class WebGLProgram { - constructor(renderer: WebGLRenderer, code: string, material: ShaderMaterial, parameters: WebGLRendererParameters); - - id: number; - code: string; - usedTimes: number; - program: any; - vertexShader: WebGLShader; - fragmentShader: WebGLShader; - /** - * @deprecated Use getUniforms() instead. - */ - uniforms: any; - /** - * @deprecated Use getAttributes() instead. - */ - attributes: any; - - getUniforms(): WebGLUniforms; - getAttributes(): any; - destroy(): void; - } - - export class WebGLPrograms { - constructor(renderer: WebGLRenderer, capabilities: any); - - programs: any[]; - - getParameters(material: ShaderMaterial, lights: any, fog: any, nClipPlanes: number, object: any): any; - getProgramCode(material: ShaderMaterial, parameters: any): string; - acquireProgram(material: ShaderMaterial, parameters: any, code: string): WebGLProgram; - releaseProgram(program: WebGLProgram): void; - } - - export class WebGLTextures { - constructor(gl: any, extensions: any, state: any, properties: any, capabilities: any, paramThreeToGL: Function, info: any); - - setTexture2D(texture: any, slot: number): void; - setTextureCube(texture: any, slot: number): void; - setTextureCubeDynamic(texture: any, slot: number): void; - setupRenderTarget(renderTarget: any): void; - updateRenderTargetMipmap(renderTarget: any): void; - } - - export class WebGLUniforms { - constructor(gl: any, program: WebGLProgram, renderer: WebGLRenderer); - - renderer: WebGLRenderer; - - setValue(gl: any, value: any, renderer?: any): void; - set(gl: any, object: any, name: string): void; - setOptional(gl: any, object: any, name: string): void; - - static upload(gl: any, seq: any, values: any[], renderer: any): void; - static seqWithValue(seq: any, values: any[]): any[]; - static splitDynamic(seq: any, values: any[]): any[]; - static evalDynamic(seq: any, values: any[], object: any, camera: any): any[]; - } - - export class WebGLProperties { - constructor(); - - get(object: any): any; - delete(object: any): void; - clear(): void; - } - - export class WebGLShader { - constructor(gl: any, type: string, string: string); - } - - export class WebGLShadowMap { - constructor(_renderer: Renderer, _lights: any[], _objects: any[], capabilities: any); - - enabled: boolean; - autoUpdate: boolean; - needsUpdate: boolean; - type: ShadowMapType; - renderReverseSided: boolean; - renderSingleSided: boolean; - - render(scene: Scene, camera: Camera): void; - - /** - * @deprecated - */ - cullFace: any; - } - - export class WebGLState { - constructor(gl: any, extensions: any, paramThreeToGL: Function); - - buffers: { - color: WebGLColorBuffer, - depth: WebGLDepthBuffer, - stencil: WebGLStencilBuffer, - }; - - init(): void; - initAttributes(): void; - enableAttribute(attribute: string): void; - enableAttributeAndDivisor(attribute: string, meshPerAttribute: any, extension: any): void; - disableUnusedAttributes(): void; - enable(id: string): void; - disable(id: string): void; - getCompressedTextureFormats(): any[]; - setBlending(blending: number, blendEquation: number, blendSrc: number, blendDst: number, blendEquationAlpha: number, blendSrcAlpha: number, blendDstAlpha: number): void; - setColorWrite(colorWrite: number): void; - setDepthTest(depthTest: number): void; - setDepthWrite(depthWrite: number): void; - setDepthFunc(depthFunc: Function): void; - setStencilTest(stencilTest: boolean): void; - setStencilWrite(stencilWrite: any): void; - setStencilFunc(stencilFunc: Function, stencilRef: any, stencilMask: number): void; - setStencilOp(stencilFail: any, stencilZFail: any, stencilZPass: any): void; - setFlipSided(flipSided: number): void; - setCullFace(cullFace: CullFace): void; - setLineWidth(width: number): void; - setPolygonOffset(polygonoffset: number, factor: number, units: number): void; - setScissorTest(scissorTest: boolean): void; - getScissorTest(): boolean; - activeTexture(webglSlot: any): void; - bindTexture(webglType: any, webglTexture: any): void; - compressedTexImage2D(): void; - texImage2D(): void; - clearColor(r: number, g: number, b: number, a: number): void; - clearDepth(depth: number): void; - clearStencil(stencil: any): void; - scissor(scissor: any): void; - viewport(viewport: any): void; - reset(): void; - } - - export class WebGLColorBuffer { - constructor(gl: any, state: any); - - setMask(colorMask: number): void; - setLocked(lock: boolean): void; - setClear(r: number, g: number, b: number, a: number): void; - reset(): void; - } - - export class WebGLDepthBuffer { - constructor(gl: any, state: any); - - setTest(depthTest: boolean): void; - sertMask(depthMask: number): void; - setFunc(depthFunc: Function): void; - setLocked(lock: boolean): void; - setClear(depth: any): void; - reset(): void; - } - - export class WebGLStencilBuffer { - constructor(gl: any, state: any); - - setTest(stencilTest: boolean): void; - sertMask(stencilMask: number): void; - setFunc(stencilFunc: Function, stencilRef: any, stencilMask: number): void; - setOp(stencilFail: any, stencilZFail: any, stencilZPass: any): void; - setLocked(lock: boolean): void; - setClear(stencil: any): void; - reset(): void; - } - - // Renderers / WebGL / Plugins ///////////////////////////////////////////////////////////////////// - export class LensFlarePlugin { - constructor(renderer: WebGLRenderer, flares: any[]); - - render(scene: Scene, camera: Camera, viewportWidth: number, viewportHeight: number): void; - } - - export class SpritePlugin { - constructor(renderer: WebGLRenderer, sprites: any[]); - - render(scene: Scene, camera: Camera, viewportWidth: number, viewportHeight: number): void; - } - - // Scenes ///////////////////////////////////////////////////////////////////// - - /** - * Scenes allow you to set up what and where is to be rendered by three.js. This is where you place objects, lights and cameras. - */ - export class Scene extends Object3D { - constructor(); - - /** - * A fog instance defining the type of fog that affects everything rendered in the scene. Default is null. - */ - fog: IFog; - - /** - * If not null, it will force everything in the scene to be rendered with that material. Default is null. - */ - overrideMaterial: Material; - autoUpdate: boolean; - background: any; - - toJSON(meta?: any): any; - } - - export interface IFog { - name: string; - color: Color; - clone(): this; - toJSON(): any; - } - - /** - * This class contains the parameters that define linear fog, i.e., that grows linearly denser with the distance. - */ - export class Fog implements IFog { - constructor(hex: number, near?: number, far?: number); - - name: string; - - /** - * Fog color. - */ - color: Color; - - /** - * The minimum distance to start applying fog. Objects that are less than 'near' units from the active camera won't be affected by fog. - */ - near: number; - - /** - * The maximum distance at which fog stops being calculated and applied. Objects that are more than 'far' units away from the active camera won't be affected by fog. - * Default is 1000. - */ - far: number; - - clone(): this; - toJSON(): any; - } - - /** - * This class contains the parameters that define linear fog, i.e., that grows exponentially denser with the distance. - */ - export class FogExp2 implements IFog { - constructor(hex: number|string, density?: number); - - name: string; - color: Color; - - /** - * Defines how fast the fog will grow dense. - * Default is 0.00025. - */ - density: number; - - clone(): this; - toJSON(): any; - } - - // Textures ///////////////////////////////////////////////////////////////////// - export let TextureIdCount: number; - - export class Texture extends EventDispatcher { - constructor( - image?: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement, - mapping?: Mapping, - wrapS?: Wrapping, - wrapT?: Wrapping, - magFilter?: TextureFilter, - minFilter?: TextureFilter, - format?: PixelFormat, - type?: TextureDataType, - anisotropy?: number, - encoding?: TextureEncoding - ); - - id: number; - uuid: string; - name: string; - sourceFile: string; - image: any; // HTMLImageElement or ImageData or { width: number, height: number } in some children; - mipmaps: ImageData[]; - mapping: Mapping; - wrapS: Wrapping; - wrapT: Wrapping; - magFilter: TextureFilter; - minFilter: TextureFilter; - anisotropy: number; - format: PixelFormat; - type: TextureDataType; - offset: Vector2; - repeat: Vector2; - generateMipmaps: boolean; - premultiplyAlpha: boolean; - flipY: boolean; - unpackAlignment: number; - encoding: TextureEncoding; - version: number; - needsUpdate: boolean; - onUpdate: () => void; - static DEFAULT_IMAGE: any; - static DEFAULT_MAPPING: any; - - clone(): this; - copy(source: this): this; - toJSON(meta: any): any; - dispose(): void; - transformUv(uv: Vector): void; - } - - export class DepthTexture extends Texture { - constructor( - width: number, - heighht: number, - type?: TextureDataType, - mapping?: Mapping, - wrapS?: Wrapping, - wrapT?: Wrapping, - magFilter?: TextureFilter, - minFilter?: TextureFilter, - anisotropy?: number - ); - - image: { width: number, height: number }; - } - - export class CanvasTexture extends Texture { - constructor( - canvas: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement, - mapping?: Mapping, - wrapS?: Wrapping, - wrapT?: Wrapping, - magFilter?: TextureFilter, - minFilter?: TextureFilter, - format?: PixelFormat, - type?: TextureDataType, - anisotropy?: number - ); - } - - export class CubeTexture extends Texture { - constructor( - images?: any[], // HTMLImageElement or HTMLCanvasElement - mapping?: Mapping, - wrapS?: Wrapping, - wrapT?: Wrapping, - magFilter?: TextureFilter, - minFilter?: TextureFilter, - format?: PixelFormat, - type?: TextureDataType, - anisotropy?: number, - encoding?: TextureEncoding - ); - - images: any; // returns and sets the value of Texture.image in the codde ? - } - - export class CompressedTexture extends Texture { - constructor( - mipmaps: ImageData[], - width: number, - height: number, - format?: PixelFormat, - type?: TextureDataType, - mapping?: Mapping, - wrapS?: Wrapping, - wrapT?: Wrapping, - magFilter?: TextureFilter, - minFilter?: TextureFilter, - anisotropy?: number, - encoding?: TextureEncoding - ); - - image: { width: number; height: number; }; - } - - export class DataTexture extends Texture { - constructor( - data: ArrayBuffer | Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array, - width: number, - height: number, - format: PixelFormat, - type: TextureDataType, - mapping: Mapping, - wrapS: Wrapping, - wrapT: Wrapping, - magFilter: TextureFilter, - minFilter: TextureFilter, - anisotropy?: number, - encoding?: TextureEncoding - ); - - image: ImageData; - } - - export class VideoTexture extends Texture { - constructor( - video: HTMLVideoElement, - mapping?: Mapping, - wrapS?: Wrapping, - wrapT?: Wrapping, - magFilter?: TextureFilter, - minFilter?: TextureFilter, - format?: PixelFormat, - type?: TextureDataType, - anisotropy?: number - ); - } - - // Extras ///////////////////////////////////////////////////////////////////// - - /** - * @deprecated Use TextureLoader instead. - */ - export namespace ImageUtils { - export let crossOrigin: string; - - export function loadTexture(url: string, mapping?: Mapping, onLoad?: (texture: Texture) => void, onError?: (message: string) => void): Texture; - export function loadTextureCube(array: string[], mapping?: Mapping, onLoad?: (texture: Texture) => void , onError?: (message: string) => void ): Texture; - } - - export namespace SceneUtils { - export function createMultiMaterialObject(geometry: Geometry, materials: Material[]): Object3D; - export function detach(child: Object3D, parent: Object3D, scene: Scene): void; - export function attach(child: Object3D, scene: Scene, parent: Object3D): void; - } - - export namespace ShapeUtils { - export function area(contour: number[]): number; - export function triangulate(contour: number[], indices: boolean): number[]; - export function triangulateShape(contour: number[], holes: any[]): number[]; - export function isClockWise(pts: number[]): boolean; - } - - // Extras / Audio ///////////////////////////////////////////////////////////////////// - - export class Audio extends Object3D { - constructor(listener: AudioListener); - - type: string; - context: AudioContext; - source: AudioBufferSourceNode; - gain: GainNode; - autoplay: boolean; - startTime: number; - playbackRate: number; - hasPlaybackControl: boolean; - isPlaying: boolean; - sourceType: string; - filters: any[]; - - getOutput(): GainNode; - setNodeSource(audioNode: AudioBufferSourceNode): Audio; - setBuffer(audioBuffer: AudioBuffer): Audio; - play(): Audio; - pause(): Audio; - stop(): Audio; - connect(): Audio; - disconnect(): Audio; - getFilters(): any[]; - setFilter(value: any[]): Audio; - getFilter(): any; - setFilter(filter: any): Audio; - setPlaybackRate(value: number): Audio; - getPlaybackRate(): number; - onEnded(): void; - getLoop(): boolean; - setLoop(value: boolean): void; - getVolume(): number; - setVolume(value: number): Audio; - /** - * @deprecated Use AudioLoader instead. - */ - load(file: string): Audio; - } - - export class AudioAnalyser { - constructor(audio: any, fftSize: number); - - analyser: any; - data: Uint8Array; - - getFrequencyData(): Uint8Array; - getAverageFrequency(): number; - - /** - * @deprecated - */ - getData(file: any): any; - } - - export const AudioContext: AudioContext; - - export class AudioBuffer { - constructor(context: any); - - context: any; - ready: boolean; - readyCallbacks: Function[]; - - load(file: string): AudioBuffer; - onReady(callback: Function): void; - } - - export class PositionalAudio extends Audio { - constructor(listener: AudioListener); - - panner: PannerNode; - - setRefDistance(value: number): void; - getRefDistance(): number; - setRolloffFactor(value: number): void; - getRolloffFactor(): number; - setDistanceModel(value: number): void; - getDistanceModel(): number; - setMaxDistance(value: number): void; - getMaxDistance(): number; - } - - export class AudioListener extends Object3D { - constructor(); - - type: string; - context: AudioContext; - gain: GainNode; - - getInput(): GainNode; - removeFilter(): void; - setFilter(value: any): void; - getFilter(): any; - setMasterVolume(value: number): void; - getMasterVolume(): number; - } - - // Extras / Core ///////////////////////////////////////////////////////////////////// - - /** - * An extensible curve object which contains methods for interpolation - * class Curve<T extends Vector> - */ - export class Curve { - /** - * Returns a vector for point t of the curve where t is between 0 and 1 - * getPoint(t: number): T; - */ - getPoint(t: number): T; - - /** - * Returns a vector for point at relative position in curve according to arc length - * getPointAt(u: number): T; - */ - getPointAt(u: number): T; - - /** - * Get sequence of points using getPoint( t ) - * getPoints(divisions?: number): T[]; - */ - getPoints(divisions?: number): T[]; - - /** - * Get sequence of equi-spaced points using getPointAt( u ) - * getSpacedPoints(divisions?: number): T[]; - */ - getSpacedPoints(divisions?: number): T[]; - - /** - * Get total curve arc length - */ - getLength(): number; - - /** - * Get list of cumulative segment lengths - */ - getLengths(divisions?: number): number[]; - - /** - * Update the cumlative segment distance cache - */ - updateArcLengths(): void; - - /** - * Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equi distance - */ - getUtoTmapping(u: number, distance: number): number; - - /** - * Returns a unit vector tangent at t. If the subclassed curve do not implement its tangent derivation, 2 points a small delta apart will be used to find its gradient which seems to give a reasonable approximation - * getTangent(t: number): T; - */ - getTangent(t: number): T; - - /** - * Returns tangent at equidistance point u on the curve - * getTangentAt(u: number): T; - */ - getTangentAt(u: number): T; - - /** - * @deprecated since r84. - */ - static create(constructorFunc: Function, getPointFunc: Function): Function; - } - - export class CurvePath extends Curve { - constructor(); - - curves: Curve[]; - autoClose: boolean; - - add(curve: Curve): void; - checkConnection(): boolean; - closePath(): void; - getPoint(t: number): T; - getLength(): number; - updateArcLengths(): void; - getCurveLengths(): number[]; - getSpacedPoints(divisions?: number): T[]; - getPoints(divisions?: number): T[]; - createPointsGeometry(divisions: number): Geometry; - createSpacedPointsGeometry(divisions: number): Geometry; - createGeometry(points: T[]): Geometry; - } - - export enum PathActions { - MOVE_TO, - LINE_TO, - QUADRATIC_CURVE_TO, // Bezier quadratic curve - BEZIER_CURVE_TO, // Bezier cubic curve - CSPLINE_THRU, // Catmull-rom spline - ARC, // Circle - ELLIPSE, - } - - export interface PathAction { - action: PathActions; - args: any; - } - - /** - * a 2d path representation, comprising of points, lines, and cubes, similar to the html5 2d canvas api. It extends CurvePath. - */ - export class Path extends CurvePath { - constructor(points?: Vector2[]); - - currentPoint: Vector2; - - fromPoints(vectors: Vector2[]): void; - moveTo(x: number, y: number): void; - lineTo(x: number, y: number): void; - quadraticCurveTo(aCPx: number, aCPy: number, aX: number, aY: number): void; - bezierCurveTo(aCP1x: number, aCP1y: number, aCP2x: number, aCP2y: number, aX: number, aY: number): void; - splineThru(pts: Vector2[]): void; - arc(aX: number, aY: number, aRadius: number, aStartAngle: number, aEndAngle: number, aClockwise: boolean): void; - absarc(aX: number, aY: number, aRadius: number, aStartAngle: number, aEndAngle: number, aClockwise: boolean): void; - ellipse(aX: number, aY: number, xRadius: number, yRadius: number, aStartAngle: number, aEndAngle: number, aClockwise: boolean, aRotation: number): void; - absellipse(aX: number, aY: number, xRadius: number, yRadius: number, aStartAngle: number, aEndAngle: number, aClockwise: boolean, aRotation: number): void; - } - - export class ShapePath { - constructor(); - - subPaths: any[]; - currentPath: any; - - moveTo(x: number, y: number): void; - lineTo(x: number, y: number): void; - quadraticCurveTo(aCPx: number, aCPy: number, aX: number, aY: number): void; - bezierCurveTo(aCP1x: number, aCP1y: number, aCP2x: number, aCP2y: number, aX: number, aY: number): void; - splineThru(pts: Vector2[]): void; - toShapes(isCCW: boolean, noHoles: any): Shape[]; - } - - /** - * Defines a 2d shape plane using paths. - */ - export class Shape extends Path { - constructor(points?: Vector2[]); - - holes: Path[]; - - extrude(options?: any): ExtrudeGeometry; - makeGeometry(options?: any): ShapeGeometry; - getPointsHoles(divisions: number): Vector2[][]; - extractAllPoints(divisions: number): { - shape: Vector2[]; - holes: Vector2[][]; - }; - extractPoints(divisions: number): Vector2[]; - } - - // Extras / Curves ///////////////////////////////////////////////////////////////////// - export namespace CurveUtils { - export function tangentQuadraticBezier(t: number, p0: number, p1: number, p2: number): number; - export function tangentCubicBezier(t: number, p0: number, p1: number, p2: number, p3: number): number; - export function tangentSpline(t: number, p0: number, p1: number, p2: number, p3: number): number; - export function interpolate(p0: number, p1: number, p2: number, p3: number, t: number): number; - } - - export class CatmullRomCurve3 extends Curve { - constructor(points?: Vector3[]); - - points: Vector3[]; - - getPoint(t: number): Vector3; - } - - export class CubicBezierCurve extends Curve { - constructor(v0: Vector2, v1: Vector2, v2: Vector2, v3: Vector2); - - v0: Vector2; - v1: Vector2; - v2: Vector2; - v3: Vector2; - } - - export class CubicBezierCurve3 extends Curve { - constructor(v0: Vector3, v1: Vector3, v2: Vector3, v3: Vector3); - - v0: Vector3; - v1: Vector3; - v2: Vector3; - v3: Vector3; - - getPoint(t: number): Vector3; - } - - export class EllipseCurve extends Curve { - constructor(aX: number, aY: number, xRadius: number, yRadius: number, aStartAngle: number, aEndAngle: number, aClockwise: boolean, aRotation: number); - - aX: number; - aY: number; - xRadius: number; - yRadius: number; - aStartAngle: number; - aEndAngle: number; - aClockwise: boolean; - aRotation: number; - } - export class ArcCurve extends EllipseCurve { - constructor(aX: number, aY: number, aRadius: number, aStartAngle: number, aEndAngle: number, aClockwise: boolean ); - } - - export class LineCurve extends Curve { - constructor( v1: Vector2, v2: Vector2 ); - - v1: Vector2; - v2: Vector2; - } - - export class LineCurve3 extends Curve { - constructor(v1: Vector3, v2: Vector3); - - v1: Vector3; - v2: Vector3; - - getPoint(t: number): Vector3; - } - - export class QuadraticBezierCurve extends Curve { - constructor( v0: Vector2, v1: Vector2, v2: Vector2 ); - - v0: Vector2; - v1: Vector2; - v2: Vector2; - } - - export class QuadraticBezierCurve3 extends Curve { - constructor(v0: Vector3, v1: Vector3, v2: Vector3); - - v0: Vector3; - v1: Vector3; - v2: Vector3; - - getPoint(t: number): Vector3; - } - - export class SplineCurve extends Curve { - constructor(points?: Vector2[]); - - points: Vector2[]; - } - - - // Extras / Geometries ///////////////////////////////////////////////////////////////////// - export class BoxBufferGeometry extends BufferGeometry { - constructor(width: number, height: number, depth: number, widthSegments?: number, heightSegments?: number, depthSegments?: number); - - parameters: { - width: number; - height: number; - depth: number; - widthSegments: number; - heightSegments: number; - depthSegments: number; - }; - } - - /** - * BoxGeometry is the quadrilateral primitive geometry class. It is typically used for creating a cube or irregular quadrilateral of the dimensions provided within the (optional) 'width', 'height', & 'depth' constructor arguments. - */ - export class BoxGeometry extends Geometry { - /** - * @param width — Width of the sides on the X axis. - * @param height — Height of the sides on the Y axis. - * @param depth — Depth of the sides on the Z axis. - * @param widthSegments — Number of segmented faces along the width of the sides. - * @param heightSegments — Number of segmented faces along the height of the sides. - * @param depthSegments — Number of segmented faces along the depth of the sides. - */ - constructor(width: number, height: number, depth: number, widthSegments?: number, heightSegments?: number, depthSegments?: number); - - parameters: { - width: number; - height: number; - depth: number; - widthSegments: number; - heightSegments: number; - depthSegments: number; - }; - } - - /** - * @deprecated Use BoxGeometry instead. - */ - export class CubeGeometry extends BoxGeometry {} - - export class CircleBufferGeometry extends BufferGeometry { - constructor(radius?: number, segments?: number, thetaStart?: number, thetaLength?: number); - - parameters: { - radius: number; - segments: number; - thetaStart: number; - thetaLength: number; - }; - } - - export class CircleGeometry extends Geometry { - constructor(radius?: number, segments?: number, thetaStart?: number, thetaLength?: number); - - parameters: { - radius: number; - segments: number; - thetaStart: number; - thetaLength: number; - }; - } - - export class CylinderBufferGeometry extends BufferGeometry { - constructor(radiusTop?: number, radiusBottom?: number, height?: number, radialSegments?: number, heightSegments?: number, openEnded?: boolean, thetaStart?: number, thetaLength?: number); - - parameters: { - radiusTop: number; - radiusBottom: number; - height: number; - radialSegments: number; - heightSegments: number; - openEnded: boolean; - thetaStart: number; - thetaLength: number; - }; - } - - export class CylinderGeometry extends Geometry { - /** - * @param radiusTop — Radius of the cylinder at the top. - * @param radiusBottom — Radius of the cylinder at the bottom. - * @param height — Height of the cylinder. - * @param radiusSegments — Number of segmented faces around the circumference of the cylinder. - * @param heightSegments — Number of rows of faces along the height of the cylinder. - * @param openEnded - A Boolean indicating whether or not to cap the ends of the cylinder. - */ - constructor(radiusTop?: number, radiusBottom?: number, height?: number, radiusSegments?: number, heightSegments?: number, openEnded?: boolean, thetaStart?: number, thetaLength?: number); - - parameters: { - radiusTop: number; - radiusBottom: number; - height: number; - radialSegments: number; - heightSegments: number; - openEnded: boolean; - thetaStart: number; - thetaLength: number; - }; - } - - export class ConeBufferGeometry extends BufferGeometry { - constructor(radius?: number, height?: number, radialSegment?: number, heightSegment?: number, openEnded?: boolean, thetaStart?: number, thetaLength?: number); - } - - export class ConeGeometry extends CylinderGeometry { - constructor(radius?: number, height?: number, radialSegment?: number, heightSegment?: number, openEnded?: boolean, thetaStart?: number, thetaLength?: number); - } - - export class DodecahedronGeometry extends Geometry { - constructor(radius: number, detail: number); - - parameters: { - radius: number; - detail: number; - }; - } - - export class EdgesGeometry extends BufferGeometry { - constructor(geometry: BufferGeometry, thresholdAngle: number); - } - - export class ExtrudeGeometry extends Geometry { - constructor(shape?: Shape, options?: any); - constructor(shapes?: Shape[], options?: any); - - static WorldUVGenerator: { - generateTopUV(geometry: Geometry, indexA: number, indexB: number, indexC: number): Vector2[]; - generateSideWallUV(geometry: Geometry, indexA: number, indexB: number, indexC: number, indexD: number): Vector2[]; - }; - - addShapeList(shapes: Shape[], options?: any): void; - addShape(shape: Shape, options?: any): void; - } - - export class IcosahedronGeometry extends PolyhedronGeometry { - constructor(radius: number, detail: number); - } - - export class LatheBufferGeometry extends BufferGeometry { - constructor(points: Vector3[], segments?: number, phiStart?: number, phiLength?: number); - - parameters: { - points: Vector3[]; - segments: number; - phiStart: number; - phiLength: number; - }; - } - - export class LatheGeometry extends Geometry { - constructor(points: Vector3[], segments?: number, phiStart?: number, phiLength?: number); - - parameters: { - points: Vector3[]; - segments: number; - phiStart: number; - phiLength: number; - }; - } - - export class OctahedronGeometry extends PolyhedronGeometry { - constructor(radius: number, detail: number); - } - - export class ParametricGeometry extends Geometry { - constructor(func: (u: number, v: number) => Vector3, slices: number, stacks: number); - - parameters: { - func: (u: number, v: number) => Vector3; - slices: number; - stacks: number; - }; - } - - export class PlaneBufferGeometry extends BufferGeometry { - constructor(width: number, height: number, widthSegments?: number, heightSegments?: number); - - parameters: { - width: number; - height: number; - widthSegments: number; - heightSegments: number; - }; - } - - export class PlaneGeometry extends Geometry { - constructor(width: number, height: number, widthSegments?: number, heightSegments?: number); - - parameters: { - width: number; - height: number; - widthSegments: number; - heightSegments: number; - }; - } - - export class PolyhedronGeometry extends Geometry { - constructor(vertices: Vector3[], faces: Face3[], radius?: number, detail?: number); - - parameters: { - vertices: Vector3[]; - faces: Face3[]; - radius: number; - detail: number; - }; - boundingSphere: Sphere; - } - - export class RingBufferGeometry extends BufferGeometry { - constructor(innerRadius?: number, outerRadius?: number, thetaSegments?: number, phiSegments?: number, thetaStart?: number, thetaLength?: number); - - parameters: { - innerRadius: number; - outerRadius: number; - thetaSegments: number; - phiSegments: number; - thetaStart: number; - thetaLength: number; - }; - } - - export class RingGeometry extends Geometry { - constructor(innerRadius?: number, outerRadius?: number, thetaSegments?: number, phiSegments?: number, thetaStart?: number, thetaLength?: number); - - parameters: { - innerRadius: number; - outerRadius: number; - thetaSegments: number; - phiSegments: number; - thetaStart: number; - thetaLength: number; - }; - } - - export class ShapeGeometry extends Geometry { - constructor(shape: Shape, options?: any); - constructor(shapes: Shape[], options?: any); - - addShapeList(shapes: Shape[], options: any): ShapeGeometry; - addShape(shape: Shape, options?: any): void; - } - - export class SphereBufferGeometry extends BufferGeometry { - constructor(radius: number, widthSegments?: number, heightSegments?: number, phiStart?: number, phiLength?: number, thetaStart?: number, thetaLength?: number); - - parameters: { - radius: number; - widthSegments: number; - heightSegments: number; - phiStart: number; - phiLength: number; - thetaStart: number; - thetaLength: number; - }; - } - - /** - * A class for generating sphere geometries - */ - export class SphereGeometry extends Geometry { - /** - * The geometry is created by sweeping and calculating vertexes around the Y axis (horizontal sweep) and the Z axis (vertical sweep). Thus, incomplete spheres (akin to 'sphere slices') can be created through the use of different values of phiStart, phiLength, thetaStart and thetaLength, in order to define the points in which we start (or end) calculating those vertices. - * - * @param radius — sphere radius. Default is 50. - * @param widthSegments — number of horizontal segments. Minimum value is 3, and the default is 8. - * @param heightSegments — number of vertical segments. Minimum value is 2, and the default is 6. - * @param phiStart — specify horizontal starting angle. Default is 0. - * @param phiLength — specify horizontal sweep angle size. Default is Math.PI * 2. - * @param thetaStart — specify vertical starting angle. Default is 0. - * @param thetaLength — specify vertical sweep angle size. Default is Math.PI. - */ - constructor(radius: number, widthSegments?: number, heightSegments?: number, phiStart?: number, phiLength?: number, thetaStart?: number, thetaLength?: number); - - parameters: { - radius: number; - widthSegments: number; - heightSegments: number; - phiStart: number; - phiLength: number; - thetaStart: number; - thetaLength: number; - }; - } - - export class TetrahedronGeometry extends PolyhedronGeometry { - constructor(radius?: number, detail?: number); - } - - export interface TextGeometryParameters { - font?: Font; - size?: number; - height?: number; - curveSegments?: number; - bevelEnabled?: boolean; - bevelThickness?: number; - bevelSize?: number; - } - - export class TextGeometry extends ExtrudeGeometry { - constructor(text: string, parameters?: TextGeometryParameters); - - parameters: { - font: Font; - size: number; - height: number; - curveSegments: number; - bevelEnabled: boolean; - bevelThickness: number; - bevelSize: number; - }; - } - - export class TorusBufferGeometry extends BufferGeometry { - constructor(radius?: number, tube?: number, radialSegments?: number, tubularSegments?: number, arc?: number); - - parameters: { - radius: number; - tube: number; - radialSegments: number; - tubularSegments: number; - arc: number; - }; - } - - export class TorusGeometry extends Geometry { - constructor(radius?: number, tube?: number, radialSegments?: number, tubularSegments?: number, arc?: number); - - parameters: { - radius: number; - tube: number; - radialSegments: number; - tubularSegments: number; - arc: number; - }; - } - - export class TorusKnotBufferGeometry extends BufferGeometry { - constructor(radius?: number, tube?: number, radialSegments?: number, tubularSegments?: number, p?: number, q?: number, heightScale?: number); - - parameters: { - radius: number; - tube: number; - radialSegments: number; - tubularSegments: number; - p: number; - q: number; - heightScale: number; - }; - } - - export class TorusKnotGeometry extends Geometry { - constructor(radius?: number, tube?: number, radialSegments?: number, tubularSegments?: number, p?: number, q?: number, heightScale?: number); - - parameters: { - radius: number; - tube: number; - radialSegments: number; - tubularSegments: number; - p: number; - q: number; - heightScale: number; - }; - } - - export class TubeGeometry extends Geometry { - constructor(path: Curve, segments?: number, radius?: number, radiusSegments?: number, closed?: boolean, taper?: (u: number) => number); - - parameters: { - path: Curve; - segments: number; - radius: number; - radialSegments: number; - closed: boolean; - taper: (u: number) => number; // NoTaper or SinusoidalTaper; - }; - tangents: Vector3[]; - normals: Vector3[]; - binormals: Vector3[]; - - static NoTaper(u?: number): number; - static SinusoidalTaper(u: number): number; - static FrenetFrames(path: Path, segments: number, closed: boolean): void; - } - - export class TubeBufferGeometry extends BufferGeometry { - constructor(path: Curve, segments?: number, radius?: number, radiusSegments?: number, closed?: boolean); - - parameters: { - path: Curve; - segments: number; - radius: number; - radialSegments: number; - closed: boolean; - }; - tangents: Vector3[]; - normals: Vector3[]; - binormals: Vector3[]; - } - - export class WireframeGeometry extends BufferGeometry { - constructor(geometry: Geometry | BufferGeometry); - } - - // Extras / Helpers ///////////////////////////////////////////////////////////////////// - - export class ArrowHelper extends Object3D { - constructor(dir: Vector3, origin?: Vector3, length?: number, hex?: number, headLength?: number, headWidth?: number); - - line: Line; - cone: Mesh; - - setDirection(dir: Vector3): void; - setLength(length: number, headLength?: number, headWidth?: number): void; - setColor(hex: number): void; - } - - export class AxisHelper extends LineSegments { - constructor(size?: number); - } - - export class BoundingBoxHelper extends Mesh { - constructor(object?: Object3D, hex?: number); - - object: Object3D; - box: Box3; - - update(): void; - } - - export class BoxHelper extends LineSegments { - constructor(object?: Object3D, color?: Color); - - update(object?: Object3D): void; - } - - export class CameraHelper extends LineSegments { - constructor(camera: Camera); - - camera: Camera; - pointMap: { [id: string]: number[]; }; - - update(): void; - } - - export class DirectionalLightHelper extends Object3D { - constructor(light: Light, size?: number); - - light: Light; - lightPlane: Line; - - dispose(): void; - update(): void; - } - - export class EdgesHelper extends LineSegments { - constructor(object: Object3D, hex?: number, thresholdAngle?: number); - } - - export class FaceNormalsHelper extends LineSegments { - constructor(object: Object3D, size?: number, hex?: number, linewidth?: number); - - object: Object3D; - size: number; - - update(object?: Object3D): void; - } - - export class GridHelper extends LineSegments { - constructor(size: number, divisions: number, color1?: Color|number, color2?: Color|number); - /** - * @deprecated - */ - setColors(color1?: Color|number, color2?: Color|number): void; - } - - export class HemisphereLightHelper extends Object3D { - constructor(light: Light, sphereSize: number); - - light: Light; - colors: Color[]; - lightSphere: Mesh; - - dispose(): void; - update(): void; - } - - export class PointLightHelper extends Object3D { - constructor(light: Light, sphereSize: number); - - light: Light; - - dispose(): void; - update(): void; - } - - export class SkeletonHelper extends LineSegments { - constructor(bone: Object3D); - - bones: Bone[]; - root: Object3D; - - getBoneList(object: Object3D): Bone[]; - update(): void; - } - - export class SpotLightHelper extends Object3D { - constructor(light: Light); - - light: Light; - - dispose(): void; - update(): void; - } - - export class VertexNormalsHelper extends LineSegments { - constructor(object: Object3D, size?: number, hex?: number, linewidth?: number); - - object: Object3D; - size: number; - - update(object?: Object3D): void; - } - - export class WireframeHelper extends LineSegments { - constructor(object: Object3D, hex?: number); - } - - // Extras / Objects ///////////////////////////////////////////////////////////////////// - - export class ImmediateRenderObject extends Object3D { - constructor(material: Material); - - material: Material; - render(renderCallback: Function): void; - } - - export interface MorphBlendMeshAnimation { - start: number; - end: number; - length: number; - fps: number; - duration: number; - lastFrame: number; - currentFrame: number; - active: boolean; - time: number; - direction: number; - weight: number; - directionBackwards: boolean; - mirroredLoop: boolean; - } - - export class MorphBlendMesh extends Mesh { - constructor(geometry: Geometry, material: Material); - - animationsMap: { [name: string]: MorphBlendMeshAnimation; }; - animationsList: MorphBlendMeshAnimation[]; - - createAnimation(name: string, start: number, end: number, fps: number): void; - autoCreateAnimations(fps: number): void; - setAnimationDirectionForward(name: string): void; - setAnimationDirectionBackward(name: string): void; - setAnimationFPS(name: string, fps: number): void; - setAnimationDuration(name: string, duration: number): void; - setAnimationWeight(name: string, weight: number): void; - setAnimationTime(name: string, time: number): void; - getAnimationTime(name: string): number; - getAnimationDuration(name: string): number; - playAnimation(name: string): void; - stopAnimation(name: string): void; - update(delta: number): void; - } -} - -declare module "three" { - export = THREE; -} +// Definitions by: Kon , Satoru Kimura , Florent Poujol , SereznoKot , HouChunlei , Ivo , David Asmuth , Brandon Roberge, Qinsi ZHU , Toshiya Nakakura , Poul Kjeldager Sørensen , Stefan Profanter , Edmund Fokschaner +// Definitions: https://github.com//DefinitelyTyped + +export * from "./three-core"; + +export * from "./three-canvasrenderer"; +export * from "./three-colladaLoader"; +export * from "./three-copyshader"; +export * from "./three-css3drenderer"; +export * from "./three-ctmloader"; +export * from "./three-editorcontrols"; +export * from "./three-effectcomposer"; +export * from "./three-examples"; +export * from "./three-FirstPersonControls"; +export * from "./three-maskpass"; +export * from "./three-octree"; +export * from "./three-orbitcontrols"; +export * from "./three-orthographictrackballcontrols"; +export * from "./three-projector"; +export * from "./three-renderpass"; +export * from "./three-shaderpass"; +export * from "./three-trackballcontrols"; +export * from "./three-transformcontrols"; +export * from "./three-vrcontrols"; +export * from "./three-vreffect"; + +export as namespace THREE; \ No newline at end of file diff --git a/types/three/test/canvas/canvas_interactive_cubes_tween.ts b/types/three/test/canvas/canvas_interactive_cubes_tween.ts index c7427cb07b..46a5da4a90 100644 --- a/types/three/test/canvas/canvas_interactive_cubes_tween.ts +++ b/types/three/test/canvas/canvas_interactive_cubes_tween.ts @@ -1,5 +1,3 @@ -/// - // https://github.com/mrdoob/three.js/blob/master/examples/canvas_interactive_cubes_tween.html () => { diff --git a/types/three/test/references.d.ts b/types/three/test/references.d.ts new file mode 100644 index 0000000000..0e13b1e2ac --- /dev/null +++ b/types/three/test/references.d.ts @@ -0,0 +1,9 @@ +// References used by tests +// Includes using THREE as a global namespace rather than as a module + +/// +/// +/// + +/// +/// \ No newline at end of file diff --git a/types/three/test/three-tests-setup.ts b/types/three/test/three-tests-setup.ts deleted file mode 100644 index a3c0a78fe8..0000000000 --- a/types/three/test/three-tests-setup.ts +++ /dev/null @@ -1,15 +0,0 @@ -///////////////////////////////////////////////////////////// -// https://github.com/mrdoob/three.js/tree/master/examples -////////////////////////////////////////////////////////////// - -/// -/// - -declare namespace THREE { - var AWDLoader: any; - var FlyControls: any; - var BloomPass: any; - var DotScreenShader: Shader; - var RGBShiftShader: Shader; - var FXAAShader: Shader; -} diff --git a/types/three/three-FirstPersonControls.d.ts b/types/three/three-FirstPersonControls.d.ts index 0f85f90bdd..d662a063d0 100644 --- a/types/three/three-FirstPersonControls.d.ts +++ b/types/three/three-FirstPersonControls.d.ts @@ -1,47 +1,40 @@ -// Type definitions for three.js -// Project: http://mrdoob.github.com/three.js/ -// Definitions by: Poul Kjeldager Sørensen -// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -//Source : https://github.com/NTaylorMullen/CycleR/blob/master/CycleR/CycleR.Game.Client/Client/Interfaces/ThreeJS/Cameras/FirstPersonControls.d.ts +import { Camera, Object3D, Vector3 } from "./three-core"; +export class FirstPersonControls { + constructor(object: Camera, domElement?: HTMLElement); -declare namespace THREE { - class FirstPersonControls { - constructor(object: Camera, domElement?: HTMLElement); + object: Object3D; + target: Vector3; + domElement: HTMLCanvasElement | HTMLDocument; + enabled: boolean; + movementSpeed: number; + lookSpeed: number; + noFly: boolean; + lookVertical: boolean; + autoForward: boolean; + activeLook: boolean; + heightSpeed: boolean; + heightCoef: number; + heightMin: number; + heightMax: number; + constrainVertical: boolean; + verticalMin: number; + verticalMax: number; + autoSpeedFactor: number; + mouseX: number; + mouseY: number; + lat: number; + lon: number; + phi: number; + theta: number; + moveForward: boolean; + moveBackward: boolean; + moveLeft: boolean; + moveRight: boolean; + freeze: boolean; + mouseDragOn: boolean; - object: THREE.Object3D; - target: THREE.Vector3; - domElement: HTMLCanvasElement | HTMLDocument; - enabled: boolean; - movementSpeed: number; - lookSpeed: number; - noFly: boolean; - lookVertical: boolean; - autoForward: boolean; - activeLook: boolean; - heightSpeed: boolean; - heightCoef: number; - heightMin: number; - heightMax: number; - constrainVertical: boolean; - verticalMin: number; - verticalMax: number; - autoSpeedFactor: number; - mouseX: number; - mouseY: number; - lat: number; - lon: number; - phi: number; - theta: number; - moveForward: boolean; - moveBackward: boolean; - moveLeft: boolean; - moveRight: boolean; - freeze: boolean; - mouseDragOn: boolean; + update(delta: number): void; - update(delta: number): void; - - dispose(): void; - } + dispose(): void; } diff --git a/types/three/three-canvasrenderer.d.ts b/types/three/three-canvasrenderer.d.ts index 3560963a47..cace13dd34 100644 --- a/types/three/three-canvasrenderer.d.ts +++ b/types/three/three-canvasrenderer.d.ts @@ -1,74 +1,76 @@ -// Type definitions for three.js (CanvasRenderer.js) -// Project: https://github.com/mrdoob/three.js/blob/master/examples/js/renderers/CanvasRenderer.js -// Definitions by: Satoru Kimura < https://github.com/gyohk > -// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +import { + Camera, + Color, + Material, + MaterialParameters, + Renderer, + Scene +} from "./three-core"; -declare namespace THREE { - export interface SpriteCanvasMaterialParameters extends MaterialParameters { - color?: number; - program?: (context: CanvasRenderingContext2D, color: Color) => void; - } +export interface SpriteCanvasMaterialParameters extends MaterialParameters { + color?: number; + program?: (context: CanvasRenderingContext2D, color: Color) => void; +} - export class SpriteCanvasMaterial extends Material { - constructor(parameters?: SpriteCanvasMaterialParameters); +export class SpriteCanvasMaterial extends Material { + constructor(parameters?: SpriteCanvasMaterialParameters); - color: Color; + color: Color; - program(context: CanvasRenderingContext2D, color: Color): void; - } + program(context: CanvasRenderingContext2D, color: Color): void; +} - export interface CanvasRendererParameters { - canvas?: HTMLCanvasElement; - devicePixelRatio?: number; - alpha?: boolean; - } +export interface CanvasRendererParameters { + canvas?: HTMLCanvasElement; + devicePixelRatio?: number; + alpha?: boolean; +} - export class CanvasRenderer implements Renderer { - constructor(parameters?: CanvasRendererParameters); +export class CanvasRenderer implements Renderer { + constructor(parameters?: CanvasRendererParameters); - domElement: HTMLCanvasElement; - autoClear: boolean; - sortObjects: boolean; - sortElements: boolean; - info: {render: {vertices: number; faces: number;};}; + domElement: HTMLCanvasElement; + autoClear: boolean; + sortObjects: boolean; + sortElements: boolean; + info: {render: {vertices: number; faces: number;};}; - supportsVertexTextures(): void; + supportsVertexTextures(): void; - setFaceCulling(): void; + setFaceCulling(): void; - getPixelRatio(): number; + getPixelRatio(): number; - setPixelRatio(value: number): void; + setPixelRatio(value: number): void; - setSize(width: number, height: number, updateStyle?: boolean): void; + setSize(width: number, height: number, updateStyle?: boolean): void; - setViewport(x: number, y: number, width: number, height: number): void; + setViewport(x: number, y: number, width: number, height: number): void; - setScissor(): void; + setScissor(): void; - enableScissorTest(): void; + enableScissorTest(): void; - setClearColor(color: Color | string | number, opacity?: number): void; + setClearColor(color: Color | string | number, opacity?: number): void; - // setClearColor(color: string, opacity?: number): void; - // setClearColor(color: number, opacity?: number): void; + // setClearColor(color: string, opacity?: number): void; + // setClearColor(color: number, opacity?: number): void; - setClearColorHex(hex: number, alpha?: number): void; + setClearColorHex(hex: number, alpha?: number): void; - getClearColor(): Color; + getClearColor(): Color; - getClearAlpha(): number; + getClearAlpha(): number; - getMaxAnisotropy(): number; + getMaxAnisotropy(): number; - clear(): void; + clear(): void; - clearColor(): void; + clearColor(): void; - clearDepth(): void; + clearDepth(): void; - clearStencil(): void; + clearStencil(): void; - render(scene: Scene, camera: Camera): void; - } + render(scene: Scene, camera: Camera): void; } diff --git a/types/three/three-colladaLoader.d.ts b/types/three/three-colladaLoader.d.ts index 6bdec6a9da..a614d6c580 100644 --- a/types/three/three-colladaLoader.d.ts +++ b/types/three/three-colladaLoader.d.ts @@ -1,23 +1,20 @@ -// Type definitions for three.js (ColladaLoader2.js) -// NOTE : These typings are for the loader named ColladaLoader2.js -// supplied by the npm package @types/three 0.81. -// Definitions by: Brandon Roberge +import { + Scene +} from "./three-core"; -declare namespace THREE { - export interface ColladaLoaderReturnType { +export interface ColladaLoaderReturnType { +} - } - export class ColladaModel { - animations: any[]; - kinematics: any; - scene: THREE.Scene; - library: any; - } - export class ColladaLoader { - constructor(); +export class ColladaModel { + animations: any[]; + kinematics: any; + scene: Scene; + library: any; +} +export class ColladaLoader { + constructor(); - load(url: string, onLoad: (model: ColladaModel) => void, onProgress?: (request: ProgressEvent) => void, onError?:(event: ErrorEvent) => void): void; - setCrossOrigin(value: any): void; - parse(text: string): ColladaModel; - } + load(url: string, onLoad: (model: ColladaModel) => void, onProgress?: (request: ProgressEvent) => void, onError?:(event: ErrorEvent) => void): void; + setCrossOrigin(value: any): void; + parse(text: string): ColladaModel; } \ No newline at end of file diff --git a/types/three/three-copyshader.d.ts b/types/three/three-copyshader.d.ts index 05ff6a5f04..3ee7e82d7e 100644 --- a/types/three/three-copyshader.d.ts +++ b/types/three/three-copyshader.d.ts @@ -1,9 +1,2 @@ -// Type definitions for three.js (CopyShader.js) -// Project: https://github.com/mrdoob/three.js/blob/r68/examples/js/shaders/CopyShader.js -// Definitions by: Satoru Kimura -// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped - - -declare namespace THREE { - export var CopyShader: Shader; -} +import { Shader } from "./three-core"; +export var CopyShader: Shader; diff --git a/types/three/three-core.d.ts b/types/three/three-core.d.ts new file mode 100644 index 0000000000..4df03969dc --- /dev/null +++ b/types/three/three-core.d.ts @@ -0,0 +1,6865 @@ +export const REVISION: string; + +// https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.button +export enum MOUSE { LEFT, MIDDLE, RIGHT } + +// GL STATE CONSTANTS +export enum CullFace { } +export const CullFaceNone: CullFace; +export const CullFaceBack: CullFace; +export const CullFaceFront: CullFace; +export const CullFaceFrontBack: CullFace; + +export enum FrontFaceDirection { } +export const FrontFaceDirectionCW: FrontFaceDirection; +export const FrontFaceDirectionCCW: FrontFaceDirection; + +// Shadowing Type +export enum ShadowMapType { } +export const BasicShadowMap: ShadowMapType; +export const PCFShadowMap: ShadowMapType; +export const PCFSoftShadowMap: ShadowMapType; + +// MATERIAL CONSTANTS + +// side +export enum Side { } +export const FrontSide: Side; +export const BackSide: Side; +export const DoubleSide: Side; + +// shading +export enum Shading { } +export const FlatShading: Shading; +export const SmoothShading: Shading; + +// colors +export enum Colors { } +export const NoColors: Colors; +export const FaceColors: Colors; +export const VertexColors: Colors; + +// blending modes +export enum Blending { } +export const NoBlending: Blending; +export const NormalBlending: Blending; +export const AdditiveBlending: Blending; +export const SubtractiveBlending: Blending; +export const MultiplyBlending: Blending; +export const CustomBlending: Blending; + +// custom blending equations +// (numbers start from 100 not to clash with other +// mappings to OpenGL constants defined in Texture.js) +export enum BlendingEquation { } +export const AddEquation: BlendingEquation; +export const SubtractEquation: BlendingEquation; +export const ReverseSubtractEquation: BlendingEquation; +export const MinEquation: BlendingEquation; +export const MaxEquation: BlendingEquation; + +// custom blending destination factors +export enum BlendingDstFactor { } +export const ZeroFactor: BlendingDstFactor; +export const OneFactor: BlendingDstFactor; +export const SrcColorFactor: BlendingDstFactor; +export const OneMinusSrcColorFactor: BlendingDstFactor; +export const SrcAlphaFactor: BlendingDstFactor; +export const OneMinusSrcAlphaFactor: BlendingDstFactor; +export const DstAlphaFactor: BlendingDstFactor; +export const OneMinusDstAlphaFactor: BlendingDstFactor; + +// custom blending src factors +export enum BlendingSrcFactor { } +export const DstColorFactor: BlendingSrcFactor; +export const OneMinusDstColorFactor: BlendingSrcFactor; +export const SrcAlphaSaturateFactor: BlendingSrcFactor; + +// depth modes +export enum DepthModes { } +export const NeverDepth: DepthModes; +export const AlwaysDepth: DepthModes; +export const LessDepth: DepthModes; +export const LessEqualDepth: DepthModes; +export const EqualDepth: DepthModes; +export const GreaterEqualDepth: DepthModes; +export const GreaterDepth: DepthModes; +export const NotEqualDepth: DepthModes; + +// TEXTURE CONSTANTS +// Operations +export enum Combine { } +export const MultiplyOperation: Combine; +export const MixOperation: Combine; +export const AddOperation: Combine; + +// Tone Mapping modes +export enum ToneMapping { } +export const NoToneMapping: ToneMapping; +export const LinearToneMapping: ToneMapping; +export const ReinhardToneMapping: ToneMapping; +export const Uncharted2ToneMapping: ToneMapping; +export const CineonToneMapping: ToneMapping; + +// Mapping modes +export enum Mapping { } +export const UVMapping: Mapping; +export const CubeReflectionMapping: Mapping; +export const CubeRefractionMapping: Mapping; +export const EquirectangularReflectionMapping: Mapping; +export const EquirectangularRefractionMapping: Mapping; +export const SphericalReflectionMapping: Mapping; +export const CubeUVReflectionMapping: Mapping; +export const CubeUVRefractionMapping: Mapping; + +// Wrapping modes +export enum Wrapping { } +export const RepeatWrapping: Wrapping; +export const ClampToEdgeWrapping: Wrapping; +export const MirroredRepeatWrapping: Wrapping; + +// Filters +export enum TextureFilter { } +export const NearestFilter: TextureFilter; +export const NearestMipMapNearestFilter: TextureFilter; +export const NearestMipMapLinearFilter: TextureFilter; +export const LinearFilter: TextureFilter; +export const LinearMipMapNearestFilter: TextureFilter; +export const LinearMipMapLinearFilter: TextureFilter; + +// Data types +export enum TextureDataType { } +export const UnsignedByteType: TextureDataType; +export const ByteType: TextureDataType; +export const ShortType: TextureDataType; +export const UnsignedShortType: TextureDataType; +export const IntType: TextureDataType; +export const UnsignedIntType: TextureDataType; +export const FloatType: TextureDataType; +export const HalfFloatType: TextureDataType; + +// Pixel types +export enum PixelType { } +export const UnsignedShort4444Type: PixelType; +export const UnsignedShort5551Type: PixelType; +export const UnsignedShort565Type: PixelType; +export const UnsignedInt248Type: PixelType; + +// Pixel formats +export enum PixelFormat { } +export const AlphaFormat: PixelFormat; +export const RGBFormat: PixelFormat; +export const RGBAFormat: PixelFormat; +export const LuminanceFormat: PixelFormat; +export const LuminanceAlphaFormat: PixelFormat; +export const RGBEFormat: PixelFormat; +export const DepthFormat: PixelFormat; +export const DepthStencilFormat: PixelFormat; + +// Compressed texture formats +// DDS / ST3C Compressed texture formats +export enum CompressedPixelFormat { } +export const RGB_S3TC_DXT1_Format: CompressedPixelFormat; +export const RGBA_S3TC_DXT1_Format: CompressedPixelFormat; +export const RGBA_S3TC_DXT3_Format: CompressedPixelFormat; +export const RGBA_S3TC_DXT5_Format: CompressedPixelFormat; + +// PVRTC compressed texture formats +export const RGB_PVRTC_4BPPV1_Format: CompressedPixelFormat; +export const RGB_PVRTC_2BPPV1_Format: CompressedPixelFormat; +export const RGBA_PVRTC_4BPPV1_Format: CompressedPixelFormat; +export const RGBA_PVRTC_2BPPV1_Format: CompressedPixelFormat; + +// ETC compressed texture formats +export const RGB_ETC1_Format: CompressedPixelFormat; + +// Loop styles for AnimationAction +export enum AnimationActionLoopStyles { } +export const LoopOnce: AnimationActionLoopStyles; +export const LoopRepeat: AnimationActionLoopStyles; +export const LoopPingPong: AnimationActionLoopStyles; + +// Interpolation +export enum InterpolationModes { } +export const InterpolateDiscrete: InterpolationModes; +export const InterpolateLinear: InterpolationModes; +export const InterpolateSmooth: InterpolationModes; + +// Interpolant ending modes +export enum InterpolationEndingModes { } +export const ZeroCurvatureEnding: InterpolationEndingModes; +export const ZeroSlopeEnding: InterpolationEndingModes; +export const WrapAroundEnding: InterpolationEndingModes; + +// Triangle Draw modes +export enum TrianglesDrawModes { } +export const TrianglesDrawMode: TrianglesDrawModes; +export const TriangleStripDrawMode: TrianglesDrawModes; +export const TriangleFanDrawMode: TrianglesDrawModes; + +// Texture Encodings +export enum TextureEncoding { } +export const LinearEncoding: TextureEncoding; +export const sRGBEncoding: TextureEncoding; +export const GammaEncoding: TextureEncoding; +export const RGBEEncoding: TextureEncoding; +export const LogLuvEncoding: TextureEncoding; +export const RGBM7Encoding: TextureEncoding; +export const RGBM16Encoding: TextureEncoding; +export const RGBDEncoding: TextureEncoding; + +// Depth packing strategies +export enum DepthPackingStrategies { } +export const BasicDepthPacking: DepthPackingStrategies; +export const RGBADepthPacking: DepthPackingStrategies; + +// log handlers +export function warn(message?: any, ...optionalParams: any[]): void; +export function error(message?: any, ...optionalParams: any[]): void; +export function log(message?: any, ...optionalParams: any[]): void; + +// Animation //////////////////////////////////////////////////////////////////////////////////////// + +export class AnimationAction { + loop: boolean; + time: number; + timeScale: number; + weight: number; + repetitions: number; + paused: boolean; + enabled: boolean; + clampWhenFinished: boolean; + zeroSlopeAtStart: boolean; + zeroSlopeAtEnd: boolean; + + play(): AnimationAction; + stop(): AnimationAction; + reset(): AnimationAction; + isRunning(): boolean; + startAt(time: number): AnimationAction; + setLoop(mode: AnimationActionLoopStyles, repetitions: number): AnimationAction; + setEffectiveWeight(weight: number): AnimationAction; + getEffectiveWeight(): number; + fadeIn(duration: number): AnimationAction; + fadeOut(duration: number): AnimationAction; + crossFadeFrom(fadeOutAction: AnimationAction, duration: number, warp: boolean): AnimationAction; + crossFadeTo(fadeInAction: AnimationAction, duration: number, warp: boolean): AnimationAction; + stopFading(): AnimationAction; + setEffectiveTimeScale(timeScale: number): AnimationAction; + getEffectiveTimeScale(): number; + setDuration(duration: number): AnimationAction; + syncWith(action: AnimationAction): AnimationAction; + halt(duration: number): AnimationAction; + warp(statTimeScale: number, endTimeScale: number, duration: number): AnimationAction; + stopWarping(): AnimationAction; + getMixer(): AnimationMixer; + getClip(): AnimationClip; + getRoot(): any; +} + +export class AnimationClip { + constructor( name?: string, duration?: number, tracks?: KeyframeTrack[] ); + + name: string; + tracks: KeyframeTrack[]; + duration: number; + uuid: string; + results: any[]; + + resetDuration(): void; + trim(): AnimationClip; + optimize(): AnimationClip; + + static CreateFromMorphTargetSequence( name: string, morphTargetSequence: MorphTarget[], fps: number, noLoop: boolean ): AnimationClip; + static findByName( clipArray: AnimationClip, name: string ): AnimationClip; + static CreateClipsFromMorphTargetSequences( morphTargets: MorphTarget[], fps: number, noLoop: boolean ): AnimationClip[]; + static parse( json: any ): AnimationClip; + static parseAnimation( animation: any, bones: Bone[], nodeName: string ): AnimationClip; + static toJSON(): any; +} + +export class AnimationMixer extends EventDispatcher { + constructor(root: any); + + time: number; + timeScale: number; + + clipAction(clip: AnimationClip, root?: any): AnimationAction; + existingAction(clip: AnimationClip, root?: any): AnimationAction; + stopAllAction(clip: AnimationClip, root?: any): AnimationMixer; + update(deltaTime: number): AnimationMixer; + getRoot(): any; + uncacheClip(clip: AnimationClip): void; + uncacheRoot(root: any): void; + uncacheAction(clip: AnimationClip, root?: any): void; +} + +export class AnimationObjectGroup { + constructor(...args: any[]); + + uuid: string; + stats: { + bindingsPerObject: number; + objects: { + total: number; + inUse: number; + } + }; + + add(...args: any[]): void; + remove(...args: any[]): void; + uncache(...args: any[]): void; +} + +export namespace AnimationUtils { + export function arraySlice(array: any, from: number, to: number): any; + export function convertArray(array: any, type: any, forceClone: boolean): any; + export function isTypedArray(object: any): boolean; + export function getKeyFrameOrder(times: number): number[]; + export function sortedArray(values: any[], stride: number, order: number[]): any[]; + export function flattenJSON(jsonKeys: string[], times: any[], values: any[], valuePropertyName: string): void; +} + +export class KeyframeTrack { + constructor(name: string, times: any[], values: any[], interpolation: InterpolationModes); + + name: string; + times: any[]; + values: any[]; + + ValueTypeName: string; + TimeBufferType: Float32Array; + ValueBufferType: Float32Array; + + DefaultInterpolation: InterpolationModes; + + InterpolantFactoryMethodDiscrete(result: any): DiscreteInterpolant; + InterpolantFactoryMethodLinear(result: any): LinearInterpolant; + InterpolantFactoryMethodSmooth(result: any): CubicInterpolant; + + setInterpolation(interpolation: InterpolationModes): void; + getInterpolation(): InterpolationModes; + + getValuesize(): number; + + shift( timeOffset: number ): KeyframeTrack; + scale( timeScale: number ): KeyframeTrack; + trim( startTime: number, endTime: number ): KeyframeTrack; + validate(): boolean; + optimize(): KeyframeTrack; + + static parse(json: any): KeyframeTrack; + static toJSON(track: KeyframeTrack): any; +} + +export class PropertyBinding { + constructor(rootNode: any, path: string, parsedPath?: any); + + path: string; + parsedPath: any; + node: any; + rootNode: any; + + getValue(targetArray: any, offset: number): any; + setValue(sourceArray: any, offset: number): void; + bind(): void; + unbind(): void; + + BindingType: { [bindingType: string]: number }; + Versioning: { [versioning: string]: number }; + + GetterByBindingType: Function[]; + SetterByBindingTypeAndVersioning: Array; + + static create(root: any, path: any, parsedPath?: any): PropertyBinding|PropertyBinding.Composite; + static parseTrackName(trackName: string): any; + static findNode(root: any, nodeName: string): any; +} + +export namespace PropertyBinding { + export class Composite { + constructor(targetGroup: any, path: any, parsedPath?: any); + + getValue(array: any, offset: number): any; + setValue(array: any, offset: number): void; + bind(): void; + unbind(): void; + } +} + +export class PropertyMixer { + constructor(binding: any, typeName: string, valueSize: number); + + binding: any; + valueSize: number; + buffer: any; + cumulativeWeight: number; + useCount: number; + referenceCount: number; + + accumulate(accuIndex: number, weight: number): void; + apply(accuIndex: number): void; + saveOriginalState(): void; + restoreOriginalState(): void; +} + +export class BooleanKeyframeTrack extends KeyframeTrack { + constructor(name: string, times: any[], values: any[]); +} + +export class ColorKeyframeTrack extends KeyframeTrack { + constructor(name: string, times: any[], values: any[], interpolation: InterpolationModes); +} + +export class NumberKeyframeTrack extends KeyframeTrack { + constructor(name: string, times: any[], values: any[], interpolation: InterpolationModes); +} + +export class QuaternionKeyframeTrack extends KeyframeTrack { + constructor(name: string, times: any[], values: any[], interpolation: InterpolationModes); +} + +export class StringKeyframeTrack extends KeyframeTrack { + constructor(name: string, times: any[], values: any[], interpolation: InterpolationModes); +} + +export class VectorKeyframeTrack extends KeyframeTrack { + constructor(name: string, times: any[], values: any[], interpolation: InterpolationModes); +} + +// Cameras //////////////////////////////////////////////////////////////////////////////////////// + +/** + * Abstract base class for cameras. This class should always be inherited when you build a new camera. + */ +export class Camera extends Object3D { + /** + * This constructor sets following properties to the correct type: matrixWorldInverse, projectionMatrix and projectionMatrixInverse. + */ + constructor(); + + /** + * This is the inverse of matrixWorld. MatrixWorld contains the Matrix which has the world transform of the Camera. + */ + matrixWorldInverse: Matrix4; + + /** + * This is the matrix which contains the projection. + */ + projectionMatrix: Matrix4; + + getWorldDirection(optionalTarget?: Vector3): Vector3; + + /** + * This make the camera look at the vector position in local space. + * @param vector point to look at + */ + lookAt(vector: Vector3): void; +} + +export class CubeCamera extends Object3D { + constructor(near?: number, far?: number, cubeResolution?: number); + + renderTarget: WebGLRenderTargetCube; + + updateCubeMap(renderer: Renderer, scene: Scene): void; +} + +/** + * Camera with orthographic projection + * + * @example + * var camera = new THREE.OrthographicCamera( width / - 2, width / 2, height / 2, height / - 2, 1, 1000 ); + * scene.add( camera ); + * + * @see src/cameras/OrthographicCamera.js + */ +export class OrthographicCamera extends Camera { + /** + * @param left Camera frustum left plane. + * @param right Camera frustum right plane. + * @param top Camera frustum top plane. + * @param bottom Camera frustum bottom plane. + * @param near Camera frustum near plane. + * @param far Camera frustum far plane. + */ + constructor(left: number, right: number, top: number, bottom: number, near?: number, far?: number); + + zoom: number; + view: { + fullWidth: number, + fullHeight: number, + offsetX: number, + offsetY: number, + width: number, + height: number + }; + + /** + * Camera frustum left plane. + */ + left: number; + + /** + * Camera frustum right plane. + */ + right: number; + + /** + * Camera frustum top plane. + */ + top: number; + + /** + * Camera frustum bottom plane. + */ + bottom: number; + + /** + * Camera frustum near plane. + */ + near: number; + + /** + * Camera frustum far plane. + */ + far: number; + + /** + * Updates the camera projection matrix. Must be called after change of parameters. + */ + updateProjectionMatrix(): void; + setViewOffset(fullWidth: number, fullHeight: number, offsetX: number, offsetY: number, width: number, height: number): void; + clearViewOffset(): void; + toJSON(meta?: any): any; +} + +/** + * Camera with perspective projection. + * + * # example + * var camera = new THREE.PerspectiveCamera( 45, width / height, 1, 1000 ); + * scene.add( camera ); + * + * @source https://github.com/mrdoob/three.js/blob/master/src/cameras/PerspectiveCamera.js + */ +export class PerspectiveCamera extends Camera { + /** + * @param fov Camera frustum vertical field of view. Default value is 50. + * @param aspect Camera frustum aspect ratio. Default value is 1. + * @param near Camera frustum near plane. Default value is 0.1. + * @param far Camera frustum far plane. Default value is 2000. + */ + constructor(fov?: number, aspect?: number, near?: number, far?: number); + + zoom: number; + + /** + * Camera frustum vertical field of view, from bottom to top of view, in degrees. + */ + fov: number; + + /** + * Camera frustum aspect ratio, window width divided by window height. + */ + aspect: number; + + /** + * Camera frustum near plane. + */ + near: number; + + /** + * Camera frustum far plane. + */ + far: number; + + focus: number; + view: { + fullWidth: number, + fullHeight: number, + offsetX: number, + offsetY: number, + width: number, + height: number + }; + filmGauge: number; + filmOffset: number; + + setFocalLength(focalLength: number): void; + getFocalLength(): number; + getEffectiveFOV(): number; + getFilmWidth(): number; + getFilmHeight(): number; + /** + * Sets an offset in a larger frustum. This is useful for multi-window or multi-monitor/multi-machine setups. + * For example, if you have 3x2 monitors and each monitor is 1920x1080 and the monitors are in grid like this: + * + * +---+---+---+ + * | A | B | C | + * +---+---+---+ + * | D | E | F | + * +---+---+---+ + * + * then for each monitor you would call it like this: + * + * var w = 1920; + * var h = 1080; + * var fullWidth = w * 3; + * var fullHeight = h * 2; + * + * // A + * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h ); + * // B + * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h ); + * // C + * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h ); + * // D + * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h ); + * // E + * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h ); + * // F + * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h ); Note there is no reason monitors have to be the same size or in a grid. + * + * @param fullWidth full width of multiview setup + * @param fullHeight full height of multiview setup + * @param x horizontal offset of subcamera + * @param y vertical offset of subcamera + * @param width width of subcamera + * @param height height of subcamera + */ + setViewOffset(fullWidth: number, fullHeight: number, x: number, y: number, width: number, height: number): void; + clearViewOffset(): void; + + /** + * Updates the camera projection matrix. Must be called after change of parameters. + */ + updateProjectionMatrix(): void; + toJSON(meta?: any): any; + + /** + * @deprecated + */ + setLens(focalLength: number, frameHeight?: number): void; +} + +export class StereoCamera extends Camera { + constructor(); + + aspect: number; + eyeSep: number; + cameraL: PerspectiveCamera; + cameraR: PerspectiveCamera; + + update(camera: PerspectiveCamera): void; +} + +// Core /////////////////////////////////////////////////////////////////////////////////////////////// + +/** + * @see src/core/BufferAttribute.js + */ +export class BufferAttribute { + constructor(array: ArrayLike, itemSize: number, normalized?: boolean); // array parameter should be TypedArray. + + uuid: string; + array: ArrayLike; + itemSize: number; + dynamic: boolean; + updateRange: {offset: number, count: number}; + version: number; + normalized: boolean; + needsUpdate: boolean; + count: number; + + setDynamic(dynamic: boolean): BufferAttribute; + clone(): this; + copy(source: this): this; + copyAt(index1: number, attribute: BufferAttribute, index2: number): BufferAttribute; + copyArray(array: ArrayLike): BufferAttribute; + copyColorsArray(colors: {r: number, g: number, b: number}[]): BufferAttribute; + copyIndicesArray(indices: {a: number, b: number, c: number}[]): BufferAttribute; + copyVector2sArray(vectors: {x: number, y: number}[]): BufferAttribute; + copyVector3sArray(vectors: {x: number, y: number, z: number}[]): BufferAttribute; + copyVector4sArray(vectors: {x: number, y: number, z: number, w: number}[]): BufferAttribute; + set(value: ArrayLike, offset?: number): BufferAttribute; + getX(index: number): number; + setX(index: number, x: number): BufferAttribute; + getY(index: number): number; + setY(index: number, y: number): BufferAttribute; + getZ(index: number): number; + setZ(index: number, z: number): BufferAttribute; + getW(index: number): number; + setW(index: number, z: number): BufferAttribute; + setXY(index: number, x: number, y: number): BufferAttribute; + setXYZ(index: number, x: number, y: number, z: number): BufferAttribute; + setXYZW(index: number, x: number, y: number, z: number, w: number): BufferAttribute; + /** + * @deprecated Use count instead. + */ + length: number; +} + +/** + * @deprecated THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead. + */ +export class Int8Attribute extends BufferAttribute { + constructor(array: any, itemSize: number); +} + +/** + * @deprecated THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead. + */ +export class Uint8Attribute extends BufferAttribute { + constructor(array: any, itemSize: number); +} + +/** + * @deprecated THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead. + */ +export class Uint8ClampedAttribute extends BufferAttribute { + constructor(array: any, itemSize: number); +} + +/** + * @deprecated THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead. + */ +export class Int16Attribute extends BufferAttribute { + constructor(array: any, itemSize: number); +} + +/** + * @deprecated THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead. + */ +export class Uint16Attribute extends BufferAttribute { + constructor(array: any, itemSize: number); +} + +/** + * @deprecated THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead. + */ +export class Int32Attribute extends BufferAttribute { + constructor(array: any, itemSize: number); +} + +/** + * @deprecated THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead. + */ +export class Uint32Attribute extends BufferAttribute { + constructor(array: any, itemSize: number); +} + +/** + * @deprecated THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead. + */ +export class Float32Attribute extends BufferAttribute { + constructor(array: any, itemSize: number); +} + +/** + * @deprecated THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead. + */ +export class Float64Attribute extends BufferAttribute { + constructor(array: any, itemSize: number); +} + +export class Int8BufferAttribute extends BufferAttribute { + constructor(array: Iterable | ArrayLike | ArrayBuffer, itemSize: number); +} + +export class Uint8BufferAttribute extends BufferAttribute { + constructor(array: Iterable | ArrayLike | ArrayBuffer, itemSize: number); +} + +export class Uint8ClampedBufferAttribute extends BufferAttribute { + constructor(array: Iterable | ArrayLike | ArrayBuffer, itemSize: number); +} + +export class Int16BufferAttribute extends BufferAttribute { + constructor(array: Iterable | ArrayLike | ArrayBuffer, itemSize: number); +} + +export class Uint16BufferAttribute extends BufferAttribute { + constructor(array: Iterable | ArrayLike | ArrayBuffer, itemSize: number); +} + +export class Int32BufferAttribute extends BufferAttribute { + constructor(array: Iterable | ArrayLike | ArrayBuffer, itemSize: number); +} + +export class Uint32BufferAttribute extends BufferAttribute { + constructor(array: Iterable | ArrayLike | ArrayBuffer, itemSize: number); +} + +export class Float32BufferAttribute extends BufferAttribute { + constructor(array: Iterable | ArrayLike | ArrayBuffer, itemSize: number); +} + +export class Float64BufferAttribute extends BufferAttribute { + constructor(array: Iterable | ArrayLike | ArrayBuffer, itemSize: number); +} + +/** + * @deprecated, use new THREE.BufferAttribute().setDynamic( true ). + */ +export class DynamicBufferAttribute extends BufferAttribute {} + +/** + * This is a superefficent class for geometries because it saves all data in buffers. + * It reduces memory costs and cpu cycles. But it is not as easy to work with because of all the nessecary buffer calculations. + * It is mainly interesting when working with static objects. + * + * @see src/core/BufferGeometry.js + */ +export class BufferGeometry extends EventDispatcher { + /** + * This creates a new BufferGeometry. It also sets several properties to an default value. + */ + constructor(); + + static MaxIndex: number; + + /** + * Unique number of this buffergeometry instance + */ + id: number; + uuid: string; + name: string; + type: string; + index: BufferAttribute; + attributes: BufferAttribute|InterleavedBufferAttribute[]; + morphAttributes: any; + groups: {start: number, count: number, materialIndex?: number}[]; + boundingBox: Box3; + boundingSphere: Sphere; + drawRange: { start: number, count: number }; + + getIndex(): BufferAttribute; + setIndex( index: BufferAttribute ): void; + + addAttribute(name: string, attribute: BufferAttribute|InterleavedBufferAttribute): BufferGeometry; + + getAttribute(name: string): BufferAttribute|InterleavedBufferAttribute; + removeAttribute(name: string): BufferGeometry; + + addGroup(start: number, count: number, materialIndex?: number): void; + clearGroups(): void; + + setDrawRange(start: number, count: number): void; + + /** + * Bakes matrix transform directly into vertex coordinates. + */ + applyMatrix(matrix: Matrix4): BufferGeometry; + + rotateX(angle: number): BufferGeometry; + rotateY(angle: number): BufferGeometry; + rotateZ(angle: number): BufferGeometry; + translate(x: number, y: number, z: number): BufferGeometry; + scale(x: number, y: number, z: number): BufferGeometry; + lookAt(v: Vector3): void; + + center(): Vector3; + + setFromObject(object: Object3D): void; + updateFromObject(object: Object3D): void; + + fromGeometry(geometry: Geometry, settings?: any): BufferGeometry; + + fromDirectGeometry(geometry: DirectGeometry): BufferGeometry; + + /** + * Computes bounding box of the geometry, updating Geometry.boundingBox attribute. + * Bounding boxes aren't computed by default. They need to be explicitly computed, otherwise they are null. + */ + computeBoundingBox(): void; + + /** + * Computes bounding sphere of the geometry, updating Geometry.boundingSphere attribute. + * Bounding spheres aren't' computed by default. They need to be explicitly computed, otherwise they are null. + */ + computeBoundingSphere(): void; + + /** + * Computes vertex normals by averaging face normals. + */ + computeVertexNormals(): void; + + merge(geometry: BufferGeometry, offset: number): BufferGeometry; + normalizeNormals(): void; + + toNonIndexed(): BufferGeometry; + + toJSON(): any; + clone(): this; + copy(source: this): this; + + /** + * Disposes the object from memory. + * You need to call this when you want the bufferGeometry removed while the application is running. + */ + dispose(): void; + + /** + * @deprecated + */ + drawcalls: any; + offsets: any; + + addIndex(index: any): void; + addDrawCall(start: any, count: any, indexOffset?: any): void; + clearDrawCalls(): void; + addAttribute(name: any, array: any, itemSize: any): any; +} + +/** + * Object for keeping track of time. + * + * @see src/core/Clock.js + */ +export class Clock { + /** + * @param autoStart Automatically start the clock. + */ + constructor(autoStart?: boolean); + + /** + * If set, starts the clock automatically when the first update is called. + */ + autoStart: boolean; + + /** + * When the clock is running, It holds the starttime of the clock. + * This counted from the number of milliseconds elapsed since 1 January 1970 00:00:00 UTC. + */ + startTime: number; + + /** + * When the clock is running, It holds the previous time from a update. + * This counted from the number of milliseconds elapsed since 1 January 1970 00:00:00 UTC. + */ + oldTime: number; + + /** + * When the clock is running, It holds the time elapsed between the start of the clock to the previous update. + * This parameter is in seconds of three decimal places. + */ + elapsedTime: number; + + /** + * This property keeps track whether the clock is running or not. + */ + running: boolean; + + /** + * Starts clock. + */ + start(): void; + + /** + * Stops clock. + */ + stop(): void; + + /** + * Get the seconds passed since the clock started. + */ + getElapsedTime(): number; + + /** + * Get the seconds passed since the last call to this method. + */ + getDelta(): number; +} + +/** + * @see src/core/DirectGeometry.js + */ +export class DirectGeometry extends EventDispatcher { + constructor(); + + id: number; + uuid: string; + name: string; + type: string; + indices: number[]; + vertices: Vector3[]; + normals: Vector3[]; + colors: Color[]; + uvs: Vector2[]; + uvs2: Vector2[]; + groups: {start: number, materialIndex: number}[]; + morphTargets: MorphTarget[]; + skinWeights: number[]; + skinIndices: number[]; + boundingBox: Box3; + boundingSphere: Sphere; + verticesNeedUpdate: boolean; + normalsNeedUpdate: boolean; + colorsNeedUpdate: boolean; + uvsNeedUpdate: boolean; + groupsNeedUpdate: boolean; + + computeBoundingBox(): void; + computeBoundingSphere(): void; + computeGroups(geometry: Geometry): void; + fromGeometry(geometry: Geometry): DirectGeometry; + dispose(): void; + + // EventDispatcher mixins + addEventListener(type: string, listener: (event: Event) => void ): void; + hasEventListener(type: string, listener: (event: Event) => void): void; + removeEventListener(type: string, listener: (event: Event) => void): void; + dispatchEvent(event: { type: string; [attachment: string]: any; }): void; +} + + +/** + * JavaScript events for custom objects + * + * # Example + * var Car = function () { + * + * EventDispatcher.call( this ); + * this.start = function () { + * + * this.dispatchEvent( { type: 'start', message: 'vroom vroom!' } ); + * + * }; + * + * }; + * + * var car = new Car(); + * car.addEventListener( 'start', function ( event ) { + * + * alert( event.message ); + * + * } ); + * car.start(); + * + * @source src/core/EventDispatcher.js + */ +export class EventDispatcher { + /** + * Creates eventDispatcher object. It needs to be call with '.call' to add the functionality to an object. + */ + constructor(); + + /** + * Adds a listener to an event type. + * @param type The type of the listener that gets removed. + * @param listener The listener function that gets removed. + */ + addEventListener(type: string, listener: (event: Event) => void ): void; + + /** + * Adds a listener to an event type. + * @param type The type of the listener that gets removed. + * @param listener The listener function that gets removed. + */ + hasEventListener(type: string, listener: (event: Event) => void): void; + + /** + * Removes a listener from an event type. + * @param type The type of the listener that gets removed. + * @param listener The listener function that gets removed. + */ + removeEventListener(type: string, listener: (event: Event) => void): void; + + /** + * Fire an event type. + * @param type The type of event that gets fired. + */ + dispatchEvent(event: { type: string; [attachment: string]: any; }): void; +} + +export interface Event { + type: string; + target: any; +} + +/** + * Triangle face. + * + * # Example + * var normal = new THREE.Vector3( 0, 1, 0 ); + * var color = new THREE.Color( 0xffaa00 ); + * var face = new THREE.Face3( 0, 1, 2, normal, color, 0 ); + * + * @source https://github.com/mrdoob/three.js/blob/master/src/core/Face3.js + */ +export class Face3 { + /** + * @param a Vertex A index. + * @param b Vertex B index. + * @param c Vertex C index. + * @param normal Face normal or array of vertex normals. + * @param color Face color or array of vertex colors. + * @param materialIndex Material index. + */ + constructor(a: number, b: number, c: number, normal?: Vector3, color?: Color, materialIndex?: number); + constructor(a: number, b: number, c: number, normal?: Vector3, vertexColors?: Color[], materialIndex?: number); + constructor(a: number, b: number, c: number, vertexNormals?: Vector3[], color?: Color, materialIndex?: number); + constructor(a: number, b: number, c: number, vertexNormals?: Vector3[], vertexColors?: Color[], materialIndex?: number); + + /** + * Vertex A index. + */ + a: number; + + /** + * Vertex B index. + */ + b: number; + + /** + * Vertex C index. + */ + c: number; + + /** + * Face normal. + */ + normal: Vector3; + + /** + * Array of 4 vertex normals. + */ + vertexNormals: Vector3[]; + + /** + * Face color. + */ + color: Color; + + /** + * Array of 4 vertex normals. + */ + vertexColors: Color[]; + + /** + * Material index (points to {@link Geometry.materials}). + */ + materialIndex: number; + + clone(): this; + copy(source: this): this; +} + +/** + * @deprecated Use Face3 instead. + */ +export class Face4 extends Face3 {} + +export interface MorphTarget { + name: string; + vertices: Vector3[]; +} + +export interface MorphColor { + name: string; + colors: Color[]; +} + +export interface MorphNormals { + name: string; + normals: Vector3[]; +} + +export let GeometryIdCount: number; + +/** + * Base class for geometries + * + * # Example + * var geometry = new THREE.Geometry(); + * geometry.vertices.push( new THREE.Vector3( -10, 10, 0 ) ); + * geometry.vertices.push( new THREE.Vector3( -10, -10, 0 ) ); + * geometry.vertices.push( new THREE.Vector3( 10, -10, 0 ) ); + * geometry.faces.push( new THREE.Face3( 0, 1, 2 ) ); + * geometry.computeBoundingSphere(); + * + * @see https://github.com/mrdoob/three.js/blob/master/src/core/Geometry.js + */ +export class Geometry extends EventDispatcher { + constructor(); + + /** + * Unique number of this geometry instance + */ + id: number; + + uuid: string; + + /** + * Name for this geometry. Default is an empty string. + */ + name: string; + + type: string; + + /** + * The array of vertices hold every position of points of the model. + * To signal an update in this array, Geometry.verticesNeedUpdate needs to be set to true. + */ + vertices: Vector3[]; + + /** + * Array of vertex colors, matching number and order of vertices. + * Used in ParticleSystem, Line and Ribbon. + * Meshes use per-face-use-of-vertex colors embedded directly in faces. + * To signal an update in this array, Geometry.colorsNeedUpdate needs to be set to true. + */ + colors: Color[]; + + /** + * Array of triangles or/and quads. + * The array of faces describe how each vertex in the model is connected with each other. + * To signal an update in this array, Geometry.elementsNeedUpdate needs to be set to true. + */ + faces: Face3[]; + + /** + * Array of face UV layers. + * Each UV layer is an array of UV matching order and number of vertices in faces. + * To signal an update in this array, Geometry.uvsNeedUpdate needs to be set to true. + */ + faceVertexUvs: Vector2[][][]; + + /** + * Array of morph targets. Each morph target is a Javascript object: + * + * { name: "targetName", vertices: [ new THREE.Vector3(), ... ] } + * + * Morph vertices match number and order of primary vertices. + */ + morphTargets: MorphTarget[]; + + /** + * Array of morph normals. Morph normals have similar structure as morph targets, each normal set is a Javascript object: + * + * morphNormal = { name: "NormalName", normals: [ new THREE.Vector3(), ... ] } + */ + morphNormals: MorphNormals[]; + + /** + * Array of skinning weights, matching number and order of vertices. + */ + skinWeights: number[]; + + /** + * Array of skinning indices, matching number and order of vertices. + */ + skinIndices: number[]; + + /** + * + */ + lineDistances: number[]; + + /** + * Bounding box. + */ + boundingBox: Box3; + + /** + * Bounding sphere. + */ + boundingSphere: Sphere; + + /** + * Set to true if the vertices array has been updated. + */ + verticesNeedUpdate: boolean; + + /** + * Set to true if the faces array has been updated. + */ + elementsNeedUpdate: boolean; + + /** + * Set to true if the uvs array has been updated. + */ + uvsNeedUpdate: boolean; + + /** + * Set to true if the normals array has been updated. + */ + normalsNeedUpdate: boolean; + + /** + * Set to true if the colors array has been updated. + */ + colorsNeedUpdate: boolean; + + /** + * Set to true if the linedistances array has been updated. + */ + lineDistancesNeedUpdate: boolean; + + /** + * + */ + groupsNeedUpdate: boolean; + + /** + * Bakes matrix transform directly into vertex coordinates. + */ + applyMatrix(matrix: Matrix4): Geometry; + + rotateX(angle: number): Geometry; + rotateY(angle: number): Geometry; + rotateZ(angle: number): Geometry; + + translate(x: number, y: number, z: number): Geometry; + scale(x: number, y: number, z: number): Geometry; + lookAt( vector: Vector3 ): void; + + fromBufferGeometry(geometry: BufferGeometry): Geometry; + + center(): Vector3; + + normalize(): Geometry; + + /** + * Computes face normals. + */ + computeFaceNormals(): void; + + /** + * Computes vertex normals by averaging face normals. + * Face normals must be existing / computed beforehand. + */ + computeVertexNormals(areaWeighted?: boolean): void; + + /** + * Compute vertex normals, but duplicating face normals. + */ + computeFlatVertexNormals(): void; + + /** + * Computes morph normals. + */ + computeMorphNormals(): void; + + computeLineDistances(): void; + + /** + * Computes bounding box of the geometry, updating {@link Geometry.boundingBox} attribute. + */ + computeBoundingBox(): void; + + /** + * Computes bounding sphere of the geometry, updating Geometry.boundingSphere attribute. + * Neither bounding boxes or bounding spheres are computed by default. They need to be explicitly computed, otherwise they are null. + */ + computeBoundingSphere(): void; + + merge(geometry: Geometry, matrix: Matrix, materialIndexOffset?: number): void; + + mergeMesh(mesh: Mesh): void; + + /** + * Checks for duplicate vertices using hashmap. + * Duplicated vertices are removed and faces' vertices are updated. + */ + mergeVertices(): number; + + sortFacesByMaterialIndex(): void; + + toJSON(): any; + + /** + * Creates a new clone of the Geometry. + */ + clone(): this; + + copy(source: this): this; + + /** + * Removes The object from memory. + * Don't forget to call this method when you remove an geometry because it can cuase meomory leaks. + */ + dispose(): void; + + + // These properties do not exist in a normal Geometry class, but if you use the instance that was passed by JSONLoader, it will be added. + bones: Bone[]; + animation: AnimationClip; + animations: AnimationClip[]; + + // EventDispatcher mixins + addEventListener(type: string, listener: (event: Event) => void ): void; + hasEventListener(type: string, listener: (event: Event) => void): void; + removeEventListener(type: string, listener: (event: Event) => void): void; + dispatchEvent(event: { type: string; [attachment: string]: any; }): void; +} + +/** + * @deprecated + */ +export namespace GeometryUtils { + /** + * @deprecated Use geometry.merge( geometry2, matrix, materialIndexOffset ). + */ + export function merge(geometry1: any, geometry2: any, materialIndexOffset?: any): any; + /** + * @deprecated Use geometry.center(). + */ + export function center(geometry: any): any; +} + +/** + * @see src/core/InstancedBufferAttribute.js + */ +export class InstancedBufferAttribute extends BufferAttribute { + constructor(data: ArrayLike, itemSize: number, meshPerAttribute?: number); + + meshPerAttribute: number; +} + +/** + * @see src/core/InstancedBufferGeometry.js + */ +export class InstancedBufferGeometry extends BufferGeometry { + constructor(); + + groups: {start: number, count: number, instances: number}[]; + maxInstancedCount: number; + + addGroup(start: number, count: number, instances: number): void; +} + +/** + * @see src/core/InterleavedBuffer.js + */ +export class InterleavedBuffer { + constructor(array: ArrayLike, stride: number); + + array: ArrayLike; + stride: number; + dynamic: boolean; + updateRange: { offset: number; count: number }; + version: number; + length: number; + count: number; + needsUpdate: boolean; + + setDynamic(dynamic: boolean): InterleavedBuffer; + clone(): this; + copy(source: this): this; + copyAt(index1: number, attribute: InterleavedBufferAttribute, index2: number): InterleavedBuffer; + set(value: ArrayLike, index: number): InterleavedBuffer; + clone(): this; +} + +/** + * @see src/core/InstancedInterleavedBuffer.js + */ +export class InstancedInterleavedBuffer extends InterleavedBuffer { + constructor(array: ArrayLike, stride: number, meshPerAttribute?: number); + + meshPerAttribute: number; +} + +/** + * @see src/core/InterleavedBufferAttribute.js + */ +export class InterleavedBufferAttribute { + constructor(interleavedBuffer: InterleavedBuffer, itemSize: number, offset: number, normalized: boolean); + + uuid: string; + data: InterleavedBuffer; + itemSize: number; + offset: number; + count: number; + normalized: boolean; + array: any[]; + + getX(index: number): number; + setX(index: number, x: number): InterleavedBufferAttribute; + getY(index: number): number; + setY(index: number, y: number): InterleavedBufferAttribute; + getZ(index: number): number; + setZ(index: number, z: number): InterleavedBufferAttribute; + getW(index: number): number; + setW(index: number, z: number): InterleavedBufferAttribute; + setXY(index: number, x: number, y: number): InterleavedBufferAttribute; + setXYZ(index: number, x: number, y: number, z: number): InterleavedBufferAttribute; + setXYZW(index: number, x: number, y: number, z: number, w: number): InterleavedBufferAttribute; + /** + * @deprecated Use count instead. + */ + length: number; +} + +export let Object3DIdCount: number; + +/** + * Base class for scene graph objects + */ +export class Object3D extends EventDispatcher { + constructor(); + + /** + * Unique number of this object instance. + */ + id: number; + + /** + * + */ + uuid: string; + + /** + * Optional name of the object (doesn't need to be unique). + */ + name: string; + + type: string; + + /** + * Object's parent in the scene graph. + */ + parent: Object3D; + + /** + * Array with object's children. + */ + children: Object3D[]; + + /** + * Up direction. + */ + up: Vector3; + + /** + * Object's local position. + */ + position: Vector3; + + /** + * Object's local rotation (Euler angles), in radians. + */ + rotation: Euler; + + /** + * Global rotation. + */ + quaternion: Quaternion; + + /** + * Object's local scale. + */ + scale: Vector3; + + modelViewMatrix: Matrix4; + + normalMatrix: Matrix3; + + /** + * Local transform. + */ + matrix: Matrix4; + + /** + * The global transform of the object. If the Object3d has no parent, then it's identical to the local transform. + */ + matrixWorld: Matrix4; + + /** + * When this is set, it calculates the matrix of position, (rotation or quaternion) and scale every frame and also recalculates the matrixWorld property. + */ + matrixAutoUpdate: boolean; + + /** + * When this is set, it calculates the matrixWorld in that frame and resets this property to false. + */ + matrixWorldNeedsUpdate: boolean; + + layers: Layers; + /** + * Object gets rendered if true. + */ + visible: boolean; + + /** + * Gets rendered into shadow map. + */ + castShadow: boolean; + + /** + * Material gets baked in shadow receiving. + */ + receiveShadow: boolean; + + /** + * When this is set, it checks every frame if the object is in the frustum of the camera. Otherwise the object gets drawn every frame even if it isn't visible. + */ + frustumCulled: boolean; + + renderOrder: number; + + /** + * An object that can be used to store custom data about the Object3d. It should not hold references to functions as these will not be cloned. + */ + userData: any; + + /** + * + */ + static DefaultUp: Vector3; + static DefaultMatrixAutoUpdate: boolean; + + /** + * This updates the position, rotation and scale with the matrix. + */ + applyMatrix(matrix: Matrix4): void; + + /** + * + */ + setRotationFromAxisAngle(axis: Vector3, angle: number): void; + + /** + * + */ + setRotationFromEuler(euler: Euler): void; + + /** + * + */ + setRotationFromMatrix(m: Matrix4): void; + + /** + * + */ + setRotationFromQuaternion(q: Quaternion): void; + + /** + * Rotate an object along an axis in object space. The axis is assumed to be normalized. + * @param axis A normalized vector in object space. + * @param angle The angle in radians. + */ + rotateOnAxis(axis: Vector3, angle: number): Object3D; + + /** + * + * @param angle + */ + rotateX(angle: number): Object3D; + + /** + * + * @param angle + */ + rotateY(angle: number): Object3D; + + /** + * + * @param angle + */ + rotateZ(angle: number): Object3D; + + /** + * @param axis A normalized vector in object space. + * @param distance The distance to translate. + */ + translateOnAxis(axis: Vector3, distance: number): Object3D; + + /** + * Translates object along x axis by distance. + * @param distance Distance. + */ + translateX(distance: number): Object3D; + + /** + * Translates object along y axis by distance. + * @param distance Distance. + */ + translateY(distance: number): Object3D; + + /** + * Translates object along z axis by distance. + * @param distance Distance. + */ + translateZ(distance: number): Object3D; + + /** + * Updates the vector from local space to world space. + * @param vector A local vector. + */ + localToWorld(vector: Vector3): Vector3; + + /** + * Updates the vector from world space to local space. + * @param vector A world vector. + */ + worldToLocal(vector: Vector3): Vector3; + + /** + * Rotates object to face point in space. + * @param vector A world vector to look at. + */ + lookAt(vector: Vector3): void; + + /** + * Adds object as child of this object. + */ + add(object: Object3D): void; + + /** + * Removes object as child of this object. + */ + remove(object: Object3D): void; + + /** + * Searches through the object's children and returns the first with a matching id, optionally recursive. + * @param id Unique number of the object instance + */ + getObjectById(id: number): Object3D; + + /** + * Searches through the object's children and returns the first with a matching name, optionally recursive. + * @param name String to match to the children's Object3d.name property. + */ + getObjectByName(name: string): Object3D; + + getObjectByProperty( name: string, value: string ): Object3D; + + getWorldPosition(optionalTarget?: Vector3): Vector3; + getWorldQuaternion(optionalTarget?: Quaternion): Quaternion; + getWorldRotation(optionalTarget?: Euler): Euler; + getWorldScale(optionalTarget?: Vector3): Vector3; + getWorldDirection(optionalTarget?: Vector3): Vector3; + + raycast(raycaster: Raycaster, intersects: any): void; + + traverse(callback: (object: Object3D) => any): void; + + traverseVisible(callback: (object: Object3D) => any): void; + + traverseAncestors(callback: (object: Object3D) => any): void; + + /** + * Updates local transform. + */ + updateMatrix(): void; + + /** + * Updates global transform of the object and its children. + */ + updateMatrixWorld(force: boolean): void; + + toJSON(meta?: { geometries: any, materials: any, textures: any, images: any }): any; + + clone(recursive?: boolean): this; + + /** + * + * @param object + * @param recursive + */ + copy(source: this, recursive?: boolean): this; + + /** + * @deprecated + */ + eulerOrder: string; + getChildByName(name: string): Object3D; + translate(distance: number, axis: Vector3): Object3D; +} + +export interface Intersection { + distance: number; + distanceToRay: number; + point: Vector3; + index: number; + face: Face3; + faceIndex: number; + object: Object3D; +} + +export interface RaycasterParameters { + Mesh?: any; + Line?: any; + LOD?: any; + Points?: { threshold: number }; + Sprite?: any; +} + +export class Raycaster { + constructor(origin?: Vector3, direction?: Vector3, near?: number, far?: number); + + ray: Ray; + near: number; + far: number; + params: RaycasterParameters; + precision: number; + linePrecision: number; + + set(origin: Vector3, direction: Vector3): void; + setFromCamera(coords: { x: number; y: number; }, camera: Camera ): void; + intersectObject(object: Object3D, recursive?: boolean): Intersection[]; + intersectObjects(objects: Object3D[], recursive?: boolean): Intersection[]; +} + +export class Layers { + constructor(); + + mask: number; + + set(channel: number): void; + enable(channel: number): void; + toggle(channel: number): void; + disable(channel: number): void; + test(layers: Layers): boolean; +} + +export class Font { + constructor(jsondata: string); + + data: string; + + generateShapes(text: string, size: number, divisions: number): any[]; +} + +// Lights ////////////////////////////////////////////////////////////////////////////////// + +/** + * Abstract base class for lights. + */ +export class Light extends Object3D { + constructor(hex?: number|string, intensity?: number); + + color: Color; + intensity: number; + receiveShadow: boolean; + shadow: LightShadow; + /** + * @deprecated Use shadow.camera.fov instead. + */ + shadowCameraFov: any; + /** + * @deprecated Use shadow.camera.left instead. + */ + shadowCameraLeft: any; + /** + * @deprecated Use shadow.camera.right instead. + */ + shadowCameraRight: any; + /** + * @deprecated Use shadow.camera.top instead. + */ + shadowCameraTop: any; + /** + * @deprecated Use shadow.camera.bottom instead. + */ + shadowCameraBottom: any; + /** + * @deprecated Use shadow.camera.near instead. + */ + shadowCameraNear: any; + /** + * @deprecated Use shadow.camera.far instead. + */ + shadowCameraFar: any; + /** + * @deprecated Use shadow.bias instead. + */ + shadowBias: any; + /** + * @deprecated Use shadow.mapSize.width instead. + */ + shadowMapWidth: any; + /** + * @deprecated Use shadow.mapSize.height instead. + */ + shadowMapHeight: any; +} + +export class LightShadow { + constructor(camera: Camera); + + camera: Camera; + bias: number; + radius: number; + mapSize: Vector2; + map: RenderTarget; + matrix: Matrix4; + + copy(source: this): this; + clone(recursive?: boolean): this; + toJSON(): any; +} + +/** + * This light's color gets applied to all the objects in the scene globally. + * + * # example + * var light = new THREE.AmbientLight( 0x404040 ); // soft white light + * scene.add( light ); + * + * @source https://github.com/mrdoob/three.js/blob/master/src/lights/AmbientLight.js + */ +export class AmbientLight extends Light { + /** + * This creates a Ambientlight with a color. + * @param hex Numeric value of the RGB component of the color. + */ + constructor(hex?: number|string, intensity?: number); + + castShadow: boolean; +} + +/** + * Affects objects using MeshLambertMaterial or MeshPhongMaterial. + * + * @example + * // White directional light at half intensity shining from the top. + * var directionalLight = new THREE.DirectionalLight( 0xffffff, 0.5 ); + * directionalLight.position.set( 0, 1, 0 ); + * scene.add( directionalLight ); + * + * @see src/lights/DirectionalLight.js + */ +export class DirectionalLight extends Light { + constructor(hex?: number|string, intensity?: number); + + /** + * Target used for shadow camera orientation. + */ + target: Object3D; + + /** + * Light's intensity. + * Default — 1.0. + */ + intensity: number; + + shadow: LightShadow; +} + +export class DirectionalLightShadow extends LightShadow {} + +export class HemisphereLight extends Light { + constructor(skyColorHex?: number|string, groundColorHex?: number|string, intensity?: number); + + groundColor: Color; + intensity: number; +} + +/** + * Affects objects using {@link MeshLambertMaterial} or {@link MeshPhongMaterial}. + * + * @example + * var light = new THREE.PointLight( 0xff0000, 1, 100 ); + * light.position.set( 50, 50, 50 ); + * scene.add( light ); + */ +export class PointLight extends Light { + constructor(hex?: number|string, intensity?: number, distance?: number, decay?: number); + + /* + * Light's intensity. + * Default - 1.0. + */ + intensity: number; + + /** + * If non-zero, light will attenuate linearly from maximum intensity at light position down to zero at distance. + * Default — 0.0. + */ + distance: number; + + decay: number; + shadow: LightShadow; + power: number; +} + +/** + * A point light that can cast shadow in one direction. + */ +export class SpotLight extends Light { + constructor(hex?: number|string, intensity?: number, distance?: number, angle?: number, exponent?: number, decay?: number); + + /** + * Spotlight focus points at target.position. + * Default position — (0,0,0). + */ + target: Object3D; + + /** + * Light's intensity. + * Default — 1.0. + */ + intensity: number; + + /** + * If non-zero, light will attenuate linearly from maximum intensity at light position down to zero at distance. + * Default — 0.0. + */ + distance: number; + + /* + * Maximum extent of the spotlight, in radians, from its direction. + * Default — Math.PI/2. + */ + angle: number; + + /** + * Rapidity of the falloff of light from its target direction. + * Default — 10.0. + */ + exponent: number; + + decay: number; + shadow: SpotLightShadow; + power: number; + penumbra: number; +} + +export class SpotLightShadow extends LightShadow { + update(light: Light): void; +} + +// Loaders ////////////////////////////////////////////////////////////////////////////////// + +/** + * Base class for implementing loaders. + * + * Events: + * load + * Dispatched when the image has completed loading + * content — loaded image + * + * error + * + * Dispatched when the image can't be loaded + * message — error message + */ +export class Loader { + constructor(); + + /** + * Will be called when load starts. + * The default is a function with empty body. + */ + onLoadStart: () => void; + + /** + * Will be called while load progresses. + * The default is a function with empty body. + */ + onLoadProgress: () => void; + + /** + * Will be called when load completes. + * The default is a function with empty body. + */ + onLoadComplete: () => void; + + /** + * default — null. + * If set, assigns the crossOrigin attribute of the image to the value of crossOrigin, prior to starting the load. + */ + crossOrigin: string; + + extractUrlBase(url: string): string; + initMaterials(materials: Material[], texturePath: string): Material[]; + createMaterial(m: Material, texturePath: string, crossOrigin?: string): boolean; + + static Handlers: LoaderHandler; +} + +export interface LoaderHandler { + handlers: (RegExp | Loader)[]; + + add(regex: RegExp, loader: Loader): void; + get(file: string): Loader; +} + +export class FileLoader { + constructor(manager?: LoadingManager); + + manager: LoadingManager; + mimeType: MimeType; + path: string; + responseType: string; + withCredentials: string; + + load(url: string, onLoad?: (responseText: string) => void, onProgress?: (request: ProgressEvent) => void, onError?:(event: ErrorEvent) => void): any; + setMimeType(mimeType: MimeType): FileLoader; + setPath(path: string) : FileLoader; + setResponseType(responseType: string) : FileLoader; + setWithCredentials(value: string): FileLoader; +} + +export class FontLoader { + constructor(manager?: LoadingManager); + + manager: LoadingManager; + + load(url: string, onLoad?: (responseText: string) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): void; + parse(json: string): Font; +} + +/** + * A loader for loading an image. + * Unlike other loaders, this one emits events instead of using predefined callbacks. So if you're interested in getting notified when things happen, you need to add listeners to the object. + */ +export class ImageLoader { + constructor(manager?: LoadingManager); + + manager: LoadingManager; + crossOrigin: string; + withCredentials: string; + path: string; + + /** + * Begin loading from url + * @param url + */ + load(url: string, onLoad?: (image: HTMLImageElement) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): HTMLImageElement; + setCrossOrigin(crossOrigin: string): ImageLoader; + setWithCredentials(value: string): ImageLoader; + setPath(value: string): ImageLoader; +} + +/** + * A loader for loading objects in JSON format. + */ +export class JSONLoader extends Loader { + constructor(manager?: LoadingManager); + + manager: LoadingManager; + withCredentials: boolean; + + load(url: string, onLoad?: (geometry: Geometry, materials: Material[]) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): void; + setTexturePath( value: string ): void; + parse(json: any, texturePath?: string): { geometry: Geometry; materials?: Material[] }; +} + +/** + * Handles and keeps track of loaded and pending data. + */ +export class LoadingManager { + constructor(onLoad?: () => void, onProgress?: (url: string, loaded: number, total: number) => void, onError?: () => void); + + onStart: () => void; + + /** + * Will be called when load starts. + * The default is a function with empty body. + */ + onLoad: () => void; + + /** + * Will be called while load progresses. + * The default is a function with empty body. + */ + onProgress: (item: any, loaded: number, total: number) => void; + + /** + * Will be called when each element in the scene completes loading. + * The default is a function with empty body. + */ + onError: () => void; + + itemStart(url: string): void; + itemEnd(url: string): void; + itemError(url: string): void; +} + +export const DefaultLoadingManager: LoadingManager; + +export class BufferGeometryLoader { + constructor(manager?: LoadingManager); + + manager: LoadingManager; + + load(url: string, onLoad: (bufferGeometry: BufferGeometry) => void, onProgress?: (event: any) => void, onError?: (event: any) => void): void; + parse(json: any): BufferGeometry; +} + +export class MaterialLoader { + constructor(manager?: LoadingManager); + + manager: LoadingManager; + textures: { [key: string]: Texture }; + + load(url: string, onLoad: (material: Material) => void): void; + setTextures(textures: { [key: string]: Texture }): void; + getTexture(name: string): Texture; + parse(json: any): Material; +} + +export class ObjectLoader { + constructor(manager?: LoadingManager); + + manager: LoadingManager; + texturePass: string; + crossOrigin: string; + + load(url: string, onLoad?: (object: Object3D) => void): void; + setTexturePath( value: string ): void; + setCrossOrigin(crossOrigin: string): void; + parse(json: any, onLoad?: (object: Object3D) => void): T; + parseGeometries(json: any): any[]; // Array of BufferGeometry or Geometry or Geometry2. + parseMaterials(json: any, textures: Texture[]): Material[]; // Array of Classes that inherits from Matrial. + parseAnimations(json: any): AnimationClip[]; + parseImages(json: any, onLoad: () => void): any[]; + parseTextures(json: any, images: any): Texture[]; + parseObject(data: any, geometries: any[], materials: Material[]): T; +} + +/** + * Class for loading a texture. + * Unlike other loaders, this one emits events instead of using predefined callbacks. So if you're interested in getting notified when things happen, you need to add listeners to the object. + */ +export class TextureLoader { + constructor(manager?: LoadingManager); + + manager: LoadingManager; + crossOrigin: string; + withCredentials: string; + path: string; + + /** + * Begin loading from url + * + * @param url + */ + load(url: string, onLoad?: (texture: Texture) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): Texture; + setCrossOrigin(crossOrigin: string): TextureLoader; + setWithCredentials(value: string): TextureLoader; + setPath(path: string): TextureLoader; +} + +export class CubeTextureLoader { + constructor(manager?: LoadingManager); + + manager: LoadingManager; + corssOrigin: string; + path: string; + + load(urls: Array, onLoad?: (texture: CubeTexture) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): void; + setCrossOrigin(crossOrigin: string): CubeTextureLoader; + setPath(path: string): CubeTextureLoader; +} + +export class DataTextureLoader { + constructor(manager?: LoadingManager); + + manager: LoadingManager; + + load(url: string, onLoad: (dataTexture: DataTexture) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): void; +} + +/** + * @deprecated since 0.84.0. Use DataTextureLoader (renamed) + */ +export class BinaryTextureLoader extends DataTextureLoader {} + +export class CompressedTextureLoader { + constructor(manager?: LoadingManager); + + manager: LoadingManager; + path: string; + + load(url: string, onLoad: (texture: CompressedTexture) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): void; + setPath(path: string): CompressedTextureLoader; +} + +export class AudioLoader { + constructor(manager?: LoadingManager); + + load(url: string, onLoad: Function, onPrgress: Function, onError: Function): void; +} + +export namespace Cache { + export let enabled: boolean; + export let files: any; + + export function add(key: string, file: any): void; + export function get(key: string): any; + export function remove(key: string): void; + export function clear(): void; +} + +// Materials ////////////////////////////////////////////////////////////////////////////////// +export let MaterialIdCount: number; + +export interface MaterialParameters { + name?: string; + side?: Side; + opacity?: number; + transparent?: boolean; + blending?: Blending; + blendSrc?: BlendingDstFactor; + blendDst?: BlendingSrcFactor; + blendEquation?: BlendingEquation; + blendSrcAlpha?: number; + blendDstAlpha?: number; + blendEquationAlpha?: number; + depthFunc?: DepthModes; + depthTest?: boolean; + depthWrite?: boolean; + colorWrite?: boolean; + precision?: number; + polygonOffset?: boolean; + polygonOffsetFactor?: number; + polygonOffsetUnits?: number; + alphaTest?: number; + premultipliedAlpha?: boolean; + overdraw?: number; + visible?: boolean; + fog?: boolean; + lights?: boolean; + shading?: Shading; + vertexColors?: Colors; +} + +/** + * Materials describe the appearance of objects. They are defined in a (mostly) renderer-independent way, so you don't have to rewrite materials if you decide to use a different renderer. + */ +export class Material extends EventDispatcher { + constructor(); + + /** + * Unique number of this material instance. + */ + id: number; + + uuid: string; + + /** + * Material name. Default is an empty string. + */ + name: string; + + type: string; + + /** + * Defines which of the face sides will be rendered - front, back or both. + * Default is THREE.FrontSide. Other options are THREE.BackSide and THREE.DoubleSide. + */ + side: Side; + + /** + * Opacity. Default is 1. + */ + opacity: number; + + /** + * Defines whether this material is transparent. This has an effect on rendering, as transparent objects need an special treatment, and are rendered after the opaque (i.e. non transparent) objects. For a working example of this behaviour, check the {@link WebGLRenderer} code. + * Default is false. + */ + transparent: boolean; + + /** + * Which blending to use when displaying objects with this material. Default is {@link NormalBlending}. + */ + blending: Blending; + + /** + * Blending source. It's one of the blending mode constants defined in Three.js. Default is {@link SrcAlphaFactor}. + */ + blendSrc: BlendingDstFactor; + + /** + * Blending destination. It's one of the blending mode constants defined in Three.js. Default is {@link OneMinusSrcAlphaFactor}. + */ + blendDst: BlendingSrcFactor; + + /** + * Blending equation to use when applying blending. It's one of the constants defined in Three.js. Default is AddEquation. + */ + blendEquation: BlendingEquation; + + blendSrcAlpha: number; + blendDstAlpha: number; + blendEquationAlpha: number; + + depthFunc: DepthModes; + + /** + * Whether to have depth test enabled when rendering this material. Default is true. + */ + depthTest: boolean; + + /** + * Whether rendering this material has any effect on the depth buffer. Default is true. + * When drawing 2D overlays it can be useful to disable the depth writing in order to layer several things together without creating z-index artifacts. + */ + depthWrite: boolean; + + clippingPlanes: any; + clipShadows: boolean; + + colorWrite: boolean; + + precision: any; + + /** + * Whether to use polygon offset. Default is false. This corresponds to the POLYGON_OFFSET_FILL WebGL feature. + */ + polygonOffset: boolean; + + /** + * Sets the polygon offset factor. Default is 0. + */ + polygonOffsetFactor: number; + + /** + * Sets the polygon offset units. Default is 0. + */ + polygonOffsetUnits: number; + + /** + * Sets the alpha value to be used when running an alpha test. Default is 0. + */ + alphaTest: number; + + premultipliedAlpha: boolean; + + /** + * Enables/disables overdraw. If greater than zero, polygons are drawn slightly bigger in order to fix antialiasing gaps when using the CanvasRenderer. Default is 0. + */ + overdraw: number; + + /** + * Defines whether this material is visible. Default is true. + */ + visible: boolean; + + /** + * Specifies that the material needs to be updated, WebGL wise. Set it to true if you made changes that need to be reflected in WebGL. + * This property is automatically set to true when instancing a new material. + */ + needsUpdate: boolean; + + fog: boolean; + lights: boolean; + shading: Shading; + vertexColors: Colors; + + setValues(parameters: MaterialParameters): void; + toJSON(meta?: any): any; + clone(): this; + copy(source: this): this; + update(): void; + dispose(): void; + + /** + * @deprecated + */ + warpRGB: Color; +} + +export interface LineBasicMaterialParameters extends MaterialParameters { + color?: number|string; + linewidth?: number; + linecap?: string; + linejoin?: string; +} + +export class LineBasicMaterial extends Material { + constructor(parameters?: LineBasicMaterialParameters); + + color: Color; + linewidth: number; + linecap: string; + linejoin: string; + + setValues(parameters: LineBasicMaterialParameters): void; +} + +export interface LineDashedMaterialParameters extends MaterialParameters { + color?: number|string; + linewidth?: number; + scale?: number; + dashSize?: number; + gapSize?: number; +} + +export class LineDashedMaterial extends Material { + constructor(parameters?: LineDashedMaterialParameters); + + color: Color; + linewidth: number; + scale: number; + dashSize: number; + gapSize: number; + + setValues(parameters: LineDashedMaterialParameters): void; +} + +/** + * parameters is an object with one or more properties defining the material's appearance. + */ +export interface MeshBasicMaterialParameters extends MaterialParameters { + color?: number|string; + opacity?: number; + map?: Texture; + aoMap?: Texture; + aoMapIntensity?: number; + specularMap?: Texture; + alphaMap?: Texture; + envMap?: Texture; + combine?: Combine; + reflectivity?: number; + refractionRatio?: number; + shading?: Shading; + wireframe?: boolean; + wireframeLinewidth?: number; + wireframeLinecap?: string; + wireframeLinejoin?: string; + skinning?: boolean; + morphTargets?: boolean; +} + +export class MeshBasicMaterial extends Material { + constructor(parameters?: MeshBasicMaterialParameters); + + color: Color; + map: Texture; + aoMap: Texture; + aoMapIntensity: number; + specularMap: Texture; + alphaMap: Texture; + envMap: Texture; + combine: Combine; + reflectivity: number; + refractionRatio: number; + shading: Shading; + wireframe: boolean; + wireframeLinewidth: number; + wireframeLinecap: string; + wireframeLinejoin: string; + skinning: boolean; + morphTargets: boolean; + + setValues(parameters: MeshBasicMaterialParameters): void; +} + +export interface MeshDepthMaterialParameters extends MaterialParameters { + wireframe?: boolean; + wireframeLinewidth?: number; +} + +export class MeshDepthMaterial extends Material { + constructor(parameters?: MeshDepthMaterialParameters); + + wireframe: boolean; + wireframeLinewidth: number; + + setValues(parameters: MeshDepthMaterialParameters): void; +} + +export interface MeshLambertMaterialParameters extends MaterialParameters { + color?: number|string; + emissive?: number|string; + emissiveIntensity?: number; + emissiveMap?: Texture; + map?: Texture; + lighhtMap?: Texture; + lightMapIntensity?: number; + aoMap?: Texture; + aoMapIntensity?: number; + specularMap?: Texture; + alphaMap?: Texture; + envMap?: Texture; + combine?: Combine; + reflectivity?: number; + refractionRatio?: number; + wireframe?: boolean; + wireframeLinewidth?: number; + wireframeLinecap?: string; + wireframeLinejoin?: string; + skinning?: boolean; + morphTargets?: boolean; + morphNormals?: boolean; +} + +export class MeshLambertMaterial extends Material { + constructor(parameters?: MeshLambertMaterialParameters); + + color: Color; + emissive: Color; + emissiveIntensity: number; + emissiveMap: Texture; + map: Texture; + lighhtMap: Texture; + lightMapIntensity: number; + aoMap: Texture; + aoMapIntensity: number; + specularMap: Texture; + alphaMap: Texture; + envMap: Texture; + combine: Combine; + reflectivity: number; + refractionRatio: number; + wireframe: boolean; + wireframeLinewidth: number; + wireframeLinecap: string; + wireframeLinejoin: string; + skinning: boolean; + morphTargets: boolean; + morphNormals: boolean; + + setValues(parameters: MeshLambertMaterialParameters): void; +} + +export interface MeshStandardMaterialParameters extends MaterialParameters { + color?: number|string; + roughness?: number; + metalness?: number; + map?: Texture; + lighhtMap?: Texture; + lightMapIntensity?: number; + aoMap?: Texture; + aoMapIntensity?: number; + emissive?: Color; + emissiveIntensity?: number; + emissiveMap?: Texture; + bumpMap?: Texture; + bumpScale?: number; + normalMap?: Texture; + normalScale?: number; + displacementMap?: Texture; + displacementScale?: number; + displacementBias?: number; + roughnessMap?: Texture; + metalMap?: Texture; + alphaMap?: Texture; + envMap?: Texture; + envMapIntensity?: number; + refractionRatio?: number; + wireframe?: boolean; + wireframeLinewidth?: number; + skinning?: boolean; + morphTargets?: boolean; + morphNormals?: boolean; +} + +export class MeshStandardMaterial extends Material { + constructor(parameters?: MeshStandardMaterialParameters); + + defines: any; + color: Color; + roughness: number; + metalness: number; + map: Texture; + lighhtMap: Texture; + lightMapIntensity: number; + aoMap: Texture; + aoMapIntensity: number; + emissive: Color; + emissiveIntensity: number; + emissiveMap: Texture; + bumpMap: Texture; + bumpScale: number; + normalMap: Texture; + normalScale: number; + displacementMap: Texture; + displacementScale: number; + displacementBias: number; + roughnessMap: Texture; + metalMap: Texture; + alphaMap: Texture; + envMap: Texture; + envMapIntensity: number; + refractionRatio: number; + wireframe: boolean; + wireframeLinewidth: number; + skinning: boolean; + morphTargets: boolean; + morphNormals: boolean; + + setValues(parameters: MeshStandardMaterialParameters): void; +} + +export interface MeshNormalMaterialParameters extends MaterialParameters { + /** Render geometry as wireframe. Default is false (i.e. render as smooth shaded). */ + wireframe?: boolean; + /** Controls wireframe thickness. Default is 1. */ + wireframeLinewidth?: number; + morphTargets?: boolean; +} + +export class MeshNormalMaterial extends Material { + constructor(parameters?: MeshNormalMaterialParameters); + + wireframe: boolean; + wireframeLinewidth: number; + morphTargets: boolean; + + setValues(parameters: MeshNormalMaterialParameters): void; +} + +export interface MeshPhongMaterialParameters extends MaterialParameters { + /** geometry color in hexadecimal. Default is 0xffffff. */ + color?: number|string; + specular?: number; + shininess?: number; + opacity?: number; + map?: Texture; + lightMap?: Texture; + lightMapIntensity?: number; + aoMap?: Texture; + aoMapIntensity?: number; + emissive?: number; + emissiveIntensity?: number; + emissiveMap?: Texture; + bumpMap?: Texture; + bumpScale?: number; + normalMap?: Texture; + normalScale?: Vector2; + displacementMap?: Texture; + displacementScale?: number; + displacementBias?: number; + specularMap?: Texture; + alphaMap?: Texture; + envMap?: Texture; + combine?: Combine; + reflectivity?: number; + refractionRatio?: number; + wireframe?: boolean; + wireframeLinewidth?: number; + wireframeLinecap?: string; + wireframeLinejoin?: string; + skinning?: boolean; + morphTargets?: boolean; + morphNormals?: boolean; +} + +export class MeshPhongMaterial extends Material { + constructor(parameters?: MeshPhongMaterialParameters); + + color: Color; // diffuse + specular: Color; + shininess: number; + map: Texture; + lightMap: Texture; + lightMapIntensity: number; + aoMap: Texture; + aoMapIntensity: number; + emissive: Color; + emissiveIntensity: number; + emissiveMap: Texture; + bumpMap: Texture; + bumpScale: number; + normalMap: Texture; + normalScale: Vector2; + displacementMap: Texture; + displacementScale: number; + displacementBias: number; + specularMap: Texture; + alphaMap: Texture; + envMap: Texture; + combine: Combine; + reflectivity: number; + refractionRatio: number; + wireframe: boolean; + wireframeLinewidth: number; + wireframeLinecap: string; + wireframeLinejoin: string; + skinning: boolean; + morphTargets: boolean; + morphNormals: boolean; + /** + * @deprecated + */ + metal: boolean; + + setValues(parameters: MeshPhongMaterialParameters): void; +} + +export interface MeshPhysicalMaterialParameters extends MeshStandardMaterialParameters { + reflectivity?: number; + clearCoat?: number; + clearCoatRoughness?: number; +} + +export class MeshPhysicalMaterial extends MeshStandardMaterial { + constructor(parameters: MeshPhysicalMaterialParameters); + + defines: any; + reflectivity: number; + clearCoat: number; + clearCoatRoughness: number; +} + +// MultiMaterial does not inherit the Material class in the original code. However, it should treat as Material class. +// See tests/canvas/canvas_materials.ts. +export class MultiMaterial extends Material { + constructor(materials?: Material[]); + + materials: Material[]; + + toJSON(meta: any): any; +} + +/** + * @deprecated Use MultiMaterial instead. + */ +export class MeshFaceMaterial extends MultiMaterial {} + +export interface PointsMaterialParameters extends MaterialParameters { + color?: number|string; + map?: Texture; + size?: number; + sizeAttenuation?: boolean; +} + +export class PointsMaterial extends Material { + constructor(parameters?: PointsMaterialParameters); + + color: Color; + map: Texture; + size: number; + sizeAttenuation: boolean; + + setValues(parameters: PointsMaterialParameters): void; +} + +/** + * @deprecated + */ +export class PointCloudMaterial extends PointsMaterial {} +/** + * @deprecated + */ +export class ParticleBasicMaterial extends PointsMaterial {} +/** + * @deprecated + */ +export class ParticleSystemMaterial extends PointsMaterial {} + +export interface ShaderMaterialParameters extends MaterialParameters { + defines?: any; + uniforms?: any; + vertexShader?: string; + fragmentShader?: string; + lineWidth?: number; + wireframe?: boolean; + wireframeLinewidth?: number; + lights?: boolean; + clipping?: boolean; + skinning?: boolean; + morphTargets?: boolean; + morphNormals?: boolean; +} + +export class ShaderMaterial extends Material { + constructor(parameters?: ShaderMaterialParameters); + + defines: any; + uniforms: { [uniform: string]: IUniform }; + vertexShader: string; + fragmentShader: string; + linewidth: number; + wireframe: boolean; + wireframeLinewidth: number; + lights: boolean; + clipping: boolean; + skinning: boolean; + morphTargets: boolean; + morphNormals: boolean; + /** + * @deprecated Use extensions.derivatives instead. + */ + derivatives: any; + extensions: { derivatives: boolean; fragDepth: boolean; drawBuffers: boolean; shaderTextureLOD: boolean }; + defaultAttributeValues: any; + index0AttributeName: string; + + setValues(parameters: ShaderMaterialParameters): void; + toJSON(meta: any): any; +} + +export class RawShaderMaterial extends ShaderMaterial { + constructor(parameters?: ShaderMaterialParameters); +} + +export interface SpriteMaterialParameters extends MaterialParameters { + color?: number|string; + map?: Texture; + rotation?: number; +} + +export class SpriteMaterial extends Material { + constructor(parameters?: SpriteMaterialParameters); + + color: Color; + map: Texture; + rotation: number; + + setValues(parameters: SpriteMaterialParameters): void; +} + +export class ShadowMaterial extends ShaderMaterial { + constructor(parameters?: ShaderMaterialParameters); +} + +// Math ////////////////////////////////////////////////////////////////////////////////// + +export class Box2 { + constructor(min?: Vector2, max?: Vector2); + + max: Vector2; + min: Vector2; + + set(min: Vector2, max: Vector2): Box2; + setFromPoints(points: Vector2[]): Box2; + setFromCenterAndSize(center: Vector2, size: Vector2): Box2; + clone(): this; + copy(box: this): this; + makeEmpty(): Box2; + isEmpty(): boolean; + getCenter(optionalTarget?: Vector2): Vector2; + getSize(optionalTarget?: Vector2): Vector2; + expandByPoint(point: Vector2): Box2; + expandByVector(vector: Vector2): Box2; + expandByScalar(scalar: number): Box2; + containsPoint(point: Vector2): boolean; + containsBox(box: Box2): boolean; + getParameter(point: Vector2): Vector2; + intersectsBox(box: Box2): boolean; + clampPoint(point: Vector2, optionalTarget?: Vector2): Vector2; + distanceToPoint(point: Vector2): number; + intersect(box: Box2): Box2; + union(box: Box2): Box2; + translate(offset: Vector2): Box2; + equals(box: Box2): boolean; + /** + * @deprecated Use isEmpty() instead. + */ + empty(): any; + /** + * @deprecated Use intersectsBox() instead. + */ + isIntersectionBox(b: any): any; +} + +export class Box3 { + constructor(min?: Vector3, max?: Vector3); + + max: Vector3; + min: Vector3; + + set(min: Vector3, max: Vector3): Box3; + setFromArray(array: ArrayLike): Box3; + setFromPoints(points: Vector3[]): Box3; + setFromCenterAndSize(center: Vector3, size: Vector3): Box3; + setFromObject(object: Object3D): Box3; + clone(): this; + copy(box: this): this; + makeEmpty(): Box3; + isEmpty(): boolean; + getCenter(optionalTarget?: Vector3): Vector3; + getSize(optionalTarget?: Vector3): Vector3; + expandByPoint(point: Vector3): Box3; + expandByVector(vector: Vector3): Box3; + expandByScalar(scalar: number): Box3; + expandByObject(object: Object3D): Box3; + containsPoint(point: Vector3): boolean; + containsBox(box: Box3): boolean; + getParameter(point: Vector3): Vector3; + intersectsBox(box: Box3): boolean; + intersectsSphere(sphere: Sphere): boolean; + intersectsPlane(plane: Plane): boolean; + clampPoint(point: Vector3, optionalTarget?: Vector3): Vector3; + distanceToPoint(point: Vector3): number; + getBoundingSphere(optionalTarget?: Sphere): Sphere; + intersect(box: Box3): Box3; + union(box: Box3): Box3; + applyMatrix4(matrix: Matrix4): Box3; + translate(offset: Vector3): Box3; + equals(box: Box3): boolean; + /** + * @deprecated Use isEmpty() instead. + */ + empty(): any; + /** + * @deprecated Use intersectsBox() instead. + */ + isIntersectionBox(b: any): any; + /** + * @deprecated Use intersectsSphere() instead. + */ + isIntersectionSphere(s: any): any; +} + +export interface HSL { + h: number; + s: number; + l: number; +} + +/** + * Represents a color. See also {@link ColorUtils}. + * + * @example + * var color = new THREE.Color( 0xff0000 ); + * + * @see src/math/Color.js + */ +export class Color { + constructor(color?: Color); + constructor(color?: string); + constructor(color?: number); + constructor(r: number, g: number, b: number); + + /** + * Red channel value between 0 and 1. Default is 1. + */ + r: number; + + /** + * Green channel value between 0 and 1. Default is 1. + */ + g: number; + + /** + * Blue channel value between 0 and 1. Default is 1. + */ + b: number; + + set(color: Color): Color; + set(color: number): Color; + set(color: string): Color; + setScalar(scalar: number): Color; + setHex(hex: number): Color; + + /** + * Sets this color from RGB values. + * @param r Red channel value between 0 and 1. + * @param g Green channel value between 0 and 1. + * @param b Blue channel value between 0 and 1. + */ + setRGB(r: number, g: number, b: number): Color; + + /** + * Sets this color from HSL values. + * Based on MochiKit implementation by Bob Ippolito. + * + * @param h Hue channel value between 0 and 1. + * @param s Saturation value channel between 0 and 1. + * @param l Value channel value between 0 and 1. + */ + setHSL(h: number, s: number, l: number): Color; + + /** + * Sets this color from a CSS context style string. + * @param contextStyle Color in CSS context style format. + */ + setStyle(style: string): Color; + + /** + * Clones this color. + */ + clone(): this; + + /** + * Copies given color. + * @param color Color to copy. + */ + copy(color: this): this; + + /** + * Copies given color making conversion from gamma to linear space. + * @param color Color to copy. + */ + copyGammaToLinear(color: Color, gammaFactor?: number): Color; + + /** + * Copies given color making conversion from linear to gamma space. + * @param color Color to copy. + */ + copyLinearToGamma(color: Color, gammaFactor?: number): Color; + + /** + * Converts this color from gamma to linear space. + */ + convertGammaToLinear(): Color; + + /** + * Converts this color from linear to gamma space. + */ + convertLinearToGamma(): Color; + + /** + * Returns the hexadecimal value of this color. + */ + getHex(): number; + + /** + * Returns the string formated hexadecimal value of this color. + */ + getHexString(): string; + + getHSL(): HSL; + + /** + * Returns the value of this color in CSS context style. + * Example: rgb(r, g, b) + */ + getStyle(): string; + + offsetHSL(h: number, s: number, l: number): Color; + + add(color: Color): Color; + addColors(color1: Color, color2: Color): Color; + addScalar(s: number): Color; + sub(color: Color): Color; + multiply(color: Color): Color; + multiplyScalar(s: number): Color; + lerp(color: Color, alpha: number): Color; + equals(color: Color): boolean; + fromArray(rgb: number[], offset?: number): Color; + toArray(array?: number[], offset?: number): number[]; +} + +export namespace ColorKeywords { + export const aliceblue: number; + export const antiquewhite: number; + export const aqua: number; + export const aquamarine: number; + export const azure: number; + export const beige: number; + export const bisque: number; + export const black: number; + export const blanchedalmond: number; + export const blue: number; + export const blueviolet: number; + export const brown: number; + export const burlywood: number; + export const cadetblue: number; + export const chartreuse: number; + export const chocolate: number; + export const coral: number; + export const cornflowerblue: number; + export const cornsilk: number; + export const crimson: number; + export const cyan: number; + export const darkblue: number; + export const darkcyan: number; + export const darkgoldenrod: number; + export const darkgray: number; + export const darkgreen: number; + export const darkgrey: number; + export const darkkhaki: number; + export const darkmagenta: number; + export const darkolivegreen: number; + export const darkorange: number; + export const darkorchid: number; + export const darkred: number; + export const darksalmon: number; + export const darkseagreen: number; + export const darkslateblue: number; + export const darkslategray: number; + export const darkslategrey: number; + export const darkturquoise: number; + export const darkviolet: number; + export const deeppink: number; + export const deepskyblue: number; + export const dimgray: number; + export const dimgrey: number; + export const dodgerblue: number; + export const firebrick: number; + export const floralwhite: number; + export const forestgreen: number; + export const fuchsia: number; + export const gainsboro: number; + export const ghostwhite: number; + export const gold: number; + export const goldenrod: number; + export const gray: number; + export const green: number; + export const greenyellow: number; + export const grey: number; + export const honeydew: number; + export const hotpink: number; + export const indianred: number; + export const indigo: number; + export const ivory: number; + export const khaki: number; + export const lavender: number; + export const lavenderblush: number; + export const lawngreen: number; + export const lemonchiffon: number; + export const lightblue: number; + export const lightcoral: number; + export const lightcyan: number; + export const lightgoldenrodyellow: number; + export const lightgray: number; + export const lightgreen: number; + export const lightgrey: number; + export const lightpink: number; + export const lightsalmon: number; + export const lightseagreen: number; + export const lightskyblue: number; + export const lightslategray: number; + export const lightslategrey: number; + export const lightsteelblue: number; + export const lightyellow: number; + export const lime: number; + export const limegreen: number; + export const linen: number; + export const magenta: number; + export const maroon: number; + export const mediumaquamarine: number; + export const mediumblue: number; + export const mediumorchid: number; + export const mediumpurple: number; + export const mediumseagreen: number; + export const mediumslateblue: number; + export const mediumspringgreen: number; + export const mediumturquoise: number; + export const mediumvioletred: number; + export const midnightblue: number; + export const mintcream: number; + export const mistyrose: number; + export const moccasin: number; + export const navajowhite: number; + export const navy: number; + export const oldlace: number; + export const olive: number; + export const olivedrab: number; + export const orange: number; + export const orangered: number; + export const orchid: number; + export const palegoldenrod: number; + export const palegreen: number; + export const paleturquoise: number; + export const palevioletred: number; + export const papayawhip: number; + export const peachpuff: number; + export const peru: number; + export const pink: number; + export const plum: number; + export const powderblue: number; + export const purple: number; + export const red: number; + export const rosybrown: number; + export const royalblue: number; + export const saddlebrown: number; + export const salmon: number; + export const sandybrown: number; + export const seagreen: number; + export const seashell: number; + export const sienna: number; + export const silver: number; + export const skyblue: number; + export const slateblue: number; + export const slategray: number; + export const slategrey: number; + export const snow: number; + export const springgreen: number; + export const steelblue: number; + export const tan: number; + export const teal: number; + export const thistle: number; + export const tomato: number; + export const turquoise: number; + export const violet: number; + export const wheat: number; + export const white: number; + export const whitesmoke: number; + export const yellow: number; + export const yellowgreen: number; +} + +export class Euler { + constructor(x?: number, y?: number, z?: number, order?: string); + + x: number; + y: number; + z: number; + order: string; + onChangeCallback: Function; + + set(x: number, y: number, z: number, order?: string): Euler; + clone(): this; + copy(euler: this): this; + setFromRotationMatrix(m: Matrix4, order?: string, update?: boolean): Euler; + setFromQuaternion(q: Quaternion, order?: string, update?: boolean): Euler; + setFromVector3( v: Vector3, order?: string ): Euler; + reorder(newOrder: string): Euler; + equals(euler: Euler): boolean; + fromArray(xyzo: any[]): Euler; + toArray(array?: number[], offset?: number): number[]; + toVector3(optionalResult?: Vector3): Vector3; + onChange(callback: Function): void; + + static RotationOrders: string[]; + static DefaultOrder: string; +} + +/** + * Frustums are used to determine what is inside the camera's field of view. They help speed up the rendering process. + */ +export class Frustum { + constructor(p0?: Plane, p1?: Plane, p2?: Plane, p3?: Plane, p4?: Plane, p5?: Plane); + + /** + * Array of 6 vectors. + */ + planes: Plane[]; + + set(p0?: number, p1?: number, p2?: number, p3?: number, p4?: number, p5?: number): Frustum; + clone(): this; + copy(frustum: this): this; + setFromMatrix(m: Matrix4): Frustum; + intersectsObject(object: Object3D): boolean; + intersectsObject(sprite: Sprite): boolean; + intersectsSphere(sphere: Sphere): boolean; + intersectsBox(box: Box3): boolean; + containsPoint(point: Vector3): boolean; +} + +export class Line3 { + constructor(start?: Vector3, end?: Vector3); + + start: Vector3; + end: Vector3; + + set(start?: Vector3, end?: Vector3): Line3; + clone(): this; + copy(line: this): this; + getCenter(optionalTarget?: Vector3): Vector3; + delta(optionalTarget?: Vector3): Vector3; + distanceSq(): number; + distance(): number; + at(t: number, optionalTarget?: Vector3): Vector3; + closestPointToPointParameter(point: Vector3, clampToLine?: boolean): number; + closestPointToPoint(point: Vector3, clampToLine?: boolean, optionalTarget?: Vector3): Vector3; + applyMatrix4(matrix: Matrix4): Line3; + equals(line: Line3): boolean; +} + +/** + * + * @see src/math/Math.js + */ +export namespace Math { + export const DEG2RAD: number; + export const RAD2DEG: number; + + export function generateUUID(): string; + + /** + * Clamps the x to be between a and b. + * + * @param value Value to be clamped. + * @param min Minimum value + * @param max Maximum value. + */ + export function clamp(value: number, min: number, max: number): number; + export function euclideanModulo( n: number, m: number ): number; + + /** + * Linear mapping of x from range [a1, a2] to range [b1, b2]. + * + * @param x Value to be mapped. + * @param a1 Minimum value for range A. + * @param a2 Maximum value for range A. + * @param b1 Minimum value for range B. + * @param b2 Maximum value for range B. + */ + export function mapLinear(x: number, a1: number, a2: number, b1: number, b2: number): number; + + export function smoothstep(x: number, min: number, max: number): number; + + export function smootherstep(x: number, min: number, max: number): number; + + /** + * Random float from 0 to 1 with 16 bits of randomness. + * Standard Math.random() creates repetitive patterns when applied over larger space. + * @deprecated Use Math.random() + */ + export function random16(): number; + + /** + * Random integer from low to high interval. + */ + export function randInt(low: number, high: number): number; + + /** + * Random float from low to high interval. + */ + export function randFloat(low: number, high: number): number; + + /** + * Random float from - range / 2 to range / 2 interval. + */ + export function randFloatSpread(range: number): number; + + export function degToRad(degrees: number): number; + + export function radToDeg(radians: number): number; + + export function isPowerOfTwo(value: number): boolean; + + export function nearestPowerOfTwo(value: number): number; + + export function nextPowerOfTwo(value: number): number; +} + +/** + * ( interface Matrix<T> ) + */ +export interface Matrix { + /** + * Float32Array with matrix values. + */ + elements: Float32Array; + + /** + * identity():T; + */ + identity(): Matrix; + + /** + * copy(m:T):T; + */ + copy(m: this): this; + + /** + * multiplyScalar(s:number):T; + */ + multiplyScalar(s: number): Matrix; + + determinant(): number; + + /** + * getInverse(matrix:T, throwOnInvertible?:boolean):T; + */ + getInverse(matrix: Matrix, throwOnInvertible?: boolean): Matrix; + + /** + * transpose():T; + */ + transpose(): Matrix; + + /** + * clone():T; + */ + clone(): this; +} + +/** + * ( class Matrix3 implements Matrix<Matrix3> ) + */ +export class Matrix3 implements Matrix { + /** + * Creates an identity matrix. + */ + constructor(); + + /** + * Float32Array with matrix values. + */ + elements: Float32Array; + + set(n11: number, n12: number, n13: number, n21: number, n22: number, n23: number, n31: number, n32: number, n33: number): Matrix3; + identity(): Matrix3; + clone(): this; + copy(m: this): this; + setFromMatrix4(m: Matrix4): Matrix3; + applyToBuffer(buffer: BufferAttribute, offset?: number, length?: number): BufferAttribute; + multiplyScalar(s: number): Matrix3; + determinant(): number; + getInverse(matrix: Matrix3, throwOnDegenerate?: boolean): Matrix3; + + /** + * Transposes this matrix in place. + */ + transpose(): Matrix3; + getNormalMatrix(matrix4: Matrix4): Matrix3; + + /** + * Transposes this matrix into the supplied array r, and returns itself. + */ + transposeIntoArray(r: number[]): number[]; + fromArray(array: number[], offset?: number): Matrix3; + toArray(): number[]; + + /** + * @deprecated + */ + multiplyVector3(vector: Vector3): any; + multiplyVector3Array(a: any): any; + getInverse(matrix: Matrix4, throwOnDegenerate?: boolean): Matrix3; + flattenToArrayOffset(array: number[], offset: number): number[]; +} + +/** + * A 4x4 Matrix. + * + * @example + * // Simple rig for rotating around 3 axes + * var m = new THREE.Matrix4(); + * var m1 = new THREE.Matrix4(); + * var m2 = new THREE.Matrix4(); + * var m3 = new THREE.Matrix4(); + * var alpha = 0; + * var beta = Math.PI; + * var gamma = Math.PI/2; + * m1.makeRotationX( alpha ); + * m2.makeRotationY( beta ); + * m3.makeRotationZ( gamma ); + * m.multiplyMatrices( m1, m2 ); + * m.multiply( m3 ); + */ +export class Matrix4 implements Matrix { + constructor(); + + /** + * Float32Array with matrix values. + */ + elements: Float32Array; + + /** + * Sets all fields of this matrix. + */ + set(n11: number, n12: number, n13: number, n14: number, n21: number, n22: number, n23: number, n24: number, n31: number, n32: number, n33: number, n34: number, n41: number, n42: number, n43: number, n44: number): Matrix4; + + /** + * Resets this matrix to identity. + */ + identity(): Matrix4; + clone(): this; + copy(m: this): this; + copyPosition(m: Matrix4): Matrix4; + extractBasis( xAxis: Vector3, yAxis: Vector3, zAxis: Vector3): Matrix4; + makeBasis( xAxis: Vector3, yAxis: Vector3, zAxis: Vector3): Matrix4; + + /** + * Copies the rotation component of the supplied matrix m into this matrix rotation component. + */ + extractRotation(m: Matrix4): Matrix4; + makeRotationFromEuler(euler: Euler): Matrix4; + makeRotationFromQuaternion(q: Quaternion): Matrix4; + /** + * Constructs a rotation matrix, looking from eye towards center with defined up vector. + */ + lookAt(eye: Vector3, target: Vector3, up: Vector3): Matrix4; + + /** + * Multiplies this matrix by m. + */ + multiply(m: Matrix4): Matrix4; + + premultiply(m: Matrix4): Matrix4; + + /** + * Sets this matrix to a x b. + */ + multiplyMatrices(a: Matrix4, b: Matrix4): Matrix4; + + /** + * Sets this matrix to a x b and stores the result into the flat array r. + * r can be either a regular Array or a TypedArray. + */ + multiplyToArray(a: Matrix4, b: Matrix4, r: number[]): Matrix4; + + /** + * Multiplies this matrix by s. + */ + multiplyScalar(s: number): Matrix4; + applyToBuffer( buffer: BufferAttribute, offset?: number, length?: number): BufferAttribute; + /** + * Computes determinant of this matrix. + * Based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm + */ + determinant(): number; + + /** + * Transposes this matrix. + */ + transpose(): Matrix4; + + + + /** + * Sets the position component for this matrix from vector v. + */ + setPosition(v: Vector3): Matrix4; + + + /** + * Sets this matrix to the inverse of matrix m. + * Based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm. + */ + getInverse(m: Matrix4, throwOnDegeneratee?: boolean): Matrix4; + + /** + * Multiplies the columns of this matrix by vector v. + */ + scale(v: Vector3): Matrix4; + + getMaxScaleOnAxis(): number; + /** + * Sets this matrix as translation transform. + */ + makeTranslation(x: number, y: number, z: number): Matrix4; + + /** + * Sets this matrix as rotation transform around x axis by theta radians. + * + * @param theta Rotation angle in radians. + */ + makeRotationX(theta: number): Matrix4; + + /** + * Sets this matrix as rotation transform around y axis by theta radians. + * + * @param theta Rotation angle in radians. + */ + makeRotationY(theta: number): Matrix4; + + /** + * Sets this matrix as rotation transform around z axis by theta radians. + * + * @param theta Rotation angle in radians. + */ + makeRotationZ(theta: number): Matrix4; + + /** + * Sets this matrix as rotation transform around axis by angle radians. + * Based on http://www.gamedev.net/reference/articles/article1199.asp. + * + * @param axis Rotation axis. + * @param theta Rotation angle in radians. + */ + makeRotationAxis(axis: Vector3, angle: number): Matrix4; + + /** + * Sets this matrix as scale transform. + */ + makeScale(x: number, y: number, z: number): Matrix4; + + /** + * Sets this matrix to the transformation composed of translation, rotation and scale. + */ + compose(translation: Vector3, rotation: Quaternion, scale: Vector3): Matrix4; + + /** + * Decomposes this matrix into the translation, rotation and scale components. + * If parameters are not passed, new instances will be created. + */ + decompose(translation?: Vector3, rotation?: Quaternion, scale?: Vector3): Object[]; // [Vector3, Quaternion, Vector3] + + /** + * Creates a frustum matrix. + */ + makePerspective(left: number, right: number, bottom: number, top: number, near: number, far: number): Matrix4; + + /** + * Creates a perspective projection matrix. + */ + makePerspective(fov: number, aspect: number, near: number, far: number): Matrix4; + + /** + * Creates an orthographic projection matrix. + */ + makeOrthographic(left: number, right: number, top: number, bottom: number, near: number, far: number): Matrix4; + equals( matrix: Matrix4 ): boolean; + fromArray(array: number[], offset?: number): Matrix4; + toArray(): number[]; + + /** + * @deprecated + */ + extractPosition(m: Matrix4): Matrix4; + setRotationFromQuaternion(q: Quaternion): Matrix4; + multiplyVector3(v: any): any; + multiplyVector4(v: any): any; + multiplyVector3Array(array: number[]): number[]; + rotateAxis(v: any): void; + crossVector(v: any): void; + flattenToArrayOffset(array: number[], offset: number): number[]; +} + +export class Plane { + constructor(normal?: Vector3, constant?: number); + + normal: Vector3; + constant: number; + + set(normal: Vector3, constant: number): Plane; + setComponents(x: number, y: number, z: number, w: number): Plane; + setFromNormalAndCoplanarPoint(normal: Vector3, point: Vector3): Plane; + setFromCoplanarPoints(a: Vector3, b: Vector3, c: Vector3): Plane; + clone(): this; + copy(plane: this): this; + normalize(): Plane; + negate(): Plane; + distanceToPoint(point: Vector3): number; + distanceToSphere(sphere: Sphere): number; + projectPoint(point: Vector3, optionalTarget?: Vector3): Vector3; + orthoPoint(point: Vector3, optionalTarget?: Vector3): Vector3; + intersectLine(line: Line3, optionalTarget?: Vector3): Vector3; + intersectsLine(line: Line3): boolean; + intersectsBox(box: Box3): boolean; + coplanarPoint(optionalTarget?: boolean): Vector3; + applyMatrix4(matrix: Matrix4, optionalNormalMatrix?: Matrix3): Plane; + translate(offset: Vector3): Plane; + equals(plane: Plane): boolean; + + /** + * @deprecated + */ + isIntersectionLine(l: any): any; +} + +export class Spherical { + constructor(radius?: number, phi?: number, theta?: number); + + radius: number; + phi: number; + theta: number; + + set(radius: number, phi: number, theta: number): Spherical; + clone(): this; + copy(other: this): this; + makeSafe(): void; + setFromVector3(vec3: Vector3): Spherical; +} + +/** + * Implementation of a quaternion. This is used for rotating things without incurring in the dreaded gimbal lock issue, amongst other advantages. + * + * @example + * var quaternion = new THREE.Quaternion(); + * quaternion.setFromAxisAngle( new THREE.Vector3( 0, 1, 0 ), Math.PI / 2 ); + * var vector = new THREE.Vector3( 1, 0, 0 ); + * vector.applyQuaternion( quaternion ); + */ +export class Quaternion { + /** + * @param x x coordinate + * @param y y coordinate + * @param z z coordinate + * @param w w coordinate + */ + constructor(x?: number, y?: number, z?: number, w?: number); + + x: number; + y: number; + z: number; + w: number; + + /** + * Sets values of this quaternion. + */ + set(x: number, y: number, z: number, w: number): Quaternion; + + /** + * Clones this quaternion. + */ + clone(): this; + + /** + * Copies values of q to this quaternion. + */ + copy(q: this): this; + + /** + * Sets this quaternion from rotation specified by Euler angles. + */ + setFromEuler(euler: Euler, update?: boolean): Quaternion; + + /** + * Sets this quaternion from rotation specified by axis and angle. + * Adapted from http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm. + * Axis have to be normalized, angle is in radians. + */ + setFromAxisAngle(axis: Vector3, angle: number): Quaternion; + + /** + * Sets this quaternion from rotation component of m. Adapted from http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm. + */ + setFromRotationMatrix(m: Matrix4): Quaternion; + setFromUnitVectors(vFrom: Vector3, vTo: Vector3): Quaternion; + /** + * Inverts this quaternion. + */ + inverse(): Quaternion; + + conjugate(): Quaternion; + dot(v: Quaternion): number; + lengthSq(): number; + + /** + * Computes length of this quaternion. + */ + length(): number; + + /** + * Normalizes this quaternion. + */ + normalize(): Quaternion; + + /** + * Multiplies this quaternion by b. + */ + multiply(q: Quaternion): Quaternion; + premultiply(q: Quaternion): Quaternion; + + /** + * Sets this quaternion to a x b + * Adapted from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm. + */ + multiplyQuaternions(a: Quaternion, b: Quaternion): Quaternion; + + + slerp(qb: Quaternion, t: number): Quaternion; + equals(v: Quaternion): boolean; + fromArray(n: number[]): Quaternion; + toArray(): number[]; + + fromArray(xyzw: number[], offset?: number): Quaternion; + toArray(xyzw?: number[], offset?: number): number[]; + + onChange(callback: Function): Quaternion; + onChangeCallback: Function; + + /** + * Adapted from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/. + */ + static slerp(qa: Quaternion, qb: Quaternion, qm: Quaternion, t: number): Quaternion; + + static slerpFlat(dst: number[], dstOffset: number, src0: number[], srcOffset: number, src1: number[], stcOffset1: number, t: number): Quaternion; + + /** + * @deprecated + */ + multiplyVector3(v: any): any; +} + +export class Ray { + constructor(origin?: Vector3, direction?: Vector3); + + origin: Vector3; + direction: Vector3; + + set(origin: Vector3, direction: Vector3): Ray; + clone(): this; + copy(ray: this): this; + at(t: number, optionalTarget?: Vector3): Vector3; + lookAt(v: Vector3): Vector3; + recast(t: number): Ray; + closestPointToPoint(point: Vector3, optionalTarget?: Vector3): Vector3; + distanceToPoint(point: Vector3): number; + distanceSqToPoint(point: Vector3): number; + distanceSqToSegment(v0: Vector3, v1: Vector3, optionalPointOnRay?: Vector3, optionalPointOnSegment?: Vector3): number; + intersectSphere(sphere: Sphere, optionalTarget?: Vector3): Vector3; + intersectsSphere(sphere: Sphere): boolean; + distanceToPlane(plane: Plane): number; + intersectPlane(plane: Plane, optionalTarget?: Vector3): Vector3; + intersectsPlane(plane: Plane): boolean; + intersectBox(box: Box3, optionalTarget?: Vector3): Vector3; + intersectsBox(box: Box3): boolean; + intersectTriangle(a: Vector3, b: Vector3, c: Vector3, backfaceCulling: boolean, optionalTarget?: Vector3): Vector3; + applyMatrix4(matrix4: Matrix4): Ray; + equals(ray: Ray): boolean; + + /** + * @deprecated + */ + isIntersectionBox(b: any): any; + isIntersectionPlane(p: any): any; + isIntersectionSphere(s: any): any; +} + +export class Sphere { + constructor(center?: Vector3, radius?: number); + + center: Vector3; + radius: number; + + set(center: Vector3, radius: number): Sphere; + setFromPoints(points: Vector3[], optionalCenter?: Vector3): Sphere; + clone(): this; + copy(sphere: this): this; + empty(): boolean; + containsPoint(point: Vector3): boolean; + distanceToPoint(point: Vector3): number; + intersectsSphere(sphere: Sphere): boolean; + intersectsBox(box: Box3): boolean; + intersectsPlane(plane: Plane): boolean; + clampPoint(point: Vector3, optionalTarget?: Vector3): Vector3; + getBoundingBox(optionalTarget?: Box3): Box3; + applyMatrix4(matrix: Matrix4): Sphere; + translate(offset: Vector3): Sphere; + equals(sphere: Sphere): boolean; +} + +export interface SplineControlPoint { + x: number; + y: number; + z: number; +} + +export class Triangle { + constructor(a?: Vector3, b?: Vector3, c?: Vector3); + + a: Vector3; + b: Vector3; + c: Vector3; + + set(a: Vector3, b: Vector3, c: Vector3): Triangle; + setFromPointsAndIndices(points: Vector3[], i0: number, i1: number, i2: number): Triangle; + clone(): this; + copy(triangle: this): this; + area(): number; + midpoint(optionalTarget?: Vector3): Vector3; + normal(optionalTarget?: Vector3): Vector3; + plane(optionalTarget?: Vector3): Plane; + barycoordFromPoint(point: Vector3, optionalTarget?: Vector3): Vector3; + containsPoint(point: Vector3): boolean; + closestPointToPoint(): Vector3; + equals(triangle: Triangle): boolean; + + static normal(a: Vector3, b: Vector3, c: Vector3, optionalTarget?: Vector3): Vector3; + static barycoordFromPoint(point: Vector3, a: Vector3, b: Vector3, c: Vector3, optionalTarget: Vector3): Vector3; + static containsPoint(point: Vector3, a: Vector3, b: Vector3, c: Vector3): boolean; +} + +/** + * ( interface Vector<T> ) + * + * Abstract interface of Vector2, Vector3 and Vector4. + * Currently the members of Vector is NOT type safe because it accepts different typed vectors. + * Those definitions will be changed when TypeScript innovates Generics to be type safe. + * + * @example + * var v:THREE.Vector = new THREE.Vector3(); + * v.addVectors(new THREE.Vector2(0, 1), new THREE.Vector2(2, 3)); // invalid but compiled successfully + */ +export interface Vector { + setComponent(index: number, value: number): void; + + getComponent(index: number): number; + + /** + * copy(v:T):T; + */ + copy(v: this): this; + + /** + * add(v:T):T; + */ + add(v: Vector): Vector; + + /** + * addVectors(a:T, b:T):T; + */ + addVectors(a: Vector, b: Vector): Vector; + + /** + * sub(v:T):T; + */ + sub(v: Vector): Vector; + + /** + * subVectors(a:T, b:T):T; + */ + subVectors(a: Vector, b: Vector): Vector; + + /** + * multiplyScalar(s:number):T; + */ + multiplyScalar(s: number): Vector; + + /** + * divideScalar(s:number):T; + */ + divideScalar(s: number): Vector; + + /** + * negate():T; + */ + negate(): Vector; + + /** + * dot(v:T):T; + */ + dot(v: Vector): number; + + /** + * lengthSq():number; + */ + lengthSq(): number; + + /** + * length():number; + */ + length(): number; + + /** + * normalize():T; + */ + normalize(): Vector; + + /** + * NOTE: Vector4 doesn't have the property. + * + * distanceTo(v:T):number; + */ + distanceTo?(v: Vector): number; + + /** + * NOTE: Vector4 doesn't have the property. + * + * distanceToSquared(v:T):number; + */ + distanceToSquared?(v: Vector): number; + + /** + * setLength(l:number):T; + */ + setLength(l: number): Vector; + + /** + * lerp(v:T, alpha:number):T; + */ + lerp(v: Vector, alpha: number): Vector; + + /** + * equals(v:T):boolean; + */ + equals(v: Vector): boolean; + + /** + * clone():T; + */ + clone(): this; +} + +/** + * 2D vector. + * + * ( class Vector2 implements Vector ) + */ +export class Vector2 implements Vector { + constructor(x?: number, y?: number); + + x: number; + y: number; + width: number; + height: number; + + /** + * Sets value of this vector. + */ + set(x: number, y: number): Vector2; + + setScalar(scalar: number): Vector2; + + /** + * Sets X component of this vector. + */ + setX(x: number): Vector2; + + /** + * Sets Y component of this vector. + */ + setY(y: number): Vector2; + + /** + * Sets a component of this vector. + */ + setComponent(index: number, value: number): void; + + /** + * Gets a component of this vector. + */ + getComponent(index: number): number; + /** + * Clones this vector. + */ + clone(): this; + /** + * Copies value of v to this vector. + */ + copy(v: this): this; + + /** + * Adds v to this vector. + */ + add(v: Vector2): Vector2; + + /** + * Sets this vector to a + b. + */ + addScalar(s: number): Vector2; + addVectors(a: Vector2, b: Vector2): Vector2; + addScaledVector( v: Vector2, s: number ): Vector2; + /** + * Subtracts v from this vector. + */ + sub(v: Vector2): Vector2; + + /** + * Sets this vector to a - b. + */ + subVectors(a: Vector2, b: Vector2): Vector2; + + multiply(v: Vector2): Vector2; + /** + * Multiplies this vector by scalar s. + */ + multiplyScalar(scalar: number): Vector2; + + divide(v: Vector2): Vector2; + /** + * Divides this vector by scalar s. + * Set vector to ( 0, 0 ) if s == 0. + */ + divideScalar(s: number): Vector2; + + min(v: Vector2): Vector2; + + max(v: Vector2): Vector2; + clamp(min: Vector2, max: Vector2): Vector2; + clampScalar(min: number, max: number): Vector2; + clampLength(min: number, max: number): Vector2; + floor(): Vector2; + ceil(): Vector2; + round(): Vector2; + roundToZero(): Vector2; + + /** + * Inverts this vector. + */ + negate(): Vector2; + + /** + * Computes dot product of this vector and v. + */ + dot(v: Vector2): number; + + /** + * Computes squared length of this vector. + */ + lengthSq(): number; + + /** + * Computes length of this vector. + */ + length(): number; + lengthManhattan(): number; + + /** + * Normalizes this vector. + */ + normalize(): Vector2; + + /** + * computes the angle in radians with respect to the positive x-axis + */ + angle(): number; + + /** + * Computes distance of this vector to v. + */ + distanceTo(v: Vector2): number; + + /** + * Computes squared distance of this vector to v. + */ + distanceToSquared(v: Vector2): number; + distanceToManhattan(v: Vector2): number; + + /** + * Normalizes this vector and multiplies it by l. + */ + setLength(length: number): Vector2; + + lerp(v: Vector2, alpha: number): Vector2; + + lerpVectors(v1: Vector2, v2: Vector2, alpha: number): Vector2; + + /** + * Checks for strict equality of this vector and v. + */ + equals(v: Vector2): boolean; + + fromArray(xy: number[], offset?: number): Vector2; + + toArray(xy?: number[], offset?: number): number[]; + + fromBufferAttribute( attribute: BufferAttribute, index: number, offset?: number): Vector2; + + rotateAround( center: Vector2, angle: number ): Vector2; +} + +/** + * 3D vector. + * + * @example + * var a = new THREE.Vector3( 1, 0, 0 ); + * var b = new THREE.Vector3( 0, 1, 0 ); + * var c = new THREE.Vector3(); + * c.crossVectors( a, b ); + * + * @see src/math/Vector3.js + * + * ( class Vector3 implements Vector ) + */ +export class Vector3 implements Vector { + constructor(x?: number, y?: number, z?: number); + + x: number; + y: number; + z: number; + + /** + * Sets value of this vector. + */ + set(x: number, y: number, z: number): Vector3; + + /** + * Sets all values of this vector. + */ + setScalar(scalar: number): Vector3; + + /** + * Sets x value of this vector. + */ + setX(x: number): Vector3; + + /** + * Sets y value of this vector. + */ + setY(y: number): Vector3; + + /** + * Sets z value of this vector. + */ + setZ(z: number): Vector3; + + setComponent(index: number, value: number): void; + getComponent(index: number): number; + /** + * Clones this vector. + */ + clone(): this; + /** + * Copies value of v to this vector. + */ + copy(v: this): this; + + /** + * Adds v to this vector. + */ + add(a: Vector3): Vector3; + addScalar(s: number): Vector3; + addScaledVector(v: Vector3, s: number): Vector3; + + /** + * Sets this vector to a + b. + */ + addVectors(a: Vector3, b: Vector3): Vector3; + + /** + * Subtracts v from this vector. + */ + sub(a: Vector3): Vector3; + + subScalar( s: number ): Vector3; + + /** + * Sets this vector to a - b. + */ + subVectors(a: Vector3, b: Vector3): Vector3; + + multiply(v: Vector3): Vector3; + /** + * Multiplies this vector by scalar s. + */ + multiplyScalar(s: number): Vector3; + multiplyVectors(a: Vector3, b: Vector3): Vector3; + applyEuler(euler: Euler): Vector3; + applyAxisAngle(axis: Vector3, angle: number): Vector3; + applyMatrix3(m: Matrix3): Vector3; + applyMatrix4(m: Matrix4): Vector3; + applyQuaternion(q: Quaternion): Vector3; + project(camrea: Camera): Vector3; + unproject(camera: Camera): Vector3; + transformDirection(m: Matrix4): Vector3; + divide(v: Vector3): Vector3; + + /** + * Divides this vector by scalar s. + * Set vector to ( 0, 0, 0 ) if s == 0. + */ + divideScalar(s: number): Vector3; + min(v: Vector3): Vector3; + max(v: Vector3): Vector3; + clamp(min: Vector3, max: Vector3): Vector3; + clampScalar(min: number, max: number): Vector3; + clampLength(min: number, max: number): Vector3; + floor(): Vector3; + ceil(): Vector3; + round(): Vector3; + roundToZero(): Vector3; + + /** + * Inverts this vector. + */ + negate(): Vector3; + + /** + * Computes dot product of this vector and v. + */ + dot(v: Vector3): number; + + /** + * Computes squared length of this vector. + */ + lengthSq(): number; + + /** + * Computes length of this vector. + */ + length(): number; + + /** + * Computes Manhattan length of this vector. + * http://en.wikipedia.org/wiki/Taxicab_geometry + */ + lengthManhattan(): number; + + /** + * Normalizes this vector. + */ + normalize(): Vector3; + + /** + * Normalizes this vector and multiplies it by l. + */ + setLength(l: number): Vector3; + lerp(v: Vector3, alpha: number): Vector3; + + lerpVectors(v1: Vector3, v2: Vector3, alpha: number): Vector3; + + /** + * Sets this vector to cross product of itself and v. + */ + cross(a: Vector3): Vector3; + + /** + * Sets this vector to cross product of a and b. + */ + crossVectors(a: Vector3, b: Vector3): Vector3; + projectOnVector(v: Vector3): Vector3; + projectOnPlane(planeNormal: Vector3): Vector3; + reflect(vector: Vector3): Vector3; + angleTo(v: Vector3): number; + + /** + * Computes distance of this vector to v. + */ + distanceTo(v: Vector3): number; + + /** + * Computes squared distance of this vector to v. + */ + distanceToSquared(v: Vector3): number; + distanceToManhattan(v: Vector3): number; + + setFromSpherical(s: Spherical): Vector3; + setFromMatrixPosition(m: Matrix4): Vector3; + setFromMatrixScale(m: Matrix4): Vector3; + setFromMatrixColumn(matrix: Matrix4, index: number): Vector3; + + /** + * Checks for strict equality of this vector and v. + */ + equals(v: Vector3): boolean; + + fromArray(xyz: number[], offset?: number): Vector3; + toArray(xyz?: number[], offset?: number): number[]; + fromBufferAttribute( attribute: BufferAttribute, index: number, offset?: number): Vector3; + + /** + * @deprecated + */ + getPositionFromMatrix(m: Matrix4): Vector3; + getScaleFromMatrix(m: Matrix4): Vector3; + getColumnFromMatrix(index: number, matrix: Matrix4): Vector3; +} + +/** + * @deprecated use THREE.Vector3 instead. + */ +export class Vertex extends Vector3 {} + +/** + * 4D vector. + * + * ( class Vector4 implements Vector ) + */ +export class Vector4 implements Vector { + constructor(x?: number, y?: number, z?: number, w?: number); + + x: number; + y: number; + z: number; + w: number; + + /** + * Sets value of this vector. + */ + set(x: number, y: number, z: number, w: number): Vector4; + + /** + * Sets all values of this vector. + */ + setScalar(scalar: number): Vector4; + + /** + * Sets X component of this vector. + */ + setX(x: number): Vector4; + + /** + * Sets Y component of this vector. + */ + setY(y: number): Vector4; + + /** + * Sets Z component of this vector. + */ + setZ(z: number): Vector4; + + /** + * Sets w component of this vector. + */ + setW(w: number): Vector4; + + setComponent(index: number, value: number): void; + getComponent(index: number): number; + /** + * Clones this vector. + */ + clone(): this; + /** + * Copies value of v to this vector. + */ + copy(v: this): this; + + /** + * Adds v to this vector. + */ + add(v: Vector4): Vector4; + addScalar(s: number): Vector4; + + /** + * Sets this vector to a + b. + */ + addVectors(a: Vector4, b: Vector4): Vector4; + addScaledVector( v: Vector4, s: number ): Vector4; + /** + * Subtracts v from this vector. + */ + sub(v: Vector4): Vector4; + + subScalar(s: number): Vector4; + + /** + * Sets this vector to a - b. + */ + subVectors(a: Vector4, b: Vector4): Vector4; + + /** + * Multiplies this vector by scalar s. + */ + multiplyScalar(s: number): Vector4; + applyMatrix4(m: Matrix4): Vector4; + + /** + * Divides this vector by scalar s. + * Set vector to ( 0, 0, 0 ) if s == 0. + */ + divideScalar(s: number): Vector4; + + /** + * http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm + * @param q is assumed to be normalized + */ + setAxisAngleFromQuaternion(q: Quaternion): Vector4; + + /** + * http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm + * @param m assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled) + */ + setAxisAngleFromRotationMatrix(m: Matrix3): Vector4; + + min(v: Vector4): Vector4; + max(v: Vector4): Vector4; + clamp(min: Vector4, max: Vector4): Vector4; + clampScalar(min: number, max: number): Vector4; + floor(): Vector4; + ceil(): Vector4; + round(): Vector4; + roundToZero(): Vector4; + + /** + * Inverts this vector. + */ + negate(): Vector4; + + /** + * Computes dot product of this vector and v. + */ + dot(v: Vector4): number; + + /** + * Computes squared length of this vector. + */ + lengthSq(): number; + + /** + * Computes length of this vector. + */ + length(): number; + lengthManhattan(): number; + + /** + * Normalizes this vector. + */ + normalize(): Vector4; + /** + * Normalizes this vector and multiplies it by l. + */ + setLength(length: number): Vector4; + + /** + * Linearly interpolate between this vector and v with alpha factor. + */ + lerp(v: Vector4, alpha: number): Vector4; + + lerpVectors(v1: Vector4, v2: Vector4, alpha: number): Vector4; + + /** + * Checks for strict equality of this vector and v. + */ + equals(v: Vector4): boolean; + + fromArray(xyzw: number[], offset?: number): Vector4; + + toArray(xyzw?: number[], offset?: number): number[]; + + fromBufferAttribute( attribute: BufferAttribute, index: number, offset?: number): Vector4; +} + +export abstract class Interpolant { + constructor(parameterPositions: any, samplesValues: any, sampleSize: number, resultBuffer?: any); + + parameterPositions: any; + samplesValues: any; + valueSize: number; + resultBuffer: any; + + evaluate(time: number): any; +} + +export class CubicInterpolant extends Interpolant { + constructor(parameterPositions: any, samplesValues: any, sampleSize: number, resultBuffer?: any); + + interpolate_(i1: number, t0: number, t: number, t1: number): any; +} + +export class DiscreteInterpolant extends Interpolant { + constructor(parameterPositions: any, samplesValues: any, sampleSize: number, resultBuffer?: any); + + interpolate_(i1: number, t0: number, t: number, t1: number): any; +} + +export class LinearInterpolant extends Interpolant { + constructor(parameterPositions: any, samplesValues: any, sampleSize: number, resultBuffer?: any); + + interpolate_(i1: number, t0: number, t: number, t1: number): any; +} + +export class QuaternionLinearInterpolant extends Interpolant { + constructor(parameterPositions: any, samplesValues: any, sampleSize: number, resultBuffer?: any); + + interpolate_(i1: number, t0: number, t: number, t1: number): any; +} + +// Objects ////////////////////////////////////////////////////////////////////////////////// + +export class Bone extends Object3D { + constructor(skin: SkinnedMesh); + + skin: SkinnedMesh; +} + +export class Group extends Object3D { + constructor(); +} + +export class LOD extends Object3D { + constructor(); + + levels: any[]; + + addLevel(object: Object3D, distance?: number): void; + getObjectForDistance(distance: number): Object3D; + raycast(raycaster: Raycaster, intersects: any): void; + update(camera: Camera): void; + toJSON(meta: any): any; + + /** + * @deprecated + */ + objects: any[]; +} + +export interface LensFlareProperty { + texture: Texture; // Texture + size: number; // size in pixels (-1 = use texture.width) + distance: number; // distance (0-1) from light source (0=at light source) + x: number; + y: number; + z: number; // screen position (-1 => 1) z = 0 is ontop z = 1 is back + scale: number; // scale + rotation: number; // rotation + opacity: number; // opacity + color: Color; // color + blending: Blending; +} + +export class LensFlare extends Object3D { + constructor(texture?: Texture, size?: number, distance?: number, blending?: Blending, color?: Color); + + lensFlares: LensFlareProperty[]; + positionScreen: Vector3; + customUpdateCallback: (object: LensFlare) => void; + + add(object: Object3D): void; + add(texture: Texture, size?: number, distance?: number, blending?: Blending, color?: Color): void; + updateLensFlares(): void; +} + +export class Line extends Object3D { + constructor( + geometry?: Geometry | BufferGeometry, + material?: LineDashedMaterial | LineBasicMaterial | ShaderMaterial, + mode?: number + ); + + geometry: Geometry|BufferGeometry; + material: Material; // LineDashedMaterial or LineBasicMaterial or ShaderMaterial + + raycast(raycaster: Raycaster, intersects: any): void; +} + +/** + * @deprecated + */ +export const LineStrip: number; +/** + * @deprecated + */ +export const LinePieces: number; + +export class LineSegments extends Line { + constructor( + geometry?: Geometry | BufferGeometry, + material?: LineDashedMaterial | LineBasicMaterial | ShaderMaterial, + mode?: number + ); +} + +export class Mesh extends Object3D { + constructor(geometry?: Geometry, material?: Material); + constructor(geometry?: BufferGeometry, material?: Material); + + geometry: Geometry|BufferGeometry; + material: Material; + drawMode: TrianglesDrawModes; + + setDrawMode(drawMode: TrianglesDrawModes): void; + updateMorphTargets(): void; + getMorphTargetIndexByName(name: string): number; + raycast(raycaster: Raycaster, intersects: any): void; +} + +/** + * A class for displaying particles in the form of variable size points. For example, if using the WebGLRenderer, the particles are displayed using GL_POINTS. + * + * @see src/objects/ParticleSystem.js + */ +export class Points extends Object3D { + + /** + * @param geometry An instance of Geometry or BufferGeometry. + * @param material An instance of Material (optional). + */ + constructor( + geometry?: Geometry | BufferGeometry, + material?: Material + ); + + /** + * An instance of Geometry or BufferGeometry, where each vertex designates the position of a particle in the system. + */ + geometry: Geometry | BufferGeometry; + + /** + * An instance of Material, defining the object's appearance. Default is a PointsMaterial with randomised colour. + */ + material: Material; + + raycast(raycaster: Raycaster, intersects: any): void; +} + +/** + * @deprecated + */ +export class PointCloud extends Points {} +/** + * @deprecated + */ +export class ParticleSystem extends Points {} + +export class Skeleton { + constructor(bones: Bone[], boneInverses?: Matrix4[], useVertexTexture?: boolean); + + useVertexTexture: boolean; + identityMatrix: Matrix4; + bones: Bone[]; + boneTextureWidth: number; + boneTextureHeight: number; + boneMatrices: Float32Array; + boneTexture: DataTexture; + boneInverses: Matrix4[]; + + calculateInverses(bone: Bone): void; + pose(): void; + update(): void; + clone(): this; +} + +export class SkinnedMesh extends Mesh { + constructor(geometry?: Geometry|BufferGeometry, material?: MeshBasicMaterial, useVertexTexture?: boolean); + constructor(geometry?: Geometry|BufferGeometry, material?: MeshDepthMaterial, useVertexTexture?: boolean); + constructor(geometry?: Geometry|BufferGeometry, material?: MultiMaterial, useVertexTexture?: boolean); + constructor(geometry?: Geometry|BufferGeometry, material?: MeshLambertMaterial, useVertexTexture?: boolean); + constructor(geometry?: Geometry|BufferGeometry, material?: MeshNormalMaterial, useVertexTexture?: boolean); + constructor(geometry?: Geometry|BufferGeometry, material?: MeshPhongMaterial, useVertexTexture?: boolean); + constructor(geometry?: Geometry|BufferGeometry, material?: ShaderMaterial, useVertexTexture?: boolean); + + bindMode: string; + bindMatrix: Matrix4; + bindMatrixInverse: Matrix4; + skeleton: Skeleton; + + bind( skeleton: Skeleton, bindMatrix?: Matrix4 ): void; + pose(): void; + normalizeSkinWeights(): void; + updateMatrixWorld(force?: boolean): void; +} + +export class Sprite extends Object3D { + constructor(material?: Material); + + geometry: BufferGeometry; + material: SpriteMaterial; + + raycast(raycaster: Raycaster, intersects: any): void; +} + +/** + * @deprecated Use Sprite instead. + */ +export class Particle extends Sprite {} + + +// Renderers ////////////////////////////////////////////////////////////////////////////////// + +export interface Renderer { + domElement: HTMLCanvasElement; + + render(scene: Scene, camera: Camera): void; + setSize(width: number, height: number, updateStyle?: boolean): void; +} + +export interface WebGLRendererParameters { + /** + * A Canvas where the renderer draws its output. + */ + canvas?: HTMLCanvasElement; + + /** + * shader precision. Can be "highp", "mediump" or "lowp". + */ + precision?: string; + + /** + * default is true. + */ + alpha?: boolean; + + /** + * default is true. + */ + premultipliedAlpha?: boolean; + + /** + * default is false. + */ + antialias?: boolean; + + /** + * default is true. + */ + stencil?: boolean; + + /** + * default is false. + */ + preserveDrawingBuffer?: boolean; + + /** + * default is 0x000000. + */ + clearColor?: number; + + /** + * default is 0. + */ + clearAlpha?: number; + + devicePixelRatio?: number; + + /** + * default is false. + */ + logarithmicDepthBuffer?: boolean; +} + + +/** + * The WebGL renderer displays your beautifully crafted scenes using WebGL, if your device supports it. + * This renderer has way better performance than CanvasRenderer. + * + * @see src/renderers/WebGLRenderer.js + */ +export class WebGLRenderer implements Renderer { + /** + * parameters is an optional object with properties defining the renderer's behaviour. The constructor also accepts no parameters at all. In all cases, it will assume sane defaults when parameters are missing. + */ + constructor(parameters?: WebGLRendererParameters); + + /** + * A Canvas where the renderer draws its output. + * This is automatically created by the renderer in the constructor (if not provided already); you just need to add it to your page. + */ + domElement: HTMLCanvasElement; + + /** + * The HTML5 Canvas's 'webgl' context obtained from the canvas where the renderer will draw. + */ + context: WebGLRenderingContext; + + /** + * Defines whether the renderer should automatically clear its output before rendering. + */ + autoClear: boolean; + + /** + * If autoClear is true, defines whether the renderer should clear the color buffer. Default is true. + */ + autoClearColor: boolean; + + /** + * If autoClear is true, defines whether the renderer should clear the depth buffer. Default is true. + */ + autoClearDepth: boolean; + + /** + * If autoClear is true, defines whether the renderer should clear the stencil buffer. Default is true. + */ + autoClearStencil: boolean; + + /** + * Defines whether the renderer should sort objects. Default is true. + */ + sortObjects: boolean; + + clippingPlanes: any[]; + localClippingEnabled: boolean; + + extensions: WebGLExtensions; + + /** + * Default is false. + */ + gammaInput: boolean; + + /** + * Default is false. + */ + gammaOutput: boolean; + + physicallyCorrectLights: boolean; + toneMapping: ToneMapping; + toneMappingExposure: number; + toneMappingWhitePoint: number; + + /** + * Default is false. + */ + shadowMapDebug: boolean; + + /** + * Default is 8. + */ + maxMorphTargets: number; + + /** + * Default is 4. + */ + maxMorphNormals: number; + + /** + * An object with a series of statistical information about the graphics board memory and the rendering process. Useful for debugging or just for the sake of curiosity. The object contains the following fields: + */ + info: { + memory: { + geometries: number; + textures: number; + }; + render: { + calls: number; + vertices: number; + faces: number; + points: number; + }; + programs: number; + }; + + shadowMap: WebGLShadowMap; + + pixelRation: number; + + capabilities: WebGLCapabilities; + properties: WebGLProperties; + state: WebGLState; + allocTextureUnit: any; + + /** + * Return the WebGL context. + */ + getContext(): WebGLRenderingContext; + getContextAttributes(): any; + forceContextLoss(): void; + + getMaxAnisotropy(): number; + getPrecision(): string; + getPixelRatio(): number; + setPixelRatio(value: number): void; + + getSize(): { width: number; height: number; }; + + /** + * Resizes the output canvas to (width, height), and also sets the viewport to fit that size, starting in (0, 0). + */ + setSize(width: number, height: number, updateStyle?: boolean): void; + + /** + * Sets the viewport to render from (x, y) to (x + width, y + height). + */ + setViewport(x?: number, y?: number, width?: number, height?: number): void; + + /** + * Sets the scissor area from (x, y) to (x + width, y + height). + */ + setScissor(x: number, y: number, width: number, height: number): void; + + /** + * Enable the scissor test. When this is enabled, only the pixels within the defined scissor area will be affected by further renderer actions. + */ + setScissorTest(enable: boolean): void; + + /** + * Returns a THREE.Color instance with the current clear color. + */ + getClearColor(): Color; + + /** + * Sets the clear color, using color for the color and alpha for the opacity. + */ + setClearColor(color: Color, alpha?: number): void; + setClearColor(color: string, alpha?: number): void; + setClearColor(color: number, alpha?: number): void; + + /** + * Returns a float with the current clear alpha. Ranges from 0 to 1. + */ + getClearAlpha(): number; + + setClearAlpha(alpha: number): void; + + /** + * Tells the renderer to clear its color, depth or stencil drawing buffer(s). + * Arguments default to true + */ + clear(color?: boolean, depth?: boolean, stencil?: boolean): void; + + clearColor(): void; + clearDepth(): void; + clearStencil(): void; + clearTarget(renderTarget: WebGLRenderTarget, color: boolean, depth: boolean, stencil: boolean): void; + resetGLState(): void; + dispose(): void; + + /** + * Tells the shadow map plugin to update using the passed scene and camera parameters. + * + * @param scene an instance of Scene + * @param camera — an instance of Camera + */ + renderBufferImmediate(object: Object3D, program: Object, material: Material): void; + + renderBufferDirect(camera: Camera, fog: Fog, material: Material, geometryGroup: any, object: Object3D): void; + + /** + * Render a scene using a camera. + * The render is done to the renderTarget (if specified) or to the canvas as usual. + * If forceClear is true, the canvas will be cleared before rendering, even if the renderer's autoClear property is false. + */ + render(scene: Scene, camera: Camera, renderTarget?: RenderTarget, forceClear?: boolean): void; + + /** + * Used for setting the gl frontFace, cullFace states in the GPU, thus enabling/disabling face culling when rendering. + * If cullFace is false, culling will be disabled. + * @param cullFace "back", "front", "front_and_back", or false. + * @param frontFace "ccw" or "cw + */ + setFaceCulling(cullFace?: CullFace, frontFace?: FrontFaceDirection): void; + /** + * @deprecated + */ + setTexture(texture: Texture, slot: number): void; + setTexture2D(texture: Texture, slot: number): void; + setTextureCube(texture: Texture, slot: number): void; + getCurrentRenderTarget(): RenderTarget; + setRenderTarget(renderTarget: RenderTarget): void; + readRenderTargetPixels( renderTarget: RenderTarget, x: number, y: number, width: number, height: number, buffer: any ): void; + + /** + * @deprecated + */ + gammaFactor: number; + shadowMapEnabled: boolean; + shadowMapType: ShadowMapType; + shadowMapCullFace: CullFace; + + supportsFloatTextures(): any; + supportsHalfFloatTextures(): any; + supportsStandardDerivatives(): any; + supportsCompressedTextureS3TC(): any; + supportsCompressedTexturePVRTC(): any; + supportsBlendMinMax(): any; + supportsVertexTextures(): any; + supportsInstancedArrays(): any; + enableScissorTest(boolean: any): any; +} + +export interface RenderTarget {} // not defined in the code, used in LightShadow and WebGRenderer classes + +export interface WebGLRenderTargetOptions { + wrapS?: Wrapping; + wrapT?: Wrapping; + magFilter?: TextureFilter; + minFilter?: TextureFilter; + format?: number; // RGBAFormat; + type?: TextureDataType; // UnsignedByteType; + anisotropy?: number; // 1; + depthBuffer?: boolean; // true; + stencilBuffer?: boolean; // true; +} + +export class WebGLRenderTarget extends EventDispatcher { + constructor(width: number, height: number, options?: WebGLRenderTargetOptions); + + uuid: string; + width: number; + height: number; + scissor: Vector4; + scissorTest: boolean; + viewpport: Vector4; + texture: Texture; + depthBuffer: boolean; + stencilBuffer: boolean; + depthTexture: Texture; + /** + * @deprecated Use texture.wrapS instead. + */ + wrapS: any; + /** + * @deprecated Use texture.wrapT instead. + */ + wrapT: any; + /** + * @deprecated Use texture.magFilter instead. + */ + magFilter: any; + /** + * @deprecated Use texture.minFilter instead. + */ + minFilter: any; + /** + * @deprecated Use texture.anisotropy instead. + */ + anisotropy: any; + /** + * @deprecated Use texture.offset instead. + */ + offset: any; + /** + * @deprecated Use texture.repeat instead. + */ + repeat: any; + /** + * @deprecated Use texture.format instead. + */ + format: any; + /** + * @deprecated Use texture.type instead. + */ + type: any; + /** + * @deprecated Use texture.generateMipmaps instead. + */ + generateMipmaps: any; + + setSize(width: number, height: number): void; + clone(): this; + copy(source: this): this; + dispose(): void; +} + +export class WebGLRenderTargetCube extends WebGLRenderTarget { + constructor(width: number, height: number, options?: WebGLRenderTargetOptions); + + activeCubeFace: number; // PX 0, NX 1, PY 2, NY 3, PZ 4, NZ 5 + activeMipMapLevel: number; +} + +// Renderers / Shaders ///////////////////////////////////////////////////////////////////// +export let ShaderChunk: { + [name: string]: string; + + alphamap_fragment: string; + alphamap_pars_fragment: string; + alphatest_fragment: string; + aomap_fragment: string; + aomap_pars_fragment: string; + begin_vertex: string; + beginnormal_vertex: string; + bsdfs: string; + bumpmap_pars_fragment: string; + clipping_planes_fragment: string; + clipping_planes_pars_fragment: string; + clipping_planes_pars_vertex: string; + clipping_planes_vertex: string; + color_fragment: string; + color_pars_fragment: string; + color_pars_vertex: string; + color_vertex: string; + common: string; + cube_frag: string; + cube_vert: string; + cube_uv_reflection_fragment: string; + defaultnormal_vertex: string; + depth_frag: string; + depth_vert: string; + distanceRGBA_frag: string; + distanceRGBA_vert: string; + displacementmap_vertex: string; + displacementmap_pars_vertex: string; + emissivemap_fragment: string; + emissivemap_pars_fragment: string; + encodings_pars_fragment: string; + encodings_fragment: string; + envmap_fragment: string; + envmap_pars_fragment: string; + envmap_pars_vertex: string; + envmap_vertex: string; + equirect_frag: string; + equirect_vert: string; + fog_fragment: string; + fog_pars_fragment: string; + linedashed_frag: string; + linedashed_vert: string; + lightmap_fragment: string; + lightmap_pars_fragment: string; + lights_lambert_vertex: string; + lights_pars: string; + lights_phong_fragment: string; + lights_phong_pars_fragment: string; + lights_physical_fragment: string; + lights_physical_pars_fragment: string; + lights_template: string; + logdepthbuf_fragment: string; + logdepthbuf_pars_fragment: string; + logdepthbuf_pars_vertex: string; + logdepthbuf_vertex: string; + map_fragment: string; + map_pars_fragment: string; + map_particle_fragment: string; + map_particle_pars_fragment: string; + meshbasic_frag: string; + meshbasic_vert: string; + meshlambert_frag: string; + meshlambert_vert: string; + meshphong_frag: string; + meshphong_vert: string; + meshphysical_frag: string; + meshphysical_vert: string; + metalnessmap_fragment: string; + metalnessmap_pars_fragment: string; + morphnormal_vertex: string; + morphtarget_pars_vertex: string; + morphtarget_vertex: string; + normal_flip: string; + normal_frag: string; + normal_fragment: string; + normal_vert: string; + normalmap_pars_fragment: string; + packing: string; + points_frag: string; + points_vert: string; + shadow_frag: string; + shadow_vert: string; + + premultiplied_alpha_fragment: string; + project_vertex: string; + roughnessmap_fragment: string; + roughnessmap_pars_fragment: string; + shadowmap_pars_fragment: string; + shadowmap_pars_vertex: string; + shadowmap_vertex: string; + shadowmask_pars_fragment: string; + skinbase_vertex: string; + skinning_pars_vertex: string; + skinning_vertex: string; + skinnormal_vertex: string; + specularmap_fragment: string; + specularmap_pars_fragment: string; + tonemapping_fragment: string; + tonemapping_pars_fragment: string; + uv2_pars_fragment: string; + uv2_pars_vertex: string; + uv2_vertex: string; + uv_pars_fragment: string; + uv_pars_vertex: string; + uv_vertex: string; + worldpos_vertex: string; +}; + +export interface Shader { + uniforms: { [uniform: string]: IUniform }; + vertexShader: string; + fragmentShader: string; +} + +export let ShaderLib: { + [name: string]: Shader; + basic: Shader; + lambert: Shader; + phong: Shader; + standard: Shader; + points: Shader; + dashed: Shader; + depth: Shader; + normal: Shader; + cube: Shader; + equirect: Shader; + depthRGBA: Shader; + distanceRGBA: Shader; + physical: Shader; +}; + +export interface IUniform { + value: any; +} + +export let UniformsLib: { + common: { + diffuse: IUniform; + opacity: IUniform; + map: IUniform; + offsetRepeat: IUniform; + specularMap: IUniform; + alphaMap: IUniform; + envMap: IUniform; + flipEnvMap: IUniform; + reflectivity: IUniform; + refractionRation: IUniform; + }; + aomap: { + aoMap: IUniform; + aoMapIntensity: IUniform; + }; + lightmap: { + lightMap: IUniform; + lightMapIntensity: IUniform; + }; + emissivemap: { emissiveMap: IUniform }; + bumpmap: { + bumpMap: IUniform; + bumpScale: IUniform; + }; + normalmap: { + normalMap: IUniform; + normalScale: IUniform; + }; + displacementmap: { + displacementMap: IUniform; + displacementScale: IUniform; + displacementBias: IUniform; + }; + roughnessmap: { roughnessMap: IUniform }; + metalnessmap: { metalnessMap: IUniform }; + fog: { + fogDensity: IUniform; + fogNear: IUniform; + fogFar: IUniform; + fogColor: IUniform; + }; + lights: { + ambientLightColor: IUniform + directionalLights: { + value: any[]; + properties: { + direction: {}; + color: {}; + shadow: {}; + shadowBias: {}; + shadowRadius: {}; + shadowMapSize: {}; + }; + }; + directionalShadowMap: IUniform; + directionalShadowMatrix: IUniform; + spotLights: { + value: any[]; + properties: { + color: {}; + position: {}; + direction: {}; + distance: {}; + coneCos: {}; + penumbraCos: {}; + decay: {}; + shadow: {}; + shadowBias: {}; + shadowRadius: {}; + shadowMapSize: {}; + }; + }; + spotShadowMap: IUniform; + spotShadowMatrix: IUniform; + pointLights: { + value: any[]; + properties: { + color: {}; + position: {}; + decay: {}; + distance: {}; + shadow: {}; + shadowBias: {}; + shadowRadius: {}; + shadowMapSize: {}; + }; + }; + pointShadowMap: IUniform; + pointShadowMatrix: IUniform; + hemisphereLigtts: { + value: any[]; + properties: { + direction: {}; + skycolor: {}; + groundColor: {}; + }; + }; + }; + points: { + diffuse: IUniform; + opacity: IUniform; + size: IUniform; + scale: IUniform; + map: IUniform; + offsetRepeat: IUniform; + }; +}; + +export namespace UniformsUtils { + export function merge(uniforms: any[]): any; + export function clone(uniforms_src: any): any; +} + +export class Uniform { + constructor(value: any); + /** + * @deprecated + */ + constructor(type: string, value: any); + /** + * @deprecated + */ + type: string; + value: any; + dynamic: boolean; + onUpdateCallback: Function; + + onUpdate(callback: Function): Uniform; +} + +// Renderers / WebGL ///////////////////////////////////////////////////////////////////// +export class WebGLBufferRenderer { + constructor(_gl: WebGLRenderingContext, extensions: any, _infoRender: any); + + setMode(value: any): void; + render(start: any, count: number): void; + renderInstances(geometry: any): void; +} + +export class WebGLClipping { + uniform: { value: any, needsUpdate: boolean }; + numPlanes: number; + + init(planes: any[], enableLocalClipping: boolean, camera: Camera): boolean; + beginShadows(): void; + endShadows(): void; + setState(planes: any[], clipShadows: boolean, camera: Camera, cache: boolean, fromCache: boolean): void; +} + +export interface WebGLCapabilitiesParameters { + precision?: any; + logarithmicDepthBuffer?: any; +} + +export class WebGLCapabilities { + constructor(gl: WebGLRenderingContext, extensions: any, parameters: WebGLCapabilitiesParameters); + + precision: any; + logarithmicDepthBuffer: any; + maxTextures: any; + maxVertexTextures: any; + maxTextureSize: any; + maxCubemapSize: any; + maxAttributes: any; + maxVertexUniforms: any; + maxVaryings: any; + maxFragmentUniforms: any; + vertexTextures: any; + floatFragmentTextures: any; + floatVertexTextures: any; + + getMaxAnisotropy(): number; + getMaxPrecision(precision: string): string; +} + +export class WebGLExtensions { + constructor(gl: WebGLRenderingContext); + + get(name: string): any; +} + +export class WebGLGeometries { + constructor(gl: WebGLRenderingContext, extensions: any, _infoRender: any); + + get(object: any): any; +} + +export class WebGLLights { + constructor(gl: WebGLRenderingContext, properties: any, info: any); + + get(light: any): any; +} + +export class WebGLIndexedBufferRenderer { + constructor(gl: WebGLRenderingContext, properties: any, info: any); + + setMode(value: any): void; + setIndex(index: any): void; + render(start: any, count: number): void; + renderInstances(geometry: any, start: any, count: number): void; +} + +export class WebGLObjects { + constructor(gl: WebGLRenderingContext, properties: any, info: any); + + getAttributeBuffer(attribute: any): any; + getWireframeAttribute(geometry: any): any; + update(object: any): void; +} + +export class WebGLProgram { + constructor(renderer: WebGLRenderer, code: string, material: ShaderMaterial, parameters: WebGLRendererParameters); + + id: number; + code: string; + usedTimes: number; + program: any; + vertexShader: WebGLShader; + fragmentShader: WebGLShader; + /** + * @deprecated Use getUniforms() instead. + */ + uniforms: any; + /** + * @deprecated Use getAttributes() instead. + */ + attributes: any; + + getUniforms(): WebGLUniforms; + getAttributes(): any; + destroy(): void; +} + +export class WebGLPrograms { + constructor(renderer: WebGLRenderer, capabilities: any); + + programs: any[]; + + getParameters(material: ShaderMaterial, lights: any, fog: any, nClipPlanes: number, object: any): any; + getProgramCode(material: ShaderMaterial, parameters: any): string; + acquireProgram(material: ShaderMaterial, parameters: any, code: string): WebGLProgram; + releaseProgram(program: WebGLProgram): void; +} + +export class WebGLTextures { + constructor(gl: any, extensions: any, state: any, properties: any, capabilities: any, paramThreeToGL: Function, info: any); + + setTexture2D(texture: any, slot: number): void; + setTextureCube(texture: any, slot: number): void; + setTextureCubeDynamic(texture: any, slot: number): void; + setupRenderTarget(renderTarget: any): void; + updateRenderTargetMipmap(renderTarget: any): void; +} + +export class WebGLUniforms { + constructor(gl: any, program: WebGLProgram, renderer: WebGLRenderer); + + renderer: WebGLRenderer; + + setValue(gl: any, value: any, renderer?: any): void; + set(gl: any, object: any, name: string): void; + setOptional(gl: any, object: any, name: string): void; + + static upload(gl: any, seq: any, values: any[], renderer: any): void; + static seqWithValue(seq: any, values: any[]): any[]; + static splitDynamic(seq: any, values: any[]): any[]; + static evalDynamic(seq: any, values: any[], object: any, camera: any): any[]; +} + +export class WebGLProperties { + constructor(); + + get(object: any): any; + delete(object: any): void; + clear(): void; +} + +export class WebGLShader { + constructor(gl: any, type: string, string: string); +} + +export class WebGLShadowMap { + constructor(_renderer: Renderer, _lights: any[], _objects: any[], capabilities: any); + + enabled: boolean; + autoUpdate: boolean; + needsUpdate: boolean; + type: ShadowMapType; + renderReverseSided: boolean; + renderSingleSided: boolean; + + render(scene: Scene, camera: Camera): void; + + /** + * @deprecated + */ + cullFace: any; +} + +export class WebGLState { + constructor(gl: any, extensions: any, paramThreeToGL: Function); + + buffers: { + color: WebGLColorBuffer, + depth: WebGLDepthBuffer, + stencil: WebGLStencilBuffer, + }; + + init(): void; + initAttributes(): void; + enableAttribute(attribute: string): void; + enableAttributeAndDivisor(attribute: string, meshPerAttribute: any, extension: any): void; + disableUnusedAttributes(): void; + enable(id: string): void; + disable(id: string): void; + getCompressedTextureFormats(): any[]; + setBlending(blending: number, blendEquation: number, blendSrc: number, blendDst: number, blendEquationAlpha: number, blendSrcAlpha: number, blendDstAlpha: number): void; + setColorWrite(colorWrite: number): void; + setDepthTest(depthTest: number): void; + setDepthWrite(depthWrite: number): void; + setDepthFunc(depthFunc: Function): void; + setStencilTest(stencilTest: boolean): void; + setStencilWrite(stencilWrite: any): void; + setStencilFunc(stencilFunc: Function, stencilRef: any, stencilMask: number): void; + setStencilOp(stencilFail: any, stencilZFail: any, stencilZPass: any): void; + setFlipSided(flipSided: number): void; + setCullFace(cullFace: CullFace): void; + setLineWidth(width: number): void; + setPolygonOffset(polygonoffset: number, factor: number, units: number): void; + setScissorTest(scissorTest: boolean): void; + getScissorTest(): boolean; + activeTexture(webglSlot: any): void; + bindTexture(webglType: any, webglTexture: any): void; + compressedTexImage2D(): void; + texImage2D(): void; + clearColor(r: number, g: number, b: number, a: number): void; + clearDepth(depth: number): void; + clearStencil(stencil: any): void; + scissor(scissor: any): void; + viewport(viewport: any): void; + reset(): void; +} + +export class WebGLColorBuffer { + constructor(gl: any, state: any); + + setMask(colorMask: number): void; + setLocked(lock: boolean): void; + setClear(r: number, g: number, b: number, a: number): void; + reset(): void; +} + +export class WebGLDepthBuffer { + constructor(gl: any, state: any); + + setTest(depthTest: boolean): void; + sertMask(depthMask: number): void; + setFunc(depthFunc: Function): void; + setLocked(lock: boolean): void; + setClear(depth: any): void; + reset(): void; +} + +export class WebGLStencilBuffer { + constructor(gl: any, state: any); + + setTest(stencilTest: boolean): void; + sertMask(stencilMask: number): void; + setFunc(stencilFunc: Function, stencilRef: any, stencilMask: number): void; + setOp(stencilFail: any, stencilZFail: any, stencilZPass: any): void; + setLocked(lock: boolean): void; + setClear(stencil: any): void; + reset(): void; +} + +// Renderers / WebGL / Plugins ///////////////////////////////////////////////////////////////////// +export class LensFlarePlugin { + constructor(renderer: WebGLRenderer, flares: any[]); + + render(scene: Scene, camera: Camera, viewportWidth: number, viewportHeight: number): void; +} + +export class SpritePlugin { + constructor(renderer: WebGLRenderer, sprites: any[]); + + render(scene: Scene, camera: Camera, viewportWidth: number, viewportHeight: number): void; +} + +// Scenes ///////////////////////////////////////////////////////////////////// + +/** + * Scenes allow you to set up what and where is to be rendered by three.js. This is where you place objects, lights and cameras. + */ +export class Scene extends Object3D { + constructor(); + + /** + * A fog instance defining the type of fog that affects everything rendered in the scene. Default is null. + */ + fog: IFog; + + /** + * If not null, it will force everything in the scene to be rendered with that material. Default is null. + */ + overrideMaterial: Material; + autoUpdate: boolean; + background: any; + + toJSON(meta?: any): any; +} + +export interface IFog { + name: string; + color: Color; + clone(): this; + toJSON(): any; +} + +/** + * This class contains the parameters that define linear fog, i.e., that grows linearly denser with the distance. + */ +export class Fog implements IFog { + constructor(hex: number, near?: number, far?: number); + + name: string; + + /** + * Fog color. + */ + color: Color; + + /** + * The minimum distance to start applying fog. Objects that are less than 'near' units from the active camera won't be affected by fog. + */ + near: number; + + /** + * The maximum distance at which fog stops being calculated and applied. Objects that are more than 'far' units away from the active camera won't be affected by fog. + * Default is 1000. + */ + far: number; + + clone(): this; + toJSON(): any; +} + +/** + * This class contains the parameters that define linear fog, i.e., that grows exponentially denser with the distance. + */ +export class FogExp2 implements IFog { + constructor(hex: number|string, density?: number); + + name: string; + color: Color; + + /** + * Defines how fast the fog will grow dense. + * Default is 0.00025. + */ + density: number; + + clone(): this; + toJSON(): any; +} + +// Textures ///////////////////////////////////////////////////////////////////// +export let TextureIdCount: number; + +export class Texture extends EventDispatcher { + constructor( + image?: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement, + mapping?: Mapping, + wrapS?: Wrapping, + wrapT?: Wrapping, + magFilter?: TextureFilter, + minFilter?: TextureFilter, + format?: PixelFormat, + type?: TextureDataType, + anisotropy?: number, + encoding?: TextureEncoding + ); + + id: number; + uuid: string; + name: string; + sourceFile: string; + image: any; // HTMLImageElement or ImageData or { width: number, height: number } in some children; + mipmaps: ImageData[]; + mapping: Mapping; + wrapS: Wrapping; + wrapT: Wrapping; + magFilter: TextureFilter; + minFilter: TextureFilter; + anisotropy: number; + format: PixelFormat; + type: TextureDataType; + offset: Vector2; + repeat: Vector2; + generateMipmaps: boolean; + premultiplyAlpha: boolean; + flipY: boolean; + unpackAlignment: number; + encoding: TextureEncoding; + version: number; + needsUpdate: boolean; + onUpdate: () => void; + static DEFAULT_IMAGE: any; + static DEFAULT_MAPPING: any; + + clone(): this; + copy(source: this): this; + toJSON(meta: any): any; + dispose(): void; + transformUv(uv: Vector): void; +} + +export class DepthTexture extends Texture { + constructor( + width: number, + heighht: number, + type?: TextureDataType, + mapping?: Mapping, + wrapS?: Wrapping, + wrapT?: Wrapping, + magFilter?: TextureFilter, + minFilter?: TextureFilter, + anisotropy?: number + ); + + image: { width: number, height: number }; +} + +export class CanvasTexture extends Texture { + constructor( + canvas: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement, + mapping?: Mapping, + wrapS?: Wrapping, + wrapT?: Wrapping, + magFilter?: TextureFilter, + minFilter?: TextureFilter, + format?: PixelFormat, + type?: TextureDataType, + anisotropy?: number + ); +} + +export class CubeTexture extends Texture { + constructor( + images?: any[], // HTMLImageElement or HTMLCanvasElement + mapping?: Mapping, + wrapS?: Wrapping, + wrapT?: Wrapping, + magFilter?: TextureFilter, + minFilter?: TextureFilter, + format?: PixelFormat, + type?: TextureDataType, + anisotropy?: number, + encoding?: TextureEncoding + ); + + images: any; // returns and sets the value of Texture.image in the codde ? +} + +export class CompressedTexture extends Texture { + constructor( + mipmaps: ImageData[], + width: number, + height: number, + format?: PixelFormat, + type?: TextureDataType, + mapping?: Mapping, + wrapS?: Wrapping, + wrapT?: Wrapping, + magFilter?: TextureFilter, + minFilter?: TextureFilter, + anisotropy?: number, + encoding?: TextureEncoding + ); + + image: { width: number; height: number; }; +} + +export class DataTexture extends Texture { + constructor( + data: ArrayBuffer | Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array, + width: number, + height: number, + format: PixelFormat, + type: TextureDataType, + mapping: Mapping, + wrapS: Wrapping, + wrapT: Wrapping, + magFilter: TextureFilter, + minFilter: TextureFilter, + anisotropy?: number, + encoding?: TextureEncoding + ); + + image: ImageData; +} + +export class VideoTexture extends Texture { + constructor( + video: HTMLVideoElement, + mapping?: Mapping, + wrapS?: Wrapping, + wrapT?: Wrapping, + magFilter?: TextureFilter, + minFilter?: TextureFilter, + format?: PixelFormat, + type?: TextureDataType, + anisotropy?: number + ); +} + +// Extras ///////////////////////////////////////////////////////////////////// + +/** + * @deprecated Use TextureLoader instead. + */ +export namespace ImageUtils { + export let crossOrigin: string; + + export function loadTexture(url: string, mapping?: Mapping, onLoad?: (texture: Texture) => void, onError?: (message: string) => void): Texture; + export function loadTextureCube(array: string[], mapping?: Mapping, onLoad?: (texture: Texture) => void , onError?: (message: string) => void ): Texture; +} + +export namespace SceneUtils { + export function createMultiMaterialObject(geometry: Geometry, materials: Material[]): Object3D; + export function detach(child: Object3D, parent: Object3D, scene: Scene): void; + export function attach(child: Object3D, scene: Scene, parent: Object3D): void; +} + +export namespace ShapeUtils { + export function area(contour: number[]): number; + export function triangulate(contour: number[], indices: boolean): number[]; + export function triangulateShape(contour: number[], holes: any[]): number[]; + export function isClockWise(pts: number[]): boolean; +} + +// Extras / Audio ///////////////////////////////////////////////////////////////////// + +export class Audio extends Object3D { + constructor(listener: AudioListener); + + type: string; + context: AudioContext; + source: AudioBufferSourceNode; + gain: GainNode; + autoplay: boolean; + startTime: number; + playbackRate: number; + hasPlaybackControl: boolean; + isPlaying: boolean; + sourceType: string; + filters: any[]; + + getOutput(): GainNode; + setNodeSource(audioNode: AudioBufferSourceNode): Audio; + setBuffer(audioBuffer: AudioBuffer): Audio; + play(): Audio; + pause(): Audio; + stop(): Audio; + connect(): Audio; + disconnect(): Audio; + getFilters(): any[]; + setFilter(value: any[]): Audio; + getFilter(): any; + setFilter(filter: any): Audio; + setPlaybackRate(value: number): Audio; + getPlaybackRate(): number; + onEnded(): void; + getLoop(): boolean; + setLoop(value: boolean): void; + getVolume(): number; + setVolume(value: number): Audio; + /** + * @deprecated Use AudioLoader instead. + */ + load(file: string): Audio; +} + +export class AudioAnalyser { + constructor(audio: any, fftSize: number); + + analyser: any; + data: Uint8Array; + + getFrequencyData(): Uint8Array; + getAverageFrequency(): number; + + /** + * @deprecated + */ + getData(file: any): any; +} + +export const AudioContext: AudioContext; + +export class AudioBuffer { + constructor(context: any); + + context: any; + ready: boolean; + readyCallbacks: Function[]; + + load(file: string): AudioBuffer; + onReady(callback: Function): void; +} + +export class PositionalAudio extends Audio { + constructor(listener: AudioListener); + + panner: PannerNode; + + setRefDistance(value: number): void; + getRefDistance(): number; + setRolloffFactor(value: number): void; + getRolloffFactor(): number; + setDistanceModel(value: number): void; + getDistanceModel(): number; + setMaxDistance(value: number): void; + getMaxDistance(): number; +} + +export class AudioListener extends Object3D { + constructor(); + + type: string; + context: AudioContext; + gain: GainNode; + + getInput(): GainNode; + removeFilter(): void; + setFilter(value: any): void; + getFilter(): any; + setMasterVolume(value: number): void; + getMasterVolume(): number; +} + +// Extras / Core ///////////////////////////////////////////////////////////////////// + +/** + * An extensible curve object which contains methods for interpolation + * class Curve<T extends Vector> + */ +export class Curve { + /** + * Returns a vector for point t of the curve where t is between 0 and 1 + * getPoint(t: number): T; + */ + getPoint(t: number): T; + + /** + * Returns a vector for point at relative position in curve according to arc length + * getPointAt(u: number): T; + */ + getPointAt(u: number): T; + + /** + * Get sequence of points using getPoint( t ) + * getPoints(divisions?: number): T[]; + */ + getPoints(divisions?: number): T[]; + + /** + * Get sequence of equi-spaced points using getPointAt( u ) + * getSpacedPoints(divisions?: number): T[]; + */ + getSpacedPoints(divisions?: number): T[]; + + /** + * Get total curve arc length + */ + getLength(): number; + + /** + * Get list of cumulative segment lengths + */ + getLengths(divisions?: number): number[]; + + /** + * Update the cumlative segment distance cache + */ + updateArcLengths(): void; + + /** + * Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equi distance + */ + getUtoTmapping(u: number, distance: number): number; + + /** + * Returns a unit vector tangent at t. If the subclassed curve do not implement its tangent derivation, 2 points a small delta apart will be used to find its gradient which seems to give a reasonable approximation + * getTangent(t: number): T; + */ + getTangent(t: number): T; + + /** + * Returns tangent at equidistance point u on the curve + * getTangentAt(u: number): T; + */ + getTangentAt(u: number): T; + + /** + * @deprecated since r84. + */ + static create(constructorFunc: Function, getPointFunc: Function): Function; +} + +export class CurvePath extends Curve { + constructor(); + + curves: Curve[]; + autoClose: boolean; + + add(curve: Curve): void; + checkConnection(): boolean; + closePath(): void; + getPoint(t: number): T; + getLength(): number; + updateArcLengths(): void; + getCurveLengths(): number[]; + getSpacedPoints(divisions?: number): T[]; + getPoints(divisions?: number): T[]; + createPointsGeometry(divisions: number): Geometry; + createSpacedPointsGeometry(divisions: number): Geometry; + createGeometry(points: T[]): Geometry; +} + +export enum PathActions { + MOVE_TO, + LINE_TO, + QUADRATIC_CURVE_TO, // Bezier quadratic curve + BEZIER_CURVE_TO, // Bezier cubic curve + CSPLINE_THRU, // Catmull-rom spline + ARC, // Circle + ELLIPSE, +} + +export interface PathAction { + action: PathActions; + args: any; +} + +/** + * a 2d path representation, comprising of points, lines, and cubes, similar to the html5 2d canvas api. It extends CurvePath. + */ +export class Path extends CurvePath { + constructor(points?: Vector2[]); + + currentPoint: Vector2; + + fromPoints(vectors: Vector2[]): void; + moveTo(x: number, y: number): void; + lineTo(x: number, y: number): void; + quadraticCurveTo(aCPx: number, aCPy: number, aX: number, aY: number): void; + bezierCurveTo(aCP1x: number, aCP1y: number, aCP2x: number, aCP2y: number, aX: number, aY: number): void; + splineThru(pts: Vector2[]): void; + arc(aX: number, aY: number, aRadius: number, aStartAngle: number, aEndAngle: number, aClockwise: boolean): void; + absarc(aX: number, aY: number, aRadius: number, aStartAngle: number, aEndAngle: number, aClockwise: boolean): void; + ellipse(aX: number, aY: number, xRadius: number, yRadius: number, aStartAngle: number, aEndAngle: number, aClockwise: boolean, aRotation: number): void; + absellipse(aX: number, aY: number, xRadius: number, yRadius: number, aStartAngle: number, aEndAngle: number, aClockwise: boolean, aRotation: number): void; +} + +export class ShapePath { + constructor(); + + subPaths: any[]; + currentPath: any; + + moveTo(x: number, y: number): void; + lineTo(x: number, y: number): void; + quadraticCurveTo(aCPx: number, aCPy: number, aX: number, aY: number): void; + bezierCurveTo(aCP1x: number, aCP1y: number, aCP2x: number, aCP2y: number, aX: number, aY: number): void; + splineThru(pts: Vector2[]): void; + toShapes(isCCW: boolean, noHoles: any): Shape[]; +} + +/** + * Defines a 2d shape plane using paths. + */ +export class Shape extends Path { + constructor(points?: Vector2[]); + + holes: Path[]; + + extrude(options?: any): ExtrudeGeometry; + makeGeometry(options?: any): ShapeGeometry; + getPointsHoles(divisions: number): Vector2[][]; + extractAllPoints(divisions: number): { + shape: Vector2[]; + holes: Vector2[][]; + }; + extractPoints(divisions: number): Vector2[]; +} + +// Extras / Curves ///////////////////////////////////////////////////////////////////// +export namespace CurveUtils { + export function tangentQuadraticBezier(t: number, p0: number, p1: number, p2: number): number; + export function tangentCubicBezier(t: number, p0: number, p1: number, p2: number, p3: number): number; + export function tangentSpline(t: number, p0: number, p1: number, p2: number, p3: number): number; + export function interpolate(p0: number, p1: number, p2: number, p3: number, t: number): number; +} + +export class CatmullRomCurve3 extends Curve { + constructor(points?: Vector3[]); + + points: Vector3[]; + + getPoint(t: number): Vector3; +} + +export class CubicBezierCurve extends Curve { + constructor(v0: Vector2, v1: Vector2, v2: Vector2, v3: Vector2); + + v0: Vector2; + v1: Vector2; + v2: Vector2; + v3: Vector2; +} + +export class CubicBezierCurve3 extends Curve { + constructor(v0: Vector3, v1: Vector3, v2: Vector3, v3: Vector3); + + v0: Vector3; + v1: Vector3; + v2: Vector3; + v3: Vector3; + + getPoint(t: number): Vector3; +} + +export class EllipseCurve extends Curve { + constructor(aX: number, aY: number, xRadius: number, yRadius: number, aStartAngle: number, aEndAngle: number, aClockwise: boolean, aRotation: number); + + aX: number; + aY: number; + xRadius: number; + yRadius: number; + aStartAngle: number; + aEndAngle: number; + aClockwise: boolean; + aRotation: number; +} +export class ArcCurve extends EllipseCurve { + constructor(aX: number, aY: number, aRadius: number, aStartAngle: number, aEndAngle: number, aClockwise: boolean ); +} + +export class LineCurve extends Curve { + constructor( v1: Vector2, v2: Vector2 ); + + v1: Vector2; + v2: Vector2; +} + +export class LineCurve3 extends Curve { + constructor(v1: Vector3, v2: Vector3); + + v1: Vector3; + v2: Vector3; + + getPoint(t: number): Vector3; +} + +export class QuadraticBezierCurve extends Curve { + constructor( v0: Vector2, v1: Vector2, v2: Vector2 ); + + v0: Vector2; + v1: Vector2; + v2: Vector2; +} + +export class QuadraticBezierCurve3 extends Curve { + constructor(v0: Vector3, v1: Vector3, v2: Vector3); + + v0: Vector3; + v1: Vector3; + v2: Vector3; + + getPoint(t: number): Vector3; +} + +export class SplineCurve extends Curve { + constructor(points?: Vector2[]); + + points: Vector2[]; +} + + +// Extras / Geometries ///////////////////////////////////////////////////////////////////// +export class BoxBufferGeometry extends BufferGeometry { + constructor(width: number, height: number, depth: number, widthSegments?: number, heightSegments?: number, depthSegments?: number); + + parameters: { + width: number; + height: number; + depth: number; + widthSegments: number; + heightSegments: number; + depthSegments: number; + }; +} + +/** + * BoxGeometry is the quadrilateral primitive geometry class. It is typically used for creating a cube or irregular quadrilateral of the dimensions provided within the (optional) 'width', 'height', & 'depth' constructor arguments. + */ +export class BoxGeometry extends Geometry { + /** + * @param width — Width of the sides on the X axis. + * @param height — Height of the sides on the Y axis. + * @param depth — Depth of the sides on the Z axis. + * @param widthSegments — Number of segmented faces along the width of the sides. + * @param heightSegments — Number of segmented faces along the height of the sides. + * @param depthSegments — Number of segmented faces along the depth of the sides. + */ + constructor(width: number, height: number, depth: number, widthSegments?: number, heightSegments?: number, depthSegments?: number); + + parameters: { + width: number; + height: number; + depth: number; + widthSegments: number; + heightSegments: number; + depthSegments: number; + }; +} + +/** + * @deprecated Use BoxGeometry instead. + */ +export class CubeGeometry extends BoxGeometry {} + +export class CircleBufferGeometry extends BufferGeometry { + constructor(radius?: number, segments?: number, thetaStart?: number, thetaLength?: number); + + parameters: { + radius: number; + segments: number; + thetaStart: number; + thetaLength: number; + }; +} + +export class CircleGeometry extends Geometry { + constructor(radius?: number, segments?: number, thetaStart?: number, thetaLength?: number); + + parameters: { + radius: number; + segments: number; + thetaStart: number; + thetaLength: number; + }; +} + +export class CylinderBufferGeometry extends BufferGeometry { + constructor(radiusTop?: number, radiusBottom?: number, height?: number, radialSegments?: number, heightSegments?: number, openEnded?: boolean, thetaStart?: number, thetaLength?: number); + + parameters: { + radiusTop: number; + radiusBottom: number; + height: number; + radialSegments: number; + heightSegments: number; + openEnded: boolean; + thetaStart: number; + thetaLength: number; + }; +} + +export class CylinderGeometry extends Geometry { + /** + * @param radiusTop — Radius of the cylinder at the top. + * @param radiusBottom — Radius of the cylinder at the bottom. + * @param height — Height of the cylinder. + * @param radiusSegments — Number of segmented faces around the circumference of the cylinder. + * @param heightSegments — Number of rows of faces along the height of the cylinder. + * @param openEnded - A Boolean indicating whether or not to cap the ends of the cylinder. + */ + constructor(radiusTop?: number, radiusBottom?: number, height?: number, radiusSegments?: number, heightSegments?: number, openEnded?: boolean, thetaStart?: number, thetaLength?: number); + + parameters: { + radiusTop: number; + radiusBottom: number; + height: number; + radialSegments: number; + heightSegments: number; + openEnded: boolean; + thetaStart: number; + thetaLength: number; + }; +} + +export class ConeBufferGeometry extends BufferGeometry { + constructor(radius?: number, height?: number, radialSegment?: number, heightSegment?: number, openEnded?: boolean, thetaStart?: number, thetaLength?: number); +} + +export class ConeGeometry extends CylinderGeometry { + constructor(radius?: number, height?: number, radialSegment?: number, heightSegment?: number, openEnded?: boolean, thetaStart?: number, thetaLength?: number); +} + +export class DodecahedronGeometry extends Geometry { + constructor(radius: number, detail: number); + + parameters: { + radius: number; + detail: number; + }; +} + +export class EdgesGeometry extends BufferGeometry { + constructor(geometry: BufferGeometry, thresholdAngle: number); +} + +export class ExtrudeGeometry extends Geometry { + constructor(shape?: Shape, options?: any); + constructor(shapes?: Shape[], options?: any); + + static WorldUVGenerator: { + generateTopUV(geometry: Geometry, indexA: number, indexB: number, indexC: number): Vector2[]; + generateSideWallUV(geometry: Geometry, indexA: number, indexB: number, indexC: number, indexD: number): Vector2[]; + }; + + addShapeList(shapes: Shape[], options?: any): void; + addShape(shape: Shape, options?: any): void; +} + +export class IcosahedronGeometry extends PolyhedronGeometry { + constructor(radius: number, detail: number); +} + +export class LatheBufferGeometry extends BufferGeometry { + constructor(points: Vector3[], segments?: number, phiStart?: number, phiLength?: number); + + parameters: { + points: Vector3[]; + segments: number; + phiStart: number; + phiLength: number; + }; +} + +export class LatheGeometry extends Geometry { + constructor(points: Vector3[], segments?: number, phiStart?: number, phiLength?: number); + + parameters: { + points: Vector3[]; + segments: number; + phiStart: number; + phiLength: number; + }; +} + +export class OctahedronGeometry extends PolyhedronGeometry { + constructor(radius: number, detail: number); +} + +export class ParametricGeometry extends Geometry { + constructor(func: (u: number, v: number) => Vector3, slices: number, stacks: number); + + parameters: { + func: (u: number, v: number) => Vector3; + slices: number; + stacks: number; + }; +} + +export class PlaneBufferGeometry extends BufferGeometry { + constructor(width: number, height: number, widthSegments?: number, heightSegments?: number); + + parameters: { + width: number; + height: number; + widthSegments: number; + heightSegments: number; + }; +} + +export class PlaneGeometry extends Geometry { + constructor(width: number, height: number, widthSegments?: number, heightSegments?: number); + + parameters: { + width: number; + height: number; + widthSegments: number; + heightSegments: number; + }; +} + +export class PolyhedronGeometry extends Geometry { + constructor(vertices: Vector3[], faces: Face3[], radius?: number, detail?: number); + + parameters: { + vertices: Vector3[]; + faces: Face3[]; + radius: number; + detail: number; + }; + boundingSphere: Sphere; +} + +export class RingBufferGeometry extends BufferGeometry { + constructor(innerRadius?: number, outerRadius?: number, thetaSegments?: number, phiSegments?: number, thetaStart?: number, thetaLength?: number); + + parameters: { + innerRadius: number; + outerRadius: number; + thetaSegments: number; + phiSegments: number; + thetaStart: number; + thetaLength: number; + }; +} + +export class RingGeometry extends Geometry { + constructor(innerRadius?: number, outerRadius?: number, thetaSegments?: number, phiSegments?: number, thetaStart?: number, thetaLength?: number); + + parameters: { + innerRadius: number; + outerRadius: number; + thetaSegments: number; + phiSegments: number; + thetaStart: number; + thetaLength: number; + }; +} + +export class ShapeGeometry extends Geometry { + constructor(shape: Shape, options?: any); + constructor(shapes: Shape[], options?: any); + + addShapeList(shapes: Shape[], options: any): ShapeGeometry; + addShape(shape: Shape, options?: any): void; +} + +export class SphereBufferGeometry extends BufferGeometry { + constructor(radius: number, widthSegments?: number, heightSegments?: number, phiStart?: number, phiLength?: number, thetaStart?: number, thetaLength?: number); + + parameters: { + radius: number; + widthSegments: number; + heightSegments: number; + phiStart: number; + phiLength: number; + thetaStart: number; + thetaLength: number; + }; +} + +/** + * A class for generating sphere geometries + */ +export class SphereGeometry extends Geometry { + /** + * The geometry is created by sweeping and calculating vertexes around the Y axis (horizontal sweep) and the Z axis (vertical sweep). Thus, incomplete spheres (akin to 'sphere slices') can be created through the use of different values of phiStart, phiLength, thetaStart and thetaLength, in order to define the points in which we start (or end) calculating those vertices. + * + * @param radius — sphere radius. Default is 50. + * @param widthSegments — number of horizontal segments. Minimum value is 3, and the default is 8. + * @param heightSegments — number of vertical segments. Minimum value is 2, and the default is 6. + * @param phiStart — specify horizontal starting angle. Default is 0. + * @param phiLength — specify horizontal sweep angle size. Default is Math.PI * 2. + * @param thetaStart — specify vertical starting angle. Default is 0. + * @param thetaLength — specify vertical sweep angle size. Default is Math.PI. + */ + constructor(radius: number, widthSegments?: number, heightSegments?: number, phiStart?: number, phiLength?: number, thetaStart?: number, thetaLength?: number); + + parameters: { + radius: number; + widthSegments: number; + heightSegments: number; + phiStart: number; + phiLength: number; + thetaStart: number; + thetaLength: number; + }; +} + +export class TetrahedronGeometry extends PolyhedronGeometry { + constructor(radius?: number, detail?: number); +} + +export interface TextGeometryParameters { + font?: Font; + size?: number; + height?: number; + curveSegments?: number; + bevelEnabled?: boolean; + bevelThickness?: number; + bevelSize?: number; +} + +export class TextGeometry extends ExtrudeGeometry { + constructor(text: string, parameters?: TextGeometryParameters); + + parameters: { + font: Font; + size: number; + height: number; + curveSegments: number; + bevelEnabled: boolean; + bevelThickness: number; + bevelSize: number; + }; +} + +export class TorusBufferGeometry extends BufferGeometry { + constructor(radius?: number, tube?: number, radialSegments?: number, tubularSegments?: number, arc?: number); + + parameters: { + radius: number; + tube: number; + radialSegments: number; + tubularSegments: number; + arc: number; + }; +} + +export class TorusGeometry extends Geometry { + constructor(radius?: number, tube?: number, radialSegments?: number, tubularSegments?: number, arc?: number); + + parameters: { + radius: number; + tube: number; + radialSegments: number; + tubularSegments: number; + arc: number; + }; +} + +export class TorusKnotBufferGeometry extends BufferGeometry { + constructor(radius?: number, tube?: number, radialSegments?: number, tubularSegments?: number, p?: number, q?: number, heightScale?: number); + + parameters: { + radius: number; + tube: number; + radialSegments: number; + tubularSegments: number; + p: number; + q: number; + heightScale: number; + }; +} + +export class TorusKnotGeometry extends Geometry { + constructor(radius?: number, tube?: number, radialSegments?: number, tubularSegments?: number, p?: number, q?: number, heightScale?: number); + + parameters: { + radius: number; + tube: number; + radialSegments: number; + tubularSegments: number; + p: number; + q: number; + heightScale: number; + }; +} + +export class TubeGeometry extends Geometry { + constructor(path: Curve, segments?: number, radius?: number, radiusSegments?: number, closed?: boolean, taper?: (u: number) => number); + + parameters: { + path: Curve; + segments: number; + radius: number; + radialSegments: number; + closed: boolean; + taper: (u: number) => number; // NoTaper or SinusoidalTaper; + }; + tangents: Vector3[]; + normals: Vector3[]; + binormals: Vector3[]; + + static NoTaper(u?: number): number; + static SinusoidalTaper(u: number): number; + static FrenetFrames(path: Path, segments: number, closed: boolean): void; +} + +export class TubeBufferGeometry extends BufferGeometry { + constructor(path: Curve, segments?: number, radius?: number, radiusSegments?: number, closed?: boolean); + + parameters: { + path: Curve; + segments: number; + radius: number; + radialSegments: number; + closed: boolean; + }; + tangents: Vector3[]; + normals: Vector3[]; + binormals: Vector3[]; +} + +export class WireframeGeometry extends BufferGeometry { + constructor(geometry: Geometry | BufferGeometry); +} + +// Extras / Helpers ///////////////////////////////////////////////////////////////////// + +export class ArrowHelper extends Object3D { + constructor(dir: Vector3, origin?: Vector3, length?: number, hex?: number, headLength?: number, headWidth?: number); + + line: Line; + cone: Mesh; + + setDirection(dir: Vector3): void; + setLength(length: number, headLength?: number, headWidth?: number): void; + setColor(hex: number): void; +} + +export class AxisHelper extends LineSegments { + constructor(size?: number); +} + +export class BoundingBoxHelper extends Mesh { + constructor(object?: Object3D, hex?: number); + + object: Object3D; + box: Box3; + + update(): void; +} + +export class BoxHelper extends LineSegments { + constructor(object?: Object3D, color?: Color); + + update(object?: Object3D): void; +} + +export class CameraHelper extends LineSegments { + constructor(camera: Camera); + + camera: Camera; + pointMap: { [id: string]: number[]; }; + + update(): void; +} + +export class DirectionalLightHelper extends Object3D { + constructor(light: Light, size?: number); + + light: Light; + lightPlane: Line; + + dispose(): void; + update(): void; +} + +export class EdgesHelper extends LineSegments { + constructor(object: Object3D, hex?: number, thresholdAngle?: number); +} + +export class FaceNormalsHelper extends LineSegments { + constructor(object: Object3D, size?: number, hex?: number, linewidth?: number); + + object: Object3D; + size: number; + + update(object?: Object3D): void; +} + +export class GridHelper extends LineSegments { + constructor(size: number, divisions: number, color1?: Color|number, color2?: Color|number); + /** + * @deprecated + */ + setColors(color1?: Color|number, color2?: Color|number): void; +} + +export class HemisphereLightHelper extends Object3D { + constructor(light: Light, sphereSize: number); + + light: Light; + colors: Color[]; + lightSphere: Mesh; + + dispose(): void; + update(): void; +} + +export class PointLightHelper extends Object3D { + constructor(light: Light, sphereSize: number); + + light: Light; + + dispose(): void; + update(): void; +} + +export class SkeletonHelper extends LineSegments { + constructor(bone: Object3D); + + bones: Bone[]; + root: Object3D; + + getBoneList(object: Object3D): Bone[]; + update(): void; +} + +export class SpotLightHelper extends Object3D { + constructor(light: Light); + + light: Light; + + dispose(): void; + update(): void; +} + +export class VertexNormalsHelper extends LineSegments { + constructor(object: Object3D, size?: number, hex?: number, linewidth?: number); + + object: Object3D; + size: number; + + update(object?: Object3D): void; +} + +export class WireframeHelper extends LineSegments { + constructor(object: Object3D, hex?: number); +} + +// Extras / Objects ///////////////////////////////////////////////////////////////////// + +export class ImmediateRenderObject extends Object3D { + constructor(material: Material); + + material: Material; + render(renderCallback: Function): void; +} + +export interface MorphBlendMeshAnimation { + start: number; + end: number; + length: number; + fps: number; + duration: number; + lastFrame: number; + currentFrame: number; + active: boolean; + time: number; + direction: number; + weight: number; + directionBackwards: boolean; + mirroredLoop: boolean; +} + +export class MorphBlendMesh extends Mesh { + constructor(geometry: Geometry, material: Material); + + animationsMap: { [name: string]: MorphBlendMeshAnimation; }; + animationsList: MorphBlendMeshAnimation[]; + + createAnimation(name: string, start: number, end: number, fps: number): void; + autoCreateAnimations(fps: number): void; + setAnimationDirectionForward(name: string): void; + setAnimationDirectionBackward(name: string): void; + setAnimationFPS(name: string, fps: number): void; + setAnimationDuration(name: string, duration: number): void; + setAnimationWeight(name: string, weight: number): void; + setAnimationTime(name: string, time: number): void; + getAnimationTime(name: string): number; + getAnimationDuration(name: string): number; + playAnimation(name: string): void; + stopAnimation(name: string): void; + update(delta: number): void; +} diff --git a/types/three/three-css3drenderer.d.ts b/types/three/three-css3drenderer.d.ts index 94acb9f5cc..40ffbbd054 100644 --- a/types/three/three-css3drenderer.d.ts +++ b/types/three/three-css3drenderer.d.ts @@ -1,32 +1,22 @@ -// Type definitions for three.js (CSS3DRenderer.js) -// Project: https://github.com/mrdoob/three.js/blob/master/examples/js/renderers/CSS3DRenderer.js -// Definitions by: Satoru Kimura -// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +import { Camera, Object3D, Scene } from "./three-core"; -// This renderer does not work in IE. Can be found here for more information. -// https://github.com/mrdoob/three.js/issues/4783 +export class CSS3DObject extends Object3D { + constructor(element: any); + element: any; +} -declare namespace THREE { - class CSS3DObject extends Object3D { - constructor(element: any); +export class CSS3DSprite extends CSS3DObject { + constructor(element: any); - element: any; - } +} - class CSS3DSprite extends CSS3DObject { - constructor(element: any); +export class CSS3DRenderer { + constructor(); - } + domElement: HTMLElement; + setSize(width: number, height: number): void; - class CSS3DRenderer { - constructor(); - - domElement: HTMLElement; - - setSize(width: number, height: number): void; - - render(scene: THREE.Scene, camera: THREE.Camera): void; - } + render(scene: Scene, camera: Camera): void; } diff --git a/types/three/three-ctmloader.d.ts b/types/three/three-ctmloader.d.ts index 0dd56a3b9a..065614a0c5 100644 --- a/types/three/three-ctmloader.d.ts +++ b/types/three/three-ctmloader.d.ts @@ -1,36 +1,28 @@ -// Type definitions for three.js (CTMLoader.js) -// Project: https://github.com/mrdoob/three.js/blob/master/examples/js/loaders/ctm/CTMLoader.js -// Definitions by: Hou Chunlei -// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +import { Loader } from "./three-core"; -/// +export class CTMLoader extends Loader { + constructor(); -declare namespace THREE { - export class CTMLoader extends THREE.Loader { - constructor(); + /** + * load multiple CTM parts defined in JSON. + * @param url(required) + * @param callback(required) + * @param parameters + */ + loadParts(url: string, callback: () => any, parameters?: any): any; - /** - * load multiple CTM parts defined in JSON. - * @param url(required) - * @param callback(required) - * @param parameters - */ - loadParts(url: string, callback: () => any, parameters?: any): any; + /** + * Load CTMLoader compressed models + * @param url(required) + * @param callback(required) + * @param parameters + */ + load(url: string, callback: (geo: any) => any, parameters?: any): any; - /** - * Load CTMLoader compressed models - * @param url(required) - * @param callback(required) - * @param parameters - */ - load(url: string, callback: (geo: any) => any, parameters?: any): any; - - /** - * create buffergeometry by ctm file. - * @param file(required) - * @param callback(required) - */ - createModel(file: string, callback: () => any): any; - - } + /** + * create buffergeometry by ctm file. + * @param file(required) + * @param callback(required) + */ + createModel(file: string, callback: () => any): any; } diff --git a/types/three/three-editorcontrols.d.ts b/types/three/three-editorcontrols.d.ts index 6f2e6402ed..8b838fe672 100644 --- a/types/three/three-editorcontrols.d.ts +++ b/types/three/three-editorcontrols.d.ts @@ -1,28 +1,19 @@ -// Type definitions for three.js (EditorControls.js) -// Project: https://github.com/mrdoob/three.js/blob/master/examples/js/controls/EditorControls.js -// Definitions by: Qinsi ZHU -// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +import { Camera, EventDispatcher, Object3D, Vector3 } from "./three-core"; +export class EditorControls extends EventDispatcher { -declare namespace THREE { + constructor(object: Camera, domElement?: HTMLElement); - class EditorControls extends EventDispatcher { + enabled: boolean; + center: Vector3; - constructor(object: Camera, domElement?: HTMLElement); + focus(target: Object3D, frame: boolean): void; - enabled: boolean; - center: THREE.Vector3; + pan(delta: Vector3): void; - focus(target: THREE.Object3D, frame: boolean): void; + zoom(delta: Vector3): void; - pan(delta: THREE.Vector3): void; - - zoom(delta: THREE.Vector3): void; - - rotate(delta: THREE.Vector3): void; - - dispose(): void; - - } + rotate(delta: Vector3): void; + dispose(): void; } diff --git a/types/three/three-effectcomposer.d.ts b/types/three/three-effectcomposer.d.ts index 45b586aa55..3680a43658 100644 --- a/types/three/three-effectcomposer.d.ts +++ b/types/three/three-effectcomposer.d.ts @@ -1,30 +1,25 @@ -// Type definitions for three.js (EffectComposer.js) -// Project: https://github.com/mrdoob/three.js/blob/r68/examples/js/postprocessing/EffectComposer.js -// Definitions by: Satoru Kimura -// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +import { WebGLRenderTarget, WebGLRenderer } from "./three-core"; +import { ShaderPass } from "./three-shaderpass"; +export class EffectComposer { + constructor(renderer: WebGLRenderer, renderTarget?: WebGLRenderTarget); -declare namespace THREE { - export class EffectComposer { - constructor(renderer: WebGLRenderer, renderTarget?: WebGLRenderTarget); + renderTarget1: WebGLRenderTarget; + renderTarget2: WebGLRenderTarget; + writeBuffer: WebGLRenderTarget; + readBuffer: WebGLRenderTarget; + passes: any[]; + copyPass: ShaderPass; - renderTarget1: WebGLRenderTarget; - renderTarget2: WebGLRenderTarget; - writeBuffer: WebGLRenderTarget; - readBuffer: WebGLRenderTarget; - passes: any[]; - copyPass: ShaderPass; + swapBuffers(): void; - swapBuffers(): void; + addPass(pass: any): void; - addPass(pass: any): void; + insertPass(pass: any, index: number): void; - insertPass(pass: any, index: number): void; + render(delta?: number): void; - render(delta?: number): void; + reset(renderTarget?: WebGLRenderTarget): void; - reset(renderTarget?: WebGLRenderTarget): void; - - setSize(width: number, height: number): void; - } + setSize(width: number, height: number): void; } diff --git a/types/three/three-examples.d.ts b/types/three/three-examples.d.ts new file mode 100644 index 0000000000..423f8274b3 --- /dev/null +++ b/types/three/three-examples.d.ts @@ -0,0 +1,10 @@ +// Things from three.js/examples/ that do not (yet) have their own file + +import { Shader } from "./three-core"; + +export var AWDLoader: any; +export var FlyControls: any; +export var BloomPass: any; +export var DotScreenShader: Shader; +export var RGBShiftShader: Shader; +export var FXAAShader: Shader; \ No newline at end of file diff --git a/types/three/three-maskpass.d.ts b/types/three/three-maskpass.d.ts index 15847324dd..0eb6250b6d 100644 --- a/types/three/three-maskpass.d.ts +++ b/types/three/three-maskpass.d.ts @@ -1,28 +1,22 @@ -// Type definitions for three.js (MaskPass.js) -// Project: https://github.com/mrdoob/three.js/blob/r68/examples/js/postprocessing/MaskPass.js -// Definitions by: Satoru Kimura -// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +import { Camera, Scene, WebGLRenderTarget, WebGLRenderer } from "./three-core"; +export class MaskPass { + constructor(scene: Scene, camera: Camera); -declare namespace THREE { - export class MaskPass { - constructor(scene: Scene, camera: Camera); + scene: Scene; + camera: Camera; + enabled: boolean; + clear: boolean; + needsSwap: boolean; + inverse: boolean; - scene: Scene; - camera: Camera; - enabled: boolean; - clear: boolean; - needsSwap: boolean; - inverse: boolean; + render(renderer: WebGLRenderer, writeBuffer: WebGLRenderTarget, readBuffer: WebGLRenderTarget, delta: number): void; +} - render(renderer: WebGLRenderer, writeBuffer: WebGLRenderTarget, readBuffer: WebGLRenderTarget, delta: number): void; - } +export class ClearMaskPass { + constructor(); - export class ClearMaskPass { - constructor(); + enabled: boolean; - enabled: boolean; - - render(renderer: WebGLRenderer, writeBuffer: WebGLRenderTarget, readBuffer: WebGLRenderTarget, delta: number): void; - } + render(renderer: WebGLRenderer, writeBuffer: WebGLRenderTarget, readBuffer: WebGLRenderTarget, delta: number): void; } diff --git a/types/three/three-octree.d.ts b/types/three/three-octree.d.ts index dc534f98bc..e5357f5800 100644 --- a/types/three/three-octree.d.ts +++ b/types/three/three-octree.d.ts @@ -1,42 +1,33 @@ -// Type definitions for three.js (Octree.js) -// Project: https://github.com/mrdoob/three.js/blob/master/examples/js/Octree.js -// Definitions by: Hou Chunlei -// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +import { Vector3 } from "./three-core"; -/// +export class Octree { + constructor(parameters?: any); -declare namespace THREE { - export class Octree { - constructor(parameters?: any); + update(): void; - update(): void; + add(object: any, options?: any): any; - add(object: any, options?: any): any; + addDeferred(object: any, options?: any): any; - addDeferred(object: any, options?: any): any; + addObjectData(object: any, part: any): any; - addObjectData(object: any, part: any): any; + remove(object: any): any; - remove(object: any): any; + extend(octree: Octree): any; - extend(octree: Octree): any; + rebuild(): any; - rebuild(): any; + updateObject(object: any): any; - updateObject(object: any): any; + search(position: Vector3, radius: number, organizeByObject: boolean, direction: Vector3): any; - search(position: THREE.Vector3, radius: number, organizeByObject: boolean, direction: THREE.Vector3): any; + setRoot(root: any): any; - setRoot(root: any): any; + getDepthEnd(): number; - getDepthEnd(): number; + getNodeCountEnd(): number; - getNodeCountEnd(): number; + getObjectCountEnd(): number; - getObjectCountEnd(): number; - - toConsole(): any; - - - } -} + toConsole(): any; +} \ No newline at end of file diff --git a/types/three/three-orbitcontrols.d.ts b/types/three/three-orbitcontrols.d.ts index 6f098d320d..272b8410c4 100644 --- a/types/three/three-orbitcontrols.d.ts +++ b/types/three/three-orbitcontrols.d.ts @@ -1,75 +1,69 @@ -// Type definitions for three.js (OrbitControls.js) -// Project: https://github.com/mrdoob/three.js/blob/master/examples/js/controls/OrbitControls.js -// Definitions by: Satoru Kimura -// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +import { Camera, MOUSE, Object3D, Vector3 } from "./three-core"; + +export class OrbitControls { + constructor(object: Camera, domElement?: HTMLElement); + + object: Camera; + domElement: HTMLElement | HTMLDocument; + + // API + enabled: boolean; + target: Vector3; + + // deprecated + center: Vector3; + + enableZoom: boolean; + zoomSpeed: number; + minDistance: number; + maxDistance: number; + enableRotate: boolean; + rotateSpeed: number; + enablePan: boolean; + keyPanSpeed: number; + autoRotate: boolean; + autoRotateSpeed: number; + minPolarAngle: number; + maxPolarAngle: number; + minAzimuthAngle: number; + maxAzimuthAngle: number; + enableKeys: boolean; + keys: {LEFT: number; UP: number; RIGHT: number; BOTTOM: number;}; + mouseButtons: {ORBIT: MOUSE; ZOOM: MOUSE; PAN: MOUSE;}; + enableDamping: boolean; + dampingFactor: number; -declare namespace THREE { - class OrbitControls { - constructor(object: Camera, domElement?: HTMLElement); + rotateLeft(angle?: number): void; - object: Camera; - domElement: HTMLElement | HTMLDocument; + rotateUp(angle?: number): void; - // API - enabled: boolean; - target: THREE.Vector3; + panLeft(distance?: number): void; - // deprecated - center: THREE.Vector3; + panUp(distance?: number): void; - enableZoom: boolean; - zoomSpeed: number; - minDistance: number; - maxDistance: number; - enableRotate: boolean; - rotateSpeed: number; - enablePan: boolean; - keyPanSpeed: number; - autoRotate: boolean; - autoRotateSpeed: number; - minPolarAngle: number; - maxPolarAngle: number; - minAzimuthAngle: number; - maxAzimuthAngle: number; - enableKeys: boolean; - keys: {LEFT: number; UP: number; RIGHT: number; BOTTOM: number;}; - mouseButtons: {ORBIT: MOUSE; ZOOM: MOUSE; PAN: MOUSE;}; - enableDamping: boolean; - dampingFactor: number; + pan(deltaX: number, deltaY: number): void; + dollyIn(dollyScale: number): void; - rotateLeft(angle?: number): void; + dollyOut(dollyScale: number): void; - rotateUp(angle?: number): void; + update(): void; - panLeft(distance?: number): void; + reset(): void; - panUp(distance?: number): void; + dispose(): void; - pan(deltaX: number, deltaY: number): void; + getPolarAngle(): number; - dollyIn(dollyScale: number): void; + getAzimuthalAngle(): number; - dollyOut(dollyScale: number): void; + // EventDispatcher mixins + addEventListener(type: string, listener: (event: any) => void): void; - update(): void; + hasEventListener(type: string, listener: (event: any) => void): void; - reset(): void; + removeEventListener(type: string, listener: (event: any) => void): void; - dispose(): void; - - getPolarAngle(): number; - - getAzimuthalAngle(): number; - - // EventDispatcher mixins - addEventListener(type: string, listener: (event: any) => void): void; - - hasEventListener(type: string, listener: (event: any) => void): void; - - removeEventListener(type: string, listener: (event: any) => void): void; - - dispatchEvent(event: {type: string; target: any;}): void; - } + dispatchEvent(event: {type: string; target: any;}): void; } diff --git a/types/three/three-orthographictrackballcontrols.d.ts b/types/three/three-orthographictrackballcontrols.d.ts index 0051ac9095..4b2d86e852 100644 --- a/types/three/three-orthographictrackballcontrols.d.ts +++ b/types/three/three-orthographictrackballcontrols.d.ts @@ -1,56 +1,50 @@ -// Type definitions for three.js (OrthographicTrackballControls.js) -// Project: https://github.com/mrdoob/three.js/blob/master/examples/js/controls/OrthographicTrackballControls.js -// Definitions by: Stefan Profanter -// Definitions: https://github.com/borisyankov/DefinitelyTyped +import { Camera, EventDispatcher, Vector3 } from "./three-core"; +export class OrthographicTrackballControls extends EventDispatcher { + constructor(object: Camera, domElement?: HTMLElement); -declare namespace THREE { - export class OrthographicTrackballControls extends EventDispatcher { - constructor(object: Camera, domElement?: HTMLElement); + object: Camera; + domElement: HTMLElement; - object: Camera; - domElement: HTMLElement; + // API + enabled: boolean; + screen: {left: number; top: number; width: number; height: number}; + radius: number; + rotateSpeed: number; + zoomSpeed: number; + panSpeed: number; + noRotate: boolean; + noZoom: boolean; + noPan: boolean; + noRoll: boolean; + staticMoving: boolean; + dynamicDampingFactor: number; + keys: number[]; - // API - enabled: boolean; - screen: {left: number; top: number; width: number; height: number}; - radius: number; - rotateSpeed: number; - zoomSpeed: number; - panSpeed: number; - noRotate: boolean; - noZoom: boolean; - noPan: boolean; - noRoll: boolean; - staticMoving: boolean; - dynamicDampingFactor: number; - keys: number[]; + target: Vector3; - target: THREE.Vector3; + position0: Vector3; + target0: Vector3; + up0: Vector3; - position0: THREE.Vector3; - target0: THREE.Vector3; - up0: THREE.Vector3; + left0: number; + right0: number; + top0: number; + bottom0: number; - left0: number; - right0: number; - top0: number; - bottom0: number; + update(): void; - update(): void; + reset(): void; - reset(): void; + checkDistances(): void; - checkDistances(): void; + zoomCamera(): void; - zoomCamera(): void; + panCamera(): void; - panCamera(): void; + rotateCamera(): void; - rotateCamera(): void; + handleResize(): void; - handleResize(): void; - - handleEvent(event: any): void; - } + handleEvent(event: any): void; } diff --git a/types/three/three-projector.d.ts b/types/three/three-projector.d.ts index 574d3f969f..8c535a3cd7 100644 --- a/types/three/three-projector.d.ts +++ b/types/three/three-projector.d.ts @@ -1,96 +1,101 @@ -// Type definitions for three.js (Projector.js) -// Project: https://github.com/mrdoob/three.js/blob/master/examples/js/renderers/Projector.js -// Definitions by: Satoru Kimura -// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +import { + Camera, + Color, + Face3, + Light, + Material, + Object3D, + Scene, + Vector2, + Vector3, + Vector4 +} from "./three-core"; +// Renderers / Renderables ///////////////////////////////////////////////////////////////////// +export class RenderableObject { + constructor(); -declare namespace THREE { - // Renderers / Renderables ///////////////////////////////////////////////////////////////////// - export class RenderableObject { - constructor(); + id: number; + object: any; + z: number; +} - id: number; - object: any; - z: number; - } +export class RenderableFace { + constructor(); - export class RenderableFace { - constructor(); + id: number; + v1: RenderableVertex; + v2: RenderableVertex; + v3: RenderableVertex; + normalModel: Vector3; + vertexNormalsModel: Vector3[]; + vertexNormalsLength: number; + color: Color; + material: Material; + uvs: Vector2[][]; + z: number; - id: number; - v1: RenderableVertex; - v2: RenderableVertex; - v3: RenderableVertex; - normalModel: Vector3; - vertexNormalsModel: Vector3[]; - vertexNormalsLength: number; - color: Color; - material: Material; - uvs: Vector2[][]; - z: number; +} - } +export class RenderableVertex { + constructor(); - export class RenderableVertex { - constructor(); + position: Vector3; + positionWorld: Vector3; + positionScreen: Vector4; + visible: boolean; - position: Vector3; - positionWorld: Vector3; - positionScreen: Vector4; - visible: boolean; + copy(vertex: RenderableVertex): void; +} - copy(vertex: RenderableVertex): void; - } +export class RenderableLine { + constructor(); - export class RenderableLine { - constructor(); + id: number; + v1: RenderableVertex; + v2: RenderableVertex; + vertexColors: Color[]; + material: Material; + z: number; +} - id: number; - v1: RenderableVertex; - v2: RenderableVertex; - vertexColors: Color[]; - material: Material; - z: number; - } +export class RenderableSprite { + constructor(); - export class RenderableSprite { - constructor(); + id: number; + object: any; + x: number; + y: number; + z: number; + rotation: number; + scale: Vector2; + material: Material; +} - id: number; - object: any; - x: number; - y: number; - z: number; - rotation: number; - scale: Vector2; - material: Material; - } +/** + * Projects points between spaces. + */ +export class Projector { + constructor(); + + // deprecated. + projectVector(vector: Vector3, camera: Camera): Vector3; + + // deprecated. + unprojectVector(vector: Vector3, camera: Camera): Vector3; /** - * Projects points between spaces. + * Transforms a 3D scene object into 2D render data that can be rendered in a screen with your renderer of choice, projecting and clipping things out according to the used camera. + * If the scene were a real scene, this method would be the equivalent of taking a picture with the camera (and developing the film would be the next step, using a Renderer). + * + * @param scene scene to project. + * @param camera camera to use in the projection. + * @param sort select whether to sort elements using the Painter's algorithm. */ - export class Projector { - constructor(); - - // deprecated. - projectVector(vector: Vector3, camera: Camera): Vector3; - - // deprecated. - unprojectVector(vector: Vector3, camera: Camera): Vector3; - - /** - * Transforms a 3D scene object into 2D render data that can be rendered in a screen with your renderer of choice, projecting and clipping things out according to the used camera. - * If the scene were a real scene, this method would be the equivalent of taking a picture with the camera (and developing the film would be the next step, using a Renderer). - * - * @param scene scene to project. - * @param camera camera to use in the projection. - * @param sort select whether to sort elements using the Painter's algorithm. - */ - projectScene(scene: Scene, camera: Camera, sortObjects: boolean, sortElements?: boolean): { - objects: Object3D[]; // Mesh, Line or other object - sprites: Object3D[]; // Sprite or Particle - lights: Light[]; - elements: Face3[]; // Line, Particle, Face3 or Face4 - }; - } + projectScene(scene: Scene, camera: Camera, sortObjects: boolean, sortElements?: boolean): { + objects: Object3D[]; // Mesh, Line or other object + sprites: Object3D[]; // Sprite or Particle + lights: Light[]; + elements: Face3[]; // Line, Particle, Face3 or Face4 + }; } diff --git a/types/three/three-renderpass.d.ts b/types/three/three-renderpass.d.ts index 01022fd854..b35e9d21e1 100644 --- a/types/three/three-renderpass.d.ts +++ b/types/three/three-renderpass.d.ts @@ -1,26 +1,25 @@ -// Type definitions for three.js (RenderPass.js) -// Project: https://github.com/mrdoob/three.js/blob/r68/examples/js/postprocessing/RenderPass.js -// Definitions by: Satoru Kimura -// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +import { + Camera, + Color, + Material, + Scene, + WebGLRenderTarget, + WebGLRenderer +} from "./three-core"; +export class RenderPass { + constructor(scene: Scene, camera: Camera, overrideMaterial?: Material, clearColor?: Color | string | number, clearAlpha?: number); -declare namespace THREE { - export class RenderPass { - // constructor(scene: Scene, camera: Camera, overrideMaterial?: Material, clearColor?: Color, clearAlpha?: number); - constructor(scene: Scene, camera: Camera, overrideMaterial?: Material, clearColor?: Color | string | number, clearAlpha?: number); - // constructor(scene: Scene, camera: Camera, overrideMaterial?: Material, clearColor?: number, clearAlpha?: number); + scene: Scene; + camera: Camera; + overrideMaterial: Material; + clearColor: Color | string | number; + clearAlpha: number; + oldClearColor: Color; + oldClearAlpha: number; + enabled: boolean; + clear: boolean; + needsSwap: boolean; - scene: Scene; - camera: Camera; - overrideMaterial: Material; - clearColor: any; // Color or string or number - clearAlpha: number; - oldClearColor: Color; - oldClearAlpha: number; - enabled: boolean; - clear: boolean; - needsSwap: boolean; - - render(renderer: WebGLRenderer, writeBuffer: WebGLRenderTarget, readBuffer: WebGLRenderTarget, delta: number): void; - } + render(renderer: WebGLRenderer, writeBuffer: WebGLRenderTarget, readBuffer: WebGLRenderTarget, delta: number): void; } diff --git a/types/three/three-shaderpass.d.ts b/types/three/three-shaderpass.d.ts index 8fb9341375..dd315bbd79 100644 --- a/types/three/three-shaderpass.d.ts +++ b/types/three/three-shaderpass.d.ts @@ -1,24 +1,26 @@ -// Type definitions for three.js (ShaderPass.js) -// Project: https://github.com/mrdoob/three.js/blob/r68/examples/js/postprocessing/ShaderPass.js -// Definitions by: Satoru Kimura -// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +import { + Camera, + Mesh, + Scene, + Shader, + ShaderMaterial, + WebGLRenderTarget, + WebGLRenderer +} from "./three-core"; +export class ShaderPass { + constructor(shader: Shader, textureID?: string); -declare namespace THREE { - export class ShaderPass { - constructor(shader: Shader, textureID?: string); + textureID: string; + uniforms: any; + material: ShaderMaterial; + renderToScreen: boolean; + enabled: boolean; + needsSwap: boolean; + clear: boolean; + camera: Camera; + scene: Scene; + quad: Mesh; - textureID: string; - uniforms: any; - material: ShaderMaterial; - renderToScreen: boolean; - enabled: boolean; - needsSwap: boolean; - clear: boolean; - camera: Camera; - scene: Scene; - quad: Mesh; - - render(renderer: WebGLRenderer, writeBuffer: WebGLRenderTarget, readBuffer: WebGLRenderTarget, delta: number): void; - } -} + render(renderer: WebGLRenderer, writeBuffer: WebGLRenderTarget, readBuffer: WebGLRenderTarget, delta: number): void; +} \ No newline at end of file diff --git a/types/three/three-trackballcontrols.d.ts b/types/three/three-trackballcontrols.d.ts index aa81100a0d..88770ef79f 100644 --- a/types/three/three-trackballcontrols.d.ts +++ b/types/three/three-trackballcontrols.d.ts @@ -1,51 +1,45 @@ -// Type definitions for three.js (TrackballControls.js) -// Project: https://github.com/mrdoob/three.js/blob/master/examples/js/controls/TrackballControls.js -// Definitions by: Satoru Kimura -// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +import { Camera, EventDispatcher, Vector3 } from "./three-core"; +export class TrackballControls extends EventDispatcher { + constructor(object: Camera, domElement?: HTMLElement); -declare namespace THREE { - class TrackballControls extends EventDispatcher { - constructor(object: Camera, domElement?: HTMLElement); + object: Camera; + domElement: HTMLElement; - object: Camera; - domElement: HTMLElement; + // API + enabled: boolean; + screen: {left: number; top: number; width: number; height: number}; + rotateSpeed: number; + zoomSpeed: number; + panSpeed: number; + noRotate: boolean; + noZoom: boolean; + noPan: boolean; + noRoll: boolean; + staticMoving: boolean; + dynamicDampingFactor: number; + minDistance: number; + maxDistance: number; + keys: number[]; - // API - enabled: boolean; - screen: {left: number; top: number; width: number; height: number}; - rotateSpeed: number; - zoomSpeed: number; - panSpeed: number; - noRotate: boolean; - noZoom: boolean; - noPan: boolean; - noRoll: boolean; - staticMoving: boolean; - dynamicDampingFactor: number; - minDistance: number; - maxDistance: number; - keys: number[]; + target: Vector3; + position0: Vector3; + target0: Vector3; + up0: Vector3; - target: THREE.Vector3; - position0: THREE.Vector3; - target0: THREE.Vector3; - up0: THREE.Vector3; + update(): void; - update(): void; + reset(): void; - reset(): void; + checkDistances(): void; - checkDistances(): void; + zoomCamera(): void; - zoomCamera(): void; + panCamera(): void; - panCamera(): void; + rotateCamera(): void; - rotateCamera(): void; + handleResize(): void; - handleResize(): void; - - handleEvent(event: any): void; - } + handleEvent(event: any): void; } diff --git a/types/three/three-transformcontrols.d.ts b/types/three/three-transformcontrols.d.ts index 5d41149cd5..3f3713256d 100644 --- a/types/three/three-transformcontrols.d.ts +++ b/types/three/three-transformcontrols.d.ts @@ -1,30 +1,24 @@ -// Type definitions for three.js (TransformControls.js) -// Project: https://github.com/mrdoob/three.js/blob/master/examples/js/controls/TransformControls.js -// Definitions by: Stefan Profanter -// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +import { Camera, Object3D } from "./three-core"; +export class TransformControls extends Object3D { + constructor(object: Camera, domElement?: HTMLElement); -declare namespace THREE { - class TransformControls extends Object3D { - constructor(object: Camera, domElement?: HTMLElement); + object: Object3D; - object: Object3D; + update(): void; - update(): void; + detach(): void; - detach(): void; + attach(object: Object3D): void; - attach(object: Object3D): void; + getMode(): string; - getMode(): string; + setMode(mode: string): void; - setMode(mode: string): void; + setSnap(snap: any): void; - setSnap(snap: any): void; + setSize(size: number): void; - setSize(size: number): void; + setSpace(space: string): void; - setSpace(space: string): void; - - } } diff --git a/types/three/three-vrcontrols.d.ts b/types/three/three-vrcontrols.d.ts index 080923b7ef..a70839994d 100644 --- a/types/three/three-vrcontrols.d.ts +++ b/types/three/three-vrcontrols.d.ts @@ -1,24 +1,18 @@ -// Type definitions for three.js (VRControls.js) -// Project: https://github.com/mrdoob/three.js/blob/master/examples/js/controls/VRControls.js -// Definitions by: Toshiya Nakakura -// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped - -/// /// -declare namespace THREE { - export class VRControls { - constructor(camera: Camera, callback?: (param: string) => void); +import { Camera } from "./three-core"; - /** - * Update VR Instance Tracking - */ - update(): void; +export class VRControls { + constructor(camera: Camera, callback?: (param: string) => void); - zeroSensor(): void; + /** + * Update VR Instance Tracking + */ + update(): void; - scale: number; + zeroSensor(): void; - setVRDisplay(display: VRDisplay): void; - } + scale: number; + + setVRDisplay(display: VRDisplay): void; } diff --git a/types/three/three-vreffect.d.ts b/types/three/three-vreffect.d.ts index 0c47318657..e34a24a3ae 100644 --- a/types/three/three-vreffect.d.ts +++ b/types/three/three-vreffect.d.ts @@ -1,41 +1,35 @@ -// Type definitions for three.js (VREffect.js) -// Project: https://github.com/mrdoob/three.js/blob/master/examples/js/effects/VREffect.js -// Definitions by: Toshiya Nakakura -// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped - -/// /// -declare namespace THREE { - export class VREffect { - constructor(renderer: Renderer, callback?: (params: string) => void); +import { Camera, Matrix4, Renderer, Scene } from "./three-core"; - render(scene: Scene, camera: Camera): void; +export class VREffect { + constructor(renderer: Renderer, callback?: (params: string) => void); - setSize(width: number, height: number): void; + render(scene: Scene, camera: Camera): void; - setFullScreen(flag: boolean): void; + setSize(width: number, height: number): void; - startFullscreen(): void; + setFullScreen(flag: boolean): void; - FovToNDCScaleOffset(fov: VRFov): VREffectOffset; + startFullscreen(): void; - FovPortToProjection(fov: VRFov, rightHanded: boolean, zNear: number, zFar: number): Matrix4; + FovToNDCScaleOffset(fov: VRFov): VREffectOffset; - FovToProjection(fov: VRFov, rightHanded: boolean, zNear: number, zFar: number): Matrix4; + FovPortToProjection(fov: VRFov, rightHanded: boolean, zNear: number, zFar: number): Matrix4; - setVRDisplay(display: VRDisplay): void; - } + FovToProjection(fov: VRFov, rightHanded: boolean, zNear: number, zFar: number): Matrix4; - export interface VRFov { - leftTan: number; - rightTan: number; - upTan: number; - downTan: number; - } - - export interface VREffectOffset { - scale: number; - offset: number; - } + setVRDisplay(display: VRDisplay): void; } + +export interface VRFov { + leftTan: number; + rightTan: number; + upTan: number; + downTan: number; +} + +export interface VREffectOffset { + scale: number; + offset: number; +} \ No newline at end of file diff --git a/types/three/tsconfig.json b/types/three/tsconfig.json index 1eac096ec9..b28f68a442 100644 --- a/types/three/tsconfig.json +++ b/types/three/tsconfig.json @@ -16,41 +16,7 @@ "noEmit": true, "forceConsistentCasingInFileNames": true }, - "files": [ - "index.d.ts", - "test/three-tests-setup.ts", - "test/math/test_unit_math.ts", - "test/webgl/webgl_animation_cloth.ts", - "test/webgl/webgl_animation_skinning_morph.ts", - "test/webgl/webgl_buffergeometry.ts", - "test/webgl/webgl_camera.ts", - "test/webgl/webgl_custom_attributes.ts", - "test/webgl/webgl_geometries.ts", - "test/webgl/webgl_helpers.ts", - "test/webgl/webgl_interactive_cubes.ts", - "test/webgl/webgl_interactive_raycasting_points.ts", - "test/webgl/webgl_lensflares.ts", - "test/webgl/webgl_lights_hemisphere.ts", - "test/webgl/webgl_lines_colors.ts", - "test/webgl/webgl_loader_awd.ts", - "test/webgl/webgl_materials.ts", - "test/webgl/webgl_morphtargets.ts", - "test/webgl/webgl_points_billboards.ts", - "test/webgl/webgl_postprocessing.ts", - "test/webgl/webgl_shader.ts", - "test/webgl/webgl_sprites.ts", - "test/css3d/css3d_periodictable.ts", - "test/css3d/css3d_sprites.ts", - "test/canvas/canvas_camera_orthographic.ts", - "test/canvas/canvas_geometry_cube.ts", - "test/canvas/canvas_interactive_cubes_tween.ts", - "test/canvas/canvas_lights_pointlights.ts", - "test/canvas/canvas_materials.ts", - "test/canvas/canvas_particles_floor.ts", - "test/examples/detector.ts", - "test/examples/effects/vreffect.ts", - "test/examples/controls/vrcontrols.ts", - "test/examples/ctm/ctmloader.ts", - "test/examples/octree.ts" + "include": [ + "test/**/*" ] } From 66783b28696522cbb7b645fcf758310c4d59707a Mon Sep 17 00:00:00 2001 From: efokschaner Date: Fri, 14 Apr 2017 03:53:56 -0700 Subject: [PATCH 06/90] Switch tsconfig back to "files" --- types/three/tsconfig.json | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/types/three/tsconfig.json b/types/three/tsconfig.json index b28f68a442..4570abc6d4 100644 --- a/types/three/tsconfig.json +++ b/types/three/tsconfig.json @@ -16,7 +16,40 @@ "noEmit": true, "forceConsistentCasingInFileNames": true }, - "include": [ - "test/**/*" + "files": [ + "test/references.d.ts", + "test/math/test_unit_math.ts", + "test/webgl/webgl_animation_cloth.ts", + "test/webgl/webgl_animation_skinning_morph.ts", + "test/webgl/webgl_buffergeometry.ts", + "test/webgl/webgl_camera.ts", + "test/webgl/webgl_custom_attributes.ts", + "test/webgl/webgl_geometries.ts", + "test/webgl/webgl_helpers.ts", + "test/webgl/webgl_interactive_cubes.ts", + "test/webgl/webgl_interactive_raycasting_points.ts", + "test/webgl/webgl_lensflares.ts", + "test/webgl/webgl_lights_hemisphere.ts", + "test/webgl/webgl_lines_colors.ts", + "test/webgl/webgl_loader_awd.ts", + "test/webgl/webgl_materials.ts", + "test/webgl/webgl_morphtargets.ts", + "test/webgl/webgl_points_billboards.ts", + "test/webgl/webgl_postprocessing.ts", + "test/webgl/webgl_shader.ts", + "test/webgl/webgl_sprites.ts", + "test/css3d/css3d_periodictable.ts", + "test/css3d/css3d_sprites.ts", + "test/canvas/canvas_camera_orthographic.ts", + "test/canvas/canvas_geometry_cube.ts", + "test/canvas/canvas_interactive_cubes_tween.ts", + "test/canvas/canvas_lights_pointlights.ts", + "test/canvas/canvas_materials.ts", + "test/canvas/canvas_particles_floor.ts", + "test/examples/detector.ts", + "test/examples/effects/vreffect.ts", + "test/examples/controls/vrcontrols.ts", + "test/examples/ctm/ctmloader.ts", + "test/examples/octree.ts" ] } From 9f35df09aa6dbb3a5a6844ef23d1cded4e307e7d Mon Sep 17 00:00:00 2001 From: efokschaner Date: Fri, 14 Apr 2017 03:57:38 -0700 Subject: [PATCH 07/90] Remove unnecessary tween.js references --- types/three/test/css3d/css3d_periodictable.ts | 2 -- types/three/test/css3d/css3d_sprites.ts | 2 -- 2 files changed, 4 deletions(-) diff --git a/types/three/test/css3d/css3d_periodictable.ts b/types/three/test/css3d/css3d_periodictable.ts index 2d68cd2f53..5c8cb68614 100644 --- a/types/three/test/css3d/css3d_periodictable.ts +++ b/types/three/test/css3d/css3d_periodictable.ts @@ -1,5 +1,3 @@ -/// - // https://github.com/mrdoob/three.js/blob/master/examples/css3d_periodictable.html () => { diff --git a/types/three/test/css3d/css3d_sprites.ts b/types/three/test/css3d/css3d_sprites.ts index 41cf22ad47..4eda3d73a8 100644 --- a/types/three/test/css3d/css3d_sprites.ts +++ b/types/three/test/css3d/css3d_sprites.ts @@ -1,5 +1,3 @@ -/// - // https://github.com/mrdoob/three.js/blob/master/examples/css3d_sprites.html () => { From 96debbe784d810993546b106c2f80e26aceded69 Mon Sep 17 00:00:00 2001 From: efokschaner Date: Fri, 14 Apr 2017 04:23:57 -0700 Subject: [PATCH 08/90] Fix openjscad augmentation of THREE --- types/openjscad/index.d.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/types/openjscad/index.d.ts b/types/openjscad/index.d.ts index c6cae5d5cc..56026967a2 100644 --- a/types/openjscad/index.d.ts +++ b/types/openjscad/index.d.ts @@ -5,11 +5,11 @@ /// -declare namespace THREE { +declare module "three" { var CSG: { fromCSG: (csg: CSG, defaultColor: any) => { - colorMesh: Mesh; - wireframe: Mesh; + colorMesh: THREE.Mesh; + wireframe: THREE.Mesh; boundLen: number; }; getGeometryVertex: (geometry: any, vertex_position: any) => number; From 110b2a80f526288ed6c1e0a73fc21e8fe4b13b5d Mon Sep 17 00:00:00 2001 From: Tim Burnell Date: Fri, 14 Apr 2017 14:16:23 -0500 Subject: [PATCH 09/90] add aoa_to_sheet because it was missing below are still missing, but i require aoa only. split_cell: format_cell get_formulae make_csv make_json make_formulae table_to_sheet table_to_book sheet_to_row_object_array --- types/xlsx/index.d.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/types/xlsx/index.d.ts b/types/xlsx/index.d.ts index 0e05c860a8..4b745a9161 100644 --- a/types/xlsx/index.d.ts +++ b/types/xlsx/index.d.ts @@ -253,6 +253,8 @@ export interface IRange { } export interface IUtils { + /** converts an array of arrays of JS data to a worksheet. */ + aoa_to_sheet(data:Array, opts?:any); /** Converts a worksheet object to an array of JSON objects */ sheet_to_json(worksheet:IWorkSheet, opts?: { raw?: boolean; From 51b5fdc0719eab1bd57749cb553c612b20717fd2 Mon Sep 17 00:00:00 2001 From: Tim Burnell Date: Fri, 14 Apr 2017 15:37:22 -0500 Subject: [PATCH 10/90] fix formatting and types --- types/xlsx/index.d.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/types/xlsx/index.d.ts b/types/xlsx/index.d.ts index 4b745a9161..9b1b63405a 100644 --- a/types/xlsx/index.d.ts +++ b/types/xlsx/index.d.ts @@ -254,7 +254,8 @@ export interface IRange { export interface IUtils { /** converts an array of arrays of JS data to a worksheet. */ - aoa_to_sheet(data:Array, opts?:any); + aoa_to_sheet(data: , opts?:any): IWorkSheet; + /** Converts a worksheet object to an array of JSON objects */ sheet_to_json(worksheet:IWorkSheet, opts?: { raw?: boolean; From 73c2d769b8bd95a6ff54ea2c43bf53fa7091b0e7 Mon Sep 17 00:00:00 2001 From: Tim Burnell Date: Fri, 14 Apr 2017 15:49:38 -0500 Subject: [PATCH 11/90] fix error --- types/xlsx/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/xlsx/index.d.ts b/types/xlsx/index.d.ts index 9b1b63405a..3f3e45f297 100644 --- a/types/xlsx/index.d.ts +++ b/types/xlsx/index.d.ts @@ -254,7 +254,7 @@ export interface IRange { export interface IUtils { /** converts an array of arrays of JS data to a worksheet. */ - aoa_to_sheet(data: , opts?:any): IWorkSheet; + aoa_to_sheet(data: T[], opts?:any): IWorkSheet; /** Converts a worksheet object to an array of JSON objects */ sheet_to_json(worksheet:IWorkSheet, opts?: { From f562cd07a9adeca36f412ee580e5edb623d0420a Mon Sep 17 00:00:00 2001 From: Nick Redmond Date: Fri, 14 Apr 2017 14:49:45 -0700 Subject: [PATCH 12/90] react-native: Add mode property to DatePickerAndroid options --- types/react-native/index.d.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/types/react-native/index.d.ts b/types/react-native/index.d.ts index 1e6c084df7..951be4d785 100644 --- a/types/react-native/index.d.ts +++ b/types/react-native/index.d.ts @@ -6375,6 +6375,7 @@ export interface DatePickerAndroidOpenOption { date?: Date | number minDate?: Date | number maxDate?: Date | number + mode?: 'calendar' | 'spinner' | 'default' } // Deduced from DatePickerAndroid.android.js From dba8bd4cabafb6467f51a65b71a6b77fd29e501c Mon Sep 17 00:00:00 2001 From: efokschaner Date: Fri, 14 Apr 2017 23:04:12 -0700 Subject: [PATCH 13/90] Re-add accidentally deleted comment --- types/three/three-css3drenderer.d.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/types/three/three-css3drenderer.d.ts b/types/three/three-css3drenderer.d.ts index 40ffbbd054..0cc681221d 100644 --- a/types/three/three-css3drenderer.d.ts +++ b/types/three/three-css3drenderer.d.ts @@ -11,6 +11,8 @@ export class CSS3DSprite extends CSS3DObject { } +// This renderer does not work in IE. Can be found here for more information. +// https://github.com/mrdoob/three.js/issues/4783 export class CSS3DRenderer { constructor(); From 52371a816d7c1d406e28c6d83b48ab6bc9be8583 Mon Sep 17 00:00:00 2001 From: Thomas Hasner Date: Mon, 17 Apr 2017 21:13:24 -0400 Subject: [PATCH 14/90] `ComponentDecorator` input accepts `TOwnProps` --- types/react-redux/index.d.ts | 20 ++++++-------------- types/react-redux/react-redux-tests.tsx | 4 ++-- 2 files changed, 8 insertions(+), 16 deletions(-) diff --git a/types/react-redux/index.d.ts b/types/react-redux/index.d.ts index 1f300e02a6..ac48c13f44 100644 --- a/types/react-redux/index.d.ts +++ b/types/react-redux/index.d.ts @@ -1,6 +1,6 @@ // Type definitions for react-redux 4.4.0 // Project: https://github.com/rackt/react-redux -// Definitions by: Qubo , Sean Kelley +// Definitions by: Qubo , Sean Kelley , Thomas Hasner // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.1 @@ -9,22 +9,14 @@ import * as Redux from 'redux'; type ComponentClass

= React.ComponentClass

; type StatelessComponent

= React.StatelessComponent

; +type Component

= ComponentClass

| StatelessComponent

; type ReactNode = React.ReactNode; type Store = Redux.Store; type Dispatch = Redux.Dispatch; type ActionCreator = Redux.ActionCreator; -interface ComponentDecorator { - (component: ComponentClass | StatelessComponent): ComponentClass; -} - -/** - * Decorator that infers the type from the original component - * - * Can't use the above decorator because it would default the type to {} - */ -export interface InferableComponentDecorator { - | StatelessComponent

)>(component: TComponentConstruct): TComponentConstruct; +interface ComponentDecorator { + (component: Component): ComponentClass; } /** @@ -46,14 +38,14 @@ export interface InferableComponentDecorator { * @param mergeProps * @param options */ -export declare function connect(): InferableComponentDecorator; +export declare function connect(): ComponentDecorator; export declare function connect( mapStateToProps?: MapStateToProps | MapStateToPropsFactory, mapDispatchToProps?: MapDispatchToProps | MapDispatchToPropsFactory, mergeProps?: MergeProps, options?: Options -): ComponentDecorator; +): ComponentDecorator; interface MapStateToProps { (state: any, ownProps?: TOwnProps): TStateProps; diff --git a/types/react-redux/react-redux-tests.tsx b/types/react-redux/react-redux-tests.tsx index 4c7a55ea7b..2456f2a379 100644 --- a/types/react-redux/react-redux-tests.tsx +++ b/types/react-redux/react-redux-tests.tsx @@ -343,7 +343,7 @@ namespace TestTOwnPropsInference { state: string; } - class OwnPropsComponent extends React.Component { + class OwnPropsComponent extends React.Component { render() { return

; } @@ -359,7 +359,7 @@ namespace TestTOwnPropsInference { const ConnectedWithoutOwnProps = connect(mapStateToPropsWithoutOwnProps)(OwnPropsComponent); const ConnectedWithOwnProps = connect(mapStateToPropsWithOwnProps)(OwnPropsComponent); - const ConnectedWithTypeHint = connect(mapStateToPropsWithoutOwnProps)(OwnPropsComponent); + const ConnectedWithTypeHint = connect(mapStateToPropsWithoutOwnProps)(OwnPropsComponent); // This compiles, which is bad. React.createElement(ConnectedWithoutOwnProps, { anything: 'goes!' }); From f5237376e21a2aa596c99a684fd98da26ebc91eb Mon Sep 17 00:00:00 2001 From: satoshun00 Date: Tue, 18 Apr 2017 11:46:45 +0900 Subject: [PATCH 15/90] fixup! fix(mysql): Add definition for PoolCluster.end with callback --- types/mysql/index.d.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/types/mysql/index.d.ts b/types/mysql/index.d.ts index ab3f8009ac..7660feb374 100644 --- a/types/mysql/index.d.ts +++ b/types/mysql/index.d.ts @@ -100,8 +100,7 @@ interface IPoolCluster { add(config: IPoolConfig): void; add(group: string, config: IPoolConfig): void; - end(): void; - end(callback: (err: IError, ...args: any[]) => void): void; + end(callback?: (err: IError, ...args: any[]) => void): void; getConnection(callback: (err: IError, connection: IConnection) => void): void; getConnection(group: string, callback: (err: IError, connection: IConnection) => void): void; From 5f0393494077fcf04b914d87ce58892dc4234a3f Mon Sep 17 00:00:00 2001 From: Tom Hasner Date: Mon, 17 Apr 2017 22:57:58 -0400 Subject: [PATCH 16/90] fix --- types/react-redux/index.d.ts | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/types/react-redux/index.d.ts b/types/react-redux/index.d.ts index ac48c13f44..6eec9147a0 100644 --- a/types/react-redux/index.d.ts +++ b/types/react-redux/index.d.ts @@ -19,6 +19,15 @@ interface ComponentDecorator { (component: Component): ComponentClass; } +/** + * Decorator that infers the type from the original component + * + * Can't use the above decorator because it would default the type to {} + */ +export interface InferableComponentDecorator { + >(component: T): T; +} + /** * Connects a React component to a Redux store. * @@ -38,7 +47,7 @@ interface ComponentDecorator { * @param mergeProps * @param options */ -export declare function connect(): ComponentDecorator; +export declare function connect(): InferableComponentDecorator; export declare function connect( mapStateToProps?: MapStateToProps | MapStateToPropsFactory, @@ -84,9 +93,9 @@ interface Options { */ pure?: boolean; /** - * If true, stores a ref to the wrapped component instance and makes it available via - * getWrappedInstance() method. Defaults to false. - */ + * If true, stores a ref to the wrapped component instance and makes it available via + * getWrappedInstance() method. Defaults to false. + */ withRef?: boolean; } From 30b9603742856c86b1424d3bd77da4b140ee89b4 Mon Sep 17 00:00:00 2001 From: Mateusz Greszta Date: Tue, 18 Apr 2017 16:59:54 +0200 Subject: [PATCH 17/90] Improve types of 'instantiate' and 'invoke' of IInjectorService. The result is inferred form the argument, which removes the need of any cast. --- types/angular/angular-tests.ts | 16 ++++++++++++++++ types/angular/index.d.ts | 4 ++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/types/angular/angular-tests.ts b/types/angular/angular-tests.ts index 53fd245f1d..e6be93a6af 100644 --- a/types/angular/angular-tests.ts +++ b/types/angular/angular-tests.ts @@ -470,6 +470,22 @@ namespace TestInjector { $injector.annotate(() => {}); $injector.annotate(() => {}, true); + + // $injector.instantiate + { + class Foobar { + constructor($q) {} + } + let result: Foobar = $injector.instantiate(Foobar); + } + + // $injector.invoke + { + function foobar(v: boolean): number { + return 7; + } + let result: number = $injector.invoke(foobar); + } } // Promise signature tests diff --git a/types/angular/index.d.ts b/types/angular/index.d.ts index 727944fbb1..194ccf8205 100644 --- a/types/angular/index.d.ts +++ b/types/angular/index.d.ts @@ -1978,9 +1978,9 @@ declare namespace angular { get(name: '$window'): IWindowService; get(name: '$xhrFactory'): IXhrFactory; has(name: string): boolean; - instantiate(typeConstructor: Function, locals?: any): T; + instantiate(typeConstructor: {new(...args: any[]): T}, locals?: any): T; invoke(inlineAnnotatedFunction: any[]): any; - invoke(func: Function, context?: any, locals?: any): any; + invoke(func: (...args: any[]) => T, context?: any, locals?: any): T; strictDi: boolean; } From 0d96c339bccb58d2f37181411438ddb403c08f70 Mon Sep 17 00:00:00 2001 From: cwmoo740 Date: Tue, 18 Apr 2017 11:05:09 -0400 Subject: [PATCH 18/90] react-onclickoutside extend React.ComponentClass constructor to require returned component implement handleClickOutside function --- types/react-onclickoutside/index.d.ts | 41 ++++++++----- .../react-onclickoutside-tests.tsx | 58 ++++++++++++++----- 2 files changed, 68 insertions(+), 31 deletions(-) diff --git a/types/react-onclickoutside/index.d.ts b/types/react-onclickoutside/index.d.ts index 98bef683ad..05c086fac1 100644 --- a/types/react-onclickoutside/index.d.ts +++ b/types/react-onclickoutside/index.d.ts @@ -1,29 +1,38 @@ -// Type definitions for react-onclickoutside v5.7.0 +// Type definitions for react-onclickoutside 5.7 // Project: https://github.com/Pomax/react-onclickoutside // Definitions by: Karol Janyst // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.1 -import * as React from "react"; +import * as React from 'react'; -declare namespace ReactOnClickOutside { - interface OnClickOutsideComponent { - handleClickOutside(e: React.MouseEvent): void +declare namespace OnClickOut { + interface HandleClickOutside { + handleClickOutside: React.MouseEventHandler; } - interface OnClickOutsideProps { - disableOnClickOutside?: boolean | Function - enableOnClickOutside?: Function - eventTypes?: string | Array - outsideClickIgnoreClass?: string - preventDefault?: boolean - stopPropagation?: boolean + interface InjectedOnClickOutProps { + disableOnClickOutside(): void; + enableOnClickOutside(): void; } - interface onClickOutside { - (component: React.ComponentClass | React.StatelessComponent): React.ComponentClass + interface OnClickOutProps { + disableOnClickOutside?: boolean; + eventTypes?: string | string[]; + outsideClickIgnoreClass?: string; + preventDefault?: boolean; + stopPropagation?: boolean; } } -declare const onClickOutside: ReactOnClickOutside.onClickOutside -export = onClickOutside; \ No newline at end of file +type ComponentConstructor

= React.ComponentClass

| React.StatelessComponent

; +interface ClickOutComponentClass

extends React.ComponentClass

{ + new (props?: P, context?: any): React.Component & OnClickOut.HandleClickOutside; +} + +declare function OnClickOut

( + component: ComponentConstructor

> + | ClickOutComponentClass

+): React.ComponentClass

; + +export = OnClickOut; diff --git a/types/react-onclickoutside/react-onclickoutside-tests.tsx b/types/react-onclickoutside/react-onclickoutside-tests.tsx index fc782bb68c..f6ed316683 100644 --- a/types/react-onclickoutside/react-onclickoutside-tests.tsx +++ b/types/react-onclickoutside/react-onclickoutside-tests.tsx @@ -1,21 +1,49 @@ -import * as React from "react" -import { Component, StatelessComponent, MouseEvent } from "react" -import { render } from "react-dom" -import * as onClickOutside from "react-onclickoutside" +import * as React from 'react'; +import { Component, MouseEvent, StatelessComponent } from 'react'; +import { render } from 'react-dom'; +import * as onClickOutside from 'react-onclickoutside'; -interface TestProps {} - -var TestStateless: StatelessComponent = (props: TestProps) => { - return (

Test
) +function TestStateless(props: { handleClickOutside(): void; }) { + return ( +
Test
+ ); } -var TestStatelessWrapped = onClickOutside(TestStateless) +const TestStatelessWrapped = onClickOutside(TestStateless); render( - , + console.log('Stateless HandleClickOutside')} + />, document.getElementById("main") -) \ No newline at end of file +); + +class TestComponent extends React.Component<{ disableOnClickOutside(): void; enableOnClickOutside(): void; }, {}> { + handleClickOutside = () => { + console.log('this.handleClickOutside'); + } + + render() { + this.props.disableOnClickOutside(); + this.props.enableOnClickOutside(); + return ( +
TestComponent
+ ); + } +} + +const WrappedComponent = onClickOutside<{}>(TestComponent); + +render( + , + document.getElementById("main") +); From 960ae288feffaa810e91d7fbf3a43925e32d61c6 Mon Sep 17 00:00:00 2001 From: cwmoo740 Date: Tue, 18 Apr 2017 11:15:29 -0400 Subject: [PATCH 19/90] react-onclickoutside add tslint.json --- types/react-onclickoutside/tslint.json | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 types/react-onclickoutside/tslint.json diff --git a/types/react-onclickoutside/tslint.json b/types/react-onclickoutside/tslint.json new file mode 100644 index 0000000000..d88586e5bd --- /dev/null +++ b/types/react-onclickoutside/tslint.json @@ -0,0 +1,3 @@ +{ + "extends": "dtslint/dt.json" +} From 416c0f9c3df391ca24139d18f750506edd3180ce Mon Sep 17 00:00:00 2001 From: Thomas Hasner Date: Tue, 18 Apr 2017 13:51:36 -0400 Subject: [PATCH 20/90] Use `TOwnProps` instead of `IOwnProps` --- types/react-redux/index.d.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/types/react-redux/index.d.ts b/types/react-redux/index.d.ts index 6eec9147a0..dc85bc86eb 100644 --- a/types/react-redux/index.d.ts +++ b/types/react-redux/index.d.ts @@ -24,8 +24,8 @@ interface ComponentDecorator { * * Can't use the above decorator because it would default the type to {} */ -export interface InferableComponentDecorator { - >(component: T): T; +export interface InferableComponentDecorator { + >(component: T): T; } /** From da129b12a14916698ee0b11d59732b04268509cf Mon Sep 17 00:00:00 2001 From: kamek-pf Date: Tue, 18 Apr 2017 13:55:37 -0400 Subject: [PATCH 21/90] fixed tests --- types/thrift/thrift-tests.ts | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/types/thrift/thrift-tests.ts b/types/thrift/thrift-tests.ts index 0d3ff97277..7c11c92163 100644 --- a/types/thrift/thrift-tests.ts +++ b/types/thrift/thrift-tests.ts @@ -1,6 +1,10 @@ -// Currently, the thrift bindings are minimal just to support the thrift generated -// evernote bindings. Add more tests if you flesh out and plan to use the thrift -// bindings more deeply. -import evernote = require("evernote"); +import Thrift = require('thrift'); -1 + 1; +const fakeGeneratedService: any = {}; +const fakeServiceMethods: any = {}; +const fakeConnectionParams: any = {}; + +Thrift.createServer(fakeGeneratedService, fakeServiceMethods); + +const clientConnection = Thrift.createConnection('0.0.0.0', 1234, fakeConnectionParams); +Thrift.createClient(fakeGeneratedService, clientConnection); From 4806da7caf8503aa1a83c3db18d5201c377db711 Mon Sep 17 00:00:00 2001 From: kamek-pf Date: Tue, 18 Apr 2017 14:41:23 -0400 Subject: [PATCH 22/90] fixed dtslint errors --- types/evernote/index.d.ts | 2 +- types/thrift/index.d.ts | 4 +++- types/thrift/thrift-tests.ts | 2 +- types/thrift/tslint.json | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/types/evernote/index.d.ts b/types/evernote/index.d.ts index 18e0e13e1c..6a28d2e627 100644 --- a/types/evernote/index.d.ts +++ b/types/evernote/index.d.ts @@ -3,7 +3,7 @@ // Definitions by: Zachary Collins // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -import { Thrift } from "thrift"; +import * as Thrift from 'thrift'; declare namespace Evernote { interface Callback { diff --git a/types/thrift/index.d.ts b/types/thrift/index.d.ts index aea4bdf01a..ed3fb13659 100644 --- a/types/thrift/index.d.ts +++ b/types/thrift/index.d.ts @@ -1,10 +1,12 @@ -// Type definitions for thrift 0.10.0 +// Type definitions for thrift 0.10 // Project: https://www.npmjs.com/package/thrift // Definitions by: Kamek // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped export as namespace Thrift; +export class TException {} + /** * Protocols and Transports */ diff --git a/types/thrift/thrift-tests.ts b/types/thrift/thrift-tests.ts index 7c11c92163..98d3ab89a2 100644 --- a/types/thrift/thrift-tests.ts +++ b/types/thrift/thrift-tests.ts @@ -1,4 +1,4 @@ -import Thrift = require('thrift'); +import * as Thrift from 'thrift'; const fakeGeneratedService: any = {}; const fakeServiceMethods: any = {}; diff --git a/types/thrift/tslint.json b/types/thrift/tslint.json index f9e30021f4..f93cf8562a 100644 --- a/types/thrift/tslint.json +++ b/types/thrift/tslint.json @@ -1,3 +1,3 @@ { - "extends": "../tslint.json" + "extends": "dtslint/dt.json" } From 52d30d8cf99b163c76912da0e2f2e1df09fbd141 Mon Sep 17 00:00:00 2001 From: Pavel Ivanov Date: Wed, 19 Apr 2017 11:37:41 +0300 Subject: [PATCH 23/90] Update type definition for ValidationOptions interface - According to the docs it can be an object as well --- types/joi/index.d.ts | 10 +++++++--- types/joi/joi-tests.ts | 3 +++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/types/joi/index.d.ts b/types/joi/index.d.ts index 4fe2ed1282..7030ce4fb2 100644 --- a/types/joi/index.d.ts +++ b/types/joi/index.d.ts @@ -1,6 +1,6 @@ // Type definitions for joi v10.0.0 // Project: https://github.com/hapijs/joi -// Definitions by: Bart van der Schoor , Laurence Dougal Myers , Christopher Glantschnig , David Broder-Rodgers , Gael Magnan de Bornier , Rytis Alekna +// Definitions by: Bart van der Schoor , Laurence Dougal Myers , Christopher Glantschnig , David Broder-Rodgers , Gael Magnan de Bornier , Rytis Alekna , Pavel Ivanov // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TODO express type of Schema in a type-parameter (.default, .valid, .example etc) @@ -25,9 +25,13 @@ export interface ValidationOptions { */ skipFunctions?: boolean; /** - * when true, unknown keys are deleted (only when value is an object). Defaults to false. + * remove unknown elements from objects and arrays. Defaults to false + * - when true, all unknown elements will be removed + * - when an object: + * - arrays - set to true to remove unknown items from arrays. + * - objects - set to true to remove unknown keys from objects */ - stripUnknown?: boolean; + stripUnknown?: boolean | {arrays: boolean} | {objects: boolean} | {arrays: boolean; objects: boolean}; /** * overrides individual error messages. Defaults to no override ({}). */ diff --git a/types/joi/joi-tests.ts b/types/joi/joi-tests.ts index 4226fc4f6a..f35a124183 100644 --- a/types/joi/joi-tests.ts +++ b/types/joi/joi-tests.ts @@ -55,6 +55,9 @@ validOpts = {convert: bool}; validOpts = {allowUnknown: bool}; validOpts = {skipFunctions: bool}; validOpts = {stripUnknown: bool}; +validOpts = {stripUnknown: {arrays: bool}}; +validOpts = {stripUnknown: {objects: bool}}; +validOpts = {stripUnknown: {arrays: bool, objects: bool}}; validOpts = {language: bool}; validOpts = {presence: str}; validOpts = {context: obj}; From 22f1881cb13c31a1f89e9f35f5cc9205d122108e Mon Sep 17 00:00:00 2001 From: Pavel Ivanov Date: Wed, 19 Apr 2017 11:46:31 +0300 Subject: [PATCH 24/90] Bump version --- types/joi/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/joi/index.d.ts b/types/joi/index.d.ts index 7030ce4fb2..c11bcb9daf 100644 --- a/types/joi/index.d.ts +++ b/types/joi/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for joi v10.0.0 +// Type definitions for joi v10.3.0 // Project: https://github.com/hapijs/joi // Definitions by: Bart van der Schoor , Laurence Dougal Myers , Christopher Glantschnig , David Broder-Rodgers , Gael Magnan de Bornier , Rytis Alekna , Pavel Ivanov // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped From 6d28e7b0bf11d3666155de5505f6adc5075bb545 Mon Sep 17 00:00:00 2001 From: Andy Date: Wed, 19 Apr 2017 10:08:17 -0700 Subject: [PATCH 25/90] bluebird/v1: Change name of type Promise type parameter to `T` (#15992) --- types/bluebird/v1/index.d.ts | 60 ++++++++++++++++++------------------ 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/types/bluebird/v1/index.d.ts b/types/bluebird/v1/index.d.ts index ab1cd02add..298abff0d7 100644 --- a/types/bluebird/v1/index.d.ts +++ b/types/bluebird/v1/index.d.ts @@ -16,19 +16,19 @@ // TODO verify support to have no return statement in handlers to get a Promise (more overloads?) -declare class Promise implements Promise.Thenable { +declare class Promise implements Promise.Thenable { /** * Create a new promise. The passed in function will receive functions `resolve` and `reject` as its arguments which can be called to seal the fate of the created promise. */ - constructor(callback: (resolve: (thenableOrResult: R | Promise.Thenable) => void, reject: (error: any) => void) => void); + constructor(callback: (resolve: (thenableOrResult: T | Promise.Thenable) => void, reject: (error: any) => void) => void); /** * Promises/A+ `.then()` with progress handler. Returns a new promise chained from this promise. The new promise will be rejected or resolved dedefer on the passed `fulfilledHandler`, `rejectedHandler` and the state of this promise. */ - then(onFulfill: (value: R) => Promise.Thenable, onReject: (error: any) => Promise.Thenable, onProgress?: (note: any) => any): Promise; - then(onFulfill: (value: R) => Promise.Thenable, onReject?: (error: any) => U, onProgress?: (note: any) => any): Promise; - then(onFulfill: (value: R) => U, onReject: (error: any) => Promise.Thenable, onProgress?: (note: any) => any): Promise; - then(onFulfill?: (value: R) => U, onReject?: (error: any) => U, onProgress?: (note: any) => any): Promise; + then(onFulfill: (value: T) => Promise.Thenable, onReject: (error: any) => Promise.Thenable, onProgress?: (note: any) => any): Promise; + then(onFulfill: (value: T) => Promise.Thenable, onReject?: (error: any) => U, onProgress?: (note: any) => any): Promise; + then(onFulfill: (value: T) => U, onReject: (error: any) => Promise.Thenable, onProgress?: (note: any) => any): Promise; + then(onFulfill?: (value: T) => U, onReject?: (error: any) => U, onProgress?: (note: any) => any): Promise; /** * This is a catch-all exception handler, shortcut for calling `.then(null, handler)` on this promise. Any exception happening in a `.then`-chain will propagate to nearest `.catch` handler. @@ -71,55 +71,55 @@ declare class Promise implements Promise.Thenable { * * Alias `.lastly();` for compatibility with earlier ECMAScript version. */ - finally(handler: (value: R) => Promise.Thenable): Promise; - finally(handler: (value: R) => R): Promise; - finally(handler: (value: R) => void): Promise; + finally(handler: (value: T) => Promise.Thenable): Promise; + finally(handler: (value: T) => T): Promise; + finally(handler: (value: T) => void): Promise; - lastly(handler: (value: R) => Promise.Thenable): Promise; - lastly(handler: (value: R) => R): Promise; - lastly(handler: (value: R) => void): Promise; + lastly(handler: (value: T) => Promise.Thenable): Promise; + lastly(handler: (value: T) => T): Promise; + lastly(handler: (value: T) => void): Promise; /** * Create a promise that follows this promise, but is bound to the given `thisArg` value. A bound promise will call its handlers with the bound value set to `this`. Additionally promises derived from a bound promise will also be bound promises with the same `thisArg` binding as the original promise. */ - bind(thisArg: any): Promise; + bind(thisArg: any): Promise; /** * Like `.then()`, but any unhandled rejection that ends up here will be thrown as an error. */ - done(onFulfilled: (value: R) => Promise.Thenable, onRejected: (error: any) => Promise.Thenable, onProgress?: (note: any) => any): Promise; - done(onFulfilled: (value: R) => Promise.Thenable, onRejected?: (error: any) => U, onProgress?: (note: any) => any): Promise; - done(onFulfilled: (value: R) => U, onRejected: (error: any) => Promise.Thenable, onProgress?: (note: any) => any): Promise; - done(onFulfilled?: (value: R) => U, onRejected?: (error: any) => U, onProgress?: (note: any) => any): Promise; + done(onFulfilled: (value: T) => Promise.Thenable, onRejected: (error: any) => Promise.Thenable, onProgress?: (note: any) => any): Promise; + done(onFulfilled: (value: T) => Promise.Thenable, onRejected?: (error: any) => U, onProgress?: (note: any) => any): Promise; + done(onFulfilled: (value: T) => U, onRejected: (error: any) => Promise.Thenable, onProgress?: (note: any) => any): Promise; + done(onFulfilled?: (value: T) => U, onRejected?: (error: any) => U, onProgress?: (note: any) => any): Promise; /** * Shorthand for `.then(null, null, handler);`. Attach a progress handler that will be called if this promise is progressed. Returns a new promise chained from this promise. */ - progressed(handler: (note: any) => any): Promise; + progressed(handler: (note: any) => any): Promise; /** * Same as calling `Promise.delay(this, ms)`. With the exception that if this promise is bound to a value, the returned promise is bound to that value too. */ - delay(ms: number): Promise; + delay(ms: number): Promise; /** * Returns a promise that will be fulfilled with this promise's fulfillment value or rejection reason. However, if this promise is not fulfilled or rejected within `ms` milliseconds, the returned promise is rejected with a `Promise.TimeoutError` instance. * * You may specify a custom error message with the `message` parameter. */ - timeout(ms: number, message?: string): Promise; + timeout(ms: number, message?: string): Promise; /** * Register a node-style callback on this promise. When this promise is is either fulfilled or rejected, the node callback will be called back with the node.js convention where error reason is the first argument and success value is the second argument. The error argument will be `null` in case of success. * Returns back this promise instead of creating a new one. If the `callback` argument is not a function, this method does not do anything. */ - nodeify(callback: (err: any, value?: R) => void): Promise; + nodeify(callback: (err: any, value?: T) => void): Promise; nodeify(...sink: any[]): void; /** * Marks this promise as cancellable. Promises by default are not cancellable after v0.11 and must be marked as such for `.cancel()` to have any effect. Marking a promise as cancellable is infectious and you don't need to remark any descendant promise. */ - cancellable(): Promise; + cancellable(): Promise; /** * Cancel this promise. The cancellation will propagate to farthest cancellable ancestor promise which is still pending. @@ -136,15 +136,15 @@ declare class Promise implements Promise.Thenable { /** * Like `.then()`, but cancellation of the the returned promise or any of its descendant will not propagate cancellation to this promise or this promise's ancestors. */ - fork(onFulfilled: (value: R) => Promise.Thenable, onRejected: (error: any) => Promise.Thenable, onProgress?: (note: any) => any): Promise; - fork(onFulfilled: (value: R) => Promise.Thenable, onRejected?: (error: any) => U, onProgress?: (note: any) => any): Promise; - fork(onFulfilled: (value: R) => U, onRejected: (error: any) => Promise.Thenable, onProgress?: (note: any) => any): Promise; - fork(onFulfilled?: (value: R) => U, onRejected?: (error: any) => U, onProgress?: (note: any) => any): Promise; + fork(onFulfilled: (value: T) => Promise.Thenable, onRejected: (error: any) => Promise.Thenable, onProgress?: (note: any) => any): Promise; + fork(onFulfilled: (value: T) => Promise.Thenable, onRejected?: (error: any) => U, onProgress?: (note: any) => any): Promise; + fork(onFulfilled: (value: T) => U, onRejected: (error: any) => Promise.Thenable, onProgress?: (note: any) => any): Promise; + fork(onFulfilled?: (value: T) => U, onRejected?: (error: any) => U, onProgress?: (note: any) => any): Promise; /** * Create an uncancellable promise based on this promise. */ - uncancellable(): Promise; + uncancellable(): Promise; /** * See if this promise can be cancelled. @@ -174,7 +174,7 @@ declare class Promise implements Promise.Thenable { /** * Synchronously inspect the state of this `promise`. The `PromiseInspection` will represent the state of the promise as snapshotted at the time of calling `.inspect()`. */ - inspect(): Promise.Inspection; + inspect(): Promise.Inspection; /** * This is a convenience method for doing: @@ -229,8 +229,8 @@ declare class Promise implements Promise.Thenable { * * Alias `.thenThrow();` for compatibility with earlier ECMAScript version. */ - throw(reason: Error): Promise; - thenThrow(reason: Error): Promise; + throw(reason: Error): Promise; + thenThrow(reason: Error): Promise; /** * Convert to String. From 04ed17061ccd7afe65627ea10d5ccd2edc563835 Mon Sep 17 00:00:00 2001 From: Andy Date: Wed, 19 Apr 2017 10:08:57 -0700 Subject: [PATCH 26/90] svg-pan-zoom: Don't delete local variable (#15990) --- types/svg-pan-zoom/svg-pan-zoom-tests.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/types/svg-pan-zoom/svg-pan-zoom-tests.ts b/types/svg-pan-zoom/svg-pan-zoom-tests.ts index b51642ee54..317bb2149d 100644 --- a/types/svg-pan-zoom/svg-pan-zoom-tests.ts +++ b/types/svg-pan-zoom/svg-pan-zoom-tests.ts @@ -1,5 +1,3 @@ - - var svgPanZoomOptions : SvgPanZoom.Options = { panEnabled: true // enable or disable panning (default enabled) , controlIconsEnabled: false // insert icons to give user an option in addition to mouse events to control pan/zoom (default disabled) @@ -113,5 +111,3 @@ panZoomTiger.updateBBox(); panZoomTiger.fit().center(); // can chain method panZoomTiger.destroy(); // destroy instance - -delete panZoomTiger; \ No newline at end of file From 00e7404aa102e6a7d62412d3c973d452544481d6 Mon Sep 17 00:00:00 2001 From: Andy Date: Wed, 19 Apr 2017 10:09:09 -0700 Subject: [PATCH 27/90] pouchdb-find: Fix typo (#15988) --- types/pouchdb-find/pouchdb-find-tests.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/pouchdb-find/pouchdb-find-tests.ts b/types/pouchdb-find/pouchdb-find-tests.ts index 6854d28e8f..d9fe07536f 100644 --- a/types/pouchdb-find/pouchdb-find-tests.ts +++ b/types/pouchdb-find/pouchdb-find-tests.ts @@ -19,7 +19,7 @@ function testFind() { selector: { // test id _id: { - gt: null + $gt: null }, // conditions From 525be6811da95eff7298e673ebdaf231eb811b7e Mon Sep 17 00:00:00 2001 From: Andy Date: Wed, 19 Apr 2017 10:09:20 -0700 Subject: [PATCH 28/90] node: Fix `typeof` error (#15987) --- types/node/v6/node-tests.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/node/v6/node-tests.ts b/types/node/v6/node-tests.ts index 2348bd2dd6..0e03b1d94a 100644 --- a/types/node/v6/node-tests.ts +++ b/types/node/v6/node-tests.ts @@ -446,7 +446,7 @@ function stream_readable_pipe_test() { assert(typeof r.bytesRead === 'number'); assert(typeof r.path === 'string'); - assert(typeof rs.path === 'Buffer'); + assert(rs.path instanceof Buffer); r.pipe(z).pipe(w); From 80f957b8e6a342c1b4891ab393da39e7c78e36aa Mon Sep 17 00:00:00 2001 From: Andy Date: Wed, 19 Apr 2017 10:09:29 -0700 Subject: [PATCH 29/90] n3: Don't use class before declaration (#15986) --- types/n3/n3-tests.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/types/n3/n3-tests.ts b/types/n3/n3-tests.ts index 13247dfdb2..d3c664c61e 100644 --- a/types/n3/n3-tests.ts +++ b/types/n3/n3-tests.ts @@ -61,9 +61,7 @@ function test_doc_rdf_stream_to_triples_1() { var streamParser = N3.StreamParser(); var rdfStream = fs.createReadStream('cartoons.ttl'); rdfStream.pipe(streamParser); - streamParser.pipe(new SlowConsumer()); - - class SlowConsumer extends stream.Writable { + streamParser.pipe(new class SlowConsumer extends stream.Writable { constructor() { super({ objectMode: true }); this._write = function (triple, encoding, done) { @@ -71,7 +69,7 @@ function test_doc_rdf_stream_to_triples_1() { setTimeout(done, 1000); }; } - } + }); } function test_doc_from_triples_to_string() { From 9ee1d80490b60b48aff97b7b5ebe0214da9bbf63 Mon Sep 17 00:00:00 2001 From: Andy Date: Wed, 19 Apr 2017 10:09:54 -0700 Subject: [PATCH 30/90] Mithril: fix new excess property check (#15985) --- types/mithril/test/test-api.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/mithril/test/test-api.ts b/types/mithril/test/test-api.ts index f042baaaa6..2aebecb87e 100644 --- a/types/mithril/test/test-api.ts +++ b/types/mithril/test/test-api.ts @@ -116,7 +116,7 @@ const FRAME_BUDGET = 100; { // define a component - const Greeter: m.Comp<{}, {}> = { + const Greeter: m.Comp<{ style: string }, {}> = { view(vnode) { return m("div", vnode.attrs, ["Hello ", vnode.children]); } From e13ecba9659958f5303e280027f5ad0b43d72957 Mon Sep 17 00:00:00 2001 From: Andy Date: Wed, 19 Apr 2017 10:10:19 -0700 Subject: [PATCH 31/90] d3: Fix new --noImplicitAny error (#15984) --- types/d3/v3/d3-tests.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/types/d3/v3/d3-tests.ts b/types/d3/v3/d3-tests.ts index 959b85bda5..87b57e8261 100644 --- a/types/d3/v3/d3-tests.ts +++ b/types/d3/v3/d3-tests.ts @@ -27,7 +27,7 @@ function testPieChart() { .append("g") .attr("transform", "translate(" + width / 2 + "," + height / 2 + ")"); - d3.csv("data.csv", d => ({ population: +d['population'], age: d['age'] }), function (error, data) { + d3.csv("data.csv", d => ({ population: +d['population'], age: d['age'] }), function (error: any, data: any) { var g = svg.selectAll(".arc") .data(pie(data)) .enter().append("g") @@ -301,7 +301,7 @@ function normalizedBarChart() { .append("g") .attr("transform", "translate(" + margin.left + "," + margin.top + ")"); - d3.csv("data.csv", function (error, data) { + d3.csv("data.csv", function (error: any, data: any) { color.domain(d3.keys(data[0]).filter(function (key) { return key !== "State"; })); data.forEach(function (d: any) { @@ -494,7 +494,7 @@ function callenderView() { .attr("class", "month") .attr("d", monthPath); - d3.csv("dji.csv", function (error, csv) { + d3.csv("dji.csv", function (error: any, csv: any) { var data = d3.nest() .key(function (d: any) { return d.Date; }) .rollup(function (d: any) { return (d[0].Close - d[0].Open) / d[0].Open; }) From 8966463273dd4541b47f51318ae8faa458ea462a Mon Sep 17 00:00:00 2001 From: Andy Date: Wed, 19 Apr 2017 10:10:56 -0700 Subject: [PATCH 32/90] bookshelf: Don't use class before declaration (#15982) --- types/bookshelf/bookshelf-tests.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/types/bookshelf/bookshelf-tests.ts b/types/bookshelf/bookshelf-tests.ts index 98fd0f4599..61718a4274 100644 --- a/types/bookshelf/bookshelf-tests.ts +++ b/types/bookshelf/bookshelf-tests.ts @@ -257,11 +257,6 @@ class Library extends bookshelf.Model { /* new Model(), see http://bookshelfjs.org/#Model */ { - new Book({ - title: "One Thousand and One Nights", - author: "Scheherazade" - }); - class Book extends bookshelf.Model { get tableName() { return 'documents'; } @@ -273,6 +268,11 @@ class Library extends bookshelf.Model { }); } } + + new Book({ + title: "One Thousand and One Nights", + author: "Scheherazade" + }); } /* model.initialize(), see http://bookshelfjs.org/#Model-instance-initialize */ From b29618c24c3e8f65699715bcac513b357d611aea Mon Sep 17 00:00:00 2001 From: Andy Date: Wed, 19 Apr 2017 10:11:08 -0700 Subject: [PATCH 33/90] arcgis-js-api: Don't export from tests (#15981) --- types/arcgis-js-api/arcgis-js-api-tests.ts | 4 +--- types/arcgis-js-api/v3/arcgis-js-api-tests.ts | 2 -- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/types/arcgis-js-api/arcgis-js-api-tests.ts b/types/arcgis-js-api/arcgis-js-api-tests.ts index 0624c88672..d5dfb99406 100644 --- a/types/arcgis-js-api/arcgis-js-api-tests.ts +++ b/types/arcgis-js-api/arcgis-js-api-tests.ts @@ -2,8 +2,6 @@ import Map = require("esri/Map"); import MapView = require("esri/views/MapView"); import Point = require("esri/geometry/Point"); -export = MapController; - class MapController { map: Map; @@ -19,7 +17,7 @@ class MapController { this.map = new Map({ basemap: "topo" }); - + let view = new MapView({ center: point, container: this.mapDiv, diff --git a/types/arcgis-js-api/v3/arcgis-js-api-tests.ts b/types/arcgis-js-api/v3/arcgis-js-api-tests.ts index ee6c5105fd..23fb7af03b 100644 --- a/types/arcgis-js-api/v3/arcgis-js-api-tests.ts +++ b/types/arcgis-js-api/v3/arcgis-js-api-tests.ts @@ -2,8 +2,6 @@ import esri = require("esri"); import Map = require("esri/map"); import Point = require("esri/geometry/Point"); -export = MapController; - class MapController { map: Map; From cf913c723de4f1d53e7dbe95c07e9408641e3199 Mon Sep 17 00:00:00 2001 From: Andy Date: Wed, 19 Apr 2017 10:11:33 -0700 Subject: [PATCH 34/90] applepayjs: Fix lint error (#15980) --- types/applepayjs/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/applepayjs/index.d.ts b/types/applepayjs/index.d.ts index 9e2c1c1c22..34d3c41a99 100644 --- a/types/applepayjs/index.d.ts +++ b/types/applepayjs/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for Apple Pay JS 1.0.1 +// Type definitions for Apple Pay JS 1.0 // Project: https://developer.apple.com/reference/applepayjs // Definitions by: Martin Costello // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped From 29afba8cf7545590f5597d1a0a272852e37dafde Mon Sep 17 00:00:00 2001 From: Andy Date: Wed, 19 Apr 2017 11:59:58 -0700 Subject: [PATCH 35/90] webappsec-credential-management: Remove fetch definition and require ts2.2 (#15996) --- .../index.d.ts | 142 +----------------- 1 file changed, 1 insertion(+), 141 deletions(-) diff --git a/types/webappsec-credential-management/index.d.ts b/types/webappsec-credential-management/index.d.ts index 1851eddba7..36e6bf5c6a 100644 --- a/types/webappsec-credential-management/index.d.ts +++ b/types/webappsec-credential-management/index.d.ts @@ -2,150 +2,10 @@ // Project: https://github.com/w3c/webappsec-credential-management // Definitions by: Iain McGinniss // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.2 // Spec: http://www.w3.org/TR/2016/WD-credential-management-1-20160425/ -/* ************************ FETCH API DEFINITIONS ****************************** - * TS 2.2 introduced definitions for the fetch API in the dom library, but - * prior to that it was necessary to use the types defined in - * @types/whatwg-fetch. In order to support all versions of TS 2.x, the - * definitions for fetch from TS 2.2 dom are duplicated here. As long as these - * remain identical to the definitions in dom 2.2+, they cause no issues. - * - * One caveat to "identical" here is that type definitions cannot be duplicated, - * and so the "RequestInfo" type has been substituted for its expansion in - * the below definitions: - * - * type RequestInfo = Request|string; - * ************************************************************************** */ - -interface Request extends Object, Body { - readonly cache: string; - readonly credentials: string; - readonly destination: string; - readonly headers: Headers; - readonly integrity: string; - readonly keepalive: boolean; - readonly method: string; - readonly mode: string; - readonly redirect: string; - readonly referrer: string; - readonly referrerPolicy: string; - readonly type: string; - readonly url: string; - clone(): Request; -} - -declare var Request: { - prototype: Request; - new(input: Request | string, init?: RequestInit): Request; -}; - -interface Headers { - append(name: string, value: string): void; - delete(name: string): void; - forEach(callback: ForEachCallback): void; - get(name: string): string | null; - has(name: string): boolean; - set(name: string, value: string): void; -} - -declare var Headers: { - prototype: Headers; - new(init?: any): Headers; -}; - -interface Response extends Object, Body { - readonly body: ReadableStream | null; - readonly headers: Headers; - readonly ok: boolean; - readonly status: number; - readonly statusText: string; - readonly type: string; - readonly url: string; - clone(): Response; -} - -declare var Response: { - prototype: Response; - new(body?: any, init?: ResponseInit): Response; -}; - -interface ResponseInit { - status?: number; - statusText?: string; - headers?: any; -} - -interface ReadableStream { - readonly locked: boolean; - cancel(): Promise; - getReader(): ReadableStreamReader; -} - -declare var ReadableStream: { - prototype: ReadableStream; - new(): ReadableStream; -}; - -interface ReadableStreamReader { - cancel(): Promise; - read(): Promise; - releaseLock(): void; -} - -declare var ReadableStreamReader: { - prototype: ReadableStreamReader; - new(): ReadableStreamReader; -}; - -interface Body { - readonly bodyUsed: boolean; - arrayBuffer(): Promise; - blob(): Promise; - json(): Promise; - text(): Promise; -} - -interface URLSearchParams { - /** - * Appends a specified key/value pair as a new search parameter. - */ - append(name: string, value: string): void; - /** - * Deletes the given search parameter, and its associated value, from the list of all search parameters. - */ - delete(name: string): void; - /** - * Returns the first value associated to the given search parameter. - */ - get(name: string): string | null; - /** - * Returns all the values association with a given search parameter. - */ - getAll(name: string): string[]; - /** - * Returns a Boolean indicating if such a search parameter exists. - */ - has(name: string): boolean; - /** - * Sets the value associated to a given search parameter to the given value. If there were several values, delete the others. - */ - set(name: string, value: string): void; -} - -declare var URLSearchParams: { - prototype: URLSearchParams; - /** - * Constructor returning a URLSearchParams object. - */ - new (init?: string | URLSearchParams): URLSearchParams; -}; - -interface GlobalFetch { - fetch(input: Request|string, init?: RequestInit): Promise; -} - /* ************************* FETCH MODIFICATIONS ******************************* * The credential management spec modifies fetch(), by adding a new * "request credentials mode", and permitting a PasswordCredential to be passed From 71acb3b8e3fe8cceddaf1eabe17871f20ae69efd Mon Sep 17 00:00:00 2001 From: Andy Date: Wed, 19 Apr 2017 12:45:52 -0700 Subject: [PATCH 36/90] blissfuljs: Don't rely on global definitions of AriaRequestEvent and CommandEvent (#15997) --- types/blissfuljs/index.d.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/types/blissfuljs/index.d.ts b/types/blissfuljs/index.d.ts index 76061c1391..9174ee4e94 100644 --- a/types/blissfuljs/index.d.ts +++ b/types/blissfuljs/index.d.ts @@ -251,6 +251,16 @@ declare namespace BlissNS { (expr: Node, context?: Element): [Node]; } + interface AriaRequestEvent extends Event { + readonly attributeName: string; + attributeValue: string | null; + } + + interface CommandEvent extends Event { + readonly commandName: string; + readonly detail: string | null; + } + // Native methods added into "_" property, but methods that return "void" now return thi stype in order to be chainables // Methods are All HTMLElement a ELement methods interface BlissNativeExtentions { From 13496b9ac261e398d0407c37463a1187b9cb539c Mon Sep 17 00:00:00 2001 From: Andy Date: Wed, 19 Apr 2017 13:19:48 -0700 Subject: [PATCH 37/90] chocolatechipjs: Lint and remove definitions that are already in lib.dom.d.ts (#16001) --- .../chocolatechipjs/chocolatechipjs-tests.ts | 185 ++++++----- types/chocolatechipjs/index.d.ts | 301 ++++-------------- types/chocolatechipjs/tslint.json | 10 + 3 files changed, 157 insertions(+), 339 deletions(-) create mode 100644 types/chocolatechipjs/tslint.json diff --git a/types/chocolatechipjs/chocolatechipjs-tests.ts b/types/chocolatechipjs/chocolatechipjs-tests.ts index 7036358aed..bbb6ae72e3 100644 --- a/types/chocolatechipjs/chocolatechipjs-tests.ts +++ b/types/chocolatechipjs/chocolatechipjs-tests.ts @@ -2,23 +2,23 @@ $(function() { alert('Ready to do stuff!'); }); -var docRoot = $(); -var divTag = $('div'); -var divClass = $('.div'); -var divID = $('#div'); -var divAttr = $('[name=div]'); -var documentElement = $(); -var divTag2 = $(divTag); -var nodeName = divTag2[0].nodeName; +const docRoot = $(); +const divTag = $('div'); +const divClass = $('.div'); +const divID = $('#div'); +const divAttr = $('[name=div]'); +const documentElement = $(); +const divTag2 = $(divTag); +const nodeName = divTag2[0].nodeName; // Assorted properties and functions on ChocolateChipStatic: -var version = $.version; -var libraryName = $.libraryName; -var els = $('li'); -var madeEls = $.make('

Stuff

'); -var moreEls = $.html('

Stuff

'); -var oldTag = $('#oldTag'); -var newTag = $('#newTag'); +const version = $.version; +const libraryName = $.libraryName; +const els = $('li'); +const madeEls = $.make('

Stuff

'); +const moreEls = $.html('

Stuff

'); +const oldTag = $('#oldTag'); +const newTag = $('#newTag'); $.replace(oldTag, newTag); $.require('./scripts/myscript.js', function() { $.noop; @@ -26,9 +26,8 @@ $.require('./scripts/myscript.js', function() { $.defer(function() { console.log("This comes after Squawk!"); }); -var concatenation = $.concat('This', ' ', 'is', ' ', 'a', ' ', 'string', '.'); -var arrayOfStringWords = $.w('This is a string'); - +const concatenation = $.concat('This', ' ', 'is', ' ', 'a', ' ', 'string', '.'); +const arrayOfStringWords = $.w('This is a string'); // Boolean tests: $.isString('This is a string'); @@ -41,7 +40,7 @@ $.isNumber(123); $.isInteger(123); $.isInteger(123.123); // should return false $.isFloat(123.123); // should return true -var newUuid = $.makeUuid(); +const newUuid = $.makeUuid(); $.each(['a', 'b', 'c'], function(ctx: string, idx: number) { console.log(ctx); console.log(idx); @@ -50,7 +49,7 @@ $.each(['a', 'b', 'c'], function(ctx: string, idx: number) { // Plugin interface for ChocolateChipElementArray: $.fn.extend({ whateverProperty: "whatever", - whateverMethod: function() { + whateverMethod() { alert("Whatever!"); } }); @@ -59,11 +58,11 @@ $.fn.extend({ $('li').each(function(ctx, idx) { console.log(ctx.nodeName); }); -var uniqueElements = $('li').unique(); -var secondElement = $('li').eq(1); -var lastElement = $('li').eq(-1); -var whichIndex = $('li').index($('.selected')); -var whichListItemIndex = $('li').eq(3).index(); +const uniqueElements = $('li').unique(); +const secondElement = $('li').eq(1); +const lastElement = $('li').eq(-1); +const whichIndex = $('li').index($('.selected')); +const whichListItemIndex = $('li').eq(3).index(); $('.elems').is('div').each(function(ctx) { console.log('This element is a div.'); }); @@ -71,20 +70,20 @@ $('.elems').isnt('p').each(function() { console.log('This element is not a paragraph tag.'); }); $('li').has('p').each(function(ctx) { - console.log('This list item has a paragraph tag.') + console.log('This list item has a paragraph tag.'); }); $('li').hasnt('p').each(function(ctx) { - console.log('This list item does not have a paragraph tag.') + console.log('This list item does not have a paragraph tag.'); }); $('ul').find('li').each(function(ctx) { console.log(ctx); }); $('li').css('color'); $('li').css('color', 'red'); -$('li').css({ "color": "red", "background-color": "yellow" }); -var elemWidth = $('#header').width(); -var elemHeight = $('#header').height(); -var offset = $('h1').offset(); +$('li').css({ color: "red", "background-color": "yellow" }); +const elemWidth = $('#header').width(); +const elemHeight = $('#header').height(); +const offset = $('h1').offset(); console.log(offset.top); console.log(offset.left); console.log(offset.bottom); @@ -93,7 +92,7 @@ $('li.selected').prependTo('#selectedItems'); $('li.selected').appendTo('#selectedItems'); $('ul').before("

Subtitle

"); $('ul').after("

Footer stuff here.

"); -var h1Text = $('h1').text(); +const h1Text = $('h1').text(); $('h1').text('The New Title'); $('ul').insert("
  • 1
  • 2
  • 3
  • ", "first"); $('ul').insert("
  • 1
  • 2
  • 3
  • ", "last"); @@ -101,12 +100,12 @@ $('ul').insert("
  • 1
  • 2
  • 3
  • ", 3); $('ul').insert("
  • 1
  • 2
  • 3
  • "); $('ul').html('
  • 1
  • <2/li>
  • 3
  • '); $('ul').html(''); -var listContent = $('ul').html(); +const listContent = $('ul').html(); $('ul').prepend('
  • The title
  • '); $('ul').append('
  • The Last Item
  • '); -var inputName = $('input').attr('name'); +const inputName = $('input').attr('name'); $('input').attr('name', 'wobba'); -var inputProperty = $('input').prop('disabled'); +const inputProperty = $('input').prop('disabled'); $('input[type=checked]').prop('checked', true); $('input').removeProp('disabled'); $('input').hasAttr('disabled').css('border', 'solid 1px red'); @@ -116,8 +115,8 @@ $('article').addClass('current'); $('article').removeClass('current'); $('article').toggleClass("current"); $('h1').dataset('status', 'ready'); -var theStatus = $('h1').dataset('status'); -var theText = $('textarea').val(); +const theStatus = $('h1').dataset('status'); +const theText = $('textarea').val(); $('textarea').val('This is the new text.'); $('input').disable(); $('input').enable(); @@ -146,21 +145,21 @@ $('#list').ancestor(5).css('margin', "20px"); $('#list').closest('article').css('margin', "20px"); $('button').siblings().css('padding', "20px"); $('button').siblings("p").css('padding', "20px"); -var cloned = $('#list').clone(); +const cloned = $('#list').clone(); $('#list').wrap('
    '); $('#list').unwrap(); $('#list').remove(); $('#list').empty(); -var thePrice = $('#list').data('price'); +const thePrice = $('#list').data('price'); $('#list').data('price', '$1000'); $('#list').removeData('price'); // Animate: $('#list').animate({ - "transform": "rotate3d(30, 150, 200, 180deg) scale(3) translate3d(-50%, -30%, 140%)", - "opacity": .25, + transform: "rotate3d(30, 150, 200, 180deg) scale(3) translate3d(-50%, -30%, 140%)", + opacity: .25, "transform-style": "preserve-3d", - "perspective": 500 + perspective: 500 }, '2s', "ease-in-out" @@ -169,37 +168,34 @@ $('#list').animate({ // Form to JSON: $.form2JSON($('form')[0], '.'); - // Strings: $.camelize("this-is-a-string"); // should return "thisIsAString" $.deCamelize("thisIsAString"); // Should return "this-is-a-string" $.capitalize("a string"); // Should return "A string" $.capitalize("a string", true); // Should return "A STRING" - // Booleans: -var isiPhone = $.isiPhone; -var isiPad = $.isiPad; -var isiPod = $.isiPod; -var isiOS = $.isiOS; -var isAndroid = $.isAndroid; -var isWebOS = $.isWebOS; -var isBlackberry = $.isBlackberry; -var isTouchEnabled = $.isTouchEnabled; -var isOnline = $.isOnline; -var isStandalone = $.isStandalone; -var isiOS6 = $.isiOS6; -var isiOS7 = $.isiOS7; -var isWin = $.isWin; -var isWinPhone = $.isWinPhone; -var isIE10 = $.isIE10; -var isIE11 = $.isIE11; -var isWebkit = $.isWebkit; -var isMobile = $.isMobile; -var isDesktop = $.isDesktop; -var isSafari = $.isSafari; -var isNativeAndroid = $.isNativeAndroid; - +const isiPhone = $.isiPhone; +const isiPad = $.isiPad; +const isiPod = $.isiPod; +const isiOS = $.isiOS; +const isAndroid = $.isAndroid; +const isWebOS = $.isWebOS; +const isBlackberry = $.isBlackberry; +const isTouchEnabled = $.isTouchEnabled; +const isOnline = $.isOnline; +const isStandalone = $.isStandalone; +const isiOS6 = $.isiOS6; +const isiOS7 = $.isiOS7; +const isWin = $.isWin; +const isWinPhone = $.isWinPhone; +const isIE10 = $.isIE10; +const isIE11 = $.isIE11; +const isWebkit = $.isWebkit; +const isMobile = $.isMobile; +const isDesktop = $.isDesktop; +const isSafari = $.isSafari; +const isNativeAndroid = $.isNativeAndroid; // Events: $('li').bind('click', function() { @@ -216,9 +212,9 @@ $('ul').undelegate('click', 'li', function() { }, false); $('li').on('click', function() { $.noop; -}) +}); $('ul').on('click', 'li', function() { - console.log($(this).text()) + console.log($(this).text()); }); $('li').off('click'); $('li').off('click', 'li'); @@ -228,11 +224,11 @@ $('.selected').data('selection', 'This is awesome!'); // set the value of data v $('.selected').data('selection'); // return the data value of "selection" on ".selected" // Promises: -var myPromise = new Promise(function(resolve, reject) { +let myPromise = new Promise(function(resolve, reject) { $.noop; }); -var myPromise = new Promise(function(resolve, reject) { +myPromise = new Promise(function(resolve, reject) { // Resolve the promise: resolve('Success!'); // or reject it: @@ -248,23 +244,23 @@ myPromise.then(function(value) { }); // Fetch API -//=========== +// =========== // GET: interface WineObject { - data: Array; + data: WineInterface[]; } interface WineInterface { wine: { name: string; - } + }; } fetch('../data/wines.json') .then($.json) -.then(function(obj: any):any { +.then(function(obj: any): any { $('#message_ajax').empty(); obj.data.forEach(function(wine: any) { $('#message_ajax').append('
  • ' + wine.name + '
  • '); - }) + }); }); // POST: @@ -273,7 +269,7 @@ interface postData { name: string; msg: string; } -var formData = $.serialize($('form')[0]); +const formData = $.serialize($('form')[0]); fetch('../controllers/php-post.php', { method: 'post', headers: { @@ -283,7 +279,7 @@ fetch('../controllers/php-post.php', { }) .then($.json) .then(function(data: any): any { - if(data.email_check == "valid"){ + if (data.email_check === "valid") { $("#message_ajax").html("
    " + data.email + " is a valid e-mail address. Thank you, " + data.name + ".
    "); $("#message_ajax").append('

    ' + data.msg + '

    '); } else { @@ -296,7 +292,7 @@ interface putData { result: string; fileName: string; } -var putData = $('#fileText').val(); +const putData = $('#fileText').val(); fetch('../controllers/php-put.php', { method: 'put', headers: { @@ -305,22 +301,21 @@ fetch('../controllers/php-put.php', { body: putData }) .then($.json) -.then(function(data:any): any { +.then(function(data: any): any { console.dir(data.base); $("#message_ajax").append('

    ' + data.result + '

    '); $("#message_ajax").append('

    The file name is: ' + data.fileName + '

    '); }) -.catch(function(error:Error) { +.catch(function(error: Error) { console.log(error); $("#message_ajax").html("
    Sorry, put was not successful.
    "); }); - // DELETE: interface deleteData { result: string; } -var file = $('#fileName').val(); +const file = $('#fileName').val(); fetch('../controllers/php-delete.php', { method: 'delete', headers: { @@ -334,7 +329,7 @@ fetch('../controllers/php-delete.php', { $("#message_ajax").append('

    ' + data.result + '

    '); }, function(data: any) { - console.log('PROBLEM') + console.log('PROBLEM'); console.log(data); }) .catch(function(error: any) { @@ -343,7 +338,7 @@ function(data: any) { }); // Timeout: -var formData2 = $.serialize($('form')[0]); +const formData2 = $.serialize($('form')[0]); fetch('../controllers/php-post.php', { method: 'post', headers: { @@ -355,7 +350,7 @@ fetch('../controllers/php-post.php', { }) .then($.json) .then(function (data: any): any { - if (data.email_check == "valid") { + if (data.email_check === "valid") { $("#message_ajax").html("
    " + data.email + " is a valid e-mail address. Thank you, " + data.name + ".
    "); $("#message_ajax").append('

    ' + data.msg + '

    '); } else { @@ -377,27 +372,27 @@ $.jsonp('https://api.github.com/users/rbiggs/repos?name=chipper', {timeout: 1000 }); }) .catch(function(error: any): any { - $('#message_ajax').append("
  • " + error.message + "
  • ") + $('#message_ajax').append("
  • " + error.message + "
  • "); }); // Templates: -var myTemplate = '
  • Name: [[= data.name]]
  • '; -var userInfo = { +const myTemplate = '
  • Name: [[= data.name]]
  • '; +const userInfo = { name: 'Wobba', age: 100, job: 'Rocket Scientist', salary: '$1,000,000,000' }; -var parsedTempl8 = $.template(myTemplate); +const parsedTempl8 = $.template(myTemplate); $('#user').html(parsedTempl8(userInfo)); // Output a simple array of data: -var simpleArray = ['One', 'Two', 'Three', 'Four', 'Five']; -var repeaterTmplate1 = '
  • [[= data ]]
  • '; +const simpleArray = ['One', 'Two', 'Three', 'Four', 'Five']; +const repeaterTmplate1 = '
  • [[= data ]]
  • '; $.template.repeater($('#arrayList'), repeaterTmplate1, simpleArray); // Output an array of objects: -var luminaries = { +const luminaries = { persons: [ { firstName: "Albert", lastName: "Einstein" }, @@ -407,7 +402,7 @@ var luminaries = { { firstName: "Nicholas", lastName: "Copernicus" } ] }; -var repeaterTmplate2 = '
  • [[= data.firstName ]], [[= data.lastName]]
  • '; +const repeaterTmplate2 = '
  • [[= data.firstName ]], [[= data.lastName]]
  • '; // Pass in the array of persons: $.template.repeater($('#objectArrayList'), repeaterTmplate2, luminaries.persons); @@ -416,10 +411,10 @@ $.template.data['myRepeater'] = [{ name: "Joe" }, { name: "Sally" }, {name: "Tom $.template.repeater(); // Pub/Sub: -var arraySubscriber = function(topic: string, data: any): any { +const arraySubscriber = function(topic: string, data: any): any { $('.list').append('
  • ' + topic + '

    ' + data + '

  • '); }; -var newsSubscription = $.subscribe('news/update', arraySubscriber); +const newsSubscription = $.subscribe('news/update', arraySubscriber); $.publish('news/update', 'The New York Stock Exchange rose an unprecedented 1000 points in just three minutes. Analysts and investors are confused and uncertain how to respond.'); $.unsubscribe('news/update'); // Due to being unsubscribed above, this does nothing: diff --git a/types/chocolatechipjs/index.d.ts b/types/chocolatechipjs/index.d.ts index f1e0701e39..0e33e087c3 100644 --- a/types/chocolatechipjs/index.d.ts +++ b/types/chocolatechipjs/index.d.ts @@ -1,9 +1,10 @@ -// Type definitions for chocolatechip v4.0.4 +// Type definitions for chocolatechip 4.0 // Project: https://github.com/chocolatechipui/ChocolateChipJS // Definitions by: Robert Biggs // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -interface ChocolateChipStatic { +// TypeScript Version: 2.2 +interface ChocolateChipStatic { /** * Accepts a string containing a CSS selector which is then used to match a set of elements. * @@ -21,7 +22,6 @@ interface ChocolateChipStatic { */ (callback: () => any): void; - /** * Accepts a string containing a CSS selector which is then used to match a set of elements. * @@ -45,7 +45,7 @@ interface ChocolateChipStatic { * @return document[] */ (document: Document): Document[]; - + /** * If no argument is provided, return the document as a ChocolateChipElementArray. * @return Document[] @@ -118,7 +118,6 @@ interface ChocolateChipStatic { */ makeUuid(): string; - /** * Create a ChocolateChip collection object by creating elements from an HTML string. * @@ -196,7 +195,9 @@ interface ChocolateChipStatic { defer(callback: Function): Function; /** - * This method makes sure a method always returns an array. If no values are available to return, it returns and empty array. This is to make sure that methods that expect a chainable array will not throw and exception. + * This method makes sure a method always returns an array. + * If no values are available to return, it returns and empty array. + * This is to make sure that methods that expect a chainable array will not throw and exception. * * @param result The result of a method to test if it can be returned in an array. * @return An array holding the results of a method, otherwise an empty array. @@ -489,7 +490,6 @@ interface ChocolateChipStatic { * */ template: { - /** * This method parses a string and an optoinal variable name and returns a parsed template in the form of a function. You can then pass this function data to get rendered nodes. * @@ -503,20 +503,19 @@ interface ChocolateChipStatic { * The repeater method used to rendering iterable template data. */ repeater: { - /** * Use this method to render declarative temlate repeaters. This expects a "data-repeater" attribute whose value points to data stored on $.template.data. */ (): void; - + /** - * A method to repeated output a template. - * - * @param element The target container into which the content will be inserted. - * @param template A string of markup. - * @param data The iterable data the template will consume. - * @return void. - */ + * A method to repeated output a template. + * + * @param element The target container into which the content will be inserted. + * @param template A string of markup. + * @param data The iterable data the template will consume. + * @return void. + */ (element: ChocolateChipElementArray, template: string, data: any): void; } @@ -535,8 +534,11 @@ interface ChocolateChipStatic { }; /** - * ATENTION: DO NOT TOUCH! This is the ChocolateChipJS cache. This is used to store details about registered events and data. You should not touch any of these values, even though they are exposed, as this can seriously impair the behavior of your app. - * + * ATENTION: DO NOT TOUCH! + * This is the ChocolateChipJS cache. + * This is used to store details about registered events and data. + * You should not touch any of these values, even though they are exposed, as this can seriously impair the behavior of your app. + * * data: this is used by $(element).data() to store data. * events: this is used by the event system. */ @@ -545,7 +547,7 @@ interface ChocolateChipStatic { * DO NOT TOUCH! This hold data stored by $(element).data(). */ data: {}; - + /** * DO NOT TOUCH! This stores information about registered events. */ @@ -556,17 +558,13 @@ interface ChocolateChipStatic { hasKey: Function; _delete: Function; } - } - + }; } - /** * Interface for ChocolateChipJS Element Collections. */ - interface ChocolateChipElementArray extends Array { - /** * Iterate over an Array object, executing a function for each matched element. * @@ -652,7 +650,7 @@ interface ChocolateChipElementArray extends Array { * @ return HTMLElement[] */ has(selector: string): ChocolateChipElementArray; - + /** * Reduce the set of matched elements to those that have a descendant that matches the selector or DOM element. * @@ -668,7 +666,7 @@ interface ChocolateChipElementArray extends Array { * @ return HTMLElement[] */ hasnt(selector: string): ChocolateChipElementArray; - + /** * Reduce the set of matched elements to those that have a descendant that does not match the selector or DOM element. * @@ -857,10 +855,10 @@ interface ChocolateChipElementArray extends Array { * @return HTMLElement[] */ prop(propertyName: string, value: any | boolean): ChocolateChipElementArray; - + /** * Remove an element property. - * + * * @param property The property to remove. * @return HTMLElement[] */ @@ -934,11 +932,11 @@ interface ChocolateChipElementArray extends Array { dataset(key: string, value: any): ChocolateChipElementArray; /** - * Retrieve a dataset key's value for the first element in the element collection. - * - * @param key A string naming the piece of data to set. - * @return HTMLElement[] - */ + * Retrieve a dataset key's value for the first element in the element collection. + * + * @param key A string naming the piece of data to set. + * @return HTMLElement[] + */ dataset(key: string): ChocolateChipElementArray; /** @@ -1137,7 +1135,10 @@ interface ChocolateChipElementArray extends Array { /** * Set the content of each element in the set of matched elements to the specified text. * - * @param text The text to set as the content of each matched element. When Number is supplied, it will be converted to a String representation. To delete text, use ChocolateChipElementArray.empty() or ChocolateChipElementArray.remove(). + * @param text + * The text to set as the content of each matched element. + * When Number is supplied, it will be converted to a String representation. + * To delete text, use ChocolateChipElementArray.empty() or ChocolateChipElementArray.remove(). * @return HTMLElement */ text(text: string | number): HTMLElement; @@ -1219,145 +1220,16 @@ interface ChocolateChipElementArray extends Array { off(eventType?: string, selector?: any, handler?: (eventObject: Event) => any, capturePhase?: boolean): ChocolateChipStatic; /** - * Trigger an event on an element. - * - * @param eventType The event to trigger. - * @return void - */ + * Trigger an event on an element. + * + * @param eventType The event to trigger. + * @return void + */ trigger(eventType: string): void; } -/** - * Represents the completion of an asynchronous operation - */ -interface Promise { - /** - * Attaches callbacks for the resolution and/or rejection of the Promise. - * - * @param onfulfilled The callback to execute when the Promise is resolved. - * @param onrejected The callback to execute when the Promise is rejected. - * @return Promise A Promise for the completion of which ever callback is executed. - * @return Promise A new Promise - */ - then(onfulfilled?: (value: T) => TResult | Promise, onrejected?: (reason: any) => TResult | Promise): Promise; - - /** - * Attaches a callback for only the rejection of the Promise. - * - * @param onrejected The callback to execute when the Promise is rejected. - * @return Promise A Promise for the completion of the callback. - * @return Promise A new Promise - */ - catch(onrejected?: (reason: any) => T | Promise): Promise; -} - -interface PromiseConstructor { - /** - * Creates a new Promise. - * - * @param init A callback used to initialize the promise. This callback is passed two arguments: a resolve callback used resolve the promise with a value or the result of another promise, and a reject callback used to reject the promise with a provided reason or error. - * @return Promise A new Proimise - */ - new (init: (resolve: (value?: T | Promise) => void, reject: (reason?: any) => void) => void): Promise; - - (init: (resolve: (value?: T | Promise) => void, reject: (reason?: any) => void) => void): Promise; - - /** - * Creates a Promise that is resolved with an array of results when all of the provided Promises resolve, or rejected when any Promise is rejected. - * - * @param values An array of Promises. - * @return Promise A new Promise. - */ - all(values: (T | Promise)[]): Promise; - - /** - * Creates a Promise that is resolved with an array of results when all of the provided Promises resolve, or rejected when any Promise is rejected. - * - * @param values An array of values. - * @returns A new Promise. - */ - all(values: Promise[]): Promise; - - /** - * Creates a Promise that is resolved or rejected when any of the provided Promises are resolved or rejected. - * - * @param values An array of Promises. - * @return Promise A new Promise. - */ - race(values: (T | Promise)[]): Promise; - - /** - * Creates a new rejected promise for the provided reason. - * - * @param reason The reason the promise was rejected. - * @return Promise A new rejected Promise. - */ - reject(reason: any): Promise; - - /** - * Creates a new rejected promise for the provided reason. - * - * @param reason The reason the promise was rejected. - * @return void A Promise is rejected. - */ - reject(reason: any): Promise; - - /** - * Creates a new resolved promise for the provided value. - * - * @param value A promise. - * @return Promise A promise whose internal state matches the provided promise. - */ - resolve(value: T | Promise): Promise; - - /** - * Creates a new resolved promise. - * - * @return Promise A resolved promise. - */ - resolve(): Promise; -} - -declare var Promise: PromiseConstructor; -declare type ByteString = string; -declare type USVString = string; -declare type DOMString = string; -declare type OpenEndedDictionary = Object; - -/** - * Interface for fetch API. - * - * @param input A string representing a valid url. - * @param init An object literal of key value pairs to set method, headers, body, credentials or cache. - * @return Promise. - */ -interface fetch { - (input: string, - init?: { - method?: string; - headers?: {}; - body?: any; - mode?: { - cors: string; - "no-cors": string; - "same-origin": string; - }; - credentials?: { - omit: string; - "same-origin": string; - include: string; - }; - cache?: { - default: string; - "no-store": string; - reload: string; - "no-cache": string; - "force-cache": string; - "only-if-cached": string; - }; - timeout?: number; - }): Promise; -} +type DOMString = string; +type OpenEndedDictionary = Object; /** * Headers Interface. This defines the methods exposed by the Headers object. @@ -1373,81 +1245,20 @@ interface Headers { forEach(callback: Function, thisArg: any): any; } -interface decode { - (body: any): FormData; -} - -/** - * Request Interface. This defines the properties and methods exposed by the Request object. - */ -interface Request { - (input: { - url: string; - request: Request; - }, init: Object): Request; - clone(): Request; - arrayBuffer(): ArrayBuffer; - blob(): Blob; - formData(): FormData; - json(): JSON; - text(): string; - - method: string; - url: string; - heaers: Headers; - context: any; - referrer: any; - mode: string; - credentials: any; - cache: string; - bodyUsed: boolean; -} - -interface URLSearchParams { - ():URLSearchParams; -} - -/** - * Resonse Interface. This defines the properties and methods exposed by the Response object. - */ -interface Response { - (body?: { - blob: Blob; - bormData: FormData; - urlParams: URLSearchParams; - url: string; - }, - init?: { - status?: string | number; - statusText?: string; - headers: Headers; - }): Response; - clone(): Response; - redirect(): Response; - arrayBuffer(): ArrayBuffer; - blob(): Blob; - formData(): FormData; - json(): JSON; - text(): string; - - type: string; - url: string; - useFinalURL: boolean; - ok: boolean; - statusText: string; - headers: Headers; - bodyUsed: boolean; +interface RequestInit { + timeout?: number; } interface ChocolateChipStatic { - /** - * A cache to hold callbacks execute by the response from a JSONP request. This is an array of strings. By default these values get purged when the callback execute and exposes the data returned by the request. + * A cache to hold callbacks execute by the response from a JSONP request. + * This is an array of strings. + * By default these values get purged when the callback execute and exposes the data returned by the request. */ JSONPCallbacks: string[]; /** - * Method to perform JSONP request. - * + * Method to perform JSONP request. + * * @param url A string defining the url to target. * @param options And object literal of properties: {timeout? number, callbackName?: string, clear?: boolean} */ @@ -1456,17 +1267,20 @@ interface ChocolateChipStatic { * A number representing milliseconds to express when to refect a JSONP request. */ timeout?: number; - + /** - * The optional name for the callback when the server response will execute. The default value is "callback". However some sites may use a different name for their JSONP function. Consult the documentation on the site to ascertain the correct value for this callback. + * The optional name for the callback when the server response will execute. + * The default value is "callback". + * However some sites may use a different name for their JSONP function. + * Consult the documentation on the site to ascertain the correct value for this callback. */ callbackName?: string; - + /** * This value determines whether the callbacks and script associate with JSONP persist or are purged after the request returns. By default this is set to true, meaning that they will be purged. */ clear?: boolean; - }): any + }): any; } interface Window { @@ -1475,6 +1289,5 @@ interface Window { jsonp: any; } declare var $: ChocolateChipStatic; -declare var fetch: fetch; -declare var chocolatechipjs: ChocolateChipStatic; \ No newline at end of file +declare var chocolatechipjs: ChocolateChipStatic; diff --git a/types/chocolatechipjs/tslint.json b/types/chocolatechipjs/tslint.json new file mode 100644 index 0000000000..e502fddef8 --- /dev/null +++ b/types/chocolatechipjs/tslint.json @@ -0,0 +1,10 @@ +{ + "extends": "dtslint/dt.json", + "rules": { + // TODOs + "adjacent-overload-signatures": false, + "ban-types": false, + "only-arrow-functions": false, + "unified-signatures": false + } +} From 3a18123b9e5f5dead4da309c41b05189ff2e7250 Mon Sep 17 00:00:00 2001 From: Andy Date: Wed, 19 Apr 2017 13:45:24 -0700 Subject: [PATCH 38/90] webgl2: Fix compatibility with lib.dom.d.ts in TypeScript 2.3 (#15994) --- types/webgl2/index.d.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/types/webgl2/index.d.ts b/types/webgl2/index.d.ts index 22d1773f1c..fe1846a120 100644 --- a/types/webgl2/index.d.ts +++ b/types/webgl2/index.d.ts @@ -327,7 +327,7 @@ interface WebGL2RenderingContext extends WebGLRenderingContext { // WebGL1 legacy entrypoints: texImage2D(target: number, level: number, internalformat: number, width: number, height: number, border: number, format: number, - type: number, pixels?: ArrayBufferView): void; + type: number, pixels?: ArrayBufferView | null): void; texImage2D(target: number, level: number, internalformat: number, format: number, type: number, source: ImageData | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement): void; // May throw DOMException texImage2D(target: number, level: number, internalformat: number, @@ -335,7 +335,7 @@ interface WebGL2RenderingContext extends WebGLRenderingContext { texSubImage2D(target: number, level: number, xoffset: number, yoffset: number, width: number, height: number, - format: number, type: number, pixels?: ArrayBufferView): void; + format: number, type: number, pixels?: ArrayBufferView | null): void; texSubImage2D(target: number, level: number, xoffset: number, yoffset: number, format: number, type: number, source: ImageData | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement): void; // May throw DOMException texSubImage2D(target: number, level: number, xoffset: number, yoffset: number, From 68d74285e63b89981bbd6feddab7d34a40e84574 Mon Sep 17 00:00:00 2001 From: Andy Date: Wed, 19 Apr 2017 13:57:06 -0700 Subject: [PATCH 39/90] webcomponents.js: Convert to external module and make compatible with TS2.3 (#15998) * webcomponents.js: Convert to external module and make compatible with TS2.3 * Use in polymer --- types/polymer/index.d.ts | 652 +++++++++--------- types/webcomponents.js/index.d.ts | 108 ++- types/webcomponents.js/tslint.json | 6 + .../webcomponents.js-tests.ts | 16 +- 4 files changed, 393 insertions(+), 389 deletions(-) create mode 100644 types/webcomponents.js/tslint.json diff --git a/types/polymer/index.d.ts b/types/polymer/index.d.ts index 10b21940c4..7b7d45d572 100644 --- a/types/polymer/index.d.ts +++ b/types/polymer/index.d.ts @@ -3,334 +3,336 @@ // Definitions by: Louis Grignon , Suguru Inatomi // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -/// +import { CustomElementConstructor } from "webcomponents.js"; -declare namespace polymer { +declare global { + namespace polymer { - type PropConstructorType = StringConstructor | ObjectConstructor | BooleanConstructor | NumberConstructor | DateConstructor | ArrayConstructor; + type PropConstructorType = StringConstructor | ObjectConstructor | BooleanConstructor | NumberConstructor | DateConstructor | ArrayConstructor; - interface PropObjectType { - type: PropConstructorType; - value?: boolean | number | string | Function | Object; - reflectToAttribute?: boolean; - readOnly?: boolean; - notify?: boolean; - computed?: string; - observer?: string; + interface PropObjectType { + type: PropConstructorType; + value?: boolean | number | string | Function | Object; + reflectToAttribute?: boolean; + readOnly?: boolean; + notify?: boolean; + computed?: string; + observer?: string; + } + + interface Base { + /** Need to allow all properties for callback methods. */ + [prop: string]: any; + + /* polymer-micro */ + + // Attributes + + hostAttributes?: {[name:string]:any}; + + reflectPropertiesToAttribute?(name: string): void; + + serializeValueToAttribute?(value: any, attribute: string, node?: Element): void; + + deserialize?(value: string, type: NumberConstructor): number; + deserialize?(value: string, type: BooleanConstructor): boolean; + deserialize?(value: string, type: ObjectConstructor): Object; + deserialize?(value: string, type: ArrayConstructor): any[]; + deserialize?(value: string, type: DateConstructor): Date; + deserialize?(value: string, type: StringConstructor): string; + + serialize?(value: any): string; + + // Behaviors + + behaviors?:Object[]; + + // Constructors + + factoryImpl?(...args: any[]): void; + + // Debouncer + + debounce?(jobName: string, callback: Function, wait: number): void; + + isDebouncerActive?(jobName: string): boolean; + + flushDebouncer?(jobName: string): void; + + cancelDebouncer?(jobName: string): void; + + // Extends + + extends?: string; + + getNativePrototype?(tag: string): Object; + + // Properties + + properties?:{[prop:string]:(PropConstructorType|PropObjectType);}; + + getPropertyInfo?(property: string): Object; + + // Tag + + is: string; + + /* polymer-mini */ + + // Ready + + ready?(): void; + + attachedCallback?(): void; + + // Shady + + domHost?(): Element; + + distributeContent?(): void; + + elementMatches?(selector: string, node?: Element): boolean; + + // Template { + + instanceTemplate?(template: HTMLElement): DocumentFragment; + + /* polymer-standard */ + + + // Annotations + + $?: any; + + // Events + + listeners?: {[key:string]:string;}; + + listen?(node: Element, eventName: string, methodName: string): void; + + unlisten?(node: Element, eventName: string, methodName: string): void; + + // Gestures + + setScrollDirection?(direction: string, node?: HTMLElement): void; + + // NotifyPath + + notifyPath?(path: string, value: any, fromAbove: any): void; + + set?(path: string|(string|number)[], value: any, root?: Object): void; + + get?(path: string|(string|number)[], root?: Object): any; + + linkPaths?(to: string, from?: string): void; + + unlinkPaths?(path: string): void; + + push?(path: string, ...item: any[]): number; + + pop?(path: string): any; + + splice?(path: string, index: number, removeCount: number, ...item: any[]): + number; + + shift?(path: string): any; + + unshift?(path: string, ...item: any[]): number; + + // ResolveUrl + + resolveUrl?(url: string): string; + + // Styling + + scopeSubtree?(container: Element, shouldObserve: boolean): void; + + // Utils + + $$?(selector: string): Element; + + toggleClass?(name: string, bool?: boolean, node?: HTMLElement): void; + + toggleAttribute?(name: string, bool?: boolean, node?: HTMLElement): void; + + classFollows?(name: string, toElement: HTMLElement, fromElement: HTMLElement): void; + + attributeFollows?(name: string, toElement: HTMLElement, fromElement: HTMLElement): void; + + getContentChildNodes?(selector: string): Node[]; + + getContentChildren?(selector: string): HTMLElement[]; + + fire?(type: string, detail?: any, options?: Object): CustomEvent; + + async?(callback: ()=>void, waitTime?: number): number; + + cancelAsync?(handle: number): void; + + arrayDelete?(path: string|any[], item: any): any[]; + + transform?(transform: string, node?: HTMLElement): void; + + translate3d?(x: number, y: number, z: number, node?: HTMLElement): void; + + importHref?(href: string, onload?: Function, onerror?: Function): HTMLLinkElement; + + create?(tag: string, props: Object): Element; + + isLightDescendant?(node: HTMLElement): boolean; + + isLocalDescendant?(node: HTMLElement): boolean + + // XStyling + + updateStyles?(): void; + + /* common api */ + + registerCallback?():void; + + createdCallback?():void; + + attachedCallback?():void; + + detachedCallback?():void; + + attributeChangedCallback?(name: string):void; + + extend?(prototype: Object, api: Object):Object; + + mixin?(target: Object, source: Object):Object; + + copyOwnProperty?(name: string, source: Object, target: Object):void; + + observers?: string[]; + + beforeRegister?(): void; + + registered?(): void; + + created?(): void; + + attached?(): void; + + detached?(): void; + + attributeChanged?(name: string, oldValue: any, newValue: any): void; + + } + + interface DomApiStatic { + + (obj: Node|Base):DomApi; + + (obj: Event):EventApi; + + flush():void; + } + + interface DomApi { + + appendChild(node: Node): Node; + + insertBefore(node: Node, refNode?: Node):Node; + + removeChild(node: Node):Node; + + replaceChild(node: Node, refNode: Node):Node; + + getOwnerRoot():Node; + + querySelector(selector: string):Node; + + querySelectorAll(selector: string):Node[]; + + getDestinationInsertionPoints():Node[]; + + getDistributedNodes():Node[]; + + queryDistributedElements(selector: string):Node[]; + + setAttribute(name: string, value: any):void; + + removeAttribute(name: string):void; + + childNodes:Node[]; + + children:Element[]; + + parentNode:Node; + + firstChild:Node; + + lastChild:Node; + + nextSibling:Node; + + previousSibling:Node; + + firstElementChild:Element; + + lastElementChild:Element; + + nextElementSibling:Element; + + previousElementSibling:Element; + + textContent:string; + + innerHTML:string; + } + + interface EventApi { + + rootTarget:EventTarget; + + localTarget:EventTarget; + + path:Node[]; + } + + interface Settings { + hasNativeCSSProperties: boolean + hasNativeImports: boolean + hasShadow: boolean + nativeShadow: boolean + useNativeCSSProperties: boolean + useNativeCustomElements: boolean + useNativeImports: boolean + useNativeShadow: boolean + usePolyfillProto: boolean + useShadow: boolean + wantShadow: boolean + } + + interface RenderStatus { + afterNextRender(element: Element, fn: Function, args?: any): void; + hasRendered(): boolean; + whenReady(cb: Function): void; + } + + interface ImportStatus extends RenderStatus { + whenLoaded(cb: Function): void; + } + + interface PolymerStatic { + Settings: Settings; + + isInstance(element: string): boolean; + Base: Base; + dom: DomApiStatic; + + (prototype: Base | { new (): Base }): CustomElementConstructor; + + Class(prototype: Base | { new (): Base }): CustomElementConstructor; + + RenderStatus: RenderStatus + + /** @deprecated */ + ImportStatus: ImportStatus + } } - interface Base { - /** Need to allow all properties for callback methods. */ - [prop: string]: any; - - /* polymer-micro */ - - // Attributes - - hostAttributes?: {[name:string]:any}; - - reflectPropertiesToAttribute?(name: string): void; - - serializeValueToAttribute?(value: any, attribute: string, node?: Element): void; - - deserialize?(value: string, type: NumberConstructor): number; - deserialize?(value: string, type: BooleanConstructor): boolean; - deserialize?(value: string, type: ObjectConstructor): Object; - deserialize?(value: string, type: ArrayConstructor): any[]; - deserialize?(value: string, type: DateConstructor): Date; - deserialize?(value: string, type: StringConstructor): string; - - serialize?(value: any): string; - - // Behaviors - - behaviors?:Object[]; - - // Constructors - - factoryImpl?(...args: any[]): void; - - // Debouncer - - debounce?(jobName: string, callback: Function, wait: number): void; - - isDebouncerActive?(jobName: string): boolean; - - flushDebouncer?(jobName: string): void; - - cancelDebouncer?(jobName: string): void; - - // Extends - - extends?: string; - - getNativePrototype?(tag: string): Object; - - // Properties - - properties?:{[prop:string]:(PropConstructorType|PropObjectType);}; - - getPropertyInfo?(property: string): Object; - - // Tag - - is: string; - - /* polymer-mini */ - - // Ready - - ready?(): void; - - attachedCallback?(): void; - - // Shady - - domHost?(): Element; - - distributeContent?(): void; - - elementMatches?(selector: string, node?: Element): boolean; - - // Template { - - instanceTemplate?(template: HTMLElement): DocumentFragment; - - /* polymer-standard */ - - - // Annotations - - $?: any; - - // Events - - listeners?: {[key:string]:string;}; - - listen?(node: Element, eventName: string, methodName: string): void; - - unlisten?(node: Element, eventName: string, methodName: string): void; - - // Gestures - - setScrollDirection?(direction: string, node?: HTMLElement): void; - - // NotifyPath - - notifyPath?(path: string, value: any, fromAbove: any): void; - - set?(path: string|(string|number)[], value: any, root?: Object): void; - - get?(path: string|(string|number)[], root?: Object): any; - - linkPaths?(to: string, from?: string): void; - - unlinkPaths?(path: string): void; - - push?(path: string, ...item: any[]): number; - - pop?(path: string): any; - - splice?(path: string, index: number, removeCount: number, ...item: any[]): - number; - - shift?(path: string): any; - - unshift?(path: string, ...item: any[]): number; - - // ResolveUrl - - resolveUrl?(url: string): string; - - // Styling - - scopeSubtree?(container: Element, shouldObserve: boolean): void; - - // Utils - - $$?(selector: string): Element; - - toggleClass?(name: string, bool?: boolean, node?: HTMLElement): void; - - toggleAttribute?(name: string, bool?: boolean, node?: HTMLElement): void; - - classFollows?(name: string, toElement: HTMLElement, fromElement: HTMLElement): void; - - attributeFollows?(name: string, toElement: HTMLElement, fromElement: HTMLElement): void; - - getContentChildNodes?(selector: string): Node[]; - - getContentChildren?(selector: string): HTMLElement[]; - - fire?(type: string, detail?: any, options?: Object): CustomEvent; - - async?(callback: ()=>void, waitTime?: number): number; - - cancelAsync?(handle: number): void; - - arrayDelete?(path: string|any[], item: any): any[]; - - transform?(transform: string, node?: HTMLElement): void; - - translate3d?(x: number, y: number, z: number, node?: HTMLElement): void; - - importHref?(href: string, onload?: Function, onerror?: Function): HTMLLinkElement; - - create?(tag: string, props: Object): Element; - - isLightDescendant?(node: HTMLElement): boolean; - - isLocalDescendant?(node: HTMLElement): boolean - - // XStyling - - updateStyles?(): void; - - /* common api */ - - registerCallback?():void; - - createdCallback?():void; - - attachedCallback?():void; - - detachedCallback?():void; - - attributeChangedCallback?(name: string):void; - - extend?(prototype: Object, api: Object):Object; - - mixin?(target: Object, source: Object):Object; - - copyOwnProperty?(name: string, source: Object, target: Object):void; - - observers?: string[]; - - beforeRegister?(): void; - - registered?(): void; - - created?(): void; - - attached?(): void; - - detached?(): void; - - attributeChanged?(name: string, oldValue: any, newValue: any): void; - - } - - interface DomApiStatic { - - (obj: Node|Base):DomApi; - - (obj: Event):EventApi; - - flush():void; - } - - interface DomApi { - - appendChild(node: Node): Node; - - insertBefore(node: Node, refNode?: Node):Node; - - removeChild(node: Node):Node; - - replaceChild(node: Node, refNode: Node):Node; - - getOwnerRoot():Node; - - querySelector(selector: string):Node; - - querySelectorAll(selector: string):Node[]; - - getDestinationInsertionPoints():Node[]; - - getDistributedNodes():Node[]; - - queryDistributedElements(selector: string):Node[]; - - setAttribute(name: string, value: any):void; - - removeAttribute(name: string):void; - - childNodes:Node[]; - - children:Element[]; - - parentNode:Node; - - firstChild:Node; - - lastChild:Node; - - nextSibling:Node; - - previousSibling:Node; - - firstElementChild:Element; - - lastElementChild:Element; - - nextElementSibling:Element; - - previousElementSibling:Element; - - textContent:string; - - innerHTML:string; - } - - interface EventApi { - - rootTarget:EventTarget; - - localTarget:EventTarget; - - path:Node[]; - } - - interface Settings { - hasNativeCSSProperties: boolean - hasNativeImports: boolean - hasShadow: boolean - nativeShadow: boolean - useNativeCSSProperties: boolean - useNativeCustomElements: boolean - useNativeImports: boolean - useNativeShadow: boolean - usePolyfillProto: boolean - useShadow: boolean - wantShadow: boolean - } - - interface RenderStatus { - afterNextRender(element: Element, fn: Function, args?: any): void; - hasRendered(): boolean; - whenReady(cb: Function): void; - } - - interface ImportStatus extends RenderStatus { - whenLoaded(cb: Function): void; - } - - interface PolymerStatic { - Settings: Settings; - - isInstance(element: string): boolean; - Base: Base; - dom: DomApiStatic; - - (prototype: Base | { new (): Base }): webcomponents.CustomElementConstructor; - - Class(prototype: Base | { new (): Base }): webcomponents.CustomElementConstructor; - - RenderStatus: RenderStatus - - /** @deprecated */ - ImportStatus: ImportStatus - } + var Polymer: polymer.PolymerStatic; } - -declare var Polymer: polymer.PolymerStatic; diff --git a/types/webcomponents.js/index.d.ts b/types/webcomponents.js/index.d.ts index c4e03d9c91..b7dcff5248 100644 --- a/types/webcomponents.js/index.d.ts +++ b/types/webcomponents.js/index.d.ts @@ -1,71 +1,69 @@ -// Type definitions for webcomponents.js 0.6.0 +// Type definitions for webcomponents.js 0.6 // Project: https://github.com/webcomponents/webcomponentsjs // Definitions by: Adi Dahiya // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -declare namespace webcomponents { +export interface CustomElementInit { + prototype: HTMLElement; + extends?: string; +} - export interface CustomElementInit { - prototype: HTMLElement; - extends?: string; +export interface CustomElementConstructor { + new(): HTMLElement; +} + +export interface CustomElementsPolyfill { + hasNative: boolean; + flags: any; + ready: boolean; + useNative: boolean; +} + +export interface HTMLImportsPolyfill { + IMPORT_LINK_TYPE: string; + isIE: boolean; + flags: any; + ready: boolean; + rootDocument: Document; + useNative: boolean; + whenReady(callback: () => void): void; +} + +export interface Polyfill { + flags: any; +} + +declare global { + // This contains duplicates of some types in lib.dom.d.ts in order to support typescript 2.0 + interface ElementDefinitionOptions { + extends: string; } - export interface CustomElementConstructor { - new(): HTMLElement; - } - - export interface CustomElementsPolyfill { - hasNative: boolean; - flags: any; - ready: boolean; - useNative: boolean; - } - - export interface HTMLImportsPolyfill { - IMPORT_LINK_TYPE: string; - isIE: boolean; - flags: any; - ready: boolean; - rootDocument: Document; - useNative: boolean; - whenReady(callback: () => void): void; - } - - export interface ShadowRootPolyfill extends DocumentFragment { + interface ShadowRoot extends DocumentFragment { innerHTML: string; readonly host: Element; } - export interface Polyfill { - flags: any; + interface CustomElementRegistry { + define(name: string, constructor: Function, options?: ElementDefinitionOptions): void; + get(name: string): any; + whenDefined(name: string): PromiseLike; } - /** - * I just slapped this in here - sure it could be better ... :-) - */ - export interface CustomElements { - define( tagName:string, elementClass:any ):void; + interface Element { + createShadowRoot(): ShadowRoot; + readonly shadowRoot: ShadowRoot | null; } + interface Document { + registerElement(name: string, prototype: CustomElementInit): CustomElementConstructor; + } + + interface Window { + CustomElements: CustomElementsPolyfill; + HTMLImports: HTMLImportsPolyfill; + WebComponents: Polyfill; + + customElements: CustomElementRegistry; + } } - -declare module "webcomponents.js" { - export = webcomponents; -} - -interface Element { - createShadowRoot(): webcomponents.ShadowRootPolyfill; - readonly shadowRoot?: webcomponents.ShadowRootPolyfill; -} - -interface Document { - registerElement(name: string, prototype: webcomponents.CustomElementInit): webcomponents.CustomElementConstructor; -} - -interface Window { - CustomElements: webcomponents.CustomElementsPolyfill; - HTMLImports: webcomponents.HTMLImportsPolyfill; - WebComponents: webcomponents.Polyfill; - - customElements: webcomponents.CustomElements; -} \ No newline at end of file diff --git a/types/webcomponents.js/tslint.json b/types/webcomponents.js/tslint.json new file mode 100644 index 0000000000..a62d0d4e68 --- /dev/null +++ b/types/webcomponents.js/tslint.json @@ -0,0 +1,6 @@ +{ + "extends": "dtslint/dt.json", + "rules": { + "ban-types": false + } +} diff --git a/types/webcomponents.js/webcomponents.js-tests.ts b/types/webcomponents.js/webcomponents.js-tests.ts index 12738331a5..48c329f743 100644 --- a/types/webcomponents.js/webcomponents.js-tests.ts +++ b/types/webcomponents.js/webcomponents.js-tests.ts @@ -1,20 +1,18 @@ - - /* * Custom Elements */ -var fooProto = Object.create(HTMLElement.prototype, { +const fooProto = Object.create(HTMLElement.prototype, { createdCallback(this: HTMLElement) { // `this` should be the created element this.getElementsByTagName("a"); } }); -var XFoo = document.registerElement("x-foo", { +const XFoo = document.registerElement("x-foo", { prototype: fooProto }); -var xFoo = new XFoo(); +const xFoo = new XFoo(); xFoo.textContent = ""; document.body.appendChild(xFoo); @@ -40,7 +38,7 @@ document.querySelectorAll(`link[type=${window.HTMLImports.IMPORT_LINK_TYPE}`); * Shadow DOM */ -var shadow = xFoo.createShadowRoot(); +const shadow = xFoo.createShadowRoot(); xFoo.shadowRoot; shadow.innerHTML; shadow.host; @@ -50,8 +48,8 @@ shadow.host; */ window.WebComponents.flags; -window.customElements.define( "lw-arrival-pie", - +window.customElements.define( "lw-arrival-pie", + /** * ArrivalPie custom element */ @@ -63,4 +61,4 @@ window.customElements.define( "lw-arrival-pie", super(); } } -); \ No newline at end of file +); From d74f4d8acede4b7d606eae6021e703c6b37b4e53 Mon Sep 17 00:00:00 2001 From: DABH Date: Wed, 19 Apr 2017 14:15:10 -0700 Subject: [PATCH 40/90] Winston package: Typescript linting; minor cleanups/refactoring; add some missing exports (#15609) * Typescript linting; minor cleanups/refactoring; add some missing exports * Modify tslint.json to extend dtslint/dt.json rather than ../tslint.json --- types/winston/index.d.ts | 193 +++++++++++++++++---------------- types/winston/tslint.json | 7 ++ types/winston/winston-tests.ts | 58 ++++------ 3 files changed, 129 insertions(+), 129 deletions(-) create mode 100644 types/winston/tslint.json diff --git a/types/winston/index.d.ts b/types/winston/index.d.ts index 019973fe14..1182f7553c 100644 --- a/types/winston/index.d.ts +++ b/types/winston/index.d.ts @@ -1,6 +1,6 @@ // Type definitions for winston 2.3 // Project: https://github.com/flatiron/winston -// Definitions by: bonnici , Peter Harris +// Definitions by: bonnici , Peter Harris , DABH // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // Imported from: https://github.com/soywiz/typescript-node-definitions/winston.d.ts @@ -9,24 +9,21 @@ import {Agent} from 'http'; -declare var winston: winston.Winston; -export = winston; - declare namespace winston { - export interface AbstractConfigLevels { + interface AbstractConfigSetLevels { [key: string]: number; } - export interface AbstractConfigColors { + interface AbstractConfigSetColors { [key: string]: string; } - export interface AbstractConfig { - levels: AbstractConfigLevels; - colors: AbstractConfigColors; + interface AbstractConfigSet { + levels: AbstractConfigSetLevels; + colors: AbstractConfigSetColors; } - export interface CliConfigLevels extends AbstractConfigLevels { + interface CliConfigSetLevels extends AbstractConfigSetLevels { error: number; warn: number; help: number; @@ -39,7 +36,7 @@ declare namespace winston { silly: number; } - export interface CliConfigColors extends AbstractConfigColors { + interface CliConfigSetColors extends AbstractConfigSetColors { error: string; warn: string; help: string; @@ -51,7 +48,7 @@ declare namespace winston { input: string; silly: string; } - export interface NpmConfigLevels extends AbstractConfigLevels { + interface NpmConfigSetLevels extends AbstractConfigSetLevels { error: number; warn: number; info: number; @@ -59,7 +56,7 @@ declare namespace winston { debug: number; silly: number; } - export interface NpmConfigColors extends AbstractConfigColors { + interface NpmConfigSetColors extends AbstractConfigSetColors { error: string; warn: string; info: string; @@ -67,7 +64,7 @@ declare namespace winston { debug: string; silly: string; } - export interface SyslogConfigLevels extends AbstractConfigLevels { + interface SyslogConfigSetLevels extends AbstractConfigSetLevels { emerg: number; alert: number; crit: number; @@ -77,7 +74,7 @@ declare namespace winston { info: number; debug: number; } - export interface SyslogConfigColors extends AbstractConfigColors { + interface SyslogConfigSetColors extends AbstractConfigSetColors { emerg: string; alert: string; crit: string; @@ -88,13 +85,8 @@ declare namespace winston { debug: string; } - export interface Winston { - config: { - cli: {levels: CliConfigLevels, colors: CliConfigColors}, - npm: {levels: NpmConfigLevels, colors: NpmConfigColors}, - syslog: {levels: SyslogConfigLevels, colors: SyslogConfigColors} - }; - + interface Winston { + config: winston.Config; transports: winston.Transports; Transport: winston.TransportStatic; Logger: winston.LoggerStatic; @@ -126,18 +118,28 @@ declare namespace winston { remove(transport: string | winston.TransportInstance): winston.LoggerInstance; startTimer(): winston.ProfileHandler; profile(id: string, msg?: string, meta?: any, callback?: (err: Error, level: string, msg: string, meta: any) => void): winston.LoggerInstance; - addColors(target: AbstractConfigColors): any; - setLevels(target: AbstractConfigLevels): any; + addColors(target: AbstractConfigSetColors): any; + setLevels(target: AbstractConfigSetLevels): any; cli(): winston.LoggerInstance; close(): void; configure(options: winston.LoggerOptions): void; } - export type CLILoggingLevel = 'error' | 'warn' | 'help' | 'data' | 'info' | 'debug' | 'prompt' | 'verbose' | 'input' | 'silly'; - export type NPMLoggingLevel = 'error' | 'warn' | 'info' | 'verbose' | 'debug' | 'silly'; - export type SyslogLoggingLevel = 'emerg' | 'alert' | 'crit' | 'error' | 'warning' | 'notice' | 'info' | 'debug'; + type CLILoggingLevel = 'error' | 'warn' | 'help' | 'data' | 'info' | 'debug' | 'prompt' | 'verbose' | 'input' | 'silly'; + type NPMLoggingLevel = 'error' | 'warn' | 'info' | 'verbose' | 'debug' | 'silly'; + type SyslogLoggingLevel = 'emerg' | 'alert' | 'crit' | 'error' | 'warning' | 'notice' | 'info' | 'debug'; - export interface ExceptionProcessInfo { + interface Config { + allColors: AbstractConfigSetColors; + cli: {levels: CliConfigSetLevels, colors: CliConfigSetColors}; + npm: {levels: NpmConfigSetLevels, colors: NpmConfigSetColors}; + syslog: {levels: SyslogConfigSetLevels, colors: SyslogConfigSetColors}; + + addColors(colors: AbstractConfigSetColors): void; + colorize(level: number, message?: string): string; + } + + interface ExceptionProcessInfo { pid: number; uid?: number; gid?: number; @@ -148,12 +150,12 @@ declare namespace winston { memoryUsage: NodeJS.MemoryUsage; } - export interface ExceptionOsInfo { + interface ExceptionOsInfo { loadavg: [number, number, number]; uptime: number; } - export interface ExceptionTrace { + interface ExceptionTrace { column: number; file: string; "function": string; @@ -162,36 +164,32 @@ declare namespace winston { native: boolean; } - export interface ExceptionAllInfo { + interface ExceptionAllInfo { date: Date; process: ExceptionProcessInfo; os: ExceptionOsInfo; - trace: Array; - stack: Array; + trace: ExceptionTrace[]; + stack: string[]; } - export interface Exception { + interface Exception { getAllInfo(err: Error): ExceptionAllInfo; getProcessInfo(): ExceptionProcessInfo; getOsInfo(): ExceptionOsInfo; - getTrace(err: Error): Array; + getTrace(err: Error): ExceptionTrace[]; } - export interface MetadataRewriter { - (level: string, msg: string, meta: any): any; - } + type MetadataRewriter = (level: string, msg: string, meta: any) => any; - export interface MetadataFilter { - (level: string, msg: string, meta: any): string | { msg: any; meta: any; }; - } + type MetadataFilter = (level: string, msg: string, meta: any) => string | { msg: any; meta: any; }; - export interface LoggerStatic { + interface LoggerStatic { new (options?: LoggerOptions): LoggerInstance; } - export interface LoggerInstance extends NodeJS.EventEmitter { - rewriters: Array; - filters: Array; + interface LoggerInstance extends NodeJS.EventEmitter { + rewriters: MetadataRewriter[]; + filters: MetadataFilter[]; transports: {[key: string]: TransportInstance}; extend(target: any): LoggerInstance; @@ -229,20 +227,20 @@ declare namespace winston { startTimer(): ProfileHandler; profile(id: string, msg?: string, meta?: any, callback?: (err: Error, level: string, msg: string, meta: any) => void): LoggerInstance; configure(options: LoggerOptions): void; - setLevels(target: AbstractConfigLevels): any; + setLevels(target: AbstractConfigSetLevels): any; cli(): LoggerInstance; level: string; } - export interface LoggerOptions { + interface LoggerOptions { transports?: TransportInstance[]; rewriters?: MetadataRewriter[]; filters?: MetadataFilter[]; exceptionHandlers?: TransportInstance[]; handleExceptions?: boolean; level?: string; - levels?: AbstractConfigLevels; + levels?: AbstractConfigSetLevels; /** * @type {(boolean|(err: Error) => void)} @@ -255,27 +253,27 @@ declare namespace winston { [optionName: string]: any; } - export interface TransportStatic { - new (options?: TransportOptions): TransportInstance; + interface TransportStatic { + new(options?: TransportOptions): TransportInstance; } - export interface TransportInstance extends TransportStatic, NodeJS.EventEmitter { + interface TransportInstance extends TransportStatic, NodeJS.EventEmitter { silent: boolean; raw: boolean; name: string; - formatter?: Function; level?: string; handleExceptions: boolean; exceptionsLevel: string; humanReadableUnhandledException: boolean; formatQuery(query: (string | Object)): (string | Object); + formatter?(options?: any): string; normalizeQuery(options: QueryOptions): QueryOptions; - formatResults(results: (Object | Array), options?: Object): (Object | Array); + formatResults(results: (Object | any[]), options?: Object): (Object | any[]); logException(msg: string, meta: Object, callback: () => void): void; } - export interface ConsoleTransportInstance extends TransportInstance { + interface ConsoleTransportInstance extends TransportInstance { json: boolean; colorize: boolean; prettyPrint: boolean; @@ -285,18 +283,18 @@ declare namespace winston { logstash: boolean; depth: string|null; align: boolean; - stderrLevels: { [key: string]: LeveledLogMethod; } + stderrLevels: { [key: string]: LeveledLogMethod; }; eol: string; - stringify?: (obj: Object) => string; - new (options?: ConsoleTransportOptions): ConsoleTransportInstance; + new(options?: ConsoleTransportOptions): ConsoleTransportInstance; + stringify?(obj: Object): string; } - export interface DailyRotateFileTransportInstance extends TransportInstance { - new (options?: DailyRotateFileTransportOptions): DailyRotateFileTransportInstance; + interface DailyRotateFileTransportInstance extends TransportInstance { + new(options?: DailyRotateFileTransportOptions): DailyRotateFileTransportInstance; } - export interface FileTransportInstance extends TransportInstance { + interface FileTransportInstance extends TransportInstance { json: boolean; logstash: boolean; colorize: boolean; @@ -312,13 +310,13 @@ declare namespace winston { depth: string|null; showLevel: boolean; maxRetries: number; - stringify?: (obj: Object) => string; - new (options?: FileTransportOptions): FileTransportInstance; close(): void; + new(options?: FileTransportOptions): FileTransportInstance; + stringify?(obj: Object): string; } - export interface HttpTransportInstance extends TransportInstance { + interface HttpTransportInstance extends TransportInstance { name: string; ssl: boolean; host: string; @@ -327,10 +325,10 @@ declare namespace winston { path: string; agent?: Agent|null; - new (options?: HttpTransportOptions): HttpTransportInstance; + new(options?: HttpTransportOptions): HttpTransportInstance; } - export interface MemoryTransportInstance extends TransportInstance { + interface MemoryTransportInstance extends TransportInstance { errorOutput: GenericTextTransportOptions[]; writeOutput: GenericTextTransportOptions[]; @@ -341,24 +339,24 @@ declare namespace winston { showLevel: boolean; label: string|null; depth: string|null; - stringify?: (obj: Object) => string; - new (options?: MemoryTransportOptions): MemoryTransportInstance; + new(options?: MemoryTransportOptions): MemoryTransportInstance; + stringify?(obj: Object): string; } - export interface WebhookTransportInstance extends TransportInstance { - new (options?: WebhookTransportOptions): WebhookTransportInstance; + interface WebhookTransportInstance extends TransportInstance { + new(options?: WebhookTransportOptions): WebhookTransportInstance; } - export interface WinstonModuleTrasportInstance extends TransportInstance { - new (options?: WinstonModuleTransportOptions): WinstonModuleTrasportInstance; + interface WinstonModuleTrasportInstance extends TransportInstance { + new(options?: WinstonModuleTransportOptions): WinstonModuleTrasportInstance; } - export interface ContainerStatic { - new (options: LoggerOptions): ContainerInstance; + interface ContainerStatic { + new(options: LoggerOptions): ContainerInstance; } - export interface ContainerInstance extends ContainerStatic { + interface ContainerInstance extends ContainerStatic { get(id: string, options?: LoggerOptions): LoggerInstance; add(id: string, options: LoggerOptions): LoggerInstance; has(id: string): boolean; @@ -368,7 +366,7 @@ declare namespace winston { default: LoggerOptions; } - export interface Transports { + interface Transports { File: FileTransportInstance; Console: ConsoleTransportInstance; Loggly: WinstonModuleTrasportInstance; @@ -378,32 +376,35 @@ declare namespace winston { Webhook: WebhookTransportInstance; } - export type TransportOptions = ConsoleTransportOptions | DailyRotateFileTransportOptions | FileTransportOptions | HttpTransportOptions | MemoryTransportOptions | WebhookTransportOptions | WinstonModuleTransportOptions; + type TransportOptions = ConsoleTransportOptions | DailyRotateFileTransportOptions | FileTransportOptions + | HttpTransportOptions | MemoryTransportOptions | WebhookTransportOptions | WinstonModuleTransportOptions; - export interface GenericTransportOptions { + interface GenericTransportOptions { level?: string; silent?: boolean; raw?: boolean; name?: string; - formatter?: Function; handleExceptions?: boolean; exceptionsLevel?: string; humanReadableUnhandledException?: boolean; + + formatter?(options?: any): string; } - export interface GenericTextTransportOptions { + interface GenericTextTransportOptions { json?: boolean; colorize?: boolean; colors?: any; prettyPrint?: boolean; - timestamp?: (Function | boolean); showLevel?: boolean; label?: string; depth?: number; - stringify?: Function; + + timestamp?(): any | boolean; + stringify?(obj: any): string; } - export interface GenericNetworkTransportOptions { + interface GenericNetworkTransportOptions { host?: string; port?: number; auth?: { @@ -413,12 +414,12 @@ declare namespace winston { path?: string; } - export interface ConsoleTransportOptions extends GenericTransportOptions, GenericTextTransportOptions { + interface ConsoleTransportOptions extends GenericTransportOptions, GenericTextTransportOptions { logstash?: boolean; debugStdout?: boolean; } - export interface DailyRotateFileTransportOptions extends GenericTransportOptions, GenericTextTransportOptions { + interface DailyRotateFileTransportOptions extends GenericTransportOptions, GenericTextTransportOptions { logstash?: boolean; maxsize?: number; maxFiles?: number; @@ -434,7 +435,7 @@ declare namespace winston { stream?: NodeJS.WritableStream; } - export interface FileTransportOptions extends GenericTransportOptions, GenericTextTransportOptions { + interface FileTransportOptions extends GenericTransportOptions, GenericTextTransportOptions { logstash?: boolean; maxsize?: number; rotationFormat?: boolean; @@ -452,14 +453,14 @@ declare namespace winston { stream?: NodeJS.WritableStream; } - export interface HttpTransportOptions extends GenericTransportOptions, GenericNetworkTransportOptions { + interface HttpTransportOptions extends GenericTransportOptions, GenericNetworkTransportOptions { ssl?: boolean; } - export interface MemoryTransportOptions extends GenericTransportOptions, GenericTextTransportOptions { + interface MemoryTransportOptions extends GenericTransportOptions, GenericTextTransportOptions { } - export interface WebhookTransportOptions extends GenericTransportOptions, GenericNetworkTransportOptions { + interface WebhookTransportOptions extends GenericTransportOptions, GenericNetworkTransportOptions { method?: string; ssl?: { key?: any; @@ -468,11 +469,11 @@ declare namespace winston { }; } - export interface WinstonModuleTransportOptions extends GenericTransportOptions { + interface WinstonModuleTransportOptions extends GenericTransportOptions { [optionName: string]: any; } - export interface QueryOptions { + interface QueryOptions { rows?: number; limit?: number; start?: number; @@ -482,10 +483,11 @@ declare namespace winston { fields: any; } - export interface ProfileHandler { + interface ProfileHandler { logger: LoggerInstance; start: Date; - done: (msg: string) => LoggerInstance; + + done(msg: string): LoggerInstance; } interface LogMethod { @@ -500,7 +502,8 @@ declare namespace winston { (msg: string, ...meta: any[]): LoggerInstance; } - interface LogCallback { - (error?: any, level?: string, msg?: string, meta?: any): void; - } + type LogCallback = (error?: any, level?: string, msg?: string, meta?: any) => void; } + +declare const winston: winston.Winston; +export = winston; diff --git a/types/winston/tslint.json b/types/winston/tslint.json new file mode 100644 index 0000000000..38c1ea8606 --- /dev/null +++ b/types/winston/tslint.json @@ -0,0 +1,7 @@ +{ + "extends": "dtslint/dt.json", + "rules": { + "ban-types": false, + "no-misused-new": false + } +} diff --git a/types/winston/winston-tests.ts b/types/winston/winston-tests.ts index 5d9ae552ce..db74a50c24 100644 --- a/types/winston/winston-tests.ts +++ b/types/winston/winston-tests.ts @@ -1,17 +1,16 @@ - import winston = require('winston'); -var str: string; -var bool: boolean; -var num: number; -var metadata: any; -var obj: any = {}; +let str: string; +let bool: boolean; +let num: number; +let metadata: any; +let obj: any = {}; winston.level = 'debug'; -var queryOptions: winston.QueryOptions; -var transportOptions: winston.TransportOptions; -var loggerOptions: winston.LoggerOptions = { +let queryOptions: winston.QueryOptions; +let transportOptions: winston.TransportOptions; +let loggerOptions: winston.LoggerOptions = { transports: [new (winston.Transport)()], rewriters: [ (level: string, msg: string, meta: any): any => { @@ -22,23 +21,21 @@ var loggerOptions: winston.LoggerOptions = { handleExceptions: false }; -var options: any; -var value: any; -var transport: winston.TransportInstance; -var logger: winston.LoggerInstance; -var profiler: winston.ProfileHandler; +let options: any; +let value: any; +let transport: winston.TransportInstance; +let logger: winston.LoggerInstance; +let profiler: winston.ProfileHandler; -var writeableStream: NodeJS.WritableStream; -var readableStream: NodeJS.ReadableStream; +let writeableStream: NodeJS.WritableStream; +let readableStream: NodeJS.ReadableStream; +let transportStatic: winston.TransportStatic = winston.Transport; -var transportStatic: winston.TransportStatic = winston.Transport; - - -var transportInstance: winston.TransportInstance = new (winston.Transport)(transportOptions); +let transportInstance: winston.TransportInstance = new (winston.Transport)(transportOptions); transportInstance = new (winston.Transport)(); -var containerInstance: winston.ContainerInstance = new (winston.Container)(loggerOptions); +let containerInstance: winston.ContainerInstance = new (winston.Container)(loggerOptions); winston.loggers.options.transports = [ new (winston.Transport)() ]; @@ -66,7 +63,7 @@ transport = winston.transports.DailyRotateFile; transport = winston.transports.File; transport = winston.transports.Http; transport = winston.transports.Loggly; -transport = winston.transports.Memory +transport = winston.transports.Memory; transport = winston.transports.Webhook; value = transport.formatQuery({}); @@ -76,7 +73,6 @@ transport.logException(str, metadata, () => { }); winston.exitOnError = bool; - winston.log(str, str); winston.log(str, str, metadata); winston.log(str, str, metadata, metadata, metadata); @@ -100,10 +96,8 @@ winston.error(str, metadata); winston.error(str, metadata, metadata, metadata); winston.query(queryOptions, (err: Error, results: any): void => { - }); winston.query((err: Error, results: any): void => { - }); logger = winston.add(transport, transportOptions); @@ -112,7 +106,6 @@ logger = winston.add(transport, {filename: 'path/to/file.log'}); winston.clear(); logger = winston.profile(str, str, metadata, (err: Error, level: string, msg: string, meta: any): void => { - }); logger = winston.profile(str); profiler = winston.startTimer(); @@ -128,8 +121,6 @@ readableStream.on('log', (log: any): void => { console.log(log); }); - - logger = logger.extend(obj); logger.log(str, str); logger.log(str, str, metadata); @@ -148,10 +139,8 @@ logger.error(str, metadata); logger.error(str, metadata, metadata, metadata); logger.query(queryOptions, (err: Error, results: any): void => { - }); logger.query((err: Error, results: any): void => { - }); readableStream = winston.stream(options); @@ -166,17 +155,15 @@ logger.clear(); logger = logger.remove(transport); profiler = logger.startTimer(); logger = logger.profile(str, str, metadata, (err: Error, level: string, msg: string, meta: any): void => { - }); value = logger.setLevels(value); logger = logger.cli(); - logger = profiler.done(str); logger = profiler.logger; profiler.start = new Date(); -let testRewriter : winston.MetadataRewriter; +let testRewriter: winston.MetadataRewriter; testRewriter = (level: string, msg: string, meta: any): any => { return meta; }; @@ -186,7 +173,7 @@ logger.rewriters.push(testRewriter); * New Logger instances with transports tests: */ -var logger: winston.LoggerInstance = new (winston.Logger)({ +logger = new (winston.Logger)({ transports: [ new (winston.transports.Console)({ level: str, @@ -282,6 +269,9 @@ winston.default.setLevels(winston.config.syslog.levels); winston.addColors(winston.config.syslog.colors); winston.default.emerg('syslog!'); +winston.config.addColors(winston.config.syslog.colors); +winston.config.colorize(winston.config.syslog.levels['info'], "Hello world!"); + // module augment for custom level log // https://github.com/winstonjs/winston#using-custom-logging-levels // https://github.com/Microsoft/TypeScript/issues/7545 From 833c0574e1156526397704d3c993d174af45586b Mon Sep 17 00:00:00 2001 From: rajarz Date: Thu, 20 Apr 2017 11:57:15 +1000 Subject: [PATCH 41/90] added missing member from sleep module d.ts (#15889) --- types/sleep/index.d.ts | 16 +++++++++++----- types/sleep/sleep-tests.ts | 3 ++- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/types/sleep/index.d.ts b/types/sleep/index.d.ts index 5173e4b4ef..773fc3cdce 100644 --- a/types/sleep/index.d.ts +++ b/types/sleep/index.d.ts @@ -1,20 +1,26 @@ // Type definitions for node-scanf // Project: https://github.com/ErikDubbelboer/node-sleep -// Definitions by: Jeongho Nam +// Definitions by: Jeongho Nam , Rahul Rajaram // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -declare namespace __node_sleep -{ +declare namespace __node_sleep { /** * Sleep for n seconds. - * + * * @param n Number of seconds to sleep. */ function sleep(n: number): void; + /** + * Sleep for n milliseconds. + * + * @param n Number of milliseconds to sleep. + */ + function msleep(n: number): void; + /** * Sleep for n microseconds. - * + * * @param n Number of microseconds to sleep; 1 second is 1,000,000 microseconds. */ function usleep(n: number): void; diff --git a/types/sleep/sleep-tests.ts b/types/sleep/sleep-tests.ts index 32ec671414..84aa4985a0 100644 --- a/types/sleep/sleep-tests.ts +++ b/types/sleep/sleep-tests.ts @@ -1,4 +1,5 @@ import sleep = require("sleep"); sleep.sleep(1); -sleep.usleep(5000); \ No newline at end of file +sleep.usleep(5000); +sleep.msleep(1000); \ No newline at end of file From 925b70ecb709543bb15786578edd0902426bc4d9 Mon Sep 17 00:00:00 2001 From: Alice Klipper Date: Thu, 20 Apr 2017 05:01:58 +0300 Subject: [PATCH 42/90] Added typings for entities 1.1.1 (#15893) --- types/entities/entities-tests.ts | 9 +++++++++ types/entities/index.d.ts | 26 ++++++++++++++++++++++++++ types/entities/tsconfig.json | 22 ++++++++++++++++++++++ types/entities/tslint.json | 1 + 4 files changed, 58 insertions(+) create mode 100644 types/entities/entities-tests.ts create mode 100644 types/entities/index.d.ts create mode 100644 types/entities/tsconfig.json create mode 100644 types/entities/tslint.json diff --git a/types/entities/entities-tests.ts b/types/entities/entities-tests.ts new file mode 100644 index 0000000000..df4a72479a --- /dev/null +++ b/types/entities/entities-tests.ts @@ -0,0 +1,9 @@ +import * as entities from 'entities'; + +// encoding +entities.encodeXML(`&`); // `&#38;` +entities.encodeHTML(`&`); // `&#38;` + +// decoding +entities.decodeXML(`asdf & ÿ ü '`); // `asdf & ÿ ü '` +entities.decodeHTML(`asdf & ÿ ü '`); // `asdf & ÿ ü '` diff --git a/types/entities/index.d.ts b/types/entities/index.d.ts new file mode 100644 index 0000000000..46f7c11116 --- /dev/null +++ b/types/entities/index.d.ts @@ -0,0 +1,26 @@ +// Type definitions for entities 1.1 +// Project: https://github.com/fb55/node-entities +// Definitions by: Alice Klipper +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +export function decode(data: string, level?: number): string; +export function decodeStrict(data: string, level?: number): string; +export function encode(data: string, level?: number): string; + +export function decodeXML(str: string): string; +export function decodeXMLStrict(str: string): string; +export function encodeXML(data: string): string; + +export function decodeHTML(str: string): string; +export function decodeHTMLStrict(str: string): string; +export function encodeHTML(data: string): string; + +export function decodeHTML4(str: string): string; +export function decodeHTML4Strict(str: string): string; +export function encodeHTML4(data: string): string; + +export function decodeHTML5(str: string): string; +export function decodeHTML5Strict(str: string): string; +export function encodeHTML5(data: string): string; + +export function escape(data: string): string; diff --git a/types/entities/tsconfig.json b/types/entities/tsconfig.json new file mode 100644 index 0000000000..7a68bc361b --- /dev/null +++ b/types/entities/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "entities-tests.ts" + ] +} diff --git a/types/entities/tslint.json b/types/entities/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/entities/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" } From c71a29462ab69c985bbfa68bf270d30be58b764e Mon Sep 17 00:00:00 2001 From: Matt Date: Thu, 20 Apr 2017 12:05:03 +1000 Subject: [PATCH 43/90] Created definitions for "react-flatpickr" v3.2. (#15933) --- types/react-flatpickr/index.d.ts | 17 +++++++++++++ .../react-flatpickr/react-flatpickr-tests.tsx | 20 ++++++++++++++++ types/react-flatpickr/tsconfig.json | 24 +++++++++++++++++++ types/react-flatpickr/tslint.json | 1 + 4 files changed, 62 insertions(+) create mode 100644 types/react-flatpickr/index.d.ts create mode 100644 types/react-flatpickr/react-flatpickr-tests.tsx create mode 100644 types/react-flatpickr/tsconfig.json create mode 100644 types/react-flatpickr/tslint.json diff --git a/types/react-flatpickr/index.d.ts b/types/react-flatpickr/index.d.ts new file mode 100644 index 0000000000..8d77c689cb --- /dev/null +++ b/types/react-flatpickr/index.d.ts @@ -0,0 +1,17 @@ +// Type definitions for react-flatpickr 3.2 +// Project: https://github.com/coderhaoxin/react-flatpickr +// Definitions by: begincalendar +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.2 + +import { Component } from 'react'; +import { EventCallback, Options } from 'flatpickr'; + +export interface DateTimePickerProps { + defaultValue?: string; + options?: Options; + onChange?: EventCallback; + value?: string; +} + +export default class DatePicker extends Component {} diff --git a/types/react-flatpickr/react-flatpickr-tests.tsx b/types/react-flatpickr/react-flatpickr-tests.tsx new file mode 100644 index 0000000000..948b65e84e --- /dev/null +++ b/types/react-flatpickr/react-flatpickr-tests.tsx @@ -0,0 +1,20 @@ +import * as Flatpickr from 'flatpickr'; +import * as React from 'react'; +import DatePicker from 'react-flatpickr'; + +const noParamsElement = ; + +const defaultValueElement = ; + +const options = { + dateFormat: 'YYYY-MM-DD' +}; +const optionsElement = ; + +const onChange = ( + selectedDates: Date[], dateStr: string, instance: Flatpickr, + elem: HTMLElement +) => null; +const onChangeElement = ; + +const valueElement = ; diff --git a/types/react-flatpickr/tsconfig.json b/types/react-flatpickr/tsconfig.json new file mode 100644 index 0000000000..ea43a6c994 --- /dev/null +++ b/types/react-flatpickr/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6", + "dom" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "jsx": "react", + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "react-flatpickr-tests.tsx" + ] +} diff --git a/types/react-flatpickr/tslint.json b/types/react-flatpickr/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/react-flatpickr/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" } From 01ad8d4e3569bcbd3c7d0eaf458d14a14dbb0414 Mon Sep 17 00:00:00 2001 From: Yasunori Ohoka Date: Thu, 20 Apr 2017 11:06:37 +0900 Subject: [PATCH 44/90] add passport-github (#15934) * add passport-github * fixed lint --- types/passport-github/index.d.ts | 34 +++++++++++++++++++ .../passport-github/passport-github-tests.ts | 26 ++++++++++++++ types/passport-github/tsconfig.json | 22 ++++++++++++ types/passport-github/tslint.json | 1 + 4 files changed, 83 insertions(+) create mode 100644 types/passport-github/index.d.ts create mode 100644 types/passport-github/passport-github-tests.ts create mode 100644 types/passport-github/tsconfig.json create mode 100644 types/passport-github/tslint.json diff --git a/types/passport-github/index.d.ts b/types/passport-github/index.d.ts new file mode 100644 index 0000000000..38704a0a88 --- /dev/null +++ b/types/passport-github/index.d.ts @@ -0,0 +1,34 @@ +// Type definitions for passport-github 1.1 +// Project: https://github.com/jaredhanson/passport-github +// Definitions by: Yasunori Ohoka +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +import passport = require('passport'); +import express = require('express'); + +export interface Profile extends passport.Profile { + profileUrl: string; +} + +export interface StrategyOption { + clientID: string; + clientSecret: string; + callbackURL: string; + + scope?: string[]; + userAgent?: string; + + authorizationURL?: string; + tokenURL?: string; + scopeSeparator?: string; + customHeaders?: string; + userProfileURL?: string; +} + +export class Strategy implements passport.Strategy { + constructor(options: StrategyOption, verify: (accessToken: string, refreshToken: string, profile: Profile, done: (error: any, user?: any) => void) => void); + userProfile: (accessToken: string, done?: (error: any, profile: Profile) => void) => void; + + name: string; + authenticate: (req: express.Request, options?: passport.AuthenticateOptions) => void; +} diff --git a/types/passport-github/passport-github-tests.ts b/types/passport-github/passport-github-tests.ts new file mode 100644 index 0000000000..72697a7dd2 --- /dev/null +++ b/types/passport-github/passport-github-tests.ts @@ -0,0 +1,26 @@ +/** + * Created by jcabresos on 4/19/2014. + */ +import passport = require('passport'); +import github = require('passport-github'); + +// just some test model +const User = { + findOrCreate(id: string, provider: string, callback: (err: any, user: any) => void): void { + callback(null, { username: 'james' }); + } +}; + +passport.use(new github.Strategy( + { + clientID: process.env.PASSPORT_GITHUB_CONSUMER_KEY, + clientSecret: process.env.PASSPORT_GITHUB_CONSUMER_SECRET, + callbackURL: process.env.PASSPORT_GITHUB_CALLBACK_URL + }, + (accessToken: string, refreshToken: string, profile: github.Profile, done: (error: any, user?: any) => void) => { + User.findOrCreate(profile.id, profile.provider, (err, user) => { + if (err) { return done(err); } + done(null, user); + }); + }) +); diff --git a/types/passport-github/tsconfig.json b/types/passport-github/tsconfig.json new file mode 100644 index 0000000000..a71ba7d95e --- /dev/null +++ b/types/passport-github/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "passport-github-tests.ts" + ] +} \ No newline at end of file diff --git a/types/passport-github/tslint.json b/types/passport-github/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/passport-github/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" } From ca056c85c5baba88e45aeb3ba30658c87392edb7 Mon Sep 17 00:00:00 2001 From: Andrew Goodale Date: Wed, 19 Apr 2017 11:18:33 -0400 Subject: [PATCH 45/90] Type definition for SectionList --- types/react-native/index.d.ts | 82 +++++++++++++++++++++++++++++++ types/react-native/test/index.tsx | 18 +++++++ 2 files changed, 100 insertions(+) diff --git a/types/react-native/index.d.ts b/types/react-native/index.d.ts index 30685aba9f..4a18a8f551 100644 --- a/types/react-native/index.d.ts +++ b/types/react-native/index.d.ts @@ -3615,6 +3615,85 @@ export interface FlatListStatic extends React.ComponentClass void } +export interface SectionListData { + + data: ItemT[] + + key: string + + renderItem?: (info: {item: ItemT, index: number}) => React.ReactElement | null + + keyExtractor?: (item: ItemT, index: number) => string +} + +/** + * @see https://facebook.github.io/react-native/docs/sectionlist.html + */ +export interface SectionListProperties extends ScrollViewProperties { + + /** + * An array of objects with data for each section. + */ + sections: SectionListData[] + + /** + * Used to extract a unique key for a given item at the specified index. Key is used for caching + * and as the react key to track item re-ordering. The default extractor checks `item.key`, then + * falls back to using the index, like React does. + */ + keyExtractor?: (item: ItemT, index: number) => string + + /** + * Default renderer for every item in every section. Can be over-ridden on a per-section basis. + */ + renderItem?: (info: {item: ItemT, index: number}) => React.ReactElement | null + + /** + * Rendered at the top of each section. Sticky headers are not yet supported. + */ + renderSectionHeader?: (info: {section: SectionListData}) => React.ReactElement | null + + /** + * Rendered in between each item, but not at the top or bottom + */ + ItemSeparatorComponent?: React.ComponentClass | null + + /** + * Rendered at the bottom of all the items. + */ + ListFooterComponent?: React.ComponentClass | null + + /** + * Rendered at the top of all the items. + */ + ListHeaderComponent?: React.ComponentClass | null + + /** + * Rendered in between each section. + */ + SectionSeparatorComponent?: React.ComponentClass | null + + /** + * If provided, a standard RefreshControl will be added for "Pull to Refresh" functionality. + * Make sure to also set the refreshing prop correctly. + */ + onRefresh?: (() => void) | null + + /** + * Set this true while waiting for new data from a refresh. + */ + refreshing?: boolean | null + + /** + * Render a custom scroll component, e.g. with a differently styled `RefreshControl`. + */ + renderScrollComponent?: (props: ScrollViewProperties) => React.ReactElement +} + +export interface SectionListStatic extends React.ComponentClass> { + +} + /** * @see https://facebook.github.io/react-native/docs/listview.html#props */ @@ -8467,6 +8546,9 @@ export type StatusBar = StatusBarStatic export var ScrollView: ScrollViewStatic export type ScrollView = ScrollViewStatic +export var SectionList: SectionListStatic +export type SectionList = SectionListStatic + export var SnapshotViewIOS: SnapshotViewIOSStatic export type SnapshotViewIOS = SnapshotViewIOSStatic diff --git a/types/react-native/test/index.tsx b/types/react-native/test/index.tsx index 50979908a1..020e6fabf0 100644 --- a/types/react-native/test/index.tsx +++ b/types/react-native/test/index.tsx @@ -26,6 +26,7 @@ import { ViewStyle, ViewPagerAndroid, FlatList, + SectionList, findNodeHandle } from 'react-native'; @@ -201,3 +202,20 @@ export class FlatListTest { /> } } + +export class SectionListTest { + render() { + var sections = [{ + key: 's1', + data: ['A', 'B', 'C', 'D', 'E'] + },{ + key: 's2', + data: ['A2', 'B2', 'C2', 'D2', 'E2'] + }]; + + {info.item}} + /> + } +} From c59b52e585596333be352ae4e94ecbe5f7e19a17 Mon Sep 17 00:00:00 2001 From: efokschaner Date: Thu, 20 Apr 2017 07:02:52 -0700 Subject: [PATCH 46/90] (Hopefully) Remove test dependencies from npm package (#16013) --- types/three/test/references.d.ts | 9 --------- types/three/test/references.ts | 5 +++++ types/three/tsconfig.json | 4 +++- 3 files changed, 8 insertions(+), 10 deletions(-) delete mode 100644 types/three/test/references.d.ts create mode 100644 types/three/test/references.ts diff --git a/types/three/test/references.d.ts b/types/three/test/references.d.ts deleted file mode 100644 index 0e13b1e2ac..0000000000 --- a/types/three/test/references.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -// References used by tests -// Includes using THREE as a global namespace rather than as a module - -/// -/// -/// - -/// -/// \ No newline at end of file diff --git a/types/three/test/references.ts b/types/three/test/references.ts new file mode 100644 index 0000000000..c5d3c66909 --- /dev/null +++ b/types/three/test/references.ts @@ -0,0 +1,5 @@ +// References used by tests + +/// +/// +/// diff --git a/types/three/tsconfig.json b/types/three/tsconfig.json index 4570abc6d4..b2038f113c 100644 --- a/types/three/tsconfig.json +++ b/types/three/tsconfig.json @@ -17,7 +17,9 @@ "forceConsistentCasingInFileNames": true }, "files": [ - "test/references.d.ts", + "index.d.ts", + "detector.d.ts", + "test/references.ts", "test/math/test_unit_math.ts", "test/webgl/webgl_animation_cloth.ts", "test/webgl/webgl_animation_skinning_morph.ts", From a15b6bf327179b1c8b5df0b567aa3e4ef18a05dd Mon Sep 17 00:00:00 2001 From: Josh Toft Date: Thu, 20 Apr 2017 07:17:36 -0700 Subject: [PATCH 47/90] Add assert-equal-jsx (#15884) --- .../assert-equal-jsx-tests.tsx | 16 +++++++++++++ types/assert-equal-jsx/index.d.ts | 17 +++++++++++++ types/assert-equal-jsx/tsconfig.json | 24 +++++++++++++++++++ types/assert-equal-jsx/tslint.json | 1 + 4 files changed, 58 insertions(+) create mode 100644 types/assert-equal-jsx/assert-equal-jsx-tests.tsx create mode 100644 types/assert-equal-jsx/index.d.ts create mode 100644 types/assert-equal-jsx/tsconfig.json create mode 100644 types/assert-equal-jsx/tslint.json diff --git a/types/assert-equal-jsx/assert-equal-jsx-tests.tsx b/types/assert-equal-jsx/assert-equal-jsx-tests.tsx new file mode 100644 index 0000000000..16e6467637 --- /dev/null +++ b/types/assert-equal-jsx/assert-equal-jsx-tests.tsx @@ -0,0 +1,16 @@ +import * as React from 'react'; +import assertEqualJSX = require('assert-equal-jsx'); + +function sanitizeId(str: string): string { + return str.replace(/my-component-id-(\d+)/ig, 'my-component-id-0'); +} + +assertEqualJSX( +
    , + // should equal: +
    , + // with sanitization: + { + sanitize: sanitizeId + } +); diff --git a/types/assert-equal-jsx/index.d.ts b/types/assert-equal-jsx/index.d.ts new file mode 100644 index 0000000000..5deb9ede36 --- /dev/null +++ b/types/assert-equal-jsx/index.d.ts @@ -0,0 +1,17 @@ +// Type definitions for assert-equal-jsx 1.0 +// Project: https://github.com/thejameskyle/assert-equal-jsx +// Definitions by: Josh Toft +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.2 + +import * as React from 'react'; + +declare namespace assertEqualJSX { + interface AsssertOptions { + sanitize?(str: string): string; + } +} + +declare function assertEqualJSX(actual: JSX.Element, expected: JSX.Element, opts?: assertEqualJSX.AsssertOptions): void; + +export = assertEqualJSX; diff --git a/types/assert-equal-jsx/tsconfig.json b/types/assert-equal-jsx/tsconfig.json new file mode 100644 index 0000000000..25c499a18f --- /dev/null +++ b/types/assert-equal-jsx/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6", + "dom" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "baseUrl": "../", + "jsx": "react", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "assert-equal-jsx-tests.tsx" + ] +} diff --git a/types/assert-equal-jsx/tslint.json b/types/assert-equal-jsx/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/assert-equal-jsx/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" } From abdfe2a6aa24cddce275a0776224ee50a8b41b5f Mon Sep 17 00:00:00 2001 From: Louis Grignon Date: Thu, 20 Apr 2017 16:33:59 +0200 Subject: [PATCH 48/90] TypeScript definitions for fuzzyset library (#15860) * pdf def file * fuzzyset * fuzzyset * fuzzyset * dtslint * dtslint * dtslint * fuzzyset renamed to fuzzyset.js * fuzzyset ok$ * fuzzyset ok --- types/fuzzyset/fuzzyset-tests.ts | 10 ++++++++++ types/fuzzyset/index.d.ts | 17 +++++++++++++++++ types/fuzzyset/tsconfig.json | 22 ++++++++++++++++++++++ types/fuzzyset/tslint.json | 1 + 4 files changed, 50 insertions(+) create mode 100644 types/fuzzyset/fuzzyset-tests.ts create mode 100644 types/fuzzyset/index.d.ts create mode 100644 types/fuzzyset/tsconfig.json create mode 100644 types/fuzzyset/tslint.json diff --git a/types/fuzzyset/fuzzyset-tests.ts b/types/fuzzyset/fuzzyset-tests.ts new file mode 100644 index 0000000000..1c13a9517a --- /dev/null +++ b/types/fuzzyset/fuzzyset-tests.ts @@ -0,0 +1,10 @@ +import FuzzySet = require('fuzzyset'); + +const fuzzyset: FuzzySet = FuzzySet(['coucou', 'foo', 'bar', 'toto']); +const results = fuzzyset.get('foo'); + +fuzzyset.length(); + +fuzzyset.isEmpty(); + +fuzzyset.values(); diff --git a/types/fuzzyset/index.d.ts b/types/fuzzyset/index.d.ts new file mode 100644 index 0000000000..4d923110d5 --- /dev/null +++ b/types/fuzzyset/index.d.ts @@ -0,0 +1,17 @@ +// Type definitions for fuzzset 1.0 +// Project: https://github.com/washt/fuzzyset +// Definitions by: Louis Grignon +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +interface FuzzySet { + get(candidate: string): Array<[number, string]>; + add(value: string): boolean; + length(): number; + isEmpty(): boolean; + values(): string[]; +} + +declare function FuzzySet(source: string[], useLevenshtein?: boolean, gramSizeLower?: number, gramSizeUpper?: number): FuzzySet; + +export = FuzzySet; +export as namespace FuzzySet; diff --git a/types/fuzzyset/tsconfig.json b/types/fuzzyset/tsconfig.json new file mode 100644 index 0000000000..1ca77e5aa2 --- /dev/null +++ b/types/fuzzyset/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "fuzzyset-tests.ts" + ] +} \ No newline at end of file diff --git a/types/fuzzyset/tslint.json b/types/fuzzyset/tslint.json new file mode 100644 index 0000000000..2750cc0197 --- /dev/null +++ b/types/fuzzyset/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" } \ No newline at end of file From 102a19de6a54777383b20047f7b5e4af4efde1ae Mon Sep 17 00:00:00 2001 From: Eward Song Date: Thu, 20 Apr 2017 23:16:54 +0800 Subject: [PATCH 49/90] add egg and egg-mock (#15971) * feat: add egg and egg-mock * chore: remove disable, add typescript version * chore: add some doc, and change interface name to CamelCased --- types/egg-mock/egg-mock-tests.ts | 6 + types/egg-mock/index.d.ts | 107 +++++ types/egg-mock/tsconfig.json | 22 + types/egg-mock/tslint.json | 1 + types/egg/egg-tests.ts | 33 ++ types/egg/index.d.ts | 785 +++++++++++++++++++++++++++++++ types/egg/tsconfig.json | 23 + types/egg/tslint.json | 1 + 8 files changed, 978 insertions(+) create mode 100644 types/egg-mock/egg-mock-tests.ts create mode 100644 types/egg-mock/index.d.ts create mode 100644 types/egg-mock/tsconfig.json create mode 100644 types/egg-mock/tslint.json create mode 100644 types/egg/egg-tests.ts create mode 100644 types/egg/index.d.ts create mode 100644 types/egg/tsconfig.json create mode 100644 types/egg/tslint.json diff --git a/types/egg-mock/egg-mock-tests.ts b/types/egg-mock/egg-mock-tests.ts new file mode 100644 index 0000000000..8cc823b6a9 --- /dev/null +++ b/types/egg-mock/egg-mock-tests.ts @@ -0,0 +1,6 @@ +import * as mm from 'egg-mock'; + +const app = mm.app(); +app.ready(); +app.mockService('foo', 'bar', ['123']); +const ctx = app.mockContext(); diff --git a/types/egg-mock/index.d.ts b/types/egg-mock/index.d.ts new file mode 100644 index 0000000000..51198aed42 --- /dev/null +++ b/types/egg-mock/index.d.ts @@ -0,0 +1,107 @@ +// Type definitions for Egg-mock 3.x +// Project: https://github.com/eggjs/egg-mock +// Definitions by: Eward Song +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +import { Application, Context } from 'egg'; + +interface MockApplication extends Application { // tslint:disble-line + ready(): Promise; + close(): Promise; + callback(): any; + + /** + * mock Context + */ + mockContext(data?: any): Context; + + /** + * mock cookie session + */ + mockSession(data: any): MockApplication; + + mockCookies(cookies: any): MockApplication; + + mockHeaders(headers: any): MockApplication; + + /** + * Mock service + */ + mockService(service: string, methodName: string, fn: any): MockApplication; + + /** + * mock service that return error + */ + mockServiceError(service: string, methodName: string, err?: Error): MockApplication; + + mockHttpclient(mockUrl: string, mockMethod: string | string[], mockResult: { + data: Buffer | string | JSON; + status: number; + headers: any; + }): MockApplication; +} + +interface MockOption { + /** + * The directory of the application + */ + baseDir?: string; + + /** + * Custom you plugins + */ + plugins?: any; + + /** + * The directory of the egg framework + */ + framework?: string; + + /** + * Cache application based on baseDir + */ + cache?: boolean; + + /** + * Swtich on process coverage, but it'll be slower + */ + coverage?: boolean; + + /** + * Remove $baseDir/logs + */ + clean?: boolean; +} + +type EnvType = 'default' | 'test' | 'prod' | 'local' | 'unittest'; + +interface EggMock { + /** + * Create a egg mocked application + */ + app(option?: MockOption): MockApplication; + + /** + * mock the serverEnv of Egg + */ + env(env: EnvType): void; + + /** + * mock console level + */ + consoleLevel(level: string): void; + + /** + * set EGG_HOME path + */ + home(homePath: string): void; + + /** + * restore mock + */ + restore(): void; +} + +declare var mm: EggMock; + +export = mm; diff --git a/types/egg-mock/tsconfig.json b/types/egg-mock/tsconfig.json new file mode 100644 index 0000000000..9313ec5190 --- /dev/null +++ b/types/egg-mock/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": false, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "egg-mock-tests.ts" + ] +} \ No newline at end of file diff --git a/types/egg-mock/tslint.json b/types/egg-mock/tslint.json new file mode 100644 index 0000000000..2750cc0197 --- /dev/null +++ b/types/egg-mock/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" } \ No newline at end of file diff --git a/types/egg/egg-tests.ts b/types/egg/egg-tests.ts new file mode 100644 index 0000000000..921ad35dd7 --- /dev/null +++ b/types/egg/egg-tests.ts @@ -0,0 +1,33 @@ +import { Controller, Service, Application } from 'egg'; + +// controller +class FooController extends Controller { + async getData() { + this.ctx.body = await this.service.foo.bar(); + } +} + +// add user controller and service +declare module 'egg' { + interface Controllers { + foo: FooController; + } + interface Services { + foo: FooService; + } +} + +class FooService extends Service { + async bar() { + // + return this.config.env; + } +} + +// router + +function router(app: Application) { + const controller = app.controller; + app.get('/foo', controller.foo.getData); + app.post('/', controller.foo.getData); +} diff --git a/types/egg/index.d.ts b/types/egg/index.d.ts new file mode 100644 index 0000000000..065c4ee92f --- /dev/null +++ b/types/egg/index.d.ts @@ -0,0 +1,785 @@ +// Type definitions for Egg 1.x +// Project: https://github.com/eggjs/egg +// Definitions by: Eward Song +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.2 + +import * as accepts from 'accepts'; +import * as KoaApplication from 'koa'; +import * as KoaRouter from 'koa-router'; +import { Readable } from 'stream'; +/** + * BaseContextClass is a base class that can be extended, + * it's instantiated in context level, + * {@link Helper}, {@link Service} is extending it. + */ +declare class BaseContextClass { // tslint:disable-line + /** + * request context + */ + ctx: Context; + + /** + * Application + */ + app: Application; + + /** + * Application config object + */ + config: EggAppConfig; + + /** + * service + */ + service: Services; + + constructor(ctx: Context); +} + +export interface Logger { + info(info: string, ...args: string[]): void; + warn(info: string, ...args: string[]): void; + debug(info: string, ...args: string[]): void; + error(info: string, ...args: string[]): void; +} + +interface Request extends KoaApplication.Request { // tslint:disable-line + /** + * detect if response should be json + * 1. url path ends with `.json` + * 2. response type is set to json + * 3. detect by request accept header + * + * @member {Boolean} Request#acceptJSON + * @since 1.0.0 + */ + acceptJSON: boolean; + + /** + * Request remote IPv4 address + * @member {String} Request#ip + * @example + * ```js + * this.request.ip + * => '127.0.0.1' + * => '111.10.2.1' + * ``` + */ + ip: string; + + /** + * Get all pass through ip addresses from the request. + * Enable only on `app.config.proxy = true` + * + * @member {Array} Request#ips + * @example + * ```js + * this.request.ips + * => ['100.23.1.2', '201.10.10.2'] + * ``` + */ + ips: string[]; + + protocol: string; + + /** + * get params pass by querystring, all value are Array type. {@link Request#query} + * @member {Array} Request#queries + * @example + * ```js + * GET http://127.0.0.1:7001?a=b&a=c&o[foo]=bar&b[]=1&b[]=2&e=val + * this.queries + * => + * { + * "a": ["b", "c"], + * "o[foo]": ["bar"], + * "b[]": ["1", "2"], + * "e": ["val"] + * } + * ``` + */ + queries: { [key: string]: string[] }; + + /** + * get params pass by querystring, all value are String type. + * @member {Object} Request#query + * @example + * ```js + * GET http://127.0.0.1:7001?name=Foo&age=20&age=21 + * this.query + * => { 'name': 'Foo', 'age': 20 } + * + * GET http://127.0.0.1:7001?a=b&a=c&o[foo]=bar&b[]=1&b[]=2&e=val + * this.query + * => + * { + * "a": "b", + * "o[foo]": "bar", + * "b[]": "1", + * "e": "val" + * } + * ``` + */ + query: { [key: string]: string }; +} + +interface Response extends KoaApplication.Response { // tslint:disable-line + /** + * read response real status code. + * + * e.g.: Using 302 status redirect to the global error page + * instead of show current 500 status page. + * And access log should save 500 not 302, + * then the `realStatus` can help us find out the real status code. + * @member {Number} Context#realStatus + */ + realStatus: number; +} + +interface ContextView { // tslint:disable-line + /** + * Render a file by view engine + * @param {String} name - the file path based on root + * @param {Object} [locals] - data used by template + * @param {Object} [options] - view options, you can use `options.viewEngine` to specify view engine + * @return {Promise} result - return a promise with a render result + */ + render(name: string, locals: any, options?: any): Promise; + + /** + * Render a template string by view engine + * @param {String} tpl - template string + * @param {Object} [locals] - data used by template + * @param {Object} [options] - view options, you can use `options.viewEngine` to specify view engine + * @return {Promise} result - return a promise with a render result + */ + renderString(name: string, locals: any, options?: any): Promise; +} + +export type LoggerLevel = 'DEBUG' | 'INFO' | 'WARN' | 'ERROR' | 'NONE'; + +export interface EggAppConfig { + workerStartTimeout: number; + baseDir: string; + /** + * The option of `bodyParser` middleware + * + * @member Config#bodyParser + * @property {Boolean} enable - enable bodyParser or not, default to true + * @property {String | RegExp | Function | Array} ignore - won't parse request body when url path hit ignore pattern, can not set `ignore` when `match` presented + * @property {String | RegExp | Function | Array} match - will parse request body only when url path hit match pattern + * @property {String} encoding - body encoding config, default utf8 + * @property {String} formLimit - form body size limit, default 100kb + * @property {String} jsonLimit - json body size limit, default 100kb + * @property {Boolean} strict - json body strict mode, if set strict value true, then only receive object and array json body + * @property {Number} queryString.arrayLimit - from item array length limit, default 100 + * @property {Number} queryString.depth - json value deep lenght, default 5 + * @property {Number} queryString.parameterLimit - paramter number limit ,default 1000 + */ + bodyParser: { + enable: boolean; + encoding: string; + formLimit: string; + jsonLimit: string; + strict: true; + queryString: { + arrayLimit: number; + depth: number; + parameterLimit: number; + }; + }; + + /** + * logger options + * @member Config#logger + * @property {String} dir - directory of log files + * @property {String} encoding - log file encloding, defaults to utf8 + * @property {String} level - default log level, could be: DEBUG, INFO, WARN, ERROR or NONE, defaults to INFO in production + * @property {String} consoleLevel - log level of stdout, defaults to INFO in local serverEnv, defaults to WARN in unittest, defaults to NONE elsewise + * @property {Boolean} outputJSON - log as JSON or not, defaults to false + * @property {Boolean} buffer - if enabled, flush logs to disk at a certain frequency to improve performance, defaults to true + * @property {String} errorLogName - file name of errorLogger + * @property {String} coreLogName - file name of coreLogger + * @property {String} agentLogName - file name of agent worker log + * @property {Object} coreLogger - custom config of coreLogger + */ + logger: { + dir: string; + encoding: string; + env: string; + level: LoggerLevel; + consoleLevel: LoggerLevel; + outputJSON: boolean; + buffer: boolean; + appLogName: string; + coreLogName: string; + agentLogName: string; + errorLogName: string; + coreLogger: any; + }; + + httpclient: { + keepAlive: boolean; + freeSocketKeepAliveTimeout: number; + timeout: number; + maxSockets: number; + maxFreeSockets: number; + enableDNSCache: boolean; + }; + + development: { + /** + * dirs needed watch, when files under these change, application will reload, use relative path + */ + watchDirs: string[]; + /** + * dirs don't need watch, including subdirectories, use relative path + */ + ignoreDirs: string[]; + /** + * don't wait all plugins ready, default is true. + */ + fastReady: boolean; + }; + /** + * It will ignore special keys when dumpConfig + */ + dump: { + ignore: Set; + }; + + /** + * The environment of egg + */ + env: string; + + /** + * The current HOME directory + */ + HOME: string; + + hostHeaders: string; + + /** + * I18n options + */ + i18n: { + /** + * default value EN_US + */ + defaultLocale: string; + /** + * i18n resource file dir, not recommend to change default value + */ + dir: string; + /** + * custom the locale value field, default `query.locale`, you can modify this config, such as `query.lang` + */ + queryField: string; + /** + * The locale value key in the cookie, default is locale. + */ + cookieField: string; + /** + * Locale cookie expire time, default `1y`, If pass number value, the unit will be ms + */ + cookieMaxAge: string | number; + }; + + /** + * Detect request' ip from specified headers, not case-sensitive. Only worked when config.proxy set to true. + */ + ipHeaders: string; + + /** + * jsonp options + * @member Config#jsonp + * @property {String} callback - jsonp callback method key, default to `_callback` + * @property {Number} limit - callback method name's max length, default to `50` + * @property {Boolean} csrf - enable csrf check or not. default to false + * @property {String|RegExp|Array} whiteList - referrer white list + */ + jsonp: { + limit: number; + callback: string; + csrf: boolean; + whiteList: string | RegExp | Array; + }; + + /** + * The key that signing cookies. It can contain multiple keys seperated by . + */ + keys: string; + + /** + * The name of the application + */ + name: string; + + /** + * package.json + */ + pkg: any; + + rundir: string; + + security: { + domainWhiteList: string[]; + protocolWhiteList: string[]; + defaultMiddleware: string; + csrf: any; + xframe: { + enable: boolean; + value: 'SAMEORIGIN' | 'DENY' | 'ALLOW-FROM'; + }; + hsts: any; + methodnoallow: { enable: boolean }; + noopen: { enable: boolean; } + xssProtection: any; + csp: any; + }; + + siteFile: any; + + static: any; + + view: any; + + watcher: any; +} + +export interface Router extends KoaRouter { + /** + * restful router api + */ + resources(name: string, prefix: string, middleware: any): Router; + + /** + * @param {String} name - Router name + * @param {Object} params - more parameters + * @example + * ```js + * router.url('edit_post', { id: 1, name: 'foo', page: 2 }) + * => /posts/1/edit?name=foo&page=2 + * router.url('posts', { name: 'foo&1', page: 2 }) + * => /posts?name=foo%261&page=2 + * ``` + * @return {String} url by path name and query params. + * @since 1.0.0 + */ + url(name: string, params: any): any; +} + +declare interface EggApplication extends KoaApplication { // tslint:disable-line + /** + * The current directory of application + */ + baseDir: string; + + /** + * The configuration of application + */ + config: EggAppConfig; + + /** + * app.env delegate app.config.env + */ + env: string; + + /** + * core logger for framework and plugins, log file is $HOME/logs/{appname}/egg-web + */ + coreLogger: Logger; + + /** + * Alias to https://npmjs.com/package/depd + */ + deprecate: any; + + /** + * HttpClient instance + */ + httpclient: any; + + /** + * The loader instance, the default class is EggLoader. If you want define + */ + loader: any; + + /** + * Logger for Application, wrapping app.coreLogger with context infomation + * + * @member {ContextLogger} Context#logger + * @since 1.0.0 + * @example + * ```js + * this.logger.info('some request data: %j', this.request.body); + * this.logger.warn('WARNING!!!!'); + * ``` + */ + logger: Logger; + + /** + * All loggers contain logger, coreLogger and customLogger + */ + loggers: { [loggerName: string]: Logger }; + + /** + * messenger instance + */ + messenger: any; + + plugins: any; + + /** + * get router + */ + router: Router; + + Service: Service; + + /** + * Whether `application` or `agent` + */ + type: string; + + /** + * create a singleton instance + */ + addSingleton(name: string, create: any): void; + + /** + * Excute scope after loaded and before app start + */ + beforeStart(scrope: () => void): void; + + /** + * Close all, it wil close + * - callbacks registered by beforeClose + * - emit `close` event + * - remove add listeners + * + * If error is thrown when it's closing, the promise will reject. + * It will also reject after following call. + * @return {Promise} promise + * @since 1.0.0 + */ + close(): Promise; + + /** + * http request helper base on httpclient, it will auto save httpclient log. + * Keep the same api with httpclient.request(url, args). + * See https://github.com/node-modules/urllib#api-doc for more details. + */ + curl(url: string, opt: any): Promise; + + /** + * Get logger by name, it's equal to app.loggers['name'], but you can extend it with your own logical + */ + getLogger(name: string): Logger; + + /** + * print the infomation when console.log(app) + */ + inspect(): any; + + /** + * Alias to Router#url + */ + url(name: string, params: any): any; +} + +export interface Application extends EggApplication { + /** + * global locals for view + * @see Context#locals + */ + locals: any; + + /** + * HTTP get method + */ + get(path: string, fn: string): void; + get(path: string, ...middleware: any[]): void; + + /** + * HTTP post method + */ + post(path: string, fn: string): void; + post(path: string, ...middleware: any[]): void; + + /** + * HTTP put method + */ + put(path: string, fn: string): void; + put(path: string, ...middleware: any[]): void; + + /** + * HTTP delete method + */ + delete(path: string, fn: string): void; + delete(path: string, ...middleware: any[]): void; + + /** + * restful router api + */ + resources(name: string, prefix: string, fn: string): Router; + + redirect(path: string, redirectPath: string): void; + + controller: Controllers; + + Controller: Controller; +} + +interface FileStream extends Readable { // tslint:disable-line + fields: any; +} + +export interface Context extends KoaApplication.Context { + app: Application; + + service: Services; + + request: Request; + + response: Response; + + /** + * Resource Parameters + * @example + * ##### ctx.params.id {string} + * + * `GET /api/users/1` => `'1'` + * + * ##### ctx.params.ids {Array} + * + * `GET /api/users/1,2,3` => `['1', '2', '3']` + * + * ##### ctx.params.fields {Array} + * + * Expect request return data fields, for example + * `GET /api/users/1?fields=name,title` => `['name', 'title']`. + * + * ##### ctx.params.data {Object} + * + * Tht request data object + * + * ##### ctx.params.page {Number} + * + * Page number, `GET /api/users?page=10` => `10` + * + * ##### ctx.params.per_page {Number} + * + * The number of every page, `GET /api/users?per_page=20` => `20` + */ + params: any; + + /** + * @see Request#accept + */ + queries: { [key: string]: string[] }; + + /** + * @see Request#accept + */ + accept: accepts.Accepts; + + /** + * @see Request#acceptJSON + */ + acceptJSON: boolean; + + /** + * @see Request#ip + */ + ip: string; + + /** + * @see Response#realStatus + */ + realStatus: number; + + /** + * 设置返回资源对象 + * set the ctx.body.data value + * + * @member {Object} Context#data= + * @example + * ```js + * ctx.data = { + * id: 1, + * name: 'fengmk2' + * }; + * ``` + * + * will get responce + * + * ```js + * HTTP/1.1 200 OK + * + * { + * "data": { + * "id": 1, + * "name": "fengmk2" + * } + * } + * ``` + */ + data: any; + + /** + * set ctx.body.meta value + * + * @example + * ```js + * ctx.meta = { + * count: 100 + * }; + * ``` + * will get responce + * + * ```js + * HTTP/1.1 200 OK + * + * { + * "meta": { + * "count": 100 + * } + * } + * ``` + */ + meta: any; + + /** + * locals is an object for view, you can use `app.locals` and `ctx.locals` to set variables, + * which will be used as data when view is rendering. + * The difference between `app.locals` and `ctx.locals` is the context level, `app.locals` is global level, and `ctx.locals` is request level. when you get `ctx.locals`, it will merge `app.locals`. + * + * when you set locals, only object is available + * + * ```js + * this.locals = { + * a: 1 + * }; + * this.locals = { + * b: 1 + * }; + * this.locals.c = 1; + * console.log(this.locals); + * { + * a: 1, + * b: 1, + * c: 1, + * }; + * ``` + * + * `ctx.locals` has cache, it only merges `app.locals` once in one request. + * + * @member {Object} Context#locals + */ + locals: any; + + /** + * alias to {@link locals}, compatible with koa that use this variable + */ + state: any; + + /** + * Logger for Application, wrapping app.coreLogger with context infomation + * + * @member {ContextLogger} Context#logger + * @since 1.0.0 + * @example + * ```js + * this.logger.info('some request data: %j', this.request.body); + * this.logger.warn('WARNING!!!!'); + * ``` + */ + logger: Logger; + + /** + * Request start time + */ + starttime: number; + + /** + * View instance that is created every request + */ + view: ContextView; + + /** + * http request helper base on httpclient, it will auto save httpclient log. + * Keep the same api with httpclient.request(url, args). + * See https://github.com/node-modules/urllib#api-doc for more details. + */ + curl(url: string, opt: any): Promise; + + /** + * Render a file by view engine + * @param {String} name - the file path based on root + * @param {Object} [locals] - data used by template + * @param {Object} [options] - view options, you can use `options.viewEngine` to specify view engine + * @return {Promise} result - return a promise with a render result + */ + render(name: string, locals: any, options?: any): Promise; + + /** + * Render a template string by view engine + * @param {String} tpl - template string + * @param {Object} [locals] - data used by template + * @param {Object} [options] - view options, you can use `options.viewEngine` to specify view engine + * @return {Promise} result - return a promise with a render result + */ + renderString(name: string, locals: any, options?: any): Promise; + + __(key: string, ...values: string[]): string; + gettext(key: string, ...values: string[]): string; + + /** + * get upload file stream + * @example + * ```js + * const stream = yield this.getFileStream(); + * // get other fields + * console.log(stream.fields); + * ``` + * @method Context#getFileStream + * @return {ReadStream} stream + * @since 1.0.0 + */ + getFileStream(): Promise; + + /** + * @see Responce.redirect + */ + redirect(url: string, alt?: string): void; +} + +export class Controller extends BaseContextClass { } + +export class Service extends BaseContextClass { } + +/** + * The empty interface `Services` is an placehoder, for egg + * to auto injection service to ctx.service + * + * @example + * + * import { Service } from 'egg'; + * class FooService extends Service { + * async bar() {} + * } + * + * declare module 'egg' { + * export interface service { + * foo: FooService; + * } + * } + * + * Now I can get ctx.service.foo at controller and other service file. + */ +export interface Services { }// tslint:disable-line + +export interface Controllers { } // tslint:disable-line diff --git a/types/egg/tsconfig.json b/types/egg/tsconfig.json new file mode 100644 index 0000000000..d2369bc5bf --- /dev/null +++ b/types/egg/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "es2017", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "egg-tests.ts" + ] +} \ No newline at end of file diff --git a/types/egg/tslint.json b/types/egg/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/egg/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" } From ac241b3645c1451cfde04f8685ea502710e4d1d4 Mon Sep 17 00:00:00 2001 From: Andrew Goodale Date: Thu, 20 Apr 2017 11:21:21 -0400 Subject: [PATCH 50/90] Fix lint failure --- types/react-native/test/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/react-native/test/index.tsx b/types/react-native/test/index.tsx index 020e6fabf0..480fa9c486 100644 --- a/types/react-native/test/index.tsx +++ b/types/react-native/test/index.tsx @@ -208,7 +208,7 @@ export class SectionListTest { var sections = [{ key: 's1', data: ['A', 'B', 'C', 'D', 'E'] - },{ + }, { key: 's2', data: ['A2', 'B2', 'C2', 'D2', 'E2'] }]; From f48da02f41b64f27a6912e08704a17a6bd656b2c Mon Sep 17 00:00:00 2001 From: Andrew Goodale Date: Thu, 20 Apr 2017 11:28:48 -0400 Subject: [PATCH 51/90] Re-order optional props to match documentation --- types/react-native/index.d.ts | 60 +++++++++++++++++------------------ 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/types/react-native/index.d.ts b/types/react-native/index.d.ts index 4a18a8f551..1d67c42b5a 100644 --- a/types/react-native/index.d.ts +++ b/types/react-native/index.d.ts @@ -3632,9 +3632,24 @@ export interface SectionListData { export interface SectionListProperties extends ScrollViewProperties { /** - * An array of objects with data for each section. + * Rendered in between adjacent Items within each section. */ - sections: SectionListData[] + ItemSeparatorComponent?: React.ComponentClass | null + + /** + * Rendered at the very end of the list. + */ + ListFooterComponent?: React.ComponentClass | null + + /** + * Rendered at the very beginning of the list. + */ + ListHeaderComponent?: React.ComponentClass | null + + /** + * Rendered in between each section. + */ + SectionSeparatorComponent?: React.ComponentClass | null /** * Used to extract a unique key for a given item at the specified index. Key is used for caching @@ -3643,6 +3658,17 @@ export interface SectionListProperties extends ScrollViewProperties { */ keyExtractor?: (item: ItemT, index: number) => string + /** + * If provided, a standard RefreshControl will be added for "Pull to Refresh" functionality. + * Make sure to also set the refreshing prop correctly. + */ + onRefresh?: (() => void) | null + + /** + * Set this true while waiting for new data from a refresh. + */ + refreshing?: boolean | null + /** * Default renderer for every item in every section. Can be over-ridden on a per-section basis. */ @@ -3654,35 +3680,9 @@ export interface SectionListProperties extends ScrollViewProperties { renderSectionHeader?: (info: {section: SectionListData}) => React.ReactElement | null /** - * Rendered in between each item, but not at the top or bottom + * An array of objects with data for each section. */ - ItemSeparatorComponent?: React.ComponentClass | null - - /** - * Rendered at the bottom of all the items. - */ - ListFooterComponent?: React.ComponentClass | null - - /** - * Rendered at the top of all the items. - */ - ListHeaderComponent?: React.ComponentClass | null - - /** - * Rendered in between each section. - */ - SectionSeparatorComponent?: React.ComponentClass | null - - /** - * If provided, a standard RefreshControl will be added for "Pull to Refresh" functionality. - * Make sure to also set the refreshing prop correctly. - */ - onRefresh?: (() => void) | null - - /** - * Set this true while waiting for new data from a refresh. - */ - refreshing?: boolean | null + sections: SectionListData[] /** * Render a custom scroll component, e.g. with a differently styled `RefreshControl`. From fa2480ba613f7828c12e1022ba274fd2fc822036 Mon Sep 17 00:00:00 2001 From: Andy Date: Thu, 20 Apr 2017 09:06:00 -0700 Subject: [PATCH 52/90] Remove more namespaces from tests (#16029) --- types/angular/tslint.json | 1 + types/dagre-d3/dagre-d3-tests.ts | 34 +- types/dagre/dagre-tests.ts | 16 +- types/enzyme/enzyme-tests.tsx | 6 +- types/fetch-jsonp/tslint.json | 7 +- types/flatbuffers/flatbuffers-tests.ts | 2229 ++++++++------------- types/later/later-tests.ts | 64 +- types/lodash/tslint.json | 1 + types/memcached/memcached-tests.ts | 846 ++++---- types/node/tslint.json | 1 + types/node/v0/tslint.json | 1 + types/node/v4/tslint.json | 1 + types/node/v6/tslint.json | 1 + types/pixi.js/pixi.js-tests.ts | 74 +- types/react-dnd-html5-backend/tslint.json | 8 +- types/rx-lite/rx-lite-tests.ts | 92 +- types/sharepoint/tslint.json | 4 +- types/webpack/webpack-tests.ts | 6 +- 18 files changed, 1389 insertions(+), 2003 deletions(-) diff --git a/types/angular/tslint.json b/types/angular/tslint.json index 140b06dc6c..3ace427c86 100644 --- a/types/angular/tslint.json +++ b/types/angular/tslint.json @@ -13,6 +13,7 @@ "jsdoc-format": false, "max-line-length": false, "no-empty-interface": false, + "no-namespace": false, "unified-signatures": false, "void-return": false } diff --git a/types/dagre-d3/dagre-d3-tests.ts b/types/dagre-d3/dagre-d3-tests.ts index 16bfb29b0c..d3dc72b648 100644 --- a/types/dagre-d3/dagre-d3-tests.ts +++ b/types/dagre-d3/dagre-d3-tests.ts @@ -1,21 +1,19 @@ -namespace DagreD3Tests { - const gDagre = new dagreD3.graphlib.Graph(); - const graph = gDagre.graph(); +const gDagre = new dagreD3.graphlib.Graph(); +const graph = gDagre.graph(); - // has graph methods from dagre.d.ts - graph.setNode("a", {}); - const num: number = 251 + graph.height + graph.width; - const predecessors: { [vertex: string]: string[] } = {}; - const successors: { [vertex: string]: string[] } = {}; +// has graph methods from dagre.d.ts +graph.setNode("a", {}); +const num: number = 251 + graph.height + graph.width; +const predecessors: { [vertex: string]: string[] } = {}; +const successors: { [vertex: string]: string[] } = {}; - predecessors["a"] = graph.predecessors("a"); - successors["a"] = graph.successors("a"); - graph.transition = (selection: d3.Selection) => { - return d3.transition(); - }; +predecessors["a"] = graph.predecessors("a"); +successors["a"] = graph.successors("a"); +graph.transition = (selection: d3.Selection) => { + return d3.transition(); +}; - const render = new dagreD3.render(); - const svg = d3.select("svg"); - render.arrows()["arrowType"] = (parent: d3.Selection, id: string, edge: dagre.Edge, type: string) => {}; - render(svg, graph); -} +const render = new dagreD3.render(); +const svg = d3.select("svg"); +render.arrows()["arrowType"] = (parent: d3.Selection, id: string, edge: dagre.Edge, type: string) => {}; +render(svg, graph); diff --git a/types/dagre/dagre-tests.ts b/types/dagre/dagre-tests.ts index 2855055451..d9a62a107b 100644 --- a/types/dagre/dagre-tests.ts +++ b/types/dagre/dagre-tests.ts @@ -1,10 +1,8 @@ -namespace DagreTests { - const gDagre = new dagre.graphlib.Graph(); - gDagre.setGraph({}) - .setDefaultEdgeLabel(() => {}) - .setNode("a", {}) - .setEdge("b", "c") - .setEdge("c", "d", {class: "class"}); +const gDagre = new dagre.graphlib.Graph(); +gDagre.setGraph({}) + .setDefaultEdgeLabel(() => {}) + .setNode("a", {}) + .setEdge("b", "c") + .setEdge("c", "d", {class: "class"}); - dagre.layout(gDagre); -} +dagre.layout(gDagre); diff --git a/types/enzyme/enzyme-tests.tsx b/types/enzyme/enzyme-tests.tsx index 08ab6a5c15..7118fd4403 100644 --- a/types/enzyme/enzyme-tests.tsx +++ b/types/enzyme/enzyme-tests.tsx @@ -25,7 +25,7 @@ class MyComponent extends Component { const MyStatelessComponent = (props: StatelessProps) => ; // ShallowWrapper -namespace ShallowWrapperTest { +function ShallowWrapperTest() { let shallowWrapper: ShallowWrapper = shallow(); @@ -331,7 +331,7 @@ namespace ShallowWrapperTest { } // ReactWrapper -namespace ReactWrapperTest { +function ReactWrapperTest() { let reactWrapper: ReactWrapper = mount(); @@ -631,7 +631,7 @@ namespace ReactWrapperTest { } // CheerioWrapper -namespace CheerioWrapperTest { +function CheerioWrapperTest() { const wrapper: Cheerio = shallow(
    ).render() || mount(
    ).render(); diff --git a/types/fetch-jsonp/tslint.json b/types/fetch-jsonp/tslint.json index 5b78762199..3db14f85ea 100644 --- a/types/fetch-jsonp/tslint.json +++ b/types/fetch-jsonp/tslint.json @@ -1,6 +1 @@ -{ - "extends": "dtslint/dt.json", - "rules": { - "only-arrow-functions-2": false - } -} +{ "extends": "dtslint/dt.json" } diff --git a/types/flatbuffers/flatbuffers-tests.ts b/types/flatbuffers/flatbuffers-tests.ts index 0edd64d75c..87593106c7 100644 --- a/types/flatbuffers/flatbuffers-tests.ts +++ b/types/flatbuffers/flatbuffers-tests.ts @@ -1,1462 +1,849 @@ -/** - * @enum - */ -export namespace MyGame.Example { - export enum Color { - Red= 1, - Green= 2, - Blue= 8 +enum Color { + Red= 1, + Green= 2, + Blue= 8 +} + +enum Any { + NONE= 0, + Monster= 1, + TestSimpleTableWithEnum= 2, + MyGame_Example2_Monster= 3 +} + +class Monster2 { + bb: flatbuffers.ByteBuffer= null; + + bb_pos: number = 0; + + __init(i: number, bb: flatbuffers.ByteBuffer): Monster2 { + this.bb_pos = i; + this.bb = bb; + return this; + } + + static getRootAsMonster(bb: flatbuffers.ByteBuffer, obj?: Monster2): Monster2 { + return (obj || new Monster2()).__init(bb.readInt32(bb.position()) + bb.position(), bb); + } + + static startMonster(builder: flatbuffers.Builder) { + builder.startObject(0); + } + + static endMonster(builder: flatbuffers.Builder): flatbuffers.Offset { + const offset = builder.endObject(); + return offset; } } -/** - * @enum - */ -export namespace MyGame.Example { - export enum Any { - NONE= 0, - Monster= 1, - TestSimpleTableWithEnum= 2, - MyGame_Example2_Monster= 3 +class Test { + bb: flatbuffers.ByteBuffer = null; + + bb_pos: number = 0; + + __init(i: number, bb: flatbuffers.ByteBuffer): Test { + this.bb_pos = i; + this.bb = bb; + return this; + } + + a(): number { + return this.bb.readInt16(this.bb_pos); + } + + mutate_a(value: number): boolean { + const offset = this.bb.__offset(this.bb_pos, 0); + + if (offset === 0) { + return false; + } + + this.bb.writeInt16(this.bb_pos + offset, value); + return true; + } + + b(): number { + return this.bb.readInt8(this.bb_pos + 2); + } + + mutate_b(value: number): boolean { + const offset = this.bb.__offset(this.bb_pos, 2); + + if (offset === 0) { + return false; + } + + this.bb.writeInt8(this.bb_pos + offset, value); + return true; + } + + static createTest(builder: flatbuffers.Builder, a: number, b: number): flatbuffers.Offset { + builder.prep(2, 4); + builder.pad(1); + builder.writeInt8(b); + builder.writeInt16(a); + return builder.offset(); } } -/** - * @constructor - */ -export namespace MyGame.Example2 { - export class Monster { - /** - * @type {flatbuffers.ByteBuffer} - */ +class TestSimpleTableWithEnum { + bb: flatbuffers.ByteBuffer= null; + + bb_pos: number = 0; + + __init(i: number, bb: flatbuffers.ByteBuffer): TestSimpleTableWithEnum { + this.bb_pos = i; + this.bb = bb; + return this; + } + + static getRootAsTestSimpleTableWithEnum(bb: flatbuffers.ByteBuffer, obj?: TestSimpleTableWithEnum): TestSimpleTableWithEnum { + return (obj || new TestSimpleTableWithEnum()).__init(bb.readInt32(bb.position()) + bb.position(), bb); + } + + color(): Color { + const offset = this.bb.__offset(this.bb_pos, 4); + return offset ? (this.bb.readInt8(this.bb_pos + offset)) : Color.Green; + } + + mutate_color(value: Color): boolean { + const offset = this.bb.__offset(this.bb_pos, 4); + + if (offset === 0) { + return false; + } + + this.bb.writeInt8(this.bb_pos + offset, value); + return true; + } + + static startTestSimpleTableWithEnum(builder: flatbuffers.Builder) { + builder.startObject(1); + } + + static addColor(builder: flatbuffers.Builder, color: Color) { + builder.addFieldInt8(0, color, Color.Green); + } + + static endTestSimpleTableWithEnum(builder: flatbuffers.Builder): flatbuffers.Offset { + const offset = builder.endObject(); + return offset; + } +} + +class Vec3 { + bb: flatbuffers.ByteBuffer= null; + + bb_pos: number = 0; + + __init(i: number, bb: flatbuffers.ByteBuffer): Vec3 { + this.bb_pos = i; + this.bb = bb; + return this; + } + + x(): number { + return this.bb.readFloat32(this.bb_pos); + } + + mutate_x(value: number): boolean { + const offset = this.bb.__offset(this.bb_pos, 0); + + if (offset === 0) { + return false; + } + + this.bb.writeFloat32(this.bb_pos + offset, value); + return true; + } + + y(): number { + return this.bb.readFloat32(this.bb_pos + 4); + } + + mutate_y(value: number): boolean { + const offset = this.bb.__offset(this.bb_pos, 4); + + if (offset === 0) { + return false; + } + + this.bb.writeFloat32(this.bb_pos + offset, value); + return true; + } + + z(): number { + return this.bb.readFloat32(this.bb_pos + 8); + } + + mutate_z(value: number): boolean { + const offset = this.bb.__offset(this.bb_pos, 8); + + if (offset === 0) { + return false; + } + + this.bb.writeFloat32(this.bb_pos + offset, value); + return true; + } + + test1(): number { + return this.bb.readFloat64(this.bb_pos + 16); + } + + mutate_test1(value: number): boolean { + const offset = this.bb.__offset(this.bb_pos, 16); + + if (offset === 0) { + return false; + } + + this.bb.writeFloat64(this.bb_pos + offset, value); + return true; + } + + test2(): Color { + return (this.bb.readInt8(this.bb_pos + 24)); + } + + mutate_test2(value: Color): boolean { + const offset = this.bb.__offset(this.bb_pos, 24); + + if (offset === 0) { + return false; + } + + this.bb.writeInt8(this.bb_pos + offset, value); + return true; + } + + test3(obj?: Test): Test { + return (obj || new Test()).__init(this.bb_pos + 26, this.bb); + } + + static createVec3(builder: flatbuffers.Builder, x: number, y: number, z: number, test1: number, test2: Color, test3_a: number, test3_b: number): flatbuffers.Offset { + builder.prep(16, 32); + builder.pad(2); + builder.prep(2, 4); + builder.pad(1); + builder.writeInt8(test3_b); + builder.writeInt16(test3_a); + builder.pad(1); + builder.writeInt8(test2); + builder.writeFloat64(test1); + builder.pad(4); + builder.writeFloat32(z); + builder.writeFloat32(y); + builder.writeFloat32(x); + return builder.offset(); + } +} + +class Stat { + bb: flatbuffers.ByteBuffer= null; + + bb_pos: number = 0; + + __init(i: number, bb: flatbuffers.ByteBuffer): Stat { + this.bb_pos = i; + this.bb = bb; + return this; + } + + static getRootAsStat(bb: flatbuffers.ByteBuffer, obj?: Stat): Stat { + return (obj || new Stat()).__init(bb.readInt32(bb.position()) + bb.position(), bb); + } + + id(optionalEncoding?: flatbuffers.Encoding): string|Uint8Array { + const offset = this.bb.__offset(this.bb_pos, 4); + return offset ? this.bb.__string(this.bb_pos + offset, optionalEncoding) : null; + } + + val(): flatbuffers.Long { + const offset = this.bb.__offset(this.bb_pos, 6); + return offset ? this.bb.readInt64(this.bb_pos + offset) : this.bb.createLong(0, 0); + } + + mutate_val(value: flatbuffers.Long): boolean { + const offset = this.bb.__offset(this.bb_pos, 6); + + if (offset === 0) { + return false; + } + + this.bb.writeInt64(this.bb_pos + offset, value); + return true; + } + + count(): number { + const offset = this.bb.__offset(this.bb_pos, 8); + return offset ? this.bb.readUint16(this.bb_pos + offset) : 0; + } + + static startStat(builder: flatbuffers.Builder) { + builder.startObject(3); + } + + static addId(builder: flatbuffers.Builder, idOffset: flatbuffers.Offset) { + builder.addFieldOffset(0, idOffset, 0); + } + + static addVal(builder: flatbuffers.Builder, val: flatbuffers.Long) { + builder.addFieldInt64(1, val, builder.createLong(0, 0)); + } + + static addCount(builder: flatbuffers.Builder, count: number) { + builder.addFieldInt16(2, count, 0); + } + + static endStat(builder: flatbuffers.Builder): flatbuffers.Offset { + const offset = builder.endObject(); + return offset; + } +} + +class Monster { bb: flatbuffers.ByteBuffer= null; - /** - * @type {number} - */ bb_pos: number = 0; - /** - * @param {number} i - * @param {flatbuffers.ByteBuffer} bb - * @returns {Monster} - */ - __init(i: number, bb: flatbuffers.ByteBuffer): Monster { - this.bb_pos = i; - this.bb = bb; - return this; + __init(i: number, bb: flatbuffers.ByteBuffer): Monster { + this.bb_pos = i; + this.bb = bb; + return this; + } + + static getRootAsMonster(bb: flatbuffers.ByteBuffer, obj?: Monster): Monster { + return (obj || new Monster()).__init(bb.readInt32(bb.position()) + bb.position(), bb); + } + + static bufferHasIdentifier(bb: flatbuffers.ByteBuffer): boolean { + return bb.__has_identifier('MONS'); + } + + pos(obj?: Vec3): Vec3 { + const offset = this.bb.__offset(this.bb_pos, 4); + return offset ? (obj || new Vec3()).__init(this.bb_pos + offset, this.bb) : null; + } + + mana(): number { + const offset = this.bb.__offset(this.bb_pos, 6); + return offset ? this.bb.readInt16(this.bb_pos + offset) : 150; + } + + mutate_mana(value: number): boolean { + const offset = this.bb.__offset(this.bb_pos, 6); + + if (offset === 0) { + return false; } - /** - * @param {flatbuffers.ByteBuffer} bb - * @param {Monster=} obj - * @returns {Monster} - */ - static getRootAsMonster(bb: flatbuffers.ByteBuffer, obj?: Monster): Monster { - return (obj || new Monster()).__init(bb.readInt32(bb.position()) + bb.position(), bb); + this.bb.writeInt16(this.bb_pos + offset, value); + return true; + } + + hp(): number { + const offset = this.bb.__offset(this.bb_pos, 8); + return offset ? this.bb.readInt16(this.bb_pos + offset) : 100; + } + + mutate_hp(value: number): boolean { + const offset = this.bb.__offset(this.bb_pos, 8); + + if (offset === 0) { + return false; } - /** - * @param {flatbuffers.Builder} builder - */ - static startMonster(builder: flatbuffers.Builder) { - builder.startObject(0); + this.bb.writeInt16(this.bb_pos + offset, value); + return true; + } + + name(): string; + name(optionalEncoding: flatbuffers.Encoding): string|Uint8Array; + name(optionalEncoding?: any): string|Uint8Array { + const offset = this.bb.__offset(this.bb_pos, 10); + return offset ? this.bb.__string(this.bb_pos + offset, optionalEncoding) : null; + } + + inventory(index: number): number { + const offset = this.bb.__offset(this.bb_pos, 14); + return offset ? this.bb.readUint8(this.bb.__vector(this.bb_pos + offset) + index) : 0; + } + + inventoryLength(): number { + const offset = this.bb.__offset(this.bb_pos, 14); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + + inventoryArray(): Uint8Array { + const offset = this.bb.__offset(this.bb_pos, 14); + return offset ? new Uint8Array(this.bb.bytes().buffer, this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null; + } + + color(): Color { + const offset = this.bb.__offset(this.bb_pos, 16); + return offset ? (this.bb.readInt8(this.bb_pos + offset)) : Color.Blue; + } + + mutate_color(value: Color): boolean { + const offset = this.bb.__offset(this.bb_pos, 16); + + if (offset === 0) { + return false; } - /** - * @param {flatbuffers.Builder} builder - * @returns {flatbuffers.Offset} - */ - static endMonster(builder: flatbuffers.Builder): flatbuffers.Offset { - const offset = builder.endObject(); - return offset; - } + this.bb.writeInt8(this.bb_pos + offset, value); + return true; } -} -/** - * @constructor - */ -export namespace MyGame.Example { - export class Test { - /** - * @type {flatbuffers.ByteBuffer} - */ - bb: flatbuffers.ByteBuffer= null; - /** - * @type {number} - */ - bb_pos: number = 0; - - /** - * @param {number} i - * @param {flatbuffers.ByteBuffer} bb - * @returns {Test} - */ - __init(i: number, bb: flatbuffers.ByteBuffer): Test { - this.bb_pos = i; - this.bb = bb; - return this; - } - - /** - * @returns {number} - */ - a(): number { - return this.bb.readInt16(this.bb_pos); - } - - /** - * @param {number} value - * @returns {boolean} - */ - mutate_a(value: number): boolean { - const offset = this.bb.__offset(this.bb_pos, 0); - - if (offset === 0) { - return false; - } - - this.bb.writeInt16(this.bb_pos + offset, value); - return true; - } - - /** - * @returns {number} - */ - b(): number { - return this.bb.readInt8(this.bb_pos + 2); - } - - /** - * @param {number} value - * @returns {boolean} - */ - mutate_b(value: number): boolean { - const offset = this.bb.__offset(this.bb_pos, 2); - - if (offset === 0) { - return false; - } - - this.bb.writeInt8(this.bb_pos + offset, value); - return true; - } - - /** - * @param {flatbuffers.Builder} builder - * @param {number} a - * @param {number} b - * @returns {flatbuffers.Offset} - */ - static createTest(builder: flatbuffers.Builder, a: number, b: number): flatbuffers.Offset { - builder.prep(2, 4); - builder.pad(1); - builder.writeInt8(b); - builder.writeInt16(a); - return builder.offset(); - } + testType(): Any { + const offset = this.bb.__offset(this.bb_pos, 18); + return offset ? (this.bb.readUint8(this.bb_pos + offset)) : Any.NONE; } -} - -/** - * @constructor - */ -export namespace MyGame.Example { - export class TestSimpleTableWithEnum { - /** - * @type {flatbuffers.ByteBuffer} - */ - bb: flatbuffers.ByteBuffer= null; - /** - * @type {number} - */ - bb_pos: number = 0; - - /** - * @param {number} i - * @param {flatbuffers.ByteBuffer} bb - * @returns {TestSimpleTableWithEnum} - */ - __init(i: number, bb: flatbuffers.ByteBuffer): TestSimpleTableWithEnum { - this.bb_pos = i; - this.bb = bb; - return this; - } - - /** - * @param {flatbuffers.ByteBuffer} bb - * @param {TestSimpleTableWithEnum=} obj - * @returns {TestSimpleTableWithEnum} - */ - static getRootAsTestSimpleTableWithEnum(bb: flatbuffers.ByteBuffer, obj?: TestSimpleTableWithEnum): TestSimpleTableWithEnum { - return (obj || new TestSimpleTableWithEnum()).__init(bb.readInt32(bb.position()) + bb.position(), bb); - } - - /** - * @returns {MyGame.Example.Color} - */ - color(): MyGame.Example.Color { - const offset = this.bb.__offset(this.bb_pos, 4); - return offset ? /** @type {MyGame.Example.Color} */ (this.bb.readInt8(this.bb_pos + offset)) : MyGame.Example.Color.Green; - } - - /** - * @param {MyGame.Example.Color} value - * @returns {boolean} - */ - mutate_color(value: MyGame.Example.Color): boolean { - const offset = this.bb.__offset(this.bb_pos, 4); - - if (offset === 0) { - return false; - } - - this.bb.writeInt8(this.bb_pos + offset, value); - return true; - } - - /** - * @param {flatbuffers.Builder} builder - */ - static startTestSimpleTableWithEnum(builder: flatbuffers.Builder) { - builder.startObject(1); - } - - /** - * @param {flatbuffers.Builder} builder - * @param {MyGame.Example.Color} color - */ - static addColor(builder: flatbuffers.Builder, color: MyGame.Example.Color) { - builder.addFieldInt8(0, color, MyGame.Example.Color.Green); - } - - /** - * @param {flatbuffers.Builder} builder - * @returns {flatbuffers.Offset} - */ - static endTestSimpleTableWithEnum(builder: flatbuffers.Builder): flatbuffers.Offset { - const offset = builder.endObject(); - return offset; - } + test(obj: T): T { + const offset = this.bb.__offset(this.bb_pos, 20); + return offset ? this.bb.__union(obj, this.bb_pos + offset) : null; } -} - -/** - * @constructor - */ -export namespace MyGame.Example { - export class Vec3 { - /** - * @type {flatbuffers.ByteBuffer} - */ - bb: flatbuffers.ByteBuffer= null; - - /** - * @type {number} - */ - bb_pos: number = 0; - - /** - * @param {number} i - * @param {flatbuffers.ByteBuffer} bb - * @returns {Vec3} - */ - __init(i: number, bb: flatbuffers.ByteBuffer): Vec3 { - this.bb_pos = i; - this.bb = bb; - return this; - } - - /** - * @returns {number} - */ - x(): number { - return this.bb.readFloat32(this.bb_pos); - } - - /** - * @param {number} value - * @returns {boolean} - */ - mutate_x(value: number): boolean { - const offset = this.bb.__offset(this.bb_pos, 0); - - if (offset === 0) { - return false; - } - - this.bb.writeFloat32(this.bb_pos + offset, value); - return true; - } - - /** - * @returns {number} - */ - y(): number { - return this.bb.readFloat32(this.bb_pos + 4); - } - - /** - * @param {number} value - * @returns {boolean} - */ - mutate_y(value: number): boolean { - const offset = this.bb.__offset(this.bb_pos, 4); - - if (offset === 0) { - return false; - } - - this.bb.writeFloat32(this.bb_pos + offset, value); - return true; - } - - /** - * @returns {number} - */ - z(): number { - return this.bb.readFloat32(this.bb_pos + 8); - } - - /** - * @param {number} value - * @returns {boolean} - */ - mutate_z(value: number): boolean { - const offset = this.bb.__offset(this.bb_pos, 8); - - if (offset === 0) { - return false; - } - - this.bb.writeFloat32(this.bb_pos + offset, value); - return true; - } - - /** - * @returns {number} - */ - test1(): number { - return this.bb.readFloat64(this.bb_pos + 16); - } - - /** - * @param {number} value - * @returns {boolean} - */ - mutate_test1(value: number): boolean { - const offset = this.bb.__offset(this.bb_pos, 16); - - if (offset === 0) { - return false; - } - - this.bb.writeFloat64(this.bb_pos + offset, value); - return true; - } - - /** - * @returns {MyGame.Example.Color} - */ - test2(): MyGame.Example.Color { - return /** @type {MyGame.Example.Color} */ (this.bb.readInt8(this.bb_pos + 24)); - } - - /** - * @param {MyGame.Example.Color} value - * @returns {boolean} - */ - mutate_test2(value: MyGame.Example.Color): boolean { - const offset = this.bb.__offset(this.bb_pos, 24); - - if (offset === 0) { - return false; - } - - this.bb.writeInt8(this.bb_pos + offset, value); - return true; - } - /** - * @param {MyGame.Example.Test=} obj - * @returns {MyGame.Example.Test} - */ - test3(obj?: MyGame.Example.Test): MyGame.Example.Test { - return (obj || new MyGame.Example.Test()).__init(this.bb_pos + 26, this.bb); - } - - /** - * @param {flatbuffers.Builder} builder - * @param {number} x - * @param {number} y - * @param {number} z - * @param {number} test1 - * @param {MyGame.Example.Color} test2 - * @param {number} test3_a - * @param {number} test3_b - * @returns {flatbuffers.Offset} - */ - static createVec3(builder: flatbuffers.Builder, x: number, y: number, z: number, test1: number, test2: MyGame.Example.Color, test3_a: number, test3_b: number): flatbuffers.Offset { - builder.prep(16, 32); - builder.pad(2); - builder.prep(2, 4); - builder.pad(1); - builder.writeInt8(test3_b); - builder.writeInt16(test3_a); - builder.pad(1); - builder.writeInt8(test2); - builder.writeFloat64(test1); - builder.pad(4); - builder.writeFloat32(z); - builder.writeFloat32(y); - builder.writeFloat32(x); - return builder.offset(); - } + test4(index: number, obj?: Test): Test { + const offset = this.bb.__offset(this.bb_pos, 22); + return offset ? (obj || new Test()).__init(this.bb.__vector(this.bb_pos + offset) + index * 4, this.bb) : null; } -} - -/** - * @constructor - */ -export namespace MyGame.Example { - export class Stat { - /** - * @type {flatbuffers.ByteBuffer} - */ - bb: flatbuffers.ByteBuffer= null; - - /** - * @type {number} - */ - bb_pos: number = 0; - /** - * @param {number} i - * @param {flatbuffers.ByteBuffer} bb - * @returns {Stat} - */ - __init(i: number, bb: flatbuffers.ByteBuffer): Stat { - this.bb_pos = i; - this.bb = bb; - return this; - } - - /** - * @param {flatbuffers.ByteBuffer} bb - * @param {Stat=} obj - * @returns {Stat} - */ - static getRootAsStat(bb: flatbuffers.ByteBuffer, obj?: Stat): Stat { - return (obj || new Stat()).__init(bb.readInt32(bb.position()) + bb.position(), bb); - } - - /** - * @param {flatbuffers.Encoding=} optionalEncoding - * @returns {string|Uint8Array} - */ - id(): string; - id(optionalEncoding: flatbuffers.Encoding): string|Uint8Array; - id(optionalEncoding?: any): string|Uint8Array { - const offset = this.bb.__offset(this.bb_pos, 4); - return offset ? this.bb.__string(this.bb_pos + offset, optionalEncoding) : null; - } - - /** - * @returns {flatbuffers.Long} - */ - val(): flatbuffers.Long { - const offset = this.bb.__offset(this.bb_pos, 6); - return offset ? this.bb.readInt64(this.bb_pos + offset) : this.bb.createLong(0, 0); - } - - /** - * @param {flatbuffers.Long} value - * @returns {boolean} - */ - mutate_val(value: flatbuffers.Long): boolean { - const offset = this.bb.__offset(this.bb_pos, 6); - - if (offset === 0) { - return false; - } - - this.bb.writeInt64(this.bb_pos + offset, value); - return true; - } - - /** - * @returns {number} - */ - count(): number { - const offset = this.bb.__offset(this.bb_pos, 8); - return offset ? this.bb.readUint16(this.bb_pos + offset) : 0; - } - - /** - * @param {flatbuffers.Builder} builder - */ - static startStat(builder: flatbuffers.Builder) { - builder.startObject(3); - } - /** - * @param {flatbuffers.Builder} builder - * @param {flatbuffers.Offset} idOffset - */ - static addId(builder: flatbuffers.Builder, idOffset: flatbuffers.Offset) { - builder.addFieldOffset(0, idOffset, 0); - } - - /** - * @param {flatbuffers.Builder} builder - * @param {flatbuffers.Long} val - */ - static addVal(builder: flatbuffers.Builder, val: flatbuffers.Long) { - builder.addFieldInt64(1, val, builder.createLong(0, 0)); - } - - /** - * @param {flatbuffers.Builder} builder - * @param {number} count - */ - static addCount(builder: flatbuffers.Builder, count: number) { - builder.addFieldInt16(2, count, 0); - } - - /** - * @param {flatbuffers.Builder} builder - * @returns {flatbuffers.Offset} - */ - static endStat(builder: flatbuffers.Builder): flatbuffers.Offset { - const offset = builder.endObject(); - return offset; - } + test4Length(): number { + const offset = this.bb.__offset(this.bb_pos, 22); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; } -} - -/** - * an example documentation comment: monster object - * - * @constructor - */ -export namespace MyGame.Example { - export class Monster { - /** - * @type {flatbuffers.ByteBuffer} - */ - bb: flatbuffers.ByteBuffer= null; - - /** - * @type {number} - */ - bb_pos: number = 0; - /** - * @param {number} i - * @param {flatbuffers.ByteBuffer} bb - * @returns {Monster} - */ - __init(i: number, bb: flatbuffers.ByteBuffer): Monster { - this.bb_pos = i; - this.bb = bb; - return this; - } - - /** - * @param {flatbuffers.ByteBuffer} bb - * @param {Monster=} obj - * @returns {Monster} - */ - static getRootAsMonster(bb: flatbuffers.ByteBuffer, obj?: Monster): Monster { - return (obj || new Monster()).__init(bb.readInt32(bb.position()) + bb.position(), bb); - } - - /** - * @param {flatbuffers.ByteBuffer} bb - * @returns {boolean} - */ - static bufferHasIdentifier(bb: flatbuffers.ByteBuffer): boolean { - return bb.__has_identifier('MONS'); - } - - /** - * @param {MyGame.Example.Vec3=} obj - * @returns {MyGame.Example.Vec3} - */ - pos(obj?: MyGame.Example.Vec3): MyGame.Example.Vec3 { - const offset = this.bb.__offset(this.bb_pos, 4); - return offset ? (obj || new MyGame.Example.Vec3()).__init(this.bb_pos + offset, this.bb) : null; - } - - /** - * @returns {number} - */ - mana(): number { - const offset = this.bb.__offset(this.bb_pos, 6); - return offset ? this.bb.readInt16(this.bb_pos + offset) : 150; - } - - /** - * @param {number} value - * @returns {boolean} - */ - mutate_mana(value: number): boolean { - const offset = this.bb.__offset(this.bb_pos, 6); - - if (offset === 0) { - return false; - } - - this.bb.writeInt16(this.bb_pos + offset, value); - return true; - } - - /** - * @returns {number} - */ - hp(): number { - const offset = this.bb.__offset(this.bb_pos, 8); - return offset ? this.bb.readInt16(this.bb_pos + offset) : 100; - } - - /** - * @param {number} value - * @returns {boolean} - */ - mutate_hp(value: number): boolean { - const offset = this.bb.__offset(this.bb_pos, 8); - - if (offset === 0) { - return false; - } - - this.bb.writeInt16(this.bb_pos + offset, value); - return true; - } - - /** - * @param {flatbuffers.Encoding=} optionalEncoding - * @returns {string|Uint8Array} - */ - name(): string; - name(optionalEncoding: flatbuffers.Encoding): string|Uint8Array; - name(optionalEncoding?: any): string|Uint8Array { - const offset = this.bb.__offset(this.bb_pos, 10); - return offset ? this.bb.__string(this.bb_pos + offset, optionalEncoding) : null; - } - - /** - * @param {number} index - * @returns {number} - */ - inventory(index: number): number { - const offset = this.bb.__offset(this.bb_pos, 14); - return offset ? this.bb.readUint8(this.bb.__vector(this.bb_pos + offset) + index) : 0; - } - - /** - * @returns {number} - */ - inventoryLength(): number { - const offset = this.bb.__offset(this.bb_pos, 14); - return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; - } - - /** - * @returns {Uint8Array} - */ - inventoryArray(): Uint8Array { - const offset = this.bb.__offset(this.bb_pos, 14); - return offset ? new Uint8Array(this.bb.bytes().buffer, this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null; - } - - /** - * @returns {MyGame.Example.Color} - */ - color(): MyGame.Example.Color { - const offset = this.bb.__offset(this.bb_pos, 16); - return offset ? /** @type {MyGame.Example.Color} */ (this.bb.readInt8(this.bb_pos + offset)) : MyGame.Example.Color.Blue; - } - - /** - * @param {MyGame.Example.Color} value - * @returns {boolean} - */ - mutate_color(value: MyGame.Example.Color): boolean { - const offset = this.bb.__offset(this.bb_pos, 16); - - if (offset === 0) { - return false; - } - - this.bb.writeInt8(this.bb_pos + offset, value); - return true; - } - - /** - * @returns {MyGame.Example.Any} - */ - testType(): MyGame.Example.Any { - const offset = this.bb.__offset(this.bb_pos, 18); - return offset ? /** @type {MyGame.Example.Any} */ (this.bb.readUint8(this.bb_pos + offset)) : MyGame.Example.Any.NONE; - } - - /** - * @param {flatbuffers.Table} obj - * @returns {?flatbuffers.Table} - */ - test(obj: T): T { - const offset = this.bb.__offset(this.bb_pos, 20); - return offset ? this.bb.__union(obj, this.bb_pos + offset) : null; - } - - /** - * @param {number} index - * @param {MyGame.Example.Test=} obj - * @returns {MyGame.Example.Test} - */ - test4(index: number, obj?: MyGame.Example.Test): MyGame.Example.Test { - const offset = this.bb.__offset(this.bb_pos, 22); - return offset ? (obj || new MyGame.Example.Test()).__init(this.bb.__vector(this.bb_pos + offset) + index * 4, this.bb) : null; - } - - /** - * @returns {number} - */ - test4Length(): number { - const offset = this.bb.__offset(this.bb_pos, 22); - return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; - } - - /** - * @param {number} index - * @param {flatbuffers.Encoding=} optionalEncoding - * @returns {string|Uint8Array} - */ - testarrayofstring(index: number): string; - testarrayofstring(index: number, optionalEncoding: flatbuffers.Encoding): string|Uint8Array; - testarrayofstring(index: number, optionalEncoding?: any): string|Uint8Array { - const offset = this.bb.__offset(this.bb_pos, 24); - return offset ? this.bb.__string(this.bb.__vector(this.bb_pos + offset) + index * 4, optionalEncoding) : null; - } - - /** - * @returns {number} - */ - testarrayofstringLength(): number { - const offset = this.bb.__offset(this.bb_pos, 24); - return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; - } - - /** - * an example documentation comment: this will end up in the generated code - * multiline too - * - * @param {number} index - * @param {MyGame.Example.Monster=} obj - * @returns {MyGame.Example.Monster} - */ - testarrayoftables(index: number, obj?: MyGame.Example.Monster): MyGame.Example.Monster { - const offset = this.bb.__offset(this.bb_pos, 26); - return offset ? (obj || new MyGame.Example.Monster()).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos + offset) + index * 4), this.bb) : null; - } - - /** - * @returns {number} - */ - testarrayoftablesLength(): number { - const offset = this.bb.__offset(this.bb_pos, 26); - return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; - } - /** - * @param {MyGame.Example.Monster=} obj - * @returns {MyGame.Example.Monster} - */ - enemy(obj?: MyGame.Example.Monster): MyGame.Example.Monster { - const offset = this.bb.__offset(this.bb_pos, 28); - return offset ? (obj || new MyGame.Example.Monster()).__init(this.bb.__indirect(this.bb_pos + offset), this.bb) : null; - } - - /** - * @param {number} index - * @returns {number} - */ - testnestedflatbuffer(index: number): number { - const offset = this.bb.__offset(this.bb_pos, 30); - return offset ? this.bb.readUint8(this.bb.__vector(this.bb_pos + offset) + index) : 0; - } - - /** - * @returns {number} - */ - testnestedflatbufferLength(): number { - const offset = this.bb.__offset(this.bb_pos, 30); - return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; - } - - /** - * @returns {Uint8Array} - */ - testnestedflatbufferArray(): Uint8Array { - const offset = this.bb.__offset(this.bb_pos, 30); - return offset ? new Uint8Array(this.bb.bytes().buffer, this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null; - } - - /** - * @param {MyGame.Example.Stat=} obj - * @returns {MyGame.Example.Stat} - */ - testempty(obj?: MyGame.Example.Stat): MyGame.Example.Stat { - const offset = this.bb.__offset(this.bb_pos, 32); - return offset ? (obj || new MyGame.Example.Stat()).__init(this.bb.__indirect(this.bb_pos + offset), this.bb) : null; - } - - /** - * @returns {boolean} - */ - testbool(): boolean { - const offset = this.bb.__offset(this.bb_pos, 34); - return offset ? !!this.bb.readInt8(this.bb_pos + offset) : false; - } - - /** - * @returns {number} - */ - testhashs32Fnv1(): number { - const offset = this.bb.__offset(this.bb_pos, 36); - return offset ? this.bb.readInt32(this.bb_pos + offset) : 0; - } - - /** - * @param {number} value - * @returns {boolean} - */ - mutate_testhashs32_fnv1(value: number): boolean { - const offset = this.bb.__offset(this.bb_pos, 36); - - if (offset === 0) { - return false; - } - - this.bb.writeInt32(this.bb_pos + offset, value); - return true; - } - - /** - * @returns {number} - */ - testhashu32Fnv1(): number { - const offset = this.bb.__offset(this.bb_pos, 38); - return offset ? this.bb.readUint32(this.bb_pos + offset) : 0; - } - - /** - * @returns {flatbuffers.Long} - */ - testhashs64Fnv1(): flatbuffers.Long { - const offset = this.bb.__offset(this.bb_pos, 40); - return offset ? this.bb.readInt64(this.bb_pos + offset) : this.bb.createLong(0, 0); - } - - /** - * @param {flatbuffers.Long} value - * @returns {boolean} - */ - mutate_testhashs64_fnv1(value: flatbuffers.Long): boolean { - const offset = this.bb.__offset(this.bb_pos, 40); - - if (offset === 0) { - return false; - } - - this.bb.writeInt64(this.bb_pos + offset, value); - return true; - } - - /** - * @returns {flatbuffers.Long} - */ - testhashu64Fnv1(): flatbuffers.Long { - const offset = this.bb.__offset(this.bb_pos, 42); - return offset ? this.bb.readUint64(this.bb_pos + offset) : this.bb.createLong(0, 0); - } - - /** - * @returns {number} - */ - testhashs32Fnv1a(): number { - const offset = this.bb.__offset(this.bb_pos, 44); - return offset ? this.bb.readInt32(this.bb_pos + offset) : 0; - } - - /** - * @param {number} value - * @returns {boolean} - */ - mutate_testhashs32_fnv1a(value: number): boolean { - const offset = this.bb.__offset(this.bb_pos, 44); - - if (offset === 0) { - return false; - } - - this.bb.writeInt32(this.bb_pos + offset, value); - return true; - } - - /** - * @returns {number} - */ - testhashu32Fnv1a(): number { - const offset = this.bb.__offset(this.bb_pos, 46); - return offset ? this.bb.readUint32(this.bb_pos + offset) : 0; - } - - /** - * @returns {flatbuffers.Long} - */ - testhashs64Fnv1a(): flatbuffers.Long { - const offset = this.bb.__offset(this.bb_pos, 48); - return offset ? this.bb.readInt64(this.bb_pos + offset) : this.bb.createLong(0, 0); - } - - /** - * @param {flatbuffers.Long} value - * @returns {boolean} - */ - mutate_testhashs64_fnv1a(value: flatbuffers.Long): boolean { - const offset = this.bb.__offset(this.bb_pos, 48); - - if (offset === 0) { - return false; - } - - this.bb.writeInt64(this.bb_pos + offset, value); - return true; - } - - /** - * @returns {flatbuffers.Long} - */ - testhashu64Fnv1a(): flatbuffers.Long { - const offset = this.bb.__offset(this.bb_pos, 50); - return offset ? this.bb.readUint64(this.bb_pos + offset) : this.bb.createLong(0, 0); - } - - /** - * @param {number} index - * @returns {boolean} - */ - testarrayofbools(index: number): boolean { - const offset = this.bb.__offset(this.bb_pos, 52); - return offset ? !!this.bb.readInt8(this.bb.__vector(this.bb_pos + offset) + index) : false; - } - - /** - * @returns {number} - */ - testarrayofboolsLength(): number { - const offset = this.bb.__offset(this.bb_pos, 52); - return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; - } - - /** - * @returns {Int8Array} - */ - testarrayofboolsArray(): Int8Array { - const offset = this.bb.__offset(this.bb_pos, 52); - return offset ? new Int8Array(this.bb.bytes().buffer, this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null; - } - - /** - * @returns {number} - */ - testf(): number { - const offset = this.bb.__offset(this.bb_pos, 54); - return offset ? this.bb.readFloat32(this.bb_pos + offset) : 3.14159; - } - - /** - * @param {number} value - * @returns {boolean} - */ - mutate_testf(value: number): boolean { - const offset = this.bb.__offset(this.bb_pos, 54); - - if (offset === 0) { - return false; - } - - this.bb.writeFloat32(this.bb_pos + offset, value); - return true; - } - - /** - * @returns {number} - */ - testf2(): number { - const offset = this.bb.__offset(this.bb_pos, 56); - return offset ? this.bb.readFloat32(this.bb_pos + offset) : 3.0; - } - - /** - * @param {number} value - * @returns {boolean} - */ - mutate_testf2(value: number): boolean { - const offset = this.bb.__offset(this.bb_pos, 56); - - if (offset === 0) { - return false; - } - - this.bb.writeFloat32(this.bb_pos + offset, value); - return true; - } - - /** - * @returns {number} - */ - testf3(): number { - const offset = this.bb.__offset(this.bb_pos, 58); - return offset ? this.bb.readFloat32(this.bb_pos + offset) : 0.0; - } - - /** - * @param {number} value - * @returns {boolean} - */ - mutate_testf3(value: number): boolean { - const offset = this.bb.__offset(this.bb_pos, 58); - - if (offset === 0) { - return false; - } - - this.bb.writeFloat32(this.bb_pos + offset, value); - return true; - } - - /** - * @param {number} index - * @param {flatbuffers.Encoding=} optionalEncoding - * @returns {string|Uint8Array} - */ - testarrayofstring2(index: number): string; - testarrayofstring2(index: number, optionalEncoding: flatbuffers.Encoding): string|Uint8Array; - testarrayofstring2(index: number, optionalEncoding?: any): string|Uint8Array { - const offset = this.bb.__offset(this.bb_pos, 60); - return offset ? this.bb.__string(this.bb.__vector(this.bb_pos + offset) + index * 4, optionalEncoding) : null; - } - - /** - * @returns {number} - */ - testarrayofstring2Length(): number { - const offset = this.bb.__offset(this.bb_pos, 60); - return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; - } - - /** - * @param {flatbuffers.Builder} builder - */ - static startMonster(builder: flatbuffers.Builder) { - builder.startObject(29); - } - - /** - * @param {flatbuffers.Builder} builder - * @param {flatbuffers.Offset} posOffset - */ - static addPos(builder: flatbuffers.Builder, posOffset: flatbuffers.Offset) { - builder.addFieldStruct(0, posOffset, 0); - } - - /** - * @param {flatbuffers.Builder} builder - * @param {number} mana - */ - static addMana(builder: flatbuffers.Builder, mana: number) { - builder.addFieldInt16(1, mana, 150); - } - - /** - * @param {flatbuffers.Builder} builder - * @param {number} hp - */ - static addHp(builder: flatbuffers.Builder, hp: number) { - builder.addFieldInt16(2, hp, 100); - } - - /** - * @param {flatbuffers.Builder} builder - * @param {flatbuffers.Offset} nameOffset - */ - static addName(builder: flatbuffers.Builder, nameOffset: flatbuffers.Offset) { - builder.addFieldOffset(3, nameOffset, 0); - } - - /** - * @param {flatbuffers.Builder} builder - * @param {flatbuffers.Offset} inventoryOffset - */ - static addInventory(builder: flatbuffers.Builder, inventoryOffset: flatbuffers.Offset) { - builder.addFieldOffset(5, inventoryOffset, 0); - } - - /** - * @param {flatbuffers.Builder} builder - * @param {Array.} data - * @returns {flatbuffers.Offset} - */ - static createInventoryVector(builder: flatbuffers.Builder, data: number[] | Uint8Array): flatbuffers.Offset { - if (!data) { - return null; - } - builder.startVector(1, data.length, 1); - for (let i = data.length - 1; i >= 0; i--) { - builder.addInt8(data[i]); - } - return builder.endVector(); - } - - /** - * @param {flatbuffers.Builder} builder - * @param {number} numElems - */ - static startInventoryVector(builder: flatbuffers.Builder, numElems: number) { - builder.startVector(1, numElems, 1); - } - - /** - * @param {flatbuffers.Builder} builder - * @param {MyGame.Example.Color} color - */ - static addColor(builder: flatbuffers.Builder, color: MyGame.Example.Color) { - builder.addFieldInt8(6, color, MyGame.Example.Color.Blue); - } - - /** - * @param {flatbuffers.Builder} builder - * @param {MyGame.Example.Any} testType - */ - static addTestType(builder: flatbuffers.Builder, testType: MyGame.Example.Any) { - builder.addFieldInt8(7, testType, MyGame.Example.Any.NONE); - } - - /** - * @param {flatbuffers.Builder} builder - * @param {flatbuffers.Offset} testOffset - */ - static addTest(builder: flatbuffers.Builder, testOffset: flatbuffers.Offset) { - builder.addFieldOffset(8, testOffset, 0); - } - - /** - * @param {flatbuffers.Builder} builder - * @param {flatbuffers.Offset} test4Offset - */ - static addTest4(builder: flatbuffers.Builder, test4Offset: flatbuffers.Offset) { - builder.addFieldOffset(9, test4Offset, 0); - } - - /** - * @param {flatbuffers.Builder} builder - * @param {number} numElems - */ - static startTest4Vector(builder: flatbuffers.Builder, numElems: number) { - builder.startVector(4, numElems, 2); - } - - /** - * @param {flatbuffers.Builder} builder - * @param {flatbuffers.Offset} testarrayofstringOffset - */ - static addTestarrayofstring(builder: flatbuffers.Builder, testarrayofstringOffset: flatbuffers.Offset) { - builder.addFieldOffset(10, testarrayofstringOffset, 0); - } - - /** - * @param {flatbuffers.Builder} builder - * @param {Array.} data - * @returns {flatbuffers.Offset} - */ - static createTestarrayofstringVector(builder: flatbuffers.Builder, data: flatbuffers.Offset[]): flatbuffers.Offset { - if (!data) { - return null; - } - builder.startVector(4, data.length, 4); - for (let i = data.length - 1; i >= 0; i--) { - builder.addOffset(data[i]); - } - return builder.endVector(); - } - - /** - * @param {flatbuffers.Builder} builder - * @param {number} numElems - */ - static startTestarrayofstringVector(builder: flatbuffers.Builder, numElems: number) { - builder.startVector(4, numElems, 4); - } - - /** - * @param {flatbuffers.Builder} builder - * @param {flatbuffers.Offset} testarrayoftablesOffset - */ - static addTestarrayoftables(builder: flatbuffers.Builder, testarrayoftablesOffset: flatbuffers.Offset) { - builder.addFieldOffset(11, testarrayoftablesOffset, 0); - } - - /** - * @param {flatbuffers.Builder} builder - * @param {Array.} data - * @returns {flatbuffers.Offset} - */ - static createTestarrayoftablesVector(builder: flatbuffers.Builder, data: flatbuffers.Offset[]): flatbuffers.Offset { - if (!data) { - return null; - } - builder.startVector(4, data.length, 4); - for (let i = data.length - 1; i >= 0; i--) { - builder.addOffset(data[i]); - } - return builder.endVector(); - } - - /** - * @param {flatbuffers.Builder} builder - * @param {number} numElems - */ - static startTestarrayoftablesVector(builder: flatbuffers.Builder, numElems: number) { - builder.startVector(4, numElems, 4); - } - - /** - * @param {flatbuffers.Builder} builder - * @param {flatbuffers.Offset} enemyOffset - */ - static addEnemy(builder: flatbuffers.Builder, enemyOffset: flatbuffers.Offset) { - builder.addFieldOffset(12, enemyOffset, 0); - } - - /** - * @param {flatbuffers.Builder} builder - * @param {flatbuffers.Offset} testnestedflatbufferOffset - */ - static addTestnestedflatbuffer(builder: flatbuffers.Builder, testnestedflatbufferOffset: flatbuffers.Offset) { - builder.addFieldOffset(13, testnestedflatbufferOffset, 0); - } - - /** - * @param {flatbuffers.Builder} builder - * @param {Array.} data - * @returns {flatbuffers.Offset} - */ - static createTestnestedflatbufferVector(builder: flatbuffers.Builder, data: number[] | Uint8Array): flatbuffers.Offset { - if (!data) { - return null; - } - builder.startVector(1, data.length, 1); - for (let i = data.length - 1; i >= 0; i--) { - builder.addInt8(data[i]); - } - return builder.endVector(); - } - - /** - * @param {flatbuffers.Builder} builder - * @param {number} numElems - */ - static startTestnestedflatbufferVector(builder: flatbuffers.Builder, numElems: number) { - builder.startVector(1, numElems, 1); - } - - /** - * @param {flatbuffers.Builder} builder - * @param {flatbuffers.Offset} testemptyOffset - */ - static addTestempty(builder: flatbuffers.Builder, testemptyOffset: flatbuffers.Offset) { - builder.addFieldOffset(14, testemptyOffset, 0); - } - - /** - * @param {flatbuffers.Builder} builder - * @param {boolean} testbool - */ - static addTestbool(builder: flatbuffers.Builder, testbool: boolean) { - builder.addFieldInt8(15, +testbool, +false); - } - - /** - * @param {flatbuffers.Builder} builder - * @param {number} testhashs32Fnv1 - */ - static addTesthashs32Fnv1(builder: flatbuffers.Builder, testhashs32Fnv1: number) { - builder.addFieldInt32(16, testhashs32Fnv1, 0); - } - - /** - * @param {flatbuffers.Builder} builder - * @param {number} testhashu32Fnv1 - */ - static addTesthashu32Fnv1(builder: flatbuffers.Builder, testhashu32Fnv1: number) { - builder.addFieldInt32(17, testhashu32Fnv1, 0); - } - - /** - * @param {flatbuffers.Builder} builder - * @param {flatbuffers.Long} testhashs64Fnv1 - */ - static addTesthashs64Fnv1(builder: flatbuffers.Builder, testhashs64Fnv1: flatbuffers.Long) { - builder.addFieldInt64(18, testhashs64Fnv1, builder.createLong(0, 0)); - } - - /** - * @param {flatbuffers.Builder} builder - * @param {flatbuffers.Long} testhashu64Fnv1 - */ - static addTesthashu64Fnv1(builder: flatbuffers.Builder, testhashu64Fnv1: flatbuffers.Long) { - builder.addFieldInt64(19, testhashu64Fnv1, builder.createLong(0, 0)); - } - - /** - * @param {flatbuffers.Builder} builder - * @param {number} testhashs32Fnv1a - */ - static addTesthashs32Fnv1a(builder: flatbuffers.Builder, testhashs32Fnv1a: number) { - builder.addFieldInt32(20, testhashs32Fnv1a, 0); - } - - /** - * @param {flatbuffers.Builder} builder - * @param {number} testhashu32Fnv1a - */ - static addTesthashu32Fnv1a(builder: flatbuffers.Builder, testhashu32Fnv1a: number) { - builder.addFieldInt32(21, testhashu32Fnv1a, 0); - } - - /** - * @param {flatbuffers.Builder} builder - * @param {flatbuffers.Long} testhashs64Fnv1a - */ - static addTesthashs64Fnv1a(builder: flatbuffers.Builder, testhashs64Fnv1a: flatbuffers.Long) { - builder.addFieldInt64(22, testhashs64Fnv1a, builder.createLong(0, 0)); - } + testarrayofstring(index: number): string; + testarrayofstring(index: number, optionalEncoding: flatbuffers.Encoding): string|Uint8Array; + testarrayofstring(index: number, optionalEncoding?: any): string|Uint8Array { + const offset = this.bb.__offset(this.bb_pos, 24); + return offset ? this.bb.__string(this.bb.__vector(this.bb_pos + offset) + index * 4, optionalEncoding) : null; + } - /** - * @param {flatbuffers.Builder} builder - * @param {flatbuffers.Long} testhashu64Fnv1a - */ - static addTesthashu64Fnv1a(builder: flatbuffers.Builder, testhashu64Fnv1a: flatbuffers.Long) { - builder.addFieldInt64(23, testhashu64Fnv1a, builder.createLong(0, 0)); - } + testarrayofstringLength(): number { + const offset = this.bb.__offset(this.bb_pos, 24); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } - /** - * @param {flatbuffers.Builder} builder - * @param {flatbuffers.Offset} testarrayofboolsOffset - */ - static addTestarrayofbools(builder: flatbuffers.Builder, testarrayofboolsOffset: flatbuffers.Offset) { - builder.addFieldOffset(24, testarrayofboolsOffset, 0); - } + testarrayoftables(index: number, obj?: Monster): Monster { + const offset = this.bb.__offset(this.bb_pos, 26); + return offset ? (obj || new Monster()).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos + offset) + index * 4), this.bb) : null; + } - /** - * @param {flatbuffers.Builder} builder - * @param {Array.} data - * @returns {flatbuffers.Offset} - */ - static createTestarrayofboolsVector(builder: flatbuffers.Builder, data: boolean[]): flatbuffers.Offset { - if (!data) { - return null; - } - builder.startVector(1, data.length, 1); - for (let i = data.length - 1; i >= 0; i--) { - builder.addInt8(+data[i]); - } - return builder.endVector(); - } + testarrayoftablesLength(): number { + const offset = this.bb.__offset(this.bb_pos, 26); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } - /** - * @param {flatbuffers.Builder} builder - * @param {number} numElems - */ - static startTestarrayofboolsVector(builder: flatbuffers.Builder, numElems: number) { - builder.startVector(1, numElems, 1); - } + enemy(obj?: Monster): Monster { + const offset = this.bb.__offset(this.bb_pos, 28); + return offset ? (obj || new Monster()).__init(this.bb.__indirect(this.bb_pos + offset), this.bb) : null; + } - /** - * @param {flatbuffers.Builder} builder - * @param {number} testf - */ - static addTestf(builder: flatbuffers.Builder, testf: number) { - builder.addFieldFloat32(25, testf, 3.14159); - } + testnestedflatbuffer(index: number): number { + const offset = this.bb.__offset(this.bb_pos, 30); + return offset ? this.bb.readUint8(this.bb.__vector(this.bb_pos + offset) + index) : 0; + } - /** - * @param {flatbuffers.Builder} builder - * @param {number} testf2 - */ - static addTestf2(builder: flatbuffers.Builder, testf2: number) { - builder.addFieldFloat32(26, testf2, 3.0); - } + testnestedflatbufferLength(): number { + const offset = this.bb.__offset(this.bb_pos, 30); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } - /** - * @param {flatbuffers.Builder} builder - * @param {number} testf3 - */ - static addTestf3(builder: flatbuffers.Builder, testf3: number) { - builder.addFieldFloat32(27, testf3, 0.0); - } + testnestedflatbufferArray(): Uint8Array { + const offset = this.bb.__offset(this.bb_pos, 30); + return offset ? new Uint8Array(this.bb.bytes().buffer, this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null; + } - /** - * @param {flatbuffers.Builder} builder - * @param {flatbuffers.Offset} testarrayofstring2Offset - */ - static addTestarrayofstring2(builder: flatbuffers.Builder, testarrayofstring2Offset: flatbuffers.Offset) { - builder.addFieldOffset(28, testarrayofstring2Offset, 0); - } + testempty(obj?: Stat): Stat { + const offset = this.bb.__offset(this.bb_pos, 32); + return offset ? (obj || new Stat()).__init(this.bb.__indirect(this.bb_pos + offset), this.bb) : null; + } - /** - * @param {flatbuffers.Builder} builder - * @param {Array.} data - * @returns {flatbuffers.Offset} - */ - static createTestarrayofstring2Vector(builder: flatbuffers.Builder, data: flatbuffers.Offset[]): flatbuffers.Offset { - if (!data) { - return null; - } - builder.startVector(4, data.length, 4); - for (let i = data.length - 1; i >= 0; i--) { - builder.addOffset(data[i]); - } - return builder.endVector(); - } + testbool(): boolean { + const offset = this.bb.__offset(this.bb_pos, 34); + return offset ? !!this.bb.readInt8(this.bb_pos + offset) : false; + } - /** - * @param {flatbuffers.Builder} builder - * @param {number} numElems - */ - static startTestarrayofstring2Vector(builder: flatbuffers.Builder, numElems: number) { - builder.startVector(4, numElems, 4); - } + testhashs32Fnv1(): number { + const offset = this.bb.__offset(this.bb_pos, 36); + return offset ? this.bb.readInt32(this.bb_pos + offset) : 0; + } - /** - * @param {flatbuffers.Builder} builder - * @returns {flatbuffers.Offset} - */ - static endMonster(builder: flatbuffers.Builder): flatbuffers.Offset { - const offset = builder.endObject(); - builder.requiredField(offset, 10); // name - return offset; - } + mutate_testhashs32_fnv1(value: number): boolean { + const offset = this.bb.__offset(this.bb_pos, 36); - /** - * @param {flatbuffers.Builder} builder - * @param {flatbuffers.Offset} offset - */ - static finishMonsterBuffer(builder: flatbuffers.Builder, offset: flatbuffers.Offset) { - builder.finish(offset, 'MONS'); + if (offset === 0) { + return false; } + + this.bb.writeInt32(this.bb_pos + offset, value); + return true; + } + + testhashu32Fnv1(): number { + const offset = this.bb.__offset(this.bb_pos, 38); + return offset ? this.bb.readUint32(this.bb_pos + offset) : 0; + } + + testhashs64Fnv1(): flatbuffers.Long { + const offset = this.bb.__offset(this.bb_pos, 40); + return offset ? this.bb.readInt64(this.bb_pos + offset) : this.bb.createLong(0, 0); + } + + mutate_testhashs64_fnv1(value: flatbuffers.Long): boolean { + const offset = this.bb.__offset(this.bb_pos, 40); + + if (offset === 0) { + return false; + } + + this.bb.writeInt64(this.bb_pos + offset, value); + return true; + } + + testhashu64Fnv1(): flatbuffers.Long { + const offset = this.bb.__offset(this.bb_pos, 42); + return offset ? this.bb.readUint64(this.bb_pos + offset) : this.bb.createLong(0, 0); + } + + testhashs32Fnv1a(): number { + const offset = this.bb.__offset(this.bb_pos, 44); + return offset ? this.bb.readInt32(this.bb_pos + offset) : 0; + } + + mutate_testhashs32_fnv1a(value: number): boolean { + const offset = this.bb.__offset(this.bb_pos, 44); + + if (offset === 0) { + return false; + } + + this.bb.writeInt32(this.bb_pos + offset, value); + return true; + } + + testhashu32Fnv1a(): number { + const offset = this.bb.__offset(this.bb_pos, 46); + return offset ? this.bb.readUint32(this.bb_pos + offset) : 0; + } + + testhashs64Fnv1a(): flatbuffers.Long { + const offset = this.bb.__offset(this.bb_pos, 48); + return offset ? this.bb.readInt64(this.bb_pos + offset) : this.bb.createLong(0, 0); + } + + mutate_testhashs64_fnv1a(value: flatbuffers.Long): boolean { + const offset = this.bb.__offset(this.bb_pos, 48); + + if (offset === 0) { + return false; + } + + this.bb.writeInt64(this.bb_pos + offset, value); + return true; + } + + testhashu64Fnv1a(): flatbuffers.Long { + const offset = this.bb.__offset(this.bb_pos, 50); + return offset ? this.bb.readUint64(this.bb_pos + offset) : this.bb.createLong(0, 0); + } + + testarrayofbools(index: number): boolean { + const offset = this.bb.__offset(this.bb_pos, 52); + return offset ? !!this.bb.readInt8(this.bb.__vector(this.bb_pos + offset) + index) : false; + } + + testarrayofboolsLength(): number { + const offset = this.bb.__offset(this.bb_pos, 52); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + + testarrayofboolsArray(): Int8Array { + const offset = this.bb.__offset(this.bb_pos, 52); + return offset ? new Int8Array(this.bb.bytes().buffer, this.bb.bytes().byteOffset + this.bb.__vector(this.bb_pos + offset), this.bb.__vector_len(this.bb_pos + offset)) : null; + } + + testf(): number { + const offset = this.bb.__offset(this.bb_pos, 54); + return offset ? this.bb.readFloat32(this.bb_pos + offset) : 3.14159; + } + + mutate_testf(value: number): boolean { + const offset = this.bb.__offset(this.bb_pos, 54); + + if (offset === 0) { + return false; + } + + this.bb.writeFloat32(this.bb_pos + offset, value); + return true; + } + + testf2(): number { + const offset = this.bb.__offset(this.bb_pos, 56); + return offset ? this.bb.readFloat32(this.bb_pos + offset) : 3.0; + } + + mutate_testf2(value: number): boolean { + const offset = this.bb.__offset(this.bb_pos, 56); + + if (offset === 0) { + return false; + } + + this.bb.writeFloat32(this.bb_pos + offset, value); + return true; + } + + testf3(): number { + const offset = this.bb.__offset(this.bb_pos, 58); + return offset ? this.bb.readFloat32(this.bb_pos + offset) : 0.0; + } + + mutate_testf3(value: number): boolean { + const offset = this.bb.__offset(this.bb_pos, 58); + + if (offset === 0) { + return false; + } + + this.bb.writeFloat32(this.bb_pos + offset, value); + return true; + } + + testarrayofstring2(index: number): string; + testarrayofstring2(index: number, optionalEncoding: flatbuffers.Encoding): string|Uint8Array; + testarrayofstring2(index: number, optionalEncoding?: any): string|Uint8Array { + const offset = this.bb.__offset(this.bb_pos, 60); + return offset ? this.bb.__string(this.bb.__vector(this.bb_pos + offset) + index * 4, optionalEncoding) : null; + } + + testarrayofstring2Length(): number { + const offset = this.bb.__offset(this.bb_pos, 60); + return offset ? this.bb.__vector_len(this.bb_pos + offset) : 0; + } + + static startMonster(builder: flatbuffers.Builder) { + builder.startObject(29); + } + + static addPos(builder: flatbuffers.Builder, posOffset: flatbuffers.Offset) { + builder.addFieldStruct(0, posOffset, 0); + } + + static addMana(builder: flatbuffers.Builder, mana: number) { + builder.addFieldInt16(1, mana, 150); + } + + static addHp(builder: flatbuffers.Builder, hp: number) { + builder.addFieldInt16(2, hp, 100); + } + + static addName(builder: flatbuffers.Builder, nameOffset: flatbuffers.Offset) { + builder.addFieldOffset(3, nameOffset, 0); + } + + static addInventory(builder: flatbuffers.Builder, inventoryOffset: flatbuffers.Offset) { + builder.addFieldOffset(5, inventoryOffset, 0); + } + + static createInventoryVector(builder: flatbuffers.Builder, data: number[] | Uint8Array): flatbuffers.Offset { + if (!data) { + return null; + } + builder.startVector(1, data.length, 1); + for (let i = data.length - 1; i >= 0; i--) { + builder.addInt8(data[i]); + } + return builder.endVector(); + } + + static startInventoryVector(builder: flatbuffers.Builder, numElems: number) { + builder.startVector(1, numElems, 1); + } + + static addColor(builder: flatbuffers.Builder, color: Color) { + builder.addFieldInt8(6, color, Color.Blue); + } + + static addTestType(builder: flatbuffers.Builder, testType: Any) { + builder.addFieldInt8(7, testType, Any.NONE); + } + + static addTest(builder: flatbuffers.Builder, testOffset: flatbuffers.Offset) { + builder.addFieldOffset(8, testOffset, 0); + } + + static addTest4(builder: flatbuffers.Builder, test4Offset: flatbuffers.Offset) { + builder.addFieldOffset(9, test4Offset, 0); + } + + static startTest4Vector(builder: flatbuffers.Builder, numElems: number) { + builder.startVector(4, numElems, 2); + } + + static addTestarrayofstring(builder: flatbuffers.Builder, testarrayofstringOffset: flatbuffers.Offset) { + builder.addFieldOffset(10, testarrayofstringOffset, 0); + } + + static createTestarrayofstringVector(builder: flatbuffers.Builder, data: flatbuffers.Offset[]): flatbuffers.Offset { + if (!data) { + return null; + } + builder.startVector(4, data.length, 4); + for (let i = data.length - 1; i >= 0; i--) { + builder.addOffset(data[i]); + } + return builder.endVector(); + } + + static startTestarrayofstringVector(builder: flatbuffers.Builder, numElems: number) { + builder.startVector(4, numElems, 4); + } + + static addTestarrayoftables(builder: flatbuffers.Builder, testarrayoftablesOffset: flatbuffers.Offset) { + builder.addFieldOffset(11, testarrayoftablesOffset, 0); + } + + static createTestarrayoftablesVector(builder: flatbuffers.Builder, data: flatbuffers.Offset[]): flatbuffers.Offset { + if (!data) { + return null; + } + builder.startVector(4, data.length, 4); + for (let i = data.length - 1; i >= 0; i--) { + builder.addOffset(data[i]); + } + return builder.endVector(); + } + + static startTestarrayoftablesVector(builder: flatbuffers.Builder, numElems: number) { + builder.startVector(4, numElems, 4); + } + + static addEnemy(builder: flatbuffers.Builder, enemyOffset: flatbuffers.Offset) { + builder.addFieldOffset(12, enemyOffset, 0); + } + + static addTestnestedflatbuffer(builder: flatbuffers.Builder, testnestedflatbufferOffset: flatbuffers.Offset) { + builder.addFieldOffset(13, testnestedflatbufferOffset, 0); + } + + static createTestnestedflatbufferVector(builder: flatbuffers.Builder, data: number[] | Uint8Array): flatbuffers.Offset { + if (!data) { + return null; + } + builder.startVector(1, data.length, 1); + for (let i = data.length - 1; i >= 0; i--) { + builder.addInt8(data[i]); + } + return builder.endVector(); + } + + static startTestnestedflatbufferVector(builder: flatbuffers.Builder, numElems: number) { + builder.startVector(1, numElems, 1); + } + + static addTestempty(builder: flatbuffers.Builder, testemptyOffset: flatbuffers.Offset) { + builder.addFieldOffset(14, testemptyOffset, 0); + } + + static addTestbool(builder: flatbuffers.Builder, testbool: boolean) { + builder.addFieldInt8(15, +testbool, +false); + } + + static addTesthashs32Fnv1(builder: flatbuffers.Builder, testhashs32Fnv1: number) { + builder.addFieldInt32(16, testhashs32Fnv1, 0); + } + + static addTesthashu32Fnv1(builder: flatbuffers.Builder, testhashu32Fnv1: number) { + builder.addFieldInt32(17, testhashu32Fnv1, 0); + } + + static addTesthashs64Fnv1(builder: flatbuffers.Builder, testhashs64Fnv1: flatbuffers.Long) { + builder.addFieldInt64(18, testhashs64Fnv1, builder.createLong(0, 0)); + } + + static addTesthashu64Fnv1(builder: flatbuffers.Builder, testhashu64Fnv1: flatbuffers.Long) { + builder.addFieldInt64(19, testhashu64Fnv1, builder.createLong(0, 0)); + } + + static addTesthashs32Fnv1a(builder: flatbuffers.Builder, testhashs32Fnv1a: number) { + builder.addFieldInt32(20, testhashs32Fnv1a, 0); + } + + static addTesthashu32Fnv1a(builder: flatbuffers.Builder, testhashu32Fnv1a: number) { + builder.addFieldInt32(21, testhashu32Fnv1a, 0); + } + + static addTesthashs64Fnv1a(builder: flatbuffers.Builder, testhashs64Fnv1a: flatbuffers.Long) { + builder.addFieldInt64(22, testhashs64Fnv1a, builder.createLong(0, 0)); + } + + static addTesthashu64Fnv1a(builder: flatbuffers.Builder, testhashu64Fnv1a: flatbuffers.Long) { + builder.addFieldInt64(23, testhashu64Fnv1a, builder.createLong(0, 0)); + } + + static addTestarrayofbools(builder: flatbuffers.Builder, testarrayofboolsOffset: flatbuffers.Offset) { + builder.addFieldOffset(24, testarrayofboolsOffset, 0); + } + + static createTestarrayofboolsVector(builder: flatbuffers.Builder, data: boolean[]): flatbuffers.Offset { + if (!data) { + return null; + } + builder.startVector(1, data.length, 1); + for (let i = data.length - 1; i >= 0; i--) { + builder.addInt8(+data[i]); + } + return builder.endVector(); + } + + static startTestarrayofboolsVector(builder: flatbuffers.Builder, numElems: number) { + builder.startVector(1, numElems, 1); + } + + static addTestf(builder: flatbuffers.Builder, testf: number) { + builder.addFieldFloat32(25, testf, 3.14159); + } + + static addTestf2(builder: flatbuffers.Builder, testf2: number) { + builder.addFieldFloat32(26, testf2, 3.0); + } + + static addTestf3(builder: flatbuffers.Builder, testf3: number) { + builder.addFieldFloat32(27, testf3, 0.0); + } + + static addTestarrayofstring2(builder: flatbuffers.Builder, testarrayofstring2Offset: flatbuffers.Offset) { + builder.addFieldOffset(28, testarrayofstring2Offset, 0); + } + + static createTestarrayofstring2Vector(builder: flatbuffers.Builder, data: flatbuffers.Offset[]): flatbuffers.Offset { + if (!data) { + return null; + } + builder.startVector(4, data.length, 4); + for (let i = data.length - 1; i >= 0; i--) { + builder.addOffset(data[i]); + } + return builder.endVector(); + } + + static startTestarrayofstring2Vector(builder: flatbuffers.Builder, numElems: number) { + builder.startVector(4, numElems, 4); + } + + static endMonster(builder: flatbuffers.Builder): flatbuffers.Offset { + const offset = builder.endObject(); + builder.requiredField(offset, 10); // name + return offset; + } + + static finishMonsterBuffer(builder: flatbuffers.Builder, offset: flatbuffers.Offset) { + builder.finish(offset, 'MONS'); } } diff --git a/types/later/later-tests.ts b/types/later/later-tests.ts index ea21977c5b..e7792d68e0 100644 --- a/types/later/later-tests.ts +++ b/types/later/later-tests.ts @@ -1,6 +1,6 @@ import later = require("later"); -namespace LaterTest_DefineSchedule { +function LaterTest_DefineSchedule() { // define a new schedule const textSched = later.parse.text('at 10:15am every weekday'); const cronSched = later.parse.cron('0 0/5 14,18 * * ?'); @@ -19,7 +19,7 @@ namespace LaterTest_DefineSchedule { .on(3).month(); } -namespace LaterTest_ConfigureTimezone { +function LaterTest_ConfigureTimezone() { // set later to use UTC (the default) later.date.UTC(); @@ -27,8 +27,8 @@ namespace LaterTest_ConfigureTimezone { later.date.localTime(); } -namespace LaterTest_TimePeriods { - export function second() { +function LaterTest_TimePeriods() { + function second() { const d = new Date('2013-03-22T10:02:05Z'); later.second.name; @@ -59,7 +59,7 @@ namespace LaterTest_TimePeriods { // 'Fri, 22 Mar 2013 10:01:27 GMT' } - export function minute() { + function minute() { const d = new Date('2013-03-22T10:02:05Z'); later.minute.name; @@ -90,7 +90,7 @@ namespace LaterTest_TimePeriods { // 'Fri, 22 Mar 2013 09:27:59 GMT' } - export function hour() { + function hour() { const d = new Date('2013-03-22T10:02:05Z'); later.hour.name; @@ -121,7 +121,7 @@ namespace LaterTest_TimePeriods { // 'Thu, 21 Mar 2013 21:59:59 GMT' } - export function time() { + function time() { const d = new Date('2013-03-22T10:02:05Z'); later.time.name; @@ -152,7 +152,7 @@ namespace LaterTest_TimePeriods { // 'Fri, 22 Mar 2013 00:01:00 GMT' } - export function day() { + function day() { const d = new Date('2013-03-22T10:02:05Z'); later.day.name; @@ -183,7 +183,7 @@ namespace LaterTest_TimePeriods { // 'Sat, 02 Mar 2013 23:59:59 GMT' } - export function day_of_week() { + function day_of_week() { const d = new Date('2013-03-22T10:02:05Z'); later.dayOfWeek.name; @@ -214,7 +214,7 @@ namespace LaterTest_TimePeriods { // 'Thu, 21 Mar 2013 23:59:59 GMT' } - export function day_of_week_count() { + function day_of_week_count() { const d = new Date('2013-03-22T10:02:05Z'); later.dayOfWeekCount.name; @@ -249,7 +249,7 @@ namespace LaterTest_TimePeriods { // 'Thu, 14 Mar 2013 23:59:59 GMT' } - export function day_of_year() { + function day_of_year() { const d = new Date('2013-03-22T10:02:05Z'); later.dayOfYear.name; @@ -280,7 +280,7 @@ namespace LaterTest_TimePeriods { // 'Wed, 13 Feb 2013 23:59:59 GMT' } - export function week_of_month() { + function week_of_month() { const d = new Date('2013-03-22T10:02:05Z'); later.weekOfMonth.name; @@ -311,7 +311,7 @@ namespace LaterTest_TimePeriods { // 'Sat, 09 Mar 2013 23:59:59 GMT' } - export function week_of_year() { + function week_of_year() { const d = new Date('2013-03-22T10:02:05Z'); later.weekOfYear.name; @@ -342,7 +342,7 @@ namespace LaterTest_TimePeriods { // 'Sun, 30 Dec 2012 23:59:59 GMT' } - export function month() { + function month() { const d = new Date('2013-03-22T10:02:05Z'); later.month.name; @@ -373,7 +373,7 @@ namespace LaterTest_TimePeriods { // 'Thu, 28 Feb 2013 23:59:59 GMT' } - export function year() { + function year() { const d = new Date('2013-03-22T10:02:05Z'); later.year.name; @@ -404,11 +404,11 @@ namespace LaterTest_TimePeriods { // 'Mon, 31 Dec 2012 23:59:59 GMT' } - export interface PartOfDayLater extends later.Static { + interface PartOfDayLater extends later.Static { partOfDay: later.TimePeriod; } - export function custom() { + function custom() { const customLater = later; customLater.partOfDay = { @@ -497,8 +497,8 @@ namespace LaterTest_TimePeriods { } } -namespace LaterTest_GenerateRecurences { - export function on_method() { +function LaterTest_GenerateRecurences() { + function on_method() { // fires on the 2nd minute every hour later.parse.recur().on(2).minute(); @@ -509,27 +509,27 @@ namespace LaterTest_GenerateRecurences { later.parse.recur().on('08:00:00').time(); } - export function first_method() { + function first_method() { // fires on the 0th minute of every hour later.parse.recur().first().minute(); } - export function last_method() { + function last_method() { // fires on the last day of every month at 5am later.parse.recur().on(5).hour().last().dayOfMonth(); } - export function onWeekend_method() { + function onWeekend_method() { // fires on the 5th minute of every hour during Sat and Sun later.parse.recur().on(5).minute().onWeekend(); } - export function onWeekday_method() { + function onWeekday_method() { // fires on the 5th minute of every hour during Mon,Tues,Wed,Thur,Fri later.parse.recur().on(5).minute().onWeekday(); } - export function every_method() { + function every_method() { // fires on the 0th, 10th, 20th, 30th, 40th, and 50th min of every hour later.parse.recur().every(10).minute(); @@ -537,7 +537,7 @@ namespace LaterTest_GenerateRecurences { later.parse.recur().every(3).month(); } - export function after_method() { + function after_method() { // fires on the 55th, 56th, 57th, 58th, and 59th minute later.parse.recur().after(55).minute(); @@ -545,7 +545,7 @@ namespace LaterTest_GenerateRecurences { later.parse.recur().every(6).hour().after('09:00').time(); } - export function before_method() { + function before_method() { // fires on the first second of January and February later.parse.recur().before(3).month(); @@ -557,17 +557,17 @@ namespace LaterTest_GenerateRecurences { later.parse.recur().after(9).hour().before(18).hour(); } - export function startingOn_method() { + function startingOn_method() { // fires on the 10th, 25th, 40th, and 55th minute of every hour later.parse.recur().every(15).minute().startingOn(10); } - export function between_method() { + function between_method() { // fires on the 10th, 25th, 40th minute of every hour later.parse.recur().every(15).minute().between(10, 40); } - export function and_method() { + function and_method() { // fires every 2 hours on the first day of every month // and 8:00am and 8:00pm on the last day of every month const sched = later.parse.recur() @@ -576,7 +576,7 @@ namespace LaterTest_GenerateRecurences { .on(8, 20).hour().last().dayOfMonth(); } - export function except_method() { + function except_method() { // fires every minute of every hour except on multiples of 2 and 3 const sched = later.parse.recur() .every().minute() @@ -587,7 +587,7 @@ namespace LaterTest_GenerateRecurences { } } -namespace LaterTest_CalculateOccurences { +function LaterTest_CalculateOccurences() { // Initialise next variable. let next: Date[] = []; @@ -602,7 +602,7 @@ namespace LaterTest_CalculateOccurences { next = later.schedule(cronSched).prev(1, new Date(2013, 2, 21)); } -namespace LaterTest_ExecuteCodeUsingSchedule { +function LaterTest_ExecuteCodeUsingSchedule() { // will fire every 5 minutes const textSched = later.parse.text('every 5 min'); diff --git a/types/lodash/tslint.json b/types/lodash/tslint.json index aca1d8682a..d973c102d6 100644 --- a/types/lodash/tslint.json +++ b/types/lodash/tslint.json @@ -13,6 +13,7 @@ "jsdoc-format": false, "max-line-length": false, "no-empty-interface": false, + "no-namespace": false, "no-trailing-whitespace": false, "object-literal-key-quotes": false, "one-line": false, diff --git a/types/memcached/memcached-tests.ts b/types/memcached/memcached-tests.ts index 9101471a8a..6ae024d4b5 100644 --- a/types/memcached/memcached-tests.ts +++ b/types/memcached/memcached-tests.ts @@ -1,429 +1,427 @@ import Memcached = require('memcached'); import assert = require('assert'); -namespace main { - function isString(expected?: string): void { - if (expected !== undefined && typeof expected !== 'string') { - throw new Error(); - } - } - function isArray(expected?: any[]): void { - if (expected !== undefined && !Array.isArray(expected)) { - throw new Error(); - } - } - function isNumber(expected?: number): void { - if (expected !== undefined && typeof expected !== 'number') { - throw new Error(); - } - } - function isBoolean(expected?: boolean): void { - if (expected !== undefined && typeof expected !== 'boolean') { - throw new Error(); - } - } - function isFunction(expected?: (...args: any[]) => void): void { - if (expected !== undefined && typeof expected !== 'function') { - throw new Error(); - } - } - function isVoid(expected?: undefined): void { - if (expected !== undefined) { - throw new Error(); - } - } - - namespace test_global_options { - Memcached.config.maxKeySize = 250; - Memcached.config.maxExpiration = 2592000; - Memcached.config.maxValue = 1048576; - Memcached.config.poolSize = 10; - Memcached.config.algorithm = 'md5'; - Memcached.config.reconnect = 1000; - Memcached.config.timeout = 100; - Memcached.config.retries = 1; - Memcached.config.failures = 5; - Memcached.config.retry = 100; - Memcached.config.remove = false; - Memcached.config.failOverServers = undefined; - Memcached.config.keyCompression = true; - Memcached.config.idle = 5000; - } - - namespace test_constructor_with_string { - const location = '127.0.0.1:11211'; - - const memcached = new Memcached(location); - memcached.end(); - } - - namespace test_constructor_with_array { - const location = [ - '127.0.0.1:11211', - '127.0.0.1:11212', - '127.0.0.1:11213' - ]; - - const memcached = new Memcached(location); - memcached.end(); - } - - namespace test_constructor_with_object { - const location = { - '127.0.0.1:11211': 1, - '127.0.0.1:11212': 2, - '127.0.0.1:11213': 3 - }; - - const memcached = new Memcached(location); - memcached.end(); - } - - namespace test_constructor_with_options { - const location = '127.0.0.1:11211'; - const options: Memcached.options = { - maxKeySize: 250, - maxExpiration: 2592000, - maxValue: 1048576, - poolSize: 10, - algorithm: 'md5', - reconnect: 18000000, - timeout: 5000, - retries: 5, - failures: 5, - retry: 30000, - remove: false, - failOverServers: undefined, - keyCompression: true, - idle: 5000, - }; - - const memcached = new Memcached(location, options); - memcached.end(); - } - - const memcached = new Memcached('127.0.0.1:11211'); - - namespace test_events { - function isIssue(expected: Memcached.IssueData) { - isString(expected.server); - isArray(expected.tokens); - isArray(expected.messages); - isNumber(expected.failures); - isNumber(expected.totalFailures); - isNumber(expected.totalReconnectsAttempted); - isNumber(expected.totalReconnectsSuccess); - isNumber(expected.totalReconnectsFailed); - isNumber(expected.totalDownTime); - } - memcached.on('issue', isIssue); - memcached.on('failure', isIssue); - memcached.on('reconnecting', isIssue); - memcached.on('reconnect', isIssue); - memcached.on('remove', isIssue); - } - - function isCommandData(expected: Memcached.CommandData) { - isNumber(expected.start); - isNumber(expected.execution); - isFunction(expected.callback); - isString(expected.type); - isString(expected.command); - isArray(expected.validate); - isBoolean(expected.redundancyEnabled); - isString(expected.key); - isNumber(expected.lifetime); - isString(expected.cas); - } - namespace test_set { - memcached.set('key', 'value', 3600, function(err) { - isCommandData(this); - }); - } - namespace test_touch { - memcached.touch('key', 3600, function(err) { - isCommandData(this); - }); - } - namespace test_get { - memcached.get('key', function(err, data) { - isCommandData(this); - }); - } - namespace test_getMulti { - memcached.getMulti(['foo', 'bar'], function(err, data) { - isVoid(this); - assert(typeof data, 'object'); - }); - } - namespace test_cas { - const promises = []; - const key = 'caskey'; - const value = 'casvalue'; - - Promise.resolve() - .then(() => new Promise(resolve => { - memcached.set(key, value, 0, function() { - isCommandData(this); - resolve(); - }); - })) - .then(() => new Promise(resolve => { - memcached.gets(key, function(err, data) { - isCommandData(this); - memcached.cas(key, value, data.cas, 0, function(err, result) { - isCommandData(this); - assert(result); - resolve(); - }); - }); - })) - .then(() => new Promise(resolve => { - memcached.cas(key, value, '99', 0, function(err, result) { - isCommandData(this); - assert(!result); - resolve(); - }); - })) - ; - } - - namespace test_replace { - const promises = []; - const key = 'replacekey'; - const value = 'replacevalue'; - - Promise.resolve() - .then(() => new Promise(resolve => { - memcached.set(key, value, 0, () => { - resolve(); - }); - })) - .then(() => new Promise(resolve => { - memcached.replace(key, value, 0, function(err, result) { - assert(result); - isCommandData(this); - resolve(); - }); - })) - .then(() => new Promise(resolve => { - memcached.replace('noexistss', value, 0, function(err, result) { - assert(!result); - isCommandData(this); - resolve(); - }); - })) - ; - } - namespace test_add { - const promises = []; - const key = 'addkey'; - const value = 'addvalue'; - - Promise.resolve() - .then(() => new Promise(resolve => { - memcached.add(key, value, 0, function(err, result) { - assert(result); - isCommandData(this); - resolve(); - }); - })) - .then(() => new Promise(resolve => { - memcached.add(key, value, 0, function(err, result) { - assert(!result); - isCommandData(this); - resolve(); - }); - })) - ; - } - namespace test_append { - const promises = []; - const key = 'appendkey'; - const value = 'appendvalue'; - - Promise.resolve() - .then(() => new Promise(resolve => { - memcached.set(key, value, 0, (err, result) => { - isBoolean(result); - resolve(); - }); - })) - .then(() => new Promise(resolve => { - memcached.append(key, value, (err, result) => { - isBoolean(result); - resolve(); - }); - })) - ; - } - namespace test_prepend { - const promises = []; - const key = 'prependkey'; - const value = 'prependvalue'; - Promise.resolve() - .then(() => new Promise(resolve => { - memcached.set(key, value, 0, (err, result) => { - isBoolean(result); - resolve(); - }); - })) - .then(() => new Promise(resolve => { - memcached.prepend(key, value, function(err, result) { - isBoolean(result); - isCommandData(this); - resolve(); - }); - })) - ; - } - namespace test_incr { - const promises = []; - const key = 'incrkey'; - const value = 2; - - Promise.resolve() - .then(() => new Promise(resolve => { - memcached.set(key, value, 0, (err, result) => { - isBoolean(result); - resolve(); - }); - })) - .then(() => new Promise(resolve => { - memcached.incr(key, value, function(err, result) { - assert.deepStrictEqual(result, 4); - isCommandData(this); - resolve(); - }); - })) - .then(() => new Promise(resolve => { - memcached.incr('noexists', value, function(err, result) { - assert.deepStrictEqual(result, false); - isCommandData(this); - resolve(); - }); - })) - ; - } - namespace test_decr { - const promises = []; - const key = 'decrkey'; - const value = 2; - Promise.resolve() - .then(() => new Promise(resolve => { - memcached.set(key, value, 0, function(err, result) { - isCommandData(this); - isBoolean(result); - resolve(); - }); - })) - .then(() => new Promise(resolve => { - memcached.decr(key, value, function(err, result) { - assert.deepStrictEqual(result, 0); - isCommandData(this); - resolve(); - }); - })) - .then(() => new Promise(resolve => { - memcached.decr('noexists', value, function(err, result) { - assert.deepStrictEqual(result, false); - isCommandData(this); - resolve(); - }); - })) - ; - } - namespace test_decr { - const promises = []; - const key = 'delkey'; - const value = 'delvalue'; - Promise.resolve() - .then(() => new Promise(resolve => { - memcached.set(key, value, 0, (err, result) => { - isBoolean(result); - resolve(); - }); - })) - .then(() => new Promise(resolve => { - memcached.del(key, function(err, result) { - isBoolean(result); - isCommandData(this); - resolve(); - }); - })) - ; - } - - namespace test_version { - memcached.version((err, data) => { - for (const version of data) { - isString(version.server); - isString(version.version); - isString(version.major); - isString(version.minor); - isString(version.bugfix); - } - }); - } - namespace test_stats { - memcached.stats((err: any, data: Memcached.StatusData[]) => { - isArray(data); - for (const stat of data) { - isString(stat.server); - } - }); - } - namespace test_settings { - memcached.settings((err: any, data: Memcached.StatusData[]) => { - isArray(data); - for (const setting of data) { - isString(setting.server); - } - }); - } - namespace test_slabs { - memcached.slabs((err: any, data: Memcached.StatusData[]) => { - isArray(data); - for (const setting of data) { - isString(setting.server); - } - }); - } - let promise: Promise; - namespace test_items { - promise = new Promise(resolve => { - memcached.items((err, data) => { - isArray(data); - for (const setting of data) { - isString(setting.server); - } - resolve(data); - }); - }); - } - namespace test_cachedump { - promise.then(data => { - for (const node of data) { - const server = node.server; - delete node.server; - Object.keys(node).forEach(slabid => { - memcached.cachedump(server, Number(slabid), node[slabid].number, (err, data) => { - if (!Array.isArray(data)) data = [data]; - data.forEach(cache => { - isNumber(cache.b); - isNumber(cache.s); - isString(cache.key); - }); - }); - }); - } - }); - } - - namespace test_flush { - memcached.flush(function(err, results) { - isVoid(this); - isArray(results); - }); +function isString(expected?: string): void { + if (expected !== undefined && typeof expected !== 'string') { + throw new Error(); } } +function isArray(expected?: any[]): void { + if (expected !== undefined && !Array.isArray(expected)) { + throw new Error(); + } +} +function isNumber(expected?: number): void { + if (expected !== undefined && typeof expected !== 'number') { + throw new Error(); + } +} +function isBoolean(expected?: boolean): void { + if (expected !== undefined && typeof expected !== 'boolean') { + throw new Error(); + } +} +function isFunction(expected?: (...args: any[]) => void): void { + if (expected !== undefined && typeof expected !== 'function') { + throw new Error(); + } +} +function isVoid(expected?: undefined): void { + if (expected !== undefined) { + throw new Error(); + } +} + +function test_global_options() { + Memcached.config.maxKeySize = 250; + Memcached.config.maxExpiration = 2592000; + Memcached.config.maxValue = 1048576; + Memcached.config.poolSize = 10; + Memcached.config.algorithm = 'md5'; + Memcached.config.reconnect = 1000; + Memcached.config.timeout = 100; + Memcached.config.retries = 1; + Memcached.config.failures = 5; + Memcached.config.retry = 100; + Memcached.config.remove = false; + Memcached.config.failOverServers = undefined; + Memcached.config.keyCompression = true; + Memcached.config.idle = 5000; +} + +function test_constructor_with_string() { + const location = '127.0.0.1:11211'; + + const memcached = new Memcached(location); + memcached.end(); +} + +function test_constructor_with_array() { + const location = [ + '127.0.0.1:11211', + '127.0.0.1:11212', + '127.0.0.1:11213' + ]; + + const memcached = new Memcached(location); + memcached.end(); +} + +function test_constructor_with_object() { + const location = { + '127.0.0.1:11211': 1, + '127.0.0.1:11212': 2, + '127.0.0.1:11213': 3 + }; + + const memcached = new Memcached(location); + memcached.end(); +} + +function test_constructor_with_options() { + const location = '127.0.0.1:11211'; + const options: Memcached.options = { + maxKeySize: 250, + maxExpiration: 2592000, + maxValue: 1048576, + poolSize: 10, + algorithm: 'md5', + reconnect: 18000000, + timeout: 5000, + retries: 5, + failures: 5, + retry: 30000, + remove: false, + failOverServers: undefined, + keyCompression: true, + idle: 5000, + }; + + const memcached = new Memcached(location, options); + memcached.end(); +} + +const memcached = new Memcached('127.0.0.1:11211'); + +function test_events() { + function isIssue(expected: Memcached.IssueData) { + isString(expected.server); + isArray(expected.tokens); + isArray(expected.messages); + isNumber(expected.failures); + isNumber(expected.totalFailures); + isNumber(expected.totalReconnectsAttempted); + isNumber(expected.totalReconnectsSuccess); + isNumber(expected.totalReconnectsFailed); + isNumber(expected.totalDownTime); + } + memcached.on('issue', isIssue); + memcached.on('failure', isIssue); + memcached.on('reconnecting', isIssue); + memcached.on('reconnect', isIssue); + memcached.on('remove', isIssue); +} + +function isCommandData(expected: Memcached.CommandData) { + isNumber(expected.start); + isNumber(expected.execution); + isFunction(expected.callback); + isString(expected.type); + isString(expected.command); + isArray(expected.validate); + isBoolean(expected.redundancyEnabled); + isString(expected.key); + isNumber(expected.lifetime); + isString(expected.cas); +} +function test_set() { + memcached.set('key', 'value', 3600, function(err) { + isCommandData(this); + }); +} +function test_touch() { + memcached.touch('key', 3600, function(err) { + isCommandData(this); + }); +} +function test_get() { + memcached.get('key', function(err, data) { + isCommandData(this); + }); +} +function test_getMulti() { + memcached.getMulti(['foo', 'bar'], function(err, data) { + isVoid(this); + assert(typeof data, 'object'); + }); +} +function test_cas() { + const promises = []; + const key = 'caskey'; + const value = 'casvalue'; + + Promise.resolve() + .then(() => new Promise(resolve => { + memcached.set(key, value, 0, function() { + isCommandData(this); + resolve(); + }); + })) + .then(() => new Promise(resolve => { + memcached.gets(key, function(err, data) { + isCommandData(this); + memcached.cas(key, value, data.cas, 0, function(err, result) { + isCommandData(this); + assert(result); + resolve(); + }); + }); + })) + .then(() => new Promise(resolve => { + memcached.cas(key, value, '99', 0, function(err, result) { + isCommandData(this); + assert(!result); + resolve(); + }); + })) + ; +} + +function test_replace() { + const promises = []; + const key = 'replacekey'; + const value = 'replacevalue'; + + Promise.resolve() + .then(() => new Promise(resolve => { + memcached.set(key, value, 0, () => { + resolve(); + }); + })) + .then(() => new Promise(resolve => { + memcached.replace(key, value, 0, function(err, result) { + assert(result); + isCommandData(this); + resolve(); + }); + })) + .then(() => new Promise(resolve => { + memcached.replace('noexistss', value, 0, function(err, result) { + assert(!result); + isCommandData(this); + resolve(); + }); + })) + ; +} +function test_add() { + const promises = []; + const key = 'addkey'; + const value = 'addvalue'; + + Promise.resolve() + .then(() => new Promise(resolve => { + memcached.add(key, value, 0, function(err, result) { + assert(result); + isCommandData(this); + resolve(); + }); + })) + .then(() => new Promise(resolve => { + memcached.add(key, value, 0, function(err, result) { + assert(!result); + isCommandData(this); + resolve(); + }); + })) + ; +} +function test_append() { + const promises = []; + const key = 'appendkey'; + const value = 'appendvalue'; + + Promise.resolve() + .then(() => new Promise(resolve => { + memcached.set(key, value, 0, (err, result) => { + isBoolean(result); + resolve(); + }); + })) + .then(() => new Promise(resolve => { + memcached.append(key, value, (err, result) => { + isBoolean(result); + resolve(); + }); + })) + ; +} +function test_prepend() { + const promises = []; + const key = 'prependkey'; + const value = 'prependvalue'; + Promise.resolve() + .then(() => new Promise(resolve => { + memcached.set(key, value, 0, (err, result) => { + isBoolean(result); + resolve(); + }); + })) + .then(() => new Promise(resolve => { + memcached.prepend(key, value, function(err, result) { + isBoolean(result); + isCommandData(this); + resolve(); + }); + })) + ; +} +function test_incr() { + const promises = []; + const key = 'incrkey'; + const value = 2; + + Promise.resolve() + .then(() => new Promise(resolve => { + memcached.set(key, value, 0, (err, result) => { + isBoolean(result); + resolve(); + }); + })) + .then(() => new Promise(resolve => { + memcached.incr(key, value, function(err, result) { + assert.deepStrictEqual(result, 4); + isCommandData(this); + resolve(); + }); + })) + .then(() => new Promise(resolve => { + memcached.incr('noexists', value, function(err, result) { + assert.deepStrictEqual(result, false); + isCommandData(this); + resolve(); + }); + })) + ; +} +function test_decr() { + const promises = []; + const key = 'decrkey'; + const value = 2; + Promise.resolve() + .then(() => new Promise(resolve => { + memcached.set(key, value, 0, function(err, result) { + isCommandData(this); + isBoolean(result); + resolve(); + }); + })) + .then(() => new Promise(resolve => { + memcached.decr(key, value, function(err, result) { + assert.deepStrictEqual(result, 0); + isCommandData(this); + resolve(); + }); + })) + .then(() => new Promise(resolve => { + memcached.decr('noexists', value, function(err, result) { + assert.deepStrictEqual(result, false); + isCommandData(this); + resolve(); + }); + })) + ; +} +function test_decr_2() { + const promises = []; + const key = 'delkey'; + const value = 'delvalue'; + Promise.resolve() + .then(() => new Promise(resolve => { + memcached.set(key, value, 0, (err, result) => { + isBoolean(result); + resolve(); + }); + })) + .then(() => new Promise(resolve => { + memcached.del(key, function(err, result) { + isBoolean(result); + isCommandData(this); + resolve(); + }); + })) + ; +} + +function test_version() { + memcached.version((err, data) => { + for (const version of data) { + isString(version.server); + isString(version.version); + isString(version.major); + isString(version.minor); + isString(version.bugfix); + } + }); +} +function test_stats() { + memcached.stats((err: any, data: Memcached.StatusData[]) => { + isArray(data); + for (const stat of data) { + isString(stat.server); + } + }); +} +function test_settings() { + memcached.settings((err: any, data: Memcached.StatusData[]) => { + isArray(data); + for (const setting of data) { + isString(setting.server); + } + }); +} +function test_slabs() { + memcached.slabs((err: any, data: Memcached.StatusData[]) => { + isArray(data); + for (const setting of data) { + isString(setting.server); + } + }); +} +let promise: Promise; +function test_items() { + promise = new Promise(resolve => { + memcached.items((err, data) => { + isArray(data); + for (const setting of data) { + isString(setting.server); + } + resolve(data); + }); + }); +} +function test_cachedump() { + promise.then(data => { + for (const node of data) { + const server = node.server; + delete node.server; + Object.keys(node).forEach(slabid => { + memcached.cachedump(server, Number(slabid), node[slabid].number, (err, data) => { + if (!Array.isArray(data)) data = [data]; + data.forEach(cache => { + isNumber(cache.b); + isNumber(cache.s); + isString(cache.key); + }); + }); + }); + } + }); +} + +function test_flush() { + memcached.flush(function(err, results) { + isVoid(this); + isArray(results); + }); +} diff --git a/types/node/tslint.json b/types/node/tslint.json index 7ef1d5cd51..7ca0a1dd7c 100644 --- a/types/node/tslint.json +++ b/types/node/tslint.json @@ -16,6 +16,7 @@ "no-consecutive-blank-lines": false, "no-empty-interface": false, "no-internal-module": false, + "no-namespace": false, "no-padding": false, "no-string-throw": false, "no-var": false, diff --git a/types/node/v0/tslint.json b/types/node/v0/tslint.json index a7a879539e..6ee9f3deb4 100644 --- a/types/node/v0/tslint.json +++ b/types/node/v0/tslint.json @@ -15,6 +15,7 @@ "no-consecutive-blank-lines": false, "no-empty-interface": false, "no-internal-module": false, + "no-namespace": false, "no-padding": false, "no-string-throw": false, "no-var": false, diff --git a/types/node/v4/tslint.json b/types/node/v4/tslint.json index a560bfc623..3eccb5c30c 100644 --- a/types/node/v4/tslint.json +++ b/types/node/v4/tslint.json @@ -15,6 +15,7 @@ "no-consecutive-blank-lines": false, "no-empty-interface": false, "no-internal-module": false, + "no-namespace": false, "no-padding": false, "no-string-throw": false, "no-var": false, diff --git a/types/node/v6/tslint.json b/types/node/v6/tslint.json index a904fc31ca..a0dbad4bbd 100644 --- a/types/node/v6/tslint.json +++ b/types/node/v6/tslint.json @@ -16,6 +16,7 @@ "no-consecutive-blank-lines": false, "no-empty-interface": false, "no-internal-module": false, + "no-namespace": false, "no-padding": false, "no-string-throw": false, "no-var": false, diff --git a/types/pixi.js/pixi.js-tests.ts b/types/pixi.js/pixi.js-tests.ts index 72325504da..95c24e08ac 100644 --- a/types/pixi.js/pixi.js-tests.ts +++ b/types/pixi.js/pixi.js-tests.ts @@ -1,5 +1,5 @@ -namespace basics { - export class Basics { +function basics() { + class Basics { private app: PIXI.Application; private bunny: PIXI.Sprite; @@ -20,7 +20,7 @@ namespace basics { } } - export class Click { + class Click { private app: PIXI.Application; private sprite: PIXI.Sprite; @@ -44,7 +44,7 @@ namespace basics { } } - export class ContainerPivot { + class ContainerPivot { private app: PIXI.Application; private container: PIXI.Container; @@ -77,7 +77,7 @@ namespace basics { } } - export class Container { + class Container { private app: PIXI.Application; private container: PIXI.Container; @@ -103,7 +103,7 @@ namespace basics { } } - export class CustomizedFilter extends PIXI.Filter { + class CustomizedFilter extends PIXI.Filter { constructor(fragmentSource: string) { super(null, fragmentSource, { customUniform: { @@ -113,7 +113,7 @@ namespace basics { }); } } - export class CustomFilter { + class CustomFilter { private app: PIXI.Application; private background: PIXI.Sprite; private filter: CustomizedFilter; @@ -142,7 +142,7 @@ namespace basics { } } - export class Graphics { + class Graphics { private app: PIXI.Application; private graphics: PIXI.Graphics; @@ -186,7 +186,7 @@ namespace basics { } } - export class RenderTexture { + class RenderTexture { private app: PIXI.Application; private container: PIXI.Container; private renderTexture: PIXI.RenderTexture; @@ -226,7 +226,7 @@ namespace basics { } } - export class SpriteSheet { + class SpriteSheet { private app: PIXI.Application; private anim: PIXI.extras.AnimatedSprite; @@ -259,7 +259,7 @@ namespace basics { } } - export class Text { + class Text { private app: PIXI.Application; private basicText: PIXI.Text; private richText: PIXI.Text; @@ -297,7 +297,7 @@ namespace basics { } } - export class TexturedMesh { + class TexturedMesh { private app: PIXI.Application; private count: number; private points: PIXI.Point[]; @@ -351,7 +351,7 @@ namespace basics { } } - export class TilingSprite { + class TilingSprite { private app: PIXI.Application; private tilingSprite: PIXI.extras.TilingSprite; private count: number; @@ -382,7 +382,7 @@ namespace basics { } } - export class Video { + class Video { private app: PIXI.Application; private button: PIXI.Graphics; private videoSprite: PIXI.Sprite; @@ -425,8 +425,8 @@ namespace basics { } } -namespace demos { - export class AlphaMask { +function demos() { + class AlphaMask { private app: PIXI.Application; private bg: PIXI.Container; private cells: PIXI.Sprite; @@ -473,7 +473,7 @@ namespace demos { } } - export class AnimatedSpriteDemo { + class AnimatedSpriteDemo { private app: PIXI.Application; constructor() { @@ -508,7 +508,7 @@ namespace demos { } } - export class Batch { + class Batch { private app: PIXI.Application; private sprites: PIXI.particles.ParticleContainer; private maggots: Dude[]; @@ -586,7 +586,7 @@ namespace demos { }); } } - export class Dude extends PIXI.Sprite { + class Dude extends PIXI.Sprite { direction: number = 0; speed: number = 0; turningSpeed: number = 0; @@ -597,7 +597,7 @@ namespace demos { } } - export class BlendModes { + class BlendModes { private app: PIXI.Application; private background: PIXI.Sprite; private dudeArray: Dude[]; @@ -662,7 +662,7 @@ namespace demos { } } - export class CacheAsBitmap { + class CacheAsBitmap { private app: PIXI.Application; private aliens: PIXI.Sprite[]; private count: number; @@ -727,7 +727,7 @@ namespace demos { } } - export class Dragging { + class Dragging { private app: PIXI.Application; private data: PIXI.interaction.InteractionData; private dragging: boolean; @@ -785,7 +785,7 @@ namespace demos { } } - export class GraphicsDemo { + class GraphicsDemo { private app: PIXI.Application; private graphics: PIXI.Graphics; private thing: PIXI.Graphics; @@ -872,7 +872,7 @@ namespace demos { } } - export class Interactivity { + class Interactivity { private app: PIXI.Application; private background: PIXI.Sprite; private buttons: PIXI.Sprite[]; @@ -938,7 +938,7 @@ namespace demos { } } - export class Masking { + class Masking { private app: PIXI.Application; private bg: PIXI.Sprite; private container: PIXI.Container; @@ -1026,7 +1026,7 @@ namespace demos { } } - export class RenderTextureDemo { + class RenderTextureDemo { private app: PIXI.Application; private renderTexture: PIXI.RenderTexture; @@ -1110,7 +1110,7 @@ namespace demos { } } - export class StripDemo { + class StripDemo { private app: PIXI.Application; private count: number; private points: PIXI.Point[]; @@ -1151,7 +1151,7 @@ namespace demos { } } - export class TextDemo { + class TextDemo { private app: PIXI.Application; private bitmapFontText: PIXI.extras.BitmapText; private background: PIXI.Sprite; @@ -1227,7 +1227,7 @@ namespace demos { } } - export class TextureRotate { + class TextureRotate { private app: PIXI.Application; private bol: boolean; private texture: PIXI.Texture; @@ -1288,7 +1288,7 @@ namespace demos { } } - export class TextureSwap { + class TextureSwap { private app: PIXI.Application; private bol: boolean; private texture: PIXI.Texture; @@ -1328,7 +1328,7 @@ namespace demos { } } - export class Tinting { + class Tinting { private app: PIXI.Application; private aliens: Dude[]; @@ -1386,7 +1386,7 @@ namespace demos { } } - export class TransparentBackground { + class TransparentBackground { private app: PIXI.Application; private bunny: PIXI.Sprite; @@ -1410,8 +1410,8 @@ namespace demos { } } -namespace filters { - export class BlurFilter { +function filters() { + class BlurFilter { private app: PIXI.Application; private bg: PIXI.Sprite; private littleDudes: PIXI.Sprite; @@ -1459,7 +1459,7 @@ namespace filters { } } - export class DisplacementMap { + class DisplacementMap { private app: PIXI.Application; private container: PIXI.Container; private maggots: DisplacementMapDude[]; @@ -1563,7 +1563,7 @@ namespace filters { this.ring.y = eventData.data.global.y; } } - export class DisplacementMapDude extends PIXI.Sprite { + class DisplacementMapDude extends PIXI.Sprite { direction: number = 0; speed: number = 0; turnSpeed: number = 0; @@ -1574,7 +1574,7 @@ namespace filters { } } - export class Filter { + class Filter { private app: PIXI.Application; private bg: PIXI.Sprite; private filter: PIXI.filters.ColorMatrixFilter; diff --git a/types/react-dnd-html5-backend/tslint.json b/types/react-dnd-html5-backend/tslint.json index 3db14f85ea..bf6102640b 100644 --- a/types/react-dnd-html5-backend/tslint.json +++ b/types/react-dnd-html5-backend/tslint.json @@ -1 +1,7 @@ -{ "extends": "dtslint/dt.json" } +{ + "extends": "dtslint/dt.json", + "rules": { + // TODO + "no-namespace": false + } +} diff --git a/types/rx-lite/rx-lite-tests.ts b/types/rx-lite/rx-lite-tests.ts index fd3cf65663..6b5a88a341 100644 --- a/types/rx-lite/rx-lite-tests.ts +++ b/types/rx-lite/rx-lite-tests.ts @@ -1,63 +1,61 @@ import * as Rx from 'rx-lite'; -namespace Tests.Async { - let obsNum: Rx.Observable; - let obsStr: Rx.Observable; +let obsNum: Rx.Observable; +let obsStr: Rx.Observable; - function fromCallback() { - // 0 arguments - const func0: (cb: (result: number) => void) => void = () => { }; - obsNum = Rx.Observable.fromCallback(func0)(); - obsNum = Rx.Observable.fromCallback(func0, obsStr)(); - obsNum = Rx.Observable.fromCallback(func0, obsStr, (results: number[]) => results[0])(); +function fromCallback() { + // 0 arguments + const func0: (cb: (result: number) => void) => void = () => { }; + obsNum = Rx.Observable.fromCallback(func0)(); + obsNum = Rx.Observable.fromCallback(func0, obsStr)(); + obsNum = Rx.Observable.fromCallback(func0, obsStr, (results: number[]) => results[0])(); - // 1 argument - const func1: (a: string, cb: (result: number) => void) => number = () => 0; - obsNum = Rx.Observable.fromCallback(func1)(""); - obsNum = Rx.Observable.fromCallback(func1, {})(""); - obsNum = Rx.Observable.fromCallback(func1, {}, (results: number[]) => results[0])(""); + // 1 argument + const func1: (a: string, cb: (result: number) => void) => number = () => 0; + obsNum = Rx.Observable.fromCallback(func1)(""); + obsNum = Rx.Observable.fromCallback(func1, {})(""); + obsNum = Rx.Observable.fromCallback(func1, {}, (results: number[]) => results[0])(""); - // 2 arguments - const func2: (a: number, b: string, cb: (result: string) => number) => Date = () => new Date(); - obsStr = Rx.Observable.fromCallback(func2)(1, ""); - obsStr = Rx.Observable.fromCallback(func2, {})(1, ""); - obsStr = Rx.Observable.fromCallback(func2, {}, (results: string[]) => results[0])(1, ""); + // 2 arguments + const func2: (a: number, b: string, cb: (result: string) => number) => Date = () => new Date(); + obsStr = Rx.Observable.fromCallback(func2)(1, ""); + obsStr = Rx.Observable.fromCallback(func2, {})(1, ""); + obsStr = Rx.Observable.fromCallback(func2, {}, (results: string[]) => results[0])(1, ""); - // 3 arguments - const func3: (a: number, b: string, c: boolean, cb: (result: string) => number) => Date = () => new Date(); - obsStr = Rx.Observable.fromCallback(func3)(1, "", true); - obsStr = Rx.Observable.fromCallback(func3, {})(1, "", true); - obsStr = Rx.Observable.fromCallback(func3, {}, (results: string[]) => results[0])(1, "", true); + // 3 arguments + const func3: (a: number, b: string, c: boolean, cb: (result: string) => number) => Date = () => new Date(); + obsStr = Rx.Observable.fromCallback(func3)(1, "", true); + obsStr = Rx.Observable.fromCallback(func3, {})(1, "", true); + obsStr = Rx.Observable.fromCallback(func3, {}, (results: string[]) => results[0])(1, "", true); - // multiple results - const func0m: (cb: (result1: number, result2: number, result3: number) => void) => void = () => { }; - obsNum = Rx.Observable.fromCallback(func0m, obsStr, (results: number[]) => results[0])(); - const func1m: (a: string, cb: (result1: number, result2: number, result3: number) => void) => void = () => { }; - obsNum = Rx.Observable.fromCallback(func1m, obsStr, (results: number[]) => results[0])(""); - const func2m: (a: string, b: number, cb: (result1: string, result2: string, result3: string) => void) => void = () => { }; - obsStr = Rx.Observable.fromCallback(func2m, obsStr, (results: string[]) => results[0])("", 10); - } + // multiple results + const func0m: (cb: (result1: number, result2: number, result3: number) => void) => void = () => { }; + obsNum = Rx.Observable.fromCallback(func0m, obsStr, (results: number[]) => results[0])(); + const func1m: (a: string, cb: (result1: number, result2: number, result3: number) => void) => void = () => { }; + obsNum = Rx.Observable.fromCallback(func1m, obsStr, (results: number[]) => results[0])(""); + const func2m: (a: string, b: number, cb: (result1: string, result2: string, result3: string) => void) => void = () => { }; + obsStr = Rx.Observable.fromCallback(func2m, obsStr, (results: string[]) => results[0])("", 10); +} - function toPromise() { - const promiseImpl: { - new (resolver: (resolvePromise: (value: T) => void, rejectPromise: (reason: any) => void) => void): Rx.IPromise; - } = undefined as any; +function toPromise() { + const promiseImpl: { + new (resolver: (resolvePromise: (value: T) => void, rejectPromise: (reason: any) => void) => void): Rx.IPromise; + } = undefined as any; - Rx.config.Promise = promiseImpl; + Rx.config.Promise = promiseImpl; - let p: Rx.IPromise = obsNum.toPromise(promiseImpl); + let p: Rx.IPromise = obsNum.toPromise(promiseImpl); - p = obsNum.toPromise(); + p = obsNum.toPromise(); - p = p.then(x => x); - p = p.then(x => p); - p = p.then(undefined, reason => 10); - // p = p.then(undefined, reason => p); + p = p.then(x => x); + p = p.then(x => p); + p = p.then(undefined, reason => 10); + // p = p.then(undefined, reason => p); - let ps: Rx.IPromise = p.then(undefined, reason => "error"); - ps = p.then(x => ""); - ps = p.then(x => ps); - } + let ps: Rx.IPromise = p.then(undefined, reason => "error"); + ps = p.then(x => ""); + ps = p.then(x => ps); } function test_scan() { diff --git a/types/sharepoint/tslint.json b/types/sharepoint/tslint.json index 2d56432edb..65ca630b05 100644 --- a/types/sharepoint/tslint.json +++ b/types/sharepoint/tslint.json @@ -1,7 +1,9 @@ { "extends": "dtslint/dt.json", "rules": { + // TODOs "jsdoc-format": false, - "max-line-length": false + "max-line-length": false, + "no-namespace": false } } diff --git a/types/webpack/webpack-tests.ts b/types/webpack/webpack-tests.ts index 8572a11b41..066bdfb740 100644 --- a/types/webpack/webpack-tests.ts +++ b/types/webpack/webpack-tests.ts @@ -618,9 +618,7 @@ function loader(this: webpack.loader.LoaderContext, source: string, sourcemap: s this.callback(null, source); } -namespace loader { - export const raw: boolean = true; - export const pitch = (remainingRequest: string, precedingRequest: string, data: any) => {}; -} +(loader as webpack.loader.Loader).raw = true; +(loader as webpack.loader.Loader).pitch = (remainingRequest: string, precedingRequest: string, data: any) => {}; const loaderRef: webpack.loader.Loader = loader; console.log(loaderRef.raw === true); From 58e2df31f6ff62840fa4d4dfaa7cc45e0e1c4fcf Mon Sep 17 00:00:00 2001 From: John Gainfort Date: Thu, 20 Apr 2017 11:54:50 -0600 Subject: [PATCH 53/90] new definition file for hls.js (#16028) * added hls.js definition * changed to new tslint format * fixing lint errors * changed definition structure based on PR comment --- types/hls.js/hls.js-tests.ts | 11 + types/hls.js/index.d.ts | 1253 ++++++++++++++++++++++++++++++++++ types/hls.js/tsconfig.json | 23 + types/hls.js/tslint.json | 1 + 4 files changed, 1288 insertions(+) create mode 100644 types/hls.js/hls.js-tests.ts create mode 100644 types/hls.js/index.d.ts create mode 100644 types/hls.js/tsconfig.json create mode 100644 types/hls.js/tslint.json diff --git a/types/hls.js/hls.js-tests.ts b/types/hls.js/hls.js-tests.ts new file mode 100644 index 0000000000..be71857652 --- /dev/null +++ b/types/hls.js/hls.js-tests.ts @@ -0,0 +1,11 @@ +import * as Hls from 'hls.js'; + +if (Hls.isSupported) { + const video = document.getElementById('video'); + const hls = new Hls(); + hls.loadSource('http://www.streambox.fr/playlists/test_001/stream.m3u8'); + hls.attachMedia(video); + hls.on(Hls.Events.MANIFEST_PARSED, () => { + video.play(); + }); +} diff --git a/types/hls.js/index.d.ts b/types/hls.js/index.d.ts new file mode 100644 index 0000000000..c0607a2307 --- /dev/null +++ b/types/hls.js/index.d.ts @@ -0,0 +1,1253 @@ +// Type definitions for hls.js 0.7 +// Project: https://github.com/video-dev/hls.js +// Definitions by: John G. Gainfort, Jr. +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.2 + +declare namespace Hls { + /** + * Hls events + */ + namespace Events { + /** + * fired to attach Media to hls instance + * data: { video , mediaSource } + */ + const MEDIA_ATTACHING: string; + /** + * fired when Media has been succesfully attached to hls instance + * data: { video , mediaSource } + */ + const MEDIA_ATTACHED: string; + /** + * fired before detaching Media from hls instance + * data: { } + */ + const MEDIA_DETACHING: string; + /** + * fired when Media has been detached from hls instance + * data: { } + */ + const MEDIA_DETACHED: string; + /** + * fired to signal that a manifest loading starts + * data: { url : manifestURL } + */ + const MANIFEST_LOADING: string; + /** + * fired after manifest has been loaded + * data: { levels : [available quality levels] , audioTracks : [ available audio tracks], url : manifestURL, stats : { trequest, tfirst, tload, mtime}} + */ + const MANIFEST_LOADED: string; + /** + * fired after manifest has been parsed + * data: { levels : [ available quality levels ], firstLevel : index of first quality level appearing in Manifest } + */ + const MANIFEST_PARSED: string; + /** + * fired when a level playlist loading starts + * data: { url : level URL, level : id of level being loaded } + */ + const LEVEL_LOADING: string; + /** + * fired when a level playlist loading finishes + * data: { details : levelDetails object, levelId : id of loaded level, stats : { trequest, tfirst, tload, mtime } } + */ + const LEVEL_LOADED: string; + /** + * fired when a level's details have been updated based on previous details, after it has been loaded + * data: { details : levelDetails object, level : id of updated level } + */ + const LEVEL_UPDATED: string; + /** + * fired when a level's PTS information has been updated after parsing a fragment + * data: { details: levelDetails object, level : id of updated level, drift: PTS drift observed when parsing last fragment } + */ + const LEVEL_PTS_UPDATED: string; + /** + * fired when a level switch is requested + * data: { level: Level } + */ + const LEVEL_SWITCHING: string; + /** + * fired when a level switch is effective + * data: { level: level object } + */ + const LEVEL_SWITCHED: string; + /** + * fired when a decryption key loading starts + * data: { frag: fragment object } + */ + const KEY_LOADING: string; + /** + * fired when a decryption key loading is completed + * data: { frag: fragment object } + */ + const KEY_LOADED: string; + /** + * fired when first timestamp has been found + * data: { id: demuxer id, frag: fragment object, initPTS: initPTS } + */ + const INIT_PTS_FOUND: string; + /** + * fired when a fragment loading starts + * data: { frag : fragment object } + */ + const FRAG_LOADING: string; + /** + * fired when a fragment load is in progress + * data: { frag : fragment object with frag.loaded=stats.loaded, stats : { trequest, tfirst, loaded, total } } + */ + const FRAG_LOAD_PROGRESS: string; + /** + * fired when a fragment loading is completed + * data: { frag : fragment object, payload : fragment payload, stats : { trequest, tfirst, tload, length}} + */ + const FRAG_LOADED: string; + /** + * fired when a fragment decryption is completed + * data: { id: demuxer id, frag: fragment object, stats: { tstart, tdecrypt } } + */ + const FRAG_DECRYPTED: string; + /** + * fired when Init Segment has been extracted from fragment + * data: { id: demuxer id, moov : moov MP4 box, codecs : codecs found while parsing fragment} + */ + const FRAG_PARSING_INIT_SEGMENT: string; + /** + * fired when parsing id3 is completed + * data: { id: demuxer id, samples : [ id3 pes - pts and dts timestamp are relative, values are in seconds]} + */ + const FRAG_PARSING_METADATA: string; + /** + * fired when moof/mdat have been extracted from fragment + * data: { id: demuxer id, + * moof : moof MP4 box, + * mdat : mdat MP4 box, + * startPTS : PTS of first sample, + * endPTS : PTS of last sample, + * startDTS : DTS of first sample, + * endDTS : DTS of last sample, + * type : stream type (audio or video), + * nb : number of samples} + */ + const FRAG_PARSING_DATA: string; + /** + * fired when fragment parsing is completed + * data: { id: demuxer id} + */ + const FRAG_PARSED: string; + /** + * fired when fragment remuxed MP4 boxes have all been appended into SourceBuffer + * data: { id: demuxer id, frag : fragment object, stats : { trequest, tfirst, tload, tparsed, tbuffered, length} } + */ + const FRAG_BUFFERED: string; + /** + * fired when fragment matching with current video position is changing + * data: { frag : fragment object } + */ + const FRAG_CHANGED: string; + /** + * triggered when FPS drop in last monitoring period is higher than given threshold + * data: { curentDropped : nb of dropped frames in last monitoring period, + * currentDecoded : nb of decoded frames in last monitoring period, + * totalDropped : total dropped frames on this video element } + */ + const FPS_DROP: string; + /** + * triggered when FPS drop triggers auto level capping + * data: { level: suggested new auto level capping by fps controller, droppedLevel : level has to much dropped frame will be restricted } + */ + const FPS_DROP_LEVEL_CAPPING: string; + /** + * Identifier for an error event + * data: { type : error type, details : error details, fatal : is error fatal or not, other error specific data } + */ + const ERROR: string; + /** + * fired when hls.js instance starts destroying. Different from MEDIA_DETACHED as one could want to detach and reattach a video to the instance of hls.js to handle mid-rolls for example. + * data: { } + */ + const DESTROYING: string; + } + + /** + * Hls error details + */ + namespace ErrorDetails { + /** + * raised when manifest loading fails because of a network error + * data: { type : NETWORK_ERROR, details : Hls.ErrorDetails.MANIFEST_LOAD_ERROR, fatal : true, url : manifest URL, response : { code: error code, text: error text }, loader : URL loader } + */ + const MANIFEST_LOAD_ERROR: string; + /** + * raised when manifest loading fails because of a timeout + * data: { type : NETWORK_ERROR, details : Hls.ErrorDetails.MANIFEST_LOAD_TIMEOUT, fatal : true, url : manifest URL, loader : URL loader } + */ + const MANIFEST_LOAD_TIMEOUT: string; + /** + * raised when manifest parsing failed to find proper content + * data: { type : NETWORK_ERROR, details : Hls.ErrorDetails.MANIFEST_PARSING_ERROR, fatal : true, url : manifest URL, reason : parsing error reason } + */ + const MANIFEST_PARSING_ERROR: string; + /** + * raised when level loading fails because of a network error + * data: { type : NETWORK_ERROR, details : Hls.ErrorDetails.LEVEL_LOAD_ERROR, fatal : true, url : level URL, response : { code: error code, text: error text }, loader : URL loader } + */ + const LEVEL_LOAD_ERROR: string; + /** + * raised when level loading fails because of a timeout + * data: { type : NETWORK_ERROR, details : Hls.ErrorDetails.LEVEL_LOAD_TIMEOUT, fatal : true, url : level URL, loader : URL loader } + */ + const LEVEL_LOAD_TIMEOUT: string; + /** + * raised when level switching fails + * data: { type : OTHER_ERROR, details : Hls.ErrorDetails.LEVEL_SWITCH_ERROR, fatal : false, level : failed level index, reason : failure reason } + */ + const LEVEL_SWITCH_ERROR: string; + /** + * raised when fragment loading fails because of a network error + * data: { type : NETWORK_ERROR, details : Hls.ErrorDetails.FRAG_LOAD_ERROR, fatal : true or false, frag : fragment object, response : { code: error code, text: error text } } + */ + const FRAG_LOAD_ERROR: string; + /** + * raised upon detection of same fragment being requested in loop + * data: { type : NETWORK_ERROR, details : Hls.ErrorDetails.FRAG_LOOP_LOADING_ERROR, fatal : true or false, frag : fragment object } + */ + const FRAG_LOOP_LOADING_ERROR: string; + /** + * raised when fragment loading fails because of a timeout + * data: { type : NETWORK_ERROR, details : Hls.ErrorDetails.FRAG_LOAD_TIMEOUT, fatal : true or false, frag : fragment object } + */ + const FRAG_LOAD_TIMEOUT: string; + /** + * raised when fragment parsing fails + * data: { type : NETWORK_ERROR, details : Hls.ErrorDetails.FRAG_PARSING_ERROR, fatal : true or false, reason : failure reason } + */ + const FRAG_PARSING_ERROR: string; + /** + * raised when manifest only contains quality level with codecs incompatible with MediaSource Engine. + * data: { type : MEDIA_ERROR, details : Hls.ErrorDetails.MANIFEST_INCOMPATIBLE_CODECS_ERROR, fatal : true, url : manifest URL } + */ + const MANIFEST_INCOMPATIBLE_CODECS_ERROR: string; + /** + * raised when MediaSource fails to add new sourceBuffer + * data: { type : MEDIA_ERROR, details : Hls.ErrorDetails.BUFFER_ADD_CODEC_ERROR, fatal : false, err : error raised by MediaSource, mimeType: mimeType on which the failure happened } + */ + const BUFFER_ADD_CODEC_ERROR: string; + /** + * raised when exception is raised while calling buffer append + * data: { type : MEDIA_ERROR, details : Hls.ErrorDetails.BUFFER_APPEND_ERROR, fatal : true, frag : fragment object } + */ + const BUFFER_APPEND_ERROR: string; + /** + * raised when exception is raised during buffer appending + * data: { type : MEDIA_ERROR, details : Hls.ErrorDetails.BUFFER_APPENDING_ERROR, fatal : false } + */ + const BUFFER_APPENDING_ERROR: string; + /** + * raised when playback is stuck because buffer is running out of data + * data: { type : MEDIA_ERROR, details : Hls.ErrorDetails.BUFFER_STALLED_ERROR, fatal : false } + */ + const BUFFER_STALLED_ERROR: string; + /** + * raised when no data can be appended anymore in media buffer because it is full. + * This error is recovered automatically by performing a smooth level switching that empty buffers (without disrupting the playback) and reducing the max buffer length. + * data: { type : MEDIA_ERROR, details : Hls.ErrorDetails.BUFFER_FULL_ERROR, fatal : false } + */ + const BUFFER_FULL_ERROR: string; + /** + * raised after hls.js seeks over a buffer hole to unstuck the playback, + * data: { type : MEDIA_ERROR, details : Hls.ErrorDetails.BUFFER_SEEK_OVER_HOLE, fatal : false, hole : hole duration } + */ + const BUFFER_SEEK_OVER_HOLE: string; + } + + /** + * Hls error types + */ + namespace ErrorTypes { + /** + * network related errors + */ + const NETWORK_ERROR: string; + /** + * media/video related errors + */ + const MEDIA_ERROR: string; + /** + * all other erros + */ + const OTHER_ERROR: string; + } + /** + * override Hls default configuration + * this configuration will be applied by default to all instances + */ + let DefaultConfig: Config; + /** + * checks whether your browser is supporting MediaSource Extensions + */ + const isSupported: boolean; + /** + * returns hls.js dist version number + */ + const version: number; + + interface Config { + /** + * (default: true) + * if set to true, start level playlist and first fragments will be loaded automatically, after triggering of Hls.Events.MANIFEST_PARSED event + * if set to false, an explicit API call (hls.startLoad(startPosition=-1)) will be needed to start quality level/fragment loading. + */ + autoStartLoad?: boolean; + /** + * (default -1) + * if set to -1, playback will start from initialTime=0 for VoD and according to liveSyncDuration/liveSyncDurationCount config params for Live + * otherwise, playback will start from predefined value. (unless stated otherwise in autoStartLoad=false mode : in that case startPosition can be overrided using hls.startLoad(startPosition)). + */ + startPosition?: number; + /** + * (default: false) + * if set to true, the adaptive algorithm with limit levels usable in auto-quality by the HTML video element dimensions (width and height) + * if set to false, levels will not be limited. All available levels could be used in auto-quality mode taking only bandwidth into consideration. + */ + capLevelToPlayerSize?: boolean; + /** + * (default: false) + * setting config.debug = true; will turn on debug logs on JS console. + * a logger object could also be provided for custom logging: config.debug = customLogger; + */ + debug?: boolean; + /** + * (default: undefined) + * if audio codec is not signaled in variant manifest, or if only a stream manifest is provided, hls.js tries to guess audio codec by parsing audio sampling rate in ADTS header. + * If sampling rate is less or equal than 22050 Hz, then hls.js assumes it is HE-AAC, otherwise it assumes it is AAC-LC. + * This could result in bad guess, leading to audio decode error, ending up in media error. + * It is possible to hint default audiocodec to hls.js by configuring this value as below: + * mp4a.40.2 (AAC-LC) or + * mp4a.40.5 (HE-AAC) or + * undefined (guess based on sampling rate) + */ + defaultAudioCodec?: string; + /** + * (default: 1) + * number of segments needed to start a playback of Live stream. + */ + initialLiveManifestSize: number; + /** + * (default: 30 seconds) + * Maximum buffer length in seconds. If buffer length is/become less than this value, a new fragment will be loaded. + * This is the guaranteed buffer length hls.js will try to reach, regardless of maxBufferSize. + */ + maxBufferLength?: number; + /** + * (default 600s) + * Maximum buffer length in seconds. Hls.js will never exceed this value, even if maxBufferSize is not reached yet. + * hls.js tries to buffer up to a maximum number of bytes (60 MB by default) rather than to buffer up to a maximum nb of seconds. + * This is to mimic the browser behaviour (the buffer eviction algorithm is starting after the browser detects that video buffer size reaches a limit in bytes) + * maxBufferLength is the minimum guaranteed buffer length that hls.js will try to achieve, even if that value exceeds the amount of bytes 60 MB of memory. + * maxMaxBufferLength acts as a capping value, as if bitrate is really low, you could need more than one hour of buffer to fill 60 MB. + */ + maxMaxBufferLength?: number; + /** + * (default: 60 MB) + * 'Minimum' maximum buffer size in bytes. If buffer size upfront is bigger than this value, no fragment will be loaded + */ + maxBufferSize?: number; + /** + * (default: 0.5 seconds) + * 'Maximum' inter-fragment buffer hole tolerance that hls.js can cope with when searching for the next fragment to load. When switching between quality level, + * fragments might not be perfectly aligned. + * This could result in small overlapping or hole in media buffer. This tolerance factor helps cope with this. + */ + maxBufferHole?: number; + /** + * (default: 4s) + * + * ABR algorithm will always try to choose a quality level that should avoid rebuffering. In case no quality level with this criteria can + * be found (lets say for example that buffer length is 1s, but fetching a fragment at lowest quality is predicted to take around 2s ... + * ie we can forecast around 1s of rebuffering ...) then ABR algorithm will try to find a level that should guarantee less than + * maxStarvationDelay of buffering. + */ + maxStarvationDelay?: number; + /** + * (default: 2s) + * In case playback is stalled, and a buffered range is available upfront, less than maxSeekHole seconds from current media position, + * hls.js will jump over this buffer hole to reach the beginning of this following buffered range. + * maxSeekHole allows to configure this jumpable threshold. + */ + maxSeekHole?: number; + /** + * (default: 0.5s) + * media element is expected to play and if currentTime has not moved for more than lowBufferWatchdogPeriod and if there are less than maxBufferHole seconds buffered upfront, + * hls.js will try to nudge playhead to recover playback + */ + lowBufferWatchdogPeriod: number; + /** + * (default: 3s) + * if media element is expected to play and if currentTime has not moved for more than highBufferWatchdogPeriod and if there are more than maxBufferHole seconds buffered upfront, + * hls.js will try to nudge playhead to recover playback + */ + highBufferWatchdogPeriod: number; + /** + * (default: 0.1s) + * In case playback continues to stall after first playhead nudging, currentTime will be nudged evenmore following nudgeOffset to try to restore playback. + * media.currentTime += (nb nudge retry -1)*nudgeOffset + */ + nudgeOffset: number; + /** + * (default: 3s) + * In case playback continues to stall after first playhead nudging, currentTime will be nudged evenmore following nudgeOffset to try to restore playback. + * media.currentTime += (nb nudge retry -1)*nudgeOffset + */ + nudgeMaxRetry: number; + /** + * (default 0.2s) + * This tolerance factor is used during fragment lookup. + * Instead of checking whether buffered.end is located within [start, end] range, frag lookup will be done by checking within [start-maxFragLookUpTolerance, end-maxFragLookUpTolerance] range. + * This tolerance factor is used to cope with situations like: + * buffered.end = 9.991 + * frag[0] : [0,10] + * frag[1] : [10,20] + * buffered.end is within frag[0] range, but as we are close to frag[1], frag[1] should be choosen instead + * If maxFragLookUpTolerance = 0.2, this lookup will be adjusted to + * frag[0] : [-0.2,9.8] + * frag[1] : [9.8,19.8] + * This time, buffered.end is within frag[1] range, and frag[1] will be the next fragment to be loaded, as expected + */ + maxLoadingDelay?: number; + /** + * (default 4s) + * + * max video loading delay used in automatic start level selection : in that mode ABR controller will ensure that video loading time (ie + * the time to fetch the first fragment at lowest quality level + the time to fetch the fragment at the appropriate quality level is less + * than maxLoadingDelay ) + */ + maxFragLookUpTolerance?: number; + /** + * (default: 3) + * edge of live delay, expressed in multiple of EXT-X-TARGETDURATION. if set to 3, playback will start from fragment N-3, N being the last fragment of the live playlist. + * Decreasing this value is likely to cause playback stalls. + */ + liveSyncDurationCount?: number; + /** + * (default: undefined) + * Alternative parameter to liveSyncDurationCount, expressed in seconds vs number of segments. + * If defined in the configuration object, liveSyncDuration will take precedence over the default liveSyncDurationCount. + * You can't define this parameter and either liveSyncDurationCount or liveMaxLatencyDurationCount in your configuration object at the same time. + * A value too low (inferior to ~3 segment durations) is likely to cause playback stalls. + */ + liveSyncDuration?: number; + /** + * (default: Infinity) + * maximum delay allowed from edge of live, expressed in multiple of EXT-X-TARGETDURATION. + * If set to 10, the player will seek back to liveSyncDurationCount whenever the next fragment to be loaded is older than N-10, N being the last fragment of the live playlist. + * If set, this value must be stricly superior to liveSyncDurationCount a value too close from liveSyncDurationCount is likely to cause playback stalls. + */ + liveMaxLatencyDurationCount?: number; + /** + * (default: undefined) + * Alternative parameter to liveMaxLatencyDurationCount, expressed in seconds vs number of segments. + * If defined in the configuration object, liveMaxLatencyDuration will take precedence over the default liveMaxLatencyDurationCount. + * If set, this value must be stricly superior to liveSyncDuration which must be defined as well. + * You can't define this parameter and either liveSyncDurationCount or liveMaxLatencyDurationCount in your configuration object at the same time. + * A value too close from liveSyncDuration is likely to cause playback stalls. + */ + liveMaxLatencyDuration?: number; + /** + * (default: true) + * Enable WebWorker (if available on browser) for TS demuxing/MP4 remuxing, to improve performance and avoid lag/frame drops. + */ + enableWorker?: boolean; + /** + * (default: true) + * Enable to use JavaScript version AES decryption for fallback of WebCrypto API. + */ + enableSoftwareAES?: boolean; + /** + * (default: undefined) + * When set, use this level as the default hls.startLevel. Keep in mind that the startLevel set with the API takes precedence over + * config.startLevel configuration parameter. + */ + startLevel?: number; + /** + * (default: 10000ms for level and manifest) + * URL Loader timeout. A timeout callback will be triggered if loading duration exceeds this timeout. no further action will be done : the load operation will not be cancelled/aborted. + * It is up to the application to catch this event and treat it as needed. + */ + manifestLoadingTimeOut?: number; + /** + * (default: 3) + * Max number of load retries. + */ + manifestLoadingMaxRetry?: number; + /** + * (default: 1000 ms) + * Initial delay between XMLHttpRequest error and first load retry (in ms). + * Any I/O error will trigger retries every 500ms,1s,2s,4s,8s, ... capped to fragLoadingMaxRetryTimeout / manifestLoadingMaxRetryTimeout / levelLoadingMaxRetryTimeout value (exponential backoff). + * Prefetch start fragment although media not attached. + */ + manifestLoadingRetryDelay?: number; + /** + * (default: 64000 ms) + * Maximum frag/manifest/key retry timeout (in milliseconds) in case I/O errors are met. + */ + manifestLoadingMaxRetryTimeout?: number; + /** + * (default: 60000ms for fragment) + * URL Loader timeout. A timeout callback will be triggered if loading duration exceeds this timeout. no further action will be done : the load operation will not be cancelled/aborted. + * It is up to the application to catch this event and treat it as needed. + */ + levelLoadingTimeOut?: number; + /** + * (default: 3) + * Max number of load retries. + */ + levelLoadingMaxRetry?: number; + /** + * (default: 1000 ms) + * Initial delay between XMLHttpRequest error and first load retry (in ms). + * Any I/O error will trigger retries every 500ms,1s,2s,4s,8s, ... capped to fragLoadingMaxRetryTimeout / manifestLoadingMaxRetryTimeout / levelLoadingMaxRetryTimeout value (exponential backoff). + * Prefetch start fragment although media not attached. + */ + levelLoadingRetryDelay?: number; + /** + * (default: 64000 ms) + * Maximum frag/manifest/key retry timeout (in milliseconds) in case I/O errors are met. + */ + levelLoadingMaxRetryTimeout?: number; + /** + * (default: 60000ms for fragment) + * URL Loader timeout. A timeout callback will be triggered if loading duration exceeds this timeout. no further action will be done : the load operation will not be cancelled/aborted. + * It is up to the application to catch this event and treat it as needed. + */ + fragLoadingTimeOut?: number; + /** + * (default: 3) + * Max number of load retries. + */ + fragLoadingMaxRetry?: number; + /** + * (default: 1000 ms) + * Initial delay between XMLHttpRequest error and first load retry (in ms). + * Any I/O error will trigger retries every 500ms,1s,2s,4s,8s, ... capped to fragLoadingMaxRetryTimeout / manifestLoadingMaxRetryTimeout / levelLoadingMaxRetryTimeout value (exponential backoff). + * Prefetch start fragment although media not attached. + */ + fragLoadingRetryDelay?: number; + /** + * (default: 64000 ms) + * Maximum frag/manifest/key retry timeout (in milliseconds) in case I/O errors are met. + */ + fragLoadingMaxRetryDelay?: number; + /** + * (default: false) + * Start prefetching start fragment although media not attached yet. Max number of append retries. + */ + startFragPrefech?: boolean; + /** + * (default: 3) + * Max number of sourceBuffer.appendBuffer() retry upon error. Such error could happen in loop with UHD streams, when internal buffer is full. (Quota Exceeding Error will be triggered). + * In that case we need to wait for the browser to evict some data before being able to append buffer correctly. + */ + appendErrorMaxRetry?: number; + /** + * (default: standard XMLHttpRequest-based URL loader) + * Override standard URL loader by a custom one. Could be useful for P2P or stubbing (testing). + * Use this, if you want to overwrite both the fragment and the playlist loader. + * Note: If fLoader or pLoader are used, they overwrite loader! + */ + loader?: any; + /** + * (default: undefined) + * This enables the manipulation of the fragment loader. + * Note: This will overwrite the default loader, as well as your own loader function. + */ + fLoader?: any; + /** + * (default: undefined) + * This enables the manipulation of the playlist loader. + * Note: This will overwrite the default loader, as well as your own loader function. + */ + pLoader?: any; + /** + * (default: undefined) + * XMLHttpRequest customization callback for default XHR based loader. + * Parameter should be a function with two arguments (xhr: XMLHttpRequest, url: string). + * If xhrSetup is specified, default loader will invoke it before calling xhr.send(). This allows user to easily modify/setup XHR. + */ + xhrSetup?(xhr: XMLHttpRequest, url: string): void; + /** + * (default: undefined) + * Fetch customization callback for Fetch based loader. + * Parameter should be a function with two arguments (context and Request Init Params). + * If fetchSetup is specified and Fetch loader is used, fetchSetup will be triggered to instantiate Request Object. This allows user to easily tweak Fetch loader. + */ + fetchSetup?(context: any, initParams: any): Request; + /** + * (default: internal ABR controller) + * Customized Adaptive Bitrate Streaming Controller. + * Parameter should be a class providing 2 getters, 2 setters and a destroy() method: + * get/set nextAutoLevel: return next auto-quality level/force next auto-quality level that should be returned (currently used for emergency switch down) + * get/set autoLevelCapping: capping/max level value that could be used by ABR Controller + * destroy(): should clean-up all used resources + */ + abrController?: AbrController; + /** + * (default: internal track timeline controller) + * Customized text track syncronization controller. + * Parameter should be a class with a destroy() method: + * destroy() : should clean-up all used resources + */ + timelineController?: TimelineController; + /** + * (default: true) + * whether or not to enable CEA-708 captions + */ + enableCEA708Captions?: boolean; + /** + * (default: English) + * Label for the text track generated for CEA-708 captions track 1. This is how it will appear in the browser's native menu for subtitles and captions. + */ + captionsTextTrack1Label?: string; + /** + * (default: en) + * RFC 3066 language code for the text track generated for CEA-708 captions track 1. + */ + captionsTextTrack1LanguagedCode?: string; + /** + * (default: Spanish) + * Label for the text track generated for CEA-708 captions track 2. This is how it will appear in the browser's native menu for subtitles and captions. + */ + captionsTextTrack2Label?: string; + /** + * (default: es) + * RFC 3066 language code for the text track generated for CEA-708 captions track 2. + */ + captionsTextTrack2LanguageCode?: string; + /** + * (default: false) + * If a segment's video track is shorter than its audio track by > min(maxSeekHole, maxBufferHole), extend the final video frame's duration to match the audio track's duration. + * This helps playback continue in certain cases that might otherwise get stuck. + */ + stretchShortVideoTrack?: boolean; + /** + * (default: true) + * Whether or not to force having a key frame in the first AVC sample after a discontinuity. + * If set to true, after a discontinuity, the AVC samples without any key frame will be dropped until finding one that contains a key frame. + * If set to false, all AVC samples will be kept, which can help avoid holes in the stream. Setting this parameter to false can also generate decoding weirdness when switching level or seeking. + */ + forceKeyFrameOnDiscontinuity?: boolean; + /** + * (default: 5.0) + * Fast bitrate Exponential moving average half-life, used to compute average bitrate for Live streams. + * Half of the estimate is based on the last abrEwmaFastLive seconds of sample history. Each of the sample is weighted by the fragment loading duration. + * parameter should be a float greater than 0 + */ + abrEwmaFastLive?: number; + /** + * (default: 9.0) + * Slow bitrate Exponential moving average half-life, used to compute average bitrate for Live streams. + * Half of the estimate is based on the last abrEwmaSlowLive seconds of sample history. Each of the sample is weighted by the fragment loading duration. + * parameter should be a float greater than abrEwmaFastLive + */ + arbEwmaSlowLive?: number; + /** + * (default: 4.0) + * Fast bitrate Exponential moving average half-life, used to compute average bitrate for VoD streams. + * Half of the estimate is based on the last abrEwmaFastVoD seconds of sample history. Each of the sample is weighted by the fragment loading duration. + * parameter should be a float greater than 0 + */ + arbEwmaFastVod?: number; + /** + * (default: 15.0) + * Slow bitrate Exponential moving average half-life, used to compute average bitrate for VoD streams. + * Half of the estimate is based on the last abrEwmaSlowVoD seconds of sample history. Each of the sample is weighted by the fragment loading duration. + * parameter should be a float greater than abrEwmaFastVoD + */ + arbEwmaSlowVod?: number; + /** + * (default: 500000) + * Default bandwidth estimate in bits/second prior to collecting fragment bandwidth samples. + * parameter should be a float + */ + arbEwmaDefaultEstimate?: number; + /** + * (default: 0.8) + * Scale factor to be applied against measured bandwidth average, to determine whether we can stay on current or lower quality level. + * If abrBandWidthFactor * bandwidth average < level.bitrate then ABR can switch to that level providing that it is equal or less than current level. + */ + arbBandWidthFactor?: number; + /** + * (default: 0.7) + * Scale factor to be applied against measured bandwidth average, to determine whether we can switch up to a higher quality level. + * If abrBandWidthUpFactor * bandwidth average < level.bitrate then ABR can switch up to that quality level. + */ + arbBandWidthUpFactor?: number; + /** + * (default: false) + * max bitrate used in ABR by avg measured bitrate i.e. if bitrate signaled in variant manifest for a given level is 2Mb/s but average bitrate measured on this level is 2.5Mb/s, + * then if config value is set to true, ABR will use 2.5 Mb/s for this quality level. + */ + abrMaxWithRealBitrate?: boolean; + /** + * (default: 0) + * Return the capping/min bandwidth value that could be used by automatic level selection algorithm. + * Useful when browser or tab of the browser is not in the focus and bandwidth drops + */ + minAutoBitrate?: number; + } + + /** + * a Level object represents a given quality level and contains quality level related info + */ + interface Level { + /** + * level url. might contain sever items if failover/redundant streams are found in the manifest + */ + url: string[]; + /** + * level bitrate + */ + bitrate: number; + /** + * level name + */ + name: string; + /** + * used codecs + */ + codecs: string; + /** + * video width + */ + width: number; + /** + * video height + */ + height: number; + /** + * level details + */ + details: LevelDetails; + } + + /** + * a LevelDetails object contains level details retrieved after level playlist parsing + */ + interface LevelDetails { + /** + * protocol version + */ + version: number; + /** + * playlist type + */ + type: string; + /** + * start sequence number + */ + startSN: number; + /** + * end sequence number + */ + endSN: number; + /** + * level total duration + */ + totalduration: number; + /** + * level fragment target duration + */ + targetduration: number; + /** + * average fragment duration + */ + averagetargetduration: number; + /** + * array of fragments info + */ + fragments: Fragment[]; + /** + * is this level a live playlist or not? + */ + live: boolean; + } + + /** + * the Fragment object contains fragment related info + */ + interface Fragment { + /** + * fragment duration + */ + duration: number; + /** + * fragment level identifier + */ + level: number; + /** + * fragment sequence number + */ + sn: number; + /** + * fragment start offset + */ + start: number; + /** + * fragment url + */ + url: string; + /** + * stream start date and time + */ + programDateTime: Date; + /** + * continuity count + */ + cc: number; + /** + * list of tags associated with the fragment + */ + tagList: string[][]; + /** + * fragment title + */ + title: string; + } + + interface Data { + /** + * videoElement + */ + video?: HTMLVideoElement; + /** + * media source + */ + mediaSource?: string; + /** + * manifest url + */ + url?: string; + /** + * available quality levels + */ + levels?: number[]; + /** + * available audio tracks + */ + audioTracks?: AudioTrack[]; + /** + * XMLHttp request stats + */ + stats?: HlsStats; + /** + * index of first quality level appearing in Manifest + */ + firstLevel?: number; + /** + * id of updated level + */ + level?: number; + /** + * id of loaded level + */ + levelId?: number; + /** + * levelDetails object + */ + details?: LevelDetails; + /** + * PTS drift observed when parsing last fragment + */ + drift?: number; + /** + * fragment object with frag.loaded=stats.loaded + */ + frag?: Fragment; + /** + * fragment payload + */ + payload?: any; // TODO: what is the payload? + /** + * id of level or demuxer + */ + id?: number; + /** + * moof MP4 box + */ + moof?: any; // TODO: whats is the moof? + /** + * mdat MP4 box + */ + mdat?: any; // TODO: what is mdat? + /** + * PTS of first sample + */ + startPTS?: number; + /** + * PTS of last sample + */ + endPTS?: number; + /** + * DTS of first sample + */ + startDTS?: number; + /** + * DTS of last sample + */ + endDTS?: number; + /** + * stream type (audio or video) + */ + type?: string; + /** + * number of samples + */ + nb?: number; + /** + * number of dropped frames in last monitoring period + */ + currentDropped?: number; + /** + * number of decoded frames in last monitoring period + */ + currentDecode?: number; + /** + * total dropped frames on this video element + */ + totalDropped?: number; + /** + * level has to much dropped frame will be restricted + */ + droppedLevel?: number; + /** + * is error fatal or not. + * if error is not fatal, hls.js will try to recover it + * if error is fatal, an action is required to (try to) recover it + */ + fatal?: boolean; + } + + /** + * (default: internal ABR controller) + * Customized Adaptive Bitrate Streaming Controller. + */ + interface AbrController { + /** + * get: capping/max level value that could be used by ABR Controller + * set: capping/max level value that could be used by ABR Controller + */ + autoLevelCapping: number; + /** + * accumulated handled events + */ + handledEvents: string[]; + /** + * current hls instance + */ + hls: Hls; + /** + * last fragments corresponding level + */ + lastLoadedFragLevel: number; + /** + * get: next auto-quality levele/force next auto-quality level that should be returned + * set: next auto-quality levele/force next auto-quality level that should be returned + * - currently used for emergency switch down + */ + nextAutoLevel: number; + useGenericHandler: boolean; + } + + /** + * Customized text track syncronization controller. + */ + interface TimelineController { + /**d + * clean-up all used resources + */ + destory(): void; + } + + interface LoaderResponse { + url: string; + data: string | ArrayBuffer; + } + + interface LoaderStats { + /** + * performance.now() just after load() has been called + */ + trequest: number; + /** + * performance.now() of first received byte + */ + tfirst: number; + /** + * performance.now() on load complete + */ + tload: number; + /** + * number of loaded bytes + */ + loaded: number; + /** + * download bandwitdh in bit/s + */ + bw: number; + /** + * total nb of bytes + */ + total: number; + } + + interface LoaderError { + /** + * error code + */ + code: number; + /** + * error description + */ + text: string; + } + + interface HlsStats { + /** + * performance.now() just after load() has been called + */ + trequest: number; + /** + * performance.now() of first received byte + */ + tfirst: number; + /** + * performance.now() on load complete + */ + tload: number; + mtime: number; + tbuffered?: number; + length?: number; + } + + interface Loader { + load(context: LoaderContext, config: LoaderConfig, callbacks: LoaderCallbacks): void; + /** + * Abort any loading in progress. + */ + abort(): void; + /** + * Destroy loading context. + */ + destroy(): void; + } + + interface LoaderContext { + /** + * target URL + */ + url: string; + /** + * loader response type (arraybuffer or default response type for playlist) + */ + responseType: string; + /** + * start byte range offset + */ + rangeStart?: number; + /** + * end byte range offset + */ + rangeEnd?: number; + /** + * true if onProgress should report partial chunk of loaded content + */ + progressData?: boolean; + /** + * fragment object + */ + frag: Fragment; + /** + * request type + * - level, manifest + */ + type: string; + /** + * level id + */ + level: number; + } + + interface LoaderConfig { + /** + * Max number of load retries + */ + maxRetry: number; + /** + * Timeout after which `onTimeOut` callback will be triggered (if loading is still not finished after that delay) + */ + timeout: number; + /** + * Delay between an I/O error and following connection retry (ms). This to avoid spamming the server + */ + retryDelay: number; + /** + * max connection retry delay (ms) + */ + maxRetryDelay: number; + } + + interface LoaderCallbacks { + onSuccess(response: LoaderResponse, stats: LoaderStats, context: LoaderContext): void; + onProgress(stats: LoaderStats, context: LoaderContext, data: string | ArrayBuffer): void; + onError(error: LoaderError, context: LoaderContext): void; + onTimeout(stats: LoaderStats, context: LoaderContext): void; + } +} + +declare class Hls { + /** + * Constructor. Can be provided an HlsConfig object as default properties and or overrides + */ + constructor(config?: Hls.Config) + /** + * return array of available quality levels + */ + levels: Hls.Level[]; + /** + * get: return current playback quality level + * set: trigger an immediate quality level switch to new quality level + * this will pause the video if it was playing, flush the whole buffer, + * and fetch fragment matching with current position and requested quality level + * then resume the video if needed once fetched fragment will have been buffered + * + * set to -1 for automatic level selection + */ + currentLevel: number; + /** + * capping/max level (index of level) that could be used by ABR Controller. Defaults to -1 + * which means no limit + * set: max level value that could be used by the ABR Controller + */ + autoLevelCapping: number; + /** + * return start level index (level of first fragment that will be played back) + * if not overrided by user: first level appearing in manifest will be used as start level + * if -1: automatic start level selection, playback will start from level matching download bandwidth (determined from download of first segment) + * + * default valus is hls.firstLevel + */ + startLevel: number; + /** + * (default: true) + * if set to true, start level playlist and first fragments will be loaded automatically, after triggering of Hls.Events.MANIFEST_PARSED event + * if set to false, an explicit API call (hls.startLoad(startPosition=-1)) will be needed to start quality level/fragment loading. + */ + autoStartLoad: boolean; + /** + * get: Return the bound videoElement from the hls instance + */ + media: HTMLVideoElement; + /** + * hls.js config + */ + config: Hls.Config; + /** + * get: return next playback quality level (playback quality level for next buffered fragment) + * return -1 if next fragment not buffered yet + * set: trigger a quality level switch for next fragment + * this could eventually flush already buffered next fragment + * + * set to -1 for automatic level selection + */ + nextLevel: Hls.Level; + /** + * get: return last loaded fragment quality level + * set: quality level for next loaded fragment + * set to -1 for automatic level selection + */ + loadLevel: Hls.Level; + /** + * get: return quality level that will be used to load next fragment + * set: force quality level for next loaded fragment + * quality level will be forced only for that fragment + * after a fragment at this quality level has been loaded, hls.loadLevel will prevail + */ + nextLoadLevel: Hls.Level; + /** + * first level index (index of first level appearing in Manifest. it is usually defined as start level hint for player) + */ + firstLevel: Hls.Level; + /** + * array of audio tracks exposed in manifest + */ + audioTracks: AudioTrack[]; + /** + * get: returns audio track id + * set: sets audio track id (returned by) + */ + audioTrack: number; + /** + * position of live sync point (ie edge of live position minus safety delay defined by hls.config.liveSyncDuration) + */ + liveSyncPosition: number; + /** + * calling this method will: + * bind videoElement and hls instances + * create MediaSource and set it as video source + * once MediaSource object is successfully created, MEDIA_ATTACHED event will be fired + */ + attachMedia(videoElement: HTMLVideoElement): void; + /** + * calling this method will: + * unbind VideoElement from hls instance + * signal the end of the stream on MediaSource + * reset video source ( video.src = '' ) + */ + detachMedia(): void; + /** + * tell whether auto level selection is enabled or not + */ + autoLevelEnabled(enabled: boolean): boolean; + /** + * loads provided url as media source + */ + loadSource(source: string): void; + /** + * by default, hls.js will automatically start loading quality level playlists, and fragments after Hls.Events.MANIFEST_PARSED event has been triggered (and video element has been attached) + * however if config.autoStartLoad is set to false, hls.startLoad() needs to be called to manually start playlist and fragments loading + * + * start/restart playlist/fragment loading. this is only effective if MANIFEST_PARSED event has been triggered and video element has been attached to hls object + * startPosition is the initial position in the playlist + * ff startPosition is not set to -1, it allows to override default startPosition to the one you want + * (it will bypass hls.config.liveSync* config params for Live for example, so that user can start playback from whatever position) + */ + startLoad(startPosition?: number): void; + /** + * stop playlist/fragment loading. could be resumed later on by calling hls.startLoad() + */ + stopLoad(): void; + /** + * should be invoked to recover media error. + */ + recoverMediaError(): void; + /** + * if media error are still raised after calling hls.recoverMediaError(), calling this method, could be useful to workaround audio codec mismatch. + * the workflow should be: + * on First Media Error : call hls.recoverMediaError() + * if another Media Error is raised 'quickly' after this first Media Error : first call hls.swapAudioCodec(), then call hls.recoverMediaError() + */ + swapAudioCodec(): void; + /** + * should be called to free used resources and destroy hls context + */ + destroy(): void; + /** + * hls.js event listener + */ + on(event: string, callback: (event: string, data: Hls.Data) => void): void; +} + +export as namespace Hls; +export = Hls; diff --git a/types/hls.js/tsconfig.json b/types/hls.js/tsconfig.json new file mode 100644 index 0000000000..6d7aab4ca9 --- /dev/null +++ b/types/hls.js/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6", + "dom" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "hls.js-tests.ts" + ] +} diff --git a/types/hls.js/tslint.json b/types/hls.js/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/hls.js/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" } From 34791d816d53c811c8078d2ffe0cbccda746924a Mon Sep 17 00:00:00 2001 From: Andy Hanson Date: Thu, 20 Apr 2017 11:02:49 -0700 Subject: [PATCH 54/90] Fix lint --- types/zetapush-js/index.d.ts | 50 +++++++++++++++++------------------ types/zetapush-js/tslint.json | 2 +- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/types/zetapush-js/index.d.ts b/types/zetapush-js/index.d.ts index 879f5e6f2c..afe0e3c6b0 100644 --- a/types/zetapush-js/index.d.ts +++ b/types/zetapush-js/index.d.ts @@ -3,30 +3,30 @@ // Definitions by: ghoullier // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -interface HandshakeFields { +export interface HandshakeFields { ext: any; } -interface AbstractHandshakeOptions { +export interface AbstractHandshakeOptions { authType: string; sandboxId: string; deploymentId: string; } -interface CredentialsHandshakeOptions { +export interface CredentialsHandshakeOptions { authType: string; deploymentId: string; login: string; password: string; } -interface TokenHandshakeOptions { +export interface TokenHandshakeOptions { authType: string; deploymentId: string; token: string; } -interface AbstractHandshake { +export interface AbstractHandshake { authType: string; authVersion: string; sandboxId: string; @@ -34,35 +34,35 @@ interface AbstractHandshake { getHandshakeFields(client: Client): HandshakeFields; } -interface CredentialsAuthData { +export interface CredentialsAuthData { login: string; password: string; } -interface CredentialsHandshake extends AbstractHandshake { +export interface CredentialsHandshake extends AbstractHandshake { login: string; password: string; authData: CredentialsAuthData; } -interface TokenAuthData { +export interface TokenAuthData { token: string; } -interface TokenHandshake extends AbstractHandshake { +export interface TokenHandshake extends AbstractHandshake { token: string; authData: TokenAuthData; } -type AuthenticationCallback = () => AbstractHandshake; +export type AuthenticationCallback = () => AbstractHandshake; -type AsyncMacroServicePublisher = (method: string, parameters: any, hardFail?: boolean, debug?: number) => Promise; +export type AsyncMacroServicePublisher = (method: string, parameters: any, hardFail?: boolean, debug?: number) => Promise; -type MacroServicePublisher = (method: string, parameters: any, hardFail?: boolean, debug?: number) => void; +export type MacroServicePublisher = (method: string, parameters: any, hardFail?: boolean, debug?: number) => void; -type ServicePublisher = (method: string, parameters: any) => void; +export type ServicePublisher = (method: string, parameters: any) => void; -interface Options { +export interface Options { apiUrl?: string; sandboxId: string; forceHttps?: boolean; @@ -70,55 +70,55 @@ interface Options { transports?: any[]; } -interface ClientOptions extends Options { +export interface ClientOptions extends Options { authentication(): AbstractHandshake; } -interface WeakClientOptions extends Options { +export interface WeakClientOptions extends Options { deploymentId?: string; } -interface Services { +export interface Services { Macro: AsyncMacroService; Messaging: Service; } -interface Service { +export interface Service { DEFAULT_DEPLOYMENT_ID: string; $publish: ServicePublisher; } -interface AsyncMacroService { +export interface AsyncMacroService { DEFAULT_DEPLOYMENT_ID: string; $publish: AsyncMacroServicePublisher; } -interface MacroService { +export interface MacroService { DEFAULT_DEPLOYMENT_ID: string; $publish: MacroServicePublisher; } -interface ServiceDeclaration { +export interface ServiceDeclaration { Type: Service; deploymentId?: string; } -interface Token { +export interface Token { token: string; } -interface Credentials { +export interface Credentials { login: string; password: string; } -interface ClientHelper { +export interface ClientHelper { authentication: AuthenticationCallback; servers: Promise; getUniqRequestId(): string; } -type ConnectionStatusHandler = number; +export type ConnectionStatusHandler = number; export class Authentication { static delegating({ token }: TokenAuthData): TokenHandshake; diff --git a/types/zetapush-js/tslint.json b/types/zetapush-js/tslint.json index 377cc837d4..3db14f85ea 100644 --- a/types/zetapush-js/tslint.json +++ b/types/zetapush-js/tslint.json @@ -1 +1 @@ -{ "extends": "../tslint.json" } +{ "extends": "dtslint/dt.json" } From 2f4b4f01d12b3b2b4740296b51905df5124bf237 Mon Sep 17 00:00:00 2001 From: Kwang Yul Seo Date: Fri, 21 Apr 2017 03:06:20 +0900 Subject: [PATCH 55/90] [react-bootstrap] Add block to DropdownButtonBaseProps (#15709) --- types/react-bootstrap/index.d.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/types/react-bootstrap/index.d.ts b/types/react-bootstrap/index.d.ts index 167001a4dc..2067c97c68 100644 --- a/types/react-bootstrap/index.d.ts +++ b/types/react-bootstrap/index.d.ts @@ -180,6 +180,7 @@ declare namespace ReactBootstrap { // interface DropdownButtonBaseProps extends DropdownBaseProps { + block?: boolean; bsSize?: Sizes; bsStyle?: string; navItem?: boolean; From 76bc8c2564ad38b92730dd2db9303d98cef9c4c6 Mon Sep 17 00:00:00 2001 From: Sebastian Haas Date: Thu, 20 Apr 2017 20:07:29 +0200 Subject: [PATCH 56/90] Updated vexflow type definitions (#15741) * updated vexflow type definitions * increased version number --- types/vexflow/index.d.ts | 41 +++++++++++++++++++++++++++++-------- types/vexflow/tsconfig.json | 2 +- 2 files changed, 33 insertions(+), 10 deletions(-) diff --git a/types/vexflow/index.d.ts b/types/vexflow/index.d.ts index a651c850d4..2975951738 100644 --- a/types/vexflow/index.d.ts +++ b/types/vexflow/index.d.ts @@ -1,6 +1,6 @@ -// Type definitions for VexFlow v1.2.27 +// Type definitions for VexFlow v1.2.83 // Project: http://vexflow.com -// Definitions by: Roman Quiring +// Definitions by: Roman Quiring , Sebastian Haas // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped //inconsistent namespace: this is a helper funtion from tables.js and should not pollute the global namespace! @@ -52,7 +52,7 @@ declare namespace Vex { moveTo(x : number, y : number) : IRenderContext; lineTo(x : number, y : number) : IRenderContext; bezierCurveToTo(x1 : number, y1 : number, x2 : number, y2 : number, x : number, y : number) : IRenderContext; - quadraticCurveToTo(x1 : number, y1 : number, x2 : number, y2 : number) : void; + quadraticCurveToTo(x1 : number, y1 : number, x2 : number, y2 : number) : IRenderContext; arc(x : number, y : number, radius : number, startAngle : number, endAngle : number, antiClockwise : boolean) : IRenderContext; glow() : IRenderContext; fill() : IRenderContext; @@ -805,6 +805,7 @@ declare namespace Vex { getContext() : IRenderContext; getX() : number; getNumLines() : number; + setX(x : number) : Stave; setY(y : number) : Stave; setWidth(width : number) : Stave; getWidth() : number; @@ -830,11 +831,13 @@ declare namespace Vex { getYForGlyphs() : number; addGlyph(glypg : Glyph) : Stave; addEndGlyph(glypg : Glyph) : Stave; - addModifier(modifier : StaveModifier) : Stave; + addModifier(modifier : StaveModifier, position? : StaveModifier.Position) : Stave; addEndModifier(modifier : StaveModifier) : Stave; addKeySignature(keySpec : string) : Stave; - addClef(clef : string, size? : string, annotation? : string) : Stave; + setKeySignature(keySpec : string, cancelKeySpec : string, position? : StaveModifier.Position) : Stave; + addClef(clef : string, size? : string, annotation? : string, position? : StaveModifier.Position) : Stave; addEndClef(clef : string, size? : string, annotation? : string) : Stave; + setEndClef(clef : string, size? : string, annotation? : string) : Stave; addTimeSignature(timeSpec : string, customPadding? : number) : void; //inconsistent type: void -> Stave addTrebleGlyph() : Stave; draw() : void; @@ -859,7 +862,7 @@ declare namespace Vex { } namespace StaveConnector { - const enum type { SINGLE_RIGHT = 0, SINGLE_LEFT = 1, SINGLE = 1, DOUBLE = 2, BRACE = 3, BRACKET = 4, BOLD_DOUBLE_LEFT = 5, BOLD_DOUBLE_RIGHT = 6, THIN_DOUBLE = 7 } + const enum type { SINGLE_RIGHT = 0, SINGLE_LEFT = 1, SINGLE = 1, DOUBLE = 2, BRACE = 3, BRACKET = 4, BOLD_DOUBLE_LEFT = 5, BOLD_DOUBLE_RIGHT = 6, THIN_DOUBLE = 7, NONE = 8 } } class StaveHairpin { @@ -907,6 +910,11 @@ declare namespace Vex { addEndModifier() : void; } + namespace StaveModifier { + // @see https://github.com/0xfe/vexflow/blob/master/src/stavemodifier.js#L9 + const enum Position { LEFT = 1, RIGHT = 2, ABOVE = 3, BELOW = 4, BEGIN = 5, END = 6 } + } + class StaveNote extends StemmableNote { //TODO remove the following lines once TypeScript allows subclass overrides with type changes and/or inconsistencies mentioned below are fixed buildStem() : StemmableNote; @@ -1009,10 +1017,25 @@ declare namespace Vex { } class StaveTie { - constructor(notes : {first_note: Note, last_note: Note, first_indices : number[], last_indices : number[]}, text? : string); + /** + * @see https://github.com/0xfe/vexflow/blob/master/src/stavetie.js#L12 + * + * Notes is a struct that has: + * + * { + * first_note: Note, + * last_note: Note, + * first_indices: [n1, n2, n3], + * last_indices: [n1, n2, n3] + * } + * All properties are optional, since ties can span line breaks in which case + * two ties can be used, each with either "first_note" or "last_note" missing. + * + **/ + constructor(notes : {first_note? : Note, last_note? : Note, first_indices? : number[], last_indices? : number[]}, text? : string); setContext(context : IRenderContext) : StaveTie; setFont(font : {family : string, size : number, weight : string}) : StaveTie; - setNotes(notes : {first_note: Note, last_note: Note, first_indices : number[], last_indices : number[]}) : StaveTie; + setNotes(notes : {first_note? : Note, last_note? : Note, first_indices? : number[], last_indices? : number[]}) : StaveTie; isPartial() : boolean; renderTie(params : {first_ys : number[], last_ys : number[], last_x_px : number, first_x_px : number, direction : number}) : void; renderText(first_x_px : number, last_x_px : number) : void; @@ -1335,7 +1358,7 @@ declare namespace Vex { } class Tuplet { - constructor(notes : StaveNote[], options : {num_notes? : number, beats_occupied? : number}); + constructor(notes : StaveNote[], options? : {num_notes? : number, beats_occupied? : number}); attach() : void; detach() : void; setContext(context : IRenderContext) : Tuplet; diff --git a/types/vexflow/tsconfig.json b/types/vexflow/tsconfig.json index 6a5a852ee3..9f7633fe2e 100644 --- a/types/vexflow/tsconfig.json +++ b/types/vexflow/tsconfig.json @@ -20,4 +20,4 @@ "index.d.ts", "vexflow-tests.ts" ] -} \ No newline at end of file +} From 54f335248d59ff87a4047a78979042836400df0b Mon Sep 17 00:00:00 2001 From: Pat Sissons Date: Thu, 20 Apr 2017 11:15:56 -0700 Subject: [PATCH 57/90] Cleaning up both react transition group type definitions (#15701) * updating both transition group type definitions this patch makes the type definitions more consistent with naming and react usage conventions. additionally updating the version for react-addons-transition-group to 15.0 * adjusting naming of props to be better aligned with the react namespace. This will remove the React* prefix in favour of allowing react namespace access like React.* This will also address breaking compatibility with existing type definitions. --- .../react-addons-css-transition-group/index.d.ts | 11 +++++------ types/react-addons-transition-group/index.d.ts | 15 +++++++++------ 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/types/react-addons-css-transition-group/index.d.ts b/types/react-addons-css-transition-group/index.d.ts index b74c38e264..b5feaf33df 100644 --- a/types/react-addons-css-transition-group/index.d.ts +++ b/types/react-addons-css-transition-group/index.d.ts @@ -5,7 +5,7 @@ // TypeScript Version: 2.1 import 'react-addons-transition-group'; -import { ComponentClass, TransitionGroupProps, CSSTransitionGroupProps } from 'react'; +import { ComponentClass, CSSTransitionGroupProps } from 'react'; declare module 'react' { interface CSSTransitionGroupTransitionName { @@ -17,7 +17,7 @@ declare module 'react' { appearActive?: string; } - export interface CSSTransitionGroupProps extends TransitionGroupProps { + export interface CSSTransitionGroupProps extends HTMLTransitionGroupProps { transitionName: string | CSSTransitionGroupTransitionName; transitionAppear?: boolean; transitionAppearTimeout?: number; @@ -28,7 +28,6 @@ declare module 'react' { } } -declare var CSSTransitionGroup: CSSTransitionGroup; -type CSSTransitionGroup = ComponentClass; -export = CSSTransitionGroup; - +declare var ReactCSSTransitionGroup: ReactCSSTransitionGroup; +type ReactCSSTransitionGroup = ComponentClass; +export = ReactCSSTransitionGroup; diff --git a/types/react-addons-transition-group/index.d.ts b/types/react-addons-transition-group/index.d.ts index bfadb6850c..a4ca108b48 100644 --- a/types/react-addons-transition-group/index.d.ts +++ b/types/react-addons-transition-group/index.d.ts @@ -1,18 +1,21 @@ -// Type definitions for React (react-addons-transition-group) 0.14 +// Type definitions for React (react-addons-transition-group) 15.0 // Project: http://facebook.github.io/react/ // Definitions by: Asana , AssureSign , Microsoft // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.1 -import { ReactElement, ComponentClass, ReactType, TransitionGroupProps } from 'react'; +import { ComponentClass, TransitionGroupProps } from 'react'; declare module 'react' { - export interface TransitionGroupProps extends HTMLAttributes<{}> { + export interface HTMLTransitionGroupProps extends HTMLAttributes { component?: ReactType; - className?: string; childFactory?: (child: ReactElement) => ReactElement; } + + export interface TransitionGroupProps extends HTMLTransitionGroupProps { + } } -declare var ReactCSSTransitionGroup : ComponentClass; -export = ReactCSSTransitionGroup; +declare var ReactTransitionGroup: ReactTransitionGroup; +type ReactTransitionGroup = ComponentClass; +export = ReactTransitionGroup; From 677e0ac51116dba01f9e98986a41b0e17aa39c9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Forja?= Date: Thu, 20 Apr 2017 19:16:42 +0100 Subject: [PATCH 58/90] Changed cuid to a variable and added slug method to it. (#15793) * Changed cuid to a variable and added slug method to it. * Reverted change --- types/cuid/cuid-tests.ts | 5 +++-- types/cuid/index.d.ts | 13 ++++++++----- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/types/cuid/cuid-tests.ts b/types/cuid/cuid-tests.ts index 82defb5fae..7ce182bae6 100644 --- a/types/cuid/cuid-tests.ts +++ b/types/cuid/cuid-tests.ts @@ -1,4 +1,5 @@ -import cuid = require('cuid') +import cuid = require('cuid'); -var result: string = cuid(); \ No newline at end of file +var cuidResult: string = cuid(); +var slugResult: string = cuid.slug(); diff --git a/types/cuid/index.d.ts b/types/cuid/index.d.ts index d7979eefcd..a7ee33e7b0 100644 --- a/types/cuid/index.d.ts +++ b/types/cuid/index.d.ts @@ -1,9 +1,12 @@ -// Type definitions for cuid +// Type definitions for cuid v1.3.8 // Project: https://github.com/ericelliott/cuid -// Definitions by: Dave Keen +// Definitions by: Dave Keen , João Forja // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +interface CUID { + (): string; + slug: () => string; +} +declare var cuid: CUID; -declare function cuid(): string; - -export = cuid +export = cuid; \ No newline at end of file From 7bdbb4cdc866c25f4736d04008ddbf023833236a Mon Sep 17 00:00:00 2001 From: Nick Redmond Date: Thu, 20 Apr 2017 11:15:56 -0700 Subject: [PATCH 59/90] react-native: Update PermissionsAndroid types --- types/react-native/index.d.ts | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/types/react-native/index.d.ts b/types/react-native/index.d.ts index 6080851f38..3cf16334d5 100644 --- a/types/react-native/index.d.ts +++ b/types/react-native/index.d.ts @@ -7016,28 +7016,42 @@ export type Permission = "android.permission.READ_EXTERNAL_STORAGE" | "android.permission.WRITE_EXTERNAL_STORAGE" +export type PermissionStatus = "granted" | "denied" | "never_ask_again" + export interface PermissionsAndroidStatic { + /** + * A list of permission results that are returned + */ + RESULTS: {[key: string]: PermissionStatus} /** * A list of specified "dangerous" permissions that require prompting the user */ PERMISSIONS: {[key: string]: Permission} new(): PermissionsAndroidStatic /** - * Returns a promise resolving to a boolean value as to whether the specified - * permissions has been granted + * Deprecated */ checkPermission(permission: Permission): Promise + /** + * Returns a promise resolving to a boolean value as to whether the specified + * permissions has been granted + */ + check(permission: Permission): Promise + /** + * Deprecated + */ + requestPermission(permission: Permission, rationale?: Rationale): Promise /** * Prompts the user to enable a permission and returns a promise resolving to a - * boolean value indicating whether the user allowed or denied the request + * string value indicating whether the user allowed or denied the request * * If the optional rationale argument is included (which is an object with a - * `title` and `message`), this function checks with the OS whether it is - * necessary to show a dialog explaining why the permission is needed + * title and message), this function checks with the OS whether it is necessary + * to show a dialog explaining why the permission is needed * (https://developer.android.com/training/permissions/requesting.html#explain) * and then shows the system permission dialog */ - requestPermission(permission: Permission, rationale?: Rationale): Promise + request(permission: Permission, rationale?: Rationale): Promise } export interface PushNotificationPermissions { From 6389fb31717400b3a2a1da009a42c78dc478f502 Mon Sep 17 00:00:00 2001 From: Brendan Abolivier Date: Thu, 20 Apr 2017 20:33:30 +0200 Subject: [PATCH 60/90] Changed optional property to required property (#15820) --- types/sequelize/index.d.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/types/sequelize/index.d.ts b/types/sequelize/index.d.ts index eefdfa9c13..d94892170a 100644 --- a/types/sequelize/index.d.ts +++ b/types/sequelize/index.d.ts @@ -1,6 +1,6 @@ // Type definitions for Sequelize 4.0.0 // Project: http://sequelizejs.com -// Definitions by: samuelneff , Peter Harris , Ivan Drinchev +// Definitions by: samuelneff , Peter Harris , Ivan Drinchev , Brendan Abolivier // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.2 @@ -4329,7 +4329,7 @@ declare namespace sequelize { /** * If this column references another table, provide it here as a Model, or a string */ - model?: string | Model; + model: string | Model; /** * The column of the foreign table that this column references From 8595416269f3990df0df5579c47a0be73dfa2ce8 Mon Sep 17 00:00:00 2001 From: Dan Vanderkam Date: Thu, 20 Apr 2017 14:34:52 -0400 Subject: [PATCH 61/90] Use dtslint for Lodash map and add pluck variant (#15574) --- types/lodash/index.d.ts | 70 +++++++++++++++++++++------ types/lodash/lodash-tests.ts | 92 ++++++++++++++++++------------------ 2 files changed, 101 insertions(+), 61 deletions(-) diff --git a/types/lodash/index.d.ts b/types/lodash/index.d.ts index d0df1f9529..6412570fc7 100644 --- a/types/lodash/index.d.ts +++ b/types/lodash/index.d.ts @@ -5654,7 +5654,7 @@ declare namespace _ { //_.zipObject interface LoDashStatic { /** - * This method is like _.fromPairs except that it accepts two arrays, one of property + * This method is like _.fromPairs except that it accepts two arrays, one of property * identifiers and one of corresponding values. * * @param props The property names. @@ -8415,22 +8415,39 @@ declare namespace _ { */ map( collection: List, - iteratee?: ListIterator + iteratee: ListIterator ): TResult[]; + /** + * @see _.map + */ + map(collection: List): T[]; + /** * @see _.map */ map( collection: Dictionary, - iteratee?: DictionaryIterator + iteratee: DictionaryIterator ): TResult[]; + /** @see _.map */ + map( + collection: Dictionary, + iteratee: K + ): T[K][]; + + /** @see _.map */ + map(collection: Dictionary): T[]; + map( collection: NumericDictionary, iteratee?: NumericDictionaryIterator ): TResult[]; + /** @see _.map */ + map(collection: List, iteratee: K): T[K][]; + /** * @see _.map */ @@ -8453,21 +8470,29 @@ declare namespace _ { * @see _.map */ map( - iteratee?: ListIterator + iteratee: ListIterator ): LoDashImplicitArrayWrapper; + /** + * @see _.map + */ + map(): LoDashImplicitArrayWrapper; + + /** @see _.map */ + map(iteratee: K): LoDashImplicitArrayWrapper; + /** * @see _.map */ map( - iteratee?: string + iteratee: string ): LoDashImplicitArrayWrapper; /** * @see _.map */ map( - iteratee?: TObject + iteratee: TObject ): LoDashImplicitArrayWrapper; } @@ -8476,21 +8501,27 @@ declare namespace _ { * @see _.map */ map( - iteratee?: ListIterator|DictionaryIterator + iteratee: ListIterator|DictionaryIterator ): LoDashImplicitArrayWrapper; + /** @see _.map */ + map(): LoDashImplicitArrayWrapper; + + /** @see _.map */ + map(iteratee: K): LoDashImplicitArrayWrapper; + /** * @see _.map */ map( - iteratee?: string + iteratee: string ): LoDashImplicitArrayWrapper; /** * @see _.map */ map( - iteratee?: TObject + iteratee: TObject ): LoDashImplicitArrayWrapper; } @@ -8499,21 +8530,27 @@ declare namespace _ { * @see _.map */ map( - iteratee?: ListIterator + iteratee: ListIterator ): LoDashExplicitArrayWrapper; + /** @see _.map */ + map(): LoDashExplicitArrayWrapper; + + /** @see _.map */ + map(iteratee: K): LoDashExplicitArrayWrapper; + /** * @see _.map */ map( - iteratee?: string + iteratee: string ): LoDashExplicitArrayWrapper; /** * @see _.map */ map( - iteratee?: TObject + iteratee: TObject ): LoDashExplicitArrayWrapper; } @@ -8522,21 +8559,24 @@ declare namespace _ { * @see _.map */ map( - iteratee?: ListIterator|DictionaryIterator + iteratee: ListIterator|DictionaryIterator ): LoDashExplicitArrayWrapper; + /** @see _.map */ + map(): LoDashExplicitArrayWrapper; + /** * @see _.map */ map( - iteratee?: string + iteratee: string ): LoDashExplicitArrayWrapper; /** * @see _.map */ map( - iteratee?: TObject + iteratee: TObject ): LoDashExplicitArrayWrapper; } diff --git a/types/lodash/lodash-tests.ts b/types/lodash/lodash-tests.ts index 470bb1338c..af30a416d6 100644 --- a/types/lodash/lodash-tests.ts +++ b/types/lodash/lodash-tests.ts @@ -4591,75 +4591,75 @@ namespace TestMap { let dictionaryIterator: (value: number, key: string, collection: _.Dictionary) => TResult; { - let result: TResult[]; + _.map(array); // $ExpectType number[] + _.map(array, listIterator); // $ExpectType TResult[] - result = _.map(array); - result = _.map(array, listIterator); - result = _.map(array, ''); + _.map(list); // $ExpectType number[] + _.map(list, listIterator); // $ExpectType TResult[] - result = _.map(list); - result = _.map(list, listIterator); - result = _.map(list, ''); - - result = _.map(dictionary); - result = _.map(dictionary, dictionaryIterator); - result = _.map(dictionary, ''); + _.map(dictionary); // $ExpectType number[] + _.map(dictionary, dictionaryIterator); // $ExpectType TResult[] } { - let result: boolean[]; - - result = _.map(array, {}); - result = _.map(list, {}); - result = _.map(dictionary, {}); + // _.matches iteratee shorthand. + _.map(array, {}); // $ExpectType boolean[] + _.map(list, {}); // $ExpectType boolean[] + _.map(dictionary, {}); // $ExpectType boolean[] } { - let result: _.LoDashImplicitArrayWrapper; + _(array).map().value(); // $ExpectType number[] + _(array).map(listIterator).value(); // $ExpectType TResult[] - result = _(array).map(); - result = _(array).map(listIterator); - result = _(array).map(''); + _(list).map().value(); // $ExpectType number[] + _(list).map(listIterator).value(); // $ExpectType TResult[] - result = _(list).map(); - result = _(list).map(listIterator); - result = _(list).map(''); - - result = _(dictionary).map(); - result = _(dictionary).map(dictionaryIterator); - result = _(dictionary).map(''); + _(dictionary).map().value(); // $ExpectType number[] + _(dictionary).map(dictionaryIterator).value(); // $ExpectType TResult[] } { - let result: _.LoDashImplicitArrayWrapper; - - result = _(array).map<{}>({}); - result = _(list).map<{}>({}); - result = _(dictionary).map<{}>({}); + _(array).map({}).value(); // $ExpectType boolean[] + _(list).map({}).value(); // $ExpectType boolean[] + _(dictionary).map({}).value(); // $ExpectType boolean[] } { - let result: _.LoDashExplicitArrayWrapper; + _(array).chain().map().value(); // $ExpectType number[] + _(array).chain().map(listIterator).value(); // $ExpectType TResult[] - result = _(array).chain().map(); - result = _(array).chain().map(listIterator); - result = _(array).chain().map(''); + _(list).chain().map().value(); // $ExpectType number[] + _(list).chain().map(listIterator).value(); // $ExpectType TResult[] - result = _(list).chain().map(); - result = _(list).chain().map(listIterator); - result = _(list).chain().map(''); - - result = _(dictionary).chain().map(); - result = _(dictionary).chain().map(dictionaryIterator); - result = _(dictionary).chain().map(''); + _(dictionary).chain().map().value(); // $ExpectType number[] + _(dictionary).chain().map(dictionaryIterator).value(); // $ExpectType TResult[] } { let result: _.LoDashExplicitArrayWrapper; - result = _(array).chain().map<{}>({}); - result = _(list).chain().map<{}>({}); - result = _(dictionary).chain().map<{}>({}); + result = _(array).chain().map({}); + result = _(list).chain().map({}); + result = _(dictionary).chain().map({}); + } + + { + // "pluck"-style map. + _.map([{a: 1}, {a: 2}], 'a'); // $ExpectType number[] + _.map({a: {b: 'str'}, c: {b: 1}}, 'b'); // ExpectType (string | number)[] + + _([{a: 1}, {a: 2}]).map('a').value(); // $ExpectType number[] + _.chain([{a: 1}, {a: 2}]).map('a').value(); // $ExpectType number[] + _([{a: 1}, {a: 2}]).chain().map('a').value(); // $ExpectType number[] + } + + { + // $ExpectType number[] + _.map(['a', 'b', 'c'], ( + v, // $ExpectType string + k // $ExpectType number + ) => k); } } From 814efe633e2af13701f4f302e94d312bc5c4e560 Mon Sep 17 00:00:00 2001 From: Nick Redmond Date: Tue, 18 Apr 2017 10:18:02 -0700 Subject: [PATCH 62/90] react-native: PushNotificationIOS.getInitialNotification should return a Promise --- types/react-native/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/react-native/index.d.ts b/types/react-native/index.d.ts index 6080851f38..de0f5f8f9b 100644 --- a/types/react-native/index.d.ts +++ b/types/react-native/index.d.ts @@ -7211,7 +7211,7 @@ export interface PushNotificationIOSStatic { * This method returns a promise that resolves to either the notification * object if the app was launched by a push notification, or `null` otherwise. */ - getInitialNotification(): PushNotification + getInitialNotification(): Promise } export interface SettingsStatic { From 42c26dbe9c91724a2714f96a0b366598d758cc3a Mon Sep 17 00:00:00 2001 From: Ben Dixon Date: Thu, 20 Apr 2017 13:36:10 -0500 Subject: [PATCH 63/90] fixing the typings for selenium-webdriver/testing (#15854) --- types/selenium-webdriver/index.d.ts | 3 +- types/selenium-webdriver/test/index.ts | 27 -------- types/selenium-webdriver/test/testing.ts | 46 +++++++++++++ types/selenium-webdriver/testing.d.ts | 85 ++++++++++++++++++------ types/selenium-webdriver/tsconfig.json | 3 +- 5 files changed, 116 insertions(+), 48 deletions(-) create mode 100644 types/selenium-webdriver/test/testing.ts diff --git a/types/selenium-webdriver/index.d.ts b/types/selenium-webdriver/index.d.ts index 316b242b28..c8d0c9b2de 100644 --- a/types/selenium-webdriver/index.d.ts +++ b/types/selenium-webdriver/index.d.ts @@ -3,7 +3,8 @@ // Definitions by: Bill Armstrong , // Yuki Kokubun , // Craig Nishina , -// Simon Gellis +// Simon Gellis , +// Ben Dixon // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.1 diff --git a/types/selenium-webdriver/test/index.ts b/types/selenium-webdriver/test/index.ts index 5d4f8e8b4e..c7bae6700c 100644 --- a/types/selenium-webdriver/test/index.ts +++ b/types/selenium-webdriver/test/index.ts @@ -959,30 +959,3 @@ async function TestAsyncAwaitable() { let thenable: webdriver.promise.Promise = new webdriver.promise.Promise((resolve, reject) => resolve('foo')); let str: string = await thenable; } - -function TestTestingModule() { - testing.before(() => { - }); - - testing.beforeEach(() => { - }); - - testing.describe('My test suite', () => { - testing.it('My test', () => { - }); - - testing.iit('My exclusive test.', () => { - }); - }); - - testing.xdescribe('My disabled suite', () => { - testing.xit('My disabled test.', () => { - }); - }); - - testing.after(() => { - }); - - testing.afterEach(() => { - }); -} diff --git a/types/selenium-webdriver/test/testing.ts b/types/selenium-webdriver/test/testing.ts new file mode 100644 index 0000000000..2d20182119 --- /dev/null +++ b/types/selenium-webdriver/test/testing.ts @@ -0,0 +1,46 @@ +import { Builder, By, until, WebDriver } from 'selenium-webdriver'; +import { describe, before, after, it, ignore, xdescribe, xit, beforeEach, afterEach, controlFlow } from 'selenium-webdriver/testing'; + +describe('Google Search', () => { + let driver: WebDriver; + + before(() => { + driver = new Builder().forBrowser('firefox').build(); + }); + + beforeEach(() => { }); + + after(() => { + driver.quit(); + }); + + afterEach(() => { }); + + it('should append query to title', () => { + const flow = controlFlow(); + flow.execute(() => { + driver.get('http://www.google.com/ncr'); + driver.findElement(By.name('q')).sendKeys('webdriver'); + driver.findElement(By.name('btnG')).click(); + driver.wait(until.titleIs('webdriver - Google Search'), 1000); + }); + }); +}); + +ignore(maybe).it('is flaky', () => { + if (Math.random() < 0.5) throw Error(); +}); + +function maybe() { return Math.random() < 0.5; } + +describe.only('just this', () => { + it.only('just this too', () => { }); +}); + +describe.skip('not this', () => { + it.skip('not this either', () => { }); +}); + +xdescribe('not this', () => { + xit('not this either', () => { }); +}); diff --git a/types/selenium-webdriver/testing.d.ts b/types/selenium-webdriver/testing.d.ts index 34d72e4627..85bf087df6 100644 --- a/types/selenium-webdriver/testing.d.ts +++ b/types/selenium-webdriver/testing.d.ts @@ -1,9 +1,30 @@ -/** -* Registers a new test suite. -* @param name The suite name. -* @param fn The suite function, or {@code undefined} to define a pending test suite. -*/ -export function describe(name: string, fn: Function): void; +import { promise } from './index'; +import * as Testing from './testing'; + +export const describe: { + /** + * Registers a new test suite. + * @param name The suite name. + * @param fn The suite function, or {@code undefined} to define a pending test suite. + */ + (name: string, fn: Function): void; + + /** + * An alias for {@link #describe()} that marks the suite as exclusive, + * suppressing all other test suites. + * @param {string} name The suite name. + * @param {function()=} opt_fn The suite function, or `undefined` to define + * a pending test suite. + */ + only(name: string, fn: Function): void; + + /** + * Defines a suppressed test suite. + * @param name The suite name. + * @param fn The suite function, or {@code undefined} to define a pending test suite. + */ + skip(name: string, fn: Function): void; +}; /** * Defines a suppressed test suite. @@ -36,20 +57,30 @@ export function before(fn: Function): void; */ export function beforeEach(fn: Function): void; -/** - * Add a test to the current suite. - * @param name The test name. - * @param fn The test function, or {@code undefined} to define a pending test case. - */ -export function it(name: string, fn: Function): void; +export const it: { + /** + * Add a test to the current suite. + * @param name The test name. + * @param fn The test function, or {@code undefined} to define a pending test case. + */ + (name: string, fn: Function): void; -/** - * An alias for {@link #it()} that flags the test as the only one that should - * be run within the current suite. - * @param name The test name. - * @param fn The test function, or {@code undefined} to define a pending test case. - */ -export function iit(name: string, fn: Function): void; + /** + * An alias for {@link #it()} that flags the test as the only one that should + * be run within the current suite. + * @param {string} name The test name. + * @param {function()=} opt_fn The test function, or `undefined` to define + * a pending test case. + */ + only(name: string, fn: Function): void; + + /** + * Adds a test to the current suite while suppressing it so it is not run. + * @param name The test name. + * @param fn The test function, or {@code undefined} to define a pending test case. + */ + skip(name: string, fn: Function): void; +} /** * Adds a test to the current suite while suppressing it so it is not run. @@ -57,3 +88,19 @@ export function iit(name: string, fn: Function): void; * @param fn The test function, or {@code undefined} to define a pending test case. */ export function xit(name: string, fn: Function): void; + +/** + * @return {!promise.ControlFlow} the control flow instance used by this module + * to coordinate test actions. + */ +export function controlFlow(): promise.ControlFlow; + +/** + * Ignores the test chained to this function if the provided predicate returns + * true. + * @param {function(): boolean} predicateFn A predicate to call to determine + * if the test should be suppressed. This function MUST be synchronous. + * @return {!Object} An object with wrapped versions of {@link #it()} and + * {@link #describe()} that ignore tests as indicated by the predicate. + */ +export function ignore(predicateFn: () => boolean): typeof Testing; diff --git a/types/selenium-webdriver/tsconfig.json b/types/selenium-webdriver/tsconfig.json index a72458a455..7d73075252 100644 --- a/types/selenium-webdriver/tsconfig.json +++ b/types/selenium-webdriver/tsconfig.json @@ -30,6 +30,7 @@ "test/index.ts", "test/chrome.ts", "test/firefox.ts", - "test/remote.ts" + "test/remote.ts", + "test/testing.ts" ] } From d2ea87560e39c2717484700d4f39f56861e3b344 Mon Sep 17 00:00:00 2001 From: Ben Southgate Date: Thu, 20 Apr 2017 14:43:06 -0400 Subject: [PATCH 64/90] swagger-schema-official: fix Schema.additionalProperties (boolean -> Schema) (#15866) * fix: Schema.additionalProperties (boolean -> Schema) * chore: update author --- types/swagger-schema-official/index.d.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/types/swagger-schema-official/index.d.ts b/types/swagger-schema-official/index.d.ts index 903ecc8ffb..3a70e456a7 100644 --- a/types/swagger-schema-official/index.d.ts +++ b/types/swagger-schema-official/index.d.ts @@ -1,6 +1,6 @@ // Type definitions for swagger-schema-official 2.0 // Project: http://swagger.io/specification/ -// Definitions by: Mohsen Azimi +// Definitions by: Mohsen Azimi , Ben Southgate // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped export interface Info { @@ -140,7 +140,7 @@ export interface BaseSchema { export interface Schema extends BaseSchema { $ref?: string; allOf?: Schema[]; - additionalProperties?: boolean; + additionalProperties?: Schema; properties?: {[propertyName: string]: Schema}; discriminator?: string; readOnly?: boolean; From d5ab4962c7717a36f299ecb947c9b3bd70705ea3 Mon Sep 17 00:00:00 2001 From: mikezilla Date: Thu, 20 Apr 2017 12:43:44 -0600 Subject: [PATCH 65/90] Update dotSize option to match code/documentation (#15869) --- types/signature_pad/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/signature_pad/index.d.ts b/types/signature_pad/index.d.ts index d40b497a29..87fd9c6a57 100644 --- a/types/signature_pad/index.d.ts +++ b/types/signature_pad/index.d.ts @@ -46,7 +46,7 @@ declare namespace SignaturePad { /** * (float or function) Radius of a single dot. */ - dotSize?: Function; + dotSize?: number | Function; /** * (string) Color used to draw the lines. Can be any color format accepted by context.fillStyle. * Defaults to "black". From f77f0a912d7d0a3c4033c12c6f3f8550e9b50ea4 Mon Sep 17 00:00:00 2001 From: Josh Toft Date: Thu, 20 Apr 2017 11:48:24 -0700 Subject: [PATCH 66/90] Add markdown-it-anchor (#15878) --- types/markdown-it-anchor/index.d.ts | 30 +++++++++++++++++++ .../markdown-it-anchor-tests.ts | 21 +++++++++++++ types/markdown-it-anchor/tsconfig.json | 22 ++++++++++++++ types/markdown-it-anchor/tslint.json | 1 + 4 files changed, 74 insertions(+) create mode 100644 types/markdown-it-anchor/index.d.ts create mode 100644 types/markdown-it-anchor/markdown-it-anchor-tests.ts create mode 100644 types/markdown-it-anchor/tsconfig.json create mode 100644 types/markdown-it-anchor/tslint.json diff --git a/types/markdown-it-anchor/index.d.ts b/types/markdown-it-anchor/index.d.ts new file mode 100644 index 0000000000..93bcdac9f8 --- /dev/null +++ b/types/markdown-it-anchor/index.d.ts @@ -0,0 +1,30 @@ +// Type definitions for MarkdownItAnchor (markdown-it-anchor) 4.0 +// Project: https://github.com/valeriangalliat/markdown-it-anchor +// Definitions by: Josh Toft +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.2 + +import {MarkdownIt, Core, Token} from 'markdown-it'; + +declare namespace anchor { + interface AnchorInfo { + slug: string; + title: string; + } + + interface AnchorOptions { + level?: number; + slugify?(str: string): string; + permalink?: boolean; + renderPermalink?(slug: string, opts: AnchorOptions, state: Core, idx: number): void; + permalinkClass?: string; + permalinkSymbol?: string; + permalinkBefore?: boolean; + permalinkHref?(slug: string): string; + callback?(token: Token, anchor_info: AnchorInfo): void; + } +} + +declare function anchor(md: MarkdownIt, opts: anchor.AnchorOptions): void; + +export = anchor; diff --git a/types/markdown-it-anchor/markdown-it-anchor-tests.ts b/types/markdown-it-anchor/markdown-it-anchor-tests.ts new file mode 100644 index 0000000000..3570ba764b --- /dev/null +++ b/types/markdown-it-anchor/markdown-it-anchor-tests.ts @@ -0,0 +1,21 @@ +import * as MarkdownIt from "markdown-it"; +import anchor = require("markdown-it-anchor"); + +const md = new MarkdownIt(); + +md.use(anchor, { + level: 1, + // slugify: string => string, + permalink: false, + // renderPermalink: (slug, opts, state, permalink) => {}, + permalinkClass: 'header-anchor', + permalinkSymbol: '¶', + permalinkBefore: false +}); + +const src = `# First header +Lorem ipsum. +## Next section! +This is totaly awesome.`; + +md.render(src); diff --git a/types/markdown-it-anchor/tsconfig.json b/types/markdown-it-anchor/tsconfig.json new file mode 100644 index 0000000000..fde07bc890 --- /dev/null +++ b/types/markdown-it-anchor/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "markdown-it-anchor-tests.ts" + ] +} diff --git a/types/markdown-it-anchor/tslint.json b/types/markdown-it-anchor/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/markdown-it-anchor/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" } From 6b2ce48a8e0a701d690c771d23d3e9ede21a7e05 Mon Sep 17 00:00:00 2001 From: Roman Jurkov Date: Thu, 20 Apr 2017 14:49:27 -0400 Subject: [PATCH 67/90] issue 15880 added unless method for @types/koa-jwt (#15881) * issue 15880 added unless method for @types/koa-jwt added back tslint that was removed by mistake * fixed compile error, and added UnlessOptions * removed booleanType and added ctx to custom method --- types/koa-jwt/index.d.ts | 14 +++++++++++++- types/koa-jwt/koa-jwt-tests.ts | 4 ++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/types/koa-jwt/index.d.ts b/types/koa-jwt/index.d.ts index a355d44ce2..4c123ff4a8 100644 --- a/types/koa-jwt/index.d.ts +++ b/types/koa-jwt/index.d.ts @@ -7,7 +7,7 @@ import Koa = require("koa"); export = jwt; -declare function jwt(options: jwt.Options): Koa.Middleware; +declare function jwt(options: jwt.Options): jwt.Middleware; declare namespace jwt { interface Options { @@ -18,4 +18,16 @@ declare namespace jwt { cookie?: string; debug?: boolean; } + + interface UnlessOptions { + method?: string | string[]; + path?: string | string[] | RegExp | RegExp[]; + ext?: string| string[]; + custom?(ctx?: Koa.Context): boolean; + useOriginalUrl?: boolean; + } + + type Middleware = Koa.Middleware & { + unless(options?: jwt.UnlessOptions): any; + }; } diff --git a/types/koa-jwt/koa-jwt-tests.ts b/types/koa-jwt/koa-jwt-tests.ts index 88bd75e739..646bb6d826 100644 --- a/types/koa-jwt/koa-jwt-tests.ts +++ b/types/koa-jwt/koa-jwt-tests.ts @@ -11,3 +11,7 @@ app.use(jwt({ secret: 'some-secret-key', key: 'auth' })); + +app.use(jwt({ + secret: 'some-secret-key' +}).unless({method: 'OPTIONS'})); From c54350e7636ead63bad6b71431d8b426597dde80 Mon Sep 17 00:00:00 2001 From: Karoline Date: Thu, 20 Apr 2017 20:53:54 +0200 Subject: [PATCH 68/90] Made strictNullChecks true (#15890) --- types/seneca/index.d.ts | 4 ++-- types/seneca/tsconfig.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/types/seneca/index.d.ts b/types/seneca/index.d.ts index 7db8f83b6c..b03e1b4bf5 100644 --- a/types/seneca/index.d.ts +++ b/types/seneca/index.d.ts @@ -156,8 +156,8 @@ declare module "seneca" { type Pattern = string | MinimalPattern; type GlobalErrorHandler = (error: Error) => void; - type AddCallback = (msg: any, respond: (error: Error, msg: any) => void) => void; - type ActCallback = (error: Error, result: any) => void; + type AddCallback = (msg: any, respond: (error: Error | null, msg?: any) => void) => void; + type ActCallback = (error: Error | null, result?: any) => void; type CloseCallback = (optional: any, done: (error: Error) => void) => void; type DatabaseID = string; type EntitySaveCallback = (error: Error, result: any) => void; diff --git a/types/seneca/tsconfig.json b/types/seneca/tsconfig.json index 506ebb0a97..735919a1c8 100644 --- a/types/seneca/tsconfig.json +++ b/types/seneca/tsconfig.json @@ -7,7 +7,7 @@ ], "noImplicitAny": true, "noImplicitThis": true, - "strictNullChecks": false, + "strictNullChecks": true, "baseUrl": "../", "typeRoots": [ "../" From 789f03ed80442a697fa05eb3ff2ac668b47c37f5 Mon Sep 17 00:00:00 2001 From: Vito Date: Thu, 20 Apr 2017 14:54:28 -0400 Subject: [PATCH 69/90] add undocumented prop instanceId to react-select (#15891) --- types/react-select/index.d.ts | 5 +++++ types/react-select/react-select-tests.tsx | 1 + 2 files changed, 6 insertions(+) diff --git a/types/react-select/index.d.ts b/types/react-select/index.d.ts index 2ce34cf2b8..361dcfecc2 100644 --- a/types/react-select/index.d.ts +++ b/types/react-select/index.d.ts @@ -173,6 +173,11 @@ declare namespace ReactSelectClass { * renders a custom input */ inputRenderer?: (props: Object) => React.ReactElement; + /** + * allows for synchronization of component id's on server and client. + * @see https://github.com/JedWatson/react-select/pull/1105 + */ + instanceId?: string; /** * whether the Select is loading externally or not (such as options being loaded). * if true, a loading spinner will be shown at the right side. diff --git a/types/react-select/react-select-tests.tsx b/types/react-select/react-select-tests.tsx index 10a3f51833..972a1dacdc 100644 --- a/types/react-select/react-select-tests.tsx +++ b/types/react-select/react-select-tests.tsx @@ -107,6 +107,7 @@ class SelectTest extends React.Component, {}> { escapeClearsValue: true, filterOptions: filterOptions, ignoreAccents: true, + instanceId: 'custom-instance-id', joinValues: false, matchPos: "any", matchProp: "any", From 1ce0725a6c1e4a136d6dbe778f13bd67eccd47f2 Mon Sep 17 00:00:00 2001 From: Ali Taheri Moghaddar Date: Fri, 21 Apr 2017 01:00:03 +0430 Subject: [PATCH 70/90] [material-ui] Improve DatePicker types (#15886) * Improve DatePicker types * Add DatePickerDialog to direct imports * Add @alitaheri as maintainer --- types/material-ui/index.d.ts | 28 +++++++++++++++++++++---- types/material-ui/material-ui-tests.tsx | 3 +-- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/types/material-ui/index.d.ts b/types/material-ui/index.d.ts index 017ff05765..b6919280d3 100644 --- a/types/material-ui/index.d.ts +++ b/types/material-ui/index.d.ts @@ -1,6 +1,6 @@ -// Type definitions for material-ui v0.17.1 +// Type definitions for material-ui v0.17.4 // Project: https://github.com/callemall/material-ui -// Definitions by: Nathan Brown , Oliver Herrmann , Igor Belagorudsky , Daniel Roth +// Definitions by: Nathan Brown , Igor Belagorudsky , Ali Taheri Moghaddar , Oliver Herrmann , Daniel Roth // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.2 @@ -531,6 +531,17 @@ declare namespace __MaterialUI { vertical: vertical; } + interface utils { + getWeekArray: (date: Date, firstDayOfWeek: number) => (Date | null)[][]; + getYear: (date: Date) => number; + setYear: (date: Date, year: number) => Date; + addDays: (date: Date, days: number) => Date; + addMonths: (date: Date, months: number) => Date; + addYears: (date: Date, years: number) => Date; + getFirstDayOfMonth: (date: Date) => Date; + monthDiff: (date1: Date, date2: Date) => number; + } + type corners = 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right'; type cornersAndCenter = 'bottom-center' | 'bottom-left' | 'bottom-right' | 'top-center' | 'top-left' | 'top-right'; } @@ -869,7 +880,7 @@ declare namespace __MaterialUI { namespace DatePicker { interface DatePickerProps { // is the element that get the 'other' properties - DateTimeFormat?: Intl.DateTimeFormat; + DateTimeFormat?: typeof Intl.DateTimeFormat; autoOk?: boolean; cancelLabel?: React.ReactNode; container?: "dialog" | "inline"; @@ -916,13 +927,14 @@ declare namespace __MaterialUI { underlineFocusStyle?: React.CSSProperties; underlineShow?: boolean; underlineStyle?: React.CSSProperties; + utils?: propTypes.utils; } export class DatePicker extends React.Component { } interface DatePickerDialogProps { // is the element that get the 'other' properties - DateTimeFormat?: Intl.DateTimeFormat; + DateTimeFormat?: typeof Intl.DateTimeFormat; animation?: React.ComponentClass; autoOk?: boolean; cancelLabel?: React.ReactNode; @@ -940,8 +952,11 @@ declare namespace __MaterialUI { onShow?: () => void; shouldDisableDate?: (day: Date) => boolean; style?: React.CSSProperties; + utils?: propTypes.utils; } export class DatePickerDialog extends React.Component { + public show(): void; + public dismiss(): void; } } @@ -2051,6 +2066,11 @@ declare module 'material-ui/DatePicker' { export default DatePicker; } +declare module 'material-ui/DatePicker/DatePickerDialog' { + export import DatePickerDialog = __MaterialUI.DatePicker.DatePickerDialog; + export default DatePickerDialog; +} + declare module 'material-ui/Dialog' { export import Dialog = __MaterialUI.Dialog; export default Dialog; diff --git a/types/material-ui/material-ui-tests.tsx b/types/material-ui/material-ui-tests.tsx index cf160761d9..d1a6397f42 100644 --- a/types/material-ui/material-ui-tests.tsx +++ b/types/material-ui/material-ui-tests.tsx @@ -1244,12 +1244,11 @@ const DatePickerExampleDisableDates = () => (
    ); -let DateTimeFormat = new Intl.DateTimeFormat('fr'); const DatePickerExampleInternational = () => (
    Date: Thu, 20 Apr 2017 17:50:09 -0400 Subject: [PATCH 71/90] Add support for ReadonlyArray to chain() method (#15892) * Add support for ReadonlyArray to chain() method * Update index.d.ts * Made plant method ReadonlyArray-aware as well * Update index.d.ts --- types/lodash/index.d.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/types/lodash/index.d.ts b/types/lodash/index.d.ts index 6412570fc7..22b2d6b9e1 100644 --- a/types/lodash/index.d.ts +++ b/types/lodash/index.d.ts @@ -5909,6 +5909,7 @@ declare namespace _ { chain(value: string): LoDashExplicitWrapper; chain(value: boolean): LoDashExplicitWrapper; chain(value: T[]): LoDashExplicitArrayWrapper; + chain(value: ReadonlyArray): LoDashExplicitArrayWrapper; chain(value: T): LoDashExplicitObjectWrapper; chain(value: any): LoDashExplicitWrapper; } @@ -6135,6 +6136,11 @@ declare namespace _ { * @see _.plant */ plant(value: T[]): LoDashImplicitArrayWrapper; + + /** + * @see _.plant + */ + plant(value: ReadonlyArray): LoDashImplicitArrayWrapper; /** * @see _.plant @@ -6172,6 +6178,11 @@ declare namespace _ { * @see _.plant */ plant(value: T[]): LoDashExplicitArrayWrapper; + + /** + * @see _.plant + */ + plant(value: ReadonlyArray): LoDashExplicitArrayWrapper; /** * @see _.plant From 1a688277d3f727c97583a73764c5d497a6f980c7 Mon Sep 17 00:00:00 2001 From: Jeffrey Young Date: Thu, 20 Apr 2017 17:51:11 -0400 Subject: [PATCH 72/90] downloadjs types added (#16032) * downloadjs types added * downloadjs inline types, remove unnecessary toString --- types/downloadjs/downloadjs-tests.ts | 12 ++++++++++++ types/downloadjs/index.d.ts | 10 ++++++++++ types/downloadjs/tsconfig.json | 23 +++++++++++++++++++++++ types/downloadjs/tslint.json | 3 +++ 4 files changed, 48 insertions(+) create mode 100644 types/downloadjs/downloadjs-tests.ts create mode 100644 types/downloadjs/index.d.ts create mode 100644 types/downloadjs/tsconfig.json create mode 100644 types/downloadjs/tslint.json diff --git a/types/downloadjs/downloadjs-tests.ts b/types/downloadjs/downloadjs-tests.ts new file mode 100644 index 0000000000..00bb5395ef --- /dev/null +++ b/types/downloadjs/downloadjs-tests.ts @@ -0,0 +1,12 @@ +import * as download from 'downloadjs'; + +download('hello world', 'dlText.txt', 'text/plain'); +download('data:text/plain,hello%20world', 'dlDataUrlText.txt', 'text/plain'); + +download(new Blob(['hello world']), 'dlTextBlob.txt', 'text/plain'); + +download('/robots.txt'); + +download(document.documentElement.outerHTML, 'dlHTML.html', 'text/html'); +download(new Blob(['hello world'.bold()]), 'dlHtmlBlob.html', 'text/html'); +download('/diff6.png'); diff --git a/types/downloadjs/index.d.ts b/types/downloadjs/index.d.ts new file mode 100644 index 0000000000..0379de8395 --- /dev/null +++ b/types/downloadjs/index.d.ts @@ -0,0 +1,10 @@ +// Type definitions for downloadjs 1.4 +// Project: http://danml.com/download.html +// Definitions by: cwmoo740 +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.2 + +declare namespace download { +} +declare function download(data: string | File | Blob, filename?: string, mimeType?: string): void; +export = download; diff --git a/types/downloadjs/tsconfig.json b/types/downloadjs/tsconfig.json new file mode 100644 index 0000000000..5ce76596d5 --- /dev/null +++ b/types/downloadjs/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6", + "dom" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "downloadjs-tests.ts" + ] +} diff --git a/types/downloadjs/tslint.json b/types/downloadjs/tslint.json new file mode 100644 index 0000000000..d88586e5bd --- /dev/null +++ b/types/downloadjs/tslint.json @@ -0,0 +1,3 @@ +{ + "extends": "dtslint/dt.json" +} From d25913eae313f9aa6f69a8eca5fadae3b8c1780a Mon Sep 17 00:00:00 2001 From: Michael Mrowetz Date: Thu, 20 Apr 2017 16:41:21 -0700 Subject: [PATCH 73/90] add types for 'bagpipes' (#15857) * add types for 'bagpipes.js' * fix typing feedback --- types/bagpipes/bagpipes-tests.ts | 100 +++++++++++++++++ types/bagpipes/index.d.ts | 177 +++++++++++++++++++++++++++++++ types/bagpipes/tsconfig.json | 22 ++++ types/bagpipes/tslint.json | 1 + 4 files changed, 300 insertions(+) create mode 100755 types/bagpipes/bagpipes-tests.ts create mode 100755 types/bagpipes/index.d.ts create mode 100755 types/bagpipes/tsconfig.json create mode 100755 types/bagpipes/tslint.json diff --git a/types/bagpipes/bagpipes-tests.ts b/types/bagpipes/bagpipes-tests.ts new file mode 100755 index 0000000000..af7dfa0a31 --- /dev/null +++ b/types/bagpipes/bagpipes-tests.ts @@ -0,0 +1,100 @@ +import * as Bagpipes from 'bagpipes'; + +// test `create` +Bagpipes.create({}); +Bagpipes.create({ CustomPipe: [] }); +Bagpipes.create({ CustomPipe: [] }, undefined); +Bagpipes.create({ CustomPipe: [] }, {}); + +// test `PipeDefs` Pipe Definitions Object +const perDefsMixed: Bagpipes.PipeDefMap = { + HelloWorld: [ + { emit: 'Hello, World!' }, + 'StringTypeDef' + ], + xxx: 'ddd' +}; +const pipesDefsEmpty: Bagpipes.PipeDefMap = {}; + +const pipesDefs: Bagpipes.PipeDefMap = { + _router: { + name: 'swagger_router', + mockMode: false, + mockControllersDirs: [ 'api/mocks' ], + controllersDirs: [ 'api/controllers' ] + }, + _swagger_validate: { + name: 'swagger_validator', + validateReponse: true + }, + swagger_controllers: [ + 'cors', + 'swagger_params_parser', + 'swagger_security', + '_swagger_validate', + 'express_compatibility', + '_router' + ] +}; + +// test `Config` object +const pipesConfigA: Bagpipes.Config = { + connectMiddlewareDirs: ['some_dir', 'ssssss'] +}; + +const pipesConfigempty: Bagpipes.Config = { }; + +const pipesConfigFull: Bagpipes.Config = { + connectMiddlewareDirs: ['test'], + userFittingsDirs: ['test'], + userViewsDirs: ['test'] +}; + +const pipesConfigFullEmpty: Bagpipes.Config = { + connectMiddlewareDirs: [], + userFittingsDirs: [], + userViewsDirs: [] +}; + +let pipesA = Bagpipes.create(perDefsMixed, { + connectMiddlewareDirs: ['some_dir', 'ssssss'], + swaggerNodeRunner: {} +}); +let pipeA = pipesA.getPipe('HelloWorld'); + +// log the output to standard out +pipeA.fit((context, cb) => { + cb(null, context); +}); + +pipesA.play(pipeA, {}); + +// test cb with err +const pipesEnty = Bagpipes.create({ + HelloWorld: [] +}, {}); + +// test fit a registered pipe and return error +const pipeErrTest = pipesEnty.pipes['any'].fit((context, cb) => { + cb(new Error("test err")); +}); +pipesEnty.play(pipeErrTest, {}); + +const fittingsC = ["xxxx", "aaa"].map((name) => { + let fittingDef = {} as Bagpipes.PipeDefMap; + fittingDef[name] = 'nothing'; + return fittingDef; +}); +const bagpipesC = Bagpipes.create({ fittings: fittingsC }); + +// test create with array of object literals +const pipeWithObj = [{ emit: 'something' }]; +const bagpipesD = Bagpipes.create({ objPipe: pipeWithObj }); +bagpipesD.play(bagpipesD.getPipe('objPipe'), {}); + +// Test full create +const userFittingsDirs = ['./fixtures/fittings']; +const pipeWithString = ['emit']; +let contextPlain = {}; +const bagpipesWithPipeAndFittings = Bagpipes.create({ myCustomPipe: pipeWithString }, { userFittingsDirs }); +bagpipesWithPipeAndFittings.play(bagpipesWithPipeAndFittings.getPipe('myCustomPipe'), contextPlain); diff --git a/types/bagpipes/index.d.ts b/types/bagpipes/index.d.ts new file mode 100755 index 0000000000..82a1fa32f4 --- /dev/null +++ b/types/bagpipes/index.d.ts @@ -0,0 +1,177 @@ +// Type definitions for bagpipes 0.1 +// Project: https://github.com/apigee-127/bagpipes +// Definitions by: Michael Mrowetz +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +interface FittingContext { + /** The input defined in the fitting definition + * (string, number, object, array) + */ + input: any; + /** Output to be delivered to the next fitting or client */ + output: any; + [prop: string]: any; +} + +/** + * Fitting types has pre-defined fittings `system` and `user` + * but can be any any string for custom types like `swagger` or `node-machine` + */ +type FittingType = "system" | "user" | string; + +interface FittingDef { + /** + * If type is omitted (as it must be for in-line usage), Bagpipes will + * first check the user fittings then the system fittings for the name and + * use the first fitting found. + * + * Thus be aware that if you define a fitting with the same name as a + * system one, your fitting will override it. + */ + type?: FittingType; + /** The name of the fitting of the type specified */ + name?: string; + /** Static values passed to the fitting during construction */ + config?: any; + /** Dynamic values passed to the fitting during execution */ + input?: any; + /** The name of the context key to which the output value is assigned */ + output?: any; + // allow other config settings + [prop: string]: any; +} + +/** + * Fitting Execution Function + * + * Will be called called when the `Pipe` it is contained it gets 'played' + */ +type Fitting = ( + context: FittingContext, + next: {(err: Error | null | undefined, res?: any): void}) => void; + +/** + * Fitting creation Function + * + * Executed during parsing + * @see {@link https://github.com/apigee-127/bagpipes#fittings|Docs} + * + * @param {Object} fittingDef Fitting Definition + */ +type FittingFactory = (fittingDef: FittingDef, bagpipes: any) => Fitting; + +/** + * Hashmap of `fittingType`s (the name of a fitting) and the + * `FittingFactory` functions used to create them + */ +interface FittingTypesMap { + [fittingType: string]: FittingFactory; +} + +/** The Pipe Definition */ +type PipeDef = any[] | string | FittingDef; + +/** Hashmap of Pipe Definitons */ +export interface PipeDefMap { + [name: string]: PipeDef; +} + +/** + * Bagpipes Instance (a collection of pipes) + * @see {@link https://github.com/apigee-127/bagpipes#pipes|Docs} + */ +export class Bagpipes { + /** + * Hashmap of `fittingType`s (the name of a fitting) and the + * `FittingFactory` functions used to create them + */ + fittingTypes: FittingTypesMap; + /** The pipes */ + pipes: { + [name: string]: Pipe; + }; + /** The `Bagpipes`' configuration */ + config: Config; + /** + * Creates a `Fitting` + * @throws {Error} Throws error if an invalid (not defined) fitting typ is used + * (can't find argument `fittingType` in `Bagpipes.fittingTypes`) + */ + createFitting(fittingDef: FittingDef): Fitting; + /** returns `pipeworks` Pipe instance */ + createPipe(pipeDef: PipeDef): Pipe; + createPipeFromFitting(fitting: Fitting, fittingDef: FittingDef): Pipe; + /** + * Finds and returns a `Pipe` by name and lazily creates if it is not defined + * @throws {Error} Throws error if `pipeDef` pipe is not yet defined and `pipeDef` is + * not supplied + */ + getPipe(pipeName: string, pipeDef?: PipeDef): Pipe; + /** Handler for errors that occure when a `Fitting` gets 'played' */ + handleError(context: FittingContext, err: Error): void; + /** Loads `FittingFactory`s from file-system and adds them to `Bagpipes.fittingTypes` */ + loadFittingTypes(): FittingTypesMap; + /** + * Builds a new (wrappend) `Fitting` + * @throws {Error} Throws error if an invalid (not defined) fitting typ is used + * (can't find argument `fittingType` in `Bagpipes.fittingTypes`) + */ + newFitting(fittingType: string, fittingDef: FittingDef): Fitting; + /** Run the pipeline */ + play(pipe: Pipe, context: any): void; + /** + * Wraps `Fitting` with debugging, `preflight`, `postflight` + * and error handling functionality and returns as new Fitting + */ + wrapFitting(fitting: Fitting, fittingDef: FittingDef): Fitting | null; +} + +/** Configuration object for `Bagpipes` */ +export interface Config { + connectMiddlewareDirs?: string[]; + userFittingsDirs?: string[]; + userViewsDirs?: string[]; + // allow to store custom values e.g. for swagger-node-runner + // see https://github.com/theganyo/swagger-node-runner/blob/v0.7.1/index.js#L304 + [name: string]: any; +} + +/** + * Creates `Bagpipes` + */ +export function create(pipesDefs: PipeDefMap, conf?: Config): Bagpipes; + +// Types for imports from `pipeworks` module + +type Affinity = "hoist" | "sink"; + +/** PipeDef used in `pipeworks` module */ +interface PipeworksOptions { + /** + * Adds to the pre and post queues, respectively. + * Ensures a pipe gets fitted before or after the main execution pipeline. + */ + affinity: Affinity; +} + +/** + * Instance of a `Pipeworks` pipeline (in `pipeworks` module) - + * called 'pipe' in `Bagpipes` + * + * _(simplified version)_ + */ +export class Pipe { + /** add a new `Fitting` (piece) to the pipe (aka. pipeline) */ + fit(pipe: Fitting): Pipe; + /** add a new `Fitting` (piece) to the pipe (aka. pipeline) */ + fit(options: PipeworksOptions, pipe: Fitting): Pipe; + /** Redirect the flow to another pipe (aka. pipeline). */ + siphon(pipe: Fitting): Pipe; + /** Redirect the flow to another pipe (aka. pipeline). */ + siphon(options: PipeworksOptions, pipe: Fitting): Pipe; + /** + * Send something down the pipe (aka. pipeline)! Any number of arguments + * can be sent, but often there's just a single `context` object. + */ + flow(...args: any[]): Pipe; +} diff --git a/types/bagpipes/tsconfig.json b/types/bagpipes/tsconfig.json new file mode 100755 index 0000000000..6097fdb56d --- /dev/null +++ b/types/bagpipes/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "bagpipes-tests.ts" + ] +} diff --git a/types/bagpipes/tslint.json b/types/bagpipes/tslint.json new file mode 100755 index 0000000000..3db14f85ea --- /dev/null +++ b/types/bagpipes/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" } From 45db0d60872da0517014921f5f5743f947b50e01 Mon Sep 17 00:00:00 2001 From: taoqf Date: Thu, 20 Apr 2017 21:54:56 -0500 Subject: [PATCH 74/90] Add jweixin weixin-app ccap qr-image defination (#15801) * add weixin-app * add wx * add new line at end of file * tslint wx and wx-app * fixed test error * change project name weixin * rename * weixin-app Add param this * change discription of jweixin * add some Event declaration * change tslint config extends dtslint/dt.json * add defination of ccap, qr-image * remove redundant jsdoc * remove doc * allow overloads * inline some types * fix tslint error --- types/ccap/ccap-tests.ts | 21 + types/ccap/index.d.ts | 26 + types/ccap/tsconfig.json | 22 + types/ccap/tslint.json | 1 + types/jweixin/index.d.ts | 543 +++++++ types/jweixin/jweixin-tests.ts | 9 + types/jweixin/tsconfig.json | 23 + types/jweixin/tslint.json | 1 + types/qr-image/index.d.ts | 40 + types/qr-image/qr-image-tests.ts | 7 + types/qr-image/tsconfig.json | 22 + types/qr-image/tslint.json | 6 + types/weixin-app/index.d.ts | 2147 ++++++++++++++++++++++++++ types/weixin-app/tsconfig.json | 23 + types/weixin-app/tslint.json | 1 + types/weixin-app/weixin-app-tests.ts | 1 + 16 files changed, 2893 insertions(+) create mode 100644 types/ccap/ccap-tests.ts create mode 100644 types/ccap/index.d.ts create mode 100644 types/ccap/tsconfig.json create mode 100644 types/ccap/tslint.json create mode 100644 types/jweixin/index.d.ts create mode 100644 types/jweixin/jweixin-tests.ts create mode 100644 types/jweixin/tsconfig.json create mode 100644 types/jweixin/tslint.json create mode 100644 types/qr-image/index.d.ts create mode 100644 types/qr-image/qr-image-tests.ts create mode 100644 types/qr-image/tsconfig.json create mode 100644 types/qr-image/tslint.json create mode 100644 types/weixin-app/index.d.ts create mode 100644 types/weixin-app/tsconfig.json create mode 100644 types/weixin-app/tslint.json create mode 100644 types/weixin-app/weixin-app-tests.ts diff --git a/types/ccap/ccap-tests.ts b/types/ccap/ccap-tests.ts new file mode 100644 index 0000000000..12a38a9f60 --- /dev/null +++ b/types/ccap/ccap-tests.ts @@ -0,0 +1,21 @@ +import * as ccap from 'ccap'; + +const captcha1 = ccap(); + +const width = 0; +const height = 0; +const offset = 0; +const captcha2 = ccap(width, height, offset); + +const captcha3 = ccap({ + width: 256, // set width,default is 256 + height: 60, // set height,default is 60 + offset: 40, // set text spacing,default is 40 + quality: 100, // set pic quality,default is 50 + fontsize: 57, // set font size,default is 57 + // Custom the function to generate captcha text + generate() { + // generate captcha text here + return 'text'; // return the captcha text + } +}); diff --git a/types/ccap/index.d.ts b/types/ccap/index.d.ts new file mode 100644 index 0000000000..32b7ce2e16 --- /dev/null +++ b/types/ccap/index.d.ts @@ -0,0 +1,26 @@ +// Type definitions for ccap 0.6 +// Project: https://github.com/DoubleSpout/ccap +// Definitions by: taoqf +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +/// + +interface Captcha { + get(): [string, Buffer]; +} + +interface Options { + width?: number; // set width,default is 256 + height?: number; // set height,default is 60 + offset?: number; // set text spacing,default is 40 + quality?: number; // set pic quality,default is 50 + fontsize?: number; // set font size,default is 57 + // Custom the function to generate captcha text + generate?(): string; +} + +declare function ccap(width: number, height: number, offset: number): Captcha; +declare function ccap(options?: Options): Captcha; + +declare namespace ccap { } +export = ccap; diff --git a/types/ccap/tsconfig.json b/types/ccap/tsconfig.json new file mode 100644 index 0000000000..d1c1d4d626 --- /dev/null +++ b/types/ccap/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "ccap-tests.ts" + ] +} diff --git a/types/ccap/tslint.json b/types/ccap/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/ccap/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" } diff --git a/types/jweixin/index.d.ts b/types/jweixin/index.d.ts new file mode 100644 index 0000000000..ef6e3a9b41 --- /dev/null +++ b/types/jweixin/index.d.ts @@ -0,0 +1,543 @@ +// Type definitions for jweixin 1.0 +// Project: https://mp.weixin.qq.com/wiki/11/74ad127cc054f6b80759c40f77ec03db.html +// Definitions by: taoqf +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +/* =================== USAGE =================== +import * as wx from 'jweixin'; +wx.config(...); +or +import { config } from 'jweixin'; +config(); + =============================================== */ + +declare namespace wx { + type ImageSizeType = 'original' | 'compressed'; + type ImageSourceType = 'album' | 'camera'; + type VideoSourceType = 'album' | 'camera'; + type ApiMethod = 'onMenuShareTimeline' | + 'onMenuShareAppMessage' | + 'onMenuShareQQ' | + 'onMenuShareWeibo' | + 'onMenuShareQZone' | + 'startRecord' | + 'stopRecord' | + 'onVoiceRecordEnd' | + 'playVoice' | + 'pauseVoice' | + 'stopVoice' | + 'onVoicePlayEnd' | + 'uploadVoice' | + 'downloadVoice' | + 'chooseImage' | + 'previewImage' | + 'uploadImage' | + 'downloadImage' | + 'translateVoice' | + 'getNetworkType' | + 'openLocation' | + 'getLocation' | + 'hideOptionMenu' | + 'showOptionMenu' | + 'hideMenuItems' | + 'showMenuItems' | + 'hideAllNonBaseMenuItem' | + 'showAllNonBaseMenuItem' | + 'closeWindow' | + 'scanQRCode' | + 'chooseWXPay' | + 'openProductSpecificView' | + 'addCard' | + 'chooseCard' | + 'openCard'; + // 所有JS接口列表 + type jsApiList = ApiMethod[]; + + // 所有菜单项列表 + // 基本类 + type menuBase = "menuItem:exposeArticle" | // 举报 + "menuItem:setFont" | // 调整字体 + "menuItem:dayMode" | // 日间模式 + "menuItem:nightMode" | // 夜间模式 + "menuItem:refresh" | // 刷新 + "menuItem:profile" | // 查看公众号(已添加) + "menuItem:addContact"; // 查看公众号(未添加) + // 传播类 + type menuShare = "menuItem:share:appMessage" | // 发送给朋友 + "menuItem:share:timeline" | // 分享到朋友圈 + "menuItem:share:qq" | // 分享到QQ + "menuItem:share:weiboApp" | // 分享到Weibo + "menuItem:favorite" | // 收藏 + "menuItem:share:facebook" | // 分享到FB + "menuItem:share:QZone"; // 分享到 QQ 空间 + + // 保护类 + type menuProtected = "menuItem:editTag" | // 编辑标签 + "menuItem:delete" | // 删除 + "menuItem:copyUrl" | // 复制链接 + "menuItem:originPage" | // 原网页 + "menuItem:readMode" | // 阅读模式 + "menuItem:openWithQQBrowser" | // 在QQ浏览器中打开 + "menuItem:openWithSafari" | // 在Safari中打开 + "menuItem:share:email" | // 邮件 + "menuItem:share:brand"; // 一些特殊公众号 + + type menuList = Array; + + function config(conf: { + debug?: boolean; // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 + appId: string; // 必填,公众号的唯一标识 + timestamp: number; // 必填,生成签名的时间戳 + nonceStr: string; // 必填,生成签名的随机串 + signature: string; // 必填,签名,见附录1 + jsApiList: jsApiList; // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 + }): void; + + interface Resouce { + localId: string; + } + interface BaseParams { + success?(...args: any[]): void; + /** 接口调用失败的回调函数 */ + fail?(...args: any[]): void; + /** 接口调用结束的回调函数(调用成功、失败都会执行) */ + complete?(...args: any[]): void; + } + function ready(fn: () => void): void; + function error(fn: (err: { errMsg: string; }) => void): void; + + interface IcheckJsApi extends BaseParams { + jsApiList: jsApiList; // 需要检测的JS接口列表,所有JS接口列表见附录2, + // 以键值对的形式返回,可用的api值true,不可用为false + // 如:{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"} + success(res: { checkResult: { [api: string]: boolean }, errMsg: string; }): void; + } + /** + * 判断当前客户端版本是否支持指定JS接口 + * 备注:checkJsApi接口是客户端6.0.2新引入的一个预留接口,第一期开放的接口均可不使用checkJsApi来检测。 + */ + function checkJsApi(params: IcheckJsApi): void; + + interface IonMenuShareTimeline extends BaseParams { + title: string; // 分享标题 + link: string; // 分享链接 + imgUrl: string; // 分享图标 + // 用户确认分享后执行的回调函数 + success(): void; + // 用户取消分享后执行的回调函数 + cancel(): void; + } + /*=============================基础接口================================*/ + /** + * 获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 + */ + function onMenuShareTimeline(params: IonMenuShareTimeline): void; + + interface IonMenuShareAppMessage extends BaseParams { + title: string; // 分享标题 + desc: string; // 分享描述 + link: string; // 分享链接 + imgUrl: string; // 分享图标 + type?: 'music' | 'video或link' | 'link'; // 分享类型,music、video或link,不填默认为link + dataUrl?: string; // 如果type是music或video,则要提供数据链接,默认为空 + // 用户确认分享后执行的回调函数 + success(): void; + // 用户取消分享后执行的回调函数 + cancel(): void; + } + /** + * 获取“分享给朋友”按钮点击状态及自定义分享内容接口 + */ + function onMenuShareAppMessage(params: IonMenuShareAppMessage): void; + + interface IonMenuShareQQ extends BaseParams { + title: string; // 分享标题 + desc: string; // 分享描述 + link: string; // 分享链接 + imgUrl: string; // 分享图标 + // 用户确认分享后执行的回调函数 + success(): void; + // 用户取消分享后执行的回调函数 + cancel(): void; + } + /** + * 获取“分享到QQ”按钮点击状态及自定义分享内容接口 + */ + function onMenuShareQQ(params: IonMenuShareQQ): void; + + interface IonMenuShareWeibo extends BaseParams { + title: string; // 分享标题 + desc: string; // 分享描述 + link: string; // 分享链接 + imgUrl: string; // 分享图标 + // 用户确认分享后执行的回调函数 + success(): void; + // 用户取消分享后执行的回调函数 + cancel(): void; + } + /** + * 获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 + */ + function onMenuShareWeibo(params: IonMenuShareWeibo): void; + + interface IonMenuShareQZone extends BaseParams { + title: string; // 分享标题 + desc: string; // 分享描述 + link: string; // 分享链接 + imgUrl: string; // 分享图标 + // 用户确认分享后执行的回调函数 + success(): void; + // 用户取消分享后执行的回调函数 + cancel(): void; + } + /** + * 获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 + */ + function onMenuShareQZone(params: IonMenuShareQZone): void; + /*=============================基础接口================================*/ + + /*=============================图像接口================================*/ + interface IchooseImage extends BaseParams { + /** 最多可以选择的图片张数,默认9 */ + count?: number; + /** original 原图,compressed 压缩图,默认二者都有 */ + sizeType?: ImageSizeType[]; + /** album 从相册选图,camera 使用相机,默认二者都有 */ + sourceType?: ImageSourceType[]; + /** 成功则返回图片的本地文件路径列表 tempFilePaths */ + success(res: { + sourceType: string; // weixin album camera + localIds: string[]; + errMsg: string; + }): void; + } + /** + * 从本地相册选择图片或使用相机拍照。 + */ + function chooseImage(params: IchooseImage): void; + + interface IpreviewImage extends BaseParams { + current: string; // 当前显示图片的http链接 + urls: string[]; // 需要预览的图片http链接列表 + } + /** + * 预览图片接口 + */ + function previewImage(params: IpreviewImage): void; + + interface IuploadImage extends BaseParams { + localId: string; // 需要上传的图片的本地ID,由chooseImage接口获得 + isShowProgressTips: number; // 默认为1,显示进度提示 + // 返回图片的服务器端ID + success(res: { serverId: string }): void; + } + /** + * 上传图片接口 + */ + function uploadImage(params: IuploadImage): void; + + interface IdownloadImage extends BaseParams { + serverId: string; // 需要下载的图片的服务器端ID,由uploadImage接口获得 + isShowProgressTips: number; // 默认为1,显示进度提示 + // 返回图片下载后的本地ID + success(res: Resouce): void; + } + /** + * 下载图片接口 + */ + function downloadImage(params: IdownloadImage): void; + /*=============================图像接口================================*/ + /*=============================音频接口================================*/ + /** + * 开始录音接口 + */ + function startRecord(): void; + + interface IstopRecord extends BaseParams { + success(res: Resouce): void; + } + /** + * 停止录音接口 + */ + function stopRecord(params: IstopRecord): void; + + interface IonVoiceRecordEnd extends BaseParams { + // 录音时间超过一分钟没有停止的时候会执行 complete 回调 + complete(res: Resouce): void; + } + /** + * 监听录音自动停止接口 + */ + function onVoiceRecordEnd(params: IonVoiceRecordEnd): void; + + interface IplaypausestopVoice extends BaseParams { + localId: string; // 需要播放的音频的本地ID,由stopRecord接口获得 + } + /** + * 播放语音接口 + */ + function playVoice(params: IplaypausestopVoice): void; + + /** + * 暂停播放接口 + */ + function pauseVoice(params: IplaypausestopVoice): void; + /** + * 停止播放接口 + */ + function stopVoice(params: IplaypausestopVoice): void; + + interface IonVoicePlayEnd extends BaseParams { + success(res: Resouce): void; + } + /** + * 监听语音播放完毕接口 + */ + function onVoicePlayEnd(params: IonVoicePlayEnd): void; + + interface IupdownloadVoice extends BaseParams { + localId: string; // 需要上传的音频的本地ID,由stopRecord接口获得 + isShowProgressTips: number; // 默认为1,显示进度提示 + success(res: Resouce): void; + } + /** + * 上传语音接口 + * 备注:上传语音有效期3天,可用微信多媒体接口下载语音到自己的服务器 + * ,此处获得的 serverId 即 media_id,参考文档 + * ../12 / 58bfcfabbd501c7cd77c19bd9cfa8354.html + * 目前多媒体文件下载接口的频率限制为10000次/ 天, + * 如需要调高频率,请邮件weixin - open@qq.com, + * 邮件主题为【申请多媒体接口调用量】,请对你的项目进行简单描述, + * 附上产品体验链接,并对用户量和使用量进行说明。 + */ + function uploadVoice(params: IupdownloadVoice): void; + /** + * 下载语音接口 + */ + function downloadVoice(params: IupdownloadVoice): void; + /*=============================音频接口================================*/ + /*=============================智能接口================================*/ + + interface ItranslateVoice extends BaseParams { + localId: string; // 需要识别的音频的本地Id,由录音相关接口获得 + isShowProgressTips: number; // 默认为1,显示进度提示 + success(res: { + translateResult: string; + }): void; + } + /** + * 识别音频并返回识别结果接口 + */ + function translateVoice(params: ItranslateVoice): void; + + /*=============================智能接口================================*/ + + /*=============================设备信息================================*/ + type networkType = '2g' | '3g' | '4g' | 'wifi'; + interface IgetNetworkType extends BaseParams { + success(res: { networkType: networkType }): void; + } + /** + * 获取网络状态接口 + */ + function getNetworkType(params: IgetNetworkType): void; + /*=============================设备信息================================*/ + + /*=============================地理位置================================*/ + interface IopenLocation extends BaseParams { + latitude: number; // 纬度,浮点数,范围为90 ~ -90 + longitude: number; // 经度,浮点数,范围为180 ~ -180。 + name: string; // 位置名 + address: string; // 地址详情说明 + scale: number; // 地图缩放级别,整形值,范围从1~28。默认为最大 + infoUrl: string; // 在查看位置界面底部显示的超链接,可点击跳转 + } + /** + * 使用微信内置地图查看位置接口 + */ + function openLocation(params: IopenLocation): void; + + interface IgetLocation extends BaseParams { + type: 'wgs84' | 'gcj02'; // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02' + success(res: { + latitude: number; // 纬度,浮点数,范围为90 ~ -90 + longitude: number; // 经度,浮点数,范围为180 ~ -180。 + speed: number; // 速度,以米/每秒计 + accuracy: number; // 位置精度 + }): void; + } + /** + * 获取地理位置接口 + */ + function getLocation(params: IgetLocation): void; + /*=============================地理位置================================*/ + /*=============================摇一摇周边================================*/ + interface IstartSearchBeacons extends BaseParams { + ticket: string; // 摇周边的业务ticket, 系统自动添加在摇出来的页面链接后面 + // 开启查找完成后的回调函数 + complete(argv: any): void; + } + /** + * 开启查找周边ibeacon设备接口 + * 备注:如需接入摇一摇周边功能,请参考:申请开通摇一摇周边 + */ + function startSearchBeacons(params: IstartSearchBeacons): void; + + interface IstopSearchBeacons extends BaseParams { + // 关闭查找完成后的回调函数 + complete(res: any): void; + } + + /** + * 关闭查找周边ibeacon设备接口 + */ + function stopSearchBeacons(params: IstopSearchBeacons): void; + + interface IonSearchBeacons extends BaseParams { + // 回调函数,可以数组形式取得该商家注册的在周边的相关设备列表 + complete(argv: any): void; + } + /** + * 监听周边ibeacon设备接口 + */ + function onSearchBeacons(params: IonSearchBeacons): void; + /*=============================摇一摇周边================================*/ + /*=============================界面操作================================*/ + + /** + * 隐藏右上角菜单接口 + */ + function hideOptionMenu(): void; + + /** + * 显示右上角菜单接口 + */ + function showOptionMenu(): void; + + /** + * 关闭当前网页窗口接口 + */ + function closeWindow(): void; + + interface IhideMenuItems extends BaseParams { + menuList: Array; // 要隐藏的菜单项,只能隐藏“传播类”和“保护类”按钮,所有menu项见附录3 + } + /** + * 批量隐藏功能按钮接口 + */ + function hideMenuItems(): void; + + interface IshowMenuItems extends BaseParams { + menuList: menuList; // 要显示的菜单项,所有menu项见附录3 + } + /** + * 批量显示功能按钮接口 + */ + function showMenuItems(params: IshowMenuItems): void; + + /** + * 隐藏所有非基础按钮接口 + * “基本类”按钮详见附录3 + */ + function hideAllNonBaseMenuItem(): void; + + /** + * 显示所有功能按钮接口 + */ + function showAllNonBaseMenuItem(): void; + /*=============================界面操作================================*/ + /*=============================微信扫一扫================================*/ + + type scanType = "qrCode" | "barCode"; + + interface IscanQRCode extends BaseParams { + needResult: 0 | 1; // 默认为0,扫描结果由微信处理,1则直接返回扫描结果, + scanType: scanType[]; // 可以指定扫二维码还是一维码,默认二者都有 + // 当needResult 为 1 时,扫码返回的结果 + success(res: { resultStr: string; }): void; + } + /** + * 调起微信扫一扫接口 + */ + function scanQRCode(params: IscanQRCode): void; + /*=============================微信扫一扫================================*/ + /*=============================微信小店================================*/ + + interface IopenProductSpecificView extends BaseParams { + productId: string; // 商品id + viewType: '0' | '1' | '2'; // 0.默认值,普通商品详情页1.扫一扫商品详情页2.小店商品详情页 + } + /** + * 跳转微信商品页接口 + */ + function openProductSpecificView(params: IopenProductSpecificView): void; + /*=============================微信卡券================================*/ + + interface IchooseCard extends BaseParams { + shopId: string; // 门店Id + cardType: string; // 卡券类型 + cardId: string; // 卡券Id + timestamp: number; // 卡券签名时间戳 + nonceStr: string; // 卡券签名随机串 + signType: string; // 签名方式,默认'SHA1' + cardSign: string; // 卡券签名 + success(res: { + cardList: string[]; + }): void; + } + /** + * 拉取适用卡券列表并获取用户选择信息 + */ + function chooseCard(params: IchooseCard): void; + + interface IaddCard extends BaseParams { + cardList: Array<{ + cardId: string; + cardExt: string; + }>; // 需要添加的卡券列表 + success(res: { cardList: string[]; }): void; + } + /** + * 批量添加卡券接口 + */ + function addCard(): void; + + interface IopenCard extends BaseParams { + cardList: Array<{ + cardId: string; + code: string; + }>; // 需要打开的卡券列表 + } + /** + * 查看微信卡包中的卡券接口 + */ + function openCard(params: IopenCard): void; + + interface IconsumeAndShareCard extends BaseParams { + cardId: string; + code: string; + } + /** + * 核销后再次赠送卡券接口 + */ + function consumeAndShareCard(params: IconsumeAndShareCard): void; + /*=============================微信卡券================================*/ + /*=============================微信支付================================*/ + + interface IchooseWXPay extends BaseParams { + timestamp: number; // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符 + nonceStr: string; // 支付签名随机串,不长于 32 位 + package: string; // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***) + signType: string; // 签名方式,默认为'SHA1',使用新版支付需传入'MD5' + paySign: string; // 支付签名 + // 支付成功后的回调函数 + success(res: any): void; + } + /** + * 发起一个微信支付请求 + */ + function chooseWXPay(params: IchooseWXPay): void; + /*=============================微信支付================================*/ +} + +declare function wx(): void; +export = wx; diff --git a/types/jweixin/jweixin-tests.ts b/types/jweixin/jweixin-tests.ts new file mode 100644 index 0000000000..2a982ec69c --- /dev/null +++ b/types/jweixin/jweixin-tests.ts @@ -0,0 +1,9 @@ +import { scanQRCode } from 'jweixin'; + +scanQRCode({ + needResult: 0, + scanType: ['qrCode'], + success(res) { + console.log(res); + } +}); diff --git a/types/jweixin/tsconfig.json b/types/jweixin/tsconfig.json new file mode 100644 index 0000000000..1031f719fd --- /dev/null +++ b/types/jweixin/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6", + "dom" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "jweixin-tests.ts" + ] +} diff --git a/types/jweixin/tslint.json b/types/jweixin/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/jweixin/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" } diff --git a/types/qr-image/index.d.ts b/types/qr-image/index.d.ts new file mode 100644 index 0000000000..593adce02f --- /dev/null +++ b/types/qr-image/index.d.ts @@ -0,0 +1,40 @@ +// Type definitions for qr-image 3.2 +// Project: https://github.com/alexeyten/qr-image +// Definitions by: taoqf +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +/// + +/** + * error correction level. One of L, M, Q, H. Default M. + */ +export type ec_level = 'L' | 'M' | 'Q' | 'H'; + +/** + * image type. Possible values png (default), svg, pdf and eps. + */ +export type image_type = 'png' | 'svg' | 'pdf' | 'eps'; + +/** + * image options object: + * + * @interface IOptions + */ +export interface Options { + ec_level?: ec_level; // error correction level. One of L, M, Q, H. Default M. + type?: image_type; // image type. Possible values png(default), svg, pdf and eps. + size?: number; // (png and svg only) for png and undefined for svg.-(png and svg only) — size of one module in pixels. + margin?: number; // (only png)for png and 1 for others.-white space around QR image in modules. + parse_url?: boolean; // (experimental, default false) try to optimize QR-code for URLs. +} + +export function image(text: string, level?: ec_level): NodeJS.ReadableStream; +export function image(text: string, optoins?: Options): NodeJS.ReadableStream; + +export function imageSync(text: string, level?: ec_level): Buffer; +export function imageSync(text: string, optoins?: Options): string | Buffer; + +export function svgObject(text: string, level?: ec_level): any; +export function svgObject(text: string, optoins?: Options): any; + +export function matrix(text: string, level?: ec_level): any[][]; diff --git a/types/qr-image/qr-image-tests.ts b/types/qr-image/qr-image-tests.ts new file mode 100644 index 0000000000..9b2c5745c7 --- /dev/null +++ b/types/qr-image/qr-image-tests.ts @@ -0,0 +1,7 @@ +import * as qr from 'qr-image'; +import * as fs from 'fs'; + +const qr_svg = qr.image('I love QR!', { type: 'svg' }); +qr_svg.pipe(fs.createWriteStream('i_love_qr.svg')); + +const svg_string = qr.imageSync('I love QR!', { type: 'svg' }); diff --git a/types/qr-image/tsconfig.json b/types/qr-image/tsconfig.json new file mode 100644 index 0000000000..c3cc4a05bf --- /dev/null +++ b/types/qr-image/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "qr-image-tests.ts" + ] +} diff --git a/types/qr-image/tslint.json b/types/qr-image/tslint.json new file mode 100644 index 0000000000..8765f2428f --- /dev/null +++ b/types/qr-image/tslint.json @@ -0,0 +1,6 @@ +{ + "extends": "dtslint/dt.json", + "rules": { + "unified-signatures": false + } +} \ No newline at end of file diff --git a/types/weixin-app/index.d.ts b/types/weixin-app/index.d.ts new file mode 100644 index 0000000000..89110f06c6 --- /dev/null +++ b/types/weixin-app/index.d.ts @@ -0,0 +1,2147 @@ +// Type definitions for wx-app 1.0 +// Project: https://mp.weixin.qq.com/debug/wxadoc/dev/api/ +// Definitions by: taoqf +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +declare namespace wx { + interface DataResponse { + /** 回调函数返回的内容 */ + data: any; + } + interface ErrMsgResponse { + /** 成功:ok,错误:详细信息 */ + errMsg: 'ok' | string; + } + interface TempFileResponse { + /** 文件的临时路径 */ + tempFilePath: string; + } + + interface PageOptions { + /** 页面的初始数据 */ + data?: any; + /** 生命周期函数--监听页面加载 */ + onLoad?(this: Page, options: any): void; + /** 生命周期函数--监听页面渲染完成 */ + onReady?(this: Page): void; + /** 生命周期函数--监听页面显示 */ + onShow?(this: Page): void; + /** 生命周期函数--监听页面隐藏 */ + onHide?(this: Page): void; + /** 生命周期函数--监听页面卸载 */ + onUnload?(this: Page): void; + [key: string]: any; + } + + interface AppOptions { + /** + * 生命周期函数--监听小程序初始化 + * 当小程序初始化完成时,会触发 onLaunch(全局只触发一次) + */ + onLaunch?(this: App): void; + /** + * 生命周期函数--监听小程序显示 + * 当小程序启动,或从后台进入前台显示,会触发 onShow + */ + onShow?(this: App): void; + /** + * 生命周期函数--监听小程序隐藏 + * 当小程序从前台进入后台,会触发 onHide + */ + onHide?(this: App): void; + [key: string]: any; + } + + interface BaseOptions { + /** 接口调用成功的回调函数 */ + success?(res: any): void; + /** 接口调用失败的回调函数 */ + fail?(res: any): void; + /** 接口调用结束的回调函数(调用成功、失败都会执行) */ + complete?(res: any): void; + } +} +// 发起请求 +declare namespace wx { + interface RequestHeader { + [key: string]: string; + } + interface RequestOptions extends BaseOptions { + /** 开发者服务器接口地址 */ + url: string; + /** 请求的参数 */ + data?: string | any; + /** 设置请求的 header , header 中不能设置 Referer */ + header?: RequestHeader; + /** 默认为 GET,有效值:OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT */ + method?: string; + /** 收到开发者服务成功返回的回调函数,res = {data: '开发者服务器返回的内容'} */ + success?(res: DataResponse): void; + } + /** + * wx.request发起的是https请求。一个微信小程序,同时只能有5个网络请求连接。 + */ + function request(options: RequestOptions): void; +} +// 上传下载 +declare namespace wx { + interface UploadFileOptions extends BaseOptions { + /** 开发者服务器 url */ + url: string; + /** 要上传文件资源的路径 */ + filePath: string; + /** 文件对应的 key , 开发者在服务器端通过这个 key 可以获取到文件二进制内容 */ + name: string; + /** HTTP 请求 Header , header 中不能设置 Referer */ + header?: RequestHeader; + /** HTTP 请求中其他额外的 form data */ + formData?: any; + } + /** + * 将本地资源上传到开发者服务器。 + * 如页面通过 wx.chooseImage 等接口获取到一个本地资源的临时文件路径后, + * 可通过此接口将本地资源上传到指定服务器。 + * 客户端发起一个 HTTPS POST 请求, + * 其中 Content-Type 为 multipart/form-data 。 + */ + function uploadFile(options: UploadFileOptions): void; + + interface DownloadFileOptions extends BaseOptions { + /** 下载资源的 url */ + url: string; + /** 下载资源的类型,用于客户端识别处理,有效值:image/audio/video */ + type?: string; + /** HTTP 请求 Header */ + header?: RequestHeader; + /** 下载成功后以 tempFilePath 的形式传给页面,res = {tempFilePath: '文件的临时路径'} */ + success?(res: TempFileResponse): void; + } + /** + * 下载文件资源到本地。客户端直接发起一个 HTTP GET 请求, + * 把下载到的资源根据 type 进行处理,并返回文件的本地临时路径。 + */ + function downloadFile(options: DownloadFileOptions): void; +} +// WebSocket +declare namespace wx { + interface ConnectSocketOptions extends BaseOptions { + /** 开发者服务器接口地址,必须是 HTTPS 协议,且域名必须是后台配置的合法域名 */ + url: string; + /** 请求的数据 */ + data?: any; + /** HTTP Header , header 中不能设置 Referer */ + header?: RequestHeader; + /** 默认是GET,有效值为: OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT */ + method?: string; + } + /** + * 创建一个 WebSocket 连接; + * 一个微信小程序同时只能有一个 WebSocket 连接, + * 如果当前已存在一个 WebSocket 连接, + * 会自动关闭该连接,并重新创建一个 WebSocket 连接。 + */ + function connectSocket(options: ConnectSocketOptions): void; + + /** 监听WebSocket连接打开事件。 */ + function onSocketOpen(callback: () => void): void; + + /** 监听WebSocket错误。 */ + function onSocketError(callback: (error: any) => void): void; + + interface SendSocketMessageOptions extends BaseOptions { + /** 需要发送的内容 */ + data: string; + } + /** + * 通过 WebSocket 连接发送数据,需要先 wx.connectSocket, + * 并在 wx.onSocketOpen 回调之后才能发送。 + */ + function sendSocketMessage(options: SendSocketMessageOptions): void; + + /** + * 监听WebSocket接受到服务器的消息事件。 + */ + function onSocketMessage(callback: (res: DataResponse) => void): void; + + /** + * 关闭WebSocket连接。 + */ + function closeSocket(): void; + + /** 监听WebSocket关闭。 */ + function onSocketClose(callback: () => void): void; +} +// 媒体-----图片 +declare namespace wx { + type ImageSizeType = 'original' | 'compressed'; + type ImageSourceType = 'album' | 'camera'; + type VideoSourceType = 'album' | 'camera'; + type CameraDevice = 'front' | 'back'; + + interface TempFilesData { + /** 文件的临时路径 */ + tempFilePaths: string; + } + interface ChooseImageOptions extends BaseOptions { + /** 最多可以选择的图片张数,默认9 */ + count?: number; + /** original 原图,compressed 压缩图,默认二者都有 */ + sizeType?: ImageSizeType[]; + /** album 从相册选图,camera 使用相机,默认二者都有 */ + sourceType?: ImageSourceType[]; + /** 成功则返回图片的本地文件路径列表 tempFilePaths */ + success(res: TempFilesData): void; + } + /** + * 从本地相册选择图片或使用相机拍照。 + */ + function chooseImage(options: ChooseImageOptions): void; + + interface PreviewImageOptions extends BaseOptions { + /** 当前显示图片的链接,不填则默认为 urls 的第一张 */ + current?: string; + /** 需要预览的图片链接列表 */ + urls: string[]; + } + /** + * 预览图片。 + */ + function previewImage(options: PreviewImageOptions): void; + + interface GetImageInfoOptions extends BaseOptions { + /** + * 图片的路径,可以是相对路径,临时文件路径,存储文件路径,网络图片路径 + */ + src: string; + } + + /** + * 获取图片信息 + */ + function getImageInfo(options: GetImageInfoOptions): void; +} +// 媒体-----录音 +declare namespace wx { + interface StartRecordOptions extends BaseOptions { + /** 录音成功后调用,返回录音文件的临时文件路径,res = {tempFilePath: '录音文件的临时路径'} */ + success?(res: TempFileResponse): void; + } + + /** + * 开始录音。当主动调用wx.stopRecord, + * 或者录音超过1分钟时自动结束录音,返回录音文件的临时文件路径。 + * 注:文件的临时路径,在小程序本次启动期间可以正常使用, + * 如需持久保存,需在主动调用wx.saveFile,在小程序下次启动时才能访问得到。 + */ + function startRecord(options: StartRecordOptions): void; + + /** + * ​ 主动调用停止录音。 + */ + function stopRecord(): void; +} +// 媒体-----音频播放控制 +declare namespace wx { + interface PlayVoiceOptions extends BaseOptions { + /** 需要播放的语音文件的文件路径 */ + filePath: string; + } + /** + * 开始播放语音,同时只允许一个语音文件正在播放, + * 如果前一个语音文件还没播放完,将中断前一个语音播放。 + */ + function playVoice(options: PlayVoiceOptions): void; + + /** + * 暂停正在播放的语音。 + * 再次调用wx.playVoice播放同一个文件时,会从暂停处开始播放。 + * 如果想从头开始播放,需要先调用 wx.stopVoice。 + */ + function pauseVoice(): void; + + /** + * 结束播放语音。 + */ + function stopVoice(): void; +} +// 媒体-----音乐播放控制 +declare namespace wx { + interface BackgroundAudioPlayerState { + /** 选定音频的长度(单位:s),只有在当前有音乐播放时返回 */ + duration?: number; + /** 选定音频的播放位置(单位:s),只有在当前有音乐播放时返回 */ + currentPosition?: number; + /** 播放状态(2:没有音乐在播放,1:播放中,0:暂停中) */ + status: number; + /** 音频的下载进度(整数,80 代表 80%),只有在当前有音乐播放时返回 */ + downloadPercent?: number; + /** 歌曲数据链接,只有在当前有音乐播放时返回 */ + dataUrl?: string; + } + type GetBackgroundAudioPlayerStateSuccessCallback = (state: BackgroundAudioPlayerState) => void; + interface GetBackgroundAudioPlayerStateOptions extends BaseOptions { + /** 接口调用成功的回调函数 */ + success?: GetBackgroundAudioPlayerStateSuccessCallback; + /** 接口调用失败的回调函数 */ + fail?(): void; + /** 接口调用结束的回调函数(调用成功、失败都会执行) */ + complete?(): void; + } + /** 获取音乐播放状态。 */ + function getBackgroundAudioPlayerState(options: GetBackgroundAudioPlayerStateOptions): void; + + interface PlayBackgroundAudioOptions extends BaseOptions { + /** 音乐链接 */ + dataUrl: string; + /** 音乐标题 */ + title?: string; + /** 封面URL */ + coverImgUrl?: string; + } + /** 播放音乐,同时只能有一首音乐正在播放。 */ + function playBackgroundAudio(options: PlayBackgroundAudioOptions): void; + + /** 暂停播放音乐。 */ + function pauseBackgroundAudio(): void; + + interface SeekBackgroundAudioOptions extends BaseOptions { + /** 音乐位置,单位:秒 */ + position: number; + } + /** + * 控制音乐播放进度。 + */ + function seekBackgroundAudio(options: SeekBackgroundAudioOptions): void; + + /** + * 停止播放音乐。 + */ + function stopBackgroundAudio(): void; + + /** 监听音乐播放。 */ + function onBackgroundAudioPlay(callback: () => void): void; + + /** 监听音乐暂停。 */ + function onBackgroundAudioPause(callback: () => void): void; + + /** 监听音乐停止。 */ + function onBackgroundAudioStop(callback: () => void): void; +} +// 媒体-----音频组件控制 +declare namespace wx { + /** + * audioContext 通过 audioId 跟一个 (f: A, interval?: number, immediate?: boolean): A -export default f; +declare function debounce(f: A, interval?: number, immediate?: boolean): A & { clear(): void; }; +export = debounce; diff --git a/types/debounce/tslint.json b/types/debounce/tslint.json new file mode 100644 index 0000000000..5bc412fb1e --- /dev/null +++ b/types/debounce/tslint.json @@ -0,0 +1,6 @@ +{ + "extends": "dtslint/dt.json", + "rules": { + "ban-types": false + } +} From 50ae147fbb0fe209664c81d48ba6c16feaababb1 Mon Sep 17 00:00:00 2001 From: Shun Sato Date: Fri, 21 Apr 2017 23:30:16 +0900 Subject: [PATCH 76/90] fix(ioredis): allow RedisOptions.retryStrategy to return number | false (#15858) --- types/ioredis/index.d.ts | 6 +++++- types/ioredis/ioredis-tests.ts | 3 ++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/types/ioredis/index.d.ts b/types/ioredis/index.d.ts index 16b33400c3..9b036f9d47 100644 --- a/types/ioredis/index.d.ts +++ b/types/ioredis/index.d.ts @@ -662,7 +662,11 @@ declare module IORedis { */ enableReadyCheck?: boolean; keyPrefix?: string; - retryStrategy?: (times: number) => number; + /** + * When the return value isn't a number, ioredis will stop trying to reconnect. + * Fixed in: https://github.com/DefinitelyTyped/DefinitelyTyped/pull/15858 + */ + retryStrategy?: (times: number) => number | false; reconnectOnError?: (error: Error) => boolean; /** * By default, if there is no active connection to the Redis server, commands are added to a queue diff --git a/types/ioredis/ioredis-tests.ts b/types/ioredis/ioredis-tests.ts index f84f69b0fb..9fbd9ec1bd 100644 --- a/types/ioredis/ioredis-tests.ts +++ b/types/ioredis/ioredis-tests.ts @@ -29,7 +29,8 @@ new Redis({ host: '127.0.0.1', // Redis host family: 4, // 4 (IPv4) or 6 (IPv6) password: 'auth', - db: 0 + db: 0, + retryStrategy: function() { return false; } }) var pub = new Redis(); From 43408431520aaedbb7520015d3fdba816f0f6fc6 Mon Sep 17 00:00:00 2001 From: Alexander James Phillips Date: Fri, 21 Apr 2017 15:32:06 +0100 Subject: [PATCH 77/90] Boom, add test and allow for payload to be extended (#15961) * Boom, add test and allow for payload to be extended * Do not use I prefix for interface names --- types/boom/boom-tests.ts | 14 ++++++++++++++ types/boom/index.d.ts | 21 +++++++++++++-------- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/types/boom/boom-tests.ts b/types/boom/boom-tests.ts index 382eb24bbd..e31e376dde 100644 --- a/types/boom/boom-tests.ts +++ b/types/boom/boom-tests.ts @@ -39,3 +39,17 @@ Boom.serverUnavailable('message', {some: 'data'}); Boom.gatewayTimeout('message', {some: 'data'}); Boom.unauthorized() as Error; + +const error = Boom.badRequest('Cannot feed after midnight'); +error.output.statusCode = 499; // Assign a custom error code +error.reformat(); + +/** + * Add a custom key to the payload + */ + +interface CustomPayload extends Boom.Payload { + custom: string; +} + +(error.output.payload as CustomPayload).custom = 'abc_123'; diff --git a/types/boom/index.d.ts b/types/boom/index.d.ts index 863e2deafc..bb2f5e4bc0 100644 --- a/types/boom/index.d.ts +++ b/types/boom/index.d.ts @@ -24,6 +24,8 @@ declare namespace Boom { output: Output; /** reformat() - rebuilds error.output using the other object properties. */ reformat: () => string; + /** "If message is unset, the 'error' segment of the header will not be present and isMissing will be true on the error object." mentioned in @see {@link https://github.com/hapijs/boom#boomunauthorizedmessage-scheme-attributes} */ + isMissing?: boolean; } export interface Output { @@ -32,14 +34,17 @@ declare namespace Boom { /** headers - an object containing any HTTP headers where each key is a header name and value is the header content. (Limited value type to string https://github.com/hapijs/boom/issues/151 ) */ headers: {[index: string]: string}; /** payload - the formatted object used as the response payload (stringified). Can be directly manipulated but any changes will be lost if reformat() is called. Any content allowed and by default includes the following content: */ - payload: { - /** statusCode - the HTTP status code, derived from error.output.statusCode. */ - statusCode: number; - /** error - the HTTP status message (e.g. 'Bad Request', 'Internal Server Error') derived from statusCode. */ - error: string; - /** message - the error message derived from error.message. */ - message: string; - } + payload: Payload; + } + export interface Payload { + /** statusCode - the HTTP status code, derived from error.output.statusCode. */ + statusCode: number; + /** error - the HTTP status message (e.g. 'Bad Request', 'Internal Server Error') derived from statusCode. */ + error: string; + /** message - the error message derived from error.message. */ + message: string; + // Excluded this to aid typing of the other values. See tests for example casting to a custom interface to manipulate the payload + // [anyContent: string]: any; } /** From 0691dc010156d2d8db8ab868a05b64852183faf1 Mon Sep 17 00:00:00 2001 From: Ben Rogers Date: Fri, 21 Apr 2017 16:11:26 +0100 Subject: [PATCH 78/90] Updated redux-immutable-state-invariant for v2.0.0 (#16040) --- types/redux-immutable-state-invariant/index.d.ts | 6 +++--- .../redux-immutable-state-invariant-tests.ts | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/types/redux-immutable-state-invariant/index.d.ts b/types/redux-immutable-state-invariant/index.d.ts index f2081707bd..b81b6cc47f 100644 --- a/types/redux-immutable-state-invariant/index.d.ts +++ b/types/redux-immutable-state-invariant/index.d.ts @@ -1,6 +1,6 @@ -// Type definitions for react-router-redux v1.2.0 +// Type definitions for redux-immutable-state-invariant v2.0.0 // Project: https://github.com/leoasis/redux-immutable-state-invariant -// Definitions by: Remo H. Jansen +// Definitions by: Remo H. Jansen , Ben Rogers // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped /// @@ -10,4 +10,4 @@ import * as Redux from "redux"; type isImmutableDefault = (value: any) => boolean; type immutableStateInvariantMiddlewareInterface = (isImmutable?: isImmutableDefault) => Redux.Middleware; declare let immutableStateInvariantMiddleware: immutableStateInvariantMiddlewareInterface; -export = immutableStateInvariantMiddleware; +export default immutableStateInvariantMiddleware; diff --git a/types/redux-immutable-state-invariant/redux-immutable-state-invariant-tests.ts b/types/redux-immutable-state-invariant/redux-immutable-state-invariant-tests.ts index 84a8fd5489..f6c26b6777 100644 --- a/types/redux-immutable-state-invariant/redux-immutable-state-invariant-tests.ts +++ b/types/redux-immutable-state-invariant/redux-immutable-state-invariant-tests.ts @@ -1,5 +1,5 @@ import { applyMiddleware } from "redux"; -import * as immutableStateInvariantMiddleware from "redux-immutable-state-invariant"; +import immutableStateInvariantMiddleware from "redux-immutable-state-invariant"; applyMiddleware(immutableStateInvariantMiddleware()); From 68a96ccab0a09d320503f3cd0e3e8e4dc823a7d2 Mon Sep 17 00:00:00 2001 From: Xiang Gao Date: Sat, 22 Apr 2017 01:33:00 +0800 Subject: [PATCH 79/90] update draft-js.d.ts (#16033) * update draft-js.d.ts export as namespace Draft; * fix typo --- types/draft-js/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/draft-js/index.d.ts b/types/draft-js/index.d.ts index a79de31e70..c0086319a3 100644 --- a/types/draft-js/index.d.ts +++ b/types/draft-js/index.d.ts @@ -9,7 +9,7 @@ import * as Immutable from 'immutable'; type SyntheticKeyboardEvent = React.KeyboardEvent<{}>; type SyntheticEvent = React.SyntheticEvent<{}>; - +export as namespace Draft; declare namespace Draft { namespace Component { namespace Base { From f8c3c17107e9fb36dff4f210f98bb775863c728c Mon Sep 17 00:00:00 2001 From: StefanSchoof Date: Fri, 21 Apr 2017 19:54:54 +0200 Subject: [PATCH 80/90] SharePoint: Update package description (#16016) * SharePoint: Update package description Remove Version (works with more Versions) Remove work project (was the no longer maintained typedef project) Closes #15965 * Add link to jsom documentation * Readd Version --- types/sharepoint/index.d.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/types/sharepoint/index.d.ts b/types/sharepoint/index.d.ts index 4e6167ad53..3520e12f06 100644 --- a/types/sharepoint/index.d.ts +++ b/types/sharepoint/index.d.ts @@ -1,5 +1,5 @@ -// Type definitions for SharePoint: 2010.1 / 2013.1 -// Project: https:// github.com/gandjustas/sptypescript +// Type definitions for Microsoft SharePoint: 2013.1 +// Project: https://msdn.microsoft.com/en-us/library/office/jj193034.aspx // Definitions by: Stanislav Vyshchepan , Andrey Markeev // Definitions: https:// github.com/DefinitelyTyped/DefinitelyTyped From 2a866911d4fa27f205496067b3969683f803af07 Mon Sep 17 00:00:00 2001 From: JayAndCatchFire Date: Fri, 21 Apr 2017 15:00:16 -0500 Subject: [PATCH 81/90] Add types for 'karma-chai' package (#16050) --- types/karma-chai/index.d.ts | 12 ++++++++++++ types/karma-chai/karma-chai-tests.ts | 3 +++ types/karma-chai/tsconfig.json | 22 ++++++++++++++++++++++ types/karma-chai/tslint.json | 1 + 4 files changed, 38 insertions(+) create mode 100644 types/karma-chai/index.d.ts create mode 100644 types/karma-chai/karma-chai-tests.ts create mode 100644 types/karma-chai/tsconfig.json create mode 100644 types/karma-chai/tslint.json diff --git a/types/karma-chai/index.d.ts b/types/karma-chai/index.d.ts new file mode 100644 index 0000000000..87910cb6e2 --- /dev/null +++ b/types/karma-chai/index.d.ts @@ -0,0 +1,12 @@ +// Type definitions for karma-chai 0.1 +// Project: http://xdissent.github.io/karma-chai +// Definitions by: Jay Sherby +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +import chai = require('chai'); + +declare global { + var assert: Chai.AssertStatic; + var expect: Chai.ExpectStatic; + var should: Chai.Should; +} diff --git a/types/karma-chai/karma-chai-tests.ts b/types/karma-chai/karma-chai-tests.ts new file mode 100644 index 0000000000..d463dc6371 --- /dev/null +++ b/types/karma-chai/karma-chai-tests.ts @@ -0,0 +1,3 @@ +true.should.be.ok; +expect(true).to.be.ok; +assert.isTrue(true); diff --git a/types/karma-chai/tsconfig.json b/types/karma-chai/tsconfig.json new file mode 100644 index 0000000000..578bca4c14 --- /dev/null +++ b/types/karma-chai/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "karma-chai-tests.ts" + ] +} diff --git a/types/karma-chai/tslint.json b/types/karma-chai/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/karma-chai/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" } From 2bfb3cae13212d9119bd4357a323bf4e14b516b7 Mon Sep 17 00:00:00 2001 From: Kombu Date: Sat, 22 Apr 2017 04:18:21 +0800 Subject: [PATCH 82/90] [vue-i18n.d.ts] Add types for vue-i18n (#16053) --- types/vue-i18n/index.d.ts | 79 +++++++++++++++++++++++++ types/vue-i18n/package.json | 5 ++ types/vue-i18n/tsconfig.json | 22 +++++++ types/vue-i18n/tslint.json | 3 + types/vue-i18n/vue-i18n-tests.ts | 99 ++++++++++++++++++++++++++++++++ 5 files changed, 208 insertions(+) create mode 100644 types/vue-i18n/index.d.ts create mode 100644 types/vue-i18n/package.json create mode 100644 types/vue-i18n/tsconfig.json create mode 100644 types/vue-i18n/tslint.json create mode 100644 types/vue-i18n/vue-i18n-tests.ts diff --git a/types/vue-i18n/index.d.ts b/types/vue-i18n/index.d.ts new file mode 100644 index 0000000000..02174cb784 --- /dev/null +++ b/types/vue-i18n/index.d.ts @@ -0,0 +1,79 @@ +// Type definitions for vue-i18n 6.1 +// Project: https://github.com/kazupon/vue-i18n +// Definitions by: Kombu +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +import * as Vue from 'vue'; +import { PluginFunction } from 'vue'; + +declare namespace VueI18n { + type Path = string; + type Locale = string; + type Values = any[] | { [key: string]: any }; + type Choice = number; + type LocaleMessage = string | LocaleMessageObject | LocaleMessageArray; + interface LocaleMessageObject { [key: string]: LocaleMessage; } + interface LocaleMessageArray { [index: number]: LocaleMessage; } + interface LocaleMessages { [key: string]: LocaleMessageObject; } + type TranslateResult = string | LocaleMessageArray; + + interface Formatter { + format(message: string, values: Values): string; + } + + type MissingHandler = (locale: Locale, key: Path, vm?: Vue) => void; + + // tslint:disable-next-line:interface-name + interface I18nOptions { + locale?: Locale; + fallbackLocale?: Locale; + messages?: LocaleMessages; + formatter?: Formatter; + missing?: MissingHandler; + fallbackRoot?: boolean; + sync?: boolean; + silentTranslationWarn?: boolean; + } +} + +declare class VueI18n { + constructor(options?: VueI18n.I18nOptions) + + readonly messages: VueI18n.LocaleMessages; + + locale: VueI18n.Locale; + fallbackLocale: VueI18n.Locale; + missing: VueI18n.MissingHandler; + formatter: VueI18n.Formatter; + silentTranslationWarn: boolean; + + t(key: VueI18n.Path, values?: VueI18n.Values): VueI18n.TranslateResult; + t(key: VueI18n.Path, locale: VueI18n.Locale, values?: VueI18n.Values): VueI18n.TranslateResult; + tc(key: VueI18n.Path, choice?: VueI18n.Choice, values?: VueI18n.Values): string; + tc(key: VueI18n.Path, choice: VueI18n.Choice, locale: VueI18n.Locale, values?: VueI18n.Values): string; + te(key: VueI18n.Path, locale?: VueI18n.Locale): boolean; + + getLocaleMessage(locale: VueI18n.Locale): VueI18n.LocaleMessageObject; + setLocaleMessage(locale: VueI18n.Locale, message: VueI18n.LocaleMessageObject): void; + mergeLocaleMessage(locale: VueI18n.Locale, message: VueI18n.LocaleMessageObject): void; + + static install: PluginFunction; + static version: string; +} + +declare module 'vue/types/vue' { + interface Vue { + readonly $i18n: VueI18n; + $t: typeof VueI18n.prototype.t; + $tc: typeof VueI18n.prototype.tc; + $te: typeof VueI18n.prototype.te; + } +} + +declare module 'vue/types/options' { + interface ComponentOptions { + i18n?: VueI18n; + } +} + +export = VueI18n; diff --git a/types/vue-i18n/package.json b/types/vue-i18n/package.json new file mode 100644 index 0000000000..ca67af43b1 --- /dev/null +++ b/types/vue-i18n/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "vue": "^2.2.6" + } +} diff --git a/types/vue-i18n/tsconfig.json b/types/vue-i18n/tsconfig.json new file mode 100644 index 0000000000..cbff597b4f --- /dev/null +++ b/types/vue-i18n/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "vue-i18n-tests.ts" + ] +} diff --git a/types/vue-i18n/tslint.json b/types/vue-i18n/tslint.json new file mode 100644 index 0000000000..d88586e5bd --- /dev/null +++ b/types/vue-i18n/tslint.json @@ -0,0 +1,3 @@ +{ + "extends": "dtslint/dt.json" +} diff --git a/types/vue-i18n/vue-i18n-tests.ts b/types/vue-i18n/vue-i18n-tests.ts new file mode 100644 index 0000000000..7ff9dab6e1 --- /dev/null +++ b/types/vue-i18n/vue-i18n-tests.ts @@ -0,0 +1,99 @@ +/// + +const assert = console.assert; +const random = () => Math.trunc(Math.exp(Math.log(Date.now()) * Math.random())); + +import * as Vue from 'vue'; +import * as VueI18n from 'vue-i18n'; +import { ComponentOptions } from 'vue'; + +/** + * VueI18n.install + */ +Vue.use(VueI18n); +VueI18n.install(Vue); + +/** + * VueI18n.version + */ +assert(typeof VueI18n.version === 'string'); + +/** + * VueI18n Instance + */ +const locale = random().toString(); +const key = `_${random()}`; +const value = `${random()}|${random()}|${random()}`; +const i18n = new VueI18n({ + locale, + fallbackLocale: locale, + messages: { + [locale]: { + [key]: value, + }, + }, + formatter: { + format(message, values) { + return message; + }, + }, + missing(locale, key, vm) { + }, + fallbackRoot: false, + sync: true, + silentTranslationWarn: true, +}); +assert(i18n.messages[locale][key] === value); +assert(i18n.locale === locale); +assert(i18n.fallbackLocale === locale); +assert(typeof i18n.missing === 'function'); +assert(typeof i18n.formatter.format === 'function'); +assert(i18n.silentTranslationWarn); +i18n.setLocaleMessage(locale, {}); +assert(i18n.getLocaleMessage(locale)[key] === undefined); +i18n.mergeLocaleMessage(locale, { [key]: value }); +assert(i18n.getLocaleMessage(locale)[key] === value); +assert(typeof i18n.t === 'function'); +assert(typeof i18n.tc === 'function'); +assert(typeof i18n.te === 'function'); + +/** + * Vue + */ +const vm = new Vue({ + i18n, +}); +assert(vm.$i18n === i18n); +assert(vm.$t(key) === value); +assert(vm.$t(key, ['', 0, false, null, undefined]) === value); +assert(vm.$t(key, { x: 'x' }) === value); +assert(vm.$t(key, locale) === value); +assert(vm.$t(key, locale, ['', 0, false, null, undefined]) === value); +assert(vm.$t(key, locale, { x: 'x' }) === value); +assert(vm.$tc(key) === value); +assert(vm.$tc(key, 1) === value.split('|')[1]); +assert(vm.$tc(key, 1, []) === value.split('|')[1]); +assert(vm.$tc(key, 1, {}) === value.split('|')[1]); +assert(vm.$tc(key, 1, locale) === value.split('|')[1]); +assert(vm.$tc(key, 1, locale, []) === value.split('|')[1]); +assert(vm.$tc(key, 1, locale, {}) === value.split('|')[1]); +assert(vm.$te(key)); +assert(vm.$te(key, locale)); + +/** + * VueI18n + */ +{ + let path: VueI18n.Path; + let locale: VueI18n.Locale; + let values: VueI18n.Values; + let choice: VueI18n.Choice; + let localeMessage: VueI18n.LocaleMessage; + let localeMessageObject: VueI18n.LocaleMessageObject; + let localeMessageArray: VueI18n.LocaleMessageArray; + let localeMessages: VueI18n.LocaleMessages; + let translateResult: VueI18n.TranslateResult; + let formatter: VueI18n.Formatter; + let missingHandler: VueI18n.MissingHandler; + let i18nOptions: VueI18n.I18nOptions; +} From ad0f7f7838863fb4f058f3e76cdc558512f43d4a Mon Sep 17 00:00:00 2001 From: Ian Copp Date: Fri, 21 Apr 2017 13:51:43 -0700 Subject: [PATCH 83/90] Add electron-settings module (#16052) * Add electron-settings package * Correct for JSON typing * Update to export interface instead of class --- .../electron-settings-tests.ts | 26 ++++ types/electron-settings/index.d.ts | 122 ++++++++++++++++++ types/electron-settings/tsconfig.json | 22 ++++ types/electron-settings/tslint.json | 1 + 4 files changed, 171 insertions(+) create mode 100644 types/electron-settings/electron-settings-tests.ts create mode 100644 types/electron-settings/index.d.ts create mode 100644 types/electron-settings/tsconfig.json create mode 100644 types/electron-settings/tslint.json diff --git a/types/electron-settings/electron-settings-tests.ts b/types/electron-settings/electron-settings-tests.ts new file mode 100644 index 0000000000..a1fad17f10 --- /dev/null +++ b/types/electron-settings/electron-settings-tests.ts @@ -0,0 +1,26 @@ +import settings = require("electron-settings"); + +settings.has('foo.bar'); // $ExpectType boolean + +settings.set('foo.bar', 'test'); // $ExpectType Settings +settings.set('foo.bar', 'test', {prettify: true}); // $ExpectType Settings +settings.set('foo.bar', {test: 'test'}); // $ExpectType Settings +settings.set('foo.bar', {test: 'test'}, {prettify: true}); // $ExpectType Settings + +settings.setAll({foo: {bar: 'test'}}); // $ExpectType Settings +settings.setAll({foo: {bar: 'test'}}, {prettify: true}); // $ExpectType Settings + +settings.get('foo.bar'); // $ExpectType JsonValue +settings.get('foo.bar', 'test'); // $ExpectType JsonValue + +settings.getAll(); // $ExpectType JsonValue + +settings.delete('foo.bar'); // $ExpectType Settings +settings.delete('foo.bar', {prettify: true}); // $ExpectType Settings + +settings.deleteAll(); // $ExpectType Settings +settings.deleteAll({prettify: true}); // $ExpectType Settings + +settings.watch('foo.bar', () => {}); // $ExpectType SettingsObserver + +settings.file(); // $ExpectType string diff --git a/types/electron-settings/index.d.ts b/types/electron-settings/index.d.ts new file mode 100644 index 0000000000..21bc1fb446 --- /dev/null +++ b/types/electron-settings/index.d.ts @@ -0,0 +1,122 @@ +// Type definitions for electron-settings 3.0 +// Project: https://github.com/nathanbuchar/electron-settings#readme +// Definitions by: Ian Copp +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +/// + +import * as fs from "fs"; + +type SettingsHandler = (newValue: any, oldValue: any) => any; + +interface JsonObject { + [x: string]: JsonValue; +} + +interface JsonArray extends Array {} // tslint:disable-line no-empty-interface + +type JsonValue = string | number | boolean | null | JsonArray | JsonObject; + +interface SettingsOptions { + /** + * Prettify the JSON output. Defaults to `false`. + */ + prettify?: boolean; +} + +interface Settings extends NodeJS.EventEmitter { + /** + * Returns a boolean indicating whether the settings object contains the + * given key path. + */ + has(keyPath: string): boolean; + + /** + * Sets the value at the given key path and returns the Settings instance. + * Chainable. + * @param keyPath The path to the key whose value we wish to set. This key + * need not already exist. + * @param value The value to set the key at the chosen key path to. This + * must be a data type supported by JSON. + * @see #setAll + */ + set(keyPath: string, value: JsonValue, options?: SettingsOptions): Settings; + + /** + * Sets all settings and returns the Settings instance. Chainable. + * @param obj The new settings object. + * @see #set + */ + setAll(obj: JsonValue, options?: SettingsOptions): Settings; + + /** + * Returns the value at the given key path, or sets the value at that key + * path to the default value, if provided, if the key does not exist. + * @param defaultValue The value to apply if the setting does not already + * exist. + * @see #getAll + */ + get(keyPath: string, defaultValue?: any): JsonValue; + + /** + * Returns all settings. + * @see #get + */ + getAll(): JsonValue; + + /** + * Deletes the key and value at the given key path and returns the Settings + * instance. Chainable. + * @see #deleteAll + */ + delete(keyPath: string, options?: SettingsOptions): Settings; + + /** + * Deletes all settings and returns the Settings instance. Chainable. + * @see #delete + */ + deleteAll(options?: SettingsOptions): Settings; + + /** + * Returns an Observer instance which watches the given key path for changes + * and calls the given handler if the value changes. To unsubscribe from + * changes, call observer.dispose(). + * @param keyPath The path to the key that we wish to watch for changes. + * @param handler The callback that will be invoked if the value at the + * chosen key path changes. The context of this callback is + * that of the observer instance. + */ + watch(keyPath: string, handler: SettingsHandler): SettingsObserver; + + /** + * Returns the absolute path to where the settings file is or will be + * stored. + * + * In general, the settings file is stored in your app's user data directory + * in a file called Settings. The default user data directory for your + * system can be found below. + * + * * MacOS: If you're running macOS, your app's default user data directory + * is `~/Library/Application\ Support/`. + * * Windows: If you're running Windows, your app's default user data + * directory is `%APPDATA%/`. + * * Linux: If you're running Linux, your app's default user data directory + * is either `$XDG_CONFIG_HOME/` or `~/.config/`. + * + * If you wish, you may change your app's default user data directory by + * calling Electron's `app.setPath()` method before the ready event of the + * app module is emitted, but this is not recommended, as it will likely + * cause unintended consequences. + */ + file(): string; +} + +interface SettingsObserver { + /** + * Disposes of this Observer instance. + */ + dispose(): void; +} + +declare var settings: Settings; +export = settings; diff --git a/types/electron-settings/tsconfig.json b/types/electron-settings/tsconfig.json new file mode 100644 index 0000000000..a9a5a70afc --- /dev/null +++ b/types/electron-settings/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "electron-settings-tests.ts" + ] +} diff --git a/types/electron-settings/tslint.json b/types/electron-settings/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/electron-settings/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" } From 556084b73a66133e6d4cc47e3f426107972dcda1 Mon Sep 17 00:00:00 2001 From: Richard Wilburn Date: Sat, 22 Apr 2017 15:20:38 +0000 Subject: [PATCH 84/90] L.mapbox.accessToken is no longer a const but instead a settable variable (#15907) L.mapbox.accessToken is now set-able for left hand assignment as opposed to being a const. This matches the mapbox-gl typescript definition now and the intended behavior of mapbox (js). This solves the issue raised here: https://github.com/DefinitelyTyped/DefinitelyTyped/issues/15898 --- types/mapbox/index.d.ts | 2 +- types/mapbox/mapbox-tests.ts | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/types/mapbox/index.d.ts b/types/mapbox/index.d.ts index 87a34e4823..2fe8de9eaf 100644 --- a/types/mapbox/index.d.ts +++ b/types/mapbox/index.d.ts @@ -14,7 +14,7 @@ declare global { // Map ////////////////////////////////////////////////////////////////////// - const accessToken: string; + let accessToken: string; /** * Create and automatically configure a map with layers, markers, and interactivity. diff --git a/types/mapbox/mapbox-tests.ts b/types/mapbox/mapbox-tests.ts index f81a7b432e..f4d0750199 100644 --- a/types/mapbox/mapbox-tests.ts +++ b/types/mapbox/mapbox-tests.ts @@ -37,3 +37,6 @@ const marker2 = L.mapbox.featureLayer({ marker2.eachLayer((marker: L.Marker) => { marker.openPopup(); }); + +// Can set the API key via left hand assignment +L.mapbox.accessToken = "keyGoesHere"; From 8bb580b84676176cd630d0292f1df81c57ddc12c Mon Sep 17 00:00:00 2001 From: Johan Gorter Date: Sat, 22 Apr 2017 17:24:14 +0200 Subject: [PATCH 85/90] Sinon.JS Added missing methods (#15942) * Added missing methods * added test for sinon getCalls --- types/sinon/index.d.ts | 3 +++ types/sinon/sinon-tests.ts | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/types/sinon/index.d.ts b/types/sinon/index.d.ts index 4a02ec691a..7907d4a7ff 100644 --- a/types/sinon/index.d.ts +++ b/types/sinon/index.d.ts @@ -79,6 +79,7 @@ declare namespace Sinon { alwaysReturned(obj: any): boolean; invokeCallback(...args: any[]): void; getCall(n: number): SinonSpyCall; + getCalls(): SinonSpyCall[]; reset(): void; printf(format: string, ...args: any[]): string; restore(): void; @@ -260,6 +261,8 @@ declare namespace Sinon { setResponseBody(body: string): void; respond(status: number, headers: any, body: string): void; autoRespond(ms: number): void; + error(): void; + onerror(): void; } interface SinonFakeXMLHttpRequestStatic { diff --git a/types/sinon/sinon-tests.ts b/types/sinon/sinon-tests.ts index 2637d92c33..404cf1ef39 100644 --- a/types/sinon/sinon-tests.ts +++ b/types/sinon/sinon-tests.ts @@ -147,3 +147,11 @@ class TestCreateStubInstance { } sinon.createStubInstance(TestCreateStubInstance).someTestMethod('some argument'); + +function testGetCalls() { + var double = sinon.spy((a: number) => a * 2); + double(2); + double(4); + double.getCall(0).args.length === 1; + double.getCalls().find(call => call.args[0] === 4).returnValue === 8; +} \ No newline at end of file From 893a6331bab0bb187cfad63e722d3588afc8dffe Mon Sep 17 00:00:00 2001 From: Phoenix359 Date: Mon, 24 Apr 2017 16:56:09 +0200 Subject: [PATCH 86/90] cropperjs - Added the methods: `zoomTo` & `rotateTo` and the event: `zoom` (#15591) * Added the methods: `zoomTo` & `rotateTo` and the event: `zoom` Also changed the 6 events to have the correct (different) interface for the property: detail. * Updated react-cropper to newest cropperjs --- types/cropperjs/index.d.ts | 82 ++++++++++++++++++++++++++++++++++---- 1 file changed, 74 insertions(+), 8 deletions(-) diff --git a/types/cropperjs/index.d.ts b/types/cropperjs/index.d.ts index b157746301..89d35ed998 100644 --- a/types/cropperjs/index.d.ts +++ b/types/cropperjs/index.d.ts @@ -10,30 +10,41 @@ declare namespace cropperjs { CanvasShouldNotBeWithInTheContainer = 2, ContainerSshouldBeWithInTheCanvas = 3 } - export interface CropperCustomEvent extends CustomEvent { + export interface CropperReadyEvent extends CustomEvent { } + export interface CropperCropEvent extends CustomEvent { detail: Data; } + export interface CropperCropStepEvent extends CustomEvent { + detail: CropStepData; + } + export interface CropperZoomEvent extends CustomEvent { + detail: ZoomData; + } export interface CropperOptions { /** * Function called when crop box is ready */ - ready?: (event: CropperCustomEvent) => void; + ready?: (event: CropperReadyEvent) => void; /** * Function called when crop box is moved or resized */ - crop?: (event: CropperCustomEvent) => void; + crop?: (event: CropperCropEvent) => void; /** * Function called at start of crop box being moved or resized */ - cropstart?: (event: CropperCustomEvent) => void; + cropstart?: (event: CropperCropStepEvent) => void; /** * Function called when crop box is moved */ - cropmove?: (event: CropperCustomEvent) => void; + cropmove?: (event: CropperCropStepEvent) => void; /** * Function called when crop box is finished being moved or resized */ - cropend?: (event: CropperCustomEvent) => void; + cropend?: (event: CropperCropStepEvent) => void; + /** + * Function called when a cropper instance starts to zoom in or zoom out its canvas (image wrapper). + */ + zoom?: (event: CropperZoomEvent) => void; /** * Define the view mode of the cropper. * @default 0 @@ -231,6 +242,47 @@ declare namespace cropperjs { */ scaleY: number; } + interface CropStepData { + /** + * The original event that was triggered + * Options: + * `cropstart`: mousedown, touchstart and pointerdown + * `cropmove`: mousemove, touchmove and pointermove + * `cropend`: mouseup, touchend, touchcancel, pointerup and pointercancel + */ + originalEvent: Event; + /** + * Options: + * 'crop': create a new crop box + * 'move': move the canvas (image wrapper) + * 'zoom': zoom in / out the canvas (image wrapper) by touch + * 'e': resize the east side of the crop box + * 'w': resize the west side of the crop box + * 's': resize the south side of the crop box + * 'n': resize the north side of the crop box + * 'se': resize the southeast side of the crop box + * 'sw': resize the southwest side of the crop box + * 'ne': resize the northeast side of the crop box + * 'nw': resize the northwest side of the crop box + * 'all': move the crop box (all directions) + */ + action: string; + } + interface ZoomData { + /** + * The original event that was triggered + * Options: wheel, touchmove + */ + originalEvent: Event; + /** + * The old (current) ratio of the canvas + */ + oldRatio: number; + /** + * The new (next) ratio of the canvas (canvasData.width / canvasData.naturalWidth) + */ + ratio: number; + } interface ContainerData { /** * The current width of the container @@ -338,8 +390,8 @@ declare namespace cropperjs { declare class cropperjs { constructor(element: HTMLImageElement, options: cropperjs.CropperOptions); /** - * Show the crop box manually. - */ + * Show the crop box manually. + */ crop(): void; /** @@ -391,6 +443,13 @@ declare class cropperjs { */ zoom(ratio: number): void; + /** + * Zoom the canvas (image wrapper) to an absolute ratio. + * Zoom in: requires a positive number (ratio > 0) + * Zoom out: requires a negative number (ratio < 0) + */ + zoomTo(ratio: number): void; + /** * Rotate the canvas (image wrapper) with a relative degree. * Rotate right: requires a positive number (degree > 0) @@ -398,6 +457,13 @@ declare class cropperjs { */ rotate(degree: number): void; + /** + * Rotate the canvas (image wrapper) to an absolute degree. + * Rotate right: requires a positive number (degree > 0) + * Rotate left: requires a negative number (degree < 0) + */ + rotateTo(degree: number): void; + /** * Clear the crop box. */ From f67e0a47038420fb5119f42ada5792986bcc891d Mon Sep 17 00:00:00 2001 From: Ali Taheri Moghaddar Date: Mon, 24 Apr 2017 19:27:18 +0430 Subject: [PATCH 87/90] Add typings for react-faux-dom (#16072) --- types/react-faux-dom/index.d.ts | 29 +++++++++++++++++++ types/react-faux-dom/react-faux-dom-tests.tsx | 23 +++++++++++++++ types/react-faux-dom/tsconfig.json | 24 +++++++++++++++ types/react-faux-dom/tslint.json | 1 + 4 files changed, 77 insertions(+) create mode 100644 types/react-faux-dom/index.d.ts create mode 100644 types/react-faux-dom/react-faux-dom-tests.tsx create mode 100644 types/react-faux-dom/tsconfig.json create mode 100644 types/react-faux-dom/tslint.json diff --git a/types/react-faux-dom/index.d.ts b/types/react-faux-dom/index.d.ts new file mode 100644 index 0000000000..ccfd52cbd9 --- /dev/null +++ b/types/react-faux-dom/index.d.ts @@ -0,0 +1,29 @@ +// Type definitions for react-faux-dom 3.1 +// Project: https://github.com/Olical/react-faux-dom +// Definitions by: Ali Taheri Moghaddar +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +import * as React from "react"; + +export class Element extends HTMLElement { + style: any; + + constructor(nodeName: string, parentNode?: Element); + + toReact(): React.ReactElement; +} + +export const defaultView: { + getComputedStyle(node: Element): { getPropertyValue(name: string): string }; +}; + +export namespace mixins { + const core: any; + const anim: any; +} + +export function createElement(nodeName: string): Element; + +export function createElementNS(namespace: string, nodeName: string): Element; + +export function compareDocumentPosition(): number; diff --git a/types/react-faux-dom/react-faux-dom-tests.tsx b/types/react-faux-dom/react-faux-dom-tests.tsx new file mode 100644 index 0000000000..5541da849d --- /dev/null +++ b/types/react-faux-dom/react-faux-dom-tests.tsx @@ -0,0 +1,23 @@ +import * as React from 'react'; +import * as d3 from 'd3'; +import { createElement, Element } from 'react-faux-dom'; + +class SomeChart extends React.Component { + render() { + const el = createElement('div'); + + const paragraph = new Element('p', el); + paragraph.appendChild(createElement('a')); + paragraph.appendChild(createElement('span')); + + paragraph.textContent = 'Hello, World!'; + paragraph.style = 'color:red'; + + d3.select(el).append('div').html('Hello World!'); + + el.style.setProperty('color', 'red'); + el.setAttribute('class', 'box'); + + return el.toReact(); + } +} diff --git a/types/react-faux-dom/tsconfig.json b/types/react-faux-dom/tsconfig.json new file mode 100644 index 0000000000..a7354d8795 --- /dev/null +++ b/types/react-faux-dom/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6", + "dom" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true, + "jsx": "react" + }, + "files": [ + "index.d.ts", + "react-faux-dom-tests.tsx" + ] +} \ No newline at end of file diff --git a/types/react-faux-dom/tslint.json b/types/react-faux-dom/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/react-faux-dom/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" } From 24b56d44ab7f921c29a2c0ca6e95e1b13d94c27f Mon Sep 17 00:00:00 2001 From: Alexandro Libertino Date: Mon, 24 Apr 2017 22:06:53 +0700 Subject: [PATCH 88/90] add typings for "node-ipc" package (#16070) * add typings for node-ipc package * fix tslint error --- types/node-ipc/index.d.ts | 326 +++++++++++++++++++++++++++++++ types/node-ipc/node-ipc-tests.ts | 63 ++++++ types/node-ipc/tsconfig.json | 22 +++ types/node-ipc/tslint.json | 3 + 4 files changed, 414 insertions(+) create mode 100644 types/node-ipc/index.d.ts create mode 100644 types/node-ipc/node-ipc-tests.ts create mode 100644 types/node-ipc/tsconfig.json create mode 100644 types/node-ipc/tslint.json diff --git a/types/node-ipc/index.d.ts b/types/node-ipc/index.d.ts new file mode 100644 index 0000000000..2f33935a86 --- /dev/null +++ b/types/node-ipc/index.d.ts @@ -0,0 +1,326 @@ +// Type definitions for node-ipc 9.0 +// Project: http://riaevangelist.github.io/node-ipc/ +// Definitions by: Arvitaly +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +/// +import { Socket } from "net"; +declare namespace NodeIPC { + class IPC { + /** + * Set these variables in the ipc.config scope to overwrite or set default values + */ + config: Config; + /** + * https://www.npmjs.com/package/node-ipc#log + */ + log(...args: any[]): void; + /** + * https://www.npmjs.com/package/node-ipc#connectto + * Used for connecting as a client to local Unix Sockets and Windows Sockets. + * This is the fastest way for processes on the same machine to communicate + * because it bypasses the network card which TCP and UDP must both use. + * @param id is the string id of the socket being connected to. + * The socket with this id is added to the ipc.of object when created. + * @param path is the path of the Unix Domain Socket File, if the System is Windows, + * this will automatically be converted to an appropriate pipe with the same information as the Unix Domain Socket File. + * If not set this will default to ipc.config.socketRoot+ipc.config.appspace+id + * @param callback this is the function to execute when the socket has been created + */ + connectTo(id: string, path?: string, callback?: () => void): void; + /** + * https://www.npmjs.com/package/node-ipc#connectto + * Used for connecting as a client to local Unix Sockets and Windows Sockets. + * This is the fastest way for processes on the same machine to communicate + * because it bypasses the network card which TCP and UDP must both use. + * @param id is the string id of the socket being connected to. + * The socket with this id is added to the ipc.of object when created. + * @param callback this is the function to execute when the socket has been created + */ + connectTo(id: string, callback?: () => void): void; + /** + * https://www.npmjs.com/package/node-ipc#connecttonet + * Used to connect as a client to a TCP or TLS socket via the network card. + * This can be local or remote, if local, it is recommended that you use the Unix + * and Windows Socket Implementaion of connectTo instead as it is much faster since it avoids the network card altogether. + * For TLS and SSL Sockets see the node-ipc TLS and SSL docs. + * They have a few additional requirements, and things to know about and so have their own doc. + * @param id is the string id of the socket being connected to. For TCP & TLS sockets, + * this id is added to the ipc.of object when the socket is created with a reference to the socket + * @param host is the host on which the TCP or TLS socket resides. + * This will default to ipc.config.networkHost if not specified + * @param port the port on which the TCP or TLS socket resides + * @param callback this is the function to execute when the socket has been created + */ + connectToNet(id: string, host?: string, port?: number, callback?: () => void): void; + /** + * https://www.npmjs.com/package/node-ipc#connecttonet + * Used to connect as a client to a TCP or TLS socket via the network card. + * This can be local or remote, if local, it is recommended that you use the Unix + * and Windows Socket Implementaion of connectTo instead as it is much faster since it avoids the network card altogether. + * For TLS and SSL Sockets see the node-ipc TLS and SSL docs. + * They have a few additional requirements, and things to know about and so have their own doc. + * @param id is the string id of the socket being connected to. For TCP & TLS sockets, + * this id is added to the ipc.of object when the socket is created with a reference to the socket + * @param callback this is the function to execute when the socket has been created + */ + connectToNet(id: string, callback?: () => void): void; + /** + * https://www.npmjs.com/package/node-ipc#connecttonet + * Used to connect as a client to a TCP or TLS socket via the network card. + * This can be local or remote, if local, it is recommended that you use the Unix + * and Windows Socket Implementaion of connectTo instead as it is much faster since it avoids the network card altogether. + * For TLS and SSL Sockets see the node-ipc TLS and SSL docs. + * They have a few additional requirements, and things to know about and so have their own doc. + * @param id is the string id of the socket being connected to. + * For TCP & TLS sockets, this id is added to the ipc.of object when the socket is created with a reference to the socket + * @param host is the host on which the TCP or TLS socket resides. This will default to ipc.config.networkHost if not specified + * @param port the port on which the TCP or TLS socket resides + * @param callback this is the function to execute when the socket has been created + */ + connectToNet(id: string, hostOrPort: number | string, callback?: () => void): void; + /** + * https://www.npmjs.com/package/node-ipc#disconnect + * Used to disconnect a client from a Unix, Windows, TCP or TLS socket. + * The socket and its refrence will be removed from memory and the ipc.of scope. + * This can be local or remote. UDP clients do not maintain connections and so there are no Clients and this method has no value to them + * @param id is the string id of the socket from which to disconnect + */ + disconnect(id: string): void; + /** + * https://www.npmjs.com/package/node-ipc#serve + * Used to create local Unix Socket Server or Windows Socket Server to which Clients can bind. + * The server can emit events to specific Client Sockets, or broadcast events to all known Client Sockets + * @param path This is the path of the Unix Domain Socket File, if the System is Windows, + * this will automatically be converted to an appropriate pipe with the same information as the Unix Domain Socket File. + * If not set this will default to ipc.config.socketRoot+ipc.config.appspace+id + * @param callback This is a function to be called after the Server has started. + * This can also be done by binding an event to the start event like ipc.server.on('start',function(){}); + */ + serve(path: string, callback?: () => void): void; + /** + * https://www.npmjs.com/package/node-ipc#serve + * Used to create local Unix Socket Server or Windows Socket Server to which Clients can bind. + * The server can emit events to specific Client Sockets, or broadcast events to all known Client Sockets + * @param callback This is a function to be called after the Server has started. + * This can also be done by binding an event to the start event like ipc.server.on('start',function(){}); + */ + serve(callback?: () => void): void; + /** + * https://www.npmjs.com/package/node-ipc#serve + * Used to create local Unix Socket Server or Windows Socket Server to which Clients can bind. + * The server can emit events to specific Client Sockets, or broadcast events to all known Client Sockets + */ + serve(callback: null): void; + /** + * https://www.npmjs.com/package/node-ipc#servenet + * @param host If not specified this defaults to the first address in os.networkInterfaces(). + * For TCP, TLS & UDP servers this is most likely going to be 127.0.0.1 or ::1 + * @param port The port on which the TCP, UDP, or TLS Socket server will be bound, this defaults to 8000 if not specified + * @param UDPType If set this will create the server as a UDP socket. 'udp4' or 'udp6' are valid values. + * This defaults to not being set. When using udp6 make sure to specify a valid IPv6 host, like ::1 + * @param callback Function to be called when the server is created + */ + serveNet(host?: string, port?: number, UDPType?: "udp4" | "udp6", callback?: () => void): void; + /** + * https://www.npmjs.com/package/node-ipc#servenet + * @param UDPType If set this will create the server as a UDP socket. 'udp4' or 'udp6' are valid values. + * This defaults to not being set. When using udp6 make sure to specify a valid IPv6 host, like ::1 + * @param callback Function to be called when the server is created + */ + serveNet(UDPType: "udp4" | "udp6", callback?: () => void): void; + /** + * https://www.npmjs.com/package/node-ipc#servenet + * @param callback Function to be called when the server is created + * @param port The port on which the TCP, UDP, or TLS Socket server will be bound, this defaults to 8000 if not specified + */ + serveNet(callbackOrPort: EmptyCallback | number): void; + /** + * https://www.npmjs.com/package/node-ipc#servenet + * @param host If not specified this defaults to the first address in os.networkInterfaces(). + * For TCP, TLS & UDP servers this is most likely going to be 127.0.0.1 or ::1 + * @param port The port on which the TCP, UDP, or TLS Socket server will be bound, this defaults to 8000 if not specified + * @param callback Function to be called when the server is created + */ + serveNet(host: string, port: number, callback?: () => void): void; + /** + * This is where socket connection refrences will be stored when connecting to them as a client via the ipc.connectTo + * or iupc.connectToNet. They will be stored based on the ID used to create them, eg : ipc.of.mySocket + */ + of: any; + /** + * This is a refrence to the server created by ipc.serve or ipc.serveNet + */ + server: Server; + } + type EmptyCallback = () => void; + interface Client { + /** + * triggered when a JSON message is received. The event name will be the type string from your message + * and the param will be the data object from your message eg : { type:'myEvent',data:{a:1}} + */ + on(event: string, callback: (...args: any[]) => void): Client; + /** + * triggered when an error has occured + */ + on(event: "error", callback: (err: any) => void): Client; + /** + * connect - triggered when socket connected + * disconnect - triggered by client when socket has disconnected from server + * destroy - triggered when socket has been totally destroyed, no further auto retries will happen and all references are gone + */ + on(event: "connect" | "disconnect" | "destroy", callback: () => void): Client; + /** + * triggered by server when a client socket has disconnected + */ + on(event: "socket.disconnected", callback: (socket: Socket, destroyedSocketID: string) => void): Client; + /** + * triggered when ipc.config.rawBuffer is true and a message is received + */ + on(event: "data", callback: (buffer: Buffer) => void): Client; + emit(event: string, value?: any): Client; + } + interface Server extends Client { + /** + * start serving need top call serve or serveNet first to set up the server + */ + start(): void; + /** + * close the server and stop serving + */ + stop(): void; + emit(value: any): Client; + emit(event: string, value: any): Client; + emit(socket: Socket | SocketConfig, event: string, value?: any): Server; + emit(socketConfig: Socket | SocketConfig, value?: any): Server; + } + interface SocketConfig { + address?: string; + port?: number; + } + interface Config { + /** + * Default: 'app.' + * Used for Unix Socket (Unix Domain Socket) namespacing. + * If not set specifically, the Unix Domain Socket will combine the socketRoot, appspace, + * and id to form the Unix Socket Path for creation or binding. + * This is available incase you have many apps running on your system, you may have several sockets with the same id, + * but if you change the appspace, you will still have app specic unique sockets + */ + appspace: string; + /** + * Default: '/tmp/' + * The directory in which to create or bind to a Unix Socket + */ + socketRoot: string; + /** + * Default: os.hostname() + * The id of this socket or service + */ + id: string; + /** + * Default: 'localhost' + * The local or remote host on which TCP, TLS or UDP Sockets should connect + * Should resolve to 127.0.0.1 or ::1 see the table below related to this + */ + networkHost: string; + /** + * Default: 8000 + * The default port on which TCP, TLS, or UDP sockets should connect + */ + networkPort: number; + /** + * Default: 'utf8' + * the default encoding for data sent on sockets. Mostly used if rawBuffer is set to true. + * Valid values are : ascii utf8 utf16le ucs2 base64 hex + */ + encoding: "ascii" | "utf8" | "utf16le" | "ucs2" | "base64" | "hex"; + /** + * Default: false + * If true, data will be sent and received as a raw node Buffer NOT an Object as JSON. + * This is great for Binary or hex IPC, and communicating with other processes in languages like C and C++ + */ + rawBuffer: boolean; + /** + * Default: false + * Synchronous requests. Clients will not send new requests until the server answers + */ + sync: boolean; + /** + * Default: false + * Turn on/off logging default is false which means logging is on + */ + silent: boolean; + /** + * Default: true + * Turn on/off util.inspect colors for ipc.log + */ + logInColor: boolean; + /** + * Default: 5 + * Set the depth for util.inspect during ipc.log + */ + logDepth: number; + /** + * Default: 100 + * This is the max number of connections allowed to a socket. It is currently only being set on Unix Sockets. + * Other Socket types are using the system defaults + */ + maxConnections: number; + /** + * Default: 500 + * This is the time in milliseconds a client will wait before trying to reconnect to a server if the connection is lost. + * This does not effect UDP sockets since they do not have a client server relationship like Unix Sockets and TCP Sockets + */ + retry: number; + /* */ + /** + * Default: false + * if set, it represents the maximum number of retries after each disconnect before giving up + * and completely killing a specific connection + */ + maxRetries: boolean; + /** + * Default: false + * Defaults to false meaning clients will continue to retry to connect to servers indefinitely at the retry interval. + * If set to any number the client will stop retrying when that number is exceeded after each disconnect. + * If set to true in real time it will immediately stop trying to connect regardless of maxRetries. + * If set to 0, the client will NOT try to reconnect + */ + stopRetrying: boolean; + /** + * Primarily used when specifying which interface a client should connect through. + * see the socket.connect documentation in the node.js api https://nodejs.org/api/net.html#net_socket_connect_options_connectlistener + */ + interfaces: { + /** + * Default: false + */ + localAddress?: boolean; + /** + * Default: false + */ + localPort?: boolean; + /** + * Default: false + */ + family?: boolean; + /** + * Default: false + */ + hints?: boolean; + /** + * Default: false + */ + lookup?: boolean; + }; + tls: { + rejectUnauthorized?: boolean; + public?: string; + private?: string; + }; + } +} + +declare const RootIPC: NodeIPC.IPC & { IPC: new () => NodeIPC.IPC }; + +export = RootIPC; diff --git a/types/node-ipc/node-ipc-tests.ts b/types/node-ipc/node-ipc-tests.ts new file mode 100644 index 0000000000..b6affa8f16 --- /dev/null +++ b/types/node-ipc/node-ipc-tests.ts @@ -0,0 +1,63 @@ +import { Socket } from "net"; +import RawIPC = require("node-ipc"); +let ipc = new RawIPC.IPC(); +ipc = RawIPC; +ipc.config.appspace = "./x"; +ipc.config.encoding = "base64"; +ipc.config.id = "id1"; +ipc.config.interfaces = { + localAddress: true, + family: true, + hints: false, + localPort: true, + lookup: false, +}; +ipc.config.logDepth = 6; +ipc.config.logInColor = true; +ipc.config.maxConnections = 200; +ipc.config.maxRetries = false; +ipc.config.networkHost = "127.0.0.1"; +ipc.config.networkPort = 8000; +ipc.config.rawBuffer = true; +ipc.config.retry = 1000; +ipc.config.silent = true; +ipc.config.socketRoot = ""; +ipc.config.stopRetrying = false; +ipc.config.sync = true; +ipc.config.tls = { + rejectUnauthorized: false, + public: "", + private: "", +}; +ipc.connectTo("world"); +ipc.connectTo("world", () => { }); +ipc.connectTo("id1", "path1", () => { }); +ipc.connectToNet("world"); +ipc.connectToNet("world", () => { }); +ipc.connectToNet("world", "myapp.com", 3435); +ipc.connectToNet("world", "myapp.com", 3435, () => { }); +ipc.connectToNet("world", 3435, () => { }); +ipc.disconnect("id"); +ipc.serve(); +ipc.serve(null); +ipc.serve("path", () => { }); +ipc.serve(() => { }); +ipc.serveNet(); +ipc.serveNet("udp4"); +ipc.serveNet(() => { }); +ipc.serveNet("udp4", () => { }); +ipc.serveNet(3435); +ipc.serveNet("MyMostAwesomeApp.com", 3435, () => { }); +ipc.serveNet("MyMostAwesomeApp.com", 3435, "udp4", () => { }); +ipc.of.world.on("error", (err: any) => { }); +ipc.of.world.on("connect", () => { }); +ipc.of.world.on("disconnect", () => { }); +ipc.of.world.on("data", (buf: Buffer) => { buf.byteLength; }); +ipc.of.world.on("socket.disconnected", (socket: Socket, id: string) => { id.toLowerCase(); }); +ipc.of.world.on("message", (data: any, data2: any) => { }); +ipc.server.emit("event", [1, 2, 3]); +const myBuffer = new Buffer(6).fill(0); +let socket: Socket = {} as any; +ipc.server.emit(socket, myBuffer); +ipc.server.emit([10, 20, 30]); +ipc.server.emit({ address: 'localhost', port: 8000 }, "message", { id: ipc.config.id, message: 'Goodbye' }); diff --git a/types/node-ipc/tsconfig.json b/types/node-ipc/tsconfig.json new file mode 100644 index 0000000000..c691342ad8 --- /dev/null +++ b/types/node-ipc/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "node-ipc-tests.ts" + ] +} \ No newline at end of file diff --git a/types/node-ipc/tslint.json b/types/node-ipc/tslint.json new file mode 100644 index 0000000000..e60c15844f --- /dev/null +++ b/types/node-ipc/tslint.json @@ -0,0 +1,3 @@ +{ + "extends": "dtslint/dt.json" +} \ No newline at end of file From 931b3306e56aaff41982aba21bfc1c57ffa39ca4 Mon Sep 17 00:00:00 2001 From: Thomas Tilkema Date: Mon, 24 Apr 2017 17:07:54 +0200 Subject: [PATCH 89/90] [detect-it] Add typings (#16074) * Added definition for detect-hover * Added definition for detect-passive-events * Added definition for detect-pointer * Added definition for detect-touch-events * Added definition for detect-it * Deleted unnecessary package.json --- types/detect-hover/detect-hover-tests.ts | 3 ++ types/detect-hover/index.d.ts | 16 +++++++++ types/detect-hover/tsconfig.json | 22 +++++++++++++ types/detect-hover/tslint.json | 1 + types/detect-it/detect-it-tests.ts | 3 ++ types/detect-it/index.d.ts | 33 +++++++++++++++++++ types/detect-it/tsconfig.json | 22 +++++++++++++ types/detect-it/tslint.json | 1 + .../detect-passive-events-tests.ts | 3 ++ types/detect-passive-events/index.d.ts | 13 ++++++++ types/detect-passive-events/tsconfig.json | 22 +++++++++++++ types/detect-passive-events/tslint.json | 1 + types/detect-pointer/detect-pointer-tests.ts | 3 ++ types/detect-pointer/index.d.ts | 19 +++++++++++ types/detect-pointer/tsconfig.json | 22 +++++++++++++ types/detect-pointer/tslint.json | 1 + .../detect-touch-events-tests.ts | 3 ++ types/detect-touch-events/index.d.ts | 14 ++++++++ types/detect-touch-events/tsconfig.json | 22 +++++++++++++ types/detect-touch-events/tslint.json | 1 + 20 files changed, 225 insertions(+) create mode 100644 types/detect-hover/detect-hover-tests.ts create mode 100644 types/detect-hover/index.d.ts create mode 100644 types/detect-hover/tsconfig.json create mode 100644 types/detect-hover/tslint.json create mode 100644 types/detect-it/detect-it-tests.ts create mode 100644 types/detect-it/index.d.ts create mode 100644 types/detect-it/tsconfig.json create mode 100644 types/detect-it/tslint.json create mode 100644 types/detect-passive-events/detect-passive-events-tests.ts create mode 100644 types/detect-passive-events/index.d.ts create mode 100644 types/detect-passive-events/tsconfig.json create mode 100644 types/detect-passive-events/tslint.json create mode 100644 types/detect-pointer/detect-pointer-tests.ts create mode 100644 types/detect-pointer/index.d.ts create mode 100644 types/detect-pointer/tsconfig.json create mode 100644 types/detect-pointer/tslint.json create mode 100644 types/detect-touch-events/detect-touch-events-tests.ts create mode 100644 types/detect-touch-events/index.d.ts create mode 100644 types/detect-touch-events/tsconfig.json create mode 100644 types/detect-touch-events/tslint.json diff --git a/types/detect-hover/detect-hover-tests.ts b/types/detect-hover/detect-hover-tests.ts new file mode 100644 index 0000000000..0b0af02446 --- /dev/null +++ b/types/detect-hover/detect-hover-tests.ts @@ -0,0 +1,3 @@ +import detectHover from 'detect-hover'; + +detectHover.update(); diff --git a/types/detect-hover/index.d.ts b/types/detect-hover/index.d.ts new file mode 100644 index 0000000000..feb312d7c1 --- /dev/null +++ b/types/detect-hover/index.d.ts @@ -0,0 +1,16 @@ +// Type definitions for detect-hover 1.0 +// Project: https://github.com/rafrex/detect-hover#readme +// Definitions by: Thomas Tilkema +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +interface detectHover { + anyHover: boolean; + anyNone: boolean; + hover: boolean; + none: boolean; + + update(): void; +} + +declare const detectHover: detectHover; +export default detectHover; diff --git a/types/detect-hover/tsconfig.json b/types/detect-hover/tsconfig.json new file mode 100644 index 0000000000..d971a2660d --- /dev/null +++ b/types/detect-hover/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "detect-hover-tests.ts" + ] +} diff --git a/types/detect-hover/tslint.json b/types/detect-hover/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/detect-hover/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" } diff --git a/types/detect-it/detect-it-tests.ts b/types/detect-it/detect-it-tests.ts new file mode 100644 index 0000000000..676da309fb --- /dev/null +++ b/types/detect-it/detect-it-tests.ts @@ -0,0 +1,3 @@ +import detectIt from 'detect-it'; + +detectIt.update(); diff --git a/types/detect-it/index.d.ts b/types/detect-it/index.d.ts new file mode 100644 index 0000000000..afa2779f65 --- /dev/null +++ b/types/detect-it/index.d.ts @@ -0,0 +1,33 @@ +// Type definitions for detect-it 2.1 +// Project: https://github.com/rafrex/detect-it#readme +// Definitions by: Thomas Tilkema +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +import detectHover from 'detect-hover'; +import detectPassiveEvents from 'detect-passive-events'; +import detectPointer from 'detect-pointer'; +import detectTouchEvents from 'detect-touch-events'; + +interface detectIt { + deviceType: 'hybrid' | 'mouseOnly' | 'touchOnly'; + hasMouse: boolean; + hasTouch: boolean; + maxTouchPoints: number; + passiveEvents: boolean; + primaryHover: 'hover' | 'none'; + primaryPointer: 'coarse' | 'fine' | 'none'; + + state: state; + + update(): void; +} + +interface state { + detectHover: detectHover; + detectPassiveEvents: detectPassiveEvents; + detectPointer: detectPointer; + detectTouchEvents: detectTouchEvents; +} + +declare const detectIt: detectIt; +export default detectIt; diff --git a/types/detect-it/tsconfig.json b/types/detect-it/tsconfig.json new file mode 100644 index 0000000000..16c8ccd62b --- /dev/null +++ b/types/detect-it/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "detect-it-tests.ts" + ] +} diff --git a/types/detect-it/tslint.json b/types/detect-it/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/detect-it/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" } diff --git a/types/detect-passive-events/detect-passive-events-tests.ts b/types/detect-passive-events/detect-passive-events-tests.ts new file mode 100644 index 0000000000..ba045970a2 --- /dev/null +++ b/types/detect-passive-events/detect-passive-events-tests.ts @@ -0,0 +1,3 @@ +import detectPassiveEvents from 'detect-passive-events'; + +detectPassiveEvents.update(); diff --git a/types/detect-passive-events/index.d.ts b/types/detect-passive-events/index.d.ts new file mode 100644 index 0000000000..d5c499ed0d --- /dev/null +++ b/types/detect-passive-events/index.d.ts @@ -0,0 +1,13 @@ +// Type definitions for detect-passive-events 1.0 +// Project: https://github.com/rafrex/detect-passive-events#readme +// Definitions by: Thomas Tilkema +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +interface detectPassiveEvents { + hasSupport: boolean; + + update(): void; +} + +declare const detectPassiveEvents: detectPassiveEvents; +export default detectPassiveEvents; diff --git a/types/detect-passive-events/tsconfig.json b/types/detect-passive-events/tsconfig.json new file mode 100644 index 0000000000..c79e68ee75 --- /dev/null +++ b/types/detect-passive-events/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "detect-passive-events-tests.ts" + ] +} diff --git a/types/detect-passive-events/tslint.json b/types/detect-passive-events/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/detect-passive-events/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" } diff --git a/types/detect-pointer/detect-pointer-tests.ts b/types/detect-pointer/detect-pointer-tests.ts new file mode 100644 index 0000000000..a873565981 --- /dev/null +++ b/types/detect-pointer/detect-pointer-tests.ts @@ -0,0 +1,3 @@ +import detectPointer from 'detect-pointer'; + +detectPointer.update(); diff --git a/types/detect-pointer/index.d.ts b/types/detect-pointer/index.d.ts new file mode 100644 index 0000000000..5a7cd4883e --- /dev/null +++ b/types/detect-pointer/index.d.ts @@ -0,0 +1,19 @@ +// Type definitions for detect-pointer 1.0 +// Project: https://github.com/rafrex/detect-pointer#readme +// Definitions by: Thomas Tilkema +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +interface detectPointer { + anyCoarse: boolean; + anyFine: boolean; + anyNone: boolean; + + coarse: boolean; + fine: boolean; + none: boolean; + + update(): void; +} + +declare const detectPointer: detectPointer; +export default detectPointer; diff --git a/types/detect-pointer/tsconfig.json b/types/detect-pointer/tsconfig.json new file mode 100644 index 0000000000..96115ec503 --- /dev/null +++ b/types/detect-pointer/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "detect-pointer-tests.ts" + ] +} diff --git a/types/detect-pointer/tslint.json b/types/detect-pointer/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/detect-pointer/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" } diff --git a/types/detect-touch-events/detect-touch-events-tests.ts b/types/detect-touch-events/detect-touch-events-tests.ts new file mode 100644 index 0000000000..aedcba5d20 --- /dev/null +++ b/types/detect-touch-events/detect-touch-events-tests.ts @@ -0,0 +1,3 @@ +import detectTouchEvents from 'detect-touch-events'; + +detectTouchEvents.update(); diff --git a/types/detect-touch-events/index.d.ts b/types/detect-touch-events/index.d.ts new file mode 100644 index 0000000000..f939a04001 --- /dev/null +++ b/types/detect-touch-events/index.d.ts @@ -0,0 +1,14 @@ +// Type definitions for detect-touch-events 1.0 +// Project: https://github.com/rafrex/detect-touch-events#readme +// Definitions by: Thomas Tilkema +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +interface detectTouchEvents { + hasApi: boolean; + maxTouchPoints: number; + + update(): void; +} + +declare const detectTouchEvents: detectTouchEvents; +export default detectTouchEvents; diff --git a/types/detect-touch-events/tsconfig.json b/types/detect-touch-events/tsconfig.json new file mode 100644 index 0000000000..018928fa50 --- /dev/null +++ b/types/detect-touch-events/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "detect-touch-events-tests.ts" + ] +} diff --git a/types/detect-touch-events/tslint.json b/types/detect-touch-events/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/detect-touch-events/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" } From 669b518e91b5c3fdb703b87cb10c6414aa921db4 Mon Sep 17 00:00:00 2001 From: Sriram Thiagarajan Date: Mon, 24 Apr 2017 20:48:27 +0530 Subject: [PATCH 90/90] knex: added *Distinct functions (#16094) * added knexjs *Distinct functions These functions seem to have been added in v0.10.0 - https://github.com/tgriesser/knex/blob/620ade8c6d61a01f20e8743017a32e2f226d9e73/CHANGELOG.md#other-changes-2 * fix typo --- types/knex/index.d.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/types/knex/index.d.ts b/types/knex/index.d.ts index 9d5baa8175..5e926679b1 100644 --- a/types/knex/index.d.ts +++ b/types/knex/index.d.ts @@ -120,10 +120,13 @@ declare namespace Knex { // Aggregation count(columnName?: string): QueryBuilder; + countDistinct(columnName?: string): QueryBuilder; min(columnName: string): QueryBuilder; max(columnName: string): QueryBuilder; sum(columnName: string): QueryBuilder; + sumDistinct(columnName: string): QueryBuilder; avg(columnName: string): QueryBuilder; + avgDistinct(columnName: string): QueryBuilder; increment(columnName: string, amount?: number): QueryBuilder; decrement(columnName: string, amount?: number): QueryBuilder;