atom.io 0.9.4 → 0.9.6
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/data/dist/index.js.map +1 -1
- package/data/dist/index.mjs.map +1 -1
- package/data/src/struct-family.ts +8 -6
- package/internal/dist/index.d.mts +3 -2
- package/internal/dist/index.d.ts +3 -2
- package/internal/dist/index.js +16 -3
- package/internal/dist/index.js.map +1 -1
- package/internal/dist/index.mjs +16 -4
- package/internal/dist/index.mjs.map +1 -1
- package/internal/src/caching.ts +16 -0
- package/internal/src/future.ts +1 -1
- package/internal/src/set-state/evict-downstream.ts +2 -3
- package/introspection/dist/index.js.map +1 -1
- package/introspection/dist/index.mjs.map +1 -1
- package/introspection/src/attach-timeline-family.ts +4 -1
- package/introspection/src/attach-transaction-logs.ts +4 -1
- package/json/dist/index.js.map +1 -1
- package/json/dist/index.mjs.map +1 -1
- package/json/src/select-json-family.ts +8 -3
- package/package.json +10 -11
- package/react-devtools/dist/index.js.map +1 -1
- package/react-devtools/dist/index.mjs.map +1 -1
- package/react-devtools/src/StateIndex.tsx +13 -11
package/data/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/dict.ts","../src/struct.ts","../src/struct-family.ts"],"names":["IMPLICIT","createSelector","capitalize"],"mappings":";AAEA,SAAS,UAAU,sBAAsB;AAGlC,SAAS,KACf,WAIA,OAIA,QAAe,SAAS,OAC2C;AACnE,SAAO;AAAA,IACN;AAAA,MACC,KAAK,GAAG,UAAU,GAAG;AAAA,MACrB,KAAK,CAAC,EAAE,IAAI,MAAM;AACjB,cAAM,OAAO,IAAI,KAAK;AACtB,eAAO,KAAK,OAAO,CAAC,KAAK,QAAQ;AAChC,cAAI,GAAG,IAAI,IAAI,UAAU,GAAG,CAAC;AAC7B,iBAAO;AAAA,QACR,GAAG,CAAC,CAAQ;AAAA,MACb;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;;;AC5BA,SAAS,YAAAA,iBAAgB;AAEzB,SAAS,YAAY,kBAAAC,uBAAsB;AAE3C,IAAM,aAAa,CAAC,QAAgB,IAAI,CAAC,EAAE,YAAY,IAAI,IAAI,MAAM,CAAC;AAI/D,SAAS,OAIf,SAIA,QAAeD,UAAS,OASvB;AACD,QAAM,QAKF,OAAO,KAAK,QAAQ,OAAO,EAAE,OAAO,CAAC,KAAK,QAAQ;AACrD,UAAM,WAAW,QAAQ,MAAM,WAAW,GAAG,IAAI;AACjD,QAAI,QAAQ,IAAI;AAAA,MACf;AAAA,QACC,KAAK,GAAG,QAAQ,GAAG,IAAI,GAAG;AAAA,QAC1B,SAAS,QAAQ,QAAQ,GAAG;AAAA,MAC7B;AAAA,MACA;AAAA,MACA;AAAA,IACD;AACA,WAAO;AAAA,EACR,GAAG,CAAC,CAAQ;AACZ,QAAM,cAAcC;AAAA,IACnB;AAAA,MACC,KAAK,QAAQ;AAAA,MACb,KAAK,CAAC,EAAE,IAAI,MAAM;AACjB,eAAO,OAAO,KAAK,QAAQ,OAAO,EAAE,OAAO,CAAC,KAAK,QAAQ;AACxD,cAAI,GAAG,IAAI,IAAI,MAAM,QAAQ,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC;AAC7D,iBAAO;AAAA,QACR,GAAG,CAAC,CAAQ;AAAA,MACb;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACA,SAAO,CAAC,OAAO,WAAW;AAC3B;;;AC1DA,SAAS,kBAAkB,4BAA4B;AAEvD,IAAMC,cAAa,CAAC,QAAgB,IAAI,CAAC,EAAE,YAAY,IAAI,IAAI,MAAM,CAAC;AACtE,IAAM,aAAa,CAAC,QAAgB,WACnC,SAASA,YAAW,MAAM,IAAIA,YAAW,MAAM,IAAI;AAE7C,SAAS,aAGd,SAWA;AACD,QAAM,QAKF,OAAO,KAAK,QAAQ,OAAO,EAAE,OAAO,CAAC,KAAK,WAAW;AACxD,UAAM,iBAAiB,WAAW,QAAQ,KAAK,MAAM;AACrD,QAAI,cAAc,IAAI,iBAAiB;AAAA,MACtC,KAAK,GAAG,QAAQ,GAAG,IAAI,MAAM;AAAA,MAC7B,SAAU,QAAQ,QAAgB,MAAM;AAAA,IACzC,CAAC;AACD,WAAO;AAAA,EACR,GAAG,CAAC,CAAQ;AACZ,QAAM,kBAAkB,qBAAqB;AAAA,IAC5C,KAAK,QAAQ;AAAA,IACb,
|
|
1
|
+
{"version":3,"sources":["../src/dict.ts","../src/struct.ts","../src/struct-family.ts"],"names":["IMPLICIT","createSelector","capitalize"],"mappings":";AAEA,SAAS,UAAU,sBAAsB;AAGlC,SAAS,KACf,WAIA,OAIA,QAAe,SAAS,OAC2C;AACnE,SAAO;AAAA,IACN;AAAA,MACC,KAAK,GAAG,UAAU,GAAG;AAAA,MACrB,KAAK,CAAC,EAAE,IAAI,MAAM;AACjB,cAAM,OAAO,IAAI,KAAK;AACtB,eAAO,KAAK,OAAO,CAAC,KAAK,QAAQ;AAChC,cAAI,GAAG,IAAI,IAAI,UAAU,GAAG,CAAC;AAC7B,iBAAO;AAAA,QACR,GAAG,CAAC,CAAQ;AAAA,MACb;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;;;AC5BA,SAAS,YAAAA,iBAAgB;AAEzB,SAAS,YAAY,kBAAAC,uBAAsB;AAE3C,IAAM,aAAa,CAAC,QAAgB,IAAI,CAAC,EAAE,YAAY,IAAI,IAAI,MAAM,CAAC;AAI/D,SAAS,OAIf,SAIA,QAAeD,UAAS,OASvB;AACD,QAAM,QAKF,OAAO,KAAK,QAAQ,OAAO,EAAE,OAAO,CAAC,KAAK,QAAQ;AACrD,UAAM,WAAW,QAAQ,MAAM,WAAW,GAAG,IAAI;AACjD,QAAI,QAAQ,IAAI;AAAA,MACf;AAAA,QACC,KAAK,GAAG,QAAQ,GAAG,IAAI,GAAG;AAAA,QAC1B,SAAS,QAAQ,QAAQ,GAAG;AAAA,MAC7B;AAAA,MACA;AAAA,MACA;AAAA,IACD;AACA,WAAO;AAAA,EACR,GAAG,CAAC,CAAQ;AACZ,QAAM,cAAcC;AAAA,IACnB;AAAA,MACC,KAAK,QAAQ;AAAA,MACb,KAAK,CAAC,EAAE,IAAI,MAAM;AACjB,eAAO,OAAO,KAAK,QAAQ,OAAO,EAAE,OAAO,CAAC,KAAK,QAAQ;AACxD,cAAI,GAAG,IAAI,IAAI,MAAM,QAAQ,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC;AAC7D,iBAAO;AAAA,QACR,GAAG,CAAC,CAAQ;AAAA,MACb;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACA,SAAO,CAAC,OAAO,WAAW;AAC3B;;;AC1DA,SAAS,kBAAkB,4BAA4B;AAEvD,IAAMC,cAAa,CAAC,QAAgB,IAAI,CAAC,EAAE,YAAY,IAAI,IAAI,MAAM,CAAC;AACtE,IAAM,aAAa,CAAC,QAAgB,WACnC,SAASA,YAAW,MAAM,IAAIA,YAAW,MAAM,IAAI;AAE7C,SAAS,aAGd,SAWA;AACD,QAAM,QAKF,OAAO,KAAK,QAAQ,OAAO,EAAE,OAAO,CAAC,KAAK,WAAW;AACxD,UAAM,iBAAiB,WAAW,QAAQ,KAAK,MAAM;AACrD,QAAI,cAAc,IAAI,iBAAiB;AAAA,MACtC,KAAK,GAAG,QAAQ,GAAG,IAAI,MAAM;AAAA,MAC7B,SAAU,QAAQ,QAAgB,MAAM;AAAA,IACzC,CAAC;AACD,WAAO;AAAA,EACR,GAAG,CAAC,CAAQ;AACZ,QAAM,kBAAkB,qBAAqB;AAAA,IAC5C,KAAK,QAAQ;AAAA,IACb,KACC,CAAC,OACD,CAAC,EAAE,IAAI,MAAM;AACZ,aAAO,OAAO,KAAK,QAAQ,OAAO,EAAE,OAAO,CAAC,KAAK,WAAW;AAC3D,YAAI,MAAM,IAAI,IAAK,MAAc,WAAW,QAAQ,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC;AACrE,eAAO;AAAA,MACR,GAAG,CAAC,CAAQ;AAAA,IACb;AAAA,EACF,CAAC;AACD,SAAO,CAAC,OAAO,eAAe;AAC/B","sourcesContent":["import type * as AtomIO from \"atom.io\"\nimport type { Store } from \"atom.io/internal\"\nimport { IMPLICIT, createSelector } from \"atom.io/internal\"\nimport type { Json, Stringified } from \"atom.io/json\"\n\nexport function dict<State, Key extends Json.Serializable>(\n\tfindState:\n\t\t| AtomIO.AtomFamily<State, Key>\n\t\t| AtomIO.ReadonlySelectorFamily<State, Key>\n\t\t| AtomIO.SelectorFamily<State, Key>,\n\tindex:\n\t\t| AtomIO.AtomToken<Key[]>\n\t\t| AtomIO.ReadonlySelectorToken<Key[]>\n\t\t| AtomIO.SelectorToken<Key[]>,\n\tstore: Store = IMPLICIT.STORE,\n): AtomIO.ReadonlySelectorToken<{ [K in Stringified<Key>]: State }> {\n\treturn createSelector(\n\t\t{\n\t\t\tkey: `${findState.key}Dict`,\n\t\t\tget: ({ get }) => {\n\t\t\t\tconst keys = get(index)\n\t\t\t\treturn keys.reduce((acc, key) => {\n\t\t\t\t\tacc[key] = get(findState(key))\n\t\t\t\t\treturn acc\n\t\t\t\t}, {} as any)\n\t\t\t},\n\t\t},\n\t\tundefined,\n\t\tstore,\n\t)\n}\n","import type * as AtomIO from \"atom.io\"\nimport type { Store } from \"atom.io/internal\"\nimport { IMPLICIT } from \"atom.io/internal\"\n\nimport { createAtom, createSelector } from \"atom.io/internal\"\n\nconst capitalize = (str: string) => str[0].toUpperCase() + str.slice(1)\nconst nameAtom = (topKey: string, subKey: string) =>\n\ttopKey + capitalize(subKey) + `State`\n\nexport function struct<\n\tStruct extends { [key: string]: unknown },\n\tKey extends string,\n>(\n\toptions: {\n\t\tkey: Key\n\t\tdefault: Struct\n\t},\n\tstore: Store = IMPLICIT.STORE,\n): [\n\t{\n\t\t[K in\n\t\t\tkeyof Struct as `${Key}${Capitalize<K & string>}State`]: AtomIO.AtomToken<\n\t\t\tStruct[K]\n\t\t>\n\t},\n\tAtomIO.ReadonlySelectorToken<Struct>,\n] {\n\tconst atoms: {\n\t\t[K in\n\t\t\tkeyof Struct as `${Key}${Capitalize<K & string>}State`]: AtomIO.AtomToken<\n\t\t\tStruct[K]\n\t\t>\n\t} = Object.keys(options.default).reduce((acc, key) => {\n\t\tconst atomName = options.key + capitalize(key) + `State`\n\t\tacc[atomName] = createAtom(\n\t\t\t{\n\t\t\t\tkey: `${options.key}.${key}`,\n\t\t\t\tdefault: options.default[key],\n\t\t\t},\n\t\t\tundefined,\n\t\t\tstore,\n\t\t)\n\t\treturn acc\n\t}, {} as any)\n\tconst structState = createSelector(\n\t\t{\n\t\t\tkey: options.key,\n\t\t\tget: ({ get }) => {\n\t\t\t\treturn Object.keys(options.default).reduce((acc, key) => {\n\t\t\t\t\tacc[key] = get(atoms[options.key + capitalize(key) + `State`])\n\t\t\t\t\treturn acc\n\t\t\t\t}, {} as any)\n\t\t\t},\n\t\t},\n\t\tundefined,\n\t\tstore,\n\t)\n\treturn [atoms, structState]\n}\n","import type * as AtomIO from \"atom.io\"\nimport { createAtomFamily, createSelectorFamily } from \"atom.io/internal\"\n\nconst capitalize = (str: string) => str[0].toUpperCase() + str.slice(1)\nconst nameFamily = (topKey: string, subKey: string) =>\n\t`find` + capitalize(topKey) + capitalize(subKey) + `State`\n\nexport function structFamily<\n\tStruct extends object,\n\tKey extends string,\n>(options: {\n\tkey: Key\n\tdefault: Struct\n}): [\n\t{\n\t\t[K in\n\t\t\tkeyof Struct as `find${Capitalize<Key & string>}${Capitalize<\n\t\t\t\tK & string\n\t\t\t>}State`]: AtomIO.AtomFamily<Struct[K], string>\n\t},\n\tAtomIO.ReadonlySelectorFamily<Struct>,\n] {\n\tconst atoms: {\n\t\t[K in\n\t\t\tkeyof Struct as `find${Capitalize<Key & string>}${Capitalize<\n\t\t\t\tK & string\n\t\t\t>}State`]: AtomIO.AtomFamily<Struct[K], string>\n\t} = Object.keys(options.default).reduce((acc, subKey) => {\n\t\tconst atomFamilyName = nameFamily(options.key, subKey)\n\t\tacc[atomFamilyName] = createAtomFamily({\n\t\t\tkey: `${options.key}.${subKey}`,\n\t\t\tdefault: (options.default as any)[subKey],\n\t\t})\n\t\treturn acc\n\t}, {} as any)\n\tconst findStructState = createSelectorFamily({\n\t\tkey: options.key,\n\t\tget:\n\t\t\t(id) =>\n\t\t\t({ get }) => {\n\t\t\t\treturn Object.keys(options.default).reduce((acc, subKey) => {\n\t\t\t\t\tacc[subKey] = get((atoms as any)[nameFamily(options.key, subKey)](id))\n\t\t\t\t\treturn acc\n\t\t\t\t}, {} as any)\n\t\t\t},\n\t})\n\treturn [atoms, findStructState]\n}\n"]}
|
package/data/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/dict.ts","../src/struct.ts","../src/struct-family.ts"],"names":["IMPLICIT","createSelector","capitalize"],"mappings":";AAEA,SAAS,UAAU,sBAAsB;AAGlC,SAAS,KACf,WAIA,OAIA,QAAe,SAAS,OAC2C;AACnE,SAAO;AAAA,IACN;AAAA,MACC,KAAK,GAAG,UAAU,GAAG;AAAA,MACrB,KAAK,CAAC,EAAE,IAAI,MAAM;AACjB,cAAM,OAAO,IAAI,KAAK;AACtB,eAAO,KAAK,OAAO,CAAC,KAAK,QAAQ;AAChC,cAAI,GAAG,IAAI,IAAI,UAAU,GAAG,CAAC;AAC7B,iBAAO;AAAA,QACR,GAAG,CAAC,CAAQ;AAAA,MACb;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;;;AC5BA,SAAS,YAAAA,iBAAgB;AAEzB,SAAS,YAAY,kBAAAC,uBAAsB;AAE3C,IAAM,aAAa,CAAC,QAAgB,IAAI,CAAC,EAAE,YAAY,IAAI,IAAI,MAAM,CAAC;AAI/D,SAAS,OAIf,SAIA,QAAeD,UAAS,OASvB;AACD,QAAM,QAKF,OAAO,KAAK,QAAQ,OAAO,EAAE,OAAO,CAAC,KAAK,QAAQ;AACrD,UAAM,WAAW,QAAQ,MAAM,WAAW,GAAG,IAAI;AACjD,QAAI,QAAQ,IAAI;AAAA,MACf;AAAA,QACC,KAAK,GAAG,QAAQ,GAAG,IAAI,GAAG;AAAA,QAC1B,SAAS,QAAQ,QAAQ,GAAG;AAAA,MAC7B;AAAA,MACA;AAAA,MACA;AAAA,IACD;AACA,WAAO;AAAA,EACR,GAAG,CAAC,CAAQ;AACZ,QAAM,cAAcC;AAAA,IACnB;AAAA,MACC,KAAK,QAAQ;AAAA,MACb,KAAK,CAAC,EAAE,IAAI,MAAM;AACjB,eAAO,OAAO,KAAK,QAAQ,OAAO,EAAE,OAAO,CAAC,KAAK,QAAQ;AACxD,cAAI,GAAG,IAAI,IAAI,MAAM,QAAQ,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC;AAC7D,iBAAO;AAAA,QACR,GAAG,CAAC,CAAQ;AAAA,MACb;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACA,SAAO,CAAC,OAAO,WAAW;AAC3B;;;AC1DA,SAAS,kBAAkB,4BAA4B;AAEvD,IAAMC,cAAa,CAAC,QAAgB,IAAI,CAAC,EAAE,YAAY,IAAI,IAAI,MAAM,CAAC;AACtE,IAAM,aAAa,CAAC,QAAgB,WACnC,SAASA,YAAW,MAAM,IAAIA,YAAW,MAAM,IAAI;AAE7C,SAAS,aAGd,SAWA;AACD,QAAM,QAKF,OAAO,KAAK,QAAQ,OAAO,EAAE,OAAO,CAAC,KAAK,WAAW;AACxD,UAAM,iBAAiB,WAAW,QAAQ,KAAK,MAAM;AACrD,QAAI,cAAc,IAAI,iBAAiB;AAAA,MACtC,KAAK,GAAG,QAAQ,GAAG,IAAI,MAAM;AAAA,MAC7B,SAAU,QAAQ,QAAgB,MAAM;AAAA,IACzC,CAAC;AACD,WAAO;AAAA,EACR,GAAG,CAAC,CAAQ;AACZ,QAAM,kBAAkB,qBAAqB;AAAA,IAC5C,KAAK,QAAQ;AAAA,IACb,
|
|
1
|
+
{"version":3,"sources":["../src/dict.ts","../src/struct.ts","../src/struct-family.ts"],"names":["IMPLICIT","createSelector","capitalize"],"mappings":";AAEA,SAAS,UAAU,sBAAsB;AAGlC,SAAS,KACf,WAIA,OAIA,QAAe,SAAS,OAC2C;AACnE,SAAO;AAAA,IACN;AAAA,MACC,KAAK,GAAG,UAAU,GAAG;AAAA,MACrB,KAAK,CAAC,EAAE,IAAI,MAAM;AACjB,cAAM,OAAO,IAAI,KAAK;AACtB,eAAO,KAAK,OAAO,CAAC,KAAK,QAAQ;AAChC,cAAI,GAAG,IAAI,IAAI,UAAU,GAAG,CAAC;AAC7B,iBAAO;AAAA,QACR,GAAG,CAAC,CAAQ;AAAA,MACb;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;;;AC5BA,SAAS,YAAAA,iBAAgB;AAEzB,SAAS,YAAY,kBAAAC,uBAAsB;AAE3C,IAAM,aAAa,CAAC,QAAgB,IAAI,CAAC,EAAE,YAAY,IAAI,IAAI,MAAM,CAAC;AAI/D,SAAS,OAIf,SAIA,QAAeD,UAAS,OASvB;AACD,QAAM,QAKF,OAAO,KAAK,QAAQ,OAAO,EAAE,OAAO,CAAC,KAAK,QAAQ;AACrD,UAAM,WAAW,QAAQ,MAAM,WAAW,GAAG,IAAI;AACjD,QAAI,QAAQ,IAAI;AAAA,MACf;AAAA,QACC,KAAK,GAAG,QAAQ,GAAG,IAAI,GAAG;AAAA,QAC1B,SAAS,QAAQ,QAAQ,GAAG;AAAA,MAC7B;AAAA,MACA;AAAA,MACA;AAAA,IACD;AACA,WAAO;AAAA,EACR,GAAG,CAAC,CAAQ;AACZ,QAAM,cAAcC;AAAA,IACnB;AAAA,MACC,KAAK,QAAQ;AAAA,MACb,KAAK,CAAC,EAAE,IAAI,MAAM;AACjB,eAAO,OAAO,KAAK,QAAQ,OAAO,EAAE,OAAO,CAAC,KAAK,QAAQ;AACxD,cAAI,GAAG,IAAI,IAAI,MAAM,QAAQ,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC;AAC7D,iBAAO;AAAA,QACR,GAAG,CAAC,CAAQ;AAAA,MACb;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACA,SAAO,CAAC,OAAO,WAAW;AAC3B;;;AC1DA,SAAS,kBAAkB,4BAA4B;AAEvD,IAAMC,cAAa,CAAC,QAAgB,IAAI,CAAC,EAAE,YAAY,IAAI,IAAI,MAAM,CAAC;AACtE,IAAM,aAAa,CAAC,QAAgB,WACnC,SAASA,YAAW,MAAM,IAAIA,YAAW,MAAM,IAAI;AAE7C,SAAS,aAGd,SAWA;AACD,QAAM,QAKF,OAAO,KAAK,QAAQ,OAAO,EAAE,OAAO,CAAC,KAAK,WAAW;AACxD,UAAM,iBAAiB,WAAW,QAAQ,KAAK,MAAM;AACrD,QAAI,cAAc,IAAI,iBAAiB;AAAA,MACtC,KAAK,GAAG,QAAQ,GAAG,IAAI,MAAM;AAAA,MAC7B,SAAU,QAAQ,QAAgB,MAAM;AAAA,IACzC,CAAC;AACD,WAAO;AAAA,EACR,GAAG,CAAC,CAAQ;AACZ,QAAM,kBAAkB,qBAAqB;AAAA,IAC5C,KAAK,QAAQ;AAAA,IACb,KACC,CAAC,OACD,CAAC,EAAE,IAAI,MAAM;AACZ,aAAO,OAAO,KAAK,QAAQ,OAAO,EAAE,OAAO,CAAC,KAAK,WAAW;AAC3D,YAAI,MAAM,IAAI,IAAK,MAAc,WAAW,QAAQ,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC;AACrE,eAAO;AAAA,MACR,GAAG,CAAC,CAAQ;AAAA,IACb;AAAA,EACF,CAAC;AACD,SAAO,CAAC,OAAO,eAAe;AAC/B","sourcesContent":["import type * as AtomIO from \"atom.io\"\nimport type { Store } from \"atom.io/internal\"\nimport { IMPLICIT, createSelector } from \"atom.io/internal\"\nimport type { Json, Stringified } from \"atom.io/json\"\n\nexport function dict<State, Key extends Json.Serializable>(\n\tfindState:\n\t\t| AtomIO.AtomFamily<State, Key>\n\t\t| AtomIO.ReadonlySelectorFamily<State, Key>\n\t\t| AtomIO.SelectorFamily<State, Key>,\n\tindex:\n\t\t| AtomIO.AtomToken<Key[]>\n\t\t| AtomIO.ReadonlySelectorToken<Key[]>\n\t\t| AtomIO.SelectorToken<Key[]>,\n\tstore: Store = IMPLICIT.STORE,\n): AtomIO.ReadonlySelectorToken<{ [K in Stringified<Key>]: State }> {\n\treturn createSelector(\n\t\t{\n\t\t\tkey: `${findState.key}Dict`,\n\t\t\tget: ({ get }) => {\n\t\t\t\tconst keys = get(index)\n\t\t\t\treturn keys.reduce((acc, key) => {\n\t\t\t\t\tacc[key] = get(findState(key))\n\t\t\t\t\treturn acc\n\t\t\t\t}, {} as any)\n\t\t\t},\n\t\t},\n\t\tundefined,\n\t\tstore,\n\t)\n}\n","import type * as AtomIO from \"atom.io\"\nimport type { Store } from \"atom.io/internal\"\nimport { IMPLICIT } from \"atom.io/internal\"\n\nimport { createAtom, createSelector } from \"atom.io/internal\"\n\nconst capitalize = (str: string) => str[0].toUpperCase() + str.slice(1)\nconst nameAtom = (topKey: string, subKey: string) =>\n\ttopKey + capitalize(subKey) + `State`\n\nexport function struct<\n\tStruct extends { [key: string]: unknown },\n\tKey extends string,\n>(\n\toptions: {\n\t\tkey: Key\n\t\tdefault: Struct\n\t},\n\tstore: Store = IMPLICIT.STORE,\n): [\n\t{\n\t\t[K in\n\t\t\tkeyof Struct as `${Key}${Capitalize<K & string>}State`]: AtomIO.AtomToken<\n\t\t\tStruct[K]\n\t\t>\n\t},\n\tAtomIO.ReadonlySelectorToken<Struct>,\n] {\n\tconst atoms: {\n\t\t[K in\n\t\t\tkeyof Struct as `${Key}${Capitalize<K & string>}State`]: AtomIO.AtomToken<\n\t\t\tStruct[K]\n\t\t>\n\t} = Object.keys(options.default).reduce((acc, key) => {\n\t\tconst atomName = options.key + capitalize(key) + `State`\n\t\tacc[atomName] = createAtom(\n\t\t\t{\n\t\t\t\tkey: `${options.key}.${key}`,\n\t\t\t\tdefault: options.default[key],\n\t\t\t},\n\t\t\tundefined,\n\t\t\tstore,\n\t\t)\n\t\treturn acc\n\t}, {} as any)\n\tconst structState = createSelector(\n\t\t{\n\t\t\tkey: options.key,\n\t\t\tget: ({ get }) => {\n\t\t\t\treturn Object.keys(options.default).reduce((acc, key) => {\n\t\t\t\t\tacc[key] = get(atoms[options.key + capitalize(key) + `State`])\n\t\t\t\t\treturn acc\n\t\t\t\t}, {} as any)\n\t\t\t},\n\t\t},\n\t\tundefined,\n\t\tstore,\n\t)\n\treturn [atoms, structState]\n}\n","import type * as AtomIO from \"atom.io\"\nimport { createAtomFamily, createSelectorFamily } from \"atom.io/internal\"\n\nconst capitalize = (str: string) => str[0].toUpperCase() + str.slice(1)\nconst nameFamily = (topKey: string, subKey: string) =>\n\t`find` + capitalize(topKey) + capitalize(subKey) + `State`\n\nexport function structFamily<\n\tStruct extends object,\n\tKey extends string,\n>(options: {\n\tkey: Key\n\tdefault: Struct\n}): [\n\t{\n\t\t[K in\n\t\t\tkeyof Struct as `find${Capitalize<Key & string>}${Capitalize<\n\t\t\t\tK & string\n\t\t\t>}State`]: AtomIO.AtomFamily<Struct[K], string>\n\t},\n\tAtomIO.ReadonlySelectorFamily<Struct>,\n] {\n\tconst atoms: {\n\t\t[K in\n\t\t\tkeyof Struct as `find${Capitalize<Key & string>}${Capitalize<\n\t\t\t\tK & string\n\t\t\t>}State`]: AtomIO.AtomFamily<Struct[K], string>\n\t} = Object.keys(options.default).reduce((acc, subKey) => {\n\t\tconst atomFamilyName = nameFamily(options.key, subKey)\n\t\tacc[atomFamilyName] = createAtomFamily({\n\t\t\tkey: `${options.key}.${subKey}`,\n\t\t\tdefault: (options.default as any)[subKey],\n\t\t})\n\t\treturn acc\n\t}, {} as any)\n\tconst findStructState = createSelectorFamily({\n\t\tkey: options.key,\n\t\tget:\n\t\t\t(id) =>\n\t\t\t({ get }) => {\n\t\t\t\treturn Object.keys(options.default).reduce((acc, subKey) => {\n\t\t\t\t\tacc[subKey] = get((atoms as any)[nameFamily(options.key, subKey)](id))\n\t\t\t\t\treturn acc\n\t\t\t\t}, {} as any)\n\t\t\t},\n\t})\n\treturn [atoms, findStructState]\n}\n"]}
|
|
@@ -35,12 +35,14 @@ export function structFamily<
|
|
|
35
35
|
}, {} as any)
|
|
36
36
|
const findStructState = createSelectorFamily({
|
|
37
37
|
key: options.key,
|
|
38
|
-
get:
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
return acc
|
|
42
|
-
|
|
43
|
-
|
|
38
|
+
get:
|
|
39
|
+
(id) =>
|
|
40
|
+
({ get }) => {
|
|
41
|
+
return Object.keys(options.default).reduce((acc, subKey) => {
|
|
42
|
+
acc[subKey] = get((atoms as any)[nameFamily(options.key, subKey)](id))
|
|
43
|
+
return acc
|
|
44
|
+
}, {} as any)
|
|
45
|
+
},
|
|
44
46
|
})
|
|
45
47
|
return [atoms, findStructState]
|
|
46
48
|
}
|
|
@@ -321,6 +321,7 @@ declare const isSelectorDefault: (key: string, store?: Store) => boolean;
|
|
|
321
321
|
declare const cacheValue: (key: string, value: unknown, subject: Subject<StateUpdate<unknown>>, store?: Store) => void;
|
|
322
322
|
declare const readCachedValue: <T>(key: string, store?: Store) => T;
|
|
323
323
|
declare const isValueCached: (key: string, store?: Store) => boolean;
|
|
324
|
+
declare const evictCachedValue: (key: string, store?: Store) => void;
|
|
324
325
|
|
|
325
326
|
declare function createAtomFamily<T, K extends Json.Serializable>(options: AtomFamilyOptions<T, K>, store?: Store): AtomFamily<T, K>;
|
|
326
327
|
|
|
@@ -341,7 +342,7 @@ type Fated<T, E extends Error = Error> = Loadable<E | T>;
|
|
|
341
342
|
* Can be constructed like a Promise, or from an existing Promise.
|
|
342
343
|
*/
|
|
343
344
|
declare class Future<T> extends Promise<T> {
|
|
344
|
-
|
|
345
|
+
isCanceled: boolean;
|
|
345
346
|
constructor(executor: Promise<T> | ((resolve: (value: T) => void, reject: (reason?: any) => void) => void));
|
|
346
347
|
cancel(): void;
|
|
347
348
|
}
|
|
@@ -355,4 +356,4 @@ declare const setState__INTERNAL: <T>(state: Atom<T> | Selector<T>, value: T | (
|
|
|
355
356
|
|
|
356
357
|
declare const subscribeToRootAtoms: <T>(state: ReadonlySelector<T> | Selector<T>, store: Store) => (() => void)[] | null;
|
|
357
358
|
|
|
358
|
-
export { Atom, FamilyTracker, Fated, Future, IMPLICIT, Loadable, Modify, MutableAtom, OperationProgress, ReadonlySelector, Selector, Signal, Store, StoreCore, Subject, TRANSACTION_PHASES, Timeline, TimelineAtomUpdate, TimelineSelectorUpdate, TimelineTransactionUpdate, Tracker, Transaction, TransactionIdle, TransactionPhase, TransactionStatus, TransactionUpdateInProgress, Transceiver, TransceiverMode, abortTransaction, addAtomToTimeline, applyTransaction, become, buildTransaction, cacheValue, clearStore, closeOperation, createAtom, createAtomFamily, createMutableAtom, createMutableAtomFamily, createReadonlySelectorFamily, createSelector, createSelectorFamily, deleteAtom, deposit, getJsonToken, getState__INTERNAL, getUpdateToken, isAtomDefault, isAtomMutable, isAtomTokenMutable, isDone, isSelectorDefault, isTransceiver, isValueCached, lookup, lookupSelectorSources, markAtomAsDefault, markAtomAsNotDefault, markDone, openOperation, readCachedValue, redoTransactionUpdate, redo__INTERNAL, registerSelector, setState__INTERNAL, subscribeToRootAtoms, target, timeline__INTERNAL, traceAllSelectorAtoms, traceSelectorAtoms, transaction__INTERNAL, undoTransactionUpdate, undo__INTERNAL, updateSelectorAtoms, withdraw, withdrawNewFamilyMember };
|
|
359
|
+
export { Atom, FamilyTracker, Fated, Future, IMPLICIT, Loadable, Modify, MutableAtom, OperationProgress, ReadonlySelector, Selector, Signal, Store, StoreCore, Subject, TRANSACTION_PHASES, Timeline, TimelineAtomUpdate, TimelineSelectorUpdate, TimelineTransactionUpdate, Tracker, Transaction, TransactionIdle, TransactionPhase, TransactionStatus, TransactionUpdateInProgress, Transceiver, TransceiverMode, abortTransaction, addAtomToTimeline, applyTransaction, become, buildTransaction, cacheValue, clearStore, closeOperation, createAtom, createAtomFamily, createMutableAtom, createMutableAtomFamily, createReadonlySelectorFamily, createSelector, createSelectorFamily, deleteAtom, deposit, evictCachedValue, getJsonToken, getState__INTERNAL, getUpdateToken, isAtomDefault, isAtomMutable, isAtomTokenMutable, isDone, isSelectorDefault, isTransceiver, isValueCached, lookup, lookupSelectorSources, markAtomAsDefault, markAtomAsNotDefault, markDone, openOperation, readCachedValue, redoTransactionUpdate, redo__INTERNAL, registerSelector, setState__INTERNAL, subscribeToRootAtoms, target, timeline__INTERNAL, traceAllSelectorAtoms, traceSelectorAtoms, transaction__INTERNAL, undoTransactionUpdate, undo__INTERNAL, updateSelectorAtoms, withdraw, withdrawNewFamilyMember };
|
package/internal/dist/index.d.ts
CHANGED
|
@@ -321,6 +321,7 @@ declare const isSelectorDefault: (key: string, store?: Store) => boolean;
|
|
|
321
321
|
declare const cacheValue: (key: string, value: unknown, subject: Subject<StateUpdate<unknown>>, store?: Store) => void;
|
|
322
322
|
declare const readCachedValue: <T>(key: string, store?: Store) => T;
|
|
323
323
|
declare const isValueCached: (key: string, store?: Store) => boolean;
|
|
324
|
+
declare const evictCachedValue: (key: string, store?: Store) => void;
|
|
324
325
|
|
|
325
326
|
declare function createAtomFamily<T, K extends Json.Serializable>(options: AtomFamilyOptions<T, K>, store?: Store): AtomFamily<T, K>;
|
|
326
327
|
|
|
@@ -341,7 +342,7 @@ type Fated<T, E extends Error = Error> = Loadable<E | T>;
|
|
|
341
342
|
* Can be constructed like a Promise, or from an existing Promise.
|
|
342
343
|
*/
|
|
343
344
|
declare class Future<T> extends Promise<T> {
|
|
344
|
-
|
|
345
|
+
isCanceled: boolean;
|
|
345
346
|
constructor(executor: Promise<T> | ((resolve: (value: T) => void, reject: (reason?: any) => void) => void));
|
|
346
347
|
cancel(): void;
|
|
347
348
|
}
|
|
@@ -355,4 +356,4 @@ declare const setState__INTERNAL: <T>(state: Atom<T> | Selector<T>, value: T | (
|
|
|
355
356
|
|
|
356
357
|
declare const subscribeToRootAtoms: <T>(state: ReadonlySelector<T> | Selector<T>, store: Store) => (() => void)[] | null;
|
|
357
358
|
|
|
358
|
-
export { Atom, FamilyTracker, Fated, Future, IMPLICIT, Loadable, Modify, MutableAtom, OperationProgress, ReadonlySelector, Selector, Signal, Store, StoreCore, Subject, TRANSACTION_PHASES, Timeline, TimelineAtomUpdate, TimelineSelectorUpdate, TimelineTransactionUpdate, Tracker, Transaction, TransactionIdle, TransactionPhase, TransactionStatus, TransactionUpdateInProgress, Transceiver, TransceiverMode, abortTransaction, addAtomToTimeline, applyTransaction, become, buildTransaction, cacheValue, clearStore, closeOperation, createAtom, createAtomFamily, createMutableAtom, createMutableAtomFamily, createReadonlySelectorFamily, createSelector, createSelectorFamily, deleteAtom, deposit, getJsonToken, getState__INTERNAL, getUpdateToken, isAtomDefault, isAtomMutable, isAtomTokenMutable, isDone, isSelectorDefault, isTransceiver, isValueCached, lookup, lookupSelectorSources, markAtomAsDefault, markAtomAsNotDefault, markDone, openOperation, readCachedValue, redoTransactionUpdate, redo__INTERNAL, registerSelector, setState__INTERNAL, subscribeToRootAtoms, target, timeline__INTERNAL, traceAllSelectorAtoms, traceSelectorAtoms, transaction__INTERNAL, undoTransactionUpdate, undo__INTERNAL, updateSelectorAtoms, withdraw, withdrawNewFamilyMember };
|
|
359
|
+
export { Atom, FamilyTracker, Fated, Future, IMPLICIT, Loadable, Modify, MutableAtom, OperationProgress, ReadonlySelector, Selector, Signal, Store, StoreCore, Subject, TRANSACTION_PHASES, Timeline, TimelineAtomUpdate, TimelineSelectorUpdate, TimelineTransactionUpdate, Tracker, Transaction, TransactionIdle, TransactionPhase, TransactionStatus, TransactionUpdateInProgress, Transceiver, TransceiverMode, abortTransaction, addAtomToTimeline, applyTransaction, become, buildTransaction, cacheValue, clearStore, closeOperation, createAtom, createAtomFamily, createMutableAtom, createMutableAtomFamily, createReadonlySelectorFamily, createSelector, createSelectorFamily, deleteAtom, deposit, evictCachedValue, getJsonToken, getState__INTERNAL, getUpdateToken, isAtomDefault, isAtomMutable, isAtomTokenMutable, isDone, isSelectorDefault, isTransceiver, isValueCached, lookup, lookupSelectorSources, markAtomAsDefault, markAtomAsNotDefault, markDone, openOperation, readCachedValue, redoTransactionUpdate, redo__INTERNAL, registerSelector, setState__INTERNAL, subscribeToRootAtoms, target, timeline__INTERNAL, traceAllSelectorAtoms, traceSelectorAtoms, transaction__INTERNAL, undoTransactionUpdate, undo__INTERNAL, updateSelectorAtoms, withdraw, withdrawNewFamilyMember };
|
package/internal/dist/index.js
CHANGED
|
@@ -910,6 +910,9 @@ var cacheValue = (key, value, subject, store = IMPLICIT.STORE) => {
|
|
|
910
910
|
const future = new Future(value);
|
|
911
911
|
target(store).valueMap.set(key, future);
|
|
912
912
|
future.then((value2) => {
|
|
913
|
+
if (future.isCanceled) {
|
|
914
|
+
return;
|
|
915
|
+
}
|
|
913
916
|
cacheValue(key, value2, subject, store);
|
|
914
917
|
subject.next({ newValue: value2, oldValue: value2 });
|
|
915
918
|
}).catch((error) => {
|
|
@@ -925,6 +928,16 @@ var cacheValue = (key, value, subject, store = IMPLICIT.STORE) => {
|
|
|
925
928
|
};
|
|
926
929
|
var readCachedValue = (key, store = IMPLICIT.STORE) => target(store).valueMap.get(key);
|
|
927
930
|
var isValueCached = (key, store = IMPLICIT.STORE) => target(store).valueMap.has(key);
|
|
931
|
+
var evictCachedValue = (key, store = IMPLICIT.STORE) => {
|
|
932
|
+
var _a;
|
|
933
|
+
const core = target(store);
|
|
934
|
+
const currentValue = core.valueMap.get(key);
|
|
935
|
+
if (currentValue instanceof Future) {
|
|
936
|
+
currentValue.cancel();
|
|
937
|
+
}
|
|
938
|
+
core.valueMap.delete(key);
|
|
939
|
+
(_a = store.config.logger) == null ? void 0 : _a.info(` xx evicted "${key}"`);
|
|
940
|
+
};
|
|
928
941
|
var Tracker = class {
|
|
929
942
|
constructor(mutableState, store = IMPLICIT.STORE) {
|
|
930
943
|
this.unsubscribeFromInnerValue = null;
|
|
@@ -1254,7 +1267,7 @@ var emitUpdate = (state, update, store) => {
|
|
|
1254
1267
|
|
|
1255
1268
|
// src/set-state/evict-downstream.ts
|
|
1256
1269
|
var evictDownStream = (state, store = IMPLICIT.STORE) => {
|
|
1257
|
-
var _a, _b, _c, _d, _e, _f
|
|
1270
|
+
var _a, _b, _c, _d, _e, _f;
|
|
1258
1271
|
const core = target(store);
|
|
1259
1272
|
const downstreamKeys = core.selectorAtoms.getRelatedKeys(state.key);
|
|
1260
1273
|
(_b = store.config.logger) == null ? void 0 : _b.info(
|
|
@@ -1277,8 +1290,7 @@ var evictDownStream = (state, store = IMPLICIT.STORE) => {
|
|
|
1277
1290
|
);
|
|
1278
1291
|
return;
|
|
1279
1292
|
}
|
|
1280
|
-
|
|
1281
|
-
(_g = store.config.logger) == null ? void 0 : _g.info(` xx evicted "${key}"`);
|
|
1293
|
+
evictCachedValue(key, store);
|
|
1282
1294
|
markDone(key, store);
|
|
1283
1295
|
}
|
|
1284
1296
|
}
|
|
@@ -1848,6 +1860,7 @@ exports.createSelector = createSelector;
|
|
|
1848
1860
|
exports.createSelectorFamily = createSelectorFamily;
|
|
1849
1861
|
exports.deleteAtom = deleteAtom;
|
|
1850
1862
|
exports.deposit = deposit;
|
|
1863
|
+
exports.evictCachedValue = evictCachedValue;
|
|
1851
1864
|
exports.getJsonToken = getJsonToken;
|
|
1852
1865
|
exports.getState__INTERNAL = getState__INTERNAL;
|
|
1853
1866
|
exports.getUpdateToken = getUpdateToken;
|