From 7bb204fdb56581fda358657ea9f8fb377b255b1b Mon Sep 17 00:00:00 2001 From: Felipe Date: Thu, 1 Jun 2017 16:53:41 +0200 Subject: [PATCH] update uuid to v3 (#16264) * update uuid to v3 - remove the parse/unparse functions - allow importing 'uuid/v1' and 'uuid/v4' directly - keep v2 typings as 'uuid-v2' * Fix v2 folder naming --- types/uuid/index.d.ts | 37 +++++++++------------------------- types/uuid/interfaces.d.ts | 21 +++++++++++++++++++ types/uuid/tsconfig.json | 9 +++++++-- types/uuid/tslint.json | 1 + types/uuid/uuid-tests.ts | 40 ++++++++++++++++++++++++------------- types/uuid/v1.d.ts | 5 +++++ types/uuid/v2/index.d.ts | 35 ++++++++++++++++++++++++++++++++ types/uuid/v2/tsconfig.json | 25 +++++++++++++++++++++++ types/uuid/v2/uuid-tests.ts | 31 ++++++++++++++++++++++++++++ types/uuid/v4.d.ts | 5 +++++ 10 files changed, 165 insertions(+), 44 deletions(-) create mode 100644 types/uuid/interfaces.d.ts create mode 100644 types/uuid/tslint.json create mode 100644 types/uuid/v1.d.ts create mode 100644 types/uuid/v2/index.d.ts create mode 100644 types/uuid/v2/tsconfig.json create mode 100644 types/uuid/v2/uuid-tests.ts create mode 100644 types/uuid/v4.d.ts diff --git a/types/uuid/index.d.ts b/types/uuid/index.d.ts index 2fd5467e3e..cc16cc830d 100644 --- a/types/uuid/index.d.ts +++ b/types/uuid/index.d.ts @@ -1,35 +1,16 @@ -// Type definitions for uuid v2.0.3 +// Type definitions for uuid 3.0 // Project: https://github.com/defunctzombie/node-uuid // Definitions by: Oliver Hoffmann +// Felipe Ochoa // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.2 -/// +import { v1, v4 } from './interfaces'; -declare namespace uuid { - interface V1Options { - node?: number[]; - clockseq?: number; - msecs?: number | Date; - nsecs?: number; - } - - type V4Options = { random: number[] } | { rng: () => number[]; } - - interface UuidStatic { - (options?: V4Options): string; - (options: V4Options | null, buffer: number[], offset?: number): number[]; - (options: V4Options | null, buffer: Buffer, offset?: number): Buffer; - - v1(options?: V1Options): string; - v1(options: V1Options | null, buffer: number[], offset?: number): number[]; - v1(options: V1Options | null, buffer: Buffer, offset?: number): Buffer; - v4: UuidStatic; - parse(id: string): number[]; - parse(id: string, buffer: number[], offset?: number): number[]; - parse(id: string, buffer: Buffer, offset?: number): Buffer; - unparse(buffer: number[] | Buffer, offset?: number): string; - } +interface UuidStatic { + v1: v1; + v4: v4; } -declare const uuid: uuid.UuidStatic -export = uuid +declare const uuid: UuidStatic & v4; +export = uuid; diff --git a/types/uuid/interfaces.d.ts b/types/uuid/interfaces.d.ts new file mode 100644 index 0000000000..65ff0d4819 --- /dev/null +++ b/types/uuid/interfaces.d.ts @@ -0,0 +1,21 @@ +/// + +// Uses ArrayLike to admit Unit8 and co. +export type OutputBuffer = ArrayLike | Buffer; + +export interface V1Options { + node?: number[]; + clockseq?: number; + msecs?: number | Date; + nsecs?: number; +} + +export type V4Options = {random: number[]} | {rng(): number[]}; + +export type v1String = (options?: V1Options) => string; +export type v1Buffer = (options: V1Options | null | undefined, buffer: T, offset?: number) => T; +export type v1 = v1String & v1Buffer; + +export type v4String = (options?: V4Options) => string; +export type v4Buffer = (options: V4Options | null | undefined, buffer: T, offset?: number) => T; +export type v4 = v4String & v4Buffer; diff --git a/types/uuid/tsconfig.json b/types/uuid/tsconfig.json index 13ef9e9cca..688d9add4b 100644 --- a/types/uuid/tsconfig.json +++ b/types/uuid/tsconfig.json @@ -6,7 +6,9 @@ ], "noImplicitAny": true, "noImplicitThis": true, - "strictNullChecks": false, + "strictNullChecks": true, + "alwaysStrict": true, + "strict": true, "baseUrl": "../", "typeRoots": [ "../" @@ -17,6 +19,9 @@ }, "files": [ "index.d.ts", + "v1.d.ts", + "v4.d.ts", + "interfaces.d.ts", "uuid-tests.ts" ] -} \ No newline at end of file +} diff --git a/types/uuid/tslint.json b/types/uuid/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/uuid/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" } diff --git a/types/uuid/uuid-tests.ts b/types/uuid/uuid-tests.ts index 2dd5ea7f46..73dedec6c5 100644 --- a/types/uuid/uuid-tests.ts +++ b/types/uuid/uuid-tests.ts @@ -1,31 +1,43 @@ import uuid = require('uuid'); +import v1 = require('uuid/v1'); +import v4 = require('uuid/v4'); let uuidv1: string = uuid.v1(); uuidv1 = uuid.v1({ - node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab], - clockseq: 0x1234, - msecs: new Date('2011-11-01').getTime(), - nsecs: 5678 + node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab], + clockseq: 0x1234, + msecs: new Date('2011-11-01').getTime(), + nsecs: 5678 }); -let bufferv1: number[] = new Array(32); +uuidv1 = v1(); +uuidv1 = v1({ + node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab], + clockseq: 0x1234, + msecs: new Date('2011-11-01').getTime(), + nsecs: 5678 +}); + +let bufferv1 = new Uint8Array(32); bufferv1 = uuid.v1(null, bufferv1); -bufferv1 = uuid.v1(null, bufferv1, 16); +bufferv1 = uuid.v1(undefined, bufferv1, 16); +bufferv1 = v1(undefined, bufferv1); +bufferv1 = v1(null, bufferv1, 16); let uuidv4: string = uuid.v4(); const randoms = [ - 0x10, 0x91, 0x56, 0xbe, 0xc4, 0xfb, 0xc1, 0xea, - 0x71, 0xb4, 0xef, 0xe1, 0x67, 0x1c, 0x58, 0x36 + 0x10, 0x91, 0x56, 0xbe, 0xc4, 0xfb, 0xc1, 0xea, + 0x71, 0xb4, 0xef, 0xe1, 0x67, 0x1c, 0x58, 0x36 ]; uuidv4 = uuid({ random: randoms }); -uuidv4 = uuid({ rng: () => randoms }) +uuidv4 = uuid({ rng: () => randoms }); +uuidv4 = v4({ random: randoms }); +uuidv4 = v4({ rng: () => randoms }); let bufferv4: number[] = new Array(32); -bufferv4 = uuid(null, bufferv4); +bufferv4 = uuid(undefined, bufferv4); bufferv4 = uuid(null, bufferv4, 16); - -let nodeBufferv4 = Buffer.alloc(32); -nodeBufferv4 = uuid.v4(null, nodeBufferv4); -nodeBufferv4 = uuid.v4(null, nodeBufferv4, 16); +bufferv4 = v4(null, bufferv4); +bufferv4 = v4(undefined, bufferv4, 16); diff --git a/types/uuid/v1.d.ts b/types/uuid/v1.d.ts new file mode 100644 index 0000000000..b5fa0f6c61 --- /dev/null +++ b/types/uuid/v1.d.ts @@ -0,0 +1,5 @@ +import { v1 } from './interfaces'; + +declare const v1: v1; + +export = v1; diff --git a/types/uuid/v2/index.d.ts b/types/uuid/v2/index.d.ts new file mode 100644 index 0000000000..2fd5467e3e --- /dev/null +++ b/types/uuid/v2/index.d.ts @@ -0,0 +1,35 @@ +// Type definitions for uuid v2.0.3 +// Project: https://github.com/defunctzombie/node-uuid +// Definitions by: Oliver Hoffmann +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +/// + +declare namespace uuid { + interface V1Options { + node?: number[]; + clockseq?: number; + msecs?: number | Date; + nsecs?: number; + } + + type V4Options = { random: number[] } | { rng: () => number[]; } + + interface UuidStatic { + (options?: V4Options): string; + (options: V4Options | null, buffer: number[], offset?: number): number[]; + (options: V4Options | null, buffer: Buffer, offset?: number): Buffer; + + v1(options?: V1Options): string; + v1(options: V1Options | null, buffer: number[], offset?: number): number[]; + v1(options: V1Options | null, buffer: Buffer, offset?: number): Buffer; + v4: UuidStatic; + parse(id: string): number[]; + parse(id: string, buffer: number[], offset?: number): number[]; + parse(id: string, buffer: Buffer, offset?: number): Buffer; + unparse(buffer: number[] | Buffer, offset?: number): string; + } +} + +declare const uuid: uuid.UuidStatic +export = uuid diff --git a/types/uuid/v2/tsconfig.json b/types/uuid/v2/tsconfig.json new file mode 100644 index 0000000000..62f4072351 --- /dev/null +++ b/types/uuid/v2/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": false, + "baseUrl": "../..", + "typeRoots": [ + "../.." + ], + "paths": { + "uuid": ["uuid/v2"] + }, + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "uuid-tests.ts" + ] +} diff --git a/types/uuid/v2/uuid-tests.ts b/types/uuid/v2/uuid-tests.ts new file mode 100644 index 0000000000..2dd5ea7f46 --- /dev/null +++ b/types/uuid/v2/uuid-tests.ts @@ -0,0 +1,31 @@ +import uuid = require('uuid'); + +let uuidv1: string = uuid.v1(); + +uuidv1 = uuid.v1({ + node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab], + clockseq: 0x1234, + msecs: new Date('2011-11-01').getTime(), + nsecs: 5678 +}); + +let bufferv1: number[] = new Array(32); +bufferv1 = uuid.v1(null, bufferv1); +bufferv1 = uuid.v1(null, bufferv1, 16); + +let uuidv4: string = uuid.v4(); + +const randoms = [ + 0x10, 0x91, 0x56, 0xbe, 0xc4, 0xfb, 0xc1, 0xea, + 0x71, 0xb4, 0xef, 0xe1, 0x67, 0x1c, 0x58, 0x36 +]; +uuidv4 = uuid({ random: randoms }); +uuidv4 = uuid({ rng: () => randoms }) + +let bufferv4: number[] = new Array(32); +bufferv4 = uuid(null, bufferv4); +bufferv4 = uuid(null, bufferv4, 16); + +let nodeBufferv4 = Buffer.alloc(32); +nodeBufferv4 = uuid.v4(null, nodeBufferv4); +nodeBufferv4 = uuid.v4(null, nodeBufferv4, 16); diff --git a/types/uuid/v4.d.ts b/types/uuid/v4.d.ts new file mode 100644 index 0000000000..62b0bc5d04 --- /dev/null +++ b/types/uuid/v4.d.ts @@ -0,0 +1,5 @@ +import { v4 } from './interfaces'; + +declare const v4: v4; + +export = v4;