atom.io 0.32.3 → 0.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-Cl8Af3a2.js +11 -0
- package/dist/data/index.d.ts +28 -0
- package/dist/data/index.d.ts.map +1 -0
- package/dist/data/index.js +66 -0
- package/dist/data/index.js.map +1 -0
- package/dist/devtools-CAg2k57t.js +0 -0
- package/dist/devtools-Jyn42mZm.css +311 -0
- package/dist/devtools-Jyn42mZm.css.map +1 -0
- package/dist/eslint-plugin/index.d.ts +36 -0
- package/dist/eslint-plugin/index.d.ts.map +1 -0
- package/dist/eslint-plugin/index.js +196 -0
- package/dist/eslint-plugin/index.js.map +1 -0
- package/{internal/dist → dist/internal}/index.d.ts +497 -377
- package/dist/internal/index.d.ts.map +1 -0
- package/dist/internal/index.js +3213 -0
- package/dist/internal/index.js.map +1 -0
- package/dist/introspection/index.d.ts +153 -0
- package/dist/introspection/index.d.ts.map +1 -0
- package/dist/introspection/index.js +520 -0
- package/dist/introspection/index.js.map +1 -0
- package/{json/dist → dist/json}/index.d.ts +38 -32
- package/dist/json/index.d.ts.map +1 -0
- package/dist/json/index.js +75 -0
- package/dist/json/index.js.map +1 -0
- package/dist/main/index.d.ts +691 -0
- package/dist/main/index.d.ts.map +1 -0
- package/dist/main/index.js +237 -0
- package/dist/main/index.js.map +1 -0
- package/{react/dist → dist/react}/index.d.ts +22 -11
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +91 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react-devtools/index.d.ts +194 -0
- package/dist/react-devtools/index.d.ts.map +1 -0
- package/dist/react-devtools/index.js +1274 -0
- package/dist/react-devtools/index.js.map +1 -0
- package/dist/realtime/index.d.ts +55 -0
- package/dist/realtime/index.d.ts.map +1 -0
- package/dist/realtime/index.js +113 -0
- package/dist/realtime/index.js.map +1 -0
- package/dist/realtime-client/index.d.ts +81 -0
- package/dist/realtime-client/index.d.ts.map +1 -0
- package/dist/realtime-client/index.js +376 -0
- package/dist/realtime-client/index.js.map +1 -0
- package/dist/realtime-react/index.d.ts +68 -0
- package/dist/realtime-react/index.d.ts.map +1 -0
- package/dist/realtime-react/index.js +182 -0
- package/dist/realtime-react/index.js.map +1 -0
- package/dist/realtime-server/index.d.ts +190 -0
- package/dist/realtime-server/index.d.ts.map +1 -0
- package/dist/realtime-server/index.js +795 -0
- package/dist/realtime-server/index.js.map +1 -0
- package/dist/realtime-testing/index.d.ts +60 -0
- package/dist/realtime-testing/index.d.ts.map +1 -0
- package/dist/realtime-testing/index.js +181 -0
- package/dist/realtime-testing/index.js.map +1 -0
- package/dist/transceivers/set-rtx/index.d.ts +44 -0
- package/dist/transceivers/set-rtx/index.d.ts.map +1 -0
- package/dist/transceivers/set-rtx/index.js +204 -0
- package/dist/transceivers/set-rtx/index.js.map +1 -0
- package/dist/web/index.d.ts +15 -0
- package/dist/web/index.d.ts.map +1 -0
- package/dist/web/index.js +16 -0
- package/dist/web/index.js.map +1 -0
- package/package.json +70 -122
- package/{data/src → src/data}/struct.ts +1 -0
- package/{eslint-plugin/src → src/eslint-plugin}/index.ts +3 -1
- package/{eslint-plugin/src → src/eslint-plugin}/rules/explicit-state-types.ts +6 -1
- package/{eslint-plugin/src → src/eslint-plugin}/rules/synchronous-selector-dependencies.ts +14 -1
- package/{internal/src → src/internal}/families/create-writable-selector-family.ts +4 -2
- package/{internal/src → src/internal}/families/index.ts +2 -0
- package/{internal/src → src/internal}/index.ts +1 -0
- package/{internal/src → src/internal}/join/find-relations-in-store.ts +12 -0
- package/{internal/src → src/internal}/junction.ts +3 -2
- package/{internal/src → src/internal}/lazy-map.ts +1 -1
- package/{internal/src → src/internal}/mutable/tracker-family.ts +2 -5
- package/{internal/src → src/internal}/mutable/tracker.ts +15 -9
- package/{internal/src → src/internal}/selector/register-selector.ts +2 -1
- package/{internal/src → src/internal}/store/store.ts +68 -53
- package/{internal/src → src/internal}/subject.ts +1 -1
- package/{internal/src → src/internal}/transaction/build-transaction.ts +2 -1
- package/{introspection/src → src/introspection}/auditor.ts +1 -1
- package/{introspection/src → src/introspection}/differ.ts +12 -1
- package/{introspection/src → src/introspection}/refinery.ts +18 -3
- package/{json/src → src/json}/entries.ts +1 -1
- package/{json/src → src/json}/select-json-family.ts +1 -1
- package/src/{realm.ts → main/realm.ts} +1 -1
- package/src/{silo.ts → main/silo.ts} +1 -1
- package/src/{transaction.ts → main/transaction.ts} +1 -1
- package/{react/src → src/react}/store-context.tsx +3 -1
- package/{react/src → src/react}/use-i.ts +3 -5
- package/{react-devtools/src → src/react-devtools}/AtomIODevtools.tsx +1 -1
- package/{react-devtools/src → src/react-devtools}/Button.tsx +3 -1
- package/{react-devtools/src → src/react-devtools}/Updates.tsx +5 -1
- package/src/react-devtools/devtools.css +308 -0
- package/{react-devtools/src → src/react-devtools}/json-editor/developer-interface.tsx +2 -2
- package/{react-devtools/src → src/react-devtools}/json-editor/editors-by-type/utilities/cast-json.ts +2 -2
- package/{react-devtools/src → src/react-devtools}/json-editor/editors-by-type/utilities/object-properties.ts +3 -3
- package/{react-devtools/src → src/react-devtools}/json-editor/json-editor-internal.tsx +4 -2
- package/{react-devtools/src → src/react-devtools}/store.ts +3 -2
- package/{realtime/src → src/realtime}/shared-room-store.ts +28 -5
- package/src/realtime-client/realtime-client-stores/client-main-store.ts +23 -0
- package/src/realtime-client/realtime-client-stores/client-sync-store.ts +15 -0
- package/{realtime-react/src → src/realtime-react}/index.ts +1 -0
- package/{realtime-react/src → src/realtime-react}/on-mount.ts +1 -1
- package/{realtime-react/src → src/realtime-react}/realtime-context.tsx +5 -4
- package/{realtime-react/src → src/realtime-react}/use-single-effect.ts +3 -2
- package/{realtime-server/src → src/realtime-server}/ipc-sockets/child-socket.ts +1 -1
- package/{realtime-server/src → src/realtime-server}/realtime-server-stores/server-room-external-actions.ts +20 -19
- package/{realtime-server/src → src/realtime-server}/realtime-server-stores/server-room-external-store.ts +12 -7
- package/{realtime-server/src → src/realtime-server}/realtime-server-stores/server-sync-store.ts +13 -4
- package/{realtime-server/src → src/realtime-server}/realtime-server-stores/server-user-store.ts +26 -8
- package/{transceivers/set-rtx/src → src/transceivers/set-rtx}/set-rtx.ts +2 -2
- package/data/dist/index.d.ts +0 -31
- package/data/dist/index.js +0 -69
- package/data/package.json +0 -13
- package/dist/chunk-2XDFCXGB.js +0 -109
- package/dist/chunk-35NB2XZU.js +0 -4501
- package/dist/chunk-4LWKCEW3.js +0 -14
- package/dist/chunk-EF4S7H42.js +0 -526
- package/dist/chunk-LTLDKXDN.js +0 -153
- package/dist/chunk-MENOYVPP.js +0 -83
- package/dist/chunk-RGUNRT72.js +0 -634
- package/dist/chunk-TS76LQVD.js +0 -1035
- package/dist/chunk-XWL6SNVU.js +0 -7
- package/dist/index.d.ts +0 -701
- package/dist/index.js +0 -2
- package/eslint-plugin/dist/index.d.ts +0 -64
- package/eslint-plugin/dist/index.js +0 -238
- package/eslint-plugin/package.json +0 -13
- package/internal/dist/index.js +0 -2
- package/internal/package.json +0 -13
- package/introspection/dist/index.d.ts +0 -149
- package/introspection/dist/index.js +0 -3
- package/introspection/package.json +0 -13
- package/json/dist/index.js +0 -2
- package/json/package.json +0 -13
- package/react/dist/index.js +0 -3
- package/react/package.json +0 -13
- package/react-devtools/dist/index.css +0 -309
- package/react-devtools/dist/index.d.ts +0 -160
- package/react-devtools/dist/index.js +0 -1481
- package/react-devtools/package.json +0 -13
- package/react-devtools/src/devtools.scss +0 -309
- package/realtime/dist/index.d.ts +0 -51
- package/realtime/dist/index.js +0 -3
- package/realtime/package.json +0 -13
- package/realtime-client/dist/index.d.ts +0 -41
- package/realtime-client/dist/index.js +0 -4
- package/realtime-client/package.json +0 -13
- package/realtime-client/src/realtime-client-stores/client-main-store.ts +0 -20
- package/realtime-client/src/realtime-client-stores/client-sync-store.ts +0 -15
- package/realtime-react/dist/index.d.ts +0 -39
- package/realtime-react/dist/index.js +0 -6
- package/realtime-react/package.json +0 -13
- package/realtime-server/dist/index.d.ts +0 -139
- package/realtime-server/dist/index.js +0 -4
- package/realtime-server/package.json +0 -13
- package/realtime-testing/dist/index.d.ts +0 -59
- package/realtime-testing/dist/index.js +0 -198
- package/realtime-testing/package.json +0 -13
- package/transceivers/set-rtx/dist/index.d.ts +0 -41
- package/transceivers/set-rtx/dist/index.js +0 -2
- package/transceivers/set-rtx/package.json +0 -13
- package/web/dist/index.d.ts +0 -9
- package/web/dist/index.js +0 -2
- package/web/package.json +0 -13
- /package/{data/src → src/data}/dict.ts +0 -0
- /package/{data/src → src/data}/index.ts +0 -0
- /package/{data/src → src/data}/struct-family.ts +0 -0
- /package/{eslint-plugin/src → src/eslint-plugin}/rules/index.ts +0 -0
- /package/{eslint-plugin/src → src/eslint-plugin}/walk.ts +0 -0
- /package/{internal/src → src/internal}/arbitrary.ts +0 -0
- /package/{internal/src → src/internal}/atom/create-regular-atom.ts +0 -0
- /package/{internal/src → src/internal}/atom/create-standalone-atom.ts +0 -0
- /package/{internal/src → src/internal}/atom/dispose-atom.ts +0 -0
- /package/{internal/src → src/internal}/atom/index.ts +0 -0
- /package/{internal/src → src/internal}/atom/is-default.ts +0 -0
- /package/{internal/src → src/internal}/caching.ts +0 -0
- /package/{internal/src → src/internal}/capitalize.ts +0 -0
- /package/{internal/src → src/internal}/families/create-atom-family.ts +0 -0
- /package/{internal/src → src/internal}/families/create-readonly-selector-family.ts +0 -0
- /package/{internal/src → src/internal}/families/create-regular-atom-family.ts +0 -0
- /package/{internal/src → src/internal}/families/create-selector-family.ts +0 -0
- /package/{internal/src → src/internal}/families/dispose-from-store.ts +0 -0
- /package/{internal/src → src/internal}/families/find-in-store.ts +0 -0
- /package/{internal/src → src/internal}/families/get-family-of-token.ts +0 -0
- /package/{internal/src → src/internal}/families/init-family-member.ts +0 -0
- /package/{internal/src → src/internal}/families/seek-in-store.ts +0 -0
- /package/{internal/src → src/internal}/future.ts +0 -0
- /package/{internal/src → src/internal}/get-environment-data.ts +0 -0
- /package/{internal/src → src/internal}/get-state/get-from-store.ts +0 -0
- /package/{internal/src → src/internal}/get-state/index.ts +0 -0
- /package/{internal/src → src/internal}/get-state/read-or-compute-value.ts +0 -0
- /package/{internal/src → src/internal}/get-trace.ts +0 -0
- /package/{internal/src → src/internal}/ingest-updates/index.ts +0 -0
- /package/{internal/src → src/internal}/ingest-updates/ingest-atom-update.ts +0 -0
- /package/{internal/src → src/internal}/ingest-updates/ingest-creation-disposal.ts +0 -0
- /package/{internal/src → src/internal}/ingest-updates/ingest-selector-update.ts +0 -0
- /package/{internal/src → src/internal}/ingest-updates/ingest-transaction-update.ts +0 -0
- /package/{internal/src → src/internal}/install-into-store.ts +0 -0
- /package/{internal/src → src/internal}/join/edit-relations-in-store.ts +0 -0
- /package/{internal/src → src/internal}/join/get-internal-relations-from-store.ts +0 -0
- /package/{internal/src → src/internal}/join/get-join.ts +0 -0
- /package/{internal/src → src/internal}/join/index.ts +0 -0
- /package/{internal/src → src/internal}/join/join-internal.ts +0 -0
- /package/{internal/src → src/internal}/keys.ts +0 -0
- /package/{internal/src → src/internal}/lineage.ts +0 -0
- /package/{internal/src → src/internal}/molecule.ts +0 -0
- /package/{internal/src → src/internal}/mutable/create-mutable-atom-family.ts +0 -0
- /package/{internal/src → src/internal}/mutable/create-mutable-atom.ts +0 -0
- /package/{internal/src → src/internal}/mutable/get-json-family.ts +0 -0
- /package/{internal/src → src/internal}/mutable/get-json-token.ts +0 -0
- /package/{internal/src → src/internal}/mutable/get-update-family.ts +0 -0
- /package/{internal/src → src/internal}/mutable/get-update-token.ts +0 -0
- /package/{internal/src → src/internal}/mutable/index.ts +0 -0
- /package/{internal/src → src/internal}/mutable/transceiver.ts +0 -0
- /package/{internal/src → src/internal}/not-found-error.ts +0 -0
- /package/{internal/src → src/internal}/operation.ts +0 -0
- /package/{internal/src → src/internal}/pretty-print.ts +0 -0
- /package/{internal/src → src/internal}/reserved-keys.ts +0 -0
- /package/{internal/src → src/internal}/selector/create-readonly-selector.ts +0 -0
- /package/{internal/src → src/internal}/selector/create-standalone-selector.ts +0 -0
- /package/{internal/src → src/internal}/selector/create-writable-selector.ts +0 -0
- /package/{internal/src → src/internal}/selector/dispose-selector.ts +0 -0
- /package/{internal/src → src/internal}/selector/get-selector-dependency-keys.ts +0 -0
- /package/{internal/src → src/internal}/selector/index.ts +0 -0
- /package/{internal/src → src/internal}/selector/trace-selector-atoms.ts +0 -0
- /package/{internal/src → src/internal}/selector/update-selector-atoms.ts +0 -0
- /package/{internal/src → src/internal}/set-state/become.ts +0 -0
- /package/{internal/src → src/internal}/set-state/copy-mutable-if-needed.ts +0 -0
- /package/{internal/src → src/internal}/set-state/emit-update.ts +0 -0
- /package/{internal/src → src/internal}/set-state/evict-downstream.ts +0 -0
- /package/{internal/src → src/internal}/set-state/index.ts +0 -0
- /package/{internal/src → src/internal}/set-state/set-atom-or-selector.ts +0 -0
- /package/{internal/src → src/internal}/set-state/set-atom.ts +0 -0
- /package/{internal/src → src/internal}/set-state/set-into-store.ts +0 -0
- /package/{internal/src → src/internal}/store/circular-buffer.ts +0 -0
- /package/{internal/src → src/internal}/store/counterfeit.ts +0 -0
- /package/{internal/src → src/internal}/store/deposit.ts +0 -0
- /package/{internal/src → src/internal}/store/index.ts +0 -0
- /package/{internal/src → src/internal}/store/withdraw.ts +0 -0
- /package/{internal/src → src/internal}/subscribe/index.ts +0 -0
- /package/{internal/src → src/internal}/subscribe/recall-state.ts +0 -0
- /package/{internal/src → src/internal}/subscribe/subscribe-in-store.ts +0 -0
- /package/{internal/src → src/internal}/subscribe/subscribe-to-root-atoms.ts +0 -0
- /package/{internal/src → src/internal}/subscribe/subscribe-to-state.ts +0 -0
- /package/{internal/src → src/internal}/subscribe/subscribe-to-timeline.ts +0 -0
- /package/{internal/src → src/internal}/subscribe/subscribe-to-transaction.ts +0 -0
- /package/{internal/src → src/internal}/timeline/create-timeline.ts +0 -0
- /package/{internal/src → src/internal}/timeline/index.ts +0 -0
- /package/{internal/src → src/internal}/timeline/time-travel.ts +0 -0
- /package/{internal/src → src/internal}/transaction/abort-transaction.ts +0 -0
- /package/{internal/src → src/internal}/transaction/act-upon-store.ts +0 -0
- /package/{internal/src → src/internal}/transaction/apply-transaction.ts +0 -0
- /package/{internal/src → src/internal}/transaction/assign-transaction-to-continuity.ts +0 -0
- /package/{internal/src → src/internal}/transaction/create-transaction.ts +0 -0
- /package/{internal/src → src/internal}/transaction/get-epoch-number.ts +0 -0
- /package/{internal/src → src/internal}/transaction/index.ts +0 -0
- /package/{internal/src → src/internal}/transaction/is-root-store.ts +0 -0
- /package/{internal/src → src/internal}/transaction/set-epoch-number.ts +0 -0
- /package/{internal/src → src/internal}/utility-types.ts +0 -0
- /package/{introspection/src → src/introspection}/attach-atom-index.ts +0 -0
- /package/{introspection/src → src/introspection}/attach-introspection-states.ts +0 -0
- /package/{introspection/src → src/introspection}/attach-selector-index.ts +0 -0
- /package/{introspection/src → src/introspection}/attach-timeline-family.ts +0 -0
- /package/{introspection/src → src/introspection}/attach-timeline-index.ts +0 -0
- /package/{introspection/src → src/introspection}/attach-transaction-index.ts +0 -0
- /package/{introspection/src → src/introspection}/attach-transaction-logs.ts +0 -0
- /package/{introspection/src → src/introspection}/attach-type-selectors.ts +0 -0
- /package/{introspection/src → src/introspection}/index.ts +0 -0
- /package/{introspection/src → src/introspection}/sprawl.ts +0 -0
- /package/{json/src → src/json}/index.ts +0 -0
- /package/{json/src → src/json}/select-json.ts +0 -0
- /package/src/{atom.ts → main/atom.ts} +0 -0
- /package/src/{dispose-state.ts → main/dispose-state.ts} +0 -0
- /package/src/{find-state.ts → main/find-state.ts} +0 -0
- /package/src/{get-state.ts → main/get-state.ts} +0 -0
- /package/src/{index.ts → main/index.ts} +0 -0
- /package/src/{join.ts → main/join.ts} +0 -0
- /package/src/{logger.ts → main/logger.ts} +0 -0
- /package/src/{selector.ts → main/selector.ts} +0 -0
- /package/src/{set-state.ts → main/set-state.ts} +0 -0
- /package/src/{subscribe.ts → main/subscribe.ts} +0 -0
- /package/src/{timeline.ts → main/timeline.ts} +0 -0
- /package/src/{validators.ts → main/validators.ts} +0 -0
- /package/{react/src → src/react}/index.ts +0 -0
- /package/{react/src → src/react}/parse-state-overloads.ts +0 -0
- /package/{react/src → src/react}/use-json.ts +0 -0
- /package/{react/src → src/react}/use-o.ts +0 -0
- /package/{react/src → src/react}/use-tl.ts +0 -0
- /package/{react-devtools/src → src/react-devtools}/StateEditor.tsx +0 -0
- /package/{react-devtools/src → src/react-devtools}/StateIndex.tsx +0 -0
- /package/{react-devtools/src → src/react-devtools}/TimelineIndex.tsx +0 -0
- /package/{react-devtools/src → src/react-devtools}/TransactionIndex.tsx +0 -0
- /package/{react-devtools/src → src/react-devtools}/elastic-input/ElasticInput.tsx +0 -0
- /package/{react-devtools/src → src/react-devtools}/elastic-input/NumberInput.tsx +0 -0
- /package/{react-devtools/src → src/react-devtools}/elastic-input/TextInput.tsx +0 -0
- /package/{react-devtools/src → src/react-devtools}/elastic-input/index.ts +0 -0
- /package/{react-devtools/src → src/react-devtools}/error-boundary/DefaultFallback.tsx +0 -0
- /package/{react-devtools/src → src/react-devtools}/error-boundary/ReactErrorBoundary.tsx +0 -0
- /package/{react-devtools/src → src/react-devtools}/error-boundary/index.ts +0 -0
- /package/{react-devtools/src → src/react-devtools}/index.ts +0 -0
- /package/{react-devtools/src → src/react-devtools}/json-editor/default-components.tsx +0 -0
- /package/{react-devtools/src → src/react-devtools}/json-editor/editors-by-type/array-editor.tsx +0 -0
- /package/{react-devtools/src → src/react-devtools}/json-editor/editors-by-type/non-json.tsx +0 -0
- /package/{react-devtools/src → src/react-devtools}/json-editor/editors-by-type/object-editor.tsx +0 -0
- /package/{react-devtools/src → src/react-devtools}/json-editor/editors-by-type/primitive-editors.tsx +0 -0
- /package/{react-devtools/src → src/react-devtools}/json-editor/editors-by-type/utilities/array-elements.ts +0 -0
- /package/{react-devtools/src → src/react-devtools}/json-editor/editors-by-type/utilities/cast-to-json.ts +0 -0
- /package/{react-devtools/src → src/react-devtools}/json-editor/index.ts +0 -0
- /package/{react-devtools/src → src/react-devtools}/json-editor/todo.md +0 -0
- /package/{realtime/src → src/realtime}/index.ts +0 -0
- /package/{realtime/src → src/realtime}/realtime-continuity.ts +0 -0
- /package/{realtime-client/src → src/realtime-client}/continuity/index.ts +0 -0
- /package/{realtime-client/src → src/realtime-client}/continuity/register-and-attempt-confirmed-update.ts +0 -0
- /package/{realtime-client/src → src/realtime-client}/continuity/use-conceal-state.ts +0 -0
- /package/{realtime-client/src → src/realtime-client}/continuity/use-reveal-state.ts +0 -0
- /package/{realtime-client/src → src/realtime-client}/index.ts +0 -0
- /package/{realtime-client/src → src/realtime-client}/pull-atom-family-member.ts +0 -0
- /package/{realtime-client/src → src/realtime-client}/pull-atom.ts +0 -0
- /package/{realtime-client/src → src/realtime-client}/pull-mutable-atom-family-member.ts +0 -0
- /package/{realtime-client/src → src/realtime-client}/pull-mutable-atom.ts +0 -0
- /package/{realtime-client/src → src/realtime-client}/pull-selector-family-member.ts +0 -0
- /package/{realtime-client/src → src/realtime-client}/pull-selector.ts +0 -0
- /package/{realtime-client/src → src/realtime-client}/push-state.ts +0 -0
- /package/{realtime-client/src → src/realtime-client}/realtime-client-stores/index.ts +0 -0
- /package/{realtime-client/src → src/realtime-client}/server-action.ts +0 -0
- /package/{realtime-client/src → src/realtime-client}/sync-continuity.ts +0 -0
- /package/{realtime-react/src → src/realtime-react}/use-pull-atom-family-member.ts +0 -0
- /package/{realtime-react/src → src/realtime-react}/use-pull-atom.ts +0 -0
- /package/{realtime-react/src → src/realtime-react}/use-pull-mutable-atom.ts +0 -0
- /package/{realtime-react/src → src/realtime-react}/use-pull-mutable-family-member.ts +0 -0
- /package/{realtime-react/src → src/realtime-react}/use-pull-selector-family-member.ts +0 -0
- /package/{realtime-react/src → src/realtime-react}/use-pull-selector.ts +0 -0
- /package/{realtime-react/src → src/realtime-react}/use-push.ts +0 -0
- /package/{realtime-react/src → src/realtime-react}/use-realtime-service.ts +0 -0
- /package/{realtime-react/src → src/realtime-react}/use-server-action.ts +0 -0
- /package/{realtime-react/src → src/realtime-react}/use-sync-continuity.ts +0 -0
- /package/{realtime-server/src → src/realtime-server}/README.md +0 -0
- /package/{realtime-server/src → src/realtime-server}/continuity/prepare-to-send-initial-payload.ts +0 -0
- /package/{realtime-server/src → src/realtime-server}/continuity/prepare-to-serve-transaction-request.ts +0 -0
- /package/{realtime-server/src → src/realtime-server}/continuity/prepare-to-sync-realtime-continuity.ts +0 -0
- /package/{realtime-server/src → src/realtime-server}/continuity/prepare-to-track-client-acknowledgement.ts +0 -0
- /package/{realtime-server/src → src/realtime-server}/continuity/subscribe-to-continuity-actions.ts +0 -0
- /package/{realtime-server/src → src/realtime-server}/continuity/subscribe-to-continuity-perpectives.ts +0 -0
- /package/{realtime-server/src → src/realtime-server}/index.ts +0 -0
- /package/{realtime-server/src → src/realtime-server}/ipc-sockets/custom-socket.ts +0 -0
- /package/{realtime-server/src → src/realtime-server}/ipc-sockets/index.ts +0 -0
- /package/{realtime-server/src → src/realtime-server}/ipc-sockets/parent-socket.ts +0 -0
- /package/{realtime-server/src → src/realtime-server}/realtime-action-receiver.ts +0 -0
- /package/{realtime-server/src → src/realtime-server}/realtime-family-provider.ts +0 -0
- /package/{realtime-server/src → src/realtime-server}/realtime-mutable-family-provider.ts +0 -0
- /package/{realtime-server/src → src/realtime-server}/realtime-mutable-provider.ts +0 -0
- /package/{realtime-server/src → src/realtime-server}/realtime-server-stores/index.ts +0 -0
- /package/{realtime-server/src → src/realtime-server}/realtime-state-provider.ts +0 -0
- /package/{realtime-server/src → src/realtime-server}/realtime-state-receiver.ts +0 -0
- /package/{realtime-testing/src → src/realtime-testing}/index.ts +0 -0
- /package/{realtime-testing/src → src/realtime-testing}/setup-realtime-test.tsx +0 -0
- /package/{transceivers/set-rtx/src → src/transceivers/set-rtx}/index.ts +0 -0
- /package/{web/src → src/web}/index.ts +0 -0
- /package/{web/src → src/web}/persist-sync.ts +0 -0
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import * as Internal from "atom.io/internal";
|
|
2
|
+
import { Flat, Func, Refinement, Store, Timeline } from "atom.io/internal";
|
|
3
|
+
import { Json } from "atom.io/json";
|
|
4
|
+
import { AtomToken, ReadableToken, ReadonlySelectorFamilyToken, ReadonlySelectorToken, SelectorToken, TimelineToken, TransactionToken, TransactionUpdate } from "atom.io";
|
|
5
|
+
|
|
6
|
+
//#region src/introspection/attach-atom-index.d.ts
|
|
7
|
+
type AtomTokenIndex = WritableTokenIndex<AtomToken<unknown>>;
|
|
8
|
+
|
|
9
|
+
//#endregion
|
|
10
|
+
//#region src/introspection/attach-selector-index.d.ts
|
|
11
|
+
type SelectorTokenIndex = WritableTokenIndex<SelectorToken<unknown>>;
|
|
12
|
+
|
|
13
|
+
//#endregion
|
|
14
|
+
//#region src/introspection/attach-introspection-states.d.ts
|
|
15
|
+
type IntrospectionStates = {
|
|
16
|
+
atomIndex: ReadonlySelectorToken<AtomTokenIndex>;
|
|
17
|
+
selectorIndex: ReadonlySelectorToken<SelectorTokenIndex>;
|
|
18
|
+
transactionIndex: ReadonlySelectorToken<TransactionToken<Func>[]>;
|
|
19
|
+
transactionLogSelectors: ReadonlySelectorFamilyToken<TransactionUpdate<Func>[], string>;
|
|
20
|
+
timelineIndex: ReadonlySelectorToken<TimelineToken<any>[]>;
|
|
21
|
+
timelineSelectors: ReadonlySelectorFamilyToken<Timeline<any>, string>;
|
|
22
|
+
typeSelectors: ReadonlySelectorFamilyToken<string, string>;
|
|
23
|
+
};
|
|
24
|
+
declare const attachIntrospectionStates: (store: Store) => IntrospectionStates;
|
|
25
|
+
|
|
26
|
+
//#endregion
|
|
27
|
+
//#region src/introspection/auditor.d.ts
|
|
28
|
+
type ListResourcesParam = {
|
|
29
|
+
atomFamilies: boolean;
|
|
30
|
+
selectorFamilies: boolean;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Auditor is a tool for identifying lingering resources in your store that may result in memory leaks.
|
|
34
|
+
* @experimental
|
|
35
|
+
*/
|
|
36
|
+
declare class Auditor {
|
|
37
|
+
readonly store: Internal.Store;
|
|
38
|
+
auditorCreatedAt: number;
|
|
39
|
+
statesCreatedAt: Map<string, number>;
|
|
40
|
+
readonly atomIndex: ReadonlySelectorToken<AtomTokenIndex>;
|
|
41
|
+
readonly selectorIndex: ReadonlySelectorToken<SelectorTokenIndex>;
|
|
42
|
+
disposed: boolean;
|
|
43
|
+
private readonly unsubscribeFromAtomCreation;
|
|
44
|
+
private readonly unsubscribeFromAtomDisposal;
|
|
45
|
+
private readonly unsubscribeFromSelectorCreation;
|
|
46
|
+
private readonly unsubscribeFromSelectorDisposal;
|
|
47
|
+
/**
|
|
48
|
+
* @param {Store} store - The store to audit.
|
|
49
|
+
*/
|
|
50
|
+
constructor(store?: Internal.Store);
|
|
51
|
+
static readonly DEFAULT_LIST_RESOURCES_PARAM: ListResourcesParam;
|
|
52
|
+
/**
|
|
53
|
+
* Lists all resources in the store, along with their creation time.
|
|
54
|
+
*
|
|
55
|
+
* @param {ListResourcesParam} [param] - Optional parameters for filtering the list of resources.
|
|
56
|
+
* @returns {readonly [ReadableToken<unknown>, number]}[] - An array of tuples, where each tuple contains a state token belonging to a family in the store and that state's creation time.
|
|
57
|
+
*/
|
|
58
|
+
listResources(param?: ListResourcesParam): (readonly [ReadableToken<unknown>, number])[];
|
|
59
|
+
[Symbol.dispose](): void;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
//#endregion
|
|
63
|
+
//#region src/introspection/refinery.d.ts
|
|
64
|
+
type ClassSignature = abstract new (...args: any) => any;
|
|
65
|
+
type RefinementStrategy = ClassSignature | Refinement<unknown, any>;
|
|
66
|
+
type Supported<Refine extends RefinementStrategy> = Refine extends Refinement<unknown, infer T> ? T : Refine extends ClassSignature ? InstanceType<Refine> : never;
|
|
67
|
+
type RefinementSupport = Record<string, RefinementStrategy>;
|
|
68
|
+
declare class Refinery<SupportedTypes extends RefinementSupport> {
|
|
69
|
+
supported: SupportedTypes;
|
|
70
|
+
constructor(supported: SupportedTypes);
|
|
71
|
+
refine<T>(input: T): Flat<{ [K in keyof SupportedTypes]: T extends Supported<SupportedTypes[K]> ? {
|
|
72
|
+
type: K;
|
|
73
|
+
data: Supported<SupportedTypes[K]>;
|
|
74
|
+
} : Supported<SupportedTypes[K]> extends T ? {
|
|
75
|
+
type: K;
|
|
76
|
+
data: Supported<SupportedTypes[K]>;
|
|
77
|
+
} : never }>[keyof SupportedTypes] | (T extends Supported<SupportedTypes[keyof SupportedTypes]> ? never : null);
|
|
78
|
+
}
|
|
79
|
+
declare const primitiveRefinery: Refinery<{
|
|
80
|
+
number: (input: unknown) => input is number;
|
|
81
|
+
string: (input: unknown) => input is string;
|
|
82
|
+
boolean: (input: unknown) => input is boolean;
|
|
83
|
+
null: (input: unknown) => input is null;
|
|
84
|
+
}>;
|
|
85
|
+
declare function isPlainObject(input: unknown): input is Json.Tree.Object;
|
|
86
|
+
declare const jsonTreeRefinery: Refinery<{
|
|
87
|
+
object: (input: unknown) => input is Json.Tree.Object;
|
|
88
|
+
array: (input: unknown) => input is Json.Tree.Array;
|
|
89
|
+
}>;
|
|
90
|
+
declare const jsonRefinery: Refinery<{
|
|
91
|
+
object: (input: unknown) => input is Json.Tree.Object;
|
|
92
|
+
array: (input: unknown) => input is Json.Tree.Array;
|
|
93
|
+
number: (input: unknown) => input is number;
|
|
94
|
+
string: (input: unknown) => input is string;
|
|
95
|
+
boolean: (input: unknown) => input is boolean;
|
|
96
|
+
null: (input: unknown) => input is null;
|
|
97
|
+
}>;
|
|
98
|
+
type JsonType = keyof typeof jsonRefinery.supported;
|
|
99
|
+
declare const discoverType: (input: unknown) => JsonType | `Map` | `Set` | `undefined` | (string & {});
|
|
100
|
+
|
|
101
|
+
//#endregion
|
|
102
|
+
//#region src/introspection/differ.d.ts
|
|
103
|
+
declare function diffNumber(a: number, b: number): Delta;
|
|
104
|
+
declare function diffString(a: string, b: string): Delta;
|
|
105
|
+
declare function diffBoolean(a: boolean, b: boolean): Delta;
|
|
106
|
+
declare function diffObject(a: Json.Tree.Object, b: Json.Tree.Object, recurse: Diff<unknown>): Delta;
|
|
107
|
+
declare function diffArray(a: Json.Tree.Array, b: Json.Tree.Array, recurse: Diff<unknown>): Delta;
|
|
108
|
+
type Delta = {
|
|
109
|
+
summary: string;
|
|
110
|
+
added?: [path: string, addedStringifiedValue: string][];
|
|
111
|
+
removed?: [path: string, removedStringifiedValue: string][];
|
|
112
|
+
changed?: [path: string, delta: Delta][];
|
|
113
|
+
};
|
|
114
|
+
type Diff<T> = (a: T, b: T) => Delta;
|
|
115
|
+
type DiffTree<T> = (a: T, b: T, recurse: Differ<any, any>[`diff`]) => Delta;
|
|
116
|
+
declare class Differ<Leaf extends Record<string, any>, Tree extends Record<string, any>> {
|
|
117
|
+
leafRefinery: Refinery<Leaf>;
|
|
118
|
+
treeRefinery: Refinery<Tree>;
|
|
119
|
+
leafDiffers: { [KL in keyof Leaf]: Diff<Supported<Leaf[KL]>> };
|
|
120
|
+
treeDiffers: { [KT in keyof Tree]: DiffTree<Supported<Tree[KT]>> };
|
|
121
|
+
constructor(leafRefinery: Refinery<Leaf>, treeRefinery: Refinery<Tree>, diffFunctions: { [KT in keyof Tree]: DiffTree<Supported<Tree[KT]>> } & { [KL in keyof Leaf]: Diff<Supported<Leaf[KL]>> });
|
|
122
|
+
diff(a: unknown, b: unknown): Delta;
|
|
123
|
+
}
|
|
124
|
+
declare const prettyJson: Differ<{
|
|
125
|
+
number: (input: unknown) => input is number;
|
|
126
|
+
string: (input: unknown) => input is string;
|
|
127
|
+
boolean: (input: unknown) => input is boolean;
|
|
128
|
+
null: (input: unknown) => input is null;
|
|
129
|
+
}, {
|
|
130
|
+
object: (input: unknown) => input is Json.Tree.Object;
|
|
131
|
+
array: (input: unknown) => input is Json.Tree.Array;
|
|
132
|
+
}>;
|
|
133
|
+
|
|
134
|
+
//#endregion
|
|
135
|
+
//#region src/introspection/sprawl.d.ts
|
|
136
|
+
type InspectionResult = Partial<{
|
|
137
|
+
pathComplete: true;
|
|
138
|
+
jobComplete: true;
|
|
139
|
+
}>;
|
|
140
|
+
type InspectNode = (path: string[], node: unknown) => InspectionResult | void;
|
|
141
|
+
declare const sprawl: (tree: Array<unknown> | object, inspector: InspectNode) => void;
|
|
142
|
+
|
|
143
|
+
//#endregion
|
|
144
|
+
//#region src/introspection/index.d.ts
|
|
145
|
+
type FamilyNode<Token extends ReadableToken<unknown>> = {
|
|
146
|
+
key: string;
|
|
147
|
+
familyMembers: Map<string, Token>;
|
|
148
|
+
};
|
|
149
|
+
type WritableTokenIndex<Token extends ReadableToken<unknown>> = Map<string, FamilyNode<Token> | Token>;
|
|
150
|
+
|
|
151
|
+
//#endregion
|
|
152
|
+
export { Auditor, ClassSignature, Differ, FamilyNode, InspectNode, InspectionResult, IntrospectionStates, JsonType, ListResourcesParam, RefinementStrategy, RefinementSupport, Refinery, Supported, WritableTokenIndex, attachIntrospectionStates, diffArray, diffBoolean, diffNumber, diffObject, diffString, discoverType, isPlainObject, jsonRefinery, jsonTreeRefinery, prettyJson, primitiveRefinery, sprawl };
|
|
153
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":["store: Store","store: Store","store: Store","store: Internal.Store","param: ListResourcesParam","supported: SupportedTypes","input: T","primitiveRefinery: Refinery<{\n\tnumber: (input: unknown) => input is number\n\tstring: (input: unknown) => input is string\n\tboolean: (input: unknown) => input is boolean\n\tnull: (input: unknown) => input is null\n}>","input: unknown","jsonTreeRefinery: Refinery<{\n\tobject: (input: unknown) => input is Json.Tree.Object\n\tarray: (input: unknown) => input is Json.Tree.Array\n}>","jsonRefinery: Refinery<{\n\tobject: (input: unknown) => input is Json.Tree.Object\n\tarray: (input: unknown) => input is Json.Tree.Array\n\tnumber: (input: unknown) => input is number\n\tstring: (input: unknown) => input is string\n\tboolean: (input: unknown) => input is boolean\n\tnull: (input: unknown) => input is null\n}>","a: number","b: number","a: string","b: string","a: boolean","b: boolean","a: Json.Tree.Object","b: Json.Tree.Object","recurse: Diff<unknown>","a: Json.Tree.Array","b: Json.Tree.Array","a: T","b: T","recurse: Differ<any, any>[`diff`]","leafRefinery: Refinery<Leaf>","treeRefinery: Refinery<Tree>","diffFunctions: {\n\t\t\t[KT in keyof Tree]: DiffTree<Supported<Tree[KT]>>\n\t\t} & { [KL in keyof Leaf]: Diff<Supported<Leaf[KL]>> }","a: unknown","b: unknown","prettyJson: Differ<\n\t{\n\t\tnumber: (input: unknown) => input is number\n\t\tstring: (input: unknown) => input is string\n\t\tboolean: (input: unknown) => input is boolean\n\t\tnull: (input: unknown) => input is null\n\t},\n\t{\n\t\tobject: (input: unknown) => input is Json.Tree.Object\n\t\tarray: (input: unknown) => input is Json.Tree.Array\n\t}\n>","input: unknown","path: string[]","node: unknown","tree: Array<unknown> | object","inspector: InspectNode"],"sources":["../../src/introspection/attach-atom-index.ts","../../src/introspection/attach-selector-index.ts","../../src/introspection/attach-introspection-states.ts","../../src/introspection/auditor.ts","../../src/introspection/refinery.ts","../../src/introspection/differ.ts","../../src/introspection/sprawl.ts","../../src/introspection/index.ts"],"sourcesContent":null,"mappings":"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"}
|
|
@@ -0,0 +1,520 @@
|
|
|
1
|
+
import * as Internal from "atom.io/internal";
|
|
2
|
+
import { Subject, createReadonlySelectorFamily, createRegularAtom, createRegularAtomFamily, createSelectorFamily, createStandaloneSelector, deposit, isReservedIntrospectionKey } from "atom.io/internal";
|
|
3
|
+
import { getState } from "atom.io";
|
|
4
|
+
|
|
5
|
+
//#region src/introspection/attach-atom-index.ts
|
|
6
|
+
const attachAtomIndex = (store) => {
|
|
7
|
+
const atomTokenIndexState__INTERNAL = createRegularAtom(store, {
|
|
8
|
+
key: `🔍 Atom Token Index (Internal)`,
|
|
9
|
+
default: () => {
|
|
10
|
+
const base = new Map();
|
|
11
|
+
for (const [key, val] of store.atoms) {
|
|
12
|
+
if (isReservedIntrospectionKey(key)) continue;
|
|
13
|
+
const token = deposit(val);
|
|
14
|
+
if (val.family) {
|
|
15
|
+
let familyNode = base.get(val.family.key);
|
|
16
|
+
if (!familyNode || !(`familyMembers` in familyNode)) {
|
|
17
|
+
familyNode = {
|
|
18
|
+
key: val.family.key,
|
|
19
|
+
familyMembers: new Map()
|
|
20
|
+
};
|
|
21
|
+
base.set(val.family.key, familyNode);
|
|
22
|
+
}
|
|
23
|
+
familyNode.familyMembers.set(val.family.subKey, token);
|
|
24
|
+
} else base.set(key, token);
|
|
25
|
+
}
|
|
26
|
+
return base;
|
|
27
|
+
},
|
|
28
|
+
effects: [({ setSelf }) => {
|
|
29
|
+
store.on.atomCreation.subscribe(`introspection`, (atomToken) => {
|
|
30
|
+
if (isReservedIntrospectionKey(atomToken.key)) return;
|
|
31
|
+
setSelf((self) => {
|
|
32
|
+
if (atomToken.family) {
|
|
33
|
+
const { key: familyKey, subKey } = atomToken.family;
|
|
34
|
+
let familyNode = self.get(familyKey);
|
|
35
|
+
if (familyNode === void 0 || !(`familyMembers` in familyNode)) {
|
|
36
|
+
familyNode = {
|
|
37
|
+
key: familyKey,
|
|
38
|
+
familyMembers: new Map()
|
|
39
|
+
};
|
|
40
|
+
self.set(familyKey, familyNode);
|
|
41
|
+
}
|
|
42
|
+
familyNode.familyMembers.set(subKey, atomToken);
|
|
43
|
+
} else self.set(atomToken.key, atomToken);
|
|
44
|
+
return self;
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
store.on.atomDisposal.subscribe(`introspection`, (atomToken) => {
|
|
48
|
+
setSelf((self) => {
|
|
49
|
+
if (atomToken.family) {
|
|
50
|
+
const { key: familyKey, subKey } = atomToken.family;
|
|
51
|
+
const familyNode = self.get(familyKey);
|
|
52
|
+
if (familyNode && `familyMembers` in familyNode) {
|
|
53
|
+
familyNode.familyMembers.delete(subKey);
|
|
54
|
+
if (familyNode.familyMembers.size === 0) self.delete(familyKey);
|
|
55
|
+
}
|
|
56
|
+
} else self.delete(atomToken.key);
|
|
57
|
+
return self;
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
}]
|
|
61
|
+
}, void 0);
|
|
62
|
+
return createStandaloneSelector(store, {
|
|
63
|
+
key: `🔍 Atom Token Index`,
|
|
64
|
+
get: ({ get }) => get(atomTokenIndexState__INTERNAL)
|
|
65
|
+
});
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
//#endregion
|
|
69
|
+
//#region src/introspection/attach-selector-index.ts
|
|
70
|
+
const attachSelectorIndex = (store) => {
|
|
71
|
+
const readonlySelectorTokenIndexState__INTERNAL = createRegularAtom(store, {
|
|
72
|
+
key: `🔍 Selector Token Index (Internal)`,
|
|
73
|
+
default: () => {
|
|
74
|
+
const base = new Map();
|
|
75
|
+
for (const map of [store.readonlySelectors, store.selectors]) for (const [key, val] of map) {
|
|
76
|
+
if (isReservedIntrospectionKey(key)) continue;
|
|
77
|
+
const token = deposit(val);
|
|
78
|
+
if (val.family) {
|
|
79
|
+
let familyNode = base.get(val.family.key);
|
|
80
|
+
if (!familyNode || !(`familyMembers` in familyNode)) {
|
|
81
|
+
familyNode = {
|
|
82
|
+
key: val.family.key,
|
|
83
|
+
familyMembers: new Map()
|
|
84
|
+
};
|
|
85
|
+
base.set(val.family.key, familyNode);
|
|
86
|
+
}
|
|
87
|
+
familyNode.familyMembers.set(val.family.subKey, token);
|
|
88
|
+
} else base.set(key, token);
|
|
89
|
+
}
|
|
90
|
+
return base;
|
|
91
|
+
},
|
|
92
|
+
effects: [({ setSelf }) => {
|
|
93
|
+
store.on.selectorCreation.subscribe(`introspection`, (selectorToken) => {
|
|
94
|
+
if (isReservedIntrospectionKey(selectorToken.key)) return;
|
|
95
|
+
setSelf((self) => {
|
|
96
|
+
if (selectorToken.family) {
|
|
97
|
+
const { key: familyKey, subKey } = selectorToken.family;
|
|
98
|
+
let familyNode = self.get(familyKey);
|
|
99
|
+
if (familyNode === void 0 || !(`familyMembers` in familyNode)) {
|
|
100
|
+
familyNode = {
|
|
101
|
+
key: familyKey,
|
|
102
|
+
familyMembers: new Map()
|
|
103
|
+
};
|
|
104
|
+
self.set(familyKey, familyNode);
|
|
105
|
+
}
|
|
106
|
+
familyNode.familyMembers.set(subKey, selectorToken);
|
|
107
|
+
} else self.set(selectorToken.key, selectorToken);
|
|
108
|
+
return self;
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
store.on.selectorDisposal.subscribe(`introspection`, (selectorToken) => {
|
|
112
|
+
setSelf((self) => {
|
|
113
|
+
if (selectorToken.family) {
|
|
114
|
+
const { key: familyKey, subKey } = selectorToken.family;
|
|
115
|
+
const familyNode = self.get(familyKey);
|
|
116
|
+
if (familyNode && `familyMembers` in familyNode) {
|
|
117
|
+
familyNode.familyMembers.delete(subKey);
|
|
118
|
+
if (familyNode.familyMembers.size === 0) self.delete(familyKey);
|
|
119
|
+
}
|
|
120
|
+
} else self.delete(selectorToken.key);
|
|
121
|
+
return self;
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
}]
|
|
125
|
+
}, void 0);
|
|
126
|
+
return createStandaloneSelector(store, {
|
|
127
|
+
key: `🔍 Selector Token Index`,
|
|
128
|
+
get: ({ get }) => get(readonlySelectorTokenIndexState__INTERNAL)
|
|
129
|
+
});
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
//#endregion
|
|
133
|
+
//#region src/introspection/attach-timeline-family.ts
|
|
134
|
+
const attachTimelineFamily = (store) => {
|
|
135
|
+
const findTimelineLogState__INTERNAL = createRegularAtomFamily(store, {
|
|
136
|
+
key: `🔍 Timeline Update Log (Internal)`,
|
|
137
|
+
default: (key) => store.timelines.get(key) ?? {
|
|
138
|
+
type: `timeline`,
|
|
139
|
+
key: ``,
|
|
140
|
+
at: 0,
|
|
141
|
+
timeTraveling: null,
|
|
142
|
+
history: [],
|
|
143
|
+
selectorTime: null,
|
|
144
|
+
transactionKey: null,
|
|
145
|
+
install: () => {},
|
|
146
|
+
subject: new Subject(),
|
|
147
|
+
subscriptions: new Map()
|
|
148
|
+
},
|
|
149
|
+
effects: (key) => [({ setSelf }) => {
|
|
150
|
+
const tl = store.timelines.get(key);
|
|
151
|
+
tl?.subject.subscribe(`introspection`, (_) => {
|
|
152
|
+
setSelf({ ...tl });
|
|
153
|
+
});
|
|
154
|
+
}]
|
|
155
|
+
});
|
|
156
|
+
const findTimelineLogState = createSelectorFamily(store, {
|
|
157
|
+
key: `🔍 Timeline Update Log`,
|
|
158
|
+
get: (key) => ({ get }) => get(findTimelineLogState__INTERNAL, key)
|
|
159
|
+
});
|
|
160
|
+
return findTimelineLogState;
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
//#endregion
|
|
164
|
+
//#region src/introspection/attach-timeline-index.ts
|
|
165
|
+
const attachTimelineIndex = (store) => {
|
|
166
|
+
const timelineTokenIndexState__INTERNAL = createRegularAtom(store, {
|
|
167
|
+
key: `🔍 Timeline Token Index (Internal)`,
|
|
168
|
+
default: () => [...store.timelines].map(([key]) => {
|
|
169
|
+
return {
|
|
170
|
+
key,
|
|
171
|
+
type: `timeline`
|
|
172
|
+
};
|
|
173
|
+
}),
|
|
174
|
+
effects: [({ setSelf }) => {
|
|
175
|
+
store.on.timelineCreation.subscribe(`introspection`, (timelineToken) => {
|
|
176
|
+
setSelf((state) => [...state, timelineToken]);
|
|
177
|
+
});
|
|
178
|
+
}]
|
|
179
|
+
}, void 0);
|
|
180
|
+
const timelineTokenIndex = createStandaloneSelector(store, {
|
|
181
|
+
key: `🔍 Timeline Token Index`,
|
|
182
|
+
get: ({ get }) => get(timelineTokenIndexState__INTERNAL)
|
|
183
|
+
});
|
|
184
|
+
return timelineTokenIndex;
|
|
185
|
+
};
|
|
186
|
+
|
|
187
|
+
//#endregion
|
|
188
|
+
//#region src/introspection/attach-transaction-index.ts
|
|
189
|
+
const attachTransactionIndex = (store) => {
|
|
190
|
+
const transactionTokenIndexState__INTERNAL = createRegularAtom(store, {
|
|
191
|
+
key: `🔍 Transaction Token Index (Internal)`,
|
|
192
|
+
default: () => [...store.transactions].map(([key]) => {
|
|
193
|
+
return {
|
|
194
|
+
key,
|
|
195
|
+
type: `transaction`
|
|
196
|
+
};
|
|
197
|
+
}),
|
|
198
|
+
effects: [({ setSelf }) => {
|
|
199
|
+
store.on.transactionCreation.subscribe(`introspection`, (transactionToken) => {
|
|
200
|
+
setSelf((state) => [...state, transactionToken]);
|
|
201
|
+
});
|
|
202
|
+
}]
|
|
203
|
+
}, void 0);
|
|
204
|
+
const transactionTokenIndex = createStandaloneSelector(store, {
|
|
205
|
+
key: `🔍 Transaction Token Index`,
|
|
206
|
+
get: ({ get }) => get(transactionTokenIndexState__INTERNAL)
|
|
207
|
+
});
|
|
208
|
+
return transactionTokenIndex;
|
|
209
|
+
};
|
|
210
|
+
|
|
211
|
+
//#endregion
|
|
212
|
+
//#region src/introspection/attach-transaction-logs.ts
|
|
213
|
+
const attachTransactionLogs = (store) => {
|
|
214
|
+
const transactionUpdateLogAtoms = createRegularAtomFamily(store, {
|
|
215
|
+
key: `🔍 Transaction Update Log (Internal)`,
|
|
216
|
+
default: () => [],
|
|
217
|
+
effects: (key) => [({ setSelf }) => {
|
|
218
|
+
const tx = store.transactions.get(key);
|
|
219
|
+
tx?.subject.subscribe(`introspection`, (transactionUpdate) => {
|
|
220
|
+
if (transactionUpdate.key === key) setSelf((state) => [...state, transactionUpdate]);
|
|
221
|
+
});
|
|
222
|
+
}]
|
|
223
|
+
});
|
|
224
|
+
const findTransactionUpdateLogState = createSelectorFamily(store, {
|
|
225
|
+
key: `🔍 Transaction Update Log`,
|
|
226
|
+
get: (key) => ({ get }) => get(transactionUpdateLogAtoms, key)
|
|
227
|
+
});
|
|
228
|
+
return findTransactionUpdateLogState;
|
|
229
|
+
};
|
|
230
|
+
|
|
231
|
+
//#endregion
|
|
232
|
+
//#region src/introspection/refinery.ts
|
|
233
|
+
var Refinery = class {
|
|
234
|
+
supported;
|
|
235
|
+
constructor(supported) {
|
|
236
|
+
this.supported = supported;
|
|
237
|
+
}
|
|
238
|
+
refine(input) {
|
|
239
|
+
for (const [key, refiner] of Object.entries(this.supported)) try {
|
|
240
|
+
if (refiner(input) === true && refiner !== Boolean) return {
|
|
241
|
+
type: key,
|
|
242
|
+
data: input
|
|
243
|
+
};
|
|
244
|
+
} catch (_) {
|
|
245
|
+
try {
|
|
246
|
+
if (input instanceof refiner) return {
|
|
247
|
+
type: key,
|
|
248
|
+
data: input
|
|
249
|
+
};
|
|
250
|
+
} catch (__) {}
|
|
251
|
+
}
|
|
252
|
+
return null;
|
|
253
|
+
}
|
|
254
|
+
};
|
|
255
|
+
const primitiveRefinery = new Refinery({
|
|
256
|
+
number: (input) => typeof input === `number`,
|
|
257
|
+
string: (input) => typeof input === `string`,
|
|
258
|
+
boolean: (input) => typeof input === `boolean`,
|
|
259
|
+
null: (input) => input === null
|
|
260
|
+
});
|
|
261
|
+
function isPlainObject(input) {
|
|
262
|
+
if (!input) return false;
|
|
263
|
+
const prototype = Object.getPrototypeOf(input);
|
|
264
|
+
return prototype === Object.prototype;
|
|
265
|
+
}
|
|
266
|
+
const jsonTreeRefinery = new Refinery({
|
|
267
|
+
object: isPlainObject,
|
|
268
|
+
array: (input) => Array.isArray(input)
|
|
269
|
+
});
|
|
270
|
+
const jsonRefinery = new Refinery({
|
|
271
|
+
...primitiveRefinery.supported,
|
|
272
|
+
...jsonTreeRefinery.supported
|
|
273
|
+
});
|
|
274
|
+
const discoverType = (input) => {
|
|
275
|
+
if (input === void 0) return `undefined`;
|
|
276
|
+
const refined = jsonRefinery.refine(input);
|
|
277
|
+
if (refined) return refined.type;
|
|
278
|
+
return Object.getPrototypeOf(input).constructor.name;
|
|
279
|
+
};
|
|
280
|
+
|
|
281
|
+
//#endregion
|
|
282
|
+
//#region src/introspection/attach-type-selectors.ts
|
|
283
|
+
const attachTypeSelectors = (store) => {
|
|
284
|
+
const typeSelectors = createReadonlySelectorFamily(store, {
|
|
285
|
+
key: `🔍 State Type`,
|
|
286
|
+
get: (key) => ({ get }) => {
|
|
287
|
+
let state;
|
|
288
|
+
try {
|
|
289
|
+
const token = store.atoms.get(key) ?? store.selectors.get(key) ?? store.readonlySelectors.get(key);
|
|
290
|
+
if (token === void 0) throw new Error(`Could not find state with key "${key}"`);
|
|
291
|
+
state = get(token);
|
|
292
|
+
} catch (thrown) {
|
|
293
|
+
return `error`;
|
|
294
|
+
}
|
|
295
|
+
const typeOfState = discoverType(state);
|
|
296
|
+
return typeOfState;
|
|
297
|
+
}
|
|
298
|
+
});
|
|
299
|
+
return typeSelectors;
|
|
300
|
+
};
|
|
301
|
+
|
|
302
|
+
//#endregion
|
|
303
|
+
//#region src/introspection/attach-introspection-states.ts
|
|
304
|
+
const attachIntrospectionStates = (store) => {
|
|
305
|
+
return {
|
|
306
|
+
atomIndex: attachAtomIndex(store),
|
|
307
|
+
selectorIndex: attachSelectorIndex(store),
|
|
308
|
+
transactionIndex: attachTransactionIndex(store),
|
|
309
|
+
transactionLogSelectors: attachTransactionLogs(store),
|
|
310
|
+
timelineIndex: attachTimelineIndex(store),
|
|
311
|
+
timelineSelectors: attachTimelineFamily(store),
|
|
312
|
+
typeSelectors: attachTypeSelectors(store)
|
|
313
|
+
};
|
|
314
|
+
};
|
|
315
|
+
|
|
316
|
+
//#endregion
|
|
317
|
+
//#region src/introspection/auditor.ts
|
|
318
|
+
/**
|
|
319
|
+
* Auditor is a tool for identifying lingering resources in your store that may result in memory leaks.
|
|
320
|
+
* @experimental
|
|
321
|
+
*/
|
|
322
|
+
var Auditor = class Auditor {
|
|
323
|
+
store;
|
|
324
|
+
auditorCreatedAt = performance.now();
|
|
325
|
+
statesCreatedAt = new Map();
|
|
326
|
+
atomIndex;
|
|
327
|
+
selectorIndex;
|
|
328
|
+
disposed = false;
|
|
329
|
+
unsubscribeFromAtomCreation;
|
|
330
|
+
unsubscribeFromAtomDisposal;
|
|
331
|
+
unsubscribeFromSelectorCreation;
|
|
332
|
+
unsubscribeFromSelectorDisposal;
|
|
333
|
+
/**
|
|
334
|
+
* @param {Store} store - The store to audit.
|
|
335
|
+
*/
|
|
336
|
+
constructor(store = Internal.IMPLICIT.STORE) {
|
|
337
|
+
this.store = store;
|
|
338
|
+
this.atomIndex = attachAtomIndex(this.store);
|
|
339
|
+
this.selectorIndex = attachSelectorIndex(this.store);
|
|
340
|
+
this.unsubscribeFromAtomCreation = this.store.on.atomCreation.subscribe(`auditor-${this.auditorCreatedAt}`, ({ key }) => {
|
|
341
|
+
this.statesCreatedAt.set(key, performance.now() - this.auditorCreatedAt);
|
|
342
|
+
});
|
|
343
|
+
this.unsubscribeFromAtomDisposal = this.store.on.atomDisposal.subscribe(`auditor-${this.auditorCreatedAt}`, ({ key }) => {
|
|
344
|
+
this.statesCreatedAt.delete(key);
|
|
345
|
+
});
|
|
346
|
+
this.unsubscribeFromSelectorCreation = this.store.on.selectorCreation.subscribe(`auditor-${this.auditorCreatedAt}`, ({ key }) => {
|
|
347
|
+
this.statesCreatedAt.set(key, performance.now() - this.auditorCreatedAt);
|
|
348
|
+
});
|
|
349
|
+
this.unsubscribeFromSelectorDisposal = this.store.on.selectorDisposal.subscribe(`auditor-${this.auditorCreatedAt}`, ({ key }) => {
|
|
350
|
+
this.statesCreatedAt.delete(key);
|
|
351
|
+
});
|
|
352
|
+
}
|
|
353
|
+
static DEFAULT_LIST_RESOURCES_PARAM = {
|
|
354
|
+
atomFamilies: true,
|
|
355
|
+
selectorFamilies: true
|
|
356
|
+
};
|
|
357
|
+
/**
|
|
358
|
+
* Lists all resources in the store, along with their creation time.
|
|
359
|
+
*
|
|
360
|
+
* @param {ListResourcesParam} [param] - Optional parameters for filtering the list of resources.
|
|
361
|
+
* @returns {readonly [ReadableToken<unknown>, number]}[] - An array of tuples, where each tuple contains a state token belonging to a family in the store and that state's creation time.
|
|
362
|
+
*/
|
|
363
|
+
listResources(param = Auditor.DEFAULT_LIST_RESOURCES_PARAM) {
|
|
364
|
+
if (this.disposed) throw new Error(`This Auditor has been disposed`);
|
|
365
|
+
const atoms = getState(this.atomIndex);
|
|
366
|
+
const selectors = getState(this.selectorIndex);
|
|
367
|
+
const atomFamilyNodes = [...atoms.values()].filter((node) => `familyMembers` in node);
|
|
368
|
+
const selectorFamilyNodes = [...selectors.values()].filter((node) => `familyMembers` in node);
|
|
369
|
+
const currentTime = performance.now();
|
|
370
|
+
const resources = [];
|
|
371
|
+
if (param.atomFamilies) for (const familyNode of atomFamilyNodes) {
|
|
372
|
+
const tokens = familyNode.familyMembers.values();
|
|
373
|
+
for (const token of tokens) {
|
|
374
|
+
const storedTime = this.statesCreatedAt.get(token.key);
|
|
375
|
+
const creationTime = storedTime ?? this.auditorCreatedAt;
|
|
376
|
+
const age = currentTime - creationTime;
|
|
377
|
+
resources.push([token, age]);
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
if (param.selectorFamilies) for (const familyNode of selectorFamilyNodes) {
|
|
381
|
+
const tokens = familyNode.familyMembers.values();
|
|
382
|
+
for (const token of tokens) {
|
|
383
|
+
const storedTime = this.statesCreatedAt.get(token.key);
|
|
384
|
+
const creationTime = storedTime ?? this.auditorCreatedAt;
|
|
385
|
+
const age = currentTime - creationTime;
|
|
386
|
+
resources.push([token, age]);
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
return resources;
|
|
390
|
+
}
|
|
391
|
+
[Symbol.dispose]() {
|
|
392
|
+
this.unsubscribeFromAtomCreation();
|
|
393
|
+
this.unsubscribeFromAtomDisposal();
|
|
394
|
+
this.unsubscribeFromSelectorCreation();
|
|
395
|
+
this.unsubscribeFromSelectorDisposal();
|
|
396
|
+
this.disposed = true;
|
|
397
|
+
}
|
|
398
|
+
};
|
|
399
|
+
|
|
400
|
+
//#endregion
|
|
401
|
+
//#region src/introspection/sprawl.ts
|
|
402
|
+
const sprawl = (tree, inspector) => {
|
|
403
|
+
const walk = (path, node) => {
|
|
404
|
+
const inspect = (p, n) => {
|
|
405
|
+
const result$1 = inspector(p, n);
|
|
406
|
+
if (result$1) return result$1;
|
|
407
|
+
return null;
|
|
408
|
+
};
|
|
409
|
+
const result = inspect(path, node);
|
|
410
|
+
if (result?.jobComplete ?? result?.pathComplete) return result;
|
|
411
|
+
const childEntries = Array.isArray(node) ? node.map((v, i) => [i, v]) : isPlainObject(node) ? Object.entries(node) : [];
|
|
412
|
+
for (const [k, v] of childEntries) {
|
|
413
|
+
const subResult = walk([...path, k], v);
|
|
414
|
+
if (subResult?.jobComplete) return subResult;
|
|
415
|
+
}
|
|
416
|
+
return {};
|
|
417
|
+
};
|
|
418
|
+
walk([], tree);
|
|
419
|
+
};
|
|
420
|
+
|
|
421
|
+
//#endregion
|
|
422
|
+
//#region src/introspection/differ.ts
|
|
423
|
+
function diffNumber(a, b) {
|
|
424
|
+
const sign = a < b ? `+` : `-`;
|
|
425
|
+
return { summary: `${sign}${Math.abs(a - b)} (${a} → ${b})` };
|
|
426
|
+
}
|
|
427
|
+
function diffString(a, b) {
|
|
428
|
+
const sign = a.length < b.length ? `+` : `-`;
|
|
429
|
+
return { summary: `${sign}${Math.abs(a.length - b.length)} ("${a}" → "${b}")` };
|
|
430
|
+
}
|
|
431
|
+
function diffBoolean(a, b) {
|
|
432
|
+
return { summary: `${a} → ${b}` };
|
|
433
|
+
}
|
|
434
|
+
function diffObject(a, b, recurse) {
|
|
435
|
+
let summary = ``;
|
|
436
|
+
const added = [];
|
|
437
|
+
const removed = [];
|
|
438
|
+
const changed = [];
|
|
439
|
+
sprawl(a, (path, nodeA) => {
|
|
440
|
+
let key;
|
|
441
|
+
for (key of path) {
|
|
442
|
+
const nodeB = b[key];
|
|
443
|
+
if (nodeB === void 0) removed.push([key, JSON.stringify(nodeA)]);
|
|
444
|
+
else {
|
|
445
|
+
const delta = recurse(nodeA, nodeB);
|
|
446
|
+
if (delta.summary !== `No Change`) changed.push([key, delta]);
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
});
|
|
450
|
+
sprawl(b, (path, nodeB) => {
|
|
451
|
+
let key;
|
|
452
|
+
for (key of path) {
|
|
453
|
+
const nodeA = a[key];
|
|
454
|
+
if (nodeA === void 0) added.push([key, JSON.stringify(nodeB)]);
|
|
455
|
+
}
|
|
456
|
+
});
|
|
457
|
+
summary = `~${changed.length} +${added.length} -${removed.length}`;
|
|
458
|
+
return {
|
|
459
|
+
summary,
|
|
460
|
+
added,
|
|
461
|
+
removed,
|
|
462
|
+
changed
|
|
463
|
+
};
|
|
464
|
+
}
|
|
465
|
+
function diffArray(a, b, recurse) {
|
|
466
|
+
return diffObject(a, b, recurse);
|
|
467
|
+
}
|
|
468
|
+
var Differ = class {
|
|
469
|
+
leafRefinery;
|
|
470
|
+
treeRefinery;
|
|
471
|
+
leafDiffers;
|
|
472
|
+
treeDiffers;
|
|
473
|
+
constructor(leafRefinery, treeRefinery, diffFunctions) {
|
|
474
|
+
this.leafRefinery = leafRefinery;
|
|
475
|
+
this.treeRefinery = treeRefinery;
|
|
476
|
+
this.leafDiffers = {};
|
|
477
|
+
this.treeDiffers = {};
|
|
478
|
+
for (const key of Object.keys(leafRefinery.supported)) {
|
|
479
|
+
const diffFunction = diffFunctions[key];
|
|
480
|
+
this.leafDiffers[key] = diffFunction;
|
|
481
|
+
}
|
|
482
|
+
for (const key of Object.keys(treeRefinery.supported)) {
|
|
483
|
+
const diffFunction = diffFunctions[key];
|
|
484
|
+
this.treeDiffers[key] = diffFunction;
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
diff(a, b) {
|
|
488
|
+
if (a === b) return { summary: `No Change` };
|
|
489
|
+
const aRefined = this.leafRefinery.refine(a) ?? this.treeRefinery.refine(a);
|
|
490
|
+
const bRefined = this.leafRefinery.refine(b) ?? this.treeRefinery.refine(b);
|
|
491
|
+
if (aRefined !== null && bRefined !== null) {
|
|
492
|
+
if (aRefined.type === bRefined.type) {
|
|
493
|
+
if (aRefined.type in this.leafDiffers) {
|
|
494
|
+
const delta = this.leafDiffers[aRefined.type](aRefined.data, bRefined.data);
|
|
495
|
+
return delta;
|
|
496
|
+
}
|
|
497
|
+
if (aRefined.type in this.treeDiffers) {
|
|
498
|
+
const delta = this.treeDiffers[aRefined.type](aRefined.data, bRefined.data, (x, y) => this.diff(x, y));
|
|
499
|
+
return delta;
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
const typeA = discoverType(a);
|
|
504
|
+
const typeB = discoverType(b);
|
|
505
|
+
if (typeA === typeB) return { summary: `${typeA} → ${typeB}` };
|
|
506
|
+
return { summary: `Type change: ${typeA} → ${typeB}` };
|
|
507
|
+
}
|
|
508
|
+
};
|
|
509
|
+
const prettyJson = new Differ(primitiveRefinery, jsonTreeRefinery, {
|
|
510
|
+
number: diffNumber,
|
|
511
|
+
string: diffString,
|
|
512
|
+
boolean: diffBoolean,
|
|
513
|
+
null: () => ({ summary: `No Change` }),
|
|
514
|
+
object: diffObject,
|
|
515
|
+
array: diffArray
|
|
516
|
+
});
|
|
517
|
+
|
|
518
|
+
//#endregion
|
|
519
|
+
export { Auditor, Differ, Refinery, attachIntrospectionStates, diffArray, diffBoolean, diffNumber, diffObject, diffString, discoverType, isPlainObject, jsonRefinery, jsonTreeRefinery, prettyJson, primitiveRefinery, sprawl };
|
|
520
|
+
//# sourceMappingURL=index.js.map
|