@digitaldefiance/ecies-lib 4.8.2 → 4.8.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/package.json +9 -3
  2. package/src/interfaces/constants.d.ts +10 -2
  3. package/src/interfaces/constants.d.ts.map +1 -1
  4. package/src/interfaces/id-provider.d.ts +36 -9
  5. package/src/interfaces/id-provider.d.ts.map +1 -1
  6. package/src/interfaces/index.d.ts +1 -0
  7. package/src/interfaces/index.d.ts.map +1 -1
  8. package/src/interfaces/index.js.map +1 -1
  9. package/src/lib/base-id-provider.d.ts +24 -17
  10. package/src/lib/base-id-provider.d.ts.map +1 -1
  11. package/src/lib/base-id-provider.js +16 -43
  12. package/src/lib/base-id-provider.js.map +1 -1
  13. package/src/lib/guid.d.ts +16 -0
  14. package/src/lib/guid.d.ts.map +1 -1
  15. package/src/lib/guid.js +91 -15
  16. package/src/lib/guid.js.map +1 -1
  17. package/src/lib/id-providers/custom-provider.d.ts +15 -7
  18. package/src/lib/id-providers/custom-provider.d.ts.map +1 -1
  19. package/src/lib/id-providers/custom-provider.js +20 -8
  20. package/src/lib/id-providers/custom-provider.js.map +1 -1
  21. package/src/lib/id-providers/guidv4-provider.d.ts +8 -3
  22. package/src/lib/id-providers/guidv4-provider.d.ts.map +1 -1
  23. package/src/lib/id-providers/guidv4-provider.js +15 -6
  24. package/src/lib/id-providers/guidv4-provider.js.map +1 -1
  25. package/src/lib/id-providers/index.d.ts +0 -1
  26. package/src/lib/id-providers/index.d.ts.map +1 -1
  27. package/src/lib/id-providers/index.js.map +1 -1
  28. package/src/lib/id-providers/objectid-provider.d.ts +9 -4
  29. package/src/lib/id-providers/objectid-provider.d.ts.map +1 -1
  30. package/src/lib/id-providers/objectid-provider.js +15 -11
  31. package/src/lib/id-providers/objectid-provider.js.map +1 -1
  32. package/src/lib/id-providers/uuid-provider.d.ts +7 -3
  33. package/src/lib/id-providers/uuid-provider.d.ts.map +1 -1
  34. package/src/lib/id-providers/uuid-provider.js +13 -1
  35. package/src/lib/id-providers/uuid-provider.js.map +1 -1
  36. package/src/lib/voting/audit.d.ts +6 -0
  37. package/src/lib/voting/audit.d.ts.map +1 -1
  38. package/src/lib/voting/audit.js +15 -4
  39. package/src/lib/voting/audit.js.map +1 -1
  40. package/src/lib/voting/bulletin-board.d.ts +21 -24
  41. package/src/lib/voting/bulletin-board.d.ts.map +1 -1
  42. package/src/lib/voting/bulletin-board.js +19 -10
  43. package/src/lib/voting/bulletin-board.js.map +1 -1
  44. package/src/lib/voting/poll-core.d.ts.map +1 -1
  45. package/src/lib/voting/poll-core.js +4 -3
  46. package/src/lib/voting/poll-core.js.map +1 -1
  47. package/src/member.d.ts +4 -2
  48. package/src/member.d.ts.map +1 -1
  49. package/src/member.js +43 -17
  50. package/src/member.js.map +1 -1
  51. package/src/secure-buffer.d.ts +3 -4
  52. package/src/secure-buffer.d.ts.map +1 -1
  53. package/src/secure-buffer.js +5 -10
  54. package/src/secure-buffer.js.map +1 -1
  55. package/src/secure-string.d.ts +4 -3
  56. package/src/secure-string.d.ts.map +1 -1
  57. package/src/secure-string.js +3 -4
  58. package/src/secure-string.js.map +1 -1
  59. package/src/services/ecies/interfaces.d.ts +9 -8
  60. package/src/services/ecies/interfaces.d.ts.map +1 -1
  61. package/src/services/ecies/multi-recipient.d.ts +19 -10
  62. package/src/services/ecies/multi-recipient.d.ts.map +1 -1
  63. package/src/services/ecies/multi-recipient.js +16 -7
  64. package/src/services/ecies/multi-recipient.js.map +1 -1
  65. package/src/services/ecies/service.d.ts +7 -6
  66. package/src/services/ecies/service.d.ts.map +1 -1
  67. package/src/services/ecies/service.js.map +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@digitaldefiance/ecies-lib",
3
- "version": "4.8.2",
3
+ "version": "4.8.6",
4
4
  "description": "Digital Defiance ECIES Library",
5
5
  "homepage": "https://github.com/Digital-Defiance/ecies-lib",
6
6
  "repository": {
@@ -28,10 +28,16 @@
28
28
  "build:stream": "npx nx build --outputStyle=stream digitaldefiance-ecies-lib",
29
29
  "build:logged": "npx nx build --outputStyle=stream digitaldefiance-ecies-lib 2>&1 | ansifilter -o build.log",
30
30
  "test": "npx nx test digitaldefiance-ecies-lib",
31
+ "test:large": "node --max-old-space-size=8192 --expose-gc ../../node_modules/.bin/jest tests/integration/large-message-tests.spec.ts",
32
+ "test:16": "npx nx test digitaldefiance-ecies-lib --parallel=16",
33
+ "test:dev": "NODE_ENV=development npx nx test digitaldefiance-ecies-lib --configuration=development",
34
+ "test:16:dev:noansi": "NODE_ENV=development npx nx test digitaldefiance-ecies-lib --parallel=16 --configuration=development | ansifilter",
35
+ "test:dev:16": "NODE_ENV=development npx nx test digitaldefiance-ecies-lib --parallel=16 --configuration=development",
36
+ "test:dev:16:logged": "NODE_ENV=development npx nx test digitaldefiance-ecies-lib --parallel=16 --configuration=development 2>&1 | ansifilter -o test.log",
31
37
  "test:nocache": "npx nx test --skip-nx-cache digitaldefiance-ecies-lib",
32
38
  "test:stream": "npx nx test --outputStyle=stream digitaldefiance-ecies-lib",
33
- "test:logged": "npx jest --config=jest.config.js 2>&1 | tee test.log",
34
- "test:logged:verbose": "VERBOSE_TESTS=1 npx jest --config=jest.config.js 2>&1 | tee test.log",
39
+ "test:logged": "npx jest --config=jest.config.js 2>&1 | ansifilter | tee test.log",
40
+ "test:logged:verbose": "VERBOSE_TESTS=1 npx jest --config=jest.config.js 2>&1 | ansifilter | tee test.log",
35
41
  "test:coverage": "npx jest --coverage --testPathPattern=digitaldefiance-ecies-lib --coverageReporters=text",
36
42
  "check:circular": "madge --circular --extensions ts src/index.ts",
37
43
  "check:circular:json": "madge --circular --extensions ts --json src/index.ts",
@@ -1,7 +1,7 @@
1
1
  import type { Pbkdf2Profiles } from '../pbkdf2-profiles';
2
2
  import type { IChecksumConsts } from './checksum-consts';
3
3
  import type { IECIESConstants } from './ecies-consts';
4
- import type { IIdProvider } from './id-provider';
4
+ import type { IIdProviderBase } from './id-provider';
5
5
  import type { IPBkdf2Consts } from './pbkdf2-consts';
6
6
  import type { IVotingConsts } from './voting-consts';
7
7
  export interface IConstants {
@@ -31,6 +31,10 @@ export interface IConstants {
31
31
  *
32
32
  * Default: ObjectIdProvider (12 bytes, MongoDB compatible)
33
33
  *
34
+ * The base interface provides Uint8Array-based operations (generate, validate,
35
+ * serialize, deserialize). For typed operations with the native ID type,
36
+ * cast to the specific provider type or use IIdProvider<T>.
37
+ *
34
38
  * @example
35
39
  * ```typescript
36
40
  * import { GuidV4Provider } from './lib/id-providers';
@@ -39,9 +43,13 @@ export interface IConstants {
39
43
  * const config = createRuntimeConfiguration({
40
44
  * idProvider: new GuidV4Provider()
41
45
  * });
46
+ *
47
+ * // For typed access:
48
+ * const provider = config.idProvider as GuidV4Provider;
49
+ * const guid = provider.fromBytes(provider.generate());
42
50
  * ```
43
51
  */
44
- idProvider: IIdProvider;
52
+ idProvider: IIdProviderBase;
45
53
  CHECKSUM: IChecksumConsts;
46
54
  ECIES: IECIESConstants;
47
55
  PBKDF2: IPBkdf2Consts;
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/interfaces/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAElB;;;;OAIG;IACH,gBAAgB,EAAE,MAAM,CAAC;IAEzB;;;;OAIG;IACH,gBAAgB,EAAE,MAAM,CAAC;IAEzB;;;;;;;;;;;;;;;OAeG;IACH,UAAU,EAAE,WAAW,CAAC;IAExB,QAAQ,EAAE,eAAe,CAAC;IAC1B,KAAK,EAAE,eAAe,CAAC;IACvB,MAAM,EAAE,aAAa,CAAC;IACtB,eAAe,EAAE,cAAc,CAAC;IAChC,MAAM,EAAE,aAAa,CAAC;IAEtB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAC;CAC3B"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/interfaces/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAElB;;;;OAIG;IACH,gBAAgB,EAAE,MAAM,CAAC;IAEzB;;;;OAIG;IACH,gBAAgB,EAAE,MAAM,CAAC;IAEzB;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,UAAU,EAAE,eAAe,CAAC;IAE5B,QAAQ,EAAE,eAAe,CAAC;IAC1B,KAAK,EAAE,eAAe,CAAC;IACvB,MAAM,EAAE,aAAa,CAAC;IACtB,eAAe,EAAE,cAAc,CAAC;IAChC,MAAM,EAAE,aAAa,CAAC;IAEtB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAC;CAC3B"}
@@ -1,8 +1,9 @@
1
1
  /**
2
- * Interface for ID providers that supply recipient identifiers.
3
- * This allows the library to support various ID formats (ObjectID, GUID, UUID, custom).
2
+ * Base interface for ID providers with Uint8Array-based operations.
3
+ * This non-generic interface is used by IConstants and validation functions
4
+ * that don't need to know the native ID type.
4
5
  */
5
- export interface IIdProvider {
6
+ export interface IIdProviderBase {
6
7
  /**
7
8
  * The fixed byte length of IDs produced by this provider.
8
9
  * This determines the size of recipient ID fields in encrypted messages.
@@ -41,6 +42,32 @@ export interface IIdProvider {
41
42
  * @throws Error if the string is not a valid representation
42
43
  */
43
44
  deserialize(str: string): Uint8Array;
45
+ /**
46
+ * Convert any ID representation to canonical Uint8Array format.
47
+ * At the base level, accepts unknown and returns Uint8Array.
48
+ * @param id The ID in any supported format
49
+ * @returns The ID as a Uint8Array of length `byteLength`
50
+ */
51
+ toBytes(id: unknown): Uint8Array;
52
+ /**
53
+ * Convert Uint8Array to the provider's native representation.
54
+ * At the base level, returns unknown.
55
+ * @param bytes The ID as a Uint8Array
56
+ * @returns The ID in the provider's native format
57
+ */
58
+ fromBytes(bytes: Uint8Array): unknown;
59
+ }
60
+ /**
61
+ * Full interface for ID providers that supply recipient identifiers.
62
+ * This allows the library to support various ID formats (ObjectID, GUID, UUID, custom).
63
+ *
64
+ * The generic type T represents the provider's "native" ID type:
65
+ * - ObjectIdProvider: T = ObjectId
66
+ * - GuidV4Provider: T = GuidV4
67
+ * - UuidProvider: T = string
68
+ * - CustomIdProvider: T = Uint8Array
69
+ */
70
+ export interface IIdProvider<T> extends IIdProviderBase {
44
71
  /**
45
72
  * Compare two IDs for equality.
46
73
  * Default implementation uses constant-time comparison.
@@ -48,39 +75,39 @@ export interface IIdProvider {
48
75
  * @param b Second ID
49
76
  * @returns True if IDs are equal, false otherwise
50
77
  */
51
- equals(a: Uint8Array, b: Uint8Array): boolean;
78
+ equals(a: T, b: T): boolean;
52
79
  /**
53
80
  * Clone an ID buffer.
54
81
  * Default implementation creates a defensive copy.
55
82
  * @param id The ID to clone
56
83
  * @returns A new Uint8Array with the same contents
57
84
  */
58
- clone(id: Uint8Array): Uint8Array;
85
+ clone(id: T): T;
59
86
  /**
60
87
  * Convert an ID of unknown type to a string representation.
61
88
  * This is useful when dealing with generic IDs that might be Uint8Array, string, or other types.
62
89
  * @param id The ID to convert
63
90
  * @returns A string representation of the ID
64
91
  */
65
- idToString(id: unknown): string;
92
+ idToString(id: T): string;
66
93
  /**
67
94
  * Convert a string representation of an ID back to an ID buffer.
68
95
  * This is an alias for `deserialize` to provide symmetry with `idToString`.
69
96
  * @param str The string representation of the ID
70
97
  * @returns The ID as a Uint8Array of length `byteLength`
71
98
  */
72
- idFromString(str: string): Uint8Array;
99
+ idFromString(str: string): T;
73
100
  /**
74
101
  * Convert any ID representation to canonical Uint8Array format.
75
102
  * @param id The ID in any supported format
76
103
  * @returns The ID as a Uint8Array of length `byteLength`
77
104
  */
78
- toBytes(id: unknown): Uint8Array;
105
+ toBytes(id: T): Uint8Array;
79
106
  /**
80
107
  * Convert Uint8Array to the provider's native representation.
81
108
  * @param bytes The ID as a Uint8Array
82
109
  * @returns The ID in the provider's native format
83
110
  */
84
- fromBytes(bytes: Uint8Array): unknown;
111
+ fromBytes(bytes: Uint8Array): T;
85
112
  }
86
113
  //# sourceMappingURL=id-provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"id-provider.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/interfaces/id-provider.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,QAAQ,IAAI,UAAU,CAAC;IAEvB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC;IAElC;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,EAAE,UAAU,GAAG,MAAM,CAAC;IAElC;;;;;;OAMG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC;IAErC;;;;;;OAMG;IACH,MAAM,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC;IAE9C;;;;;OAKG;IACH,KAAK,CAAC,EAAE,EAAE,UAAU,GAAG,UAAU,CAAC;IAElC;;;;;OAKG;IACH,UAAU,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM,CAAC;IAEhC;;;;;OAKG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC;IAEtC;;;;OAIG;IACH,OAAO,CAAC,EAAE,EAAE,OAAO,GAAG,UAAU,CAAC;IAEjC;;;;OAIG;IACH,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC;CACvC"}
1
+ {"version":3,"file":"id-provider.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/interfaces/id-provider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,QAAQ,IAAI,UAAU,CAAC;IAEvB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC;IAElC;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,EAAE,UAAU,GAAG,MAAM,CAAC;IAElC;;;;;;OAMG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC;IAErC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,EAAE,OAAO,GAAG,UAAU,CAAC;IAEjC;;;;;OAKG;IACH,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC;CACvC;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,CAAE,SAAQ,eAAe;IACrD;;;;;;OAMG;IACH,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;IAE5B;;;;;OAKG;IACH,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;IAEhB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC;IAE1B;;;;;OAKG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC;IAE7B;;;;OAIG;IACH,OAAO,CAAC,EAAE,EAAE,CAAC,GAAG,UAAU,CAAC;IAE3B;;;;OAIG;IACH,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,CAAC,CAAC;CACjC"}
@@ -6,6 +6,7 @@ export * from './ecies-consts';
6
6
  export * from './ecies-file-service';
7
7
  export * from './ecies-library';
8
8
  export * from './guid';
9
+ export type { IIdProvider, IIdProviderBase } from './id-provider';
9
10
  export type * from './member';
10
11
  export * from './member-storage';
11
12
  export type * from './member-with-mnemonic';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,QAAQ,CAAC;AACvB,mBAAmB,UAAU,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,mBAAmB,wBAAwB,CAAC;AAC5C,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,OAAO,EACL,KAAK,KAAK,EACV,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,wBAAwB,EAC7B,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,QAAQ,CAAC;AACvB,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAClE,mBAAmB,UAAU,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,mBAAmB,wBAAwB,CAAC;AAC5C,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,OAAO,EACL,KAAK,KAAK,EACV,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,wBAAwB,EAC7B,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/interfaces/index.ts"],"names":[],"mappings":";;;;AAAA,4DAAkC;AAClC,4DAAkC;AAClC,sDAA4B;AAC5B,yDAA+B;AAC/B,yDAA+B;AAC/B,+DAAqC;AACrC,0DAAgC;AAChC,iDAAuB;AAEvB,2DAAiC;AAEjC,0DAAgC;AAChC,0DAAgC;AAChC,0DAAgC;AAChC,4DAAkC;AAClC,wDAA8B;AAC9B,0DAAgC;AAChC,6CAOuB;AADrB,4GAAA,aAAa,OAAA;AAEf,2DAAiC;AACjC,0DAAgC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/interfaces/index.ts"],"names":[],"mappings":";;;;AAAA,4DAAkC;AAClC,4DAAkC;AAClC,sDAA4B;AAC5B,yDAA+B;AAC/B,yDAA+B;AAC/B,+DAAqC;AACrC,0DAAgC;AAChC,iDAAuB;AAGvB,2DAAiC;AAEjC,0DAAgC;AAChC,0DAAgC;AAChC,0DAAgC;AAChC,4DAAkC;AAClC,wDAA8B;AAC9B,0DAAgC;AAChC,6CAOuB;AADrB,4GAAA,aAAa,OAAA;AAEf,2DAAiC;AACjC,0DAAgC"}
@@ -1,8 +1,11 @@
1
1
  import type { IIdProvider } from '../interfaces/id-provider';
2
2
  /**
3
3
  * Base class for ID providers with common utility methods.
4
+ *
5
+ * Subclasses must implement all abstract methods for their specific ID type.
6
+ * For providers where T = Uint8Array, see ByteIdProvider for a concrete base.
4
7
  */
5
- export declare abstract class BaseIdProvider implements IIdProvider {
8
+ export declare abstract class BaseIdProvider<T> implements IIdProvider<T> {
6
9
  abstract readonly byteLength: number;
7
10
  abstract readonly name: string;
8
11
  abstract generate(): Uint8Array;
@@ -10,36 +13,40 @@ export declare abstract class BaseIdProvider implements IIdProvider {
10
13
  abstract serialize(id: Uint8Array): string;
11
14
  abstract deserialize(str: string): Uint8Array;
12
15
  /**
13
- * Convert an ID of unknown type to a string representation.
14
- * Default implementation handles Uint8Array using serialize(), and falls back to String().
16
+ * Create a defensive copy of an ID.
15
17
  */
16
- idToString(id: unknown): string;
18
+ abstract clone(id: T): T;
17
19
  /**
18
- * Convert a string representation of an ID back to an ID buffer.
19
- * Default implementation delegates to `deserialize`.
20
+ * Convert Uint8Array to the provider's native representation.
20
21
  */
21
- idFromString(str: string): Uint8Array;
22
+ abstract fromBytes(bytes: Uint8Array): T;
22
23
  /**
23
- * Convert any ID representation to canonical Uint8Array format.
24
- * Default implementation handles common types.
24
+ * Convert the provider's native representation to Uint8Array.
25
25
  */
26
- toBytes(id: unknown): Uint8Array;
26
+ abstract toBytes(id: T): Uint8Array;
27
27
  /**
28
- * Convert Uint8Array to the provider's native representation.
29
- * Default implementation returns Uint8Array (no conversion).
28
+ * Compare two IDs for equality.
29
+ * Subclasses should implement constant-time comparison where possible.
30
30
  */
31
- fromBytes(bytes: Uint8Array): unknown;
31
+ abstract equals(a: T, b: T): boolean;
32
32
  /**
33
- * Constant-time comparison to prevent timing attacks.
33
+ * Convert an ID to a string representation.
34
+ * Default implementation delegates to serialize().
34
35
  */
35
- equals(a: Uint8Array, b: Uint8Array): boolean;
36
+ idToString(id: T): string;
36
37
  /**
37
- * Create a defensive copy of an ID.
38
+ * Convert a string representation of an ID back to the native type.
39
+ * Default implementation delegates to deserialize().
38
40
  */
39
- clone(id: Uint8Array): Uint8Array;
41
+ idFromString(str: string): T;
40
42
  /**
41
43
  * Validate ID length matches expected byte length.
42
44
  */
43
45
  protected validateLength(id: Uint8Array, context: string): void;
46
+ /**
47
+ * Constant-time comparison for Uint8Array buffers.
48
+ * Utility method for subclasses to use in their equals() implementation.
49
+ */
50
+ protected constantTimeEquals(a: Uint8Array, b: Uint8Array): boolean;
44
51
  }
45
52
  //# sourceMappingURL=base-id-provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"base-id-provider.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/lib/base-id-provider.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D;;GAEG;AACH,8BAAsB,cAAe,YAAW,WAAW;IACzD,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAE/B,QAAQ,CAAC,QAAQ,IAAI,UAAU;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,UAAU,GAAG,OAAO;IAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE,UAAU,GAAG,MAAM;IAC1C,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU;IAE7C;;;OAGG;IACH,UAAU,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM;IAO/B;;;OAGG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU;IAIrC;;;OAGG;IACH,OAAO,CAAC,EAAE,EAAE,OAAO,GAAG,UAAU;IAWhC;;;OAGG;IACH,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO;IAKrC;;OAEG;IACH,MAAM,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,OAAO;IAY7C;;OAEG;IACH,KAAK,CAAC,EAAE,EAAE,UAAU,GAAG,UAAU;IAIjC;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;CAUhE"}
1
+ {"version":3,"file":"base-id-provider.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/lib/base-id-provider.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D;;;;;GAKG;AACH,8BAAsB,cAAc,CAAC,CAAC,CAAE,YAAW,WAAW,CAAC,CAAC,CAAC;IAC/D,QAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAE/B,QAAQ,CAAC,QAAQ,IAAI,UAAU;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,UAAU,GAAG,OAAO;IAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE,UAAU,GAAG,MAAM;IAC1C,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU;IAE7C;;OAEG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC;IAExB;;OAEG;IACH,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,CAAC;IAExC;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,GAAG,UAAU;IAEnC;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,OAAO;IAEpC;;;OAGG;IACH,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM;IAIzB;;;OAGG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC;IAI5B;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAW/D;;;OAGG;IACH,SAAS,CAAC,kBAAkB,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,OAAO;CAUpE"}
@@ -5,51 +5,38 @@ const id_provider_error_type_1 = require("../enumerations/id-provider-error-type
5
5
  const id_provider_1 = require("../errors/id-provider");
6
6
  /**
7
7
  * Base class for ID providers with common utility methods.
8
+ *
9
+ * Subclasses must implement all abstract methods for their specific ID type.
10
+ * For providers where T = Uint8Array, see ByteIdProvider for a concrete base.
8
11
  */
9
12
  class BaseIdProvider {
10
13
  /**
11
- * Convert an ID of unknown type to a string representation.
12
- * Default implementation handles Uint8Array using serialize(), and falls back to String().
14
+ * Convert an ID to a string representation.
15
+ * Default implementation delegates to serialize().
13
16
  */
14
17
  idToString(id) {
15
- if (id instanceof Uint8Array) {
16
- return this.serialize(id);
17
- }
18
- return String(id);
18
+ return this.serialize(this.toBytes(id));
19
19
  }
20
20
  /**
21
- * Convert a string representation of an ID back to an ID buffer.
22
- * Default implementation delegates to `deserialize`.
21
+ * Convert a string representation of an ID back to the native type.
22
+ * Default implementation delegates to deserialize().
23
23
  */
24
24
  idFromString(str) {
25
- return this.deserialize(str);
25
+ return this.fromBytes(this.deserialize(str));
26
26
  }
27
27
  /**
28
- * Convert any ID representation to canonical Uint8Array format.
29
- * Default implementation handles common types.
28
+ * Validate ID length matches expected byte length.
30
29
  */
31
- toBytes(id) {
32
- if (id instanceof Uint8Array) {
33
- return this.clone(id);
34
- }
35
- if (typeof id === 'string') {
36
- return this.deserialize(id);
30
+ validateLength(id, context) {
31
+ if (id.length !== this.byteLength) {
32
+ throw new id_provider_1.IdProviderError(id_provider_error_type_1.IdProviderErrorType.InvalidLength, undefined, undefined, { context, expected: this.byteLength, actual: id.length });
37
33
  }
38
- // For other types, convert to string first then deserialize
39
- return this.deserialize(String(id));
40
34
  }
41
35
  /**
42
- * Convert Uint8Array to the provider's native representation.
43
- * Default implementation returns Uint8Array (no conversion).
36
+ * Constant-time comparison for Uint8Array buffers.
37
+ * Utility method for subclasses to use in their equals() implementation.
44
38
  */
45
- fromBytes(bytes) {
46
- this.validateLength(bytes, 'BaseIdProvider.fromBytes');
47
- return this.clone(bytes);
48
- }
49
- /**
50
- * Constant-time comparison to prevent timing attacks.
51
- */
52
- equals(a, b) {
39
+ constantTimeEquals(a, b) {
53
40
  if (a.length !== b.length) {
54
41
  return false;
55
42
  }
@@ -59,20 +46,6 @@ class BaseIdProvider {
59
46
  }
60
47
  return diff === 0;
61
48
  }
62
- /**
63
- * Create a defensive copy of an ID.
64
- */
65
- clone(id) {
66
- return new Uint8Array(id);
67
- }
68
- /**
69
- * Validate ID length matches expected byte length.
70
- */
71
- validateLength(id, context) {
72
- if (id.length !== this.byteLength) {
73
- throw new id_provider_1.IdProviderError(id_provider_error_type_1.IdProviderErrorType.InvalidLength, undefined, undefined, { context, expected: this.byteLength, actual: id.length });
74
- }
75
- }
76
49
  }
77
50
  exports.BaseIdProvider = BaseIdProvider;
78
51
  //# sourceMappingURL=base-id-provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base-id-provider.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/lib/base-id-provider.ts"],"names":[],"mappings":";;;AAAA,mFAA6E;AAC7E,uDAAwD;AAGxD;;GAEG;AACH,MAAsB,cAAc;IASlC;;;OAGG;IACH,UAAU,CAAC,EAAW;QACpB,IAAI,EAAE,YAAY,UAAU,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC;IACpB,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,GAAW;QACtB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACH,OAAO,CAAC,EAAW;QACjB,IAAI,EAAE,YAAY,UAAU,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACxB,CAAC;QACD,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC9B,CAAC;QACD,4DAA4D;QAC5D,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACtC,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,KAAiB;QACzB,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,0BAA0B,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,CAAa,EAAE,CAAa;QACjC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;QACD,OAAO,IAAI,KAAK,CAAC,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,EAAc;QAClB,OAAO,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACO,cAAc,CAAC,EAAc,EAAE,OAAe;QACtD,IAAI,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;YAClC,MAAM,IAAI,6BAAe,CACvB,4CAAmB,CAAC,aAAa,EACjC,SAAS,EACT,SAAS,EACT,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAC1D,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAvFD,wCAuFC"}
1
+ {"version":3,"file":"base-id-provider.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/lib/base-id-provider.ts"],"names":[],"mappings":";;;AAAA,mFAA6E;AAC7E,uDAAwD;AAGxD;;;;;GAKG;AACH,MAAsB,cAAc;IA8BlC;;;OAGG;IACH,UAAU,CAAC,EAAK;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,GAAW;QACtB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACO,cAAc,CAAC,EAAc,EAAE,OAAe;QACtD,IAAI,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;YAClC,MAAM,IAAI,6BAAe,CACvB,4CAAmB,CAAC,aAAa,EACjC,SAAS,EACT,SAAS,EACT,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAC1D,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;OAGG;IACO,kBAAkB,CAAC,CAAa,EAAE,CAAa;QACvD,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;QACD,OAAO,IAAI,KAAK,CAAC,CAAC;IACpB,CAAC;CACF;AA1ED,wCA0EC"}
package/src/lib/guid.d.ts CHANGED
@@ -45,6 +45,14 @@ export declare class GuidV4 implements IGuidV4 {
45
45
  * Regex for validating full hex GUID format
46
46
  */
47
47
  private static readonly FULL_HEX_PATTERN;
48
+ /**
49
+ * Type guard to check if a value is a Uint8Array
50
+ */
51
+ private static isUint8Array;
52
+ /**
53
+ * Type guard to check if a value is a Buffer or Uint8Array
54
+ */
55
+ private static isBufferLike;
48
56
  /**
49
57
  * Cached empty/nil GUID constant (all zeros)
50
58
  */
@@ -143,6 +151,14 @@ export declare class GuidV4 implements IGuidV4 {
143
151
  * @returns A new GuidV4 instance
144
152
  */
145
153
  static fromBuffer(buffer: Uint8Array): GuidV4;
154
+ /**
155
+ * Factory method to create a GUID from a raw Uint8Array.
156
+ * This is an explicit alias for fromBuffer(), provided for clarity when working
157
+ * with browser environments where Uint8Array is the native binary type.
158
+ * @param bytes The raw 16-byte Uint8Array
159
+ * @returns A new GuidV4 instance
160
+ */
161
+ static fromUint8Array(bytes: Uint8Array): GuidV4;
146
162
  /**
147
163
  * Creates a namespace-based v3 GUID (MD5 hash).
148
164
  * Use this for deterministic GUIDs based on a namespace and name.
@@ -1 +1 @@
1
- {"version":3,"file":"guid.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/lib/guid.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"guid.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/lib/guid.ts"],"names":[],"mappings":"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"}
package/src/lib/guid.js CHANGED
@@ -55,6 +55,18 @@ class GuidV4 {
55
55
  * Regex for validating full hex GUID format
56
56
  */
57
57
  static FULL_HEX_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
58
+ /**
59
+ * Type guard to check if a value is a Uint8Array
60
+ */
61
+ static isUint8Array(value) {
62
+ return value instanceof Uint8Array;
63
+ }
64
+ /**
65
+ * Type guard to check if a value is a Buffer or Uint8Array
66
+ */
67
+ static isBufferLike(value) {
68
+ return buffer_compat_1.Buffer.isBuffer(value) || GuidV4.isUint8Array(value);
69
+ }
58
70
  /**
59
71
  * Cached empty/nil GUID constant (all zeros)
60
72
  */
@@ -128,7 +140,16 @@ class GuidV4 {
128
140
  // Convert to raw buffer
129
141
  const buffer = GuidV4.toRawGuidBuffer(value);
130
142
  // Validate against UUID standard (skip for boundary values)
131
- const fullHex = GuidV4.toFullHexGuid(buffer.toString('hex'));
143
+ let hexString;
144
+ if (GuidV4.isUint8Array(buffer) && !buffer_compat_1.Buffer.isBuffer(buffer)) {
145
+ hexString = Array.from(buffer)
146
+ .map((b) => b.toString(16).padStart(2, '0'))
147
+ .join('');
148
+ }
149
+ else {
150
+ hexString = buffer.toString('hex');
151
+ }
152
+ const fullHex = GuidV4.toFullHexGuid(hexString);
132
153
  const isBoundary = GuidV4.isBoundaryValue(fullHex);
133
154
  if (!isBoundary && !uuid.validate(fullHex)) {
134
155
  throw new guid_1.GuidError(guid_error_type_1.GuidErrorType.InvalidGuid, expectedBrand, undefined, buffer);
@@ -307,6 +328,16 @@ class GuidV4 {
307
328
  static fromBuffer(buffer) {
308
329
  return new GuidV4(buffer);
309
330
  }
331
+ /**
332
+ * Factory method to create a GUID from a raw Uint8Array.
333
+ * This is an explicit alias for fromBuffer(), provided for clarity when working
334
+ * with browser environments where Uint8Array is the native binary type.
335
+ * @param bytes The raw 16-byte Uint8Array
336
+ * @returns A new GuidV4 instance
337
+ */
338
+ static fromUint8Array(bytes) {
339
+ return new GuidV4(bytes);
340
+ }
310
341
  /**
311
342
  * Creates a namespace-based v3 GUID (MD5 hash).
312
343
  * Use this for deterministic GUIDs based on a namespace and name.
@@ -373,7 +404,16 @@ class GuidV4 {
373
404
  */
374
405
  get asFullHexGuid() {
375
406
  if (!this._cachedFullHex) {
376
- this._cachedFullHex = GuidV4.toFullHexGuid(this._value.toString('hex'));
407
+ let hexString;
408
+ if (GuidV4.isUint8Array(this._value) && !buffer_compat_1.Buffer.isBuffer(this._value)) {
409
+ hexString = Array.from(this._value)
410
+ .map((b) => b.toString(16).padStart(2, '0'))
411
+ .join('');
412
+ }
413
+ else {
414
+ hexString = this._value.toString('hex');
415
+ }
416
+ this._cachedFullHex = GuidV4.toFullHexGuid(hexString);
377
417
  }
378
418
  return this._cachedFullHex;
379
419
  }
@@ -554,7 +594,7 @@ class GuidV4 {
554
594
  if (typeof value === 'bigint') {
555
595
  valueLength = value.toString(16).length;
556
596
  }
557
- else if (buffer_compat_1.Buffer.isBuffer(value)) {
597
+ else if (GuidV4.isBufferLike(value)) {
558
598
  valueLength = value.length;
559
599
  }
560
600
  else {
@@ -564,7 +604,16 @@ class GuidV4 {
564
604
  if (result) {
565
605
  try {
566
606
  const fromBase64 = GuidV4.toRawGuidBuffer(value);
567
- const fullHexGuid = GuidV4.toFullHexGuid(fromBase64.toString('hex'));
607
+ let hexString;
608
+ if (GuidV4.isUint8Array(fromBase64) && !buffer_compat_1.Buffer.isBuffer(fromBase64)) {
609
+ hexString = Array.from(fromBase64)
610
+ .map((b) => b.toString(16).padStart(2, '0'))
611
+ .join('');
612
+ }
613
+ else {
614
+ hexString = fromBase64.toString('hex');
615
+ }
616
+ const fullHexGuid = GuidV4.toFullHexGuid(hexString);
568
617
  // Boundary values are always valid
569
618
  if (GuidV4.isBoundaryValue(fullHexGuid)) {
570
619
  return true;
@@ -596,7 +645,7 @@ class GuidV4 {
596
645
  if (typeof value === 'bigint') {
597
646
  valueLength = value.toString(16).length;
598
647
  }
599
- else if (buffer_compat_1.Buffer.isBuffer(value)) {
648
+ else if (GuidV4.isBufferLike(value)) {
600
649
  valueLength = value.length;
601
650
  }
602
651
  else {
@@ -606,10 +655,19 @@ class GuidV4 {
606
655
  return false;
607
656
  }
608
657
  try {
609
- if (!buffer_compat_1.Buffer.isBuffer(value)) {
658
+ if (!GuidV4.isBufferLike(value)) {
610
659
  return false;
611
660
  }
612
- const fullHexGuid = GuidV4.toFullHexGuid(value.toString('hex'));
661
+ let hexString;
662
+ if (GuidV4.isUint8Array(value) && !buffer_compat_1.Buffer.isBuffer(value)) {
663
+ hexString = Array.from(value)
664
+ .map((b) => b.toString(16).padStart(2, '0'))
665
+ .join('');
666
+ }
667
+ else {
668
+ hexString = value.toString('hex');
669
+ }
670
+ const fullHexGuid = GuidV4.toFullHexGuid(hexString);
613
671
  // Boundary values are always valid
614
672
  if (GuidV4.isBoundaryValue(fullHexGuid)) {
615
673
  return true;
@@ -668,8 +726,10 @@ class GuidV4 {
668
726
  if (typeof value === 'bigint') {
669
727
  return guid_brand_type_1.GuidBrandType.BigIntGuid;
670
728
  }
671
- const isBuffer = buffer_compat_1.Buffer.isBuffer(value);
672
- const expectedLength = isBuffer ? value.length : String(value).length;
729
+ const isBuffer = GuidV4.isBufferLike(value);
730
+ const expectedLength = isBuffer
731
+ ? value.length
732
+ : String(value).length;
673
733
  return GuidV4.lengthToGuidBrand(expectedLength, isBuffer);
674
734
  }
675
735
  /**
@@ -694,12 +754,21 @@ class GuidV4 {
694
754
  if (typeof guid === 'bigint') {
695
755
  return GuidV4.toFullHexFromBigInt(guid);
696
756
  }
697
- else if (buffer_compat_1.Buffer.isBuffer(guid) &&
757
+ else if (GuidV4.isBufferLike(guid) &&
698
758
  guid.length === GuidV4.guidBrandToLength(guid_brand_type_1.GuidBrandType.RawGuidBuffer)) {
699
- const shortHex = guid.toString('hex');
759
+ let hexString;
760
+ if (GuidV4.isUint8Array(guid) && !buffer_compat_1.Buffer.isBuffer(guid)) {
761
+ hexString = Array.from(guid)
762
+ .map((b) => b.toString(16).padStart(2, '0'))
763
+ .join('');
764
+ }
765
+ else {
766
+ hexString = guid.toString('hex');
767
+ }
768
+ const shortHex = hexString;
700
769
  return GuidV4.shortGuidToFullGuid(shortHex);
701
770
  }
702
- else if (buffer_compat_1.Buffer.isBuffer(guid)) {
771
+ else if (GuidV4.isBufferLike(guid)) {
703
772
  throw new guid_1.GuidError(guid_error_type_1.GuidErrorType.InvalidGuid);
704
773
  }
705
774
  // all remaining cases are string types
@@ -729,11 +798,18 @@ class GuidV4 {
729
798
  const fullHex = GuidV4.toFullHexFromBigInt(guid);
730
799
  return fullHex.replace(/-/g, '');
731
800
  }
732
- else if (buffer_compat_1.Buffer.isBuffer(guid) &&
801
+ else if (GuidV4.isBufferLike(guid) &&
733
802
  guid.length === GuidV4.guidBrandToLength(guid_brand_type_1.GuidBrandType.RawGuidBuffer)) {
734
- return guid.toString('hex');
803
+ if (GuidV4.isUint8Array(guid) && !buffer_compat_1.Buffer.isBuffer(guid)) {
804
+ return Array.from(guid)
805
+ .map((b) => b.toString(16).padStart(2, '0'))
806
+ .join('');
807
+ }
808
+ else {
809
+ return guid.toString('hex');
810
+ }
735
811
  }
736
- else if (buffer_compat_1.Buffer.isBuffer(guid)) {
812
+ else if (GuidV4.isBufferLike(guid)) {
737
813
  throw new guid_1.GuidError(guid_error_type_1.GuidErrorType.InvalidGuid);
738
814
  }
739
815
  // all remaining cases are string types