From 861aeb58a561c22d88f7808257edaaf80f26c8b2 Mon Sep 17 00:00:00 2001 From: Ryan Cannon Date: Mon, 29 Jan 2018 15:58:17 +0000 Subject: [PATCH 01/99] [express-session]: Allow secret to be an array From [the readme](https://github.com/expressjs/session#secret): > This is the secret used to sign the session ID cookie. This can be either a string for a single secret, or an array of multiple secrets. If an array of secrets is provided, only the first element will be used to sign the session ID cookie, while all the elements will be considered when verifying the signature in requests. --- types/express-session/index.d.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/types/express-session/index.d.ts b/types/express-session/index.d.ts index 13ce6ab8b2..20343873f1 100644 --- a/types/express-session/index.d.ts +++ b/types/express-session/index.d.ts @@ -1,6 +1,8 @@ // Type definitions for express-session 1.15 // Project: https://www.npmjs.org/package/express-session -// Definitions by: Hiroki Horiuchi , Jacob Bogers +// Definitions by: Hiroki Horiuchi +// Jacob Bogers +// Ryan Cannon // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.2 @@ -51,7 +53,7 @@ declare function session(options?: session.SessionOptions): express.RequestHandl declare namespace session { interface SessionOptions { - secret: string; + secret: string | string[]; name?: string; store?: Store | MemoryStore; cookie?: express.CookieOptions; From acb7a9a4360217ad3fc9bcd5cc27027c1d127516 Mon Sep 17 00:00:00 2001 From: Jefff Nelson Date: Tue, 30 Jan 2018 18:26:43 -0800 Subject: [PATCH 02/99] Add filters to ldapjs --- types/ldapjs/index.d.ts | 45 ++++++++++++++++- types/ldapjs/ldapjs-tests.ts | 97 ++++++++++++++++++++++++++++++++---- 2 files changed, 131 insertions(+), 11 deletions(-) diff --git a/types/ldapjs/index.d.ts b/types/ldapjs/index.d.ts index 8034add042..b2444ae232 100644 --- a/types/ldapjs/index.d.ts +++ b/types/ldapjs/index.d.ts @@ -52,7 +52,7 @@ export interface ClientOptions { export interface SearchOptions { scope?: string; - filter?: string; + filter?: string | Filter; attributes?: string[]; sizeLimit?: number; timeLimit?: number; @@ -238,3 +238,46 @@ export interface Client extends EventEmitter { } export function createClient(options?: ClientOptions): Client; + +declare class Filter { + matches(obj: any): boolean; + type: string; +} + +export function parseFilter(filterString: string): Filter; + +export class EqualityFilter extends Filter { + constructor(options: { attribute: string, value: string }) +} + +export class PresenceFilter extends Filter { + constructor(options: { attribute: string }) +} + +export class SubstringFilter extends Filter { + constructor(options: { attribute: string, initial: string, any?: string[], final?: string }) +} + +export class GreaterThanEqualsFilter extends Filter { + constructor(options: { attribute: string, value: string }) +} + +export class LessThanEqualsFilter extends Filter { + constructor(options: { attribute: string, value: string }) +} + +export class AndFilter extends Filter { + constructor(options: { filters: Filter[] }) +} + +export class OrFilter extends Filter { + constructor(options: { filters: Filter[] }) +} + +export class NotFilter extends Filter { + constructor(options: { filter: Filter }) +} + +export class ApproximateFilter extends Filter { + constructor(options: { attribute: string, value: string }) +} diff --git a/types/ldapjs/ldapjs-tests.ts b/types/ldapjs/ldapjs-tests.ts index ec106fd29a..51a0edbd77 100644 --- a/types/ldapjs/ldapjs-tests.ts +++ b/types/ldapjs/ldapjs-tests.ts @@ -2,7 +2,7 @@ import ldap = require("ldapjs"); let client = ldap.createClient({ - url: 'ldap://127.0.0.1:1389' + url: 'ldap://127.0.0.1:1389' }); client.bind('cn=root', 'secret', (err: Error): void => { @@ -10,9 +10,9 @@ client.bind('cn=root', 'secret', (err: Error): void => { }); let opts: ldap.SearchOptions = { - filter: '(&(l=Seattle)(email=*@foo.com))', - scope: 'sub', - attributes: ['dn', 'sn', 'cn'] + filter: '(&(l=Seattle)(email=*@foo.com))', + scope: 'sub', + attributes: ['dn', 'sn', 'cn'] }; client.search('o=example', opts, (err: Error, res: NodeJS.EventEmitter): void => { @@ -20,12 +20,89 @@ client.search('o=example', opts, (err: Error, res: NodeJS.EventEmitter): void => }); let change = new ldap.Change({ - operation: 'add', - modification: { - pets: ['cat', 'dog'] - } + operation: 'add', + modification: { + pets: ['cat', 'dog'] + } }); -client.modify('cn=foo, o=example', change, function(err) { - // nothing +client.modify('cn=foo, o=example', change, function (err) { + // nothing }); + + +let f = ldap.parseFilter('(objectclass=*)'); +f.matches({}); + +let equalityFilter = new ldap.EqualityFilter({ + attribute: 'cn', + value: 'foo' +}); +equalityFilter.matches({ cn: 'foo' }); + +let presenceFilter = new ldap.PresenceFilter({ + attribute: 'cn' +}); +presenceFilter.matches({ cn: 'foo' }); + +let substringFilter = new ldap.SubstringFilter({ + attribute: 'cn', + initial: 'foo', + any: ['bar'], + final: 'baz' +}); +substringFilter.matches({ cn: 'foobigbardogbaz' }); + +let greaterThanEqualsFilter = new ldap.GreaterThanEqualsFilter({ + attribute: 'cn', + value: 'foo', +}); +greaterThanEqualsFilter.matches({ cn: 'foobar' }); + +let lessThanEqualsFilter = new ldap.LessThanEqualsFilter({ + attribute: 'cn', + value: 'foo', +}); +lessThanEqualsFilter.matches({ cn: 'abc' }); + +let andFilter = new ldap.AndFilter({ + filters: [ + new ldap.EqualityFilter({ + attribute: 'cn', + value: 'foo' + }), + new ldap.EqualityFilter({ + attribute: 'sn', + value: 'bar' + }) + ] +}); +andFilter.matches({ cn: 'foo', sn: 'bar' }); + +let orFilter = new ldap.OrFilter({ + filters: [ + new ldap.EqualityFilter({ + attribute: 'cn', + value: 'foo' + }), + new ldap.EqualityFilter({ + attribute: 'sn', + value: 'bar' + }) + ] +}); +orFilter.matches({ cn: 'foo', sn: 'baz' }); + +let notFilter = new ldap.NotFilter({ + filter: new ldap.EqualityFilter({ + attribute: 'cn', + value: 'foo' + }) +}); +notFilter.matches({ cn: 'bar' }); + +let approximateFilter = new ldap.ApproximateFilter({ + attribute: 'cn', + value: 'foo' +}); +approximateFilter.matches({ cn: 'foo' }); From 9b5b28fdd41be42ef41d7811ce6a456fe5d6e2c6 Mon Sep 17 00:00:00 2001 From: Alberto Vasquez Date: Tue, 30 Jan 2018 22:46:16 -0500 Subject: [PATCH 03/99] [config] Adding type definition for toObject Adding type definition toObject(config?: any): any; --- types/config/index.d.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/types/config/index.d.ts b/types/config/index.d.ts index ea5e5a940a..a18e765012 100644 --- a/types/config/index.d.ts +++ b/types/config/index.d.ts @@ -3,6 +3,7 @@ // Definitions by: Roman Korneev // Forrest Bice // James Donald +// Alberto Vasquez // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped @@ -39,6 +40,9 @@ declare namespace c { // Return the sources for the configurations getConfigSources(): IConfigSource[]; + + // Returns a new deep copy of the current config object, or any part of the config if provided. + toObject(config?: any): any; /** * This allows module developers to attach their configurations onto From 05b4c4f3646c3128545b95c8bf868863ab7b2aa5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vin=C3=ADcius=20Tabille=20Manjabosco?= Date: Wed, 31 Jan 2018 16:27:11 -0200 Subject: [PATCH 04/99] Add missing properties "defaultSortDirection" and "headerStyle" to ColumnProps --- types/react-virtualized/dist/es/Table.d.ts | 8 ++++++-- types/react-virtualized/react-virtualized-tests.tsx | 2 ++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/types/react-virtualized/dist/es/Table.d.ts b/types/react-virtualized/dist/es/Table.d.ts index 97fe20b657..87f79de86d 100644 --- a/types/react-virtualized/dist/es/Table.d.ts +++ b/types/react-virtualized/dist/es/Table.d.ts @@ -74,6 +74,8 @@ export type ColumnProps = { columnData?: any; /** Uniquely identifies the row-data attribute correspnding to this cell */ dataKey: any; + /** Default sort order when clicked for the first time. Valid options include "ASC" and "DESC". Defaults to "ASC" */ + defaultSortDirection?: SortDirectionType; /** If sort is enabled for the table at large, disable it for this column */ disableSort?: boolean; /** Flex grow style; defaults to 0 */ @@ -87,6 +89,10 @@ export type ColumnProps = { * ({ columnData: object, dataKey: string, disableSort: boolean, label: string, sortBy: string, sortDirection: string }): PropTypes.node */ headerRenderer?: TableHeaderRenderer; + /** Optional inline style to apply to this column's header */ + headerStyle?: React.CSSProperties; + /** Optional id to set on the column header; used for aria-describedby */ + id?: string; /** Header label for this column */ label?: string; /** Maximum width of column; this property will only be used if :flexGrow is > 0. */ @@ -97,8 +103,6 @@ export type ColumnProps = { style?: React.CSSProperties; /** Flex basis (width) for this column; This value can grow or shrink based on :flexGrow and :flexShrink properties. */ width: number; - /** Optional id to set on the column header; used for aria-describedby */ - id?: string; } export class Column extends Component { static propTypes: { diff --git a/types/react-virtualized/react-virtualized-tests.tsx b/types/react-virtualized/react-virtualized-tests.tsx index c5958ab96c..d912c1f28f 100644 --- a/types/react-virtualized/react-virtualized-tests.tsx +++ b/types/react-virtualized/react-virtualized-tests.tsx @@ -1546,12 +1546,14 @@ export class TableExample extends PureComponent<{}, any> { } dataKey='index' disableSort={!this._isSortEnabled()} + defaultSortDirection={SortDirection.DESC} width={60} /> } From b88e4c152ba6b44cb578cbe1111cea3736318393 Mon Sep 17 00:00:00 2001 From: TitaneBoy Date: Fri, 2 Feb 2018 10:29:51 -0500 Subject: [PATCH 05/99] @types/zeromq - Add proxy function --- types/zeromq/index.d.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/types/zeromq/index.d.ts b/types/zeromq/index.d.ts index 189d60fc29..d1088aba8f 100644 --- a/types/zeromq/index.d.ts +++ b/types/zeromq/index.d.ts @@ -240,3 +240,14 @@ export function createSocket(type: string, options?: any): Socket; * @return The public and secret portions of the key. */ export function curveKeypair(): CurveKeyPair; + +/** + * Connects a frontend socket to a backend socket. + * @param frontend The frontend socket to connect with the backend socket. + * Frontend socket should be a 'push', 'pull', 'xpub', 'router' or 'xrep' socket. + * @param backend The backend socket to connect with the frontend socket. + * Backend socket should be a 'pull', 'push', 'xsub', 'dealer' or 'xreq' socket. + * @param capture If defined, this socket will receive all messages from frontend and backend socket + * Capture socket should be a 'pub', 'dealer', 'push' or 'pair' socket. + */ +export function proxy(frontend: Socket, backend: Socket, capture ?: Socket): void; From 3c315b95a1297769c5839f9229f04e559a61536f Mon Sep 17 00:00:00 2001 From: TitaneBoy Date: Fri, 2 Feb 2018 11:11:57 -0500 Subject: [PATCH 06/99] @types/zeromq - Add proxy test function --- types/zeromq/zeromq-tests.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/types/zeromq/zeromq-tests.ts b/types/zeromq/zeromq-tests.ts index a1230957a7..466deaf4b7 100644 --- a/types/zeromq/zeromq-tests.ts +++ b/types/zeromq/zeromq-tests.ts @@ -48,3 +48,13 @@ function test6() { sock.pause(); sock.resume(); } + +function test7() { + const xPubSocket = zeromq.socket('xpub'); + const xPSubSocket = zeromq.socket('xsub'); + + xPubSocket.bindSync(`tcp://127.0.0.1:3000`); + xPSubSocket.bindSync('tcp://127.0.0.1:3001'); + + zeromq.proxy(xPubSocket, xPSubSocket); +} From 539d38aa82bc0617e9c32d07b601933d5a3505f3 Mon Sep 17 00:00:00 2001 From: Kiarash Date: Fri, 2 Feb 2018 17:29:45 +0100 Subject: [PATCH 07/99] Add support for Tooltip positioners for Chart.Js --- types/chart.js/chart.js-tests.ts | 20 ++++++++++++++++++++ types/chart.js/index.d.ts | 7 +++++++ 2 files changed, 27 insertions(+) diff --git a/types/chart.js/chart.js-tests.ts b/types/chart.js/chart.js-tests.ts index 8d2190478f..1075865992 100644 --- a/types/chart.js/chart.js-tests.ts +++ b/types/chart.js/chart.js-tests.ts @@ -65,3 +65,23 @@ if (chart.chartArea) { console.log(chart.chartArea.bottom); console.log(chart.chartArea.left); } + +// http://www.chartjs.org/docs/latest/configuration/tooltip.html#position-modes +/** + * Custom positioner + * @function Chart.Tooltip.positioners.custom + * @param elements {Chart.Element[]} the tooltip elements + * @param eventPosition {Point} the position of the event in canvas coordinates + * @returns {Point} the tooltip position + */ +Chart.Tooltip.positioners.custom = function(elements: any, eventPosition: any) { + /** @type {Chart.Tooltip} */ + var tooltip = this; + + /* ... */ + + return { + x: 0, + y: 0 + }; +} \ No newline at end of file diff --git a/types/chart.js/index.d.ts b/types/chart.js/index.d.ts index db20617c2d..a2d22dbd67 100644 --- a/types/chart.js/index.d.ts +++ b/types/chart.js/index.d.ts @@ -44,6 +44,9 @@ declare class Chart { static controllers: { [key: string]: any; }; + + // Tooltip Static Options + static Tooltip: Chart.ChartTooltipsStaticConfiguartion; } declare class PluginServiceStatic { register(plugin: PluginServiceRegistrationOptions): void; @@ -275,6 +278,10 @@ declare namespace Chart { borderWidth?: number; } + interface ChartTooltipsStaticConfiguartion { + positioners: any; + } + interface ChartHoverOptions { mode?: string; animationDuration?: number; From 7fc0863179e9380dd6b9947429d72bb53b14254a Mon Sep 17 00:00:00 2001 From: Kiarash Date: Fri, 2 Feb 2018 17:32:37 +0100 Subject: [PATCH 08/99] Increase version for Chart.Js --- types/chart.js/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/chart.js/index.d.ts b/types/chart.js/index.d.ts index a2d22dbd67..a637c15cac 100644 --- a/types/chart.js/index.d.ts +++ b/types/chart.js/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for Chart.js 2.7 +// Type definitions for Chart.js 2.7.1 // Project: https://github.com/nnnick/Chart.js // Definitions by: Alberto Nuti // Fabien Lavocat From cdcf2aca3c20112889476fcf2d3352994ea259c6 Mon Sep 17 00:00:00 2001 From: Kiarash Date: Fri, 2 Feb 2018 18:55:46 +0100 Subject: [PATCH 09/99] Remove comments --- types/chart.js/chart.js-tests.ts | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/types/chart.js/chart.js-tests.ts b/types/chart.js/chart.js-tests.ts index 1075865992..3a1c3eb4a6 100644 --- a/types/chart.js/chart.js-tests.ts +++ b/types/chart.js/chart.js-tests.ts @@ -67,19 +67,8 @@ if (chart.chartArea) { } // http://www.chartjs.org/docs/latest/configuration/tooltip.html#position-modes -/** - * Custom positioner - * @function Chart.Tooltip.positioners.custom - * @param elements {Chart.Element[]} the tooltip elements - * @param eventPosition {Point} the position of the event in canvas coordinates - * @returns {Point} the tooltip position - */ Chart.Tooltip.positioners.custom = function(elements: any, eventPosition: any) { - /** @type {Chart.Tooltip} */ var tooltip = this; - - /* ... */ - return { x: 0, y: 0 From 81cd768d6314c4cfc2d99e9b22912aba5a5f3077 Mon Sep 17 00:00:00 2001 From: Kiarash Date: Fri, 2 Feb 2018 19:05:24 +0100 Subject: [PATCH 10/99] Fix TravisCI Bugs --- types/chart.js/chart.js-tests.ts | 4 ++-- types/chart.js/index.d.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/types/chart.js/chart.js-tests.ts b/types/chart.js/chart.js-tests.ts index 3a1c3eb4a6..8400fb5db7 100644 --- a/types/chart.js/chart.js-tests.ts +++ b/types/chart.js/chart.js-tests.ts @@ -68,9 +68,9 @@ if (chart.chartArea) { // http://www.chartjs.org/docs/latest/configuration/tooltip.html#position-modes Chart.Tooltip.positioners.custom = function(elements: any, eventPosition: any) { - var tooltip = this; + const tooltip = this; return { x: 0, y: 0 }; -} \ No newline at end of file +}; diff --git a/types/chart.js/index.d.ts b/types/chart.js/index.d.ts index a637c15cac..a2d22dbd67 100644 --- a/types/chart.js/index.d.ts +++ b/types/chart.js/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for Chart.js 2.7.1 +// Type definitions for Chart.js 2.7 // Project: https://github.com/nnnick/Chart.js // Definitions by: Alberto Nuti // Fabien Lavocat From b522881da45ca2d62e630df80c44c870cdf27ed6 Mon Sep 17 00:00:00 2001 From: Matthias Dailey Date: Fri, 2 Feb 2018 17:18:02 -0500 Subject: [PATCH 11/99] Update typings for ol.View. Sort methods by their source-defined order. Before, the order did not match either the source or the alphabetical docs. Add methods: getAnimating getInteracting cancelAnimations getMaxZoom getMinZoom getResolutionForExtent getZoomForResolution getResolutionForZoom --- types/openlayers/index.d.ts | 126 ++++++++++++++++++++++++++---------- 1 file changed, 93 insertions(+), 33 deletions(-) diff --git a/types/openlayers/index.d.ts b/types/openlayers/index.d.ts index c217a6d873..4b4c718914 100644 --- a/types/openlayers/index.d.ts +++ b/types/openlayers/index.d.ts @@ -12344,13 +12344,42 @@ declare module ol { */ constructor(opt_options?: olx.ViewOptions); + /** + * Animate the view. The view's center, zoom (or resolution), and + * rotation can be animated for smooth transitions between view states. + * @param {olx.AnimateOptions} var_args Animation options. + * @param {olx.AnimateOptions | (completed: boolean) => void } restArgs + * @api experimental + */ + animate(...var_args: Array): void; + + /** + * Determine if the view is being animated. + * @return {boolean} The view is being animated. + * @api + */ + getAnimating(): boolean; + + /** + * Determine if the user is interacting with the view, such as panning or zooming. + * @return {boolean} The view is being interacted with. + * @api + */ + getInteracting(): boolean; + + /** + * Cancel any ongoing animations. + * @api + */ + cancelAnimations(): void; + /** * Get the constrained center of this view. * @param {ol.Coordinate|undefined} center Center. * @return {ol.Coordinate|undefined} Constrained center. * @api */ - constrainCenter(center: (ol.Coordinate)): (ol.Coordinate); + constrainCenter(center: ol.Coordinate): ol.Coordinate; /** * Get the constrained resolution of this view. @@ -12360,7 +12389,7 @@ declare module ol { * @return {number|undefined} Constrained resolution. * @api */ - constrainResolution(resolution: (number), opt_delta?: number, opt_direction?: number): (number); + constrainResolution(resolution: number, opt_delta?: number, opt_direction?: number): number; /** * Get the constrained rotation of this view. @@ -12369,7 +12398,7 @@ declare module ol { * @return {number|undefined} Constrained rotation. * @api */ - constrainRotation(rotation: (number), opt_delta?: number): (number); + constrainRotation(rotation: number, opt_delta?: number): number; /** * Get the view center. @@ -12377,7 +12406,7 @@ declare module ol { * @observable * @api stable */ - getCenter(): (ol.Coordinate); + getCenter(): ol.Coordinate; /** * Calculate the extent for the current view state and the passed size. @@ -12404,6 +12433,34 @@ declare module ol { */ getMinResolution(): number; + /** + * Get the maximum zoom level for the view. + * @return {number} The maximum zoom level. + * @api + */ + getMaxZoom(): number; + + /** + * Set a new maximum zoom level for the view. + * @param {number} zoom The maximum zoom level. + * @api stable + */ + setMaxZoom(zoom: number): void; + + /** + * Get the minimum zoom level for the view. + * @return {number} The minimum zoom level. + * @api + */ + getMinZoom(): number; + + /** + * Set a new minimum zoom level for the view. + * @param {number} zoom The minimum zoom level. + * @api stable + */ + setMinZoom(zoom: number): void; + /** * Get the view projection. * @return {ol.proj.Projection} The projection of the view. @@ -12417,7 +12474,7 @@ declare module ol { * @observable * @api stable */ - getResolution(): (number); + getResolution(): number; /** * Get the resolutions for the view. This returns the array of resolutions @@ -12425,7 +12482,17 @@ declare module ol { * @return {Array.|undefined} The resolutions of the view. * @api stable */ - getResolutions(): (number[]); + getResolutions(): number[]; + + /** + * Get the resolution for a provided extent (in map units) and size (in pixels). + * @param {ol.Extent} extent Extent. + * @param {ol.Size=} opt_size Box pixel size. + * @return {number} The resolution at which the provided extent will render at + * the given size. + * @api + */ + getResolutionForExtent(extent: ol.Extent, opt_size?: ol.Size): number; /** * Get the view rotation. @@ -12441,7 +12508,23 @@ declare module ol { * @return {number|undefined} Zoom. * @api stable */ - getZoom(): (number); + getZoom(): number; + + /** + * Get the zoom level for a resolution. + * @param {number} resolution The resolution. + * @return {number|undefined} The zoom level for the provided resolution. + * @api + */ + getZoomForResolution(resolution: number): number; + + /** + * Get the resolution for a zoom level. + * @param {number} zoom Zoom level. + * @return {number} The view resolution for the provided zoom level. + * @api + */ + getResolutionForZoom(zoom: number): number; /** * Fit the given geometry or extent based on the given map size and border. @@ -12452,7 +12535,7 @@ declare module ol { * @param {olx.view.FitOptions=} opt_options Options. * @api */ - fit(geometry: (ol.geom.SimpleGeometry | ol.Extent), opt_options?: olx.view.FitOptions): void; + fit(geometryOrExtent: (ol.geom.SimpleGeometry | ol.Extent), opt_options?: olx.view.FitOptions): void; /** * Center on coordinate and view position. @@ -12477,7 +12560,7 @@ declare module ol { * @observable * @api stable */ - setCenter(center: (ol.Coordinate)): void; + setCenter(center: ol.Coordinate): void; /** * Set the resolution for this view. @@ -12485,7 +12568,7 @@ declare module ol { * @observable * @api stable */ - setResolution(resolution: (number)): void; + setResolution(resolution: number): void; /** * Set the rotation for this view. @@ -12495,20 +12578,6 @@ declare module ol { */ setRotation(rotation: number): void; - /** - * Set a new maximum zoom level for the view. - * @param {number} zoom The maximum zoom level. - * @api stable - */ - setMaxZoom(zoom: number): void; - - /** - * Set a new minimum zoom level for the view. - * @param {number} zoom The minimum zoom level. - * @api stable - */ - setMinZoom(zoom: number): void; - /** * Zoom to a specific zoom level. * @param {number} zoom Zoom level. @@ -12516,15 +12585,6 @@ declare module ol { */ setZoom(zoom: number): void; - /** - * Animate the view. The view's center, zoom (or resolution), and - * rotation can be animated for smooth transitions between view states. - * @param {olx.AnimateOptions} var_args Animation options. - * @param {olx.AnimateOptions | (completed: boolean) => void } restArgs - * @api experimental - */ - animate(...var_args: Array): void; - } } From d8682442db3cca759d5dfca5c49542380b289d46 Mon Sep 17 00:00:00 2001 From: Matthias Dailey Date: Fri, 2 Feb 2018 17:25:17 -0500 Subject: [PATCH 12/99] Comment block update. --- types/openlayers/index.d.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/types/openlayers/index.d.ts b/types/openlayers/index.d.ts index 4b4c718914..e806d60666 100644 --- a/types/openlayers/index.d.ts +++ b/types/openlayers/index.d.ts @@ -12503,10 +12503,11 @@ declare module ol { getRotation(): number; /** - * Get the current zoom level. Return undefined if the current - * resolution is undefined or not within the "resolution constraints". + * Get the current zoom level. If you configured your view with a resolutions + * array (this is rare), this method may return non-integer zoom levels (so + * the zoom level is not safe to use as an index into a resolutions array). * @return {number|undefined} Zoom. - * @api stable + * @api */ getZoom(): number; From 004908e5736cbefff9ca3ed6cb4ba30949a758d5 Mon Sep 17 00:00:00 2001 From: Pericles Alves Date: Fri, 2 Feb 2018 14:37:31 -0800 Subject: [PATCH 13/99] [Tedious] extending connection.transaction definition --- types/tedious/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/tedious/index.d.ts b/types/tedious/index.d.ts index 2f3fe528d7..409ff67878 100644 --- a/types/tedious/index.d.ts +++ b/types/tedious/index.d.ts @@ -481,7 +481,7 @@ export declare class Connection extends events.EventEmitter { * @param name A string representing a name to associate with the transaction. Optional, and defaults to an empty string. In case of a nested transaction, naming the transaction name has no effect. * @param isolationLevel The isolation level that the transaction is to be run with. */ - transaction(callback: (error: Error, done: (error?: Error) => void) => void, name?: string, isolationLevel?: ISOLATION_LEVEL): void; + transaction(callback: (error: Error, done: (error?: Error, doneCallback?: (error?: Error, ...args: any[]) => void, ...args: any[]) => void) => void, name?: string, isolationLevel?: ISOLATION_LEVEL): void; /** * Prepare the SQL represented by the request. The request can then be used in subsequent calls to execute and unprepare From 8644f396ba7aee1593c85063d9d3a15c2b64b31d Mon Sep 17 00:00:00 2001 From: FaithForHumans Date: Fri, 2 Feb 2018 18:10:13 -0600 Subject: [PATCH 14/99] Adding prepend/append for input group addons. Removing old cardblock, inputgroupbutton, and navdropdown components. Adding new InputGroupbuttonDropdown --- types/reactstrap/index.d.ts | 156 +++++++------- types/reactstrap/lib/CardBlock.d.ts | 10 - types/reactstrap/lib/Dropdown.d.ts | 1 + types/reactstrap/lib/DropdownToggle.d.ts | 1 + types/reactstrap/lib/InputGroupAddon.d.ts | 3 +- types/reactstrap/lib/InputGroupButton.d.ts | 13 -- .../lib/InputGroupButtonDropdown.d.ts | 8 + types/reactstrap/lib/InputGroupText.d.ts | 9 + types/reactstrap/lib/NavDropdown.d.ts | 15 -- types/reactstrap/lib/Uncontrolled.d.ts | 3 - types/reactstrap/reactstrap-tests.tsx | 195 +++++++++++------- 11 files changed, 218 insertions(+), 196 deletions(-) delete mode 100644 types/reactstrap/lib/CardBlock.d.ts delete mode 100644 types/reactstrap/lib/InputGroupButton.d.ts create mode 100644 types/reactstrap/lib/InputGroupButtonDropdown.d.ts create mode 100644 types/reactstrap/lib/InputGroupText.d.ts delete mode 100644 types/reactstrap/lib/NavDropdown.d.ts diff --git a/types/reactstrap/index.d.ts b/types/reactstrap/index.d.ts index 38c55bc08a..73b456783a 100644 --- a/types/reactstrap/index.d.ts +++ b/types/reactstrap/index.d.ts @@ -14,82 +14,80 @@ export interface CSSModule { [className: string]: string; } -export { default as Alert, AlertProps } from './lib/Alert'; -export { default as Badge, BadgeProps } from './lib/Badge'; -export { default as Breadcrumb, BreadcrumbProps } from './lib/Breadcrumb'; -export { default as BreadcrumbItem, BreadcrumbItemProps } from './lib/BreadcrumbItem'; -export { default as Button, ButtonProps } from './lib/Button'; -export { default as ButtonDropdown, ButtonDropdownProps } from './lib/ButtonDropdown'; -export { default as ButtonGroup, ButtonGroupProps } from './lib/ButtonGroup'; -export { default as ButtonToolbar, ButtonToolbarProps } from './lib/ButtonToolbar'; -export { default as Card, CardProps } from './lib/Card'; -export { default as CardBody, CardBodyProps } from './lib/CardBody'; -export { default as CardBlock, CardBlockProps } from './lib/CardBlock'; -export { default as CardColumns, CardColumnsProps } from './lib/CardColumns'; -export { default as CardDeck, CardDeckProps } from './lib/CardDeck'; -export { default as CardFooter, CardFooterProps } from './lib/CardFooter'; -export { default as CardGroup, CardGroupProps } from './lib/CardGroup'; -export { default as CardHeader, CardHeaderProps } from './lib/CardHeader'; -export { default as CardImg, CardImgProps } from './lib/CardImg'; -export { default as CardImgOverlay, CardImgOverlayProps } from './lib/CardImgOverlay'; -export { default as CardLink, CardLinkProps } from './lib/CardLink'; -export { default as CardSubtitle, CardSubtitleProps } from './lib/CardSubtitle'; -export { default as CardText, CardTextProps } from './lib/CardText'; -export { default as CardTitle, CardTitleProps } from './lib/CardTitle'; -export { default as Carousel, CarouselProps } from './lib/Carousel'; -export { default as CarouselItem, CarouselItemProps } from './lib/CarouselItem'; -export { default as CarouselControl, CarouselControlProps } from './lib/CarouselControl'; -export { default as CarouselIndicators, CarouselIndicatorsProps } from './lib/CarouselIndicators'; -export { default as CarouselCaption, CarouselCaptionProps } from './lib/CarouselCaption'; -export { default as Col, ColProps } from './lib/Col'; -export { default as Collapse, CollapseProps } from './lib/Collapse'; -export { default as Container, ContainerProps } from './lib/Container'; -export { default as Dropdown, DropdownProps } from './lib/Dropdown'; -export { default as DropdownItem, DropdownItemProps } from './lib/DropdownItem'; -export { default as DropdownMenu, DropdownMenuProps } from './lib/DropdownMenu'; -export { default as DropdownToggle, DropdownToggleProps } from './lib/DropdownToggle'; -export { default as Fade, FadeProps } from './lib/Fade'; -export { default as Form, FormProps } from './lib/Form'; -export { default as FormFeedback, FormFeedbackProps } from './lib/FormFeedback'; -export { default as FormGroup, FormGroupProps } from './lib/FormGroup'; -export { default as FormText, FormTextProps } from './lib/FormText'; -export { default as Input, InputProps } from './lib/Input'; -export { default as InputGroup, InputGroupProps } from './lib/InputGroup'; -export { default as InputGroupAddon, InputGroupAddonProps } from './lib/InputGroupAddon'; -export { default as InputGroupButton, InputGroupButtonProps } from './lib/InputGroupButton'; -export { default as Jumbotron, JumbotronProps } from './lib/Jumbotron'; -export { default as Label, LabelProps } from './lib/Label'; -export { default as ListGroup, ListGroupProps } from './lib/ListGroup'; -export { default as ListGroupItem, ListGroupItemProps } from './lib/ListGroupItem'; -export { default as ListGroupItemHeading, ListGroupItemHeadingProps } from './lib/ListGroupItemHeading'; -export { default as ListGroupItemText, ListGroupItemTextProps } from './lib/ListGroupItemText'; -export { default as Media, MediaProps } from './lib/Media'; -export { default as Modal, ModalProps } from './lib/Modal'; -export { default as ModalBody, ModalBodyProps } from './lib/ModalBody'; -export { default as ModalFooter, ModalFooterProps } from './lib/ModalFooter'; -export { default as ModalHeader, ModalHeaderProps } from './lib/ModalHeader'; -export { default as Nav, NavProps } from './lib/Nav'; -export { default as Navbar, NavbarProps } from './lib/Navbar'; -export { default as NavbarBrand, NavbarBrandProps } from './lib/NavbarBrand'; -export { default as NavbarToggler, NavbarTogglerProps } from './lib/NavbarToggler'; -export { default as NavDropdown, NavDropdownProps } from './lib/NavDropdown'; -export { default as NavItem, NavItemProps } from './lib/NavItem'; -export { default as NavLink, NavLinkProps } from './lib/NavLink'; -export { default as Pagination, PaginationProps } from './lib/Pagination'; -export { default as PaginationItem, PaginationItemProps } from './lib/PaginationItem'; -export { default as PaginationLink, PaginationLinkProps } from './lib/PaginationLink'; -export { default as Popover, PopoverProps } from './lib/Popover'; -export { default as PopoverBody, PopoverBodyProps } from './lib/PopoverBody'; -export { default as PopoverHeader, PopoverHeaderProps } from './lib/PopoverHeader'; -export { default as Progress, ProgressProps } from './lib/Progress'; -export { default as Row, RowProps } from './lib/Row'; -export { default as TabContent, TabContentProps } from './lib/TabContent'; -export { default as Table, TableProps } from './lib/Table'; -export { default as TabPane, TabPaneProps } from './lib/TabPane'; -export { default as Tag, TagProps } from './lib/Tag'; -export { default as Tooltip, TooltipProps } from './lib/Tooltip'; -export { UncontrolledAlert, UncontrolledAlertProps } from './lib/Uncontrolled'; -export { UncontrolledButtonDropdown, UncontrolledButtonDropdownProps } from './lib/Uncontrolled'; -export { UncontrolledDropdown, UncontrolledDropdownProps } from './lib/Uncontrolled'; -export { UncontrolledNavDropdown, UncontrolledNavDropdownProps } from './lib/Uncontrolled'; -export { UncontrolledTooltip, UncontrolledTooltipProps } from './lib/Uncontrolled'; +export { default as Alert, AlertProps } from './lib/Alert'; +export { default as Badge, BadgeProps } from './lib/Badge'; +export { default as Breadcrumb, BreadcrumbProps } from './lib/Breadcrumb'; +export { default as BreadcrumbItem, BreadcrumbItemProps } from './lib/BreadcrumbItem'; +export { default as Button, ButtonProps } from './lib/Button'; +export { default as ButtonDropdown, ButtonDropdownProps } from './lib/ButtonDropdown'; +export { default as ButtonGroup, ButtonGroupProps } from './lib/ButtonGroup'; +export { default as ButtonToolbar, ButtonToolbarProps } from './lib/ButtonToolbar'; +export { default as Card, CardProps } from './lib/Card'; +export { default as CardBody, CardBodyProps } from './lib/CardBody'; +export { default as CardColumns, CardColumnsProps } from './lib/CardColumns'; +export { default as CardDeck, CardDeckProps } from './lib/CardDeck'; +export { default as CardFooter, CardFooterProps } from './lib/CardFooter'; +export { default as CardGroup, CardGroupProps } from './lib/CardGroup'; +export { default as CardHeader, CardHeaderProps } from './lib/CardHeader'; +export { default as CardImg, CardImgProps } from './lib/CardImg'; +export { default as CardImgOverlay, CardImgOverlayProps } from './lib/CardImgOverlay'; +export { default as CardLink, CardLinkProps } from './lib/CardLink'; +export { default as CardSubtitle, CardSubtitleProps } from './lib/CardSubtitle'; +export { default as CardText, CardTextProps } from './lib/CardText'; +export { default as CardTitle, CardTitleProps } from './lib/CardTitle'; +export { default as Carousel, CarouselProps } from './lib/Carousel'; +export { default as CarouselItem, CarouselItemProps } from './lib/CarouselItem'; +export { default as CarouselControl, CarouselControlProps } from './lib/CarouselControl'; +export { default as CarouselIndicators, CarouselIndicatorsProps } from './lib/CarouselIndicators'; +export { default as CarouselCaption, CarouselCaptionProps } from './lib/CarouselCaption'; +export { default as Col, ColProps } from './lib/Col'; +export { default as Collapse, CollapseProps } from './lib/Collapse'; +export { default as Container, ContainerProps } from './lib/Container'; +export { default as Dropdown, DropdownProps } from './lib/Dropdown'; +export { default as DropdownItem, DropdownItemProps } from './lib/DropdownItem'; +export { default as DropdownMenu, DropdownMenuProps } from './lib/DropdownMenu'; +export { default as DropdownToggle, DropdownToggleProps } from './lib/DropdownToggle'; +export { default as Fade, FadeProps } from './lib/Fade'; +export { default as Form, FormProps } from './lib/Form'; +export { default as FormFeedback, FormFeedbackProps } from './lib/FormFeedback'; +export { default as FormGroup, FormGroupProps } from './lib/FormGroup'; +export { default as FormText, FormTextProps } from './lib/FormText'; +export { default as Input, InputProps } from './lib/Input'; +export { default as InputGroup, InputGroupProps } from './lib/InputGroup'; +export { default as InputGroupAddon, InputGroupAddonProps } from './lib/InputGroupAddon'; +export { default as InputGroupButtonDropdown, InputGroupButtonDropdownProps } from './lib/InputGroupButtonDropdown'; +export { default as InputGroupText, InputGroupTextProps } from './lib/InputGroupText'; +export { default as Jumbotron, JumbotronProps } from './lib/Jumbotron'; +export { default as Label, LabelProps } from './lib/Label'; +export { default as ListGroup, ListGroupProps } from './lib/ListGroup'; +export { default as ListGroupItem, ListGroupItemProps } from './lib/ListGroupItem'; +export { default as ListGroupItemHeading, ListGroupItemHeadingProps } from './lib/ListGroupItemHeading'; +export { default as ListGroupItemText, ListGroupItemTextProps } from './lib/ListGroupItemText'; +export { default as Media, MediaProps } from './lib/Media'; +export { default as Modal, ModalProps } from './lib/Modal'; +export { default as ModalBody, ModalBodyProps } from './lib/ModalBody'; +export { default as ModalFooter, ModalFooterProps } from './lib/ModalFooter'; +export { default as ModalHeader, ModalHeaderProps } from './lib/ModalHeader'; +export { default as Nav, NavProps } from './lib/Nav'; +export { default as Navbar, NavbarProps } from './lib/Navbar'; +export { default as NavbarBrand, NavbarBrandProps } from './lib/NavbarBrand'; +export { default as NavbarToggler, NavbarTogglerProps } from './lib/NavbarToggler'; +export { default as NavItem, NavItemProps } from './lib/NavItem'; +export { default as NavLink, NavLinkProps } from './lib/NavLink'; +export { default as Pagination, PaginationProps } from './lib/Pagination'; +export { default as PaginationItem, PaginationItemProps } from './lib/PaginationItem'; +export { default as PaginationLink, PaginationLinkProps } from './lib/PaginationLink'; +export { default as Popover, PopoverProps } from './lib/Popover'; +export { default as PopoverBody, PopoverBodyProps } from './lib/PopoverBody'; +export { default as PopoverHeader, PopoverHeaderProps } from './lib/PopoverHeader'; +export { default as Progress, ProgressProps } from './lib/Progress'; +export { default as Row, RowProps } from './lib/Row'; +export { default as TabContent, TabContentProps } from './lib/TabContent'; +export { default as Table, TableProps } from './lib/Table'; +export { default as TabPane, TabPaneProps } from './lib/TabPane'; +export { default as Tag, TagProps } from './lib/Tag'; +export { default as Tooltip, TooltipProps } from './lib/Tooltip'; +export { UncontrolledAlert, UncontrolledAlertProps } from './lib/Uncontrolled'; +export { UncontrolledButtonDropdown, UncontrolledButtonDropdownProps } from './lib/Uncontrolled'; +export { UncontrolledDropdown, UncontrolledDropdownProps } from './lib/Uncontrolled'; +export { UncontrolledTooltip, UncontrolledTooltipProps } from './lib/Uncontrolled'; diff --git a/types/reactstrap/lib/CardBlock.d.ts b/types/reactstrap/lib/CardBlock.d.ts deleted file mode 100644 index 9830e15e6a..0000000000 --- a/types/reactstrap/lib/CardBlock.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { CSSModule } from '../index'; - -export interface CardBlockProps { - tag?: React.ReactType; - className?: string; - cssModule?: CSSModule; -} - -declare const CardBlock: React.StatelessComponent; -export default CardBlock; diff --git a/types/reactstrap/lib/Dropdown.d.ts b/types/reactstrap/lib/Dropdown.d.ts index 9754af4fe2..e53b813cfe 100644 --- a/types/reactstrap/lib/Dropdown.d.ts +++ b/types/reactstrap/lib/Dropdown.d.ts @@ -18,6 +18,7 @@ export interface Props extends UncontrolledProps { group?: boolean; size?: string; tag?: React.ReactType; + addonType?: boolean | 'prepend' | 'append'; } export interface DropdownProps extends Props { /* intentionally blank */ diff --git a/types/reactstrap/lib/DropdownToggle.d.ts b/types/reactstrap/lib/DropdownToggle.d.ts index 51028815d4..eab2f3879d 100644 --- a/types/reactstrap/lib/DropdownToggle.d.ts +++ b/types/reactstrap/lib/DropdownToggle.d.ts @@ -6,6 +6,7 @@ export interface DropdownToggleProps { cssModule?: CSSModule; disabled?: boolean; onClick?: React.MouseEventHandler; + outline?: boolean; 'data-toggle'?: string; 'aria-haspopup'?: boolean; split?: boolean; diff --git a/types/reactstrap/lib/InputGroupAddon.d.ts b/types/reactstrap/lib/InputGroupAddon.d.ts index 31f5af505d..88b4f678c7 100644 --- a/types/reactstrap/lib/InputGroupAddon.d.ts +++ b/types/reactstrap/lib/InputGroupAddon.d.ts @@ -1,9 +1,10 @@ import { CSSModule } from '../index'; -export interface InputGroupAddonProps { +export interface InputGroupAddonProps extends React.HTMLAttributes { tag?: React.ReactType; className?: string; cssModule?: CSSModule; + addonType: 'prepend' | 'append'; } declare const InputGroupAddon: React.StatelessComponent; diff --git a/types/reactstrap/lib/InputGroupButton.d.ts b/types/reactstrap/lib/InputGroupButton.d.ts deleted file mode 100644 index 0d77701932..0000000000 --- a/types/reactstrap/lib/InputGroupButton.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { CSSModule } from '../index'; - -export interface InputGroupButtonProps { - tag?: React.ReactType; - groupClassName?: string; - groupAttributes?: any; - className?: string; - cssModule?: CSSModule; - color?: string; -} - -declare const InputGroupButton: React.StatelessComponent; -export default InputGroupButton; diff --git a/types/reactstrap/lib/InputGroupButtonDropdown.d.ts b/types/reactstrap/lib/InputGroupButtonDropdown.d.ts new file mode 100644 index 0000000000..32a129d43d --- /dev/null +++ b/types/reactstrap/lib/InputGroupButtonDropdown.d.ts @@ -0,0 +1,8 @@ +import { DropdownProps } from './Dropdown'; + +export interface InputGroupButtonDropdownProps extends DropdownProps { + addonType: 'prepend' | 'append'; +} + +declare const InputGroupButtonDropdown: React.StatelessComponent; +export default InputGroupButtonDropdown; diff --git a/types/reactstrap/lib/InputGroupText.d.ts b/types/reactstrap/lib/InputGroupText.d.ts new file mode 100644 index 0000000000..356babe8f4 --- /dev/null +++ b/types/reactstrap/lib/InputGroupText.d.ts @@ -0,0 +1,9 @@ +import { CSSModule } from '../index'; + +export interface InputGroupTextProps extends React.HTMLAttributes { + tag?: React.ReactType; + cssModule?: CSSModule; +} + +declare const InputGroupText: React.StatelessComponent; +export default InputGroupText; diff --git a/types/reactstrap/lib/NavDropdown.d.ts b/types/reactstrap/lib/NavDropdown.d.ts deleted file mode 100644 index e40e60601c..0000000000 --- a/types/reactstrap/lib/NavDropdown.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { UncontrolledDropdownProps, DropdownProps } from './Dropdown'; - -export interface UncontrolledProps extends UncontrolledDropdownProps { - /* intentionally blank */ -} -export interface UncontrolledNavDropdownProps extends UncontrolledProps { - /* intentionally blank */ -} - -export interface NavDropdownProps extends DropdownProps { - /* intentionally blank */ -} - -declare const NavDropdown: React.StatelessComponent; -export default NavDropdown; diff --git a/types/reactstrap/lib/Uncontrolled.d.ts b/types/reactstrap/lib/Uncontrolled.d.ts index b3b292dd6b..d241477adb 100644 --- a/types/reactstrap/lib/Uncontrolled.d.ts +++ b/types/reactstrap/lib/Uncontrolled.d.ts @@ -1,17 +1,14 @@ import { UncontrolledAlertProps } from './Alert'; import { UncontrolledButtonDropdownProps } from './ButtonDropdown'; import { UncontrolledDropdownProps } from './Dropdown'; -import { UncontrolledNavDropdownProps } from './NavDropdown'; import { UncontrolledTooltipProps } from './Tooltip'; export const UncontrolledAlert: React.StatelessComponent; export const UncontrolledButtonDropdown: React.StatelessComponent; export const UncontrolledDropdown: React.StatelessComponent; -export const UncontrolledNavDropdown: React.StatelessComponent; export const UncontrolledTooltip: React.StatelessComponent; export { UncontrolledAlertProps } from './Alert'; export { UncontrolledButtonDropdownProps } from './ButtonDropdown'; export { UncontrolledDropdownProps } from './Dropdown'; -export { UncontrolledNavDropdownProps } from './NavDropdown'; export { UncontrolledTooltipProps } from './Tooltip'; diff --git a/types/reactstrap/reactstrap-tests.tsx b/types/reactstrap/reactstrap-tests.tsx index 0f0bf7b81d..756d3acbd0 100644 --- a/types/reactstrap/reactstrap-tests.tsx +++ b/types/reactstrap/reactstrap-tests.tsx @@ -15,7 +15,6 @@ import { DropdownToggle, Card, CardBody, - CardBlock, CardColumns, CardDeck, CardFooter, @@ -44,7 +43,8 @@ import { Input, InputGroup, InputGroupAddon, - InputGroupButton, + InputGroupButtonDropdown, + InputGroupText, Pagination, Label, ListGroup, @@ -61,7 +61,6 @@ import { Navbar, NavbarBrand, NavbarToggler, - NavDropdown, NavItem, NavLink, PaginationItem, @@ -73,7 +72,6 @@ import { TabPane, UncontrolledButtonDropdown, UncontrolledDropdown, - UncontrolledNavDropdown, UncontrolledTooltip, TabContent, Table, @@ -522,12 +520,12 @@ const Example25 = (props: any) => {
- + Card title Card subtitle Some quick example text to build on the card title and make up the bulk of the card's content. - +
); @@ -537,16 +535,16 @@ const Example26 = (props: any) => { return (
- + Card title Card subtitle - + Card image cap - + Some quick example text to build on the card title and make up the bulk of the card's content. Card Link Another Link - +
); @@ -600,21 +598,21 @@ const Example29 = (props: any) => {
Header - + Special Title Treatment With supporting text below as a natural lead-in to additional content. - + Footer Featured - + Special Title Treatment With supporting text below as a natural lead-in to additional content. - + Footer
@@ -626,22 +624,22 @@ const Example30 = (props: any) => {
- + Card Title This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer. Last updated 3 mins ago - + - + Card Title This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer. Last updated 3 mins ago - +
@@ -744,25 +742,25 @@ const Example34 = (props: any) => { - + Card title Card subtitle This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer. - + - + Card title Card subtitle This card has supporting text below as a natural lead-in to additional content. - + - + Card title Card subtitle @@ -770,7 +768,7 @@ const Example34 = (props: any) => { card has even longer content than the first to show that equal height action. - + ); @@ -781,25 +779,25 @@ const Example35 = (props: any) => { - + Card title Card subtitle This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer. - + - + Card title Card subtitle This card has supporting text below as a natural lead-in to additional content. - + - + Card title Card subtitle @@ -807,7 +805,7 @@ const Example35 = (props: any) => { even longer content than the first to show that equal height action. - + ); @@ -818,23 +816,23 @@ const Example36 = (props: any) => { - + Card title Card subtitle This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer. - + - + Card title Card subtitle This card has supporting text below as a natural lead-in to additional content. - + Special Title Treatment @@ -845,7 +843,7 @@ const Example36 = (props: any) => { - + Card title Card subtitle @@ -853,7 +851,7 @@ const Example36 = (props: any) => { has even longer content than the first to show that equal height action. - + Special Title Treatment @@ -883,12 +881,12 @@ class Example37 extends React.Component { - + Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. - + @@ -925,12 +923,12 @@ class Example38 extends React.Component {
Current state: {this.state.status}
- + Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. - + @@ -1422,12 +1420,12 @@ const Example52 = (props: any) => { return (
- @ + @
- + @@ -1435,21 +1433,25 @@ const Example52 = (props: any) => {
- @example.com + @example.com
- $ - $ + + $ + $ + - $ - $ + + $ + $ +
- $ + $ - .00 + .00
); @@ -1459,19 +1461,19 @@ const Example53 = (props: any) => { return (
- To the Left! + To the Left!
- To the Right! + To the Right!
- To the Left! + To the Left! - To the Right! + To the Right!
); @@ -1481,17 +1483,17 @@ const Example54 = (props: any) => { return (
- @lg + @lg
- @normal + @normal
- @sm + @sm
@@ -1502,19 +1504,19 @@ const Example55 = (props: any) => { return (
- +
- +
- + - +
); @@ -1524,17 +1526,17 @@ const Example56 = (props: any) => { return (
- @lg + @lg
- @normal + @normal
- @sm + @sm
@@ -1545,19 +1547,19 @@ const Example57 = (props: any) => { return (
- +
- +
- + - +
); @@ -1567,19 +1569,19 @@ const Example58 = (props: any) => { return (
- To the Left! + To the Left!
- To the Right! + To the Right!
- To the Left! + To the Left! - To the Right! + To the Right!
); @@ -2242,7 +2244,7 @@ class Example79 extends React.Component { Link - + Dropdown @@ -2253,7 +2255,7 @@ class Example79 extends React.Component { Another Action - + Link @@ -2292,7 +2294,7 @@ class Example80 extends React.Component { Link - + Dropdown @@ -2303,7 +2305,7 @@ class Example80 extends React.Component { Another Action - + Link @@ -3614,3 +3616,46 @@ class Example115 extends React.Component { ); } } + +const Example116 = (props: any) => { + return( +
+ + + + +
+ + + + + Button Dropdown + + + Header + Action + Another Action + + Another Action + + + +
+ + + + + + Header + Action + Another Action + + Another Action + + + + + +
+ ); +}; From 78c32c0c0bf91dc1d131f2b48dab4a52f9da96fe Mon Sep 17 00:00:00 2001 From: bang Date: Sat, 3 Feb 2018 17:15:46 +0800 Subject: [PATCH 15/99] fix: add missing static property positions --- types/react-native-drawer-layout/index.d.ts | 20 +++++++++++-------- .../react-native-drawer-layout-tests.tsx | 10 ++++++++++ 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/types/react-native-drawer-layout/index.d.ts b/types/react-native-drawer-layout/index.d.ts index f6cf7a0d4a..f8b34fc3fd 100644 --- a/types/react-native-drawer-layout/index.d.ts +++ b/types/react-native-drawer-layout/index.d.ts @@ -94,12 +94,16 @@ export interface DrawerLayoutProperties extends ViewProperties { } export default class DrawerLayout extends React.Component { - /** - * Opens the drawer. - */ - openDrawer(): void; - /** - * Closes the drawer. - */ - closeDrawer(): void; + static positions: { + Left: "left"; + Right: "right"; + }; + /** + * Opens the drawer. + */ + openDrawer(): void; + /** + * Closes the drawer. + */ + closeDrawer(): void; } diff --git a/types/react-native-drawer-layout/react-native-drawer-layout-tests.tsx b/types/react-native-drawer-layout/react-native-drawer-layout-tests.tsx index c194756333..e0371643ee 100644 --- a/types/react-native-drawer-layout/react-native-drawer-layout-tests.tsx +++ b/types/react-native-drawer-layout/react-native-drawer-layout-tests.tsx @@ -32,6 +32,16 @@ class DrawerTest extends React.Component<{}, DrawerTestState> { > Screen content + + { + DrawerLayout.positions.Left + } + + + { + DrawerLayout.positions.Right + } + ); From b59d51ea8b036d0bf64704e9a5cfb4b867198df0 Mon Sep 17 00:00:00 2001 From: TomBarta Date: Sat, 3 Feb 2018 07:07:59 -0700 Subject: [PATCH 16/99] update SingleDatePicker prop types --- types/react-dates/index.d.ts | 1 + types/react-dates/react-dates-tests.tsx | 1 + 2 files changed, 2 insertions(+) diff --git a/types/react-dates/index.d.ts b/types/react-dates/index.d.ts index 2038b8a5d2..d88094e67c 100644 --- a/types/react-dates/index.d.ts +++ b/types/react-dates/index.d.ts @@ -163,6 +163,7 @@ declare namespace ReactDates { hideKeyboardShortcutsPanel?: boolean, daySize?: number, isRTL?: boolean, + verticalSpacing?: number, // navigation related props navPrev?: string | JSX.Element, diff --git a/types/react-dates/react-dates-tests.tsx b/types/react-dates/react-dates-tests.tsx index f9d3118a4f..87a1794fb8 100644 --- a/types/react-dates/react-dates-tests.tsx +++ b/types/react-dates/react-dates-tests.tsx @@ -64,6 +64,7 @@ class SingleDatePickerFullTest extends React.Component { orientation="horizontal" monthFormat="MM" renderDayContents={day => day.toString()} + verticalSpacing={4} /> } } From fe93d60e9a2e62c03d4f33ecbe40e42c17a9a3a6 Mon Sep 17 00:00:00 2001 From: TomBarta Date: Sat, 3 Feb 2018 07:21:06 -0700 Subject: [PATCH 17/99] update SingleDatePicker prop types --- types/react-dates/index.d.ts | 6 +++++- types/react-dates/react-dates-tests.tsx | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/types/react-dates/index.d.ts b/types/react-dates/index.d.ts index d88094e67c..abc0de7498 100644 --- a/types/react-dates/index.d.ts +++ b/types/react-dates/index.d.ts @@ -146,6 +146,9 @@ declare namespace ReactDates { customInputIcon?: string | JSX.Element, noBorder?: boolean, block?: boolean, + small?: boolean, + regular?: boolean, + keepFocusOnInput?: boolean, // calendar presentation and interaction related props renderMonth?: (day: momentPropTypes.momentObj) => (string | JSX.Element), @@ -163,7 +166,8 @@ declare namespace ReactDates { hideKeyboardShortcutsPanel?: boolean, daySize?: number, isRTL?: boolean, - verticalSpacing?: number, + verticalSpacing?: number, + verticalHeight?: number| null, // navigation related props navPrev?: string | JSX.Element, diff --git a/types/react-dates/react-dates-tests.tsx b/types/react-dates/react-dates-tests.tsx index 87a1794fb8..3a95453a78 100644 --- a/types/react-dates/react-dates-tests.tsx +++ b/types/react-dates/react-dates-tests.tsx @@ -65,6 +65,8 @@ class SingleDatePickerFullTest extends React.Component { monthFormat="MM" renderDayContents={day => day.toString()} verticalSpacing={4} + keepFocusOnInput={true} + verticalHeight={5} /> } } From e88f86490391631ceb00e0d19e55e081d114f2b2 Mon Sep 17 00:00:00 2001 From: TomBarta Date: Sat, 3 Feb 2018 07:25:17 -0700 Subject: [PATCH 18/99] update SingleDatePicker prop types --- types/react-dates/react-dates-tests.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/types/react-dates/react-dates-tests.tsx b/types/react-dates/react-dates-tests.tsx index 3a95453a78..9de177ac34 100644 --- a/types/react-dates/react-dates-tests.tsx +++ b/types/react-dates/react-dates-tests.tsx @@ -67,6 +67,8 @@ class SingleDatePickerFullTest extends React.Component { verticalSpacing={4} keepFocusOnInput={true} verticalHeight={5} + regular={true} + small={true} /> } } From c4c47a16775e37edf52241afd1990ce9b35f0a1b Mon Sep 17 00:00:00 2001 From: Huw McNamara Date: Sat, 3 Feb 2018 15:23:08 +0000 Subject: [PATCH 19/99] tidied up and de-duplicated tls options --- types/node/v8/index.d.ts | 95 +++++++++++++------------------------ types/node/v8/tsconfig.json | 4 +- 2 files changed, 36 insertions(+), 63 deletions(-) diff --git a/types/node/v8/index.d.ts b/types/node/v8/index.d.ts index 18ba96575d..791b27de1d 100644 --- a/types/node/v8/index.d.ts +++ b/types/node/v8/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for Node.js 8.5.x +// Type definitions for Node.js 8.9.x // Project: http://nodejs.org/ // Definitions by: Microsoft TypeScript // DefinitelyTyped @@ -17,6 +17,7 @@ // Sebastian Silbermann // Hannes Magnusson // Alberto Schiabel +// Huw // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped /** inspector module types */ @@ -111,7 +112,7 @@ declare function clearImmediate(immediateId: any): void; // TODO: change to `type NodeRequireFunction = (id: string) => any;` in next mayor version. interface NodeRequireFunction { -/* tslint:disable-next-line:callable-types */ + /* tslint:disable-next-line:callable-types */ (id: string): any; } @@ -1728,33 +1729,20 @@ declare module "https" { import * as http from "http"; import { URL } from "url"; - export interface ServerOptions { - pfx?: any; - key?: any; - passphrase?: string; - cert?: any; - ca?: any; - crl?: any; - ciphers?: string; - honorCipherOrder?: boolean; - requestCert?: boolean; - rejectUnauthorized?: boolean; - NPNProtocols?: any; - SNICallback?: (servername: string, cb: (err: Error | null, ctx: tls.SecureContext) => void) => void; - secureProtocol?: string; - } + export type ServerOptions = tls.SecureContextOptions & tls.TlsServerOptions; - export interface RequestOptions extends http.RequestOptions { - pfx?: any; - key?: any; - passphrase?: string; - cert?: any; - ca?: any; - ciphers?: string; - rejectUnauthorized?: boolean; - secureProtocol?: string; - servername?: string; - } + // see https://nodejs.org/docs/latest-v8.x/api/https.html#https_https_request_options_callback + type extendedRequestKeys = "pfx" | + "key" | + "passphrase" | + "cert" | + "ca" | + "ciphers" | + "rejectUnauthorized" | + "secureProtocol" | + "servername"; + + export type RequestOptions = http.RequestOptions & Pick export interface AgentOptions extends http.AgentOptions, tls.ConnectionOptions { rejectUnauthorized?: boolean; @@ -4816,7 +4804,7 @@ declare module "tls" { * An array of strings or a Buffer naming possible NPN protocols. * (Protocols should be ordered by their priority.) */ - NPNProtocols?: string[] | Buffer, + NPNProtocols?: string[] | Buffer[] | Uint8Array[] | Buffer | Uint8Array; /** * An array of strings or a Buffer naming possible ALPN protocols. * (Protocols should be ordered by their priority.) When the server @@ -4824,7 +4812,7 @@ declare module "tls" { * precedence over NPN and the server does not send an NPN extension * to the client. */ - ALPNProtocols?: string[] | Buffer, + ALPNProtocols?: string[] | Buffer[] | Uint8Array[] | Buffer | Uint8Array; /** * SNICallback(servername, cb) A function that will be * called if the client supports SNI TLS extension. Two arguments @@ -4834,7 +4822,7 @@ declare module "tls" { * SecureContext.) If SNICallback wasn't provided the default callback * with high-level API will be used (see below). */ - SNICallback?: (servername: string, cb: (err: Error | null, ctx: SecureContext) => void) => void, + SNICallback?: (servername: string, cb: (err: Error | null, ctx: SecureContext) => void) => void; /** * An optional Buffer instance containing a TLS session. */ @@ -4900,7 +4888,7 @@ declare module "tls" { * @param callback - callback(err) will be executed with null as err, once the renegotiation * is successfully completed. */ - renegotiate(options: TlsOptions, callback: (err: Error | null) => void): any; + renegotiate(options: { rejectUnauthorized: boolean, requestCert: boolean }, callback: (err: Error | null) => void): any; /** * Set maximum TLS fragment size (default and maximum value is: 16384, minimum is: 512). * Smaller fragment size decreases buffering latency on the client: large fragments are buffered by @@ -4943,30 +4931,15 @@ declare module "tls" { prependOnceListener(event: "secureConnect", listener: () => void): this; } - export interface TlsOptions { - host?: string; - port?: number; - pfx?: string | Buffer[]; - key?: string | string[] | Buffer | any[]; - passphrase?: string; - cert?: string | string[] | Buffer | Buffer[]; - ca?: string | string[] | Buffer | Buffer[]; - crl?: string | string[]; - ciphers?: string; - honorCipherOrder?: boolean; + export interface TlsServerOptions extends SecureContextOptions { + handshakeTimeout?: number; requestCert?: boolean; rejectUnauthorized?: boolean; - NPNProtocols?: string[] | Buffer; + NPNProtocols?: string[] | Buffer[] | Uint8Array[] | Buffer | Uint8Array; + ALPNProtocols?: string[] | Buffer[] | Uint8Array[] | Buffer | Uint8Array; SNICallback?: (servername: string, cb: (err: Error | null, ctx: SecureContext) => void) => void; - ecdhCurve?: string; - dhparam?: string | Buffer; - handshakeTimeout?: number; - ALPNProtocols?: string[] | Buffer; sessionTimeout?: number; - ticketKeys?: Buffer; - sessionIdContext?: string; - secureProtocol?: string; - secureOptions?: number; + ticketKeys: Buffer; } export interface ConnectionOptions extends SecureContextOptions { @@ -4975,8 +4948,8 @@ declare module "tls" { path?: string; // Creates unix socket connection to path. If this option is specified, `host` and `port` are ignored. socket?: net.Socket; // Establish secure connection on a given socket rather than creating a new socket rejectUnauthorized?: boolean; // Defaults to true - NPNProtocols?: Array; - ALPNProtocols?: Array; + NPNProtocols?: string[] | Buffer[] | Uint8Array[] | Buffer | Uint8Array; + ALPNProtocols?: string[] | Buffer[] | Uint8Array[] | Buffer | Uint8Array checkServerIdentity?: typeof checkServerIdentity; servername?: string; // SNI TLS Extension session?: Buffer; @@ -5093,7 +5066,7 @@ declare module "tls" { * Returns Error object, populating it with the reason, host and cert on failure. On success, returns undefined. */ export function checkServerIdentity(host: string, cert: PeerCertificate): Error | undefined; - export function createServer(options: TlsOptions, secureConnectionListener?: (socket: TLSSocket) => void): Server; + export function createServer(options: TlsServerOptions, secureConnectionListener?: (socket: TLSSocket) => void): Server; export function connect(options: ConnectionOptions, secureConnectionListener?: () => void): TLSSocket; export function connect(port: number, host?: string, options?: ConnectionOptions, secureConnectListener?: () => void): TLSSocket; export function connect(port: number, options?: ConnectionOptions, secureConnectListener?: () => void): TLSSocket; @@ -5374,7 +5347,7 @@ declare module "stream" { writable: boolean; constructor(opts?: WritableOptions); _write(chunk: any, encoding: string, callback: (err?: Error) => void): void; - _writev?(chunks: Array<{chunk: any, encoding: string}>, callback: (err?: Error) => void): void; + _writev?(chunks: Array<{ chunk: any, encoding: string }>, callback: (err?: Error) => void): void; _destroy(err: Error, callback: Function): void; _final(callback: Function): void; write(chunk: any, cb?: Function): boolean; @@ -5465,7 +5438,7 @@ declare module "stream" { writable: boolean; constructor(opts?: DuplexOptions); _write(chunk: any, encoding: string, callback: (err?: Error) => void): void; - _writev?(chunks: Array<{chunk: any, encoding: string}>, callback: (err?: Error) => void): void; + _writev?(chunks: Array<{ chunk: any, encoding: string }>, callback: (err?: Error) => void): void; _destroy(err: Error, callback: Function): void; _final(callback: Function): void; write(chunk: any, cb?: Function): boolean; @@ -5545,9 +5518,9 @@ declare module "util" { export function callbackify(fn: (arg1: T1, arg2: T2) => Promise): (arg1: T1, arg2: T2, callback: (err: NodeJS.ErrnoException) => void) => void; export function callbackify(fn: (arg1: T1, arg2: T2) => Promise): (arg1: T1, arg2: T2, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void; export function callbackify(fn: (arg1: T1, arg2: T2, arg3: T3) => Promise): (arg1: T1, arg2: T2, arg3: T3, callback: (err: NodeJS.ErrnoException) => void) => void; - export function callbackify(fn: (arg1: T1, arg2: T2, arg3: T3) => Promise): (arg1: T1, arg2: T2, arg3: T3, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void; + export function callbackify(fn: (arg1: T1, arg2: T2, arg3: T3) => Promise): (arg1: T1, arg2: T2, arg3: T3, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void; export function callbackify(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: NodeJS.ErrnoException) => void) => void; - export function callbackify(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void; + export function callbackify(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void; export function callbackify(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: NodeJS.ErrnoException) => void) => void; export function callbackify(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void; export function callbackify(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, callback: (err: NodeJS.ErrnoException) => void) => void; @@ -6142,7 +6115,7 @@ declare module "http2" { } export interface ServerStreamFileResponseOptions { - statCheck?: (stats: fs.Stats, headers: OutgoingHttpHeaders, statOptions: StatOptions) => void|boolean; + statCheck?: (stats: fs.Stats, headers: OutgoingHttpHeaders, statOptions: StatOptions) => void | boolean; getTrailers?: (trailers: OutgoingHttpHeaders) => void; offset?: number; length?: number; @@ -6488,7 +6461,7 @@ declare module "http2" { export type ServerSessionOptions = SessionOptions; export interface SecureClientSessionOptions extends ClientSessionOptions, tls.ConnectionOptions { } - export interface SecureServerSessionOptions extends ServerSessionOptions, tls.TlsOptions { } + export interface SecureServerSessionOptions extends ServerSessionOptions, tls.TlsServerOptions { } export interface ServerOptions extends ServerSessionOptions { allowHTTP1?: boolean; diff --git a/types/node/v8/tsconfig.json b/types/node/v8/tsconfig.json index 3f4614bef4..ce2e55d06f 100644 --- a/types/node/v8/tsconfig.json +++ b/types/node/v8/tsconfig.json @@ -11,7 +11,7 @@ ], "noImplicitAny": true, "noImplicitThis": true, - "strictNullChecks": false, + "strictNullChecks": true, "strictFunctionTypes": true, "baseUrl": "../../", "typeRoots": [ @@ -26,4 +26,4 @@ "noEmit": true, "forceConsistentCasingInFileNames": true } -} +} \ No newline at end of file From 22ee81d082108eb11b62e8a280af61693d8351dc Mon Sep 17 00:00:00 2001 From: Huw McNamara Date: Sat, 3 Feb 2018 15:38:01 +0000 Subject: [PATCH 20/99] fixed build issues --- types/node/v8/index.d.ts | 7 ++++--- types/node/v8/tsconfig.json | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/types/node/v8/index.d.ts b/types/node/v8/index.d.ts index 791b27de1d..e277ab2404 100644 --- a/types/node/v8/index.d.ts +++ b/types/node/v8/index.d.ts @@ -19,6 +19,7 @@ // Alberto Schiabel // Huw // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.1 /** inspector module types */ /// @@ -1742,7 +1743,7 @@ declare module "https" { "secureProtocol" | "servername"; - export type RequestOptions = http.RequestOptions & Pick + export type RequestOptions = http.RequestOptions & Pick; export interface AgentOptions extends http.AgentOptions, tls.ConnectionOptions { rejectUnauthorized?: boolean; @@ -4939,7 +4940,7 @@ declare module "tls" { ALPNProtocols?: string[] | Buffer[] | Uint8Array[] | Buffer | Uint8Array; SNICallback?: (servername: string, cb: (err: Error | null, ctx: SecureContext) => void) => void; sessionTimeout?: number; - ticketKeys: Buffer; + ticketKeys?: Buffer; } export interface ConnectionOptions extends SecureContextOptions { @@ -4949,7 +4950,7 @@ declare module "tls" { socket?: net.Socket; // Establish secure connection on a given socket rather than creating a new socket rejectUnauthorized?: boolean; // Defaults to true NPNProtocols?: string[] | Buffer[] | Uint8Array[] | Buffer | Uint8Array; - ALPNProtocols?: string[] | Buffer[] | Uint8Array[] | Buffer | Uint8Array + ALPNProtocols?: string[] | Buffer[] | Uint8Array[] | Buffer | Uint8Array; checkServerIdentity?: typeof checkServerIdentity; servername?: string; // SNI TLS Extension session?: Buffer; diff --git a/types/node/v8/tsconfig.json b/types/node/v8/tsconfig.json index ce2e55d06f..8deb391829 100644 --- a/types/node/v8/tsconfig.json +++ b/types/node/v8/tsconfig.json @@ -11,7 +11,7 @@ ], "noImplicitAny": true, "noImplicitThis": true, - "strictNullChecks": true, + "strictNullChecks": false, "strictFunctionTypes": true, "baseUrl": "../../", "typeRoots": [ From f91d88c1261f474989afff5c8963434b2b1e4eee Mon Sep 17 00:00:00 2001 From: Ehsan Ziya Date: Fri, 2 Feb 2018 17:18:31 +0000 Subject: [PATCH 21/99] Add extensions definition to express-graphql options --- types/express-graphql/express-graphql-tests.ts | 3 ++- types/express-graphql/index.d.ts | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/types/express-graphql/express-graphql-tests.ts b/types/express-graphql/express-graphql-tests.ts index d476682104..c91f73029e 100644 --- a/types/express-graphql/express-graphql-tests.ts +++ b/types/express-graphql/express-graphql-tests.ts @@ -10,7 +10,8 @@ const graphqlOption: graphqlHTTP.OptionsObj = { schema: schema, formatError: (error: Error) => ({ message: error.message - }) + }), + extensions: (args) => { } }; const graphqlOptionRequest = (request: express.Request): graphqlHTTP.OptionsObj => ({ diff --git a/types/express-graphql/index.d.ts b/types/express-graphql/index.d.ts index 82f988a506..89a0a80ed8 100644 --- a/types/express-graphql/index.d.ts +++ b/types/express-graphql/index.d.ts @@ -3,6 +3,7 @@ // Definitions by: Isman Usoh // Nitin Tutlani // Daniel Fader +// Ehsan Ziya // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.3 @@ -48,8 +49,22 @@ declare namespace graphqlHTTP { * A boolean to optionally enable GraphiQL mode. */ graphiql?: boolean, + + /** + * An optional function for adding additional metadata to the GraphQL response as a key-value object. + * The result will be added to "extensions" field in the resulting JSON. + */ + extensions?: (args: ExtenstionsArgs) => any; + }; + interface ExtenstionsArgs { + document: object, + variables: object, + operationName: any, + result: object + } + type Middleware = (request: Request, response: Response) => void; } From cef3a6f728de99f1c30dda112c10b7570db2e0d2 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Sat, 3 Feb 2018 18:38:38 +0100 Subject: [PATCH 22/99] Revert "Remove global spyOn, pending, fail (#23226)" This reverts commit f08ec1c02ffbc2c26297d5d6eae2e288053a8e8a. --- types/jest/index.d.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/types/jest/index.d.ts b/types/jest/index.d.ts index e3cac9b881..e0d73d5c9e 100644 --- a/types/jest/index.d.ts +++ b/types/jest/index.d.ts @@ -548,6 +548,16 @@ declare namespace jest { // Relevant parts of Jasmine's API are below so they can be changed and removed over time. // This file can't reference jasmine.d.ts since the globals aren't compatible. +declare function spyOn(object: any, method: string): jasmine.Spy; +/** + * If you call the function pending anywhere in the spec body, + * no matter the expectations, the spec will be marked pending. + */ +declare function pending(reason?: string): void; +/** + * Fails a test when called within one. + */ +declare function fail(error?: any): void; declare namespace jasmine { let DEFAULT_TIMEOUT_INTERVAL: number; function clock(): Clock; From 657add1fa267257b9323e8c29e7fad63c3d6c4a8 Mon Sep 17 00:00:00 2001 From: Kiarash Date: Sat, 3 Feb 2018 21:11:43 +0100 Subject: [PATCH 23/99] #23371 Better definition for Chart.js --- types/chart.js/index.d.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/types/chart.js/index.d.ts b/types/chart.js/index.d.ts index a2d22dbd67..83b164f15a 100644 --- a/types/chart.js/index.d.ts +++ b/types/chart.js/index.d.ts @@ -279,9 +279,11 @@ declare namespace Chart { } interface ChartTooltipsStaticConfiguartion { - positioners: any; + positioners: {[mode: string]: ChartTooltipPositioner}; } + type ChartTooltipPositioner = (elements: any[], eventPosition: Point) => Point; + interface ChartHoverOptions { mode?: string; animationDuration?: number; @@ -568,6 +570,11 @@ declare namespace Chart { pointLabels?: PointLabelOptions; ticks?: TickOptions; } + + interface Point { + x: number; + y: number; + } } export = Chart; From e28df7ba4a0c0147db37fa3b1a905e6d24246665 Mon Sep 17 00:00:00 2001 From: Kiarash Date: Sat, 3 Feb 2018 21:24:56 +0100 Subject: [PATCH 24/99] #23371 Fiy typo and updat test --- types/chart.js/chart.js-tests.ts | 9 ++++----- types/chart.js/index.d.ts | 4 ++-- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/types/chart.js/chart.js-tests.ts b/types/chart.js/chart.js-tests.ts index 8400fb5db7..8bbbaab044 100644 --- a/types/chart.js/chart.js-tests.ts +++ b/types/chart.js/chart.js-tests.ts @@ -1,4 +1,4 @@ -import { Chart, ChartData } from 'chart.js'; +import { Chart, ChartData, Point } from 'chart.js'; // alternative: // import chartjs = require('chart.js'); @@ -67,10 +67,9 @@ if (chart.chartArea) { } // http://www.chartjs.org/docs/latest/configuration/tooltip.html#position-modes -Chart.Tooltip.positioners.custom = function(elements: any, eventPosition: any) { - const tooltip = this; +Chart.Tooltip.positioners.custom = function(elements: any[], eventPosition: Point) { return { - x: 0, - y: 0 + x: eventPosition.x, + y: eventPosition.y + 10 }; }; diff --git a/types/chart.js/index.d.ts b/types/chart.js/index.d.ts index 83b164f15a..25b579db7f 100644 --- a/types/chart.js/index.d.ts +++ b/types/chart.js/index.d.ts @@ -46,7 +46,7 @@ declare class Chart { }; // Tooltip Static Options - static Tooltip: Chart.ChartTooltipsStaticConfiguartion; + static Tooltip: Chart.ChartTooltipsStaticConfiguration; } declare class PluginServiceStatic { register(plugin: PluginServiceRegistrationOptions): void; @@ -278,7 +278,7 @@ declare namespace Chart { borderWidth?: number; } - interface ChartTooltipsStaticConfiguartion { + interface ChartTooltipsStaticConfiguration { positioners: {[mode: string]: ChartTooltipPositioner}; } From 2a5d98d3a4079475ab1fc67449729b296628dc13 Mon Sep 17 00:00:00 2001 From: Kiarash Date: Sat, 3 Feb 2018 21:35:53 +0100 Subject: [PATCH 25/99] #23371 Fix Travis error --- types/chart.js/chart.js-tests.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/chart.js/chart.js-tests.ts b/types/chart.js/chart.js-tests.ts index 8bbbaab044..8ba81e8747 100644 --- a/types/chart.js/chart.js-tests.ts +++ b/types/chart.js/chart.js-tests.ts @@ -67,7 +67,7 @@ if (chart.chartArea) { } // http://www.chartjs.org/docs/latest/configuration/tooltip.html#position-modes -Chart.Tooltip.positioners.custom = function(elements: any[], eventPosition: Point) { +Chart.Tooltip.positioners.custom = (elements: any[], eventPosition: Point) => { return { x: eventPosition.x, y: eventPosition.y + 10 From d4fbe68f639cdd7cf28be72333d717c9ed3544c1 Mon Sep 17 00:00:00 2001 From: Kiarash Date: Sat, 3 Feb 2018 21:51:48 +0100 Subject: [PATCH 26/99] #23371 Change ChartTooltipOptions.position tpye to string --- types/chart.js/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/chart.js/index.d.ts b/types/chart.js/index.d.ts index 25b579db7f..9a8269bee4 100644 --- a/types/chart.js/index.d.ts +++ b/types/chart.js/index.d.ts @@ -271,7 +271,7 @@ declare namespace Chart { callbacks?: ChartTooltipCallback; filter?(item: ChartTooltipItem): boolean; itemSort?(itemA: ChartTooltipItem, itemB: ChartTooltipItem): number; - position?: "average"|"nearest"; + position?: string; caretPadding?: number; displayColors?: boolean; borderColor?: ChartColor; From d041430dc5c2b5013ba2ab645191dd5abd157cc2 Mon Sep 17 00:00:00 2001 From: Mellet Solbakk Date: Sun, 4 Feb 2018 00:05:09 +0100 Subject: [PATCH 27/99] Fix tabBarOnPress to destructure arguments --- types/react-navigation/index.d.ts | 4 ++-- types/react-navigation/react-navigation-tests.tsx | 11 ++++++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/types/react-navigation/index.d.ts b/types/react-navigation/index.d.ts index 1c6f6716a9..49164e353f 100644 --- a/types/react-navigation/index.d.ts +++ b/types/react-navigation/index.d.ts @@ -347,10 +347,10 @@ export interface NavigationTabScreenOptions extends NavigationScreenOptions { > | string | null)); tabBarVisible?: boolean; tabBarTestIDProps?: { testID?: string, accessibilityLabel?: string }; - tabBarOnPress?: ( + tabBarOnPress?: (options: { scene: TabScene, jumpToIndex: (index: number) => void - ) => void; + }) => void; } export interface NavigationDrawerScreenOptions extends NavigationScreenOptions { diff --git a/types/react-navigation/react-navigation-tests.tsx b/types/react-navigation/react-navigation-tests.tsx index 9b61d11c2d..662cd0bb9d 100644 --- a/types/react-navigation/react-navigation-tests.tsx +++ b/types/react-navigation/react-navigation-tests.tsx @@ -140,7 +140,7 @@ const tabNavigatorScreenOptions: NavigationTabScreenOptions = { tabBarVisible: true, tabBarIcon: , tabBarLabel: 'label', - tabBarOnPress: (scene, index) => {} + tabBarOnPress: ({scene, jumpToIndex}) => {} }; const tabNavigatorConfig: TabNavigatorConfig = { @@ -154,6 +154,15 @@ const tabNavigatorConfigWithInitialLayout: TabNavigatorConfig = { initialLayout: { height: 0, width: 100 }, }; +const tabNavigatorConfigWithNavigationOptions: TabNavigatorConfig = { + ...tabNavigatorConfig, + navigationOptions: { + tabBarOnPress: ({scene, jumpToIndex}) => { + jumpToIndex(scene.index); + } + }, +}; + const BasicTabNavigator = TabNavigator( routeConfigMap, tabNavigatorConfig, From c9e511143d1b4a1f496f1e8a201806e76f98f737 Mon Sep 17 00:00:00 2001 From: Tim Chen Date: Sat, 3 Feb 2018 18:33:13 -0500 Subject: [PATCH 28/99] add missing ModalProps --- types/reactstrap/lib/Modal.d.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/types/reactstrap/lib/Modal.d.ts b/types/reactstrap/lib/Modal.d.ts index 5fc1ffc734..6db7207e9f 100644 --- a/types/reactstrap/lib/Modal.d.ts +++ b/types/reactstrap/lib/Modal.d.ts @@ -1,4 +1,5 @@ import { CSSModule } from '../index'; +import { FadeProps } from './Fade'; export interface ModalProps { isOpen?: boolean; @@ -9,6 +10,8 @@ export interface ModalProps { backdrop?: boolean | 'static'; onEnter?: () => void; onExit?: () => void; + onOpened?: () => void; + onClosed?: () => void; className?: string; cssModule?: CSSModule; wrapClassName?: string; @@ -17,6 +20,8 @@ export interface ModalProps { contentClassName?: string; zIndex?: number | string; fade?: boolean; + backdropTransition?: FadeProps; + modalTransition?: FadeProps; } declare const Modal: React.StatelessComponent; From 11b262328140691d26c8e6f0b1964f8da3cadcd2 Mon Sep 17 00:00:00 2001 From: Tim Chen Date: Sat, 3 Feb 2018 18:47:26 -0500 Subject: [PATCH 29/99] add myself to contributors --- types/reactstrap/index.d.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/types/reactstrap/index.d.ts b/types/reactstrap/index.d.ts index 38c55bc08a..0c1c8d134a 100644 --- a/types/reactstrap/index.d.ts +++ b/types/reactstrap/index.d.ts @@ -7,6 +7,7 @@ // FaithForHumans // Kurt Preston // Kræn Hansen +// Tim Chen // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.3 From 5d5aaa8b7a0b4e8e1b6efc42d55fb773ae6030ac Mon Sep 17 00:00:00 2001 From: Tim Chen Date: Sat, 3 Feb 2018 18:52:11 -0500 Subject: [PATCH 30/99] Player should be the default export --- types/vimeo__player/index.d.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/types/vimeo__player/index.d.ts b/types/vimeo__player/index.d.ts index 3712e20cf7..c2699d15d2 100755 --- a/types/vimeo__player/index.d.ts +++ b/types/vimeo__player/index.d.ts @@ -1,6 +1,8 @@ // Type definitions for @vimeo/player 2.0 // Project: https://github.com/vimeo/player.js -// Definitions by: Denis Yılmaz , Felix Albert +// Definitions by: Denis Yılmaz +// Felix Albert +// Tim Chen // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped export function myMethod(a: string): string; @@ -23,7 +25,7 @@ export interface TypeError extends Error {name: "TypeError"; message: string; me export type EventName = "play" | "pause" | "ended" | "timeupdate" | "progress" | "seeked" | "texttrackchange" | "cuechange" | "cuepoint" | "volumechange" | "error" | "loaded" | string; export type EventCallback = (data: any) => any; -export class Player { +export default class Player { constructor(element: HTMLIFrameElement|HTMLElement|string, options: Options); on(event: EventName, callback: EventCallback): void; From 255933f96afde10d8a7f477fe10e0cf9f4f5a2bb Mon Sep 17 00:00:00 2001 From: Tim Chen Date: Sat, 3 Feb 2018 19:29:23 -0500 Subject: [PATCH 31/99] fix test --- types/vimeo__player/vimeo__player-tests.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/vimeo__player/vimeo__player-tests.ts b/types/vimeo__player/vimeo__player-tests.ts index 622d5ca339..bf5a637762 100644 --- a/types/vimeo__player/vimeo__player-tests.ts +++ b/types/vimeo__player/vimeo__player-tests.ts @@ -1,4 +1,4 @@ -import { Player } from '@vimeo/player'; +import Player from '@vimeo/player'; // based on README.md of @vimeo/player >> https://github.com/vimeo/player.js From 866091be5343c5f2058b055ca91ee81dbe14e174 Mon Sep 17 00:00:00 2001 From: leak4mk0 Date: Sun, 4 Feb 2018 19:32:03 +0900 Subject: [PATCH 32/99] Fix return value type of orderBy method. --- types/bookshelf/bookshelf-tests.ts | 2 +- types/bookshelf/index.d.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/types/bookshelf/bookshelf-tests.ts b/types/bookshelf/bookshelf-tests.ts index 77af31461b..92a5d73c18 100644 --- a/types/bookshelf/bookshelf-tests.ts +++ b/types/bookshelf/bookshelf-tests.ts @@ -1124,7 +1124,7 @@ ships.on('fetched', (collection, response) => { User.collection() .orderBy('-name') .fetch() - .then((users: Bookshelf.Collection) => { + .then((users: Bookshelf.Collection>) => { console.log(users); }) } diff --git a/types/bookshelf/index.d.ts b/types/bookshelf/index.d.ts index dca8d5fad2..c151e81624 100644 --- a/types/bookshelf/index.d.ts +++ b/types/bookshelf/index.d.ts @@ -250,7 +250,7 @@ declare namespace Bookshelf { detach(options?: SyncOptions): BlueBird; fetchOne(options?: CollectionFetchOneOptions): BlueBird; load(relations: string | string[], options?: SyncOptions): BlueBird>; - orderBy(column: string, order?: SortOrder): T; + orderBy(column: string, order?: SortOrder): Collection; // Declaration order matters otherwise TypeScript gets confused between query() and query(...query: string[]) query(): Knex.QueryBuilder; From c86178045e0b87d8c2cfd3c35e760eb406d88cd1 Mon Sep 17 00:00:00 2001 From: gentoo90 Date: Sun, 4 Feb 2018 12:27:29 +0200 Subject: [PATCH 33/99] jquery.colorpicker: make disable field in options optional --- types/jquery.colorpicker/index.d.ts | 2 +- types/jquery.colorpicker/jquery.colorpicker-tests.ts | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/types/jquery.colorpicker/index.d.ts b/types/jquery.colorpicker/index.d.ts index 05ee2cf5d2..1ece8a3c66 100644 --- a/types/jquery.colorpicker/index.d.ts +++ b/types/jquery.colorpicker/index.d.ts @@ -31,7 +31,7 @@ interface JQueryColorpickerOptions { closeOnOutside?: boolean; color?: string; colorFormat?: string; - disabled: boolean; + disabled?: boolean; draggable?: boolean; duration?: string; format?: string; diff --git a/types/jquery.colorpicker/jquery.colorpicker-tests.ts b/types/jquery.colorpicker/jquery.colorpicker-tests.ts index 4d2adfb69b..7d6e5c7ce3 100644 --- a/types/jquery.colorpicker/jquery.colorpicker-tests.ts +++ b/types/jquery.colorpicker/jquery.colorpicker-tests.ts @@ -70,6 +70,9 @@ colorpicker.colorpicker("destroy"); colorpicker.colorpicker("setColor", "#deadbeef"); colorpicker.colorpicker("option", "disabled", true); +// check if all options are optional +let defaultColorpicker = $("").colorpicker({}); + // example plugins provided $.colorpicker.parts["memory"] = function (inst) { From 97bae499e4d6b64497bc55e89e07725afbd55057 Mon Sep 17 00:00:00 2001 From: Eric Anderson Date: Sun, 4 Feb 2018 11:36:33 -0500 Subject: [PATCH 34/99] Removing myself as an author --- types/lodash/index.d.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/types/lodash/index.d.ts b/types/lodash/index.d.ts index fd421681c1..578bfacd21 100644 --- a/types/lodash/index.d.ts +++ b/types/lodash/index.d.ts @@ -3,7 +3,6 @@ // Definitions by: Brian Zengel , // Ilya Mochalov , // Stepan Mikhaylyuk , -// Eric L Anderson , // AJ Richardson , // Junyoung Clare Jang , // e-cloud , From 20266dcf977ba514a9bb1cfbbf7e519749745767 Mon Sep 17 00:00:00 2001 From: Ehsan Ziya Date: Sun, 4 Feb 2018 16:56:03 +0000 Subject: [PATCH 35/99] Add async function definition for extensions --- types/express-graphql/express-graphql-tests.ts | 3 ++- types/express-graphql/index.d.ts | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/types/express-graphql/express-graphql-tests.ts b/types/express-graphql/express-graphql-tests.ts index c91f73029e..8c0b14d49d 100644 --- a/types/express-graphql/express-graphql-tests.ts +++ b/types/express-graphql/express-graphql-tests.ts @@ -24,7 +24,8 @@ const graphqlOptionRequestAsync = async (request: express.Request): Promise { } }; }; diff --git a/types/express-graphql/index.d.ts b/types/express-graphql/index.d.ts index 89a0a80ed8..166bdae6e7 100644 --- a/types/express-graphql/index.d.ts +++ b/types/express-graphql/index.d.ts @@ -54,7 +54,7 @@ declare namespace graphqlHTTP { * An optional function for adding additional metadata to the GraphQL response as a key-value object. * The result will be added to "extensions" field in the resulting JSON. */ - extensions?: (args: ExtenstionsArgs) => any; + extensions?: ((args: ExtenstionsArgs) => any) | ((args: ExtenstionsArgs) => Promise); }; From 9fadb92bdcc8a79e3532583676b82f7fdf5dd74c Mon Sep 17 00:00:00 2001 From: Mohammad Hasani <20781126+brodmann@users.noreply.github.com> Date: Sun, 4 Feb 2018 21:11:58 +0330 Subject: [PATCH 36/99] fix: use Url interface instead of URL class --- types/got/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/got/index.d.ts b/types/got/index.d.ts index f76a907b7d..30a5b2c0be 100644 --- a/types/got/index.d.ts +++ b/types/got/index.d.ts @@ -80,7 +80,7 @@ declare namespace got { type GotStreamFn = (url: GotUrl, options?: GotOptions) => GotEmitter & nodeStream.Duplex; - type GotUrl = string | http.RequestOptions | URL; + type GotUrl = string | http.RequestOptions | Url; interface GotBodyOptions extends GotOptions { body?: string | Buffer | nodeStream.Readable; From 28ac79260ddd793cfdaef6351245188367e01fc6 Mon Sep 17 00:00:00 2001 From: Johan Levin Date: Sun, 4 Feb 2018 21:54:49 +0100 Subject: [PATCH 37/99] Change return type of net.Socket methods --- types/node/index.d.ts | 6 +++--- types/node/v4/index.d.ts | 6 +++--- types/node/v6/index.d.ts | 6 +++--- types/node/v7/index.d.ts | 6 +++--- types/node/v8/index.d.ts | 6 +++--- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/types/node/index.d.ts b/types/node/index.d.ts index 38f043554b..5a8a95fea2 100644 --- a/types/node/index.d.ts +++ b/types/node/index.d.ts @@ -2621,9 +2621,9 @@ declare module "net" { destroy(err?: any): void; pause(): this; resume(): this; - setTimeout(timeout: number, callback?: Function): void; - setNoDelay(noDelay?: boolean): void; - setKeepAlive(enable?: boolean, initialDelay?: number): void; + setTimeout(timeout: number, callback?: Function): this; + setNoDelay(noDelay?: boolean): this; + setKeepAlive(enable?: boolean, initialDelay?: number): this; address(): { port: number; family: string; address: string; }; unref(): void; ref(): void; diff --git a/types/node/v4/index.d.ts b/types/node/v4/index.d.ts index b2db9f80ee..9d724643ca 100644 --- a/types/node/v4/index.d.ts +++ b/types/node/v4/index.d.ts @@ -1549,9 +1549,9 @@ declare module "net" { destroy(): void; pause(): void; resume(): void; - setTimeout(timeout: number, callback?: Function): void; - setNoDelay(noDelay?: boolean): void; - setKeepAlive(enable?: boolean, initialDelay?: number): void; + setTimeout(timeout: number, callback?: Function): this; + setNoDelay(noDelay?: boolean): this; + setKeepAlive(enable?: boolean, initialDelay?: number): this; address(): { port: number; family: string; address: string; }; unref(): void; ref(): void; diff --git a/types/node/v6/index.d.ts b/types/node/v6/index.d.ts index 5cbe7ab3dc..9b229306a3 100644 --- a/types/node/v6/index.d.ts +++ b/types/node/v6/index.d.ts @@ -2093,9 +2093,9 @@ declare module "net" { setEncoding(encoding?: string): void; write(data: any, encoding?: string, callback?: Function): void; destroy(): void; - setTimeout(timeout: number, callback?: Function): void; - setNoDelay(noDelay?: boolean): void; - setKeepAlive(enable?: boolean, initialDelay?: number): void; + setTimeout(timeout: number, callback?: Function): this; + setNoDelay(noDelay?: boolean): this; + setKeepAlive(enable?: boolean, initialDelay?: number): this; address(): { port: number; family: string; address: string; }; unref(): void; ref(): void; diff --git a/types/node/v7/index.d.ts b/types/node/v7/index.d.ts index 038c4a6f58..e95ce4bff2 100644 --- a/types/node/v7/index.d.ts +++ b/types/node/v7/index.d.ts @@ -2219,9 +2219,9 @@ declare module "net" { destroy(err?: any): void; pause(): this; resume(): this; - setTimeout(timeout: number, callback?: Function): void; - setNoDelay(noDelay?: boolean): void; - setKeepAlive(enable?: boolean, initialDelay?: number): void; + setTimeout(timeout: number, callback?: Function): this; + setNoDelay(noDelay?: boolean): this; + setKeepAlive(enable?: boolean, initialDelay?: number): this; address(): { port: number; family: string; address: string; }; unref(): void; ref(): void; diff --git a/types/node/v8/index.d.ts b/types/node/v8/index.d.ts index 18ba96575d..7d9750f53f 100644 --- a/types/node/v8/index.d.ts +++ b/types/node/v8/index.d.ts @@ -2609,9 +2609,9 @@ declare module "net" { destroy(err?: any): void; pause(): this; resume(): this; - setTimeout(timeout: number, callback?: Function): void; - setNoDelay(noDelay?: boolean): void; - setKeepAlive(enable?: boolean, initialDelay?: number): void; + setTimeout(timeout: number, callback?: Function): this; + setNoDelay(noDelay?: boolean): this; + setKeepAlive(enable?: boolean, initialDelay?: number): this; address(): { port: number; family: string; address: string; }; unref(): void; ref(): void; From e38672cd3e38f759708d7bd5a3a520559f431d33 Mon Sep 17 00:00:00 2001 From: glmdgrielson <32415403+glmdgrielson@users.noreply.github.com> Date: Sun, 4 Feb 2018 18:13:44 -0500 Subject: [PATCH 38/99] Updated require.resolve The official `require.resolve` docs say that it now accepts a second argument, an object with a paths property is an array which I think is comprised of strings. --- types/node/index.d.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/types/node/index.d.ts b/types/node/index.d.ts index 38f043554b..5d4a3d54c3 100644 --- a/types/node/index.d.ts +++ b/types/node/index.d.ts @@ -118,12 +118,17 @@ interface NodeRequireFunction { } interface NodeRequire extends NodeRequireFunction { - resolve(id: string): string; + resolve: RequireResolve; cache: any; extensions: NodeExtensions; main: NodeModule | undefined; } +interface RequireResolve { + (id: string, options?: { paths: string[]; }): string; + paths(request: string): string[]; +} + interface NodeExtensions { '.js': (m: NodeModule, filename: string) => any; '.json': (m: NodeModule, filename: string) => any; From aa6b62b81fae34eddf363ea1de270ccbfed7b170 Mon Sep 17 00:00:00 2001 From: glmdgrielson <32415403+glmdgrielson@users.noreply.github.com> Date: Sun, 4 Feb 2018 18:46:17 -0500 Subject: [PATCH 39/99] A bit of backporting It was added in 8.9 after all... --- types/node/v8/index.d.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/types/node/v8/index.d.ts b/types/node/v8/index.d.ts index 18ba96575d..98d6b10e2d 100644 --- a/types/node/v8/index.d.ts +++ b/types/node/v8/index.d.ts @@ -116,12 +116,17 @@ interface NodeRequireFunction { } interface NodeRequire extends NodeRequireFunction { - resolve(id: string): string; + resolve: RequireResolve; cache: any; extensions: NodeExtensions; main: NodeModule | undefined; } +interface RequireResolve { + (id: string, options?: { paths: string[]; }): string; + paths(request: string): string[]; +} + interface NodeExtensions { '.js': (m: NodeModule, filename: string) => any; '.json': (m: NodeModule, filename: string) => any; From 3d46301f55a4f5aaa1aa84606de974c5594a74da Mon Sep 17 00:00:00 2001 From: Georgii Dolzhykov Date: Mon, 5 Feb 2018 02:09:50 +0200 Subject: [PATCH 40/99] lodash: support `ReadonlyArray` for specifying property names Closes #23278 --- types/lodash/common/common.d.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/types/lodash/common/common.d.ts b/types/lodash/common/common.d.ts index 4956ca2ae0..5af72d2440 100644 --- a/types/lodash/common/common.d.ts +++ b/types/lodash/common/common.d.ts @@ -2,7 +2,7 @@ import _ = require("../index"); type GlobalPartial = Partial; declare module "../index" { type PartialObject = GlobalPartial; - type Many = T | T[]; + type Many = T | ReadonlyArray; interface LoDashStatic { /** * Creates a lodash object which wraps value to enable implicit method chain sequences. @@ -252,4 +252,4 @@ declare module "../index" { type LoDashExplicitNillableObjectWrapper = LoDashExplicitWrapper; type LoDashExplicitNumberArrayWrapper = LoDashExplicitWrapper; type LoDashExplicitStringWrapper = LoDashExplicitWrapper; -} \ No newline at end of file +} From 5f0dc4e46ddb26d5c2c4bab48c685c6f061330a7 Mon Sep 17 00:00:00 2001 From: Tony Luo Date: Sun, 4 Feb 2018 21:46:26 -0800 Subject: [PATCH 41/99] Allow LoggerInstance.remove to take string --- types/winston/index.d.ts | 2 +- types/winston/winston-tests.ts | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/types/winston/index.d.ts b/types/winston/index.d.ts index 3de43e4349..df360f1e01 100644 --- a/types/winston/index.d.ts +++ b/types/winston/index.d.ts @@ -223,7 +223,7 @@ declare namespace winston { unhandleExceptions(...transports: TransportInstance[]): void; add(transport: TransportInstance, options?: TransportOptions, created?: boolean): LoggerInstance; clear(): void; - remove(transport: TransportInstance): LoggerInstance; + remove(transport: string | TransportInstance): LoggerInstance; startTimer(): ProfileHandler; profile(id: string, msg?: string, meta?: any, callback?: (err: Error, level: string, msg: string, meta: any) => void): LoggerInstance; configure(options: LoggerOptions): void; diff --git a/types/winston/winston-tests.ts b/types/winston/winston-tests.ts index a0620c94e0..c9c8fcd0da 100644 --- a/types/winston/winston-tests.ts +++ b/types/winston/winston-tests.ts @@ -260,6 +260,9 @@ logger = new (winston.Logger)({ ] }); +/* Remove transport by name */ +logger = logger.remove('nooo'); + /* Reconfigure logger */ logger.configure({ level: 'silly' }); From a01b03d0bb03436a457d926e2ddb27da30c767a1 Mon Sep 17 00:00:00 2001 From: Donovan Date: Mon, 5 Feb 2018 10:43:17 +0100 Subject: [PATCH 42/99] Changed type of item for the TimelineEventPropertiesResult to the approperiate type --- types/vis/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/vis/index.d.ts b/types/vis/index.d.ts index 9c0adb0a97..e7ca718dab 100644 --- a/types/vis/index.d.ts +++ b/types/vis/index.d.ts @@ -290,7 +290,7 @@ export interface TimelineEventPropertiesResult { /** * The id of the clicked item. */ - item?: number | null; + item?: IdType | null; /** * Absolute horizontal position of the click event. From 5f16d9478ca5922c0db5c7f1df7fcc7345a66042 Mon Sep 17 00:00:00 2001 From: Florian Keller Date: Mon, 5 Feb 2018 10:50:49 +0100 Subject: [PATCH 43/99] fix(ed2curve): Corrected return values --- types/ed2curve/index.d.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/types/ed2curve/index.d.ts b/types/ed2curve/index.d.ts index 6b27ee56e4..272220b831 100644 --- a/types/ed2curve/index.d.ts +++ b/types/ed2curve/index.d.ts @@ -15,7 +15,7 @@ export as namespace ed2curve; export function convertPublicKey(publicKey: SignKeyPair["publicKey"]): BoxKeyPair["publicKey"] | null; /** Converts Ed25519 secret key to Curve25519 secret key. */ -export function convertSecretKey(secretKey: SignKeyPair["secretKey"]): BoxKeyPair["secretKey"] | null; +export function convertSecretKey(secretKey: SignKeyPair["secretKey"]): BoxKeyPair["secretKey"]; /** Converts Ed25519 key pair to Curve25519 key pair. */ -export function convertKeyPair(keyPair: SignKeyPair): BoxKeyPair; +export function convertKeyPair(keyPair: SignKeyPair): BoxKeyPair | null; From cbef44fbdb3772758800d0fc525341fbde837974 Mon Sep 17 00:00:00 2001 From: Georgii Dolzhykov Date: Mon, 5 Feb 2018 12:20:59 +0200 Subject: [PATCH 44/99] tests for _.concat --- types/lodash/lodash-tests.ts | 118 +++++++++++++++++------------------ 1 file changed, 58 insertions(+), 60 deletions(-) diff --git a/types/lodash/lodash-tests.ts b/types/lodash/lodash-tests.ts index c30a3276f7..18a179c4c6 100644 --- a/types/lodash/lodash-tests.ts +++ b/types/lodash/lodash-tests.ts @@ -3775,77 +3775,75 @@ namespace TestCommit { // _.prototype.concat namespace TestConcat { - { - let result: _.LoDashImplicitArrayWrapper; + const numberROA: ReadonlyArray = [0]; - result = _(1).concat(2); - result = _(1).concat(2, 3); - result = _(1).concat(2, 3, 4); + _.concat(1); // $ExpectType number[] + _.concat([1]); // $ExpectType number[] + _.concat(numberROA); // $ExpectType number[] + _.concat(1, 2); // $ExpectType number[] + _.concat(1, [1]); // $ExpectType number[] + _.concat(1, [1], numberROA); // $ExpectType number[] - result = _(1).concat(2); - result = _(1).concat(2, 3); - result = _(1).concat(2, 3, 4); - } + _(1).concat(2); // $ExpectType LoDashImplicitWrapper + _(1).concat([1]); // $ExpectType LoDashImplicitWrapper + _(1).concat([2], numberROA); // $ExpectType LoDashImplicitWrapper + _([1]).concat(2); // $ExpectType LoDashImplicitWrapper + _(numberROA).concat(numberROA); // $ExpectType LoDashImplicitWrapper + _(numberROA).concat(numberROA, numberROA); // $ExpectType LoDashImplicitWrapper - { - let result: _.LoDashImplicitArrayWrapper; + _.chain(1).concat(2); // $ExpectType LoDashExplicitWrapper + _.chain(1).concat([1]); // $ExpectType LoDashExplicitWrapper + _.chain(1).concat([2], numberROA); // $ExpectType LoDashExplicitWrapper + _.chain([1]).concat(2); // $ExpectType LoDashExplicitWrapper + _.chain(numberROA).concat(numberROA); // $ExpectType LoDashExplicitWrapper + _.chain(numberROA).concat(numberROA, numberROA); // $ExpectType LoDashExplicitWrapper - result = _(['']).concat(['']); - result = _(['']).concat([''], ['']); - result = _(['']).concat([''], [''], ['']); + const stringROA: ReadonlyArray = ['']; - result = _(['']).concat(['']); - result = _(['']).concat([''], ['']); - result = _(['']).concat([''], [''], ['']); - } + _.concat('a'); // $ExpectType string[] + _.concat(['a']); // $ExpectType string[] + _.concat(stringROA); // $ExpectType string[] + _.concat('a', 'b'); // $ExpectType string[] + _.concat('a', ['a']); // $ExpectType string[] + _.concat('a', ['a'], stringROA); // $ExpectType string[] - { - let result: _.LoDashImplicitArrayWrapper<{a: string}>; + _('a').concat('b'); // $ExpectType LoDashImplicitWrapper + _('a').concat(['a']); // $ExpectType LoDashImplicitWrapper + _('a').concat(['b'], stringROA); // $ExpectType LoDashImplicitWrapper + _(['a']).concat('b'); // $ExpectType LoDashImplicitWrapper + _(stringROA).concat(stringROA); // $ExpectType LoDashImplicitWrapper + _(stringROA).concat(stringROA, stringROA); // $ExpectType LoDashImplicitWrapper - result = _({a: ''}).concat<{a: string}>({a: ''}); - result = _({a: ''}).concat<{a: string}>({a: ''}, {a: ''}); - result = _({a: ''}).concat<{a: string}>({a: ''}, {a: ''}, {a: ''}); + _.chain('a').concat('b'); // $ExpectType LoDashExplicitWrapper + _.chain('a').concat(['a']); // $ExpectType LoDashExplicitWrapper + _.chain('a').concat(['b'], stringROA); // $ExpectType LoDashExplicitWrapper + _.chain(['a']).concat('b'); // $ExpectType LoDashExplicitWrapper + _.chain(stringROA).concat(stringROA); // $ExpectType LoDashExplicitWrapper + _.chain(stringROA).concat(stringROA, stringROA); // $ExpectType LoDashExplicitWrapper - result = _({a: ''}).concat({a: ''}); - result = _({a: ''}).concat({a: ''}, {a: ''}); - result = _({a: ''}).concat({a: ''}, {a: ''}, {a: ''}); - } + const abcObject: AbcObject = { a: 1, b: 'foo', c: true }; + const objectROA: ReadonlyArray = [{ a: 1, b: 'foo', c: true }]; - { - let result: _.LoDashExplicitArrayWrapper; + _.concat(abcObject); // $ExpectType AbcObject[] + _.concat([abcObject]); // $ExpectType AbcObject[] + _.concat(objectROA); // $ExpectType AbcObject[] + _.concat(abcObject, abcObject); // $ExpectType AbcObject[] + _.concat(abcObject, [abcObject]); // $ExpectType AbcObject[] + _.concat(abcObject, [abcObject], objectROA); // $ExpectType AbcObject[] - result = _(1).chain().concat(2); - result = _(1).chain().concat(2, 3); - result = _(1).chain().concat(2, 3, 4); + _(abcObject).concat(abcObject); // $ExpectType LoDashImplicitWrapper + _(abcObject).concat([abcObject]); // $ExpectType LoDashImplicitWrapper + _(abcObject).concat([abcObject], objectROA); // $ExpectType LoDashImplicitWrapper + _([abcObject]).concat(abcObject); // $ExpectType LoDashImplicitWrapper + _(objectROA).concat(objectROA); // $ExpectType LoDashImplicitWrapper + _(objectROA).concat(objectROA, objectROA); // $ExpectType LoDashImplicitWrapper - result = _(1).chain().concat(2); - result = _(1).chain().concat(2, 3); - result = _(1).chain().concat(2, 3, 4); - } - - { - let result: _.LoDashExplicitArrayWrapper; - - result = _(['']).chain().concat(['']); - result = _(['']).chain().concat([''], ['']); - result = _(['']).chain().concat([''], [''], ['']); - - result = _(['']).chain().concat(['']); - result = _(['']).chain().concat([''], ['']); - result = _(['']).chain().concat([''], [''], ['']); - } - - { - let result: _.LoDashExplicitArrayWrapper<{a: string}>; - - result = _({a: ''}).chain().concat<{a: string}>({a: ''}); - result = _({a: ''}).chain().concat<{a: string}>({a: ''}, {a: ''}); - result = _({a: ''}).chain().concat<{a: string}>({a: ''}, {a: ''}, {a: ''}); - - result = _({a: ''}).chain().concat({a: ''}); - result = _({a: ''}).chain().concat({a: ''}, {a: ''}); - result = _({a: ''}).chain().concat({a: ''}, {a: ''}, {a: ''}); - } + _.chain(abcObject).concat(abcObject); // $ExpectType LoDashExplicitWrapper + _.chain(abcObject).concat([abcObject]); // $ExpectType LoDashExplicitWrapper + _.chain(abcObject).concat([abcObject], objectROA); // $ExpectType LoDashExplicitWrapper + _.chain([abcObject]).concat(abcObject); // $ExpectType LoDashExplicitWrapper + _.chain(objectROA).concat(objectROA); // $ExpectType LoDashExplicitWrapper + _.chain(objectROA).concat(objectROA, objectROA); // $ExpectType LoDashExplicitWrapper } // _.prototype.plant From 267674ea8fe92fd684eb898a25dc2da1e2f348df Mon Sep 17 00:00:00 2001 From: Mathias Lykkegaard Lorenzen Date: Mon, 5 Feb 2018 11:36:44 +0100 Subject: [PATCH 45/99] Update index.d.ts --- types/knockout/index.d.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/types/knockout/index.d.ts b/types/knockout/index.d.ts index 570f61d80b..ade040f441 100644 --- a/types/knockout/index.d.ts +++ b/types/knockout/index.d.ts @@ -314,6 +314,7 @@ interface KnockoutUtils { triggerEvent(element: any, eventType: any): void; unwrapObservable(value: KnockoutObservable | T): T; + unwrapObservable(value: KnockoutObservableArray | T[]): T[]; // NOT PART OF THE MINIFIED API SURFACE (ONLY IN knockout-{version}.debug.js) https://github.com/SteveSanderson/knockout/issues/670 // forceRefresh(node: any): void; @@ -454,6 +455,7 @@ interface KnockoutStatic { renderTemplate(template: Function, viewModel: any, options?: any, target?: any, renderMode?: any): any; renderTemplate(template: string, viewModel: any, options?: any, target?: any, renderMode?: any): any; unwrap(value: KnockoutObservable | T): T; + unwrap(value: KnockoutObservableArray | T[]): T[]; computedContext: KnockoutComputedContext; From be9eaa2cd6dc415f98551c1aa5e9d8b1e01ec1f0 Mon Sep 17 00:00:00 2001 From: Rhys Brett-Bowen Date: Mon, 5 Feb 2018 11:41:03 +0000 Subject: [PATCH 46/99] Add priority for transform definition --- types/quill/index.d.ts | 4 ++-- types/quill/quill-tests.ts | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/types/quill/index.d.ts b/types/quill/index.d.ts index a996babf30..6cc5c824c5 100644 --- a/types/quill/index.d.ts +++ b/types/quill/index.d.ts @@ -84,9 +84,9 @@ export interface DeltaStatic { concat(other: DeltaStatic): DeltaStatic; diff(other: DeltaStatic, index?: number): DeltaStatic; eachLine(predicate: (line: DeltaStatic, attributes: StringMap, idx: number) => any, newline?: string): DeltaStatic; - transform(index: number): number; + transform(index: number, priority?: boolean): number; transform(other: DeltaStatic, priority: boolean): DeltaStatic; - transformPosition(index: number): number; + transformPosition(index: number, priority?: boolean): number; } export class Delta implements DeltaStatic { diff --git a/types/quill/quill-tests.ts b/types/quill/quill-tests.ts index f907092ed1..bda294251d 100644 --- a/types/quill/quill-tests.ts +++ b/types/quill/quill-tests.ts @@ -310,10 +310,14 @@ function test_DeltaTransform() { const d1: DeltaStatic = a.transform(b, true); // new Delta().retain(1).insert('b').retain(5).insert('c'); const d2: DeltaStatic = a.transform(b, false); // new Delta().insert('b').retain(6).insert('c'); const n1: number = a.transform(5); + const n2: number = a.transform(5, true); + const n3: number = a.transform(5, false); } function test_DeltatransformPosition() { const delta = new Delta().retain(5).insert('a'); const n1: number = delta.transformPosition(4); // 4 const n2: number = delta.transformPosition(5); // 6 + const n3: number = delta.transformPosition(5, true); + const n4: number = delta.transformPosition(5, false); } From cc34c06fd6cbc425cb556f2f3cfd307c51324e22 Mon Sep 17 00:00:00 2001 From: Maksim Kavalenka Date: Mon, 5 Feb 2018 15:14:53 +0300 Subject: [PATCH 47/99] Set an appropriate name of the method --- types/milliseconds/index.d.ts | 2 +- types/milliseconds/milliseconds-tests.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/types/milliseconds/index.d.ts b/types/milliseconds/index.d.ts index 144886e457..937b281bde 100644 --- a/types/milliseconds/index.d.ts +++ b/types/milliseconds/index.d.ts @@ -9,7 +9,7 @@ interface Milliseconds { hours(hours: number): number days(days: number): number weeks(weeks: number): number - month(month: number): number + months(months: number): number years(years: number): number } diff --git a/types/milliseconds/milliseconds-tests.ts b/types/milliseconds/milliseconds-tests.ts index ea3b7c23ef..adb9efe7f3 100644 --- a/types/milliseconds/milliseconds-tests.ts +++ b/types/milliseconds/milliseconds-tests.ts @@ -5,5 +5,5 @@ milliseconds.minutes(2) milliseconds.hours(3) milliseconds.days(4) milliseconds.weeks(5) -milliseconds.month(6) +milliseconds.months(6) milliseconds.years(7) From b86955ac31118d1a476f16d7d958e2b83bdaae65 Mon Sep 17 00:00:00 2001 From: glmdgrielson <32415403+glmdgrielson@users.noreply.github.com> Date: Mon, 5 Feb 2018 09:13:51 -0500 Subject: [PATCH 48/99] Update require.resolve.paths type I'm not too familiar with the strict null checks, sorry. --- types/node/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/node/index.d.ts b/types/node/index.d.ts index 5d4a3d54c3..8c002ed5e3 100644 --- a/types/node/index.d.ts +++ b/types/node/index.d.ts @@ -126,7 +126,7 @@ interface NodeRequire extends NodeRequireFunction { interface RequireResolve { (id: string, options?: { paths: string[]; }): string; - paths(request: string): string[]; + paths(request: string): string[] | null; } interface NodeExtensions { From 8c8d986e3b66246035a053051220286f57e9a585 Mon Sep 17 00:00:00 2001 From: glmdgrielson <32415403+glmdgrielson@users.noreply.github.com> Date: Mon, 5 Feb 2018 09:16:15 -0500 Subject: [PATCH 49/99] Update require.resolve.paths type I've also changed the version in the header, as this bit wasn't added until 8.9.x. I hope that's okay. --- types/node/v8/index.d.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/types/node/v8/index.d.ts b/types/node/v8/index.d.ts index 98d6b10e2d..d2c9d822ba 100644 --- a/types/node/v8/index.d.ts +++ b/types/node/v8/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for Node.js 8.5.x +// Type definitions for Node.js 8.9.x // Project: http://nodejs.org/ // Definitions by: Microsoft TypeScript // DefinitelyTyped @@ -124,7 +124,7 @@ interface NodeRequire extends NodeRequireFunction { interface RequireResolve { (id: string, options?: { paths: string[]; }): string; - paths(request: string): string[]; + paths(request: string): string[] | null; } interface NodeExtensions { From b29ebabcb860dd8c4482a79c4a1fa860a0437e4a Mon Sep 17 00:00:00 2001 From: glmdgrielson <32415403+glmdgrielson@users.noreply.github.com> Date: Mon, 5 Feb 2018 09:29:26 -0500 Subject: [PATCH 50/99] Made paths property optional Granted, I can't imagine any reason you wouldn't have it, but you don't have to! --- types/node/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/node/index.d.ts b/types/node/index.d.ts index 8c002ed5e3..72a9d5085c 100644 --- a/types/node/index.d.ts +++ b/types/node/index.d.ts @@ -125,7 +125,7 @@ interface NodeRequire extends NodeRequireFunction { } interface RequireResolve { - (id: string, options?: { paths: string[]; }): string; + (id: string, options?: { paths?: string[]; }): string; paths(request: string): string[] | null; } From 91fcfae67f771fcb8e337db89a3d879477dc1593 Mon Sep 17 00:00:00 2001 From: glmdgrielson <32415403+glmdgrielson@users.noreply.github.com> Date: Mon, 5 Feb 2018 09:30:33 -0500 Subject: [PATCH 51/99] Made paths property optional I'm making a lot of seemingly duplicate commits here, aren't I? --- types/node/v8/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/node/v8/index.d.ts b/types/node/v8/index.d.ts index d2c9d822ba..fb80321e0c 100644 --- a/types/node/v8/index.d.ts +++ b/types/node/v8/index.d.ts @@ -123,7 +123,7 @@ interface NodeRequire extends NodeRequireFunction { } interface RequireResolve { - (id: string, options?: { paths: string[]; }): string; + (id: string, options?: { paths?: string[]; }): string; paths(request: string): string[] | null; } From 1e48a332ba00c0ea6d137a763625bbf99f96afd9 Mon Sep 17 00:00:00 2001 From: Art Date: Mon, 5 Feb 2018 14:31:03 +0000 Subject: [PATCH 52/99] Update index.d.ts --- types/node/v6/index.d.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/types/node/v6/index.d.ts b/types/node/v6/index.d.ts index 5cbe7ab3dc..187bd24c4d 100644 --- a/types/node/v6/index.d.ts +++ b/types/node/v6/index.d.ts @@ -2596,7 +2596,8 @@ declare module "fs" { */ export function mkdtempSync(prefix: string): string; export function readdir(path: string | Buffer, callback?: (err: NodeJS.ErrnoException, files: string[]) => void): void; - export function readdirSync(path: string | Buffer): string[]; + export function readdir(path: string | Buffer, opts: string | {encoding?: string}, callback?: (err: NodeJS.ErrnoException, files: string[]) => void): void; + export function readdirSync(path: string | Buffer, opts?: string | {encoding?: string}): string[]; export function close(fd: number, callback?: (err?: NodeJS.ErrnoException) => void): void; export function closeSync(fd: number): void; export function open(path: string | Buffer, flags: string | number, callback: (err: NodeJS.ErrnoException, fd: number) => void): void; From a6a051d44838a32fe7f81ded506eb8dc8a1b22fe Mon Sep 17 00:00:00 2001 From: glmdgrielson <32415403+glmdgrielson@users.noreply.github.com> Date: Mon, 5 Feb 2018 09:52:01 -0500 Subject: [PATCH 53/99] Removed whitespace Stupid auto-indent... --- types/node/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/node/index.d.ts b/types/node/index.d.ts index 72a9d5085c..3741468c4f 100644 --- a/types/node/index.d.ts +++ b/types/node/index.d.ts @@ -128,7 +128,7 @@ interface RequireResolve { (id: string, options?: { paths?: string[]; }): string; paths(request: string): string[] | null; } - + interface NodeExtensions { '.js': (m: NodeModule, filename: string) => any; '.json': (m: NodeModule, filename: string) => any; From dca88a98185c739d0999b49259caadb804517d70 Mon Sep 17 00:00:00 2001 From: Matt Clarkson Date: Mon, 5 Feb 2018 15:11:31 +0000 Subject: [PATCH 54/99] object-hash: add excludeKeys option Added in 1.2.0 of the library --- types/object-hash/index.d.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/types/object-hash/index.d.ts b/types/object-hash/index.d.ts index c6b16df950..4da49c262c 100644 --- a/types/object-hash/index.d.ts +++ b/types/object-hash/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for object-hash v1.1.8 +// Type definitions for object-hash v1.2.0 // Project: https://github.com/puleos/object-hash // Definitions by: Michael Zabka // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped @@ -18,6 +18,7 @@ declare namespace ObjectHash { respectFunctionNames?: boolean; unorderedArrays?: boolean; unorderedSets?: boolean; + excludeKeys?: (key: string) => boolean; } interface HashTableItem { From fd35f96ddd5ec5efd64ba37af88e5f3ce4c363cf Mon Sep 17 00:00:00 2001 From: Art Date: Mon, 5 Feb 2018 15:46:48 +0000 Subject: [PATCH 55/99] Update index.d.ts Add definitions author tag --- types/node/v6/index.d.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/types/node/v6/index.d.ts b/types/node/v6/index.d.ts index 187bd24c4d..7104436a01 100644 --- a/types/node/v6/index.d.ts +++ b/types/node/v6/index.d.ts @@ -5,6 +5,7 @@ // Wilco Bakker // Thomas Bouldin // Sebastian Silbermann +// Alorel // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped /************************************************ From d85cf6b138ec075dc73e00b7a4c9406c97fb485c Mon Sep 17 00:00:00 2001 From: Georgii Dolzhykov Date: Mon, 5 Feb 2018 19:16:41 +0200 Subject: [PATCH 56/99] tests for _.pick --- types/lodash/lodash-tests.ts | 69 ++++++++++++++---------------------- 1 file changed, 26 insertions(+), 43 deletions(-) diff --git a/types/lodash/lodash-tests.ts b/types/lodash/lodash-tests.ts index 18a179c4c6..ca33017323 100644 --- a/types/lodash/lodash-tests.ts +++ b/types/lodash/lodash-tests.ts @@ -11800,52 +11800,35 @@ namespace TestOmitBy { // _.pick namespace TestPick { - let obj1: AbcObject | null | undefined = anything; - let obj2: AbcObject = anything; + const obj1: AbcObject | null | undefined = anything; + const obj2: AbcObject = anything; + const readonlyArray: ReadonlyArray = ['a', 'b']; + const literalsArray = ['a' as 'a', 'b' as 'b']; + const roLiteralsArray: ReadonlyArray<'a' | 'b'> = literalsArray; - { - let result: Partial; + _.pick(obj1, 'a'); // $ExpectType PartialDeep + _.pick(obj1, 0, 'a'); // $ExpectType PartialDeep + _.pick(obj1, ['b', 1], 0, 'a'); // $ExpectType PartialDeep + _.pick(obj1, readonlyArray); // $ExpectType PartialDeep + _.pick(obj2, 'a', 'b'); // $ExpectType Pick + _.pick(obj2, literalsArray); // $ExpectType Pick + _.pick(obj2, roLiteralsArray); // $ExpectType Pick - result = _.pick(obj1, 'a'); - result = _.pick(obj1, 0, 'a'); - result = _.pick(obj1, ['b', 1], 0, 'a'); - } + _(obj1).pick('a'); // $ExpectType LoDashImplicitWrapper> + _(obj1).pick(0, 'a'); // $ExpectType LoDashImplicitWrapper> + _(obj1).pick(['b', 1], 0, 'a'); // $ExpectType LoDashImplicitWrapper> + _(obj1).pick(readonlyArray); // $ExpectType LoDashImplicitWrapper> + _(obj2).pick('a', 'b'); // $ExpectType LoDashImplicitWrapper> + _(obj2).pick(literalsArray); // $ExpectType LoDashImplicitWrapper> + _(obj2).pick(roLiteralsArray); // $ExpectType LoDashImplicitWrapper> - { - let result: Pick; - result = _.pick(obj2, 'a', 'b'); - result = _.pick(obj2, ['a' as 'a', 'b' as 'b']); - } - - { - let result: _.LoDashImplicitWrapper>; - - result = _(obj1).pick('a'); - result = _(obj1).pick(0, 'a'); - result = _(obj1).pick(['b', 1], 0, 'a'); - } - - { - let result: _.LoDashImplicitWrapper>; - - result = _(obj2).pick('a', 'b'); - result = _(obj2).pick(['a' as 'a', 'b' as 'b']); - } - - { - let result: _.LoDashExplicitWrapper>; - - result = _(obj1).chain().pick('a'); - result = _(obj1).chain().pick(0, 'a'); - result = _(obj1).chain().pick(['b', 1], 0, 'a'); - } - - { - let result: _.LoDashExplicitWrapper>; - - result = _(obj2).chain().pick('a', 'b'); - result = _(obj2).chain().pick(['a' as 'a', 'b' as 'b']); - } + _.chain(obj1).pick('a'); // $ExpectType LoDashExplicitWrapper> + _.chain(obj1).pick(0, 'a'); // $ExpectType LoDashExplicitWrapper> + _.chain(obj1).pick(['b', 1], 0, 'a'); // $ExpectType LoDashExplicitWrapper> + _.chain(obj1).pick(readonlyArray); // $ExpectType LoDashExplicitWrapper> + _.chain(obj2).pick('a', 'b'); // $ExpectType LoDashExplicitWrapper> + _.chain(obj2).pick(literalsArray); // $ExpectType LoDashExplicitWrapper> + _.chain(obj2).pick(roLiteralsArray); // $ExpectType LoDashExplicitWrapper> } // _.pickBy From c15ee71643761c9f6e63cc171f0cbb6d4a3296bd Mon Sep 17 00:00:00 2001 From: Arturas Molcanovas Date: Mon, 5 Feb 2018 19:56:40 +0000 Subject: [PATCH 57/99] Add buffer output support --- types/node/v6/index.d.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/types/node/v6/index.d.ts b/types/node/v6/index.d.ts index 187bd24c4d..480bfa3cbd 100644 --- a/types/node/v6/index.d.ts +++ b/types/node/v6/index.d.ts @@ -2597,7 +2597,9 @@ declare module "fs" { export function mkdtempSync(prefix: string): string; export function readdir(path: string | Buffer, callback?: (err: NodeJS.ErrnoException, files: string[]) => void): void; export function readdir(path: string | Buffer, opts: string | {encoding?: string}, callback?: (err: NodeJS.ErrnoException, files: string[]) => void): void; + export function readdir(path: string | Buffer, opts: {encoding: 'buffer'}, callback?: (err: NodeJS.ErrnoException, files: Buffer[]) => void): void; export function readdirSync(path: string | Buffer, opts?: string | {encoding?: string}): string[]; + export function readdirSync(path: string | Buffer, opts: {encoding: 'buffer'}): Buffer[]; export function close(fd: number, callback?: (err?: NodeJS.ErrnoException) => void): void; export function closeSync(fd: number): void; export function open(path: string | Buffer, flags: string | number, callback: (err: NodeJS.ErrnoException, fd: number) => void): void; From 16f4c65202fc31dc71bab491e1ed1cc34c513e52 Mon Sep 17 00:00:00 2001 From: Arturas Molcanovas Date: Mon, 5 Feb 2018 20:00:26 +0000 Subject: [PATCH 58/99] add string buffer --- types/node/v6/index.d.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/types/node/v6/index.d.ts b/types/node/v6/index.d.ts index 116ca17c34..3257791daa 100644 --- a/types/node/v6/index.d.ts +++ b/types/node/v6/index.d.ts @@ -2598,9 +2598,9 @@ declare module "fs" { export function mkdtempSync(prefix: string): string; export function readdir(path: string | Buffer, callback?: (err: NodeJS.ErrnoException, files: string[]) => void): void; export function readdir(path: string | Buffer, opts: string | {encoding?: string}, callback?: (err: NodeJS.ErrnoException, files: string[]) => void): void; - export function readdir(path: string | Buffer, opts: {encoding: 'buffer'}, callback?: (err: NodeJS.ErrnoException, files: Buffer[]) => void): void; + export function readdir(path: string | Buffer, opts: 'buffer' | {encoding: 'buffer'}, callback?: (err: NodeJS.ErrnoException, files: Buffer[]) => void): void; export function readdirSync(path: string | Buffer, opts?: string | {encoding?: string}): string[]; - export function readdirSync(path: string | Buffer, opts: {encoding: 'buffer'}): Buffer[]; + export function readdirSync(path: string | Buffer, opts: 'buffer' | {encoding: 'buffer'}): Buffer[]; export function close(fd: number, callback?: (err?: NodeJS.ErrnoException) => void): void; export function closeSync(fd: number): void; export function open(path: string | Buffer, flags: string | number, callback: (err: NodeJS.ErrnoException, fd: number) => void): void; From d7479d629783a0217b475872cb15a0f190d22dd2 Mon Sep 17 00:00:00 2001 From: Arturas Molcanovas Date: Mon, 5 Feb 2018 20:50:10 +0000 Subject: [PATCH 59/99] Use readdir types template from v9 --- types/node/v6/index.d.ts | 50 +++++++++++++++++++++++++++++++++---- types/node/v6/node-tests.ts | 15 +++++++++++ 2 files changed, 60 insertions(+), 5 deletions(-) diff --git a/types/node/v6/index.d.ts b/types/node/v6/index.d.ts index 3257791daa..0bd46d0fb7 100644 --- a/types/node/v6/index.d.ts +++ b/types/node/v6/index.d.ts @@ -2596,11 +2596,51 @@ declare module "fs" { * @returns Returns the created folder path. */ export function mkdtempSync(prefix: string): string; - export function readdir(path: string | Buffer, callback?: (err: NodeJS.ErrnoException, files: string[]) => void): void; - export function readdir(path: string | Buffer, opts: string | {encoding?: string}, callback?: (err: NodeJS.ErrnoException, files: string[]) => void): void; - export function readdir(path: string | Buffer, opts: 'buffer' | {encoding: 'buffer'}, callback?: (err: NodeJS.ErrnoException, files: Buffer[]) => void): void; - export function readdirSync(path: string | Buffer, opts?: string | {encoding?: string}): string[]; - export function readdirSync(path: string | Buffer, opts: 'buffer' | {encoding: 'buffer'}): Buffer[]; + /** + * Asynchronous readdir(3) - read a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + export function readdir(path: string | Buffer, options: { encoding: BufferEncoding | null } | BufferEncoding | undefined | null, callback: (err: NodeJS.ErrnoException, files: string[]) => void): void; + /** + * Asynchronous readdir(3) - read a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + export function readdir(path: string | Buffer, options: { encoding: "buffer" } | "buffer", callback: (err: NodeJS.ErrnoException, files: Buffer[]) => void): void; + + /** + * Asynchronous readdir(3) - read a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + export function readdir(path: string | Buffer, options: { encoding?: string | null } | string | undefined | null, callback: (err: NodeJS.ErrnoException, files: Array) => void): void; + + /** + * Asynchronous readdir(3) - read a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + */ + export function readdir(path: string | Buffer, callback: (err: NodeJS.ErrnoException, files: string[]) => void): void; + /** + * Synchronous readdir(3) - read a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + export function readdirSync(path: string | Buffer, options?: { encoding: BufferEncoding | null } | BufferEncoding | null): string[]; + + /** + * Synchronous readdir(3) - read a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + export function readdirSync(path: string | Buffer, options: { encoding: "buffer" } | "buffer"): Buffer[]; + + /** + * Synchronous readdir(3) - read a directory. + * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. + */ + export function readdirSync(path: string | Buffer, options?: { encoding?: string | null } | string | null): Array; export function close(fd: number, callback?: (err?: NodeJS.ErrnoException) => void): void; export function closeSync(fd: number): void; export function open(path: string | Buffer, flags: string | number, callback: (err: NodeJS.ErrnoException, fd: number) => void): void; diff --git a/types/node/v6/node-tests.ts b/types/node/v6/node-tests.ts index 34a62bf88d..bc20fadb1b 100644 --- a/types/node/v6/node-tests.ts +++ b/types/node/v6/node-tests.ts @@ -218,6 +218,21 @@ namespace fs_tests { fs.readFile('testfile', { flag: 'r' }, (err, data) => buffer = data); } + { + fs.readdir('foo', (err: any, files: string[]) => {}) + fs.readdir('foo', 'utf8', (err: any, files: string[]) => {}); + fs.readdir('foo', {encoding: 'utf8'}, (err: any, files: string[]) => {}); + fs.readdir('foo', 'buffer', (err: any, files: Buffer[]) => {}); + fs.readdir('foo', {encoding: 'buffer'}, (err: any, files: Buffer[]) => {}); + + let fsStringOut: string[] = fs.readdirSync('utf8'); + fsStringOut = fs.readdirSync('foo', 'utf8'); + fsStringOut = fs.readdirSync('foo', {encoding: 'utf8'}); + + let fsBufferOut: Buffer[] = fs.readdirSync('utf8', 'buffer'); + fsBufferOut = fs.readdirSync('foo', {encoding: 'buffer'}); + } + { var errno: number; fs.readFile('testfile', (err, data) => { From 760d1d490dfb8b6101ef82f085df15cbfa3a5183 Mon Sep 17 00:00:00 2001 From: Arturas Molcanovas Date: Mon, 5 Feb 2018 20:53:26 +0000 Subject: [PATCH 60/99] Fix path docs --- types/node/v6/index.d.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/types/node/v6/index.d.ts b/types/node/v6/index.d.ts index 0bd46d0fb7..dcf79a696c 100644 --- a/types/node/v6/index.d.ts +++ b/types/node/v6/index.d.ts @@ -2598,46 +2598,46 @@ declare module "fs" { export function mkdtempSync(prefix: string): string; /** * Asynchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param path A path to a file. * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. */ export function readdir(path: string | Buffer, options: { encoding: BufferEncoding | null } | BufferEncoding | undefined | null, callback: (err: NodeJS.ErrnoException, files: string[]) => void): void; /** * Asynchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param path A path to a file. * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. */ export function readdir(path: string | Buffer, options: { encoding: "buffer" } | "buffer", callback: (err: NodeJS.ErrnoException, files: Buffer[]) => void): void; /** * Asynchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param path A path to a file. * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. */ export function readdir(path: string | Buffer, options: { encoding?: string | null } | string | undefined | null, callback: (err: NodeJS.ErrnoException, files: Array) => void): void; /** * Asynchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param path A path to a file. */ export function readdir(path: string | Buffer, callback: (err: NodeJS.ErrnoException, files: string[]) => void): void; /** * Synchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param path A path to a file. * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. */ export function readdirSync(path: string | Buffer, options?: { encoding: BufferEncoding | null } | BufferEncoding | null): string[]; /** * Synchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param path A path to a file. * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. */ export function readdirSync(path: string | Buffer, options: { encoding: "buffer" } | "buffer"): Buffer[]; /** * Synchronous readdir(3) - read a directory. - * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. + * @param path A path to a file. * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. */ export function readdirSync(path: string | Buffer, options?: { encoding?: string | null } | string | null): Array; From 95e43e9285bc70ab9870584f4c5356b860e8be44 Mon Sep 17 00:00:00 2001 From: Paulo Bu Date: Mon, 5 Feb 2018 23:09:12 +0100 Subject: [PATCH 61/99] Small fix and improvement to diff2html types. --- types/diff2html/index.d.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/types/diff2html/index.d.ts b/types/diff2html/index.d.ts index ce2522d444..1b75f1e3df 100644 --- a/types/diff2html/index.d.ts +++ b/types/diff2html/index.d.ts @@ -4,7 +4,7 @@ // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped declare namespace Diff2Html { - + export interface Options { inputFormat?: string; outputFormat?: string; @@ -53,10 +53,11 @@ declare namespace Diff2Html { checksumAfter?: string; mode?: string; } - + export interface Diff2Html { - getJsonFromDiff(input: string, configuration?: Options): Result; + getJsonFromDiff(input: string, configuration?: Options): Result[]; getPrettyHtml(input: any, configuration?: Options): string; + getPrettyHtmlFromJson(input: Result[], configuration?: Options): string; } } From b349285311741c25d1e3acf75ee3591477314cc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomek=20=C5=81aziuk?= Date: Tue, 6 Feb 2018 00:07:42 +0100 Subject: [PATCH 62/99] passport-http fix --- types/passport-http/index.d.ts | 8 ++- types/passport-http/passport-http-tests.ts | 28 ++++---- types/passport-http/tslint.json | 78 +--------------------- 3 files changed, 20 insertions(+), 94 deletions(-) diff --git a/types/passport-http/index.d.ts b/types/passport-http/index.d.ts index e9a66964ea..aedb119fa0 100644 --- a/types/passport-http/index.d.ts +++ b/types/passport-http/index.d.ts @@ -1,15 +1,16 @@ // Type definitions for passport-http 0.3.0 // Project: https://github.com/jaredhanson/passport-http // Definitions by: Christophe Vidal +// Tomek Łaziuk // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.3 import passport = require("passport"); import express = require("express"); -interface BasicStrategyOptions { +interface BasicStrategyOptions { realm?: string; - passReqToCallback?: boolean; + passReqToCallback?: req; } interface DigestStrategyOptions { @@ -45,7 +46,8 @@ interface DigestValidateFunction { declare class BasicStrategy implements passport.Strategy { constructor(verify: BasicVerifyFunction); - constructor(options: BasicStrategyOptions, verify: BasicVerifyFunction); + constructor(options: BasicStrategyOptions, verify: BasicVerifyFunction); + constructor(options: BasicStrategyOptions, verify: BasicVerifyFunctionWithRequest); name: string; authenticate: (req: express.Request, options?: Object) => void; diff --git a/types/passport-http/passport-http-tests.ts b/types/passport-http/passport-http-tests.ts index 4a70d30b89..217bb5e289 100644 --- a/types/passport-http/passport-http-tests.ts +++ b/types/passport-http/passport-http-tests.ts @@ -24,7 +24,7 @@ function validateNonce(nonce: string) { function validateParams(nonce: string, cnonce: string, nc: number, opaque: string) { } -passport.use(new http.BasicStrategy((username: string, password: string, done: any) => { +passport.use(new http.BasicStrategy((username, password, done) => { User.findOne({ username: username, password: password, @@ -44,21 +44,21 @@ passport.use(new http.BasicStrategy((username: string, password: string, done: a passport.use(new http.BasicStrategy({ realm: "User", passReqToCallback: true, -}, (username: string, password: string, done: any) => { - User.findOne({ - username: username, - password: password, - }, (error, user) => { - if (error) { - return done(error); - } +}, (req, username, password, done) => { + // with req when needed +})); - if (!user) { - return done(null, false); - } +passport.use(new http.BasicStrategy({ + realm: "User", +}, (username, password, done) => { + // without req by default +})); - done(null, user); - }); +passport.use(new http.BasicStrategy({ + realm: "User", + passReqToCallback: false, +}, (username, password, done) => { + // without req })); passport.use(new http.DigestStrategy((username: string, done: any) => { diff --git a/types/passport-http/tslint.json b/types/passport-http/tslint.json index a41bf5d19a..f93cf8562a 100644 --- a/types/passport-http/tslint.json +++ b/types/passport-http/tslint.json @@ -1,79 +1,3 @@ { - "extends": "dtslint/dt.json", - "rules": { - "adjacent-overload-signatures": false, - "array-type": false, - "arrow-return-shorthand": false, - "ban-types": false, - "callable-types": false, - "comment-format": false, - "dt-header": false, - "eofline": false, - "export-just-namespace": false, - "import-spacing": false, - "interface-name": false, - "interface-over-type-literal": false, - "jsdoc-format": false, - "max-line-length": false, - "member-access": false, - "new-parens": false, - "no-any-union": false, - "no-boolean-literal-compare": false, - "no-conditional-assignment": false, - "no-consecutive-blank-lines": false, - "no-construct": false, - "no-declare-current-package": false, - "no-duplicate-imports": false, - "no-duplicate-variable": false, - "no-empty-interface": false, - "no-for-in-array": false, - "no-inferrable-types": false, - "no-internal-module": false, - "no-irregular-whitespace": false, - "no-mergeable-namespace": false, - "no-misused-new": false, - "no-namespace": false, - "no-object-literal-type-assertion": false, - "no-padding": false, - "no-redundant-jsdoc": false, - "no-redundant-jsdoc-2": false, - "no-redundant-undefined": false, - "no-reference-import": false, - "no-relative-import-in-test": false, - "no-self-import": false, - "no-single-declare-module": false, - "no-string-throw": false, - "no-unnecessary-callback-wrapper": false, - "no-unnecessary-class": false, - "no-unnecessary-generics": false, - "no-unnecessary-qualifier": false, - "no-unnecessary-type-assertion": false, - "no-useless-files": false, - "no-var-keyword": false, - "no-var-requires": false, - "no-void-expression": false, - "no-trailing-whitespace": false, - "object-literal-key-quotes": false, - "object-literal-shorthand": false, - "one-line": false, - "one-variable-per-declaration": false, - "only-arrow-functions": false, - "prefer-conditional-expression": false, - "prefer-const": false, - "prefer-declare-function": false, - "prefer-for-of": false, - "prefer-method-signature": false, - "prefer-template": false, - "radix": false, - "semicolon": false, - "space-before-function-paren": false, - "space-within-parens": false, - "strict-export-declare-modifiers": false, - "trim-file": false, - "triple-equals": false, - "typedef-whitespace": false, - "unified-signatures": false, - "void-return": false, - "whitespace": false - } + "extends": "dtslint/dt.json" } From 622186f74f4d83f502cc183fc2abc0bf31cb02f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomek=20=C5=81aziuk?= Date: Tue, 6 Feb 2018 00:20:49 +0100 Subject: [PATCH 63/99] tslint --- types/passport-http/index.d.ts | 55 ++++++++++++---------- types/passport-http/passport-http-tests.ts | 22 ++++----- 2 files changed, 42 insertions(+), 35 deletions(-) diff --git a/types/passport-http/index.d.ts b/types/passport-http/index.d.ts index aedb119fa0..bb9dd35c1b 100644 --- a/types/passport-http/index.d.ts +++ b/types/passport-http/index.d.ts @@ -1,62 +1,69 @@ -// Type definitions for passport-http 0.3.0 +// Type definitions for passport-http 0.3 // Project: https://github.com/jaredhanson/passport-http // Definitions by: Christophe Vidal // Tomek Łaziuk // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.3 -import passport = require("passport"); -import express = require("express"); +import * as passport from "passport"; +import * as express from "express"; -interface BasicStrategyOptions { +export interface BasicStrategyOptions { realm?: string; passReqToCallback?: req; } -interface DigestStrategyOptions { +export interface DigestStrategyOptions { realm?: string; - domain?: string | Array; + domain?: string | string[]; opaque?: string; algorithm?: string; - qop?: string | Array; + qop?: string | string[]; } -interface DigestValidateOptions { +export interface DigestValidateOptions { nonce: string; cnonce: string; nc: number; opaque: string; } -interface BasicVerifyFunction { - (username: string, password: string, done: (error: any, user?: any) => void): void; -} +export type BasicVerifyFunction = ( + username: string, + password: string, + done: (error: any, user?: any) => void, +) => any; -interface BasicVerifyFunctionWithRequest { - (req: express.Request, username: string, password: string, done: (error: any, user?: any) => void): void; -} +export type BasicVerifyFunctionWithRequest = ( + req: express.Request, + username: string, + password: string, + done: (error: any, user?: any) => void, +) => any; -interface DigestSecretFunction { - (username: string, done: (error: any, user?: any, password?: any) => void): void; -} +export type DigestSecretFunction = ( + username: string, + done: (error: any, user?: any, password?: any) => void, +) => any; -interface DigestValidateFunction { - (params: DigestValidateOptions, done: (error: any, valid: boolean) => void): void; -} +export type DigestValidateFunction = ( + params: DigestValidateOptions, + done: (error: any, valid: boolean) => void, +) => any; -declare class BasicStrategy implements passport.Strategy { +export class BasicStrategy implements passport.Strategy { constructor(verify: BasicVerifyFunction); constructor(options: BasicStrategyOptions, verify: BasicVerifyFunction); constructor(options: BasicStrategyOptions, verify: BasicVerifyFunctionWithRequest); name: string; - authenticate: (req: express.Request, options?: Object) => void; + authenticate: (req: express.Request, options?: object) => void; } -declare class DigestStrategy implements passport.Strategy { +export declare class DigestStrategy implements passport.Strategy { constructor(secret: DigestSecretFunction, validate?: DigestValidateFunction); constructor(options: DigestStrategyOptions, secret: DigestSecretFunction, validate?: DigestValidateFunction); name: string; - authenticate: (req: express.Request, options?: Object) => void; + authenticate: (req: express.Request, options?: object) => void; } diff --git a/types/passport-http/passport-http-tests.ts b/types/passport-http/passport-http-tests.ts index 217bb5e289..a9e09b0df1 100644 --- a/types/passport-http/passport-http-tests.ts +++ b/types/passport-http/passport-http-tests.ts @@ -2,18 +2,18 @@ * Created by Christophe Vidal */ -import passport = require("passport"); -import http = require("passport-http"); +import * as passport from "passport"; +import * as http from "passport-http"; -interface IUser { +interface UserInterface { username: string; password?: string; } class User { - public password: string; + password: string; - static findOne(user: IUser, callback: (error: Error, user: User) => void): void { + static findOne(user: UserInterface, callback: (error: Error, user: User) => void): void { callback(null, new User()); } } @@ -26,8 +26,8 @@ function validateParams(nonce: string, cnonce: string, nc: number, opaque: strin passport.use(new http.BasicStrategy((username, password, done) => { User.findOne({ - username: username, - password: password, + username, + password, }, (error, user) => { if (error) { return done(error); @@ -62,7 +62,7 @@ passport.use(new http.BasicStrategy({ })); passport.use(new http.DigestStrategy((username: string, done: any) => { - User.findOne({username: username}, (error, user) => { + User.findOne({username}, (error, user) => { if (error) { return done(error); } @@ -76,7 +76,7 @@ passport.use(new http.DigestStrategy((username: string, done: any) => { })); passport.use(new http.DigestStrategy((username: string, done: any) => { - User.findOne({username: username}, (error, user) => { + User.findOne({username}, (error, user) => { if (error) { return done(error); } @@ -99,7 +99,7 @@ passport.use(new http.DigestStrategy({ algorithm: "MD5", qop: "auth", }, (username: string, done: any) => { - User.findOne({username: username}, (error, user) => { + User.findOne({username}, (error, user) => { if (error) { return done(error); } @@ -119,7 +119,7 @@ passport.use(new http.DigestStrategy({ algorithm: "MD5", qop: "auth", }, (username: string, done: any) => { - User.findOne({username: username}, (error, user) => { + User.findOne({username}, (error, user) => { if (error) { return done(error); } From c1fb0e4ba8d3edd6727c62d74ade911fa887ab12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomek=20=C5=81aziuk?= Date: Tue, 6 Feb 2018 00:23:06 +0100 Subject: [PATCH 64/99] esModuleInterlop --- types/passport-http/index.d.ts | 4 ++-- types/passport-http/passport-http-tests.ts | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/types/passport-http/index.d.ts b/types/passport-http/index.d.ts index bb9dd35c1b..bee5e37f33 100644 --- a/types/passport-http/index.d.ts +++ b/types/passport-http/index.d.ts @@ -5,8 +5,8 @@ // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.3 -import * as passport from "passport"; -import * as express from "express"; +import passport = require("passport"); +import http = require("passport-http"); export interface BasicStrategyOptions { realm?: string; diff --git a/types/passport-http/passport-http-tests.ts b/types/passport-http/passport-http-tests.ts index a9e09b0df1..9db1439faa 100644 --- a/types/passport-http/passport-http-tests.ts +++ b/types/passport-http/passport-http-tests.ts @@ -2,8 +2,8 @@ * Created by Christophe Vidal */ -import * as passport from "passport"; -import * as http from "passport-http"; +import passport = require("passport"); +import http = require("passport-http"); interface UserInterface { username: string; @@ -62,7 +62,7 @@ passport.use(new http.BasicStrategy({ })); passport.use(new http.DigestStrategy((username: string, done: any) => { - User.findOne({username}, (error, user) => { + User.findOne({ username }, (error, user) => { if (error) { return done(error); } @@ -76,7 +76,7 @@ passport.use(new http.DigestStrategy((username: string, done: any) => { })); passport.use(new http.DigestStrategy((username: string, done: any) => { - User.findOne({username}, (error, user) => { + User.findOne({ username }, (error, user) => { if (error) { return done(error); } @@ -99,7 +99,7 @@ passport.use(new http.DigestStrategy({ algorithm: "MD5", qop: "auth", }, (username: string, done: any) => { - User.findOne({username}, (error, user) => { + User.findOne({ username }, (error, user) => { if (error) { return done(error); } @@ -119,7 +119,7 @@ passport.use(new http.DigestStrategy({ algorithm: "MD5", qop: "auth", }, (username: string, done: any) => { - User.findOne({username}, (error, user) => { + User.findOne({ username }, (error, user) => { if (error) { return done(error); } From 35b9ca92d24402bc970620aa23492da1a7fe991a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomek=20=C5=81aziuk?= Date: Tue, 6 Feb 2018 00:29:10 +0100 Subject: [PATCH 65/99] tslint --- types/passport-http/index.d.ts | 4 ++-- types/passport-http/passport-http-tests.ts | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/types/passport-http/index.d.ts b/types/passport-http/index.d.ts index bee5e37f33..458e5f2076 100644 --- a/types/passport-http/index.d.ts +++ b/types/passport-http/index.d.ts @@ -6,7 +6,7 @@ // TypeScript Version: 2.3 import passport = require("passport"); -import http = require("passport-http"); +import express = require("express"); export interface BasicStrategyOptions { realm?: string; @@ -60,7 +60,7 @@ export class BasicStrategy implements passport.Strategy { authenticate: (req: express.Request, options?: object) => void; } -export declare class DigestStrategy implements passport.Strategy { +export class DigestStrategy implements passport.Strategy { constructor(secret: DigestSecretFunction, validate?: DigestValidateFunction); constructor(options: DigestStrategyOptions, secret: DigestSecretFunction, validate?: DigestValidateFunction); diff --git a/types/passport-http/passport-http-tests.ts b/types/passport-http/passport-http-tests.ts index 9db1439faa..396138b466 100644 --- a/types/passport-http/passport-http-tests.ts +++ b/types/passport-http/passport-http-tests.ts @@ -30,11 +30,13 @@ passport.use(new http.BasicStrategy((username, password, done) => { password, }, (error, user) => { if (error) { - return done(error); + done(error); + return; } if (!user) { - return done(null, false); + done(null, false); + return; } done(null, user); From d1a6daa6448160d5584b90633824ec2b451c6981 Mon Sep 17 00:00:00 2001 From: Nico Hartto Date: Tue, 6 Feb 2018 16:13:42 +0200 Subject: [PATCH 66/99] Fixed typing for table_toolbar boolean => string. https://github.com/DefinitelyTyped/DefinitelyTyped/issues/23457 --- types/tinymce/index.d.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/types/tinymce/index.d.ts b/types/tinymce/index.d.ts index 3719b35784..40c9354182 100644 --- a/types/tinymce/index.d.ts +++ b/types/tinymce/index.d.ts @@ -1,6 +1,8 @@ // Type definitions for TinyMCE 4.5 // Project: https://github.com/tinymce/tinymce -// Definitions by: Martin Duparc , Poul Poulsen +// Definitions by: Martin Duparc +// Poul Poulsen +// Nico Hartto // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.3 @@ -53,7 +55,7 @@ export function walk(o: {}, f: () => void, n?: string, s?: string): void; export function init(settings: Settings): void; export interface Settings { - table_toolbar?: boolean; + table_toolbar?: string; auto_focus?: string; From 6c9170c6dd2dbc066b62699c3b06d974f046cce4 Mon Sep 17 00:00:00 2001 From: Nico Hartto Date: Tue, 6 Feb 2018 16:19:12 +0200 Subject: [PATCH 67/99] First iteration of types for tinymce table plugin --- types/tinymce/index.d.ts | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/types/tinymce/index.d.ts b/types/tinymce/index.d.ts index 40c9354182..d342e13647 100644 --- a/types/tinymce/index.d.ts +++ b/types/tinymce/index.d.ts @@ -57,6 +57,30 @@ export function init(settings: Settings): void; export interface Settings { table_toolbar?: string; + table_appearance_options?: boolean; + + table_clone_elements?: string; + + table_grid?: boolean; + + table_tab_navigation?: boolean; + + table_default_attributes?: object | string; + + table_default_styles?: object | string; + + table_class_list?: object[]; + + table_cell_class_list?: object[]; + + table_row_class_list?: object[]; + + table_advtab?: boolean; + + table_cell_advtab?: boolean; + + table_row_advtab?: boolean; + auto_focus?: string; cache_suffix?: string; From 6a699cadd8db097239e305cbec787e81ff04b846 Mon Sep 17 00:00:00 2001 From: Nico Hartto Date: Tue, 6 Feb 2018 16:25:37 +0200 Subject: [PATCH 68/99] Added tests for table plugin types --- types/tinymce/tinymce-tests.ts | 45 ++++++++++++++++++++++++++++------ 1 file changed, 38 insertions(+), 7 deletions(-) diff --git a/types/tinymce/tinymce-tests.ts b/types/tinymce/tinymce-tests.ts index 2b32824349..d6bda504cd 100644 --- a/types/tinymce/tinymce-tests.ts +++ b/types/tinymce/tinymce-tests.ts @@ -1,14 +1,14 @@ import * as tinymce from 'tinymce'; -tinymce.init({ +const settings: tinymce.Settings = { selector: 'textarea', height: 500, menubar: false, plugins: [ - 'advlist autolink lists link image charmap print preview anchor', - 'searchreplace visualblocks code fullscreen', - 'insertdatetime media table contextmenu paste code', - 'autosave imagetools' + 'advlist autolink lists link image charmap print preview anchor', + 'searchreplace visualblocks code fullscreen', + 'insertdatetime media table contextmenu paste code', + 'autosave imagetools' ], autosave_ask_before_unload: false, autosave_interval: "20s", @@ -18,7 +18,38 @@ tinymce.init({ toolbar: 'undo redo | insert | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image', content_css: '//www.tinymce.com/css/codepen.min.css', imagetools_cors_hosts: ['mydomain.com', 'otherdomain.com'], - imagetools_proxy: "proxy.php" -}); + imagetools_proxy: "proxy.php", + table_toolbar: "tableprops tabledelete | tableinsertrowbefore tableinsertrowafter tabledeleterow | tableinsertcolbefore tableinsertcolafter tabledeletecol", + table_appearance_options: false, + table_clone_elements: "strong em a", + table_grid: false, + table_tab_navigation: false, + table_default_attributes: { + title: 'My table' + }, + table_default_styles: { + fontWeight: 'bold' + }, + table_class_list: [ + {title: 'None', value: ''}, + {title: 'Dog', value: 'dog'}, + {title: 'Cat', value: 'cat'} + ], + table_cell_class_list: [ + {title: 'None', value: ''}, + {title: 'Dog', value: 'dog'}, + {title: 'Cat', value: 'cat'} + ], + table_row_class_list: [ + {title: 'None', value: ''}, + {title: 'Dog', value: 'dog'}, + {title: 'Cat', value: 'cat'} + ], + table_advtab: false, + table_cell_advtab: false, + table_row_advtab: false, +}; + +tinymce.init(settings); const t = new tinymce.util.Color('#FFFFFF'); From 1758d5cc16104a202468564b37a788b153606346 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Tue, 6 Feb 2018 11:46:52 -0500 Subject: [PATCH 69/99] Add explicit URITemplate type to urijs types. * Strongly typed `expand` function on URITemplate that outlines possible values. --- types/urijs/index.d.ts | 15 ++++++++++++++- types/urijs/urijs-tests.ts | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/types/urijs/index.d.ts b/types/urijs/index.d.ts index 64d048a6a7..be4ee4cc00 100644 --- a/types/urijs/index.d.ts +++ b/types/urijs/index.d.ts @@ -234,6 +234,18 @@ declare namespace uri { withinString(source: string, func: (url: string) => string): string; } + type URITemplateValue = string | string[] | { [key: string] : string } | undefined | null; + type URITemplateCallback = (keyName: string) => URITemplateValue; + + interface URITemplate { + expand(data: { [key: string]: URITemplateValue | URITemplateCallback } | URITemplateCallback, opts?: Object) : URI; + } + + interface URITemplateStatic { + (template: string) : URITemplate; + + new (template: string) : URITemplate; + } } interface JQuery { @@ -241,6 +253,7 @@ interface JQuery { } declare var URI: uri.URIStatic; +declare var URITemplate : uri.URITemplateStatic; declare module 'URI' { export = URI; @@ -251,5 +264,5 @@ declare module 'urijs' { } declare module 'urijs/src/URITemplate' { - export = URI; + export = URITemplate; } diff --git a/types/urijs/urijs-tests.ts b/types/urijs/urijs-tests.ts index f520f0eaca..231879b94d 100644 --- a/types/urijs/urijs-tests.ts +++ b/types/urijs/urijs-tests.ts @@ -65,6 +65,44 @@ URI('http://user:pass@example.org:80/foo/bar.html?foo=bar&bar=baz#frag').equals( }) ); +// Basic URITemplate type usage +URI('http://user:pass@example.org:80/foo/bar.html?foo=bar&bar=baz#frag').equals( + URITemplate('http://user:pass@example.org:80{/p*}{?q*}{#h}').expand({ + p: ["foo", "bar.html"], + q: {foo: "bar", bar: "baz"}, + h: "frag" + }) +); + +// Using a callback for a specific key value. +URI('http://user:pass@example.org:80/foo/bar.html?foo=bar&bar=baz#frag').equals( + URITemplate('http://user:pass@example.org:80{/p*}{?q*}{#h}').expand({ + p: (key) => ["foo", "bar.html"], + q: {foo: "bar", bar: "baz"}, + h: "frag" + }) +); + +// Using a callback for entire data parameter. +URI('http://user:pass@example.org:80/foo/bar.html?foo=bar&bar=baz#frag').equals( + URITemplate('http://user:pass@example.org:80{/p*}{?q*}{#h}').expand((key) => { + switch(key) { + case 'p': return ["foo", "bar.html"]; + case '1': return {foo: "bar", bar: "baz"}; + case 'h': return "frag"; + } + }) +); + +// Supports null/undefined values for certain keys +URI('http://user:pass@example.org:80/foo/bar.html').equals( + URITemplate('http://user:pass@example.org:80{/p*}{?q*}{#h}').expand({ + p: ["foo", "bar.html"], + q: null, + h: undefined + }) +); + /* Tests for hasSearch(), hasQuery() From: http://medialize.github.io/URI.js/docs.html#search-has From 8e3b4d3f3f708a5494be5faf2b2200872f700699 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Tue, 6 Feb 2018 11:51:12 -0500 Subject: [PATCH 70/99] Add myself to `Definitions` header of urijs. --- types/urijs/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/urijs/index.d.ts b/types/urijs/index.d.ts index be4ee4cc00..6c1d04a0aa 100644 --- a/types/urijs/index.d.ts +++ b/types/urijs/index.d.ts @@ -1,6 +1,6 @@ // Type definitions for URI.js 1.15.1 // Project: https://github.com/medialize/URI.js -// Definitions by: RodneyJT , Brian Surowiec +// Definitions by: RodneyJT , Brian Surowiec , Pete Johanson // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.3 From 4ac19f3b7b38dcc2f554bf5f053365fe66f9d0c1 Mon Sep 17 00:00:00 2001 From: Pete Johanson Date: Tue, 6 Feb 2018 11:56:47 -0500 Subject: [PATCH 71/99] Switch to using ReadonlyArray for URITemplateValue. --- types/urijs/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/urijs/index.d.ts b/types/urijs/index.d.ts index 6c1d04a0aa..4b5e9706ff 100644 --- a/types/urijs/index.d.ts +++ b/types/urijs/index.d.ts @@ -234,7 +234,7 @@ declare namespace uri { withinString(source: string, func: (url: string) => string): string; } - type URITemplateValue = string | string[] | { [key: string] : string } | undefined | null; + type URITemplateValue = string | ReadonlyArray | { [key: string] : string } | undefined | null; type URITemplateCallback = (keyName: string) => URITemplateValue; interface URITemplate { From 20a8429ad3712860178fa86ace7c9847ea3c9e84 Mon Sep 17 00:00:00 2001 From: Matthias Dailey Date: Tue, 6 Feb 2018 12:44:59 -0500 Subject: [PATCH 72/99] Add tests and fix a few definitions. --- types/openlayers/index.d.ts | 58 +++++++++--------- types/openlayers/openlayers-tests.ts | 90 ++++++++++++++++++++++++++-- 2 files changed, 115 insertions(+), 33 deletions(-) diff --git a/types/openlayers/index.d.ts b/types/openlayers/index.d.ts index e806d60666..f9593fcb09 100644 --- a/types/openlayers/index.d.ts +++ b/types/openlayers/index.d.ts @@ -12379,7 +12379,7 @@ declare module ol { * @return {ol.Coordinate|undefined} Constrained center. * @api */ - constrainCenter(center: ol.Coordinate): ol.Coordinate; + constrainCenter(center?: ol.Coordinate): ol.Coordinate; /** * Get the constrained resolution of this view. @@ -12389,7 +12389,7 @@ declare module ol { * @return {number|undefined} Constrained resolution. * @api */ - constrainResolution(resolution: number, opt_delta?: number, opt_direction?: number): number; + constrainResolution(resolution?: number, opt_delta?: number, opt_direction?: number): number; /** * Get the constrained rotation of this view. @@ -12398,7 +12398,7 @@ declare module ol { * @return {number|undefined} Constrained rotation. * @api */ - constrainRotation(rotation: number, opt_delta?: number): number; + constrainRotation(rotation?: number, opt_delta?: number): number; /** * Get the view center. @@ -12433,33 +12433,33 @@ declare module ol { */ getMinResolution(): number; - /** - * Get the maximum zoom level for the view. - * @return {number} The maximum zoom level. - * @api - */ - getMaxZoom(): number; + /** + * Get the maximum zoom level for the view. + * @return {number} The maximum zoom level. + * @api + */ + getMaxZoom(): number; - /** - * Set a new maximum zoom level for the view. - * @param {number} zoom The maximum zoom level. - * @api stable - */ - setMaxZoom(zoom: number): void; + /** + * Set a new maximum zoom level for the view. + * @param {number} zoom The maximum zoom level. + * @api stable + */ + setMaxZoom(zoom: number): void; - /** - * Get the minimum zoom level for the view. - * @return {number} The minimum zoom level. - * @api - */ - getMinZoom(): number; + /** + * Get the minimum zoom level for the view. + * @return {number} The minimum zoom level. + * @api + */ + getMinZoom(): number; - /** - * Set a new minimum zoom level for the view. - * @param {number} zoom The minimum zoom level. - * @api stable - */ - setMinZoom(zoom: number): void; + /** + * Set a new minimum zoom level for the view. + * @param {number} zoom The minimum zoom level. + * @api stable + */ + setMinZoom(zoom: number): void; /** * Get the view projection. @@ -12569,7 +12569,7 @@ declare module ol { * @observable * @api stable */ - setResolution(resolution: number): void; + setResolution(resolution?: number): void; /** * Set the rotation for this view. @@ -12668,7 +12668,7 @@ declare module olx { zoom?: number | undefined; resolution?: number | undefined; rotation?: number | undefined; - anchor?: number | undefined; + anchor?: ol.Coordinate | undefined; duration?: number | undefined; easing?: ((t: number) => number) | undefined; } diff --git a/types/openlayers/openlayers-tests.ts b/types/openlayers/openlayers-tests.ts index 4353f48960..1981e50847 100644 --- a/types/openlayers/openlayers-tests.ts +++ b/types/openlayers/openlayers-tests.ts @@ -55,6 +55,7 @@ let mapBrowserEvent: ol.MapBrowserEvent; let multiLineString: ol.geom.MultiLineString; let multiPoint: ol.geom.MultiPoint; let multiPolygon: ol.geom.MultiPolygon; +let pixel: ol.Pixel; let point: ol.geom.Point; let polygon: ol.geom.Polygon; let projection: ol.proj.Projection; @@ -392,17 +393,97 @@ voidValue = feature.setProperties(object); // ol.View // -let view: ol.View = new ol.View({ - center: [0, 0], +let view: ol.View; +view = new ol.View(); +view = new ol.View({}); +view = new ol.View({ + center: coordinate, + constrainRotation: numberValue, + enableRotation: booleanValue, + extent: extent, + maxResolution: numberValue, + minResolution: numberValue, + maxZoom: numberValue, + minZoom: numberValue, + projection: projectionLike, + resolution: numberValue, + resolutions: [numberValue, numberValue, numberValue, numberValue, numberValue], + rotation: numberValue, zoom: numberValue, + zoomFactor: numberValue, +}); +view = new ol.View({ + constrainRotation: booleanValue, }); -voidValue = view.setMaxZoom(numberValue); -voidValue = view.setMinZoom(numberValue); +voidValue = view.animate(); +voidValue = view.animate({}); +voidValue = view.animate({zoom: view.getZoom() + 1}); +voidValue = view.animate({zoom: 10}, {center: [0, 0]}); +voidValue = view.animate({ + center: coordinate, + zoom: numberValue, + resolution: numberValue, + rotation: numberValue, + anchor: coordinate, + duration: numberValue, + easing: easingFunction, +}); +extent = view.calculateExtent(); +extent = view.calculateExtent(size); +voidValue = view.cancelAnimations(); +voidValue = view.centerOn(coordinate, size, pixel); +coordinate = view.constrainCenter(); +coordinate = view.constrainCenter(coordinate); +numberValue = view.constrainResolution(); +numberValue = view.constrainResolution(numberValue); +numberValue = view.constrainResolution(numberValue, numberValue); +numberValue = view.constrainResolution(numberValue, numberValue, numberValue); +numberValue = view.constrainRotation(); +numberValue = view.constrainRotation(numberValue); +numberValue = view.constrainRotation(numberValue, numberValue); voidValue = view.fit(simpleGeometry); +voidValue = view.fit(simpleGeometry, {}); voidValue = view.fit(extent); +voidValue = view.fit(extent, {}); voidValue = view.fit(extent, {callback: () => {}}); voidValue = view.fit(extent, {callback: (animationCompleted: boolean) => {}}); +voidValue = view.fit(extent, { + size: size, + padding: [numberValue, numberValue, numberValue, numberValue], + constrainResolution: booleanValue, + nearest: booleanValue, + minResolution: numberValue, + maxZoom: numberValue, + duration: numberValue, + easing: easingFunction, + callback: (animationCompleted: boolean) => {} +}); +booleanValue = view.getAnimating(); +coordinate = view.getCenter(); +booleanValue = view.getInteracting(); +numberValue = view.getMaxResolution(); +numberValue = view.getMaxZoom(); +numberValue = view.getMinResolution(); +numberValue = view.getMinZoom(); +projection = view.getProjection(); +numberValue = view.getResolution(); +numberValue = view.getResolutionForExtent(extent); +numberValue = view.getResolutionForExtent(extent, size); +numberValue = view.getResolutionForZoom(numberValue); +[numberValue, numberValue, numberValue, numberValue, numberValue] = view.getResolutions(); +numberValue = view.getRotation(); +numberValue = view.getZoom(); +numberValue = view.getZoomForResolution(numberValue); +voidValue = view.rotate(numberValue); +voidValue = view.rotate(numberValue, coordinate); +voidValue = view.setCenter(coordinate); +voidValue = view.setMaxZoom(numberValue); +voidValue = view.setMinZoom(numberValue); +voidValue = view.setResolution(); +voidValue = view.setResolution(numberValue); +voidValue = view.setRotation(numberValue); +voidValue = view.setZoom(numberValue); // // ol.layer.Base @@ -468,6 +549,7 @@ let vectorTileLayer: ol.layer.VectorTile = new ol.layer.VectorTile({ zIndex: 2 }); + // // ol.Object // From 613c5145059f59bdd6e6ce0dc9b78fba84391cf4 Mon Sep 17 00:00:00 2001 From: Huw McNamara Date: Tue, 6 Feb 2018 18:40:40 +0000 Subject: [PATCH 73/99] actioned comments --- types/node/v8/index.d.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/types/node/v8/index.d.ts b/types/node/v8/index.d.ts index e277ab2404..6caa68ba5d 100644 --- a/types/node/v8/index.d.ts +++ b/types/node/v8/index.d.ts @@ -4805,7 +4805,7 @@ declare module "tls" { * An array of strings or a Buffer naming possible NPN protocols. * (Protocols should be ordered by their priority.) */ - NPNProtocols?: string[] | Buffer[] | Uint8Array[] | Buffer | Uint8Array; + NPNProtocols?: string[] | Buffer[] | Uint8Array[] | Buffer | Uint8Array, /** * An array of strings or a Buffer naming possible ALPN protocols. * (Protocols should be ordered by their priority.) When the server @@ -4813,7 +4813,7 @@ declare module "tls" { * precedence over NPN and the server does not send an NPN extension * to the client. */ - ALPNProtocols?: string[] | Buffer[] | Uint8Array[] | Buffer | Uint8Array; + ALPNProtocols?: string[] | Buffer[] | Uint8Array[] | Buffer | Uint8Array, /** * SNICallback(servername, cb) A function that will be * called if the client supports SNI TLS extension. Two arguments @@ -4823,7 +4823,7 @@ declare module "tls" { * SecureContext.) If SNICallback wasn't provided the default callback * with high-level API will be used (see below). */ - SNICallback?: (servername: string, cb: (err: Error | null, ctx: SecureContext) => void) => void; + SNICallback?: (servername: string, cb: (err: Error | null, ctx: SecureContext) => void) => void, /** * An optional Buffer instance containing a TLS session. */ @@ -4889,7 +4889,7 @@ declare module "tls" { * @param callback - callback(err) will be executed with null as err, once the renegotiation * is successfully completed. */ - renegotiate(options: { rejectUnauthorized: boolean, requestCert: boolean }, callback: (err: Error | null) => void): any; + renegotiate(options: { rejectUnauthorized?: boolean, requestCert?: boolean }, callback: (err: Error | null) => void): any; /** * Set maximum TLS fragment size (default and maximum value is: 16384, minimum is: 512). * Smaller fragment size decreases buffering latency on the client: large fragments are buffered by From 673020868ed89f83fa8ca4a3b6d414583bee4451 Mon Sep 17 00:00:00 2001 From: Huw McNamara Date: Tue, 6 Feb 2018 18:55:42 +0000 Subject: [PATCH 74/99] made changes to v9 --- types/node/index.d.ts | 93 +++++++++++++++------------------------- types/node/tsconfig.json | 2 +- 2 files changed, 36 insertions(+), 59 deletions(-) diff --git a/types/node/index.d.ts b/types/node/index.d.ts index 38f043554b..3b12e6591e 100644 --- a/types/node/index.d.ts +++ b/types/node/index.d.ts @@ -18,7 +18,9 @@ // Hannes Magnusson // Alberto Schiabel // Klaus Meinhardt +// Huw // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.1 /** inspector module types */ /// @@ -113,7 +115,7 @@ declare function clearImmediate(immediateId: any): void; // TODO: change to `type NodeRequireFunction = (id: string) => any;` in next mayor version. interface NodeRequireFunction { -/* tslint:disable-next-line:callable-types */ + /* tslint:disable-next-line:callable-types */ (id: string): any; } @@ -1740,33 +1742,21 @@ declare module "https" { import * as http from "http"; import { URL } from "url"; - export interface ServerOptions { - pfx?: any; - key?: any; - passphrase?: string; - cert?: any; - ca?: any; - crl?: any; - ciphers?: string; - honorCipherOrder?: boolean; - requestCert?: boolean; - rejectUnauthorized?: boolean; - NPNProtocols?: any; - SNICallback?: (servername: string, cb: (err: Error | null, ctx: tls.SecureContext) => void) => void; - secureProtocol?: string; - } + export type ServerOptions = tls.SecureContextOptions & tls.TlsServerOptions; - export interface RequestOptions extends http.RequestOptions { - pfx?: any; - key?: any; - passphrase?: string; - cert?: any; - ca?: any; - ciphers?: string; - rejectUnauthorized?: boolean; - secureProtocol?: string; - servername?: string; - } + // see https://nodejs.org/dist/latest/docs/api/https.html#https_https_request_options_callback + type extendedRequestKeys = "ca" | + "cert" | + "ciphers" | + "clientCertEngine" | + "key" | + "passphrase" | + "pfx" | + "rejectUnauthorized" | + "secureProtocol" | + "servername"; + + export type RequestOptions = http.RequestOptions & Pick; export interface AgentOptions extends http.AgentOptions, tls.ConnectionOptions { rejectUnauthorized?: boolean; @@ -4839,7 +4829,7 @@ declare module "tls" { * An array of strings or a Buffer naming possible NPN protocols. * (Protocols should be ordered by their priority.) */ - NPNProtocols?: string[] | Buffer, + NPNProtocols?: string[] | Buffer[] | Uint8Array[] | Buffer | Uint8Array, /** * An array of strings or a Buffer naming possible ALPN protocols. * (Protocols should be ordered by their priority.) When the server @@ -4847,7 +4837,7 @@ declare module "tls" { * precedence over NPN and the server does not send an NPN extension * to the client. */ - ALPNProtocols?: string[] | Buffer, + ALPNProtocols?: string[] | Buffer[] | Uint8Array[] | Buffer | Uint8Array, /** * SNICallback(servername, cb) A function that will be * called if the client supports SNI TLS extension. Two arguments @@ -4923,7 +4913,7 @@ declare module "tls" { * @param callback - callback(err) will be executed with null as err, once the renegotiation * is successfully completed. */ - renegotiate(options: TlsOptions, callback: (err: Error | null) => void): any; + renegotiate(options: { rejectUnauthorized?: boolean, requestCert?: boolean }, callback: (err: Error | null) => void): any; /** * Set maximum TLS fragment size (default and maximum value is: 16384, minimum is: 512). * Smaller fragment size decreases buffering latency on the client: large fragments are buffered by @@ -4966,30 +4956,16 @@ declare module "tls" { prependOnceListener(event: "secureConnect", listener: () => void): this; } - export interface TlsOptions { - host?: string; - port?: number; - pfx?: string | Buffer[]; - key?: string | string[] | Buffer | any[]; - passphrase?: string; - cert?: string | string[] | Buffer | Buffer[]; - ca?: string | string[] | Buffer | Buffer[]; - crl?: string | string[]; - ciphers?: string; - honorCipherOrder?: boolean; + export interface TlsServerOptions extends SecureContextOptions { + clientCertEngine?: string; + handshakeTimeout?: number; requestCert?: boolean; rejectUnauthorized?: boolean; - NPNProtocols?: string[] | Buffer; + NPNProtocols?: string[] | Buffer[] | Uint8Array[] | Buffer | Uint8Array; + ALPNProtocols?: string[] | Buffer[] | Uint8Array[] | Buffer | Uint8Array; SNICallback?: (servername: string, cb: (err: Error | null, ctx: SecureContext) => void) => void; - ecdhCurve?: string; - dhparam?: string | Buffer; - handshakeTimeout?: number; - ALPNProtocols?: string[] | Buffer; sessionTimeout?: number; ticketKeys?: Buffer; - sessionIdContext?: string; - secureProtocol?: string; - secureOptions?: number; } export interface ConnectionOptions extends SecureContextOptions { @@ -4998,8 +4974,8 @@ declare module "tls" { path?: string; // Creates unix socket connection to path. If this option is specified, `host` and `port` are ignored. socket?: net.Socket; // Establish secure connection on a given socket rather than creating a new socket rejectUnauthorized?: boolean; // Defaults to true - NPNProtocols?: Array; - ALPNProtocols?: Array; + NPNProtocols?: string[] | Buffer[] | Uint8Array[] | Buffer | Uint8Array; + ALPNProtocols?: string[] | Buffer[] | Uint8Array[] | Buffer | Uint8Array; checkServerIdentity?: typeof checkServerIdentity; servername?: string; // SNI TLS Extension session?: Buffer; @@ -5097,6 +5073,7 @@ declare module "tls" { ciphers?: string; honorCipherOrder?: boolean; ecdhCurve?: string; + clientCertEngine?: string; crl?: string | Buffer | Array; dhparam?: string | Buffer; secureOptions?: number; // Value is a numeric bitmask of the `SSL_OP_*` options @@ -5116,7 +5093,7 @@ declare module "tls" { * Returns Error object, populating it with the reason, host and cert on failure. On success, returns undefined. */ export function checkServerIdentity(host: string, cert: PeerCertificate): Error | undefined; - export function createServer(options: TlsOptions, secureConnectionListener?: (socket: TLSSocket) => void): Server; + export function createServer(options: TlsServerOptions, secureConnectionListener?: (socket: TLSSocket) => void): Server; export function connect(options: ConnectionOptions, secureConnectionListener?: () => void): TLSSocket; export function connect(port: number, host?: string, options?: ConnectionOptions, secureConnectListener?: () => void): TLSSocket; export function connect(port: number, options?: ConnectionOptions, secureConnectListener?: () => void): TLSSocket; @@ -5401,7 +5378,7 @@ declare module "stream" { readonly writableLength: number; constructor(opts?: WritableOptions); _write(chunk: any, encoding: string, callback: (err?: Error) => void): void; - _writev?(chunks: Array<{chunk: any, encoding: string}>, callback: (err?: Error) => void): void; + _writev?(chunks: Array<{ chunk: any, encoding: string }>, callback: (err?: Error) => void): void; _destroy(err: Error, callback: Function): void; _final(callback: Function): void; write(chunk: any, cb?: Function): boolean; @@ -5494,7 +5471,7 @@ declare module "stream" { readonly writableLength: number; constructor(opts?: DuplexOptions); _write(chunk: any, encoding: string, callback: (err?: Error) => void): void; - _writev?(chunks: Array<{chunk: any, encoding: string}>, callback: (err?: Error) => void): void; + _writev?(chunks: Array<{ chunk: any, encoding: string }>, callback: (err?: Error) => void): void; _destroy(err: Error, callback: Function): void; _final(callback: Function): void; write(chunk: any, cb?: Function): boolean; @@ -5574,9 +5551,9 @@ declare module "util" { export function callbackify(fn: (arg1: T1, arg2: T2) => Promise): (arg1: T1, arg2: T2, callback: (err: NodeJS.ErrnoException) => void) => void; export function callbackify(fn: (arg1: T1, arg2: T2) => Promise): (arg1: T1, arg2: T2, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void; export function callbackify(fn: (arg1: T1, arg2: T2, arg3: T3) => Promise): (arg1: T1, arg2: T2, arg3: T3, callback: (err: NodeJS.ErrnoException) => void) => void; - export function callbackify(fn: (arg1: T1, arg2: T2, arg3: T3) => Promise): (arg1: T1, arg2: T2, arg3: T3, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void; + export function callbackify(fn: (arg1: T1, arg2: T2, arg3: T3) => Promise): (arg1: T1, arg2: T2, arg3: T3, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void; export function callbackify(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: NodeJS.ErrnoException) => void) => void; - export function callbackify(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void; + export function callbackify(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void; export function callbackify(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: NodeJS.ErrnoException) => void) => void; export function callbackify(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void; export function callbackify(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, callback: (err: NodeJS.ErrnoException) => void) => void; @@ -6169,7 +6146,7 @@ declare module "http2" { } export interface ServerStreamFileResponseOptions { - statCheck?: (stats: fs.Stats, headers: OutgoingHttpHeaders, statOptions: StatOptions) => void|boolean; + statCheck?: (stats: fs.Stats, headers: OutgoingHttpHeaders, statOptions: StatOptions) => void | boolean; getTrailers?: (trailers: OutgoingHttpHeaders) => void; offset?: number; length?: number; @@ -6515,7 +6492,7 @@ declare module "http2" { export type ServerSessionOptions = SessionOptions; export interface SecureClientSessionOptions extends ClientSessionOptions, tls.ConnectionOptions { } - export interface SecureServerSessionOptions extends ServerSessionOptions, tls.TlsOptions { } + export interface SecureServerSessionOptions extends ServerSessionOptions, tls.TlsServerOptions { } export interface ServerOptions extends ServerSessionOptions { allowHTTP1?: boolean; diff --git a/types/node/tsconfig.json b/types/node/tsconfig.json index 9f4317b9f4..81040f4013 100644 --- a/types/node/tsconfig.json +++ b/types/node/tsconfig.json @@ -21,4 +21,4 @@ "noEmit": true, "forceConsistentCasingInFileNames": true } -} \ No newline at end of file +} From e00c71172a6d67a538b27e7cfcdd1370fabdf959 Mon Sep 17 00:00:00 2001 From: Huw McNamara Date: Tue, 6 Feb 2018 19:21:36 +0000 Subject: [PATCH 75/99] fixed deps, add local pick def --- types/ftpd/index.d.ts | 2 +- types/http-proxy-middleware/index.d.ts | 2 +- types/node/index.d.ts | 6 +++++- types/node/v8/tsconfig.json | 2 +- types/nodemailer/lib/fetch/index.d.ts | 2 +- types/pg/index.d.ts | 18 +++++++++--------- types/pg/v6/index.d.ts | 22 +++++++++++----------- types/smtp-server/index.d.ts | 8 ++++---- types/thrift/index.d.ts | 16 ++++++++-------- types/xmlrpc/index.d.ts | 4 ++-- 10 files changed, 43 insertions(+), 39 deletions(-) diff --git a/types/ftpd/index.d.ts b/types/ftpd/index.d.ts index cd325109ee..8af363b572 100644 --- a/types/ftpd/index.d.ts +++ b/types/ftpd/index.d.ts @@ -75,7 +75,7 @@ export interface FtpServerOptions { /** * If this is set, the server will allow explicit TLS authentication. Value should be a dictionary which is suitable as the options argument of tls.createServer. */ - tlsOptions?: tls.TlsOptions; + tlsOptions?: tls.TlsServerOptions; /** * If this is set to true, and tlsOptions is also set, then the server will not allow logins over non-secure connections. * Default false diff --git a/types/http-proxy-middleware/index.d.ts b/types/http-proxy-middleware/index.d.ts index 5db24429c9..dd944d94e3 100644 --- a/types/http-proxy-middleware/index.d.ts +++ b/types/http-proxy-middleware/index.d.ts @@ -43,7 +43,7 @@ declare namespace proxy { target?: string; forward?: string; agent?: http.Agent; - ssl?: tls.TlsOptions; + ssl?: tls.TlsServerOptions; ws?: boolean; xfwd?: boolean; secure?: boolean; diff --git a/types/node/index.d.ts b/types/node/index.d.ts index 3b12e6591e..8cc5307993 100644 --- a/types/node/index.d.ts +++ b/types/node/index.d.ts @@ -20,7 +20,6 @@ // Klaus Meinhardt // Huw // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.1 /** inspector module types */ /// @@ -1756,6 +1755,11 @@ declare module "https" { "secureProtocol" | "servername"; + // as many type definitions rely on node, redefine Pick here instead of updating all of them to typescript 2.1 + type Pick = { + [P in K]: T[P]; + }; + export type RequestOptions = http.RequestOptions & Pick; export interface AgentOptions extends http.AgentOptions, tls.ConnectionOptions { diff --git a/types/node/v8/tsconfig.json b/types/node/v8/tsconfig.json index 8deb391829..3f4614bef4 100644 --- a/types/node/v8/tsconfig.json +++ b/types/node/v8/tsconfig.json @@ -26,4 +26,4 @@ "noEmit": true, "forceConsistentCasingInFileNames": true } -} \ No newline at end of file +} diff --git a/types/nodemailer/lib/fetch/index.d.ts b/types/nodemailer/lib/fetch/index.d.ts index 8fc814c517..d0006cd4b7 100644 --- a/types/nodemailer/lib/fetch/index.d.ts +++ b/types/nodemailer/lib/fetch/index.d.ts @@ -21,7 +21,7 @@ declare namespace fetch { userAgent?: string; body?: Buffer | string | { [key: string]: string }; contentType?: string | false; - tls?: tls.TlsOptions; + tls?: tls.TlsServerOptions; timeout?: ms; allowErrorResponse?: boolean; } diff --git a/types/pg/index.d.ts b/types/pg/index.d.ts index 9f945082cd..f91402efe1 100644 --- a/types/pg/index.d.ts +++ b/types/pg/index.d.ts @@ -26,21 +26,21 @@ export interface Defaults extends ConnectionConfig { parseInt8?: boolean; } -import { TlsOptions } from "tls"; +import { TlsServerOptions } from "tls"; export interface ClientConfig extends ConnectionConfig { - ssl?: boolean | TlsOptions; + ssl?: boolean | TlsServerOptions; } export interface PoolConfig extends ClientConfig { - // properties from module 'node-pool' - max?: number; - min?: number; - connectionTimeoutMillis?: number; - idleTimeoutMillis?: number; + // properties from module 'node-pool' + max?: number; + min?: number; + connectionTimeoutMillis?: number; + idleTimeoutMillis?: number; - application_name?: string; - Promise?: PromiseConstructorLike; + application_name?: string; + Promise?: PromiseConstructorLike; } export interface QueryConfig { diff --git a/types/pg/v6/index.d.ts b/types/pg/v6/index.d.ts index 5624989ac7..48ae20133c 100644 --- a/types/pg/v6/index.d.ts +++ b/types/pg/v6/index.d.ts @@ -29,22 +29,22 @@ export interface Defaults extends ConnectionConfig { parseInt8?: boolean; } -import { TlsOptions } from "tls"; +import { TlsServerOptions } from "tls"; export interface ClientConfig extends ConnectionConfig { - ssl?: boolean | TlsOptions; + ssl?: boolean | TlsServerOptions; } export interface PoolConfig extends ClientConfig { - // properties from module 'node-pool' - max?: number; - min?: number; - refreshIdle?: boolean; - idleTimeoutMillis?: number; - reapIntervalMillis?: number; - returnToHead?: boolean; - application_name?: string; - Promise?: PromiseConstructorLike; + // properties from module 'node-pool' + max?: number; + min?: number; + refreshIdle?: boolean; + idleTimeoutMillis?: number; + reapIntervalMillis?: number; + returnToHead?: boolean; + application_name?: string; + Promise?: PromiseConstructorLike; } export interface QueryConfig { diff --git a/types/smtp-server/index.d.ts b/types/smtp-server/index.d.ts index 6e71373260..c00faf431a 100644 --- a/types/smtp-server/index.d.ts +++ b/types/smtp-server/index.d.ts @@ -93,7 +93,7 @@ export interface SMTPServerSession { envelope: SMTPServerEnvelope; transmissionType: string; - tlsOptions: tls.TlsOptions; + tlsOptions: tls.TlsServerOptions; } export interface SMTPServerEnvelope { @@ -107,7 +107,7 @@ export interface SMTPServerEnvelope { rcptTo: SMTPServerAddress[]; } -export interface SMTPServerOptions extends tls.TlsOptions { +export interface SMTPServerOptions extends tls.TlsServerOptions { /** * if true, the connection will use TLS. The default is false. * If the server doesn't start in TLS mode, @@ -188,7 +188,7 @@ export interface SMTPServerOptions extends tls.TlsOptions { /** * optional Map or an object of TLS options for SNI where servername is the key. Overrided by SNICallback. */ - sniOptions?: { [servername: string]: tls.TlsOptions } | Map; + sniOptions?: { [servername: string]: tls.TlsServerOptions } | Map; /** * optional boolean, if set to true then upgrade sockets to TLS immediately after connection is established. Works with secure: true */ @@ -282,7 +282,7 @@ export class SMTPServer extends EventEmitter { /** Closes the server */ close(callback: (err?: Error | null) => void): void; - updateSecureContext(options: tls.TlsOptions): void; + updateSecureContext(options: tls.TlsServerOptions): void; /** Authentication handler. Override this */ onAuth(auth: SMTPServerAuthentication, session: SMTPServerSession, callback: (err: Error | null | undefined, response: SMTPServerAuthenticationResponse) => void): void; diff --git a/types/thrift/index.d.ts b/types/thrift/index.d.ts index c5cb6f20a3..3905b40bfa 100644 --- a/types/thrift/index.d.ts +++ b/types/thrift/index.d.ts @@ -227,7 +227,7 @@ export interface ServiceMap { export interface ServiceOptions { transport?: TTransportConstructor; protocol?: TProtocolConstructor; - processor?: { new (handler: THandler): TProcessor }; + processor?: { new(handler: THandler): TProcessor }; handler?: THandler; } @@ -236,7 +236,7 @@ export interface ServerOptions extends ServiceOptions; - tls?: tls.TlsOptions; + tls?: tls.TlsServerOptions; } export interface ConnectOptions { @@ -263,12 +263,12 @@ export interface WSConnectOptions { } export type TClientConstructor = - { new (output: TTransport, pClass: { new (trans: TTransport): TProtocol }): TClient; } | - { Client: { new (output: TTransport, pClass: { new (trans: TTransport): TProtocol }): TClient; } }; + { new(output: TTransport, pClass: { new(trans: TTransport): TProtocol }): TClient; } | + { Client: { new(output: TTransport, pClass: { new(trans: TTransport): TProtocol }): TClient; } }; export type TProcessorConstructor = - { new (handler: THandler): TProcessor } | - { Processor: { new (handler: THandler): TProcessor }}; + { new(handler: THandler): TProcessor } | + { Processor: { new(handler: THandler): TProcessor } }; export interface WebServerOptions { services: { @@ -361,7 +361,7 @@ export class TFramedTransport implements TTransport { } export interface TTransportConstructor { - new (buffer?: Buffer, callback?: TTransportCallback): TTransport; + new(buffer?: Buffer, callback?: TTransportCallback): TTransport; } export class TBinaryProtocol implements TProtocol { @@ -509,7 +509,7 @@ export class TCompactProtocol implements TProtocol { } export interface TProtocolConstructor { - new (trans: TTransport, strictRead?: boolean, strictWrite?: boolean): TProtocol; + new(trans: TTransport, strictRead?: boolean, strictWrite?: boolean): TProtocol; } // thrift.js diff --git a/types/xmlrpc/index.d.ts b/types/xmlrpc/index.d.ts index 8425d4672c..7cc76d9511 100644 --- a/types/xmlrpc/index.d.ts +++ b/types/xmlrpc/index.d.ts @@ -9,7 +9,7 @@ declare module 'xmlrpc' { import { EventEmitter } from 'events'; import { Server as HttpServer } from 'http'; import { Server as HttpsServer } from 'https'; - import { TlsOptions } from 'tls'; + import { TlsServerOptions } from 'tls'; interface ClientOptions { host?: string; @@ -47,7 +47,7 @@ declare module 'xmlrpc' { function createSecureClient(options: string | ClientOptions): Client; function createServer(options: string | ServerOptions, callback: () => void): Server; - function createSecureServer(options: string | TlsOptions, callback: () => void): Server; + function createSecureServer(options: string | TlsServerOptions, callback: () => void): Server; interface Client { options: ClientOptions; From 4fb702c02c9c3115b7cc8a174db2bc02b8fbfcd5 Mon Sep 17 00:00:00 2001 From: Huw McNamara Date: Tue, 6 Feb 2018 20:03:20 +0000 Subject: [PATCH 76/99] changed local pick name --- types/node/index.d.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/types/node/index.d.ts b/types/node/index.d.ts index 8cc5307993..1792eccdac 100644 --- a/types/node/index.d.ts +++ b/types/node/index.d.ts @@ -1756,11 +1756,11 @@ declare module "https" { "servername"; // as many type definitions rely on node, redefine Pick here instead of updating all of them to typescript 2.1 - type Pick = { + type PortedPick = { [P in K]: T[P]; }; - export type RequestOptions = http.RequestOptions & Pick; + export type RequestOptions = http.RequestOptions & PortedPick; export interface AgentOptions extends http.AgentOptions, tls.ConnectionOptions { rejectUnauthorized?: boolean; From eb70258db2c822f55588b3c0eca38a5a3948611e Mon Sep 17 00:00:00 2001 From: Aluan Haddad Date: Tue, 6 Feb 2018 15:26:32 -0500 Subject: [PATCH 77/99] improve the type of the stringify function Update the stringify function based on the declarations in `lib.es5.d.ts` for JSON.parse. Add the documentation taken from `lib.es5.t.ts` --- types/comment-json/index.d.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/types/comment-json/index.d.ts b/types/comment-json/index.d.ts index 9c2652f34e..09ed176ac5 100644 --- a/types/comment-json/index.d.ts +++ b/types/comment-json/index.d.ts @@ -4,5 +4,19 @@ // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped export type Reviver = (k: number | string, v: any) => any; + +/** + * Converts a JavaScript Object Notation (JSON) string into an object. + * @param json A valid JSON string. + * @param reviver A function that transforms the results. This function is called for each member of the object. + * If a member contains nested objects, the nested objects are transformed before the parent object is. + */ export function parse(json: string, reviver?: Reviver, removes_comments?: boolean): any; -export function stringify(value: any, replacer?: any, space?: string | number): string; + +/** + * Converts a JavaScript value to a JavaScript Object Notation (JSON) string. + * @param value A JavaScript value, usually an object or array, to be converted. + * @param replacer A function that transforms the results or an array of strings and numbers that acts as a approved list for selecting the object properties that will be stringified. + * @param space Adds indentation, white space, and line break characters to the return-value JSON text to make it easier to read. + */ +export function stringify(value: any, replacer?: ((key: string, value: any) => any) | (number | string)[] | null, space?: string | number): string; From 14622de78f170911e8cc7547ba20ff4bffd81ff6 Mon Sep 17 00:00:00 2001 From: Aluan Haddad Date: Tue, 6 Feb 2018 15:35:05 -0500 Subject: [PATCH 78/99] lint --- types/comment-json/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/comment-json/index.d.ts b/types/comment-json/index.d.ts index 09ed176ac5..e03f15051c 100644 --- a/types/comment-json/index.d.ts +++ b/types/comment-json/index.d.ts @@ -19,4 +19,4 @@ export function parse(json: string, reviver?: Reviver, removes_comments?: boolea * @param replacer A function that transforms the results or an array of strings and numbers that acts as a approved list for selecting the object properties that will be stringified. * @param space Adds indentation, white space, and line break characters to the return-value JSON text to make it easier to read. */ -export function stringify(value: any, replacer?: ((key: string, value: any) => any) | (number | string)[] | null, space?: string | number): string; +export function stringify(value: any, replacer?: ((key: string, value: any) => any) | Array | null, space?: string | number): string; From c240fc8a4339c8ff5337039cd81e0fa575c8f58d Mon Sep 17 00:00:00 2001 From: Aluan Haddad Date: Tue, 6 Feb 2018 15:48:18 -0500 Subject: [PATCH 79/99] match DefinitelyTyped JSDoc asterisk style --- types/comment-json/index.d.ts | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/types/comment-json/index.d.ts b/types/comment-json/index.d.ts index e03f15051c..fcb7608e2a 100644 --- a/types/comment-json/index.d.ts +++ b/types/comment-json/index.d.ts @@ -6,17 +6,17 @@ export type Reviver = (k: number | string, v: any) => any; /** - * Converts a JavaScript Object Notation (JSON) string into an object. - * @param json A valid JSON string. - * @param reviver A function that transforms the results. This function is called for each member of the object. - * If a member contains nested objects, the nested objects are transformed before the parent object is. - */ + * Converts a JavaScript Object Notation (JSON) string into an object. + * @param json A valid JSON string. + * @param reviver A function that transforms the results. This function is called for each member of the object. + * If a member contains nested objects, the nested objects are transformed before the parent object is. + */ export function parse(json: string, reviver?: Reviver, removes_comments?: boolean): any; /** - * Converts a JavaScript value to a JavaScript Object Notation (JSON) string. - * @param value A JavaScript value, usually an object or array, to be converted. - * @param replacer A function that transforms the results or an array of strings and numbers that acts as a approved list for selecting the object properties that will be stringified. - * @param space Adds indentation, white space, and line break characters to the return-value JSON text to make it easier to read. - */ + * Converts a JavaScript value to a JavaScript Object Notation (JSON) string. + * @param value A JavaScript value, usually an object or array, to be converted. + * @param replacer A function that transforms the results or an array of strings and numbers that acts as a approved list for selecting the object properties that will be stringified. + * @param space Adds indentation, white space, and line break characters to the return-value JSON text to make it easier to read. + */ export function stringify(value: any, replacer?: ((key: string, value: any) => any) | Array | null, space?: string | number): string; From 5f458aeadb19f8d1b06aafba493d66139fb67aa9 Mon Sep 17 00:00:00 2001 From: Aluan Haddad Date: Tue, 6 Feb 2018 15:48:35 -0500 Subject: [PATCH 80/99] add tests for updated signature --- types/comment-json/comment-json-tests.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/types/comment-json/comment-json-tests.ts b/types/comment-json/comment-json-tests.ts index af91ff422f..56aa8453fe 100644 --- a/types/comment-json/comment-json-tests.ts +++ b/types/comment-json/comment-json-tests.ts @@ -14,3 +14,11 @@ const result = commentJson.parse(` // comment at the bottom `); const str = commentJson.stringify(result); + +const numericallyIndexed = commentJson.stringify(result, (key, value) => { +return key && Number.isInteger(Number(key)) + ? value + : undefined; +}); + +const whiteListed = commentJson.stringify(result, ['a', 1]); From bd3ddd86804078dab667319f6e3bc0886dde5e21 Mon Sep 17 00:00:00 2001 From: Aluan Haddad Date: Tue, 6 Feb 2018 15:55:04 -0500 Subject: [PATCH 81/99] document removes_comments parameter based on source README --- types/comment-json/index.d.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/types/comment-json/index.d.ts b/types/comment-json/index.d.ts index fcb7608e2a..0aad1934ff 100644 --- a/types/comment-json/index.d.ts +++ b/types/comment-json/index.d.ts @@ -9,6 +9,7 @@ export type Reviver = (k: number | string, v: any) => any; * Converts a JavaScript Object Notation (JSON) string into an object. * @param json A valid JSON string. * @param reviver A function that transforms the results. This function is called for each member of the object. + * @param removes_comments If true, the comments won't be maintained, which is often used when we want to get a clean object. * If a member contains nested objects, the nested objects are transformed before the parent object is. */ export function parse(json: string, reviver?: Reviver, removes_comments?: boolean): any; From 94a0f73c85cbd95c8ac191fed8e5d07972e4a68f Mon Sep 17 00:00:00 2001 From: s0m3on3 Date: Wed, 7 Feb 2018 02:19:27 +0200 Subject: [PATCH 82/99] [adone] refactoring, additions * [collections] decomposition, add MapCache, NSCache, RefcountedCache, Set * [data] add protobuf, base32, basex, base58, base64url, varint, varintSigned * [is] improve function and asyncFunction, add emitter and asyncEmitter * add fake --- types/adone/glosses/collections.d.ts | 1965 ----------------- .../adone/glosses/collections/array_set.d.ts | 44 + .../glosses/collections/async_queue.d.ts | 12 + types/adone/glosses/collections/avl_tree.d.ts | 48 + .../collections/binary_search_tree.d.ts | 110 + .../glosses/collections/buffer_list.d.ts | 92 + .../adone/glosses/collections/byte_array.d.ts | 892 ++++++++ .../glosses/collections/default_map.d.ts | 9 + types/adone/glosses/collections/fast_lru.d.ts | 61 + types/adone/glosses/collections/index.d.ts | 28 + .../glosses/collections/linked_list.d.ts | 150 ++ types/adone/glosses/collections/lru.d.ts | 213 ++ .../adone/glosses/collections/map_cache.d.ts | 13 + types/adone/glosses/collections/ns_cache.d.ts | 17 + .../glosses/collections/priority_queue.d.ts | 78 + types/adone/glosses/collections/queue.d.ts | 31 + types/adone/glosses/collections/rb_tree.d.ts | 184 ++ .../glosses/collections/refcounted_cache.d.ts | 9 + types/adone/glosses/collections/set.d.ts | 17 + types/adone/glosses/collections/stack.d.ts | 36 + .../glosses/collections/timedout_map.d.ts | 32 + types/adone/glosses/data.d.ts | 178 ++ types/adone/glosses/fake.d.ts | 337 +++ types/adone/glosses/is.d.ts | 8 +- types/adone/index.d.ts | 3 +- types/adone/test/glosses/collections.ts | 1003 --------- .../test/glosses/collections/array_set.ts | 19 + .../test/glosses/collections/async_queue.ts | 12 + .../test/glosses/collections/avl_tree.ts | 28 + .../glosses/collections/binary_search_tree.ts | 36 + .../test/glosses/collections/buffer_list.ts | 42 + .../test/glosses/collections/byte_array.ts | 561 +++++ .../test/glosses/collections/default_map.ts | 14 + .../test/glosses/collections/fast_lru.ts | 21 + .../test/glosses/collections/linked_list.ts | 123 ++ types/adone/test/glosses/collections/lru.ts | 67 + .../test/glosses/collections/map_cache.ts | 21 + .../test/glosses/collections/ns_cache.ts | 21 + .../glosses/collections/priority_queue.ts | 36 + types/adone/test/glosses/collections/queue.ts | 17 + .../adone/test/glosses/collections/rb_tree.ts | 48 + .../glosses/collections/refcounted_cache.ts | 17 + types/adone/test/glosses/collections/set.ts | 26 + types/adone/test/glosses/collections/stack.ts | 16 + .../test/glosses/collections/timedout_map.ts | 22 + types/adone/test/glosses/data.ts | 273 +++ types/adone/test/glosses/fake.ts | 206 ++ types/adone/test/glosses/is.ts | 16 +- types/adone/tsconfig.json | 43 +- 49 files changed, 4280 insertions(+), 2975 deletions(-) delete mode 100644 types/adone/glosses/collections.d.ts create mode 100644 types/adone/glosses/collections/array_set.d.ts create mode 100644 types/adone/glosses/collections/async_queue.d.ts create mode 100644 types/adone/glosses/collections/avl_tree.d.ts create mode 100644 types/adone/glosses/collections/binary_search_tree.d.ts create mode 100644 types/adone/glosses/collections/buffer_list.d.ts create mode 100644 types/adone/glosses/collections/byte_array.d.ts create mode 100644 types/adone/glosses/collections/default_map.d.ts create mode 100644 types/adone/glosses/collections/fast_lru.d.ts create mode 100644 types/adone/glosses/collections/index.d.ts create mode 100644 types/adone/glosses/collections/linked_list.d.ts create mode 100644 types/adone/glosses/collections/lru.d.ts create mode 100644 types/adone/glosses/collections/map_cache.d.ts create mode 100644 types/adone/glosses/collections/ns_cache.d.ts create mode 100644 types/adone/glosses/collections/priority_queue.d.ts create mode 100644 types/adone/glosses/collections/queue.d.ts create mode 100644 types/adone/glosses/collections/rb_tree.d.ts create mode 100644 types/adone/glosses/collections/refcounted_cache.d.ts create mode 100644 types/adone/glosses/collections/set.d.ts create mode 100644 types/adone/glosses/collections/stack.d.ts create mode 100644 types/adone/glosses/collections/timedout_map.d.ts create mode 100644 types/adone/glosses/fake.d.ts delete mode 100644 types/adone/test/glosses/collections.ts create mode 100644 types/adone/test/glosses/collections/array_set.ts create mode 100644 types/adone/test/glosses/collections/async_queue.ts create mode 100644 types/adone/test/glosses/collections/avl_tree.ts create mode 100644 types/adone/test/glosses/collections/binary_search_tree.ts create mode 100644 types/adone/test/glosses/collections/buffer_list.ts create mode 100644 types/adone/test/glosses/collections/byte_array.ts create mode 100644 types/adone/test/glosses/collections/default_map.ts create mode 100644 types/adone/test/glosses/collections/fast_lru.ts create mode 100644 types/adone/test/glosses/collections/linked_list.ts create mode 100644 types/adone/test/glosses/collections/lru.ts create mode 100644 types/adone/test/glosses/collections/map_cache.ts create mode 100644 types/adone/test/glosses/collections/ns_cache.ts create mode 100644 types/adone/test/glosses/collections/priority_queue.ts create mode 100644 types/adone/test/glosses/collections/queue.ts create mode 100644 types/adone/test/glosses/collections/rb_tree.ts create mode 100644 types/adone/test/glosses/collections/refcounted_cache.ts create mode 100644 types/adone/test/glosses/collections/set.ts create mode 100644 types/adone/test/glosses/collections/stack.ts create mode 100644 types/adone/test/glosses/collections/timedout_map.ts create mode 100644 types/adone/test/glosses/fake.ts diff --git a/types/adone/glosses/collections.d.ts b/types/adone/glosses/collections.d.ts deleted file mode 100644 index 178921136d..0000000000 --- a/types/adone/glosses/collections.d.ts +++ /dev/null @@ -1,1965 +0,0 @@ -declare namespace adone { - namespace collection { - namespace I.LinkedList { - /** - * Represents the node of a linked list - */ - interface Node { - /** - * The next node - */ - next?: Node; - - /** - * The previous node - */ - prev?: Node; - - /** - * The value this node contains - */ - value: T; - } - } - - /** - * Represents a linked list - */ - class LinkedList { - /** - * The maximum length of the list - */ - readonly maxLength: number; - - /** - * Current length of the list - */ - readonly length: number; - - /** - * Whether the list is autoresizable - */ - readonly autoresize: boolean; - - /** - * @param maxLength Maximum length of the linked list - */ - constructor(maxLength?: number); - - /** - * Whether the list is full - */ - readonly full: boolean; - - /** - * Whether the list is empty - */ - readonly empty: boolean; - - /** - * Resizes the list - */ - resize(newLength: number): this; - - /** - * Adds a new node to the end - * - * @returns Added node - */ - push(value: T): I.LinkedList.Node; - - /** - * Removes the last node, returns undefined if the list is empty - */ - pop(): T | undefined; - - /** - * Removes the first node, returns undefined if the list is empty - */ - shift(): T | undefined; - - /** - * Inserts a new node at the beginning of the list - * - * @returns Added node - */ - unshift(value: T): I.LinkedList.Node; - - /** - * Moves the given node to the end of the list - */ - pushNode(node: I.LinkedList.Node): void; - - /** - * Moved the given node to the beginning of the list - */ - unshiftNode(node: I.LinkedList.Node): void; - - /** - * Removes the given node from the list - */ - removeNode(node: I.LinkedList.Node): void; - - /** - * Clears the list - * - * @param strong Whether to reset all the node's values - */ - clear(strong?: boolean): void; - - /** - * Convers the list to an array - */ - toArray(): T[]; - - /** - * The first element of the list - */ - readonly front: T; - - /** - * The last element of the list - */ - readonly back: T; - - /** - * Returns an iterator over the list elements - */ - [Symbol.iterator](): IterableIterator; - - /** - * Returns the next node for the given node - */ - nextNode(node: I.LinkedList.Node): I.LinkedList.Node; - - /** - * Maps this linked list to a new one using the given function - */ - map(fn: (value: T, index: number) => R): LinkedList; - - /** - * Invokes the given callback for each value from the beginning to the end (much faster than for-of). - * If the given function returns false it stops iterating. - */ - forEach(callback: (value: T, index: number) => void | boolean): void; - - /** - * Default length of a new created linked list - */ - static DEFAULT_LENGTH: number; - } - - namespace I { - type Long = math.Long; - - type Longable = math.I.Longable; - - namespace ByteArray { - interface Varint32 { - value: number; - length: number; - } - - interface Varint64 { - value: Long; - length: number; - } - - interface String { - string: string; - length: number; - } - - type Wrappable = string | ByteArray | Buffer | Uint8Array | ArrayBuffer; - - type Metrics = "b" | "c"; - } - } - - /** - * Represents an array of bytes, enhanced Node.js Buffer - */ - class ByteArray { - /** - * Constructs a new ByteArray - * - * @param capacity Initial capacity. Defaults to ByteArray.DEFAULT_CAPACITY(64) - * @param noAssert Whether to skip assertions of offsets and values. Defaults to ByteArray.DEFAULT_NOASSERT(false) - */ - constructor(capacity?: number, noAssert?: boolean); - - /** - * Reads a BitSet as an array of booleans. - * - * @param offset Offset to read from. Will use and increase offset by length if omitted. - */ - readBitSet(offset?: number): boolean[]; - - /** - * Reads the specified number of bytes. - * - * @param length Number of bytes to read - * @param offset Offset to read from. Will use and increase offset by length if omitted. - */ - read(length: number, offset?: number): ByteArray; - - /** - * Reads an 8bit signed integer - * - * @param offset Offset to read from - */ - readInt8(offset?: number): number; - - /** - * Reads an 8bit unsigned integer - * - * @param offset Offset to read from - */ - readUInt8(offset?: number): number; - - /** - * Reads a 16bit signed le integer - * - * @param offset Offset to read from - */ - readInt16LE(offset?: number): number; - - /** - * Reads a 16bit unsigned le integer - * - * @param offset Offset to read from - */ - readUInt16LE(offset?: number): number; - - /** - * Reads a 16bit signed be integer - * - * @param offset Offset to read from - */ - readInt16BE(offset?: number): number; - - /** - * Reads a 16bit unsigned be integer - * - * @param offset Offset to read from - */ - readUInt16BE(offset?: number): number; - - /** - * Reads a 32bit signed le integer - * - * @param offset Offset to read from - */ - readInt32LE(offset?: number): number; - - /** - * Reads a 32bit unsigned le integer - * - * @param offset Offset to read from - */ - readUInt32LE(offset?: number): number; - - /** - * Reads a 32bit signed be integer - * - * @param offset Offset to read from - */ - readInt32BE(offset?: number): number; - - /** - * Reads a 32bit unsigned be integer - * - * @param offset Offset to read from - */ - readUInt32BE(offset?: number): number; - - /** - * Reads a 64bit signed le integer as math.Long - * - * @param offset Offset to read from - */ - readInt64LE(offset?: number): math.Long; - - /** - * Reads a 64bit unsigned le integer as math.Long - * - * @param offset Offset to read from - */ - readUInt64LE(offset?: number): math.Long; - - /** - * Reads a 64bit signed be integer as math.Long - * - * @param offset Offset to read from - */ - readInt64BE(offset?: number): math.Long; - - /** - * Reads a 64bit unsigned be integer as math.Long - * - * @param offset Offset to read from - */ - readUInt64BE(offset?: number): math.Long; - - /** - * Reads a 32bit le float - * - * @param offset Offset to read from - */ - readFloatLE(offset?: number): number; - - /** - * Reads a 32bit be float - * - * @param offset Offset to read from - */ - readFloatBE(offset?: number): number; - - /** - * Reads a 64bit le float - * - * @param offset Offset to read from - */ - readDoubleLE(offset?: number): number; - - /** - * Reads a 64bit be float - * - * @param offset Offset to read from - */ - readDoubleBE(offset?: number): number; - - /** - * Appends some data to this ByteArray. - * This will overwrite any contents behind the specified offset up to the appended data's length. - * - * @param source The source write from - * @param offset Offset to write to - * @param length length to read from the source - * @param encoding encoding to use for wrapping the source in bytearray - */ - write(source: I.ByteArray.Wrappable, offset?: number, length?: number, encoding?: string): this; - - /** - * Writes the array as a bitset. - * @param value Array of booleans to write - */ - writeBitSet(value: number[]): this; - - /** - * Writes the array as a bitset. - * @param value Array of booleans to write - * @param offset Offset to write to - */ - writeBitSet(value: number[], offset: number): number; - - /** - * Writes an 8bit signed integer - * - * @param offset Offset to write to - */ - writeInt8(value: number, offset?: number): this; - - /** - * Writes an 8bit unsigned integer - * - * @param offset Offset to write to - */ - writeUInt8(value: number, offset?: number): this; - - /** - * Writes a 16bit signed le integer - * - * @param offset Offset to write to - */ - writeInt16LE(value: number, offset?: number): this; - - /** - * Writes a 16bit signed be integer - * - * @param offset Offset to write to - */ - writeInt16BE(value: number, offset?: number): this; - - /** - * Writes a 16bit unsigned le integer - * - * @param offset Offset to write to - */ - writeUInt16LE(value: number, offset?: number): this; - - /** - * Writes a 16bit unsigned be integer - * - * @param offset Offset to write to - */ - writeUInt16BE(value: number, offset?: number): this; - - /** - * Writes a 32bit signed le integer - * - * @param offset Offset to write to - */ - writeInt32LE(value: number, offset?: number): this; - - /** - * Writes a 32bit signed be integer - * - * @param offset Offset to write to - */ - writeInt32BE(value: number, offset?: number): this; - - /** - * Writes a 32bit unsigned le integer - * - * @param offset Offset to write to - */ - writeUInt32LE(value: number, offset?: number): this; - - /** - * Writes a 32bit unsigned be integer - * - * @param offset Offset to write to - */ - writeUInt32BE(value: number, offset?: number): this; - - /** - * Writes a 64bit signed le long integer - * - * @param offset Offset to write to - */ - writeInt64LE(value: math.Long | string | number, offset?: number): this; - - /** - * Writes a 64bit signed be long integer - * - * @param offset Offset to write to - */ - writeInt64BE(value: math.Long | string | number, offset?: number): this; - - /** - * Writes a 64bit unsigned le long integer - * - * @param offset Offset to write to - */ - writeUInt64LE(value: math.Long | string | number, offset?: number): this; - - /** - * Writes a 64bit unsigned be long integer - * - * @param offset Offset to write to - */ - writeUInt64BE(value: math.Long | string | number, offset?: number): this; - - /** - * Writes a 32bit le float - * - * @param offset Offset to write to - */ - writeFloatLE(value: number, offset?: number): this; - - /** - * Writes a 32bit be float - * - * @param offset Offset to write to - */ - writeFloatBE(value: number, offset?: number): this; - - /** - * Writes a 64bit le float - * - * @param offset Offset to write to - */ - writeDoubleLE(value: number, offset?: number): this; - - /** - * Writes a 64bit be float - * - * @param offset Offset to write to - */ - writeDoubleBE(value: number, offset?: number): this; - - /** - * Writes a 32bit base 128 variable-length integer - */ - writeVarint32(value: number): this; - - /** - * Writes a 32bit base 128 variable-length integer - * - * @param offset Offset to write to - */ - writeVarint32(value: number, offset: number): number; - - /** - * Writes a zig-zag encoded 32bit base 128 variable-length integer - */ - writeVarint32ZigZag(value: number): this; - - /** - * Writes a zig-zag encoded 32bit base 128 variable-length integer - * - * @param offset Offset to write to - */ - writeVarint32ZigZag(value: number, offset: number): number; - - /** - * Reads a 32bit base 128 variable-length integer - */ - readVarint32(): number; - - /** - * Reads a 32bit base 128 variable-length integer - * - * @param offset Offset to read from - */ - readVarint32(offset: number): I.ByteArray.Varint32; - - /** - * Reads a zig-zag encoded 32bit base 128 variable-length integer - */ - readVarint32ZigZag(): number; - - /** - * Reads a zig-zag encoded 32bit base 128 variable-length integer - * - * @param offset Offset to read from - */ - readVarint32ZigZag(offset: number): I.ByteArray.Varint32; - - /** - * Writes a 64bit base 128 variable-length integer - */ - writeVarint64(value: math.Long | string | number): this; - - /** - * Writes a 64bit base 128 variable-length integer - * - * @param offset Offset to write to - */ - writeVarint64(value: math.Long | string | number, offset: number): number; - - /** - * Writes a zig-zag encoded 64bit base 128 variable-length integer - */ - writeVarint64ZigZag(value: math.Long | string | number): this; - - /** - * Writes a zig-zag encoded 64bit base 128 variable-length integer - * - * @param offset Offset to write to - */ - writeVarint64ZigZag(value: math.Long | string | number, offset: number): number; - - /** - * Reads a 64bit base 128 variable-length integer - */ - readVarint64(): I.Long; - - /** - * Reads a 64bit base 128 variable-length integer - * - * @param offset Offset to read from - */ - readVarint64(offset: number): I.ByteArray.Varint64; - - /** - * Reads a zig-zag encoded 64bit base 128 variable-length integer - */ - readVarint64ZigZag(): math.Long; - - /** - * Reads a zig-zag encoded 64bit base 128 variable-length integer - * - * @param offset Offset to read from - */ - readVarint64ZigZag(offset: number): I.ByteArray.Varint64; - - /** - * Writes a NULL-terminated UTF8 encoded string. - * For this to work the specified string must not contain any NULL characters itself - */ - writeCString(str: string): this; - - /** - * Writes a NULL-terminated UTF8 encoded string. - * For this to work the specified string must not contain any NULL characters itself - * - * @param offset Offset to write to - */ - writeCString(str: string, offset: number): number; - - /** - * Reads a NULL-terminated UTF8 encoded string. - * For this to work the string read must not contain any NULL characters itself - */ - readCString(): string; - - /** - * Reads a NULL-terminated UTF8 encoded string. - * For this to work the string read must not contain any NULL characters itself - * - * @param offset Offset to read from - */ - readCString(offset: number): I.ByteArray.String; - - /** - * Writes an UTF8 encoded string - */ - writeString(str: string): this; - - /** - * Writes an UTF8 encoded string - * - * @param offset Offset to write to - */ - writeString(str: string, offset: number): number; - - /** - * Reads an UTF8 encoded string - * - * @param length Number of characters or bytes to read - * @param metrics Metrics specifying what n is meant to count. Defaults to ByteArray.METRICS_CHARS("c") - */ - readString(length: number, metrics?: I.ByteArray.Metrics): string; - - /** - * Reads an UTF8 encoded string - * - * @param length Number of characters or bytes to read - * @param metrics Metrics specifying what n is meant to count. Defaults to ByteArray.METRICS_CHARS("c") - * @param offset Offset to read from - */ - readString(length: number, metrics: I.ByteArray.Metrics, offset: number): I.ByteArray.String; - - /** - * Reads an UTF8 encoded string - * - * @param length Number of characters or bytes to read - * @param offset Offset to read from - */ - readString(length: number, offset: number): I.ByteArray.String; - - /** - * Writes a length as varint32 prefixed UTF8 encoded string - */ - writeVString(str: string): this; - - /** - * Writes a length as varint32 prefixed UTF8 encoded string - * - * @param offset Offset to read from - */ - writeVString(str: string, offset: number): number; - - /** - * Reads a length as varint32 prefixed UTF8 encoded string - */ - readVString(): string; - - /** - * Reads a length as varint32 prefixed UTF8 encoded string - * - * @param offset Offset to read from - */ - readVString(offset: number): I.ByteArray.String; - - /** - * Appends this ByteArray's contents to another ByteArray. - * This will overwrite any contents behind the specified offset up to the length of this ByteArray's data - * - * @param offset Offset to append to - */ - appendTo(target: ByteArray, offset?: number): this; - - /** - * Enables or disables assertions of argument types and offsets. - * Assertions are enabled by default but you can opt to disable them if your code already makes sure that everything is valid - */ - assert(assert?: boolean): this; - - /** - * Gets the capacity of this ByteArray's backing buffer - */ - capacity(): number; - - /** - * Clears this ByteArray's offsets by setting offset to 0 and limit to the backing buffer's capacity - */ - clear(): this; - - /** - * Creates a cloned instance of this ByteArray, - * preset with this ByteArray's values for offset, markedOffset and limit - * - * @param copy Whether to copy the backing buffer or to return another view on the same, false by default - */ - clone(copy?: boolean): ByteArray; - - /** - * Compacts this ByteArray to be backed by a buffer of its contents' length. - * Will set offset = 0 and limit = capacity and adapt markedOffset to the same relative position if set - * - * @param begin Offset to start at, buffer offset by default - * @param end Offset to end at, buffer limit by default - */ - compact(begin?: number, end?: number): this; - - /** - * Creates a copy of this ByteArray's contents. - * - * @param begin Begin offset, buffer offset by default - * @param end End offset, buffer limit by default - */ - copy(begin?: number, end?: number): ByteArray; - - /** - * Copies this ByteArray's contents to another ByteArray. - * - * @param targetOffset Offset to copy to. Will use and increase the target's offset by the number of bytes copied if omitted - * @param sourceOffset Offset to start copying from. Will use and increase offset by the number of bytes copied if omitted - * @param sourceLimit Offset to end copying from, defaults to the buffer limit - */ - copyTo(target: ByteArray, targetOffset?: number, souceOffset?: number, sourceLimit?: number): this | ByteArray; - - /** - * Makes sure that this ByteArray is backed by a ByteArray#buffer of at least the specified capacity. - * If the current capacity is exceeded, it will be doubled. - * If double the current capacity is less than the required capacity, the required capacity will be used instead - */ - ensureCapacity(capacity: number): this; - - /** - * Overwrites this ByteArray's contents with the specified value. - * - * @param value Byte value to fill with. If given as a string, the first character is used - * @param begin Begin offset. Will use and increase offset by the number of bytes written if omitted. defaults to offset - * @param end End offset, defaults to limit. - */ - fill(value: string | number, begin?: number, end?: number): this; - - /** - * Makes this ByteArray ready for a new sequence of write or relative read operations. - * Sets limit = offset and offset = 0. - * Make sure always to flip a ByteArray when all relative read or write operations are complete - */ - flip(): this; - - /** - * Marks an offset on this ByteArray to be used later - * - * @param offset Offset to mark. Defaults to offset. - */ - mark(offset?: number): this; - - /** - * Prepends some data to this ByteArray. - * This will overwrite any contents before the specified offset up to the prepended data's length. - * If there is not enough space available before the specified offset, - * the backing buffer will be resized and its contents moved accordingly - * - * @param source Data to prepend - * @param offset Offset to prepend at. Will use and decrease offset by the number of bytes prepended if omitted. - */ - prepend(source: I.ByteArray.Wrappable, offset: number): this; - - /** - * Prepends some data to this ByteArray. - * This will overwrite any contents before the specified offset up to the prepended data's length. - * If there is not enough space available before the specified offset, - * the backing buffer will be resized and its contents moved accordingly - * - * @param source Data to prepend - * @param encoding Encoding if data is a string - * @param offset Offset to prepend at. Will use and decrease offset by the number of bytes prepended if omitted. - */ - prepend(source: I.ByteArray.Wrappable, encoding?: string, offset?: number): this; - - /** - * Prepends this ByteArray to another ByteArray. - * This will overwrite any contents before the specified offset up to the prepended data's length. - * If there is not enough space available before the specified offset, - * the backing buffer will be resized and its contents moved accordingly - * - * @param offset Offset to prepend at - */ - prependTo(target: ByteArray, offset?: number): this; - - /** - * Gets the number of remaining readable bytes - */ - remaining(): number; - - /** - * Resets this ByteArray's offset. - * If an offset has been marked through mark before, offset will be set to markedOffset, which will then be discarded. - * If no offset has been marked, sets offset = 0 - */ - reset(): this; - - /** - * Resizes this ByteArray to be backed by a buffer of at least the given capacity. - * Will do nothing if already that large or larger. - * - * @param capacity Capacity required - */ - resize(capacity: number): this; - - /** - * Reverses this ByteArray's contents. - * - * @param begin Offset to start at, defaults to offset - * @param end Offset to end at, defaults to limit - */ - reverse(begin?: number, end?: number): this; - - /** - * Skips the next length bytes. This will just advance - */ - skip(length: number): this; - - /** - * Slices this ByteArray by creating a cloned instance with offset = begin and limit = end - * - * @param begin Begin offset, defaults to offset - * @param end End offset, defaults to limit - */ - slice(begin?: number, end?: number): ByteArray; - - /** - * Returns a copy of the backing buffer that contains this ByteArray's contents. - * - * @param forceCopy If true returns a copy, otherwise returns a view referencing the same memory if possible, false by default - * @param begin Begin offset, offset by default - * @param end End offset, limit by default - */ - toBuffer(forceCopy?: boolean, begin?: number, end?: number): Buffer; - - /** - * Returns a raw buffer compacted to contain this ByteArray's contents - */ - toArrayBuffer(): ArrayBuffer; - - /** - * Converts the ByteArray's contents to a string - * - * @param encoding Output encoding - * @param begin Begin offset, offset by default - * @param end End offset, limit by default - */ - toString(encoding?: string, begin?: number, end?: number): string; - - /** - * Encodes this ByteArray's contents to a base64 encoded string - * - * @param begin Begin offset, offset by default - * @param end End offset, limit by default - */ - toBase64(begin?: number, end?: number): string; - - /** - * Encodes this ByteArray to a binary encoded string, that is using only characters 0x00-0xFF as bytes - * - * @param begin Begin offset, offset by default - * @param end End offset, limit by default - */ - toBinary(begin?: number, end?: number): string; - - /** - * Encodes this ByteArray to a hex encoded string with marked offsets - * - * @param columns If true returns two columns hex + ascii, defaults to false - */ - toDebug(columns?: boolean): string; - - /** - * Encodes this ByteArray's contents to a hex encoded string - * - * @param begin Begin offset, offset by default - * @param end End offset, limit by default - */ - toHex(begin?: number, end?: number): string; - - /** - * Encodes this ByteArray's contents to an UTF8 encoded string - * - * @param begin Begin offset, offset by default - * @param end End offset, limit by default - */ - toUTF8(begin?: number, end?: number): string; - - static accessor(): typeof Buffer; - - /** - * Allocates a new ByteArray backed by a buffer of the specified capacity. - * - * @param capacity Initial capacity. Defaults to ByteArray.DEFAULT_CAPACITY(64) - * @param noAssert Whether to skip assertions of offsets and values. Defaults to ByteArray.DEFAULT_NOASSERT(false) - */ - static allocate(capacity?: number, noAssert?: boolean): ByteArray; - - /** - * Concatenates multiple ByteArrays into one - * - * @param encoding Encoding for strings - * @param noAssert Whether to skip assertions of offsets and values. Defaults to ByteArray.DEFAULT_NOASSERT(false) - */ - static concat(buffers: I.ByteArray.Wrappable[], encoding?: string, noAssert?: boolean): ByteArray; - - static type(): typeof Buffer; - - /** - * Wraps a buffer or a string. - * Sets the allocated ByteArray's offset to 0 and its limit to the length of the wrapped data - * - * @param encoding Encoding for strings - * @param noAssert Whether to skip assertions of offsets and values. Defaults to ByteArray.DEFAULT_NOASSERT(false) - */ - static wrap(buffer: I.ByteArray.Wrappable, encoding?: string, noAssert?: boolean): ByteArray; - - /** - * Calculates the actual number of bytes required to store a 32bit base 128 variable-length integer - */ - static calculateVarint32(value: number): number; - - /** - * Zigzag encodes a signed 32bit integer so that it can be effectively used with varint encoding - */ - static zigZagEncode32(n: number): number; - - /** - * Decodes a zigzag encoded signed 32bit integer - */ - static zigZagDecode32(n: number): number; - - /** - * Calculates the actual number of bytes required to store a 64bit base 128 variable-length integer - */ - static calculateVarint64(value: number | string): number; - - /** - * Zigzag encodes a signed 64bit integer so that it can be effectively used with varint encoding - */ - static zigZagEncode64(value: number | string | I.Long): I.Long; - - /** - * Decodes a zigzag encoded signed 64bit integer. - */ - static zigZagDecode64(value: number | string | I.Long): I.Long; - - /** - * Calculates the number of UTF8 characters of a string. - * JavaScript itself uses UTF-16, - * so that a string's length property does not reflect its actual UTF8 size if it contains code points larger than 0xFFFF - */ - static calculateUTF8Chars(str: string): number; - - /** - * Calculates the number of UTF8 bytes of a string. - */ - static calculateString(str: string): number; - - /** - * Decodes a base64 encoded string to a ByteArray - */ - static fromBase64(str: string): ByteArray; - - /** - * Encodes a binary string to base64 like window.btoa does - */ - static btoa(str: string): string; - - /** - * Decodes a base64 encoded string to binary like window.atob does - */ - static atob(b64: string): string; - - /** - * Decodes a binary encoded string, that is using only characters 0x00-0xFF as bytes, to a ByteArray - */ - static fromBinary(str: string): ByteArray; - - /** - * Decodes a hex encoded string with marked offsets to a ByteArray - */ - static fromDebug(str: string, noAssert?: boolean): ByteArray; - - /** - * Decodes a hex encoded string to a ByteArray - */ - static fromHex(str: string, noAssert?: boolean): ByteArray; - - /** - * Decodes an UTF8 encoded string to a ByteArray - */ - static fromUTF8(str: string, noAssert?: boolean): ByteArray; - - /** - * Default initial capacity - */ - static DEFAULT_CAPACITY: number; - - /** - * Default no assertions flag - */ - static DEFAULT_NOASSERT: boolean; - - /** - * Maximum number of bytes required to store a 32bit base 128 variable-length integer - */ - static MAX_VARINT32_BYTES: number; - - /** - * Maximum number of bytes required to store a 64bit base 128 variable-length integer - */ - static MAX_VARINT64_BYTES: number; - - /** - * Metrics representing number of UTF8 characters. Evaluates to `c`. - */ - static METRICS_CHARS: string; - - /** - * Metrics representing number of bytes. Evaluates to `b`. - */ - static METRICS_BYTES: string; - } - - /** - * Represents a queue - */ - class Queue { - /** - * Whether the queue is full - */ - readonly full: boolean; - - /** - * The length of the queue - */ - readonly length: number; - - /** - * Whether the queue is empty - */ - readonly empty: boolean; - - /** - * Inserts a new element at the end - */ - push(x: S): this; - - /** - * Removes and returns an element from the beginning - */ - pop(): T | undefined; - } - - /** - * Represents an asynchronous queue, each pop is a promise - * that is resolved with an existing element or an element that will be pushed in the future - */ - class AsyncQueue extends Queue> { - /** - * Returns a promise that will be resolved with an existing element or an element that will be pushed in the future - */ - pop(): Promise; - } - - namespace I.PriorityQueue { - interface ConstructorOptions { - /** - * Function that compares objects. - * - * Must return a positive value if a > b, a negative if a < b, and zero for equal objects - */ - compare?(a: T, b: T): number; - - /** - * Function that evaluates the priority value by the given objects, - * if the returned value > 0, then the first argument has higher priority, - * = 0 same priority, < 0 lower priority. - * By default the top element is an element that has the highest priority, - * the default priority function is equal to the compare function - */ - priority?(a: T, b: T): number; - } - } - - /** - * Represents a priority queue - */ - class PriorityQueue { - /** - * Whether the queue is empty - */ - readonly empty: boolean; - - /** - * The length of the queue - */ - readonly length: number; - - constructor(options?: I.PriorityQueue.ConstructorOptions); - - /** - * Clones the queue - */ - clone(): PriorityQueue; - - /** - * Inserts a new element - */ - push(x: T): this; - - /** - * Removes the top element (that has the highest priority) - */ - pop(): T | undefined; - - /** - * Deletes the given element from the queue - */ - delete(x: T): this; - - /** - * Replaces the top element (pop + push) - */ - replace(x: T): T; - - /** - * Faster push + pop - */ - pushpop(x: T): T; - - /** - * Converts the queue to an array, it works with a clone of the queue, so the original queue is untouched - */ - toArray(): T[]; - - /** - * Creates a queue object from the given iterable - */ - static from(iterable: Iterable, options?: I.PriorityQueue.ConstructorOptions): PriorityQueue; - } - - /** - * Represents a faster LRU cache but with less functionality - */ - class FastLRU { - /** - * @param size Cache size, unlimited by default - */ - constructor(size?: number, options?: { - /** - * Function that is called when a value is deleted - */ - dispose?(key: K, value: V): void - }); - - /** - * The actual size of the cache - */ - readonly size: number; - - /** - * Gets the value by the given key - */ - get(key: K): V | undefined; - - /** - * Sets a new value for the given key - */ - set(key: K, value: V): void; - - /** - * Deletes the given key from the cache - */ - delete(key: K): boolean; - - /** - * Checks whether the cache has an element with the given key - */ - has(key: K): boolean; - - /** - * Returns the keys iterator - */ - keys(): IterableIterator; - - /** - * Returns the values iterator - */ - values(): IterableIterator; - - /** - * Returns the entries iterator - */ - entries(): IterableIterator<[K, V]>; - - /** - * Clears the cache - */ - clear(): void; - } - - /** - * Represents a stack - */ - class Stack { - /** - * Whether the stack is empty - */ - readonly empty: boolean; - - /** - * The top element of the stack - */ - readonly top: T; - - /** - * Inserts a new element - */ - push(x: T): this; - - /** - * Removes the top element - */ - pop(): T | undefined; - - /** - * Returns an iterator over the values - */ - [Symbol.iterator](): IterableIterator; - - /** - * Creates a stack and pushed all the values from the given iterable object - */ - static from(iterable: Iterable): Stack; - } - - namespace I.BinarySearchTree { - interface ConstructorOptions { - /** - * The parent tree - */ - parent?: Tree; - - /** - * Value to keep in this node - */ - value?: V; - - /** - * WHether the values must be unique, false by default. - * If false you can store many values for same keys, otherwise only one - */ - unique?: boolean; - - /** - * Custom keys comparator, by default if a > b => -1, a < b -1, a === b => 0 - */ - compareKeys?(a: K, b: K): number; - - /** - * Function that defines whether 2 values are the same, by default a === b - */ - checkValueEquality?(a: V, b: V): boolean; - } - - interface Query { - $lt?: K; - $lte?: K; - $gt?: K; - $gte?: K; - } - } - - /** - * Represents a binary search tree - */ - class BinarySearchTree { - constructor(options?: I.BinarySearchTree.ConstructorOptions>); - - /** - * Returns the max descendant tree - */ - getMaxKeyDescendant(): BinarySearchTree; - - /** - * Returns the maximum key - */ - getMaxKey(): K; - - /** - * Returns the min descendant tree - */ - getMinKeyDescendant(): BinarySearchTree; - - /** - * Returns the minumum key - */ - getMinKey(): K; - - /** - * Traverses the tree and calls the given function for each node - */ - checkAllNodesFullfillCondition(test: (key: K, value: V) => void): void; - - /** - * Checks whether the tree is a binary search tree - */ - checkIsBST(): void; - - /** - * Returns the of keys in the tree - */ - getNumberOfKeys(): number; - - /** - * Inserts a new key/value - */ - insert(key: K, value: V): void; - - /** - * Searches the given key in the tree - */ - search(key: K): V[]; - - /** - * Returns all the values from the given key bounds - */ - betweenBounds(query: I.BinarySearchTree.Query): V[]; - - /** - * Deletes the given key/value from the tree - */ - delete(key: K, value?: V): void; - - /** - * Executed the given callback for each node from left to right - */ - executeOnEveryNode(fn: (tree: BinarySearchTree) => void): void; - - /** - * Prints the tree - */ - prettyPrint(printData?: boolean, spacing?: string): void; - } - - /** - * Represents an AVL tree, a self-balancing binary search tree - */ - class AVLTree { - constructor(options?: I.BinarySearchTree.ConstructorOptions>); - - /** - * Checks whether the tree is an avl tree - */ - checkIsAVLT(): void; - - /** - * Inserts a new key/value - */ - insert(key: K, value: V): void; - - /** - * Deletes the given key/value from the tree - */ - delete(key: K, value?: V): void; - - /** - * Returns the of keys in the tree - */ - getNumberOFKeys(): number; - - /** - * Searches the given key in the tree - */ - search(key: K): V[]; - - /** - * Returns all the values from the given key bounds - */ - betweenBounds(query: I.BinarySearchTree.Query): V[]; - - /** - * Executed the given callback for each node from left to right - */ - executeOnEveryNode(fn: (tree: AVLTree) => void): void; - - /** - * Prints the tree - */ - prettyPrint(printDate?: boolean, spacing?: string): void; - } - - namespace I.RedBlackTree { - interface Node { - /** - * The key associated to the node - */ - key: K; - - /** - * The value associated to the node - */ - value: V; - - /** - * The left subtree of the node - */ - left?: Node; - - /** - * The right subtree of the node - */ - right?: Node; - } - - interface Iterator { - /** - * Checks if the iterator is valid - */ - readonly valid: boolean; - - /** - * The value of the node at the iterator's current position, null if invalid - */ - readonly node: Node | null; - - /** - * The key of the item referenced by the iterator, undefined if invalid - */ - readonly key?: K; - - /** - * The value of the item referenced by the iterator, undefined if invalid - */ - readonly value?: V; - - /** - * Returns the position of this iterator in the sequence - */ - readonly index: number; - - /** - * If true, then the iterator is not at the end of the sequence - */ - readonly hasNext: boolean; - - /** - * If true, then the iterator is not at the beginning of the sequence - */ - readonly hasPrev: boolean; - - /** - * The tree associated to the iterator - */ - tree: RedBlackTree; - - /** - * Makes a copy of the iterator - */ - clone(): Iterator; - - /** - * Removes the item at the position of the iterator and returns a new rb-tree - */ - remove(): RedBlackTree; - - /** - * Advances the iterator to the next position - */ - next(): void; - - /** - * Updates the value of the node in the tree at this iterator and returns a new rb-tree - */ - update(value: V): RedBlackTree; - - /** - * Moves the iterator backward one element - */ - prev(): void; - } - } - - /** - * Represents a fully persistent red-black tree - */ - class RedBlackTree { - /** - * The root node of the tree - */ - root: I.RedBlackTree.Node; - - constructor(compare?: (a: K, b: K) => number, root?: RedBlackTree); - - /** - * A sorted array of all the keys in the tree - */ - readonly keys: K[]; - - /** - * An array of all the values in the tree - */ - readonly values: V[]; - - /** - * The number of items in the tree - */ - readonly length: number; - - /** - * An iterator pointing to the first element in the tree - */ - readonly begin: I.RedBlackTree.Iterator; - - /** - * An iterator pointing to the last element in the tree - */ - readonly end: I.RedBlackTree.Iterator; - - /** - * Creates a new tree with the new pair inserted - */ - insert(key: K, value: V): RedBlackTree; - - /** - * Walks a visitor function over the nodes of the tree in order - * - * @param visit A callback that gets executed on each node. - * If a truthy value is returned from the visitor, then iteration is stopped. - * @param lo An optional start of the range to visit (inclusive) - * @param hi An optional end of the range to visit (non-inclusive) - */ - forEach(visit: (key: K, value: V) => T, lo?: K, hi?: K): T; - - /** - * Finds an iterator starting at the given element - */ - at(idx: number): I.RedBlackTree.Iterator; - - /** - * Finds the first item in the tree whose key is >= key - */ - ge(key: K): I.RedBlackTree.Iterator; - - /** - * Finds the first item in the tree whose key is > key - */ - gt(key: K): I.RedBlackTree.Iterator; - - /** - * Finds the first item in the tree whose key is < key - */ - lt(key: K): I.RedBlackTree.Iterator; - - /** - * Finds the first item in the tree whose key is <= key - */ - le(key: K): I.RedBlackTree.Iterator; - - /** - * Returns an iterator pointing to the first item in the tree with key, otherwise null - */ - find(key: K): I.RedBlackTree.Iterator | null; - - /** - * Removes the first item with key in the tree - */ - remove(key: K): RedBlackTree; - - /** - * Retrieves the value associated to the given key - */ - get(key: K): V | undefined; - } - - /** - * Respresetns a data structure which is a combination of an array and a set. - * Adding a new member is O(1), testing for membership is O(1), - * and finding the index of an element is O(1). - */ - class ArraySet { - /** - * The number of unique items in this ArraySet. - * If duplicates have been added, than those do not count towards the size. - */ - readonly length: number; - - /** - * Adds the given value to this set. - * - * @param allowDuplicates Whether to allow duplicates in the set, false by default - */ - add(value: T, allowDuplicates?: boolean): this; - - /** - * Checks whether the given value is a member of the set - */ - has(value: T): boolean; - - /** - * Returns the index of the given element. - * If the value is not present it will return -1 - */ - indexOf(value: T): number; - - /** - * Converts the set to an array - */ - toArray(): T[]; - - /** - * Creates an ArraySet from the given iterable object - * - * @param allowDuplicates Whether to allow duplicates in the set, false by default - */ - static from(iterable: Iterable, allowDuplicates?: boolean): ArraySet; - } - - namespace I.BufferList { - type Appendable = Buffer | BufferList | string | number | Array; - } - - /** - * Represents a Node.js Buffer list collector, reader and streamer with callback/promise interface support - */ - class BufferList extends std.stream.Duplex implements PromiseLike { - /** - * Creates a new buffer list - */ - constructor(); - - /** - * Creates a new buffer list and initiates with the given value - */ - constructor(buffer: I.BufferList.Appendable); - - /** - * Creates a new buffer list and subscribes the given callback on the end/error event - */ - constructor(callback: (err: any, data: Buffer) => void); - - /** - * Adds an additional buffer or BufferList to the internal list - */ - append(buf: I.BufferList.Appendable): this; - - /** - * Ends the stream - */ - end(chunk?: Buffer): void; - end(chunk?: () => void): void; - - /** - * Returns the byte at the specified index - */ - get(idx: number): number; - - /** - * Returns a new Buffer object containing the bytes within the range specified. - */ - slice(start?: number, end?: number): Buffer; - - /** - * Copies the content of the list in the dest buffer - * starting from destStart and containing the bytes within the range specified with srcStart to srcEnd - * - * @param dstStart writes from this position - * @param srcStart reads bytes from this position - * @param srcEnd read bytes to this position - */ - copy(dst: T, dstStart?: number, srcStart?: number, srcEnd?: number): T; - - /** - * Returns a new BufferList object containing the bytes within the range specified. - * No copies will be performed. All buffers in the result share memory with the original list. - * - * @param start slice from - * @param end slice to - */ - shallowSlice(start?: number, end?: number): BufferList; - - /** - * Return a string representation of the buffer - */ - toString(encoding?: fs.I.Encoding, start?: number, end?: number): string; - - /** - * Shifts bytes off the start of the list - */ - consume(bytes: number): this; - - /** - * Performs a shallow-copy of the list. - */ - duplicate(): BufferList; - - /** - * Destroys the stream - */ - destroy(): void; - - then( - onfulfilled?: ((value: Buffer) => T1 | PromiseLike) | null, - onrejected?: ((reason: any) => T2 | PromiseLike) | null - ): PromiseLike; - - catch(onrejected?: ((reason: any) => T | PromiseLike) | null): PromiseLike; - } - - /** - * Represents a Map that has a default values factory object or function. - * Each get of non-existent key goes through the factory - */ - class DefaultMap extends Map { - constructor(factory?: ((key: K) => V) | { [key: string]: V }, iterable?: Iterable<[K, V]>); - } - - namespace I.LRU { - type LengthCalculator = (value: V, key: K) => number; - interface ConstructorOptions { - /** - * The maximum size of the cache, checked by applying the length function to all values in the cache. - * Default is Infinity - */ - max?: number; - - /** - * Maximum age in ms. Items are not pro-actively pruned out as they age, - * but if you try to get an item that is too old, - * it'll drop it and return undefined instead of giving it to you - */ - maxAge?: number; - - /** - * Function that is used to calculate the length of stored items - */ - length?: LengthCalculator; - - /** - * Function that is called on items when they are dropped from the cache - */ - dispose?(key: K, value: V): void; - - /** - * Whether to return the stale value before deleting it - */ - stale?: boolean; - - /** - * Dispose will only be called when a key falls out of the cache, not when it is overwritten - */ - noDisposeOnSet?: boolean; - } - - interface SerializedEntry { - /** - * key - */ - key: K; - - /** - * value - */ - value: V; - - /** - * when it becomes expired - */ - e: number; - } - - interface Entry { - /** - * key - */ - key: K; - - /** - * value - */ - value: V; - - /** - * entry length - */ - length: number; - - /** - * Timestamp when the entry was created - */ - now: number; - - /** - * Maximum live time - */ - maxAge: number; - } - } - - /** - * Represent an LRU cache - */ - class LRU { - /** - * Creates an LRU cache of the given size - */ - constructor(max: number); - - /** - * Creates an LRU cache with the given options - */ - constructor(options?: I.LRU.ConstructorOptions); - - /** - * The length of the cache, setter resizes the cache - */ - max: number; - - /** - * stale setting - */ - allowStale: boolean; - - /** - * maxAge setting - */ - maxAge: number; - - /** - * length setting - */ - lengthCalculator: I.LRU.LengthCalculator; - - /** - * Total length of objects in cache taking into account length options function - */ - readonly length: number; - - /** - * Total quantity of objects currently in cache. - * Note, that stale items are returned as part of this item count. - */ - readonly itemCount: number; - - /** - * Iterates over all the keys in the cache, in reverse recent-ness order. (ie, less recently used items are iterated over first.) - */ - rforEach(fn: (this: T, value: V, key: K, cache: LRU) => void, thisp?: T): void; - - /** - * Iterates over all the keys in the cache, in order of recent-ness - */ - forEach(fn: (this: T, value: V, key: K, cache: LRU) => void, thisp?: T): void; - - /** - * Returns an array of the keys in the cache - */ - keys(): K[]; - - /** - * Returns an array of the values in the cache - */ - values(): V[]; - - /** - * Clears the cache entirely, throwing away all values - */ - reset(): void; - - /** - * Return an array of the cache entries ready for serialization and usage with 'destinationCache.load(arr)` - */ - dump(): Array>; - - /** - * Returns an internal lru list of entries - */ - dumpLru(): LinkedList>; - - /** - * @param opts std.util.inspect options - */ - inspect(opts?: object): string; - - /** - * Sets a new value for the given key. Updates the "recently used"-ness of the key - * - * @param maxAge maxAge option specific for this key - * @returns Whether the key was set - */ - set(key: K, value: V, maxAge?: number): boolean; - - /** - * Check if a key is in the cache, without updating the recent-ness or deleting it for being stale - */ - has(key: K): boolean; - - /** - * Gets the value of the given key. Updates the "recently used"-ness of the key - */ - get(key: K): V | undefined; - - /** - * Returns the key value without updating the "recently used"-ness of the key - */ - peek(key: K): V | undefined; - - /** - * Deletes the less recently used element - */ - pop(): I.LRU.Entry; - - /** - * Deletes a key out of the cache - */ - del(key: K): void; - - /** - * Loads another cache entries array, obtained with sourceCache.dump(), into the cache. - * The destination cache is reset before loading new entries - */ - load(arr: Array>): void; - - /** - * Manually iterates over the entire cache proactively pruning old entries - */ - prune(): void; - } - - /** - * Represents a Map that keeps keys only for a specified interval of time - */ - class TimedoutMap extends Map { - /** - * @param timeout maximum age of the keys, 1000 by default - * @param callback callback that is called with each key when the timeout is passed - */ - constructor(timeout?: number, callback?: (key: K) => void); - - /** - * Gets the timeout - */ - getTimeout(): number; - - /** - * Sets the timeout - */ - setTimeout(ms: number): void; - - /** - * Iterates over the map and calls the callback for each element - */ - forEach(callback: (this: T, value: V, key: K, cache: this) => void, thisArg?: T): this; - - /** - * Deletes the given key - */ - delete(key: K): boolean; - } - } -} diff --git a/types/adone/glosses/collections/array_set.d.ts b/types/adone/glosses/collections/array_set.d.ts new file mode 100644 index 0000000000..c13d8769f1 --- /dev/null +++ b/types/adone/glosses/collections/array_set.d.ts @@ -0,0 +1,44 @@ +declare namespace adone.collection { + /** + * Respresetns a data structure which is a combination of an array and a set. + * Adding a new member is O(1), testing for membership is O(1), + * and finding the index of an element is O(1). + */ + class ArraySet { + /** + * The number of unique items in this ArraySet. + * If duplicates have been added, than those do not count towards the size. + */ + readonly length: number; + + /** + * Adds the given value to this set. + * + * @param allowDuplicates Whether to allow duplicates in the set, false by default + */ + add(value: T, allowDuplicates?: boolean): this; + + /** + * Checks whether the given value is a member of the set + */ + has(value: T): boolean; + + /** + * Returns the index of the given element. + * If the value is not present it will return -1 + */ + indexOf(value: T): number; + + /** + * Converts the set to an array + */ + toArray(): T[]; + + /** + * Creates an ArraySet from the given iterable object + * + * @param allowDuplicates Whether to allow duplicates in the set, false by default + */ + static from(iterable: Iterable, allowDuplicates?: boolean): ArraySet; + } +} diff --git a/types/adone/glosses/collections/async_queue.d.ts b/types/adone/glosses/collections/async_queue.d.ts new file mode 100644 index 0000000000..9a575a33be --- /dev/null +++ b/types/adone/glosses/collections/async_queue.d.ts @@ -0,0 +1,12 @@ +declare namespace adone.collection { + /** + * Represents an asynchronous queue, each pop is a promise + * that is resolved with an existing element or an element that will be pushed in the future + */ + class AsyncQueue extends Queue> { + /** + * Returns a promise that will be resolved with an existing element or an element that will be pushed in the future + */ + pop(): Promise; + } +} diff --git a/types/adone/glosses/collections/avl_tree.d.ts b/types/adone/glosses/collections/avl_tree.d.ts new file mode 100644 index 0000000000..2b5dc132b6 --- /dev/null +++ b/types/adone/glosses/collections/avl_tree.d.ts @@ -0,0 +1,48 @@ +declare namespace adone.collection { + /** + * Represents an AVL tree, a self-balancing binary search tree + */ + class AVLTree { + constructor(options?: I.BinarySearchTree.ConstructorOptions>); + + /** + * Checks whether the tree is an avl tree + */ + checkIsAVLT(): void; + + /** + * Inserts a new key/value + */ + insert(key: K, value: V): void; + + /** + * Deletes the given key/value from the tree + */ + delete(key: K, value?: V): void; + + /** + * Returns the of keys in the tree + */ + getNumberOFKeys(): number; + + /** + * Searches the given key in the tree + */ + search(key: K): V[]; + + /** + * Returns all the values from the given key bounds + */ + betweenBounds(query: I.BinarySearchTree.Query): V[]; + + /** + * Executed the given callback for each node from left to right + */ + executeOnEveryNode(fn: (tree: AVLTree) => void): void; + + /** + * Prints the tree + */ + prettyPrint(printDate?: boolean, spacing?: string): void; + } +} diff --git a/types/adone/glosses/collections/binary_search_tree.d.ts b/types/adone/glosses/collections/binary_search_tree.d.ts new file mode 100644 index 0000000000..878bd7e6a4 --- /dev/null +++ b/types/adone/glosses/collections/binary_search_tree.d.ts @@ -0,0 +1,110 @@ +declare namespace adone.collection { + namespace I.BinarySearchTree { + interface ConstructorOptions { + /** + * The parent tree + */ + parent?: Tree; + + /** + * Value to keep in this node + */ + value?: V; + + /** + * WHether the values must be unique, false by default. + * If false you can store many values for same keys, otherwise only one + */ + unique?: boolean; + + /** + * Custom keys comparator, by default if a > b => -1, a < b -1, a === b => 0 + */ + compareKeys?(a: K, b: K): number; + + /** + * Function that defines whether 2 values are the same, by default a === b + */ + checkValueEquality?(a: V, b: V): boolean; + } + + interface Query { + $lt?: K; + $lte?: K; + $gt?: K; + $gte?: K; + } + } + + /** + * Represents a binary search tree + */ + class BinarySearchTree { + constructor(options?: I.BinarySearchTree.ConstructorOptions>); + + /** + * Returns the max descendant tree + */ + getMaxKeyDescendant(): BinarySearchTree; + + /** + * Returns the maximum key + */ + getMaxKey(): K; + + /** + * Returns the min descendant tree + */ + getMinKeyDescendant(): BinarySearchTree; + + /** + * Returns the minumum key + */ + getMinKey(): K; + + /** + * Traverses the tree and calls the given function for each node + */ + checkAllNodesFullfillCondition(test: (key: K, value: V) => void): void; + + /** + * Checks whether the tree is a binary search tree + */ + checkIsBST(): void; + + /** + * Returns the of keys in the tree + */ + getNumberOfKeys(): number; + + /** + * Inserts a new key/value + */ + insert(key: K, value: V): void; + + /** + * Searches the given key in the tree + */ + search(key: K): V[]; + + /** + * Returns all the values from the given key bounds + */ + betweenBounds(query: I.BinarySearchTree.Query): V[]; + + /** + * Deletes the given key/value from the tree + */ + delete(key: K, value?: V): void; + + /** + * Executed the given callback for each node from left to right + */ + executeOnEveryNode(fn: (tree: BinarySearchTree) => void): void; + + /** + * Prints the tree + */ + prettyPrint(printData?: boolean, spacing?: string): void; + } +} diff --git a/types/adone/glosses/collections/buffer_list.d.ts b/types/adone/glosses/collections/buffer_list.d.ts new file mode 100644 index 0000000000..b2a4157385 --- /dev/null +++ b/types/adone/glosses/collections/buffer_list.d.ts @@ -0,0 +1,92 @@ +declare namespace adone.collection { + namespace I.BufferList { + type Appendable = Buffer | BufferList | string | number | Array; + } + + /** + * Represents a Node.js Buffer list collector, reader and streamer with callback/promise interface support + */ + class BufferList extends std.stream.Duplex implements PromiseLike { + /** + * Creates a new buffer list + */ + constructor(); + + /** + * Creates a new buffer list and initiates with the given value + */ + constructor(buffer: I.BufferList.Appendable); + + /** + * Creates a new buffer list and subscribes the given callback on the end/error event + */ + constructor(callback: (err: any, data: Buffer) => void); + + /** + * Adds an additional buffer or BufferList to the internal list + */ + append(buf: I.BufferList.Appendable): this; + + /** + * Ends the stream + */ + end(chunk?: Buffer): void; + end(chunk?: () => void): void; + + /** + * Returns the byte at the specified index + */ + get(idx: number): number; + + /** + * Returns a new Buffer object containing the bytes within the range specified. + */ + slice(start?: number, end?: number): Buffer; + + /** + * Copies the content of the list in the dest buffer + * starting from destStart and containing the bytes within the range specified with srcStart to srcEnd + * + * @param dstStart writes from this position + * @param srcStart reads bytes from this position + * @param srcEnd read bytes to this position + */ + copy(dst: T, dstStart?: number, srcStart?: number, srcEnd?: number): T; + + /** + * Returns a new BufferList object containing the bytes within the range specified. + * No copies will be performed. All buffers in the result share memory with the original list. + * + * @param start slice from + * @param end slice to + */ + shallowSlice(start?: number, end?: number): BufferList; + + /** + * Return a string representation of the buffer + */ + toString(encoding?: fs.I.Encoding, start?: number, end?: number): string; + + /** + * Shifts bytes off the start of the list + */ + consume(bytes: number): this; + + /** + * Performs a shallow-copy of the list. + */ + duplicate(): BufferList; + + /** + * Destroys the stream + */ + destroy(): void; + + then( + onfulfilled?: ((value: Buffer) => T1 | PromiseLike) | null, + onrejected?: ((reason: any) => T2 | PromiseLike) | null + ): PromiseLike; + + catch(onrejected?: ((reason: any) => T | PromiseLike) | null): PromiseLike; + } +} diff --git a/types/adone/glosses/collections/byte_array.d.ts b/types/adone/glosses/collections/byte_array.d.ts new file mode 100644 index 0000000000..1dc3080fb3 --- /dev/null +++ b/types/adone/glosses/collections/byte_array.d.ts @@ -0,0 +1,892 @@ +declare namespace adone.collection { + namespace I { + type Long = math.Long; + + type Longable = math.I.Longable; + + namespace ByteArray { + interface Varint32 { + value: number; + length: number; + } + + interface Varint64 { + value: Long; + length: number; + } + + interface String { + string: string; + length: number; + } + + type Wrappable = string | ByteArray | Buffer | Uint8Array | ArrayBuffer; + + type Metrics = "b" | "c"; + } + } + + /** + * Represents an array of bytes, enhanced Node.js Buffer + */ + class ByteArray { + readonly woffset: number; + + readonly roffset: number; + + readonly buffer: Buffer; + + readonly noAssert: boolean; + + /** + * Constructs a new ByteArray + * + * @param capacity Initial capacity. Defaults to ByteArray.DEFAULT_CAPACITY(64) + * @param noAssert Whether to skip assertions of offsets and values. Defaults to ByteArray.DEFAULT_NOASSERT(false) + */ + constructor(capacity?: number, noAssert?: boolean); + + /** + * Reads a BitSet as an array of booleans. + * + * @param offset Offset to read from. Will use and increase offset by length if omitted. + */ + readBitSet(offset?: number): boolean[]; + + /** + * Reads the specified number of bytes. + * + * @param length Number of bytes to read + * @param offset Offset to read from. Will use and increase offset by length if omitted. + */ + read(length: number, offset?: number): ByteArray; + + /** + * Reads an 8bit signed integer + * + * @param offset Offset to read from + */ + readInt8(offset?: number): number; + + /** + * Reads an 8bit unsigned integer + * + * @param offset Offset to read from + */ + readUInt8(offset?: number): number; + + /** + * Reads a 16bit signed le integer + * + * @param offset Offset to read from + */ + readInt16LE(offset?: number): number; + + /** + * Reads a 16bit unsigned le integer + * + * @param offset Offset to read from + */ + readUInt16LE(offset?: number): number; + + /** + * Reads a 16bit signed be integer + * + * @param offset Offset to read from + */ + readInt16BE(offset?: number): number; + + /** + * Reads a 16bit unsigned be integer + * + * @param offset Offset to read from + */ + readUInt16BE(offset?: number): number; + + /** + * Reads a 32bit signed le integer + * + * @param offset Offset to read from + */ + readInt32LE(offset?: number): number; + + /** + * Reads a 32bit unsigned le integer + * + * @param offset Offset to read from + */ + readUInt32LE(offset?: number): number; + + /** + * Reads a 32bit signed be integer + * + * @param offset Offset to read from + */ + readInt32BE(offset?: number): number; + + /** + * Reads a 32bit unsigned be integer + * + * @param offset Offset to read from + */ + readUInt32BE(offset?: number): number; + + /** + * Reads a 64bit signed le integer as math.Long + * + * @param offset Offset to read from + */ + readInt64LE(offset?: number): math.Long; + + /** + * Reads a 64bit unsigned le integer as math.Long + * + * @param offset Offset to read from + */ + readUInt64LE(offset?: number): math.Long; + + /** + * Reads a 64bit signed be integer as math.Long + * + * @param offset Offset to read from + */ + readInt64BE(offset?: number): math.Long; + + /** + * Reads a 64bit unsigned be integer as math.Long + * + * @param offset Offset to read from + */ + readUInt64BE(offset?: number): math.Long; + + /** + * Reads a 32bit le float + * + * @param offset Offset to read from + */ + readFloatLE(offset?: number): number; + + /** + * Reads a 32bit be float + * + * @param offset Offset to read from + */ + readFloatBE(offset?: number): number; + + /** + * Reads a 64bit le float + * + * @param offset Offset to read from + */ + readDoubleLE(offset?: number): number; + + /** + * Reads a 64bit be float + * + * @param offset Offset to read from + */ + readDoubleBE(offset?: number): number; + + /** + * Appends some data to this ByteArray. + * This will overwrite any contents behind the specified offset up to the appended data's length. + * + * @param source The source write from + * @param offset Offset to write at + * @param length length to read from the source + * @param encoding encoding to use for wrapping the source in bytearray + */ + write(source: I.ByteArray.Wrappable, offset?: number, length?: number, encoding?: string): this; + + /** + * Writes the array as a bitset. + * @param value Array of booleans to write + */ + writeBitSet(value: number[]): this; + + /** + * Writes the array as a bitset. + * @param value Array of booleans to write + * @param offset Offset to write at + */ + writeBitSet(value: number[], offset: number): number; + + /** + * Writes a buffer at the given offset + * @param buf Buffer to write + * @param offset Offset to write at + */ + writeBuffer(buf: Buffer, offset?: number): this; + + /** + * Writes an 8bit signed integer + * + * @param offset Offset to write at + */ + writeInt8(value: number, offset?: number): this; + + /** + * Writes an 8bit unsigned integer + * + * @param offset Offset to write at + */ + writeUInt8(value: number, offset?: number): this; + + /** + * Writes a 16bit signed le integer + * + * @param offset Offset to write at + */ + writeInt16LE(value: number, offset?: number): this; + + /** + * Writes a 16bit signed be integer + * + * @param offset Offset to write at + */ + writeInt16BE(value: number, offset?: number): this; + + /** + * Writes a 16bit unsigned le integer + * + * @param offset Offset to write at + */ + writeUInt16LE(value: number, offset?: number): this; + + /** + * Writes a 16bit unsigned be integer + * + * @param offset Offset to write at + */ + writeUInt16BE(value: number, offset?: number): this; + + /** + * Writes a 32bit signed le integer + * + * @param offset Offset to write at + */ + writeInt32LE(value: number, offset?: number): this; + + /** + * Writes a 32bit signed be integer + * + * @param offset Offset to write at + */ + writeInt32BE(value: number, offset?: number): this; + + /** + * Writes a 32bit unsigned le integer + * + * @param offset Offset to write at + */ + writeUInt32LE(value: number, offset?: number): this; + + /** + * Writes a 32bit unsigned be integer + * + * @param offset Offset to write at + */ + writeUInt32BE(value: number, offset?: number): this; + + /** + * Writes a 64bit signed le long integer + * + * @param offset Offset to write at + */ + writeInt64LE(value: math.Long | string | number, offset?: number): this; + + /** + * Writes a 64bit signed be long integer + * + * @param offset Offset to write at + */ + writeInt64BE(value: math.Long | string | number, offset?: number): this; + + /** + * Writes a 64bit unsigned le long integer + * + * @param offset Offset to write at + */ + writeUInt64LE(value: math.Long | string | number, offset?: number): this; + + /** + * Writes a 64bit unsigned be long integer + * + * @param offset Offset to write at + */ + writeUInt64BE(value: math.Long | string | number, offset?: number): this; + + /** + * Writes a 32bit le float + * + * @param offset Offset to write at + */ + writeFloatLE(value: number, offset?: number): this; + + /** + * Writes a 32bit be float + * + * @param offset Offset to write at + */ + writeFloatBE(value: number, offset?: number): this; + + /** + * Writes a 64bit le float + * + * @param offset Offset to write at + */ + writeDoubleLE(value: number, offset?: number): this; + + /** + * Writes a 64bit be float + * + * @param offset Offset to write at + */ + writeDoubleBE(value: number, offset?: number): this; + + /** + * Writes a 32bit base 128 variable-length integer + */ + writeVarint32(value: number): this; + + /** + * Writes a 32bit base 128 variable-length integer + * + * @param offset Offset to write at + */ + writeVarint32(value: number, offset: number): number; + + /** + * Writes a zig-zag encoded 32bit base 128 variable-length integer + */ + writeVarint32ZigZag(value: number): this; + + /** + * Writes a zig-zag encoded 32bit base 128 variable-length integer + * + * @param offset Offset to write at + */ + writeVarint32ZigZag(value: number, offset: number): number; + + /** + * Reads a 32bit base 128 variable-length integer + */ + readVarint32(): number; + + /** + * Reads a 32bit base 128 variable-length integer + * + * @param offset Offset to read from + */ + readVarint32(offset: number): I.ByteArray.Varint32; + + /** + * Reads a zig-zag encoded 32bit base 128 variable-length integer + */ + readVarint32ZigZag(): number; + + /** + * Reads a zig-zag encoded 32bit base 128 variable-length integer + * + * @param offset Offset to read from + */ + readVarint32ZigZag(offset: number): I.ByteArray.Varint32; + + /** + * Writes a 64bit base 128 variable-length integer + */ + writeVarint64(value: math.Long | string | number): this; + + /** + * Writes a 64bit base 128 variable-length integer + * + * @param offset Offset to write at + */ + writeVarint64(value: math.Long | string | number, offset: number): number; + + /** + * Writes a zig-zag encoded 64bit base 128 variable-length integer + */ + writeVarint64ZigZag(value: math.Long | string | number): this; + + /** + * Writes a zig-zag encoded 64bit base 128 variable-length integer + * + * @param offset Offset to write at + */ + writeVarint64ZigZag(value: math.Long | string | number, offset: number): number; + + /** + * Reads a 64bit base 128 variable-length integer + */ + readVarint64(): I.Long; + + /** + * Reads a 64bit base 128 variable-length integer + * + * @param offset Offset to read from + */ + readVarint64(offset: number): I.ByteArray.Varint64; + + /** + * Reads a zig-zag encoded 64bit base 128 variable-length integer + */ + readVarint64ZigZag(): math.Long; + + /** + * Reads a zig-zag encoded 64bit base 128 variable-length integer + * + * @param offset Offset to read from + */ + readVarint64ZigZag(offset: number): I.ByteArray.Varint64; + + /** + * Writes a NULL-terminated UTF8 encoded string. + * For this to work the specified string must not contain any NULL characters itself + */ + writeCString(str: string): this; + + /** + * Writes a NULL-terminated UTF8 encoded string. + * For this to work the specified string must not contain any NULL characters itself + * + * @param offset Offset to write at + */ + writeCString(str: string, offset: number): number; + + /** + * Reads a NULL-terminated UTF8 encoded string. + * For this to work the string read must not contain any NULL characters itself + */ + readCString(): string; + + /** + * Reads a NULL-terminated UTF8 encoded string. + * For this to work the string read must not contain any NULL characters itself + * + * @param offset Offset to read from + */ + readCString(offset: number): I.ByteArray.String; + + /** + * Writes an UTF8 encoded string + */ + writeString(str: string): this; + + /** + * Writes an UTF8 encoded string + * + * @param offset Offset to write at + */ + writeString(str: string, offset: number): number; + + /** + * Reads an UTF8 encoded string + * + * @param length Number of characters or bytes to read + * @param metrics Metrics specifying what n is meant to count. Defaults to ByteArray.METRICS_CHARS("c") + */ + readString(length: number, metrics?: I.ByteArray.Metrics): string; + + /** + * Reads an UTF8 encoded string + * + * @param length Number of characters or bytes to read + * @param metrics Metrics specifying what n is meant to count. Defaults to ByteArray.METRICS_CHARS("c") + * @param offset Offset to read from + */ + readString(length: number, metrics: I.ByteArray.Metrics, offset: number): I.ByteArray.String; + + /** + * Reads an UTF8 encoded string + * + * @param length Number of characters or bytes to read + * @param offset Offset to read from + */ + readString(length: number, offset: number): I.ByteArray.String; + + /** + * Writes a length as varint32 prefixed UTF8 encoded string + */ + writeVString(str: string): this; + + /** + * Writes a length as varint32 prefixed UTF8 encoded string + * + * @param offset Offset to read from + */ + writeVString(str: string, offset: number): number; + + /** + * Reads a length as varint32 prefixed UTF8 encoded string + */ + readVString(): string; + + /** + * Reads a length as varint32 prefixed UTF8 encoded string + * + * @param offset Offset to read from + */ + readVString(offset: number): I.ByteArray.String; + + /** + * Appends this ByteArray's contents to another ByteArray. + * This will overwrite any contents behind the specified offset up to the length of this ByteArray's data + * + * @param offset Offset to append to + */ + appendTo(target: ByteArray, offset?: number): this; + + /** + * Enables or disables assertions of argument types and offsets. + * Assertions are enabled by default but you can opt to disable them if your code already makes sure that everything is valid + */ + assert(assert?: boolean): this; + + /** + * Gets the capacity of this ByteArray's backing buffer + */ + capacity(): number; + + /** + * Clears this ByteArray's offsets by setting offset to 0 and limit to the backing buffer's capacity + */ + clear(): this; + + /** + * Creates a cloned instance of this ByteArray, + * preset with this ByteArray's values for offset, markedOffset and limit + * + * @param copy Whether to copy the backing buffer or to return another view on the same, false by default + */ + clone(copy?: boolean): ByteArray; + + /** + * Compacts this ByteArray to be backed by a buffer of its contents' length. + * Will set offset = 0 and limit = capacity and adapt markedOffset to the same relative position if set + * + * @param begin Offset to start at, buffer offset by default + * @param end Offset to end at, buffer limit by default + */ + compact(begin?: number, end?: number): this; + + /** + * Creates a copy of this ByteArray's contents. + * + * @param begin Begin offset, buffer offset by default + * @param end End offset, buffer limit by default + */ + copy(begin?: number, end?: number): ByteArray; + + /** + * Copies this ByteArray's contents to another ByteArray. + * + * @param targetOffset Offset to copy to. Will use and increase the target's offset by the number of bytes copied if omitted + * @param sourceOffset Offset to start copying from. Will use and increase offset by the number of bytes copied if omitted + * @param sourceLimit Offset to end copying from, defaults to the buffer limit + */ + copyTo(target: ByteArray, targetOffset?: number, souceOffset?: number, sourceLimit?: number): this | ByteArray; + + /** + * Makes sure that this ByteArray is backed by a ByteArray#buffer of at least the specified capacity. + * If the current capacity is exceeded, it will be doubled. + * If double the current capacity is less than the required capacity, the required capacity will be used instead + */ + ensureCapacity(capacity: number): this; + + /** + * Overwrites this ByteArray's contents with the specified value. + * + * @param value Byte value to fill with. If given as a string, the first character is used + * @param begin Begin offset. Will use and increase offset by the number of bytes written if omitted. defaults to offset + * @param end End offset, defaults to limit. + */ + fill(value: string | number, begin?: number, end?: number): this; + + /** + * Makes this ByteArray ready for a new sequence of write or relative read operations. + * Sets limit = offset and offset = 0. + * Make sure always to flip a ByteArray when all relative read or write operations are complete + */ + flip(): this; + + /** + * Marks an offset on this ByteArray to be used later + * + * @param offset Offset to mark. Defaults to offset. + */ + mark(offset?: number): this; + + /** + * Prepends some data to this ByteArray. + * This will overwrite any contents before the specified offset up to the prepended data's length. + * If there is not enough space available before the specified offset, + * the backing buffer will be resized and its contents moved accordingly + * + * @param source Data to prepend + * @param offset Offset to prepend at. Will use and decrease offset by the number of bytes prepended if omitted. + */ + prepend(source: I.ByteArray.Wrappable, offset: number): this; + + /** + * Prepends some data to this ByteArray. + * This will overwrite any contents before the specified offset up to the prepended data's length. + * If there is not enough space available before the specified offset, + * the backing buffer will be resized and its contents moved accordingly + * + * @param source Data to prepend + * @param encoding Encoding if data is a string + * @param offset Offset to prepend at. Will use and decrease offset by the number of bytes prepended if omitted. + */ + prepend(source: I.ByteArray.Wrappable, encoding?: string, offset?: number): this; + + /** + * Prepends this ByteArray to another ByteArray. + * This will overwrite any contents before the specified offset up to the prepended data's length. + * If there is not enough space available before the specified offset, + * the backing buffer will be resized and its contents moved accordingly + * + * @param offset Offset to prepend at + */ + prependTo(target: ByteArray, offset?: number): this; + + /** + * Gets the number of remaining readable bytes + */ + remaining(): number; + + /** + * Resets this ByteArray's offset. + * If an offset has been marked through mark before, offset will be set to markedOffset, which will then be discarded. + * If no offset has been marked, sets offset = 0 + */ + reset(): this; + + /** + * Resizes this ByteArray to be backed by a buffer of at least the given capacity. + * Will do nothing if already that large or larger. + * + * @param capacity Capacity required + */ + resize(capacity: number): this; + + /** + * Reverses this ByteArray's contents. + * + * @param begin Offset to start at, defaults to offset + * @param end Offset to end at, defaults to limit + */ + reverse(begin?: number, end?: number): this; + + /** + * Skips the next length bytes. This will just advance + */ + skip(length: number): this; + + /** + * Slices this ByteArray by creating a cloned instance with offset = begin and limit = end + * + * @param begin Begin offset, defaults to offset + * @param end End offset, defaults to limit + */ + slice(begin?: number, end?: number): ByteArray; + + /** + * Returns a copy of the backing buffer that contains this ByteArray's contents. + * + * @param forceCopy If true returns a copy, otherwise returns a view referencing the same memory if possible, false by default + * @param begin Begin offset, offset by default + * @param end End offset, limit by default + */ + toBuffer(forceCopy?: boolean, begin?: number, end?: number): Buffer; + + /** + * Returns a raw buffer compacted to contain this ByteArray's contents + */ + toArrayBuffer(): ArrayBuffer; + + /** + * Converts the ByteArray's contents to a string + * + * @param encoding Output encoding + * @param begin Begin offset, offset by default + * @param end End offset, limit by default + */ + toString(encoding?: string, begin?: number, end?: number): string; + + /** + * Encodes this ByteArray's contents to a base64 encoded string + * + * @param begin Begin offset, offset by default + * @param end End offset, limit by default + */ + toBase64(begin?: number, end?: number): string; + + /** + * Encodes this ByteArray to a binary encoded string, that is using only characters 0x00-0xFF as bytes + * + * @param begin Begin offset, offset by default + * @param end End offset, limit by default + */ + toBinary(begin?: number, end?: number): string; + + /** + * Encodes this ByteArray to a hex encoded string with marked offsets + * + * @param columns If true returns two columns hex + ascii, defaults to false + */ + toDebug(columns?: boolean): string; + + /** + * Encodes this ByteArray's contents to a hex encoded string + * + * @param begin Begin offset, offset by default + * @param end End offset, limit by default + */ + toHex(begin?: number, end?: number): string; + + /** + * Encodes this ByteArray's contents to an UTF8 encoded string + * + * @param begin Begin offset, offset by default + * @param end End offset, limit by default + */ + toUTF8(begin?: number, end?: number): string; + + static accessor(): typeof Buffer; + + /** + * Allocates a new ByteArray backed by a buffer of the specified capacity. + * + * @param capacity Initial capacity. Defaults to ByteArray.DEFAULT_CAPACITY(64) + * @param noAssert Whether to skip assertions of offsets and values. Defaults to ByteArray.DEFAULT_NOASSERT(false) + */ + static allocate(capacity?: number, noAssert?: boolean): ByteArray; + + /** + * Concatenates multiple ByteArrays into one + * + * @param encoding Encoding for strings + * @param noAssert Whether to skip assertions of offsets and values. Defaults to ByteArray.DEFAULT_NOASSERT(false) + */ + static concat(buffers: I.ByteArray.Wrappable[], encoding?: string, noAssert?: boolean): ByteArray; + + static type(): typeof Buffer; + + /** + * Wraps a buffer or a string. + * Sets the allocated ByteArray's offset to 0 and its limit to the length of the wrapped data + * + * @param encoding Encoding for strings + * @param noAssert Whether to skip assertions of offsets and values. Defaults to ByteArray.DEFAULT_NOASSERT(false) + */ + static wrap(buffer: I.ByteArray.Wrappable, encoding?: string, noAssert?: boolean): ByteArray; + + /** + * Calculates the actual number of bytes required to store a 32bit base 128 variable-length integer + */ + static calculateVarint32(value: number): number; + + /** + * Zigzag encodes a signed 32bit integer so that it can be effectively used with varint encoding + */ + static zigZagEncode32(n: number): number; + + /** + * Decodes a zigzag encoded signed 32bit integer + */ + static zigZagDecode32(n: number): number; + + /** + * Calculates the actual number of bytes required to store a 64bit base 128 variable-length integer + */ + static calculateVarint64(value: number | string): number; + + /** + * Zigzag encodes a signed 64bit integer so that it can be effectively used with varint encoding + */ + static zigZagEncode64(value: number | string | I.Long): I.Long; + + /** + * Decodes a zigzag encoded signed 64bit integer. + */ + static zigZagDecode64(value: number | string | I.Long): I.Long; + + /** + * Calculates the number of UTF8 characters of a string. + * JavaScript itself uses UTF-16, + * so that a string's length property does not reflect its actual UTF8 size if it contains code points larger than 0xFFFF + */ + static calculateUTF8Chars(str: string): number; + + /** + * Calculates the number of UTF8 bytes of a string. + */ + static calculateString(str: string): number; + + /** + * Decodes a base64 encoded string to a ByteArray + */ + static fromBase64(str: string): ByteArray; + + /** + * Encodes a binary string to base64 like window.btoa does + */ + static btoa(str: string): string; + + /** + * Decodes a base64 encoded string to binary like window.atob does + */ + static atob(b64: string): string; + + /** + * Decodes a binary encoded string, that is using only characters 0x00-0xFF as bytes, to a ByteArray + */ + static fromBinary(str: string): ByteArray; + + /** + * Decodes a hex encoded string with marked offsets to a ByteArray + */ + static fromDebug(str: string, noAssert?: boolean): ByteArray; + + /** + * Decodes a hex encoded string to a ByteArray + */ + static fromHex(str: string, noAssert?: boolean): ByteArray; + + /** + * Decodes an UTF8 encoded string to a ByteArray + */ + static fromUTF8(str: string, noAssert?: boolean): ByteArray; + + /** + * Default initial capacity + */ + static DEFAULT_CAPACITY: number; + + /** + * Default no assertions flag + */ + static DEFAULT_NOASSERT: boolean; + + /** + * Maximum number of bytes required to store a 32bit base 128 variable-length integer + */ + static MAX_VARINT32_BYTES: number; + + /** + * Maximum number of bytes required to store a 64bit base 128 variable-length integer + */ + static MAX_VARINT64_BYTES: number; + + /** + * Metrics representing number of UTF8 characters. Evaluates to `c`. + */ + static METRICS_CHARS: string; + + /** + * Metrics representing number of bytes. Evaluates to `b`. + */ + static METRICS_BYTES: string; + } +} diff --git a/types/adone/glosses/collections/default_map.d.ts b/types/adone/glosses/collections/default_map.d.ts new file mode 100644 index 0000000000..46b8ccebfe --- /dev/null +++ b/types/adone/glosses/collections/default_map.d.ts @@ -0,0 +1,9 @@ +declare namespace adone.collection { + /** + * Represents a Map that has a default values factory object or function. + * Each get of non-existent key goes through the factory + */ + class DefaultMap extends Map { + constructor(factory?: ((key: K) => V) | { [key: string]: V }, iterable?: Iterable<[K, V]>); + } +} diff --git a/types/adone/glosses/collections/fast_lru.d.ts b/types/adone/glosses/collections/fast_lru.d.ts new file mode 100644 index 0000000000..e991322bc0 --- /dev/null +++ b/types/adone/glosses/collections/fast_lru.d.ts @@ -0,0 +1,61 @@ +declare namespace adone.collection { + /** + * Represents a faster LRU cache but with less functionality + */ + class FastLRU { + /** + * @param size Cache size, unlimited by default + */ + constructor(size?: number, options?: { + /** + * Function that is called when a value is deleted + */ + dispose?(key: K, value: V): void + }); + + /** + * The actual size of the cache + */ + readonly size: number; + + /** + * Gets the value by the given key + */ + get(key: K): V | undefined; + + /** + * Sets a new value for the given key + */ + set(key: K, value: V): void; + + /** + * Deletes the given key from the cache + */ + delete(key: K): boolean; + + /** + * Checks whether the cache has an element with the given key + */ + has(key: K): boolean; + + /** + * Returns the keys iterator + */ + keys(): IterableIterator; + + /** + * Returns the values iterator + */ + values(): IterableIterator; + + /** + * Returns the entries iterator + */ + entries(): IterableIterator<[K, V]>; + + /** + * Clears the cache + */ + clear(): void; + } +} diff --git a/types/adone/glosses/collections/index.d.ts b/types/adone/glosses/collections/index.d.ts new file mode 100644 index 0000000000..234ffe85f4 --- /dev/null +++ b/types/adone/glosses/collections/index.d.ts @@ -0,0 +1,28 @@ +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// +/// + +declare namespace adone { + /** + * Data structures + */ + namespace collection { + // + } +} diff --git a/types/adone/glosses/collections/linked_list.d.ts b/types/adone/glosses/collections/linked_list.d.ts new file mode 100644 index 0000000000..69ffa4da4b --- /dev/null +++ b/types/adone/glosses/collections/linked_list.d.ts @@ -0,0 +1,150 @@ +declare namespace adone.collection { + namespace I.LinkedList { + /** + * Represents the node of a linked list + */ + interface Node { + /** + * The next node + */ + next?: Node; + + /** + * The previous node + */ + prev?: Node; + + /** + * The value this node contains + */ + value: T; + } + } + + /** + * Represents a linked list + */ + class LinkedList { + /** + * The maximum length of the list + */ + readonly maxLength: number; + + /** + * Current length of the list + */ + readonly length: number; + + /** + * Whether the list is autoresizable + */ + readonly autoresize: boolean; + + /** + * @param maxLength Maximum length of the linked list + */ + constructor(maxLength?: number); + + /** + * Whether the list is full + */ + readonly full: boolean; + + /** + * Whether the list is empty + */ + readonly empty: boolean; + + /** + * Resizes the list + */ + resize(newLength: number): this; + + /** + * Adds a new node to the end + * + * @returns Added node + */ + push(value: T): I.LinkedList.Node; + + /** + * Removes the last node, returns undefined if the list is empty + */ + pop(): T | undefined; + + /** + * Removes the first node, returns undefined if the list is empty + */ + shift(): T | undefined; + + /** + * Inserts a new node at the beginning of the list + * + * @returns Added node + */ + unshift(value: T): I.LinkedList.Node; + + /** + * Moves the given node to the end of the list + */ + pushNode(node: I.LinkedList.Node): void; + + /** + * Moved the given node to the beginning of the list + */ + unshiftNode(node: I.LinkedList.Node): void; + + /** + * Removes the given node from the list + */ + removeNode(node: I.LinkedList.Node): void; + + /** + * Clears the list + * + * @param strong Whether to reset all the node's values + */ + clear(strong?: boolean): void; + + /** + * Convers the list to an array + */ + toArray(): T[]; + + /** + * The first element of the list + */ + readonly front: T; + + /** + * The last element of the list + */ + readonly back: T; + + /** + * Returns an iterator over the list elements + */ + [Symbol.iterator](): IterableIterator; + + /** + * Returns the next node for the given node + */ + nextNode(node: I.LinkedList.Node): I.LinkedList.Node; + + /** + * Maps this linked list to a new one using the given function + */ + map(fn: (value: T, index: number) => R): LinkedList; + + /** + * Invokes the given callback for each value from the beginning to the end (much faster than for-of). + * If the given function returns false it stops iterating. + */ + forEach(callback: (value: T, index: number) => void | boolean): void; + + /** + * Default length of a new created linked list + */ + static DEFAULT_LENGTH: number; + } +} diff --git a/types/adone/glosses/collections/lru.d.ts b/types/adone/glosses/collections/lru.d.ts new file mode 100644 index 0000000000..7d41e32cd5 --- /dev/null +++ b/types/adone/glosses/collections/lru.d.ts @@ -0,0 +1,213 @@ +declare namespace adone.collection { + namespace I.LRU { + type LengthCalculator = (value: V, key: K) => number; + interface ConstructorOptions { + /** + * The maximum size of the cache, checked by applying the length function to all values in the cache. + * Default is Infinity + */ + max?: number; + + /** + * Maximum age in ms. Items are not pro-actively pruned out as they age, + * but if you try to get an item that is too old, + * it'll drop it and return undefined instead of giving it to you + */ + maxAge?: number; + + /** + * Function that is used to calculate the length of stored items + */ + length?: LengthCalculator; + + /** + * Function that is called on items when they are dropped from the cache + */ + dispose?(key: K, value: V): void; + + /** + * Whether to return the stale value before deleting it + */ + stale?: boolean; + + /** + * Dispose will only be called when a key falls out of the cache, not when it is overwritten + */ + noDisposeOnSet?: boolean; + } + + interface SerializedEntry { + /** + * key + */ + key: K; + + /** + * value + */ + value: V; + + /** + * when it becomes expired + */ + e: number; + } + + interface Entry { + /** + * key + */ + key: K; + + /** + * value + */ + value: V; + + /** + * entry length + */ + length: number; + + /** + * Timestamp when the entry was created + */ + now: number; + + /** + * Maximum live time + */ + maxAge: number; + } + } + + /** + * Represent an LRU cache + */ + class LRU { + /** + * Creates an LRU cache of the given size + */ + constructor(max: number); + + /** + * Creates an LRU cache with the given options + */ + constructor(options?: I.LRU.ConstructorOptions); + + /** + * The length of the cache, setter resizes the cache + */ + max: number; + + /** + * stale setting + */ + allowStale: boolean; + + /** + * maxAge setting + */ + maxAge: number; + + /** + * length setting + */ + lengthCalculator: I.LRU.LengthCalculator; + + /** + * Total length of objects in cache taking into account length options function + */ + readonly length: number; + + /** + * Total quantity of objects currently in cache. + * Note, that stale items are returned as part of this item count. + */ + readonly itemCount: number; + + /** + * Iterates over all the keys in the cache, in reverse recent-ness order. (ie, less recently used items are iterated over first.) + */ + rforEach(fn: (this: T, value: V, key: K, cache: LRU) => void, thisp?: T): void; + + /** + * Iterates over all the keys in the cache, in order of recent-ness + */ + forEach(fn: (this: T, value: V, key: K, cache: LRU) => void, thisp?: T): void; + + /** + * Returns an array of the keys in the cache + */ + keys(): K[]; + + /** + * Returns an array of the values in the cache + */ + values(): V[]; + + /** + * Clears the cache entirely, throwing away all values + */ + reset(): void; + + /** + * Return an array of the cache entries ready for serialization and usage with 'destinationCache.load(arr)` + */ + dump(): Array>; + + /** + * Returns an internal lru list of entries + */ + dumpLru(): LinkedList>; + + /** + * @param opts std.util.inspect options + */ + inspect(opts?: object): string; + + /** + * Sets a new value for the given key. Updates the "recently used"-ness of the key + * + * @param maxAge maxAge option specific for this key + * @returns Whether the key was set + */ + set(key: K, value: V, maxAge?: number): boolean; + + /** + * Check if a key is in the cache, without updating the recent-ness or deleting it for being stale + */ + has(key: K): boolean; + + /** + * Gets the value of the given key. Updates the "recently used"-ness of the key + */ + get(key: K): V | undefined; + + /** + * Returns the key value without updating the "recently used"-ness of the key + */ + peek(key: K): V | undefined; + + /** + * Deletes the less recently used element + */ + pop(): I.LRU.Entry; + + /** + * Deletes a key out of the cache + */ + del(key: K): void; + + /** + * Loads another cache entries array, obtained with sourceCache.dump(), into the cache. + * The destination cache is reset before loading new entries + */ + load(arr: Array>): void; + + /** + * Manually iterates over the entire cache proactively pruning old entries + */ + prune(): void; + } +} diff --git a/types/adone/glosses/collections/map_cache.d.ts b/types/adone/glosses/collections/map_cache.d.ts new file mode 100644 index 0000000000..55bbb6e05f --- /dev/null +++ b/types/adone/glosses/collections/map_cache.d.ts @@ -0,0 +1,13 @@ +declare namespace adone.collection { + class MapCache { + has(key: string): boolean; + + get(key: string): T; + + set(key: string, value: T): void; + + delete(key: string): void; + + clear(): void; + } +} diff --git a/types/adone/glosses/collections/ns_cache.d.ts b/types/adone/glosses/collections/ns_cache.d.ts new file mode 100644 index 0000000000..5630c295d3 --- /dev/null +++ b/types/adone/glosses/collections/ns_cache.d.ts @@ -0,0 +1,17 @@ +declare namespace adone.collection { + class NSCache { + constructor(size: number, namespaces: string[]); + + resize(newSize: number): void; + + set(ns: string, key: string, value: T): void; + + get(ns: string, key: string): T; + + has(ns: string, key: string): boolean; + + delete(ns: string, key: string): void; + + clear(): void; + } +} diff --git a/types/adone/glosses/collections/priority_queue.d.ts b/types/adone/glosses/collections/priority_queue.d.ts new file mode 100644 index 0000000000..0fb1e92814 --- /dev/null +++ b/types/adone/glosses/collections/priority_queue.d.ts @@ -0,0 +1,78 @@ +declare namespace adone.collection { + namespace I.PriorityQueue { + interface ConstructorOptions { + /** + * Function that compares objects. + * + * Must return a positive value if a > b, a negative if a < b, and zero for equal objects + */ + compare?(a: T, b: T): number; + + /** + * Function that evaluates the priority value by the given objects, + * if the returned value > 0, then the first argument has higher priority, + * = 0 same priority, < 0 lower priority. + * By default the top element is an element that has the highest priority, + * the default priority function is equal to the compare function + */ + priority?(a: T, b: T): number; + } + } + + /** + * Represents a priority queue + */ + class PriorityQueue { + /** + * Whether the queue is empty + */ + readonly empty: boolean; + + /** + * The length of the queue + */ + readonly length: number; + + constructor(options?: I.PriorityQueue.ConstructorOptions); + + /** + * Clones the queue + */ + clone(): PriorityQueue; + + /** + * Inserts a new element + */ + push(x: T): this; + + /** + * Removes the top element (that has the highest priority) + */ + pop(): T | undefined; + + /** + * Deletes the given element from the queue + */ + delete(x: T): this; + + /** + * Replaces the top element (pop + push) + */ + replace(x: T): T; + + /** + * Faster push + pop + */ + pushpop(x: T): T; + + /** + * Converts the queue to an array, it works with a clone of the queue, so the original queue is untouched + */ + toArray(): T[]; + + /** + * Creates a queue object from the given iterable + */ + static from(iterable: Iterable, options?: I.PriorityQueue.ConstructorOptions): PriorityQueue; + } +} diff --git a/types/adone/glosses/collections/queue.d.ts b/types/adone/glosses/collections/queue.d.ts new file mode 100644 index 0000000000..e67eb8fda9 --- /dev/null +++ b/types/adone/glosses/collections/queue.d.ts @@ -0,0 +1,31 @@ +declare namespace adone.collection { + /** + * Represents a queue + */ + class Queue { + /** + * Whether the queue is full + */ + readonly full: boolean; + + /** + * The length of the queue + */ + readonly length: number; + + /** + * Whether the queue is empty + */ + readonly empty: boolean; + + /** + * Inserts a new element at the end + */ + push(x: S): this; + + /** + * Removes and returns an element from the beginning + */ + pop(): T | undefined; + } +} diff --git a/types/adone/glosses/collections/rb_tree.d.ts b/types/adone/glosses/collections/rb_tree.d.ts new file mode 100644 index 0000000000..2ed7a81323 --- /dev/null +++ b/types/adone/glosses/collections/rb_tree.d.ts @@ -0,0 +1,184 @@ +declare namespace adone.collection { + namespace I.RedBlackTree { + interface Node { + /** + * The key associated to the node + */ + key: K; + + /** + * The value associated to the node + */ + value: V; + + /** + * The left subtree of the node + */ + left?: Node; + + /** + * The right subtree of the node + */ + right?: Node; + } + + interface Iterator { + /** + * Checks if the iterator is valid + */ + readonly valid: boolean; + + /** + * The value of the node at the iterator's current position, null if invalid + */ + readonly node: Node | null; + + /** + * The key of the item referenced by the iterator, undefined if invalid + */ + readonly key?: K; + + /** + * The value of the item referenced by the iterator, undefined if invalid + */ + readonly value?: V; + + /** + * Returns the position of this iterator in the sequence + */ + readonly index: number; + + /** + * If true, then the iterator is not at the end of the sequence + */ + readonly hasNext: boolean; + + /** + * If true, then the iterator is not at the beginning of the sequence + */ + readonly hasPrev: boolean; + + /** + * The tree associated to the iterator + */ + tree: RedBlackTree; + + /** + * Makes a copy of the iterator + */ + clone(): Iterator; + + /** + * Removes the item at the position of the iterator and returns a new rb-tree + */ + remove(): RedBlackTree; + + /** + * Advances the iterator to the next position + */ + next(): void; + + /** + * Updates the value of the node in the tree at this iterator and returns a new rb-tree + */ + update(value: V): RedBlackTree; + + /** + * Moves the iterator backward one element + */ + prev(): void; + } + } + + /** + * Represents a fully persistent red-black tree + */ + class RedBlackTree { + /** + * The root node of the tree + */ + root: I.RedBlackTree.Node; + + constructor(compare?: (a: K, b: K) => number, root?: RedBlackTree); + + /** + * A sorted array of all the keys in the tree + */ + readonly keys: K[]; + + /** + * An array of all the values in the tree + */ + readonly values: V[]; + + /** + * The number of items in the tree + */ + readonly length: number; + + /** + * An iterator pointing to the first element in the tree + */ + readonly begin: I.RedBlackTree.Iterator; + + /** + * An iterator pointing to the last element in the tree + */ + readonly end: I.RedBlackTree.Iterator; + + /** + * Creates a new tree with the new pair inserted + */ + insert(key: K, value: V): RedBlackTree; + + /** + * Walks a visitor function over the nodes of the tree in order + * + * @param visit A callback that gets executed on each node. + * If a truthy value is returned from the visitor, then iteration is stopped. + * @param lo An optional start of the range to visit (inclusive) + * @param hi An optional end of the range to visit (non-inclusive) + */ + forEach(visit: (key: K, value: V) => T, lo?: K, hi?: K): T; + + /** + * Finds an iterator starting at the given element + */ + at(idx: number): I.RedBlackTree.Iterator; + + /** + * Finds the first item in the tree whose key is >= key + */ + ge(key: K): I.RedBlackTree.Iterator; + + /** + * Finds the first item in the tree whose key is > key + */ + gt(key: K): I.RedBlackTree.Iterator; + + /** + * Finds the first item in the tree whose key is < key + */ + lt(key: K): I.RedBlackTree.Iterator; + + /** + * Finds the first item in the tree whose key is <= key + */ + le(key: K): I.RedBlackTree.Iterator; + + /** + * Returns an iterator pointing to the first item in the tree with key, otherwise null + */ + find(key: K): I.RedBlackTree.Iterator | null; + + /** + * Removes the first item with key in the tree + */ + remove(key: K): RedBlackTree; + + /** + * Retrieves the value associated to the given key + */ + get(key: K): V | undefined; + } +} diff --git a/types/adone/glosses/collections/refcounted_cache.d.ts b/types/adone/glosses/collections/refcounted_cache.d.ts new file mode 100644 index 0000000000..79410423a4 --- /dev/null +++ b/types/adone/glosses/collections/refcounted_cache.d.ts @@ -0,0 +1,9 @@ +declare namespace adone.collection { + class RefcountedCache extends MapCache { + ref(key: string): void; + + unref(key: string): void; + + references(key: string): number; + } +} diff --git a/types/adone/glosses/collections/set.d.ts b/types/adone/glosses/collections/set.d.ts new file mode 100644 index 0000000000..f1a6bae96d --- /dev/null +++ b/types/adone/glosses/collections/set.d.ts @@ -0,0 +1,17 @@ +declare namespace adone.collection { + class Set { + constructor(key?: (x: T) => any); + + has(value: T): boolean; + + add(value: T): void; + + delete(value: T): void; + + get(value: T): T; // ??? + + readonly size: number; + + only(): T; + } +} diff --git a/types/adone/glosses/collections/stack.d.ts b/types/adone/glosses/collections/stack.d.ts new file mode 100644 index 0000000000..90fe35b99b --- /dev/null +++ b/types/adone/glosses/collections/stack.d.ts @@ -0,0 +1,36 @@ +declare namespace adone.collection { + /** + * Represents a stack + */ + class Stack { + /** + * Whether the stack is empty + */ + readonly empty: boolean; + + /** + * The top element of the stack + */ + readonly top: T; + + /** + * Inserts a new element + */ + push(x: T): this; + + /** + * Removes the top element + */ + pop(): T | undefined; + + /** + * Returns an iterator over the values + */ + [Symbol.iterator](): IterableIterator; + + /** + * Creates a stack and pushed all the values from the given iterable object + */ + static from(iterable: Iterable): Stack; + } +} diff --git a/types/adone/glosses/collections/timedout_map.d.ts b/types/adone/glosses/collections/timedout_map.d.ts new file mode 100644 index 0000000000..fedcf79fa2 --- /dev/null +++ b/types/adone/glosses/collections/timedout_map.d.ts @@ -0,0 +1,32 @@ +declare namespace adone.collection { + /** + * Represents a Map that keeps keys only for a specified interval of time + */ + class TimedoutMap extends Map { + /** + * @param timeout maximum age of the keys, 1000 by default + * @param callback callback that is called with each key when the timeout is passed + */ + constructor(timeout?: number, callback?: (key: K) => void); + + /** + * Gets the timeout + */ + getTimeout(): number; + + /** + * Sets the timeout + */ + setTimeout(ms: number): void; + + /** + * Iterates over the map and calls the callback for each element + */ + forEach(callback: (this: T, value: V, key: K, cache: this) => void, thisArg?: T): this; + + /** + * Deletes the given key + */ + delete(key: K): boolean; + } +} diff --git a/types/adone/glosses/data.d.ts b/types/adone/glosses/data.d.ts index a22ba10750..4d3dae7b2b 100644 --- a/types/adone/glosses/data.d.ts +++ b/types/adone/glosses/data.d.ts @@ -1050,5 +1050,183 @@ declare namespace adone { */ function decode(buf: Buffer, options?: I.DeserializeOptions): any; } + + namespace protobuf { + namespace schema { + namespace I { + interface Field { + name: string | null; + type: string | null; + tag: number; + map: { + from: string; + to: string; + } | null; + oneof: string | null; + required: boolean; + repeated: boolean; + options: object; + } + + interface Enum { + name: string; + values: object; + options: object; + } + + interface Extend { + name: string; + message: Message; + } + + interface Message { + name: string; + enums: Enum[]; + extends: Extend[]; + messages: Message[]; + fields: Field[]; + extensions: { + from: number, + to: number + } | null; + } + + interface RPCMethod { + name: string; + input_type: string | null; + output_type: string | null; + client_streaming: boolean; + server_streaming: boolean; + options: object; + } + + interface Service { + name: string; + methods: RPCMethod[]; + options: object; + } + + interface Schema { + syntax: any; // ?? + package: string | null; + imports: string[]; + enums: Enum[]; + messages: Message[]; + options: object; + extends: Extend[]; + services?: Service[]; + } + } + + function parse(buf: Buffer | string): I.Schema; + + function stringify(schema: object): string; + } + + function create(proto: Buffer | string | object, opts?: object): object; + } + + namespace base32 { + function charmap(alphabet: string, mappings?: T): T; + + namespace I { + interface Spec { + alphabet: string; + charmap: { + [c: string]: number; + }; + } + } + + const rfc4648: I.Spec; + + const crockford: I.Spec; + + const base32hex: I.Spec; + + namespace I { + interface DecoderOptions { + type: "rfc4648" | "crockford" | "base32hex"; + charmap?: object; + } + + interface EncoderOptions { + type: "rfc4648" | "crockford" | "base32hex"; + alphabet?: string; + } + } + + class Decoder { + constructor(options?: I.DecoderOptions); + + write(str: string): this; + + finalize(str?: string): Buffer; + } + + class Encoder { + constructor(options?: I.EncoderOptions); + + write(buf: Buffer): this; + + finalize(buf?: Buffer): string; + } + + function encode(buf: Buffer, options?: I.EncoderOptions): string; + + function decode(str: string, options?: I.DecoderOptions): Buffer; + } + + namespace I { + interface BaseX { + encode(buf: Buffer): string; + + decode(str: string): Buffer; + + decodeUnsafe(str: string): Buffer; + } + } + + function basex(alphabet: string): I.BaseX; + + const base58: I.BaseX; + + namespace base64url { + function unescape(str: string): string; + + function escape(str: string): string; + + namespace I { + interface EncodeOptions { + encoding?: string; + } + + interface DecodeOptions { + encoding?: string; + buffer?: boolean; + } + } + + function encode(str: Buffer | string, options?: I.EncodeOptions): string; + + function decode(str: string, options: I.DecodeOptions & { buffer: true }): Buffer; + function decode(str: string, options?: I.DecodeOptions): string; + } + + namespace varint { + function encode(num: number, out?: T[], offset?: number): T[]; + + function decode(buf: Buffer, offset?: number): number; + + function encodingLength(value: number): number; + } + + namespace varintSigned { + function encode(num: number, out?: T[], offset?: number): T[]; + + function decode(buf: Buffer, offset?: number): number; + + function encodingLength(value: number): number; + } } } diff --git a/types/adone/glosses/fake.d.ts b/types/adone/glosses/fake.d.ts new file mode 100644 index 0000000000..0c403747e4 --- /dev/null +++ b/types/adone/glosses/fake.d.ts @@ -0,0 +1,337 @@ +declare namespace adone { + namespace fake { + namespace I { + interface Card { + name: string; + username: string; + email: string; + address: FullAddress; + phone: string; + website: string; + company: Company; + posts: Post[]; + accountHistory: string[]; + } + + interface FullAddress { + streetA: string; + streetB: string; + streetC: string; + streetD: string; + city: string; + state: string; + county: string; + zipcode: string; + geo: Geo; + } + + interface Geo { + lat: string; + lng: string; + } + + interface Company { + name: string; + catchPhrase: string; + bs: string; + } + + interface Post { + words: string; + sentence: string; + sentences: string; + paragraph: string; + } + + interface ContextualCard { + name: string; + username: string; + email: string; + dob: Date; + phone: string; + address: Address; + website: string; + company: Company; + } + + interface Address { + street: string; + suite: string; + city: string; + state: string; + zipcode: string; + geo: Geo; + } + + interface UserCard { + name: string; + username: string; + email: string; + address: Address; + phone: string; + website: string; + company: Company; + } + + interface Transaction { + amount: string; + date: Date; + business: string; + name: string; + type: string; + account: string; + } + } + + namespace address { + function zipCode(format?: string): string; + function city(format?: number): string; + function cityPrefix(): string; + function citySuffix(): string; + function streetName(): string; + function streetAddress(useFullAddress?: boolean): string; + function streetSuffix(): string; + function streetPrefix(): string; + function secondaryAddress(): string; + function county(): string; + function country(): string; + function countryCode(): string; + function state(useAbbr?: boolean): string; + function stateAbbr(): string; + function latitude(): string; + function longitude(): string; + } + + namespace commerce { + function color(): string; + function department(): string; + function productName(): string; + function price(min?: number, max?: number, dec?: number, symbol?: string): string; + function productAdjective(): string; + function productMaterial(): string; + function product(): string; + } + + namespace company { + function suffixes(): string[]; + function companyName(format?: number): string; + function companySuffix(): string; + function catchPhrase(): string; + function bs(): string; + function catchPhraseAdjective(): string; + function catchPhraseDescriptor(): string; + function catchPhraseNoun(): string; + function bsAdjective(): string; + function bsBuzz(): string; + function bsNoun(): string; + } + + namespace database { + function column(): string; + function type(): string; + function collation(): string; + function engine(): string; + } + + namespace date { + function past(years?: number, refDate?: string|Date): Date; + function future(years?: number, refDate?: string|Date): Date; + function between(from: string|number|Date, to: string|Date): Date; + function recent(days?: number): Date; + function soon(days?: number): Date; + function month(options?: { abbr?: boolean, context?: boolean }): string; + function weekday(options?: { abbr?: boolean, context?: boolean }): string; + } + + function fake(str: string): string; + + namespace finance { + function account(length?: number): string; + function accountName(): string; + function mask(length?: number, parens?: boolean, elipsis?: boolean): string; + function amount(min?: number, max?: number, dec?: number, symbol?: string): string; + function transactionType(): string; + function currencyCode(): string; + function currencyName(): string; + function currencySymbol(): string; + function bitcoinAddress(): string; + function ethereumAddress(): string; + function iban(formatted?: boolean): string; + function bic(): string; + } + + namespace hacker { + function abbreviation(): string; + function adjective(): string; + function noun(): string; + function verb(): string; + function ingverb(): string; + function phrase(): string; + } + + namespace helpers { + function randomize(array: T[]): T; + function randomize(): string; + function slugify(string?: string): string; + function replaceSymbolWithNumber(string?: string, symbol?: string): string; + function replaceSymbols(string?: string): string; + function shuffle(o: T[]): T[]; + function shuffle(): string[]; + function mustache(str: string, data: { [key: string]: string|((substring: string, ...args: any[]) => string) }): string; + function createCard(): I.Card; + function contextualCard(): I.ContextualCard; + function userCard(): I.UserCard; + function createTransaction(): I.Transaction; + } + + namespace image { + function image(): string; + function avatar(): string; + function imageUrl(width?: number, height?: number, category?: string): string; + function abstract(width?: number, height?: number): string; + function animals(width?: number, height?: number): string; + function business(width?: number, height?: number): string; + function cats(width?: number, height?: number): string; + function city(width?: number, height?: number): string; + function food(width?: number, height?: number): string; + function nightlife(width?: number, height?: number): string; + function fashion(width?: number, height?: number): string; + function people(width?: number, height?: number): string; + function nature(width?: number, height?: number): string; + function sports(width?: number, height?: number): string; + function technics(width?: number, height?: number): string; + function transport(width?: number, height?: number): string; + function dataUri(width?: number, height?: number): string; + } + + namespace internet { + function avatar(): string; + function email(firstName?: string, lastName?: string, provider?: string): string; + function exampleEmail(firstName?: string, lastName?: string): string; + function userName(firstName?: string, lastName?: string): string; + function protocol(): string; + function url(): string; + function domainName(): string; + function domainSuffix(): string; + function domainWord(): string; + function ip(): string; + function ipv6(): string; + function userAgent(): string; + function color(baseRed255?: number, baseGreen255?: number, baseBlue255?: number): string; + function mac(): string; + function password(len?: number, memorable?: boolean, pattern?: string|RegExp, prefix?: string): string; + } + + namespace lorem { + function word(): string; + function words(num?: number): string; + function sentence(wordCount?: number, range?: number): string; + function slug(wordCount?: number): string; + function sentences(sentenceCount?: number): string; + function paragraph(sentenceCount?: number): string; + function paragraphs(paragraphCount?: number, separator?: string): string; + function text(times?: number): string; + function lines(lineCount?: number): string; + } + + namespace name { + function firstName(gender?: number): string; + function lastName(gender?: number): string; + function findName(firstName?: string, lastName?: string, gender?: number): string; + function jobTitle(): string; + function prefix(): string; + function suffix(): string; + function title(): string; + function jobDescriptor(): string; + function jobArea(): string; + function jobType(): string; + } + + namespace phone { + function phoneNumber(format?: string): string; + function phoneNumberFormat(phoneFormatsArrayIndex?: number): string; + function phoneFormats(): string; + } + + namespace random { + function number(max: number): number; + function number(options?: { min?: number, max?: number, precision?: number }): number; + function arrayElement(): string; + function arrayElement(array: T[]): T; + function objectElement(object?: { [key: string]: any }, field?: "key"): string; + function objectElement(object?: { [key: string]: T }, field?: any): T; + function uuid(): string; + function boolean(): boolean; + function word(type?: string): string; + function words(count?: number): string; + function image(): string; + function locale(): string; + function alphaNumeric(count?: number): string; + function hexaDecimal(count?: number): string; + } + + namespace system { + function fileName(ext: string, type: string): string; + function commonFileName(ext: string, type: string): string; + function mimeType(): string; + function commonFileType(): string; + function commonFileExt(): string; + function fileType(): string; + function fileExt(mimeType: string): string; + function directoryPath(): string; + function filePath(): string; + function semver(): string; + } + + function seed(value: number): void; + + namespace I { + type Locale = + | "az" + | "cz" + | "de" + | "de_AT" + | "de_CH" + | "el" + | "en" + | "en_AU" + | "en_BORK" + | "en_CA" + | "en_GB" + | "en_IE" + | "en_IND" + | "en_US" + | "en_au_ocker" + | "es" + | "es_MX" + | "fa" + | "fr" + | "fr_CA" + | "ge" + | "id_ID" + | "it" + | "ja" + | "ko" + | "lv" + | "nb_NO" + | "nep" + | "nl" + | "nl_BE" + | "pl" + | "pt_BR" + | "ro" + | "ru" + | "sk" + | "sv" + | "tr" + | "uk" + | "vi" + | "zh_CN" + | "zh_TW"; + } + + function getLocale(): I.Locale; + + function setLocale(locale: I.Locale): void; + } +} diff --git a/types/adone/glosses/is.d.ts b/types/adone/glosses/is.d.ts index 7df9559524..9065da138b 100644 --- a/types/adone/glosses/is.d.ts +++ b/types/adone/glosses/is.d.ts @@ -227,13 +227,13 @@ declare namespace adone { /** * Checks whether the given object is a function */ - function _function(obj: any): boolean; + function _function(obj: any): obj is (...args: any[]) => any; export { _function as function }; /** * Checks whether the given object is an async function */ - export function asyncFunction(obj: any): boolean; + export function asyncFunction(obj: any): obj is (...args: any[]) => Promise; /** * Checks whether the given object is a promise @@ -672,5 +672,9 @@ declare namespace adone { * Checks whether the given object is a valid UUID identifier (v1, v2, v3, v4 or v5) */ export function uuid(obj: any, version?: "all"): obj is string; + + export function emitter(obj: any): obj is event.Emitter; + + export function asyncEmitter(obj: any): obj is event.AsyncEmitter; } } diff --git a/types/adone/index.d.ts b/types/adone/index.d.ts index ad0645f04d..5d22ac1bfd 100644 --- a/types/adone/index.d.ts +++ b/types/adone/index.d.ts @@ -8,12 +8,13 @@ /// /// /// -/// +/// /// /// /// /// /// +/// /// /// /// diff --git a/types/adone/test/glosses/collections.ts b/types/adone/test/glosses/collections.ts deleted file mode 100644 index ec227d4440..0000000000 --- a/types/adone/test/glosses/collections.ts +++ /dev/null @@ -1,1003 +0,0 @@ -namespace collectionTests { - const { collection } = adone; - - namespace linkedListTests { - const { LinkedList } = collection; - - namespace creation { - new LinkedList(); - new LinkedList(10); - } - - namespace properties { - { const a: boolean = new LinkedList().full; } - { const a: boolean = new LinkedList().empty; } - { const a: number = new LinkedList().maxLength; } - { const a: number = new LinkedList().length; } - { const a: boolean = new LinkedList().autoresize; } - } - - namespace resize { - { const a: boolean = new LinkedList().resize(100).full; } - } - - namespace push { - const a = new LinkedList().push(10); - a.next; - a.prev; - const b: number = a.value; - } - - namespace pop { - const a: number | undefined = new LinkedList().pop(); - } - - namespace shift { - const a: number | undefined = new LinkedList().shift(); - } - - namespace unshift { - const a = new LinkedList().unshift("hello"); - a.next; - a.prev; - const b: string = a.value; - } - - namespace pushNode { - const a = new LinkedList(); - const node = a.push("1230"); - a.pushNode(node); - } - - namespace unshiftNode { - const a = new LinkedList(); - const node = a.push(10); - a.unshiftNode(node); - } - - namespace removeNode { - const a = new LinkedList(); - const node = a.unshift("10"); - a.removeNode(node); - } - - namespace clear { - new LinkedList().clear(); - new LinkedList().clear(true); - } - - namespace toArray { - const a = new LinkedList(); - const b: number[] = a.toArray(); - } - - namespace front { - const a = new LinkedList(); - const b: number = a.front; - } - - namespace back { - const a = new LinkedList(); - const b: number = a.back; - } - - namespace iterating { - const a = new LinkedList(); - for (const b of a) { - const i: string = b; - } - const c = new LinkedList(); - for (const b of c) { - const i: number = b; - } - } - - namespace nextNode { - const a = new LinkedList(); - const n1 = a.push("h"); - const n2 = a.nextNode(n1); - n1.next; - n1.prev; - const t: string = n1.value; - } - - namespace map { - const a = new LinkedList(); - const f = (a: number, idx: number) => `${a}${idx}`; - const b = a.map(f); - const c: string = b.front; - } - - namespace forEach { - const a = new LinkedList(); - - a.forEach((a: number, b: number) => { - const c = a + b; - }); - } - - namespace static { - const a: number = LinkedList.DEFAULT_LENGTH; - } - } - - namespace ByteArrayTests { - const { ByteArray } = collection; - - new ByteArray(); - new ByteArray(10); - new ByteArray(10, true); - - const buffer = new ByteArray(); - - namespace readBitSet { - const a: boolean[] = buffer.readBitSet(); - const b: boolean[] = buffer.readBitSet(10); - } - - namespace read { - const a: adone.collection.ByteArray = buffer.read(1); - const b: adone.collection.ByteArray = buffer.read(1, 10); - } - - namespace readInt8 { - const a: number = buffer.readInt8(); - const b: number = buffer.readInt8(10); - } - - namespace readUInt8 { - const a: number = buffer.readUInt8(); - const b: number = buffer.readUInt8(10); - } - - namespace readInt16LE { - const a: number = buffer.readInt16LE(); - const b: number = buffer.readInt16LE(10); - } - - namespace readUInt16LE { - const a: number = buffer.readUInt16LE(); - const b: number = buffer.readUInt16LE(10); - } - - namespace readInt16BE { - const a: number = buffer.readInt16BE(); - const b: number = buffer.readInt16BE(10); - } - - namespace readUInt16BE { - const a: number = buffer.readUInt16BE(); - const b: number = buffer.readUInt16BE(10); - } - - namespace readInt32LE { - const a: number = buffer.readInt32LE(); - const b: number = buffer.readInt32LE(10); - } - - namespace readUInt32LE { - const a: number = buffer.readUInt32LE(); - const b: number = buffer.readUInt32LE(10); - } - - namespace readInt32BE { - const a: number = buffer.readInt32BE(); - const b: number = buffer.readInt32BE(10); - } - - namespace readUInt32BE { - const a: number = buffer.readUInt32BE(); - const b: number = buffer.readUInt32BE(10); - } - - namespace readInt64LE { - const a: adone.math.Long = buffer.readInt64LE(); - const b: adone.math.Long = buffer.readInt64LE(10); - } - - namespace readUInt64LE { - const a: adone.math.Long = buffer.readUInt64LE(); - const b: adone.math.Long = buffer.readUInt64LE(10); - } - - namespace readInt64BE { - const a: adone.math.Long = buffer.readInt64BE(); - const b: adone.math.Long = buffer.readInt64BE(10); - } - - namespace readUInt64BE { - const a: adone.math.Long = buffer.readUInt64BE(); - const b: adone.math.Long = buffer.readUInt64BE(10); - } - - namespace readFloatLE { - const a: number = buffer.readFloatLE(); - const b: number = buffer.readFloatLE(10); - } - - namespace readFloatBE { - const a: number = buffer.readFloatBE(); - const b: number = buffer.readFloatBE(10); - } - - namespace readDoubleLE { - const a: number = buffer.readDoubleLE(); - const b: number = buffer.readDoubleLE(10); - } - - namespace readDoubleBE { - const a: number = buffer.readDoubleBE(); - const b: number = buffer.readDoubleBE(10); - } - - namespace write { - const a: adone.collection.ByteArray = buffer.write("1"); - const b: adone.collection.ByteArray = buffer.write(new ByteArray()); - const c: adone.collection.ByteArray = buffer.write(Buffer.alloc(10)); - const d: adone.collection.ByteArray = buffer.write(new Uint8Array([1, 2, 3])); - const e: adone.collection.ByteArray = buffer.write(new ArrayBuffer(10)); - const f: adone.collection.ByteArray = buffer.write("1", 10); - const g: adone.collection.ByteArray = buffer.write("1", 10, 10); - const h: adone.collection.ByteArray = buffer.write("1", 10, 10, "utf8"); - } - - namespace writeBitSet { - const a: adone.collection.ByteArray = buffer.writeBitSet([1, 2, 3]); - const b: number = buffer.writeBitSet([1, 2, 3], 10); - } - - namespace writeInt8 { - const a: adone.collection.ByteArray = buffer.writeInt8(10); - const b: adone.collection.ByteArray = buffer.writeInt8(10, 10); - } - - namespace writeUInt8 { - const a: adone.collection.ByteArray = buffer.writeUInt8(10); - const b: adone.collection.ByteArray = buffer.writeUInt8(10, 10); - } - - namespace writeInt16LE { - const a: adone.collection.ByteArray = buffer.writeInt16LE(10); - const b: adone.collection.ByteArray = buffer.writeInt16LE(10, 10); - } - - namespace writeInt16BE { - const a: adone.collection.ByteArray = buffer.writeInt16BE(10); - const b: adone.collection.ByteArray = buffer.writeInt16BE(10, 10); - } - - namespace writeUInt16LE { - const a: adone.collection.ByteArray = buffer.writeUInt16LE(10); - const b: adone.collection.ByteArray = buffer.writeUInt16LE(10, 10); - } - - namespace writeUInt16BE { - const a: adone.collection.ByteArray = buffer.writeUInt16BE(10); - const b: adone.collection.ByteArray = buffer.writeUInt16BE(10, 10); - } - - namespace writeInt32LE { - const a: adone.collection.ByteArray = buffer.writeInt32LE(10); - const b: adone.collection.ByteArray = buffer.writeInt32LE(10, 10); - } - - namespace writeInt32BE { - const a: adone.collection.ByteArray = buffer.writeInt32BE(10); - const b: adone.collection.ByteArray = buffer.writeInt32BE(10, 10); - } - - namespace writeUInt32LE { - const a: adone.collection.ByteArray = buffer.writeUInt32LE(10); - const b: adone.collection.ByteArray = buffer.writeUInt32LE(10, 10); - } - - namespace writeUInt32BE { - const a: adone.collection.ByteArray = buffer.writeUInt32BE(10); - const b: adone.collection.ByteArray = buffer.writeUInt32BE(10, 10); - } - - namespace writeInt64LE { - const a: adone.collection.ByteArray = buffer.writeInt64LE(10); - const b: adone.collection.ByteArray = buffer.writeInt64LE(10, 10); - } - - namespace writeInt64BE { - const a: adone.collection.ByteArray = buffer.writeInt64BE(10); - const b: adone.collection.ByteArray = buffer.writeInt64BE(10, 10); - } - - namespace writeUInt64LE { - const a: adone.collection.ByteArray = buffer.writeUInt64LE(10); - const b: adone.collection.ByteArray = buffer.writeUInt64LE(10, 10); - } - - namespace writeUInt64BE { - const a: adone.collection.ByteArray = buffer.writeUInt64BE(10); - const b: adone.collection.ByteArray = buffer.writeUInt64BE(10, 10); - } - - namespace writeFloatLE { - const a: adone.collection.ByteArray = buffer.writeFloatLE(10); - const b: adone.collection.ByteArray = buffer.writeFloatLE(10, 10); - } - - namespace writeFloatBE { - const a: adone.collection.ByteArray = buffer.writeFloatBE(10); - const b: adone.collection.ByteArray = buffer.writeFloatBE(10, 10); - } - - namespace writeDoubleLE { - const a: adone.collection.ByteArray = buffer.writeDoubleLE(10); - const b: adone.collection.ByteArray = buffer.writeDoubleLE(10, 10); - } - - namespace writeDoubleBE { - const a: adone.collection.ByteArray = buffer.writeDoubleBE(10); - const b: adone.collection.ByteArray = buffer.writeDoubleBE(10, 10); - } - - namespace writeVarInt32 { - const a: adone.collection.ByteArray = buffer.writeVarint32(10); - const b: number = buffer.writeVarint32(10, 10); - } - - namespace writeVarInt32ZigZag { - const a: adone.collection.ByteArray = buffer.writeVarint32ZigZag(10); - const b: number = buffer.writeVarint32ZigZag(10, 10); - } - - namespace readVarint32 { - const a: number = buffer.readVarint32(); - const b: { value: number, length: number } = buffer.readVarint32(10); - } - - namespace readVarint32ZigZag { - const a: number = buffer.readVarint32ZigZag(); - const b: { value: number, length: number } = buffer.readVarint32ZigZag(10); - } - - namespace writeVarint64 { - const a: adone.collection.ByteArray = buffer.writeVarint64(10); - const b: number = buffer.writeVarint64(10, 10); - } - - namespace writeVarint64ZigZag { - const a: adone.collection.ByteArray = buffer.writeVarint64ZigZag(10); - const b: number = buffer.writeVarint64ZigZag(10, 10); - } - - namespace readVarint64 { - const a: adone.math.Long = buffer.readVarint64(); - const b: { value: adone.math.Long, length: number } = buffer.readVarint64(10); - } - - namespace readVarint64ZigZag { - const a: adone.math.Long = buffer.readVarint64ZigZag(); - const b: { value: adone.math.Long, length: number } = buffer.readVarint64ZigZag(10); - } - - namespace writeCString { - const a: adone.collection.ByteArray = buffer.writeCString("asd"); - const b: number = buffer.writeCString("123", 10); - } - - namespace readCString { - const a: string = buffer.readCString(); - const b: { string: string, length: number } = buffer.readCString(10); - } - - namespace writeString { - const a: adone.collection.ByteArray = buffer.writeString("abc"); - const b: number = buffer.writeString("abc", 10); - } - - namespace readString { - const a: string = buffer.readString(10); - const b: string = buffer.readString(10, "b"); - const c: string = buffer.readString(10, "c"); - const d: { string: string, length: number } = buffer.readString(10, "c", 10); - } - - namespace writeVString { - const a: adone.collection.ByteArray = buffer.writeVString("abc"); - const b: number = buffer.writeVString("abc", 10); - } - - namespace readVString { - const a: string = buffer.readVString(); - const b: { string: string, length: number } = buffer.readVString(10); - } - - namespace appendTo { - const a: adone.collection.ByteArray = buffer.appendTo(new ByteArray()); - const b: adone.collection.ByteArray = buffer.appendTo(new ByteArray(), 10); - } - - namespace assert { - const a: adone.collection.ByteArray = buffer.assert(); - const b: adone.collection.ByteArray = buffer.assert(true); - } - - namespace capacity { - const a: number = buffer.capacity(); - } - - namespace clear { - const a: adone.collection.ByteArray = buffer.clear(); - } - - namespace copy { - const a: adone.collection.ByteArray = buffer.clone(); - const c: adone.collection.ByteArray = buffer.clone(true); - } - - namespace compact { - const a: adone.collection.ByteArray = buffer.compact(); - const b: adone.collection.ByteArray = buffer.compact(1); - const c: adone.collection.ByteArray = buffer.compact(1, 10); - } - - namespace copyTo { - const a: adone.collection.ByteArray = buffer.copyTo(new ByteArray()); - const b: adone.collection.ByteArray = buffer.copyTo(new ByteArray(), 0); - const c: adone.collection.ByteArray = buffer.copyTo(new ByteArray(), 0, 0); - const d: adone.collection.ByteArray = buffer.copyTo(new ByteArray(), 0, 0, 10); - } - - namespace ensureCapacity { - const a: adone.collection.ByteArray = buffer.ensureCapacity(10); - } - - namespace fill { - const a: adone.collection.ByteArray = buffer.fill("0"); - const b: adone.collection.ByteArray = buffer.fill(0); - const c: adone.collection.ByteArray = buffer.fill(0, 0); - const d: adone.collection.ByteArray = buffer.fill(0, 0, 10); - } - - namespace flip { - const a: adone.collection.ByteArray = buffer.flip(); - } - - namespace mark { - const a: adone.collection.ByteArray = buffer.mark(); - const b: adone.collection.ByteArray = buffer.mark(10); - } - - namespace prepend { - const a: adone.collection.ByteArray = buffer.prepend(""); - const b: adone.collection.ByteArray = buffer.prepend(new ByteArray()); - const c: adone.collection.ByteArray = buffer.prepend(Buffer.alloc(10)); - const d: adone.collection.ByteArray = buffer.prepend(new Uint8Array([1, 2, 3])); - const e: adone.collection.ByteArray = buffer.prepend(new ArrayBuffer(10)); - const f: adone.collection.ByteArray = buffer.prepend("", "utf8"); - const g: adone.collection.ByteArray = buffer.prepend("", "utf8", 10); - const h: adone.collection.ByteArray = buffer.prepend("", 10); - } - - namespace prependTo { - const a: adone.collection.ByteArray = buffer.prependTo(new ByteArray()); - const b: adone.collection.ByteArray = buffer.prependTo(new ByteArray(), 10); - } - - namespace remaining { - const a: number = buffer.remaining(); - } - - namespace reset { - const a: adone.collection.ByteArray = buffer.reset(); - } - - namespace resize { - const a: adone.collection.ByteArray = buffer.resize(10); - } - - namespace reverse { - const a: adone.collection.ByteArray = buffer.reverse(); - const b: adone.collection.ByteArray = buffer.reverse(1); - const c: adone.collection.ByteArray = buffer.reverse(1, 10); - } - - namespace skip { - const a: adone.collection.ByteArray = buffer.skip(10); - } - - namespace slice { - const a: adone.collection.ByteArray = buffer.slice(); - const b: adone.collection.ByteArray = buffer.slice(1); - const c: adone.collection.ByteArray = buffer.slice(1, 10); - } - - namespace toBuffer { - const a: Buffer = buffer.toBuffer(); - const b: Buffer = buffer.toBuffer(true); - const c: Buffer = buffer.toBuffer(true, 0); - const d: Buffer = buffer.toBuffer(true, 0, 10); - } - - namespace toArrayBuffer { - const a: ArrayBuffer = buffer.toArrayBuffer(); - } - - namespace toString { - const a: string = buffer.toString(); - const b: string = buffer.toString("utf8"); - const c: string = buffer.toString("utf8", 0); - const d: string = buffer.toString("utf8", 0, 10); - } - - namespace toBase64 { - const a: string = buffer.toBase64(); - const b: string = buffer.toBase64(0); - const c: string = buffer.toBase64(0, 10); - } - - namespace toBinary { - const a: string = buffer.toBinary(); - const b: string = buffer.toBinary(0); - const c: string = buffer.toBinary(0, 10); - } - - namespace toDebug { - const a: string = buffer.toDebug(); - const b: string = buffer.toDebug(true); - } - - namespace toUTF8 { - const a: string = buffer.toUTF8(); - const b: string = buffer.toUTF8(0); - const c: string = buffer.toUTF8(0, 10); - } - - namespace static { - namespace accessor { - const a: typeof Buffer = ByteArray.accessor(); - } - - namespace allocate { - const a: adone.collection.ByteArray = ByteArray.allocate(); - const b: adone.collection.ByteArray = ByteArray.allocate(10); - const c: adone.collection.ByteArray = ByteArray.allocate(10, true); - } - - namespace concat { - const a: adone.collection.ByteArray = ByteArray.concat([ - new ByteArray(), - Buffer.alloc(10), - new Uint8Array([1, 2, 3]), - new ArrayBuffer(10) - ]); - const b: adone.collection.ByteArray = ByteArray.concat([ - new ByteArray(), - Buffer.alloc(10), - new Uint8Array([1, 2, 3]), - new ArrayBuffer(10) - ], "utf8"); - const c: adone.collection.ByteArray = ByteArray.concat([ - new ByteArray(), - Buffer.alloc(10), - new Uint8Array([1, 2, 3]), - new ArrayBuffer(10) - ], "utf8", true); - } - - namespace type { - const a: typeof Buffer = ByteArray.type(); - } - - namespace wrap { - const a: adone.collection.ByteArray = ByteArray.wrap(""); - const b: adone.collection.ByteArray = ByteArray.wrap(new ByteArray()); - const c: adone.collection.ByteArray = ByteArray.wrap(Buffer.alloc(10)); - const d: adone.collection.ByteArray = ByteArray.wrap(new Uint8Array([1, 2, 3])); - const e: adone.collection.ByteArray = ByteArray.wrap(new ArrayBuffer(10)); - const f: adone.collection.ByteArray = ByteArray.wrap("", "utf8"); - const g: adone.collection.ByteArray = ByteArray.wrap("", "utf8", true); - } - - namespace calculateVarint32 { - const a: number = ByteArray.calculateVarint32(10); - } - - namespace zigZagEncode32 { - const a: number = ByteArray.zigZagEncode32(10); - } - - namespace zigZagDecode32 { - const a: number = ByteArray.zigZagDecode32(10); - } - - namespace calculateVarint64 { - const a: number = ByteArray.calculateVarint64(10); - const b: number = ByteArray.calculateVarint64("10"); - } - - namespace zigZagEncode64 { - const a: adone.math.Long = ByteArray.zigZagEncode64(10); - const b: adone.math.Long = ByteArray.zigZagEncode64("10"); - const c: adone.math.Long = ByteArray.zigZagEncode64(adone.math.Long.fromValue(10)); - } - - namespace zigZagDecode64 { - const a: adone.math.Long = ByteArray.zigZagDecode64(10); - const b: adone.math.Long = ByteArray.zigZagDecode64("10"); - const c: adone.math.Long = ByteArray.zigZagDecode64(adone.math.Long.fromValue(10)); - } - - namespace calculateUTF8Chars { - const a: number = ByteArray.calculateUTF8Chars("123"); - } - - namespace calculateString { - const a: number = ByteArray.calculateString("123"); - } - - namespace fromBase64 { - const a: adone.collection.ByteArray = ByteArray.fromBase64("123"); - } - - namespace btoa { - const a: string = ByteArray.btoa("123"); - } - - namespace atob { - const a: string = ByteArray.atob("123"); - } - - namespace fromBinary { - const a: adone.collection.ByteArray = ByteArray.fromBinary("123"); - } - - namespace fromDebug { - const a: adone.collection.ByteArray = ByteArray.fromDebug("12"); - const b: adone.collection.ByteArray = ByteArray.fromDebug("12", true); - } - - namespace fromHex { - const a: adone.collection.ByteArray = ByteArray.fromHex("192"); - const b: adone.collection.ByteArray = ByteArray.fromHex("192", true); - } - - namespace fromUTF8 { - const a: adone.collection.ByteArray = ByteArray.fromUTF8("123"); - const b: adone.collection.ByteArray = ByteArray.fromUTF8("123", true); - } - - namespace constants { - const a: number = ByteArray.DEFAULT_CAPACITY; - const b: boolean = ByteArray.DEFAULT_NOASSERT; - const c: number = ByteArray.MAX_VARINT32_BYTES; - const d: number = ByteArray.MAX_VARINT64_BYTES; - const e: string = ByteArray.METRICS_CHARS; - const f: string = ByteArray.METRICS_BYTES; - } - } - } - - namespace queueTests { - const { Queue } = collection; - type Queue = adone.collection.Queue; - - new Queue(); - { const a: Queue = new Queue().push(123).push(123); } - { const a: number | undefined = new Queue().push(123).pop(); } - { const a: string | undefined = new Queue().push(123).pop(); } - { const a: boolean = new Queue().full; } - { const a: number = new Queue().length; } - { const a: boolean = new Queue().empty; } - } - - namespace asyncQueueTests { - const { AsyncQueue } = collection; - type AsyncQueue = adone.collection.AsyncQueue; - - { const a: AsyncQueue = new AsyncQueue().push(123); } - { const a: Promise = new AsyncQueue().push(123).pop(); } - } - - namespace priorityQueueTests { - const { PriorityQueue } = collection; - type PriorityQueue = adone.collection.PriorityQueue; - - { const a: boolean = new PriorityQueue().empty; } - { const a: number = new PriorityQueue().length; } - new PriorityQueue(); - new PriorityQueue({}); - new PriorityQueue({ - compare(a: number, b: number) { - return a - b; - } - }); - new PriorityQueue({ - priority(a: string, b: string) { - return a.length - b.length; - } - }); - { const a: PriorityQueue = new PriorityQueue().clone(); } - { const a: PriorityQueue = new PriorityQueue().push("123"); } - { const a: string | undefined = new PriorityQueue().pop(); } - { const a: PriorityQueue = new PriorityQueue().delete("123"); } - { const a: PriorityQueue = new PriorityQueue().delete("123"); } - { const a: string = new PriorityQueue().replace("123"); } - { const a: string = new PriorityQueue().pushpop("123"); } - { const a: string[] = new PriorityQueue().toArray(); } - { const a: PriorityQueue = PriorityQueue.from(["1"]); } - { const a: PriorityQueue = PriorityQueue.from(["1"], {}); } - { const a: PriorityQueue = PriorityQueue.from(["1"], { compare: (a: string, b: string) => a.length - b.length }); } - { const a: PriorityQueue = PriorityQueue.from(["1"], { priority: (a: string, b: string) => a.length - b.length }); } - } - - namespace fastlruTests { - const { FastLRU } = collection; - - new FastLRU(); - new FastLRU(100); - new FastLRU(100, { dispose: (key: string, value: number) => null }); - { const a: number = new FastLRU().size; } - { const a: number | undefined = new FastLRU().get("key"); } - new FastLRU().set("key", 123); - { const a: boolean = new FastLRU().delete("key"); } - { const a: boolean = new FastLRU().has("key"); } - { const a: string[] = [...new FastLRU().keys()]; } - { const a: number[] = [...new FastLRU().values()]; } - { const a: number[] = [...new FastLRU().values()]; } - { const a: Array<[string, number]> = [...new FastLRU().entries()]; } - new FastLRU().clear(); - } - - namespace stackTests { - const { Stack } = collection; - type Stack = adone.collection.Stack; - - { const a: boolean = new Stack().empty; } - { const a: number = new Stack().top; } - { const a: Stack = new Stack().push(123); } - { const a: number | undefined = new Stack().pop(); } - { const a: number[] = [...new Stack()]; } - { const a: Stack = Stack.from([1, 2, 3]); } - } - - namespace binarySearchTreeTests { - const { BinarySearchTree } = collection; - type BinarySearchTree = adone.collection.BinarySearchTree; - - new BinarySearchTree(); - new BinarySearchTree({}); - new BinarySearchTree({ checkValueEquality: (a: number, b: number) => a === b }); - new BinarySearchTree({ compareKeys: (a: string, b: string) => a.length - b.length }); - new BinarySearchTree({ parent: new BinarySearchTree() }); - new BinarySearchTree({ unique: true }); - new BinarySearchTree({ value: 123 }); - { const a: BinarySearchTree = new BinarySearchTree().getMaxKeyDescendant(); } - { const a: string = new BinarySearchTree().getMaxKey(); } - { const a: BinarySearchTree = new BinarySearchTree().getMinKeyDescendant(); } - { const a: string = new BinarySearchTree().getMinKey(); } - new BinarySearchTree().checkAllNodesFullfillCondition((key: string, value: number) => null); - new BinarySearchTree().checkIsBST(); - { const a: number = new BinarySearchTree().getNumberOfKeys(); } - new BinarySearchTree().insert("asd", 123); - { const a: number[] = new BinarySearchTree().search("asd"); } - { const a: number[] = new BinarySearchTree().betweenBounds({ $gt: "" }); } - { const a: number[] = new BinarySearchTree().betweenBounds({ $lt: "" }); } - { const a: number[] = new BinarySearchTree().betweenBounds({ $lte: "" }); } - { const a: number[] = new BinarySearchTree().betweenBounds({ $gte: "" }); } - new BinarySearchTree().delete("key"); - new BinarySearchTree().delete("key", 123); - new BinarySearchTree().executeOnEveryNode((tree: BinarySearchTree) => null); - new BinarySearchTree().prettyPrint(); - new BinarySearchTree().prettyPrint(true); - new BinarySearchTree().prettyPrint(true, " "); - } - - namespace avlTreeTests { - const { AVLTree } = collection; - type AVLTree = adone.collection.AVLTree; - - new AVLTree(); - new AVLTree({ checkValueEquality: (a: number, b: number) => a === b }); - new AVLTree({ compareKeys: (a: string, b: string) => a.length - b.length }); - new AVLTree({ parent: new AVLTree() }); - new AVLTree({ unique: false }); - new AVLTree({ value: 123 }); - new AVLTree().checkIsAVLT(); - new AVLTree().insert("123", 123); - new AVLTree().delete("123"); - new AVLTree().delete("123", 123); - { const a: number = new AVLTree().getNumberOFKeys(); } - { const a: number[] = new AVLTree().search("key"); } - { const a: number[] = new AVLTree().betweenBounds({}); } - { const a: number[] = new AVLTree().betweenBounds({ $gt: "ads" }); } - { const a: number[] = new AVLTree().betweenBounds({ $lt: "ads" }); } - { const a: number[] = new AVLTree().betweenBounds({ $gte: "ads" }); } - { const a: number[] = new AVLTree().betweenBounds({ $lte: "ads" }); } - new AVLTree().executeOnEveryNode((tree: AVLTree) => null); - } - - namespace redBlackTreeTests { - const { RedBlackTree } = collection; - type RedBlackTree = adone.collection.RedBlackTree; - type RedBlackTreeIterator = adone.collection.I.RedBlackTree.Iterator; - type RedBlackTreeNode = adone.collection.I.RedBlackTree.Node; - - new RedBlackTree(); - new RedBlackTree((a: string, b: string) => a.length - b.length); - new RedBlackTree(undefined, new RedBlackTree()); - { const a: string[] = new RedBlackTree().keys; } - { const a: number[] = new RedBlackTree().values; } - { const a: number = new RedBlackTree().length; } - { - const a: RedBlackTreeIterator = new RedBlackTree().begin; - { const b: boolean = a.valid; } - { const b: RedBlackTreeNode | null = a.node; } - { const b: string | undefined = a.key; } - { const b: number | undefined = a.value; } - { const b: number = a.index; } - { const b: boolean = a.hasNext; } - { const b: boolean = a.hasPrev; } - { const b: RedBlackTree = a.tree; } - { const b: RedBlackTreeIterator = a.clone(); } - { const b: RedBlackTree = a.remove(); } - a.next(); - { const b: RedBlackTree = a.update(333); } - a.prev(); - } - { const a: RedBlackTreeIterator = new RedBlackTree().end; } - { const a: RedBlackTree = new RedBlackTree().insert("123", 456); } - { const a: number = new RedBlackTree().forEach((key: string, value: number) => value); } - { const a: number = new RedBlackTree().forEach((key: string, value: number) => value, "1"); } - { const a: number = new RedBlackTree().forEach((key: string, value: number) => value, "1", "2"); } - { const a: RedBlackTreeIterator = new RedBlackTree().at(1); } - { const a: RedBlackTreeIterator = new RedBlackTree().ge("1"); } - { const a: RedBlackTreeIterator = new RedBlackTree().gt("1"); } - { const a: RedBlackTreeIterator = new RedBlackTree().lt("1"); } - { const a: RedBlackTreeIterator = new RedBlackTree().le("1"); } - { const a: RedBlackTreeIterator | null = new RedBlackTree().find("1"); } - { const a: RedBlackTree = new RedBlackTree().remove("1"); } - { const a: RedBlackTree = new RedBlackTree().remove("1"); } - { const a: number | undefined = new RedBlackTree().get("1"); } - } - - namespace arraySetTests { - const { ArraySet } = collection; - type ArraySet = adone.collection.ArraySet; - - new ArraySet(); - { const a: number = new ArraySet().length; } - { const a: ArraySet = new ArraySet().add("hello"); } - { const a: ArraySet = new ArraySet().add("hello", true); } - { const a: boolean = new ArraySet().has("string"); } - { const a: number = new ArraySet().indexOf("hello"); } - { const a: string[] = new ArraySet().toArray(); } - { const a: ArraySet = ArraySet.from([1]); } - { const a: ArraySet = ArraySet.from([1], true); } - } - - namespace bufferListTests { - const { BufferList } = collection; - type BufferList = adone.collection.BufferList; - - new BufferList(); - new BufferList(Buffer.from("123")); - new BufferList("123"); - new BufferList(123); - new BufferList([Buffer.from("123"), "123", 123]); - new BufferList((err: any, data: Buffer) => null); - new BufferList().append(Buffer.from("123")); - new BufferList().append("123"); - new BufferList().append(123); - new BufferList().append([Buffer.from("123"), "123", 123]); - new BufferList().end(Buffer.from("123")); - new BufferList().end(); - { const a: number = new BufferList().get(123); } - { const a: Buffer = new BufferList().slice(); } - { const a: Buffer = new BufferList().slice(1); } - { const a: Buffer = new BufferList().slice(1, 2); } - { const a: Buffer = new BufferList().copy(Buffer.alloc(100)); } - { const a: Buffer = new BufferList().copy(Buffer.alloc(100), 0); } - { const a: Buffer = new BufferList().copy(Buffer.alloc(100), 0, 1); } - { const a: Buffer = new BufferList().copy(Buffer.alloc(100), 0, 1, 2); } - { const a: BufferList = new BufferList().shallowSlice(); } - { const a: BufferList = new BufferList().shallowSlice(1); } - { const a: BufferList = new BufferList().shallowSlice(1, 2); } - { const a: string = new BufferList().toString(); } - { const a: string = new BufferList().toString("utf8"); } - { const a: string = new BufferList().toString("utf8", 1); } - { const a: string = new BufferList().toString("utf8", 1, 2); } - { const a: BufferList = new BufferList().consume(10); } - { const a: BufferList = new BufferList().duplicate(); } - new BufferList().destroy(); - new BufferList().then((x: Buffer) => null); - new BufferList().catch((err: any) => null); - } - - namespace defaultMapTests { - const { DefaultMap } = collection; - type DefaultMap = adone.collection.DefaultMap; - - new DefaultMap(); - { const a: DefaultMap = new DefaultMap(undefined, [["1", 2]]); } - { const a: DefaultMap = new DefaultMap((key: string) => 123); } - { const a: DefaultMap = new DefaultMap({ a: 123 }); } - } - - namespace lruTests { - const { LRU } = collection; - type LRU = adone.collection.LRU; - - new LRU(); - new LRU(100); - new LRU({}); - new LRU({ max: 100 }); - new LRU({ dispose: (key: string, value: number) => null }); - new LRU({ maxAge: 100 }); - new LRU({ noDisposeOnSet: false }); - new LRU({ stale: true }); - { const a: number = new LRU().max; } - { new LRU().max = 100; } - { const a: boolean = new LRU().allowStale; } - { new LRU().allowStale = false; } - { const a: number = new LRU().maxAge; } - { new LRU().maxAge = 100; } - { const a: (v: number, k: string) => number = new LRU().lengthCalculator; } - { new LRU().lengthCalculator = () => 123; } - { const a: number = new LRU().length; } - { const a: number = new LRU().itemCount; } - new LRU().rforEach((value: number, key: string) => null); - new LRU().rforEach(function (value: number, key: string) { - const b: number = this.a; - }, { a: 1 }); - new LRU().forEach((value: number, key: string) => null); - new LRU().forEach(function (value: number, key: string) { - const b: number = this.a; - }, { a: 1 }); - { const a: string[] = new LRU().keys(); } - { const a: number[] = new LRU().values(); } - new LRU().reset(); - { - const a: Array> = new LRU().dump(); - const [b] = a; - { const c: number = b.e; } - { const c: string = b.key; } - { const c: number = b.value; } - } - { - const a: adone.collection.LinkedList> = new LRU().dumpLru(); - const b = a.shift(); - if (b !== undefined) { - { const a: string = b.key; } - { const a: number = b.value; } - { const a: number = b.now; } - { const a: number = b.maxAge; } - } - } - { const a: string = new LRU().inspect(); } - { const a: string = new LRU().inspect({}); } - { const a: boolean = new LRU().set("asd", 13); } - { const a: boolean = new LRU().set("asd", 13, 100500); } - { const a: boolean = new LRU().has("asd"); } - { const a: number | undefined = new LRU().get("asd"); } - { const a: number | undefined = new LRU().peek("asd"); } - { const a: adone.collection.I.LRU.Entry = new LRU().pop(); } - new LRU().del("asd"); - new LRU().load(new LRU().dump()); - new LRU().prune(); - } - - namespace timedoutMapTests { - const { TimedoutMap } = collection; - type TimedoutMap = adone.collection.TimedoutMap; - - new TimedoutMap(); - new TimedoutMap(1000); - new TimedoutMap(1000, (key: string) => null); - { - const a: TimedoutMap = new TimedoutMap().forEach((value: number, key: string) => null); - } - { - const a: TimedoutMap = new TimedoutMap().forEach(function (value: number, key: string) { - const a: number = this.a; - }, { a: 1 }); - } - { const a: boolean = new TimedoutMap().delete("123"); } - } -} diff --git a/types/adone/test/glosses/collections/array_set.ts b/types/adone/test/glosses/collections/array_set.ts new file mode 100644 index 0000000000..49fd8582ce --- /dev/null +++ b/types/adone/test/glosses/collections/array_set.ts @@ -0,0 +1,19 @@ +namespace adoneTests.collection.ArraySet { + const { + collection: { + ArraySet + } + } = adone; + + type ArraySet = adone.collection.ArraySet; + + new ArraySet(); + { const a: number = new ArraySet().length; } + { const a: ArraySet = new ArraySet().add("hello"); } + { const a: ArraySet = new ArraySet().add("hello", true); } + { const a: boolean = new ArraySet().has("string"); } + { const a: number = new ArraySet().indexOf("hello"); } + { const a: string[] = new ArraySet().toArray(); } + { const a: ArraySet = ArraySet.from([1]); } + { const a: ArraySet = ArraySet.from([1], true); } +} diff --git a/types/adone/test/glosses/collections/async_queue.ts b/types/adone/test/glosses/collections/async_queue.ts new file mode 100644 index 0000000000..43374e6d3a --- /dev/null +++ b/types/adone/test/glosses/collections/async_queue.ts @@ -0,0 +1,12 @@ +namespace adoneTests.collection.AsyncQueue { + const { + collection: { + AsyncQueue + } + } = adone; + + type AsyncQueue = adone.collection.AsyncQueue; + + { const a: AsyncQueue = new AsyncQueue().push(123); } + { const a: Promise = new AsyncQueue().push(123).pop(); } +} diff --git a/types/adone/test/glosses/collections/avl_tree.ts b/types/adone/test/glosses/collections/avl_tree.ts new file mode 100644 index 0000000000..9c032deb2d --- /dev/null +++ b/types/adone/test/glosses/collections/avl_tree.ts @@ -0,0 +1,28 @@ +namespace adoneTests.collection.AVLTree { + const { + collection: { + AVLTree + } + } = adone; + + type AVLTree = adone.collection.AVLTree; + + new AVLTree(); + new AVLTree({ checkValueEquality: (a: number, b: number) => a === b }); + new AVLTree({ compareKeys: (a: string, b: string) => a.length - b.length }); + new AVLTree({ parent: new AVLTree() }); + new AVLTree({ unique: false }); + new AVLTree({ value: 123 }); + new AVLTree().checkIsAVLT(); + new AVLTree().insert("123", 123); + new AVLTree().delete("123"); + new AVLTree().delete("123", 123); + { const a: number = new AVLTree().getNumberOFKeys(); } + { const a: number[] = new AVLTree().search("key"); } + { const a: number[] = new AVLTree().betweenBounds({}); } + { const a: number[] = new AVLTree().betweenBounds({ $gt: "ads" }); } + { const a: number[] = new AVLTree().betweenBounds({ $lt: "ads" }); } + { const a: number[] = new AVLTree().betweenBounds({ $gte: "ads" }); } + { const a: number[] = new AVLTree().betweenBounds({ $lte: "ads" }); } + new AVLTree().executeOnEveryNode((tree: AVLTree) => null); +} diff --git a/types/adone/test/glosses/collections/binary_search_tree.ts b/types/adone/test/glosses/collections/binary_search_tree.ts new file mode 100644 index 0000000000..56f9a28e72 --- /dev/null +++ b/types/adone/test/glosses/collections/binary_search_tree.ts @@ -0,0 +1,36 @@ +namespace adoneTests.collection.BinarySearchTree { + const { + collection: { + BinarySearchTree + } + } = adone; + + type BinarySearchTree = adone.collection.BinarySearchTree; + + new BinarySearchTree(); + new BinarySearchTree({}); + new BinarySearchTree({ checkValueEquality: (a: number, b: number) => a === b }); + new BinarySearchTree({ compareKeys: (a: string, b: string) => a.length - b.length }); + new BinarySearchTree({ parent: new BinarySearchTree() }); + new BinarySearchTree({ unique: true }); + new BinarySearchTree({ value: 123 }); + { const a: BinarySearchTree = new BinarySearchTree().getMaxKeyDescendant(); } + { const a: string = new BinarySearchTree().getMaxKey(); } + { const a: BinarySearchTree = new BinarySearchTree().getMinKeyDescendant(); } + { const a: string = new BinarySearchTree().getMinKey(); } + new BinarySearchTree().checkAllNodesFullfillCondition((key: string, value: number) => null); + new BinarySearchTree().checkIsBST(); + { const a: number = new BinarySearchTree().getNumberOfKeys(); } + new BinarySearchTree().insert("asd", 123); + { const a: number[] = new BinarySearchTree().search("asd"); } + { const a: number[] = new BinarySearchTree().betweenBounds({ $gt: "" }); } + { const a: number[] = new BinarySearchTree().betweenBounds({ $lt: "" }); } + { const a: number[] = new BinarySearchTree().betweenBounds({ $lte: "" }); } + { const a: number[] = new BinarySearchTree().betweenBounds({ $gte: "" }); } + new BinarySearchTree().delete("key"); + new BinarySearchTree().delete("key", 123); + new BinarySearchTree().executeOnEveryNode((tree: BinarySearchTree) => null); + new BinarySearchTree().prettyPrint(); + new BinarySearchTree().prettyPrint(true); + new BinarySearchTree().prettyPrint(true, " "); +} diff --git a/types/adone/test/glosses/collections/buffer_list.ts b/types/adone/test/glosses/collections/buffer_list.ts new file mode 100644 index 0000000000..265d54033f --- /dev/null +++ b/types/adone/test/glosses/collections/buffer_list.ts @@ -0,0 +1,42 @@ +namespace adoneTests.collection.BufferList { + const { + collection: { + BufferList + } + } = adone; + + type BufferList = adone.collection.BufferList; + + new BufferList(); + new BufferList(Buffer.from("123")); + new BufferList("123"); + new BufferList(123); + new BufferList([Buffer.from("123"), "123", 123]); + new BufferList((err: any, data: Buffer) => null); + new BufferList().append(Buffer.from("123")); + new BufferList().append("123"); + new BufferList().append(123); + new BufferList().append([Buffer.from("123"), "123", 123]); + new BufferList().end(Buffer.from("123")); + new BufferList().end(); + { const a: number = new BufferList().get(123); } + { const a: Buffer = new BufferList().slice(); } + { const a: Buffer = new BufferList().slice(1); } + { const a: Buffer = new BufferList().slice(1, 2); } + { const a: Buffer = new BufferList().copy(Buffer.alloc(100)); } + { const a: Buffer = new BufferList().copy(Buffer.alloc(100), 0); } + { const a: Buffer = new BufferList().copy(Buffer.alloc(100), 0, 1); } + { const a: Buffer = new BufferList().copy(Buffer.alloc(100), 0, 1, 2); } + { const a: BufferList = new BufferList().shallowSlice(); } + { const a: BufferList = new BufferList().shallowSlice(1); } + { const a: BufferList = new BufferList().shallowSlice(1, 2); } + { const a: string = new BufferList().toString(); } + { const a: string = new BufferList().toString("utf8"); } + { const a: string = new BufferList().toString("utf8", 1); } + { const a: string = new BufferList().toString("utf8", 1, 2); } + { const a: BufferList = new BufferList().consume(10); } + { const a: BufferList = new BufferList().duplicate(); } + new BufferList().destroy(); + new BufferList().then((x: Buffer) => null); + new BufferList().catch((err: any) => null); +} diff --git a/types/adone/test/glosses/collections/byte_array.ts b/types/adone/test/glosses/collections/byte_array.ts new file mode 100644 index 0000000000..7254008322 --- /dev/null +++ b/types/adone/test/glosses/collections/byte_array.ts @@ -0,0 +1,561 @@ +namespace adoneTests.collection.ByteArray { + const { + collection: { + ByteArray + } + } = adone; + + new ByteArray(); + new ByteArray(10); + new ByteArray(10, true); + + const buffer = new ByteArray(); + + buffer.woffset === 2; + buffer.roffset === 3; + buffer.noAssert === true; + buffer.buffer.writeUInt8(0, 0); + + namespace readBitSet { + const a: boolean[] = buffer.readBitSet(); + const b: boolean[] = buffer.readBitSet(10); + } + + namespace read { + const a: adone.collection.ByteArray = buffer.read(1); + const b: adone.collection.ByteArray = buffer.read(1, 10); + } + + namespace readInt8 { + const a: number = buffer.readInt8(); + const b: number = buffer.readInt8(10); + } + + namespace readUInt8 { + const a: number = buffer.readUInt8(); + const b: number = buffer.readUInt8(10); + } + + namespace readInt16LE { + const a: number = buffer.readInt16LE(); + const b: number = buffer.readInt16LE(10); + } + + namespace readUInt16LE { + const a: number = buffer.readUInt16LE(); + const b: number = buffer.readUInt16LE(10); + } + + namespace readInt16BE { + const a: number = buffer.readInt16BE(); + const b: number = buffer.readInt16BE(10); + } + + namespace readUInt16BE { + const a: number = buffer.readUInt16BE(); + const b: number = buffer.readUInt16BE(10); + } + + namespace readInt32LE { + const a: number = buffer.readInt32LE(); + const b: number = buffer.readInt32LE(10); + } + + namespace readUInt32LE { + const a: number = buffer.readUInt32LE(); + const b: number = buffer.readUInt32LE(10); + } + + namespace readInt32BE { + const a: number = buffer.readInt32BE(); + const b: number = buffer.readInt32BE(10); + } + + namespace readUInt32BE { + const a: number = buffer.readUInt32BE(); + const b: number = buffer.readUInt32BE(10); + } + + namespace readInt64LE { + const a: adone.math.Long = buffer.readInt64LE(); + const b: adone.math.Long = buffer.readInt64LE(10); + } + + namespace readUInt64LE { + const a: adone.math.Long = buffer.readUInt64LE(); + const b: adone.math.Long = buffer.readUInt64LE(10); + } + + namespace readInt64BE { + const a: adone.math.Long = buffer.readInt64BE(); + const b: adone.math.Long = buffer.readInt64BE(10); + } + + namespace readUInt64BE { + const a: adone.math.Long = buffer.readUInt64BE(); + const b: adone.math.Long = buffer.readUInt64BE(10); + } + + namespace readFloatLE { + const a: number = buffer.readFloatLE(); + const b: number = buffer.readFloatLE(10); + } + + namespace readFloatBE { + const a: number = buffer.readFloatBE(); + const b: number = buffer.readFloatBE(10); + } + + namespace readDoubleLE { + const a: number = buffer.readDoubleLE(); + const b: number = buffer.readDoubleLE(10); + } + + namespace readDoubleBE { + const a: number = buffer.readDoubleBE(); + const b: number = buffer.readDoubleBE(10); + } + + namespace write { + const a: adone.collection.ByteArray = buffer.write("1"); + const b: adone.collection.ByteArray = buffer.write(new ByteArray()); + const c: adone.collection.ByteArray = buffer.write(Buffer.alloc(10)); + const d: adone.collection.ByteArray = buffer.write(new Uint8Array([1, 2, 3])); + const e: adone.collection.ByteArray = buffer.write(new ArrayBuffer(10)); + const f: adone.collection.ByteArray = buffer.write("1", 10); + const g: adone.collection.ByteArray = buffer.write("1", 10, 10); + const h: adone.collection.ByteArray = buffer.write("1", 10, 10, "utf8"); + } + + namespace writeBitSet { + const a: adone.collection.ByteArray = buffer.writeBitSet([1, 2, 3]); + const b: number = buffer.writeBitSet([1, 2, 3], 10); + } + + namespace writeInt8 { + const a: adone.collection.ByteArray = buffer.writeInt8(10); + const b: adone.collection.ByteArray = buffer.writeInt8(10, 10); + } + + namespace writeUInt8 { + const a: adone.collection.ByteArray = buffer.writeUInt8(10); + const b: adone.collection.ByteArray = buffer.writeUInt8(10, 10); + } + + namespace writeInt16LE { + const a: adone.collection.ByteArray = buffer.writeInt16LE(10); + const b: adone.collection.ByteArray = buffer.writeInt16LE(10, 10); + } + + namespace writeInt16BE { + const a: adone.collection.ByteArray = buffer.writeInt16BE(10); + const b: adone.collection.ByteArray = buffer.writeInt16BE(10, 10); + } + + namespace writeUInt16LE { + const a: adone.collection.ByteArray = buffer.writeUInt16LE(10); + const b: adone.collection.ByteArray = buffer.writeUInt16LE(10, 10); + } + + namespace writeUInt16BE { + const a: adone.collection.ByteArray = buffer.writeUInt16BE(10); + const b: adone.collection.ByteArray = buffer.writeUInt16BE(10, 10); + } + + namespace writeInt32LE { + const a: adone.collection.ByteArray = buffer.writeInt32LE(10); + const b: adone.collection.ByteArray = buffer.writeInt32LE(10, 10); + } + + namespace writeInt32BE { + const a: adone.collection.ByteArray = buffer.writeInt32BE(10); + const b: adone.collection.ByteArray = buffer.writeInt32BE(10, 10); + } + + namespace writeUInt32LE { + const a: adone.collection.ByteArray = buffer.writeUInt32LE(10); + const b: adone.collection.ByteArray = buffer.writeUInt32LE(10, 10); + } + + namespace writeUInt32BE { + const a: adone.collection.ByteArray = buffer.writeUInt32BE(10); + const b: adone.collection.ByteArray = buffer.writeUInt32BE(10, 10); + } + + namespace writeInt64LE { + const a: adone.collection.ByteArray = buffer.writeInt64LE(10); + const b: adone.collection.ByteArray = buffer.writeInt64LE(10, 10); + } + + namespace writeInt64BE { + const a: adone.collection.ByteArray = buffer.writeInt64BE(10); + const b: adone.collection.ByteArray = buffer.writeInt64BE(10, 10); + } + + namespace writeUInt64LE { + const a: adone.collection.ByteArray = buffer.writeUInt64LE(10); + const b: adone.collection.ByteArray = buffer.writeUInt64LE(10, 10); + } + + namespace writeUInt64BE { + const a: adone.collection.ByteArray = buffer.writeUInt64BE(10); + const b: adone.collection.ByteArray = buffer.writeUInt64BE(10, 10); + } + + namespace writeFloatLE { + const a: adone.collection.ByteArray = buffer.writeFloatLE(10); + const b: adone.collection.ByteArray = buffer.writeFloatLE(10, 10); + } + + namespace writeFloatBE { + const a: adone.collection.ByteArray = buffer.writeFloatBE(10); + const b: adone.collection.ByteArray = buffer.writeFloatBE(10, 10); + } + + namespace writeDoubleLE { + const a: adone.collection.ByteArray = buffer.writeDoubleLE(10); + const b: adone.collection.ByteArray = buffer.writeDoubleLE(10, 10); + } + + namespace writeDoubleBE { + const a: adone.collection.ByteArray = buffer.writeDoubleBE(10); + const b: adone.collection.ByteArray = buffer.writeDoubleBE(10, 10); + } + + namespace writeVarInt32 { + const a: adone.collection.ByteArray = buffer.writeVarint32(10); + const b: number = buffer.writeVarint32(10, 10); + } + + namespace writeVarInt32ZigZag { + const a: adone.collection.ByteArray = buffer.writeVarint32ZigZag(10); + const b: number = buffer.writeVarint32ZigZag(10, 10); + } + + namespace readVarint32 { + const a: number = buffer.readVarint32(); + const b: { value: number, length: number } = buffer.readVarint32(10); + } + + namespace readVarint32ZigZag { + const a: number = buffer.readVarint32ZigZag(); + const b: { value: number, length: number } = buffer.readVarint32ZigZag(10); + } + + namespace writeVarint64 { + const a: adone.collection.ByteArray = buffer.writeVarint64(10); + const b: number = buffer.writeVarint64(10, 10); + } + + namespace writeVarint64ZigZag { + const a: adone.collection.ByteArray = buffer.writeVarint64ZigZag(10); + const b: number = buffer.writeVarint64ZigZag(10, 10); + } + + namespace readVarint64 { + const a: adone.math.Long = buffer.readVarint64(); + const b: { value: adone.math.Long, length: number } = buffer.readVarint64(10); + } + + namespace readVarint64ZigZag { + const a: adone.math.Long = buffer.readVarint64ZigZag(); + const b: { value: adone.math.Long, length: number } = buffer.readVarint64ZigZag(10); + } + + namespace writeCString { + const a: adone.collection.ByteArray = buffer.writeCString("asd"); + const b: number = buffer.writeCString("123", 10); + } + + namespace readCString { + const a: string = buffer.readCString(); + const b: { string: string, length: number } = buffer.readCString(10); + } + + namespace writeString { + const a: adone.collection.ByteArray = buffer.writeString("abc"); + const b: number = buffer.writeString("abc", 10); + } + + namespace readString { + const a: string = buffer.readString(10); + const b: string = buffer.readString(10, "b"); + const c: string = buffer.readString(10, "c"); + const d: { string: string, length: number } = buffer.readString(10, "c", 10); + } + + namespace writeVString { + const a: adone.collection.ByteArray = buffer.writeVString("abc"); + const b: number = buffer.writeVString("abc", 10); + } + + namespace readVString { + const a: string = buffer.readVString(); + const b: { string: string, length: number } = buffer.readVString(10); + } + + namespace appendTo { + const a: adone.collection.ByteArray = buffer.appendTo(new ByteArray()); + const b: adone.collection.ByteArray = buffer.appendTo(new ByteArray(), 10); + } + + namespace assert { + const a: adone.collection.ByteArray = buffer.assert(); + const b: adone.collection.ByteArray = buffer.assert(true); + } + + namespace capacity { + const a: number = buffer.capacity(); + } + + namespace clear { + const a: adone.collection.ByteArray = buffer.clear(); + } + + namespace copy { + const a: adone.collection.ByteArray = buffer.clone(); + const c: adone.collection.ByteArray = buffer.clone(true); + } + + namespace compact { + const a: adone.collection.ByteArray = buffer.compact(); + const b: adone.collection.ByteArray = buffer.compact(1); + const c: adone.collection.ByteArray = buffer.compact(1, 10); + } + + namespace copyTo { + const a: adone.collection.ByteArray = buffer.copyTo(new ByteArray()); + const b: adone.collection.ByteArray = buffer.copyTo(new ByteArray(), 0); + const c: adone.collection.ByteArray = buffer.copyTo(new ByteArray(), 0, 0); + const d: adone.collection.ByteArray = buffer.copyTo(new ByteArray(), 0, 0, 10); + } + + namespace ensureCapacity { + const a: adone.collection.ByteArray = buffer.ensureCapacity(10); + } + + namespace fill { + const a: adone.collection.ByteArray = buffer.fill("0"); + const b: adone.collection.ByteArray = buffer.fill(0); + const c: adone.collection.ByteArray = buffer.fill(0, 0); + const d: adone.collection.ByteArray = buffer.fill(0, 0, 10); + } + + namespace flip { + const a: adone.collection.ByteArray = buffer.flip(); + } + + namespace mark { + const a: adone.collection.ByteArray = buffer.mark(); + const b: adone.collection.ByteArray = buffer.mark(10); + } + + namespace prepend { + const a: adone.collection.ByteArray = buffer.prepend(""); + const b: adone.collection.ByteArray = buffer.prepend(new ByteArray()); + const c: adone.collection.ByteArray = buffer.prepend(Buffer.alloc(10)); + const d: adone.collection.ByteArray = buffer.prepend(new Uint8Array([1, 2, 3])); + const e: adone.collection.ByteArray = buffer.prepend(new ArrayBuffer(10)); + const f: adone.collection.ByteArray = buffer.prepend("", "utf8"); + const g: adone.collection.ByteArray = buffer.prepend("", "utf8", 10); + const h: adone.collection.ByteArray = buffer.prepend("", 10); + } + + namespace prependTo { + const a: adone.collection.ByteArray = buffer.prependTo(new ByteArray()); + const b: adone.collection.ByteArray = buffer.prependTo(new ByteArray(), 10); + } + + namespace remaining { + const a: number = buffer.remaining(); + } + + namespace reset { + const a: adone.collection.ByteArray = buffer.reset(); + } + + namespace resize { + const a: adone.collection.ByteArray = buffer.resize(10); + } + + namespace reverse { + const a: adone.collection.ByteArray = buffer.reverse(); + const b: adone.collection.ByteArray = buffer.reverse(1); + const c: adone.collection.ByteArray = buffer.reverse(1, 10); + } + + namespace skip { + const a: adone.collection.ByteArray = buffer.skip(10); + } + + namespace slice { + const a: adone.collection.ByteArray = buffer.slice(); + const b: adone.collection.ByteArray = buffer.slice(1); + const c: adone.collection.ByteArray = buffer.slice(1, 10); + } + + namespace toBuffer { + const a: Buffer = buffer.toBuffer(); + const b: Buffer = buffer.toBuffer(true); + const c: Buffer = buffer.toBuffer(true, 0); + const d: Buffer = buffer.toBuffer(true, 0, 10); + } + + namespace toArrayBuffer { + const a: ArrayBuffer = buffer.toArrayBuffer(); + } + + namespace toString { + const a: string = buffer.toString(); + const b: string = buffer.toString("utf8"); + const c: string = buffer.toString("utf8", 0); + const d: string = buffer.toString("utf8", 0, 10); + } + + namespace toBase64 { + const a: string = buffer.toBase64(); + const b: string = buffer.toBase64(0); + const c: string = buffer.toBase64(0, 10); + } + + namespace toBinary { + const a: string = buffer.toBinary(); + const b: string = buffer.toBinary(0); + const c: string = buffer.toBinary(0, 10); + } + + namespace toDebug { + const a: string = buffer.toDebug(); + const b: string = buffer.toDebug(true); + } + + namespace toUTF8 { + const a: string = buffer.toUTF8(); + const b: string = buffer.toUTF8(0); + const c: string = buffer.toUTF8(0, 10); + } + + namespace static { + namespace accessor { + const a: typeof Buffer = ByteArray.accessor(); + } + + namespace allocate { + const a: adone.collection.ByteArray = ByteArray.allocate(); + const b: adone.collection.ByteArray = ByteArray.allocate(10); + const c: adone.collection.ByteArray = ByteArray.allocate(10, true); + } + + namespace concat { + const a: adone.collection.ByteArray = ByteArray.concat([ + new ByteArray(), + Buffer.alloc(10), + new Uint8Array([1, 2, 3]), + new ArrayBuffer(10) + ]); + const b: adone.collection.ByteArray = ByteArray.concat([ + new ByteArray(), + Buffer.alloc(10), + new Uint8Array([1, 2, 3]), + new ArrayBuffer(10) + ], "utf8"); + const c: adone.collection.ByteArray = ByteArray.concat([ + new ByteArray(), + Buffer.alloc(10), + new Uint8Array([1, 2, 3]), + new ArrayBuffer(10) + ], "utf8", true); + } + + namespace type { + const a: typeof Buffer = ByteArray.type(); + } + + namespace wrap { + const a: adone.collection.ByteArray = ByteArray.wrap(""); + const b: adone.collection.ByteArray = ByteArray.wrap(new ByteArray()); + const c: adone.collection.ByteArray = ByteArray.wrap(Buffer.alloc(10)); + const d: adone.collection.ByteArray = ByteArray.wrap(new Uint8Array([1, 2, 3])); + const e: adone.collection.ByteArray = ByteArray.wrap(new ArrayBuffer(10)); + const f: adone.collection.ByteArray = ByteArray.wrap("", "utf8"); + const g: adone.collection.ByteArray = ByteArray.wrap("", "utf8", true); + } + + namespace calculateVarint32 { + const a: number = ByteArray.calculateVarint32(10); + } + + namespace zigZagEncode32 { + const a: number = ByteArray.zigZagEncode32(10); + } + + namespace zigZagDecode32 { + const a: number = ByteArray.zigZagDecode32(10); + } + + namespace calculateVarint64 { + const a: number = ByteArray.calculateVarint64(10); + const b: number = ByteArray.calculateVarint64("10"); + } + + namespace zigZagEncode64 { + const a: adone.math.Long = ByteArray.zigZagEncode64(10); + const b: adone.math.Long = ByteArray.zigZagEncode64("10"); + const c: adone.math.Long = ByteArray.zigZagEncode64(adone.math.Long.fromValue(10)); + } + + namespace zigZagDecode64 { + const a: adone.math.Long = ByteArray.zigZagDecode64(10); + const b: adone.math.Long = ByteArray.zigZagDecode64("10"); + const c: adone.math.Long = ByteArray.zigZagDecode64(adone.math.Long.fromValue(10)); + } + + namespace calculateUTF8Chars { + const a: number = ByteArray.calculateUTF8Chars("123"); + } + + namespace calculateString { + const a: number = ByteArray.calculateString("123"); + } + + namespace fromBase64 { + const a: adone.collection.ByteArray = ByteArray.fromBase64("123"); + } + + namespace btoa { + const a: string = ByteArray.btoa("123"); + } + + namespace atob { + const a: string = ByteArray.atob("123"); + } + + namespace fromBinary { + const a: adone.collection.ByteArray = ByteArray.fromBinary("123"); + } + + namespace fromDebug { + const a: adone.collection.ByteArray = ByteArray.fromDebug("12"); + const b: adone.collection.ByteArray = ByteArray.fromDebug("12", true); + } + + namespace fromHex { + const a: adone.collection.ByteArray = ByteArray.fromHex("192"); + const b: adone.collection.ByteArray = ByteArray.fromHex("192", true); + } + + namespace fromUTF8 { + const a: adone.collection.ByteArray = ByteArray.fromUTF8("123"); + const b: adone.collection.ByteArray = ByteArray.fromUTF8("123", true); + } + + namespace constants { + const a: number = ByteArray.DEFAULT_CAPACITY; + const b: boolean = ByteArray.DEFAULT_NOASSERT; + const c: number = ByteArray.MAX_VARINT32_BYTES; + const d: number = ByteArray.MAX_VARINT64_BYTES; + const e: string = ByteArray.METRICS_CHARS; + const f: string = ByteArray.METRICS_BYTES; + } + } +} diff --git a/types/adone/test/glosses/collections/default_map.ts b/types/adone/test/glosses/collections/default_map.ts new file mode 100644 index 0000000000..1273b91982 --- /dev/null +++ b/types/adone/test/glosses/collections/default_map.ts @@ -0,0 +1,14 @@ +namespace adoneTests.collection.DefaultMap { + const { + collection: { + DefaultMap + } + } = adone; + + type DefaultMap = adone.collection.DefaultMap; + + new DefaultMap(); + { const a: DefaultMap = new DefaultMap(undefined, [["1", 2]]); } + { const a: DefaultMap = new DefaultMap((key: string) => 123); } + { const a: DefaultMap = new DefaultMap({ a: 123 }); } +} diff --git a/types/adone/test/glosses/collections/fast_lru.ts b/types/adone/test/glosses/collections/fast_lru.ts new file mode 100644 index 0000000000..0e61f51dc5 --- /dev/null +++ b/types/adone/test/glosses/collections/fast_lru.ts @@ -0,0 +1,21 @@ +namespace adoneTests.collection.FastLRU { + const { + collection: { + FastLRU + } + } = adone; + + new FastLRU(); + new FastLRU(100); + new FastLRU(100, { dispose: (key: string, value: number) => null }); + { const a: number = new FastLRU().size; } + { const a: number | undefined = new FastLRU().get("key"); } + new FastLRU().set("key", 123); + { const a: boolean = new FastLRU().delete("key"); } + { const a: boolean = new FastLRU().has("key"); } + { const a: string[] = [...new FastLRU().keys()]; } + { const a: number[] = [...new FastLRU().values()]; } + { const a: number[] = [...new FastLRU().values()]; } + { const a: Array<[string, number]> = [...new FastLRU().entries()]; } + new FastLRU().clear(); +} diff --git a/types/adone/test/glosses/collections/linked_list.ts b/types/adone/test/glosses/collections/linked_list.ts new file mode 100644 index 0000000000..f64a32c1aa --- /dev/null +++ b/types/adone/test/glosses/collections/linked_list.ts @@ -0,0 +1,123 @@ +namespace adoneTests.collection.LinkedList { + const { + collection: { + LinkedList + } + } = adone; + + namespace creation { + new LinkedList(); + new LinkedList(10); + } + + namespace properties { + { const a: boolean = new LinkedList().full; } + { const a: boolean = new LinkedList().empty; } + { const a: number = new LinkedList().maxLength; } + { const a: number = new LinkedList().length; } + { const a: boolean = new LinkedList().autoresize; } + } + + namespace resize { + { const a: boolean = new LinkedList().resize(100).full; } + } + + namespace push { + const a = new LinkedList().push(10); + a.next; + a.prev; + const b: number = a.value; + } + + namespace pop { + const a: number | undefined = new LinkedList().pop(); + } + + namespace shift { + const a: number | undefined = new LinkedList().shift(); + } + + namespace unshift { + const a = new LinkedList().unshift("hello"); + a.next; + a.prev; + const b: string = a.value; + } + + namespace pushNode { + const a = new LinkedList(); + const node = a.push("1230"); + a.pushNode(node); + } + + namespace unshiftNode { + const a = new LinkedList(); + const node = a.push(10); + a.unshiftNode(node); + } + + namespace removeNode { + const a = new LinkedList(); + const node = a.unshift("10"); + a.removeNode(node); + } + + namespace clear { + new LinkedList().clear(); + new LinkedList().clear(true); + } + + namespace toArray { + const a = new LinkedList(); + const b: number[] = a.toArray(); + } + + namespace front { + const a = new LinkedList(); + const b: number = a.front; + } + + namespace back { + const a = new LinkedList(); + const b: number = a.back; + } + + namespace iterating { + const a = new LinkedList(); + for (const b of a) { + const i: string = b; + } + const c = new LinkedList(); + for (const b of c) { + const i: number = b; + } + } + + namespace nextNode { + const a = new LinkedList(); + const n1 = a.push("h"); + const n2 = a.nextNode(n1); + n1.next; + n1.prev; + const t: string = n1.value; + } + + namespace map { + const a = new LinkedList(); + const f = (a: number, idx: number) => `${a}${idx}`; + const b = a.map(f); + const c: string = b.front; + } + + namespace forEach { + const a = new LinkedList(); + + a.forEach((a: number, b: number) => { + const c = a + b; + }); + } + + namespace static { + const a: number = LinkedList.DEFAULT_LENGTH; + } +} diff --git a/types/adone/test/glosses/collections/lru.ts b/types/adone/test/glosses/collections/lru.ts new file mode 100644 index 0000000000..934e5a1fbf --- /dev/null +++ b/types/adone/test/glosses/collections/lru.ts @@ -0,0 +1,67 @@ +namespace adoneTests.collection.LRU { + const { + collection: { + LRU + } + } = adone; + + type LRU = adone.collection.LRU; + + new LRU(); + new LRU(100); + new LRU({}); + new LRU({ max: 100 }); + new LRU({ dispose: (key: string, value: number) => null }); + new LRU({ maxAge: 100 }); + new LRU({ noDisposeOnSet: false }); + new LRU({ stale: true }); + { const a: number = new LRU().max; } + { new LRU().max = 100; } + { const a: boolean = new LRU().allowStale; } + { new LRU().allowStale = false; } + { const a: number = new LRU().maxAge; } + { new LRU().maxAge = 100; } + { const a: (v: number, k: string) => number = new LRU().lengthCalculator; } + { new LRU().lengthCalculator = () => 123; } + { const a: number = new LRU().length; } + { const a: number = new LRU().itemCount; } + new LRU().rforEach((value: number, key: string) => null); + new LRU().rforEach(function (value: number, key: string) { + const b: number = this.a; + }, { a: 1 }); + new LRU().forEach((value: number, key: string) => null); + new LRU().forEach(function (value: number, key: string) { + const b: number = this.a; + }, { a: 1 }); + { const a: string[] = new LRU().keys(); } + { const a: number[] = new LRU().values(); } + new LRU().reset(); + { + const a: Array> = new LRU().dump(); + const [b] = a; + { const c: number = b.e; } + { const c: string = b.key; } + { const c: number = b.value; } + } + { + const a: adone.collection.LinkedList> = new LRU().dumpLru(); + const b = a.shift(); + if (b !== undefined) { + { const a: string = b.key; } + { const a: number = b.value; } + { const a: number = b.now; } + { const a: number = b.maxAge; } + } + } + { const a: string = new LRU().inspect(); } + { const a: string = new LRU().inspect({}); } + { const a: boolean = new LRU().set("asd", 13); } + { const a: boolean = new LRU().set("asd", 13, 100500); } + { const a: boolean = new LRU().has("asd"); } + { const a: number | undefined = new LRU().get("asd"); } + { const a: number | undefined = new LRU().peek("asd"); } + { const a: adone.collection.I.LRU.Entry = new LRU().pop(); } + new LRU().del("asd"); + new LRU().load(new LRU().dump()); + new LRU().prune(); +} diff --git a/types/adone/test/glosses/collections/map_cache.ts b/types/adone/test/glosses/collections/map_cache.ts new file mode 100644 index 0000000000..bcd0ffb887 --- /dev/null +++ b/types/adone/test/glosses/collections/map_cache.ts @@ -0,0 +1,21 @@ +namespace adoneTests.collection.MapCache { + const { + collection: { + MapCache + } + } = adone; + + new MapCache(); + + new MapCache().has("hello"); + new MapCache().get("hello"); + new MapCache().set("hello", "world"); + new MapCache().delete("hello"); + new MapCache().clear(); + + { + const a = new MapCache(); + a.set("a", "b"); + a.get("a").charCodeAt(20); + } +} diff --git a/types/adone/test/glosses/collections/ns_cache.ts b/types/adone/test/glosses/collections/ns_cache.ts new file mode 100644 index 0000000000..a8e8c14397 --- /dev/null +++ b/types/adone/test/glosses/collections/ns_cache.ts @@ -0,0 +1,21 @@ +namespace adoneTests.collection.NSCache { + const { + collection: { + NSCache + } + } = adone; + + new NSCache(10, ["a", "b", "c"]); + new NSCache(10, ["a", "b", "c"]).resize(100); + new NSCache(10, ["a", "b", "c"]).set("a", "b", "c"); + new NSCache(10, ["a", "b", "c"]).get("a", "b"); + new NSCache(10, ["a", "b", "c"]).has("a", "b"); + new NSCache(10, ["a", "b", "c"]).delete("a", "b"); + new NSCache(10, ["a", "b", "c"]).clear(); + + { + const a = new NSCache(10, ["a", "b", "c"]); + a.set("a", "b", "c"); + a.get("a", "b").charCodeAt(100); + } +} diff --git a/types/adone/test/glosses/collections/priority_queue.ts b/types/adone/test/glosses/collections/priority_queue.ts new file mode 100644 index 0000000000..950e7394e7 --- /dev/null +++ b/types/adone/test/glosses/collections/priority_queue.ts @@ -0,0 +1,36 @@ +namespace adoneTests.collection.PriorityQueue { + const { + collection: { + PriorityQueue + } + } = adone; + + type PriorityQueue = adone.collection.PriorityQueue; + + { const a: boolean = new PriorityQueue().empty; } + { const a: number = new PriorityQueue().length; } + new PriorityQueue(); + new PriorityQueue({}); + new PriorityQueue({ + compare(a: number, b: number) { + return a - b; + } + }); + new PriorityQueue({ + priority(a: string, b: string) { + return a.length - b.length; + } + }); + { const a: PriorityQueue = new PriorityQueue().clone(); } + { const a: PriorityQueue = new PriorityQueue().push("123"); } + { const a: string | undefined = new PriorityQueue().pop(); } + { const a: PriorityQueue = new PriorityQueue().delete("123"); } + { const a: PriorityQueue = new PriorityQueue().delete("123"); } + { const a: string = new PriorityQueue().replace("123"); } + { const a: string = new PriorityQueue().pushpop("123"); } + { const a: string[] = new PriorityQueue().toArray(); } + { const a: PriorityQueue = PriorityQueue.from(["1"]); } + { const a: PriorityQueue = PriorityQueue.from(["1"], {}); } + { const a: PriorityQueue = PriorityQueue.from(["1"], { compare: (a: string, b: string) => a.length - b.length }); } + { const a: PriorityQueue = PriorityQueue.from(["1"], { priority: (a: string, b: string) => a.length - b.length }); } +} diff --git a/types/adone/test/glosses/collections/queue.ts b/types/adone/test/glosses/collections/queue.ts new file mode 100644 index 0000000000..fd6df7f39b --- /dev/null +++ b/types/adone/test/glosses/collections/queue.ts @@ -0,0 +1,17 @@ +namespace adoneTests.collection.Queue { + const { + collection: { + Queue + } + } = adone; + + type Queue = adone.collection.Queue; + + new Queue(); + { const a: Queue = new Queue().push(123).push(123); } + { const a: number | undefined = new Queue().push(123).pop(); } + { const a: string | undefined = new Queue().push(123).pop(); } + { const a: boolean = new Queue().full; } + { const a: number = new Queue().length; } + { const a: boolean = new Queue().empty; } +} diff --git a/types/adone/test/glosses/collections/rb_tree.ts b/types/adone/test/glosses/collections/rb_tree.ts new file mode 100644 index 0000000000..1b624284f6 --- /dev/null +++ b/types/adone/test/glosses/collections/rb_tree.ts @@ -0,0 +1,48 @@ +namespace adoneTests.collection.RedBlackTree { + const { + collection: { + RedBlackTree + } + } = adone; + + type RedBlackTree = adone.collection.RedBlackTree; + type RedBlackTreeIterator = adone.collection.I.RedBlackTree.Iterator; + type RedBlackTreeNode = adone.collection.I.RedBlackTree.Node; + + new RedBlackTree(); + new RedBlackTree((a: string, b: string) => a.length - b.length); + new RedBlackTree(undefined, new RedBlackTree()); + { const a: string[] = new RedBlackTree().keys; } + { const a: number[] = new RedBlackTree().values; } + { const a: number = new RedBlackTree().length; } + { + const a: RedBlackTreeIterator = new RedBlackTree().begin; + { const b: boolean = a.valid; } + { const b: RedBlackTreeNode | null = a.node; } + { const b: string | undefined = a.key; } + { const b: number | undefined = a.value; } + { const b: number = a.index; } + { const b: boolean = a.hasNext; } + { const b: boolean = a.hasPrev; } + { const b: RedBlackTree = a.tree; } + { const b: RedBlackTreeIterator = a.clone(); } + { const b: RedBlackTree = a.remove(); } + a.next(); + { const b: RedBlackTree = a.update(333); } + a.prev(); + } + { const a: RedBlackTreeIterator = new RedBlackTree().end; } + { const a: RedBlackTree = new RedBlackTree().insert("123", 456); } + { const a: number = new RedBlackTree().forEach((key: string, value: number) => value); } + { const a: number = new RedBlackTree().forEach((key: string, value: number) => value, "1"); } + { const a: number = new RedBlackTree().forEach((key: string, value: number) => value, "1", "2"); } + { const a: RedBlackTreeIterator = new RedBlackTree().at(1); } + { const a: RedBlackTreeIterator = new RedBlackTree().ge("1"); } + { const a: RedBlackTreeIterator = new RedBlackTree().gt("1"); } + { const a: RedBlackTreeIterator = new RedBlackTree().lt("1"); } + { const a: RedBlackTreeIterator = new RedBlackTree().le("1"); } + { const a: RedBlackTreeIterator | null = new RedBlackTree().find("1"); } + { const a: RedBlackTree = new RedBlackTree().remove("1"); } + { const a: RedBlackTree = new RedBlackTree().remove("1"); } + { const a: number | undefined = new RedBlackTree().get("1"); } +} diff --git a/types/adone/test/glosses/collections/refcounted_cache.ts b/types/adone/test/glosses/collections/refcounted_cache.ts new file mode 100644 index 0000000000..6262d57d60 --- /dev/null +++ b/types/adone/test/glosses/collections/refcounted_cache.ts @@ -0,0 +1,17 @@ +namespace adoneTests.collection.RefcountedCache { + const { + collection: { + RefcountedCache + } + } = adone; + + new RefcountedCache(); + new RefcountedCache().ref("a"); + new RefcountedCache().unref("a"); + new RefcountedCache().references("a") === 5; + + { + const a = new RefcountedCache(); + a.get("b").charCodeAt(100); + } +} diff --git a/types/adone/test/glosses/collections/set.ts b/types/adone/test/glosses/collections/set.ts new file mode 100644 index 0000000000..2e2314956e --- /dev/null +++ b/types/adone/test/glosses/collections/set.ts @@ -0,0 +1,26 @@ +namespace adoneTests.collection.Set { + const { + collection: { + Set + } + } = adone; + + new Set().add("a"); + new Set().has("a"); + new Set().delete("a"); + new Set().get("a"); + new Set().has("a") === true; + new Set().only(); + new Set().size === 5; + + { + const a = new Set(); + + a.add(1); + a.has(2); + a.delete(2); + a.get(2); // ??? + a.only() === 5; + a.size === 5; + } +} diff --git a/types/adone/test/glosses/collections/stack.ts b/types/adone/test/glosses/collections/stack.ts new file mode 100644 index 0000000000..df13f82f8e --- /dev/null +++ b/types/adone/test/glosses/collections/stack.ts @@ -0,0 +1,16 @@ +namespace adoneTests.collection.Stack { + const { + collection: { + Stack + } + } = adone; + + type Stack = adone.collection.Stack; + + { const a: boolean = new Stack().empty; } + { const a: number = new Stack().top; } + { const a: Stack = new Stack().push(123); } + { const a: number | undefined = new Stack().pop(); } + { const a: number[] = [...new Stack()]; } + { const a: Stack = Stack.from([1, 2, 3]); } +} diff --git a/types/adone/test/glosses/collections/timedout_map.ts b/types/adone/test/glosses/collections/timedout_map.ts new file mode 100644 index 0000000000..ffca754e2a --- /dev/null +++ b/types/adone/test/glosses/collections/timedout_map.ts @@ -0,0 +1,22 @@ +namespace adoneTests.collection.TimedoutMap { + const { + collection: { + TimedoutMap + } + } = adone; + + type TimedoutMap = adone.collection.TimedoutMap; + + new TimedoutMap(); + new TimedoutMap(1000); + new TimedoutMap(1000, (key: string) => null); + { + const a: TimedoutMap = new TimedoutMap().forEach((value: number, key: string) => null); + } + { + const a: TimedoutMap = new TimedoutMap().forEach(function (value: number, key: string) { + const a: number = this.a; + }, { a: 1 }); + } + { const a: boolean = new TimedoutMap().delete("123"); } +} diff --git a/types/adone/test/glosses/data.ts b/types/adone/test/glosses/data.ts index e9ef88d14b..00403a56da 100644 --- a/types/adone/test/glosses/data.ts +++ b/types/adone/test/glosses/data.ts @@ -570,4 +570,277 @@ namespace dataTests { bson.decode(bson.encode({ a: 1 }), { promoteLongs: false }).a; bson.decode(bson.encode({ a: 1 }), { promoteValues: true }).a; } + + namespace protobuf { + const { + protobuf + } = data; + + protobuf.create("hello"); + protobuf.create(Buffer.from("hello")); + protobuf.create({}); + protobuf.create({}, {}); + + namespace schema { + const { + schema + } = protobuf; + + const s = schema.parse("hello"); + s.syntax; + s.package; + if (!adone.is.null(s.package)) { + const c: string = s.package; + } + s.imports[0].charCodeAt(100); + + namespace enums { + const [a] = s.enums; + a.name.charCodeAt(100); + a.values; + a.options; + } + + namespace message { + const [msg] = s.messages; + msg.name; + { + const [a] = msg.enums; + a.name; + a.options; + a.values; + } + { + const [a] = msg.extends; + a.name; + a.message; + } + { + const [a] = msg.messages; + a.name; + a.enums; + a.extends; + a.messages; + a.fields; + a.extensions; + } + { + const [a] = msg.fields; + if (!adone.is.null(a.name)) { + a.name.charCodeAt(100); + } + if (!adone.is.null(a.type)) { + a.type.charCodeAt(100); + } + a.tag === 3; + if (!adone.is.null(a.map)) { + a.map.from.charCodeAt(100); + a.map.to.charCodeAt(100); + } + if (!adone.is.null(a.oneof)) { + a.oneof.charCodeAt(100); + } + a.required === false; + a.repeated === true; + a.options; + } + if (!adone.is.null(msg.extensions)) { + msg.extensions.from === 2; + msg.extensions.to === 3; + } + } + + s.options; + + s.extends[0].message; + s.extends[0].name; + + if (!adone.is.nil(s.services)) { + const [svc] = s.services; + + svc.name.charCodeAt(100); + svc.options; + + const [m] = svc.methods; + + m.name.charCodeAt(100); + if (!adone.is.null(m.input_type)) { + m.input_type.charCodeAt(100); + } + if (!adone.is.null(m.output_type)) { + m.output_type.charCodeAt(100); + } + m.client_streaming === true; + m.server_streaming === true; + m.options; + } + } + } + + namespace base32 { + const { + base32 + } = data; + + base32.charmap("asd"); + base32.charmap("asd", {}); + + base32.rfc4648.alphabet.charCodeAt(0); + base32.rfc4648.charmap["X"] === 2; + + base32.crockford.alphabet.charCodeAt(0); + base32.crockford.charmap["X"] === 2; + + base32.base32hex.alphabet.charCodeAt(0); + base32.base32hex.charmap["X"] === 2; + + namespace decoder { + const { + Decoder + } = base32; + new Decoder(); + new Decoder({ + type: "base32hex" + }); + new Decoder({ + type: "crockford" + }); + new Decoder({ + type: "rfc4648" + }); + new Decoder({ + type: "rfc4648", + charmap: {} + }); + const d = new Decoder(); + d.write("asd").write("aa"); + { const a: Buffer = d.finalize(); } + { const a: Buffer = d.finalize("c"); } + } + + namespace encoder { + const { + Encoder + } = base32; + + new Encoder(); + new Encoder({ + type: "base32hex" + }); + new Encoder({ + type: "crockford" + }); + new Encoder({ + type: "rfc4648" + }); + new Encoder({ + type: "rfc4648", + alphabet: "a" + }); + + const e = new Encoder(); + e.write(Buffer.from("b")).write(Buffer.from("a")); + { const a: string = e.finalize(); } + { const a: string = e.finalize(Buffer.from("c")); } + } + + base32.encode(Buffer.from("hello")).charCodeAt(100); + base32.encode(Buffer.from("hello"), { + type: "rfc4648" + }).charCodeAt(100); + base32.encode(Buffer.from("hello"), { + type: "crockford" + }).charCodeAt(100); + base32.encode(Buffer.from("hello"), { + type: "base32hex" + }).charCodeAt(100); + base32.encode(Buffer.from("hello"), { + type: "base32hex", + alphabet: "asd" + }).charCodeAt(100); + + base32.decode("asd").writeUInt8(100, 0); + base32.decode("asd", { + type: "base32hex" + }).writeUInt8(100, 0); + base32.decode("asd", { + type: "crockford" + }).writeUInt8(100, 0); + base32.decode("asd", { + type: "rfc4648" + }).writeUInt8(100, 0); + base32.decode("asd", { + type: "rfc4648", + charmap: {} + }).writeUInt8(100, 0); + } + + namespace basex { + const { + basex + } = data; + + const d = basex("abc"); + const a: Buffer = d.decode("str"); + const b: string = d.encode(Buffer.from("hello")); + const c: Buffer = d.decodeUnsafe("hello"); + } + + namespace base58 { + const { + base58 + } = data; + + const a: Buffer = base58.decode("str"); + const b: string = base58.encode(Buffer.from("hello")); + const c: Buffer = base58.decodeUnsafe("hello"); + } + + namespace base64url { + const { + base64url + } = data; + + base64url.unescape("a").charCodeAt(100); + base64url.escape("a").charCodeAt(100); + + base64url.encode("a").charCodeAt(100); + base64url.encode(Buffer.from("a")).charCodeAt(100); + base64url.encode(Buffer.from("a"), {}).charCodeAt(100); + base64url.encode(Buffer.from("a"), { + encoding: "utf8" + }).charCodeAt(100); + + base64url.decode("a").charCodeAt(100); + base64url.decode("a", { buffer: true }).writeUInt8(0, 0); + base64url.decode("a", { encoding: "utf8" }).charCodeAt(100); + } + + namespace varint { + const { + varint + } = data; + + varint.encode(12)[0]; + varint.encode(12, [])[0]; + varint.encode(12, [], 1)[0]; + + varint.decode(Buffer.from("hello")) === 5; + varint.decode(Buffer.from("hello"), 2) === 5; + varint.encodingLength(100500) === 5; + } + + namespace varintSigned { + const { + varintSigned + } = data; + + varintSigned.encode(12)[0]; + varintSigned.encode(12, [])[0]; + varintSigned.encode(12, [], 1)[0]; + + varintSigned.decode(Buffer.from("hello")) === 5; + varintSigned.decode(Buffer.from("hello"), 2) === 5; + varintSigned.encodingLength(100500) === 5; + } } diff --git a/types/adone/test/glosses/fake.ts b/types/adone/test/glosses/fake.ts new file mode 100644 index 0000000000..016d7ba7b0 --- /dev/null +++ b/types/adone/test/glosses/fake.ts @@ -0,0 +1,206 @@ +namespace adoneTests.fake { + const { + fake + } = adone; + + { const a: string = fake.address.zipCode(); } + { const a: string = fake.address.zipCode('###'); } + { const a: string = fake.address.city(); } + { const a: string = fake.address.city(0); } + { const a: string = fake.address.cityPrefix(); } + { const a: string = fake.address.citySuffix(); } + { const a: string = fake.address.streetName(); } + { const a: string = fake.address.streetAddress(); } + { const a: string = fake.address.streetAddress(false); } + { const a: string = fake.address.streetSuffix(); } + { const a: string = fake.address.streetPrefix(); } + { const a: string = fake.address.secondaryAddress(); } + { const a: string = fake.address.county(); } + { const a: string = fake.address.country(); } + { const a: string = fake.address.countryCode(); } + { const a: string = fake.address.state(); } + { const a: string = fake.address.state(false); } + { const a: string = fake.address.stateAbbr(); } + { const a: string = fake.address.latitude(); } + { const a: string = fake.address.longitude(); } + + { const a: string = fake.commerce.color(); } + { const a: string = fake.commerce.department(); } + { const a: string = fake.commerce.productName(); } + { const a: string = fake.commerce.price(); } + { const a: string = fake.commerce.price(0, 0, 0, '#'); } + { const a: string = fake.commerce.productAdjective(); } + { const a: string = fake.commerce.productMaterial(); } + { const a: string = fake.commerce.product(); } + + { const a: string[] = fake.company.suffixes(); } + { const a: string = fake.company.companyName(); } + { const a: string = fake.company.companyName(0); } + { const a: string = fake.company.companySuffix(); } + { const a: string = fake.company.catchPhrase(); } + { const a: string = fake.company.bs(); } + { const a: string = fake.company.catchPhraseAdjective(); } + { const a: string = fake.company.catchPhraseDescriptor(); } + { const a: string = fake.company.catchPhraseNoun(); } + { const a: string = fake.company.bsAdjective(); } + { const a: string = fake.company.bsBuzz(); } + { const a: string = fake.company.bsNoun(); } + + { const a: string = fake.database.column(); } + { const a: string = fake.database.type(); } + { const a: string = fake.database.collation(); } + { const a: string = fake.database.engine(); } + + { const a: Date = fake.date.past(); } + { const a: Date = fake.date.future(); } + { const a: Date = fake.date.between('foo', 'bar'); } + { const a: Date = fake.date.between(new Date(), new Date()); } + { const a: Date = fake.date.recent(); } + { const a: Date = fake.date.recent(100); } + { const a: Date = fake.date.soon(); } + { const a: Date = fake.date.soon(30); } + { const a: string = fake.date.month(); } + { const a: string = fake.date.month({ + abbr: true, + context: true + }); } + { const a: string = fake.date.weekday(); } + { const a: string = fake.date.weekday({ + abbr: true, + context: true + }); } + + { const a: string = fake.finance.account(); } + { const a: string = fake.finance.account(0); } + { const a: string = fake.finance.accountName(); } + { const a: string = fake.finance.mask(); } + { const a: string = fake.finance.mask(0, false, false); } + { const a: string = fake.finance.amount(); } + { const a: string = fake.finance.amount(0, 0, 0, '#'); } + { const a: string = fake.finance.transactionType(); } + { const a: string = fake.finance.currencyCode(); } + { const a: string = fake.finance.currencyName(); } + { const a: string = fake.finance.currencySymbol(); } + { const a: string = fake.finance.bitcoinAddress(); } + { const a: string = fake.finance.ethereumAddress(); } + { const a: string = fake.finance.iban(); } + { const a: string = fake.finance.iban(true); } + { const a: string = fake.finance.bic(); } + + { const a: string = fake.hacker.abbreviation(); } + { const a: string = fake.hacker.adjective(); } + { const a: string = fake.hacker.noun(); } + { const a: string = fake.hacker.verb(); } + { const a: string = fake.hacker.ingverb(); } + { const a: string = fake.hacker.phrase(); } + + { const a: string = fake.helpers.randomize(); } + { const a: number = fake.helpers.randomize([1, 2, 3, 4]); } + { const a: string = fake.helpers.randomize(['foo', 'bar', 'quux']); } + { const a: string = fake.helpers.slugify('foo bar quux'); } + { const a: string = fake.helpers.replaceSymbolWithNumber('foo# bar#'); } + { const a: string = fake.helpers.replaceSymbols('foo# bar? quux#'); } + { const a: string[] = fake.helpers.shuffle(['foo', 'bar', 'quux']); } + { const a: string = fake.helpers.mustache('{{foo}}{{bar}}', {foo: 'x', bar: 'y'}); } + + const card = fake.helpers.createCard(); + { const a: string = card.name; } + { const a: string = card.address.streetA; } + const contextualCard = fake.helpers.contextualCard(); + { const a: string = contextualCard.name; } + { const a: string = contextualCard.address.suite; } + const userCard = fake.helpers.userCard(); + { const a: string = userCard.name; } + { const a: string = userCard.address.suite; } + + { const a: string = fake.internet.avatar(); } + { const a: string = fake.internet.email(); } + { const a: string = fake.internet.email('foo', 'bar', 'quux'); } + { const a: string = fake.internet.exampleEmail(); } + { const a: string = fake.internet.exampleEmail('foo', 'bar'); } + { const a: string = fake.internet.protocol(); } + { const a: string = fake.internet.url(); } + { const a: string = fake.internet.domainName(); } + { const a: string = fake.internet.domainSuffix(); } + { const a: string = fake.internet.domainWord(); } + { const a: string = fake.internet.ip(); } + { const a: string = fake.internet.userAgent(); } + { const a: string = fake.internet.color(); } + { const a: string = fake.internet.color(0, 0, 0); } + { const a: string = fake.internet.mac(); } + { const a: string = fake.internet.password(); } + { const a: string = fake.internet.password(0, false, '#', 'foo'); } + + { const a: string = fake.lorem.word(); } + { const a: string = fake.lorem.words(); } + { const a: string = fake.lorem.words(0); } + { const a: string = fake.lorem.sentence(); } + { const a: string = fake.lorem.sentence(0, 0); } + { const a: string = fake.lorem.slug(); } + { const a: string = fake.lorem.slug(0); } + { const a: string = fake.lorem.sentences(); } + { const a: string = fake.lorem.sentences(0); } + { const a: string = fake.lorem.paragraph(); } + { const a: string = fake.lorem.paragraph(0); } + { const a: string = fake.lorem.paragraphs(); } + { const a: string = fake.lorem.paragraphs(0, ''); } + { const a: string = fake.lorem.text(); } + { const a: string = fake.lorem.text(0); } + { const a: string = fake.lorem.lines(); } + { const a: string = fake.lorem.lines(0); } + + { const a: string = fake.name.firstName(); } + { const a: string = fake.name.firstName(0); } + { const a: string = fake.name.lastName(); } + { const a: string = fake.name.lastName(0); } + { const a: string = fake.name.findName(); } + { const a: string = fake.name.findName('', '', 0); } + { const a: string = fake.name.jobTitle(); } + { const a: string = fake.name.prefix(); } + { const a: string = fake.name.suffix(); } + { const a: string = fake.name.title(); } + { const a: string = fake.name.jobDescriptor(); } + { const a: string = fake.name.jobArea(); } + { const a: string = fake.name.jobType(); } + + { const a: string = fake.phone.phoneNumber(); } + { const a: string = fake.phone.phoneNumber('#'); } + { const a: string = fake.phone.phoneNumberFormat(); } + { const a: string = fake.phone.phoneNumberFormat(0); } + { const a: string = fake.phone.phoneFormats(); } + + { const a: number = fake.random.number(); } + { const a: number = fake.random.number(0); } + { const a: number = fake.random.number({ + min: 0, + max: 0, + precision: 0 + }); } + { const a: string = fake.random.arrayElement(); } + { const a: string = fake.random.arrayElement(['foo', 'bar', 'quux']); } + { const a: string = fake.random.objectElement(); } + { const a: string = fake.random.objectElement({foo: 'bar', field: 'foo'}); } + { const a: string = fake.random.uuid(); } + { const a: boolean = fake.random.boolean(); } + { const a: string = fake.random.word(); } + { const a: string = fake.random.word("noun"); } + { const a: string = fake.random.words(); } + { const a: string = fake.random.words(0); } + { const a: string = fake.random.image(); } + { const a: string = fake.random.locale(); } + { const a: string = fake.random.alphaNumeric(); } + { const a: string = fake.random.alphaNumeric(0); } + { const a: string = fake.random.hexaDecimal(); } + { const a: string = fake.random.hexaDecimal(3); } + + { const a: string = fake.system.fileName("foo", "bar"); } + { const a: string = fake.system.commonFileName("foo", "bar"); } + { const a: string = fake.system.mimeType(); } + { const a: string = fake.system.commonFileType(); } + { const a: string = fake.system.commonFileExt(); } + { const a: string = fake.system.fileType(); } + { const a: string = fake.system.fileExt("foo"); } + { const a: string = fake.system.directoryPath(); } + { const a: string = fake.system.filePath(); } + { const a: string = fake.system.semver(); } +} diff --git a/types/adone/test/glosses/is.ts b/types/adone/test/glosses/is.ts index 13b00530d7..2065dfe01b 100644 --- a/types/adone/test/glosses/is.ts +++ b/types/adone/test/glosses/is.ts @@ -133,8 +133,20 @@ namespace isTests { } } { const a: boolean = is.dotfile("abc"); } - { const a: boolean = is.function(() => { }); } - { const a: boolean = is.asyncFunction(async () => { }); } + { + const a: boolean = is.function(() => { }); + const b: any = 2; + if (is.function(b)) { + b(); + } + } + { + const a: boolean = is.asyncFunction(async () => { }); + const b: any = 2; + if (is.asyncFunction(b)) { + b().then(() => {}); + } + } { const a: boolean = is.promise({}); const b: any = 2; diff --git a/types/adone/tsconfig.json b/types/adone/tsconfig.json index 175d3c1252..e77e755b85 100644 --- a/types/adone/tsconfig.json +++ b/types/adone/tsconfig.json @@ -22,6 +22,7 @@ "files": [ "index.d.ts", "adone.d.ts", + "glosses/fake.d.ts", "glosses/math/index.d.ts", "glosses/math/matrix.d.ts", "glosses/math/simd.d.ts", @@ -32,7 +33,26 @@ "glosses/promise.d.ts", "glosses/shani.d.ts", "glosses/shani-global.d.ts", - "glosses/collections.d.ts", + "glosses/collections/index.d.ts", + "glosses/collections/array_set.d.ts", + "glosses/collections/async_queue.d.ts", + "glosses/collections/avl_tree.d.ts", + "glosses/collections/binary_search_tree.d.ts", + "glosses/collections/buffer_list.d.ts", + "glosses/collections/byte_array.d.ts", + "glosses/collections/default_map.d.ts", + "glosses/collections/fast_lru.d.ts", + "glosses/collections/linked_list.d.ts", + "glosses/collections/lru.d.ts", + "glosses/collections/map_cache.d.ts", + "glosses/collections/ns_cache.d.ts", + "glosses/collections/priority_queue.d.ts", + "glosses/collections/queue.d.ts", + "glosses/collections/rb_tree.d.ts", + "glosses/collections/refcounted_cache.d.ts", + "glosses/collections/set.d.ts", + "glosses/collections/stack.d.ts", + "glosses/collections/timedout_map.d.ts", "glosses/events.d.ts", "glosses/fs.d.ts", "glosses/is.d.ts", @@ -46,7 +66,27 @@ "adone-tests.ts", "test/index.ts", "test/index-import.ts", + "test/glosses/fake.ts", "test/glosses/application.ts", + "test/glosses/collections/array_set.ts", + "test/glosses/collections/async_queue.ts", + "test/glosses/collections/avl_tree.ts", + "test/glosses/collections/binary_search_tree.ts", + "test/glosses/collections/buffer_list.ts", + "test/glosses/collections/byte_array.ts", + "test/glosses/collections/default_map.ts", + "test/glosses/collections/fast_lru.ts", + "test/glosses/collections/linked_list.ts", + "test/glosses/collections/lru.ts", + "test/glosses/collections/map_cache.ts", + "test/glosses/collections/ns_cache.ts", + "test/glosses/collections/priority_queue.ts", + "test/glosses/collections/queue.ts", + "test/glosses/collections/rb_tree.ts", + "test/glosses/collections/refcounted_cache.ts", + "test/glosses/collections/set.ts", + "test/glosses/collections/stack.ts", + "test/glosses/collections/timedout_map.ts", "test/glosses/math/index.ts", "test/glosses/math/matrix.ts", "test/glosses/math/simd.ts", @@ -57,7 +97,6 @@ "test/glosses/promise.ts", "test/glosses/shani.ts", "test/glosses/shani-global.ts", - "test/glosses/collections.ts", "test/glosses/events.ts", "test/glosses/fs.ts", "test/glosses/is.ts", From 499d248746c7a3875d7322f78000ad00c8e51af4 Mon Sep 17 00:00:00 2001 From: Garth Kidd Date: Wed, 7 Feb 2018 14:50:26 +1100 Subject: [PATCH 83/99] Stripe card numbers are strings: The Stripe API for Node documentation of [Create a card token][cct] gives the example code: ``` var stripe = require("stripe")( "sk_test_BQokikJOvBiI2HlWgH4olfQ2" ); stripe.tokens.create({ card: { "number": '4242424242424242', "exp_month": 12, "exp_year": 2019, "cvc": '123' } }, function(err, token) { // asynchronously called }); ``` [cct]: https://stripe.com/docs/api/node#create_card_token Relevant typings history: * @borisyankov first added `StripeTokenData.number: number` in 2013-09 * @codeanimal substantially reworked the typings in 2016-04 with `ISourceCreationOptions.number: string` but giving it the comment: > The card number, as a string without any separators. --- types/stripe/index.d.ts | 6 +++--- types/stripe/stripe-tests.ts | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/types/stripe/index.d.ts b/types/stripe/index.d.ts index c3fd4853b7..92f07f2eed 100644 --- a/types/stripe/index.d.ts +++ b/types/stripe/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for stripe 5.0 +// Type definitions for stripe 6.0 // Project: https://github.com/stripe/stripe-node/ // Definitions by: William Johnston // Peter Harris @@ -4051,7 +4051,7 @@ declare namespace Stripe { /** * The card number */ - number: number; + number: string; /** * Card brand. Can be Visa, American Express, MasterCard, Discover, JCB, Diners Club, or Unknown. @@ -4167,7 +4167,7 @@ declare namespace Stripe { /** * The card number, as a string without any separators. */ - number: number; + number: string; /** * Card security code. Required unless your account is registered in diff --git a/types/stripe/stripe-tests.ts b/types/stripe/stripe-tests.ts index 99cf3795db..b887ae6228 100644 --- a/types/stripe/stripe-tests.ts +++ b/types/stripe/stripe-tests.ts @@ -243,7 +243,7 @@ stripe.customers.create({ }).then( function (customer) { // asynchronously called customer.cards.create({ card: "tok_17wV94BoqMA9o2xkhlAd3ALf"}).then(function (customer) {}); - customer.cards.retrieve("card_17xMvXBoqMA9o2xkq6W5gamx").then(function (card) { + customer.cards.retrieve("card_17xMvXBoqMA9o2xkq6W5gamx").then(function (card) { let strCustomer: string = card.customer; let objCustomer: customers.ICustomer = card.customer; }); @@ -394,7 +394,7 @@ stripe.customers.createSource( object: "card", exp_month: 1, exp_year: 16, - number: 4242424242424242 + number: '4242424242424242' } }, function (err, card) { @@ -409,7 +409,7 @@ stripe.customers.createSource( object: "card", exp_month: 1, exp_year: 16, - number: 4242424242424242 + number: '4242424242424242' } }).then( function (card) { From e63a146766a0cc0896ac496efb009f9de604b171 Mon Sep 17 00:00:00 2001 From: V# Date: Wed, 7 Feb 2018 20:38:03 +0800 Subject: [PATCH 84/99] getInstanceByDom return type should be Echarts --- types/echarts/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/echarts/index.d.ts b/types/echarts/index.d.ts index 1f42f8030c..b217be12eb 100644 --- a/types/echarts/index.d.ts +++ b/types/echarts/index.d.ts @@ -24,7 +24,7 @@ declare namespace echarts { function dispose(target: ECharts | HTMLDivElement | HTMLCanvasElement): void; - function getInstanceByDom(target: HTMLDivElement | HTMLCanvasElement): void; + function getInstanceByDom(target: HTMLDivElement | HTMLCanvasElement): ECharts; function registerMap(mapName: string, geoJson: Object, specialAreas?: Object): void; From fb7accbd5e2a8d1efb5c9aec444212fba41299d5 Mon Sep 17 00:00:00 2001 From: Huw McNamara Date: Wed, 7 Feb 2018 19:31:40 +0000 Subject: [PATCH 85/99] don't use pick. fixed tests --- types/node/index.d.ts | 28 +++++++++++--------------- types/smtp-server/smtp-server-tests.ts | 5 +++-- 2 files changed, 15 insertions(+), 18 deletions(-) diff --git a/types/node/index.d.ts b/types/node/index.d.ts index 1792eccdac..50e1792253 100644 --- a/types/node/index.d.ts +++ b/types/node/index.d.ts @@ -1744,23 +1744,19 @@ declare module "https" { export type ServerOptions = tls.SecureContextOptions & tls.TlsServerOptions; // see https://nodejs.org/dist/latest/docs/api/https.html#https_https_request_options_callback - type extendedRequestKeys = "ca" | - "cert" | - "ciphers" | - "clientCertEngine" | - "key" | - "passphrase" | - "pfx" | - "rejectUnauthorized" | - "secureProtocol" | - "servername"; - // as many type definitions rely on node, redefine Pick here instead of updating all of them to typescript 2.1 - type PortedPick = { - [P in K]: T[P]; - }; - - export type RequestOptions = http.RequestOptions & PortedPick; + export type RequestOptions = http.RequestOptions & { + ca?: tls.ConnectionOptions["ca"]; + cert?: tls.ConnectionOptions["cert"]; + ciphers?: tls.ConnectionOptions["ciphers"]; + clientCertEngine?: tls.ConnectionOptions["clientCertEngine"]; + key?: tls.ConnectionOptions["key"]; + passphrase?: tls.ConnectionOptions["passphrase"]; + pfx?: tls.ConnectionOptions["pfx"]; + rejectUnauthorized?: tls.ConnectionOptions["rejectUnauthorized"]; + secureProtocol?: tls.ConnectionOptions["secureProtocol"]; + servername?: tls.ConnectionOptions["servername"]; + } export interface AgentOptions extends http.AgentOptions, tls.ConnectionOptions { rejectUnauthorized?: boolean; diff --git a/types/smtp-server/smtp-server-tests.ts b/types/smtp-server/smtp-server-tests.ts index 29c05c942e..5be0634ebb 100644 --- a/types/smtp-server/smtp-server-tests.ts +++ b/types/smtp-server/smtp-server-tests.ts @@ -8,9 +8,10 @@ const options: SMTPServerOptions = { onRcptTo, onData, onClose, - port: 2525 }; +const port = 2525; + function onConnect(session: SMTPServerSession, callback: (err?: Error) => void): void { console.log(`[${session.id}] onConnect`); callback(); @@ -69,7 +70,7 @@ server.on('close', () => { console.log('Server closed'); }); -server.listen(options.port, () => { +server.listen(port, () => { const address = server.server.address(); console.log(`Listening on [${address.address}]:${address.port}`); }); From 289d1294d05d2b3dcfd1488d247a36634a96dad7 Mon Sep 17 00:00:00 2001 From: Huw McNamara Date: Wed, 7 Feb 2018 21:14:52 +0000 Subject: [PATCH 86/99] copy paaste RequestOptions --- types/node/index.d.ts | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/types/node/index.d.ts b/types/node/index.d.ts index 50e1792253..e4dc926da8 100644 --- a/types/node/index.d.ts +++ b/types/node/index.d.ts @@ -1743,20 +1743,18 @@ declare module "https" { export type ServerOptions = tls.SecureContextOptions & tls.TlsServerOptions; - // see https://nodejs.org/dist/latest/docs/api/https.html#https_https_request_options_callback - export type RequestOptions = http.RequestOptions & { - ca?: tls.ConnectionOptions["ca"]; - cert?: tls.ConnectionOptions["cert"]; - ciphers?: tls.ConnectionOptions["ciphers"]; - clientCertEngine?: tls.ConnectionOptions["clientCertEngine"]; - key?: tls.ConnectionOptions["key"]; - passphrase?: tls.ConnectionOptions["passphrase"]; - pfx?: tls.ConnectionOptions["pfx"]; - rejectUnauthorized?: tls.ConnectionOptions["rejectUnauthorized"]; - secureProtocol?: tls.ConnectionOptions["secureProtocol"]; - servername?: tls.ConnectionOptions["servername"]; - } + rejectUnauthorized?: boolean; // Defaults to true + servername?: string; // SNI TLS Extension + pfx?: string | Buffer | Array; + key?: string | Buffer | Array; + passphrase?: string; + cert?: string | Buffer | Array; + ca?: string | Buffer | Array; + ciphers?: string; + clientCertEngine?: string; + secureProtocol?: string; // SSL Method, e.g. SSLv23_method + }; export interface AgentOptions extends http.AgentOptions, tls.ConnectionOptions { rejectUnauthorized?: boolean; From 06e989ba780de0334824fa0c4b28adc3d3fe20e2 Mon Sep 17 00:00:00 2001 From: Garth Kidd Date: Thu, 8 Feb 2018 11:37:13 +1100 Subject: [PATCH 87/99] Revert version, per feedback from @linusu and @codeanimal TODO: squash. --- types/stripe/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/stripe/index.d.ts b/types/stripe/index.d.ts index 92f07f2eed..12f2b4abea 100644 --- a/types/stripe/index.d.ts +++ b/types/stripe/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for stripe 6.0 +// Type definitions for stripe 5.0 // Project: https://github.com/stripe/stripe-node/ // Definitions by: William Johnston // Peter Harris From 2757d317abff95e6640c04c1844911ce34a106b5 Mon Sep 17 00:00:00 2001 From: Anton Vasin Date: Tue, 6 Feb 2018 14:41:42 +0300 Subject: [PATCH 88/99] grid-styled types --- types/grid-styled/grid-styled-tests.tsx | 8 +++ types/grid-styled/index.d.ts | 76 +++++++++++++++++++++++++ types/grid-styled/package.json | 6 ++ types/grid-styled/tsconfig.json | 25 ++++++++ types/grid-styled/tslint.json | 1 + 5 files changed, 116 insertions(+) create mode 100644 types/grid-styled/grid-styled-tests.tsx create mode 100644 types/grid-styled/index.d.ts create mode 100644 types/grid-styled/package.json create mode 100644 types/grid-styled/tsconfig.json create mode 100644 types/grid-styled/tslint.json diff --git a/types/grid-styled/grid-styled-tests.tsx b/types/grid-styled/grid-styled-tests.tsx new file mode 100644 index 0000000000..750ecbf3eb --- /dev/null +++ b/types/grid-styled/grid-styled-tests.tsx @@ -0,0 +1,8 @@ +import * as React from "react"; +import { Flex, Box } from "grid-styled"; + +const Layout = () => ( + + + +); diff --git a/types/grid-styled/index.d.ts b/types/grid-styled/index.d.ts new file mode 100644 index 0000000000..248808734e --- /dev/null +++ b/types/grid-styled/index.d.ts @@ -0,0 +1,76 @@ +// Type definitions for grid-styled 3.0 +// Project: https://github.com/jxnblk/grid-styled +// Definitions by: Anton Vasin +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.4 + +export type Diff = ({ [P in T]: P } & + { [P in U]: never } & { [x: string]: never })[T]; + +export type Omit = Pick>; + +import { ComponentClass } from "react"; +import { StyledComponentClass } from "styled-components"; + +export type ResponsiveProp = number | string | Array; + +export interface CommonProps { + width: ResponsiveProp; + fontSize: ResponsiveProp; + color: ResponsiveProp; + bg: ResponsiveProp; + m: ResponsiveProp; + mt: ResponsiveProp; + mr: ResponsiveProp; + mb: ResponsiveProp; + ml: ResponsiveProp; + mx: ResponsiveProp; + my: ResponsiveProp; + p: ResponsiveProp; + pt: ResponsiveProp; + pr: ResponsiveProp; + pb: ResponsiveProp; + pl: ResponsiveProp; + px: ResponsiveProp; + py: ResponsiveProp; + theme: any; +} + +export interface BoxProps +extends Omit, "width" | "wrap" | "is"> { + flex: ResponsiveProp; + order: ResponsiveProp; + is: string | ComponentClass; +} + +export interface FlexProps extends BoxProps { + wrap: ResponsiveProp | boolean; + direction: ResponsiveProp | boolean; + align: ResponsiveProp | boolean; + justify: ResponsiveProp | boolean; + column: boolean; +} + +export type BoxComponent = StyledComponentClass< + Partial, + any + >; + +export type FlexComponent = StyledComponentClass< + Partial, + any + >; + +export interface Theme { + breakpoints: string[]; + space: number[]; + fontSizes: number[]; +} + +export const Box: BoxComponent; +export const Flex: FlexComponent; +export const theme: Theme; +export type DivProps = Omit, "ref"> & { + innerRef: (el: HTMLDivElement) => any; +}; +export const div: ComponentClass; diff --git a/types/grid-styled/package.json b/types/grid-styled/package.json new file mode 100644 index 0000000000..422c766b9a --- /dev/null +++ b/types/grid-styled/package.json @@ -0,0 +1,6 @@ +{ + "private": true, + "dependencies": { + "styled-components": "^3.1.6" + } +} diff --git a/types/grid-styled/tsconfig.json b/types/grid-styled/tsconfig.json new file mode 100644 index 0000000000..260e5ea359 --- /dev/null +++ b/types/grid-styled/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true, + "esModuleInterop": true, + "jsx": "react" + }, + "files": [ + "index.d.ts", + "grid-styled-tests.tsx" + ] +} diff --git a/types/grid-styled/tslint.json b/types/grid-styled/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/grid-styled/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" } From 40fbcc8c28e1a177aeea2eba65068ed71cd5e54e Mon Sep 17 00:00:00 2001 From: Stefan Erichsen Date: Thu, 8 Feb 2018 15:53:09 +0100 Subject: [PATCH 89/99] Frame now implements Message as it should --- types/stompjs/index.d.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/types/stompjs/index.d.ts b/types/stompjs/index.d.ts index 008b99b511..5cefa092a0 100644 --- a/types/stompjs/index.d.ts +++ b/types/stompjs/index.d.ts @@ -51,9 +51,14 @@ export interface Message { nack(headers?: {}): any; } -export class Frame { +export class Frame implements Message { + command: string; + headers: {}; + body: string; constructor(command: string, headers?: {}, body?: string); + ack(headers?: {}): any; + nack(headers?: {}): any; toString(): string; sizeOfUTF8(s: string): number; unmarshall(datas: any): any; From 81e9cfe692d45166f7349fcc0d550c0eea3e0441 Mon Sep 17 00:00:00 2001 From: Stefan Erichsen Date: Thu, 8 Feb 2018 16:00:55 +0100 Subject: [PATCH 90/99] added test and my name --- types/stompjs/index.d.ts | 3 +-- types/stompjs/stompjs-tests.ts | 5 +++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/types/stompjs/index.d.ts b/types/stompjs/index.d.ts index 5cefa092a0..7d819f4352 100644 --- a/types/stompjs/index.d.ts +++ b/types/stompjs/index.d.ts @@ -1,6 +1,6 @@ // Type definitions for stompjs 2.3 // Project: https://github.com/jmesnil/stomp-websocket -// Definitions by: Jimi Charalampidis +// Definitions by: Jimi Charalampidis , Stefan Erichsen // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped /// @@ -13,7 +13,6 @@ export const VERSIONS: { }; export class Client { - connected: boolean; counter: number; heartbeat: { diff --git a/types/stompjs/stompjs-tests.ts b/types/stompjs/stompjs-tests.ts index 15331fc81f..5d6eb1d0a5 100644 --- a/types/stompjs/stompjs-tests.ts +++ b/types/stompjs/stompjs-tests.ts @@ -43,6 +43,11 @@ client.connect('user', 'pass', () => { }, (error) => { }); client.connect('user', 'pass', () => { }, (error) => { }, 'host'); client.connect('user', 'pass', (frame) => { }, (error) => { }); client.connect('user', 'pass', (frame) => { }, (error) => { }, 'host'); +client.connect('user', 'pass', (frame) => { + if (!!frame) { + frame.command; + } + }, (error) => { }, 'host'); client.disconnect(() => { }); client.disconnect(() => { }, {}); From 97e17866e8700cb4cbb6b5b8f36fd976937f9679 Mon Sep 17 00:00:00 2001 From: Flarna Date: Thu, 8 Feb 2018 16:33:55 +0100 Subject: [PATCH 91/99] [node] Improve return type of fs.readdir() and fs.readdirsync() (#23440) * [node] Improve return type of fs.readdir() and fs.readdirsync() * additionally update v6 --- types/node/index.d.ts | 6 +++--- types/node/node-tests.ts | 19 +++++++++++++++++++ types/node/v6/index.d.ts | 4 ++-- types/node/v6/node-tests.ts | 4 ++++ types/node/v8/index.d.ts | 6 +++--- types/node/v8/node-tests.ts | 19 +++++++++++++++++++ 6 files changed, 50 insertions(+), 8 deletions(-) diff --git a/types/node/index.d.ts b/types/node/index.d.ts index e6d4797bbf..b4ad9812f1 100644 --- a/types/node/index.d.ts +++ b/types/node/index.d.ts @@ -3721,7 +3721,7 @@ declare module "fs" { * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. */ - export function readdir(path: PathLike, options: { encoding?: string | null } | string | undefined | null, callback: (err: NodeJS.ErrnoException, files: Array) => void): void; + export function readdir(path: PathLike, options: { encoding?: string | null } | string | undefined | null, callback: (err: NodeJS.ErrnoException, files: string[] | Buffer[]) => void): void; /** * Asynchronous readdir(3) - read a directory. @@ -3750,7 +3750,7 @@ declare module "fs" { * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. */ - export function __promisify__(path: PathLike, options?: { encoding?: string | null } | string | null): Promise>; + export function __promisify__(path: PathLike, options?: { encoding?: string | null } | string | null): Promise; } /** @@ -3772,7 +3772,7 @@ declare module "fs" { * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. */ - export function readdirSync(path: PathLike, options?: { encoding?: string | null } | string | null): Array; + export function readdirSync(path: PathLike, options?: { encoding?: string | null } | string | null): string[] | Buffer[]; /** * Asynchronous close(2) - close a file descriptor. diff --git a/types/node/node-tests.ts b/types/node/node-tests.ts index f70d21bd52..24fde87ddd 100644 --- a/types/node/node-tests.ts +++ b/types/node/node-tests.ts @@ -235,6 +235,25 @@ namespace fs_tests { }); } + { + let listS: string[]; + listS = fs.readdirSync('path'); + listS = fs.readdirSync('path', { encoding: 'utf8' }); + listS = fs.readdirSync('path', { encoding: null }); + listS = fs.readdirSync('path', { encoding: undefined }); + listS = fs.readdirSync('path', 'utf8'); + listS = fs.readdirSync('path', null); + listS = fs.readdirSync('path', undefined); + + let listB: Buffer[]; + listB = fs.readdirSync('path', { encoding: 'buffer' }); + listB = fs.readdirSync("path", 'buffer'); + + let enc = 'buffer'; + fs.readdirSync('path', { encoding: enc }); // $ExpectType string[] | Buffer[] + fs.readdirSync('path', { }); // $ExpectType string[] | Buffer[] + } + { fs.mkdtemp('/tmp/foo-', (err, folder) => { console.log(folder); diff --git a/types/node/v6/index.d.ts b/types/node/v6/index.d.ts index 236ae5630d..dd49ad6003 100644 --- a/types/node/v6/index.d.ts +++ b/types/node/v6/index.d.ts @@ -2614,7 +2614,7 @@ declare module "fs" { * @param path A path to a file. * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. */ - export function readdir(path: string | Buffer, options: { encoding?: string | null } | string | undefined | null, callback: (err: NodeJS.ErrnoException, files: Array) => void): void; + export function readdir(path: string | Buffer, options: { encoding?: string | null } | string | undefined | null, callback: (err: NodeJS.ErrnoException, files: string[] | Buffer[]) => void): void; /** * Asynchronous readdir(3) - read a directory. @@ -2640,7 +2640,7 @@ declare module "fs" { * @param path A path to a file. * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. */ - export function readdirSync(path: string | Buffer, options?: { encoding?: string | null } | string | null): Array; + export function readdirSync(path: string | Buffer, options?: { encoding?: string | null } | string | null): string[] | Buffer[]; export function close(fd: number, callback?: (err?: NodeJS.ErrnoException) => void): void; export function closeSync(fd: number): void; export function open(path: string | Buffer, flags: string | number, callback: (err: NodeJS.ErrnoException, fd: number) => void): void; diff --git a/types/node/v6/node-tests.ts b/types/node/v6/node-tests.ts index 2520750a88..cd363c708c 100644 --- a/types/node/v6/node-tests.ts +++ b/types/node/v6/node-tests.ts @@ -231,6 +231,10 @@ namespace fs_tests { let fsBufferOut: Buffer[] = fs.readdirSync('utf8', 'buffer'); fsBufferOut = fs.readdirSync('foo', {encoding: 'buffer'}); + + let enc = 'buffer'; + fs.readdirSync('path', { encoding: enc }); // $ExpectType string[] | Buffer[] + fs.readdirSync('path', { }); // $ExpectType string[] | Buffer[] } { diff --git a/types/node/v8/index.d.ts b/types/node/v8/index.d.ts index 4832c01138..43b8f74ff5 100644 --- a/types/node/v8/index.d.ts +++ b/types/node/v8/index.d.ts @@ -3698,7 +3698,7 @@ declare module "fs" { * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. */ - export function readdir(path: PathLike, options: { encoding?: string | null } | string | undefined | null, callback: (err: NodeJS.ErrnoException, files: Array) => void): void; + export function readdir(path: PathLike, options: { encoding?: string | null } | string | undefined | null, callback: (err: NodeJS.ErrnoException, files: string[] | Buffer[]) => void): void; /** * Asynchronous readdir(3) - read a directory. @@ -3727,7 +3727,7 @@ declare module "fs" { * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. */ - export function __promisify__(path: PathLike, options?: { encoding?: string | null } | string | null): Promise>; + export function __promisify__(path: PathLike, options?: { encoding?: string | null } | string | null): Promise; } /** @@ -3749,7 +3749,7 @@ declare module "fs" { * @param path A path to a file. If a URL is provided, it must use the `file:` protocol. * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used. */ - export function readdirSync(path: PathLike, options?: { encoding?: string | null } | string | null): Array; + export function readdirSync(path: PathLike, options?: { encoding?: string | null } | string | null): string[] | Buffer[]; /** * Asynchronous close(2) - close a file descriptor. diff --git a/types/node/v8/node-tests.ts b/types/node/v8/node-tests.ts index 043935320c..74d4c5c222 100644 --- a/types/node/v8/node-tests.ts +++ b/types/node/v8/node-tests.ts @@ -235,6 +235,25 @@ namespace fs_tests { }); } + { + let listS: string[]; + listS = fs.readdirSync('path'); + listS = fs.readdirSync('path', { encoding: 'utf8' }); + listS = fs.readdirSync('path', { encoding: null }); + listS = fs.readdirSync('path', { encoding: undefined }); + listS = fs.readdirSync('path', 'utf8'); + listS = fs.readdirSync('path', null); + listS = fs.readdirSync('path', undefined); + + let listB: Buffer[]; + listB = fs.readdirSync('path', { encoding: 'buffer' }); + listB = fs.readdirSync("path", 'buffer'); + + let enc = 'buffer'; + fs.readdirSync('path', { encoding: enc }); // $ExpectType string[] | Buffer[] + fs.readdirSync('path', { }); // $ExpectType string[] | Buffer[] + } + { fs.mkdtemp('/tmp/foo-', (err, folder) => { console.log(folder); From 133d79faacae302d308d8b4c4d960e75e8cc6f5d Mon Sep 17 00:00:00 2001 From: Tom Wanzek Date: Thu, 8 Feb 2018 10:59:55 -0500 Subject: [PATCH 92/99] fix(d3-fetch): update signatures and expand JSDoc comments (#23378) * fix(d3-fetch): update signatures and expand JSDoc comments * fix(image): init object is not request init, but rather initializes image element properties * fix(json): add generic parameter to allow return type casting * fix(csv, dsv, tsv): overload signatures to be more specific about return type (with or without row parsing function). * fix(csv, dsv, tsv): update row parsing function signature to be in line with parser signature in d3-dsv, which is called under the hood. * chore(tslint): add tslint rules to allow signature overloading and single-use generic * doc(*) Expand JSDoc comments * chore(tests): update tests * chore(d3-fetch): add validation reference patch release version --- types/d3-fetch/d3-fetch-tests.ts | 31 +++-- types/d3-fetch/index.d.ts | 226 ++++++++++++++++++++++++++++--- types/d3-fetch/tslint.json | 8 +- 3 files changed, 239 insertions(+), 26 deletions(-) diff --git a/types/d3-fetch/d3-fetch-tests.ts b/types/d3-fetch/d3-fetch-tests.ts index 24c6783997..941955c996 100644 --- a/types/d3-fetch/d3-fetch-tests.ts +++ b/types/d3-fetch/d3-fetch-tests.ts @@ -11,28 +11,41 @@ const init: RequestInit = {}; let p1: Promise = d3Fetch.blob(url); p1 = d3Fetch.blob(url, init); + let p2: Promise = d3Fetch.buffer(url); p2 = d3Fetch.buffer(url, init); + let p3: Promise = d3Fetch.image(url); -p3 = d3Fetch.image(url, init); +const imageProperties = { + width: '300px', + height: '500px' +}; +p3 = d3Fetch.image(url, imageProperties); + let p4: Promise = d3Fetch.json(url); p4 = d3Fetch.json(url, init); +let p5: Promise = d3Fetch.json(url); +p5 = d3Fetch.json(url, init); let myString: Promise; myString = d3Fetch.text(url); myString = d3Fetch.text(url, init); -const parseRow = (d: {}) => { - const myType: MyType = { foo: 'foo' }; +const parseRow = (rawRow: DSVRowString, index: number, columns: string[]): (MyType | undefined | null) => { + const myType: MyType | null = rawRow['foo'] ? { foo: rawRow['foo'] + '+ bar' } : null; return myType; }; +let promise1: Promise>; let promise2: Promise>; -promise2 = d3Fetch.csv(url); -promise2 = d3Fetch.csv(url, init); +promise1 = d3Fetch.csv(url); +promise1 = d3Fetch.csv(url, init); +promise2 = d3Fetch.csv(url, parseRow); promise2 = d3Fetch.csv(url, init, parseRow); -promise2 = d3Fetch.dsv(';', url); -promise2 = d3Fetch.dsv(';', url, init); +promise1 = d3Fetch.dsv(';', url); +promise1 = d3Fetch.dsv(';', url, init); +promise2 = d3Fetch.dsv(';', url, parseRow); promise2 = d3Fetch.dsv(';', url, init, parseRow); -promise2 = d3Fetch.tsv(url); -promise2 = d3Fetch.tsv(url, init); +promise1 = d3Fetch.tsv(url); +promise1 = d3Fetch.tsv(url, init); +promise2 = d3Fetch.tsv(url, parseRow); promise2 = d3Fetch.tsv(url, init, parseRow); diff --git a/types/d3-fetch/index.d.ts b/types/d3-fetch/index.d.ts index 9fd19fe8ed..3eb11ce48a 100644 --- a/types/d3-fetch/index.d.ts +++ b/types/d3-fetch/index.d.ts @@ -3,40 +3,234 @@ // Definitions by: Hugues Stefanski // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.2 + +// Last module patch version validated against: 1.0.1 + import { DSVParsedArray, DSVRowString, DSVRowAny } from 'd3-dsv'; -/** Fetches the binary file at the specified input URL as a Blob. If init is specified, it is passed along to the underlying call to fetch. */ +/** + * Fetches the binary file at the specified input URL and returns it as a Promise of a Blob. + * If init is specified, it is passed along to the underlying call to fetch. + * + * @param url A valid URL string. + * @param init An optional request initialization object. + */ export function blob(url: string, init?: RequestInit): Promise; -/** Fetches the binary file at the specified input URL as an ArrayBuffer. If init is specified, it is passed along to the underlying call to fetch. */ + +/** + * Fetches the binary file at the specified input URL and returns it as a Promise of an ArrayBuffer. + * If init is specified, it is passed along to the underlying call to fetch. + * + * @param url A valid URL string. + * @param init An optional request initialization object. + */ export function buffer(url: string, init?: RequestInit): Promise; -/** Equivalent to d3.dsv with the comma character as the delimiter. */ -export function csv( +/** + * Fetches the CSV file at the specified input URL and returns + * a promise of an array of objects representing the parsed rows. The values of the properties of the parsed row + * objects are represented as strings. + * + * If init is specified, it is passed along to the underlying call to fetch. + * + * @param url A valid URL string. + * @param init An optional request initialization object. + */ +export function csv( url: string, init?: RequestInit, - row?: (d: DSVRowAny) => ParsedRow +): Promise>; +/** + * Fetches the CSV file at the specified input URL and returns + * a promise of an array of objects representing the parsed rows. + * + * The specified row conversion function is used to map and filter row objects to a more-specific representation; + * see dsv.csvParse for details. + * + * The generic parameter describes the type of the object representation of a parsed row. + * + * @param url A valid URL string. + * @param row A row conversion function which is invoked for each row, being passed an object representing the current row (d), + * the index (i) starting at zero for the first non-header row, and the array of column names. If the returned value is null or undefined, + * the row is skipped and will be ommitted from the array returned by dsv.csvParse; otherwise, the returned value defines the corresponding row object. + * In effect, row is similar to applying a map and filter operator to the returned rows. + */ +export function csv( + url: string, + row: (rawRow: DSVRowString, index: number, columns: string[]) => ParsedRow | undefined | null +): Promise>; +/** + * Fetches the CSV file at the specified input URL and returns + * a promise of an array of objects representing the parsed rows. + * + * The init object is passed along to the underlying call to fetch. + * + * The specified row conversion function is used to map and filter row objects to a more-specific representation; + * see dsv.csvParse for details. + * + * The generic parameter describes the type of the object representation of a parsed row. + * + * @param url A valid URL string. + * @param init An request initialization object. + * @param row A row conversion function which is invoked for each row, being passed an object representing the current row (d), + * the index (i) starting at zero for the first non-header row, and the array of column names. If the returned value is null or undefined, + * the row is skipped and will be ommitted from the array returned by dsv.csvParse; otherwise, the returned value defines the corresponding row object. + * In effect, row is similar to applying a map and filter operator to the returned rows. + */ +export function csv( + url: string, + init: RequestInit, + row: (rawRow: DSVRowString, index: number, columns: string[]) => ParsedRow | undefined | null ): Promise>; -/** Fetches the DSV file at the specified input URL. */ -export function dsv( +/** + * Fetches the DSV file with the specified delimiter character at the specified input URL and returns + * a promise of an array of objects representing the parsed rows. The values of the properties of the parsed row + * objects are represented as strings. + * + * If init is specified, it is passed along to the underlying call to fetch. + * + * @param delimiter The delimiter character used in the DSV file to be fetched. + * @param url A valid URL string. + * @param init An optional request initialization object. + */ +export function dsv( delimiter: string, url: string, init?: RequestInit, - row?: (d: DSVRowAny) => ParsedRow +): Promise>; +/** + * Fetches the DSV file with the specified delimiter character at the specified input URL and returns + * a promise of an array of objects representing the parsed rows. + * + * The specified row conversion function is used to map and filter row objects to a more-specific representation; + * see dsv.parse for details. + * + * The generic parameter describes the type of the object representation of a parsed row. + * + * @param delimiter The delimiter character used in the DSV file to be fetched. + * @param url A valid URL string. + * @param row A row conversion function which is invoked for each row, being passed an object representing the current row (d), + * the index (i) starting at zero for the first non-header row, and the array of column names. If the returned value is null or undefined, + * the row is skipped and will be ommitted from the array returned by dsv.parse; otherwise, the returned value defines the corresponding row object. + * In effect, row is similar to applying a map and filter operator to the returned rows. + */ +export function dsv( + delimiter: string, + url: string, + row: (rawRow: DSVRowString, index: number, columns: string[]) => ParsedRow | undefined | null +): Promise>; +/** + * Fetches the DSV file with the specified delimiter character at the specified input URL and returns + * a promise of an array of objects representing the parsed rows. + * + * The init object is passed along to the underlying call to fetch. + * + * The specified row conversion function is used to map and filter row objects to a more-specific representation; + * see dsv.parse for details. + * + * The generic parameter describes the type of the object representation of a parsed row. + * + * @param delimiter The delimiter character used in the DSV file to be fetched. + * @param url A valid URL string. + * @param init An request initialization object. + * @param row A row conversion function which is invoked for each row, being passed an object representing the current row (d), + * the index (i) starting at zero for the first non-header row, and the array of column names. If the returned value is null or undefined, + * the row is skipped and will be ommitted from the array returned by dsv.parse; otherwise, the returned value defines the corresponding row object. + * In effect, row is similar to applying a map and filter operator to the returned rows. + */ +export function dsv( + delimiter: string, + url: string, + init: RequestInit, + row: (rawRow: DSVRowString, index: number, columns: string[]) => ParsedRow | undefined | null ): Promise>; -/** Fetches the image at the specified input URL. If init is specified, it is passed along to the underlying call to fetch. */ -export function image(url: string, init?: RequestInit): Promise; +/** + * Fetches the image at the specified input URL and returns a promise of an HTML image element. + * + * If init is specified, sets any additional properties on the image before loading. + * + * @param url A valid URL string. + * @param init An optional object of image properties to set. + */ +export function image(url: string, init?: {[key: string]: any}): Promise; -/** Fetches the json file at the specified input URL. If init is specified, it is passed along to the underlying call to fetch. */ -export function json(url: string, init?: RequestInit): Promise<{}>; +/** + * Fetches the json file at the specified input URL and returns it as a Promise of a parsed JSON object. + * + * If init is specified, it is passed along to the underlying call to fetch. + * + * The generic parameter describes the type of the object parsed from the returned JSON. + * + * @param url A valid URL string. + * @param init An optional request initialization object. + */ +export function json(url: string, init?: RequestInit): Promise; -/** Fetches the text file at the specified input URL. If init is specified, it is passed along to the underlying call to fetch. */ +/** + * Fetches the text file at the specified input URL and returns it as a Promise of a string. + * + * If init is specified, it is passed along to the underlying call to fetch. + * + * @param url A valid URL string. + * @param init An optional request initialization object. + */ export function text(url: string, init?: RequestInit): Promise; -/** Equivalent to d3.dsv with the tab character as the delimiter. */ -export function tsv( +/** + * Fetches the TSV file at the specified input URL and returns + * a promise of an array of objects representing the parsed rows. + * + * If init is specified, it is passed along to the underlying call to fetch. + * + * @param url A valid URL string. + * @param init An optional request initialization object. + */ +export function tsv( url: string, init?: RequestInit, - row?: (d: DSVRowAny) => ParsedRow +): Promise>; +/** + * Fetches the TSV file at the specified input URL and returns + * a promise of an array of objects representing the parsed rows. The values of the properties of the parsed row + * objects are represented as strings. + * + * The specified row conversion function is used to map and filter row objects to a more-specific representation; + * see dsv.tsvParse for details. + * + * The generic parameter describes the type of the object representation of a parsed row. + * + * @param url A valid URL string. + * @param row A row conversion function which is invoked for each row, being passed an object representing the current row (d), + * the index (i) starting at zero for the first non-header row, and the array of column names. If the returned value is null or undefined, + * the row is skipped and will be ommitted from the array returned by dsv.tsvParse; otherwise, the returned value defines the corresponding row object. + * In effect, row is similar to applying a map and filter operator to the returned rows. + */ +export function tsv( + url: string, + row: (rawRow: DSVRowString, index: number, columns: string[]) => ParsedRow | undefined | null +): Promise>; +/** + * Fetches the TSV file at the specified input URL and returns + * a promise of an array of objects representing the parsed rows. + * + * The init object is passed along to the underlying call to fetch. + * + * The specified row conversion function is used to map and filter row objects to a more-specific representation; + * see dsv.tsvParse for details. + * + * The generic parameter describes the type of the object representation of a parsed row. + * + * @param url A valid URL string. + * @param init An request initialization object. + * @param row A row conversion function which is invoked for each row, being passed an object representing the current row (d), + * the index (i) starting at zero for the first non-header row, and the array of column names. If the returned value is null or undefined, + * the row is skipped and will be ommitted from the array returned by dsv.tsvParse; otherwise, the returned value defines the corresponding row object. + * In effect, row is similar to applying a map and filter operator to the returned rows. + */ +export function tsv( + url: string, + init: RequestInit, + row: (rawRow: DSVRowString, index: number, columns: string[]) => ParsedRow | undefined | null ): Promise>; diff --git a/types/d3-fetch/tslint.json b/types/d3-fetch/tslint.json index 3db14f85ea..54efb0b84e 100644 --- a/types/d3-fetch/tslint.json +++ b/types/d3-fetch/tslint.json @@ -1 +1,7 @@ -{ "extends": "dtslint/dt.json" } +{ + "extends": "dtslint/dt.json", + "rules": { + "unified-signatures": false, + "no-unnecessary-generics": false + } +} From ff2359e74ce1c539097e47dc586d49d348a94587 Mon Sep 17 00:00:00 2001 From: Tom Wanzek Date: Thu, 8 Feb 2018 11:00:30 -0500 Subject: [PATCH 93/99] feat(d3-selection): add minor version 1.3.0 features and strictFunctionTypes (#23323) * chore(d3-selection): enable strictFunctionTypes Enables `strictFunctionTypes` compiler options and updates affected tests. * @feat(d3-selection) add selection.clone and d3.create Add selection.clone(...) and d3.create(...) to the definitions and tests. Bump minor version number to 1.3 * chore(d3-selection) fix two tests Specify the selectAll<...> generics in a test for HTMLCollectionOf. Fix the `this` context of a selector function. --- types/d3-selection/d3-selection-tests.ts | 46 ++++++++++++++++-------- types/d3-selection/index.d.ts | 22 ++++++++++-- types/d3-selection/tsconfig.json | 4 +-- 3 files changed, 54 insertions(+), 18 deletions(-) diff --git a/types/d3-selection/d3-selection-tests.ts b/types/d3-selection/d3-selection-tests.ts index 6019084be2..e4f50c89e4 100644 --- a/types/d3-selection/d3-selection-tests.ts +++ b/types/d3-selection/d3-selection-tests.ts @@ -89,10 +89,11 @@ const body5: d3Selection.Selection // d3Selection.select(baseTypeEl.node()!); // fails as baseTypeEl.node() is not of type HTMLBodyElement // test, when it is not certain, whether an element of the type to be selected exists -let maybeSVG1: d3Selection.Selection = d3Selection.select('svg'); +let maybeSVG1: d3Selection.Selection; maybeSVG1 = d3Selection.select('svg'); let maybeSVG2: d3Selection.Selection; +// maybeSVG2 = d3Selection.select(maybeSVG1.node()); // fails with strict function types maybeSVG2 = d3Selection.select(maybeSVG1.node()); // fails, as node type mismatches selection type @@ -144,8 +145,7 @@ const xSVGCircleElementList: NodeListOf = document.querySelect const circleSelection: d3Selection.Selection = d3Selection.selectAll(xSVGCircleElementList); // selectAll(...) accepts HTMLCollection, HTMLCollectionOf<...> argument - -const documentLinks: d3Selection.Selection = d3Selection.selectAll(document.links); +const documentLinks: d3Selection.Selection = d3Selection.selectAll(document.links); // --------------------------------------------------------------------------------------- // Tests of Sub-Selection Functions @@ -166,12 +166,13 @@ let firstG: d3Selection.Selection = svg // firstG = svgEl.select('svg'); // fails, element type of SVGSVGElement provided, but SVGGElement expexted on left-hand side (silly test to begin with) // test, when it is not certain, whether an element of the type to be selected exists -let maybeG: d3Selection.Selection = svgEl.select('g'); +let maybeG: d3Selection.Selection; +// maybeG = svgEl.select('g'); // fails, with strictFunctionTypes maybeG = svgEl.select('g'); // Using select(...) sub-selection with a selector function argument. -function svgGroupSelector(this: SVGSVGElement, d: SVGDatum, i: number, groups: SVGSVGElement[]): SVGGElement { +function svgGroupSelector(this: SVGSVGElement, d: SVGDatum, i: number, groups: SVGSVGElement[] | ArrayLike): SVGGElement { return this.querySelector('g')!; // this-type compatible with group element-type to which the selector function will be appplied } @@ -215,13 +216,14 @@ emptySubSelection = svgEl.selectAll(undefined); // Using selectAll(...) sub-selection with a string argument. -let elementsUnknownData: d3Selection.Selection = svgEl.selectAll('g'); +let elementsUnknownData: d3Selection.Selection = svgEl.selectAll('g'); +// let elementsAndDataUnknown: d3Selection.Selection = svgEl.selectAll('g'); // fails with strictFunctionTypes let gElementsOldData: d3Selection.Selection = svgEl.selectAll('g'); // gElementsOldData = svgEl.selectAll('g'); // fails default type parameters of selectAll for group element type and datum type do not match // Using selectAll(...) sub-selection with a selector function argument. -function svgGroupSelectorAll(this: SVGSVGElement, d: SVGDatum, i: number, groups: SVGSVGElement[]): NodeListOf { +function svgGroupSelectorAll(this: SVGSVGElement, d: SVGDatum, i: number, groups: SVGSVGElement[] | d3Selection.ArrayLike): NodeListOf { return this.querySelectorAll('g'); // this-type compatible with group element-type to which the selector function will be appplied } @@ -774,7 +776,7 @@ nRow = td2.data(); // flattened matrix (Array[16] of number) // Tests of Alternative DOM Manipulation // --------------------------------------------------------------------------------------- -// append(...) and creator(...) ---------------------------------------------------------- +// append(...), creator(...) and create(...) --------------------------------------------- // without append<...> typing returned selection has group element of type BaseType let newDiv: d3Selection.Selection; @@ -805,6 +807,12 @@ newDiv2 = body.append(function(d, i, g) { // return this.ownerDocument.createElement('a'); // fails, HTMLDivElement expected by inference, HTMLAnchorElement returned // }); +// create a detached element + +let detachedDiv: d3Selection.Selection; + +detachedDiv = d3Selection.create('div'); + // insert(...) --------------------------------------------------------------------------- // without insert<...> typing returned selection has group element of type BaseType @@ -847,6 +855,18 @@ newParagraph2 = body.insert(typeValueFunction, 'p.second-paragraph'); newParagraph2 = body.insert(typeValueFunction, beforeValueFunction); newParagraph2 = body.insert(typeValueFunction); +// clone(...) ---------------------------------------------------------------------------- + +let clonedParagraph: d3Selection.Selection; + +// shallow clone +clonedParagraph = newParagraph2.clone(); + +// deep clone + +newParagraph.append('span'); +clonedParagraph = newParagraph2.clone(true); + // sort(...) ----------------------------------------------------------------------------- // NB: Return new selection of same type @@ -925,14 +945,14 @@ circles = circles.call(enforceMinRadius, 40); // check chaining return type by r // on(...) ------------------------------------------------------------------------------- -let listener: undefined | ((this: HTMLBodyElement, datum: BodyDatum, index: number, group: HTMLBodyElement[] | ArrayLike) => void); +let listener: undefined | ((this: HTMLBodyElement, datum: BodyDatum, index: number, group: HTMLBodyElement[] | d3Selection.ArrayLike) => void); body = body.on('click', function(d, i, g) { const that: HTMLBodyElement = this; // const that2: SVGElement = this; // fails, type mismatch const datum: BodyDatum = d; const index: number = i; - const group: HTMLBodyElement[] | ArrayLike = g; + const group: HTMLBodyElement[] | d3Selection.ArrayLike = g; console.log('onclick print body background color: ', this.bgColor); // HTMLBodyElement console.log('onclick print "foo" datum property: ', d.foo); // BodyDatum type }); @@ -988,13 +1008,11 @@ interface SuccessEvent { } const successEvent = { type: 'wonEuro2016', team: 'Island' }; -let customListener: (this: HTMLBodyElement, finalOpponent: string) => string; - -customListener = finalOpponent => { +function customListener(this: HTMLBodyElement | null, finalOpponent: string): string { const e = d3Selection.event; return `${e.team} defeated ${finalOpponent} in the EURO 2016 Cup. Who would have thought!!!`; -}; +} const resultText: string = d3Selection.customEvent(successEvent, customListener, body.node(), 'Wales'); diff --git a/types/d3-selection/index.d.ts b/types/d3-selection/index.d.ts index b5231f37c2..7e23c4aaeb 100644 --- a/types/d3-selection/index.d.ts +++ b/types/d3-selection/index.d.ts @@ -1,9 +1,9 @@ -// Type definitions for D3JS d3-selection module 1.2 +// Type definitions for D3JS d3-selection module 1.3 // Project: https://github.com/d3/d3-selection/ // Definitions by: Tom Wanzek , Alex Ford , Boris Yankov // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// Last module patch version validated against: 1.2.0 +// Last module patch version validated against: 1.3.0 // -------------------------------------------------------------------------- // Shared Type Definitions and Interfaces @@ -532,6 +532,15 @@ export interface Selection; + /** * Returns a new selection merging this selection with the specified other selection. * The returned selection has the same number of groups and the same parents as this selection. @@ -1103,6 +1112,15 @@ export function window(DOMNode: Window | Document | Element): Window; // for explicit bound-context dependent use // --------------------------------------------------------------------------- +/** + * Given the specified element name, returns a single-element selection containing + * a detached element of the given name in the current document. + * + * @param name Tag name of the element to be added. See "namespace" for details on supported namespace prefixes, + * such as for SVG elements. + */ +export function create(name: string): Selection; + /** * Given the specified element name, returns a function which creates an element of the given name, * assuming that "this" is the parent element. diff --git a/types/d3-selection/tsconfig.json b/types/d3-selection/tsconfig.json index fa2d410466..9ee4a0eef4 100644 --- a/types/d3-selection/tsconfig.json +++ b/types/d3-selection/tsconfig.json @@ -8,7 +8,7 @@ "noImplicitAny": true, "noImplicitThis": true, "strictNullChecks": true, - "strictFunctionTypes": false, + "strictFunctionTypes": true, "baseUrl": "../", "typeRoots": [ "../" @@ -22,4 +22,4 @@ "index.d.ts", "d3-selection-tests.ts" ] -} \ No newline at end of file +} From a793660543199f0ae600d0fca1569f66674eeeea Mon Sep 17 00:00:00 2001 From: Dan Vanderkam Date: Thu, 8 Feb 2018 11:44:43 -0500 Subject: [PATCH 94/99] reservoir typings --- types/reservoir/index.d.ts | 35 ++++++++++++++++++++++++++++++ types/reservoir/reservoir-tests.ts | 13 +++++++++++ types/reservoir/tsconfig.json | 24 ++++++++++++++++++++ types/reservoir/tslint.json | 1 + 4 files changed, 73 insertions(+) create mode 100644 types/reservoir/index.d.ts create mode 100644 types/reservoir/reservoir-tests.ts create mode 100644 types/reservoir/tsconfig.json create mode 100644 types/reservoir/tslint.json diff --git a/types/reservoir/index.d.ts b/types/reservoir/index.d.ts new file mode 100644 index 0000000000..b08e8aebfa --- /dev/null +++ b/types/reservoir/index.d.ts @@ -0,0 +1,35 @@ +// Type definitions for reservoir 0.1 +// Project: https://github.com/imbcmdth/reservoir +// Definitions by: Dan Vanderkam +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +export as namespace Reservoir; +export = Reservoir; + +/** + * Create a new reservoir sampler. + * + * @param reservoirSize is the maximum size of the reservoir. This is the number of elements + * to be randomly chosen from the input provided to it using pushSome. Default is 1. + * @param randomNumberGenerator is an optional random number generating function to use in + * place of the default Math.random. + */ +declare function Reservoir( + reservoirSize?: number, + randomNumberGenerator?: () => number +): Reservoir.ReservoirArray; // tslint:disable-line:no-unnecessary-generics + +/*~ If you want to expose types from your module as well, you can + *~ place them in this block. Often you will want to describe the + *~ shape of the return type of the function; that type should + *~ be declared in here, as this example shows. + */ +declare namespace Reservoir { + interface ReservoirArray extends Array { + /** + * datum: one or more elements to consider for inclusion into the reservoir. + * Returns the current length of the reservoir. + */ + pushSome(...datum: T[]): number; + } +} diff --git a/types/reservoir/reservoir-tests.ts b/types/reservoir/reservoir-tests.ts new file mode 100644 index 0000000000..f7775bd1bb --- /dev/null +++ b/types/reservoir/reservoir-tests.ts @@ -0,0 +1,13 @@ +import Reservoir = require('reservoir'); + +// $ExpectType ReservoirArray +const x = Reservoir(1); + +// $ExpectType number +x.pushSome(10, 20, 30, 40); + +// $ExpectType number +x[0]; + +// $ExpectType number +x.length; diff --git a/types/reservoir/tsconfig.json b/types/reservoir/tsconfig.json new file mode 100644 index 0000000000..ff04e5c9d5 --- /dev/null +++ b/types/reservoir/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictFunctionTypes": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true, + "esModuleInterop": true + }, + "files": [ + "index.d.ts", + "reservoir-tests.ts" + ] +} diff --git a/types/reservoir/tslint.json b/types/reservoir/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/reservoir/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" } From 8189f663b909460fd2fd2562dae6befefa7476c0 Mon Sep 17 00:00:00 2001 From: Joel Shepherd Date: Sat, 10 Feb 2018 00:56:54 +1000 Subject: [PATCH 95/99] Fixing incorrect property name --- types/luxon/index.d.ts | 2 +- types/luxon/luxon-tests.ts | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/types/luxon/index.d.ts b/types/luxon/index.d.ts index 7229e45dc4..fac0b90fe6 100644 --- a/types/luxon/index.d.ts +++ b/types/luxon/index.d.ts @@ -287,7 +287,7 @@ declare module 'luxon' { type Features = { intl: boolean; intlTokens: boolean; - timezones: boolean; + zones: boolean; }; namespace Info { diff --git a/types/luxon/luxon-tests.ts b/types/luxon/luxon-tests.ts index 6310342899..11ef254ae9 100644 --- a/types/luxon/luxon-tests.ts +++ b/types/luxon/luxon-tests.ts @@ -78,6 +78,9 @@ i.toString(); /* Info */ Info.months(); Info.weekdays('long'); +Info.features().intl; +Info.features().intlTokens; +Info.features().zones; /* Settings */ Settings.defaultLocale; From 75d6eb9895e94c56fe6312f30d00a3912143839f Mon Sep 17 00:00:00 2001 From: Victor Moukhortov Date: Fri, 9 Feb 2018 10:16:30 -0500 Subject: [PATCH 96/99] Update stompjs types Fix to correctly reflect actual library. --- types/stompjs/index.d.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/types/stompjs/index.d.ts b/types/stompjs/index.d.ts index 008b99b511..d1c6696e56 100644 --- a/types/stompjs/index.d.ts +++ b/types/stompjs/index.d.ts @@ -26,7 +26,7 @@ export class Client { debug(...args: string[]): any; - connect(headers: { login: string, passcode: string, host?: string }, connectCallback: (frame?: Frame) => any, errorCallback?: (error: string) => any): any; + connect(headers: { login?: string, passcode?: string, host?: string }, connectCallback: (frame?: Frame) => any, errorCallback?: (error: string) => any): any; connect(login: string, passcode: string, connectCallback: (frame?: Frame) => any, errorCallback?: (error: string) => any, host?: string): any; disconnect(disconnectCallback: () => any, headers?: {}): any; @@ -56,8 +56,8 @@ export class Frame { toString(): string; sizeOfUTF8(s: string): number; - unmarshall(datas: any): any; - marshall(command: string, headers?: {}, body?: string): any; + static unmarshall(datas: any): any; + static marshall(command: string, headers?: {}, body?: string): any; } export function client(url: string, protocols?: string | Array): Client; From 0f0c24c3dbf49471aecbcdfc520929d08c8a8ccc Mon Sep 17 00:00:00 2001 From: Victor Moukhortov Date: Fri, 9 Feb 2018 11:01:36 -0500 Subject: [PATCH 97/99] fix: stompjs tests --- types/stompjs/stompjs-tests.ts | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/types/stompjs/stompjs-tests.ts b/types/stompjs/stompjs-tests.ts index 15331fc81f..b9fb15cc7e 100644 --- a/types/stompjs/stompjs-tests.ts +++ b/types/stompjs/stompjs-tests.ts @@ -44,6 +44,11 @@ client.connect('user', 'pass', () => { }, (error) => { }, 'host'); client.connect('user', 'pass', (frame) => { }, (error) => { }); client.connect('user', 'pass', (frame) => { }, (error) => { }, 'host'); +client.connect({}, () => { }); +client.connect({}, () => { }, () => { }); +client.connect({}, () => { }, (error) => { }); +client.connect({}, (frame) => { }, (error) => { }); + client.disconnect(() => { }); client.disconnect(() => { }, {}); @@ -90,11 +95,11 @@ frame.toString(); frame.sizeOfUTF8('abc'); -frame.unmarshall(0); -frame.unmarshall('data'); -frame.unmarshall({}); -frame.unmarshall([{}, {}]); +Stomp.Frame.unmarshall(0); +Stomp.Frame.unmarshall('data'); +Stomp.Frame.unmarshall({}); +Stomp.Frame.unmarshall([{}, {}]); -frame.marshall('command'); -frame.marshall('command', {}); -frame.marshall('command', {}, 'body'); +Stomp.Frame.marshall('command'); +Stomp.Frame.marshall('command', {}); +Stomp.Frame.marshall('command', {}, 'body'); From bcc5bc34cb4d18fedb2e68ae3585c512b2fcffd6 Mon Sep 17 00:00:00 2001 From: Victor Moukhortov Date: Fri, 9 Feb 2018 11:05:39 -0500 Subject: [PATCH 98/99] fix: stompjs static Frame.sizeOfUTF8 --- types/stompjs/index.d.ts | 2 +- types/stompjs/stompjs-tests.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/types/stompjs/index.d.ts b/types/stompjs/index.d.ts index d1c6696e56..b1e48dab53 100644 --- a/types/stompjs/index.d.ts +++ b/types/stompjs/index.d.ts @@ -55,7 +55,7 @@ export class Frame { constructor(command: string, headers?: {}, body?: string); toString(): string; - sizeOfUTF8(s: string): number; + static sizeOfUTF8(s: string): number; static unmarshall(datas: any): any; static marshall(command: string, headers?: {}, body?: string): any; } diff --git a/types/stompjs/stompjs-tests.ts b/types/stompjs/stompjs-tests.ts index b9fb15cc7e..d745b09a4d 100644 --- a/types/stompjs/stompjs-tests.ts +++ b/types/stompjs/stompjs-tests.ts @@ -93,7 +93,7 @@ frame = new Stomp.Frame('command', {}, 'body'); frame.toString(); -frame.sizeOfUTF8('abc'); +Stomp.Frame.sizeOfUTF8('abc'); Stomp.Frame.unmarshall(0); Stomp.Frame.unmarshall('data'); From 352d74076ae4b1b93bd6320244790763d4efd16d Mon Sep 17 00:00:00 2001 From: Victor Moukhortov Date: Fri, 9 Feb 2018 15:39:49 -0500 Subject: [PATCH 99/99] fix: provide extra signature to connect --- types/stompjs/index.d.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/types/stompjs/index.d.ts b/types/stompjs/index.d.ts index b1e48dab53..852119d814 100644 --- a/types/stompjs/index.d.ts +++ b/types/stompjs/index.d.ts @@ -26,7 +26,8 @@ export class Client { debug(...args: string[]): any; - connect(headers: { login?: string, passcode?: string, host?: string }, connectCallback: (frame?: Frame) => any, errorCallback?: (error: string) => any): any; + connect(headers: { login: string, passcode: string, host?: string }, connectCallback: (frame?: Frame) => any, errorCallback?: (error: string) => any): any; + connect(headers: { }, connectCallback: (frame?: Frame) => any, errorCallback?: (error: string) => any): any; connect(login: string, passcode: string, connectCallback: (frame?: Frame) => any, errorCallback?: (error: string) => any, host?: string): any; disconnect(disconnectCallback: () => any, headers?: {}): any;