unacy 0.8.0 → 0.8.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/utils/graph.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/utils/graph.ts"],"names":[],"mappings":"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"}
@@ -6,21 +6,48 @@ import type { Parser } from '../formatters.js';
6
6
  import type { WithFormat } from '../types.js';
7
7
  import type { EnumType, ClassType, RecordSchema, TupleSchema, TypedMetadata } from '../types.js';
8
8
  /**
9
- * Create a parser with Zod schema validation.
9
+ * Create a `Parser<WithFormat<T, F>>` backed by a Zod-compatible schema.
10
10
  *
11
- * @template F - Format identifier
12
- * @template T - Base type
13
- * @param schema - Zod schema for validation
14
- * @param format - Format identifier string
15
- * @returns Parser function that validates and tags values
11
+ * Wraps a Zod (or Zod-compatible) schema's `.parse()` method to produce a
12
+ * typed `Parser`. On schema rejection, the Zod error message is re-thrown
13
+ * as a `ParseError` so callers always receive a consistent error type.
14
+ *
15
+ * @template F - Format identifier string literal (e.g., `'HexColor'`)
16
+ * @template T - Base runtime type that the schema validates into
17
+ * @param schema - Any object with a `.parse(input: string)` method (Zod schema)
18
+ * @param format - Format identifier used in thrown `ParseError` instances
19
+ * @returns Parser function that validates and tags values as `WithFormat<T, F>`
20
+ *
21
+ * @throws {ParseError} When `schema.parse` rejects the input
16
22
  *
17
23
  * @example
18
24
  * ```typescript
19
- * const parseHex = createParserWithSchema(
25
+ * import { z } from 'zod';
26
+ * import { createParserWithSchema } from 'unacy';
27
+ *
28
+ * type HexColor = WithFormat<string, 'HexColor'>;
29
+ * const parseHex = createParserWithSchema<'HexColor', string>(
20
30
  * z.string().regex(/^#[0-9A-Fa-f]{6}$/),
21
31
  * 'HexColor'
22
32
  * );
33
+ *
34
+ * parseHex('#ff0000'); // OK → tagged as HexColor
35
+ * parseHex('red'); // throws ParseError
23
36
  * ```
37
+ *
38
+ * @useWhen You already have a Zod schema for a format and want to produce a
39
+ * typed `Parser` with minimal boilerplate.
40
+ *
41
+ * @avoidWhen Your validation logic cannot be expressed as a Zod schema — write
42
+ * a custom `Parser<T>` instead, throwing `ParseError` on failure.
43
+ *
44
+ * @pitfalls
45
+ * NEVER pass a schema whose `.parse()` does not throw on invalid input — the
46
+ * returned parser relies on schema rejection to trigger `ParseError`.
47
+ *
48
+ * @category Validation
49
+ * @see Parser
50
+ * @see ParseError
24
51
  */
25
52
  export declare function createParserWithSchema<F extends string, T>(schema: any, format: F): Parser<WithFormat<T, F>>;
26
53
  /**
@@ -40,6 +67,16 @@ export declare function createParserWithSchema<F extends string, T>(schema: any,
40
67
  * validateEnum(LogLevel); // true
41
68
  * validateEnum({}); // false
42
69
  * ```
70
+ *
71
+ * @useWhen You are receiving a runtime value and need to confirm it is a valid
72
+ * TypeScript enum before using it as a `TypedMetadata<EnumType>.type` field.
73
+ *
74
+ * @pitfalls
75
+ * NEVER use `validateEnum` to check plain objects that happen to have string
76
+ * values — they may look like string enums but carry no semantic meaning.
77
+ * Use `validateRecordSchema` for plain data objects.
78
+ *
79
+ * @category Validation
43
80
  */
44
81
  export declare function validateEnum(value: unknown): value is EnumType;
45
82
  /**
@@ -50,6 +87,8 @@ export declare function validateEnum(value: unknown): value is EnumType;
50
87
  *
51
88
  * @param value - The value to validate
52
89
  * @returns `true` if `value` is a valid `ClassType` constructor
90
+ *
91
+ * @category Validation
53
92
  */
54
93
  export declare function validateClass(value: unknown): value is ClassType;
55
94
  /**
@@ -69,6 +108,8 @@ export declare function validateClass(value: unknown): value is ClassType;
69
108
  * validateRecordSchema({ x: 'number', y: 'number' }); // true
70
109
  * validateRecordSchema({ pos: { x: 'number' } }); // true (nested)
71
110
  * ```
111
+ *
112
+ * @category Validation
72
113
  */
73
114
  export declare function validateRecordSchema(value: unknown, visited?: Set<unknown>): value is RecordSchema;
74
115
  /**
@@ -88,6 +129,8 @@ export declare function validateRecordSchema(value: unknown, visited?: Set<unkno
88
129
  * validateTupleSchema(['string', 'number?']); // true (optional)
89
130
  * validateTupleSchema(['number', '...string']); // true (rest)
90
131
  * ```
132
+ *
133
+ * @category Validation
91
134
  */
92
135
  export declare function validateTupleSchema(value: unknown): value is TupleSchema;
93
136
  /**
@@ -98,24 +141,28 @@ export declare function validateTupleSchema(value: unknown): value is TupleSchem
98
141
  * classified as a record, not an enum.
99
142
  *
100
143
  * @param meta - Metadata object to inspect
144
+ * @category Validation
101
145
  */
102
146
  export declare function isEnumMetadata(meta: unknown): meta is TypedMetadata<EnumType>;
103
147
  /**
104
148
  * Type guard: returns `true` when `meta.type` is a class constructor.
105
149
  *
106
150
  * @param meta - Metadata object to inspect
151
+ * @category Validation
107
152
  */
108
153
  export declare function isClassMetadata(meta: unknown): meta is TypedMetadata<ClassType>;
109
154
  /**
110
155
  * Type guard: returns `true` when `meta.type` is a record schema object.
111
156
  *
112
157
  * @param meta - Metadata object to inspect
158
+ * @category Validation
113
159
  */
114
160
  export declare function isRecordMetadata(meta: unknown): meta is TypedMetadata<RecordSchema>;
115
161
  /**
116
162
  * Type guard: returns `true` when `meta.type` is a tuple schema array.
117
163
  *
118
164
  * @param meta - Metadata object to inspect
165
+ * @category Validation
119
166
  */
120
167
  export declare function isTupleMetadata(meta: unknown): meta is TypedMetadata<TupleSchema>;
121
168
  /**
@@ -126,6 +173,25 @@ export declare function isTupleMetadata(meta: unknown): meta is TypedMetadata<Tu
126
173
  *
127
174
  * @param meta - Metadata object to categorise
128
175
  * @returns The detected kind string
176
+ *
177
+ * @remarks
178
+ * Resolution priority order: `primitive` → `class` → `tuple` → `record` → `enum` → `unknown`.
179
+ * This ordering is important: a class constructor would otherwise match the object check,
180
+ * and a tuple schema (array) would match the record check, so the dispatcher checks
181
+ * the more specific types first.
182
+ *
183
+ * @example
184
+ * ```typescript
185
+ * detectMetadataKind({ name: 'Celsius', type: 'number' }); // 'primitive'
186
+ * detectMetadataKind({ name: 'Point', type: { x: 'number', y: 'number' } }); // 'record'
187
+ * detectMetadataKind({ name: 'RGB', type: ['number', 'number', 'number'] }); // 'tuple'
188
+ * detectMetadataKind({ name: 'Direction', type: Direction }); // 'enum' (if Direction is an enum)
189
+ * ```
190
+ *
191
+ * @useWhen You need to dynamically dispatch on the kind of a metadata object
192
+ * at runtime (e.g., in serialisers or schema generators built on top of unacy).
193
+ *
194
+ * @category Validation
129
195
  */
130
196
  export declare function detectMetadataKind(meta: unknown): 'primitive' | 'enum' | 'class' | 'tuple' | 'record' | 'unknown';
131
197
  //# sourceMappingURL=validation.d.ts.map
@@ -1 +1 @@
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"}
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;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;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ,CA0C9D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAWhE;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,GAAG,CAAC,OAAO,CAAa,GAChC,KAAK,IAAI,YAAY,CA8CvB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAoCxE;AAMD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,aAAa,CAAC,QAAQ,CAAC,CA6B7E;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,aAAa,CAAC,SAAS,CAAC,CAO/E;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,aAAa,CAAC,YAAY,CAAC,CAkBnF;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,aAAa,CAAC,WAAW,CAAC,CAajF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,OAAO,GACZ,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CA4CjE"}
@@ -4,21 +4,48 @@
4
4
  */
5
5
  import { ParseError } from '../errors.js';
6
6
  /**
7
- * Create a parser with Zod schema validation.
7
+ * Create a `Parser<WithFormat<T, F>>` backed by a Zod-compatible schema.
8
8
  *
9
- * @template F - Format identifier
10
- * @template T - Base type
11
- * @param schema - Zod schema for validation
12
- * @param format - Format identifier string
13
- * @returns Parser function that validates and tags values
9
+ * Wraps a Zod (or Zod-compatible) schema's `.parse()` method to produce a
10
+ * typed `Parser`. On schema rejection, the Zod error message is re-thrown
11
+ * as a `ParseError` so callers always receive a consistent error type.
12
+ *
13
+ * @template F - Format identifier string literal (e.g., `'HexColor'`)
14
+ * @template T - Base runtime type that the schema validates into
15
+ * @param schema - Any object with a `.parse(input: string)` method (Zod schema)
16
+ * @param format - Format identifier used in thrown `ParseError` instances
17
+ * @returns Parser function that validates and tags values as `WithFormat<T, F>`
18
+ *
19
+ * @throws {ParseError} When `schema.parse` rejects the input
14
20
  *
15
21
  * @example
16
22
  * ```typescript
17
- * const parseHex = createParserWithSchema(
23
+ * import { z } from 'zod';
24
+ * import { createParserWithSchema } from 'unacy';
25
+ *
26
+ * type HexColor = WithFormat<string, 'HexColor'>;
27
+ * const parseHex = createParserWithSchema<'HexColor', string>(
18
28
  * z.string().regex(/^#[0-9A-Fa-f]{6}$/),
19
29
  * 'HexColor'
20
30
  * );
31
+ *
32
+ * parseHex('#ff0000'); // OK → tagged as HexColor
33
+ * parseHex('red'); // throws ParseError
21
34
  * ```
35
+ *
36
+ * @useWhen You already have a Zod schema for a format and want to produce a
37
+ * typed `Parser` with minimal boilerplate.
38
+ *
39
+ * @avoidWhen Your validation logic cannot be expressed as a Zod schema — write
40
+ * a custom `Parser<T>` instead, throwing `ParseError` on failure.
41
+ *
42
+ * @pitfalls
43
+ * NEVER pass a schema whose `.parse()` does not throw on invalid input — the
44
+ * returned parser relies on schema rejection to trigger `ParseError`.
45
+ *
46
+ * @category Validation
47
+ * @see Parser
48
+ * @see ParseError
22
49
  */
23
50
  export function createParserWithSchema(schema, format) {
24
51
  return (input) => {
@@ -52,6 +79,16 @@ export function createParserWithSchema(schema, format) {
52
79
  * validateEnum(LogLevel); // true
53
80
  * validateEnum({}); // false
54
81
  * ```
82
+ *
83
+ * @useWhen You are receiving a runtime value and need to confirm it is a valid
84
+ * TypeScript enum before using it as a `TypedMetadata<EnumType>.type` field.
85
+ *
86
+ * @pitfalls
87
+ * NEVER use `validateEnum` to check plain objects that happen to have string
88
+ * values — they may look like string enums but carry no semantic meaning.
89
+ * Use `validateRecordSchema` for plain data objects.
90
+ *
91
+ * @category Validation
55
92
  */
56
93
  export function validateEnum(value) {
57
94
  if (typeof value !== 'object' || value === null) {
@@ -94,6 +131,8 @@ export function validateEnum(value) {
94
131
  *
95
132
  * @param value - The value to validate
96
133
  * @returns `true` if `value` is a valid `ClassType` constructor
134
+ *
135
+ * @category Validation
97
136
  */
98
137
  export function validateClass(value) {
99
138
  if (typeof value !== 'function') {
@@ -122,6 +161,8 @@ export function validateClass(value) {
122
161
  * validateRecordSchema({ x: 'number', y: 'number' }); // true
123
162
  * validateRecordSchema({ pos: { x: 'number' } }); // true (nested)
124
163
  * ```
164
+ *
165
+ * @category Validation
125
166
  */
126
167
  export function validateRecordSchema(value, visited = new Set()) {
127
168
  if (typeof value !== 'object' || value === null || Array.isArray(value)) {
@@ -177,6 +218,8 @@ export function validateRecordSchema(value, visited = new Set()) {
177
218
  * validateTupleSchema(['string', 'number?']); // true (optional)
178
219
  * validateTupleSchema(['number', '...string']); // true (rest)
179
220
  * ```
221
+ *
222
+ * @category Validation
180
223
  */
181
224
  export function validateTupleSchema(value) {
182
225
  if (!Array.isArray(value)) {
@@ -219,6 +262,7 @@ export function validateTupleSchema(value) {
219
262
  * classified as a record, not an enum.
220
263
  *
221
264
  * @param meta - Metadata object to inspect
265
+ * @category Validation
222
266
  */
223
267
  export function isEnumMetadata(meta) {
224
268
  if (typeof meta !== 'object' || meta === null || !('type' in meta)) {
@@ -252,6 +296,7 @@ export function isEnumMetadata(meta) {
252
296
  * Type guard: returns `true` when `meta.type` is a class constructor.
253
297
  *
254
298
  * @param meta - Metadata object to inspect
299
+ * @category Validation
255
300
  */
256
301
  export function isClassMetadata(meta) {
257
302
  if (typeof meta !== 'object' || meta === null || !('type' in meta)) {
@@ -264,6 +309,7 @@ export function isClassMetadata(meta) {
264
309
  * Type guard: returns `true` when `meta.type` is a record schema object.
265
310
  *
266
311
  * @param meta - Metadata object to inspect
312
+ * @category Validation
267
313
  */
268
314
  export function isRecordMetadata(meta) {
269
315
  if (typeof meta !== 'object' || meta === null || !('type' in meta)) {
@@ -286,6 +332,7 @@ export function isRecordMetadata(meta) {
286
332
  * Type guard: returns `true` when `meta.type` is a tuple schema array.
287
333
  *
288
334
  * @param meta - Metadata object to inspect
335
+ * @category Validation
289
336
  */
290
337
  export function isTupleMetadata(meta) {
291
338
  if (typeof meta !== 'object' || meta === null || !('type' in meta)) {
@@ -308,6 +355,25 @@ export function isTupleMetadata(meta) {
308
355
  *
309
356
  * @param meta - Metadata object to categorise
310
357
  * @returns The detected kind string
358
+ *
359
+ * @remarks
360
+ * Resolution priority order: `primitive` → `class` → `tuple` → `record` → `enum` → `unknown`.
361
+ * This ordering is important: a class constructor would otherwise match the object check,
362
+ * and a tuple schema (array) would match the record check, so the dispatcher checks
363
+ * the more specific types first.
364
+ *
365
+ * @example
366
+ * ```typescript
367
+ * detectMetadataKind({ name: 'Celsius', type: 'number' }); // 'primitive'
368
+ * detectMetadataKind({ name: 'Point', type: { x: 'number', y: 'number' } }); // 'record'
369
+ * detectMetadataKind({ name: 'RGB', type: ['number', 'number', 'number'] }); // 'tuple'
370
+ * detectMetadataKind({ name: 'Direction', type: Direction }); // 'enum' (if Direction is an enum)
371
+ * ```
372
+ *
373
+ * @useWhen You need to dynamically dispatch on the kind of a metadata object
374
+ * at runtime (e.g., in serialisers or schema generators built on top of unacy).
375
+ *
376
+ * @category Validation
311
377
  */
312
378
  export function detectMetadataKind(meta) {
313
379
  if (typeof meta !== 'object' || meta === null || !('type' in meta)) {
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "unacy",
3
- "version": "0.8.0",
3
+ "version": "0.8.2",
4
4
  "description": "Type-safe unit and format conversion library",
5
5
  "type": "module",
6
6
  "private": false,
7
- "author": "Pradeep Mouli",
7
+ "author": "Pradeep Mouli <pmouli@mac.com> (https://github.com/pradeepmouli)",
8
8
  "license": "MIT",
9
9
  "repository": {
10
10
  "type": "git",
@@ -28,18 +28,18 @@
28
28
  "README.md"
29
29
  ],
30
30
  "dependencies": {
31
- "type-fest": "^5.4.4"
31
+ "type-fest": "^5.7.0"
32
32
  },
33
33
  "devDependencies": {
34
- "@types/node": "^25.3.1",
35
- "@typescript/native-preview": "7.0.0-dev.20260225.1",
36
- "vitest": "^4.0.18"
34
+ "@types/node": "^25.9.1",
35
+ "@typescript/native-preview": "beta",
36
+ "vitest": "^4.1.8"
37
37
  },
38
38
  "engines": {
39
39
  "node": ">=20.0.0"
40
40
  },
41
41
  "optionalDependencies": {
42
- "zod": "^4.3.6"
42
+ "zod": "^4.4.3"
43
43
  },
44
44
  "scripts": {
45
45
  "build": "tsgo -p tsconfig.json",