svelte-specma 1.1.3 → 1.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.1.4] - 2021-12-21
4
+
5
+ ### Fix
6
+
7
+ - Consider spread in `getId`;
8
+
9
+ ---
10
+
3
11
  ## [1.1.3] - 2021-11-05
4
12
 
5
13
  ### Fix
@@ -497,10 +497,11 @@ function collSpecable(initialValue, {
497
497
  } = _extra;
498
498
  const collType = isColl(spec) ? typeOf(spec) : typeOf(initialValue);
499
499
  const isRequired = required && !isOpt(required);
500
+ const spreadGetId = getSpread(getId);
500
501
  const spreadSpec = getSpread(spec);
501
502
  const spreadFields = getSpread(fields);
502
503
  const spreadRequired = getSpread(required);
503
- const isSpread = spreadSpec || spreadFields || spreadRequired;
504
+ const isSpread = spreadSpec || spreadFields || spreadRequired || spreadGetId || collType === "array";
504
505
  const valueKeys = isSpread ? keys(initialValue) : [];
505
506
  const allKeys = new Set(fields ? [...keys(fields), ...valueKeys] : [...keys(spec), ...keys(required), ...valueKeys]);
506
507
  const ownGetId = getPred(getId);
@@ -522,7 +523,7 @@ function collSpecable(initialValue, {
522
523
  const subChangePred = get(key, changePred) || getSpread(changePred);
523
524
  const subVal = val;
524
525
  const subSpec = get(key, spec) || spreadSpec;
525
- const subGetId = get(key, getId);
526
+ const subGetId = get(key, getId) || spreadGetId;
526
527
  const subId = idGen(subVal, key);
527
528
  const subFields = get(key, fields) || spreadFields;
528
529
  const subRequired = get(key, required) || spreadRequired;
@@ -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],\n ([$active, $value, $context], 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 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 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 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 collType = isColl(spec) ? typeOf(spec) : typeOf(initialValue);\n const isRequired = required && !isOpt(required);\n const spreadSpec = getSpread(spec);\n const spreadFields = getSpread(fields);\n const spreadRequired = getSpread(required);\n const isSpread = spreadSpec || spreadFields || spreadRequired;\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);\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 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 isUndef = $ownSpecable.value === undefined;\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 isUndef = coll === undefined;\n collValue = partial && !isSpread ? merge(collValue, coll) : coll;\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 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 if (isColl(options.spec || initialValue))\n return collSpecable(initialValue, options, { ..._extra, specable });\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","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","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","$submitting","$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"],"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/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],\n ([$active, $value, $context], 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 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 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 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 collType = isColl(spec) ? typeOf(spec) : typeOf(initialValue);\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 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 isUndef = $ownSpecable.value === undefined;\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 isUndef = coll === undefined;\n collValue = partial && !isSpread ? merge(collValue, coll) : coll;\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 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 if (isColl(options.spec || initialValue))\n return collSpecable(initialValue, options, { ..._extra, specable });\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","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","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","$submitting","$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"],"mappings":"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"}
@@ -709,10 +709,11 @@
709
709
  _getAncestor = _extra2.getAncestor;
710
710
  var collType = isColl(spec) ? typeOf(spec) : typeOf(initialValue);
711
711
  var isRequired = required && !isOpt(required);
712
+ var spreadGetId = getSpread(getId);
712
713
  var spreadSpec = getSpread(spec);
713
714
  var spreadFields = getSpread(fields);
714
715
  var spreadRequired = getSpread(required);
715
- var isSpread = spreadSpec || spreadFields || spreadRequired;
716
+ var isSpread = spreadSpec || spreadFields || spreadRequired || spreadGetId || collType === "array";
716
717
  var valueKeys = isSpread ? keys(initialValue) : [];
717
718
  var allKeys = new Set(fields ? [].concat(keys(fields), valueKeys) : [].concat(keys(spec), keys(required), valueKeys));
718
719
  var ownGetId = getPred(getId);
@@ -734,7 +735,7 @@
734
735
  var subChangePred = get(key, changePred) || getSpread(changePred);
735
736
  var subVal = val;
736
737
  var subSpec = get(key, spec) || spreadSpec;
737
- var subGetId = get(key, getId);
738
+ var subGetId = get(key, getId) || spreadGetId;
738
739
  var subId = idGen(subVal, key);
739
740
  var subFields = get(key, fields) || spreadFields;
740
741
  var subRequired = get(key, required) || spreadRequired;
@@ -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],\n ([$active, $value, $context], 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 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 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 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 collType = isColl(spec) ? typeOf(spec) : typeOf(initialValue);\n const isRequired = required && !isOpt(required);\n const spreadSpec = getSpread(spec);\n const spreadFields = getSpread(fields);\n const spreadRequired = getSpread(required);\n const isSpread = spreadSpec || spreadFields || spreadRequired;\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);\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 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 isUndef = $ownSpecable.value === undefined;\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 isUndef = coll === undefined;\n collValue = partial && !isSpread ? merge(collValue, coll) : coll;\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 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 if (isColl(options.spec || initialValue))\n return collSpecable(initialValue, options, { ..._extra, specable });\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","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","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","$submitting","$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"],"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/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],\n ([$active, $value, $context], 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 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 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 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 collType = isColl(spec) ? typeOf(spec) : typeOf(initialValue);\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 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 isUndef = $ownSpecable.value === undefined;\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 isUndef = coll === undefined;\n collValue = partial && !isSpread ? merge(collValue, coll) : coll;\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 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 if (isColl(options.spec || initialValue))\n return collSpecable(initialValue, options, { ..._extra, specable });\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","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","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","$submitting","$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"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svelte-specma",
3
- "version": "1.1.3",
3
+ "version": "1.1.4",
4
4
  "description": "Svelte store for data validation using Specma",
5
5
  "homepage": "https://github.com/davidsavoie1/svelte-specma.git",
6
6
  "repository": {