mlform 0.1.18 → 0.1.20

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 (112) hide show
  1. package/README.md +2 -2
  2. package/dist/{builtins-STiTwaH9.js → builtins-CUN_bP93.js} +8 -10
  3. package/dist/mlform/builtins.mjs +1 -1
  4. package/dist/mlform/kit.mjs +15 -15
  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 +2 -2
  9. package/dist/{primitives-BcXt2QWI.js → primitives-CgFaSmAm.js} +320 -306
  10. package/dist/{runtime-Eo_q4pgg.js → runtime-zS0p2589.js} +369 -637
  11. package/dist/schema-CYsf2AFP.js +303 -0
  12. package/dist/transport-KUB3zfW9.js +65 -0
  13. package/dist/types/src/kit/constants.d.ts +0 -1
  14. package/dist/types/src/kit/index.d.ts +1 -1
  15. package/dist/types/src/kit/kinds/define-report-kind.d.ts +8 -4
  16. package/dist/types/src/kit/kinds/index.d.ts +1 -1
  17. package/dist/types/src/primitives/components/form-root-state.d.ts +0 -4
  18. package/dist/types/src/primitives/components/mounted-report.d.ts +15 -0
  19. package/dist/types/src/primitives/components/submit-button.d.ts +0 -4
  20. package/dist/types/src/primitives/constants.d.ts +1 -0
  21. package/dist/types/src/primitives/controller-types.d.ts +1 -7
  22. package/dist/types/src/runtime/errors.d.ts +0 -1
  23. package/dist/types/src/runtime/index.d.ts +1 -2
  24. package/dist/types/src/runtime/reports/controller.d.ts +1 -2
  25. package/dist/types/src/runtime/state/engine.d.ts +1 -5
  26. package/dist/types/src/runtime/submission/create-submitter.d.ts +1 -1
  27. package/dist/types/src/runtime/submission/index.d.ts +1 -0
  28. package/dist/types/src/runtime/submission/reports.d.ts +1 -2
  29. package/dist/types/src/runtime/submission/request.d.ts +2 -14
  30. package/dist/types/src/runtime/submission/transport-response.d.ts +2 -0
  31. package/dist/types/src/runtime/submission/types.d.ts +2 -23
  32. package/dist/types/src/runtime/types/behavior.d.ts +1 -3
  33. package/dist/types/src/runtime/types/form.d.ts +1 -14
  34. package/dist/types/src/runtime/types/report.d.ts +1 -1
  35. package/dist/types/src/runtime/types/transport.d.ts +5 -4
  36. package/dist/types/src/schema/index.d.ts +1 -0
  37. package/dist/types/src/schema/mapped-to.d.ts +8 -1
  38. package/dist/types/src/schema/types/report.d.ts +1 -3
  39. package/dist/types/src/schema/types/submit.d.ts +24 -3
  40. package/dist/types/src/schema/validation.d.ts +25 -0
  41. package/dist/types/src/transport/errors.d.ts +1 -28
  42. package/dist/types/src/transport/fanout.d.ts +17 -0
  43. package/dist/types/src/transport/index.d.ts +4 -10
  44. package/dist/types/src/transport/request-runner.d.ts +3 -2
  45. package/dist/types/src/transport/types.d.ts +22 -0
  46. package/package.json +2 -2
  47. package/dist/schema-CNKKJZRx.js +0 -173
  48. package/dist/transport-Cloa_erk.js +0 -2154
  49. package/dist/types/src/runtime/submission/field-updates.d.ts +0 -14
  50. package/dist/types/src/runtime/submission/pending-patches.d.ts +0 -2
  51. package/dist/types/src/runtime/submission/report-updates.d.ts +0 -16
  52. package/dist/types/src/runtime/submission/stream-events.d.ts +0 -13
  53. package/dist/types/src/runtime/submission/stream-progress.d.ts +0 -4
  54. package/dist/types/src/transport/capabilities.d.ts +0 -7
  55. package/dist/types/src/transport/clone.d.ts +0 -6
  56. package/dist/types/src/transport/composition/fallback.d.ts +0 -2
  57. package/dist/types/src/transport/composition/fanout-helpers.d.ts +0 -2
  58. package/dist/types/src/transport/composition/fanout-options.d.ts +0 -9
  59. package/dist/types/src/transport/composition/fanout.d.ts +0 -2
  60. package/dist/types/src/transport/composition/hedged.d.ts +0 -2
  61. package/dist/types/src/transport/composition/index.d.ts +0 -8
  62. package/dist/types/src/transport/composition/load-balancing.d.ts +0 -2
  63. package/dist/types/src/transport/composition/pipeline.d.ts +0 -2
  64. package/dist/types/src/transport/composition/quorum-fanout.d.ts +0 -2
  65. package/dist/types/src/transport/composition/racing.d.ts +0 -2
  66. package/dist/types/src/transport/composition/routing.d.ts +0 -3
  67. package/dist/types/src/transport/constants.d.ts +0 -34
  68. package/dist/types/src/transport/internal-core.d.ts +0 -21
  69. package/dist/types/src/transport/internal-errors.d.ts +0 -21
  70. package/dist/types/src/transport/internal-request.d.ts +0 -21
  71. package/dist/types/src/transport/internal-routing.d.ts +0 -25
  72. package/dist/types/src/transport/internal-sse.d.ts +0 -14
  73. package/dist/types/src/transport/internal-stream.d.ts +0 -13
  74. package/dist/types/src/transport/internal.d.ts +0 -6
  75. package/dist/types/src/transport/middleware/auth.d.ts +0 -2
  76. package/dist/types/src/transport/middleware/cache.d.ts +0 -2
  77. package/dist/types/src/transport/middleware/circuit-breaker.d.ts +0 -2
  78. package/dist/types/src/transport/middleware/dedup.d.ts +0 -2
  79. package/dist/types/src/transport/middleware/index.d.ts +0 -12
  80. package/dist/types/src/transport/middleware/logging.d.ts +0 -2
  81. package/dist/types/src/transport/middleware/metrics.d.ts +0 -2
  82. package/dist/types/src/transport/middleware/pipe.d.ts +0 -2
  83. package/dist/types/src/transport/middleware/rate-limit.d.ts +0 -2
  84. package/dist/types/src/transport/middleware/retry.d.ts +0 -2
  85. package/dist/types/src/transport/middleware/timeout.d.ts +0 -2
  86. package/dist/types/src/transport/middleware/tracing.d.ts +0 -2
  87. package/dist/types/src/transport/middleware/transform.d.ts +0 -3
  88. package/dist/types/src/transport/policy-context.d.ts +0 -3
  89. package/dist/types/src/transport/protocols/graphql.d.ts +0 -2
  90. package/dist/types/src/transport/protocols/grpc.d.ts +0 -5
  91. package/dist/types/src/transport/protocols/index.d.ts +0 -5
  92. package/dist/types/src/transport/protocols/json.d.ts +0 -2
  93. package/dist/types/src/transport/protocols/sse.d.ts +0 -2
  94. package/dist/types/src/transport/protocols/websocket.d.ts +0 -2
  95. package/dist/types/src/transport/runtime.d.ts +0 -4
  96. package/dist/types/src/transport/state/cache-store.d.ts +0 -2
  97. package/dist/types/src/transport/state/circuit-breaker.d.ts +0 -2
  98. package/dist/types/src/transport/state/health.d.ts +0 -2
  99. package/dist/types/src/transport/state/index.d.ts +0 -5
  100. package/dist/types/src/transport/state/rate-limiter.d.ts +0 -2
  101. package/dist/types/src/transport/state/session.d.ts +0 -2
  102. package/dist/types/src/transport/types/capabilities.d.ts +0 -35
  103. package/dist/types/src/transport/types/core.d.ts +0 -74
  104. package/dist/types/src/transport/types/events.d.ts +0 -50
  105. package/dist/types/src/transport/types/index.d.ts +0 -7
  106. package/dist/types/src/transport/types/middleware.d.ts +0 -3
  107. package/dist/types/src/transport/types/options-http.d.ts +0 -85
  108. package/dist/types/src/transport/types/options-middleware.d.ts +0 -96
  109. package/dist/types/src/transport/types/options-routing.d.ts +0 -82
  110. package/dist/types/src/transport/types/options.d.ts +0 -3
  111. package/dist/types/src/transport/types/session.d.ts +0 -48
  112. package/dist/types/src/transport/types/state.d.ts +0 -46
@@ -0,0 +1,303 @@
1
+ import { toJSONSchema as e } from "zod";
2
+ //#region src/schema/ids.ts
3
+ var t = (e) => e.trim().toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, "").replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "") || "item", n = (e, t) => {
4
+ if (typeof e == "string" || typeof e == "number") return e;
5
+ if (e) return (t ? e[t] : void 0) ?? e.default ?? void 0;
6
+ }, r = (e) => String(e), i = (e, t) => {
7
+ let i = n(e, t);
8
+ if (t !== void 0 || typeof e != "object" || !e) return i === void 0 ? [] : [i];
9
+ let a = /* @__PURE__ */ new Set();
10
+ return Object.values(e).filter((e) => {
11
+ if (typeof e != "string" && typeof e != "number") return !1;
12
+ let t = r(e);
13
+ return a.has(t) ? !1 : (a.add(t), !0);
14
+ });
15
+ }, a = (e, t) => {
16
+ if (typeof e == "string" || typeof e == "number") return [{
17
+ backend: t ?? "default",
18
+ mappedTo: e
19
+ }];
20
+ if (!e) return [];
21
+ if (t) {
22
+ let r = n(e, t);
23
+ return r === void 0 ? [] : [{
24
+ backend: t,
25
+ mappedTo: r
26
+ }];
27
+ }
28
+ return Object.entries(e).flatMap(([e, t]) => typeof t == "string" || typeof t == "number" ? [{
29
+ backend: e,
30
+ mappedTo: t
31
+ }] : []);
32
+ }, o = (e, t) => {
33
+ let n = a(e.mappedTo, t.backend), i = t.reports.filter((e) => n.some((t) => t.backend === e.backend && r(t.mappedTo) === r(e.mappedTo)));
34
+ if (i.length > 1) {
35
+ let e = i[0];
36
+ throw Error(`Duplicate report result for backend "${e?.backend}" and mappedTo "${String(e?.mappedTo)}".`);
37
+ }
38
+ return i[0];
39
+ }, s = (e, t) => {
40
+ let n = o(e, t);
41
+ return n?.status === "ready" ? n.payload : void 0;
42
+ }, c = class extends Error {
43
+ constructor(e) {
44
+ super(e), this.name = "RegistryError";
45
+ }
46
+ }, l = class {
47
+ fieldDefinitions = /* @__PURE__ */ new Map();
48
+ reportDefinitions = /* @__PURE__ */ new Map();
49
+ registerField(e) {
50
+ if (this.fieldDefinitions.has(e.kind)) throw new c(`Field kind "${e.kind}" is already registered.`);
51
+ return this.fieldDefinitions.set(e.kind, e), this;
52
+ }
53
+ unregisterField(e) {
54
+ return this.fieldDefinitions.delete(e), this;
55
+ }
56
+ registerReport(e) {
57
+ if (this.reportDefinitions.has(e.kind)) throw new c(`Report kind "${e.kind}" is already registered.`);
58
+ return this.reportDefinitions.set(e.kind, e), this;
59
+ }
60
+ unregisterReport(e) {
61
+ return this.reportDefinitions.delete(e), this;
62
+ }
63
+ getField(e) {
64
+ return this.fieldDefinitions.get(e);
65
+ }
66
+ getReport(e) {
67
+ return this.reportDefinitions.get(e);
68
+ }
69
+ listFields() {
70
+ return Array.from(this.fieldDefinitions.values());
71
+ }
72
+ listReports() {
73
+ return Array.from(this.reportDefinitions.values());
74
+ }
75
+ }, u = () => new l(), d = (e) => e, f = (e) => e, p = (e, t, n, r) => {
76
+ if (typeof n != "object" || !n) throw Error(`Series field "${e}" requires "${t}" configuration.`);
77
+ let i = "kind" in n && typeof n.kind == "string" ? n.kind : "";
78
+ if (i.length === 0) throw Error(`Series field "${e}" requires "${t}.kind".`);
79
+ if (i === "series") throw Error(`Series field "${e}" cannot nest series in "${t}".`);
80
+ if (!r.getField(i)) throw new c(`Series field "${e}" uses unknown sub-field kind "${i}" in "${t}".`);
81
+ }, m = (e, t) => {
82
+ if (e.kind === "series" && (p(e.label, "field1", e.field1, t), p(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.`);
83
+ }, h = (e, n, r, i) => {
84
+ let a = t((e ?? n) || i);
85
+ if (e) {
86
+ if (r.has(a)) throw Error(`Duplicate explicit id "${a}" in schema.`);
87
+ return r.add(a), a;
88
+ }
89
+ let o = a, s = 2;
90
+ for (; r.has(o);) o = `${a}-${s}`, s += 1;
91
+ return r.add(o), o;
92
+ }, g = (e, t, n, r) => {
93
+ let i = n.getField(e.kind);
94
+ if (!i) throw new c(`Unknown field kind "${e.kind}".`);
95
+ let a = i.schema.parse(e);
96
+ return m(a, n), {
97
+ ...a,
98
+ id: h(a.id, a.label, r, `field-${t + 1}`)
99
+ };
100
+ }, _ = (e, t, n, r) => {
101
+ let i = n.getReport(e.kind);
102
+ if (!i) throw new c(`Unknown report kind "${e.kind}".`);
103
+ let a = i.schema.parse(e), o = h(e.id ?? a.id, e.label ?? a.label ?? a.kind, r, `report-${t + 1}`);
104
+ return {
105
+ ...a,
106
+ ...e.label === void 0 ? {} : { label: e.label },
107
+ ...e.description === void 0 ? {} : { description: e.description },
108
+ ...e.mappedTo === void 0 ? {} : { mappedTo: e.mappedTo },
109
+ ...e.ui === void 0 ? {} : { ui: e.ui },
110
+ id: o
111
+ };
112
+ }, v = (e, t) => {
113
+ let n = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set(), i = (e.reports ?? []).map((e, n) => _(e, n, t, r));
114
+ return {
115
+ fields: e.fields.map((e, r) => g(e, r, t, n)),
116
+ reports: i
117
+ };
118
+ }, y = (e) => e === 1 || e === "1" || e === !0, b = (e, t, i = {}) => {
119
+ if (e.kind !== "onehot-category" || !Array.isArray(e.options)) return;
120
+ let a = /* @__PURE__ */ new Set(), o;
121
+ for (let s of e.options) {
122
+ let c = n(s.mappedTo, i.backend);
123
+ if (c === void 0) throw Error(`onehot-category "${e.id ?? e.kind}": option "${s.value}" has no mappedTo.`);
124
+ let l = r(c);
125
+ if (a.has(l)) throw Error(`onehot-category "${e.id ?? e.kind}": duplicate mappedTo "${l}".`);
126
+ if (a.add(l), y(t[l])) {
127
+ if (o !== void 0) throw Error(`onehot-category "${e.id ?? e.kind}": multiple selected mapped values.`);
128
+ o = s.value;
129
+ }
130
+ }
131
+ return o;
132
+ }, x = (e) => {
133
+ if (typeof e == "string") return e;
134
+ if (typeof e != "number") return e.id ?? e.config?.id;
135
+ }, S = (e, t) => {
136
+ if (typeof e == "string" || typeof e == "number") return String(e);
137
+ let i = n(e.mappedTo ?? e.config?.mappedTo, t);
138
+ return i === void 0 ? void 0 : r(i);
139
+ }, C = (e, t) => Object.fromEntries(e.map((e) => {
140
+ let i = o(e, t), a = i?.context, s = i?.mappedTo ?? n(e.mappedTo, t.backend);
141
+ return [e.id, {
142
+ reportId: e.id,
143
+ kind: e.kind,
144
+ label: e.label,
145
+ mappedTo: e.mappedTo,
146
+ target: s,
147
+ targetKey: s === void 0 ? void 0 : r(s),
148
+ backend: i?.backend ?? t.backend,
149
+ displayValues: a?.displayValues ?? t.displayValues ?? {},
150
+ modelValues: a?.modelValues ?? t.modelValues ?? t.serializedValues,
151
+ reports: t.reports,
152
+ meta: a?.meta ?? t.meta,
153
+ raw: a && "raw" in a ? a.raw : t.raw
154
+ }];
155
+ })), w = (e, t) => {
156
+ let n = e.reportContexts ?? {}, r = x(t);
157
+ if (r && n[r]) return n[r];
158
+ let i = S(t, e.backend);
159
+ if (i === void 0) return;
160
+ let a = Object.values(n).filter((t) => t.targetKey === i && (e.backend === void 0 || t.backend === e.backend));
161
+ return a.length === 1 ? a[0] : void 0;
162
+ }, T = (e) => typeof e == "object" && !!e && !Array.isArray(e), E = (e, t) => {
163
+ if (!T(e)) return [];
164
+ let n = [], r = (r) => {
165
+ let i = e[r];
166
+ Array.isArray(i) && i.forEach((e, i) => {
167
+ !T(e) || typeof e.kind != "string" || (r === "fields" ? t.getField(e.kind) : t.getReport(e.kind)) || n.push({
168
+ section: r,
169
+ index: i,
170
+ kind: e.kind,
171
+ path: [
172
+ r,
173
+ i,
174
+ "kind"
175
+ ]
176
+ });
177
+ });
178
+ };
179
+ return r("fields"), r("reports"), n;
180
+ }, D = (e, t, n, r) => {
181
+ if (!Array.isArray(t)) {
182
+ r.push({
183
+ path: [e],
184
+ message: `${e} must be an array.`,
185
+ code: "invalid-schema"
186
+ });
187
+ return;
188
+ }
189
+ t.forEach((t, i) => {
190
+ if (!T(t)) {
191
+ r.push({
192
+ path: [e, i],
193
+ message: `${e === "fields" ? "Field" : "Report"} must be an object.`,
194
+ code: "invalid-config"
195
+ });
196
+ return;
197
+ }
198
+ if (typeof t.kind != "string" || t.kind.length === 0) {
199
+ r.push({
200
+ path: [
201
+ e,
202
+ i,
203
+ "kind"
204
+ ],
205
+ message: "kind must be a non-empty string.",
206
+ code: "invalid-config"
207
+ });
208
+ return;
209
+ }
210
+ let a = e === "fields" ? n.getField(t.kind) : n.getReport(t.kind);
211
+ if (!a) return;
212
+ let o = a.schema.safeParse(t);
213
+ if (!o.success) for (let t of o.error.issues) r.push({
214
+ path: [
215
+ e,
216
+ i,
217
+ ...t.path.map((e) => typeof e == "symbol" ? String(e) : e)
218
+ ],
219
+ message: t.message,
220
+ code: "invalid-config"
221
+ });
222
+ });
223
+ }, O = (e, t) => {
224
+ if (!T(e)) return {
225
+ success: !1,
226
+ issues: [{
227
+ path: [],
228
+ message: "Schema must be an object.",
229
+ code: "invalid-schema"
230
+ }]
231
+ };
232
+ let n = [], r = new Set(["fields", "reports"]);
233
+ for (let t of Object.keys(e)) r.has(t) || n.push({
234
+ path: [t],
235
+ message: `Unsupported schema property "${t}".`,
236
+ code: "invalid-schema"
237
+ });
238
+ D("fields", e.fields, t, n), D("reports", e.reports ?? [], t, n);
239
+ for (let r of E(e, t)) n.push({
240
+ path: r.path,
241
+ message: `Unknown ${r.section === "fields" ? "field" : "report"} kind "${r.kind}".`,
242
+ code: "unknown-kind"
243
+ });
244
+ if (n.length > 0) return {
245
+ success: !1,
246
+ issues: n
247
+ };
248
+ try {
249
+ return {
250
+ success: !0,
251
+ data: v(e, t),
252
+ issues: []
253
+ };
254
+ } catch (e) {
255
+ return {
256
+ success: !1,
257
+ issues: [{
258
+ path: [],
259
+ message: e instanceof Error ? e.message : "Schema normalization failed.",
260
+ code: "invalid-schema"
261
+ }]
262
+ };
263
+ }
264
+ }, k = (t) => t.map((t) => e(t.schema, {
265
+ io: "input",
266
+ unrepresentable: "any"
267
+ })), A = (e) => {
268
+ let t = k(e);
269
+ return t.length > 0 ? { oneOf: t } : !1;
270
+ }, j = (e) => ({
271
+ $schema: "https://json-schema.org/draft/2020-12/schema",
272
+ type: "object",
273
+ additionalProperties: !1,
274
+ required: ["fields"],
275
+ properties: {
276
+ fields: {
277
+ type: "array",
278
+ items: A(e.listFields())
279
+ },
280
+ reports: {
281
+ type: "array",
282
+ items: A(e.listReports())
283
+ }
284
+ }
285
+ }), M = (e, t = {}) => ({
286
+ reportId: t.reportId ?? "",
287
+ backend: e.backend,
288
+ inputs: e.inputs ?? [],
289
+ displayValues: e.displayValues ?? {},
290
+ modelValues: e.modelValues ?? e.serializedValues,
291
+ values: e.values,
292
+ fieldValues: e.fieldValues,
293
+ serializedValues: e.serializedValues,
294
+ serializedFieldValues: e.serializedFieldValues,
295
+ reports: e.reports,
296
+ reportContext: t.reportId === void 0 ? void 0 : w(e, t.reportId),
297
+ reportContexts: e.reportContexts ?? {},
298
+ meta: e.meta,
299
+ raw: e.raw,
300
+ signal: t.signal
301
+ });
302
+ //#endregion
303
+ export { n as _, C as a, v as c, d, f, i as g, o as h, O as i, c as l, s as m, E as n, w as o, r as p, j as r, b as s, M as t, u, t as v };
@@ -0,0 +1,65 @@
1
+ //#region src/transport/errors.ts
2
+ var e = { ABORTED: "ABORTED" }, t = class extends Error {
3
+ code;
4
+ constructor(e, t) {
5
+ super(e), this.name = "TransportError", this.code = t;
6
+ }
7
+ }, n = (e) => e instanceof Error ? e.message : typeof e == "string" && e.trim().length > 0 ? e : String(e), r = (e) => e instanceof Error && e.name === "AbortError", i = (e) => {
8
+ let t = e.filter((e) => e !== void 0);
9
+ return t.length === 0 ? void 0 : AbortSignal.any(t);
10
+ }, a = () => {
11
+ let e = null;
12
+ return {
13
+ async run(t, a = []) {
14
+ e?.abort("request-restarted");
15
+ let o = new AbortController();
16
+ e = o;
17
+ let s = i([...a, o.signal]);
18
+ try {
19
+ let e = await t(s);
20
+ return o.signal.aborted || s?.aborted ? { status: "aborted" } : {
21
+ status: "completed",
22
+ value: e
23
+ };
24
+ } catch (e) {
25
+ return o.signal.aborted || s?.aborted || r(e) ? { status: "aborted" } : {
26
+ status: "failed",
27
+ error: e,
28
+ message: n(e)
29
+ };
30
+ } finally {
31
+ e === o && (e = null);
32
+ }
33
+ },
34
+ abort(t) {
35
+ e?.abort(t), e = null;
36
+ }
37
+ };
38
+ }, o = (e) => ({ async submit(t) {
39
+ if (e.failurePolicy === "fail-fast") {
40
+ let n = await Promise.all(e.targets.map((n) => e.submit(n, t)));
41
+ return e.merge(n.map((t, n) => ({
42
+ target: e.targets[n],
43
+ status: "fulfilled",
44
+ value: t
45
+ })), t);
46
+ }
47
+ let n = await Promise.all(e.targets.map(async (n) => {
48
+ try {
49
+ return {
50
+ target: n,
51
+ status: "fulfilled",
52
+ value: await e.submit(n, t)
53
+ };
54
+ } catch (e) {
55
+ return {
56
+ target: n,
57
+ status: "rejected",
58
+ reason: e
59
+ };
60
+ }
61
+ }));
62
+ return e.merge(n, t);
63
+ } });
64
+ //#endregion
65
+ export { e as a, t as i, a as n, n as r, o as t };
@@ -22,4 +22,3 @@ export declare const kitTagNames: {
22
22
  readonly disclosure: "mlf-kit-disclosure";
23
23
  readonly stepIndicator: "mlf-kit-step-indicator";
24
24
  };
25
- export { transportDefaults as kitTransportDefaults, transportErrorMessages } from '../../transport';
@@ -4,5 +4,5 @@ export { mountForm, unmountForm } from './mount-form';
4
4
  export { createFormView } from './view';
5
5
  export { defineFieldKind, defineReportKind } from './kinds';
6
6
  export { registerDefinedFieldKind, registerDefinedReportKind } from './kinds';
7
- export type { DeclarativeFieldKind, DeclarativeReportKind, DefinedFieldKind, DefinedReportKind, ReportRenderSpec, ReportRenderSpecContext, } from './kinds';
7
+ export type { DeclarativeFieldKind, DeclarativeReportKind, DefinedFieldKind, DefinedReportKind, ReportMountCleanup, ReportMountContext, ReportRenderSpec, ReportRenderSpecContext, } from './kinds';
8
8
  export type { CreateFormViewOptions, DisclosureState, FormLayoutConfig, FormLayoutFieldNode, FormLayoutGroupNode, FormLayoutNode, FormLayoutReportNode, FormLayoutSectionNode, FormViewController, FormViewFieldItem, FormViewReportItem, FormViewSnapshot, FormViewState, KitDesignSystemSnapshot, KitLabels, MountFormOptions, MountedForm, PanelState, ResolvedFormLayout, ResolvedFormLayoutFieldNode, ResolvedFormLayoutGroupNode, ResolvedFormLayoutNode, ResolvedFormLayoutReportNode, ResolvedFormLayoutSectionNode, ResolvedTabLayout, ResolvedTabsLayout, TabsLayoutConfig, TabsState, TabLayoutConfig, WizardLayoutConfig, WizardState, WizardStepConfig, } from './types';
@@ -9,19 +9,24 @@ export interface ReportRenderSpecContext<TConfig extends ReportConfig = ReportCo
9
9
  payload: TPayload;
10
10
  result: SubmitResult | null;
11
11
  }
12
+ export type ReportMountCleanup = () => void;
13
+ export type ReportMountContext<TConfig extends ReportConfig = ReportConfig, TPayload = unknown> = ReportRenderSpecContext<TConfig, TPayload> & {
14
+ element: HTMLElement;
15
+ signal: AbortSignal;
16
+ };
12
17
  export interface ReportRenderSpec<TConfig extends ReportConfig = ReportConfig, TPayload = unknown> {
13
18
  summary?: (context: ReportRenderSpecContext<TConfig, TPayload>) => DescriptorSummary | undefined;
14
- content: (context: ReportRenderSpecContext<TConfig, TPayload>) => DescriptorContent;
19
+ content?: (context: ReportRenderSpecContext<TConfig, TPayload>) => DescriptorContent;
20
+ mount?: (context: ReportMountContext<TConfig, TPayload>) => ReportMountCleanup | void;
15
21
  }
16
22
  export interface DeclarativeReportKind<TConfig extends ReportConfig = ReportConfig, TPayload = unknown> {
17
23
  kind: string;
18
24
  schema: ZodType<TConfig>;
19
25
  payloadSchema?: ZodType<unknown>;
20
26
  payloadValidationPolicy?: "report-error" | "fail-submit";
21
- partialUpdatePolicy?: "trust" | "validate" | "defer";
22
27
  clonePayload?: (payload: TPayload, config: TConfig) => TPayload;
23
28
  fetch?: ReportFetchFactory<TConfig>;
24
- resolve: (context: ReportResolveContext<TConfig>) => unknown;
29
+ resolve?: (context: ReportResolveContext<TConfig>) => unknown;
25
30
  render: ReportRenderSpec<TConfig, TPayload>;
26
31
  }
27
32
  export type DefinedReportKind<TConfig extends ReportConfig, _TPayload> = {
@@ -29,7 +34,6 @@ export type DefinedReportKind<TConfig extends ReportConfig, _TPayload> = {
29
34
  schema: import('zod').ZodType<TConfig>;
30
35
  payloadSchema?: ReportDefinition<TConfig>["payloadSchema"];
31
36
  payloadValidationPolicy?: ReportDefinition<TConfig>["payloadValidationPolicy"];
32
- partialUpdatePolicy?: ReportDefinition<TConfig>["partialUpdatePolicy"];
33
37
  clonePayload?: ReportDefinition<TConfig>["clonePayload"];
34
38
  fetch?: ReportDefinition<TConfig>["fetch"];
35
39
  resolvePayload?: ReportDefinition<TConfig>["resolvePayload"];
@@ -1,3 +1,3 @@
1
1
  export { defineFieldKind, type DeclarativeFieldKind, type DefinedFieldKind, } from './define-field-kind';
2
- export { defineReportKind, type DeclarativeReportKind, type DefinedReportKind, type ReportRenderSpec, type ReportRenderSpecContext, } from './define-report-kind';
2
+ export { defineReportKind, type DeclarativeReportKind, type DefinedReportKind, type ReportMountCleanup, type ReportMountContext, type ReportRenderSpec, type ReportRenderSpecContext, } from './define-report-kind';
3
3
  export { registerDefinedFieldKind, registerDefinedReportKind } from './register-kind';
@@ -4,10 +4,6 @@ export type FormRenderState = {
4
4
  submitCount: number;
5
5
  hasFormErrors: boolean;
6
6
  hasLastResult: boolean;
7
- submissionLoaded?: number;
8
- submissionTotal?: number;
9
- submissionMessage?: string;
10
- submissionSessionMessageCount?: number;
11
7
  visibleFieldIds: string[];
12
8
  visibleReportIds: string[];
13
9
  reportStateKeys: string[];
@@ -0,0 +1,15 @@
1
+ import { PrimitiveReportElement } from '../base-report-element';
2
+ import { primitiveTagNames } from '../constants';
3
+ export declare class PrimitiveMountedReportElement extends PrimitiveReportElement {
4
+ #private;
5
+ static styles: import('lit').CSSResultGroup[];
6
+ private accessor mountHost;
7
+ protected updated(): void;
8
+ disconnectedCallback(): void;
9
+ render(): import('lit').TemplateResult<1>;
10
+ }
11
+ declare global {
12
+ interface HTMLElementTagNameMap {
13
+ [primitiveTagNames.mountedReport]: PrimitiveMountedReportElement;
14
+ }
15
+ }
@@ -8,10 +8,6 @@ export declare class PrimitiveSubmitButtonElement extends LitElement {
8
8
  accessor idleLabel: string;
9
9
  accessor validatingLabel: string;
10
10
  accessor submittingLabel: string;
11
- accessor loaded: number | undefined;
12
- accessor total: number | undefined;
13
- accessor progressMessage: string | undefined;
14
- accessor sessionMessageCount: number | undefined;
15
11
  render(): import('lit').TemplateResult<1>;
16
12
  }
17
13
  declare global {
@@ -8,6 +8,7 @@ export declare const primitiveTagNames: {
8
8
  readonly reportFrame: "mlf-report-frame";
9
9
  readonly declarativeField: "mlf-declarative-field";
10
10
  readonly declarativeReport: "mlf-declarative-report";
11
+ readonly mountedReport: "mlf-mounted-report";
11
12
  readonly textField: "mlf-text-field";
12
13
  readonly numberField: "mlf-number-field";
13
14
  readonly booleanField: "mlf-boolean-field";
@@ -1,5 +1,5 @@
1
1
  export type PrimitiveFormStatus = "idle" | "editing" | "validating" | "submitting" | "success" | "error";
2
- export type PrimitiveReportStatus = "idle" | "loading" | "ready" | "error";
2
+ export type PrimitiveReportStatus = "idle" | "loading" | "ready" | "skipped" | "error";
3
3
  export interface PrimitiveFieldStateSnapshot {
4
4
  value: unknown;
5
5
  errors: readonly string[];
@@ -69,12 +69,6 @@ export interface PrimitiveFormState {
69
69
  form: readonly string[];
70
70
  };
71
71
  lastResult: PrimitiveSubmitResult | null;
72
- submissionProgress?: {
73
- loaded?: number;
74
- total?: number;
75
- message?: string;
76
- sessionMessageCount?: number;
77
- } | null;
78
72
  }
79
73
  export interface PrimitiveFieldController {
80
74
  id: string;
@@ -24,4 +24,3 @@ export declare class SubmissionAbortedError extends SubmitError {
24
24
  export declare const createAbortError: (reason?: string) => SubmissionAbortedError;
25
25
  export declare const isAbortLikeError: (error: unknown) => boolean;
26
26
  export { TransportError, transportErrorCodes } from '../../transport';
27
- export type { TransportErrorCode } from '../../transport';
@@ -2,11 +2,10 @@ export { createSubmissionSnapshot, executeFormPipeline, executeReportFetches } f
2
2
  export { createMultiBackendSubmissionSnapshot, executeMultiBackendPipeline } from './submission';
3
3
  export type { CreateMultiBackendSubmissionSnapshotOptions, CreateSubmissionSnapshotOptions, ExecuteMultiBackendPipelineOptions, MultiBackendPipelineResult, MultiBackendRunResult, MultiBackendSubmit, SubmissionSnapshot, } from './submission';
4
4
  export { EngineError, ReportPayloadError, RegistryError, SubmissionAbortedError, SubmitError, TransportError, transportErrorCodes, ValidationError, } from './errors';
5
- export type { TransportErrorCode } from './errors';
6
5
  export { createForm, createForm as createFormRuntime } from './form';
7
6
  export { defaultEquality, shallowArrayEquality, shallowEquality, shallowObjectEquality, } from './equality';
8
7
  export { identity, isPromiseLike } from './utils';
9
- export type { AllConditions, AfterSubmitContext, AfterValidateContext, AnyConditions, BaseFieldConfig, BaseReportConfig, BeforeSubmitContext, BeforeValidateContext, CreateFormConfig, DeclarativeFieldCondition, AfterReportFetchContext, FieldValidationFnContext, FieldValueAdapter, FieldConfig, FieldComparisonCondition, FieldCondition, FieldConditionContext, FieldController, FieldDefinition, FieldStateSnapshot, FieldStatus, FieldValueCondition, FieldValidationContext, FieldValidationResult, FormController, FormHooks, FormSchema, FormState, FormStatusCondition, FormStatus, FormValidator, FormValidationContext, FormValidationIssue, FormValidationResult, InactiveFieldPolicy, MaybePromise, NormalizedFieldConfig, NormalizedReportConfig, Registry, ReportConfig, ReportController, ReportDefinition, ReportFetchContext, ReportFetchErrorContext, ReportFetchExecutionContext, ReportFetchExecutionResult, ReportFetchFactory, ReportFetchRequest, ReportFetchStatus, ReportFetchTransport, ReportResolveContext, ReportStateSnapshot, ReportStatus, PipelineArtifactAdapter, PipelineArtifactContext, PipelineResult, ExecuteFormPipelineOptions, SelectorSubscriptionOptions, SubmitCountCondition, SubmitErrorContext, SubmitOptions, SubmitRequest, SubmitRequestTransportContext, SubmitResult, SubmissionInputRecord, Transport, TransportAuthKind, TransportBackpressureMode, TransportCapabilities, TransportConsistency, TransportDeliveryMode, TransportPolicyContext, TransportSession, TransportSessionEvent, TransportSessionMessage, TransportStreamEvent, TransportResponse, NotCondition, RuntimeBehavior, RuntimeBehaviorContext, RuntimeBehaviorSubmissionRecords, RuntimeBehaviorValueChangeEvent, } from './types';
8
+ export type { AllConditions, AfterSubmitContext, AfterValidateContext, AnyConditions, BaseFieldConfig, BaseReportConfig, BeforeSubmitContext, BeforeValidateContext, CreateFormConfig, DeclarativeFieldCondition, AfterReportFetchContext, FieldValidationFnContext, FieldValueAdapter, FieldConfig, FieldComparisonCondition, FieldCondition, FieldConditionContext, FieldController, FieldDefinition, FieldStateSnapshot, FieldStatus, FieldValueCondition, FieldValidationContext, FieldValidationResult, FormController, FormHooks, FormSchema, FormState, FormStatusCondition, FormStatus, FormValidator, FormValidationContext, FormValidationIssue, FormValidationResult, InactiveFieldPolicy, MaybePromise, NormalizedFieldConfig, NormalizedReportConfig, Registry, ReportConfig, ReportController, ReportDefinition, ReportFetchContext, ReportFetchErrorContext, ReportFetchExecutionContext, ReportFetchExecutionResult, ReportFetchFactory, ReportFetchRequest, ReportFetchStatus, ReportFetchTransport, ReportContext, ReportResult, ReportResultContext, ReportResolveContext, ReportStateSnapshot, ReportStatus, PipelineArtifactAdapter, PipelineArtifactContext, PipelineResult, ExecuteFormPipelineOptions, SelectorSubscriptionOptions, SubmitCountCondition, SubmitErrorContext, SubmitOptions, SubmitRequest, SubmitResult, SubmissionInputRecord, Transport, TransportResponse, NotCondition, RuntimeBehavior, RuntimeBehaviorContext, RuntimeBehaviorSubmissionRecords, RuntimeBehaviorValueChangeEvent, } from './types';
10
9
  export type FieldHandle = import('./types').FieldController;
11
10
  export type ReportHandle = import('./types').ReportController;
12
11
  export type FormRuntime = import('./types').FormController;
@@ -1,5 +1,5 @@
1
1
  import { EngineStore } from '../state';
2
- import { FormHooks, NormalizedReportConfig, PartialReportUpdatePolicy, ReportController, ReportDefinition, ReportStateSnapshot, SubmitResult } from '../types';
2
+ import { FormHooks, NormalizedReportConfig, ReportController, ReportDefinition, ReportStateSnapshot, SubmitResult } from '../types';
3
3
  type CreateReportControllerOptions = {
4
4
  config: NormalizedReportConfig;
5
5
  definition: ReportDefinition;
@@ -14,7 +14,6 @@ export type InternalReportController = ReportController & {
14
14
  update(result: SubmitResult): Promise<void>;
15
15
  markLoading(): void;
16
16
  reset(): void;
17
- readonly partialUpdatePolicy: PartialReportUpdatePolicy;
18
17
  };
19
18
  export declare const createReportController: ({ config, definition, store, hooks, }: CreateReportControllerOptions) => InternalReportController;
20
19
  export {};
@@ -1,4 +1,4 @@
1
- import { FieldStateSnapshot, FormStatus, ReportStateSnapshot, SubmissionProgressState, SubmitResult } from '../types';
1
+ import { FieldStateSnapshot, FormStatus, ReportStateSnapshot, SubmitResult } from '../types';
2
2
  import { Store } from './store';
3
3
  export interface InternalFieldState extends FieldStateSnapshot {
4
4
  syncErrors: string[];
@@ -13,7 +13,6 @@ export interface EngineState {
13
13
  formErrors: string[];
14
14
  fieldStates: Record<string, InternalFieldState>;
15
15
  reportStates: Record<string, ReportStateSnapshot>;
16
- submissionProgress: SubmissionProgressState | null;
17
16
  lifecycleVersion: number;
18
17
  activeValidationVersion: number;
19
18
  activeSubmissionVersion: number | null;
@@ -37,9 +36,6 @@ export type EngineTransition = {
37
36
  } | {
38
37
  type: "start-submission";
39
38
  submissionVersion: number;
40
- } | {
41
- type: "submission-stream-update";
42
- progress: SubmissionProgressState;
43
39
  } | {
44
40
  type: "submission-success";
45
41
  result: SubmitResult;
@@ -1,2 +1,2 @@
1
1
  import { CreateFormSubmitterOptions, FormSubmitter } from './types';
2
- export declare const createFormSubmitter: ({ store, transport, hooks, hookFailurePolicy, normalizedSchema, fields, reports, validate, getSubmitCount, markReportsLoading, resetReports, syncDerivedFieldState, shouldResetInactiveFields, resolveInactiveFieldPolicy, inactiveFieldPolicy, onRemoteFieldUpdate, beforeSubmitRecords, }: CreateFormSubmitterOptions) => FormSubmitter;
2
+ export declare const createFormSubmitter: ({ store, transport, hooks, hookFailurePolicy, normalizedSchema, fields, reports, validate, getSubmitCount, markReportsLoading, resetReports, syncDerivedFieldState, shouldResetInactiveFields, resolveInactiveFieldPolicy, inactiveFieldPolicy, beforeSubmitRecords, }: CreateFormSubmitterOptions) => FormSubmitter;
@@ -5,3 +5,4 @@ export * from './request';
5
5
  export * from './reports';
6
6
  export * from './snapshot';
7
7
  export * from './submitter';
8
+ export { normalizeTransportResponse } from './transport-response';
@@ -1,8 +1,7 @@
1
- import { NormalizedReportConfig, PartialReportUpdatePolicy, ReportStateSnapshot, SubmitResult } from '../types';
1
+ import { NormalizedReportConfig, ReportStateSnapshot, SubmitResult } from '../types';
2
2
  export type SubmissionReport = {
3
3
  readonly id: string;
4
4
  readonly config: NormalizedReportConfig;
5
- readonly partialUpdatePolicy: PartialReportUpdatePolicy;
6
5
  cloneState(state: ReportStateSnapshot): ReportStateSnapshot;
7
6
  prepareState(result: SubmitResult): Promise<ReportStateSnapshot>;
8
7
  commitState(state: ReportStateSnapshot): void;
@@ -1,4 +1,5 @@
1
- import { NormalizedFieldConfig, TransportResponse } from '../types';
1
+ import { SubmissionInputRecord } from '../../../schema';
2
+ import { NormalizedFieldConfig } from '../types';
2
3
  type SubmissionField = {
3
4
  readonly id: string;
4
5
  readonly config: NormalizedFieldConfig;
@@ -9,17 +10,6 @@ type SubmissionField = {
9
10
  };
10
11
  serialize(): unknown;
11
12
  };
12
- export type SubmissionInputRecord = {
13
- fieldId: string;
14
- displayKey?: string;
15
- label: string;
16
- value: unknown;
17
- serializedValue: unknown;
18
- mappedTo?: string | number;
19
- modelValues: Record<string, unknown>;
20
- visible: boolean;
21
- disabled: boolean;
22
- };
23
13
  export type SubmissionValueRecords = {
24
14
  inputs: SubmissionInputRecord[];
25
15
  displayValues: Record<string, unknown>;
@@ -29,9 +19,7 @@ export type SubmissionValueRecords = {
29
19
  serializedValues: Record<string, unknown>;
30
20
  serializedFieldValues: Record<string, unknown>;
31
21
  };
32
- export declare const estimatePayloadBytes: (value: unknown) => number | undefined;
33
22
  export declare const cloneSubmissionValueRecords: (records: SubmissionValueRecords) => SubmissionValueRecords;
34
23
  export declare const shouldIncludeFieldInSubmission: (field: SubmissionField, resolveInactiveFieldPolicy: (field: SubmissionField) => "include" | "omit" | "reset-on-hide") => boolean;
35
24
  export declare const buildSubmissionValueRecords: (fields: readonly SubmissionField[], backend: string | undefined, resolveInactiveFieldPolicy: (field: SubmissionField) => "include" | "omit" | "reset-on-hide") => SubmissionValueRecords;
36
- export declare const normalizeTransportResponse: (response: unknown) => TransportResponse;
37
25
  export {};
@@ -0,0 +1,2 @@
1
+ import { TransportResponse } from '../types';
2
+ export declare const normalizeTransportResponse: (response: unknown) => TransportResponse;
@@ -1,14 +1,9 @@
1
1
  import { NormalizedFormSchema } from '../../../schema';
2
- import { InternalFieldState, EngineStore } from '../state';
3
- import { FormHooks, FormValidationResult, InactiveFieldPolicy, SubmissionProgressState, SubmitOptions, SubmitResult, Transport, TransportStreamEvent } from '../types';
2
+ import { EngineStore } from '../state';
3
+ import { FormHooks, FormValidationResult, InactiveFieldPolicy, SubmitOptions, SubmitResult, Transport } from '../types';
4
4
  import { buildSubmissionValueRecords, SubmissionValueRecords } from './request';
5
5
  import { SubmissionReport } from './reports';
6
6
  export type SubmissionField = Parameters<typeof buildSubmissionValueRecords>[0][number];
7
- export type LiveSubmissionField = SubmissionField & {
8
- coerceValue(value: unknown): unknown;
9
- commitState(state: InternalFieldState): void;
10
- };
11
- export type LiveSubmissionReport = SubmissionReport;
12
7
  export type SyncDerivedFieldStateOptions = {
13
8
  values?: Record<string, unknown>;
14
9
  preserveValidationErrors?: boolean;
@@ -34,7 +29,6 @@ export type CreateFormSubmitterOptions = {
34
29
  shouldResetInactiveFields: () => boolean;
35
30
  resolveInactiveFieldPolicy: (field: SubmissionField) => InactiveFieldPolicy;
36
31
  inactiveFieldPolicy?: InactiveFieldPolicy;
37
- onRemoteFieldUpdate?: (fieldId: string) => Promise<void>;
38
32
  beforeSubmitRecords?: (records: SubmissionValueRecords) => Promise<void>;
39
33
  };
40
34
  export type FormSubmitter = {
@@ -42,18 +36,3 @@ export type FormSubmitter = {
42
36
  abort(reason?: string): void;
43
37
  reset(): void;
44
38
  };
45
- export type SubmissionMaps = {
46
- fieldMap: Map<string, LiveSubmissionField>;
47
- reportMap: Map<string, LiveSubmissionReport>;
48
- };
49
- export type SubmissionRuntime = {
50
- store: EngineStore;
51
- maps: SubmissionMaps;
52
- onRemoteFieldUpdate?: (fieldId: string) => Promise<void>;
53
- };
54
- export type StreamApplyContext = {
55
- records: SubmissionValueRecords;
56
- backend: string | undefined;
57
- };
58
- export type StreamProgressHandler = (progress: SubmissionProgressState, submissionRequestId: number, lifecycleVersion: number) => void;
59
- export type StreamEventApplier = (event: TransportStreamEvent, context: StreamApplyContext) => Promise<void>;