unacy 0.6.0 → 0.8.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/README.md +193 -47
- package/dist/converters.d.ts +28 -4
- package/dist/converters.d.ts.map +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +5 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/registry.d.ts +39 -41
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +58 -14
- package/dist/registry.js.map +1 -1
- package/dist/types.d.ts +159 -18
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/validation.d.ts +106 -0
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +317 -0
- package/dist/utils/validation.js.map +1 -1
- package/package.json +16 -8
- package/dist/__tests__/converters.test.d.ts +0 -2
- package/dist/__tests__/converters.test.d.ts.map +0 -1
- package/dist/__tests__/converters.test.js +0 -128
- package/dist/__tests__/converters.test.js.map +0 -1
- package/dist/__tests__/errors.test.d.ts +0 -2
- package/dist/__tests__/errors.test.d.ts.map +0 -1
- package/dist/__tests__/errors.test.js +0 -93
- package/dist/__tests__/errors.test.js.map +0 -1
- package/dist/__tests__/formatters.test.d.ts +0 -2
- package/dist/__tests__/formatters.test.d.ts.map +0 -1
- package/dist/__tests__/formatters.test.js +0 -244
- package/dist/__tests__/formatters.test.js.map +0 -1
- package/dist/__tests__/registry.test.d.ts +0 -2
- package/dist/__tests__/registry.test.d.ts.map +0 -1
- package/dist/__tests__/registry.test.js +0 -403
- package/dist/__tests__/registry.test.js.map +0 -1
- package/dist/__tests__/types.test.d.ts +0 -2
- package/dist/__tests__/types.test.d.ts.map +0 -1
- package/dist/__tests__/types.test.js +0 -115
- package/dist/__tests__/types.test.js.map +0 -1
package/dist/registry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|
package/dist/registry.js
CHANGED
|
@@ -76,8 +76,15 @@ class ConverterRegistryImpl {
|
|
|
76
76
|
});
|
|
77
77
|
// Get metadata for this unit
|
|
78
78
|
const unitMetadata = this.metadata.get(fromUnit) || {};
|
|
79
|
-
// Create a callable function that brands a value with the unit
|
|
80
|
-
|
|
79
|
+
// Create a callable function that brands a value with the unit.
|
|
80
|
+
// For tuples, collect spread args into an array.
|
|
81
|
+
// For classes, construct an instance from the spread args.
|
|
82
|
+
const metaType = unitMetadata?.type;
|
|
83
|
+
const brandFunction = metaType && typeof metaType === 'function' && /^[A-Z]/.test(metaType.name ?? '')
|
|
84
|
+
? (...args) => new metaType(...args)
|
|
85
|
+
: metaType && Array.isArray(metaType)
|
|
86
|
+
? (...args) => args
|
|
87
|
+
: (value) => value;
|
|
81
88
|
// Create unit accessor object with to, addMetadata, register, and metadata properties
|
|
82
89
|
const unitAccessor = Object.assign(brandFunction, {
|
|
83
90
|
to: toProxy,
|
|
@@ -112,38 +119,68 @@ class ConverterRegistryImpl {
|
|
|
112
119
|
this.unitAccessors.set(fromUnit, accessorProxy);
|
|
113
120
|
}
|
|
114
121
|
}
|
|
122
|
+
// Implementation
|
|
115
123
|
register(from, to, converter) {
|
|
124
|
+
// Handle single unit registration (overload 1)
|
|
125
|
+
if (to === undefined && converter === undefined) {
|
|
126
|
+
const unitMetadata = from;
|
|
127
|
+
const newMetadata = new Map(this.metadata);
|
|
128
|
+
const unitName = unitMetadata.name;
|
|
129
|
+
const existingMetadata = newMetadata.get(unitName) || {};
|
|
130
|
+
newMetadata.set(unitName, { ...existingMetadata, ...unitMetadata });
|
|
131
|
+
return createRegistryFromGraph(this.graph, this.pathCache, newMetadata);
|
|
132
|
+
}
|
|
133
|
+
// Extract metadata if provided and store unit names
|
|
134
|
+
let fromName;
|
|
135
|
+
let toName;
|
|
136
|
+
const newMetadata = new Map(this.metadata);
|
|
116
137
|
if (typeof from === 'object' && 'name' in from) {
|
|
117
|
-
|
|
138
|
+
fromName = from.name;
|
|
139
|
+
// Store metadata for the from unit
|
|
140
|
+
const existingFromMetadata = newMetadata.get(fromName) || {};
|
|
141
|
+
newMetadata.set(fromName, { ...existingFromMetadata, ...from });
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
fromName = from;
|
|
118
145
|
}
|
|
119
146
|
if (typeof to === 'object' && 'name' in to) {
|
|
120
|
-
|
|
147
|
+
toName = to.name;
|
|
148
|
+
// Store metadata for the to unit
|
|
149
|
+
const existingToMetadata = newMetadata.get(toName) || {};
|
|
150
|
+
newMetadata.set(toName, { ...existingToMetadata, ...to });
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
toName = to;
|
|
121
154
|
}
|
|
122
155
|
// Check if it's a bidirectional converter
|
|
123
156
|
if (typeof converter === 'object' && 'to' in converter && 'from' in converter) {
|
|
124
157
|
// Handle bidirectional converter
|
|
125
158
|
const biConverter = converter;
|
|
159
|
+
// Pass the original metadata objects (not just names) to preserve metadata
|
|
126
160
|
return this.register(from, to, biConverter.to).register(to, from, biConverter.from);
|
|
127
161
|
}
|
|
128
162
|
// Handle unidirectional converter
|
|
129
163
|
const newGraph = new Map(this.graph);
|
|
130
|
-
if (!newGraph.has(
|
|
131
|
-
newGraph.set(
|
|
164
|
+
if (!newGraph.has(fromName)) {
|
|
165
|
+
newGraph.set(fromName, new Map());
|
|
132
166
|
}
|
|
133
|
-
const fromMap = new Map(newGraph.get(
|
|
134
|
-
fromMap.set(
|
|
135
|
-
newGraph.set(
|
|
167
|
+
const fromMap = new Map(newGraph.get(fromName));
|
|
168
|
+
fromMap.set(toName, converter);
|
|
169
|
+
newGraph.set(fromName, fromMap);
|
|
136
170
|
// Return new registry instance (immutable) with proxy
|
|
137
|
-
return createRegistryFromGraph(newGraph, new Map(),
|
|
171
|
+
return createRegistryFromGraph(newGraph, new Map(), newMetadata);
|
|
138
172
|
}
|
|
139
173
|
registerBidirectional(from, to, converter) {
|
|
140
174
|
return this.register(from, to, converter.to).register(to, from, converter.from);
|
|
141
175
|
}
|
|
142
176
|
allow(from, to) {
|
|
177
|
+
// Extract unit names from metadata objects if provided
|
|
178
|
+
const fromName = typeof from === 'object' && 'name' in from ? from.name : from;
|
|
179
|
+
const toName = typeof to === 'object' && 'name' in to ? to.name : to;
|
|
143
180
|
// Verify that a conversion path exists at runtime
|
|
144
|
-
const converter = this.getConverter(
|
|
181
|
+
const converter = this.getConverter(fromName, toName);
|
|
145
182
|
if (!converter) {
|
|
146
|
-
throw new ConversionError(
|
|
183
|
+
throw new ConversionError(fromName, toName, 'No conversion path exists');
|
|
147
184
|
}
|
|
148
185
|
// Return the same registry instance with updated type information
|
|
149
186
|
// The actual conversion already works via BFS, we just need to expose it in types
|
|
@@ -264,8 +301,15 @@ function createRegistryFromGraph(graph, pathCache, metadata) {
|
|
|
264
301
|
});
|
|
265
302
|
// Get metadata for this unit (may be empty)
|
|
266
303
|
const unitMetadata = target.metadata.get(prop) || {};
|
|
267
|
-
// Create a callable function that brands a value with the unit
|
|
268
|
-
|
|
304
|
+
// Create a callable function that brands a value with the unit.
|
|
305
|
+
// For tuples, collect spread args into an array.
|
|
306
|
+
// For classes, construct an instance from the spread args.
|
|
307
|
+
const metaType = unitMetadata?.type;
|
|
308
|
+
const brandFunction = metaType && typeof metaType === 'function' && /^[A-Z]/.test(metaType.name ?? '')
|
|
309
|
+
? (...args) => new metaType(...args)
|
|
310
|
+
: metaType && Array.isArray(metaType)
|
|
311
|
+
? (...args) => args
|
|
312
|
+
: (value) => value;
|
|
269
313
|
// Create unit accessor with all methods
|
|
270
314
|
const dynamicAccessor = Object.assign(brandFunction, {
|
|
271
315
|
to: toProxy,
|
package/dist/registry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAoLvE;;GAEG;AACH,MAAM,qBAAqB;IACR,KAAK,CAA0D;IAC/D,SAAS,CAAmC;IAC5C,aAAa,CAAwB;IACrC,QAAQ,CAAiC;IAE1D,YACE,KAA+D,EAC/D,SAA4C,EAC5C,QAAyC,EACzC;QACA,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,IAAI,GAAG,EAAE,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,IAAI,GAAG,EAAE,CAAC;QACxC,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,IAAI,GAAG,EAAE,CAAC;QACtC,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;QAE/B,mCAAmC;QACnC,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAAA,CAC3B;IAED;;OAEG;IACK,kBAAkB,GAAS;QACjC,yDAAyD;QACzD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAe,CAAC;QACxC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YACrC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACnB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,KAAK,EAAE,CAAC;gBACV,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;oBAC9B,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACnB,CAAC;YACH,CAAC;QACH,CAAC;QAED,8DAA8D;QAC9D,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;YACxC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;QAED,+DAA+D;QAC/D,KAAK,MAAM,QAAQ,IAAI,QAAQ,EAAE,CAAC;YAChC,MAAM,WAAW,GAAQ,EAAE,CAAC;YAE5B,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;gBAC9B,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;oBACxB,yEAAyE;oBACzE,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,KAAU,EAAE,EAAE,CAAC;wBACpC,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,QAAe,EAAE,MAAa,CAAC,CAAC;wBACpE,IAAI,CAAC,SAAS,EAAE,CAAC;4BACf,MAAM,IAAI,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,oBAAoB,CAAC,CAAC;wBACpE,CAAC;wBACD,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;oBAAA,CACzB,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,kEAAkE;YAClE,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,WAAW,EAAE;gBACrC,GAAG,EAAE,CAAC,MAAW,EAAE,MAAuB,EAAE,EAAE,CAAC;oBAC7C,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;wBAC/B,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;oBACxB,CAAC;oBACD,gCAAgC;oBAChC,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;wBACrB,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;oBACxB,CAAC;oBACD,iDAAiD;oBACjD,OAAO,CAAC,KAAU,EAAE,EAAE,CAAC;wBACrB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,QAAe,EAAE,MAAa,CAAC,CAAC;wBACpE,IAAI,CAAC,SAAS,EAAE,CAAC;4BACf,MAAM,IAAI,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,oBAAoB,CAAC,CAAC;wBACpE,CAAC;wBACD,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;oBAAA,CACzB,CAAC;gBAAA,CACH;aACF,CAAC,CAAC;YAEH,6BAA6B;YAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAEvD,+DAA+D;YAC/D,MAAM,aAAa,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,KAAsC,CAAC;YAEhF,sFAAsF;YACtF,MAAM,YAAY,GAAQ,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE;gBACrD,EAAE,EAAE,OAAO;gBACX,WAAW,EAAE,CAAC,QAAsB,EAAE,EAAE,CAAC;oBACvC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC3C,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;oBACzD,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,gBAAgB,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;oBAChE,OAAO,uBAAuB,CAAQ,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;gBAAA,CAChF;gBACD,QAAQ,EAAE,CACR,EAA6B,EAC7B,SAAiE,EACjE,EAAE,CAAC;oBACH,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAe,EAAE,EAAS,EAAE,SAAgB,CAAC,CAAC;gBAAA,CACpE;aACF,CAAC,CAAC;YAEH,+DAA+D;YAC/D,wDAAwD;YACxD,MAAM,aAAa,GAAG,IAAI,KAAK,CAAC,YAAY,EAAE;gBAC5C,GAAG,EAAE,CAAC,MAAW,EAAE,IAAqB,EAAE,EAAE,CAAC;oBAC3C,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;wBAC7B,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;oBACtB,CAAC;oBACD,kEAAkE;oBAClE,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;wBACnB,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;oBACtB,CAAC;oBACD,+CAA+C;oBAC/C,IAAI,IAAI,IAAI,YAAY,EAAE,CAAC;wBACzB,OAAO,YAAY,CAAC,IAA0B,CAAC,CAAC;oBAClD,CAAC;oBACD,OAAO,SAAS,CAAC;gBAAA,CAClB;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QAClD,CAAC;IAAA,CACF;IAED,QAAQ,CACN,IAA+C,EAC/C,EAAyC,EACzC,SAAiE,EACrB;QAC5C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YAC/C,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC;QACD,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,MAAM,IAAI,EAAE,EAAE,CAAC;YAC3C,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC;QACf,CAAC;QACD,0CAA0C;QAC1C,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,IAAI,IAAI,SAAS,IAAI,MAAM,IAAI,SAAS,EAAE,CAAC;YAC9E,iCAAiC;YACjC,MAAM,WAAW,GAAG,SAA6C,CAAC;YAClE,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CACrD,EAAS,EACT,IAAW,EACX,WAAW,CAAC,IAAW,CACjB,CAAC;QACX,CAAC;QAED,kCAAkC;QAClC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAErC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QAChC,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,SAAgC,CAAC,CAAC;QAClD,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAE5B,sDAAsD;QACtD,OAAO,uBAAuB,CAC5B,QAAQ,EACR,IAAI,GAAG,EAAE,EACT,IAAI,CAAC,QAAQ,CACP,CAAC;IAAA,CACV;IAED,qBAAqB,CAInB,IAAoB,EACpB,EAAgB,EAChB,SAAkD,EAMhD;QACF,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,SAAS,CAAC,EAAS,CAAC,CAAC,QAAQ,CAC1D,EAAS,EACT,IAAW,EACX,SAAS,CAAC,IAAW,CACf,CAAC;IAAA,CACV;IAED,KAAK,CACH,IAAQ,EACR,EAAM,EACoF;QAC1F,kDAAkD;QAClD,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAW,EAAE,EAAS,CAAC,CAAC;QAC5D,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,eAAe,CAAC,IAAI,EAAE,EAAE,EAAE,2BAA2B,CAAC,CAAC;QACnE,CAAC;QAED,kEAAkE;QAClE,kFAAkF;QAClF,OAAO,IAAW,CAAC;IAAA,CACpB;IAED,YAAY,CACV,IAAoB,EACpB,EAAgB,EACiB;QACjC,oBAAoB;QACpB,MAAM,QAAQ,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,2BAA2B;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC/B,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBACrC,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QAED,qCAAqC;QACrC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAEpD,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACrD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACvC,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,2DAA2D;YAC3D,qCAAqC;YACrC,IACE,KAAK,YAAY,KAAK;gBACtB,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,YAAY,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,eAAe,CAAC,EACvF,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;IAAA,CACF;IAED,OAAO,CACL,KAAW,EACX,QAAmD,EAGnD;QACA,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,MAAM,IAAI,QAAQ,EAAE,CAAC;YACvD,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC3B,CAAC;QACD,OAAO;YACL,EAAE,EAAE,CAA8C,IAAkB,EAAM,EAAE,CAAC;gBAC3E,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,QAAe,EAAE,IAAW,CAAC,CAAC;gBAClE,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,MAAM,IAAI,eAAe,CAAC,QAAQ,EAAE,IAAI,EAAE,oBAAoB,CAAC,CAAC;gBAClE,CAAC;gBACD,OAAO,SAAS,CAAC,KAAK,CAAO,CAAC;YAAA,CAC/B;SACF,CAAC;IAAA,CACH;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,cAAc,GAGR;IACpB,OAAO,uBAAuB,EAA2D,CAAC;AAAA,CAC3F;AAED;;GAEG;AACH,SAAS,uBAAuB,CAC9B,KAA+D,EAC/D,SAA4C,EAC5C,QAAyC,EACO;IAChD,MAAM,YAAY,GAAG,IAAI,qBAAqB,CAAQ,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAElF,iEAAiE;IACjE,OAAO,IAAI,KAAK,CAAC,YAAY,EAAE;QAC7B,GAAG,CAAC,MAAW,EAAE,IAAqB,EAAO;YAC3C,mEAAmE;YACnE,IAAI,IAAI,IAAI,MAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC/C,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;YAED,oDAAoD;YACpD,MAAM,YAAY,GAAG,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACpD,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO,YAAY,CAAC;YACtB,CAAC;YAED,0DAA0D;YAC1D,0EAA0E;YAC1E,MAAM,OAAO,GAAG,IAAI,KAAK,CACvB,EAAE,EACF;gBACE,GAAG,EAAE,CAAC,CAAM,EAAE,MAAuB,EAAE,EAAE,CAAC;oBACxC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;wBAC/B,OAAO,SAAS,CAAC;oBACnB,CAAC;oBACD,OAAO,CAAC,KAAU,EAAE,EAAE,CAAC;wBACrB,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,IAAW,EAAE,MAAa,CAAC,CAAC;wBAClE,IAAI,CAAC,SAAS,EAAE,CAAC;4BACf,MAAM,IAAI,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,oBAAoB,CAAC,CAAC;wBAChE,CAAC;wBACD,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;oBAAA,CACzB,CAAC;gBAAA,CACH;aACF,CACF,CAAC;YAEF,4CAA4C;YAC5C,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAErD,+DAA+D;YAC/D,MAAM,aAAa,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,KAAsC,CAAC;YAEhF,wCAAwC;YACxC,MAAM,eAAe,GAAQ,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE;gBACxD,EAAE,EAAE,OAAO;gBACX,WAAW,EAAE,CAAC,QAAsB,EAAE,EAAE,CAAC;oBACvC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAmC,CAAC;oBAC/E,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;oBACrD,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,GAAG,gBAAgB,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;oBAC5D,OAAO,uBAAuB,CAAM,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;gBAAA,CAClF;gBACD,QAAQ,EAAE,CACR,EAA6B,EAC7B,SAAiE,EACjE,EAAE,CAAC;oBACH,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAW,EAAE,EAAS,EAAE,SAAgB,CAAC,CAAC;gBAAA,CAClE;aACF,CAAC,CAAC;YAEH,sDAAsD;YACtD,MAAM,aAAa,GAAG,IAAI,KAAK,CAAC,eAAe,EAAE;gBAC/C,GAAG,EAAE,CAAC,cAAmB,EAAE,QAAyB,EAAE,EAAE,CAAC;oBACvD,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;wBACjC,OAAO,cAAc,CAAC,QAAQ,CAAC,CAAC;oBAClC,CAAC;oBACD,kEAAkE;oBAClE,IAAI,QAAQ,IAAI,cAAc,EAAE,CAAC;wBAC/B,OAAO,cAAc,CAAC,QAAQ,CAAC,CAAC;oBAClC,CAAC;oBACD,+CAA+C;oBAC/C,IAAI,QAAQ,IAAI,YAAY,EAAE,CAAC;wBAC7B,OAAO,YAAY,CAAC,QAA8B,CAAC,CAAC;oBACtD,CAAC;oBACD,OAAO,SAAS,CAAC;gBAAA,CAClB;aACF,CAAC,CAAC;YAEH,OAAO,aAAa,CAAC;QAAA,CACtB;KACF,CAAmD,CAAC;AAAA,CACtD"}
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -2,34 +2,127 @@
|
|
|
2
2
|
* Core type branding utilities for unit and format safety
|
|
3
3
|
* @packageDocumentation
|
|
4
4
|
*/
|
|
5
|
-
import type { GetTagMetadata, Tagged } from 'type-fest';
|
|
5
|
+
import type { GetTagMetadata, Simplify, Tagged, UnwrapTagged } from 'type-fest';
|
|
6
|
+
/**
|
|
7
|
+
* Constraint type for any tagged unit value.
|
|
8
|
+
* `Tagged<unknown, K, V>` resolves to `Tag<K, V>` (since `unknown & X = X`),
|
|
9
|
+
* giving us the `Tag` constraint without importing the internal `Tag` type.
|
|
10
|
+
*/
|
|
11
|
+
type AnyTaggedUnit = Tagged<unknown, typeof UNITS, any>;
|
|
6
12
|
export declare const UNITS: unique symbol;
|
|
7
13
|
export declare const DEFINITION: unique symbol;
|
|
14
|
+
/**
|
|
15
|
+
* Resolve a schema/constructor/enum type to its runtime value type.
|
|
16
|
+
*
|
|
17
|
+
* - **Tuple schemas** → `InferFromTupleSchema` (`['number', 'string']` → `[number, string]`)
|
|
18
|
+
* - **Class constructors** → `InstanceType` (constructor → instance)
|
|
19
|
+
* - **Record schemas** → `InferFromRecordSchema` (`{ x: 'number' }` → `{ x: number }`)
|
|
20
|
+
* - **Enum objects** → `T[keyof T]` (enum value type)
|
|
21
|
+
* - **Primitives** → passed through unchanged
|
|
22
|
+
*/
|
|
23
|
+
export type ResolveValueType<T> = T extends readonly string[] ? InferFromTupleSchema<T> : T extends ClassType ? InstanceType<T> : T extends RecordSchema ? T[keyof T] extends keyof PrimitiveTypeMap | RecordSchema ? InferFromRecordSchema<T> : T[keyof T] : T extends EnumType ? T[keyof T] : T;
|
|
24
|
+
/**
|
|
25
|
+
* Resolve a branded unit type from a `TypedMetadata` object.
|
|
26
|
+
*
|
|
27
|
+
* For primitive metadata (where `type` is a name string like `'number'`),
|
|
28
|
+
* maps back through `PrimitiveTypeMap` to recover the base primitive.
|
|
29
|
+
* For non-primitive metadata (enum, class, record, tuple), resolves to
|
|
30
|
+
* the actual runtime value type via `ResolveValueType`.
|
|
31
|
+
*
|
|
32
|
+
* @template M - A `TypedMetadata` instance (e.g., `typeof CelsiusMetadata`)
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```typescript
|
|
36
|
+
* const CelsiusMeta = { name: 'Celsius', type: 'number' } as const;
|
|
37
|
+
* type Celsius = WithTypedUnits<typeof CelsiusMeta>;
|
|
38
|
+
* // Celsius = Tagged<number, UNITS, typeof CelsiusMeta>
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export type WithTypedUnits<M extends TypedMetadata<any>> = unknown extends M ? WithUnits<any, any> : M extends {
|
|
42
|
+
name: string;
|
|
43
|
+
type: infer TypeField;
|
|
44
|
+
} ? TypeField extends keyof PrimitiveTypeMap ? WithUnits<PrimitiveTypeMap[TypeField], M> : TypeField extends SupportedType ? WithUnits<ResolveValueType<TypeField>, M> : never : never;
|
|
8
45
|
/**
|
|
9
46
|
* Brand a value with a unit identifier for compile-time unit safety.
|
|
10
47
|
*
|
|
11
|
-
* @template T - Base type (e.g., number, bigint)
|
|
12
|
-
* @template
|
|
48
|
+
* @template T - Base type (e.g., number, bigint, record, tuple, class instance)
|
|
49
|
+
* @template M - Metadata type (must extend BaseMetadata with required name property)
|
|
13
50
|
*
|
|
14
51
|
* @example
|
|
15
52
|
* ```typescript
|
|
16
|
-
*
|
|
53
|
+
* const Celsius = { name: 'Celsius' as const, symbol: '°C' } satisfies BaseMetadata;
|
|
54
|
+
* type Celsius = WithUnits<number, typeof Celsius>;
|
|
17
55
|
* const temp: Celsius = 25 as Celsius;
|
|
18
56
|
* ```
|
|
19
57
|
*/
|
|
20
|
-
export type WithUnits<T
|
|
21
|
-
|
|
22
|
-
export type PrimitiveType = number;
|
|
58
|
+
export type WithUnits<T, M extends BaseMetadata = BaseMetadata> = Tagged<T, typeof UNITS, M>;
|
|
59
|
+
/** Primitive JavaScript types that can be used as unit base types. */
|
|
60
|
+
export type PrimitiveType = number | string | boolean | bigint;
|
|
61
|
+
/**
|
|
62
|
+
* A TypeScript enum object at runtime — an object whose values are all
|
|
63
|
+
* strings (string enum) or all numbers (numeric enum).
|
|
64
|
+
* Mixed enums (both string and number values) are rejected at validation.
|
|
65
|
+
*/
|
|
66
|
+
export type EnumType = Record<string, string | number>;
|
|
67
|
+
/**
|
|
68
|
+
* A class constructor (including abstract classes) that can serve as a
|
|
69
|
+
* unit's type identity. At runtime, the constructor itself is stored
|
|
70
|
+
* in the metadata `type` field.
|
|
71
|
+
*/
|
|
72
|
+
export type ClassType = abstract new (...args: any[]) => any;
|
|
73
|
+
/** A record schema value — either a primitive type name or a nested schema. */
|
|
74
|
+
export type RecordSchemaValue = string | RecordSchema;
|
|
75
|
+
/**
|
|
76
|
+
* A schema describing an object shape. Keys are property names;
|
|
77
|
+
* values are primitive type name strings (`'number'`, `'string'`, etc.)
|
|
78
|
+
* or nested `RecordSchema` objects.
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ```typescript
|
|
82
|
+
* const PointSchema = { x: 'number', y: 'number' } satisfies RecordSchema;
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
export type RecordSchema = {
|
|
86
|
+
[key: string]: RecordSchemaValue;
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* A schema describing a tuple as an array of primitive type name strings.
|
|
90
|
+
* Supports optional (`'number?'`) and rest (`'...number'`) modifiers.
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* ```typescript
|
|
94
|
+
* const RGBSchema = ['number', 'number', 'number'] as const satisfies TupleSchema;
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
export type TupleSchema = readonly string[];
|
|
98
|
+
/**
|
|
99
|
+
* Union of all types that can be used as a unit's base type.
|
|
100
|
+
* Includes primitives and non-primitive categories (enum, class, record, tuple).
|
|
101
|
+
*/
|
|
102
|
+
export type SupportedType = PrimitiveType | EnumType | ClassType | RecordSchema | TupleSchema;
|
|
23
103
|
export type PrimitiveTypeMap = {
|
|
24
104
|
string: string;
|
|
25
105
|
number: number;
|
|
26
106
|
boolean: boolean;
|
|
27
107
|
bigint: bigint;
|
|
28
108
|
};
|
|
29
|
-
export type
|
|
30
|
-
export type
|
|
31
|
-
export type
|
|
32
|
-
|
|
109
|
+
export type ToPrimitiveTypeName<T> = T extends PrimitiveTypeMap[infer U extends keyof PrimitiveTypeMap] ? U : never;
|
|
110
|
+
export type OptionalWithUnits<T, M extends BaseMetadata = BaseMetadata> = T | WithUnits<T, M>;
|
|
111
|
+
export type Unwrap<T> = T extends AnyTaggedUnit ? UnwrapTagged<T> : T;
|
|
112
|
+
/**
|
|
113
|
+
* Resolve the callable argument types from a branded unit type.
|
|
114
|
+
*
|
|
115
|
+
* Uses the metadata's `type` field (the original schema/constructor) to
|
|
116
|
+
* determine the kind, then produces the appropriate parameter tuple:
|
|
117
|
+
* - **Tuple schemas** → spread members: `['number', 'string']` → `[number, string]`
|
|
118
|
+
* - **Class constructors** → spread constructor params: `ConstructorParameters<C>`
|
|
119
|
+
* - **Record schemas** → single object arg: `[{ x: number; y: number }]`
|
|
120
|
+
* - **Enum objects** → single value arg: `[LogLevel.WARN]`
|
|
121
|
+
* - **Primitives** → single arg: `[number]`
|
|
122
|
+
*/
|
|
123
|
+
export type InferCallableArgs<From> = From extends AnyTaggedUnit ? GetTagMetadata<From, typeof UNITS> extends {
|
|
124
|
+
type: infer TypeField;
|
|
125
|
+
} ? TypeField extends readonly string[] ? InferFromTupleSchema<TypeField> : TypeField extends ClassType ? ConstructorParameters<TypeField> : TypeField extends RecordSchema ? TypeField[keyof TypeField] extends keyof PrimitiveTypeMap | RecordSchema ? [InferFromRecordSchema<TypeField>] : [TypeField[keyof TypeField]] : TypeField extends EnumType ? [TypeField[keyof TypeField]] : [Unwrap<From>] : [Unwrap<From>] : [Unwrap<From>];
|
|
33
126
|
export type Relax<T> = T | Unwrap<T>;
|
|
34
127
|
/**
|
|
35
128
|
* Brand a value with a format identifier for compile-time format safety.
|
|
@@ -44,14 +137,45 @@ export type Relax<T> = T | Unwrap<T>;
|
|
|
44
137
|
* ```
|
|
45
138
|
*/
|
|
46
139
|
export type WithFormat<T, F extends string> = Tagged<T, typeof UNITS, F>;
|
|
47
|
-
export type UnitsOf<T extends
|
|
48
|
-
export type
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
140
|
+
export type UnitsOf<T> = T extends AnyTaggedUnit ? GetTagMetadata<T, typeof UNITS> : never;
|
|
141
|
+
export type NameFor<T> = T extends AnyTaggedUnit ? GetTagMetadata<T, typeof UNITS> extends {
|
|
142
|
+
name: infer N extends string;
|
|
143
|
+
} ? N : string : string;
|
|
144
|
+
/** Alias for NameFor - returns the unit name type */
|
|
145
|
+
export type UnitsFor<T> = NameFor<T>;
|
|
146
|
+
/** Extract metadata from a WithUnits type */
|
|
147
|
+
export type MetadataOf<T> = T extends AnyTaggedUnit ? GetTagMetadata<T, typeof UNITS> extends infer M ? M : BaseMetadata : BaseMetadata;
|
|
148
|
+
/**
|
|
149
|
+
* Base metadata type that all unit metadata must extend.
|
|
150
|
+
* Requires a `name` property and allows arbitrary additional properties.
|
|
151
|
+
*
|
|
152
|
+
* @example
|
|
153
|
+
* ```typescript
|
|
154
|
+
* const Celsius = {
|
|
155
|
+
* name: 'Celsius' as const,
|
|
156
|
+
* symbol: '°C',
|
|
157
|
+
* description: 'Temperature in Celsius'
|
|
158
|
+
* } satisfies BaseMetadata;
|
|
159
|
+
* ```
|
|
160
|
+
*/
|
|
161
|
+
export type BaseMetadata = {
|
|
162
|
+
/** Unique identifier for the unit (replaces tag) */
|
|
163
|
+
name: string;
|
|
54
164
|
};
|
|
165
|
+
/**
|
|
166
|
+
* Metadata type for units with type information.
|
|
167
|
+
*
|
|
168
|
+
* For primitive types, `type` is the type name string (e.g., `'number'`).
|
|
169
|
+
* For non-primitive types, `type` IS the actual value:
|
|
170
|
+
* - Enum: the enum object itself
|
|
171
|
+
* - Class: the class constructor
|
|
172
|
+
* - Record: the schema object `{ x: 'number', y: 'string' }`
|
|
173
|
+
* - Tuple: the tuple schema array `['number', 'string']`
|
|
174
|
+
*/
|
|
175
|
+
export type TypedMetadata<T extends SupportedType> = Simplify<{
|
|
176
|
+
name: string;
|
|
177
|
+
type: T extends PrimitiveType ? ToPrimitiveTypeName<T> : T;
|
|
178
|
+
}>;
|
|
55
179
|
/**
|
|
56
180
|
* Metadata that can be attached to units in the registry
|
|
57
181
|
* Supports common properties like abbreviation, format, description,
|
|
@@ -69,4 +193,21 @@ export interface UnitMetadata {
|
|
|
69
193
|
/** Allow arbitrary custom metadata properties */
|
|
70
194
|
[key: string]: unknown;
|
|
71
195
|
}
|
|
196
|
+
/**
|
|
197
|
+
* Map type name strings to TypeScript primitive types.
|
|
198
|
+
*/
|
|
199
|
+
export type PrimitiveTypeFromName<T extends string> = T extends 'number' ? number : T extends 'string' ? string : T extends 'boolean' ? boolean : T extends 'bigint' ? bigint : never;
|
|
200
|
+
/**
|
|
201
|
+
* Infer TypeScript type from a `RecordSchema`.
|
|
202
|
+
* Recursively processes nested schemas.
|
|
203
|
+
*/
|
|
204
|
+
export type InferFromRecordSchema<S extends RecordSchema> = Simplify<{
|
|
205
|
+
[K in keyof S]: S[K] extends string ? PrimitiveTypeFromName<S[K]> : S[K] extends RecordSchema ? InferFromRecordSchema<S[K]> : never;
|
|
206
|
+
}>;
|
|
207
|
+
/**
|
|
208
|
+
* Infer TypeScript type from a `TupleSchema`.
|
|
209
|
+
* Handles optional (`?`) and rest (`...`) elements.
|
|
210
|
+
*/
|
|
211
|
+
export type InferFromTupleSchema<T extends readonly string[]> = T extends readonly [] ? [] : T extends readonly [infer Head extends string, ...infer Rest extends readonly string[]] ? Head extends `...${infer Base}` ? Rest extends readonly [] ? [...Array<PrimitiveTypeFromName<Base>>] : never : Head extends `${infer Base}?` ? [PrimitiveTypeFromName<Base>?, ...InferFromTupleSchema<Rest>] : [PrimitiveTypeFromName<Head>, ...InferFromTupleSchema<Rest>] : never;
|
|
212
|
+
export {};
|
|
72
213
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAExD,eAAO,MAAM,KAAK,EAAE,OAAO,MAAwB,CAAC;AAEpD,eAAO,MAAM,UAAU,EAAE,OAAO,MAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,MAAM,CAAC,MAAM,KAAK,GAAkB,MAAM,CAAC,OAAO,CAAC,CAAC;AAEpD,MAAM,CAAC,MAAM,UAAU,GAAkB,MAAM,CAAC,YAAY,CAAC,CAAC"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import type { Parser } from '../formatters.js';
|
|
6
6
|
import type { WithFormat } from '../types.js';
|
|
7
|
+
import type { EnumType, ClassType, RecordSchema, TupleSchema, TypedMetadata } from '../types.js';
|
|
7
8
|
/**
|
|
8
9
|
* Create a parser with Zod schema validation.
|
|
9
10
|
*
|
|
@@ -22,4 +23,109 @@ import type { WithFormat } from '../types.js';
|
|
|
22
23
|
* ```
|
|
23
24
|
*/
|
|
24
25
|
export declare function createParserWithSchema<F extends string, T>(schema: any, format: F): Parser<WithFormat<T, F>>;
|
|
26
|
+
/**
|
|
27
|
+
* Validate that a runtime value is a valid TypeScript enum object.
|
|
28
|
+
*
|
|
29
|
+
* Accepts numeric enums (with reverse-mapped keys filtered out) and
|
|
30
|
+
* string enums. Rejects empty objects and mixed enums whose forward
|
|
31
|
+
* entries contain both string and number values.
|
|
32
|
+
*
|
|
33
|
+
* @param value - The value to validate
|
|
34
|
+
* @returns `true` if `value` is a valid `EnumType`
|
|
35
|
+
* @throws {Error} If the enum contains both numeric and string members
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```typescript
|
|
39
|
+
* enum LogLevel { DEBUG = 0, INFO = 1 }
|
|
40
|
+
* validateEnum(LogLevel); // true
|
|
41
|
+
* validateEnum({}); // false
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export declare function validateEnum(value: unknown): value is EnumType;
|
|
45
|
+
/**
|
|
46
|
+
* Validate that a runtime value is a valid class constructor.
|
|
47
|
+
*
|
|
48
|
+
* Checks that the value is a function with a `prototype` property.
|
|
49
|
+
* Arrow functions and bound functions without prototypes are rejected.
|
|
50
|
+
*
|
|
51
|
+
* @param value - The value to validate
|
|
52
|
+
* @returns `true` if `value` is a valid `ClassType` constructor
|
|
53
|
+
*/
|
|
54
|
+
export declare function validateClass(value: unknown): value is ClassType;
|
|
55
|
+
/**
|
|
56
|
+
* Validate that a runtime value is a valid record schema.
|
|
57
|
+
*
|
|
58
|
+
* A valid record schema is a plain object whose leaf values are primitive
|
|
59
|
+
* type name strings (`'number'`, `'string'`, `'boolean'`, `'bigint'`) or
|
|
60
|
+
* nested record schema objects. Empty objects are accepted.
|
|
61
|
+
*
|
|
62
|
+
* @param value - The value to validate
|
|
63
|
+
* @param visited - Internal set for circular reference detection
|
|
64
|
+
* @returns `true` if `value` is a valid `RecordSchema`
|
|
65
|
+
* @throws {Error} If circular references or invalid type names are found
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```typescript
|
|
69
|
+
* validateRecordSchema({ x: 'number', y: 'number' }); // true
|
|
70
|
+
* validateRecordSchema({ pos: { x: 'number' } }); // true (nested)
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
export declare function validateRecordSchema(value: unknown, visited?: Set<unknown>): value is RecordSchema;
|
|
74
|
+
/**
|
|
75
|
+
* Validate that a runtime value is a valid tuple schema.
|
|
76
|
+
*
|
|
77
|
+
* A valid tuple schema is an array of primitive type name strings,
|
|
78
|
+
* optionally annotated with `?` (optional) or `...` (rest) modifiers.
|
|
79
|
+
* Empty arrays are accepted.
|
|
80
|
+
*
|
|
81
|
+
* @param value - The value to validate
|
|
82
|
+
* @returns `true` if `value` is a valid `TupleSchema`
|
|
83
|
+
* @throws {Error} If elements are not strings or contain invalid type names
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* ```typescript
|
|
87
|
+
* validateTupleSchema(['number', 'number', 'number']); // true
|
|
88
|
+
* validateTupleSchema(['string', 'number?']); // true (optional)
|
|
89
|
+
* validateTupleSchema(['number', '...string']); // true (rest)
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
export declare function validateTupleSchema(value: unknown): value is TupleSchema;
|
|
93
|
+
/**
|
|
94
|
+
* Type guard: returns `true` when `meta.type` is an enum object.
|
|
95
|
+
*
|
|
96
|
+
* Distinguishes enums from record schemas by first checking whether the
|
|
97
|
+
* value passes `validateRecordSchema`; if it does, the metadata is
|
|
98
|
+
* classified as a record, not an enum.
|
|
99
|
+
*
|
|
100
|
+
* @param meta - Metadata object to inspect
|
|
101
|
+
*/
|
|
102
|
+
export declare function isEnumMetadata(meta: unknown): meta is TypedMetadata<EnumType>;
|
|
103
|
+
/**
|
|
104
|
+
* Type guard: returns `true` when `meta.type` is a class constructor.
|
|
105
|
+
*
|
|
106
|
+
* @param meta - Metadata object to inspect
|
|
107
|
+
*/
|
|
108
|
+
export declare function isClassMetadata(meta: unknown): meta is TypedMetadata<ClassType>;
|
|
109
|
+
/**
|
|
110
|
+
* Type guard: returns `true` when `meta.type` is a record schema object.
|
|
111
|
+
*
|
|
112
|
+
* @param meta - Metadata object to inspect
|
|
113
|
+
*/
|
|
114
|
+
export declare function isRecordMetadata(meta: unknown): meta is TypedMetadata<RecordSchema>;
|
|
115
|
+
/**
|
|
116
|
+
* Type guard: returns `true` when `meta.type` is a tuple schema array.
|
|
117
|
+
*
|
|
118
|
+
* @param meta - Metadata object to inspect
|
|
119
|
+
*/
|
|
120
|
+
export declare function isTupleMetadata(meta: unknown): meta is TypedMetadata<TupleSchema>;
|
|
121
|
+
/**
|
|
122
|
+
* Detect the kind of a metadata object by inspecting its `type` field.
|
|
123
|
+
*
|
|
124
|
+
* Resolution priority: `primitive` → `class` → `tuple` → `record` → `enum`.
|
|
125
|
+
* Returns `'unknown'` when the value is not a recognised metadata shape.
|
|
126
|
+
*
|
|
127
|
+
* @param meta - Metadata object to categorise
|
|
128
|
+
* @returns The detected kind string
|
|
129
|
+
*/
|
|
130
|
+
export declare function detectMetadataKind(meta: unknown): 'primitive' | 'enum' | 'class' | 'tuple' | 'record' | 'unknown';
|
|
25
131
|
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjG;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EACxD,MAAM,EAAE,GAAG,EACX,MAAM,EAAE,CAAC,GACR,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAU1B;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ,CA0C9D;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAWhE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,GAAG,CAAC,OAAO,CAAa,GAChC,KAAK,IAAI,YAAY,CA8CvB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAoCxE;AAMD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,aAAa,CAAC,QAAQ,CAAC,CA6B7E;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,aAAa,CAAC,SAAS,CAAC,CAO/E;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,aAAa,CAAC,YAAY,CAAC,CAkBnF;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,aAAa,CAAC,WAAW,CAAC,CAajF;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,OAAO,GACZ,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CA4CjE"}
|