@digitaldefiance/secrets 2.0.3

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 (79) hide show
  1. package/LICENSE +8 -0
  2. package/README.md +445 -0
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/browser-types.d.ts +112 -0
  5. package/dist/browser-types.d.ts.map +1 -0
  6. package/dist/browser-types.js +242 -0
  7. package/dist/browser-types.js.map +1 -0
  8. package/dist/errors.d.ts +33 -0
  9. package/dist/errors.d.ts.map +1 -0
  10. package/dist/errors.js +92 -0
  11. package/dist/errors.js.map +1 -0
  12. package/dist/esm/.tsbuildinfo +1 -0
  13. package/dist/esm/browser-types.d.ts +112 -0
  14. package/dist/esm/browser-types.d.ts.map +1 -0
  15. package/dist/esm/browser-types.js +201 -0
  16. package/dist/esm/browser-types.js.map +1 -0
  17. package/dist/esm/errors.d.ts +33 -0
  18. package/dist/esm/errors.d.ts.map +1 -0
  19. package/dist/esm/errors.js +54 -0
  20. package/dist/esm/errors.js.map +1 -0
  21. package/dist/esm/node-types.d.ts +87 -0
  22. package/dist/esm/node-types.d.ts.map +1 -0
  23. package/dist/esm/node-types.js +157 -0
  24. package/dist/esm/node-types.js.map +1 -0
  25. package/dist/esm/secrets.d.ts +262 -0
  26. package/dist/esm/secrets.d.ts.map +1 -0
  27. package/dist/esm/secrets.js +894 -0
  28. package/dist/esm/secrets.js.map +1 -0
  29. package/dist/esm/types.d.ts +249 -0
  30. package/dist/esm/types.d.ts.map +1 -0
  31. package/dist/esm/types.js +61 -0
  32. package/dist/esm/types.js.map +1 -0
  33. package/dist/esm/validation.d.ts +34 -0
  34. package/dist/esm/validation.d.ts.map +1 -0
  35. package/dist/esm/validation.js +72 -0
  36. package/dist/esm/validation.js.map +1 -0
  37. package/dist/node-types.d.ts +87 -0
  38. package/dist/node-types.d.ts.map +1 -0
  39. package/dist/node-types.js +191 -0
  40. package/dist/node-types.js.map +1 -0
  41. package/dist/secrets.d.ts +262 -0
  42. package/dist/secrets.d.ts.map +1 -0
  43. package/dist/secrets.js +897 -0
  44. package/dist/secrets.js.map +1 -0
  45. package/dist/types.d.ts +249 -0
  46. package/dist/types.d.ts.map +1 -0
  47. package/dist/types.js +67 -0
  48. package/dist/types.js.map +1 -0
  49. package/dist/umd/.tsbuildinfo +1 -0
  50. package/dist/umd/browser-types.d.ts +112 -0
  51. package/dist/umd/browser-types.d.ts.map +1 -0
  52. package/dist/umd/browser-types.js +252 -0
  53. package/dist/umd/browser-types.js.map +1 -0
  54. package/dist/umd/errors.d.ts +33 -0
  55. package/dist/umd/errors.d.ts.map +1 -0
  56. package/dist/umd/errors.js +102 -0
  57. package/dist/umd/errors.js.map +1 -0
  58. package/dist/umd/node-types.d.ts +87 -0
  59. package/dist/umd/node-types.d.ts.map +1 -0
  60. package/dist/umd/node-types.js +201 -0
  61. package/dist/umd/node-types.js.map +1 -0
  62. package/dist/umd/secrets.d.ts +262 -0
  63. package/dist/umd/secrets.d.ts.map +1 -0
  64. package/dist/umd/secrets.js +907 -0
  65. package/dist/umd/secrets.js.map +1 -0
  66. package/dist/umd/secrets.min.js +2 -0
  67. package/dist/umd/types.d.ts +249 -0
  68. package/dist/umd/types.d.ts.map +1 -0
  69. package/dist/umd/types.js +77 -0
  70. package/dist/umd/types.js.map +1 -0
  71. package/dist/umd/validation.d.ts +34 -0
  72. package/dist/umd/validation.d.ts.map +1 -0
  73. package/dist/umd/validation.js +92 -0
  74. package/dist/umd/validation.js.map +1 -0
  75. package/dist/validation.d.ts +34 -0
  76. package/dist/validation.d.ts.map +1 -0
  77. package/dist/validation.js +82 -0
  78. package/dist/validation.js.map +1 -0
  79. package/package.json +181 -0
@@ -0,0 +1,252 @@
1
+ // Browser-specific type definitions and error handling
2
+ // Provides enhanced typing for browser Web Crypto API and environment-specific behavior
3
+ var __extends = (this && this.__extends) || (function () {
4
+ var extendStatics = function (d, b) {
5
+ extendStatics = Object.setPrototypeOf ||
6
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
7
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
8
+ return extendStatics(d, b);
9
+ };
10
+ return function (d, b) {
11
+ if (typeof b !== "function" && b !== null)
12
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
13
+ extendStatics(d, b);
14
+ function __() { this.constructor = d; }
15
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
16
+ };
17
+ })();
18
+ (function (factory) {
19
+ if (typeof module === "object" && typeof module.exports === "object") {
20
+ var v = factory(require, exports);
21
+ if (v !== undefined) module.exports = v;
22
+ }
23
+ else if (typeof define === "function" && define.amd) {
24
+ define(["require", "exports", "./errors"], factory);
25
+ }
26
+ })(function (require, exports) {
27
+ "use strict";
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.WebCryptoNotSupportedError = exports.BrowserEnvironmentError = exports.BrowserCryptoError = void 0;
30
+ exports.isUint32Array = isUint32Array;
31
+ exports.isTypedArray = isTypedArray;
32
+ exports.isBrowserEnvironment = isBrowserEnvironment;
33
+ exports.getBrowserCrypto = getBrowserCrypto;
34
+ exports.hasBrowserCryptoGetRandomValues = hasBrowserCryptoGetRandomValues;
35
+ exports.createBrowserRNG = createBrowserRNG;
36
+ exports.createBrowserCryptoEnvironment = createBrowserCryptoEnvironment;
37
+ exports.validateUint32Array = validateUint32Array;
38
+ exports.validateTypedArray = validateTypedArray;
39
+ exports.requireBrowserCrypto = requireBrowserCrypto;
40
+ exports.isWebCryptoSupported = isWebCryptoSupported;
41
+ var errors_1 = require("./errors");
42
+ /**
43
+ * Type guard for Uint32Array
44
+ */
45
+ function isUint32Array(value) {
46
+ var _a;
47
+ return value !== null &&
48
+ typeof value === 'object' &&
49
+ ((_a = value.constructor) === null || _a === void 0 ? void 0 : _a.name) === 'Uint32Array';
50
+ }
51
+ /**
52
+ * Type guard for any typed array
53
+ */
54
+ function isTypedArray(value) {
55
+ return value !== null &&
56
+ typeof value === 'object' &&
57
+ ArrayBuffer.isView(value);
58
+ }
59
+ // ============================================================================
60
+ // Browser Environment Detection
61
+ // ============================================================================
62
+ /**
63
+ * Detects if the current environment is a browser
64
+ * @returns true if running in a browser, false otherwise
65
+ */
66
+ function isBrowserEnvironment() {
67
+ return typeof window !== 'undefined' &&
68
+ typeof window.document !== 'undefined';
69
+ }
70
+ /**
71
+ * Attempts to access the browser Web Crypto API
72
+ * @returns BrowserCryptoAPI if available, null otherwise
73
+ */
74
+ function getBrowserCrypto() {
75
+ // Check for window.crypto
76
+ if (typeof window !== 'undefined' && window.crypto) {
77
+ var crypto_1 = window.crypto;
78
+ if (typeof crypto_1.getRandomValues === 'function' ||
79
+ typeof crypto_1.getRandomValues === 'object') {
80
+ return crypto_1;
81
+ }
82
+ }
83
+ // Check for global crypto (some environments)
84
+ if (typeof global !== 'undefined' && global.crypto) {
85
+ var crypto_2 = global.crypto;
86
+ if (typeof crypto_2.getRandomValues === 'function' ||
87
+ typeof crypto_2.getRandomValues === 'object') {
88
+ return crypto_2;
89
+ }
90
+ }
91
+ return null;
92
+ }
93
+ /**
94
+ * Checks if browser crypto.getRandomValues is available
95
+ * @returns true if crypto.getRandomValues is available
96
+ */
97
+ function hasBrowserCryptoGetRandomValues() {
98
+ var crypto = getBrowserCrypto();
99
+ if (!crypto) {
100
+ return false;
101
+ }
102
+ // Check if Uint32Array is available
103
+ if (typeof Uint32Array !== 'function' && typeof Uint32Array !== 'object') {
104
+ return false;
105
+ }
106
+ return typeof crypto.getRandomValues === 'function' ||
107
+ typeof crypto.getRandomValues === 'object';
108
+ }
109
+ // ============================================================================
110
+ // Browser-Specific Error Types
111
+ // ============================================================================
112
+ /**
113
+ * Error thrown when browser crypto operations fail
114
+ */
115
+ var BrowserCryptoError = /** @class */ (function (_super) {
116
+ __extends(BrowserCryptoError, _super);
117
+ function BrowserCryptoError(operation, reason, originalError) {
118
+ var _this = _super.call(this, operation, "Browser crypto error: ".concat(reason)) || this;
119
+ _this.originalError = originalError;
120
+ _this.name = 'BrowserCryptoError';
121
+ if (originalError && Error.captureStackTrace) {
122
+ Error.captureStackTrace(_this, BrowserCryptoError);
123
+ }
124
+ return _this;
125
+ }
126
+ return BrowserCryptoError;
127
+ }(errors_1.CryptoError));
128
+ exports.BrowserCryptoError = BrowserCryptoError;
129
+ /**
130
+ * Error thrown when browser environment is required but not available
131
+ */
132
+ var BrowserEnvironmentError = /** @class */ (function (_super) {
133
+ __extends(BrowserEnvironmentError, _super);
134
+ function BrowserEnvironmentError(feature) {
135
+ var _this = _super.call(this, 'environment_check', "Feature '".concat(feature, "' requires browser environment but is not available")) || this;
136
+ _this.name = 'BrowserEnvironmentError';
137
+ return _this;
138
+ }
139
+ return BrowserEnvironmentError;
140
+ }(errors_1.CryptoError));
141
+ exports.BrowserEnvironmentError = BrowserEnvironmentError;
142
+ /**
143
+ * Error thrown when Web Crypto API is not supported
144
+ */
145
+ var WebCryptoNotSupportedError = /** @class */ (function (_super) {
146
+ __extends(WebCryptoNotSupportedError, _super);
147
+ function WebCryptoNotSupportedError() {
148
+ var _this = _super.call(this, 'getRandomValues', 'Web Crypto API is not supported in this browser') || this;
149
+ _this.name = 'WebCryptoNotSupportedError';
150
+ return _this;
151
+ }
152
+ return WebCryptoNotSupportedError;
153
+ }(BrowserCryptoError));
154
+ exports.WebCryptoNotSupportedError = WebCryptoNotSupportedError;
155
+ // ============================================================================
156
+ // Browser RNG Implementation
157
+ // ============================================================================
158
+ /**
159
+ * Creates a browser-specific RNG function using crypto.getRandomValues
160
+ * @param crypto - Browser Web Crypto API
161
+ * @returns RNG function that generates random binary strings
162
+ * @throws {BrowserCryptoError} If random value generation fails
163
+ */
164
+ function createBrowserRNG(crypto) {
165
+ return function browserCryptoGetRandomValues(bits) {
166
+ if (typeof bits !== 'number' || bits <= 0 || bits % 1 !== 0) {
167
+ throw new BrowserCryptoError('getRandomValues', "Invalid bits parameter: ".concat(bits, ". Must be a positive integer."));
168
+ }
169
+ // Calculate number of 32-bit integers needed
170
+ var elems = Math.ceil(bits / 32);
171
+ try {
172
+ // Generate random values
173
+ var array = new Uint32Array(elems);
174
+ crypto.getRandomValues(array);
175
+ // Convert to binary string
176
+ var binary = '';
177
+ for (var i = 0; i < array.length; i++) {
178
+ var value = array[i];
179
+ var bin = value.toString(2);
180
+ // Pad to 32 bits
181
+ binary += '00000000000000000000000000000000'.substring(bin.length) + bin;
182
+ }
183
+ // Return exactly the requested number of bits
184
+ return binary.substring(0, bits);
185
+ }
186
+ catch (error) {
187
+ throw new BrowserCryptoError('getRandomValues', 'Failed to generate random values', error);
188
+ }
189
+ };
190
+ }
191
+ /**
192
+ * Creates a browser crypto environment descriptor
193
+ * @returns BrowserCryptoEnvironment if browser crypto is available, null otherwise
194
+ */
195
+ function createBrowserCryptoEnvironment() {
196
+ var crypto = getBrowserCrypto();
197
+ if (!crypto) {
198
+ return null;
199
+ }
200
+ return {
201
+ type: 'browser',
202
+ crypto: crypto,
203
+ rngType: 'browserCryptoGetRandomValues',
204
+ rng: createBrowserRNG(crypto)
205
+ };
206
+ }
207
+ // ============================================================================
208
+ // Type Validation for Browser
209
+ // ============================================================================
210
+ /**
211
+ * Validates that a value is a valid Uint32Array
212
+ * @param value - Value to validate
213
+ * @param paramName - Parameter name for error messages
214
+ * @throws {BrowserCryptoError} If value is not a valid Uint32Array
215
+ */
216
+ function validateUint32Array(value, paramName) {
217
+ if (!isUint32Array(value)) {
218
+ throw new BrowserCryptoError('validation', "Parameter '".concat(paramName, "' must be a Uint32Array"));
219
+ }
220
+ }
221
+ /**
222
+ * Validates that a value is a valid typed array
223
+ * @param value - Value to validate
224
+ * @param paramName - Parameter name for error messages
225
+ * @throws {BrowserCryptoError} If value is not a valid typed array
226
+ */
227
+ function validateTypedArray(value, paramName) {
228
+ if (!isTypedArray(value)) {
229
+ throw new BrowserCryptoError('validation', "Parameter '".concat(paramName, "' must be a typed array"));
230
+ }
231
+ }
232
+ /**
233
+ * Validates that browser crypto is available
234
+ * @throws {WebCryptoNotSupportedError} If browser crypto is not available
235
+ */
236
+ function requireBrowserCrypto() {
237
+ var crypto = getBrowserCrypto();
238
+ if (!crypto) {
239
+ throw new WebCryptoNotSupportedError();
240
+ }
241
+ return crypto;
242
+ }
243
+ /**
244
+ * Checks if the browser supports the Web Crypto API
245
+ * @returns true if Web Crypto API is fully supported
246
+ */
247
+ function isWebCryptoSupported() {
248
+ return hasBrowserCryptoGetRandomValues() &&
249
+ (typeof Uint32Array === 'function' || typeof Uint32Array === 'object');
250
+ }
251
+ });
252
+ //# sourceMappingURL=browser-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-types.js","sourceRoot":"","sources":["../../src/browser-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Base error class for all secrets library errors
3
+ */
4
+ export declare class SecretsError extends Error {
5
+ readonly code: string;
6
+ readonly context?: Record<string, unknown> | undefined;
7
+ constructor(message: string, code: string, context?: Record<string, unknown> | undefined);
8
+ }
9
+ /**
10
+ * Error thrown when invalid parameters are provided to a function
11
+ */
12
+ export declare class InvalidParameterError extends SecretsError {
13
+ constructor(parameter: string, value: unknown, expected: string);
14
+ }
15
+ /**
16
+ * Error thrown when initialization fails
17
+ */
18
+ export declare class InitializationError extends SecretsError {
19
+ constructor(reason: string);
20
+ }
21
+ /**
22
+ * Error thrown when share data is invalid or corrupted
23
+ */
24
+ export declare class InvalidShareError extends SecretsError {
25
+ constructor(share: string, reason: string);
26
+ }
27
+ /**
28
+ * Error thrown when cryptographic operations fail
29
+ */
30
+ export declare class CryptoError extends SecretsError {
31
+ constructor(operation: string, reason: string);
32
+ }
33
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,qBAAa,YAAa,SAAQ,KAAK;aAGnB,IAAI,EAAE,MAAM;aACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAFjD,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;CAUpD;AAED;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,YAAY;gBACzC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM;CAQhE;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,YAAY;gBACvC,MAAM,EAAE,MAAM;CAQ3B;AAED;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,YAAY;gBACrC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAQ1C;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,YAAY;gBAC/B,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAQ9C"}
@@ -0,0 +1,102 @@
1
+ // Type-safe error handling for @digitaldefiance/secrets
2
+ // Provides structured error classes with context information
3
+ var __extends = (this && this.__extends) || (function () {
4
+ var extendStatics = function (d, b) {
5
+ extendStatics = Object.setPrototypeOf ||
6
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
7
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
8
+ return extendStatics(d, b);
9
+ };
10
+ return function (d, b) {
11
+ if (typeof b !== "function" && b !== null)
12
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
13
+ extendStatics(d, b);
14
+ function __() { this.constructor = d; }
15
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
16
+ };
17
+ })();
18
+ (function (factory) {
19
+ if (typeof module === "object" && typeof module.exports === "object") {
20
+ var v = factory(require, exports);
21
+ if (v !== undefined) module.exports = v;
22
+ }
23
+ else if (typeof define === "function" && define.amd) {
24
+ define(["require", "exports"], factory);
25
+ }
26
+ })(function (require, exports) {
27
+ "use strict";
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.CryptoError = exports.InvalidShareError = exports.InitializationError = exports.InvalidParameterError = exports.SecretsError = void 0;
30
+ /**
31
+ * Base error class for all secrets library errors
32
+ */
33
+ var SecretsError = /** @class */ (function (_super) {
34
+ __extends(SecretsError, _super);
35
+ function SecretsError(message, code, context) {
36
+ var _this = _super.call(this, message) || this;
37
+ _this.code = code;
38
+ _this.context = context;
39
+ _this.name = 'SecretsError';
40
+ // Maintains proper stack trace for where our error was thrown (only available on V8)
41
+ if (Error.captureStackTrace) {
42
+ Error.captureStackTrace(_this, SecretsError);
43
+ }
44
+ return _this;
45
+ }
46
+ return SecretsError;
47
+ }(Error));
48
+ exports.SecretsError = SecretsError;
49
+ /**
50
+ * Error thrown when invalid parameters are provided to a function
51
+ */
52
+ var InvalidParameterError = /** @class */ (function (_super) {
53
+ __extends(InvalidParameterError, _super);
54
+ function InvalidParameterError(parameter, value, expected) {
55
+ var _this = _super.call(this, "Invalid parameter '".concat(parameter, "': expected ").concat(expected, ", got ").concat(typeof value), 'INVALID_PARAMETER', { parameter: parameter, value: value, expected: expected }) || this;
56
+ _this.name = 'InvalidParameterError';
57
+ return _this;
58
+ }
59
+ return InvalidParameterError;
60
+ }(SecretsError));
61
+ exports.InvalidParameterError = InvalidParameterError;
62
+ /**
63
+ * Error thrown when initialization fails
64
+ */
65
+ var InitializationError = /** @class */ (function (_super) {
66
+ __extends(InitializationError, _super);
67
+ function InitializationError(reason) {
68
+ var _this = _super.call(this, "Initialization failed: ".concat(reason), 'INITIALIZATION_FAILED', { reason: reason }) || this;
69
+ _this.name = 'InitializationError';
70
+ return _this;
71
+ }
72
+ return InitializationError;
73
+ }(SecretsError));
74
+ exports.InitializationError = InitializationError;
75
+ /**
76
+ * Error thrown when share data is invalid or corrupted
77
+ */
78
+ var InvalidShareError = /** @class */ (function (_super) {
79
+ __extends(InvalidShareError, _super);
80
+ function InvalidShareError(share, reason) {
81
+ var _this = _super.call(this, "Invalid share data: ".concat(reason), 'INVALID_SHARE', { share: share, reason: reason }) || this;
82
+ _this.name = 'InvalidShareError';
83
+ return _this;
84
+ }
85
+ return InvalidShareError;
86
+ }(SecretsError));
87
+ exports.InvalidShareError = InvalidShareError;
88
+ /**
89
+ * Error thrown when cryptographic operations fail
90
+ */
91
+ var CryptoError = /** @class */ (function (_super) {
92
+ __extends(CryptoError, _super);
93
+ function CryptoError(operation, reason) {
94
+ var _this = _super.call(this, "Cryptographic operation '".concat(operation, "' failed: ").concat(reason), 'CRYPTO_ERROR', { operation: operation, reason: reason }) || this;
95
+ _this.name = 'CryptoError';
96
+ return _this;
97
+ }
98
+ return CryptoError;
99
+ }(SecretsError));
100
+ exports.CryptoError = CryptoError;
101
+ });
102
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,6DAA6D;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAE7D;;OAEG;IACH;QAAkC,gCAAK;QACrC,sBACE,OAAe,EACC,IAAY,EACZ,OAAiC;YAEjD,YAAA,MAAK,YAAC,OAAO,CAAC,SAAC;YAHC,UAAI,GAAJ,IAAI,CAAQ;YACZ,aAAO,GAAP,OAAO,CAA0B;YAGjD,KAAI,CAAC,IAAI,GAAG,cAAc,CAAC;YAE3B,qFAAqF;YACrF,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;gBAC5B,KAAK,CAAC,iBAAiB,CAAC,KAAI,EAAE,YAAY,CAAC,CAAC;YAC9C,CAAC;;QACH,CAAC;QACH,mBAAC;IAAD,CAAC,AAdD,CAAkC,KAAK,GActC;IAdY,oCAAY;IAgBzB;;OAEG;IACH;QAA2C,yCAAY;QACrD,+BAAY,SAAiB,EAAE,KAAc,EAAE,QAAgB;YAC7D,YAAA,MAAK,YACH,6BAAsB,SAAS,yBAAe,QAAQ,mBAAS,OAAO,KAAK,CAAE,EAC7E,mBAAmB,EACnB,EAAE,SAAS,WAAA,EAAE,KAAK,OAAA,EAAE,QAAQ,UAAA,EAAE,CAC/B,SAAC;YACF,KAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;;QACtC,CAAC;QACH,4BAAC;IAAD,CAAC,AATD,CAA2C,YAAY,GAStD;IATY,sDAAqB;IAWlC;;OAEG;IACH;QAAyC,uCAAY;QACnD,6BAAY,MAAc;YACxB,YAAA,MAAK,YACH,iCAA0B,MAAM,CAAE,EAClC,uBAAuB,EACvB,EAAE,MAAM,QAAA,EAAE,CACX,SAAC;YACF,KAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;;QACpC,CAAC;QACH,0BAAC;IAAD,CAAC,AATD,CAAyC,YAAY,GASpD;IATY,kDAAmB;IAWhC;;OAEG;IACH;QAAuC,qCAAY;QACjD,2BAAY,KAAa,EAAE,MAAc;YACvC,YAAA,MAAK,YACH,8BAAuB,MAAM,CAAE,EAC/B,eAAe,EACf,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,CAClB,SAAC;YACF,KAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;;QAClC,CAAC;QACH,wBAAC;IAAD,CAAC,AATD,CAAuC,YAAY,GASlD;IATY,8CAAiB;IAW9B;;OAEG;IACH;QAAiC,+BAAY;QAC3C,qBAAY,SAAiB,EAAE,MAAc;YAC3C,YAAA,MAAK,YACH,mCAA4B,SAAS,uBAAa,MAAM,CAAE,EAC1D,cAAc,EACd,EAAE,SAAS,WAAA,EAAE,MAAM,QAAA,EAAE,CACtB,SAAC;YACF,KAAI,CAAC,IAAI,GAAG,aAAa,CAAC;;QAC5B,CAAC;QACH,kBAAC;IAAD,CAAC,AATD,CAAiC,YAAY,GAS5C;IATY,kCAAW"}
@@ -0,0 +1,87 @@
1
+ import type { RNGFunction, CSPRNGType } from './types';
2
+ import { CryptoError } from './errors';
3
+ /**
4
+ * Enhanced Node.js crypto module interface with comprehensive typing
5
+ */
6
+ export interface NodeCryptoModule {
7
+ /**
8
+ * Generates cryptographically strong pseudo-random data
9
+ * @param size - Number of bytes to generate
10
+ * @returns Buffer containing random bytes
11
+ * @throws {Error} If random data generation fails
12
+ */
13
+ randomBytes(size: number): Buffer;
14
+ /**
15
+ * Synchronous version of randomBytes
16
+ * @param size - Number of bytes to generate
17
+ * @returns Buffer containing random bytes
18
+ * @throws {Error} If random data generation fails
19
+ */
20
+ randomBytesSync?(size: number): Buffer;
21
+ }
22
+ /**
23
+ * Node.js Buffer type guard
24
+ */
25
+ export declare function isNodeBuffer(value: unknown): value is Buffer;
26
+ /**
27
+ * Detects if the current environment is Node.js
28
+ * @returns true if running in Node.js, false otherwise
29
+ */
30
+ export declare function isNodeEnvironment(): boolean;
31
+ /**
32
+ * Attempts to load the Node.js crypto module
33
+ * @returns NodeCryptoModule if available, null otherwise
34
+ */
35
+ export declare function getNodeCrypto(): NodeCryptoModule | null;
36
+ /**
37
+ * Checks if Node.js crypto.randomBytes is available
38
+ * @returns true if crypto.randomBytes is available
39
+ */
40
+ export declare function hasNodeCryptoRandomBytes(): boolean;
41
+ /**
42
+ * Error thrown when Node.js crypto operations fail
43
+ */
44
+ export declare class NodeCryptoError extends CryptoError {
45
+ readonly originalError?: Error | undefined;
46
+ constructor(operation: string, reason: string, originalError?: Error | undefined);
47
+ }
48
+ /**
49
+ * Error thrown when Node.js environment is required but not available
50
+ */
51
+ export declare class NodeEnvironmentError extends CryptoError {
52
+ constructor(feature: string);
53
+ }
54
+ /**
55
+ * Creates a Node.js-specific RNG function using crypto.randomBytes
56
+ * @param crypto - Node.js crypto module
57
+ * @returns RNG function that generates random binary strings
58
+ * @throws {NodeCryptoError} If random byte generation fails
59
+ */
60
+ export declare function createNodeRNG(crypto: NodeCryptoModule): RNGFunction;
61
+ /**
62
+ * Node.js-specific crypto environment descriptor
63
+ */
64
+ export interface NodeCryptoEnvironment {
65
+ readonly type: 'node';
66
+ readonly crypto: NodeCryptoModule;
67
+ readonly rngType: CSPRNGType;
68
+ readonly rng: RNGFunction;
69
+ }
70
+ /**
71
+ * Creates a Node.js crypto environment descriptor
72
+ * @returns NodeCryptoEnvironment if Node.js crypto is available, null otherwise
73
+ */
74
+ export declare function createNodeCryptoEnvironment(): NodeCryptoEnvironment | null;
75
+ /**
76
+ * Validates that a value is a valid Node.js Buffer
77
+ * @param value - Value to validate
78
+ * @param paramName - Parameter name for error messages
79
+ * @throws {NodeCryptoError} If value is not a valid Buffer
80
+ */
81
+ export declare function validateNodeBuffer(value: unknown, paramName: string): asserts value is Buffer;
82
+ /**
83
+ * Validates that Node.js crypto is available
84
+ * @throws {NodeEnvironmentError} If Node.js crypto is not available
85
+ */
86
+ export declare function requireNodeCrypto(): NodeCryptoModule;
87
+ //# sourceMappingURL=node-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-types.d.ts","sourceRoot":"","sources":["../../src/node-types.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAMvC;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;OAKG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAElC;;;;;OAKG;IACH,eAAe,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CACxC;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAK5D;AAMD;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAI3C;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,gBAAgB,GAAG,IAAI,CAiBvD;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,OAAO,CAGlD;AAMD;;GAEG;AACH,qBAAa,eAAgB,SAAQ,WAAW;aACiB,aAAa,CAAC,EAAE,KAAK;gBAAxE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAkB,aAAa,CAAC,EAAE,KAAK,YAAA;CAQrF;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,WAAW;gBACvC,OAAO,EAAE,MAAM;CAO5B;AAMD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,WAAW,CAwCnE;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,IAAI,qBAAqB,GAAG,IAAI,CAa1E;AAMD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,CAO7F;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,gBAAgB,CAQpD"}