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.
@@ -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 = writable(_initialValue);
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 = () => [derivedValue, submitting, ownSpecable, ...values(childrenStores)];
581
+ const aggregateStatusStores = () => [submitting, ownSpecable, ...values(childrenStores)];
566
582
 
567
583
  const status = flexDerived(aggregateStatusStores(), $statusStores => {
568
- const [, $submitting, $ownSpecable, ...$children] = $statusStores;
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, partial = false) {
613
- collValue = partial && !isSpread ? merge(collValue, coll) : coll;
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.set(collValue);
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.set(newValue, partial);
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 missingChildren = fromEntries(entries(coll).filter(([key]) => !childrenKeys.includes(key)), collType);
629
- addChildren(missingChildren);
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, false);
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, partial);
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: status.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 = store.writable(_initialValue);
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 _temp3() {
690
+ function _temp4() {
675
691
  submitting.set(false);
676
692
  }
677
693
 
678
- var _temp2 = function () {
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 _temp2 && _temp2.then ? _temp2.then(_temp3) : _temp3(_temp2);
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 [derivedValue, submitting, ownSpecable].concat(values(childrenStores));
802
+ return [submitting, ownSpecable].concat(values(childrenStores));
788
803
  };
789
804
 
790
805
  var status = flexDerived(aggregateStatusStores(), function ($statusStores) {
791
- var $submitting = $statusStores[1],
792
- $ownSpecable = $statusStores[2],
793
- $children = $statusStores.slice(3);
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, partial) {
848
- if (partial === void 0) {
849
- partial = false;
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
- collValue = partial && !isSpread ? merge(collValue, coll) : coll;
869
+ var setMethod = reset ? "reset" : "set";
870
+ collValue = !reset && partial && !isSpread ? merge(collValue, coll) : coll;
853
871
  isUndef = collValue === undefined;
854
- ownSpecable.set(collValue);
872
+ ownSpecable[setMethod](collValue);
855
873
  var childrenEntries = entries(childrenStores);
856
- childrenEntries.forEach(function (_ref5) {
857
- var key = _ref5[0],
858
- store = _ref5[1];
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.set(newValue, partial);
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 missingChildren = fromEntries(entries(coll).filter(function (_ref6) {
870
- var key = _ref6[0];
887
+ var missingChildrenEntries = entries(coll).filter(function (_ref7) {
888
+ var key = _ref7[0];
871
889
  return !childrenKeys.includes(key);
872
- }), collType);
873
- addChildren(missingChildren);
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, _ref7) {
880
- var key = _ref7[0],
881
- childStore = _ref7[1];
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, false);
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, partial);
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: status.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 (_ref8) {
998
- var path = _ref8.path,
999
- error = _ref8.error,
1000
- rest = _objectWithoutPropertiesLoose(_ref8, ["path", "error"]);
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 (_ref9) {
1013
- var key = _ref9[0],
1014
- status = _ref9[1];
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(_ref10) {
1036
- var id = _ref10.id,
1037
- error = _ref10.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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svelte-specma",
3
- "version": "1.1.6",
3
+ "version": "1.1.7",
4
4
  "description": "Svelte store for data validation using Specma",
5
5
  "homepage": "https://github.com/davidsavoie1/svelte-specma.git",
6
6
  "repository": {
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.