mlform 0.1.14 → 0.1.16

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 +2 -2
  2. package/dist/{builtins-CcS-sHJa.js → builtins-DQTX_dwn.js} +9 -8
  3. package/dist/mlform/builtins.mjs +1 -1
  4. package/dist/mlform/kit.mjs +251 -231
  5. package/dist/mlform/primitives.mjs +1 -1
  6. package/dist/mlform/runtime.mjs +3 -3
  7. package/dist/mlform/schema.mjs +2 -2
  8. package/dist/mlform/transport.mjs +1 -1
  9. package/dist/{primitives-9obTthA6.js → primitives-BcXt2QWI.js} +83 -53
  10. package/dist/{runtime-Bn_x46y-.js → runtime-BxMSso-p.js} +630 -519
  11. package/dist/schema-D9V7-AkU.js +169 -0
  12. package/dist/{transport-D173EDlB.js → transport-BG3HPc3-.js} +196 -188
  13. package/dist/types/src/builtins/definitions/fields/series-helpers.d.ts +1 -0
  14. package/dist/types/src/builtins/definitions/shared.d.ts +1 -0
  15. package/dist/types/src/kit/mount-types.d.ts +2 -0
  16. package/dist/types/src/kit/view-core-types.d.ts +4 -1
  17. package/dist/types/src/primitives/components/form-root-templates.d.ts +3 -1
  18. package/dist/types/src/primitives/components/form-root.d.ts +3 -1
  19. package/dist/types/src/primitives/components/report-frame.d.ts +2 -1
  20. package/dist/types/src/primitives/controller-types.d.ts +44 -0
  21. package/dist/types/src/primitives/types.d.ts +6 -2
  22. package/dist/types/src/runtime/index.d.ts +4 -2
  23. package/dist/types/src/runtime/submission/index.d.ts +2 -0
  24. package/dist/types/src/runtime/submission/multi-backend.d.ts +25 -0
  25. package/dist/types/src/runtime/submission/request.d.ts +14 -0
  26. package/dist/types/src/runtime/submission/snapshot.d.ts +12 -0
  27. package/dist/types/src/runtime/types/behavior.d.ts +4 -0
  28. package/dist/types/src/runtime/types/field.d.ts +1 -0
  29. package/dist/types/src/runtime/types/form.d.ts +4 -0
  30. package/dist/types/src/runtime/types/transport.d.ts +11 -2
  31. package/dist/types/src/schema/index.d.ts +2 -0
  32. package/dist/types/src/schema/mapped-to.d.ts +9 -1
  33. package/dist/types/src/schema/onehot-display.d.ts +15 -0
  34. package/dist/types/src/schema/report-context.d.ts +17 -0
  35. package/dist/types/src/schema/types/field.d.ts +1 -0
  36. package/dist/types/src/schema/types/report.d.ts +6 -1
  37. package/dist/types/src/schema/types/submit.d.ts +30 -0
  38. package/dist/types/src/transport/types/core.d.ts +17 -0
  39. package/package.json +8 -8
  40. package/dist/schema-DYDo_1VV.js +0 -95
@@ -0,0 +1,169 @@
1
+ //#region src/schema/ids.ts
2
+ var e = (e) => e.trim().toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, "").replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "") || "item", t = (e, t) => {
3
+ if (typeof e == "string" || typeof e == "number") return e;
4
+ if (e) return (t ? e[t] : void 0) ?? e.default ?? void 0;
5
+ }, n = (e) => String(e), r = class extends Error {
6
+ constructor() {
7
+ super("Report requires mappedTo when backend response contains keyed reports."), this.name = "MissingReportMappedToError";
8
+ }
9
+ }, i = (e, t) => {
10
+ let r = t.reports[n(e)];
11
+ return r === void 0 ? typeof e == "number" && Array.isArray(t.raw) ? t.raw[e] : void 0 : r;
12
+ }, a = (e, n, a = {}) => {
13
+ let o = t(e.mappedTo, n.backend);
14
+ if (o === void 0) {
15
+ if (Object.keys(n.reports).length > 0) throw new r();
16
+ return;
17
+ }
18
+ let s = i(o, n);
19
+ if (s !== void 0) return s;
20
+ for (let e of a.aliases ?? []) {
21
+ let t = i(e, n);
22
+ if (t !== void 0) return a.onAlias?.(e, o), t;
23
+ }
24
+ }, o = class extends Error {
25
+ constructor(e) {
26
+ super(e), this.name = "RegistryError";
27
+ }
28
+ }, s = class {
29
+ fieldDefinitions = /* @__PURE__ */ new Map();
30
+ reportDefinitions = /* @__PURE__ */ new Map();
31
+ registerField(e) {
32
+ if (this.fieldDefinitions.has(e.kind)) throw new o(`Field kind "${e.kind}" is already registered.`);
33
+ return this.fieldDefinitions.set(e.kind, e), this;
34
+ }
35
+ unregisterField(e) {
36
+ return this.fieldDefinitions.delete(e), this;
37
+ }
38
+ registerReport(e) {
39
+ if (this.reportDefinitions.has(e.kind)) throw new o(`Report kind "${e.kind}" is already registered.`);
40
+ return this.reportDefinitions.set(e.kind, e), this;
41
+ }
42
+ unregisterReport(e) {
43
+ return this.reportDefinitions.delete(e), this;
44
+ }
45
+ getField(e) {
46
+ return this.fieldDefinitions.get(e);
47
+ }
48
+ getReport(e) {
49
+ return this.reportDefinitions.get(e);
50
+ }
51
+ listFields() {
52
+ return Array.from(this.fieldDefinitions.values());
53
+ }
54
+ listReports() {
55
+ return Array.from(this.reportDefinitions.values());
56
+ }
57
+ }, c = () => new s(), l = (e) => e, u = (e) => e, d = (e, t, n, r) => {
58
+ if (typeof n != "object" || !n) throw Error(`Series field "${e}" requires "${t}" configuration.`);
59
+ let i = "kind" in n && typeof n.kind == "string" ? n.kind : "";
60
+ if (i.length === 0) throw Error(`Series field "${e}" requires "${t}.kind".`);
61
+ if (i === "series") throw Error(`Series field "${e}" cannot nest series in "${t}".`);
62
+ if (!r.getField(i)) throw new o(`Series field "${e}" uses unknown sub-field kind "${i}" in "${t}".`);
63
+ }, f = (e, t) => {
64
+ if (e.kind === "series" && (d(e.label, "field1", e.field1, t), d(e.label, "field2", e.field2, t), typeof e.minPoints == "number" && typeof e.maxPoints == "number" && e.minPoints > e.maxPoints)) throw Error(`Series field "${e.label}" requires minPoints to be less than or equal to maxPoints.`);
65
+ }, p = (t, n, r, i) => {
66
+ let a = e((t ?? n) || i);
67
+ if (t) {
68
+ if (r.has(a)) throw Error(`Duplicate explicit id "${a}" in schema.`);
69
+ return r.add(a), a;
70
+ }
71
+ let o = a, s = 2;
72
+ for (; r.has(o);) o = `${a}-${s}`, s += 1;
73
+ return r.add(o), o;
74
+ }, m = (e, t, n, r) => {
75
+ let i = n.getField(e.kind);
76
+ if (!i) throw new o(`Unknown field kind "${e.kind}".`);
77
+ let a = i.schema.parse(e);
78
+ return f(a, n), {
79
+ ...a,
80
+ id: p(a.id, a.label, r, `field-${t + 1}`)
81
+ };
82
+ }, h = (e, t, n, r) => {
83
+ let i = n.getReport(e.kind);
84
+ if (!i) throw new o(`Unknown report kind "${e.kind}".`);
85
+ let a = i.schema.parse(e), s = p(a.id, a.label ?? a.kind, r, `report-${t + 1}`);
86
+ return {
87
+ ...a,
88
+ id: s
89
+ };
90
+ }, g = (e) => {
91
+ let r = e.mappedTo;
92
+ return typeof r == "string" || typeof r == "number" ? [["default", n(r)]] : r ? Object.keys(r).map((e) => {
93
+ let i = t(r, e === "default" ? void 0 : e);
94
+ return i === void 0 ? null : [e, n(i)];
95
+ }).filter((e) => e !== null) : [];
96
+ }, _ = (e) => {
97
+ let t = /* @__PURE__ */ new Map();
98
+ for (let n of e) for (let [e, r] of g(n)) {
99
+ let i = `${e}:${r}`, a = t.get(i);
100
+ if (a) throw Error(`Duplicate report mappedTo "${r}" for backend "${e}" in "${a}" and "${n.id}".`);
101
+ t.set(i, n.id);
102
+ }
103
+ }, v = (e, t) => {
104
+ let n = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set(), i = (e.reports ?? []).map((e, n) => h(e, n, t, r));
105
+ return _(i), {
106
+ fields: e.fields.map((e, r) => m(e, r, t, n)),
107
+ reports: i
108
+ };
109
+ }, y = (e) => e === 1 || e === "1" || e === !0, b = (e, r, i = {}) => {
110
+ if (e.kind !== "onehot-category" || !Array.isArray(e.options)) return;
111
+ let a = /* @__PURE__ */ new Set(), o;
112
+ for (let s of e.options) {
113
+ let c = t(s.mappedTo, i.backend);
114
+ if (c === void 0) throw Error(`onehot-category "${e.id ?? e.kind}": option "${s.value}" has no mappedTo.`);
115
+ let l = n(c);
116
+ if (a.has(l)) throw Error(`onehot-category "${e.id ?? e.kind}": duplicate mappedTo "${l}".`);
117
+ if (a.add(l), y(r[l])) {
118
+ if (o !== void 0) throw Error(`onehot-category "${e.id ?? e.kind}": multiple selected mapped values.`);
119
+ o = s.value;
120
+ }
121
+ }
122
+ return o;
123
+ }, x = (e) => {
124
+ if (typeof e == "string") return e;
125
+ if (typeof e != "number") return e.id ?? e.config?.id;
126
+ }, S = (e, r) => {
127
+ if (typeof e == "string" || typeof e == "number") return String(e);
128
+ let i = t(e.mappedTo ?? e.config?.mappedTo, r);
129
+ return i === void 0 ? void 0 : n(i);
130
+ }, C = (e, r) => Object.fromEntries(e.map((e) => {
131
+ let i = t(e.mappedTo, r.backend);
132
+ return [e.id, {
133
+ reportId: e.id,
134
+ kind: e.kind,
135
+ label: e.label,
136
+ mappedTo: e.mappedTo,
137
+ target: i,
138
+ targetKey: i === void 0 ? void 0 : n(i),
139
+ backend: r.backend,
140
+ displayValues: r.displayValues ?? {},
141
+ modelValues: r.modelValues ?? r.serializedValues,
142
+ reports: r.reports,
143
+ meta: r.meta,
144
+ raw: r.raw
145
+ }];
146
+ })), w = (e, t) => {
147
+ let n = e.reportContexts ?? {}, r = x(t);
148
+ if (r && n[r]) return n[r];
149
+ let i = S(t, e.backend);
150
+ if (i !== void 0) return Object.values(n).find((e) => e.targetKey === i);
151
+ }, T = (e, t = {}) => ({
152
+ reportId: t.reportId ?? "",
153
+ backend: e.backend,
154
+ inputs: e.inputs ?? [],
155
+ displayValues: e.displayValues ?? {},
156
+ modelValues: e.modelValues ?? e.serializedValues,
157
+ values: e.values,
158
+ fieldValues: e.fieldValues,
159
+ serializedValues: e.serializedValues,
160
+ serializedFieldValues: e.serializedFieldValues,
161
+ reports: e.reports,
162
+ reportContext: t.reportId === void 0 ? void 0 : w(e, t.reportId),
163
+ reportContexts: e.reportContexts ?? {},
164
+ meta: e.meta,
165
+ raw: e.raw,
166
+ signal: t.signal
167
+ });
168
+ //#endregion
169
+ export { v as a, l as c, n as d, a as f, b as i, u as l, e as m, C as n, o, t as p, w as r, c as s, T as t, r as u };