@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.
- package/CHANGELOG.md +170 -0
- package/README.md +204 -31
- package/dist/cjs/compact-url.d.ts +150 -0
- package/dist/cjs/compact-url.d.ts.map +1 -0
- package/dist/cjs/compact-url.js +64 -0
- package/dist/cjs/compact-url.js.map +1 -1
- package/dist/cjs/crypto/decrypt.d.ts +110 -0
- package/dist/cjs/crypto/decrypt.d.ts.map +1 -0
- package/dist/cjs/crypto/decrypt.js +521 -90
- package/dist/cjs/crypto/decrypt.js.map +1 -1
- package/dist/cjs/crypto/encrypt.d.ts +132 -0
- package/dist/cjs/crypto/encrypt.d.ts.map +1 -0
- package/dist/cjs/crypto/encrypt.js +288 -105
- package/dist/cjs/crypto/encrypt.js.map +1 -1
- package/dist/cjs/crypto/index.d.ts +12 -0
- package/dist/cjs/crypto/index.d.ts.map +1 -0
- package/dist/cjs/crypto/index.js +15 -2
- package/dist/cjs/crypto/index.js.map +1 -1
- package/dist/cjs/crypto/shared.d.ts +116 -0
- package/dist/cjs/crypto/shared.d.ts.map +1 -0
- package/dist/cjs/crypto/shared.js +238 -0
- package/dist/cjs/crypto/shared.js.map +1 -0
- package/dist/cjs/errors.d.ts +133 -0
- package/dist/cjs/errors.d.ts.map +1 -0
- package/dist/cjs/errors.js +39 -1
- package/dist/cjs/errors.js.map +1 -1
- package/dist/cjs/index.d.ts +29 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +70 -3
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/parser.d.ts +30 -0
- package/dist/cjs/parser.d.ts.map +1 -0
- package/dist/cjs/parser.js +3 -0
- package/dist/cjs/parser.js.map +1 -1
- package/dist/cjs/qr/generate.d.ts +62 -0
- package/dist/cjs/qr/generate.d.ts.map +1 -0
- package/dist/cjs/qr/index.d.ts +10 -0
- package/dist/cjs/qr/index.d.ts.map +1 -0
- package/dist/cjs/specimen.d.ts +96 -0
- package/dist/cjs/specimen.d.ts.map +1 -0
- package/dist/cjs/specimen.js +95 -9
- package/dist/cjs/specimen.js.map +1 -1
- package/dist/cjs/types.d.ts +735 -0
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/cjs/types.js +327 -3
- package/dist/cjs/types.js.map +1 -1
- package/dist/cjs/utils/cuid.d.ts +46 -0
- package/dist/cjs/utils/cuid.d.ts.map +1 -0
- package/dist/cjs/utils/cuid.js +6 -4
- package/dist/cjs/utils/cuid.js.map +1 -1
- package/dist/cjs/utils/environment.d.ts +137 -0
- package/dist/cjs/utils/environment.d.ts.map +1 -0
- package/dist/cjs/utils/environment.js +206 -0
- package/dist/cjs/utils/environment.js.map +1 -0
- package/dist/cjs/utils/iso8601.d.ts +79 -0
- package/dist/cjs/utils/iso8601.d.ts.map +1 -0
- package/dist/cjs/utils/migration.d.ts +162 -0
- package/dist/cjs/utils/migration.d.ts.map +1 -0
- package/dist/cjs/utils/migration.js +248 -0
- package/dist/cjs/utils/migration.js.map +1 -0
- package/dist/cjs/validator.d.ts +25 -0
- package/dist/cjs/validator.d.ts.map +1 -0
- package/dist/cjs/validator.js +85 -21
- package/dist/cjs/validator.js.map +1 -1
- package/dist/esm/compact-url.js +62 -0
- package/dist/esm/compact-url.js.map +1 -1
- package/dist/esm/crypto/decrypt.js +517 -90
- package/dist/esm/crypto/decrypt.js.map +1 -1
- package/dist/esm/crypto/encrypt.js +284 -105
- package/dist/esm/crypto/encrypt.js.map +1 -1
- package/dist/esm/crypto/index.js +5 -3
- package/dist/esm/crypto/index.js.map +1 -1
- package/dist/esm/crypto/shared.js +222 -0
- package/dist/esm/crypto/shared.js.map +1 -0
- package/dist/esm/errors.js +37 -0
- package/dist/esm/errors.js.map +1 -1
- package/dist/esm/index.js +26 -6
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/parser.js +3 -0
- package/dist/esm/parser.js.map +1 -1
- package/dist/esm/specimen.js +95 -10
- package/dist/esm/specimen.js.map +1 -1
- package/dist/esm/types.js +317 -2
- package/dist/esm/types.js.map +1 -1
- package/dist/esm/utils/cuid.js +6 -4
- package/dist/esm/utils/cuid.js.map +1 -1
- package/dist/esm/utils/environment.js +193 -0
- package/dist/esm/utils/environment.js.map +1 -0
- package/dist/esm/utils/migration.js +237 -0
- package/dist/esm/utils/migration.js.map +1 -0
- package/dist/esm/validator.js +86 -22
- package/dist/esm/validator.js.map +1 -1
- package/dist/types/compact-url.d.ts +46 -0
- package/dist/types/compact-url.d.ts.map +1 -1
- package/dist/types/crypto/decrypt.d.ts +95 -18
- package/dist/types/crypto/decrypt.d.ts.map +1 -1
- package/dist/types/crypto/encrypt.d.ts +114 -14
- package/dist/types/crypto/encrypt.d.ts.map +1 -1
- package/dist/types/crypto/index.d.ts +5 -3
- package/dist/types/crypto/index.d.ts.map +1 -1
- package/dist/types/crypto/shared.d.ts +116 -0
- package/dist/types/crypto/shared.d.ts.map +1 -0
- package/dist/types/errors.d.ts +31 -1
- package/dist/types/errors.d.ts.map +1 -1
- package/dist/types/index.d.ts +15 -7
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/parser.d.ts.map +1 -1
- package/dist/types/specimen.d.ts +29 -4
- package/dist/types/specimen.d.ts.map +1 -1
- package/dist/types/types.d.ts +483 -17
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/utils/cuid.d.ts +5 -3
- package/dist/types/utils/cuid.d.ts.map +1 -1
- package/dist/types/utils/environment.d.ts +137 -0
- package/dist/types/utils/environment.d.ts.map +1 -0
- package/dist/types/utils/migration.d.ts +162 -0
- package/dist/types/utils/migration.d.ts.map +1 -0
- package/dist/types/validator.d.ts +1 -1
- package/dist/types/validator.d.ts.map +1 -1
- package/package.json +32 -14
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Version Migration Utilities
|
|
3
|
+
*
|
|
4
|
+
* This module provides utilities for comparing WOLS versions and
|
|
5
|
+
* migrating specimens between versions.
|
|
6
|
+
*
|
|
7
|
+
* @module utils/migration
|
|
8
|
+
* @since 1.2.0
|
|
9
|
+
*/
|
|
10
|
+
import { WOLS_VERSION } from '../types.js';
|
|
11
|
+
// =============================================================================
|
|
12
|
+
// INTERNAL STATE
|
|
13
|
+
// =============================================================================
|
|
14
|
+
/**
|
|
15
|
+
* Registered migration handlers.
|
|
16
|
+
*/
|
|
17
|
+
const MIGRATION_REGISTRY = [];
|
|
18
|
+
// =============================================================================
|
|
19
|
+
// VERSION UTILITIES
|
|
20
|
+
// =============================================================================
|
|
21
|
+
/**
|
|
22
|
+
* Parse a semantic version string into components.
|
|
23
|
+
*
|
|
24
|
+
* @param version - Semantic version string (e.g., "1.2.0")
|
|
25
|
+
* @returns Array of [major, minor, patch] or null if invalid
|
|
26
|
+
*/
|
|
27
|
+
function parseVersion(version) {
|
|
28
|
+
const match = /^(\d+)\.(\d+)\.(\d+)/.exec(version);
|
|
29
|
+
if (!match)
|
|
30
|
+
return null;
|
|
31
|
+
const major = parseInt(match[1], 10);
|
|
32
|
+
const minor = parseInt(match[2], 10);
|
|
33
|
+
const patch = parseInt(match[3], 10);
|
|
34
|
+
return [major, minor, patch];
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Compare two semantic versions.
|
|
38
|
+
*
|
|
39
|
+
* @param a - First version string
|
|
40
|
+
* @param b - Second version string
|
|
41
|
+
* @returns -1 if a < b, 0 if a === b, 1 if a > b
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```typescript
|
|
45
|
+
* compareVersions('1.0.0', '1.1.0') // Returns -1
|
|
46
|
+
* compareVersions('1.1.0', '1.1.0') // Returns 0
|
|
47
|
+
* compareVersions('2.0.0', '1.9.0') // Returns 1
|
|
48
|
+
* ```
|
|
49
|
+
*
|
|
50
|
+
* @since 1.2.0
|
|
51
|
+
*/
|
|
52
|
+
export function compareVersions(a, b) {
|
|
53
|
+
const parsedA = parseVersion(a);
|
|
54
|
+
const parsedB = parseVersion(b);
|
|
55
|
+
if (!parsedA || !parsedB) {
|
|
56
|
+
// Fallback to string comparison for invalid versions
|
|
57
|
+
if (a < b)
|
|
58
|
+
return -1;
|
|
59
|
+
if (a > b)
|
|
60
|
+
return 1;
|
|
61
|
+
return 0;
|
|
62
|
+
}
|
|
63
|
+
const [majorA, minorA, patchA] = parsedA;
|
|
64
|
+
const [majorB, minorB, patchB] = parsedB;
|
|
65
|
+
if (majorA !== majorB)
|
|
66
|
+
return majorA < majorB ? -1 : 1;
|
|
67
|
+
if (minorA !== minorB)
|
|
68
|
+
return minorA < minorB ? -1 : 1;
|
|
69
|
+
if (patchA !== patchB)
|
|
70
|
+
return patchA < patchB ? -1 : 1;
|
|
71
|
+
return 0;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Check if a specimen is using an outdated WOLS version.
|
|
75
|
+
*
|
|
76
|
+
* @param specimen - Specimen object or version string
|
|
77
|
+
* @returns True if the specimen version is older than current library version
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* ```typescript
|
|
81
|
+
* isOutdated(specimen) // True if specimen.version < WOLS_VERSION
|
|
82
|
+
* isOutdated('1.0.0') // True (older than current)
|
|
83
|
+
* ```
|
|
84
|
+
*
|
|
85
|
+
* @since 1.2.0
|
|
86
|
+
*/
|
|
87
|
+
export function isOutdated(specimen) {
|
|
88
|
+
const version = typeof specimen === 'string' ? specimen : specimen.version;
|
|
89
|
+
return compareVersions(version, WOLS_VERSION) < 0;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Check if a specimen is using a newer WOLS version than this library.
|
|
93
|
+
*
|
|
94
|
+
* This can happen when specimens are created by a newer library version.
|
|
95
|
+
*
|
|
96
|
+
* @param specimen - Specimen object or version string
|
|
97
|
+
* @returns True if the specimen version is newer than current library version
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* ```typescript
|
|
101
|
+
* isNewer(specimen) // True if specimen.version > WOLS_VERSION
|
|
102
|
+
* isNewer('2.0.0') // True if library is 1.x
|
|
103
|
+
* ```
|
|
104
|
+
*
|
|
105
|
+
* @since 1.2.0
|
|
106
|
+
*/
|
|
107
|
+
export function isNewer(specimen) {
|
|
108
|
+
const version = typeof specimen === 'string' ? specimen : specimen.version;
|
|
109
|
+
return compareVersions(version, WOLS_VERSION) > 0;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Get the current library WOLS version.
|
|
113
|
+
*
|
|
114
|
+
* @returns The WOLS version this library implements
|
|
115
|
+
*
|
|
116
|
+
* @since 1.2.0
|
|
117
|
+
*/
|
|
118
|
+
export function getCurrentVersion() {
|
|
119
|
+
return WOLS_VERSION;
|
|
120
|
+
}
|
|
121
|
+
// =============================================================================
|
|
122
|
+
// MIGRATION REGISTRATION
|
|
123
|
+
// =============================================================================
|
|
124
|
+
/**
|
|
125
|
+
* Register a migration handler for upgrading specimens between versions.
|
|
126
|
+
*
|
|
127
|
+
* Migrations are applied in order from oldest to newest when calling `migrate()`.
|
|
128
|
+
*
|
|
129
|
+
* @param from - Source version (e.g., "1.0.0")
|
|
130
|
+
* @param to - Target version (e.g., "1.1.0")
|
|
131
|
+
* @param handler - Function to transform the specimen
|
|
132
|
+
*
|
|
133
|
+
* @example
|
|
134
|
+
* ```typescript
|
|
135
|
+
* registerMigration('1.0.0', '1.1.0', (specimen) => {
|
|
136
|
+
* // Add new required field with default value
|
|
137
|
+
* return { ...specimen, newField: 'default' };
|
|
138
|
+
* });
|
|
139
|
+
* ```
|
|
140
|
+
*
|
|
141
|
+
* @since 1.2.0
|
|
142
|
+
*/
|
|
143
|
+
export function registerMigration(from, to, handler) {
|
|
144
|
+
MIGRATION_REGISTRY.push({ from, to, handler });
|
|
145
|
+
// Keep migrations sorted by source version
|
|
146
|
+
MIGRATION_REGISTRY.sort((a, b) => compareVersions(a.from, b.from));
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Check if a specimen can be migrated to the current version.
|
|
150
|
+
*
|
|
151
|
+
* @param specimen - Specimen to check
|
|
152
|
+
* @returns True if migration path exists, false otherwise
|
|
153
|
+
*
|
|
154
|
+
* @since 1.2.0
|
|
155
|
+
*/
|
|
156
|
+
export function canMigrate(specimen) {
|
|
157
|
+
if (!isOutdated(specimen)) {
|
|
158
|
+
return false; // Already current or newer
|
|
159
|
+
}
|
|
160
|
+
// Check if we have a migration path
|
|
161
|
+
let currentVersion = specimen.version;
|
|
162
|
+
while (compareVersions(currentVersion, WOLS_VERSION) < 0) {
|
|
163
|
+
const migration = MIGRATION_REGISTRY.find(m => m.from === currentVersion);
|
|
164
|
+
if (!migration) {
|
|
165
|
+
return false; // No migration from this version
|
|
166
|
+
}
|
|
167
|
+
currentVersion = migration.to;
|
|
168
|
+
}
|
|
169
|
+
return true;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Migrate a specimen to the current WOLS version.
|
|
173
|
+
*
|
|
174
|
+
* Applies all registered migrations in order from the specimen's version
|
|
175
|
+
* to the current library version.
|
|
176
|
+
*
|
|
177
|
+
* @param specimen - Specimen to migrate
|
|
178
|
+
* @returns Migrated specimen with updated version
|
|
179
|
+
* @throws Error if no migration path exists
|
|
180
|
+
*
|
|
181
|
+
* @example
|
|
182
|
+
* ```typescript
|
|
183
|
+
* const oldSpecimen = parseSpecimen(oldJson);
|
|
184
|
+
* if (isOutdated(oldSpecimen)) {
|
|
185
|
+
* const updated = migrate(oldSpecimen);
|
|
186
|
+
* console.log('Migrated to:', updated.version);
|
|
187
|
+
* }
|
|
188
|
+
* ```
|
|
189
|
+
*
|
|
190
|
+
* @since 1.2.0
|
|
191
|
+
*/
|
|
192
|
+
export function migrate(specimen) {
|
|
193
|
+
if (!isOutdated(specimen)) {
|
|
194
|
+
return specimen; // Already current or newer
|
|
195
|
+
}
|
|
196
|
+
let current = specimen;
|
|
197
|
+
let currentVersion = specimen.version;
|
|
198
|
+
while (compareVersions(currentVersion, WOLS_VERSION) < 0) {
|
|
199
|
+
const migration = MIGRATION_REGISTRY.find(m => m.from === currentVersion);
|
|
200
|
+
if (!migration) {
|
|
201
|
+
throw new Error(`No migration path from version ${currentVersion} to ${WOLS_VERSION}. ` +
|
|
202
|
+
`Register a migration using registerMigration().`);
|
|
203
|
+
}
|
|
204
|
+
current = migration.handler(current);
|
|
205
|
+
currentVersion = migration.to;
|
|
206
|
+
}
|
|
207
|
+
// Ensure version is updated and consistent with the migration chain
|
|
208
|
+
if (currentVersion !== WOLS_VERSION) {
|
|
209
|
+
throw new Error(`Migration ended at version ${currentVersion}, but expected ${WOLS_VERSION}. ` +
|
|
210
|
+
`Check the registered migrations for incorrect target versions.`);
|
|
211
|
+
}
|
|
212
|
+
return {
|
|
213
|
+
...current,
|
|
214
|
+
version: currentVersion,
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Get all registered migrations.
|
|
219
|
+
*
|
|
220
|
+
* @returns Array of migration definitions
|
|
221
|
+
*
|
|
222
|
+
* @since 1.2.0
|
|
223
|
+
*/
|
|
224
|
+
export function getMigrations() {
|
|
225
|
+
return MIGRATION_REGISTRY;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Clear all registered migrations.
|
|
229
|
+
*
|
|
230
|
+
* Primarily useful for testing.
|
|
231
|
+
*
|
|
232
|
+
* @since 1.2.0
|
|
233
|
+
*/
|
|
234
|
+
export function clearMigrations() {
|
|
235
|
+
MIGRATION_REGISTRY.length = 0;
|
|
236
|
+
}
|
|
237
|
+
//# sourceMappingURL=migration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration.js","sourceRoot":"","sources":["../../../src/utils/migration.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/validator.js
CHANGED
|
@@ -6,23 +6,32 @@
|
|
|
6
6
|
* @module validator
|
|
7
7
|
*/
|
|
8
8
|
import { WolsErrorCode } from './errors.js';
|
|
9
|
-
import { isGrowthStage, isSpecimenType, WOLS_CONTEXT, } from './types.js';
|
|
9
|
+
import { GROWTH_STAGES, isGrowthStage, isSpecimenType, WOLS_CONTEXT, } from './types.js';
|
|
10
10
|
import { isValidISO8601 } from './utils/iso8601.js';
|
|
11
11
|
// =============================================================================
|
|
12
12
|
// VALIDATION PATTERNS
|
|
13
13
|
// =============================================================================
|
|
14
14
|
/**
|
|
15
|
-
* Pattern for
|
|
15
|
+
* Pattern for the opt-in 'strict' ID mode (CUID-style): wemush:[a-z0-9]+
|
|
16
16
|
*/
|
|
17
|
-
const
|
|
17
|
+
const SPECIMEN_ID_PATTERN_STRICT = /^wemush:[a-z0-9]+$/;
|
|
18
|
+
/**
|
|
19
|
+
* Pattern for valid specimen ID with ULID suffix.
|
|
20
|
+
* ULID: 26 characters from Crockford's Base32 alphabet (excluding I, L, O, U).
|
|
21
|
+
*/
|
|
22
|
+
const SPECIMEN_ID_PATTERN_ULID = /^wemush:[0-9A-HJKMNP-TV-Z]{26}$/i;
|
|
23
|
+
/**
|
|
24
|
+
* Pattern for valid specimen ID with UUID v4 suffix.
|
|
25
|
+
*/
|
|
26
|
+
const SPECIMEN_ID_PATTERN_UUID = /^wemush:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
18
27
|
/**
|
|
19
28
|
* Pattern for valid semver version: major.minor.patch
|
|
20
29
|
*/
|
|
21
30
|
const SEMVER_PATTERN = /^\d+\.\d+\.\d+$/;
|
|
22
31
|
/**
|
|
23
|
-
* Pattern for valid strain generation: P, F1, F2,
|
|
32
|
+
* Pattern for valid strain generation: P, P1, F1, F2, G1, G2, or numeric (v1.2.0).
|
|
24
33
|
*/
|
|
25
|
-
const GENERATION_PATTERN = /^(P|F\d+)$/;
|
|
34
|
+
const GENERATION_PATTERN = /^(P|P\d+|F\d+|G\d+|\d+)$/;
|
|
26
35
|
/**
|
|
27
36
|
* Known WOLS specimen fields (for unknown field detection).
|
|
28
37
|
*/
|
|
@@ -41,6 +50,7 @@ const KNOWN_FIELDS = new Set([
|
|
|
41
50
|
'creator',
|
|
42
51
|
'custom',
|
|
43
52
|
'signature',
|
|
53
|
+
'_meta', // v1.2.0: Implementation metadata namespace
|
|
44
54
|
]);
|
|
45
55
|
// =============================================================================
|
|
46
56
|
// HELPER FUNCTIONS
|
|
@@ -101,9 +111,17 @@ function validateType(value, errors, _options) {
|
|
|
101
111
|
}
|
|
102
112
|
}
|
|
103
113
|
/**
|
|
104
|
-
* Validate id field.
|
|
114
|
+
* Validate id field with flexible ID format support.
|
|
115
|
+
*
|
|
116
|
+
* WOLS requires implementations to accept any non-empty suffix after
|
|
117
|
+
* `wemush:`, so that is the default. Format checks are opt-in:
|
|
118
|
+
* - 'any': wemush:{non-empty-string} (default since v1.3.0)
|
|
119
|
+
* - 'strict': wemush:[a-z0-9]+ (CUID-style)
|
|
120
|
+
* - 'ulid': wemush:{ULID}
|
|
121
|
+
* - 'uuid': wemush:{UUID}
|
|
122
|
+
* - Custom validator function
|
|
105
123
|
*/
|
|
106
|
-
function validateId(value, errors,
|
|
124
|
+
function validateId(value, errors, options) {
|
|
107
125
|
if (value === undefined || value === null) {
|
|
108
126
|
errors.push(error('id', WolsErrorCode.REQUIRED_FIELD, 'id is required'));
|
|
109
127
|
return;
|
|
@@ -112,8 +130,43 @@ function validateId(value, errors, _options) {
|
|
|
112
130
|
errors.push(error('id', WolsErrorCode.INVALID_ID_FORMAT, 'id must be a string'));
|
|
113
131
|
return;
|
|
114
132
|
}
|
|
115
|
-
|
|
116
|
-
|
|
133
|
+
// Custom validator takes precedence
|
|
134
|
+
if (options.customIdValidator) {
|
|
135
|
+
if (!options.customIdValidator(value)) {
|
|
136
|
+
errors.push(error('id', WolsErrorCode.INVALID_ID_FORMAT, `id failed custom validation: '${value}'`));
|
|
137
|
+
}
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
// Check wemush: prefix requirement (all modes require this)
|
|
141
|
+
if (!value.startsWith('wemush:')) {
|
|
142
|
+
errors.push(error('id', WolsErrorCode.INVALID_ID_FORMAT, `id must start with 'wemush:', got '${value}'`));
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
// Get ID mode (default: 'any', as required by WOLS)
|
|
146
|
+
const mode = options.idMode ?? 'any';
|
|
147
|
+
switch (mode) {
|
|
148
|
+
case 'strict':
|
|
149
|
+
if (!SPECIMEN_ID_PATTERN_STRICT.test(value)) {
|
|
150
|
+
errors.push(error('id', WolsErrorCode.INVALID_ID_FORMAT, `id must match pattern 'wemush:[a-z0-9]+', got '${value}'`));
|
|
151
|
+
}
|
|
152
|
+
break;
|
|
153
|
+
case 'ulid':
|
|
154
|
+
if (!SPECIMEN_ID_PATTERN_ULID.test(value)) {
|
|
155
|
+
errors.push(error('id', WolsErrorCode.INVALID_ID_FORMAT, `id must be a valid ULID after 'wemush:' prefix, got '${value}'`));
|
|
156
|
+
}
|
|
157
|
+
break;
|
|
158
|
+
case 'uuid':
|
|
159
|
+
if (!SPECIMEN_ID_PATTERN_UUID.test(value)) {
|
|
160
|
+
errors.push(error('id', WolsErrorCode.INVALID_ID_FORMAT, `id must be a valid UUID after 'wemush:' prefix, got '${value}'`));
|
|
161
|
+
}
|
|
162
|
+
break;
|
|
163
|
+
case 'any':
|
|
164
|
+
// Just check for non-empty suffix after wemush:
|
|
165
|
+
if (value.length <= 7) {
|
|
166
|
+
// 'wemush:'.length = 7
|
|
167
|
+
errors.push(error('id', WolsErrorCode.INVALID_ID_FORMAT, `id suffix cannot be empty after 'wemush:'`));
|
|
168
|
+
}
|
|
169
|
+
break;
|
|
117
170
|
}
|
|
118
171
|
}
|
|
119
172
|
/**
|
|
@@ -164,11 +217,12 @@ function validateStage(value, errors, warnings, options) {
|
|
|
164
217
|
return; // Optional field
|
|
165
218
|
}
|
|
166
219
|
if (!isGrowthStage(value)) {
|
|
220
|
+
const stages = GROWTH_STAGES.join(', ');
|
|
167
221
|
if (options.level === 'lenient') {
|
|
168
|
-
warnings.push(warning('stage', 'UNKNOWN_GROWTH_STAGE', `Unknown growth stage '${value}'`,
|
|
222
|
+
warnings.push(warning('stage', 'UNKNOWN_GROWTH_STAGE', `Unknown growth stage '${String(value)}'`, `Use one of: ${stages}`));
|
|
169
223
|
}
|
|
170
224
|
else {
|
|
171
|
-
errors.push(error('stage', 'INVALID_GROWTH_STAGE', `stage must be one of
|
|
225
|
+
errors.push(error('stage', 'INVALID_GROWTH_STAGE', `stage must be one of ${stages}, got '${String(value)}'`));
|
|
172
226
|
}
|
|
173
227
|
}
|
|
174
228
|
}
|
|
@@ -195,7 +249,10 @@ function validateCreated(value, errors, warnings, options) {
|
|
|
195
249
|
/**
|
|
196
250
|
* Validate strain object.
|
|
197
251
|
*/
|
|
198
|
-
function
|
|
252
|
+
function isNonNegativeInteger(value) {
|
|
253
|
+
return typeof value === 'number' && Number.isInteger(value) && value >= 0;
|
|
254
|
+
}
|
|
255
|
+
function validateStrain(value, errors, warnings, _options) {
|
|
199
256
|
if (value === undefined || value === null) {
|
|
200
257
|
return; // Optional field
|
|
201
258
|
}
|
|
@@ -211,15 +268,21 @@ function validateStrain(value, errors, _options) {
|
|
|
211
268
|
// Validate generation format if present
|
|
212
269
|
if (strain.generation !== undefined) {
|
|
213
270
|
if (typeof strain.generation !== 'string' || !GENERATION_PATTERN.test(strain.generation)) {
|
|
214
|
-
errors.push(error('strain.generation', WolsErrorCode.INVALID_GENERATION, `strain.generation must
|
|
271
|
+
errors.push(error('strain.generation', WolsErrorCode.INVALID_GENERATION, `strain.generation must be P, P<n>, F<n>, G<n> or <n>, got '${String(strain.generation)}'`));
|
|
215
272
|
}
|
|
216
273
|
}
|
|
217
|
-
// Validate clonalGeneration if present
|
|
218
|
-
if (strain.clonalGeneration !== undefined) {
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
274
|
+
// Validate clonalGeneration if present (0 = original culture)
|
|
275
|
+
if (strain.clonalGeneration !== undefined && !isNonNegativeInteger(strain.clonalGeneration)) {
|
|
276
|
+
errors.push(error('strain.clonalGeneration', WolsErrorCode.INVALID_FORMAT, 'strain.clonalGeneration must be a non-negative integer (0 = original culture)'));
|
|
277
|
+
}
|
|
278
|
+
// Validate transferDepth if present (v1.3.0; 0 = original culture)
|
|
279
|
+
if (strain.transferDepth !== undefined) {
|
|
280
|
+
if (!isNonNegativeInteger(strain.transferDepth)) {
|
|
281
|
+
errors.push(error('strain.transferDepth', WolsErrorCode.INVALID_FORMAT, `strain.transferDepth must be a non-negative integer, got ${JSON.stringify(strain.transferDepth)}`));
|
|
282
|
+
}
|
|
283
|
+
else if (isNonNegativeInteger(strain.clonalGeneration) &&
|
|
284
|
+
strain.transferDepth < strain.clonalGeneration) {
|
|
285
|
+
warnings.push(warning('strain.transferDepth', 'TRANSFER_DEPTH_BELOW_CLONAL_GENERATION', `strain.transferDepth (${strain.transferDepth}) is less than strain.clonalGeneration (${strain.clonalGeneration})`, 'transferDepth counts every transfer, including subcultures, so it should be at least clonalGeneration'));
|
|
223
286
|
}
|
|
224
287
|
}
|
|
225
288
|
// Validate source if present (informational, no strict enum)
|
|
@@ -248,7 +311,7 @@ function checkUnknownFields(specimen, warnings, options) {
|
|
|
248
311
|
// MAIN VALIDATION FUNCTION
|
|
249
312
|
// =============================================================================
|
|
250
313
|
/**
|
|
251
|
-
* Validate a specimen object against the WOLS v1.
|
|
314
|
+
* Validate a specimen object against the WOLS v1.3.0 schema.
|
|
252
315
|
*
|
|
253
316
|
* @param specimen - The specimen object to validate
|
|
254
317
|
* @param options - Validation options
|
|
@@ -265,8 +328,9 @@ function checkUnknownFields(specimen, warnings, options) {
|
|
|
265
328
|
export function validateSpecimen(specimen, options = {}) {
|
|
266
329
|
const errors = [];
|
|
267
330
|
const warnings = [];
|
|
268
|
-
// Default options
|
|
331
|
+
// Default options - spread to include all optional properties
|
|
269
332
|
const opts = {
|
|
333
|
+
...options,
|
|
270
334
|
allowUnknownFields: options.allowUnknownFields ?? false,
|
|
271
335
|
level: options.level ?? 'strict',
|
|
272
336
|
};
|
|
@@ -292,7 +356,7 @@ export function validateSpecimen(specimen, options = {}) {
|
|
|
292
356
|
// Validate optional fields
|
|
293
357
|
validateStage(data['stage'], errors, warnings, opts);
|
|
294
358
|
validateCreated(data['created'], errors, warnings, opts);
|
|
295
|
-
validateStrain(data['strain'], errors, opts);
|
|
359
|
+
validateStrain(data['strain'], errors, warnings, opts);
|
|
296
360
|
// Check for unknown fields
|
|
297
361
|
checkUnknownFields(data, warnings, opts);
|
|
298
362
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/validator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -101,4 +101,50 @@ export declare function toCompactUrl(specimen: Specimen): string;
|
|
|
101
101
|
* ```
|
|
102
102
|
*/
|
|
103
103
|
export declare function parseCompactUrl(url: string): ParseResult<SpecimenRef>;
|
|
104
|
+
/**
|
|
105
|
+
* Parse a compact URL, throwing an error on failure.
|
|
106
|
+
*
|
|
107
|
+
* This is a convenience wrapper around parseCompactUrl() for cases
|
|
108
|
+
* where you prefer exceptions over result types.
|
|
109
|
+
*
|
|
110
|
+
* @param url - Compact URL to parse (wemush://v1/...)
|
|
111
|
+
* @returns SpecimenRef on success
|
|
112
|
+
* @throws WolsParseError on parse failure
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* ```typescript
|
|
116
|
+
* try {
|
|
117
|
+
* const ref = parseCompactUrlOrThrow('wemush://v1/clx1a2b3c4?s=POSTR');
|
|
118
|
+
* console.log(ref.species); // "Pleurotus ostreatus"
|
|
119
|
+
* } catch (err) {
|
|
120
|
+
* console.error('Failed to parse:', err.message);
|
|
121
|
+
* }
|
|
122
|
+
* ```
|
|
123
|
+
*
|
|
124
|
+
* @since 1.2.0
|
|
125
|
+
*/
|
|
126
|
+
export declare function parseCompactUrlOrThrow(url: string): SpecimenRef;
|
|
127
|
+
/**
|
|
128
|
+
* Parse a compact URL, returning null on failure.
|
|
129
|
+
*
|
|
130
|
+
* This is a convenience wrapper around parseCompactUrl() for cases
|
|
131
|
+
* where you want to handle failures with nullish coalescing.
|
|
132
|
+
*
|
|
133
|
+
* @param url - Compact URL to parse (wemush://v1/...)
|
|
134
|
+
* @returns SpecimenRef on success, null on failure
|
|
135
|
+
*
|
|
136
|
+
* @example
|
|
137
|
+
* ```typescript
|
|
138
|
+
* const ref = parseCompactUrlOrNull('wemush://v1/clx1a2b3c4?s=POSTR');
|
|
139
|
+
* if (ref !== null) {
|
|
140
|
+
* console.log(ref.species);
|
|
141
|
+
* }
|
|
142
|
+
*
|
|
143
|
+
* // Or with nullish coalescing:
|
|
144
|
+
* const species = parseCompactUrlOrNull(url)?.species ?? 'Unknown';
|
|
145
|
+
* ```
|
|
146
|
+
*
|
|
147
|
+
* @since 1.2.0
|
|
148
|
+
*/
|
|
149
|
+
export declare function parseCompactUrlOrNull(url: string): SpecimenRef | null;
|
|
104
150
|
//# sourceMappingURL=compact-url.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compact-url.d.ts","sourceRoot":"","sources":["../../src/compact-url.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAA6B,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEhG;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAWhD,CAAC;AAYF;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEnE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEtE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CASvE;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAsDvD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC,WAAW,CAAC,CA6GrE"}
|
|
1
|
+
{"version":3,"file":"compact-url.d.ts","sourceRoot":"","sources":["../../src/compact-url.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAA6B,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEhG;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAWhD,CAAC;AAYF;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEnE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEtE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CASvE;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAsDvD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC,WAAW,CAAC,CA6GrE;AAMD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAM/D;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAOrE"}
|