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.
Files changed (40) hide show
  1. package/README.md +193 -47
  2. package/dist/converters.d.ts +28 -4
  3. package/dist/converters.d.ts.map +1 -1
  4. package/dist/errors.js.map +1 -1
  5. package/dist/index.d.ts +5 -4
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +1 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/registry.d.ts +39 -41
  10. package/dist/registry.d.ts.map +1 -1
  11. package/dist/registry.js +58 -14
  12. package/dist/registry.js.map +1 -1
  13. package/dist/types.d.ts +159 -18
  14. package/dist/types.d.ts.map +1 -1
  15. package/dist/types.js.map +1 -1
  16. package/dist/utils/validation.d.ts +106 -0
  17. package/dist/utils/validation.d.ts.map +1 -1
  18. package/dist/utils/validation.js +317 -0
  19. package/dist/utils/validation.js.map +1 -1
  20. package/package.json +16 -8
  21. package/dist/__tests__/converters.test.d.ts +0 -2
  22. package/dist/__tests__/converters.test.d.ts.map +0 -1
  23. package/dist/__tests__/converters.test.js +0 -128
  24. package/dist/__tests__/converters.test.js.map +0 -1
  25. package/dist/__tests__/errors.test.d.ts +0 -2
  26. package/dist/__tests__/errors.test.d.ts.map +0 -1
  27. package/dist/__tests__/errors.test.js +0 -93
  28. package/dist/__tests__/errors.test.js.map +0 -1
  29. package/dist/__tests__/formatters.test.d.ts +0 -2
  30. package/dist/__tests__/formatters.test.d.ts.map +0 -1
  31. package/dist/__tests__/formatters.test.js +0 -244
  32. package/dist/__tests__/formatters.test.js.map +0 -1
  33. package/dist/__tests__/registry.test.d.ts +0 -2
  34. package/dist/__tests__/registry.test.d.ts.map +0 -1
  35. package/dist/__tests__/registry.test.js +0 -403
  36. package/dist/__tests__/registry.test.js.map +0 -1
  37. package/dist/__tests__/types.test.d.ts +0 -2
  38. package/dist/__tests__/types.test.d.ts.map +0 -1
  39. package/dist/__tests__/types.test.js +0 -115
  40. package/dist/__tests__/types.test.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
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
- const brandFunction = (value) => value;
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
- from = from.name;
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
- to = to.name;
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(from)) {
131
- newGraph.set(from, new Map());
164
+ if (!newGraph.has(fromName)) {
165
+ newGraph.set(fromName, new Map());
132
166
  }
133
- const fromMap = new Map(newGraph.get(from));
134
- fromMap.set(to, converter);
135
- newGraph.set(from, fromMap);
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(), this.metadata);
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(from, to);
181
+ const converter = this.getConverter(fromName, toName);
145
182
  if (!converter) {
146
- throw new ConversionError(from, to, 'No conversion path exists');
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
- const brandFunction = (value) => value;
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,
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
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 U - Unit identifier (e.g., 'Celsius', 'meters')
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
- * type Celsius = WithUnits<number, 'Celsius'>;
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 extends PrimitiveType = number, U extends string = string, M extends Record<string, unknown> = UnitMetadata> = Tagged<T, typeof UNITS, U>;
21
- export type WithDefinition<T extends PrimitiveType, U extends string, D extends UnitDefinition<T, U, unknown, any>> = Tagged<WithUnits<T, U>, typeof DEFINITION, D>;
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 ToPrimitiveType<T extends keyof PrimitiveTypeMap> = PrimitiveTypeMap[T];
30
- export type ToPrimitiveTypeName<T extends PrimitiveType> = T extends ToPrimitiveType<infer U> ? U : never;
31
- export type OptionalWithUnits<T extends PrimitiveType, U extends string> = T | WithUnits<T, U>;
32
- export type Unwrap<T> = T extends WithUnits<infer U, string> ? U : T;
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 WithUnits<PrimitiveType, string>> = GetTagMetadata<T, typeof UNITS>;
48
- export type UnitsFor<T extends WithUnits<PrimitiveType, string>> = T extends WithUnits<infer A, infer N extends string> ? N : UnitsOf<T>;
49
- export type UnitDefinition<T extends PrimitiveType, U, A, F extends string = never> = {
50
- type: ToPrimitiveTypeName<T>;
51
- name: U;
52
- abbreviation?: A;
53
- format?: F;
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
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
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;AAIH,MAAM,CAAC,MAAM,KAAK,GAAkB,MAAM,CAAC,OAAO,CAAC,CAAC;AAEpD,MAAM,CAAC,MAAM,UAAU,GAAkB,MAAM,CAAC,YAAY,CAAC,CAAC"}
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;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9C;;;;;;;;;;;;;;;;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"}
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"}