@wemush/wols 0.1.0 → 1.3.0

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 (121) hide show
  1. package/CHANGELOG.md +170 -0
  2. package/README.md +204 -31
  3. package/dist/cjs/compact-url.d.ts +150 -0
  4. package/dist/cjs/compact-url.d.ts.map +1 -0
  5. package/dist/cjs/compact-url.js +64 -0
  6. package/dist/cjs/compact-url.js.map +1 -1
  7. package/dist/cjs/crypto/decrypt.d.ts +110 -0
  8. package/dist/cjs/crypto/decrypt.d.ts.map +1 -0
  9. package/dist/cjs/crypto/decrypt.js +521 -90
  10. package/dist/cjs/crypto/decrypt.js.map +1 -1
  11. package/dist/cjs/crypto/encrypt.d.ts +132 -0
  12. package/dist/cjs/crypto/encrypt.d.ts.map +1 -0
  13. package/dist/cjs/crypto/encrypt.js +288 -105
  14. package/dist/cjs/crypto/encrypt.js.map +1 -1
  15. package/dist/cjs/crypto/index.d.ts +12 -0
  16. package/dist/cjs/crypto/index.d.ts.map +1 -0
  17. package/dist/cjs/crypto/index.js +15 -2
  18. package/dist/cjs/crypto/index.js.map +1 -1
  19. package/dist/cjs/crypto/shared.d.ts +116 -0
  20. package/dist/cjs/crypto/shared.d.ts.map +1 -0
  21. package/dist/cjs/crypto/shared.js +238 -0
  22. package/dist/cjs/crypto/shared.js.map +1 -0
  23. package/dist/cjs/errors.d.ts +133 -0
  24. package/dist/cjs/errors.d.ts.map +1 -0
  25. package/dist/cjs/errors.js +39 -1
  26. package/dist/cjs/errors.js.map +1 -1
  27. package/dist/cjs/index.d.ts +29 -0
  28. package/dist/cjs/index.d.ts.map +1 -0
  29. package/dist/cjs/index.js +70 -3
  30. package/dist/cjs/index.js.map +1 -1
  31. package/dist/cjs/package.json +3 -0
  32. package/dist/cjs/parser.d.ts +30 -0
  33. package/dist/cjs/parser.d.ts.map +1 -0
  34. package/dist/cjs/parser.js +3 -0
  35. package/dist/cjs/parser.js.map +1 -1
  36. package/dist/cjs/qr/generate.d.ts +62 -0
  37. package/dist/cjs/qr/generate.d.ts.map +1 -0
  38. package/dist/cjs/qr/index.d.ts +10 -0
  39. package/dist/cjs/qr/index.d.ts.map +1 -0
  40. package/dist/cjs/specimen.d.ts +96 -0
  41. package/dist/cjs/specimen.d.ts.map +1 -0
  42. package/dist/cjs/specimen.js +95 -9
  43. package/dist/cjs/specimen.js.map +1 -1
  44. package/dist/cjs/types.d.ts +735 -0
  45. package/dist/cjs/types.d.ts.map +1 -0
  46. package/dist/cjs/types.js +327 -3
  47. package/dist/cjs/types.js.map +1 -1
  48. package/dist/cjs/utils/cuid.d.ts +46 -0
  49. package/dist/cjs/utils/cuid.d.ts.map +1 -0
  50. package/dist/cjs/utils/cuid.js +6 -4
  51. package/dist/cjs/utils/cuid.js.map +1 -1
  52. package/dist/cjs/utils/environment.d.ts +137 -0
  53. package/dist/cjs/utils/environment.d.ts.map +1 -0
  54. package/dist/cjs/utils/environment.js +206 -0
  55. package/dist/cjs/utils/environment.js.map +1 -0
  56. package/dist/cjs/utils/iso8601.d.ts +79 -0
  57. package/dist/cjs/utils/iso8601.d.ts.map +1 -0
  58. package/dist/cjs/utils/migration.d.ts +162 -0
  59. package/dist/cjs/utils/migration.d.ts.map +1 -0
  60. package/dist/cjs/utils/migration.js +248 -0
  61. package/dist/cjs/utils/migration.js.map +1 -0
  62. package/dist/cjs/validator.d.ts +25 -0
  63. package/dist/cjs/validator.d.ts.map +1 -0
  64. package/dist/cjs/validator.js +85 -21
  65. package/dist/cjs/validator.js.map +1 -1
  66. package/dist/esm/compact-url.js +62 -0
  67. package/dist/esm/compact-url.js.map +1 -1
  68. package/dist/esm/crypto/decrypt.js +517 -90
  69. package/dist/esm/crypto/decrypt.js.map +1 -1
  70. package/dist/esm/crypto/encrypt.js +284 -105
  71. package/dist/esm/crypto/encrypt.js.map +1 -1
  72. package/dist/esm/crypto/index.js +5 -3
  73. package/dist/esm/crypto/index.js.map +1 -1
  74. package/dist/esm/crypto/shared.js +222 -0
  75. package/dist/esm/crypto/shared.js.map +1 -0
  76. package/dist/esm/errors.js +37 -0
  77. package/dist/esm/errors.js.map +1 -1
  78. package/dist/esm/index.js +26 -6
  79. package/dist/esm/index.js.map +1 -1
  80. package/dist/esm/parser.js +3 -0
  81. package/dist/esm/parser.js.map +1 -1
  82. package/dist/esm/specimen.js +95 -10
  83. package/dist/esm/specimen.js.map +1 -1
  84. package/dist/esm/types.js +317 -2
  85. package/dist/esm/types.js.map +1 -1
  86. package/dist/esm/utils/cuid.js +6 -4
  87. package/dist/esm/utils/cuid.js.map +1 -1
  88. package/dist/esm/utils/environment.js +193 -0
  89. package/dist/esm/utils/environment.js.map +1 -0
  90. package/dist/esm/utils/migration.js +237 -0
  91. package/dist/esm/utils/migration.js.map +1 -0
  92. package/dist/esm/validator.js +86 -22
  93. package/dist/esm/validator.js.map +1 -1
  94. package/dist/types/compact-url.d.ts +46 -0
  95. package/dist/types/compact-url.d.ts.map +1 -1
  96. package/dist/types/crypto/decrypt.d.ts +95 -18
  97. package/dist/types/crypto/decrypt.d.ts.map +1 -1
  98. package/dist/types/crypto/encrypt.d.ts +114 -14
  99. package/dist/types/crypto/encrypt.d.ts.map +1 -1
  100. package/dist/types/crypto/index.d.ts +5 -3
  101. package/dist/types/crypto/index.d.ts.map +1 -1
  102. package/dist/types/crypto/shared.d.ts +116 -0
  103. package/dist/types/crypto/shared.d.ts.map +1 -0
  104. package/dist/types/errors.d.ts +31 -1
  105. package/dist/types/errors.d.ts.map +1 -1
  106. package/dist/types/index.d.ts +15 -7
  107. package/dist/types/index.d.ts.map +1 -1
  108. package/dist/types/parser.d.ts.map +1 -1
  109. package/dist/types/specimen.d.ts +29 -4
  110. package/dist/types/specimen.d.ts.map +1 -1
  111. package/dist/types/types.d.ts +483 -17
  112. package/dist/types/types.d.ts.map +1 -1
  113. package/dist/types/utils/cuid.d.ts +5 -3
  114. package/dist/types/utils/cuid.d.ts.map +1 -1
  115. package/dist/types/utils/environment.d.ts +137 -0
  116. package/dist/types/utils/environment.d.ts.map +1 -0
  117. package/dist/types/utils/migration.d.ts +162 -0
  118. package/dist/types/utils/migration.d.ts.map +1 -0
  119. package/dist/types/validator.d.ts +1 -1
  120. package/dist/types/validator.d.ts.map +1 -1
  121. package/package.json +32 -14
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
package/dist/cjs/types.js CHANGED
@@ -3,14 +3,23 @@
3
3
  * WOLS TypeScript Library - Core Types
4
4
  *
5
5
  * This module defines all the core types, interfaces, and enums
6
- * for the WeMush Open Labeling Standard (WOLS) v1.1.0.
6
+ * for the WeMush Open Labeling Standard (WOLS) v1.3.0.
7
7
  *
8
8
  * @packageDocumentation
9
9
  * @module @wemush/wols
10
10
  */
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.GROWTH_STAGES = exports.SPECIMEN_TYPES = exports.WOLS_CONTEXT = exports.WOLS_VERSION = void 0;
12
+ exports.GROWTH_STAGES = exports.WOLS_TO_PLATFORM_MAP = exports.PRIMORDIA_TYPE_ALIAS = exports.SPECIMEN_TYPES = exports.WOLS_CONTEXT = exports.WOLS_VERSION = void 0;
13
13
  exports.asSpecimenId = asSpecimenId;
14
+ exports.registerTypeAlias = registerTypeAlias;
15
+ exports.resolveTypeAlias = resolveTypeAlias;
16
+ exports.resolveTypeAndStage = resolveTypeAndStage;
17
+ exports.getTypeAliases = getTypeAliases;
18
+ exports.mapToWolsType = mapToWolsType;
19
+ exports.mapFromWolsType = mapFromWolsType;
20
+ exports.registerPlatformType = registerPlatformType;
21
+ exports.normalizeGeneration = normalizeGeneration;
22
+ exports.isValidGeneration = isValidGeneration;
14
23
  exports.isSpecimenType = isSpecimenType;
15
24
  exports.isGrowthStage = isGrowthStage;
16
25
  exports.isStrain = isStrain;
@@ -20,7 +29,7 @@ exports.isStrain = isStrain;
20
29
  /**
21
30
  * WOLS specification version implemented by this library.
22
31
  */
23
- exports.WOLS_VERSION = '1.1.0';
32
+ exports.WOLS_VERSION = '1.3.0';
24
33
  /**
25
34
  * JSON-LD context URL for WOLS specimens.
26
35
  */
@@ -42,15 +51,330 @@ exports.SPECIMEN_TYPES = [
42
51
  'FRUITING',
43
52
  'HARVEST',
44
53
  ];
54
+ // =============================================================================
55
+ // TYPE ALIAS SYSTEM (v1.2.0)
56
+ // =============================================================================
57
+ /**
58
+ * Type alias registry for mapping platform-specific types to WOLS types.
59
+ * @internal
60
+ */
61
+ const TYPE_ALIAS_REGISTRY = new Map([
62
+ // Culture aliases
63
+ ['LIQUID_CULTURE', 'CULTURE'],
64
+ ['LC', 'CULTURE'],
65
+ ['AGAR', 'CULTURE'],
66
+ ['PETRI', 'CULTURE'],
67
+ ['SLANT', 'CULTURE'],
68
+ ['CULTURE_PLATE', 'CULTURE'],
69
+ // Spawn aliases
70
+ ['GRAIN_SPAWN', 'SPAWN'],
71
+ ['SAWDUST_SPAWN', 'SPAWN'],
72
+ ['PLUG_SPAWN', 'SPAWN'],
73
+ ['DOWEL', 'SPAWN'],
74
+ // Substrate aliases
75
+ ['BLOCK', 'SUBSTRATE'],
76
+ ['BAG', 'SUBSTRATE'],
77
+ ['BED', 'SUBSTRATE'],
78
+ ['LOG', 'SUBSTRATE'],
79
+ ['BUCKET', 'SUBSTRATE'],
80
+ // Fruiting aliases
81
+ ['FLUSH', 'FRUITING'],
82
+ ['PINNING', 'FRUITING'],
83
+ // PRIMORDIA is a reserved alias (v1.3.0): it resolves to FRUITING, and
84
+ // createSpecimen() additionally sets stage PRIMORDIA. See PRIMORDIA_TYPE_ALIAS.
85
+ ['PRIMORDIA', 'FRUITING'],
86
+ ['FRUIT', 'FRUITING'],
87
+ ['FIRST_FLUSH', 'FRUITING'],
88
+ // Harvest aliases
89
+ ['FRESH', 'HARVEST'],
90
+ ['DRIED', 'HARVEST'],
91
+ ['PROCESSED', 'HARVEST'],
92
+ ['EXTRACT', 'HARVEST'],
93
+ ]);
94
+ /**
95
+ * Reserved type alias with special handling (WOLS v1.3.0).
96
+ *
97
+ * `PRIMORDIA` is a GrowthStage, not a SpecimenType. When it is supplied as a
98
+ * type, it resolves to `FRUITING` and `createSpecimen()` sets
99
+ * `stage: 'PRIMORDIA'` unless a stage was supplied.
100
+ *
101
+ * @since 1.3.0
102
+ */
103
+ exports.PRIMORDIA_TYPE_ALIAS = 'PRIMORDIA';
104
+ /**
105
+ * Register a custom type alias.
106
+ *
107
+ * @param alias - The alias string (case-insensitive, stored uppercase)
108
+ * @param wolsType - The canonical WOLS SpecimenType
109
+ * @throws Error if `alias` is the reserved `PRIMORDIA` alias
110
+ *
111
+ * @example
112
+ * ```typescript
113
+ * registerTypeAlias('MYCELIUM_BLOCK', 'SUBSTRATE');
114
+ * ```
115
+ */
116
+ function registerTypeAlias(alias, wolsType) {
117
+ const upper = alias.toUpperCase();
118
+ if (upper === exports.PRIMORDIA_TYPE_ALIAS && wolsType !== 'FRUITING') {
119
+ throw new Error(`'${exports.PRIMORDIA_TYPE_ALIAS}' is a reserved alias for FRUITING and cannot be remapped`);
120
+ }
121
+ TYPE_ALIAS_REGISTRY.set(upper, wolsType);
122
+ }
123
+ /**
124
+ * Resolve a type alias to its canonical WOLS type.
125
+ * Returns the input if it's already a valid SpecimenType or no alias exists.
126
+ *
127
+ * @param typeOrAlias - Type string or alias to resolve
128
+ * @returns Canonical SpecimenType or original string if not found
129
+ *
130
+ * @example
131
+ * ```typescript
132
+ * resolveTypeAlias('LIQUID_CULTURE') // Returns 'CULTURE'
133
+ * resolveTypeAlias('CULTURE') // Returns 'CULTURE'
134
+ * resolveTypeAlias('unknown') // Returns 'unknown'
135
+ * ```
136
+ *
137
+ * @remarks Maps the type only. `PRIMORDIA` resolves to `FRUITING` here and
138
+ * the PRIMORDIA stage is lost; use {@link resolveTypeAndStage} when building
139
+ * a specimen from user input.
140
+ */
141
+ function resolveTypeAlias(typeOrAlias) {
142
+ const upper = typeOrAlias.toUpperCase();
143
+ // Already a valid type?
144
+ if (exports.SPECIMEN_TYPES.includes(upper)) {
145
+ return upper;
146
+ }
147
+ // Check alias registry
148
+ const resolved = TYPE_ALIAS_REGISTRY.get(upper);
149
+ return resolved ?? typeOrAlias;
150
+ }
151
+ /**
152
+ * Resolve a supplied specimen type (canonical or alias, any case) together
153
+ * with its stage, applying the reserved `PRIMORDIA` rule (WOLS v1.3.0).
154
+ *
155
+ * This is the single source of truth used by `createSpecimen()` and
156
+ * `serializeSpecimen()`. `resolveTypeAlias()` and `mapToWolsType()` map the
157
+ * type only; integrations that map a type and then build a specimen
158
+ * themselves should use this function so the `PRIMORDIA` stage is not lost.
159
+ *
160
+ * - `PRIMORDIA` resolves to `FRUITING`, and `stage` becomes `'PRIMORDIA'`
161
+ * only when no stage was supplied (a supplied stage is never overridden).
162
+ * `primordia` is `true` so callers can warn.
163
+ * - Other aliases resolve the type and leave `stage` unchanged.
164
+ * - Unknown types return `null`.
165
+ *
166
+ * @example
167
+ * ```typescript
168
+ * resolveTypeAndStage('primordia') // { type: 'FRUITING', stage: 'PRIMORDIA', primordia: true }
169
+ * resolveTypeAndStage('PRIMORDIA', 'FRUITING') // { type: 'FRUITING', stage: 'FRUITING', primordia: true }
170
+ * resolveTypeAndStage('LC') // { type: 'CULTURE', stage: undefined, primordia: false }
171
+ * ```
172
+ *
173
+ * @since 1.3.0
174
+ */
175
+ function resolveTypeAndStage(type, stage) {
176
+ if (typeof type !== 'string') {
177
+ return null;
178
+ }
179
+ if (type.toUpperCase() === exports.PRIMORDIA_TYPE_ALIAS) {
180
+ return { type: 'FRUITING', stage: stage ?? 'PRIMORDIA', primordia: true };
181
+ }
182
+ const resolved = resolveTypeAlias(type);
183
+ return isSpecimenType(resolved) ? { type: resolved, stage, primordia: false } : null;
184
+ }
185
+ /**
186
+ * Get all registered type aliases.
187
+ *
188
+ * @returns ReadonlyMap of alias -> SpecimenType mappings
189
+ */
190
+ function getTypeAliases() {
191
+ return TYPE_ALIAS_REGISTRY;
192
+ }
193
+ // =============================================================================
194
+ // TYPE MAPPING EXPORTS (v1.2.0)
195
+ // =============================================================================
196
+ /**
197
+ * Mapping from WOLS types to common platform type names.
198
+ *
199
+ * This provides a centralized lookup for integrations that need to
200
+ * display user-friendly type names or map to platform-specific values.
201
+ *
202
+ * @since 1.2.0
203
+ */
204
+ exports.WOLS_TO_PLATFORM_MAP = {
205
+ CULTURE: ['Liquid Culture', 'LC', 'Agar', 'Petri', 'Slant', 'Culture Plate'],
206
+ SPAWN: ['Grain Spawn', 'Sawdust Spawn', 'Plug Spawn', 'Dowel'],
207
+ SUBSTRATE: ['Block', 'Bag', 'Bed', 'Log', 'Bucket'],
208
+ FRUITING: ['Pinning', 'Primordia', 'Fruiting', 'Flush', 'First Flush'],
209
+ HARVEST: ['Fresh', 'Dried', 'Processed', 'Extract'],
210
+ };
211
+ /**
212
+ * Map a platform-specific type to a WOLS SpecimenType.
213
+ *
214
+ * First checks registered aliases, then falls back to direct lookup.
215
+ *
216
+ * @param platformType - Platform-specific type name
217
+ * @returns Matching SpecimenType or null if not found
218
+ *
219
+ * @example
220
+ * ```typescript
221
+ * mapToWolsType('Liquid Culture') // Returns 'CULTURE'
222
+ * mapToWolsType('LC') // Returns 'CULTURE'
223
+ * mapToWolsType('Unknown Type') // Returns null
224
+ * ```
225
+ *
226
+ * @remarks Maps the type only. `PRIMORDIA` maps to `FRUITING` and the
227
+ * PRIMORDIA stage is lost; use {@link resolveTypeAndStage} when building a
228
+ * specimen from user input.
229
+ *
230
+ * @since 1.2.0
231
+ */
232
+ function mapToWolsType(platformType) {
233
+ // First try the alias registry
234
+ const resolved = resolveTypeAlias(platformType);
235
+ if (isSpecimenType(resolved)) {
236
+ return resolved;
237
+ }
238
+ // Fall back to searching WOLS_TO_PLATFORM_MAP
239
+ const normalized = platformType.toUpperCase().replace(/\s+/g, '_');
240
+ for (const [wolsType, platformTypes] of Object.entries(exports.WOLS_TO_PLATFORM_MAP)) {
241
+ for (const pt of platformTypes) {
242
+ if (pt.toUpperCase().replace(/\s+/g, '_') === normalized) {
243
+ return wolsType;
244
+ }
245
+ }
246
+ }
247
+ return null;
248
+ }
249
+ /**
250
+ * Get all platform type names for a WOLS SpecimenType.
251
+ *
252
+ * @param wolsType - WOLS SpecimenType
253
+ * @returns Array of platform type names
254
+ *
255
+ * @example
256
+ * ```typescript
257
+ * mapFromWolsType('CULTURE')
258
+ * // Returns ['Liquid Culture', 'LC', 'Agar', 'Petri', 'Slant', 'Culture Plate']
259
+ * ```
260
+ *
261
+ * @since 1.2.0
262
+ */
263
+ function mapFromWolsType(wolsType) {
264
+ return exports.WOLS_TO_PLATFORM_MAP[wolsType] ?? [];
265
+ }
266
+ /**
267
+ * Register a custom platform type mapping.
268
+ *
269
+ * This adds to both the alias registry (for resolveTypeAlias) and
270
+ * can be used for custom platform integrations.
271
+ *
272
+ * @param platformType - Platform-specific type name
273
+ * @param wolsType - WOLS SpecimenType to map to
274
+ *
275
+ * @example
276
+ * ```typescript
277
+ * registerPlatformType('Mycelium Block', 'SUBSTRATE');
278
+ * mapToWolsType('Mycelium Block') // Returns 'SUBSTRATE'
279
+ * ```
280
+ *
281
+ * @since 1.2.0
282
+ */
283
+ function registerPlatformType(platformType, wolsType) {
284
+ // Add to alias registry for resolveTypeAlias support
285
+ registerTypeAlias(platformType, wolsType);
286
+ }
45
287
  /**
46
288
  * Array of valid growth stages for validation.
289
+ * Ordered by typical lifecycle progression.
47
290
  */
48
291
  exports.GROWTH_STAGES = [
49
292
  'INOCULATION',
293
+ 'INCUBATION',
50
294
  'COLONIZATION',
295
+ 'PRIMORDIA',
51
296
  'FRUITING',
297
+ 'SENESCENCE',
52
298
  'HARVEST',
53
299
  ];
300
+ /**
301
+ * Pattern for parsing generation strings.
302
+ * Matches: P, P1, F{n}, G{n}, or plain numbers.
303
+ */
304
+ const GENERATION_PARSE_PATTERN = /^(P|P1|F(\d+)|G(\d+)|(\d+))$/i;
305
+ /**
306
+ * Normalize a generation string to the specified format.
307
+ *
308
+ * Accepts multiple input formats:
309
+ * - Filial: F1, F2, F3, etc.
310
+ * - Parental: P or P1
311
+ * - Generational: G1, G2, G3, etc.
312
+ * - Numeric: 1, 2, 3, etc.
313
+ *
314
+ * @param generation - The generation string to normalize
315
+ * @param format - Target format (default: 'preserve')
316
+ * @returns Normalized generation string, or original if not parseable
317
+ *
318
+ * @example
319
+ * ```typescript
320
+ * normalizeGeneration('G2', 'filial') // Returns 'F2'
321
+ * normalizeGeneration('3', 'filial') // Returns 'F3'
322
+ * normalizeGeneration('F1', 'numeric') // Returns '1'
323
+ * normalizeGeneration('P', 'filial') // Returns 'P'
324
+ * ```
325
+ *
326
+ * @since 1.2.0
327
+ */
328
+ function normalizeGeneration(generation, format = 'preserve') {
329
+ const trimmed = generation.trim().toUpperCase();
330
+ // Handle parental generation specially
331
+ if (trimmed === 'P' || trimmed === 'P1') {
332
+ return format === 'numeric' ? '0' : 'P';
333
+ }
334
+ const match = GENERATION_PARSE_PATTERN.exec(trimmed);
335
+ if (!match) {
336
+ return generation; // Return original if not parseable
337
+ }
338
+ // Extract the numeric value
339
+ let numericValue;
340
+ if (match[2] !== undefined) {
341
+ // F{n} format
342
+ numericValue = parseInt(match[2], 10);
343
+ }
344
+ else if (match[3] !== undefined) {
345
+ // G{n} format
346
+ numericValue = parseInt(match[3], 10);
347
+ }
348
+ else if (match[4] !== undefined) {
349
+ // Plain number
350
+ numericValue = parseInt(match[4], 10);
351
+ }
352
+ else {
353
+ return generation; // Shouldn't reach here
354
+ }
355
+ switch (format) {
356
+ case 'preserve':
357
+ return trimmed;
358
+ case 'filial':
359
+ return `F${numericValue}`;
360
+ case 'numeric':
361
+ return String(numericValue);
362
+ default:
363
+ return generation;
364
+ }
365
+ }
366
+ /**
367
+ * Check if a generation string is valid.
368
+ *
369
+ * @param generation - The generation string to validate
370
+ * @returns True if valid, false otherwise
371
+ *
372
+ * @since 1.2.0
373
+ */
374
+ function isValidGeneration(generation) {
375
+ const trimmed = generation.trim().toUpperCase();
376
+ return GENERATION_PARSE_PATTERN.test(trimmed);
377
+ }
54
378
  // =============================================================================
55
379
  // TYPE GUARDS
56
380
  // =============================================================================
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAoCH,oCAEC;AA0RD,wCAEC;AAKD,sCAEC;AAKD,4BAOC;AAnVD,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF;;GAEG;AACU,QAAA,YAAY,GAAG,OAAO,CAAC;AAEpC;;GAEG;AACU,QAAA,YAAY,GAAG,4BAA4B,CAAC;AAkBzD;;;GAGG;AACH,SAAgB,YAAY,CAAC,EAAU;IACrC,OAAO,EAAgB,CAAC;AAC1B,CAAC;AAWD;;GAEG;AACU,QAAA,cAAc,GAA4B;IACrD,SAAS;IACT,OAAO;IACP,WAAW;IACX,UAAU;IACV,SAAS;CACD,CAAC;AAOX;;GAEG;AACU,QAAA,aAAa,GAA2B;IACnD,aAAa;IACb,cAAc;IACd,UAAU;IACV,SAAS;CACD,CAAC;AAgPX,gFAAgF;AAChF,cAAc;AACd,gFAAgF;AAEhF;;GAEG;AACH,SAAgB,cAAc,CAAC,KAAc;IAC3C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,sBAAc,CAAC,QAAQ,CAAC,KAAqB,CAAC,CAAC;AACrF,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,KAAc;IAC1C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,qBAAa,CAAC,QAAQ,CAAC,KAAoB,CAAC,CAAC;AACnF,CAAC;AAED;;GAEG;AACH,SAAgB,QAAQ,CAAC,KAAc;IACrC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACf,OAAQ,KAAgB,CAAC,IAAI,KAAK,QAAQ,CAC3C,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * CUID2 Generator - Zero-dependency implementation
3
+ *
4
+ * Generates collision-resistant unique identifiers following the CUID2 algorithm.
5
+ * This is a minimal implementation focused on the needs of WOLS specimen IDs.
6
+ *
7
+ * @module utils/cuid
8
+ */
9
+ /**
10
+ * Generate a CUID2-style identifier.
11
+ *
12
+ * The ID format is: [random][timestamp][counter][fingerprint][random]
13
+ * All components are base36 encoded for URL safety.
14
+ *
15
+ * @param length - Length of the generated ID (default: 24)
16
+ * @returns A unique, URL-safe identifier
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * const id = createId();
21
+ * // Returns something like: "clx1a2b3c4d5e6f7g8h9i0j1"
22
+ * ```
23
+ */
24
+ export declare function createId(length?: number): string;
25
+ /**
26
+ * Generate a specimen ID with the WOLS prefix.
27
+ *
28
+ * @returns A specimen ID in format "wemush:{cuid}"
29
+ *
30
+ * @example
31
+ * ```typescript
32
+ * const specimenId = createSpecimenId();
33
+ * // Returns: "wemush:clx1a2b3c4d5e6f7g8h9i0j1"
34
+ * ```
35
+ */
36
+ export declare function createSpecimenId(): string;
37
+ /**
38
+ * Validate a specimen ID: the `wemush:` prefix followed by any non-empty suffix
39
+ * (WOLS v1.3.0). Pass `strict: true` for the CUID-style `wemush:[a-z0-9]+` check.
40
+ *
41
+ * @param id - The ID to validate
42
+ * @param strict - Require a lowercase alphanumeric suffix
43
+ * @returns true if the ID is valid
44
+ */
45
+ export declare function isValidSpecimenId(id: string, strict?: boolean): boolean;
46
+ //# sourceMappingURL=cuid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cuid.d.ts","sourceRoot":"","sources":["../../../src/utils/cuid.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAuGH;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,QAAQ,CAAC,MAAM,GAAE,MAAuB,GAAG,MAAM,CAiBhE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,UAAQ,GAAG,OAAO,CAErE"}
@@ -139,12 +139,14 @@ function createSpecimenId() {
139
139
  return `wemush:${createId()}`;
140
140
  }
141
141
  /**
142
- * Validate a specimen ID format.
142
+ * Validate a specimen ID: the `wemush:` prefix followed by any non-empty suffix
143
+ * (WOLS v1.3.0). Pass `strict: true` for the CUID-style `wemush:[a-z0-9]+` check.
143
144
  *
144
145
  * @param id - The ID to validate
145
- * @returns true if the ID matches the expected format
146
+ * @param strict - Require a lowercase alphanumeric suffix
147
+ * @returns true if the ID is valid
146
148
  */
147
- function isValidSpecimenId(id) {
148
- return /^wemush:[a-z0-9]+$/.test(id);
149
+ function isValidSpecimenId(id, strict = false) {
150
+ return strict ? /^wemush:[a-z0-9]+$/.test(id) : id.startsWith('wemush:') && id.length > 7;
149
151
  }
150
152
  //# sourceMappingURL=cuid.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cuid.js","sourceRoot":"","sources":["../../../src/utils/cuid.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cuid.js","sourceRoot":"","sources":["../../../src/utils/cuid.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * Environment Detection Utilities
3
+ *
4
+ * This module provides runtime environment detection for selecting
5
+ * appropriate crypto implementations and other environment-specific behavior.
6
+ *
7
+ * @module utils/environment
8
+ * @since 1.2.0
9
+ */
10
+ /**
11
+ * Runtime environment type.
12
+ *
13
+ * @since 1.2.0
14
+ */
15
+ export type RuntimeEnvironment = 'node' | 'browser' | 'webworker' | 'deno' | 'bun' | 'unknown';
16
+ /**
17
+ * Check if running in a server-side Node.js environment.
18
+ *
19
+ * @returns True if running in Node.js, false otherwise
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * if (isServer()) {
24
+ * // Use Node.js crypto module
25
+ * }
26
+ * ```
27
+ *
28
+ * @since 1.2.0
29
+ */
30
+ export declare function isServer(): boolean;
31
+ /**
32
+ * Check if running in a browser environment.
33
+ *
34
+ * @returns True if running in a browser, false otherwise
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * if (isBrowser()) {
39
+ * // Use Web Crypto API
40
+ * }
41
+ * ```
42
+ *
43
+ * @since 1.2.0
44
+ */
45
+ export declare function isBrowser(): boolean;
46
+ /**
47
+ * Check if running in a Web Worker environment.
48
+ *
49
+ * @returns True if running in a Web Worker, false otherwise
50
+ *
51
+ * @since 1.2.0
52
+ */
53
+ export declare function isWebWorker(): boolean;
54
+ /**
55
+ * Check if running in Deno environment.
56
+ *
57
+ * @returns True if running in Deno, false otherwise
58
+ *
59
+ * @since 1.2.0
60
+ */
61
+ export declare function isDeno(): boolean;
62
+ /**
63
+ * Check if running in Bun environment.
64
+ *
65
+ * @returns True if running in Bun, false otherwise
66
+ *
67
+ * @since 1.2.0
68
+ */
69
+ export declare function isBun(): boolean;
70
+ /**
71
+ * Get the current runtime environment.
72
+ *
73
+ * @returns The detected runtime environment
74
+ *
75
+ * @example
76
+ * ```typescript
77
+ * const env = getRuntimeEnvironment();
78
+ * console.log(`Running in: ${env}`);
79
+ * ```
80
+ *
81
+ * @since 1.2.0
82
+ */
83
+ export declare function getRuntimeEnvironment(): RuntimeEnvironment;
84
+ /**
85
+ * Check if Web Crypto API is available.
86
+ *
87
+ * @returns True if Web Crypto API is available, false otherwise
88
+ *
89
+ * @since 1.2.0
90
+ */
91
+ export declare function supportsWebCrypto(): boolean;
92
+ /**
93
+ * Check if Node.js crypto module is available.
94
+ *
95
+ * Note: This performs a synchronous check and does not actually import the module.
96
+ *
97
+ * @returns True if likely running in Node.js with crypto support, false otherwise
98
+ *
99
+ * @since 1.2.0
100
+ */
101
+ export declare function supportsNodeCrypto(): boolean;
102
+ /**
103
+ * Check if any cryptographic support is available.
104
+ *
105
+ * This is useful for determining if encryption/decryption features can be used.
106
+ *
107
+ * @returns True if crypto is supported, false otherwise
108
+ *
109
+ * @example
110
+ * ```typescript
111
+ * if (isCryptoSupported()) {
112
+ * const encrypted = await encryptSpecimen(specimen, { key: password });
113
+ * } else {
114
+ * console.warn('Crypto not supported in this environment');
115
+ * }
116
+ * ```
117
+ *
118
+ * @since 1.2.0
119
+ */
120
+ export declare function isCryptoSupported(): boolean;
121
+ /**
122
+ * Check if TextEncoder/TextDecoder are available.
123
+ *
124
+ * @returns True if text encoding is supported, false otherwise
125
+ *
126
+ * @since 1.2.0
127
+ */
128
+ export declare function supportsTextEncoding(): boolean;
129
+ /**
130
+ * Check if URL and URLSearchParams are available.
131
+ *
132
+ * @returns True if URL APIs are supported, false otherwise
133
+ *
134
+ * @since 1.2.0
135
+ */
136
+ export declare function supportsURLAPIs(): boolean;
137
+ //# sourceMappingURL=environment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../../src/utils/environment.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;AAM/F;;;;;;;;;;;;;GAaG;AACH,wBAAgB,QAAQ,IAAI,OAAO,CAMlC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAMnC;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,IAAI,OAAO,CAkBrC;AAED;;;;;;GAMG;AACH,wBAAgB,MAAM,IAAI,OAAO,CAKhC;AAED;;;;;;GAMG;AACH,wBAAgB,KAAK,IAAI,OAAO,CAK/B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,IAAI,kBAAkB,CAO1D;AAMD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAM3C;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAMD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAM9C;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAMzC"}