@c9up/rune 0.1.6 → 0.1.7

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.
@@ -0,0 +1,40 @@
1
+ /**
2
+ * SimpleMessagesProvider — VineJS-compatible message lookup.
3
+ *
4
+ * Resolves an error message for a `(rule, field)` pair using a `'field.rule'`
5
+ * → template map, human-readable field labels, wildcard (`*`) segments for
6
+ * array items, and mustache `{{ field }}` interpolation. Mirrors
7
+ * `@vinejs/vine`'s provider so validators authored against Vine's message
8
+ * conventions behave identically here.
9
+ */
10
+ /** Rule name → message template, e.g. `{ required: 'The {{ field }} is required' }`. */
11
+ export type ValidationMessages = Record<string, string>;
12
+ /** Field path → human label, e.g. `{ 'user.email': 'Email address' }`. */
13
+ export type ValidationFields = Record<string, string>;
14
+ /** Interpolation values handed to a message template. */
15
+ export type MessageArgs = Record<string, unknown>;
16
+ /**
17
+ * Contract any messages provider must satisfy — a single `getMessage` lookup.
18
+ * Keeping it an interface lets consumers swap in their own (e.g. i18n-backed)
19
+ * provider without importing the concrete class.
20
+ */
21
+ export interface MessagesProviderContract {
22
+ getMessage(rawMessage: string, rule: string, field: string, args?: MessageArgs): string;
23
+ }
24
+ export declare class SimpleMessagesProvider implements MessagesProviderContract {
25
+ #private;
26
+ constructor(messages: ValidationMessages, fields?: ValidationFields);
27
+ /**
28
+ * Resolve a message. Priority (VineJS order):
29
+ * 1. field-specific `user.email.required`
30
+ * 2. wildcard path `*.required` / `tags.*.minLength`
31
+ * 3. generic rule `required`
32
+ * 4. raw rule message (fallback)
33
+ */
34
+ getMessage(rawMessage: string, rule: string, field: string, args?: MessageArgs): string;
35
+ toJSON(): {
36
+ messages: ValidationMessages;
37
+ fields: ValidationFields;
38
+ };
39
+ }
40
+ //# sourceMappingURL=MessagesProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessagesProvider.d.ts","sourceRoot":"","sources":["../src/MessagesProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,wFAAwF;AACxF,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACxD,0EAA0E;AAC1E,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEtD,yDAAyD;AACzD,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAOlD;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACxC,UAAU,CACT,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,WAAW,GAChB,MAAM,CAAC;CACV;AAaD,qBAAa,sBAAuB,YAAW,wBAAwB;;gBAI1D,QAAQ,EAAE,kBAAkB,EAAE,MAAM,CAAC,EAAE,gBAAgB;IAuBnE;;;;;;OAMG;IACH,UAAU,CACT,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,WAAW,GAChB,MAAM;IAwBT,MAAM,IAAI;QAAE,QAAQ,EAAE,kBAAkB,CAAC;QAAC,MAAM,EAAE,gBAAgB,CAAA;KAAE;CAGpE"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * SimpleMessagesProvider — VineJS-compatible message lookup.
3
+ *
4
+ * Resolves an error message for a `(rule, field)` pair using a `'field.rule'`
5
+ * → template map, human-readable field labels, wildcard (`*`) segments for
6
+ * array items, and mustache `{{ field }}` interpolation. Mirrors
7
+ * `@vinejs/vine`'s provider so validators authored against Vine's message
8
+ * conventions behave identically here.
9
+ */
10
+ /** Narrow to a plain record so dotted-path interpolation can index it. */
11
+ function isRecord(value) {
12
+ return typeof value === "object" && value !== null;
13
+ }
14
+ /**
15
+ * Replace a dotted field path's numeric segments with `*` so array items share
16
+ * a single wildcard message key — `tags.0.name` → `tags.*.name` (VineJS parity).
17
+ */
18
+ function toWildcardPath(field) {
19
+ return field
20
+ .split(".")
21
+ .map((segment) => (/^\d+$/.test(segment) ? "*" : segment))
22
+ .join(".");
23
+ }
24
+ export class SimpleMessagesProvider {
25
+ #messages;
26
+ #fields;
27
+ constructor(messages, fields) {
28
+ this.#messages = messages;
29
+ this.#fields = fields ?? {};
30
+ }
31
+ /** Mustache-style `{{ token }}` interpolation with dotted-path lookup. */
32
+ #interpolate(message, data) {
33
+ if (!message.includes("{{")) {
34
+ return message;
35
+ }
36
+ return message.replace(/{{(.*?)}}/g, (_match, rawKey) => {
37
+ const tokens = rawKey.trim().split(".");
38
+ let output = data;
39
+ for (const token of tokens) {
40
+ if (!isRecord(output)) {
41
+ return "";
42
+ }
43
+ output = Object.hasOwn(output, token) ? output[token] : undefined;
44
+ }
45
+ return output === undefined || output === null ? "" : String(output);
46
+ });
47
+ }
48
+ /**
49
+ * Resolve a message. Priority (VineJS order):
50
+ * 1. field-specific `user.email.required`
51
+ * 2. wildcard path `*.required` / `tags.*.minLength`
52
+ * 3. generic rule `required`
53
+ * 4. raw rule message (fallback)
54
+ */
55
+ getMessage(rawMessage, rule, field, args) {
56
+ const fieldName = this.#fields[field] ?? field;
57
+ const data = { field: fieldName, ...args };
58
+ const fieldMessage = this.#messages[`${field}.${rule}`];
59
+ if (fieldMessage !== undefined) {
60
+ return this.#interpolate(fieldMessage, data);
61
+ }
62
+ const wildcard = toWildcardPath(field);
63
+ const wildcardMessage = wildcard !== field ? this.#messages[`${wildcard}.${rule}`] : undefined;
64
+ if (wildcardMessage !== undefined) {
65
+ return this.#interpolate(wildcardMessage, data);
66
+ }
67
+ const ruleMessage = this.#messages[rule];
68
+ if (ruleMessage !== undefined) {
69
+ return this.#interpolate(ruleMessage, data);
70
+ }
71
+ return this.#interpolate(rawMessage, data);
72
+ }
73
+ toJSON() {
74
+ return { messages: this.#messages, fields: this.#fields };
75
+ }
76
+ }
77
+ //# sourceMappingURL=MessagesProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessagesProvider.js","sourceRoot":"","sources":["../src/MessagesProvider.ts"],"names":[],"mappings":"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"}
package/dist/Schema.d.ts CHANGED
@@ -3,12 +3,17 @@
3
3
  *
4
4
  * @implements FR38, FR39, FR40, FR41
5
5
  */
6
+ import type { MessagesProviderContract } from "./MessagesProvider.js";
6
7
  export type ValidationMessageParams = Record<string, string | number | boolean>;
7
8
  export type ValidationTranslator = (key: string, params?: ValidationMessageParams) => string | undefined;
8
9
  export interface ValidationError {
9
10
  field: string;
10
11
  rule: string;
11
12
  message: string;
13
+ /** Array index when the field is an array item (VineJS parity). */
14
+ index?: number;
15
+ /** Rule metadata carried for reporters/i18n (e.g. `{ min: 3 }`). */
16
+ meta?: Record<string, unknown>;
12
17
  }
13
18
  /**
14
19
  * Field context handed to `.use()` rules — mirrors VineJS's field context. It
@@ -77,33 +82,69 @@ export type ValidationResult<T = Record<string, unknown>> = {
77
82
  export interface ValidateOptions {
78
83
  /** Runtime metadata exposed to `.use()` rules via `field.meta` (VineJS parity). */
79
84
  meta?: Record<string, unknown>;
85
+ /**
86
+ * VineJS-style messages provider. When supplied, default rule messages are
87
+ * resolved through it (custom `.message()` overrides still win, and the
88
+ * provider takes precedence over a globally bound translator).
89
+ */
90
+ messagesProvider?: MessagesProviderContract;
80
91
  }
81
92
  export interface ValidationSchema<T = Record<string, unknown>> {
82
93
  fields: Record<string, RuleChain>;
94
+ /** Result-based validation (superset) — never throws. */
83
95
  validate(data: unknown, options?: ValidateOptions): ValidationResult<T>;
96
+ /**
97
+ * Throwing validation (VineJS/Adonis parity). Returns the validated data on
98
+ * success; throws {@link RuneValidationError} (`E_VALIDATION_ERROR`, HTTP 422)
99
+ * with a structured `.messages` array on failure.
100
+ */
101
+ validateOrThrow(data: unknown, options?: ValidateOptions): T;
84
102
  }
85
103
  /** Context threaded through validation so field rules can reach root/parent/meta. */
86
104
  interface RunContext {
87
105
  data: Record<string, unknown>;
88
106
  parent: Record<string, unknown> | unknown[];
89
107
  meta: Record<string, unknown>;
108
+ messagesProvider?: MessagesProviderContract;
90
109
  }
110
+ /** Extract the phantom output type of a chain. */
111
+ type OutputOf<C> = C extends RuleChain<infer O> ? O : never;
112
+ /** Keys whose output includes `undefined` become optional in the inferred shape. */
113
+ type OptionalKeys<S> = {
114
+ [K in keyof S]: undefined extends OutputOf<S[K]> ? K : never;
115
+ }[keyof S];
116
+ /** Flatten an intersection into a single readable object type. */
117
+ type Prettify<T> = {
118
+ [K in keyof T]: T[K];
119
+ } & unknown;
120
+ /**
121
+ * Infer the validated data shape from a schema's field map — the type
122
+ * `result.data` carries once `result.valid === true`. `rules.string()` →
123
+ * `string`, `.optional()` → an optional key, `.nullable()` → `T | null`,
124
+ * `.object(shape)`/`.array(item)` recurse.
125
+ */
126
+ export type Infer<S> = Prettify<{
127
+ [K in Exclude<keyof S, OptionalKeys<S>>]: OutputOf<S[K]>;
128
+ } & {
129
+ [K in OptionalKeys<S>]?: Exclude<OutputOf<S[K]>, undefined>;
130
+ }>;
91
131
  /**
92
132
  * Create a validation schema.
93
133
  *
94
- * Pass `T` explicitly when the caller wants `result.data` typed as a concrete
95
- * shape after `result.valid === true` narrows the union — runtime validation
96
- * is unchanged, the generic only types the success branch.
134
+ * The field map's rule chains are phantom-typed, so `result.data` is inferred
135
+ * automatically `schema({ email: rules.string(), age: rules.number() })`
136
+ * types `data` as `{ email: string; age: number }` with no manual generic.
97
137
  *
98
- * const RegisterValidator = schema<{ email: string; password: string }>({
138
+ * const RegisterValidator = schema({
99
139
  * email: rules.string().email(),
100
- * password: rules.string().min(8),
140
+ * age: rules.number().optional(),
101
141
  * });
142
+ * // Infer<typeof RegisterValidator> not needed — result.data is typed.
102
143
  *
103
- * The default `Record<string, unknown>` matches the historical untyped surface
104
- * so existing call sites that read `result.data` field-by-field with their
105
- * own narrowing continue to compile.
144
+ * An explicit generic is still accepted for back-compat
145
+ * (`schema<MyType>({ ... })`), overriding inference.
106
146
  */
147
+ export declare function schema<S extends Record<string, RuleChain>>(fields: S): ValidationSchema<Infer<S>>;
107
148
  export declare function schema<T = Record<string, unknown>>(fields: Record<string, RuleChain>): ValidationSchema<T>;
108
149
  export declare function setValidationTranslator(translator?: ValidationTranslator): void;
109
150
  export declare function bindRosetta(rosetta: {
@@ -113,43 +154,126 @@ export declare function bindRosetta(rosetta: {
113
154
  export interface RuleDef {
114
155
  name: string;
115
156
  param?: number;
157
+ /** Interpolation args exposed to i18n/messages providers (e.g. `{ min: 3 }`). */
158
+ args?: Record<string, unknown>;
116
159
  validate: (value: unknown) => boolean;
117
160
  message: string;
161
+ /** Set when `.message()` overrode this rule's default text. */
162
+ hasCustomMessage?: boolean;
163
+ }
164
+ /** A conditional-required condition (VineJS `requiredWhen` family). */
165
+ interface RequiredCondition {
166
+ kind: "exists" | "missing" | "when";
167
+ otherField: string;
168
+ operator?: "=" | "!=" | ">" | "<" | ">=" | "<=" | "in" | "notIn";
169
+ value?: unknown;
118
170
  }
119
- /** Rule chain fluent validation builder. */
120
- export declare class RuleChain {
171
+ /** Phantom brand carrying the inferred output type (never assigned at runtime). */
172
+ declare const OUTPUT: unique symbol;
173
+ /** Rule chain — fluent, phantom-typed validation builder. */
174
+ export declare class RuleChain<Output = unknown> {
121
175
  #private;
176
+ /** Phantom output type — drives {@link Infer}; never read at runtime. */
177
+ readonly [OUTPUT]: Output;
122
178
  /** Public read access to rules (for OpenAPI generation, Rust bridge). */
123
179
  get rules(): readonly RuleDef[];
124
180
  get isOptionalField(): boolean;
181
+ /** Public read access to the `.nullable()` flag (keeps such schemas off the native path). */
182
+ get isNullable(): boolean;
125
183
  get transforms(): ReadonlyArray<{
126
184
  name: string;
127
- fn: (value: unknown) => unknown;
185
+ fn: (value: unknown, field: FieldContext) => unknown;
128
186
  }>;
129
187
  /** Public read access to `.use()` rules (used to keep such schemas off the native path). */
130
188
  get useRules(): readonly CompiledRule[];
131
- /** Mark field as optional. */
132
- optional(): this;
189
+ /** Public read access to `.parse()` pre-transforms (kept off the native path). */
190
+ get preTransforms(): ReadonlyArray<(value: unknown) => unknown>;
191
+ /** Whether this chain carries a `requiredWhen`-family condition. */
192
+ get hasConditionalRequired(): boolean;
193
+ /** Mark field as optional (absent / `undefined` allowed). */
194
+ optional(): RuleChain<Output | undefined>;
195
+ /** Mark field as nullable (`null` allowed, kept in the output). */
196
+ nullable(): RuleChain<Output | null>;
197
+ /** Mark field as both optional and nullable. */
198
+ nullish(): RuleChain<Output | null | undefined>;
199
+ /** Stop at the first failing rule for this field (VineJS bail). */
200
+ bail(enabled?: boolean): this;
133
201
  /** Must be an object matching a nested schema. */
134
- object(shape: Record<string, RuleChain>): this;
202
+ object<Sh extends Record<string, RuleChain>>(shape: Sh): RuleChain<Infer<Sh>>;
135
203
  /** Must be an array. Items validated by the provided chain. */
136
- array(itemChain?: RuleChain): this;
204
+ array<Item extends RuleChain>(itemChain?: Item): RuleChain<OutputOf<Item>[]>;
137
205
  /** Must be a string. */
138
- string(): this;
206
+ string(): RuleChain<string>;
139
207
  /** Must be a number. */
140
- number(): this;
208
+ number(): RuleChain<number>;
141
209
  /** Must be a boolean. */
142
- boolean(): this;
143
- /** Minimum length (string) or minimum value (number). */
210
+ boolean(): RuleChain<boolean>;
211
+ /** Must equal one of `values` (enum). Narrows the output to the union. */
212
+ enum<const V extends readonly (string | number | boolean)[]>(values: V): RuleChain<V[number]>;
213
+ /** Must equal a literal value. */
214
+ literal<V extends string | number | boolean>(value: V): RuleChain<V>;
215
+ /** Minimum length (string) or minimum value (number). Alias of min/minLength. */
144
216
  min(n: number): this;
145
- /** Maximum length (string) or maximum value (number). */
217
+ /** Maximum length (string) or maximum value (number). Alias of max/maxLength. */
146
218
  max(n: number): this;
219
+ /** Minimum length for a string or array (VineJS `minLength`). */
220
+ minLength(n: number): this;
221
+ /** Maximum length for a string or array (VineJS `maxLength`). */
222
+ maxLength(n: number): this;
223
+ /** Exact length for a string or array (VineJS `fixedLength`). */
224
+ fixedLength(n: number): this;
147
225
  /** Must be a valid email. */
148
226
  email(): this;
149
- /** Must be positive (> 0) and finite. */
227
+ /** Must match a regular expression (TS-only never dispatched to Rust). */
228
+ regex(pattern: RegExp): this;
229
+ /** Must be a valid URL (TS-only — uses the WHATWG URL parser). */
230
+ url(): this;
231
+ /** Must be a valid UUID. */
232
+ uuid(): this;
233
+ /** Must contain only ASCII letters. */
234
+ alpha(): this;
235
+ /** Must contain only ASCII letters and digits. */
236
+ alphaNumeric(): this;
237
+ /** String must start with `substring`. */
238
+ startsWith(substring: string): this;
239
+ /** String must end with `substring`. */
240
+ endsWith(substring: string): this;
241
+ /** Value must be one of `values`. */
242
+ in(values: ReadonlyArray<string | number | boolean>): this;
243
+ /** Value must NOT be one of `values`. */
244
+ notIn(values: ReadonlyArray<string | number | boolean>): this;
245
+ /** Number must be positive (> 0) and finite. */
150
246
  positive(): this;
247
+ /** Number must be negative (< 0) and finite. */
248
+ negative(): this;
249
+ /** Number must be >= 0 and finite. */
250
+ nonNegative(): this;
251
+ /** Number must fall within `[min, max]` (inclusive). */
252
+ range(min: number, max: number): this;
253
+ /** Number must have at most `digits` decimal places (TS-only). */
254
+ decimal(digits: number): this;
255
+ /** Must equal a sibling field (VineJS `sameAs`). Cross-field → TS-only. */
256
+ sameAs(otherField: string): this;
257
+ /** Must equal its `<field>_confirmation` sibling (VineJS `confirmed`). */
258
+ confirmed(options?: {
259
+ confirmationField?: string;
260
+ }): this;
261
+ /** Required only when `otherField` is present (non-null) — else optional. */
262
+ requiredIfExists(otherField: string): this;
263
+ /** Required only when `otherField` is absent/null — else optional. */
264
+ requiredIfMissing(otherField: string): this;
265
+ /** Required only when `otherField <op> value` holds — else optional. */
266
+ requiredWhen(otherField: string, operator: RequiredCondition["operator"], value: unknown): this;
151
267
  /** Trim whitespace (transform). */
152
268
  trim(): this;
269
+ /**
270
+ * Post-validation transform changing the output type (VineJS `transform`).
271
+ * `value` is `unknown` — narrow it in the callback (the no-cast rule forbids
272
+ * lying about a dynamically-produced value's static type).
273
+ */
274
+ transform<U>(fn: (value: unknown, field: FieldContext) => U): RuleChain<U>;
275
+ /** Pre-validation transform of the raw input (VineJS `parse`). */
276
+ parse(fn: (value: unknown) => unknown): this;
153
277
  /** Custom validation rule. */
154
278
  custom(name: string, validate: (value: unknown) => boolean, message?: string): this;
155
279
  /**
@@ -161,7 +285,7 @@ export declare class RuleChain {
161
285
  /** Set custom error message for the last rule. */
162
286
  message(msg: string): this;
163
287
  /** Internal: validate a field value and return errors + transformed value. */
164
- _validateWithTransform(field: string, value: unknown, ctx?: RunContext): {
288
+ _validateWithTransform(field: string, rawValue: unknown, ctx?: RunContext): {
165
289
  errors: ValidationError[];
166
290
  transformed: unknown;
167
291
  };
@@ -170,12 +294,18 @@ export declare class RuleChain {
170
294
  /** Internal: apply transforms. */
171
295
  _transform(value: unknown): unknown;
172
296
  }
297
+ /** No-op alias of {@link schema} — VineJS `vine.compile()` API parity. */
298
+ export declare function compile<T extends ValidationSchema>(s: T): T;
173
299
  /** Entry point for building rules. */
174
300
  export declare const rules: {
175
- string: () => RuleChain;
176
- number: () => RuleChain;
177
- boolean: () => RuleChain;
178
- any: () => RuleChain;
301
+ string: () => RuleChain<string>;
302
+ number: () => RuleChain<number>;
303
+ boolean: () => RuleChain<boolean>;
304
+ any: () => RuleChain<unknown>;
305
+ object: <Sh extends Record<string, RuleChain>>(shape: Sh) => RuleChain<Infer<Sh>>;
306
+ array: <Item extends RuleChain>(item?: Item) => RuleChain<OutputOf<Item>[]>;
307
+ enum: <const V extends readonly (string | number | boolean)[]>(values: V) => RuleChain<V[number]>;
308
+ literal: <V extends string | number | boolean>(value: V) => RuleChain<V>;
179
309
  };
180
310
  export {};
181
311
  //# sourceMappingURL=Schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../src/Schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../src/Schema.ts"],"names":[],"mappings":"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"}