s3db.js 18.0.11-next.1534f717 → 18.0.11-next.47047b5d

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 (141) hide show
  1. package/dist/clients/recker-http-handler.js +56 -8
  2. package/dist/clients/recker-http-handler.js.map +1 -1
  3. package/dist/concerns/id/alphabets.js +150 -0
  4. package/dist/concerns/id/alphabets.js.map +1 -0
  5. package/dist/concerns/id/entropy.js +243 -0
  6. package/dist/concerns/id/entropy.js.map +1 -0
  7. package/dist/concerns/id/generators/nanoid.js +74 -0
  8. package/dist/concerns/id/generators/nanoid.js.map +1 -0
  9. package/dist/concerns/id/generators/sid.js +73 -0
  10. package/dist/concerns/id/generators/sid.js.map +1 -0
  11. package/dist/concerns/id/generators/ulid.js +208 -0
  12. package/dist/concerns/id/generators/ulid.js.map +1 -0
  13. package/dist/concerns/id/generators/uuid-v7.js +150 -0
  14. package/dist/concerns/id/generators/uuid-v7.js.map +1 -0
  15. package/dist/concerns/id/index.js +74 -0
  16. package/dist/concerns/id/index.js.map +1 -0
  17. package/dist/concerns/plugin-storage.js +114 -0
  18. package/dist/concerns/plugin-storage.js.map +1 -1
  19. package/dist/concerns/s3-errors.js +72 -0
  20. package/dist/concerns/s3-errors.js.map +1 -0
  21. package/dist/concerns/s3-key.js +54 -0
  22. package/dist/concerns/s3-key.js.map +1 -0
  23. package/dist/concerns/safe-merge.js +47 -0
  24. package/dist/concerns/safe-merge.js.map +1 -0
  25. package/dist/core/resource-config-validator.js +12 -2
  26. package/dist/core/resource-config-validator.js.map +1 -1
  27. package/dist/core/resource-partitions.class.js +12 -1
  28. package/dist/core/resource-partitions.class.js.map +1 -1
  29. package/dist/core/resource-persistence.class.js +41 -12
  30. package/dist/core/resource-persistence.class.js.map +1 -1
  31. package/dist/core/resource-query.class.js +21 -47
  32. package/dist/core/resource-query.class.js.map +1 -1
  33. package/dist/plugins/concerns/s3-mutex.class.js +155 -0
  34. package/dist/plugins/concerns/s3-mutex.class.js.map +1 -0
  35. package/dist/plugins/recon/stages/recker-asn-stage.js +279 -0
  36. package/dist/plugins/recon/stages/recker-asn-stage.js.map +1 -0
  37. package/dist/plugins/recon/stages/recker-dns-stage.js +227 -0
  38. package/dist/plugins/recon/stages/recker-dns-stage.js.map +1 -0
  39. package/dist/plugins/recon/stages/recker-scrape-stage.js +369 -0
  40. package/dist/plugins/recon/stages/recker-scrape-stage.js.map +1 -0
  41. package/dist/plugins/spider/recker-link-discoverer.js +544 -0
  42. package/dist/plugins/spider/recker-link-discoverer.js.map +1 -0
  43. package/dist/plugins/spider/recker-llms-validator.js +334 -0
  44. package/dist/plugins/spider/recker-llms-validator.js.map +1 -0
  45. package/dist/plugins/spider/recker-robots-validator.js +336 -0
  46. package/dist/plugins/spider/recker-robots-validator.js.map +1 -0
  47. package/dist/plugins/spider/recker-security-adapter.js +325 -0
  48. package/dist/plugins/spider/recker-security-adapter.js.map +1 -0
  49. package/dist/plugins/spider/recker-seo-adapter.js +399 -0
  50. package/dist/plugins/spider/recker-seo-adapter.js.map +1 -0
  51. package/dist/plugins/spider/recker-sitemap-validator.js +406 -0
  52. package/dist/plugins/spider/recker-sitemap-validator.js.map +1 -0
  53. package/dist/resource.class.js +2 -0
  54. package/dist/resource.class.js.map +1 -1
  55. package/dist/s3db.cjs +353 -71
  56. package/dist/s3db.cjs.map +1 -1
  57. package/dist/s3db.es.js +354 -72
  58. package/dist/s3db.es.js.map +1 -1
  59. package/dist/types/clients/recker-http-handler.d.ts +1 -0
  60. package/dist/types/clients/recker-http-handler.d.ts.map +1 -1
  61. package/dist/types/clients/types.d.ts +14 -0
  62. package/dist/types/clients/types.d.ts.map +1 -1
  63. package/dist/types/concerns/id/alphabets.d.ts +125 -0
  64. package/dist/types/concerns/id/alphabets.d.ts.map +1 -0
  65. package/dist/types/concerns/id/entropy.d.ts +84 -0
  66. package/dist/types/concerns/id/entropy.d.ts.map +1 -0
  67. package/dist/types/concerns/id/generators/nanoid.d.ts +46 -0
  68. package/dist/types/concerns/id/generators/nanoid.d.ts.map +1 -0
  69. package/dist/types/concerns/id/generators/sid.d.ts +45 -0
  70. package/dist/types/concerns/id/generators/sid.d.ts.map +1 -0
  71. package/dist/types/concerns/id/generators/ulid.d.ts +71 -0
  72. package/dist/types/concerns/id/generators/ulid.d.ts.map +1 -0
  73. package/dist/types/concerns/id/generators/uuid-v7.d.ts +60 -0
  74. package/dist/types/concerns/id/generators/uuid-v7.d.ts.map +1 -0
  75. package/dist/types/concerns/id/index.d.ts +51 -0
  76. package/dist/types/concerns/id/index.d.ts.map +1 -0
  77. package/dist/types/concerns/plugin-storage.d.ts +25 -0
  78. package/dist/types/concerns/plugin-storage.d.ts.map +1 -1
  79. package/dist/types/concerns/s3-errors.d.ts +20 -0
  80. package/dist/types/concerns/s3-errors.d.ts.map +1 -0
  81. package/dist/types/concerns/s3-key.d.ts +30 -0
  82. package/dist/types/concerns/s3-key.d.ts.map +1 -0
  83. package/dist/types/concerns/safe-merge.d.ts +22 -0
  84. package/dist/types/concerns/safe-merge.d.ts.map +1 -0
  85. package/dist/types/core/resource-config-validator.d.ts.map +1 -1
  86. package/dist/types/core/resource-partitions.class.d.ts.map +1 -1
  87. package/dist/types/core/resource-persistence.class.d.ts.map +1 -1
  88. package/dist/types/core/resource-query.class.d.ts.map +1 -1
  89. package/dist/types/plugins/concerns/s3-mutex.class.d.ts +30 -0
  90. package/dist/types/plugins/concerns/s3-mutex.class.d.ts.map +1 -0
  91. package/dist/types/plugins/recon/stages/recker-asn-stage.d.ts +90 -0
  92. package/dist/types/plugins/recon/stages/recker-asn-stage.d.ts.map +1 -0
  93. package/dist/types/plugins/recon/stages/recker-dns-stage.d.ts +125 -0
  94. package/dist/types/plugins/recon/stages/recker-dns-stage.d.ts.map +1 -0
  95. package/dist/types/plugins/recon/stages/recker-scrape-stage.d.ts +96 -0
  96. package/dist/types/plugins/recon/stages/recker-scrape-stage.d.ts.map +1 -0
  97. package/dist/types/plugins/spider/recker-link-discoverer.d.ts +54 -0
  98. package/dist/types/plugins/spider/recker-link-discoverer.d.ts.map +1 -0
  99. package/dist/types/plugins/spider/recker-llms-validator.d.ts +105 -0
  100. package/dist/types/plugins/spider/recker-llms-validator.d.ts.map +1 -0
  101. package/dist/types/plugins/spider/recker-robots-validator.d.ts +92 -0
  102. package/dist/types/plugins/spider/recker-robots-validator.d.ts.map +1 -0
  103. package/dist/types/plugins/spider/recker-security-adapter.d.ts +83 -0
  104. package/dist/types/plugins/spider/recker-security-adapter.d.ts.map +1 -0
  105. package/dist/types/plugins/spider/recker-seo-adapter.d.ts +187 -0
  106. package/dist/types/plugins/spider/recker-seo-adapter.d.ts.map +1 -0
  107. package/dist/types/plugins/spider/recker-sitemap-validator.d.ts +121 -0
  108. package/dist/types/plugins/spider/recker-sitemap-validator.d.ts.map +1 -0
  109. package/dist/types/resource.class.d.ts.map +1 -1
  110. package/mcp/prompts/index.ts +275 -0
  111. package/mcp/resources/index.ts +322 -0
  112. package/mcp/tools/plugins.ts +1137 -0
  113. package/mcp/tools/streams.ts +340 -0
  114. package/package.json +20 -21
  115. package/src/clients/recker-http-handler.ts +74 -8
  116. package/src/clients/types.ts +14 -0
  117. package/src/concerns/id/alphabets.ts +175 -0
  118. package/src/concerns/id/entropy.ts +286 -0
  119. package/src/concerns/id/generators/sid.ts +90 -0
  120. package/src/concerns/id/generators/ulid.ts +249 -0
  121. package/src/concerns/id/generators/uuid-v7.ts +179 -0
  122. package/src/concerns/id/index.ts +167 -0
  123. package/src/concerns/plugin-storage.ts +144 -0
  124. package/src/concerns/s3-errors.ts +97 -0
  125. package/src/concerns/s3-key.ts +62 -0
  126. package/src/concerns/safe-merge.ts +60 -0
  127. package/src/core/resource-config-validator.ts +9 -2
  128. package/src/core/resource-partitions.class.ts +14 -1
  129. package/src/core/resource-persistence.class.ts +47 -13
  130. package/src/core/resource-query.class.ts +21 -46
  131. package/src/plugins/concerns/s3-mutex.class.ts +228 -0
  132. package/src/plugins/recon/stages/recker-asn-stage.ts +385 -0
  133. package/src/plugins/recon/stages/recker-dns-stage.ts +360 -0
  134. package/src/plugins/recon/stages/recker-scrape-stage.ts +509 -0
  135. package/src/plugins/spider/recker-link-discoverer.ts +645 -0
  136. package/src/plugins/spider/recker-llms-validator.ts +500 -0
  137. package/src/plugins/spider/recker-robots-validator.ts +473 -0
  138. package/src/plugins/spider/recker-security-adapter.ts +489 -0
  139. package/src/plugins/spider/recker-seo-adapter.ts +605 -0
  140. package/src/plugins/spider/recker-sitemap-validator.ts +621 -0
  141. package/src/resource.class.ts +2 -0
@@ -1,4 +1,4 @@
1
- import { createClient } from 'recker';
1
+ import { createClient, expandHTTP2Options, Http2Error, parseHttp2Error, createHttp2MetricsHooks, getGlobalHttp2Metrics, } from 'recker';
2
2
  import { Readable } from 'node:stream';
3
3
  class CircuitBreaker {
4
4
  threshold;
@@ -98,6 +98,15 @@ function calculateRetryDelay(attempt, baseDelay, maxDelay, useJitter = true) {
98
98
  }
99
99
  function isRetryableError(error, statusCode) {
100
100
  if (error) {
101
+ // Check for HTTP/2 specific errors first
102
+ const h2Error = parseHttp2Error(error);
103
+ if (h2Error) {
104
+ return h2Error.retriable;
105
+ }
106
+ // Check for native HTTP/2 errors
107
+ if (error instanceof Http2Error) {
108
+ return error.retriable;
109
+ }
101
110
  const code = error.code;
102
111
  if (code === 'ECONNRESET' || code === 'ETIMEDOUT' || code === 'ENOTFOUND' ||
103
112
  code === 'ECONNREFUSED' || code === 'EPIPE' || code === 'UND_ERR_SOCKET' ||
@@ -114,6 +123,17 @@ function isRetryableError(error, statusCode) {
114
123
  }
115
124
  return false;
116
125
  }
126
+ /**
127
+ * Get additional retry delay for HTTP/2 errors like ENHANCE_YOUR_CALM
128
+ */
129
+ function getHttp2RetryDelay(error) {
130
+ const h2Error = parseHttp2Error(error);
131
+ if (h2Error && h2Error.errorCode === 'ENHANCE_YOUR_CALM') {
132
+ // Server is rate limiting, wait longer (5-10 seconds)
133
+ return 5000 + Math.random() * 5000;
134
+ }
135
+ return undefined;
136
+ }
117
137
  function parseRetryAfter(headerValue) {
118
138
  if (!headerValue)
119
139
  return undefined;
@@ -135,6 +155,7 @@ export class ReckerHttpHandler {
135
155
  deduplicator;
136
156
  circuitBreaker;
137
157
  metrics;
158
+ http2MetricsEnabled;
138
159
  constructor(options = {}) {
139
160
  this.options = {
140
161
  connectTimeout: 10000,
@@ -146,6 +167,9 @@ export class ReckerHttpHandler {
146
167
  pipelining: 10,
147
168
  http2: true,
148
169
  http2MaxConcurrentStreams: 100,
170
+ http2Preset: 'performance', // Default to performance preset for S3 workloads
171
+ expectContinue: 2 * 1024 * 1024, // 2MB threshold for Expect: 100-Continue
172
+ enableHttp2Metrics: false,
149
173
  enableDedup: true,
150
174
  enableCircuitBreaker: true,
151
175
  circuitBreakerThreshold: 5,
@@ -158,6 +182,15 @@ export class ReckerHttpHandler {
158
182
  respectRetryAfter: true,
159
183
  ...options,
160
184
  };
185
+ this.http2MetricsEnabled = this.options.enableHttp2Metrics;
186
+ // Build HTTP/2 configuration using presets
187
+ const http2Config = this.options.http2
188
+ ? this.options.http2Preset
189
+ ? expandHTTP2Options(this.options.http2Preset)
190
+ : { enabled: true, maxConcurrentStreams: this.options.http2MaxConcurrentStreams }
191
+ : false;
192
+ // Build hooks for HTTP/2 observability
193
+ const hooks = this.http2MetricsEnabled ? createHttp2MetricsHooks() : undefined;
161
194
  this.client = createClient({
162
195
  timeout: {
163
196
  lookup: 5000,
@@ -166,10 +199,8 @@ export class ReckerHttpHandler {
166
199
  response: this.options.headersTimeout,
167
200
  request: this.options.bodyTimeout,
168
201
  },
169
- http2: this.options.http2 ? {
170
- enabled: true,
171
- maxConcurrentStreams: this.options.http2MaxConcurrentStreams,
172
- } : false,
202
+ http2: http2Config,
203
+ expectContinue: this.options.expectContinue,
173
204
  concurrency: {
174
205
  max: this.options.connections * 10,
175
206
  agent: {
@@ -180,7 +211,8 @@ export class ReckerHttpHandler {
180
211
  keepAliveMaxTimeout: this.options.keepAliveMaxTimeout,
181
212
  },
182
213
  },
183
- observability: false,
214
+ hooks,
215
+ observability: this.http2MetricsEnabled,
184
216
  });
185
217
  this.deduplicator = this.options.enableDedup ? new RequestDeduplicator() : null;
186
218
  this.circuitBreaker = this.options.enableCircuitBreaker ? new CircuitBreaker({
@@ -270,7 +302,11 @@ export class ReckerHttpHandler {
270
302
  }
271
303
  if (this.options.enableRetry && attempt < maxAttempts && isRetryableError(error)) {
272
304
  this.metrics.retries++;
273
- const delay = calculateRetryDelay(attempt, this.options.retryDelay, this.options.maxRetryDelay, this.options.retryJitter);
305
+ // Check for HTTP/2 specific retry delay (e.g., ENHANCE_YOUR_CALM)
306
+ const h2Delay = getHttp2RetryDelay(error);
307
+ const delay = h2Delay !== undefined
308
+ ? Math.min(h2Delay, this.options.maxRetryDelay)
309
+ : calculateRetryDelay(attempt, this.options.retryDelay, this.options.maxRetryDelay, this.options.retryJitter);
274
310
  await new Promise(resolve => setTimeout(resolve, delay));
275
311
  continue;
276
312
  }
@@ -296,13 +332,25 @@ export class ReckerHttpHandler {
296
332
  return { ...this.options };
297
333
  }
298
334
  getMetrics() {
299
- return {
335
+ const metrics = {
300
336
  ...this.metrics,
301
337
  circuitStates: this.circuitBreaker
302
338
  ? Object.fromEntries(this.circuitBreaker.circuits)
303
339
  : {},
304
340
  pendingDeduped: this.deduplicator?.size || 0,
305
341
  };
342
+ // Include HTTP/2 metrics if enabled
343
+ if (this.http2MetricsEnabled) {
344
+ const h2Summary = getGlobalHttp2Metrics().getSummary();
345
+ metrics.http2 = {
346
+ sessions: h2Summary.totals.sessions,
347
+ activeSessions: h2Summary.totals.activeSessions,
348
+ streams: h2Summary.totals.streams,
349
+ activeStreams: h2Summary.totals.activeStreams,
350
+ errors: h2Summary.totals.errors,
351
+ };
352
+ }
353
+ return metrics;
306
354
  }
307
355
  resetMetrics() {
308
356
  this.metrics = {
@@ -1 +1 @@
1
- {"version":3,"file":"recker-http-handler.js","sourceRoot":"","sources":["../../src/clients/recker-http-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recker-http-handler.js","sourceRoot":"","sources":["../../src/clients/recker-http-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * URL-safe alphabet (64 chars).
3
+ * Entropy: 6 bits per character
4
+ * 21 chars = 126 bits of entropy
5
+ */
6
+ export const URL_SAFE = 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict';
7
+ /**
8
+ * URL-safe alphabet without special chars (62 chars).
9
+ * Alphanumeric only: a-z, A-Z, 0-9
10
+ * Entropy: ~5.95 bits per character
11
+ * 22 chars = ~131 bits of entropy
12
+ */
13
+ export const ALPHANUMERIC = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
14
+ /**
15
+ * Lowercase alphanumeric (36 chars).
16
+ * Entropy: ~5.17 bits per character
17
+ * 25 chars = ~129 bits of entropy
18
+ */
19
+ export const ALPHANUMERIC_LOWER = '0123456789abcdefghijklmnopqrstuvwxyz';
20
+ /**
21
+ * Uppercase alphanumeric (36 chars).
22
+ * Entropy: ~5.17 bits per character
23
+ */
24
+ export const ALPHANUMERIC_UPPER = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
25
+ /**
26
+ * Hexadecimal lowercase (16 chars).
27
+ * Entropy: 4 bits per character
28
+ * 32 chars = 128 bits of entropy
29
+ */
30
+ export const HEX_LOWER = '0123456789abcdef';
31
+ /**
32
+ * Hexadecimal uppercase (16 chars).
33
+ */
34
+ export const HEX_UPPER = '0123456789ABCDEF';
35
+ /**
36
+ * Crockford Base32 (32 chars) - Used by ULID.
37
+ * Excludes I, L, O, U to avoid confusion.
38
+ * Entropy: 5 bits per character
39
+ * 26 chars = 130 bits of entropy
40
+ */
41
+ export const CROCKFORD_BASE32 = '0123456789ABCDEFGHJKMNPQRSTVWXYZ';
42
+ /**
43
+ * Base58 Bitcoin alphabet (58 chars).
44
+ * Excludes 0, O, I, l to avoid confusion.
45
+ * Entropy: ~5.86 bits per character
46
+ */
47
+ export const BASE58 = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
48
+ /**
49
+ * Base64 URL-safe alphabet (64 chars).
50
+ * Standard RFC 4648 with - and _ instead of + and /
51
+ * Entropy: 6 bits per character
52
+ */
53
+ export const BASE64_URL = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_';
54
+ /**
55
+ * Numeric only (10 chars).
56
+ * Entropy: ~3.32 bits per character
57
+ * 39 chars = ~129 bits of entropy
58
+ */
59
+ export const NUMERIC = '0123456789';
60
+ /**
61
+ * Lowercase letters only (26 chars).
62
+ * Entropy: ~4.7 bits per character
63
+ */
64
+ export const LOWERCASE = 'abcdefghijklmnopqrstuvwxyz';
65
+ /**
66
+ * Uppercase letters only (26 chars).
67
+ */
68
+ export const UPPERCASE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
69
+ /**
70
+ * Human-readable alphabet (32 chars).
71
+ * Excludes similar-looking characters: 0, O, I, l, 1
72
+ * Good for manual entry scenarios.
73
+ * Entropy: 5 bits per character
74
+ */
75
+ export const HUMAN_READABLE = '23456789ABCDEFGHJKMNPQRSTUVWXYZabcdefghjkmnpqrstuvwxyz';
76
+ /**
77
+ * No-look-alike lowercase (23 chars).
78
+ * Excludes: 0, 1, l, o, i
79
+ * Entropy: ~4.52 bits per character
80
+ */
81
+ export const NO_LOOKALIKE_LOWER = '23456789abcdefghjkmnpqrstuvwxyz';
82
+ /**
83
+ * Binary alphabet (2 chars).
84
+ * Entropy: 1 bit per character
85
+ */
86
+ export const BINARY = '01';
87
+ /**
88
+ * Emoji alphabet (64 emojis) - Fun but use with caution.
89
+ * UTF-8 encoding varies (2-4 bytes per emoji).
90
+ */
91
+ export const EMOJI = '🚀🎉💡🔥⚡🌟💎🎯🏆🎨🎭🎪🎢🎡🎠🏰🗼🗽⛩️🏯🏟️🎸🎺🎻🥁🎹🎼🎤🎧🎬🎥📸🔮🎱🎲🎰🃏🀄🎴🎭🎨🖼️🎪🎢🎡🎠🏰🗼🗽⛩️🏯🏟️🎸🎺🎻🥁🎹🎼🎤🎧';
92
+ export const alphabets = {
93
+ URL_SAFE,
94
+ ALPHANUMERIC,
95
+ ALPHANUMERIC_LOWER,
96
+ ALPHANUMERIC_UPPER,
97
+ HEX_LOWER,
98
+ HEX_UPPER,
99
+ CROCKFORD_BASE32,
100
+ BASE58,
101
+ BASE64_URL,
102
+ NUMERIC,
103
+ LOWERCASE,
104
+ UPPERCASE,
105
+ HUMAN_READABLE,
106
+ NO_LOOKALIKE_LOWER,
107
+ BINARY,
108
+ EMOJI
109
+ };
110
+ /**
111
+ * Get alphabet by name or return custom alphabet string.
112
+ */
113
+ export function getAlphabet(nameOrCustom) {
114
+ if (nameOrCustom in alphabets) {
115
+ return alphabets[nameOrCustom];
116
+ }
117
+ return nameOrCustom;
118
+ }
119
+ /**
120
+ * Calculate recommended ID length for target entropy bits.
121
+ */
122
+ export function recommendedLength(alphabet, targetEntropyBits = 128) {
123
+ const bitsPerChar = Math.log2(alphabet.length);
124
+ return Math.ceil(targetEntropyBits / bitsPerChar);
125
+ }
126
+ /**
127
+ * Validate an alphabet string.
128
+ * Returns null if valid, error message if invalid.
129
+ */
130
+ export function validateAlphabet(alphabet) {
131
+ if (!alphabet || alphabet.length === 0) {
132
+ return 'Alphabet cannot be empty';
133
+ }
134
+ if (alphabet.length === 1) {
135
+ return 'Alphabet must have at least 2 characters';
136
+ }
137
+ if (alphabet.length > 65536) {
138
+ return 'Alphabet cannot exceed 65536 characters';
139
+ }
140
+ const seen = new Set();
141
+ for (const char of alphabet) {
142
+ if (seen.has(char)) {
143
+ return `Duplicate character in alphabet: "${char}"`;
144
+ }
145
+ seen.add(char);
146
+ }
147
+ return null;
148
+ }
149
+ export default alphabets;
150
+ //# sourceMappingURL=alphabets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alphabets.js","sourceRoot":"","sources":["../../../src/concerns/id/alphabets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,243 @@
1
+ import { randomFillSync } from 'node:crypto';
2
+ const DEFAULT_POOL_SIZE = 2048;
3
+ const MIN_POOL_SIZE = 256;
4
+ let pool;
5
+ let poolOffset = 0;
6
+ /**
7
+ * Initialize or resize the entropy pool.
8
+ * Uses a pre-allocated buffer to reduce GC pressure and improve performance.
9
+ */
10
+ export function initPool(size = DEFAULT_POOL_SIZE) {
11
+ const actualSize = Math.max(size, MIN_POOL_SIZE);
12
+ pool = new Uint8Array(actualSize);
13
+ randomFillSync(pool);
14
+ poolOffset = 0;
15
+ }
16
+ /**
17
+ * Get cryptographically secure random bytes from the pool.
18
+ * Automatically refills the pool when exhausted.
19
+ */
20
+ export function getRandomBytes(count) {
21
+ if (!pool) {
22
+ initPool();
23
+ }
24
+ if (count > pool.length) {
25
+ const bytes = new Uint8Array(count);
26
+ randomFillSync(bytes);
27
+ return bytes;
28
+ }
29
+ if (poolOffset + count > pool.length) {
30
+ randomFillSync(pool);
31
+ poolOffset = 0;
32
+ }
33
+ const bytes = pool.slice(poolOffset, poolOffset + count);
34
+ poolOffset += count;
35
+ return bytes;
36
+ }
37
+ /**
38
+ * Fill a pre-allocated buffer with random bytes.
39
+ * More efficient than getRandomBytes when you already have a buffer.
40
+ */
41
+ export function fillRandomBytes(buffer) {
42
+ if (!pool) {
43
+ initPool();
44
+ }
45
+ const needed = buffer.length;
46
+ if (poolOffset + needed <= pool.length) {
47
+ buffer.set(pool.subarray(poolOffset, poolOffset + needed));
48
+ poolOffset += needed;
49
+ }
50
+ else {
51
+ const remaining = pool.length - poolOffset;
52
+ if (remaining > 0) {
53
+ buffer.set(pool.subarray(poolOffset, pool.length), 0);
54
+ }
55
+ randomFillSync(pool);
56
+ poolOffset = 0;
57
+ buffer.set(pool.subarray(0, needed - remaining), remaining);
58
+ poolOffset = needed - remaining;
59
+ }
60
+ return buffer;
61
+ }
62
+ /**
63
+ * Generate a random index into an alphabet using rejection sampling.
64
+ * This eliminates modulo bias for non-power-of-2 alphabet sizes.
65
+ *
66
+ * For an alphabet of size N, we find the largest multiple of N that fits
67
+ * in 256 (or 65536 for larger alphabets). Any random value >= that threshold
68
+ * is rejected and we try again.
69
+ *
70
+ * Example: For alphabet size 62:
71
+ * - threshold = 256 - (256 % 62) = 256 - 8 = 248
72
+ * - We accept bytes 0-247 (maps evenly to 0-61, 4 times each)
73
+ * - We reject bytes 248-255 (would cause bias)
74
+ * - Rejection rate: 8/256 = 3.125%
75
+ */
76
+ export function randomIndexUnbiased(alphabetSize) {
77
+ if (alphabetSize <= 0 || alphabetSize > 65536) {
78
+ throw new Error(`Invalid alphabet size: ${alphabetSize}. Must be 1-65536.`);
79
+ }
80
+ if (alphabetSize === 1) {
81
+ return 0;
82
+ }
83
+ if (alphabetSize <= 256) {
84
+ const threshold = 256 - (256 % alphabetSize);
85
+ let byte;
86
+ do {
87
+ const bytes = getRandomBytes(1);
88
+ byte = bytes[0];
89
+ } while (byte >= threshold);
90
+ return byte % alphabetSize;
91
+ }
92
+ const threshold = 65536 - (65536 % alphabetSize);
93
+ let value;
94
+ do {
95
+ const bytes = getRandomBytes(2);
96
+ value = (bytes[0] << 8) | bytes[1];
97
+ } while (value >= threshold);
98
+ return value % alphabetSize;
99
+ }
100
+ /**
101
+ * Generate multiple unbiased random indices efficiently.
102
+ * Pre-calculates rejection threshold and batches random byte generation.
103
+ */
104
+ export function randomIndicesUnbiased(alphabetSize, count) {
105
+ if (alphabetSize <= 0 || alphabetSize > 65536) {
106
+ throw new Error(`Invalid alphabet size: ${alphabetSize}. Must be 1-65536.`);
107
+ }
108
+ const result = new Uint16Array(count);
109
+ if (alphabetSize === 1) {
110
+ return result;
111
+ }
112
+ if (alphabetSize <= 256) {
113
+ const threshold = 256 - (256 % alphabetSize);
114
+ const estimatedBytes = Math.ceil(count * (256 / threshold) * 1.1);
115
+ let bytes = getRandomBytes(Math.max(estimatedBytes, count * 2));
116
+ let byteIndex = 0;
117
+ let resultIndex = 0;
118
+ while (resultIndex < count) {
119
+ if (byteIndex >= bytes.length) {
120
+ const extraBytes = getRandomBytes(Math.max(16, (count - resultIndex) * 2));
121
+ const newBytes = new Uint8Array(bytes.length + extraBytes.length);
122
+ newBytes.set(bytes);
123
+ newBytes.set(extraBytes, bytes.length);
124
+ bytes = newBytes;
125
+ byteIndex = 0;
126
+ }
127
+ const byte = bytes[byteIndex++];
128
+ if (byte < threshold) {
129
+ result[resultIndex++] = byte % alphabetSize;
130
+ }
131
+ }
132
+ return result;
133
+ }
134
+ const threshold = 65536 - (65536 % alphabetSize);
135
+ const estimatedBytes = Math.ceil(count * 2 * (65536 / threshold) * 1.1);
136
+ let bytes = getRandomBytes(Math.max(estimatedBytes, count * 4));
137
+ let byteIndex = 0;
138
+ let resultIndex = 0;
139
+ while (resultIndex < count) {
140
+ if (byteIndex + 1 >= bytes.length) {
141
+ const extraBytes = getRandomBytes(Math.max(32, (count - resultIndex) * 4));
142
+ const newBytes = new Uint8Array(bytes.length + extraBytes.length);
143
+ newBytes.set(bytes);
144
+ newBytes.set(extraBytes, bytes.length);
145
+ bytes = newBytes;
146
+ }
147
+ const value = (bytes[byteIndex] << 8) | bytes[byteIndex + 1];
148
+ byteIndex += 2;
149
+ if (value < threshold) {
150
+ result[resultIndex++] = value % alphabetSize;
151
+ }
152
+ }
153
+ return result;
154
+ }
155
+ /**
156
+ * Generate a string from an alphabet using unbiased random selection.
157
+ * This is the core function for generating IDs.
158
+ */
159
+ export function randomString(alphabet, length) {
160
+ const alphabetSize = alphabet.length;
161
+ const indices = randomIndicesUnbiased(alphabetSize, length);
162
+ let result = '';
163
+ for (let i = 0; i < length; i++) {
164
+ result += alphabet[indices[i]];
165
+ }
166
+ return result;
167
+ }
168
+ /**
169
+ * Generate a random 48-bit integer for timestamp-based IDs.
170
+ * Uses 6 bytes of entropy.
171
+ */
172
+ export function random48() {
173
+ const bytes = getRandomBytes(6);
174
+ return ((BigInt(bytes[0]) << 40n) |
175
+ (BigInt(bytes[1]) << 32n) |
176
+ (BigInt(bytes[2]) << 24n) |
177
+ (BigInt(bytes[3]) << 16n) |
178
+ (BigInt(bytes[4]) << 8n) |
179
+ BigInt(bytes[5]));
180
+ }
181
+ /**
182
+ * Generate a random 62-bit integer (fits in signed 64-bit).
183
+ * Uses 8 bytes of entropy with top 2 bits masked.
184
+ */
185
+ export function random62() {
186
+ const bytes = getRandomBytes(8);
187
+ return ((BigInt(bytes[0] & 0x3f) << 56n) |
188
+ (BigInt(bytes[1]) << 48n) |
189
+ (BigInt(bytes[2]) << 40n) |
190
+ (BigInt(bytes[3]) << 32n) |
191
+ (BigInt(bytes[4]) << 24n) |
192
+ (BigInt(bytes[5]) << 16n) |
193
+ (BigInt(bytes[6]) << 8n) |
194
+ BigInt(bytes[7]));
195
+ }
196
+ /**
197
+ * Generate a random 80-bit integer for ULID random component.
198
+ * Uses 10 bytes of entropy.
199
+ */
200
+ export function random80() {
201
+ const bytes = getRandomBytes(10);
202
+ let result = 0n;
203
+ for (let i = 0; i < 10; i++) {
204
+ result = (result << 8n) | BigInt(bytes[i]);
205
+ }
206
+ return result;
207
+ }
208
+ /**
209
+ * Calculate the entropy bits for a given alphabet size and ID length.
210
+ */
211
+ export function calculateEntropyBits(alphabetSize, length) {
212
+ return Math.log2(alphabetSize) * length;
213
+ }
214
+ /**
215
+ * Calculate the collision probability for a given number of IDs.
216
+ * Uses birthday paradox approximation: p ≈ n² / (2 * 2^bits)
217
+ */
218
+ export function calculateCollisionProbability(entropyBits, idCount) {
219
+ const totalCombinations = Math.pow(2, entropyBits);
220
+ return (idCount * idCount) / (2 * totalCombinations);
221
+ }
222
+ /**
223
+ * Reset the entropy pool (useful for testing).
224
+ */
225
+ export function resetPool() {
226
+ pool = undefined;
227
+ poolOffset = 0;
228
+ }
229
+ export default {
230
+ initPool,
231
+ getRandomBytes,
232
+ fillRandomBytes,
233
+ randomIndexUnbiased,
234
+ randomIndicesUnbiased,
235
+ randomString,
236
+ random48,
237
+ random62,
238
+ random80,
239
+ calculateEntropyBits,
240
+ calculateCollisionProbability,
241
+ resetPool
242
+ };
243
+ //# sourceMappingURL=entropy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entropy.js","sourceRoot":"","sources":["../../../src/concerns/id/entropy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ import { randomString, calculateEntropyBits } from '../entropy.js';
2
+ import { URL_SAFE, getAlphabet, validateAlphabet } from '../alphabets.js';
3
+ const DEFAULT_SIZE = 21;
4
+ /**
5
+ * Generate a nanoid-compatible ID.
6
+ * Default: 21 characters using URL-safe alphabet (126 bits of entropy).
7
+ *
8
+ * Unlike original nanoid which uses `bytes[i] & 63` (modulo bias for non-64 alphabets),
9
+ * this implementation uses rejection sampling for true uniform distribution.
10
+ */
11
+ export function nanoid(size = DEFAULT_SIZE) {
12
+ return randomString(URL_SAFE, size);
13
+ }
14
+ /**
15
+ * Create a custom nanoid generator with specified alphabet.
16
+ * Returns a function that generates IDs with that alphabet.
17
+ */
18
+ export function customAlphabet(alphabet, defaultSize = DEFAULT_SIZE) {
19
+ const error = validateAlphabet(alphabet);
20
+ if (error) {
21
+ throw new Error(`Invalid alphabet: ${error}`);
22
+ }
23
+ return (size = defaultSize) => {
24
+ return randomString(alphabet, size);
25
+ };
26
+ }
27
+ /**
28
+ * Create a custom nanoid generator with alphabet name.
29
+ * Supports: URL_SAFE, ALPHANUMERIC, BASE58, HEX_LOWER, etc.
30
+ */
31
+ export function customAlphabetByName(name, defaultSize = DEFAULT_SIZE) {
32
+ const alphabet = getAlphabet(name);
33
+ return customAlphabet(alphabet, defaultSize);
34
+ }
35
+ /**
36
+ * Generate a nanoid with options object.
37
+ */
38
+ export function nanoidWithOptions(options = {}) {
39
+ const { alphabet = URL_SAFE, size = DEFAULT_SIZE } = options;
40
+ const resolvedAlphabet = getAlphabet(alphabet);
41
+ const error = validateAlphabet(resolvedAlphabet);
42
+ if (error) {
43
+ throw new Error(`Invalid alphabet: ${error}`);
44
+ }
45
+ return randomString(resolvedAlphabet, size);
46
+ }
47
+ /**
48
+ * Calculate entropy bits for a nanoid configuration.
49
+ */
50
+ export function nanoidEntropyBits(alphabet = URL_SAFE, size = DEFAULT_SIZE) {
51
+ const resolvedAlphabet = getAlphabet(alphabet);
52
+ return calculateEntropyBits(resolvedAlphabet.length, size);
53
+ }
54
+ /**
55
+ * Async version for compatibility with original nanoid/async.
56
+ * Note: Our implementation is already synchronous and fast,
57
+ * this is just for API compatibility.
58
+ */
59
+ export async function nanoidAsync(size = DEFAULT_SIZE) {
60
+ return nanoid(size);
61
+ }
62
+ /**
63
+ * Async version with custom alphabet.
64
+ */
65
+ export function customAlphabetAsync(alphabet, defaultSize = DEFAULT_SIZE) {
66
+ const syncFn = customAlphabet(alphabet, defaultSize);
67
+ return async (size) => syncFn(size);
68
+ }
69
+ /**
70
+ * URL-safe ID shorthand (backward compatibility).
71
+ */
72
+ export const urlAlphabet = URL_SAFE;
73
+ export default nanoid;
74
+ //# sourceMappingURL=nanoid.js.map