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.
@@ -6,74 +6,138 @@ import type { WithFormat } from './types.js';
6
6
  /**
7
7
  * Formatter converts a format-tagged value to a string representation.
8
8
  *
9
- * @template TInput - Format-tagged type to format
9
+ * @template TInput - Format-tagged type to format (must extend `WithFormat<T, F>`)
10
10
  *
11
- * @param input - Value tagged with format
12
- * @returns Plain string representation
11
+ * @param input - Value tagged with the format brand
12
+ * @returns Plain string representation (format brand is stripped in the output)
13
13
  *
14
14
  * @remarks
15
- * - Output string must be parseable by corresponding `Parser`
16
- * - Should produce human-readable or machine-parseable output
17
- * - Format tag is lost in the output
15
+ * - Output string should be parseable by the corresponding `Parser<TInput>` to
16
+ * ensure round-trip integrity
17
+ * - The format brand carried by `TInput` is lost in the string output; callers
18
+ * must re-parse to recover a branded value
18
19
  *
19
20
  * @example
20
21
  * ```typescript
21
- * const formatISO: Formatter<ISO8601> = (date) => date.toISOString();
22
+ * type ISO8601Date = WithFormat<Date, 'ISO8601'>;
23
+ * const formatISO: Formatter<ISO8601Date> = (date) => date.toISOString();
22
24
  * ```
25
+ *
26
+ * @useWhen You need a typed function that can only receive format-validated
27
+ * values (via `WithFormat<T, F>`) before serialising them.
28
+ *
29
+ * @avoidWhen The value needs no format brand — accept a plain `T` and format
30
+ * without the tag overhead.
31
+ *
32
+ * @pitfalls
33
+ * NEVER call a `Formatter` on a plain (untagged) value without first wrapping
34
+ * it in the appropriate `WithFormat<T, F>` brand via a `Parser` — the brand
35
+ * exists to guarantee the value has been validated before formatting.
36
+ *
37
+ * NEVER assume formatter output is stable across timezone environments —
38
+ * `Date.toISOString()` uses UTC but other formatters may be locale-sensitive.
39
+ *
40
+ * @category Formatters
41
+ * @see Parser
42
+ * @see FormatterParser
23
43
  */
24
44
  export type Formatter<TInput extends WithFormat<unknown, string>> = (input: TInput) => string;
25
45
  /**
26
- * Parser converts a string into a format-tagged value with validation.
46
+ * Parser converts a plain string into a format-tagged value with validation.
27
47
  *
28
- * @template TOutput - Format-tagged type to produce
48
+ * Parsers are the gatekeeper that transforms raw (unbranded) string input into
49
+ * a `WithFormat<T, F>` branded value. They must validate the input fully before
50
+ * applying the brand — invalid inputs must throw, never produce tagged garbage.
29
51
  *
30
- * @param input - Plain string to parse
31
- * @returns Value tagged with format
52
+ * @template TOutput - Format-tagged type to produce (must extend `WithFormat<T, F>`)
32
53
  *
33
- * @throws {ParseError} When input string is invalid
54
+ * @param input - Plain string to parse and validate
55
+ * @returns Value tagged with the format brand
56
+ *
57
+ * @throws {ParseError} When the input string is invalid or does not match the
58
+ * expected format
34
59
  *
35
60
  * @remarks
36
- * - Must validate input before tagging
37
- * - Must throw clear errors (not return invalid tagged values)
38
- * - Should use Zod or similar for schema validation
39
- * - Never produces invalid tagged values
61
+ * - Must validate input before tagging — never cast without checking
62
+ * - Must throw `ParseError` (or a subclass) on invalid input, not return `undefined`
63
+ * - Use `createParserWithSchema` for Zod-backed validation
40
64
  *
41
65
  * @example
42
66
  * ```typescript
43
- * const parseISO: Parser<ISO8601> = (input) => {
44
- * const schema = z.string().datetime();
45
- * const validated = schema.parse(input);
46
- * return new Date(validated) as ISO8601;
67
+ * type ISO8601Date = WithFormat<Date, 'ISO8601'>;
68
+ * const parseISO: Parser<ISO8601Date> = (input) => {
69
+ * const d = new Date(input);
70
+ * if (isNaN(d.getTime())) throw new ParseError('ISO8601', input, 'Invalid date');
71
+ * return d as ISO8601Date;
47
72
  * };
48
73
  * ```
74
+ *
75
+ * @useWhen Accepting user or external-system input that must be validated and
76
+ * branded before entering type-safe internal APIs.
77
+ *
78
+ * @avoidWhen The input is already validated and branded — passing it through
79
+ * a `Parser` again is redundant and incurs unnecessary validation overhead.
80
+ *
81
+ * @pitfalls
82
+ * NEVER return a silently cast invalid value (`return invalid as TOutput`) —
83
+ * doing so breaks the invariant that all `WithFormat<T, F>` values are valid,
84
+ * corrupting every downstream consumer that trusts the brand.
85
+ *
86
+ * NEVER swallow parse errors with an empty catch block — callers rely on
87
+ * thrown `ParseError` instances to distinguish validation failures from other
88
+ * runtime errors.
89
+ *
90
+ * @category Formatters
91
+ * @see Formatter
92
+ * @see FormatterParser
93
+ * @see createParserWithSchema
49
94
  */
50
95
  export type Parser<TOutput extends WithFormat<unknown, string>> = (input: string) => TOutput;
51
96
  /**
52
97
  * Paired formatter/parser for round-trip format transformations.
53
98
  *
54
- * @template T - Format-tagged type
99
+ * Encapsulates both directions of a format contract in a single object:
100
+ * `format` converts a branded value to a string; `parse` validates and
101
+ * re-brands a string back to the same type.
55
102
  *
56
- * @property format - Converts tagged value string
57
- * @property parse - Converts string → tagged value
103
+ * @template T - Format-tagged type (must extend `WithFormat<unknown, string>`)
104
+ *
105
+ * - `format` — Converts tagged value → plain string
106
+ * - `parse` — Converts plain string → validated tagged value
58
107
  *
59
108
  * @remarks
60
- * - Round-trip must succeed for valid values: `parse(format(x)) ≡ x`
61
- * - Parser must reject invalid strings with clear errors
62
- * - Use when both formatting and parsing are needed
109
+ * Round-trip invariant: for all valid inputs `x`, `parse(format(x))` should
110
+ * equal `x` (or be equivalent within the format's precision). Verify this
111
+ * invariant in tests — floating-point or timezone edge cases can break it.
63
112
  *
64
113
  * @example
65
114
  * ```typescript
66
- * const iso8601: FormatterParser<ISO8601> = {
115
+ * type ISO8601Date = WithFormat<Date, 'ISO8601'>;
116
+ *
117
+ * const iso8601: FormatterParser<ISO8601Date> = {
67
118
  * format: (date) => date.toISOString(),
68
119
  * parse: (str) => {
69
- * const date = new Date(str);
70
- * if (isNaN(date.getTime())) {
71
- * throw new ParseError('ISO8601', str, 'Invalid date');
72
- * }
73
- * return date as ISO8601;
120
+ * const d = new Date(str);
121
+ * if (isNaN(d.getTime())) throw new ParseError('ISO8601', str, 'Invalid date');
122
+ * return d as ISO8601Date;
74
123
  * }
75
124
  * };
76
125
  * ```
126
+ *
127
+ * @useWhen You need a self-contained codec that can be passed as a single
128
+ * dependency to functions that need both formatting and parsing.
129
+ *
130
+ * @avoidWhen Only one direction is needed — pass a plain `Formatter<T>` or
131
+ * `Parser<T>` to avoid carrying unused code.
132
+ *
133
+ * @pitfalls
134
+ * NEVER assume round-trip losslessness without testing — date precision,
135
+ * floating-point rounding, and locale-sensitive serialisers can all produce
136
+ * values where `parse(format(x)) !== x` in subtle cases.
137
+ *
138
+ * @category Formatters
139
+ * @see Formatter
140
+ * @see Parser
77
141
  */
78
142
  export type FormatterParser<T extends WithFormat<unknown, string>> = {
79
143
  format: Formatter<T>;
@@ -1 +1 @@
1
- {"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../src/formatters.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,SAAS,CAAC,MAAM,SAAS,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;AAE9F;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,MAAM,MAAM,CAAC,OAAO,SAAS,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;AAE7F;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI;IACnE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;CAClB,CAAC"}
1
+ {"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../src/formatters.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,MAAM,SAAS,CAAC,MAAM,SAAS,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;AAE9F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,MAAM,MAAM,MAAM,CAAC,OAAO,SAAS,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;AAE7F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI;IACnE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;CAClB,CAAC"}
@@ -22,8 +22,39 @@ type ToUnitsFor<Edges extends readonly Edge[], FromUnit extends WithTypedUnits<a
22
22
  * Extract metadata type from a WithUnits type
23
23
  */
24
24
  /**
25
- * Type for unit accessor with metadata and conversion methods
26
- * Can be called as a function to create branded unit values
25
+ * Callable accessor object returned per unit from the registry.
26
+ *
27
+ * Provides three capabilities in one surface:
28
+ * 1. **Callable** — call it to brand a plain value: `registry.Celsius(25)` → `Celsius`
29
+ * 2. **`.to.<Unit>(value)`** — convert to another registered unit
30
+ * 3. **`.register(toMeta, converter)`** — extend the registry from this unit
31
+ *
32
+ * Also reflects the unit's metadata properties directly (e.g., `registry.Celsius.symbol`).
33
+ *
34
+ * @template From - The branded unit type this accessor represents
35
+ * @template Edges - Tuple of registered conversion edges in the registry
36
+ *
37
+ * @example
38
+ * ```typescript
39
+ * const temp = registry.Celsius(25); // brand a value
40
+ * const f = registry.Celsius.to.Fahrenheit(temp); // convert
41
+ * registry.Celsius.symbol; // '°C' (if registered in metadata)
42
+ * ```
43
+ *
44
+ * @useWhen You have a registry and want to convert, brand, or inspect a specific unit.
45
+ *
46
+ * @pitfalls
47
+ * NEVER use the accessor's `.to.*` property at a type that doesn't exist in the
48
+ * registry — TypeScript will report a type error, but at runtime the Proxy throws
49
+ * `ConversionError` if the path is not reachable.
50
+ *
51
+ * NEVER call the accessor without arguments for non-primitive types — class-typed
52
+ * units construct via `new Constructor(...args)`, so calling with zero args when
53
+ * the constructor requires arguments will throw at runtime.
54
+ *
55
+ * @category Registry
56
+ * @see UnitRegistry
57
+ * @see createRegistry
27
58
  */
28
59
  export type UnitAccessor<From extends WithTypedUnits<TypedMetadata<SupportedType>>, Edges extends readonly Edge[]> = {
29
60
  /**
@@ -48,15 +79,77 @@ export type UnitAccessor<From extends WithTypedUnits<TypedMetadata<SupportedType
48
79
  register<To extends WithTypedUnits<ToMeta>, ToMeta extends TypedMetadata<SupportedType>>(to: UnitsFor<To> | ToMeta, converter: RelaxedBidirectionalConverter<From, To>): UnitRegistry<[...Edges, Edge<From, To>, Edge<To, From>]> & UnitMap<[...Edges, Edge<From, To>, Edge<To, From>]>;
49
80
  } & UnitsOf<From>;
50
81
  /**
51
- * Type for unit-based conversion accessors
52
- * Provides the shape: registry.Celsius.to.Fahrenheit(value)
53
- * Only allows conversions that have been registered
82
+ * A map of unit name → `UnitAccessor` for all registered source units.
83
+ *
84
+ * Provides the fluent accessor shape:
85
+ * `registry.Celsius.to.Fahrenheit(value)`
86
+ * Only units that appear as the `From` side of a registered edge appear here.
87
+ *
88
+ * @remarks
89
+ * `UnitMap` is a type-level view over the registered `Edges` tuple. Each call to
90
+ * `registry.register(from, to, fn)` extends the `Edges` tuple at the type level,
91
+ * adding a new key to `UnitMap`. This means the accessible unit names grow
92
+ * monotonically — they are never removed once registered.
93
+ *
94
+ * @template Edges - Tuple of all registered conversion edges
95
+ *
96
+ * @category Registry
54
97
  */
55
98
  export type UnitMap<Edges extends readonly Edge[]> = {
56
99
  [FU in FromUnits<Edges> as UnitsFor<FU>]: UnitAccessor<FU, Edges>;
57
100
  };
58
101
  /**
59
- * Registry for managing and composing unit converters
102
+ * Registry for managing and composing unit converters.
103
+ *
104
+ * The central API of unacy. Each `register()` call returns a **new** registry
105
+ * instance (immutable accumulator pattern) whose static type reflects the newly
106
+ * added edge(s). At runtime, the registry stores edges in an adjacency map and
107
+ * runs BFS when a direct edge is absent.
108
+ *
109
+ * @template Edges - Tuple of conversion edges accumulated so far
110
+ *
111
+ * @remarks
112
+ * **Immutability**: every `register()` and `allow()` call produces a new
113
+ * registry. Assigning the result back to the same variable is intentional —
114
+ * the old instance remains valid but lacks the new edge in its type.
115
+ *
116
+ * **BFS caching**: multi-hop paths resolved via `getConverter` are cached by
117
+ * a `"from->to"` key. Mutating the graph after caching is not supported — the
118
+ * registry is designed to be built once and used many times.
119
+ *
120
+ * @example
121
+ * ```typescript
122
+ * const registry = createRegistry()
123
+ * .register(CelsiusMeta, FahrenheitMeta, { to: c => (c * 9/5) + 32, from: f => (f - 32) * 5/9 })
124
+ * .register(CelsiusMeta, KelvinMeta, c => c + 273.15)
125
+ * .allow(KelvinMeta, FahrenheitMeta);
126
+ *
127
+ * registry.Celsius.to.Fahrenheit(0 as Celsius); // 32
128
+ * registry.Kelvin.to.Fahrenheit(273.15 as Kelvin); // 32
129
+ * ```
130
+ *
131
+ * @useWhen You need a central, type-safe registry for a domain's units (e.g.,
132
+ * temperature, length, currency) that enforces conversion safety at compile time.
133
+ *
134
+ * @avoidWhen You only need a single, always-direct conversion without
135
+ * BFS composition — a plain `Converter<A, B>` function is simpler.
136
+ *
137
+ * @pitfalls
138
+ * NEVER mutate the internal graph after calling `getConverter` on a path that
139
+ * was composed via BFS — the path cache is not invalidated on mutation and will
140
+ * return stale composed converters.
141
+ *
142
+ * NEVER discard the return value of `register()` — the original registry
143
+ * instance does not have the new edge in its type or runtime graph.
144
+ *
145
+ * NEVER share a mutable registry reference across async boundaries where
146
+ * concurrent calls could interleave `register` and `convert` — the registry is
147
+ * designed to be fully built before any conversions are performed.
148
+ *
149
+ * @category Registry
150
+ * @see createRegistry
151
+ * @see UnitMap
152
+ * @see UnitAccessor
60
153
  */
61
154
  export interface UnitRegistry<Edges extends Edge[] = []> {
62
155
  register<From extends WithTypedUnits<FromMeta>, FromMeta extends TypedMetadata<SupportedType>>(unit: FromMeta): this & {
@@ -123,30 +216,67 @@ export interface UnitRegistry<Edges extends Edge[] = []> {
123
216
  };
124
217
  }
125
218
  /**
126
- * Create a new converter registry
219
+ * Create a new, empty converter registry.
220
+ *
221
+ * The factory entry point for unacy. Returns an empty `UnitRegistry` that can
222
+ * be grown incrementally via chained `.register()` calls. Each call produces a
223
+ * new registry instance with an expanded type signature reflecting the new edge.
224
+ *
225
+ * @template Edges - Optional tuple of Edge types to pre-declare available units
226
+ * and conversions before `register()` calls (rarely needed in practice).
127
227
  *
128
- * @template Edges - Optional tuple of Edge types to pre-declare available units and conversions
129
- * @returns Empty converter registry with unit-based accessors
228
+ * @returns Empty converter registry with full type-safe unit accessor support
130
229
  *
131
230
  * @example
132
231
  * ```typescript
133
- * type Celsius = WithUnits<PrimitiveType, 'Celsius'>;
134
- * type Fahrenheit = WithUnits<PrimitiveType, 'Fahrenheit'>;
135
- * type Meters = WithUnits<PrimitiveType, 'meters'>;
136
- * type Kilometers = WithUnits<PrimitiveType, 'kilometers'>;
232
+ * import { createRegistry, type WithUnits, type BaseMetadata } from 'unacy';
233
+ *
234
+ * const CelsiusMeta = { name: 'Celsius' as const, symbol: '°C' } satisfies BaseMetadata;
235
+ * const FahrenheitMeta = { name: 'Fahrenheit' as const, symbol: '°F' } satisfies BaseMetadata;
236
+ * const KelvinMeta = { name: 'Kelvin' as const, symbol: 'K' } satisfies BaseMetadata;
237
+ *
238
+ * type Celsius = WithUnits<number, typeof CelsiusMeta>;
239
+ * type Fahrenheit = WithUnits<number, typeof FahrenheitMeta>;
240
+ * type Kelvin = WithUnits<number, typeof KelvinMeta>;
137
241
  *
138
- * // Without pre-declared units
139
242
  * const registry = createRegistry()
140
- * .register('Celsius', 'Fahrenheit', (c: Celsius) => ((c * 9/5) + 32) as Fahrenheit);
243
+ * .register(CelsiusMeta, FahrenheitMeta, { to: c => (c * 9/5) + 32, from: f => (f - 32) * 5/9 })
244
+ * .register(CelsiusMeta, KelvinMeta, c => c + 273.15)
245
+ * .allow(KelvinMeta, FahrenheitMeta); // lift BFS-composed path into types
246
+ *
247
+ * const f = registry.Celsius.to.Fahrenheit(25 as Celsius); // 77
248
+ * const k = registry.Celsius.to.Kelvin(0 as Celsius); // 273.15
249
+ * ```
250
+ *
251
+ * @useWhen You need a type-safe, composable unit conversion graph for a domain.
252
+ * The primary entry point for all unacy usage.
141
253
  *
142
- * // With pre-declared edges (for unit accessor registration before converters exist)
143
- * const registry2 = createRegistry<[Edge<'meters', 'kilometers'>]>()
144
- * .meters.register('kilometers', (m) => (m / 1000) as Kilometers);
254
+ * @avoidWhen You only need a single direct conversion with no type guarantees —
255
+ * a plain function is lighter and requires no registry setup overhead.
145
256
  *
146
- * const temp: Celsius = 25 as Celsius;
147
- * const fahrenheit = registry.Celsius.to.Fahrenheit(temp);
148
- * console.log(fahrenheit); // 77
257
+ * @pitfalls
258
+ * NEVER reassign a registry variable without capturing the `register()` return
259
+ * value — each call returns a new instance; the original is unchanged.
260
+ * ```typescript
261
+ * // WRONG — result is discarded
262
+ * const r = createRegistry();
263
+ * r.register(CelsiusMeta, FahrenheitMeta, converter); // r is not updated
264
+ *
265
+ * // CORRECT — chain the calls
266
+ * const registry = createRegistry()
267
+ * .register(CelsiusMeta, FahrenheitMeta, converter);
149
268
  * ```
269
+ *
270
+ * NEVER add values of different units directly in arithmetic — the type system
271
+ * prevents this at compile time, but if you bypass it with `as`, the runtime
272
+ * will silently produce incorrect results with no error.
273
+ *
274
+ * NEVER use `as` to cast a `Quantity<Celsius>` to `Quantity<Fahrenheit>` —
275
+ * this defeats the entire purpose of the phantom type system.
276
+ *
277
+ * @category Registry
278
+ * @see UnitRegistry
279
+ * @see UnitMap
150
280
  */
151
281
  export declare function createRegistry<Edges extends readonly Edge[] = []>(): UnitRegistry<Edges extends readonly (infer E)[] ? E[] : never> & UnitMap<Edges>;
152
282
  export {};
@@ -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
@@ -238,30 +238,67 @@ class ConverterRegistryImpl {
238
238
  }
239
239
  }
240
240
  /**
241
- * Create a new converter registry
241
+ * Create a new, empty converter registry.
242
242
  *
243
- * @template Edges - Optional tuple of Edge types to pre-declare available units and conversions
244
- * @returns Empty converter registry with unit-based accessors
243
+ * The factory entry point for unacy. Returns an empty `UnitRegistry` that can
244
+ * be grown incrementally via chained `.register()` calls. Each call produces a
245
+ * new registry instance with an expanded type signature reflecting the new edge.
246
+ *
247
+ * @template Edges - Optional tuple of Edge types to pre-declare available units
248
+ * and conversions before `register()` calls (rarely needed in practice).
249
+ *
250
+ * @returns Empty converter registry with full type-safe unit accessor support
245
251
  *
246
252
  * @example
247
253
  * ```typescript
248
- * type Celsius = WithUnits<PrimitiveType, 'Celsius'>;
249
- * type Fahrenheit = WithUnits<PrimitiveType, 'Fahrenheit'>;
250
- * type Meters = WithUnits<PrimitiveType, 'meters'>;
251
- * type Kilometers = WithUnits<PrimitiveType, 'kilometers'>;
254
+ * import { createRegistry, type WithUnits, type BaseMetadata } from 'unacy';
255
+ *
256
+ * const CelsiusMeta = { name: 'Celsius' as const, symbol: '°C' } satisfies BaseMetadata;
257
+ * const FahrenheitMeta = { name: 'Fahrenheit' as const, symbol: '°F' } satisfies BaseMetadata;
258
+ * const KelvinMeta = { name: 'Kelvin' as const, symbol: 'K' } satisfies BaseMetadata;
259
+ *
260
+ * type Celsius = WithUnits<number, typeof CelsiusMeta>;
261
+ * type Fahrenheit = WithUnits<number, typeof FahrenheitMeta>;
262
+ * type Kelvin = WithUnits<number, typeof KelvinMeta>;
252
263
  *
253
- * // Without pre-declared units
254
264
  * const registry = createRegistry()
255
- * .register('Celsius', 'Fahrenheit', (c: Celsius) => ((c * 9/5) + 32) as Fahrenheit);
265
+ * .register(CelsiusMeta, FahrenheitMeta, { to: c => (c * 9/5) + 32, from: f => (f - 32) * 5/9 })
266
+ * .register(CelsiusMeta, KelvinMeta, c => c + 273.15)
267
+ * .allow(KelvinMeta, FahrenheitMeta); // lift BFS-composed path into types
268
+ *
269
+ * const f = registry.Celsius.to.Fahrenheit(25 as Celsius); // 77
270
+ * const k = registry.Celsius.to.Kelvin(0 as Celsius); // 273.15
271
+ * ```
272
+ *
273
+ * @useWhen You need a type-safe, composable unit conversion graph for a domain.
274
+ * The primary entry point for all unacy usage.
256
275
  *
257
- * // With pre-declared edges (for unit accessor registration before converters exist)
258
- * const registry2 = createRegistry<[Edge<'meters', 'kilometers'>]>()
259
- * .meters.register('kilometers', (m) => (m / 1000) as Kilometers);
276
+ * @avoidWhen You only need a single direct conversion with no type guarantees —
277
+ * a plain function is lighter and requires no registry setup overhead.
260
278
  *
261
- * const temp: Celsius = 25 as Celsius;
262
- * const fahrenheit = registry.Celsius.to.Fahrenheit(temp);
263
- * console.log(fahrenheit); // 77
279
+ * @pitfalls
280
+ * NEVER reassign a registry variable without capturing the `register()` return
281
+ * value — each call returns a new instance; the original is unchanged.
282
+ * ```typescript
283
+ * // WRONG — result is discarded
284
+ * const r = createRegistry();
285
+ * r.register(CelsiusMeta, FahrenheitMeta, converter); // r is not updated
286
+ *
287
+ * // CORRECT — chain the calls
288
+ * const registry = createRegistry()
289
+ * .register(CelsiusMeta, FahrenheitMeta, converter);
264
290
  * ```
291
+ *
292
+ * NEVER add values of different units directly in arithmetic — the type system
293
+ * prevents this at compile time, but if you bypass it with `as`, the runtime
294
+ * will silently produce incorrect results with no error.
295
+ *
296
+ * NEVER use `as` to cast a `Quantity<Celsius>` to `Quantity<Fahrenheit>` —
297
+ * this defeats the entire purpose of the phantom type system.
298
+ *
299
+ * @category Registry
300
+ * @see UnitRegistry
301
+ * @see UnitMap
265
302
  */
266
303
  export function createRegistry() {
267
304
  return createRegistryFromGraph();
@@ -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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"}