attaform 0.29.0 → 0.30.1
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.
- package/dist/abstract.d.mts +15 -21
- package/dist/abstract.mjs +4 -4
- package/dist/dev/abstract.mjs +4 -4
- package/dist/dev/chunks/dev-key-collision-warnings.mjs +47 -8
- package/dist/dev/chunks/devtools.mjs +2 -2
- package/dist/dev/directive.mjs +1 -1
- package/dist/dev/history.mjs +1 -2
- package/dist/dev/index.mjs +5 -5
- package/dist/dev/runtime/plugins/attaform.mjs +3 -3
- package/dist/dev/shared/{attaform-dev.BO-71R54.mjs → attaform-dev.BJK1kqHY.mjs} +44 -198
- package/dist/dev/shared/{attaform-dev.D8aoKb89.mjs → attaform-dev.BMQ3GcgD.mjs} +51 -64
- package/dist/dev/shared/{attaform-dev.BgM6FdtA.mjs → attaform-dev.BUIFcTYf.mjs} +94 -62
- package/dist/dev/shared/{attaform-dev.q6UutkCx.mjs → attaform-dev.CT7MDjPy.mjs} +92 -152
- package/dist/dev/shared/{attaform-dev.ButTkwHd.mjs → attaform-dev.CZz4GYZ6.mjs} +26 -15
- package/dist/dev/shared/{attaform-dev.DD5m2W51.mjs → attaform-dev.Chm4D6SJ.mjs} +2 -4
- package/dist/dev/shared/{attaform-dev.DrzObAZo.mjs → attaform-dev.DuEE4GU1.mjs} +4 -4
- package/dist/dev/shared/{attaform-dev.DHuydLAC.mjs → attaform-dev.DxHdkkPG.mjs} +674 -734
- package/dist/dev/shared/{attaform-dev.A-TpJW0B.mjs → attaform-dev.zlvDr0WB.mjs} +3 -21
- package/dist/dev/zod-v3.mjs +6 -6
- package/dist/dev/zod-v4.mjs +6 -6
- package/dist/dev/zod.mjs +5 -5
- package/dist/directive.d.mts +4 -4
- package/dist/directive.mjs +1 -1
- package/dist/esbuild.d.mts +11 -0
- package/dist/esbuild.mjs +1 -1
- package/dist/history.d.mts +3 -32
- package/dist/history.mjs +1 -2
- package/dist/index.d.mts +67 -70
- package/dist/index.mjs +5 -5
- package/dist/nuxt.d.mts +6 -14
- package/dist/nuxt.mjs +3 -7
- package/dist/rollup.d.mts +11 -0
- package/dist/rollup.mjs +1 -1
- package/dist/rspack.d.mts +19 -11
- package/dist/rspack.mjs +1 -1
- package/dist/runtime/components/AttaformDevtoolsPanel.vue +12 -12
- package/dist/runtime/components/DevtoolsValueTree.vue +2 -2
- package/dist/runtime/plugins/attaform.mjs +3 -3
- package/dist/shared/{attaform.CIWLMY-R.d.mts → attaform.2FslhB9R.d.mts} +83 -95
- package/dist/shared/{attaform.Cvao8bW5.mjs → attaform.8mfKZCwH.mjs} +7 -7
- package/dist/shared/{attaform.DRUT703x.d.mts → attaform.B-Tb62qV.d.mts} +12 -12
- package/dist/shared/{attaform.v0fQtWyA.mjs → attaform.B1rH9ht6.mjs} +1 -1
- package/dist/shared/{attaform.BndjUUYX.mjs → attaform.B2iebkPA.mjs} +4 -4
- package/dist/shared/{attaform.DhnPb6nK.mjs → attaform.BAf3UNn4.mjs} +1 -1
- package/dist/shared/{attaform.CZMAYwSK.mjs → attaform.BIWicztt.mjs} +651 -678
- package/dist/shared/attaform.BcQwgWaq.d.mts +2153 -0
- package/dist/shared/attaform.Br8EBn5B.d.mts +4553 -0
- package/dist/shared/{attaform.C2MVyuxC.mjs → attaform.CO918TdU.mjs} +44 -198
- package/dist/shared/{attaform.CZYt_5N_.mjs → attaform.CdZIEf7_.mjs} +1 -19
- package/dist/shared/{attaform.B0dKL8ST.mjs → attaform.DRsANMok.mjs} +94 -62
- package/dist/shared/{attaform.DffRL5pP.mjs → attaform.D_f1WgYf.mjs} +46 -59
- package/dist/shared/{attaform.D1fnTifF.mjs → attaform.D_pt1gOj.mjs} +92 -150
- package/dist/shared/attaform.L0kUn3vL.d.mts +42 -0
- package/dist/shared/{attaform.D0x-qSXm.mjs → attaform.WiGdIqgx.mjs} +1 -3
- package/dist/shared/{attaform.BK0cgu2K.mjs → attaform.ZYn2ahzJ.mjs} +3 -3
- package/dist/transforms.d.mts +153 -26
- package/dist/transforms.mjs +1 -1
- package/dist/vite.d.mts +29 -52
- package/dist/vite.mjs +8 -3
- package/dist/webpack.d.mts +20 -12
- package/dist/webpack.mjs +1 -1
- package/dist/zod-v3.d.mts +90 -96
- package/dist/zod-v3.mjs +6 -6
- package/dist/zod-v4.d.mts +119 -119
- package/dist/zod-v4.mjs +6 -6
- package/dist/zod.d.mts +5 -5
- package/dist/zod.mjs +5 -5
- package/package.json +9 -7
- package/skills/attaform/SKILL.md +1 -1
- package/skills/attaform/references/custom-components.md +1 -1
- package/dist/chunks/fingerprint.mjs +0 -183
- package/dist/chunks/fingerprint2.mjs +0 -159
- package/dist/dev/chunks/fingerprint.mjs +0 -183
- package/dist/dev/chunks/fingerprint2.mjs +0 -159
- package/dist/dev/shared/attaform-dev.BxfsuwBR.mjs +0 -44
- package/dist/shared/attaform.BxfsuwBR.mjs +0 -44
- package/dist/shared/attaform.CsoeRi3P.d.mts +0 -5155
- package/dist/shared/attaform.DDtqHYv1.d.mts +0 -2465
- package/dist/shared/attaform.axHXVQO7.d.mts +0 -44
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { reactive, markRaw, isRef, effectScope, watch, warn, nextTick } from 'vue';
|
|
2
|
-
import { e as canonicalizePath } from './attaform-dev.
|
|
2
|
+
import { e as canonicalizePath } from './attaform-dev.zlvDr0WB.mjs';
|
|
3
3
|
|
|
4
4
|
const INTERACTIVE_TAG_NAMES = /* @__PURE__ */ new Set(["INPUT", "SELECT", "TEXTAREA"]);
|
|
5
5
|
|
|
@@ -288,7 +288,7 @@ function isCheckboxInput(tagName, type) {
|
|
|
288
288
|
return tagName === "INPUT" && typeof type === "string" && type.toLowerCase() === "checkbox";
|
|
289
289
|
}
|
|
290
290
|
function applyAria(el, rv, vnode) {
|
|
291
|
-
if (rv.
|
|
291
|
+
if (rv.ariaDisplayState === void 0) return;
|
|
292
292
|
if (!INTERACTIVE_TAG_NAMES.has(el.tagName)) return;
|
|
293
293
|
const locks = el[ariaLockKey] ?? EMPTY_ARIA_LOCKS;
|
|
294
294
|
const ds = rv.ariaDisplayState.value;
|
|
@@ -303,7 +303,7 @@ function applyAria(el, rv, vnode) {
|
|
|
303
303
|
}
|
|
304
304
|
}
|
|
305
305
|
function setupAria(el, rv, vnode) {
|
|
306
|
-
if (rv.
|
|
306
|
+
if (rv.ariaDisplayState === void 0) return;
|
|
307
307
|
if (!INTERACTIVE_TAG_NAMES.has(el.tagName)) return;
|
|
308
308
|
mergeAriaLocks(el, vnode);
|
|
309
309
|
applyAria(el, rv, vnode);
|
|
@@ -325,7 +325,7 @@ function seedLocksFromDom(el) {
|
|
|
325
325
|
}
|
|
326
326
|
}
|
|
327
327
|
function setupAriaLive(el, rv) {
|
|
328
|
-
if (rv.
|
|
328
|
+
if (rv.ariaDisplayState === void 0) return;
|
|
329
329
|
if (!INTERACTIVE_TAG_NAMES.has(el.tagName)) return;
|
|
330
330
|
seedLocksFromDom(el);
|
|
331
331
|
applyAria(el, rv, null);
|
|
@@ -337,7 +337,7 @@ function setupAriaLive(el, rv) {
|
|
|
337
337
|
el[ariaScopeKey] = () => scope.stop();
|
|
338
338
|
}
|
|
339
339
|
function getSSRAriaProps(rv, vnode) {
|
|
340
|
-
if (rv.
|
|
340
|
+
if (rv.ariaDisplayState === void 0) return void 0;
|
|
341
341
|
const props = vnode?.props ?? null;
|
|
342
342
|
const ds = rv.ariaDisplayState.value;
|
|
343
343
|
const tagName = typeof vnode?.type === "string" ? vnode.type.toUpperCase() : "";
|
|
@@ -478,7 +478,7 @@ function logTransformFailure(path, index, fn, err) {
|
|
|
478
478
|
{
|
|
479
479
|
const namePart = fn.name !== "" ? `, '${fn.name}'` : "";
|
|
480
480
|
console.error(
|
|
481
|
-
`[attaform] transform threw for path '${path}' (index ${index}${namePart})
|
|
481
|
+
`[attaform] transform threw for path '${path}' (index ${index}${namePart}). Write aborted. Transforms must not throw; wrap your own try/catch if the throw is recoverable. Original error:`,
|
|
482
482
|
err
|
|
483
483
|
);
|
|
484
484
|
}
|
|
@@ -568,7 +568,7 @@ function setAssignFunction(el, vnode, value) {
|
|
|
568
568
|
if (!isRegisterValue(value)) {
|
|
569
569
|
{
|
|
570
570
|
warn(
|
|
571
|
-
`v-register expected a RegisterValue, got '${typeof value}'. Bind to form.register('field')
|
|
571
|
+
`v-register expected a RegisterValue, got '${typeof value}'. Bind to form.register('field'), not the field's ref, value, or path string.`
|
|
572
572
|
);
|
|
573
573
|
}
|
|
574
574
|
el[assignKey] = makeNoopAssigner();
|
|
@@ -916,7 +916,7 @@ const vRegisterCheckbox = {
|
|
|
916
916
|
if (rawElementValue === void 0) {
|
|
917
917
|
{
|
|
918
918
|
warn(
|
|
919
|
-
'Checkbox bound to an array model is missing a `value` attribute
|
|
919
|
+
'Checkbox bound to an array model is missing a `value` attribute, so Attaform cannot determine which item to add or remove. Add value="..." to each <input type="checkbox">.'
|
|
920
920
|
);
|
|
921
921
|
}
|
|
922
922
|
return;
|
|
@@ -935,7 +935,7 @@ const vRegisterCheckbox = {
|
|
|
935
935
|
if (rawElementValue === void 0) {
|
|
936
936
|
{
|
|
937
937
|
warn(
|
|
938
|
-
'Checkbox bound to a Set model is missing a `value` attribute
|
|
938
|
+
'Checkbox bound to a Set model is missing a `value` attribute, so Attaform cannot determine which item to add or remove. Add value="..." to each <input type="checkbox">.'
|
|
939
939
|
);
|
|
940
940
|
}
|
|
941
941
|
return;
|
|
@@ -967,20 +967,15 @@ const vRegisterCheckbox = {
|
|
|
967
967
|
el._lastAppliedModel = value.innerRef.value;
|
|
968
968
|
});
|
|
969
969
|
},
|
|
970
|
-
// Skip the DOM sync when the model is identity-unchanged
|
|
971
|
-
//
|
|
972
|
-
//
|
|
973
|
-
//
|
|
974
|
-
//
|
|
975
|
-
//
|
|
976
|
-
//
|
|
977
|
-
//
|
|
978
|
-
//
|
|
979
|
-
// the browser fires `change`. Identity comparison on
|
|
980
|
-
// `innerRef.value` is sound for the same reason as multi-select —
|
|
981
|
-
// every form write produces a fresh value at the path (new
|
|
982
|
-
// primitives; new array/Set references along the spine), so
|
|
983
|
-
// reference equality tracks "did the model move" exactly.
|
|
970
|
+
// Skip the DOM sync when the model is identity-unchanged since the last
|
|
971
|
+
// application. Without the guard, a sibling's reactive write triggers
|
|
972
|
+
// `beforeUpdate` mid-click, `setChecked` re-applies the prior model state,
|
|
973
|
+
// and the in-flight toggle is clobbered before the browser fires `change`.
|
|
974
|
+
// Compare `innerRef.value` by identity: every form write produces a fresh
|
|
975
|
+
// value at the path, new primitives and new array or Set references along
|
|
976
|
+
// the spine, so reference equality tracks "did the model move" exactly. The
|
|
977
|
+
// guard must NOT compare against `oldValue`, which is the previous binding's
|
|
978
|
+
// wrapper RegisterValue and never equals a model scalar.
|
|
984
979
|
beforeUpdate(el, binding, vnode) {
|
|
985
980
|
setAssignFunction(el, vnode, binding.value);
|
|
986
981
|
if (!isRegisterValue(binding.value)) return;
|
|
@@ -1030,13 +1025,11 @@ const vRegisterRadio = {
|
|
|
1030
1025
|
}
|
|
1031
1026
|
});
|
|
1032
1027
|
},
|
|
1033
|
-
//
|
|
1034
|
-
//
|
|
1035
|
-
//
|
|
1036
|
-
//
|
|
1037
|
-
//
|
|
1038
|
-
// model. Checkbox already uses `mounted: setChecked` for the same
|
|
1039
|
-
// reason.
|
|
1028
|
+
// The initial checked sync runs in `mounted`, NOT `created`: Vue fires
|
|
1029
|
+
// `created` before the element's attributes are patched, so `type`, `value`
|
|
1030
|
+
// and `_value` are absent, `getValue(el)` returns undefined, and every radio
|
|
1031
|
+
// in a group mounts unchecked whatever the model says. Checkbox uses
|
|
1032
|
+
// `mounted` for the same reason.
|
|
1040
1033
|
mounted(el, { value }) {
|
|
1041
1034
|
if (!isRegisterValue(value)) return;
|
|
1042
1035
|
el.checked = looseEqual(value.innerRef.value, applyCoerce(getValue(el), value));
|
|
@@ -1046,15 +1039,12 @@ const vRegisterRadio = {
|
|
|
1046
1039
|
el._lastAppliedModel = value.innerRef.value;
|
|
1047
1040
|
});
|
|
1048
1041
|
},
|
|
1049
|
-
// Skip the DOM sync when the model is identity-unchanged
|
|
1050
|
-
//
|
|
1051
|
-
//
|
|
1052
|
-
//
|
|
1053
|
-
//
|
|
1054
|
-
//
|
|
1055
|
-
// `vRegisterSelect` and `setChecked` bugs: a sibling's reactive
|
|
1056
|
-
// write triggers `beforeUpdate` mid-click and writes back the
|
|
1057
|
-
// prior model state, clobbering the in-flight selection.
|
|
1042
|
+
// Skip the DOM sync when the model is identity-unchanged since the last
|
|
1043
|
+
// application, tracked on `_lastAppliedModel`. Comparing against `oldValue`
|
|
1044
|
+
// instead compares a primitive scalar to the previous binding's wrapper
|
|
1045
|
+
// RegisterValue, never equal, so `el.checked` re-applies on every parent
|
|
1046
|
+
// re-render and a sibling's reactive write clobbers an in-flight selection
|
|
1047
|
+
// mid-click.
|
|
1058
1048
|
beforeUpdate(el, { value }, vnode) {
|
|
1059
1049
|
if (!isRegisterValue(value)) return;
|
|
1060
1050
|
setAssignFunction(el, vnode, value);
|
|
@@ -1113,22 +1103,20 @@ const vRegisterSelect = {
|
|
|
1113
1103
|
beforeUpdate(el, binding, vnode) {
|
|
1114
1104
|
setAssignFunction(el, vnode, binding.value);
|
|
1115
1105
|
},
|
|
1116
|
-
// Skip the DOM sync when the model is identity-unchanged
|
|
1117
|
-
//
|
|
1118
|
-
//
|
|
1119
|
-
//
|
|
1120
|
-
//
|
|
1121
|
-
//
|
|
1122
|
-
//
|
|
1123
|
-
//
|
|
1124
|
-
//
|
|
1125
|
-
//
|
|
1126
|
-
//
|
|
1127
|
-
//
|
|
1128
|
-
//
|
|
1129
|
-
//
|
|
1130
|
-
// — it short-circuits the immediate post-write render where the
|
|
1131
|
-
// DOM is already in sync from the user's click.
|
|
1106
|
+
// Skip the DOM sync when the model is identity-unchanged since the last
|
|
1107
|
+
// application. A parent re-render fires `updated` whether or not the bound
|
|
1108
|
+
// model moved: a typed character in a sibling, an async-validation tick, any
|
|
1109
|
+
// reactive read elsewhere on the page. Re-applying `setSelected` against the
|
|
1110
|
+
// prior model on each of those clobbers an in-progress `<select multiple>`
|
|
1111
|
+
// selection between mousedown and the browser's change decision, after which
|
|
1112
|
+
// the browser sees no net change, never fires `change`, and the model never
|
|
1113
|
+
// updates.
|
|
1114
|
+
//
|
|
1115
|
+
// Identity comparison is sound: every form write produces a new array or Set
|
|
1116
|
+
// reference at the path, the replacement of `form.value` rolling fresh
|
|
1117
|
+
// structures forward along the spine. The `_assigning` gate stays as well,
|
|
1118
|
+
// short-circuiting the immediate post-write render where the DOM is already
|
|
1119
|
+
// in sync from the user's click.
|
|
1132
1120
|
updated(el, { value }) {
|
|
1133
1121
|
if (el._assigning === true) return;
|
|
1134
1122
|
if (!isRegisterValue(value)) return;
|
|
@@ -1316,7 +1304,7 @@ const vRegisterDynamic = {
|
|
|
1316
1304
|
if (hasMarker || hasUserAssigner) return;
|
|
1317
1305
|
warnedUnsupportedElements.add(el);
|
|
1318
1306
|
warn(
|
|
1319
|
-
`[attaform] v-register on <${el.tagName.toLowerCase()}> is a no-op
|
|
1307
|
+
`[attaform] v-register on <${el.tagName.toLowerCase()}> is a no-op: non-input roots aren't bound to text-input semantics. For custom components: call \`useRegister()\` in the child's setup and re-bind v-register to an inner native element. Lower-level: install a custom assigner via the \`assignKey\` symbol on the element.`
|
|
1320
1308
|
);
|
|
1321
1309
|
});
|
|
1322
1310
|
}
|
|
@@ -1327,7 +1315,7 @@ const vRegisterDynamic = {
|
|
|
1327
1315
|
callModelHook(el, binding, vnode, prevVNode, "beforeUpdate");
|
|
1328
1316
|
const ariaEl = el;
|
|
1329
1317
|
const value = binding.value;
|
|
1330
|
-
if (!isRegisterValue(value) || value.
|
|
1318
|
+
if (!isRegisterValue(value) || value.ariaDisplayState === void 0) {
|
|
1331
1319
|
teardownAria(ariaEl);
|
|
1332
1320
|
} else {
|
|
1333
1321
|
const old = binding.oldValue;
|
|
@@ -1369,13 +1357,12 @@ const vRegisterDynamic = {
|
|
|
1369
1357
|
delete el._syncFromStorage;
|
|
1370
1358
|
delete el[assignKey];
|
|
1371
1359
|
},
|
|
1372
|
-
//
|
|
1373
|
-
//
|
|
1374
|
-
//
|
|
1375
|
-
//
|
|
1376
|
-
//
|
|
1377
|
-
//
|
|
1378
|
-
// describedby matches the client after hydration.
|
|
1360
|
+
// Vue skips directive lifecycle during SSR, so the hooks above never run on
|
|
1361
|
+
// the server and the same aria attributes are emitted here from the SSR-time
|
|
1362
|
+
// gated display state. Honours authored attrs through the vnode-level
|
|
1363
|
+
// lockout, touches no DOM, and shares `resolveAriaValue` with the client
|
|
1364
|
+
// path. Ids are SSR-stable, `formInstanceId` deriving from Vue's `useId`, so
|
|
1365
|
+
// a server-rendered describedby matches the client after hydration.
|
|
1379
1366
|
getSSRProps(binding, vnode) {
|
|
1380
1367
|
const rv = binding.value;
|
|
1381
1368
|
if (!isRegisterValue(rv)) return void 0;
|
|
@@ -1,18 +1,42 @@
|
|
|
1
|
-
import { A as AttaformErrorCode,
|
|
2
|
-
import { e as canonicalizePath, h as SET_MEMBER_SEGMENT } from './attaform-dev.
|
|
3
|
-
import { a as safeOwnRead, b as safeAssign } from './attaform-dev.
|
|
1
|
+
import { A as AttaformErrorCode, k as isPlainRecord, s as slimKindOf } from './attaform-dev.DxHdkkPG.mjs';
|
|
2
|
+
import { e as canonicalizePath, h as SET_MEMBER_SEGMENT } from './attaform-dev.zlvDr0WB.mjs';
|
|
3
|
+
import { a as safeOwnRead, b as safeAssign } from './attaform-dev.CZz4GYZ6.mjs';
|
|
4
4
|
|
|
5
5
|
const PATH_SEPARATOR = ".";
|
|
6
6
|
function isOpaqueKind(kind) {
|
|
7
7
|
return kind === "any" || kind === "unknown" || kind === "custom";
|
|
8
8
|
}
|
|
9
|
-
|
|
9
|
+
const MEMO_CAP = 4096;
|
|
10
|
+
const ROOT_KINDS = /* @__PURE__ */ new Set(["object"]);
|
|
11
|
+
const NO_KINDS = /* @__PURE__ */ new Set();
|
|
12
|
+
function memoPut(memo, key, value) {
|
|
13
|
+
if (memo.size >= MEMO_CAP) memo.clear();
|
|
14
|
+
memo.set(key, value);
|
|
15
|
+
return value;
|
|
16
|
+
}
|
|
17
|
+
function createSharedSchemaStore() {
|
|
18
|
+
const bySchema = /* @__PURE__ */ new WeakMap();
|
|
19
|
+
return (rootSchema, maxRecursionDepth, build) => {
|
|
20
|
+
let byDepth = bySchema.get(rootSchema);
|
|
21
|
+
if (byDepth === void 0) {
|
|
22
|
+
byDepth = /* @__PURE__ */ new Map();
|
|
23
|
+
bySchema.set(rootSchema, byDepth);
|
|
24
|
+
}
|
|
25
|
+
const hit = byDepth.get(maxRecursionDepth);
|
|
26
|
+
if (hit !== void 0) return hit;
|
|
27
|
+
const built = build();
|
|
28
|
+
byDepth.set(maxRecursionDepth, built);
|
|
29
|
+
return built;
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
function createAbstractSchema(rootSchema, intro, services, options) {
|
|
10
33
|
const maxRecursionDepth = options.maxRecursionDepth;
|
|
11
34
|
const leafCache = /* @__PURE__ */ new Map();
|
|
12
35
|
const preprocessOrCoerceCache = /* @__PURE__ */ new Map();
|
|
13
36
|
const opaqueLeafCache = /* @__PURE__ */ new Map();
|
|
14
37
|
const discriminatorCache = /* @__PURE__ */ new Map();
|
|
15
38
|
const entryKeyKindCache = /* @__PURE__ */ new Map();
|
|
39
|
+
const slimKindsCache = /* @__PURE__ */ new Map();
|
|
16
40
|
let asyncValidationFlag = null;
|
|
17
41
|
let containerRefineFlag = null;
|
|
18
42
|
let discriminatedUnionFlag = null;
|
|
@@ -56,7 +80,7 @@ function createAbstractSchema(rootSchema, intro, services, formKey, options) {
|
|
|
56
80
|
if (intro.kindOf(litSchema) !== "literal") continue;
|
|
57
81
|
const literalValues = intro.getLiteralValues(litSchema);
|
|
58
82
|
if (literalValues.includes(value)) {
|
|
59
|
-
return services.deriveDefault(opt, true, maxRecursionDepth
|
|
83
|
+
return services.deriveDefault(opt, true, maxRecursionDepth);
|
|
60
84
|
}
|
|
61
85
|
}
|
|
62
86
|
return void 0;
|
|
@@ -67,7 +91,6 @@ function createAbstractSchema(rootSchema, intro, services, formKey, options) {
|
|
|
67
91
|
};
|
|
68
92
|
}
|
|
69
93
|
const abstractSchema = {
|
|
70
|
-
fingerprint: () => services.fingerprint(rootSchema),
|
|
71
94
|
needsAsyncValidation() {
|
|
72
95
|
asyncValidationFlag ?? (asyncValidationFlag = intro.containsAsyncRefine(rootSchema) || intro.containsAsyncTransform(rootSchema));
|
|
73
96
|
return asyncValidationFlag;
|
|
@@ -81,24 +104,24 @@ function createAbstractSchema(rootSchema, intro, services, formKey, options) {
|
|
|
81
104
|
return discriminatedUnionFlag;
|
|
82
105
|
},
|
|
83
106
|
getDefaultValues(config) {
|
|
84
|
-
return services.
|
|
107
|
+
return services.runGetDefaults(rootSchema, config, maxRecursionDepth);
|
|
85
108
|
},
|
|
86
109
|
getDefaultAtPath(path) {
|
|
87
110
|
if (path.length === 0) {
|
|
88
|
-
return services.deriveDefault(rootSchema, true, maxRecursionDepth
|
|
111
|
+
return services.deriveDefault(rootSchema, true, maxRecursionDepth);
|
|
89
112
|
}
|
|
90
113
|
const [first] = services.getNestedSchemasAtPath(rootSchema, path, maxRecursionDepth);
|
|
91
114
|
if (first === void 0) return void 0;
|
|
92
115
|
const peeled = services.unwrapStructuralWrappers(first);
|
|
93
|
-
return services.deriveDefault(peeled, true, maxRecursionDepth
|
|
116
|
+
return services.deriveDefault(peeled, true, maxRecursionDepth);
|
|
94
117
|
},
|
|
95
118
|
getEmptyValueAtPath(path) {
|
|
96
119
|
if (path.length === 0) {
|
|
97
|
-
return services.deriveDefault(rootSchema, false, maxRecursionDepth
|
|
120
|
+
return services.deriveDefault(rootSchema, false, maxRecursionDepth);
|
|
98
121
|
}
|
|
99
122
|
const [first] = services.getNestedSchemasAtPath(rootSchema, path, maxRecursionDepth);
|
|
100
123
|
if (first === void 0) return void 0;
|
|
101
|
-
return services.deriveDefault(first, false, maxRecursionDepth
|
|
124
|
+
return services.deriveDefault(first, false, maxRecursionDepth);
|
|
102
125
|
},
|
|
103
126
|
arrayShapeAtPath(path) {
|
|
104
127
|
if (path.length === 0) return null;
|
|
@@ -139,25 +162,27 @@ function createAbstractSchema(rootSchema, intro, services, formKey, options) {
|
|
|
139
162
|
answer = void 0;
|
|
140
163
|
}
|
|
141
164
|
}
|
|
142
|
-
entryKeyKindCache
|
|
143
|
-
return answer;
|
|
165
|
+
return memoPut(entryKeyKindCache, cacheKey, answer);
|
|
144
166
|
},
|
|
145
167
|
getSchemasAtPath(path) {
|
|
146
168
|
const resolved = services.getNestedSchemasInSlimMode(rootSchema, path, maxRecursionDepth);
|
|
147
169
|
if (resolved.length === 0) return [];
|
|
148
|
-
return resolved.map((sub) => services.makeSubSchema(sub,
|
|
170
|
+
return resolved.map((sub) => services.makeSubSchema(sub, maxRecursionDepth));
|
|
149
171
|
},
|
|
150
172
|
getSlimPrimitiveTypesAtPath(path) {
|
|
151
|
-
if (path.length === 0) return
|
|
173
|
+
if (path.length === 0) return ROOT_KINDS;
|
|
174
|
+
const cacheKey = canonicalizePath(path).key;
|
|
175
|
+
const hit = slimKindsCache.get(cacheKey);
|
|
176
|
+
if (hit !== void 0) return hit;
|
|
152
177
|
const resolved = services.getNestedSchemasInSlimMode(rootSchema, path, maxRecursionDepth);
|
|
153
|
-
if (resolved.length === 0) return
|
|
178
|
+
if (resolved.length === 0) return memoPut(slimKindsCache, cacheKey, NO_KINDS);
|
|
154
179
|
const out = /* @__PURE__ */ new Set();
|
|
155
180
|
for (const candidate of resolved) {
|
|
156
181
|
for (const k of services.slimPrimitivesOf(candidate, maxRecursionDepth)) {
|
|
157
182
|
out.add(k);
|
|
158
183
|
}
|
|
159
184
|
}
|
|
160
|
-
return out;
|
|
185
|
+
return memoPut(slimKindsCache, cacheKey, out);
|
|
161
186
|
},
|
|
162
187
|
isLeafAtPath(path) {
|
|
163
188
|
const cacheKey = canonicalizePath(path).key;
|
|
@@ -166,8 +191,7 @@ function createAbstractSchema(rootSchema, intro, services, formKey, options) {
|
|
|
166
191
|
const opaque = path.length > 0 && this.isOpaqueLeafAtPath(path);
|
|
167
192
|
const prim = opaque ? void 0 : this.getSlimPrimitiveTypesAtPath(path);
|
|
168
193
|
const isLeaf = opaque || prim !== void 0 && prim.size > 0 && !prim.has("object") && !prim.has("array") && !prim.has("map") && !prim.has("set");
|
|
169
|
-
leafCache
|
|
170
|
-
return isLeaf;
|
|
194
|
+
return memoPut(leafCache, cacheKey, isLeaf);
|
|
171
195
|
},
|
|
172
196
|
isPreprocessOrCoerceLeaf(path) {
|
|
173
197
|
const cacheKey = canonicalizePath(path).key;
|
|
@@ -184,8 +208,7 @@ function createAbstractSchema(rootSchema, intro, services, formKey, options) {
|
|
|
184
208
|
}
|
|
185
209
|
}
|
|
186
210
|
}
|
|
187
|
-
preprocessOrCoerceCache
|
|
188
|
-
return hit;
|
|
211
|
+
return memoPut(preprocessOrCoerceCache, cacheKey, hit);
|
|
189
212
|
},
|
|
190
213
|
isOpaqueLeafAtPath(path) {
|
|
191
214
|
const cacheKey = canonicalizePath(path).key;
|
|
@@ -195,8 +218,7 @@ function createAbstractSchema(rootSchema, intro, services, formKey, options) {
|
|
|
195
218
|
const opaque = resolved.length > 0 && resolved.every(
|
|
196
219
|
(candidate) => isOpaqueKind(intro.kindOf(services.peelAllWrappers(candidate)))
|
|
197
220
|
);
|
|
198
|
-
opaqueLeafCache
|
|
199
|
-
return opaque;
|
|
221
|
+
return memoPut(opaqueLeafCache, cacheKey, opaque);
|
|
200
222
|
},
|
|
201
223
|
isRequiredAtPath(path) {
|
|
202
224
|
if (path.length === 0) return true;
|
|
@@ -212,9 +234,7 @@ function createAbstractSchema(rootSchema, intro, services, formKey, options) {
|
|
|
212
234
|
if (discriminatorCache.has(cacheKey)) {
|
|
213
235
|
return discriminatorCache.get(cacheKey);
|
|
214
236
|
}
|
|
215
|
-
|
|
216
|
-
discriminatorCache.set(cacheKey, result);
|
|
217
|
-
return result;
|
|
237
|
+
return memoPut(discriminatorCache, cacheKey, computeDiscriminator(path));
|
|
218
238
|
},
|
|
219
239
|
validateAtPath(data, path, validateOptions) {
|
|
220
240
|
const trySync = validateOptions?.sync === true;
|
|
@@ -226,11 +246,10 @@ function createAbstractSchema(rootSchema, intro, services, formKey, options) {
|
|
|
226
246
|
}
|
|
227
247
|
return runAsync();
|
|
228
248
|
function parseResultToResponse(result) {
|
|
229
|
-
return result.success ? { data: result.data, errors: void 0, success: true
|
|
249
|
+
return result.success ? { data: result.data, errors: void 0, success: true } : {
|
|
230
250
|
data: void 0,
|
|
231
251
|
errors: services.issuesToValidationErrors(result.issues),
|
|
232
|
-
success: false
|
|
233
|
-
formKey
|
|
252
|
+
success: false
|
|
234
253
|
};
|
|
235
254
|
}
|
|
236
255
|
function runSync() {
|
|
@@ -245,7 +264,7 @@ function createAbstractSchema(rootSchema, intro, services, formKey, options) {
|
|
|
245
264
|
if (response.success) return response;
|
|
246
265
|
aggregated.push(...response.errors);
|
|
247
266
|
}
|
|
248
|
-
return { data: void 0, errors: aggregated, success: false
|
|
267
|
+
return { data: void 0, errors: aggregated, success: false };
|
|
249
268
|
}
|
|
250
269
|
async function runAsync() {
|
|
251
270
|
if (path === void 0) {
|
|
@@ -271,7 +290,7 @@ function createAbstractSchema(rootSchema, intro, services, formKey, options) {
|
|
|
271
290
|
if (response.success) return response;
|
|
272
291
|
aggregated.push(...response.errors);
|
|
273
292
|
}
|
|
274
|
-
return { data: void 0, errors: aggregated, success: false
|
|
293
|
+
return { data: void 0, errors: aggregated, success: false };
|
|
275
294
|
}
|
|
276
295
|
function validatorThrewResponse(err, errPath) {
|
|
277
296
|
const message = err instanceof Error ? err.message : typeof err === "string" ? err : "Validator threw";
|
|
@@ -284,8 +303,7 @@ function createAbstractSchema(rootSchema, intro, services, formKey, options) {
|
|
|
284
303
|
code: AttaformErrorCode.ValidatorThrew
|
|
285
304
|
}
|
|
286
305
|
],
|
|
287
|
-
success: false
|
|
288
|
-
formKey
|
|
306
|
+
success: false
|
|
289
307
|
};
|
|
290
308
|
}
|
|
291
309
|
function pathNotFound(p) {
|
|
@@ -298,8 +316,7 @@ function createAbstractSchema(rootSchema, intro, services, formKey, options) {
|
|
|
298
316
|
code: AttaformErrorCode.PathNotFound
|
|
299
317
|
}
|
|
300
318
|
],
|
|
301
|
-
success: false
|
|
302
|
-
formKey
|
|
319
|
+
success: false
|
|
303
320
|
};
|
|
304
321
|
}
|
|
305
322
|
}
|
|
@@ -373,6 +390,8 @@ function walkPathSegments(schema, segments, intro, maxDepth, lazyDepth) {
|
|
|
373
390
|
case "optional":
|
|
374
391
|
case "nullable":
|
|
375
392
|
case "default":
|
|
393
|
+
case "nonoptional":
|
|
394
|
+
case "success":
|
|
376
395
|
case "readonly":
|
|
377
396
|
case "catch": {
|
|
378
397
|
const inner = intro.unwrapInner(schema);
|
|
@@ -406,8 +425,8 @@ function walkPathSegments(schema, segments, intro, maxDepth, lazyDepth) {
|
|
|
406
425
|
const rightResults = right === void 0 ? [] : walkPathSegments(right, segments, intro, maxDepth, lazyDepth);
|
|
407
426
|
return [...leftResults, ...rightResults];
|
|
408
427
|
}
|
|
409
|
-
// Leaves
|
|
410
|
-
// `unknown` / `custom`)
|
|
428
|
+
// Leaves, with nothing further to descend. An opaque leaf (`any` /
|
|
429
|
+
// `unknown` / `custom`) lands here too and `[]` is the truthful
|
|
411
430
|
// answer: the schema declares no sub-paths under them, so none are
|
|
412
431
|
// fabricated. `symbol` / `function` / `promise` hold a value
|
|
413
432
|
// without declaring anything inside it and land here for the same
|
|
@@ -446,6 +465,8 @@ function fixNode(schema, value, ctx, lazyDepth) {
|
|
|
446
465
|
return inner === void 0 ? value : fixNode(inner, value, ctx, lazyDepth);
|
|
447
466
|
}
|
|
448
467
|
case "default":
|
|
468
|
+
case "nonoptional":
|
|
469
|
+
case "success":
|
|
449
470
|
case "readonly":
|
|
450
471
|
case "catch": {
|
|
451
472
|
const inner = intro.unwrapInner(schema);
|
|
@@ -611,7 +632,7 @@ function hasDeclaredDefaultInChain(schema, intro) {
|
|
|
611
632
|
}
|
|
612
633
|
return false;
|
|
613
634
|
}
|
|
614
|
-
function deriveDefaultWalk(schema, useDefault, intro, maxDepth,
|
|
635
|
+
function deriveDefaultWalk(schema, useDefault, intro, maxDepth, lazyDepth = 0) {
|
|
615
636
|
if (useDefault) {
|
|
616
637
|
const peeled = peelEmbeddedDefault(schema, intro);
|
|
617
638
|
if (peeled !== NO_EMBEDDED_DEFAULT) return peeled;
|
|
@@ -623,11 +644,7 @@ function deriveDefaultWalk(schema, useDefault, intro, maxDepth, ctx, lazyDepth =
|
|
|
623
644
|
const shape = intro.getObjectShape(schema);
|
|
624
645
|
const out = {};
|
|
625
646
|
for (const [key, subSchema] of Object.entries(shape)) {
|
|
626
|
-
safeAssign(
|
|
627
|
-
out,
|
|
628
|
-
key,
|
|
629
|
-
deriveDefaultWalk(subSchema, useDefault, intro, maxDepth, ctx, lazyDepth)
|
|
630
|
-
);
|
|
647
|
+
safeAssign(out, key, deriveDefaultWalk(subSchema, useDefault, intro, maxDepth, lazyDepth));
|
|
631
648
|
}
|
|
632
649
|
return out;
|
|
633
650
|
}
|
|
@@ -639,19 +656,17 @@ function deriveDefaultWalk(schema, useDefault, intro, maxDepth, ctx, lazyDepth =
|
|
|
639
656
|
return {};
|
|
640
657
|
case "tuple": {
|
|
641
658
|
const items = intro.getTupleItems(schema);
|
|
642
|
-
return items.map(
|
|
643
|
-
(item) => deriveDefaultWalk(item, useDefault, intro, maxDepth, ctx, lazyDepth)
|
|
644
|
-
);
|
|
659
|
+
return items.map((item) => deriveDefaultWalk(item, useDefault, intro, maxDepth, lazyDepth));
|
|
645
660
|
}
|
|
646
661
|
case "union": {
|
|
647
662
|
const options = intro.getUnionOptions(schema);
|
|
648
663
|
const first = options[0];
|
|
649
|
-
return first === void 0 ? void 0 : deriveDefaultWalk(first, useDefault, intro, maxDepth,
|
|
664
|
+
return first === void 0 ? void 0 : deriveDefaultWalk(first, useDefault, intro, maxDepth, lazyDepth);
|
|
650
665
|
}
|
|
651
666
|
case "discriminated-union": {
|
|
652
667
|
const options = intro.getDiscriminatedOptions(schema);
|
|
653
668
|
const first = options[0];
|
|
654
|
-
return first === void 0 ? void 0 : deriveDefaultWalk(first, useDefault, intro, maxDepth,
|
|
669
|
+
return first === void 0 ? void 0 : deriveDefaultWalk(first, useDefault, intro, maxDepth, lazyDepth);
|
|
655
670
|
}
|
|
656
671
|
case "optional":
|
|
657
672
|
return void 0;
|
|
@@ -660,39 +675,41 @@ function deriveDefaultWalk(schema, useDefault, intro, maxDepth, ctx, lazyDepth =
|
|
|
660
675
|
case "default": {
|
|
661
676
|
if (useDefault) return intro.getDefaultValue(schema);
|
|
662
677
|
const inner = intro.unwrapInner(schema);
|
|
663
|
-
return inner === void 0 ? void 0 : deriveDefaultWalk(inner, useDefault, intro, maxDepth,
|
|
678
|
+
return inner === void 0 ? void 0 : deriveDefaultWalk(inner, useDefault, intro, maxDepth, lazyDepth);
|
|
664
679
|
}
|
|
680
|
+
case "nonoptional":
|
|
681
|
+
case "success":
|
|
665
682
|
case "readonly":
|
|
666
683
|
case "branded": {
|
|
667
684
|
const inner = kind === "branded" ? intro.unwrapBranded(schema) : intro.unwrapInner(schema);
|
|
668
|
-
return inner === void 0 ? void 0 : deriveDefaultWalk(inner, useDefault, intro, maxDepth,
|
|
685
|
+
return inner === void 0 ? void 0 : deriveDefaultWalk(inner, useDefault, intro, maxDepth, lazyDepth);
|
|
669
686
|
}
|
|
670
687
|
case "effects": {
|
|
671
688
|
const inner = intro.unwrapEffectsSource(schema);
|
|
672
689
|
if (intro.isPreprocessNode(schema)) {
|
|
673
690
|
if (inner !== void 0 && hasDeclaredDefaultInChain(inner, intro)) {
|
|
674
|
-
return deriveDefaultWalk(inner, useDefault, intro, maxDepth,
|
|
691
|
+
return deriveDefaultWalk(inner, useDefault, intro, maxDepth, lazyDepth);
|
|
675
692
|
}
|
|
676
693
|
return void 0;
|
|
677
694
|
}
|
|
678
|
-
return inner === void 0 ? void 0 : deriveDefaultWalk(inner, useDefault, intro, maxDepth,
|
|
695
|
+
return inner === void 0 ? void 0 : deriveDefaultWalk(inner, useDefault, intro, maxDepth, lazyDepth);
|
|
679
696
|
}
|
|
680
697
|
case "pipeline": {
|
|
681
698
|
const inner = intro.unwrapPipeIn(schema);
|
|
682
|
-
return inner === void 0 ? void 0 : deriveDefaultWalk(inner, useDefault, intro, maxDepth,
|
|
699
|
+
return inner === void 0 ? void 0 : deriveDefaultWalk(inner, useDefault, intro, maxDepth, lazyDepth);
|
|
683
700
|
}
|
|
684
701
|
case "pipe": {
|
|
685
702
|
const inn = intro.unwrapPipeIn(schema);
|
|
686
703
|
if (inn !== void 0 && intro.kindOf(inn) === "transform") {
|
|
687
704
|
const out2 = intro.unwrapPipeOut(schema);
|
|
688
705
|
if (out2 !== void 0 && hasDeclaredDefaultInChain(out2, intro)) {
|
|
689
|
-
return deriveDefaultWalk(out2, useDefault, intro, maxDepth,
|
|
706
|
+
return deriveDefaultWalk(out2, useDefault, intro, maxDepth, lazyDepth);
|
|
690
707
|
}
|
|
691
708
|
return void 0;
|
|
692
709
|
}
|
|
693
710
|
const out = intro.unwrapPipeOut(schema);
|
|
694
711
|
const real = inn !== void 0 && intro.kindOf(inn) !== "transform" ? inn : out !== void 0 && intro.kindOf(out) !== "transform" ? out : inn ?? out;
|
|
695
|
-
return real === void 0 ? void 0 : deriveDefaultWalk(real, useDefault, intro, maxDepth,
|
|
712
|
+
return real === void 0 ? void 0 : deriveDefaultWalk(real, useDefault, intro, maxDepth, lazyDepth);
|
|
696
713
|
}
|
|
697
714
|
case "string":
|
|
698
715
|
return "";
|
|
@@ -736,19 +753,19 @@ function deriveDefaultWalk(schema, useDefault, intro, maxDepth, ctx, lazyDepth =
|
|
|
736
753
|
} catch {
|
|
737
754
|
return void 0;
|
|
738
755
|
}
|
|
739
|
-
return inner === void 0 ? void 0 : deriveDefaultWalk(inner, useDefault, intro, maxDepth,
|
|
756
|
+
return inner === void 0 ? void 0 : deriveDefaultWalk(inner, useDefault, intro, maxDepth, lazyDepth + 1);
|
|
740
757
|
}
|
|
741
758
|
case "intersection": {
|
|
742
759
|
const left = intro.getIntersectionLeft(schema);
|
|
743
760
|
const right = intro.getIntersectionRight(schema);
|
|
744
|
-
const l = left === void 0 ? void 0 : deriveDefaultWalk(left, useDefault, intro, maxDepth,
|
|
745
|
-
const r = right === void 0 ? void 0 : deriveDefaultWalk(right, useDefault, intro, maxDepth,
|
|
761
|
+
const l = left === void 0 ? void 0 : deriveDefaultWalk(left, useDefault, intro, maxDepth, lazyDepth);
|
|
762
|
+
const r = right === void 0 ? void 0 : deriveDefaultWalk(right, useDefault, intro, maxDepth, lazyDepth);
|
|
746
763
|
return mergeDeep(l, r);
|
|
747
764
|
}
|
|
748
765
|
case "catch": {
|
|
749
766
|
if (useDefault) return intro.getCatchDefault(schema);
|
|
750
767
|
const inner = intro.unwrapInner(schema);
|
|
751
|
-
return inner === void 0 ? void 0 : deriveDefaultWalk(inner, useDefault, intro, maxDepth,
|
|
768
|
+
return inner === void 0 ? void 0 : deriveDefaultWalk(inner, useDefault, intro, maxDepth, lazyDepth);
|
|
752
769
|
}
|
|
753
770
|
case "file":
|
|
754
771
|
return null;
|
|
@@ -767,10 +784,15 @@ function deriveDefaultWalk(schema, useDefault, intro, maxDepth, ctx, lazyDepth =
|
|
|
767
784
|
case "transform":
|
|
768
785
|
return void 0;
|
|
769
786
|
default:
|
|
770
|
-
return
|
|
787
|
+
return void 0;
|
|
771
788
|
}
|
|
772
789
|
}
|
|
773
790
|
|
|
791
|
+
function crossCopyState(key, create) {
|
|
792
|
+
const carrier = globalThis;
|
|
793
|
+
return carrier[key] ?? (carrier[key] = create());
|
|
794
|
+
}
|
|
795
|
+
|
|
774
796
|
const state = crossCopyState(/* @__PURE__ */ Symbol.for("attaform:field-meta-state"), () => ({
|
|
775
797
|
store: /* @__PURE__ */ new WeakMap(),
|
|
776
798
|
lists: /* @__PURE__ */ new WeakMap(),
|
|
@@ -929,10 +951,20 @@ function slimPrimitivesWalk(schema, intro, maxDepth, lazyDepth = 0) {
|
|
|
929
951
|
}
|
|
930
952
|
case "default":
|
|
931
953
|
case "readonly":
|
|
954
|
+
case "success":
|
|
932
955
|
case "catch": {
|
|
933
956
|
const inner = intro.unwrapInner(schema);
|
|
934
957
|
return inner === void 0 ? PERMISSIVE_SLIM_KINDS : slimPrimitivesWalk(inner, intro, maxDepth, lazyDepth);
|
|
935
958
|
}
|
|
959
|
+
case "nonoptional": {
|
|
960
|
+
const inner = intro.unwrapInner(schema);
|
|
961
|
+
if (inner === void 0) return PERMISSIVE_SLIM_KINDS;
|
|
962
|
+
const innerSet = slimPrimitivesWalk(inner, intro, maxDepth, lazyDepth);
|
|
963
|
+
if (!innerSet.has("undefined")) return innerSet;
|
|
964
|
+
const out = new Set(innerSet);
|
|
965
|
+
out.delete("undefined");
|
|
966
|
+
return out;
|
|
967
|
+
}
|
|
936
968
|
case "branded": {
|
|
937
969
|
const inner = intro.unwrapBranded(schema);
|
|
938
970
|
return inner === void 0 ? PERMISSIVE_SLIM_KINDS : slimPrimitivesWalk(inner, intro, maxDepth, lazyDepth);
|
|
@@ -985,7 +1017,7 @@ function slimPrimitivesWalk(schema, intro, maxDepth, lazyDepth = 0) {
|
|
|
985
1017
|
case "unknown":
|
|
986
1018
|
case "custom":
|
|
987
1019
|
return PERMISSIVE_SLIM_KINDS;
|
|
988
|
-
// A kind this walker has no case for
|
|
1020
|
+
// A kind this walker has no case for, in practice one a newer
|
|
989
1021
|
// Zod introduced. Be permissive rather than reject: the adapter
|
|
990
1022
|
// carries the value opaquely and the schema's own parse is what
|
|
991
1023
|
// decides whether it was legal.
|
|
@@ -1167,4 +1199,4 @@ function walkForMeta(schema, path, map, counters, lastPathPerSchema, inProgress,
|
|
|
1167
1199
|
}
|
|
1168
1200
|
}
|
|
1169
1201
|
|
|
1170
|
-
export {
|
|
1202
|
+
export { createSharedSchemaStore as a, buildFieldMetaPathMap as b, createAbstractSchema as c, deriveDefaultWalk as d, getFieldMetaListForSchema as e, fixStructuralDefaults as f, getFieldMetaForSchema as g, installingFieldMetaStore as i, mergeDeep as m, slimPrimitivesWalk as s, walkPathSegments as w };
|