@digitaldefiance/node-ecies-lib 4.10.7 → 4.10.8

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.
@@ -0,0 +1,208 @@
1
+ /**
2
+ * @fileoverview Strong typing system for Node.js ECIES ID providers
3
+ *
4
+ * This module provides strongly-typed alternatives to the standard Node.js ECIES configuration
5
+ * system, enabling compile-time type safety for ID provider operations.
6
+ *
7
+ * The standard approach:
8
+ * ```typescript
9
+ * const Constants = getNodeRuntimeConfiguration();
10
+ * const id = Constants.idProvider.generate(); // Returns Uint8Array (no strong typing)
11
+ * const obj = Constants.idProvider.fromBytes(bytes); // Returns unknown (requires casting)
12
+ * ```
13
+ *
14
+ * The typed approach:
15
+ * ```typescript
16
+ * const provider = getEnhancedNodeIdProvider<ObjectId>();
17
+ * const id = provider.generateTyped(); // Returns ObjectId (strongly typed)
18
+ * const obj = provider.fromBytesTyped(bytes); // Returns ObjectId (no casting needed)
19
+ * ```
20
+ *
21
+ * @version 4.10.7
22
+ * @since 4.10.7
23
+ */
24
+ import type { IIdProvider } from '@digitaldefiance/ecies-lib';
25
+ import type { ObjectId } from 'bson';
26
+ import { getNodeRuntimeConfiguration, type NodeRuntimeConfiguration, type NodeRuntimeOverrides } from './constants';
27
+ /**
28
+ * Enhanced ID provider that includes both original methods and strongly-typed alternatives.
29
+ * This is a drop-in replacement for the standard ID provider with additional type safety.
30
+ *
31
+ * @template TID The native ID type (ObjectId, string, etc.)
32
+ */
33
+ export interface IEnhancedNodeIdProvider<TID> extends IIdProvider<TID> {
34
+ /**
35
+ * Generate a new ID with strong typing.
36
+ * @returns A strongly-typed ID of type TID
37
+ */
38
+ generateTyped(): TID;
39
+ /**
40
+ * Convert bytes to strongly-typed ID.
41
+ * @param bytes The bytes to convert
42
+ * @returns A strongly-typed ID of type TID
43
+ */
44
+ fromBytesTyped(bytes: Uint8Array): TID;
45
+ /**
46
+ * Access to the underlying provider for advanced operations.
47
+ */
48
+ readonly underlyingProvider: IIdProvider<TID>;
49
+ }
50
+ /**
51
+ * Simple typed ID provider with minimal API surface.
52
+ * Only provides the typed methods without the original IIdProvider interface.
53
+ *
54
+ * @template TID The native ID type (ObjectId, string, etc.)
55
+ */
56
+ export interface ITypedNodeIdProvider<TID> {
57
+ /**
58
+ * Generate a new ID with strong typing.
59
+ * @returns A strongly-typed ID of type TID
60
+ */
61
+ generateTyped(): TID;
62
+ /**
63
+ * Convert bytes to strongly-typed ID.
64
+ * @param bytes The bytes to convert
65
+ * @returns A strongly-typed ID of type TID
66
+ */
67
+ fromBytesTyped(bytes: Uint8Array): TID;
68
+ /**
69
+ * Convert strongly-typed ID to bytes.
70
+ * @param id The ID to convert
71
+ * @returns The ID as bytes
72
+ */
73
+ toBytesTyped(id: TID): Uint8Array;
74
+ /**
75
+ * Serialize strongly-typed ID to string.
76
+ * @param id The ID to serialize
77
+ * @returns The serialized ID
78
+ */
79
+ serializeTyped(id: TID): string;
80
+ /**
81
+ * Deserialize string to strongly-typed ID.
82
+ * @param serialized The serialized ID
83
+ * @returns The deserialized ID
84
+ */
85
+ deserializeTyped(serialized: string): TID;
86
+ /**
87
+ * The byte length of IDs produced by this provider.
88
+ */
89
+ readonly byteLength: number;
90
+ /**
91
+ * The name of this provider.
92
+ */
93
+ readonly name: string;
94
+ }
95
+ /**
96
+ * Node.js typed configuration wrapper that provides strongly-typed ID operations
97
+ * alongside the complete Node.js runtime configuration.
98
+ *
99
+ * @template TID The native ID type (ObjectId, string, etc.)
100
+ */
101
+ export interface INodeTypedConfiguration<TID> {
102
+ /**
103
+ * The complete Node.js runtime configuration.
104
+ */
105
+ readonly constants: NodeRuntimeConfiguration;
106
+ /**
107
+ * Enhanced ID provider with both original and typed methods.
108
+ */
109
+ readonly enhancedIdProvider: IEnhancedNodeIdProvider<TID>;
110
+ /**
111
+ * Simple typed ID provider with minimal API surface.
112
+ */
113
+ readonly typedIdProvider: ITypedNodeIdProvider<TID>;
114
+ /**
115
+ * Generate a new strongly-typed ID.
116
+ * @returns A strongly-typed ID of type TID
117
+ */
118
+ generateId(): TID;
119
+ /**
120
+ * Convert bytes to strongly-typed ID.
121
+ * @param bytes The bytes to convert
122
+ * @returns A strongly-typed ID of type TID
123
+ */
124
+ idFromBytes(bytes: Uint8Array): TID;
125
+ /**
126
+ * Convert strongly-typed ID to bytes.
127
+ * @param id The ID to convert
128
+ * @returns The ID as bytes
129
+ */
130
+ idToBytes(id: TID): Uint8Array;
131
+ }
132
+ /**
133
+ * Get an enhanced Node.js ID provider with both original and strongly-typed methods.
134
+ * This is a drop-in replacement for `getNodeRuntimeConfiguration().idProvider` with additional type safety.
135
+ *
136
+ * @template TID The native ID type (ObjectId, string, etc.)
137
+ * @returns Enhanced ID provider with typed methods
138
+ *
139
+ * @example
140
+ * ```typescript
141
+ * // ObjectId example
142
+ * const provider = getEnhancedNodeIdProvider<ObjectId>();
143
+ * const id = provider.generateTyped(); // Returns ObjectId (strongly typed)
144
+ * const obj = provider.fromBytesTyped(bytes); // Returns ObjectId (no casting needed)
145
+ *
146
+ * // Still supports original methods
147
+ * const rawBytes = provider.generate(); // Returns Uint8Array
148
+ * const unknown = provider.fromBytes(bytes); // Returns unknown (requires casting)
149
+ * ```
150
+ */
151
+ export declare function getEnhancedNodeIdProvider<TID>(): IEnhancedNodeIdProvider<TID>;
152
+ /**
153
+ * Get a simple typed Node.js ID provider with minimal API surface.
154
+ * Only provides strongly-typed methods without the original IIdProvider interface.
155
+ *
156
+ * @template TID The native ID type (ObjectId, string, etc.)
157
+ * @returns Simple typed ID provider
158
+ *
159
+ * @example
160
+ * ```typescript
161
+ * // GUID example
162
+ * const provider = getTypedNodeIdProvider<string>();
163
+ * const id = provider.generateTyped(); // Returns string (strongly typed)
164
+ * const obj = provider.fromBytesTyped(bytes); // Returns string (no casting needed)
165
+ * ```
166
+ */
167
+ export declare function getTypedNodeIdProvider<TID>(): ITypedNodeIdProvider<TID>;
168
+ /**
169
+ * Create a complete Node.js typed configuration with strongly-typed ID operations.
170
+ * Provides access to the full Node.js runtime configuration plus typed ID helpers.
171
+ *
172
+ * @template TID The native ID type (ObjectId, string, etc.)
173
+ * @param overrides Optional configuration overrides
174
+ * @returns Complete typed configuration
175
+ *
176
+ * @example
177
+ * ```typescript
178
+ * // ObjectId configuration
179
+ * const config = createNodeObjectIdConfiguration();
180
+ * const id = config.generateId(); // Returns ObjectId (strongly typed)
181
+ * const constants = config.constants; // Full Node.js runtime configuration
182
+ *
183
+ * // Custom provider configuration
184
+ * const customConfig = createNodeTypedConfiguration<string>({
185
+ * idProvider: new UuidProvider()
186
+ * });
187
+ * const uuid = customConfig.generateId(); // Returns string (strongly typed)
188
+ * ```
189
+ */
190
+ export declare function createNodeTypedConfiguration<TID>(overrides?: NodeRuntimeOverrides): INodeTypedConfiguration<TID>;
191
+ /**
192
+ * Create a Node.js ObjectId configuration with strongly-typed operations.
193
+ * Pre-configured for MongoDB ObjectId usage with the ObjectIdProvider.
194
+ *
195
+ * @returns ObjectId typed configuration
196
+ *
197
+ * @example
198
+ * ```typescript
199
+ * const config = createNodeObjectIdConfiguration();
200
+ * const objectId = config.generateId(); // Returns ObjectId (strongly typed)
201
+ * const bytes = config.idToBytes(objectId); // Convert to bytes
202
+ * const restored = config.idFromBytes(bytes); // Convert back to ObjectId
203
+ * ```
204
+ */
205
+ export declare function createNodeObjectIdConfiguration(): INodeTypedConfiguration<ObjectId>;
206
+ export { getNodeRuntimeConfiguration as getTypedNodeConfiguration };
207
+ export type { ObjectIdProvider as _ObjectIdProvider, GuidV4Provider as _GuidV4Provider, UuidProvider as _UuidProvider, CustomIdProvider as _CustomIdProvider, } from '@digitaldefiance/ecies-lib';
208
+ //# sourceMappingURL=typed-configuration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typed-configuration.d.ts","sourceRoot":"","sources":["../../../../packages/digitaldefiance-node-ecies-lib/src/typed-configuration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAErC,OAAO,EACL,2BAA2B,EAE3B,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EAC1B,MAAM,aAAa,CAAC;AAErB;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB,CAAC,GAAG,CAAE,SAAQ,WAAW,CAAC,GAAG,CAAC;IACpE;;;OAGG;IACH,aAAa,IAAI,GAAG,CAAC;IAErB;;;;OAIG;IACH,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,GAAG,CAAC;IAEvC;;OAEG;IACH,QAAQ,CAAC,kBAAkB,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;CAC/C;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB,CAAC,GAAG;IACvC;;;OAGG;IACH,aAAa,IAAI,GAAG,CAAC;IAErB;;;;OAIG;IACH,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,GAAG,CAAC;IAEvC;;;;OAIG;IACH,YAAY,CAAC,EAAE,EAAE,GAAG,GAAG,UAAU,CAAC;IAElC;;;;OAIG;IACH,cAAc,CAAC,EAAE,EAAE,GAAG,GAAG,MAAM,CAAC;IAEhC;;;;OAIG;IACH,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG,CAAC;IAE1C;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB,CAAC,GAAG;IAC1C;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,wBAAwB,CAAC;IAE7C;;OAEG;IACH,QAAQ,CAAC,kBAAkB,EAAE,uBAAuB,CAAC,GAAG,CAAC,CAAC;IAE1D;;OAEG;IACH,QAAQ,CAAC,eAAe,EAAE,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAEpD;;;OAGG;IACH,UAAU,IAAI,GAAG,CAAC;IAElB;;;;OAIG;IACH,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,GAAG,CAAC;IAEpC;;;;OAIG;IACH,SAAS,CAAC,EAAE,EAAE,GAAG,GAAG,UAAU,CAAC;CAChC;AA2ID;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,KAAK,uBAAuB,CAAC,GAAG,CAAC,CAK7E;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,KAAK,oBAAoB,CAAC,GAAG,CAAC,CAGvE;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAC9C,SAAS,CAAC,EAAE,oBAAoB,GAC/B,uBAAuB,CAAC,GAAG,CAAC,CAK9B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,+BAA+B,IAAI,uBAAuB,CAAC,QAAQ,CAAC,CAInF;AAGD,OAAO,EAAE,2BAA2B,IAAI,yBAAyB,EAAE,CAAC;AAGpE,YAAY,EACV,gBAAgB,IAAI,iBAAiB,EACrC,cAAc,IAAI,eAAe,EACjC,YAAY,IAAI,aAAa,EAC7B,gBAAgB,IAAI,iBAAiB,GACtC,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,230 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Strong typing system for Node.js ECIES ID providers
4
+ *
5
+ * This module provides strongly-typed alternatives to the standard Node.js ECIES configuration
6
+ * system, enabling compile-time type safety for ID provider operations.
7
+ *
8
+ * The standard approach:
9
+ * ```typescript
10
+ * const Constants = getNodeRuntimeConfiguration();
11
+ * const id = Constants.idProvider.generate(); // Returns Uint8Array (no strong typing)
12
+ * const obj = Constants.idProvider.fromBytes(bytes); // Returns unknown (requires casting)
13
+ * ```
14
+ *
15
+ * The typed approach:
16
+ * ```typescript
17
+ * const provider = getEnhancedNodeIdProvider<ObjectId>();
18
+ * const id = provider.generateTyped(); // Returns ObjectId (strongly typed)
19
+ * const obj = provider.fromBytesTyped(bytes); // Returns ObjectId (no casting needed)
20
+ * ```
21
+ *
22
+ * @version 4.10.7
23
+ * @since 4.10.7
24
+ */
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.getTypedNodeConfiguration = void 0;
27
+ exports.getEnhancedNodeIdProvider = getEnhancedNodeIdProvider;
28
+ exports.getTypedNodeIdProvider = getTypedNodeIdProvider;
29
+ exports.createNodeTypedConfiguration = createNodeTypedConfiguration;
30
+ exports.createNodeObjectIdConfiguration = createNodeObjectIdConfiguration;
31
+ const constants_1 = require("./constants");
32
+ Object.defineProperty(exports, "getTypedNodeConfiguration", { enumerable: true, get: function () { return constants_1.getNodeRuntimeConfiguration; } });
33
+ /**
34
+ * Implementation of enhanced ID provider.
35
+ */
36
+ class EnhancedNodeIdProvider {
37
+ provider;
38
+ constructor(provider) {
39
+ this.provider = provider;
40
+ }
41
+ // Original IIdProvider methods (delegated)
42
+ get byteLength() {
43
+ return this.provider.byteLength;
44
+ }
45
+ get name() {
46
+ return this.provider.name;
47
+ }
48
+ generate() {
49
+ return this.provider.generate();
50
+ }
51
+ fromBytes(bytes) {
52
+ return this.provider.fromBytes(bytes);
53
+ }
54
+ toBytes(id) {
55
+ return this.provider.toBytes(id);
56
+ }
57
+ serialize(bytes) {
58
+ return this.provider.serialize(bytes);
59
+ }
60
+ deserialize(serialized) {
61
+ return this.provider.deserialize(serialized);
62
+ }
63
+ equals(a, b) {
64
+ return this.provider.equals(a, b);
65
+ }
66
+ clone(id) {
67
+ return this.provider.clone(id);
68
+ }
69
+ idToString(id) {
70
+ return this.provider.idToString(id);
71
+ }
72
+ idFromString(str) {
73
+ return this.provider.idFromString(str);
74
+ }
75
+ validate(id) {
76
+ return this.provider.validate(id);
77
+ }
78
+ // Enhanced typed methods
79
+ generateTyped() {
80
+ return this.provider.fromBytes(this.provider.generate());
81
+ }
82
+ fromBytesTyped(bytes) {
83
+ return this.provider.fromBytes(bytes);
84
+ }
85
+ get underlyingProvider() {
86
+ return this.provider;
87
+ }
88
+ }
89
+ /**
90
+ * Implementation of simple typed ID provider.
91
+ */
92
+ class TypedNodeIdProvider {
93
+ provider;
94
+ constructor(provider) {
95
+ this.provider = provider;
96
+ }
97
+ get byteLength() {
98
+ return this.provider.byteLength;
99
+ }
100
+ get name() {
101
+ return this.provider.name;
102
+ }
103
+ generateTyped() {
104
+ return this.provider.fromBytes(this.provider.generate());
105
+ }
106
+ fromBytesTyped(bytes) {
107
+ return this.provider.fromBytes(bytes);
108
+ }
109
+ toBytesTyped(id) {
110
+ return this.provider.toBytes(id);
111
+ }
112
+ serializeTyped(id) {
113
+ return this.provider.serialize(this.provider.toBytes(id));
114
+ }
115
+ deserializeTyped(serialized) {
116
+ return this.provider.fromBytes(this.provider.deserialize(serialized));
117
+ }
118
+ }
119
+ /**
120
+ * Implementation of Node.js typed configuration.
121
+ */
122
+ class NodeTypedConfiguration {
123
+ constants;
124
+ enhancedIdProvider;
125
+ typedIdProvider;
126
+ constructor(constants) {
127
+ this.constants = constants;
128
+ this.enhancedIdProvider = new EnhancedNodeIdProvider(constants.idProvider);
129
+ this.typedIdProvider = new TypedNodeIdProvider(constants.idProvider);
130
+ }
131
+ generateId() {
132
+ return this.enhancedIdProvider.generateTyped();
133
+ }
134
+ idFromBytes(bytes) {
135
+ return this.enhancedIdProvider.fromBytesTyped(bytes);
136
+ }
137
+ idToBytes(id) {
138
+ return this.enhancedIdProvider.underlyingProvider.toBytes(id);
139
+ }
140
+ }
141
+ /**
142
+ * Get an enhanced Node.js ID provider with both original and strongly-typed methods.
143
+ * This is a drop-in replacement for `getNodeRuntimeConfiguration().idProvider` with additional type safety.
144
+ *
145
+ * @template TID The native ID type (ObjectId, string, etc.)
146
+ * @returns Enhanced ID provider with typed methods
147
+ *
148
+ * @example
149
+ * ```typescript
150
+ * // ObjectId example
151
+ * const provider = getEnhancedNodeIdProvider<ObjectId>();
152
+ * const id = provider.generateTyped(); // Returns ObjectId (strongly typed)
153
+ * const obj = provider.fromBytesTyped(bytes); // Returns ObjectId (no casting needed)
154
+ *
155
+ * // Still supports original methods
156
+ * const rawBytes = provider.generate(); // Returns Uint8Array
157
+ * const unknown = provider.fromBytes(bytes); // Returns unknown (requires casting)
158
+ * ```
159
+ */
160
+ function getEnhancedNodeIdProvider() {
161
+ const constants = (0, constants_1.getNodeRuntimeConfiguration)();
162
+ return new EnhancedNodeIdProvider(constants.idProvider);
163
+ }
164
+ /**
165
+ * Get a simple typed Node.js ID provider with minimal API surface.
166
+ * Only provides strongly-typed methods without the original IIdProvider interface.
167
+ *
168
+ * @template TID The native ID type (ObjectId, string, etc.)
169
+ * @returns Simple typed ID provider
170
+ *
171
+ * @example
172
+ * ```typescript
173
+ * // GUID example
174
+ * const provider = getTypedNodeIdProvider<string>();
175
+ * const id = provider.generateTyped(); // Returns string (strongly typed)
176
+ * const obj = provider.fromBytesTyped(bytes); // Returns string (no casting needed)
177
+ * ```
178
+ */
179
+ function getTypedNodeIdProvider() {
180
+ const constants = (0, constants_1.getNodeRuntimeConfiguration)();
181
+ return new TypedNodeIdProvider(constants.idProvider);
182
+ }
183
+ /**
184
+ * Create a complete Node.js typed configuration with strongly-typed ID operations.
185
+ * Provides access to the full Node.js runtime configuration plus typed ID helpers.
186
+ *
187
+ * @template TID The native ID type (ObjectId, string, etc.)
188
+ * @param overrides Optional configuration overrides
189
+ * @returns Complete typed configuration
190
+ *
191
+ * @example
192
+ * ```typescript
193
+ * // ObjectId configuration
194
+ * const config = createNodeObjectIdConfiguration();
195
+ * const id = config.generateId(); // Returns ObjectId (strongly typed)
196
+ * const constants = config.constants; // Full Node.js runtime configuration
197
+ *
198
+ * // Custom provider configuration
199
+ * const customConfig = createNodeTypedConfiguration<string>({
200
+ * idProvider: new UuidProvider()
201
+ * });
202
+ * const uuid = customConfig.generateId(); // Returns string (strongly typed)
203
+ * ```
204
+ */
205
+ function createNodeTypedConfiguration(overrides) {
206
+ const constants = overrides
207
+ ? (0, constants_1.registerNodeRuntimeConfiguration)(overrides)
208
+ : (0, constants_1.getNodeRuntimeConfiguration)();
209
+ return new NodeTypedConfiguration(constants);
210
+ }
211
+ /**
212
+ * Create a Node.js ObjectId configuration with strongly-typed operations.
213
+ * Pre-configured for MongoDB ObjectId usage with the ObjectIdProvider.
214
+ *
215
+ * @returns ObjectId typed configuration
216
+ *
217
+ * @example
218
+ * ```typescript
219
+ * const config = createNodeObjectIdConfiguration();
220
+ * const objectId = config.generateId(); // Returns ObjectId (strongly typed)
221
+ * const bytes = config.idToBytes(objectId); // Convert to bytes
222
+ * const restored = config.idFromBytes(bytes); // Convert back to ObjectId
223
+ * ```
224
+ */
225
+ function createNodeObjectIdConfiguration() {
226
+ // Use the default configuration which already uses ObjectIdProvider
227
+ const constants = (0, constants_1.getNodeRuntimeConfiguration)();
228
+ return new NodeTypedConfiguration(constants);
229
+ }
230
+ //# sourceMappingURL=typed-configuration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typed-configuration.js","sourceRoot":"","sources":["../../../../packages/digitaldefiance-node-ecies-lib/src/typed-configuration.ts"],"names":[],"mappings":"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"}