svelte-specma 1.1.6 → 1.1.7
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/svelte-specma.modern.js +48 -13
- package/dist/svelte-specma.modern.js.map +1 -1
- package/dist/svelte-specma.umd.js +74 -39
- package/dist/svelte-specma.umd.js.map +1 -1
- package/package.json +1 -1
- package/CHANGELOG.md +0 -202
|
@@ -309,6 +309,23 @@ function configure(specmaFns) {
|
|
|
309
309
|
specma = specmaFns;
|
|
310
310
|
}
|
|
311
311
|
|
|
312
|
+
/* Limited version of `writable` store that updates only
|
|
313
|
+
* if the new set value is different by value (deep equality) */
|
|
314
|
+
|
|
315
|
+
function wriableByValue(initialValue, ...rest) {
|
|
316
|
+
let _value = initialValue;
|
|
317
|
+
const store = writable(initialValue, ...rest);
|
|
318
|
+
return {
|
|
319
|
+
set(newValue) {
|
|
320
|
+
if (fastEquals(newValue, _value)) return;
|
|
321
|
+
_value = newValue;
|
|
322
|
+
store.set(_value);
|
|
323
|
+
},
|
|
324
|
+
|
|
325
|
+
subscribe: store.subscribe
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
|
|
312
329
|
const alwaysTrue = () => true;
|
|
313
330
|
|
|
314
331
|
const isMissing = x => [undefined, null, ""].includes(x);
|
|
@@ -369,7 +386,7 @@ function predSpecable(initialValue, {
|
|
|
369
386
|
let _initialValue = initialValue;
|
|
370
387
|
const active = writable(false);
|
|
371
388
|
const submitting = writable(false);
|
|
372
|
-
const value =
|
|
389
|
+
const value = wriableByValue(_initialValue);
|
|
373
390
|
const store = derived([active, value, context, submitting], ([$active, $value, $context, $submitting], set) => {
|
|
374
391
|
currPromise = undefined;
|
|
375
392
|
|
|
@@ -558,14 +575,13 @@ function collSpecable(initialValue, {
|
|
|
558
575
|
const childrenValue = fromEntries($childrenValues, collType);
|
|
559
576
|
const value = isSpread ? childrenValue : merge(collValue, childrenValue);
|
|
560
577
|
isUndef = value === undefined;
|
|
561
|
-
ownSpecable.set(value);
|
|
562
578
|
return value;
|
|
563
579
|
});
|
|
564
580
|
|
|
565
|
-
const aggregateStatusStores = () => [
|
|
581
|
+
const aggregateStatusStores = () => [submitting, ownSpecable, ...values(childrenStores)];
|
|
566
582
|
|
|
567
583
|
const status = flexDerived(aggregateStatusStores(), $statusStores => {
|
|
568
|
-
const [
|
|
584
|
+
const [$submitting, $ownSpecable, ...$children] = $statusStores;
|
|
569
585
|
const combined = isUndef ? $ownSpecable : [$ownSpecable, ...$children].reduce(combineChildren);
|
|
570
586
|
if (combined.active !== false) ownSpecable.activate();
|
|
571
587
|
const {
|
|
@@ -609,15 +625,19 @@ function collSpecable(initialValue, {
|
|
|
609
625
|
setChildrenStores(updatedStores);
|
|
610
626
|
}
|
|
611
627
|
|
|
612
|
-
function setValue(coll,
|
|
613
|
-
|
|
628
|
+
function setValue(coll, {
|
|
629
|
+
partial = false,
|
|
630
|
+
reset = false
|
|
631
|
+
} = {}) {
|
|
632
|
+
const setMethod = reset ? "reset" : "set";
|
|
633
|
+
collValue = !reset && partial && !isSpread ? merge(collValue, coll) : coll;
|
|
614
634
|
isUndef = collValue === undefined;
|
|
615
|
-
ownSpecable
|
|
635
|
+
ownSpecable[setMethod](collValue);
|
|
616
636
|
const childrenEntries = entries(childrenStores);
|
|
617
637
|
childrenEntries.forEach(([key, store]) => {
|
|
618
638
|
const newValue = get(key, coll);
|
|
619
639
|
if (partial && newValue === undefined) return;
|
|
620
|
-
store
|
|
640
|
+
store[setMethod](newValue, partial);
|
|
621
641
|
});
|
|
622
642
|
if (!isSpread) return;
|
|
623
643
|
/* If collection allows spread children... */
|
|
@@ -625,8 +645,12 @@ function collSpecable(initialValue, {
|
|
|
625
645
|
/* Add `coll` entries that are not yet part of the children stores. */
|
|
626
646
|
|
|
627
647
|
const childrenKeys = keys(childrenStores);
|
|
628
|
-
const
|
|
629
|
-
|
|
648
|
+
const missingChildrenEntries = entries(coll).filter(([key]) => !childrenKeys.includes(key));
|
|
649
|
+
|
|
650
|
+
if (missingChildrenEntries.length > 0) {
|
|
651
|
+
addChildren(fromEntries(missingChildrenEntries, collType));
|
|
652
|
+
}
|
|
653
|
+
|
|
630
654
|
if (partial) return;
|
|
631
655
|
/* If update is not partial, remove children stores that do not store
|
|
632
656
|
* a collection value anymore (garbage collection). */
|
|
@@ -708,13 +732,17 @@ function collSpecable(initialValue, {
|
|
|
708
732
|
},
|
|
709
733
|
|
|
710
734
|
reset(newInitialValue = initialValue) {
|
|
711
|
-
setValue(newInitialValue,
|
|
735
|
+
setValue(newInitialValue, {
|
|
736
|
+
reset: true
|
|
737
|
+
});
|
|
712
738
|
activate(false);
|
|
713
739
|
return this;
|
|
714
740
|
},
|
|
715
741
|
|
|
716
742
|
set(coll, partial = false, shouldActivate = false) {
|
|
717
|
-
setValue(coll,
|
|
743
|
+
setValue(coll, {
|
|
744
|
+
partial
|
|
745
|
+
});
|
|
718
746
|
if (shouldActivate) activate();
|
|
719
747
|
return this;
|
|
720
748
|
},
|
|
@@ -727,7 +755,14 @@ function collSpecable(initialValue, {
|
|
|
727
755
|
subscribe: children.subscribe
|
|
728
756
|
},
|
|
729
757
|
submit,
|
|
730
|
-
subscribe:
|
|
758
|
+
subscribe: fn => {
|
|
759
|
+
const unsub1 = derivedValue.subscribe(value => ownSpecable.set(value));
|
|
760
|
+
const unsub2 = status.subscribe(fn);
|
|
761
|
+
return () => {
|
|
762
|
+
unsub1();
|
|
763
|
+
unsub2();
|
|
764
|
+
};
|
|
765
|
+
}
|
|
731
766
|
};
|
|
732
767
|
}
|
|
733
768
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svelte-specma.modern.js","sources":["../src/flexDerived.js","../src/util.js","../src/collDerived.js","../src/constants.js","../src/configure.js","../src/predSpecable.js","../src/collSpecable.js","../src/register.js","../src/specable.js"],"sourcesContent":["import { readable, writable } from \"svelte/store\";\n\nconst identity = (x) => x;\nconst noop = () => {};\n\nfunction flexDerived(initialStores = [], fn = identity, initialValue) {\n /* Used for ordering values */\n let _stores = initialStores;\n /* Store of stores. When last subscriber unsubscribes,\n * will stop all stores subs. */\n const $stores = writable(initialStores);\n\n /* Callback function can use a second argument, a `publish` function to set result asynchronously.\n * If not used, the return value of the function is the actual result to publish.\n * Otherwise, the return value might be a function to call before each execution\n * and when store is unsubscribed. */\n const auto = fn.length < 2;\n\n /* Use a readable store to manage subscribers. */\n const mainStore = readable(initialValue, (publish) => {\n let initialized = false;\n\n let cleanup = noop;\n let pending = 0;\n let unsubs = new Map();\n let values = new Map();\n\n /* Unsubscribe saved stores not included in a new list of stores\n * and create a new Map of unsub by store, reusing old ones when they exist. */\n function updateUnsubs(stores = []) {\n stopUnusedSubs(stores);\n unsubs = new Map(stores.map((store) => [store, unsubs.get(store)]));\n }\n\n function stopUnusedSubs(usedStores = []) {\n unsubs.forEach((unsub, store) => {\n if (!usedStores.includes(store) && unsub) unsub();\n });\n }\n\n function stopSubscriptions() {\n unsubs.forEach((unsub) => unsub && unsub());\n }\n\n /* Create a new map of values by store, reusing old ones when they exist. */\n function updateValues(stores = []) {\n values = new Map(stores.map((store) => [store, values.get(store)]));\n }\n\n /* Recompute and publish the combined result on values,\n * using `_stores` to ensure values order consistency. */\n function sync() {\n if (pending) return;\n cleanup();\n const vals = _stores.reduce(\n (acc, store) => (values.has(store) ? [...acc, values.get(store)] : acc),\n []\n );\n const result = fn(vals, publish);\n\n if (auto) {\n publish(result);\n } else {\n cleanup = typeof result === \"function\" ? result : noop;\n }\n }\n\n const unsubscribe = $stores.subscribe((stores) => {\n updateUnsubs(stores);\n updateValues(stores);\n\n /* Subscribe to each store if not alreay done.\n * When a any store value changes,\n * combined result will be updated and published. */\n _stores = [];\n stores.forEach((store, i) => {\n _stores[i] = store;\n\n if (!unsubs.get(store)) {\n unsubs.set(\n store,\n store.subscribe(\n (value) => {\n values.set(store, value);\n pending &= ~(1 << i);\n if (initialized) sync();\n },\n () => {\n pending |= 1 << i;\n }\n )\n );\n }\n });\n if (initialized) sync();\n });\n\n initialized = true;\n sync();\n\n return function stop() {\n unsubscribe();\n stopSubscriptions();\n cleanup();\n };\n });\n\n /* Exclude one or mode stores from the list. */\n function exclude(...stores) {\n $stores.update((prev) => prev.filter((store) => !stores.includes(store)));\n }\n\n /* Include one or more stores into the list. */\n function include(...stores) {\n $stores.update((prev) => [...prev, ...stores]);\n }\n\n return {\n exclude,\n include,\n set: $stores.set,\n stores: $stores,\n subscribe: mainStore.subscribe,\n update: $stores.update,\n };\n}\n\nexport default flexDerived;\n","import fastEquals from \"fast-deep-equal\";\n\nexport const identity = (x) => x;\nexport const isColl = (x) => [\"array\", \"map\", \"object\"].includes(typeOf(x));\nexport const isFunc = (x) => typeof x === \"function\";\nexport const isStore = (x) => x && x.subscribe && isFunc(x.subscribe);\n\nexport const typeOf = (obj) =>\n ({}.toString.call(obj).split(\" \")[1].slice(0, -1).toLowerCase());\n\nexport function entries(coll) {\n const fn = {\n array: () => coll.map((v, i) => [i, v]),\n map: () => [...coll.entries()],\n object: () => Object.entries(coll),\n }[typeOf(coll)];\n\n return fn ? fn(coll) : [];\n}\n\nexport function fromEntries(entries, toType) {\n const fn = {\n array: () => entries.map(([, val]) => val),\n map: () => new Map(entries),\n object: () => Object.fromEntries(entries),\n }[toType];\n return fn ? fn() : fromEntries(entries, \"map\");\n}\n\nexport function values(coll) {\n const fn = {\n array: () => [...coll],\n map: () => [...coll.values()],\n object: () => Object.values(coll),\n }[typeOf(coll)];\n\n return fn ? fn(coll) : [];\n}\n\nexport function keys(coll) {\n const fn = {\n array: () => coll.map((v, i) => i),\n map: () => [...coll.keys()],\n object: () => Object.keys(coll),\n }[typeOf(coll)];\n\n return fn ? fn(coll) : [];\n}\n\n/* Merge multiple collections of identical type with right to left arguments precedence. */\nexport function merge(...args) {\n const colls = args.filter(isColl);\n const type = typeOf(colls[0]);\n if (!colls.every((coll) => typeOf(coll) === type)) {\n const collTypes = colls.map(typeOf).join(\", \");\n throw new TypeError(\n `Collections must be of same type. Received '${collTypes}'.`\n );\n }\n\n const fn = {\n array: () =>\n colls.reduce((acc, coll) => {\n if (coll.length >= acc.length) return coll;\n return [...coll, ...acc.slice(coll.length)];\n }, []),\n map: () => new Map(colls.map((coll) => coll.entries())),\n object: () => Object.assign({}, ...colls),\n }[type];\n\n if (!fn) throw new Error(`'merge' not implemented yet for ${type}`);\n\n return fn();\n}\n\nexport function genRandomId() {\n return (Math.random() * 1e9).toFixed(0);\n}\n\nexport function get(key, coll) {\n const fn = {\n array: () => coll[key],\n map: () => coll.get(key),\n object: () => coll[key],\n }[typeOf(coll)];\n\n return fn ? fn(key, coll) : undefined;\n}\n\nexport function getPath(path = [], value) {\n return path.reduce((parent, key) => get(key, parent), value);\n}\n\nexport function countPathAncestors(str = \"\") {\n return (str.match(/\\.\\.\\/|\\.\\.$/g) || []).length;\n}\n\nexport function keepForwardPath(str = \"\") {\n return str.split(\"/\").reduce((acc, node) => {\n if (!node || node.startsWith(\".\")) return acc;\n const index = parseInt(node, 10);\n return [...acc, isNaN(index) ? node : index];\n }, []);\n}\n\nexport function equals(a, b, eqBy = defaultEqBy) {\n const [_a, _b] = [a, b].map(eqBy);\n return _a === _b || fastEquals(_a, _b);\n}\n\nfunction defaultEqBy(x) {\n if (x instanceof Date) return x.valueOf();\n if (isColl(x)) return removeUndefined(x);\n return x;\n}\n\nfunction removeUndefined(x) {\n if (!isColl(x)) return x;\n return fromEntries(\n entries(x).reduce(\n (acc, [key, val]) =>\n val === undefined ? acc : [...acc, [key, removeUndefined(val)]],\n []\n ),\n typeOf(x)\n );\n}\n","import flexDerived from \"./flexDerived\";\nimport { entries, fromEntries, identity, typeOf } from \"./util\";\n\nfunction deriveState(coll) {\n const storesEntries = entries(coll);\n return {\n coll,\n collType: typeOf(coll),\n storesEntries,\n keys: storesEntries.map(([key]) => key),\n stores: storesEntries.map(([, store]) => store),\n };\n}\n\nfunction collDerived(initialColl, fn = identity, initialValue) {\n let state = deriveState(initialColl);\n\n /* The callback passed to `flexDerived` can have arity 1 or 2.\n * The arity should match the one of the provided function.\n * When using arity 2, a set function is provided so that\n * result can be used asynchronously */\n const auto = fn.length < 2;\n const index$stores = ($stores) =>\n fromEntries(\n $stores.map((store, idx) => [state.keys[idx], store]),\n state.collType\n );\n\n const values = flexDerived(\n state.stores,\n auto\n ? ($stores) => fn(index$stores($stores))\n : ($stores, _set) => fn(index$stores($stores), _set),\n initialValue\n );\n\n function set(newColl) {\n state = deriveState(newColl);\n values.set(state.stores);\n }\n\n return {\n set,\n subscribe: values.subscribe,\n };\n}\n\nexport default collDerived;\n","export const ALWAYS_VALID = { valid: true };\n","const REQUIRED_SPECMA_FNS = [\n \"and\",\n \"getMessage\",\n \"getPred\",\n \"getSpread\",\n \"isOpt\",\n \"validatePred\",\n];\n\nconst CONFIG_ERROR_MSG =\n \"SvelteSpecma must be configured with a valid Specma version.\";\n\nexport let specma = undefined;\n\nexport function ensureConfigured() {\n if (!specma) {\n throw new TypeError(CONFIG_ERROR_MSG);\n }\n}\n\nexport default function configure(specmaFns) {\n if (\n !specmaFns ||\n REQUIRED_SPECMA_FNS.some((key) => typeof specmaFns[key] !== \"function\")\n ) {\n throw new TypeError(CONFIG_ERROR_MSG);\n }\n specma = specmaFns;\n}\n","import { tick } from \"svelte\";\nimport { derived, get as getStoreValue, writable } from \"svelte/store\";\nimport { ALWAYS_VALID } from \"./constants\";\nimport { countPathAncestors, equals, getPath, keepForwardPath } from \"./util\";\nimport collDerived from \"./collDerived\";\nimport { specma, ensureConfigured } from \"./configure\";\n\nconst alwaysTrue = () => true;\nconst isMissing = (x) => [undefined, null, \"\"].includes(x);\nconst defaultChangePred = (a, b) => !equals(a, b);\n\nconst reqSpec = (x) => !isMissing(x) || specma.getMessage(\"isRequired\");\n\nexport default function predSpecable(\n initialValue,\n { changePred = defaultChangePred, id, required, spec, onSubmit } = {},\n _extra = {}\n) {\n ensureConfigured();\n const { and, getPred, validatePred } = specma;\n\n const { getAncestor } = _extra;\n const pred = getPred(spec) || alwaysTrue;\n const isRequired = !!required;\n const ownSpec = isRequired ? and(reqSpec, pred) : pred;\n\n const contextStores = {};\n const context = collDerived(contextStores);\n\n function addContext(relPath) {\n /* If `getFrom` has already been called once,\n * context store is already tracking the value. */\n if (contextStores[relPath]) return;\n\n const ancestor = getAncestor(countPathAncestors(relPath));\n if (!ancestor) return;\n\n const pathSinceAncestor = keepForwardPath(relPath);\n\n contextStores[relPath] = derived(ancestor, ($ancestor, set) => {\n const ancestorValue = $ancestor.value;\n if (!ancestorValue) return;\n\n const curr = contextStores[relPath].value;\n const next = getPath(pathSinceAncestor, ancestorValue);\n if (!equals(curr, next)) {\n contextStores[relPath].value = next;\n set(next);\n }\n });\n context.set(contextStores);\n\n /* If context has just been created, it won't be accessible\n * in the derived store at first.\n * In that case, return the static store value. */\n return getPath(pathSinceAncestor, getStoreValue(ancestor).value);\n }\n\n let currPromise;\n let _initialValue = initialValue;\n\n const active = writable(false);\n const submitting = writable(false);\n const value = writable(_initialValue);\n\n const store = derived(\n [active, value, context, submitting],\n ([$active, $value, $context, $submitting], set) => {\n currPromise = undefined;\n\n function getFrom(relPath) {\n if (!contextStores[relPath]) {\n return addContext(relPath);\n }\n return $context[relPath];\n }\n\n const shouldValidate = $active && ($value !== undefined || required);\n\n const result = enhanceResult(\n shouldValidate ? validatePred(ownSpec, $value, getFrom) : ALWAYS_VALID\n );\n const baseArgs = {\n active: $active,\n changePred,\n initialValue: _initialValue,\n id,\n result,\n submitting: $submitting,\n value: $value,\n };\n\n currPromise = result.promise;\n\n set(interpretState(baseArgs));\n\n if (result.valid === null) {\n result.promise.then((resolvedResult) => {\n /* Promise might be outdated */\n if (result.promise !== currPromise) return;\n\n set(interpretState({ ...baseArgs, result: resolvedResult }));\n });\n }\n }\n );\n\n async function activate(bool = true) {\n active.set(bool);\n await tick();\n const res = await currPromise;\n return res.valid;\n }\n\n async function submit() {\n if (!onSubmit) return;\n submitting.set(true);\n const valid = await activate();\n if (valid) {\n const currValue = getStoreValue(value);\n await onSubmit(currValue);\n }\n submitting.set(false);\n }\n\n return {\n id,\n isRequired,\n spec: pred,\n\n activate,\n\n reset(newValue = _initialValue) {\n _initialValue = newValue;\n this.activate(false);\n this.set(newValue);\n },\n\n set: (newValue, shouldActivate = false) => {\n value.set(newValue);\n if (shouldActivate) activate();\n },\n\n submit,\n\n subscribe: store.subscribe,\n };\n}\n\nfunction enhanceResult(res) {\n return {\n ...res,\n promise: res.promise\n ? res.promise.then((promised) => enhanceResult(promised))\n : Promise.resolve(res),\n };\n}\n\nfunction interpretState({\n active,\n changePred,\n id,\n initialValue,\n result,\n submitting,\n value,\n}) {\n const changed = changePred(value, initialValue);\n return {\n active,\n changed,\n error: result.valid === false && result.reason,\n id,\n initialValue,\n promise: result.promise || Promise.resolve(result),\n submitting,\n valid: !!result.valid,\n validating: result.valid === null,\n value: changed ? value : initialValue,\n };\n}\n","import { get as getStoreValue, writable } from \"svelte/store\";\nimport collDerived from \"./collDerived\";\nimport flexDerived from \"./flexDerived\";\nimport predSpecable from \"./predSpecable\";\nimport {\n entries,\n fromEntries,\n genRandomId,\n get,\n isColl,\n keys,\n merge,\n typeOf,\n values,\n} from \"./util\";\nimport { specma, ensureConfigured } from \"./configure\";\n\nexport default function collSpecable(\n initialValue,\n { changePred, fields, getId, id, required, spec, onSubmit } = {},\n _extra = {}\n) {\n ensureConfigured();\n const { getPred, getSpread, isOpt } = specma;\n\n let collValue = initialValue; // For static properties\n let isUndef = collValue === undefined;\n\n const { getAncestor } = _extra;\n const collDefiner = [fields, spec, initialValue].find(isColl);\n const collType = typeOf(collDefiner);\n const isRequired = required && !isOpt(required);\n const spreadGetId = getSpread(getId);\n const spreadSpec = getSpread(spec);\n const spreadFields = getSpread(fields);\n const spreadRequired = getSpread(required);\n const isSpread =\n spreadSpec ||\n spreadFields ||\n spreadRequired ||\n spreadGetId ||\n collType === \"array\";\n\n const valueKeys = isSpread ? keys(initialValue) : [];\n const allKeys = new Set(\n fields\n ? [...keys(fields), ...valueKeys]\n : [...keys(spec), ...keys(required), ...valueKeys]\n );\n\n const ownGetId = getPred(getId);\n const idGen = (v, k) => {\n if (ownGetId) return ownGetId(v, k);\n if (collType === \"array\") return genRandomId();\n return k;\n };\n\n const ownSpecable = predSpecable(\n initialValue,\n {\n changePred: getPred(changePred),\n id,\n required: isRequired,\n spec,\n },\n _extra\n );\n\n const createChildEntry = (key, val) => {\n const subChangePred = get(key, changePred) || getSpread(changePred);\n const subVal = val;\n const subSpec = get(key, spec) || spreadSpec;\n const subGetId = get(key, getId) || spreadGetId;\n const subId = idGen(subVal, key);\n const subFields = get(key, fields) || spreadFields;\n const subRequired = get(key, required) || spreadRequired;\n\n const subStore = _extra.specable(\n subVal,\n {\n spec: subSpec,\n changePred: subChangePred,\n id: subId,\n getId: subGetId,\n fields: subFields,\n required: subRequired,\n },\n {\n getAncestor: (n) =>\n n <= 1 || !getAncestor ? ownSpecable : getAncestor(n - 1),\n }\n );\n\n return [key, { ...subStore, id: subId }];\n };\n\n let childrenStores = fromEntries(\n [...allKeys].map((key) => createChildEntry(key, get(key, initialValue))),\n collType\n );\n const children = writable(childrenStores);\n const submitting = writable(false);\n\n const derivedValue = collDerived(childrenStores, ($childrenStores) => {\n if (isUndef) return undefined;\n\n const $childrenEntries = entries($childrenStores);\n const $childrenValues = $childrenEntries.map(([key, state]) => [\n key,\n state.value,\n ]);\n const childrenValue = fromEntries($childrenValues, collType);\n const value = isSpread ? childrenValue : merge(collValue, childrenValue);\n isUndef = value === undefined;\n ownSpecable.set(value);\n return value;\n });\n\n const aggregateStatusStores = () => [\n derivedValue,\n submitting,\n ownSpecable,\n ...values(childrenStores),\n ];\n\n const status = flexDerived(aggregateStatusStores(), ($statusStores) => {\n const [, $submitting, $ownSpecable, ...$children] = $statusStores;\n\n const combined = isUndef\n ? $ownSpecable\n : [$ownSpecable, ...$children].reduce(combineChildren);\n\n if (combined.active !== false) ownSpecable.activate();\n\n const { value, error } = $ownSpecable;\n\n const details = Object.fromEntries([\n [\"_\", $ownSpecable],\n ...(isUndef ? [] : $children.map((child) => [child.id, child])),\n ]);\n\n const errors = detailsToErrors(details, id);\n const collErrors = errors.filter(({ isColl }) => isColl);\n\n return {\n ...combined,\n id,\n initialValue: $ownSpecable.initialValue,\n value,\n error,\n errors,\n collErrors,\n details,\n submitting: $submitting,\n };\n });\n\n function setChildrenStores(newChildrenStores) {\n childrenStores = newChildrenStores;\n children.set(newChildrenStores);\n derivedValue.set(newChildrenStores);\n status.set(aggregateStatusStores());\n }\n\n function addChildren(coll) {\n if (!coll) return;\n\n const newEntries = keys(coll).map((key) =>\n createChildEntry(key, get(key, coll))\n );\n const updatedStores = fromEntries(\n [...entries(childrenStores), ...newEntries],\n collType\n );\n setChildrenStores(updatedStores);\n }\n\n function removeChildrenById(idsToRemove = []) {\n if (idsToRemove.length < 1) return;\n\n const updatedStores = fromEntries(\n entries(childrenStores).filter(\n ([, store]) => !idsToRemove.includes(store.id)\n ),\n collType\n );\n setChildrenStores(updatedStores);\n }\n\n function setValue(coll, partial = false) {\n collValue = partial && !isSpread ? merge(collValue, coll) : coll;\n isUndef = collValue === undefined;\n ownSpecable.set(collValue);\n\n const childrenEntries = entries(childrenStores);\n\n childrenEntries.forEach(([key, store]) => {\n const newValue = get(key, coll);\n if (partial && newValue === undefined) return;\n store.set(newValue, partial);\n });\n if (!isSpread) return;\n\n /* If collection allows spread children... */\n\n /* Add `coll` entries that are not yet part of the children stores. */\n const childrenKeys = keys(childrenStores);\n const missingChildren = fromEntries(\n entries(coll).filter(([key]) => !childrenKeys.includes(key)),\n collType\n );\n addChildren(missingChildren);\n\n if (partial) return;\n\n /* If update is not partial, remove children stores that do not store\n * a collection value anymore (garbage collection). */\n const collKeys = keys(coll);\n const unusedIds = childrenEntries.reduce((acc, [key, childStore]) => {\n return collKeys.includes(key) ? acc : [...acc, childStore.id];\n }, []);\n removeChildrenById(unusedIds);\n }\n\n function activate(bool = true) {\n const storesToActivate = [\n ownSpecable,\n ...(isUndef ? [] : values(childrenStores)),\n ];\n const promises = storesToActivate.map((store) => {\n const promise = store.activate(bool);\n return promise.then((valid) => {\n if (valid) return valid;\n throw valid;\n });\n });\n return Promise.all(promises)\n .then(() => true)\n .catch(() => false);\n }\n\n async function submit() {\n if (!onSubmit) return;\n submitting.set(true);\n const valid = await activate();\n if (valid) {\n const currValue = getStoreValue(ownSpecable).value;\n await onSubmit(currValue);\n }\n submitting.set(false);\n }\n\n return {\n id,\n isRequired,\n spec,\n stores: childrenStores,\n\n activate,\n\n add(coll) {\n if (coll !== undefined) isUndef = false;\n addChildren(coll);\n return this;\n },\n\n getChild(path = []) {\n const reduced = path.reduce(\n (acc, key) => {\n const { children } = acc;\n if (!children) return { res: null };\n const childStore = get(key, children);\n if (!childStore) return { res: null };\n return {\n res: childStore,\n children: childStore.getChildren ? childStore.getChildren() : [],\n };\n },\n { children: childrenStores }\n );\n return reduced.res;\n },\n\n getChildren() {\n return childrenStores;\n },\n\n remove(idsToRemove = []) {\n removeChildrenById(idsToRemove);\n return this;\n },\n\n reset(newInitialValue = initialValue) {\n setValue(newInitialValue, false);\n activate(false);\n return this;\n },\n\n set(coll, partial = false, shouldActivate = false) {\n setValue(coll, partial);\n if (shouldActivate) activate();\n return this;\n },\n\n update: (fn) => {\n setChildrenStores(fn(childrenStores));\n return this;\n },\n\n children: {\n subscribe: children.subscribe,\n },\n\n submit,\n\n subscribe: status.subscribe,\n };\n}\n\nfunction combineChildren(a, b) {\n const validating = a.validating || b.validating;\n return {\n active: a.active === b.active ? b.active : null,\n changed: a.changed || b.changed,\n valid: validating ? null : a.valid && b.valid,\n validating,\n };\n}\n\nconst liftError = (parentId) => ({ path, error, ...rest }) => {\n const newPath = parentId === undefined ? path : [parentId, ...path];\n return {\n ...rest,\n path: newPath,\n which: newPath.join(\".\"),\n error,\n };\n};\n\nfunction detailsToErrors(details, parentId) {\n return Object.entries(details)\n .flatMap(([key, status]) => {\n if (!status.details) {\n if (!status.error) return [];\n if (key === \"_\") {\n return [{ path: [], error: status.error, isColl: true }];\n }\n return [summarizeStatusError(status)];\n }\n\n const subErrors = detailsToErrors(status.details, details.id);\n return subErrors.map(liftError(status.id));\n })\n .map(liftError(parentId));\n}\n\nfunction summarizeStatusError({ id, error }) {\n return { path: [id], which: id, error };\n}\n","import { identity } from \"./util\";\n\nexport default function register(el, storeOrArgs) {\n let args = normalizeArgs(storeOrArgs);\n if (!el || !args.store) return;\n\n let unsub;\n listen();\n\n function blurHandler() {\n args.store.activate();\n }\n\n function inputHandler(e) {\n args.store.set(args.toValue(e.target.value));\n }\n\n function listen() {\n unsub = args.store.subscribe(({ value }) => {\n const elValue = args.toInput(value);\n if (el.value !== elValue) el.value = elValue;\n });\n el.addEventListener(\"blur\", blurHandler);\n el.addEventListener(\"input\", inputHandler);\n }\n\n function unlisten() {\n unsub();\n el.removeEventListener(\"blur\", blurHandler);\n el.removeEventListener(\"input\", inputHandler);\n }\n\n return {\n destroy: unlisten,\n update(newArgs) {\n unlisten();\n if (!newArgs) return;\n args = normalizeArgs(newArgs);\n listen();\n },\n };\n}\n\nfunction normalizeArgs(storeOrArgs) {\n if (!storeOrArgs) return {};\n\n if (!Array.isArray(storeOrArgs)) {\n return {\n store: storeOrArgs,\n toInput: (x = \"\") => x,\n toValue: identity,\n };\n }\n\n const [store, { toInput = identity, toValue = identity } = {}] = storeOrArgs;\n return { store, toInput, toValue };\n}\n","import collSpecable from \"./collSpecable\";\nimport predSpecable from \"./predSpecable\";\nimport { isColl, isStore } from \"./util\";\n\nexport default function specable(initialValue, options = {}, _extra) {\n if (isStore(initialValue)) return initialValue;\n\n const collCandidate = options.fields || options.spec || initialValue;\n\n if (isColl(collCandidate)) {\n return collSpecable(initialValue, options, { ..._extra, specable });\n }\n\n return predSpecable(initialValue, options, _extra);\n}\n"],"names":["identity","x","noop","flexDerived","initialStores","fn","initialValue","_stores","$stores","writable","auto","length","mainStore","readable","publish","initialized","cleanup","pending","unsubs","Map","values","updateUnsubs","stores","stopUnusedSubs","map","store","get","usedStores","forEach","unsub","includes","stopSubscriptions","updateValues","sync","vals","reduce","acc","has","result","unsubscribe","subscribe","i","set","value","stop","exclude","update","prev","filter","include","isColl","typeOf","isFunc","isStore","obj","toString","call","split","slice","toLowerCase","entries","coll","array","v","object","Object","fromEntries","toType","val","keys","merge","args","colls","type","every","collTypes","join","TypeError","assign","Error","genRandomId","Math","random","toFixed","key","undefined","getPath","path","parent","countPathAncestors","str","match","keepForwardPath","node","startsWith","index","parseInt","isNaN","equals","a","b","eqBy","defaultEqBy","_a","_b","fastEquals","Date","valueOf","removeUndefined","deriveState","storesEntries","collType","collDerived","initialColl","state","index$stores","idx","_set","newColl","ALWAYS_VALID","valid","REQUIRED_SPECMA_FNS","CONFIG_ERROR_MSG","specma","ensureConfigured","configure","specmaFns","some","alwaysTrue","isMissing","defaultChangePred","reqSpec","getMessage","predSpecable","changePred","id","required","spec","onSubmit","_extra","and","getPred","validatePred","getAncestor","pred","isRequired","ownSpec","contextStores","context","addContext","relPath","ancestor","pathSinceAncestor","derived","$ancestor","ancestorValue","curr","next","getStoreValue","currPromise","_initialValue","active","submitting","$active","$value","$context","$submitting","getFrom","shouldValidate","enhanceResult","baseArgs","promise","interpretState","then","resolvedResult","activate","bool","tick","res","submit","currValue","reset","newValue","shouldActivate","promised","Promise","resolve","changed","error","reason","validating","collSpecable","fields","getId","getSpread","isOpt","collValue","isUndef","collDefiner","find","spreadGetId","spreadSpec","spreadFields","spreadRequired","isSpread","valueKeys","allKeys","Set","ownGetId","idGen","k","ownSpecable","createChildEntry","subChangePred","subVal","subSpec","subGetId","subId","subFields","subRequired","subStore","specable","n","childrenStores","children","derivedValue","$childrenStores","$childrenEntries","$childrenValues","childrenValue","aggregateStatusStores","status","$statusStores","$ownSpecable","$children","combined","combineChildren","details","child","errors","detailsToErrors","collErrors","setChildrenStores","newChildrenStores","addChildren","newEntries","updatedStores","removeChildrenById","idsToRemove","setValue","partial","childrenEntries","childrenKeys","missingChildren","collKeys","unusedIds","childStore","storesToActivate","promises","all","catch","add","getChild","reduced","getChildren","remove","newInitialValue","liftError","parentId","rest","newPath","which","flatMap","summarizeStatusError","subErrors","register","el","storeOrArgs","normalizeArgs","listen","blurHandler","inputHandler","e","toValue","target","elValue","toInput","addEventListener","unlisten","removeEventListener","destroy","newArgs","Array","isArray","options","collCandidate"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"svelte-specma.modern.js","sources":["../src/flexDerived.js","../src/util.js","../src/collDerived.js","../src/constants.js","../src/configure.js","../src/writableByValue.js","../src/predSpecable.js","../src/collSpecable.js","../src/register.js","../src/specable.js"],"sourcesContent":["import { readable, writable } from \"svelte/store\";\n\nconst identity = (x) => x;\nconst noop = () => {};\n\nfunction flexDerived(initialStores = [], fn = identity, initialValue) {\n /* Used for ordering values */\n let _stores = initialStores;\n /* Store of stores. When last subscriber unsubscribes,\n * will stop all stores subs. */\n const $stores = writable(initialStores);\n\n /* Callback function can use a second argument, a `publish` function to set result asynchronously.\n * If not used, the return value of the function is the actual result to publish.\n * Otherwise, the return value might be a function to call before each execution\n * and when store is unsubscribed. */\n const auto = fn.length < 2;\n\n /* Use a readable store to manage subscribers. */\n const mainStore = readable(initialValue, (publish) => {\n let initialized = false;\n\n let cleanup = noop;\n let pending = 0;\n let unsubs = new Map();\n let values = new Map();\n\n /* Unsubscribe saved stores not included in a new list of stores\n * and create a new Map of unsub by store, reusing old ones when they exist. */\n function updateUnsubs(stores = []) {\n stopUnusedSubs(stores);\n unsubs = new Map(stores.map((store) => [store, unsubs.get(store)]));\n }\n\n function stopUnusedSubs(usedStores = []) {\n unsubs.forEach((unsub, store) => {\n if (!usedStores.includes(store) && unsub) unsub();\n });\n }\n\n function stopSubscriptions() {\n unsubs.forEach((unsub) => unsub && unsub());\n }\n\n /* Create a new map of values by store, reusing old ones when they exist. */\n function updateValues(stores = []) {\n values = new Map(stores.map((store) => [store, values.get(store)]));\n }\n\n /* Recompute and publish the combined result on values,\n * using `_stores` to ensure values order consistency. */\n function sync() {\n if (pending) return;\n cleanup();\n const vals = _stores.reduce(\n (acc, store) => (values.has(store) ? [...acc, values.get(store)] : acc),\n []\n );\n const result = fn(vals, publish);\n\n if (auto) {\n publish(result);\n } else {\n cleanup = typeof result === \"function\" ? result : noop;\n }\n }\n\n const unsubscribe = $stores.subscribe((stores) => {\n updateUnsubs(stores);\n updateValues(stores);\n\n /* Subscribe to each store if not alreay done.\n * When a any store value changes,\n * combined result will be updated and published. */\n _stores = [];\n stores.forEach((store, i) => {\n _stores[i] = store;\n\n if (!unsubs.get(store)) {\n unsubs.set(\n store,\n store.subscribe(\n (value) => {\n values.set(store, value);\n pending &= ~(1 << i);\n if (initialized) sync();\n },\n () => {\n pending |= 1 << i;\n }\n )\n );\n }\n });\n if (initialized) sync();\n });\n\n initialized = true;\n sync();\n\n return function stop() {\n unsubscribe();\n stopSubscriptions();\n cleanup();\n };\n });\n\n /* Exclude one or mode stores from the list. */\n function exclude(...stores) {\n $stores.update((prev) => prev.filter((store) => !stores.includes(store)));\n }\n\n /* Include one or more stores into the list. */\n function include(...stores) {\n $stores.update((prev) => [...prev, ...stores]);\n }\n\n return {\n exclude,\n include,\n set: $stores.set,\n stores: $stores,\n subscribe: mainStore.subscribe,\n update: $stores.update,\n };\n}\n\nexport default flexDerived;\n","import fastEquals from \"fast-deep-equal\";\n\nexport const identity = (x) => x;\nexport const isColl = (x) => [\"array\", \"map\", \"object\"].includes(typeOf(x));\nexport const isFunc = (x) => typeof x === \"function\";\nexport const isStore = (x) => x && x.subscribe && isFunc(x.subscribe);\n\nexport const typeOf = (obj) =>\n ({}.toString.call(obj).split(\" \")[1].slice(0, -1).toLowerCase());\n\nexport function entries(coll) {\n const fn = {\n array: () => coll.map((v, i) => [i, v]),\n map: () => [...coll.entries()],\n object: () => Object.entries(coll),\n }[typeOf(coll)];\n\n return fn ? fn(coll) : [];\n}\n\nexport function fromEntries(entries, toType) {\n const fn = {\n array: () => entries.map(([, val]) => val),\n map: () => new Map(entries),\n object: () => Object.fromEntries(entries),\n }[toType];\n return fn ? fn() : fromEntries(entries, \"map\");\n}\n\nexport function values(coll) {\n const fn = {\n array: () => [...coll],\n map: () => [...coll.values()],\n object: () => Object.values(coll),\n }[typeOf(coll)];\n\n return fn ? fn(coll) : [];\n}\n\nexport function keys(coll) {\n const fn = {\n array: () => coll.map((v, i) => i),\n map: () => [...coll.keys()],\n object: () => Object.keys(coll),\n }[typeOf(coll)];\n\n return fn ? fn(coll) : [];\n}\n\n/* Merge multiple collections of identical type with right to left arguments precedence. */\nexport function merge(...args) {\n const colls = args.filter(isColl);\n const type = typeOf(colls[0]);\n if (!colls.every((coll) => typeOf(coll) === type)) {\n const collTypes = colls.map(typeOf).join(\", \");\n throw new TypeError(\n `Collections must be of same type. Received '${collTypes}'.`\n );\n }\n\n const fn = {\n array: () =>\n colls.reduce((acc, coll) => {\n if (coll.length >= acc.length) return coll;\n return [...coll, ...acc.slice(coll.length)];\n }, []),\n map: () => new Map(colls.map((coll) => coll.entries())),\n object: () => Object.assign({}, ...colls),\n }[type];\n\n if (!fn) throw new Error(`'merge' not implemented yet for ${type}`);\n\n return fn();\n}\n\nexport function genRandomId() {\n return (Math.random() * 1e9).toFixed(0);\n}\n\nexport function get(key, coll) {\n const fn = {\n array: () => coll[key],\n map: () => coll.get(key),\n object: () => coll[key],\n }[typeOf(coll)];\n\n return fn ? fn(key, coll) : undefined;\n}\n\nexport function getPath(path = [], value) {\n return path.reduce((parent, key) => get(key, parent), value);\n}\n\nexport function countPathAncestors(str = \"\") {\n return (str.match(/\\.\\.\\/|\\.\\.$/g) || []).length;\n}\n\nexport function keepForwardPath(str = \"\") {\n return str.split(\"/\").reduce((acc, node) => {\n if (!node || node.startsWith(\".\")) return acc;\n const index = parseInt(node, 10);\n return [...acc, isNaN(index) ? node : index];\n }, []);\n}\n\nexport function equals(a, b, eqBy = defaultEqBy) {\n const [_a, _b] = [a, b].map(eqBy);\n return _a === _b || fastEquals(_a, _b);\n}\n\nfunction defaultEqBy(x) {\n if (x instanceof Date) return x.valueOf();\n if (isColl(x)) return removeUndefined(x);\n return x;\n}\n\nfunction removeUndefined(x) {\n if (!isColl(x)) return x;\n return fromEntries(\n entries(x).reduce(\n (acc, [key, val]) =>\n val === undefined ? acc : [...acc, [key, removeUndefined(val)]],\n []\n ),\n typeOf(x)\n );\n}\n","import flexDerived from \"./flexDerived\";\nimport { entries, fromEntries, identity, typeOf } from \"./util\";\n\nfunction deriveState(coll) {\n const storesEntries = entries(coll);\n return {\n coll,\n collType: typeOf(coll),\n storesEntries,\n keys: storesEntries.map(([key]) => key),\n stores: storesEntries.map(([, store]) => store),\n };\n}\n\nfunction collDerived(initialColl, fn = identity, initialValue) {\n let state = deriveState(initialColl);\n\n /* The callback passed to `flexDerived` can have arity 1 or 2.\n * The arity should match the one of the provided function.\n * When using arity 2, a set function is provided so that\n * result can be used asynchronously */\n const auto = fn.length < 2;\n const index$stores = ($stores) =>\n fromEntries(\n $stores.map((store, idx) => [state.keys[idx], store]),\n state.collType\n );\n\n const values = flexDerived(\n state.stores,\n auto\n ? ($stores) => fn(index$stores($stores))\n : ($stores, _set) => fn(index$stores($stores), _set),\n initialValue\n );\n\n function set(newColl) {\n state = deriveState(newColl);\n values.set(state.stores);\n }\n\n return {\n set,\n subscribe: values.subscribe,\n };\n}\n\nexport default collDerived;\n","export const ALWAYS_VALID = { valid: true };\n","const REQUIRED_SPECMA_FNS = [\n \"and\",\n \"getMessage\",\n \"getPred\",\n \"getSpread\",\n \"isOpt\",\n \"validatePred\",\n];\n\nconst CONFIG_ERROR_MSG =\n \"SvelteSpecma must be configured with a valid Specma version.\";\n\nexport let specma = undefined;\n\nexport function ensureConfigured() {\n if (!specma) {\n throw new TypeError(CONFIG_ERROR_MSG);\n }\n}\n\nexport default function configure(specmaFns) {\n if (\n !specmaFns ||\n REQUIRED_SPECMA_FNS.some((key) => typeof specmaFns[key] !== \"function\")\n ) {\n throw new TypeError(CONFIG_ERROR_MSG);\n }\n specma = specmaFns;\n}\n","import { writable } from \"svelte/store\";\nimport equals from \"fast-deep-equal\";\n\n/* Limited version of `writable` store that updates only\n * if the new set value is different by value (deep equality) */\nexport default function wriableByValue(initialValue, ...rest) {\n let _value = initialValue;\n const store = writable(initialValue, ...rest);\n return {\n set(newValue) {\n if (equals(newValue, _value)) return;\n _value = newValue;\n store.set(_value);\n },\n subscribe: store.subscribe,\n };\n}\n","import { tick } from \"svelte\";\nimport { derived, get as getStoreValue, writable } from \"svelte/store\";\nimport { ALWAYS_VALID } from \"./constants\";\nimport { countPathAncestors, equals, getPath, keepForwardPath } from \"./util\";\nimport collDerived from \"./collDerived\";\nimport { specma, ensureConfigured } from \"./configure\";\nimport writableByValue from \"./writableByValue\";\n\nconst alwaysTrue = () => true;\nconst isMissing = (x) => [undefined, null, \"\"].includes(x);\nconst defaultChangePred = (a, b) => !equals(a, b);\n\nconst reqSpec = (x) => !isMissing(x) || specma.getMessage(\"isRequired\");\n\nexport default function predSpecable(\n initialValue,\n { changePred = defaultChangePred, id, required, spec, onSubmit } = {},\n _extra = {}\n) {\n ensureConfigured();\n const { and, getPred, validatePred } = specma;\n\n const { getAncestor } = _extra;\n const pred = getPred(spec) || alwaysTrue;\n const isRequired = !!required;\n const ownSpec = isRequired ? and(reqSpec, pred) : pred;\n\n const contextStores = {};\n const context = collDerived(contextStores);\n\n function addContext(relPath) {\n /* If `getFrom` has already been called once,\n * context store is already tracking the value. */\n if (contextStores[relPath]) return;\n\n const ancestor = getAncestor(countPathAncestors(relPath));\n if (!ancestor) return;\n\n const pathSinceAncestor = keepForwardPath(relPath);\n\n contextStores[relPath] = derived(ancestor, ($ancestor, set) => {\n const ancestorValue = $ancestor.value;\n if (!ancestorValue) return;\n\n const curr = contextStores[relPath].value;\n const next = getPath(pathSinceAncestor, ancestorValue);\n if (!equals(curr, next)) {\n contextStores[relPath].value = next;\n set(next);\n }\n });\n context.set(contextStores);\n\n /* If context has just been created, it won't be accessible\n * in the derived store at first.\n * In that case, return the static store value. */\n return getPath(pathSinceAncestor, getStoreValue(ancestor).value);\n }\n\n let currPromise;\n let _initialValue = initialValue;\n\n const active = writable(false);\n const submitting = writable(false);\n const value = writableByValue(_initialValue);\n\n const store = derived(\n [active, value, context, submitting],\n ([$active, $value, $context, $submitting], set) => {\n currPromise = undefined;\n\n function getFrom(relPath) {\n if (!contextStores[relPath]) {\n return addContext(relPath);\n }\n return $context[relPath];\n }\n\n const shouldValidate = $active && ($value !== undefined || required);\n\n const result = enhanceResult(\n shouldValidate ? validatePred(ownSpec, $value, getFrom) : ALWAYS_VALID\n );\n const baseArgs = {\n active: $active,\n changePred,\n initialValue: _initialValue,\n id,\n result,\n submitting: $submitting,\n value: $value,\n };\n\n currPromise = result.promise;\n\n set(interpretState(baseArgs));\n\n if (result.valid === null) {\n result.promise.then((resolvedResult) => {\n /* Promise might be outdated */\n if (result.promise !== currPromise) return;\n\n set(interpretState({ ...baseArgs, result: resolvedResult }));\n });\n }\n }\n );\n\n async function activate(bool = true) {\n active.set(bool);\n await tick();\n const res = await currPromise;\n return res.valid;\n }\n\n async function submit() {\n if (!onSubmit) return;\n submitting.set(true);\n const valid = await activate();\n if (valid) {\n const currValue = getStoreValue(value);\n await onSubmit(currValue);\n }\n submitting.set(false);\n }\n\n return {\n id,\n isRequired,\n spec: pred,\n\n activate,\n\n reset(newValue = _initialValue) {\n _initialValue = newValue;\n this.activate(false);\n this.set(newValue);\n },\n\n set: (newValue, shouldActivate = false) => {\n value.set(newValue);\n if (shouldActivate) activate();\n },\n\n submit,\n\n subscribe: store.subscribe,\n };\n}\n\nfunction enhanceResult(res) {\n return {\n ...res,\n promise: res.promise\n ? res.promise.then((promised) => enhanceResult(promised))\n : Promise.resolve(res),\n };\n}\n\nfunction interpretState({\n active,\n changePred,\n id,\n initialValue,\n result,\n submitting,\n value,\n}) {\n const changed = changePred(value, initialValue);\n return {\n active,\n changed,\n error: result.valid === false && result.reason,\n id,\n initialValue,\n promise: result.promise || Promise.resolve(result),\n submitting,\n valid: !!result.valid,\n validating: result.valid === null,\n value: changed ? value : initialValue,\n };\n}\n","import { get as getStoreValue, writable } from \"svelte/store\";\nimport collDerived from \"./collDerived\";\nimport flexDerived from \"./flexDerived\";\nimport predSpecable from \"./predSpecable\";\nimport {\n entries,\n fromEntries,\n genRandomId,\n get,\n isColl,\n keys,\n merge,\n typeOf,\n values,\n} from \"./util\";\nimport { specma, ensureConfigured } from \"./configure\";\n\nexport default function collSpecable(\n initialValue,\n { changePred, fields, getId, id, required, spec, onSubmit } = {},\n _extra = {}\n) {\n ensureConfigured();\n const { getPred, getSpread, isOpt } = specma;\n\n let collValue = initialValue; // For static properties\n let isUndef = collValue === undefined;\n\n const { getAncestor } = _extra;\n const collDefiner = [fields, spec, initialValue].find(isColl);\n const collType = typeOf(collDefiner);\n const isRequired = required && !isOpt(required);\n const spreadGetId = getSpread(getId);\n const spreadSpec = getSpread(spec);\n const spreadFields = getSpread(fields);\n const spreadRequired = getSpread(required);\n const isSpread =\n spreadSpec ||\n spreadFields ||\n spreadRequired ||\n spreadGetId ||\n collType === \"array\";\n\n const valueKeys = isSpread ? keys(initialValue) : [];\n const allKeys = new Set(\n fields\n ? [...keys(fields), ...valueKeys]\n : [...keys(spec), ...keys(required), ...valueKeys]\n );\n\n const ownGetId = getPred(getId);\n const idGen = (v, k) => {\n if (ownGetId) return ownGetId(v, k);\n if (collType === \"array\") return genRandomId();\n return k;\n };\n\n const ownSpecable = predSpecable(\n initialValue,\n {\n changePred: getPred(changePred),\n id,\n required: isRequired,\n spec,\n },\n _extra\n );\n\n const createChildEntry = (key, val) => {\n const subChangePred = get(key, changePred) || getSpread(changePred);\n const subVal = val;\n const subSpec = get(key, spec) || spreadSpec;\n const subGetId = get(key, getId) || spreadGetId;\n const subId = idGen(subVal, key);\n const subFields = get(key, fields) || spreadFields;\n const subRequired = get(key, required) || spreadRequired;\n\n const subStore = _extra.specable(\n subVal,\n {\n spec: subSpec,\n changePred: subChangePred,\n id: subId,\n getId: subGetId,\n fields: subFields,\n required: subRequired,\n },\n {\n getAncestor: (n) =>\n n <= 1 || !getAncestor ? ownSpecable : getAncestor(n - 1),\n }\n );\n\n return [key, { ...subStore, id: subId }];\n };\n\n let childrenStores = fromEntries(\n [...allKeys].map((key) => createChildEntry(key, get(key, initialValue))),\n collType\n );\n const children = writable(childrenStores);\n const submitting = writable(false);\n\n const derivedValue = collDerived(childrenStores, ($childrenStores) => {\n if (isUndef) return undefined;\n\n const $childrenEntries = entries($childrenStores);\n const $childrenValues = $childrenEntries.map(([key, state]) => [\n key,\n state.value,\n ]);\n const childrenValue = fromEntries($childrenValues, collType);\n const value = isSpread ? childrenValue : merge(collValue, childrenValue);\n isUndef = value === undefined;\n return value;\n });\n\n const aggregateStatusStores = () => [\n submitting,\n ownSpecable,\n ...values(childrenStores),\n ];\n\n const status = flexDerived(aggregateStatusStores(), ($statusStores) => {\n const [$submitting, $ownSpecable, ...$children] = $statusStores;\n\n const combined = isUndef\n ? $ownSpecable\n : [$ownSpecable, ...$children].reduce(combineChildren);\n\n if (combined.active !== false) ownSpecable.activate();\n\n const { value, error } = $ownSpecable;\n\n const details = Object.fromEntries([\n [\"_\", $ownSpecable],\n ...(isUndef ? [] : $children.map((child) => [child.id, child])),\n ]);\n\n const errors = detailsToErrors(details, id);\n const collErrors = errors.filter(({ isColl }) => isColl);\n\n return {\n ...combined,\n id,\n initialValue: $ownSpecable.initialValue,\n value,\n error,\n errors,\n collErrors,\n details,\n submitting: $submitting,\n };\n });\n\n function setChildrenStores(newChildrenStores) {\n childrenStores = newChildrenStores;\n children.set(newChildrenStores);\n derivedValue.set(newChildrenStores);\n status.set(aggregateStatusStores());\n }\n\n function addChildren(coll) {\n if (!coll) return;\n\n const newEntries = keys(coll).map((key) =>\n createChildEntry(key, get(key, coll))\n );\n const updatedStores = fromEntries(\n [...entries(childrenStores), ...newEntries],\n collType\n );\n setChildrenStores(updatedStores);\n }\n\n function removeChildrenById(idsToRemove = []) {\n if (idsToRemove.length < 1) return;\n\n const updatedStores = fromEntries(\n entries(childrenStores).filter(\n ([, store]) => !idsToRemove.includes(store.id)\n ),\n collType\n );\n\n setChildrenStores(updatedStores);\n }\n\n function setValue(coll, { partial = false, reset = false } = {}) {\n const setMethod = reset ? \"reset\" : \"set\";\n collValue = !reset && partial && !isSpread ? merge(collValue, coll) : coll;\n isUndef = collValue === undefined;\n ownSpecable[setMethod](collValue);\n\n const childrenEntries = entries(childrenStores);\n\n childrenEntries.forEach(([key, store]) => {\n const newValue = get(key, coll);\n if (partial && newValue === undefined) return;\n store[setMethod](newValue, partial);\n });\n if (!isSpread) return;\n\n /* If collection allows spread children... */\n\n /* Add `coll` entries that are not yet part of the children stores. */\n const childrenKeys = keys(childrenStores);\n const missingChildrenEntries = entries(coll).filter(\n ([key]) => !childrenKeys.includes(key)\n );\n if (missingChildrenEntries.length > 0) {\n addChildren(fromEntries(missingChildrenEntries, collType));\n }\n\n if (partial) return;\n\n /* If update is not partial, remove children stores that do not store\n * a collection value anymore (garbage collection). */\n const collKeys = keys(coll);\n const unusedIds = childrenEntries.reduce((acc, [key, childStore]) => {\n return collKeys.includes(key) ? acc : [...acc, childStore.id];\n }, []);\n removeChildrenById(unusedIds);\n }\n\n function activate(bool = true) {\n const storesToActivate = [\n ownSpecable,\n ...(isUndef ? [] : values(childrenStores)),\n ];\n const promises = storesToActivate.map((store) => {\n const promise = store.activate(bool);\n return promise.then((valid) => {\n if (valid) return valid;\n throw valid;\n });\n });\n return Promise.all(promises)\n .then(() => true)\n .catch(() => false);\n }\n\n async function submit() {\n if (!onSubmit) return;\n submitting.set(true);\n const valid = await activate();\n if (valid) {\n const currValue = getStoreValue(ownSpecable).value;\n await onSubmit(currValue);\n }\n submitting.set(false);\n }\n\n return {\n id,\n isRequired,\n spec,\n stores: childrenStores,\n\n activate,\n\n add(coll) {\n if (coll !== undefined) isUndef = false;\n addChildren(coll);\n return this;\n },\n\n getChild(path = []) {\n const reduced = path.reduce(\n (acc, key) => {\n const { children } = acc;\n if (!children) return { res: null };\n const childStore = get(key, children);\n if (!childStore) return { res: null };\n return {\n res: childStore,\n children: childStore.getChildren ? childStore.getChildren() : [],\n };\n },\n { children: childrenStores }\n );\n return reduced.res;\n },\n\n getChildren() {\n return childrenStores;\n },\n\n remove(idsToRemove = []) {\n removeChildrenById(idsToRemove);\n return this;\n },\n\n reset(newInitialValue = initialValue) {\n setValue(newInitialValue, { reset: true });\n activate(false);\n return this;\n },\n\n set(coll, partial = false, shouldActivate = false) {\n setValue(coll, { partial });\n if (shouldActivate) activate();\n return this;\n },\n\n update: (fn) => {\n setChildrenStores(fn(childrenStores));\n return this;\n },\n\n children: {\n subscribe: children.subscribe,\n },\n\n submit,\n\n subscribe: (fn) => {\n const unsub1 = derivedValue.subscribe((value) => ownSpecable.set(value));\n const unsub2 = status.subscribe(fn);\n return () => {\n unsub1();\n unsub2();\n };\n },\n };\n}\n\nfunction combineChildren(a, b) {\n const validating = a.validating || b.validating;\n return {\n active: a.active === b.active ? b.active : null,\n changed: a.changed || b.changed,\n valid: validating ? null : a.valid && b.valid,\n validating,\n };\n}\n\nconst liftError = (parentId) => ({ path, error, ...rest }) => {\n const newPath = parentId === undefined ? path : [parentId, ...path];\n return {\n ...rest,\n path: newPath,\n which: newPath.join(\".\"),\n error,\n };\n};\n\nfunction detailsToErrors(details, parentId) {\n return Object.entries(details)\n .flatMap(([key, status]) => {\n if (!status.details) {\n if (!status.error) return [];\n if (key === \"_\") {\n return [{ path: [], error: status.error, isColl: true }];\n }\n return [summarizeStatusError(status)];\n }\n\n const subErrors = detailsToErrors(status.details, details.id);\n return subErrors.map(liftError(status.id));\n })\n .map(liftError(parentId));\n}\n\nfunction summarizeStatusError({ id, error }) {\n return { path: [id], which: id, error };\n}\n","import { identity } from \"./util\";\n\nexport default function register(el, storeOrArgs) {\n let args = normalizeArgs(storeOrArgs);\n if (!el || !args.store) return;\n\n let unsub;\n listen();\n\n function blurHandler() {\n args.store.activate();\n }\n\n function inputHandler(e) {\n args.store.set(args.toValue(e.target.value));\n }\n\n function listen() {\n unsub = args.store.subscribe(({ value }) => {\n const elValue = args.toInput(value);\n if (el.value !== elValue) el.value = elValue;\n });\n el.addEventListener(\"blur\", blurHandler);\n el.addEventListener(\"input\", inputHandler);\n }\n\n function unlisten() {\n unsub();\n el.removeEventListener(\"blur\", blurHandler);\n el.removeEventListener(\"input\", inputHandler);\n }\n\n return {\n destroy: unlisten,\n update(newArgs) {\n unlisten();\n if (!newArgs) return;\n args = normalizeArgs(newArgs);\n listen();\n },\n };\n}\n\nfunction normalizeArgs(storeOrArgs) {\n if (!storeOrArgs) return {};\n\n if (!Array.isArray(storeOrArgs)) {\n return {\n store: storeOrArgs,\n toInput: (x = \"\") => x,\n toValue: identity,\n };\n }\n\n const [store, { toInput = identity, toValue = identity } = {}] = storeOrArgs;\n return { store, toInput, toValue };\n}\n","import collSpecable from \"./collSpecable\";\nimport predSpecable from \"./predSpecable\";\nimport { isColl, isStore } from \"./util\";\n\nexport default function specable(initialValue, options = {}, _extra) {\n if (isStore(initialValue)) return initialValue;\n\n const collCandidate = options.fields || options.spec || initialValue;\n\n if (isColl(collCandidate)) {\n return collSpecable(initialValue, options, { ..._extra, specable });\n }\n\n return predSpecable(initialValue, options, _extra);\n}\n"],"names":["identity","x","noop","flexDerived","initialStores","fn","initialValue","_stores","$stores","writable","auto","length","mainStore","readable","publish","initialized","cleanup","pending","unsubs","Map","values","updateUnsubs","stores","stopUnusedSubs","map","store","get","usedStores","forEach","unsub","includes","stopSubscriptions","updateValues","sync","vals","reduce","acc","has","result","unsubscribe","subscribe","i","set","value","stop","exclude","update","prev","filter","include","isColl","typeOf","isFunc","isStore","obj","toString","call","split","slice","toLowerCase","entries","coll","array","v","object","Object","fromEntries","toType","val","keys","merge","args","colls","type","every","collTypes","join","TypeError","assign","Error","genRandomId","Math","random","toFixed","key","undefined","getPath","path","parent","countPathAncestors","str","match","keepForwardPath","node","startsWith","index","parseInt","isNaN","equals","a","b","eqBy","defaultEqBy","_a","_b","fastEquals","Date","valueOf","removeUndefined","deriveState","storesEntries","collType","collDerived","initialColl","state","index$stores","idx","_set","newColl","ALWAYS_VALID","valid","REQUIRED_SPECMA_FNS","CONFIG_ERROR_MSG","specma","ensureConfigured","configure","specmaFns","some","wriableByValue","rest","_value","newValue","alwaysTrue","isMissing","defaultChangePred","reqSpec","getMessage","predSpecable","changePred","id","required","spec","onSubmit","_extra","and","getPred","validatePred","getAncestor","pred","isRequired","ownSpec","contextStores","context","addContext","relPath","ancestor","pathSinceAncestor","derived","$ancestor","ancestorValue","curr","next","getStoreValue","currPromise","_initialValue","active","submitting","writableByValue","$active","$value","$context","$submitting","getFrom","shouldValidate","enhanceResult","baseArgs","promise","interpretState","then","resolvedResult","activate","bool","tick","res","submit","currValue","reset","shouldActivate","promised","Promise","resolve","changed","error","reason","validating","collSpecable","fields","getId","getSpread","isOpt","collValue","isUndef","collDefiner","find","spreadGetId","spreadSpec","spreadFields","spreadRequired","isSpread","valueKeys","allKeys","Set","ownGetId","idGen","k","ownSpecable","createChildEntry","subChangePred","subVal","subSpec","subGetId","subId","subFields","subRequired","subStore","specable","n","childrenStores","children","derivedValue","$childrenStores","$childrenEntries","$childrenValues","childrenValue","aggregateStatusStores","status","$statusStores","$ownSpecable","$children","combined","combineChildren","details","child","errors","detailsToErrors","collErrors","setChildrenStores","newChildrenStores","addChildren","newEntries","updatedStores","removeChildrenById","idsToRemove","setValue","partial","setMethod","childrenEntries","childrenKeys","missingChildrenEntries","collKeys","unusedIds","childStore","storesToActivate","promises","all","catch","add","getChild","reduced","getChildren","remove","newInitialValue","unsub1","unsub2","liftError","parentId","newPath","which","flatMap","summarizeStatusError","subErrors","register","el","storeOrArgs","normalizeArgs","listen","blurHandler","inputHandler","e","toValue","target","elValue","toInput","addEventListener","unlisten","removeEventListener","destroy","newArgs","Array","isArray","options","collCandidate"],"mappings":"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"}
|
|
@@ -454,6 +454,22 @@
|
|
|
454
454
|
specma = specmaFns;
|
|
455
455
|
}
|
|
456
456
|
|
|
457
|
+
/* Limited version of `writable` store that updates only
|
|
458
|
+
* if the new set value is different by value (deep equality) */
|
|
459
|
+
|
|
460
|
+
function wriableByValue(initialValue) {
|
|
461
|
+
var _value = initialValue;
|
|
462
|
+
var store$1 = store.writable.apply(void 0, [initialValue].concat([].slice.call(arguments, 1)));
|
|
463
|
+
return {
|
|
464
|
+
set: function set(newValue) {
|
|
465
|
+
if (fastEquals__default['default'](newValue, _value)) return;
|
|
466
|
+
_value = newValue;
|
|
467
|
+
store$1.set(_value);
|
|
468
|
+
},
|
|
469
|
+
subscribe: store$1.subscribe
|
|
470
|
+
};
|
|
471
|
+
}
|
|
472
|
+
|
|
457
473
|
var alwaysTrue = function alwaysTrue() {
|
|
458
474
|
return true;
|
|
459
475
|
};
|
|
@@ -565,7 +581,7 @@
|
|
|
565
581
|
var _initialValue = initialValue;
|
|
566
582
|
var active = store.writable(false);
|
|
567
583
|
var submitting = store.writable(false);
|
|
568
|
-
var value =
|
|
584
|
+
var value = wriableByValue(_initialValue);
|
|
569
585
|
var store$1 = store.derived([active, value, context, submitting], function (_ref2, set) {
|
|
570
586
|
var $active = _ref2[0],
|
|
571
587
|
$value = _ref2[1],
|
|
@@ -671,18 +687,18 @@
|
|
|
671
687
|
if (!onSubmit) return Promise.resolve();
|
|
672
688
|
submitting.set(true);
|
|
673
689
|
return Promise.resolve(activate()).then(function (valid) {
|
|
674
|
-
function
|
|
690
|
+
function _temp4() {
|
|
675
691
|
submitting.set(false);
|
|
676
692
|
}
|
|
677
693
|
|
|
678
|
-
var
|
|
694
|
+
var _temp3 = function () {
|
|
679
695
|
if (valid) {
|
|
680
696
|
var currValue = store.get(ownSpecable).value;
|
|
681
697
|
return Promise.resolve(onSubmit(currValue)).then(function () {});
|
|
682
698
|
}
|
|
683
699
|
}();
|
|
684
700
|
|
|
685
|
-
return
|
|
701
|
+
return _temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3);
|
|
686
702
|
});
|
|
687
703
|
} catch (e) {
|
|
688
704
|
return Promise.reject(e);
|
|
@@ -779,18 +795,17 @@
|
|
|
779
795
|
var childrenValue = fromEntries($childrenValues, collType);
|
|
780
796
|
var value = isSpread ? childrenValue : merge(collValue, childrenValue);
|
|
781
797
|
isUndef = value === undefined;
|
|
782
|
-
ownSpecable.set(value);
|
|
783
798
|
return value;
|
|
784
799
|
});
|
|
785
800
|
|
|
786
801
|
var aggregateStatusStores = function aggregateStatusStores() {
|
|
787
|
-
return [
|
|
802
|
+
return [submitting, ownSpecable].concat(values(childrenStores));
|
|
788
803
|
};
|
|
789
804
|
|
|
790
805
|
var status = flexDerived(aggregateStatusStores(), function ($statusStores) {
|
|
791
|
-
var $submitting = $statusStores[
|
|
792
|
-
$ownSpecable = $statusStores[
|
|
793
|
-
$children = $statusStores.slice(
|
|
806
|
+
var $submitting = $statusStores[0],
|
|
807
|
+
$ownSpecable = $statusStores[1],
|
|
808
|
+
$children = $statusStores.slice(2);
|
|
794
809
|
var combined = isUndef ? $ownSpecable : [$ownSpecable].concat($children).reduce(combineChildren);
|
|
795
810
|
if (combined.active !== false) ownSpecable.activate();
|
|
796
811
|
var value = $ownSpecable.value,
|
|
@@ -844,21 +859,24 @@
|
|
|
844
859
|
setChildrenStores(updatedStores);
|
|
845
860
|
}
|
|
846
861
|
|
|
847
|
-
function setValue(coll,
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
862
|
+
function setValue(coll, _temp2) {
|
|
863
|
+
var _ref5 = _temp2 === void 0 ? {} : _temp2,
|
|
864
|
+
_ref5$partial = _ref5.partial,
|
|
865
|
+
partial = _ref5$partial === void 0 ? false : _ref5$partial,
|
|
866
|
+
_ref5$reset = _ref5.reset,
|
|
867
|
+
reset = _ref5$reset === void 0 ? false : _ref5$reset;
|
|
851
868
|
|
|
852
|
-
|
|
869
|
+
var setMethod = reset ? "reset" : "set";
|
|
870
|
+
collValue = !reset && partial && !isSpread ? merge(collValue, coll) : coll;
|
|
853
871
|
isUndef = collValue === undefined;
|
|
854
|
-
ownSpecable
|
|
872
|
+
ownSpecable[setMethod](collValue);
|
|
855
873
|
var childrenEntries = entries(childrenStores);
|
|
856
|
-
childrenEntries.forEach(function (
|
|
857
|
-
var key =
|
|
858
|
-
store =
|
|
874
|
+
childrenEntries.forEach(function (_ref6) {
|
|
875
|
+
var key = _ref6[0],
|
|
876
|
+
store = _ref6[1];
|
|
859
877
|
var newValue = get(key, coll);
|
|
860
878
|
if (partial && newValue === undefined) return;
|
|
861
|
-
store
|
|
879
|
+
store[setMethod](newValue, partial);
|
|
862
880
|
});
|
|
863
881
|
if (!isSpread) return;
|
|
864
882
|
/* If collection allows spread children... */
|
|
@@ -866,19 +884,23 @@
|
|
|
866
884
|
/* Add `coll` entries that are not yet part of the children stores. */
|
|
867
885
|
|
|
868
886
|
var childrenKeys = keys(childrenStores);
|
|
869
|
-
var
|
|
870
|
-
var key =
|
|
887
|
+
var missingChildrenEntries = entries(coll).filter(function (_ref7) {
|
|
888
|
+
var key = _ref7[0];
|
|
871
889
|
return !childrenKeys.includes(key);
|
|
872
|
-
})
|
|
873
|
-
|
|
890
|
+
});
|
|
891
|
+
|
|
892
|
+
if (missingChildrenEntries.length > 0) {
|
|
893
|
+
addChildren(fromEntries(missingChildrenEntries, collType));
|
|
894
|
+
}
|
|
895
|
+
|
|
874
896
|
if (partial) return;
|
|
875
897
|
/* If update is not partial, remove children stores that do not store
|
|
876
898
|
* a collection value anymore (garbage collection). */
|
|
877
899
|
|
|
878
900
|
var collKeys = keys(coll);
|
|
879
|
-
var unusedIds = childrenEntries.reduce(function (acc,
|
|
880
|
-
var key =
|
|
881
|
-
childStore =
|
|
901
|
+
var unusedIds = childrenEntries.reduce(function (acc, _ref8) {
|
|
902
|
+
var key = _ref8[0],
|
|
903
|
+
childStore = _ref8[1];
|
|
882
904
|
return collKeys.includes(key) ? acc : [].concat(acc, [childStore.id]);
|
|
883
905
|
}, []);
|
|
884
906
|
removeChildrenById(unusedIds);
|
|
@@ -954,7 +976,9 @@
|
|
|
954
976
|
newInitialValue = initialValue;
|
|
955
977
|
}
|
|
956
978
|
|
|
957
|
-
setValue(newInitialValue,
|
|
979
|
+
setValue(newInitialValue, {
|
|
980
|
+
reset: true
|
|
981
|
+
});
|
|
958
982
|
activate(false);
|
|
959
983
|
return this;
|
|
960
984
|
},
|
|
@@ -967,7 +991,9 @@
|
|
|
967
991
|
shouldActivate = false;
|
|
968
992
|
}
|
|
969
993
|
|
|
970
|
-
setValue(coll,
|
|
994
|
+
setValue(coll, {
|
|
995
|
+
partial: partial
|
|
996
|
+
});
|
|
971
997
|
if (shouldActivate) activate();
|
|
972
998
|
return this;
|
|
973
999
|
},
|
|
@@ -979,7 +1005,16 @@
|
|
|
979
1005
|
subscribe: children.subscribe
|
|
980
1006
|
},
|
|
981
1007
|
submit: submit,
|
|
982
|
-
subscribe:
|
|
1008
|
+
subscribe: function subscribe(fn) {
|
|
1009
|
+
var unsub1 = derivedValue.subscribe(function (value) {
|
|
1010
|
+
return ownSpecable.set(value);
|
|
1011
|
+
});
|
|
1012
|
+
var unsub2 = status.subscribe(fn);
|
|
1013
|
+
return function () {
|
|
1014
|
+
unsub1();
|
|
1015
|
+
unsub2();
|
|
1016
|
+
};
|
|
1017
|
+
}
|
|
983
1018
|
};
|
|
984
1019
|
}
|
|
985
1020
|
|
|
@@ -994,10 +1029,10 @@
|
|
|
994
1029
|
}
|
|
995
1030
|
|
|
996
1031
|
var liftError = function liftError(parentId) {
|
|
997
|
-
return function (
|
|
998
|
-
var path =
|
|
999
|
-
error =
|
|
1000
|
-
rest = _objectWithoutPropertiesLoose(
|
|
1032
|
+
return function (_ref9) {
|
|
1033
|
+
var path = _ref9.path,
|
|
1034
|
+
error = _ref9.error,
|
|
1035
|
+
rest = _objectWithoutPropertiesLoose(_ref9, ["path", "error"]);
|
|
1001
1036
|
|
|
1002
1037
|
var newPath = parentId === undefined ? path : [parentId].concat(path);
|
|
1003
1038
|
return _extends({}, rest, {
|
|
@@ -1009,9 +1044,9 @@
|
|
|
1009
1044
|
};
|
|
1010
1045
|
|
|
1011
1046
|
function detailsToErrors(details, parentId) {
|
|
1012
|
-
return Object.entries(details).flatMap(function (
|
|
1013
|
-
var key =
|
|
1014
|
-
status =
|
|
1047
|
+
return Object.entries(details).flatMap(function (_ref10) {
|
|
1048
|
+
var key = _ref10[0],
|
|
1049
|
+
status = _ref10[1];
|
|
1015
1050
|
|
|
1016
1051
|
if (!status.details) {
|
|
1017
1052
|
if (!status.error) return [];
|
|
@@ -1032,9 +1067,9 @@
|
|
|
1032
1067
|
}).map(liftError(parentId));
|
|
1033
1068
|
}
|
|
1034
1069
|
|
|
1035
|
-
function summarizeStatusError(
|
|
1036
|
-
var id =
|
|
1037
|
-
error =
|
|
1070
|
+
function summarizeStatusError(_ref11) {
|
|
1071
|
+
var id = _ref11.id,
|
|
1072
|
+
error = _ref11.error;
|
|
1038
1073
|
return {
|
|
1039
1074
|
path: [id],
|
|
1040
1075
|
which: id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"svelte-specma.umd.js","sources":["../src/flexDerived.js","../src/util.js","../src/collDerived.js","../src/constants.js","../src/configure.js","../src/predSpecable.js","../src/collSpecable.js","../src/register.js","../src/specable.js"],"sourcesContent":["import { readable, writable } from \"svelte/store\";\n\nconst identity = (x) => x;\nconst noop = () => {};\n\nfunction flexDerived(initialStores = [], fn = identity, initialValue) {\n /* Used for ordering values */\n let _stores = initialStores;\n /* Store of stores. When last subscriber unsubscribes,\n * will stop all stores subs. */\n const $stores = writable(initialStores);\n\n /* Callback function can use a second argument, a `publish` function to set result asynchronously.\n * If not used, the return value of the function is the actual result to publish.\n * Otherwise, the return value might be a function to call before each execution\n * and when store is unsubscribed. */\n const auto = fn.length < 2;\n\n /* Use a readable store to manage subscribers. */\n const mainStore = readable(initialValue, (publish) => {\n let initialized = false;\n\n let cleanup = noop;\n let pending = 0;\n let unsubs = new Map();\n let values = new Map();\n\n /* Unsubscribe saved stores not included in a new list of stores\n * and create a new Map of unsub by store, reusing old ones when they exist. */\n function updateUnsubs(stores = []) {\n stopUnusedSubs(stores);\n unsubs = new Map(stores.map((store) => [store, unsubs.get(store)]));\n }\n\n function stopUnusedSubs(usedStores = []) {\n unsubs.forEach((unsub, store) => {\n if (!usedStores.includes(store) && unsub) unsub();\n });\n }\n\n function stopSubscriptions() {\n unsubs.forEach((unsub) => unsub && unsub());\n }\n\n /* Create a new map of values by store, reusing old ones when they exist. */\n function updateValues(stores = []) {\n values = new Map(stores.map((store) => [store, values.get(store)]));\n }\n\n /* Recompute and publish the combined result on values,\n * using `_stores` to ensure values order consistency. */\n function sync() {\n if (pending) return;\n cleanup();\n const vals = _stores.reduce(\n (acc, store) => (values.has(store) ? [...acc, values.get(store)] : acc),\n []\n );\n const result = fn(vals, publish);\n\n if (auto) {\n publish(result);\n } else {\n cleanup = typeof result === \"function\" ? result : noop;\n }\n }\n\n const unsubscribe = $stores.subscribe((stores) => {\n updateUnsubs(stores);\n updateValues(stores);\n\n /* Subscribe to each store if not alreay done.\n * When a any store value changes,\n * combined result will be updated and published. */\n _stores = [];\n stores.forEach((store, i) => {\n _stores[i] = store;\n\n if (!unsubs.get(store)) {\n unsubs.set(\n store,\n store.subscribe(\n (value) => {\n values.set(store, value);\n pending &= ~(1 << i);\n if (initialized) sync();\n },\n () => {\n pending |= 1 << i;\n }\n )\n );\n }\n });\n if (initialized) sync();\n });\n\n initialized = true;\n sync();\n\n return function stop() {\n unsubscribe();\n stopSubscriptions();\n cleanup();\n };\n });\n\n /* Exclude one or mode stores from the list. */\n function exclude(...stores) {\n $stores.update((prev) => prev.filter((store) => !stores.includes(store)));\n }\n\n /* Include one or more stores into the list. */\n function include(...stores) {\n $stores.update((prev) => [...prev, ...stores]);\n }\n\n return {\n exclude,\n include,\n set: $stores.set,\n stores: $stores,\n subscribe: mainStore.subscribe,\n update: $stores.update,\n };\n}\n\nexport default flexDerived;\n","import fastEquals from \"fast-deep-equal\";\n\nexport const identity = (x) => x;\nexport const isColl = (x) => [\"array\", \"map\", \"object\"].includes(typeOf(x));\nexport const isFunc = (x) => typeof x === \"function\";\nexport const isStore = (x) => x && x.subscribe && isFunc(x.subscribe);\n\nexport const typeOf = (obj) =>\n ({}.toString.call(obj).split(\" \")[1].slice(0, -1).toLowerCase());\n\nexport function entries(coll) {\n const fn = {\n array: () => coll.map((v, i) => [i, v]),\n map: () => [...coll.entries()],\n object: () => Object.entries(coll),\n }[typeOf(coll)];\n\n return fn ? fn(coll) : [];\n}\n\nexport function fromEntries(entries, toType) {\n const fn = {\n array: () => entries.map(([, val]) => val),\n map: () => new Map(entries),\n object: () => Object.fromEntries(entries),\n }[toType];\n return fn ? fn() : fromEntries(entries, \"map\");\n}\n\nexport function values(coll) {\n const fn = {\n array: () => [...coll],\n map: () => [...coll.values()],\n object: () => Object.values(coll),\n }[typeOf(coll)];\n\n return fn ? fn(coll) : [];\n}\n\nexport function keys(coll) {\n const fn = {\n array: () => coll.map((v, i) => i),\n map: () => [...coll.keys()],\n object: () => Object.keys(coll),\n }[typeOf(coll)];\n\n return fn ? fn(coll) : [];\n}\n\n/* Merge multiple collections of identical type with right to left arguments precedence. */\nexport function merge(...args) {\n const colls = args.filter(isColl);\n const type = typeOf(colls[0]);\n if (!colls.every((coll) => typeOf(coll) === type)) {\n const collTypes = colls.map(typeOf).join(\", \");\n throw new TypeError(\n `Collections must be of same type. Received '${collTypes}'.`\n );\n }\n\n const fn = {\n array: () =>\n colls.reduce((acc, coll) => {\n if (coll.length >= acc.length) return coll;\n return [...coll, ...acc.slice(coll.length)];\n }, []),\n map: () => new Map(colls.map((coll) => coll.entries())),\n object: () => Object.assign({}, ...colls),\n }[type];\n\n if (!fn) throw new Error(`'merge' not implemented yet for ${type}`);\n\n return fn();\n}\n\nexport function genRandomId() {\n return (Math.random() * 1e9).toFixed(0);\n}\n\nexport function get(key, coll) {\n const fn = {\n array: () => coll[key],\n map: () => coll.get(key),\n object: () => coll[key],\n }[typeOf(coll)];\n\n return fn ? fn(key, coll) : undefined;\n}\n\nexport function getPath(path = [], value) {\n return path.reduce((parent, key) => get(key, parent), value);\n}\n\nexport function countPathAncestors(str = \"\") {\n return (str.match(/\\.\\.\\/|\\.\\.$/g) || []).length;\n}\n\nexport function keepForwardPath(str = \"\") {\n return str.split(\"/\").reduce((acc, node) => {\n if (!node || node.startsWith(\".\")) return acc;\n const index = parseInt(node, 10);\n return [...acc, isNaN(index) ? node : index];\n }, []);\n}\n\nexport function equals(a, b, eqBy = defaultEqBy) {\n const [_a, _b] = [a, b].map(eqBy);\n return _a === _b || fastEquals(_a, _b);\n}\n\nfunction defaultEqBy(x) {\n if (x instanceof Date) return x.valueOf();\n if (isColl(x)) return removeUndefined(x);\n return x;\n}\n\nfunction removeUndefined(x) {\n if (!isColl(x)) return x;\n return fromEntries(\n entries(x).reduce(\n (acc, [key, val]) =>\n val === undefined ? acc : [...acc, [key, removeUndefined(val)]],\n []\n ),\n typeOf(x)\n );\n}\n","import flexDerived from \"./flexDerived\";\nimport { entries, fromEntries, identity, typeOf } from \"./util\";\n\nfunction deriveState(coll) {\n const storesEntries = entries(coll);\n return {\n coll,\n collType: typeOf(coll),\n storesEntries,\n keys: storesEntries.map(([key]) => key),\n stores: storesEntries.map(([, store]) => store),\n };\n}\n\nfunction collDerived(initialColl, fn = identity, initialValue) {\n let state = deriveState(initialColl);\n\n /* The callback passed to `flexDerived` can have arity 1 or 2.\n * The arity should match the one of the provided function.\n * When using arity 2, a set function is provided so that\n * result can be used asynchronously */\n const auto = fn.length < 2;\n const index$stores = ($stores) =>\n fromEntries(\n $stores.map((store, idx) => [state.keys[idx], store]),\n state.collType\n );\n\n const values = flexDerived(\n state.stores,\n auto\n ? ($stores) => fn(index$stores($stores))\n : ($stores, _set) => fn(index$stores($stores), _set),\n initialValue\n );\n\n function set(newColl) {\n state = deriveState(newColl);\n values.set(state.stores);\n }\n\n return {\n set,\n subscribe: values.subscribe,\n };\n}\n\nexport default collDerived;\n","export const ALWAYS_VALID = { valid: true };\n","const REQUIRED_SPECMA_FNS = [\n \"and\",\n \"getMessage\",\n \"getPred\",\n \"getSpread\",\n \"isOpt\",\n \"validatePred\",\n];\n\nconst CONFIG_ERROR_MSG =\n \"SvelteSpecma must be configured with a valid Specma version.\";\n\nexport let specma = undefined;\n\nexport function ensureConfigured() {\n if (!specma) {\n throw new TypeError(CONFIG_ERROR_MSG);\n }\n}\n\nexport default function configure(specmaFns) {\n if (\n !specmaFns ||\n REQUIRED_SPECMA_FNS.some((key) => typeof specmaFns[key] !== \"function\")\n ) {\n throw new TypeError(CONFIG_ERROR_MSG);\n }\n specma = specmaFns;\n}\n","import { tick } from \"svelte\";\nimport { derived, get as getStoreValue, writable } from \"svelte/store\";\nimport { ALWAYS_VALID } from \"./constants\";\nimport { countPathAncestors, equals, getPath, keepForwardPath } from \"./util\";\nimport collDerived from \"./collDerived\";\nimport { specma, ensureConfigured } from \"./configure\";\n\nconst alwaysTrue = () => true;\nconst isMissing = (x) => [undefined, null, \"\"].includes(x);\nconst defaultChangePred = (a, b) => !equals(a, b);\n\nconst reqSpec = (x) => !isMissing(x) || specma.getMessage(\"isRequired\");\n\nexport default function predSpecable(\n initialValue,\n { changePred = defaultChangePred, id, required, spec, onSubmit } = {},\n _extra = {}\n) {\n ensureConfigured();\n const { and, getPred, validatePred } = specma;\n\n const { getAncestor } = _extra;\n const pred = getPred(spec) || alwaysTrue;\n const isRequired = !!required;\n const ownSpec = isRequired ? and(reqSpec, pred) : pred;\n\n const contextStores = {};\n const context = collDerived(contextStores);\n\n function addContext(relPath) {\n /* If `getFrom` has already been called once,\n * context store is already tracking the value. */\n if (contextStores[relPath]) return;\n\n const ancestor = getAncestor(countPathAncestors(relPath));\n if (!ancestor) return;\n\n const pathSinceAncestor = keepForwardPath(relPath);\n\n contextStores[relPath] = derived(ancestor, ($ancestor, set) => {\n const ancestorValue = $ancestor.value;\n if (!ancestorValue) return;\n\n const curr = contextStores[relPath].value;\n const next = getPath(pathSinceAncestor, ancestorValue);\n if (!equals(curr, next)) {\n contextStores[relPath].value = next;\n set(next);\n }\n });\n context.set(contextStores);\n\n /* If context has just been created, it won't be accessible\n * in the derived store at first.\n * In that case, return the static store value. */\n return getPath(pathSinceAncestor, getStoreValue(ancestor).value);\n }\n\n let currPromise;\n let _initialValue = initialValue;\n\n const active = writable(false);\n const submitting = writable(false);\n const value = writable(_initialValue);\n\n const store = derived(\n [active, value, context, submitting],\n ([$active, $value, $context, $submitting], set) => {\n currPromise = undefined;\n\n function getFrom(relPath) {\n if (!contextStores[relPath]) {\n return addContext(relPath);\n }\n return $context[relPath];\n }\n\n const shouldValidate = $active && ($value !== undefined || required);\n\n const result = enhanceResult(\n shouldValidate ? validatePred(ownSpec, $value, getFrom) : ALWAYS_VALID\n );\n const baseArgs = {\n active: $active,\n changePred,\n initialValue: _initialValue,\n id,\n result,\n submitting: $submitting,\n value: $value,\n };\n\n currPromise = result.promise;\n\n set(interpretState(baseArgs));\n\n if (result.valid === null) {\n result.promise.then((resolvedResult) => {\n /* Promise might be outdated */\n if (result.promise !== currPromise) return;\n\n set(interpretState({ ...baseArgs, result: resolvedResult }));\n });\n }\n }\n );\n\n async function activate(bool = true) {\n active.set(bool);\n await tick();\n const res = await currPromise;\n return res.valid;\n }\n\n async function submit() {\n if (!onSubmit) return;\n submitting.set(true);\n const valid = await activate();\n if (valid) {\n const currValue = getStoreValue(value);\n await onSubmit(currValue);\n }\n submitting.set(false);\n }\n\n return {\n id,\n isRequired,\n spec: pred,\n\n activate,\n\n reset(newValue = _initialValue) {\n _initialValue = newValue;\n this.activate(false);\n this.set(newValue);\n },\n\n set: (newValue, shouldActivate = false) => {\n value.set(newValue);\n if (shouldActivate) activate();\n },\n\n submit,\n\n subscribe: store.subscribe,\n };\n}\n\nfunction enhanceResult(res) {\n return {\n ...res,\n promise: res.promise\n ? res.promise.then((promised) => enhanceResult(promised))\n : Promise.resolve(res),\n };\n}\n\nfunction interpretState({\n active,\n changePred,\n id,\n initialValue,\n result,\n submitting,\n value,\n}) {\n const changed = changePred(value, initialValue);\n return {\n active,\n changed,\n error: result.valid === false && result.reason,\n id,\n initialValue,\n promise: result.promise || Promise.resolve(result),\n submitting,\n valid: !!result.valid,\n validating: result.valid === null,\n value: changed ? value : initialValue,\n };\n}\n","import { get as getStoreValue, writable } from \"svelte/store\";\nimport collDerived from \"./collDerived\";\nimport flexDerived from \"./flexDerived\";\nimport predSpecable from \"./predSpecable\";\nimport {\n entries,\n fromEntries,\n genRandomId,\n get,\n isColl,\n keys,\n merge,\n typeOf,\n values,\n} from \"./util\";\nimport { specma, ensureConfigured } from \"./configure\";\n\nexport default function collSpecable(\n initialValue,\n { changePred, fields, getId, id, required, spec, onSubmit } = {},\n _extra = {}\n) {\n ensureConfigured();\n const { getPred, getSpread, isOpt } = specma;\n\n let collValue = initialValue; // For static properties\n let isUndef = collValue === undefined;\n\n const { getAncestor } = _extra;\n const collDefiner = [fields, spec, initialValue].find(isColl);\n const collType = typeOf(collDefiner);\n const isRequired = required && !isOpt(required);\n const spreadGetId = getSpread(getId);\n const spreadSpec = getSpread(spec);\n const spreadFields = getSpread(fields);\n const spreadRequired = getSpread(required);\n const isSpread =\n spreadSpec ||\n spreadFields ||\n spreadRequired ||\n spreadGetId ||\n collType === \"array\";\n\n const valueKeys = isSpread ? keys(initialValue) : [];\n const allKeys = new Set(\n fields\n ? [...keys(fields), ...valueKeys]\n : [...keys(spec), ...keys(required), ...valueKeys]\n );\n\n const ownGetId = getPred(getId);\n const idGen = (v, k) => {\n if (ownGetId) return ownGetId(v, k);\n if (collType === \"array\") return genRandomId();\n return k;\n };\n\n const ownSpecable = predSpecable(\n initialValue,\n {\n changePred: getPred(changePred),\n id,\n required: isRequired,\n spec,\n },\n _extra\n );\n\n const createChildEntry = (key, val) => {\n const subChangePred = get(key, changePred) || getSpread(changePred);\n const subVal = val;\n const subSpec = get(key, spec) || spreadSpec;\n const subGetId = get(key, getId) || spreadGetId;\n const subId = idGen(subVal, key);\n const subFields = get(key, fields) || spreadFields;\n const subRequired = get(key, required) || spreadRequired;\n\n const subStore = _extra.specable(\n subVal,\n {\n spec: subSpec,\n changePred: subChangePred,\n id: subId,\n getId: subGetId,\n fields: subFields,\n required: subRequired,\n },\n {\n getAncestor: (n) =>\n n <= 1 || !getAncestor ? ownSpecable : getAncestor(n - 1),\n }\n );\n\n return [key, { ...subStore, id: subId }];\n };\n\n let childrenStores = fromEntries(\n [...allKeys].map((key) => createChildEntry(key, get(key, initialValue))),\n collType\n );\n const children = writable(childrenStores);\n const submitting = writable(false);\n\n const derivedValue = collDerived(childrenStores, ($childrenStores) => {\n if (isUndef) return undefined;\n\n const $childrenEntries = entries($childrenStores);\n const $childrenValues = $childrenEntries.map(([key, state]) => [\n key,\n state.value,\n ]);\n const childrenValue = fromEntries($childrenValues, collType);\n const value = isSpread ? childrenValue : merge(collValue, childrenValue);\n isUndef = value === undefined;\n ownSpecable.set(value);\n return value;\n });\n\n const aggregateStatusStores = () => [\n derivedValue,\n submitting,\n ownSpecable,\n ...values(childrenStores),\n ];\n\n const status = flexDerived(aggregateStatusStores(), ($statusStores) => {\n const [, $submitting, $ownSpecable, ...$children] = $statusStores;\n\n const combined = isUndef\n ? $ownSpecable\n : [$ownSpecable, ...$children].reduce(combineChildren);\n\n if (combined.active !== false) ownSpecable.activate();\n\n const { value, error } = $ownSpecable;\n\n const details = Object.fromEntries([\n [\"_\", $ownSpecable],\n ...(isUndef ? [] : $children.map((child) => [child.id, child])),\n ]);\n\n const errors = detailsToErrors(details, id);\n const collErrors = errors.filter(({ isColl }) => isColl);\n\n return {\n ...combined,\n id,\n initialValue: $ownSpecable.initialValue,\n value,\n error,\n errors,\n collErrors,\n details,\n submitting: $submitting,\n };\n });\n\n function setChildrenStores(newChildrenStores) {\n childrenStores = newChildrenStores;\n children.set(newChildrenStores);\n derivedValue.set(newChildrenStores);\n status.set(aggregateStatusStores());\n }\n\n function addChildren(coll) {\n if (!coll) return;\n\n const newEntries = keys(coll).map((key) =>\n createChildEntry(key, get(key, coll))\n );\n const updatedStores = fromEntries(\n [...entries(childrenStores), ...newEntries],\n collType\n );\n setChildrenStores(updatedStores);\n }\n\n function removeChildrenById(idsToRemove = []) {\n if (idsToRemove.length < 1) return;\n\n const updatedStores = fromEntries(\n entries(childrenStores).filter(\n ([, store]) => !idsToRemove.includes(store.id)\n ),\n collType\n );\n setChildrenStores(updatedStores);\n }\n\n function setValue(coll, partial = false) {\n collValue = partial && !isSpread ? merge(collValue, coll) : coll;\n isUndef = collValue === undefined;\n ownSpecable.set(collValue);\n\n const childrenEntries = entries(childrenStores);\n\n childrenEntries.forEach(([key, store]) => {\n const newValue = get(key, coll);\n if (partial && newValue === undefined) return;\n store.set(newValue, partial);\n });\n if (!isSpread) return;\n\n /* If collection allows spread children... */\n\n /* Add `coll` entries that are not yet part of the children stores. */\n const childrenKeys = keys(childrenStores);\n const missingChildren = fromEntries(\n entries(coll).filter(([key]) => !childrenKeys.includes(key)),\n collType\n );\n addChildren(missingChildren);\n\n if (partial) return;\n\n /* If update is not partial, remove children stores that do not store\n * a collection value anymore (garbage collection). */\n const collKeys = keys(coll);\n const unusedIds = childrenEntries.reduce((acc, [key, childStore]) => {\n return collKeys.includes(key) ? acc : [...acc, childStore.id];\n }, []);\n removeChildrenById(unusedIds);\n }\n\n function activate(bool = true) {\n const storesToActivate = [\n ownSpecable,\n ...(isUndef ? [] : values(childrenStores)),\n ];\n const promises = storesToActivate.map((store) => {\n const promise = store.activate(bool);\n return promise.then((valid) => {\n if (valid) return valid;\n throw valid;\n });\n });\n return Promise.all(promises)\n .then(() => true)\n .catch(() => false);\n }\n\n async function submit() {\n if (!onSubmit) return;\n submitting.set(true);\n const valid = await activate();\n if (valid) {\n const currValue = getStoreValue(ownSpecable).value;\n await onSubmit(currValue);\n }\n submitting.set(false);\n }\n\n return {\n id,\n isRequired,\n spec,\n stores: childrenStores,\n\n activate,\n\n add(coll) {\n if (coll !== undefined) isUndef = false;\n addChildren(coll);\n return this;\n },\n\n getChild(path = []) {\n const reduced = path.reduce(\n (acc, key) => {\n const { children } = acc;\n if (!children) return { res: null };\n const childStore = get(key, children);\n if (!childStore) return { res: null };\n return {\n res: childStore,\n children: childStore.getChildren ? childStore.getChildren() : [],\n };\n },\n { children: childrenStores }\n );\n return reduced.res;\n },\n\n getChildren() {\n return childrenStores;\n },\n\n remove(idsToRemove = []) {\n removeChildrenById(idsToRemove);\n return this;\n },\n\n reset(newInitialValue = initialValue) {\n setValue(newInitialValue, false);\n activate(false);\n return this;\n },\n\n set(coll, partial = false, shouldActivate = false) {\n setValue(coll, partial);\n if (shouldActivate) activate();\n return this;\n },\n\n update: (fn) => {\n setChildrenStores(fn(childrenStores));\n return this;\n },\n\n children: {\n subscribe: children.subscribe,\n },\n\n submit,\n\n subscribe: status.subscribe,\n };\n}\n\nfunction combineChildren(a, b) {\n const validating = a.validating || b.validating;\n return {\n active: a.active === b.active ? b.active : null,\n changed: a.changed || b.changed,\n valid: validating ? null : a.valid && b.valid,\n validating,\n };\n}\n\nconst liftError = (parentId) => ({ path, error, ...rest }) => {\n const newPath = parentId === undefined ? path : [parentId, ...path];\n return {\n ...rest,\n path: newPath,\n which: newPath.join(\".\"),\n error,\n };\n};\n\nfunction detailsToErrors(details, parentId) {\n return Object.entries(details)\n .flatMap(([key, status]) => {\n if (!status.details) {\n if (!status.error) return [];\n if (key === \"_\") {\n return [{ path: [], error: status.error, isColl: true }];\n }\n return [summarizeStatusError(status)];\n }\n\n const subErrors = detailsToErrors(status.details, details.id);\n return subErrors.map(liftError(status.id));\n })\n .map(liftError(parentId));\n}\n\nfunction summarizeStatusError({ id, error }) {\n return { path: [id], which: id, error };\n}\n","import { identity } from \"./util\";\n\nexport default function register(el, storeOrArgs) {\n let args = normalizeArgs(storeOrArgs);\n if (!el || !args.store) return;\n\n let unsub;\n listen();\n\n function blurHandler() {\n args.store.activate();\n }\n\n function inputHandler(e) {\n args.store.set(args.toValue(e.target.value));\n }\n\n function listen() {\n unsub = args.store.subscribe(({ value }) => {\n const elValue = args.toInput(value);\n if (el.value !== elValue) el.value = elValue;\n });\n el.addEventListener(\"blur\", blurHandler);\n el.addEventListener(\"input\", inputHandler);\n }\n\n function unlisten() {\n unsub();\n el.removeEventListener(\"blur\", blurHandler);\n el.removeEventListener(\"input\", inputHandler);\n }\n\n return {\n destroy: unlisten,\n update(newArgs) {\n unlisten();\n if (!newArgs) return;\n args = normalizeArgs(newArgs);\n listen();\n },\n };\n}\n\nfunction normalizeArgs(storeOrArgs) {\n if (!storeOrArgs) return {};\n\n if (!Array.isArray(storeOrArgs)) {\n return {\n store: storeOrArgs,\n toInput: (x = \"\") => x,\n toValue: identity,\n };\n }\n\n const [store, { toInput = identity, toValue = identity } = {}] = storeOrArgs;\n return { store, toInput, toValue };\n}\n","import collSpecable from \"./collSpecable\";\nimport predSpecable from \"./predSpecable\";\nimport { isColl, isStore } from \"./util\";\n\nexport default function specable(initialValue, options = {}, _extra) {\n if (isStore(initialValue)) return initialValue;\n\n const collCandidate = options.fields || options.spec || initialValue;\n\n if (isColl(collCandidate)) {\n return collSpecable(initialValue, options, { ..._extra, specable });\n }\n\n return predSpecable(initialValue, options, _extra);\n}\n"],"names":["identity","x","noop","flexDerived","initialStores","fn","initialValue","_stores","$stores","writable","auto","length","mainStore","readable","publish","initialized","cleanup","pending","unsubs","Map","values","updateUnsubs","stores","stopUnusedSubs","map","store","get","usedStores","forEach","unsub","includes","stopSubscriptions","updateValues","sync","vals","reduce","acc","has","result","unsubscribe","subscribe","i","set","value","stop","exclude","update","prev","filter","include","isColl","typeOf","isFunc","isStore","obj","toString","call","split","slice","toLowerCase","entries","coll","array","v","object","Object","fromEntries","toType","val","keys","merge","colls","type","every","collTypes","join","TypeError","assign","Error","genRandomId","Math","random","toFixed","key","undefined","getPath","path","parent","countPathAncestors","str","match","keepForwardPath","node","startsWith","index","parseInt","isNaN","equals","a","b","eqBy","defaultEqBy","_a","_b","fastEquals","Date","valueOf","removeUndefined","deriveState","storesEntries","collType","collDerived","initialColl","state","index$stores","idx","_set","newColl","ALWAYS_VALID","valid","REQUIRED_SPECMA_FNS","CONFIG_ERROR_MSG","specma","ensureConfigured","configure","specmaFns","some","alwaysTrue","isMissing","defaultChangePred","reqSpec","getMessage","predSpecable","_extra","submit","onSubmit","submitting","activate","currValue","getStoreValue","bool","active","tick","currPromise","res","changePred","id","required","spec","and","getPred","validatePred","getAncestor","pred","isRequired","ownSpec","contextStores","context","addContext","relPath","ancestor","pathSinceAncestor","derived","$ancestor","ancestorValue","curr","next","_initialValue","$active","$value","$context","$submitting","getFrom","shouldValidate","enhanceResult","baseArgs","promise","interpretState","then","resolvedResult","reset","newValue","shouldActivate","promised","Promise","resolve","changed","error","reason","validating","collSpecable","ownSpecable","fields","getId","getSpread","isOpt","collValue","isUndef","collDefiner","find","spreadGetId","spreadSpec","spreadFields","spreadRequired","isSpread","valueKeys","allKeys","Set","ownGetId","idGen","k","createChildEntry","subChangePred","subVal","subSpec","subGetId","subId","subFields","subRequired","subStore","specable","n","childrenStores","children","derivedValue","$childrenStores","$childrenEntries","$childrenValues","childrenValue","aggregateStatusStores","status","$statusStores","$ownSpecable","$children","combined","combineChildren","details","child","errors","detailsToErrors","collErrors","setChildrenStores","newChildrenStores","addChildren","newEntries","updatedStores","removeChildrenById","idsToRemove","setValue","partial","childrenEntries","childrenKeys","missingChildren","collKeys","unusedIds","childStore","storesToActivate","promises","all","add","getChild","reduced","getChildren","remove","newInitialValue","liftError","parentId","rest","newPath","which","flatMap","summarizeStatusError","subErrors","register","el","storeOrArgs","args","normalizeArgs","listen","blurHandler","inputHandler","e","toValue","target","elValue","toInput","addEventListener","unlisten","removeEventListener","destroy","newArgs","Array","isArray","options","collCandidate"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"svelte-specma.umd.js","sources":["../src/flexDerived.js","../src/util.js","../src/collDerived.js","../src/constants.js","../src/configure.js","../src/writableByValue.js","../src/predSpecable.js","../src/collSpecable.js","../src/register.js","../src/specable.js"],"sourcesContent":["import { readable, writable } from \"svelte/store\";\n\nconst identity = (x) => x;\nconst noop = () => {};\n\nfunction flexDerived(initialStores = [], fn = identity, initialValue) {\n /* Used for ordering values */\n let _stores = initialStores;\n /* Store of stores. When last subscriber unsubscribes,\n * will stop all stores subs. */\n const $stores = writable(initialStores);\n\n /* Callback function can use a second argument, a `publish` function to set result asynchronously.\n * If not used, the return value of the function is the actual result to publish.\n * Otherwise, the return value might be a function to call before each execution\n * and when store is unsubscribed. */\n const auto = fn.length < 2;\n\n /* Use a readable store to manage subscribers. */\n const mainStore = readable(initialValue, (publish) => {\n let initialized = false;\n\n let cleanup = noop;\n let pending = 0;\n let unsubs = new Map();\n let values = new Map();\n\n /* Unsubscribe saved stores not included in a new list of stores\n * and create a new Map of unsub by store, reusing old ones when they exist. */\n function updateUnsubs(stores = []) {\n stopUnusedSubs(stores);\n unsubs = new Map(stores.map((store) => [store, unsubs.get(store)]));\n }\n\n function stopUnusedSubs(usedStores = []) {\n unsubs.forEach((unsub, store) => {\n if (!usedStores.includes(store) && unsub) unsub();\n });\n }\n\n function stopSubscriptions() {\n unsubs.forEach((unsub) => unsub && unsub());\n }\n\n /* Create a new map of values by store, reusing old ones when they exist. */\n function updateValues(stores = []) {\n values = new Map(stores.map((store) => [store, values.get(store)]));\n }\n\n /* Recompute and publish the combined result on values,\n * using `_stores` to ensure values order consistency. */\n function sync() {\n if (pending) return;\n cleanup();\n const vals = _stores.reduce(\n (acc, store) => (values.has(store) ? [...acc, values.get(store)] : acc),\n []\n );\n const result = fn(vals, publish);\n\n if (auto) {\n publish(result);\n } else {\n cleanup = typeof result === \"function\" ? result : noop;\n }\n }\n\n const unsubscribe = $stores.subscribe((stores) => {\n updateUnsubs(stores);\n updateValues(stores);\n\n /* Subscribe to each store if not alreay done.\n * When a any store value changes,\n * combined result will be updated and published. */\n _stores = [];\n stores.forEach((store, i) => {\n _stores[i] = store;\n\n if (!unsubs.get(store)) {\n unsubs.set(\n store,\n store.subscribe(\n (value) => {\n values.set(store, value);\n pending &= ~(1 << i);\n if (initialized) sync();\n },\n () => {\n pending |= 1 << i;\n }\n )\n );\n }\n });\n if (initialized) sync();\n });\n\n initialized = true;\n sync();\n\n return function stop() {\n unsubscribe();\n stopSubscriptions();\n cleanup();\n };\n });\n\n /* Exclude one or mode stores from the list. */\n function exclude(...stores) {\n $stores.update((prev) => prev.filter((store) => !stores.includes(store)));\n }\n\n /* Include one or more stores into the list. */\n function include(...stores) {\n $stores.update((prev) => [...prev, ...stores]);\n }\n\n return {\n exclude,\n include,\n set: $stores.set,\n stores: $stores,\n subscribe: mainStore.subscribe,\n update: $stores.update,\n };\n}\n\nexport default flexDerived;\n","import fastEquals from \"fast-deep-equal\";\n\nexport const identity = (x) => x;\nexport const isColl = (x) => [\"array\", \"map\", \"object\"].includes(typeOf(x));\nexport const isFunc = (x) => typeof x === \"function\";\nexport const isStore = (x) => x && x.subscribe && isFunc(x.subscribe);\n\nexport const typeOf = (obj) =>\n ({}.toString.call(obj).split(\" \")[1].slice(0, -1).toLowerCase());\n\nexport function entries(coll) {\n const fn = {\n array: () => coll.map((v, i) => [i, v]),\n map: () => [...coll.entries()],\n object: () => Object.entries(coll),\n }[typeOf(coll)];\n\n return fn ? fn(coll) : [];\n}\n\nexport function fromEntries(entries, toType) {\n const fn = {\n array: () => entries.map(([, val]) => val),\n map: () => new Map(entries),\n object: () => Object.fromEntries(entries),\n }[toType];\n return fn ? fn() : fromEntries(entries, \"map\");\n}\n\nexport function values(coll) {\n const fn = {\n array: () => [...coll],\n map: () => [...coll.values()],\n object: () => Object.values(coll),\n }[typeOf(coll)];\n\n return fn ? fn(coll) : [];\n}\n\nexport function keys(coll) {\n const fn = {\n array: () => coll.map((v, i) => i),\n map: () => [...coll.keys()],\n object: () => Object.keys(coll),\n }[typeOf(coll)];\n\n return fn ? fn(coll) : [];\n}\n\n/* Merge multiple collections of identical type with right to left arguments precedence. */\nexport function merge(...args) {\n const colls = args.filter(isColl);\n const type = typeOf(colls[0]);\n if (!colls.every((coll) => typeOf(coll) === type)) {\n const collTypes = colls.map(typeOf).join(\", \");\n throw new TypeError(\n `Collections must be of same type. Received '${collTypes}'.`\n );\n }\n\n const fn = {\n array: () =>\n colls.reduce((acc, coll) => {\n if (coll.length >= acc.length) return coll;\n return [...coll, ...acc.slice(coll.length)];\n }, []),\n map: () => new Map(colls.map((coll) => coll.entries())),\n object: () => Object.assign({}, ...colls),\n }[type];\n\n if (!fn) throw new Error(`'merge' not implemented yet for ${type}`);\n\n return fn();\n}\n\nexport function genRandomId() {\n return (Math.random() * 1e9).toFixed(0);\n}\n\nexport function get(key, coll) {\n const fn = {\n array: () => coll[key],\n map: () => coll.get(key),\n object: () => coll[key],\n }[typeOf(coll)];\n\n return fn ? fn(key, coll) : undefined;\n}\n\nexport function getPath(path = [], value) {\n return path.reduce((parent, key) => get(key, parent), value);\n}\n\nexport function countPathAncestors(str = \"\") {\n return (str.match(/\\.\\.\\/|\\.\\.$/g) || []).length;\n}\n\nexport function keepForwardPath(str = \"\") {\n return str.split(\"/\").reduce((acc, node) => {\n if (!node || node.startsWith(\".\")) return acc;\n const index = parseInt(node, 10);\n return [...acc, isNaN(index) ? node : index];\n }, []);\n}\n\nexport function equals(a, b, eqBy = defaultEqBy) {\n const [_a, _b] = [a, b].map(eqBy);\n return _a === _b || fastEquals(_a, _b);\n}\n\nfunction defaultEqBy(x) {\n if (x instanceof Date) return x.valueOf();\n if (isColl(x)) return removeUndefined(x);\n return x;\n}\n\nfunction removeUndefined(x) {\n if (!isColl(x)) return x;\n return fromEntries(\n entries(x).reduce(\n (acc, [key, val]) =>\n val === undefined ? acc : [...acc, [key, removeUndefined(val)]],\n []\n ),\n typeOf(x)\n );\n}\n","import flexDerived from \"./flexDerived\";\nimport { entries, fromEntries, identity, typeOf } from \"./util\";\n\nfunction deriveState(coll) {\n const storesEntries = entries(coll);\n return {\n coll,\n collType: typeOf(coll),\n storesEntries,\n keys: storesEntries.map(([key]) => key),\n stores: storesEntries.map(([, store]) => store),\n };\n}\n\nfunction collDerived(initialColl, fn = identity, initialValue) {\n let state = deriveState(initialColl);\n\n /* The callback passed to `flexDerived` can have arity 1 or 2.\n * The arity should match the one of the provided function.\n * When using arity 2, a set function is provided so that\n * result can be used asynchronously */\n const auto = fn.length < 2;\n const index$stores = ($stores) =>\n fromEntries(\n $stores.map((store, idx) => [state.keys[idx], store]),\n state.collType\n );\n\n const values = flexDerived(\n state.stores,\n auto\n ? ($stores) => fn(index$stores($stores))\n : ($stores, _set) => fn(index$stores($stores), _set),\n initialValue\n );\n\n function set(newColl) {\n state = deriveState(newColl);\n values.set(state.stores);\n }\n\n return {\n set,\n subscribe: values.subscribe,\n };\n}\n\nexport default collDerived;\n","export const ALWAYS_VALID = { valid: true };\n","const REQUIRED_SPECMA_FNS = [\n \"and\",\n \"getMessage\",\n \"getPred\",\n \"getSpread\",\n \"isOpt\",\n \"validatePred\",\n];\n\nconst CONFIG_ERROR_MSG =\n \"SvelteSpecma must be configured with a valid Specma version.\";\n\nexport let specma = undefined;\n\nexport function ensureConfigured() {\n if (!specma) {\n throw new TypeError(CONFIG_ERROR_MSG);\n }\n}\n\nexport default function configure(specmaFns) {\n if (\n !specmaFns ||\n REQUIRED_SPECMA_FNS.some((key) => typeof specmaFns[key] !== \"function\")\n ) {\n throw new TypeError(CONFIG_ERROR_MSG);\n }\n specma = specmaFns;\n}\n","import { writable } from \"svelte/store\";\nimport equals from \"fast-deep-equal\";\n\n/* Limited version of `writable` store that updates only\n * if the new set value is different by value (deep equality) */\nexport default function wriableByValue(initialValue, ...rest) {\n let _value = initialValue;\n const store = writable(initialValue, ...rest);\n return {\n set(newValue) {\n if (equals(newValue, _value)) return;\n _value = newValue;\n store.set(_value);\n },\n subscribe: store.subscribe,\n };\n}\n","import { tick } from \"svelte\";\nimport { derived, get as getStoreValue, writable } from \"svelte/store\";\nimport { ALWAYS_VALID } from \"./constants\";\nimport { countPathAncestors, equals, getPath, keepForwardPath } from \"./util\";\nimport collDerived from \"./collDerived\";\nimport { specma, ensureConfigured } from \"./configure\";\nimport writableByValue from \"./writableByValue\";\n\nconst alwaysTrue = () => true;\nconst isMissing = (x) => [undefined, null, \"\"].includes(x);\nconst defaultChangePred = (a, b) => !equals(a, b);\n\nconst reqSpec = (x) => !isMissing(x) || specma.getMessage(\"isRequired\");\n\nexport default function predSpecable(\n initialValue,\n { changePred = defaultChangePred, id, required, spec, onSubmit } = {},\n _extra = {}\n) {\n ensureConfigured();\n const { and, getPred, validatePred } = specma;\n\n const { getAncestor } = _extra;\n const pred = getPred(spec) || alwaysTrue;\n const isRequired = !!required;\n const ownSpec = isRequired ? and(reqSpec, pred) : pred;\n\n const contextStores = {};\n const context = collDerived(contextStores);\n\n function addContext(relPath) {\n /* If `getFrom` has already been called once,\n * context store is already tracking the value. */\n if (contextStores[relPath]) return;\n\n const ancestor = getAncestor(countPathAncestors(relPath));\n if (!ancestor) return;\n\n const pathSinceAncestor = keepForwardPath(relPath);\n\n contextStores[relPath] = derived(ancestor, ($ancestor, set) => {\n const ancestorValue = $ancestor.value;\n if (!ancestorValue) return;\n\n const curr = contextStores[relPath].value;\n const next = getPath(pathSinceAncestor, ancestorValue);\n if (!equals(curr, next)) {\n contextStores[relPath].value = next;\n set(next);\n }\n });\n context.set(contextStores);\n\n /* If context has just been created, it won't be accessible\n * in the derived store at first.\n * In that case, return the static store value. */\n return getPath(pathSinceAncestor, getStoreValue(ancestor).value);\n }\n\n let currPromise;\n let _initialValue = initialValue;\n\n const active = writable(false);\n const submitting = writable(false);\n const value = writableByValue(_initialValue);\n\n const store = derived(\n [active, value, context, submitting],\n ([$active, $value, $context, $submitting], set) => {\n currPromise = undefined;\n\n function getFrom(relPath) {\n if (!contextStores[relPath]) {\n return addContext(relPath);\n }\n return $context[relPath];\n }\n\n const shouldValidate = $active && ($value !== undefined || required);\n\n const result = enhanceResult(\n shouldValidate ? validatePred(ownSpec, $value, getFrom) : ALWAYS_VALID\n );\n const baseArgs = {\n active: $active,\n changePred,\n initialValue: _initialValue,\n id,\n result,\n submitting: $submitting,\n value: $value,\n };\n\n currPromise = result.promise;\n\n set(interpretState(baseArgs));\n\n if (result.valid === null) {\n result.promise.then((resolvedResult) => {\n /* Promise might be outdated */\n if (result.promise !== currPromise) return;\n\n set(interpretState({ ...baseArgs, result: resolvedResult }));\n });\n }\n }\n );\n\n async function activate(bool = true) {\n active.set(bool);\n await tick();\n const res = await currPromise;\n return res.valid;\n }\n\n async function submit() {\n if (!onSubmit) return;\n submitting.set(true);\n const valid = await activate();\n if (valid) {\n const currValue = getStoreValue(value);\n await onSubmit(currValue);\n }\n submitting.set(false);\n }\n\n return {\n id,\n isRequired,\n spec: pred,\n\n activate,\n\n reset(newValue = _initialValue) {\n _initialValue = newValue;\n this.activate(false);\n this.set(newValue);\n },\n\n set: (newValue, shouldActivate = false) => {\n value.set(newValue);\n if (shouldActivate) activate();\n },\n\n submit,\n\n subscribe: store.subscribe,\n };\n}\n\nfunction enhanceResult(res) {\n return {\n ...res,\n promise: res.promise\n ? res.promise.then((promised) => enhanceResult(promised))\n : Promise.resolve(res),\n };\n}\n\nfunction interpretState({\n active,\n changePred,\n id,\n initialValue,\n result,\n submitting,\n value,\n}) {\n const changed = changePred(value, initialValue);\n return {\n active,\n changed,\n error: result.valid === false && result.reason,\n id,\n initialValue,\n promise: result.promise || Promise.resolve(result),\n submitting,\n valid: !!result.valid,\n validating: result.valid === null,\n value: changed ? value : initialValue,\n };\n}\n","import { get as getStoreValue, writable } from \"svelte/store\";\nimport collDerived from \"./collDerived\";\nimport flexDerived from \"./flexDerived\";\nimport predSpecable from \"./predSpecable\";\nimport {\n entries,\n fromEntries,\n genRandomId,\n get,\n isColl,\n keys,\n merge,\n typeOf,\n values,\n} from \"./util\";\nimport { specma, ensureConfigured } from \"./configure\";\n\nexport default function collSpecable(\n initialValue,\n { changePred, fields, getId, id, required, spec, onSubmit } = {},\n _extra = {}\n) {\n ensureConfigured();\n const { getPred, getSpread, isOpt } = specma;\n\n let collValue = initialValue; // For static properties\n let isUndef = collValue === undefined;\n\n const { getAncestor } = _extra;\n const collDefiner = [fields, spec, initialValue].find(isColl);\n const collType = typeOf(collDefiner);\n const isRequired = required && !isOpt(required);\n const spreadGetId = getSpread(getId);\n const spreadSpec = getSpread(spec);\n const spreadFields = getSpread(fields);\n const spreadRequired = getSpread(required);\n const isSpread =\n spreadSpec ||\n spreadFields ||\n spreadRequired ||\n spreadGetId ||\n collType === \"array\";\n\n const valueKeys = isSpread ? keys(initialValue) : [];\n const allKeys = new Set(\n fields\n ? [...keys(fields), ...valueKeys]\n : [...keys(spec), ...keys(required), ...valueKeys]\n );\n\n const ownGetId = getPred(getId);\n const idGen = (v, k) => {\n if (ownGetId) return ownGetId(v, k);\n if (collType === \"array\") return genRandomId();\n return k;\n };\n\n const ownSpecable = predSpecable(\n initialValue,\n {\n changePred: getPred(changePred),\n id,\n required: isRequired,\n spec,\n },\n _extra\n );\n\n const createChildEntry = (key, val) => {\n const subChangePred = get(key, changePred) || getSpread(changePred);\n const subVal = val;\n const subSpec = get(key, spec) || spreadSpec;\n const subGetId = get(key, getId) || spreadGetId;\n const subId = idGen(subVal, key);\n const subFields = get(key, fields) || spreadFields;\n const subRequired = get(key, required) || spreadRequired;\n\n const subStore = _extra.specable(\n subVal,\n {\n spec: subSpec,\n changePred: subChangePred,\n id: subId,\n getId: subGetId,\n fields: subFields,\n required: subRequired,\n },\n {\n getAncestor: (n) =>\n n <= 1 || !getAncestor ? ownSpecable : getAncestor(n - 1),\n }\n );\n\n return [key, { ...subStore, id: subId }];\n };\n\n let childrenStores = fromEntries(\n [...allKeys].map((key) => createChildEntry(key, get(key, initialValue))),\n collType\n );\n const children = writable(childrenStores);\n const submitting = writable(false);\n\n const derivedValue = collDerived(childrenStores, ($childrenStores) => {\n if (isUndef) return undefined;\n\n const $childrenEntries = entries($childrenStores);\n const $childrenValues = $childrenEntries.map(([key, state]) => [\n key,\n state.value,\n ]);\n const childrenValue = fromEntries($childrenValues, collType);\n const value = isSpread ? childrenValue : merge(collValue, childrenValue);\n isUndef = value === undefined;\n return value;\n });\n\n const aggregateStatusStores = () => [\n submitting,\n ownSpecable,\n ...values(childrenStores),\n ];\n\n const status = flexDerived(aggregateStatusStores(), ($statusStores) => {\n const [$submitting, $ownSpecable, ...$children] = $statusStores;\n\n const combined = isUndef\n ? $ownSpecable\n : [$ownSpecable, ...$children].reduce(combineChildren);\n\n if (combined.active !== false) ownSpecable.activate();\n\n const { value, error } = $ownSpecable;\n\n const details = Object.fromEntries([\n [\"_\", $ownSpecable],\n ...(isUndef ? [] : $children.map((child) => [child.id, child])),\n ]);\n\n const errors = detailsToErrors(details, id);\n const collErrors = errors.filter(({ isColl }) => isColl);\n\n return {\n ...combined,\n id,\n initialValue: $ownSpecable.initialValue,\n value,\n error,\n errors,\n collErrors,\n details,\n submitting: $submitting,\n };\n });\n\n function setChildrenStores(newChildrenStores) {\n childrenStores = newChildrenStores;\n children.set(newChildrenStores);\n derivedValue.set(newChildrenStores);\n status.set(aggregateStatusStores());\n }\n\n function addChildren(coll) {\n if (!coll) return;\n\n const newEntries = keys(coll).map((key) =>\n createChildEntry(key, get(key, coll))\n );\n const updatedStores = fromEntries(\n [...entries(childrenStores), ...newEntries],\n collType\n );\n setChildrenStores(updatedStores);\n }\n\n function removeChildrenById(idsToRemove = []) {\n if (idsToRemove.length < 1) return;\n\n const updatedStores = fromEntries(\n entries(childrenStores).filter(\n ([, store]) => !idsToRemove.includes(store.id)\n ),\n collType\n );\n\n setChildrenStores(updatedStores);\n }\n\n function setValue(coll, { partial = false, reset = false } = {}) {\n const setMethod = reset ? \"reset\" : \"set\";\n collValue = !reset && partial && !isSpread ? merge(collValue, coll) : coll;\n isUndef = collValue === undefined;\n ownSpecable[setMethod](collValue);\n\n const childrenEntries = entries(childrenStores);\n\n childrenEntries.forEach(([key, store]) => {\n const newValue = get(key, coll);\n if (partial && newValue === undefined) return;\n store[setMethod](newValue, partial);\n });\n if (!isSpread) return;\n\n /* If collection allows spread children... */\n\n /* Add `coll` entries that are not yet part of the children stores. */\n const childrenKeys = keys(childrenStores);\n const missingChildrenEntries = entries(coll).filter(\n ([key]) => !childrenKeys.includes(key)\n );\n if (missingChildrenEntries.length > 0) {\n addChildren(fromEntries(missingChildrenEntries, collType));\n }\n\n if (partial) return;\n\n /* If update is not partial, remove children stores that do not store\n * a collection value anymore (garbage collection). */\n const collKeys = keys(coll);\n const unusedIds = childrenEntries.reduce((acc, [key, childStore]) => {\n return collKeys.includes(key) ? acc : [...acc, childStore.id];\n }, []);\n removeChildrenById(unusedIds);\n }\n\n function activate(bool = true) {\n const storesToActivate = [\n ownSpecable,\n ...(isUndef ? [] : values(childrenStores)),\n ];\n const promises = storesToActivate.map((store) => {\n const promise = store.activate(bool);\n return promise.then((valid) => {\n if (valid) return valid;\n throw valid;\n });\n });\n return Promise.all(promises)\n .then(() => true)\n .catch(() => false);\n }\n\n async function submit() {\n if (!onSubmit) return;\n submitting.set(true);\n const valid = await activate();\n if (valid) {\n const currValue = getStoreValue(ownSpecable).value;\n await onSubmit(currValue);\n }\n submitting.set(false);\n }\n\n return {\n id,\n isRequired,\n spec,\n stores: childrenStores,\n\n activate,\n\n add(coll) {\n if (coll !== undefined) isUndef = false;\n addChildren(coll);\n return this;\n },\n\n getChild(path = []) {\n const reduced = path.reduce(\n (acc, key) => {\n const { children } = acc;\n if (!children) return { res: null };\n const childStore = get(key, children);\n if (!childStore) return { res: null };\n return {\n res: childStore,\n children: childStore.getChildren ? childStore.getChildren() : [],\n };\n },\n { children: childrenStores }\n );\n return reduced.res;\n },\n\n getChildren() {\n return childrenStores;\n },\n\n remove(idsToRemove = []) {\n removeChildrenById(idsToRemove);\n return this;\n },\n\n reset(newInitialValue = initialValue) {\n setValue(newInitialValue, { reset: true });\n activate(false);\n return this;\n },\n\n set(coll, partial = false, shouldActivate = false) {\n setValue(coll, { partial });\n if (shouldActivate) activate();\n return this;\n },\n\n update: (fn) => {\n setChildrenStores(fn(childrenStores));\n return this;\n },\n\n children: {\n subscribe: children.subscribe,\n },\n\n submit,\n\n subscribe: (fn) => {\n const unsub1 = derivedValue.subscribe((value) => ownSpecable.set(value));\n const unsub2 = status.subscribe(fn);\n return () => {\n unsub1();\n unsub2();\n };\n },\n };\n}\n\nfunction combineChildren(a, b) {\n const validating = a.validating || b.validating;\n return {\n active: a.active === b.active ? b.active : null,\n changed: a.changed || b.changed,\n valid: validating ? null : a.valid && b.valid,\n validating,\n };\n}\n\nconst liftError = (parentId) => ({ path, error, ...rest }) => {\n const newPath = parentId === undefined ? path : [parentId, ...path];\n return {\n ...rest,\n path: newPath,\n which: newPath.join(\".\"),\n error,\n };\n};\n\nfunction detailsToErrors(details, parentId) {\n return Object.entries(details)\n .flatMap(([key, status]) => {\n if (!status.details) {\n if (!status.error) return [];\n if (key === \"_\") {\n return [{ path: [], error: status.error, isColl: true }];\n }\n return [summarizeStatusError(status)];\n }\n\n const subErrors = detailsToErrors(status.details, details.id);\n return subErrors.map(liftError(status.id));\n })\n .map(liftError(parentId));\n}\n\nfunction summarizeStatusError({ id, error }) {\n return { path: [id], which: id, error };\n}\n","import { identity } from \"./util\";\n\nexport default function register(el, storeOrArgs) {\n let args = normalizeArgs(storeOrArgs);\n if (!el || !args.store) return;\n\n let unsub;\n listen();\n\n function blurHandler() {\n args.store.activate();\n }\n\n function inputHandler(e) {\n args.store.set(args.toValue(e.target.value));\n }\n\n function listen() {\n unsub = args.store.subscribe(({ value }) => {\n const elValue = args.toInput(value);\n if (el.value !== elValue) el.value = elValue;\n });\n el.addEventListener(\"blur\", blurHandler);\n el.addEventListener(\"input\", inputHandler);\n }\n\n function unlisten() {\n unsub();\n el.removeEventListener(\"blur\", blurHandler);\n el.removeEventListener(\"input\", inputHandler);\n }\n\n return {\n destroy: unlisten,\n update(newArgs) {\n unlisten();\n if (!newArgs) return;\n args = normalizeArgs(newArgs);\n listen();\n },\n };\n}\n\nfunction normalizeArgs(storeOrArgs) {\n if (!storeOrArgs) return {};\n\n if (!Array.isArray(storeOrArgs)) {\n return {\n store: storeOrArgs,\n toInput: (x = \"\") => x,\n toValue: identity,\n };\n }\n\n const [store, { toInput = identity, toValue = identity } = {}] = storeOrArgs;\n return { store, toInput, toValue };\n}\n","import collSpecable from \"./collSpecable\";\nimport predSpecable from \"./predSpecable\";\nimport { isColl, isStore } from \"./util\";\n\nexport default function specable(initialValue, options = {}, _extra) {\n if (isStore(initialValue)) return initialValue;\n\n const collCandidate = options.fields || options.spec || initialValue;\n\n if (isColl(collCandidate)) {\n return collSpecable(initialValue, options, { ..._extra, specable });\n }\n\n return predSpecable(initialValue, options, _extra);\n}\n"],"names":["identity","x","noop","flexDerived","initialStores","fn","initialValue","_stores","$stores","writable","auto","length","mainStore","readable","publish","initialized","cleanup","pending","unsubs","Map","values","updateUnsubs","stores","stopUnusedSubs","map","store","get","usedStores","forEach","unsub","includes","stopSubscriptions","updateValues","sync","vals","reduce","acc","has","result","unsubscribe","subscribe","i","set","value","stop","exclude","update","prev","filter","include","isColl","typeOf","isFunc","isStore","obj","toString","call","split","slice","toLowerCase","entries","coll","array","v","object","Object","fromEntries","toType","val","keys","merge","colls","type","every","collTypes","join","TypeError","assign","Error","genRandomId","Math","random","toFixed","key","undefined","getPath","path","parent","countPathAncestors","str","match","keepForwardPath","node","startsWith","index","parseInt","isNaN","equals","a","b","eqBy","defaultEqBy","_a","_b","fastEquals","Date","valueOf","removeUndefined","deriveState","storesEntries","collType","collDerived","initialColl","state","index$stores","idx","_set","newColl","ALWAYS_VALID","valid","REQUIRED_SPECMA_FNS","CONFIG_ERROR_MSG","specma","ensureConfigured","configure","specmaFns","some","wriableByValue","_value","newValue","alwaysTrue","isMissing","defaultChangePred","reqSpec","getMessage","predSpecable","_extra","submit","onSubmit","submitting","activate","currValue","getStoreValue","bool","active","tick","currPromise","res","changePred","id","required","spec","and","getPred","validatePred","getAncestor","pred","isRequired","ownSpec","contextStores","context","addContext","relPath","ancestor","pathSinceAncestor","derived","$ancestor","ancestorValue","curr","next","_initialValue","writableByValue","$active","$value","$context","$submitting","getFrom","shouldValidate","enhanceResult","baseArgs","promise","interpretState","then","resolvedResult","reset","shouldActivate","promised","Promise","resolve","changed","error","reason","validating","collSpecable","ownSpecable","fields","getId","getSpread","isOpt","collValue","isUndef","collDefiner","find","spreadGetId","spreadSpec","spreadFields","spreadRequired","isSpread","valueKeys","allKeys","Set","ownGetId","idGen","k","createChildEntry","subChangePred","subVal","subSpec","subGetId","subId","subFields","subRequired","subStore","specable","n","childrenStores","children","derivedValue","$childrenStores","$childrenEntries","$childrenValues","childrenValue","aggregateStatusStores","status","$statusStores","$ownSpecable","$children","combined","combineChildren","details","child","errors","detailsToErrors","collErrors","setChildrenStores","newChildrenStores","addChildren","newEntries","updatedStores","removeChildrenById","idsToRemove","setValue","partial","setMethod","childrenEntries","childrenKeys","missingChildrenEntries","collKeys","unusedIds","childStore","storesToActivate","promises","all","add","getChild","reduced","getChildren","remove","newInitialValue","unsub1","unsub2","liftError","parentId","rest","newPath","which","flatMap","summarizeStatusError","subErrors","register","el","storeOrArgs","args","normalizeArgs","listen","blurHandler","inputHandler","e","toValue","target","elValue","toInput","addEventListener","unlisten","removeEventListener","destroy","newArgs","Array","isArray","options","collCandidate"],"mappings":"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"}
|
package/package.json
CHANGED
package/CHANGELOG.md
DELETED
|
@@ -1,202 +0,0 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
## [1.1.6] - 2022-03-20
|
|
4
|
-
|
|
5
|
-
### Fix
|
|
6
|
-
|
|
7
|
-
- Add `submitting` to `predSpecable` status
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
## [1.1.5] - 2022-01-31
|
|
12
|
-
|
|
13
|
-
### Fix
|
|
14
|
-
|
|
15
|
-
- Allow adding to `collSpecable` when its value is `undefined`;
|
|
16
|
-
- Consider `fields` when choosing if `collSpecable`;
|
|
17
|
-
|
|
18
|
-
---
|
|
19
|
-
|
|
20
|
-
## [1.1.4] - 2021-12-21
|
|
21
|
-
|
|
22
|
-
### Fix
|
|
23
|
-
|
|
24
|
-
- Consider spread in `getId`;
|
|
25
|
-
|
|
26
|
-
---
|
|
27
|
-
|
|
28
|
-
## [1.1.3] - 2021-11-05
|
|
29
|
-
|
|
30
|
-
### Fix
|
|
31
|
-
|
|
32
|
-
- Undefined `getChildren` throws in `getChild`;
|
|
33
|
-
|
|
34
|
-
---
|
|
35
|
-
|
|
36
|
-
## [1.1.2] - 2021-11-02
|
|
37
|
-
|
|
38
|
-
### Fix
|
|
39
|
-
|
|
40
|
-
- `getChild` now properly returns an actuel store;
|
|
41
|
-
|
|
42
|
-
---
|
|
43
|
-
|
|
44
|
-
## [1.1.1] - 2021-10-28
|
|
45
|
-
|
|
46
|
-
### Fix
|
|
47
|
-
|
|
48
|
-
- Prevent tracking of sub errors when collection is `undefined`;
|
|
49
|
-
- Ensure `validate` doesn't validate sub stores when collection is `undefined`;
|
|
50
|
-
|
|
51
|
-
---
|
|
52
|
-
|
|
53
|
-
## [1.1.0] - 2021-10-28
|
|
54
|
-
|
|
55
|
-
### Fix
|
|
56
|
-
|
|
57
|
-
- Allow setting a collection to `undefined`;
|
|
58
|
-
|
|
59
|
-
---
|
|
60
|
-
|
|
61
|
-
## [1.0.2] - 2021-10-22
|
|
62
|
-
|
|
63
|
-
### Fix
|
|
64
|
-
|
|
65
|
-
- Wrong usage of regex to determine number of ancestors;
|
|
66
|
-
|
|
67
|
-
---
|
|
68
|
-
|
|
69
|
-
## [1.0.1] - 2021-10-21
|
|
70
|
-
|
|
71
|
-
### Fix
|
|
72
|
-
|
|
73
|
-
- `getAncestor` is undefined on `ownSpecable`;
|
|
74
|
-
|
|
75
|
-
### Add
|
|
76
|
-
|
|
77
|
-
- Treat trailing ".." as "../" in ancestors path;
|
|
78
|
-
|
|
79
|
-
---
|
|
80
|
-
|
|
81
|
-
## [1.0.0] - 2021-10-21
|
|
82
|
-
|
|
83
|
-
Feels like this package is ready for 1.0.0!
|
|
84
|
-
|
|
85
|
-
### Fix
|
|
86
|
-
|
|
87
|
-
- Treat only `array`, `map` and `object` as collections;
|
|
88
|
-
|
|
89
|
-
---
|
|
90
|
-
|
|
91
|
-
## [0.3.4] - 2021-10-13
|
|
92
|
-
|
|
93
|
-
### Fix
|
|
94
|
-
|
|
95
|
-
- Check equality of dates differently than objects;
|
|
96
|
-
|
|
97
|
-
### Add
|
|
98
|
-
|
|
99
|
-
- Allow defining a `changePred` function to evaluate if value has changed from initial value, with strong default. If value has not changed according to this pred, use initial value;
|
|
100
|
-
|
|
101
|
-
---
|
|
102
|
-
|
|
103
|
-
## [0.3.3] - 2021-09-02
|
|
104
|
-
|
|
105
|
-
### Add
|
|
106
|
-
|
|
107
|
-
- Possibility to activate a specable store directly with the `set` method;
|
|
108
|
-
|
|
109
|
-
---
|
|
110
|
-
|
|
111
|
-
## [0.3.2] - 2021-08-27
|
|
112
|
-
|
|
113
|
-
### Add
|
|
114
|
-
|
|
115
|
-
- `submit` method on `collSpecable` and `predSpecable` to activate then submit value while updating state to `submitting`;
|
|
116
|
-
|
|
117
|
-
---
|
|
118
|
-
|
|
119
|
-
## [0.3.1] - 2021-07-27
|
|
120
|
-
|
|
121
|
-
### Add
|
|
122
|
-
|
|
123
|
-
- `getChild` and `getChildren` methods on `collSpecable` to retrieve a child at a specified path;
|
|
124
|
-
- Improve documentation in README;
|
|
125
|
-
|
|
126
|
-
### Fix
|
|
127
|
-
|
|
128
|
-
- Fix documentation inconsistencies;
|
|
129
|
-
|
|
130
|
-
---
|
|
131
|
-
|
|
132
|
-
## [0.3.0] - 2021-07-21
|
|
133
|
-
|
|
134
|
-
### Fix
|
|
135
|
-
|
|
136
|
-
- When `collSpecable` allows spread children, add missing entries and remove deprecated children stores when using the `set` method;
|
|
137
|
-
- Properly define a `getFrom` function independant of child position;
|
|
138
|
-
|
|
139
|
-
### Break
|
|
140
|
-
|
|
141
|
-
- Do not validate `undefined` values if they are not required;
|
|
142
|
-
- Allow setting non validated static values on collections;
|
|
143
|
-
|
|
144
|
-
---
|
|
145
|
-
|
|
146
|
-
## [0.2.0] - 2021-07-09
|
|
147
|
-
|
|
148
|
-
### Add
|
|
149
|
-
|
|
150
|
-
- Return store initial value in subscription result.
|
|
151
|
-
|
|
152
|
-
### Break
|
|
153
|
-
|
|
154
|
-
- When `fields` is passed to `collSpecable`, use it to select fields on initial value with `specma.select`. This way of doing things ensure proper change detection between store value and initial value.
|
|
155
|
-
|
|
156
|
-
### Fix
|
|
157
|
-
|
|
158
|
-
- Add missing `reset` method on `collSpecable`, advertised in the README.
|
|
159
|
-
|
|
160
|
-
---
|
|
161
|
-
|
|
162
|
-
## [0.1.2] - 2021-05-26
|
|
163
|
-
|
|
164
|
-
### Add
|
|
165
|
-
|
|
166
|
-
### Fix
|
|
167
|
-
|
|
168
|
-
- Fix dependencies issues with `npm audit fix`;
|
|
169
|
-
- Cannot read property `spec` of `undefined`;
|
|
170
|
-
|
|
171
|
-
---
|
|
172
|
-
|
|
173
|
-
# Changelog
|
|
174
|
-
|
|
175
|
-
## [0.1.1] - 2021-05-04
|
|
176
|
-
|
|
177
|
-
### Add
|
|
178
|
-
|
|
179
|
-
### Fix
|
|
180
|
-
|
|
181
|
-
- Treat non-required values as valid if `undefined`, `null` or `""`;
|
|
182
|
-
|
|
183
|
-
---
|
|
184
|
-
|
|
185
|
-
## [0.1.0] - 2021-04-16
|
|
186
|
-
|
|
187
|
-
### Add
|
|
188
|
-
|
|
189
|
-
- `set` method on `collSpecable`;
|
|
190
|
-
- Associate a random id on array items stores by default, instead of using indexes (which varies too much when dealing with reordering, deletions, etc.);
|
|
191
|
-
- Allow passing `toValue` and `toInput` as additional arguments to `register`;
|
|
192
|
-
|
|
193
|
-
### Fix
|
|
194
|
-
|
|
195
|
-
- Ensure promise is always returned from `activate` method;
|
|
196
|
-
- Array store values not properly saved after removal;
|
|
197
|
-
|
|
198
|
-
---
|
|
199
|
-
|
|
200
|
-
## [0.0.1] - 2021-03-30
|
|
201
|
-
|
|
202
|
-
Initial working code.
|