@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.
- package/README.md +126 -4
- package/package.json +2 -2
- package/src/examples/typed-configuration-usage.d.ts +54 -0
- package/src/examples/typed-configuration-usage.d.ts.map +1 -0
- package/src/examples/typed-configuration-usage.js +178 -0
- package/src/examples/typed-configuration-usage.js.map +1 -0
- package/src/index.d.ts +1 -0
- package/src/index.d.ts.map +1 -1
- package/src/index.js +2 -0
- package/src/index.js.map +1 -1
- package/src/member.d.ts +52 -0
- package/src/member.d.ts.map +1 -1
- package/src/member.js +72 -0
- package/src/member.js.map +1 -1
- package/src/services/ecies/multi-recipient.d.ts +1 -1
- package/src/services/ecies/multi-recipient.d.ts.map +1 -1
- package/src/services/ecies/multi-recipient.js +3 -4
- package/src/services/ecies/multi-recipient.js.map +1 -1
- package/src/services/encryption-stream.d.ts.map +1 -1
- package/src/services/encryption-stream.js +12 -4
- package/src/services/encryption-stream.js.map +1 -1
- package/src/services/multi-recipient-processor.d.ts.map +1 -1
- package/src/services/multi-recipient-processor.js +2 -3
- package/src/services/multi-recipient-processor.js.map +1 -1
- package/src/typed-configuration.d.ts +208 -0
- package/src/typed-configuration.d.ts.map +1 -0
- package/src/typed-configuration.js +230 -0
- package/src/typed-configuration.js.map +1 -0
|
@@ -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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"}
|