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;