@c9up/rune 0.1.6 → 0.1.8

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 (46) hide show
  1. package/dist/MessagesProvider.d.ts +45 -0
  2. package/dist/MessagesProvider.d.ts.map +1 -0
  3. package/dist/MessagesProvider.js +77 -0
  4. package/dist/MessagesProvider.js.map +1 -0
  5. package/dist/Schema.d.ts +912 -38
  6. package/dist/Schema.d.ts.map +1 -1
  7. package/dist/Schema.js +2841 -219
  8. package/dist/Schema.js.map +1 -1
  9. package/dist/date.d.ts +36 -0
  10. package/dist/date.d.ts.map +1 -0
  11. package/dist/date.js +275 -0
  12. package/dist/date.js.map +1 -0
  13. package/dist/errors.d.ts +42 -0
  14. package/dist/errors.d.ts.map +1 -1
  15. package/dist/errors.js +37 -0
  16. package/dist/errors.js.map +1 -1
  17. package/dist/formats.d.ts +149 -0
  18. package/dist/formats.d.ts.map +1 -0
  19. package/dist/formats.js +612 -0
  20. package/dist/formats.js.map +1 -0
  21. package/dist/index.d.ts +152 -3
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +181 -2
  24. package/dist/index.js.map +1 -1
  25. package/dist/magic.d.ts +30 -0
  26. package/dist/magic.d.ts.map +1 -0
  27. package/dist/magic.js +154 -0
  28. package/dist/magic.js.map +1 -0
  29. package/dist/types.d.ts +15 -0
  30. package/dist/types.d.ts.map +1 -0
  31. package/dist/types.js +12 -0
  32. package/dist/types.js.map +1 -0
  33. package/index.darwin-arm64.node +0 -0
  34. package/index.darwin-x64.node +0 -0
  35. package/index.linux-arm64-gnu.node +0 -0
  36. package/index.linux-x64-gnu.node +0 -0
  37. package/index.win32-x64-msvc.node +0 -0
  38. package/package.json +11 -1
  39. package/src/MessagesProvider.ts +115 -0
  40. package/src/Schema.ts +3970 -215
  41. package/src/date.ts +320 -0
  42. package/src/errors.ts +59 -0
  43. package/src/formats.ts +721 -0
  44. package/src/index.ts +266 -1
  45. package/src/magic.ts +181 -0
  46. package/src/types.ts +55 -0
@@ -0,0 +1,45 @@
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
+ /**
25
+ * Replace a dotted field path's numeric segments with `*` so array items share
26
+ * a single wildcard message key — `tags.0.name` → `tags.*.name` (VineJS parity).
27
+ */
28
+ export declare function toWildcardPath(field: string): string;
29
+ export declare class SimpleMessagesProvider implements MessagesProviderContract {
30
+ #private;
31
+ constructor(messages: ValidationMessages, fields?: ValidationFields);
32
+ /**
33
+ * Resolve a message. Priority (VineJS order):
34
+ * 1. field-specific `user.email.required`
35
+ * 2. wildcard path `*.required` / `tags.*.minLength`
36
+ * 3. generic rule `required`
37
+ * 4. raw rule message (fallback)
38
+ */
39
+ getMessage(rawMessage: string, rule: string, field: string, args?: MessageArgs): string;
40
+ toJSON(): {
41
+ messages: ValidationMessages;
42
+ fields: ValidationFields;
43
+ };
44
+ }
45
+ //# 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;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKpD;AAED,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
+ export 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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"}