mlform 0.1.16 → 0.1.19

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.
@@ -2,24 +2,28 @@
2
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
3
  if (typeof e == "string" || typeof e == "number") return e;
4
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
- }
5
+ }, n = (e) => String(e), r = (e, r) => {
6
+ let i = t(e, r);
7
+ if (r !== void 0 || typeof e != "object" || !e) return i === void 0 ? [] : [i];
8
+ let a = /* @__PURE__ */ new Set();
9
+ return Object.values(e).filter((e) => {
10
+ if (typeof e != "string" && typeof e != "number") return !1;
11
+ let t = n(e);
12
+ return a.has(t) ? !1 : (a.add(t), !0);
13
+ });
9
14
  }, 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;
15
+ let r = n(e), i = t.reports.filter((e) => typeof e == "object" && !!e && !Array.isArray(e) && n(e.mappedTo ?? "") === r);
16
+ if (i.length > 1) throw Error(`Duplicate report payload for mappedTo "${r}".`);
17
+ let a = i[0];
18
+ if (!a) return;
19
+ if ("payload" in a) return a.payload;
20
+ let { id: o, kind: s, mappedTo: c, ...l } = a;
21
+ return l;
22
+ }, a = (e, t) => {
23
+ let n = r(e.mappedTo, t.backend);
24
+ if (n.length !== 0) for (let e of n) {
25
+ let n = i(e, t);
26
+ if (n !== void 0) return n;
23
27
  }
24
28
  }, o = class extends Error {
25
29
  constructor(e) {
@@ -166,4 +170,4 @@ var e = (e) => e.trim().toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/
166
170
  signal: t.signal
167
171
  });
168
172
  //#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 };
173
+ export { v as a, l as c, a as d, r 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, n as u };
@@ -439,7 +439,7 @@ var e = {
439
439
  });
440
440
  return e.stream(n);
441
441
  }, V = (e) => y(e) ? {
442
- reports: y(e.reports) ? e.reports : void 0,
442
+ reports: Array.isArray(e.reports) ? e.reports : void 0,
443
443
  meta: y(e.meta) ? e.meta : void 0,
444
444
  raw: "raw" in e ? e.raw : e
445
445
  } : { raw: e }, H = (e) => y(e) && typeof e.type == "string" ? e : {
@@ -609,11 +609,11 @@ var e = {
609
609
  error: e.error instanceof Error ? e.error.message : String(e.error)
610
610
  }))), n;
611
611
  }, he = (e) => e.some((e) => e.id !== void 0) ? Object.fromEntries(e.map((e) => [e.id ?? String(e.index), e.response.raw])) : e.map((e) => e.response.raw), Y = (e, t) => {
612
- let n = {}, i = /* @__PURE__ */ new Map();
613
- for (let t of e) for (let [e, a] of Object.entries(t.response.reports ?? {})) {
614
- let o = t.id ?? `transport[${t.index}]`, s = i.get(e);
615
- if (s) throw Error(r.duplicateFanoutReport(e, s, o));
616
- i.set(e, o), n[e] = a;
612
+ let n = [], i = /* @__PURE__ */ new Map();
613
+ for (let t of e) for (let e of t.response.reports ?? []) {
614
+ let a = typeof e == "object" && e ? e : {}, o = "mappedTo" in a ? String(a.mappedTo) : String(n.length), s = t.id ?? `transport[${t.index}]`, c = i.get(o);
615
+ if (c) throw Error(r.duplicateFanoutReport(o, c, s));
616
+ i.set(o, s), n.push(e);
617
617
  }
618
618
  return {
619
619
  reports: n,
@@ -1805,7 +1805,7 @@ var e = {
1805
1805
  return b(async (t) => {
1806
1806
  let r = await n(t);
1807
1807
  if (r.length === 0) return {
1808
- reports: {},
1808
+ reports: [],
1809
1809
  meta: {},
1810
1810
  raw: null
1811
1811
  };
@@ -1843,7 +1843,7 @@ var e = {
1843
1843
  yield {
1844
1844
  type: "result",
1845
1845
  result: {
1846
- reports: {},
1846
+ reports: [],
1847
1847
  meta: {},
1848
1848
  raw: null
1849
1849
  }
@@ -2,10 +2,6 @@ export declare const builtinReportKinds: {
2
2
  readonly classifier: "classifier";
3
3
  readonly regressor: "regressor";
4
4
  };
5
- export declare const builtinLegacyOutputTypes: {
6
- readonly classifier: "classifier";
7
- readonly regressor: "regressor";
8
- };
9
5
  export declare const builtinFieldKinds: {
10
6
  readonly text: "text";
11
7
  readonly number: "number";
@@ -39,7 +39,6 @@ export declare const optionSchema: z.ZodUnion<readonly [z.ZodString, z.ZodObject
39
39
  label: z.ZodString;
40
40
  value: z.ZodString;
41
41
  }, z.core.$strip>]>;
42
- export declare const resolveLegacyOutput: (result: SubmitResult, kind: string) => unknown;
43
42
  export declare const makeFieldDescriptor: (component: string, config: NormalizedFieldConfig, valueExtras: Record<string, unknown>) => {
44
43
  component: string;
45
44
  props: {
@@ -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,9 +9,15 @@ 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;
@@ -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';
@@ -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,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";
@@ -25,7 +25,7 @@ export interface PrimitiveSubmitResult {
25
25
  fieldValues: Record<string, unknown>;
26
26
  serializedValues: Record<string, unknown>;
27
27
  serializedFieldValues: Record<string, unknown>;
28
- reports: Record<string, unknown>;
28
+ reports: readonly unknown[];
29
29
  reportContexts?: Record<string, PrimitiveReportContext>;
30
30
  reportStates: Record<string, unknown>;
31
31
  meta: Record<string, unknown>;
@@ -58,7 +58,7 @@ export interface PrimitiveReportContext {
58
58
  backend?: string;
59
59
  displayValues: Record<string, unknown>;
60
60
  modelValues: Record<string, unknown>;
61
- reports: Record<string, unknown>;
61
+ reports: readonly unknown[];
62
62
  meta: Record<string, unknown>;
63
63
  raw: unknown;
64
64
  }
@@ -127,7 +127,7 @@ export interface PrimitiveReportRequest {
127
127
  fieldValues: Record<string, unknown>;
128
128
  serializedValues: Record<string, unknown>;
129
129
  serializedFieldValues: Record<string, unknown>;
130
- reports: Record<string, unknown>;
130
+ reports: readonly unknown[];
131
131
  reportContext?: PrimitiveReportContext;
132
132
  reportContexts?: Record<string, PrimitiveReportContext>;
133
133
  meta: Record<string, unknown>;
@@ -1,19 +1,12 @@
1
1
  export type MappedToTarget = string | number;
2
2
  export type MappedTo = MappedToTarget | Record<string, MappedToTarget | null | undefined>;
3
- export type ReportPayloadAliasOptions = {
4
- aliases?: readonly MappedToTarget[];
5
- onAlias?: (alias: MappedToTarget, target: MappedToTarget) => void;
6
- };
7
3
  export declare const resolveMappedTo: (mappedTo: MappedTo | undefined, backend: string | undefined) => MappedToTarget | undefined;
8
4
  export declare const mappedToKey: (target: MappedToTarget) => string;
9
- export declare class MissingReportMappedToError extends Error {
10
- constructor();
11
- }
5
+ export declare const resolveMappedTargets: (mappedTo: MappedTo | undefined, backend: string | undefined) => MappedToTarget[];
12
6
  export declare const resolveMappedReportPayload: (report: {
13
7
  id?: string;
14
8
  mappedTo?: MappedTo;
15
9
  }, result: {
16
10
  backend?: string;
17
- reports: Record<string, unknown>;
18
- raw: unknown;
19
- }, options?: ReportPayloadAliasOptions) => unknown;
11
+ reports: readonly unknown[];
12
+ }) => unknown;
@@ -43,7 +43,7 @@ export interface ReportFetchRequest {
43
43
  fieldValues: Record<string, unknown>;
44
44
  serializedValues: Record<string, unknown>;
45
45
  serializedFieldValues: Record<string, unknown>;
46
- reports: Record<string, unknown>;
46
+ reports: readonly unknown[];
47
47
  reportContext?: ReportContext;
48
48
  reportContexts?: Record<string, ReportContext>;
49
49
  meta: Record<string, unknown>;
@@ -20,7 +20,7 @@ export interface ReportContext {
20
20
  backend?: string;
21
21
  displayValues: Record<string, unknown>;
22
22
  modelValues: Record<string, unknown>;
23
- reports: Record<string, unknown>;
23
+ reports: readonly unknown[];
24
24
  meta: Record<string, unknown>;
25
25
  raw: unknown;
26
26
  }
@@ -33,7 +33,7 @@ export interface SubmitResult<TReportState = unknown> {
33
33
  fieldValues: Record<string, unknown>;
34
34
  serializedValues: Record<string, unknown>;
35
35
  serializedFieldValues: Record<string, unknown>;
36
- reports: Record<string, unknown>;
36
+ reports: readonly unknown[];
37
37
  reportContexts?: Record<string, ReportContext>;
38
38
  reportStates: Record<string, TReportState>;
39
39
  meta: Record<string, unknown>;
@@ -44,7 +44,7 @@ export interface SubmitRequest<TField extends Record<string, unknown> = Record<s
44
44
  signal?: AbortSignal;
45
45
  }
46
46
  export interface TransportResponse {
47
- reports?: Record<string, unknown>;
47
+ reports?: readonly unknown[];
48
48
  meta?: Record<string, unknown>;
49
49
  raw?: unknown;
50
50
  }
@@ -57,7 +57,7 @@ export interface SubmitResult<TReportState extends Record<string, unknown> = Rec
57
57
  fieldValues: Record<string, unknown>;
58
58
  serializedValues: Record<string, unknown>;
59
59
  serializedFieldValues: Record<string, unknown>;
60
- reports: Record<string, unknown>;
60
+ reports: readonly unknown[];
61
61
  reportStates: Record<string, TReportState>;
62
62
  meta: Record<string, unknown>;
63
63
  raw: unknown;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mlform",
3
- "version": "0.1.16",
3
+ "version": "0.1.19",
4
4
  "private": false,
5
5
  "description": "Composable form generation utilities for machine learning backend integration",
6
6
  "keywords": [
@@ -89,8 +89,9 @@
89
89
  "zod": "4.4.3"
90
90
  },
91
91
  "devDependencies": {
92
- "@types/node": "^25.9.3",
92
+ "@types/node": "^26.0.0",
93
93
  "jsdom": "^29.1.1",
94
+ "playwright": "^1.61.0",
94
95
  "typescript": "~6.0.3",
95
96
  "vite": "npm:@voidzero-dev/vite-plus-core@latest",
96
97
  "vite-plugin-dts": "^5.0.2",