atom.io 0.32.4 → 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 +495 -378
- 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 +65 -117
- 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/index.ts +2 -0
- package/{internal/src → src/internal}/index.ts +1 -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}/store/store.ts +59 -46
- package/{internal/src → src/internal}/subject.ts +1 -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-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/index.ts +5 -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 +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-4LWKCEW3.js +0 -14
- package/dist/chunk-7SJVR7FZ.js +0 -4499
- package/dist/chunk-IR77IXS7.js +0 -526
- package/dist/chunk-PG57JXN4.js +0 -1035
- package/dist/chunk-PXB4YZDI.js +0 -153
- package/dist/chunk-Q6OOJWM4.js +0 -634
- package/dist/chunk-TJPLOX7Z.js +0 -81
- package/dist/chunk-U4K63VLA.js +0 -109
- 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 -51
- 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 -169
- 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/{data/src → src/data}/struct.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/create-writable-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/find-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/register-selector.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/build-transaction.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-i.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/developer-interface.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-json.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/editors-by-type/utilities/object-properties.ts +0 -0
- /package/{react-devtools/src → src/react-devtools}/json-editor/json-editor-internal.tsx +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/child-socket.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
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
import { Subject, Transceiver, Store } from 'atom.io/internal';
|
|
2
|
-
import { Json, stringified, JsonIO, Canonical } from 'atom.io/json';
|
|
3
|
-
import { ContinuityToken, UserInRoomMeta } from 'atom.io/realtime';
|
|
4
|
-
import { ChildProcessWithoutNullStreams } from 'node:child_process';
|
|
5
|
-
import * as AtomIO from 'atom.io';
|
|
6
|
-
import { Loadable, TransactionUpdateContent, TransactionUpdate, Hierarchy, WritableToken } from 'atom.io';
|
|
7
|
-
import { SetRTX, SetRTXJson } from 'atom.io/transceivers/set-rtx';
|
|
8
|
-
|
|
9
|
-
type ExposeRealtimeContinuity = (continuity: ContinuityToken) => () => void;
|
|
10
|
-
declare function prepareToExposeRealtimeContinuity({ socket: initialSocket, store, }: ServerConfig): ExposeRealtimeContinuity;
|
|
11
|
-
|
|
12
|
-
type Events = Json.Object<string, Json.Serializable[]>;
|
|
13
|
-
type StringifiedEvent<Key extends string, Params extends Json.Serializable[]> = stringified<[Key, ...Params]>;
|
|
14
|
-
interface EventBuffer<Key extends string, Params extends Json.Serializable[]> extends Buffer {
|
|
15
|
-
toString(): StringifiedEvent<Key, Params>;
|
|
16
|
-
}
|
|
17
|
-
declare class CustomSocket<I extends Events, O extends Events> implements Socket {
|
|
18
|
-
protected listeners: Map<keyof O, Set<(...args: Json.Array) => void>>;
|
|
19
|
-
protected globalListeners: Set<(event: string, ...args: Json.Array) => void>;
|
|
20
|
-
protected handleEvent<Event extends keyof I>(event: string, ...args: I[Event]): void;
|
|
21
|
-
id: string;
|
|
22
|
-
emit: <Event extends keyof I>(event: Event, ...args: I[Event]) => CustomSocket<I, O>;
|
|
23
|
-
constructor(emit: <Event extends keyof I>(event: Event, ...args: I[Event]) => CustomSocket<I, O>);
|
|
24
|
-
on<Event extends keyof O>(event: Event, listener: (...args: O[Event]) => void): this;
|
|
25
|
-
onAny(listener: (event: string, ...args: Json.Array) => void): this;
|
|
26
|
-
off<Event extends keyof O>(event: Event, listener?: (...args: O[Event]) => void): this;
|
|
27
|
-
offAny(listener: (event: string, ...args: Json.Array) => void): this;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
declare class ChildSocket<I extends Events, O extends Events> extends CustomSocket<I, O> {
|
|
31
|
-
protected incompleteData: string;
|
|
32
|
-
protected unprocessedEvents: string[];
|
|
33
|
-
protected incompleteLog: string;
|
|
34
|
-
protected unprocessedLogs: string[];
|
|
35
|
-
id: string;
|
|
36
|
-
process: ChildProcessWithoutNullStreams;
|
|
37
|
-
key: string;
|
|
38
|
-
logger: Pick<Console, `error` | `info` | `warn`>;
|
|
39
|
-
protected handleLog(arg: Json.Serializable): void;
|
|
40
|
-
constructor(process: ChildProcessWithoutNullStreams, key: string, logger?: Pick<Console, `error` | `info` | `warn`>);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
declare class SubjectSocket<I extends Events, O extends Events> extends CustomSocket<I, O> {
|
|
44
|
-
in: Subject<[string, ...Json.Serializable[]]>;
|
|
45
|
-
out: Subject<[string, ...Json.Serializable[]]>;
|
|
46
|
-
id: string;
|
|
47
|
-
disposalFunctions: (() => void)[];
|
|
48
|
-
constructor(id: string);
|
|
49
|
-
dispose(): void;
|
|
50
|
-
}
|
|
51
|
-
declare class ParentSocket<I extends Events & {
|
|
52
|
-
[id in string as `relay:${id}`]: [string, ...Json.Serializable[]];
|
|
53
|
-
}, O extends Events & {
|
|
54
|
-
[id in string as `user:${id}`]: [string, ...Json.Serializable[]];
|
|
55
|
-
} & {
|
|
56
|
-
"user-joins": [string];
|
|
57
|
-
"user-leaves": [string];
|
|
58
|
-
}> extends CustomSocket<I, O> {
|
|
59
|
-
protected incompleteData: string;
|
|
60
|
-
protected unprocessedEvents: string[];
|
|
61
|
-
protected relays: Map<string, SubjectSocket<any, any>>;
|
|
62
|
-
protected relayServices: ((socket: SubjectSocket<any, any>) => (() => void) | void)[];
|
|
63
|
-
protected process: NodeJS.Process;
|
|
64
|
-
id: string;
|
|
65
|
-
protected log(...args: any[]): void;
|
|
66
|
-
logger: {
|
|
67
|
-
info: (...args: any[]) => void;
|
|
68
|
-
warn: (...args: any[]) => void;
|
|
69
|
-
error: (...args: any[]) => void;
|
|
70
|
-
};
|
|
71
|
-
constructor();
|
|
72
|
-
relay(attachServices: (socket: SubjectSocket<any, any>) => (() => void) | void): void;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
type ActionReceiver = ReturnType<typeof realtimeActionReceiver>;
|
|
76
|
-
declare function realtimeActionReceiver({ socket, store, }: ServerConfig): <F extends JsonIO>(tx: AtomIO.TransactionToken<F>) => () => void;
|
|
77
|
-
|
|
78
|
-
type FamilyProvider = ReturnType<typeof realtimeAtomFamilyProvider>;
|
|
79
|
-
declare function realtimeAtomFamilyProvider({ socket, store, }: ServerConfig): <J extends Json.Serializable, K extends Canonical>(family: AtomIO.RegularAtomFamilyToken<J, K>, index: AtomIO.ReadableToken<Iterable<K>>) => () => void;
|
|
80
|
-
|
|
81
|
-
type MutableFamilyProvider = ReturnType<typeof realtimeMutableFamilyProvider>;
|
|
82
|
-
declare function realtimeMutableFamilyProvider({ socket, store, }: ServerConfig): <T extends Transceiver<any>, J extends Json.Serializable, K extends Canonical>(family: AtomIO.MutableAtomFamilyToken<T, J, K>, index: AtomIO.ReadableToken<Iterable<K>>) => () => void;
|
|
83
|
-
|
|
84
|
-
type MutableProvider = ReturnType<typeof realtimeMutableProvider>;
|
|
85
|
-
declare function realtimeMutableProvider({ socket, store, }: ServerConfig): <Core extends Transceiver<Json.Serializable>, SerializableCore extends Json.Serializable>(token: AtomIO.MutableAtomToken<Core, SerializableCore>) => () => void;
|
|
86
|
-
|
|
87
|
-
declare const createRoomTX: AtomIO.TransactionToken<(roomId: string, script: string, options?: string[]) => Loadable<ChildSocket<any, any>>>;
|
|
88
|
-
type CreateRoomIO = AtomIO.TransactionIO<typeof createRoomTX>;
|
|
89
|
-
declare const joinRoomTX: AtomIO.TransactionToken<(roomId: string, userId: string, enteredAtEpoch: number) => UserInRoomMeta>;
|
|
90
|
-
type JoinRoomIO = AtomIO.TransactionIO<typeof joinRoomTX>;
|
|
91
|
-
declare const leaveRoomTX: AtomIO.TransactionToken<(roomId: string, userId: string) => void>;
|
|
92
|
-
type LeaveRoomIO = AtomIO.TransactionIO<typeof leaveRoomTX>;
|
|
93
|
-
declare const destroyRoomTX: AtomIO.TransactionToken<(roomId: string) => void>;
|
|
94
|
-
|
|
95
|
-
type RoomArguments = [script: string, options: string[]] | [script: string];
|
|
96
|
-
declare const roomArgumentsAtoms: AtomIO.RegularAtomFamilyToken<RoomArguments, string>;
|
|
97
|
-
declare const roomSelectors: AtomIO.ReadonlySelectorFamilyToken<Loadable<ChildSocket<any, any>>, string>;
|
|
98
|
-
|
|
99
|
-
declare function redactTransactionUpdateContent(visibleStateKeys: string[], updates: TransactionUpdateContent[]): TransactionUpdateContent[];
|
|
100
|
-
declare const redactorAtoms: AtomIO.RegularAtomFamilyToken<{
|
|
101
|
-
occlude: (updates: TransactionUpdateContent[]) => TransactionUpdateContent[];
|
|
102
|
-
}, `user::${string}`>;
|
|
103
|
-
type ContinuitySyncTransactionUpdate = Pick<TransactionUpdate<any>, `epoch` | `id` | `key` | `output` | `updates`>;
|
|
104
|
-
declare const userUnacknowledgedQueues: AtomIO.RegularAtomFamilyToken<ContinuitySyncTransactionUpdate[], `user::${string}`>;
|
|
105
|
-
|
|
106
|
-
type SocketKey = `socket::${string}`;
|
|
107
|
-
type UserKey = `user::${string}`;
|
|
108
|
-
type RoomKey = `room::${string}`;
|
|
109
|
-
type SocketSystemHierarchy = Hierarchy<[
|
|
110
|
-
{
|
|
111
|
-
above: `root`;
|
|
112
|
-
below: [UserKey, SocketKey, RoomKey];
|
|
113
|
-
}
|
|
114
|
-
]>;
|
|
115
|
-
declare const socketAtoms: AtomIO.RegularAtomFamilyToken<Socket | null, `socket::${string}`>;
|
|
116
|
-
declare const socketIndex: AtomIO.MutableAtomToken<SetRTX<`socket::${string}`>, SetRTXJson<`socket::${string}`>>;
|
|
117
|
-
declare const userIndex: AtomIO.MutableAtomToken<SetRTX<`user::${string}`>, SetRTXJson<`user::${string}`>>;
|
|
118
|
-
declare const usersOfSockets: AtomIO.JoinToken<"user", `user::${string}`, "socket", `socket::${string}`, "1:1", null>;
|
|
119
|
-
|
|
120
|
-
type StateProvider = ReturnType<typeof realtimeStateProvider>;
|
|
121
|
-
declare function realtimeStateProvider({ socket, store, }: ServerConfig): <J extends Json.Serializable>(token: AtomIO.WritableToken<J>) => () => void;
|
|
122
|
-
|
|
123
|
-
type StateReceiver = ReturnType<typeof realtimeStateReceiver>;
|
|
124
|
-
declare function realtimeStateReceiver({ socket, store, }: ServerConfig): <J extends Json.Serializable>(token: WritableToken<J>) => () => void;
|
|
125
|
-
|
|
126
|
-
type Socket = {
|
|
127
|
-
id: string | undefined;
|
|
128
|
-
on: (event: string, listener: (...args: Json.Serializable[]) => void) => void;
|
|
129
|
-
onAny: (listener: (event: string, ...args: Json.Serializable[]) => void) => void;
|
|
130
|
-
off: (event: string, listener: (...args: Json.Serializable[]) => void) => void;
|
|
131
|
-
offAny: (listener: (event: string, ...args: Json.Serializable[]) => void) => void;
|
|
132
|
-
emit: (event: string, ...args: Json.Serializable[]) => void;
|
|
133
|
-
};
|
|
134
|
-
type ServerConfig = {
|
|
135
|
-
socket: Socket;
|
|
136
|
-
store?: Store;
|
|
137
|
-
};
|
|
138
|
-
|
|
139
|
-
export { type ActionReceiver, ChildSocket, type ContinuitySyncTransactionUpdate, type CreateRoomIO, CustomSocket, type EventBuffer, type Events, type ExposeRealtimeContinuity, type FamilyProvider, type JoinRoomIO, type LeaveRoomIO, type MutableFamilyProvider, type MutableProvider, ParentSocket, type RoomArguments, type RoomKey, type ServerConfig, type Socket, type SocketKey, type SocketSystemHierarchy, type StateProvider, type StateReceiver, type StringifiedEvent, SubjectSocket, type UserKey, createRoomTX, destroyRoomTX, joinRoomTX, leaveRoomTX, prepareToExposeRealtimeContinuity, realtimeActionReceiver, realtimeAtomFamilyProvider, realtimeMutableFamilyProvider, realtimeMutableProvider, realtimeStateProvider, realtimeStateReceiver, redactTransactionUpdateContent, redactorAtoms, roomArgumentsAtoms, roomSelectors, socketAtoms, socketIndex, userIndex, userUnacknowledgedQueues, usersOfSockets };
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export { ChildSocket, CustomSocket, ParentSocket, SubjectSocket, createRoomTX, destroyRoomTX, joinRoomTX, leaveRoomTX, prepareToExposeRealtimeContinuity, realtimeActionReceiver, realtimeAtomFamilyProvider, realtimeMutableFamilyProvider, realtimeMutableProvider, realtimeStateProvider, realtimeStateReceiver, redactTransactionUpdateContent, redactorAtoms, roomArgumentsAtoms, roomSelectors, socketAtoms, socketIndex, userIndex, userUnacknowledgedQueues, usersOfSockets } from '../../dist/chunk-PG57JXN4.js';
|
|
2
|
-
import '../../dist/chunk-U4K63VLA.js';
|
|
3
|
-
import '../../dist/chunk-7SJVR7FZ.js';
|
|
4
|
-
import '../../dist/chunk-XWL6SNVU.js';
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import { RenderResult } from '@testing-library/react';
|
|
2
|
-
import * as AtomIO from 'atom.io';
|
|
3
|
-
import * as React from 'react';
|
|
4
|
-
import * as SocketIO from 'socket.io';
|
|
5
|
-
import { Socket } from 'socket.io-client';
|
|
6
|
-
|
|
7
|
-
type TestSetupOptions = {
|
|
8
|
-
port: number;
|
|
9
|
-
immortal?: {
|
|
10
|
-
server?: boolean;
|
|
11
|
-
};
|
|
12
|
-
server: (tools: {
|
|
13
|
-
socket: SocketIO.Socket;
|
|
14
|
-
silo: AtomIO.Silo;
|
|
15
|
-
enableLogging: () => void;
|
|
16
|
-
}) => void;
|
|
17
|
-
};
|
|
18
|
-
type TestSetupOptions__SingleClient = TestSetupOptions & {
|
|
19
|
-
client: React.FC;
|
|
20
|
-
};
|
|
21
|
-
type TestSetupOptions__MultiClient<ClientNames extends string> = TestSetupOptions & {
|
|
22
|
-
clients: {
|
|
23
|
-
[K in ClientNames]: React.FC;
|
|
24
|
-
};
|
|
25
|
-
};
|
|
26
|
-
type RealtimeTestTools = {
|
|
27
|
-
name: string;
|
|
28
|
-
silo: AtomIO.Silo;
|
|
29
|
-
};
|
|
30
|
-
type RealtimeTestClient = RealtimeTestTools & {
|
|
31
|
-
renderResult: RenderResult;
|
|
32
|
-
prettyPrint: () => void;
|
|
33
|
-
enableLogging: () => void;
|
|
34
|
-
socket: Socket;
|
|
35
|
-
};
|
|
36
|
-
type RealtimeTestClientBuilder = {
|
|
37
|
-
dispose: () => void;
|
|
38
|
-
init: () => RealtimeTestClient;
|
|
39
|
-
};
|
|
40
|
-
type RealtimeTestServer = RealtimeTestTools & {
|
|
41
|
-
dispose: () => Promise<void>;
|
|
42
|
-
port: number;
|
|
43
|
-
};
|
|
44
|
-
type RealtimeTestAPI = {
|
|
45
|
-
server: RealtimeTestServer;
|
|
46
|
-
teardown: () => Promise<void>;
|
|
47
|
-
};
|
|
48
|
-
type RealtimeTestAPI__SingleClient = RealtimeTestAPI & {
|
|
49
|
-
client: RealtimeTestClientBuilder;
|
|
50
|
-
};
|
|
51
|
-
type RealtimeTestAPI__MultiClient<ClientNames extends string> = RealtimeTestAPI & {
|
|
52
|
-
clients: Record<ClientNames, RealtimeTestClientBuilder>;
|
|
53
|
-
};
|
|
54
|
-
declare const setupRealtimeTestServer: (options: TestSetupOptions) => RealtimeTestServer;
|
|
55
|
-
declare const setupRealtimeTestClient: (options: TestSetupOptions__SingleClient, name: string, port: number) => RealtimeTestClientBuilder;
|
|
56
|
-
declare const singleClient: (options: TestSetupOptions__SingleClient) => RealtimeTestAPI__SingleClient;
|
|
57
|
-
declare const multiClient: <ClientNames extends string>(options: TestSetupOptions__MultiClient<ClientNames>) => RealtimeTestAPI__MultiClient<ClientNames>;
|
|
58
|
-
|
|
59
|
-
export { type RealtimeTestAPI, type RealtimeTestAPI__MultiClient, type RealtimeTestAPI__SingleClient, type RealtimeTestClient, type RealtimeTestClientBuilder, type RealtimeTestServer, type RealtimeTestTools, type TestSetupOptions, type TestSetupOptions__MultiClient, type TestSetupOptions__SingleClient, multiClient, setupRealtimeTestClient, setupRealtimeTestServer, singleClient };
|
|
@@ -1,198 +0,0 @@
|
|
|
1
|
-
import { RealtimeProvider } from '../../dist/chunk-PXB4YZDI.js';
|
|
2
|
-
import { myUsernameState } from '../../dist/chunk-IR77IXS7.js';
|
|
3
|
-
import { socketAtoms, usersOfSockets, userIndex, socketIndex, roomSelectors } from '../../dist/chunk-PG57JXN4.js';
|
|
4
|
-
import { roomIndex } from '../../dist/chunk-U4K63VLA.js';
|
|
5
|
-
import '../../dist/chunk-4LWKCEW3.js';
|
|
6
|
-
import { StoreProvider } from '../../dist/chunk-TJPLOX7Z.js';
|
|
7
|
-
import { Silo, IMPLICIT, Realm, findInStore, setIntoStore, editRelationsInStore, toEntries, findRelationsInStore, getFromStore, clearStore, AtomIOLogger } from '../../dist/chunk-7SJVR7FZ.js';
|
|
8
|
-
import '../../dist/chunk-XWL6SNVU.js';
|
|
9
|
-
import * as http from 'node:http';
|
|
10
|
-
import { render, prettyDOM } from '@testing-library/react';
|
|
11
|
-
import * as Happy from 'happy-dom';
|
|
12
|
-
import * as SocketIO from 'socket.io';
|
|
13
|
-
import { io } from 'socket.io-client';
|
|
14
|
-
import { jsx } from 'react/jsx-runtime';
|
|
15
|
-
|
|
16
|
-
var testNumber = 0;
|
|
17
|
-
function prefixLogger(store, prefix) {
|
|
18
|
-
store.loggers[0] = new AtomIOLogger(`info`, void 0, {
|
|
19
|
-
info: (...args) => {
|
|
20
|
-
console.info(prefix, ...args);
|
|
21
|
-
},
|
|
22
|
-
warn: (...args) => {
|
|
23
|
-
console.warn(prefix, ...args);
|
|
24
|
-
},
|
|
25
|
-
error: (...args) => {
|
|
26
|
-
console.error(prefix, ...args);
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
var setupRealtimeTestServer = (options) => {
|
|
31
|
-
++testNumber;
|
|
32
|
-
const silo = new Silo(
|
|
33
|
-
{
|
|
34
|
-
name: `SERVER-${testNumber}`,
|
|
35
|
-
lifespan: options.immortal?.server ? `immortal` : `ephemeral`
|
|
36
|
-
},
|
|
37
|
-
IMPLICIT.STORE
|
|
38
|
-
);
|
|
39
|
-
const socketRealm = new Realm(silo.store);
|
|
40
|
-
const httpServer = http.createServer((_, res) => res.end(`Hello World!`));
|
|
41
|
-
const address = httpServer.listen(options.port).address();
|
|
42
|
-
const port = typeof address === `string` ? null : address === null ? null : address.port;
|
|
43
|
-
if (port === null) throw new Error(`Could not determine port for test server`);
|
|
44
|
-
const server = new SocketIO.Server(httpServer).use((socket, next) => {
|
|
45
|
-
const { token, username } = socket.handshake.auth;
|
|
46
|
-
if (token === `test` && socket.id) {
|
|
47
|
-
const userClaim = socketRealm.allocate(`root`, `user::${username}`);
|
|
48
|
-
const socketClaim = socketRealm.allocate(`root`, `socket::${socket.id}`);
|
|
49
|
-
const socketState = findInStore(silo.store, socketAtoms, socketClaim);
|
|
50
|
-
setIntoStore(silo.store, socketState, socket);
|
|
51
|
-
editRelationsInStore(
|
|
52
|
-
usersOfSockets,
|
|
53
|
-
(relations) => {
|
|
54
|
-
relations.set(userClaim, socketClaim);
|
|
55
|
-
},
|
|
56
|
-
silo.store
|
|
57
|
-
);
|
|
58
|
-
setIntoStore(silo.store, userIndex, (index) => index.add(userClaim));
|
|
59
|
-
setIntoStore(
|
|
60
|
-
silo.store,
|
|
61
|
-
socketIndex,
|
|
62
|
-
(index) => index.add(socketClaim)
|
|
63
|
-
);
|
|
64
|
-
next();
|
|
65
|
-
} else {
|
|
66
|
-
next(new Error(`Authentication error`));
|
|
67
|
-
}
|
|
68
|
-
});
|
|
69
|
-
server.on(`connection`, (socket) => {
|
|
70
|
-
let userKey = null;
|
|
71
|
-
function enableLogging() {
|
|
72
|
-
const userKeyState = findRelationsInStore(
|
|
73
|
-
usersOfSockets,
|
|
74
|
-
`socket::${socket.id}`,
|
|
75
|
-
silo.store
|
|
76
|
-
).userKeyOfSocket;
|
|
77
|
-
userKey = getFromStore(silo.store, userKeyState);
|
|
78
|
-
prefixLogger(silo.store, `server`);
|
|
79
|
-
socket.onAny((event, ...args) => {
|
|
80
|
-
console.log(`\u{1F6F0} `, userKey, event, ...args);
|
|
81
|
-
});
|
|
82
|
-
socket.onAnyOutgoing((event, ...args) => {
|
|
83
|
-
console.log(`\u{1F6F0} >>`, userKey, event, ...args);
|
|
84
|
-
});
|
|
85
|
-
socket.on(`disconnect`, () => {
|
|
86
|
-
console.log(`${userKey} disconnected`);
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
options.server({ socket, enableLogging, silo });
|
|
90
|
-
});
|
|
91
|
-
const dispose = async () => {
|
|
92
|
-
await server.close();
|
|
93
|
-
const roomKeys = getFromStore(silo.store, roomIndex);
|
|
94
|
-
for (const roomKey of roomKeys) {
|
|
95
|
-
const roomState = findInStore(silo.store, roomSelectors, roomKey);
|
|
96
|
-
const room = getFromStore(silo.store, roomState);
|
|
97
|
-
if (room && !(room instanceof Promise)) {
|
|
98
|
-
room.process.kill();
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
silo.store.valueMap.clear();
|
|
102
|
-
};
|
|
103
|
-
return {
|
|
104
|
-
name: `SERVER`,
|
|
105
|
-
silo,
|
|
106
|
-
dispose,
|
|
107
|
-
port
|
|
108
|
-
};
|
|
109
|
-
};
|
|
110
|
-
var setupRealtimeTestClient = (options, name, port) => {
|
|
111
|
-
const testClient = { dispose: () => {
|
|
112
|
-
} };
|
|
113
|
-
const init = () => {
|
|
114
|
-
const socket = io(`http://localhost:${port}/`, {
|
|
115
|
-
auth: { token: `test`, username: `${name}-${testNumber}` }
|
|
116
|
-
});
|
|
117
|
-
const silo = new Silo({ name, lifespan: `ephemeral` }, IMPLICIT.STORE);
|
|
118
|
-
for (const [key, value] of silo.store.valueMap.entries()) {
|
|
119
|
-
if (Array.isArray(value)) {
|
|
120
|
-
silo.store.valueMap.set(key, [...value]);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
silo.setState(myUsernameState, `${name}-${testNumber}`);
|
|
124
|
-
const { document } = new Happy.Window();
|
|
125
|
-
document.body.innerHTML = `<div id="app"></div>`;
|
|
126
|
-
const renderResult = render(
|
|
127
|
-
/* @__PURE__ */ jsx(StoreProvider, { store: silo.store, children: /* @__PURE__ */ jsx(RealtimeProvider, { socket, children: /* @__PURE__ */ jsx(options.client, {}) }) }),
|
|
128
|
-
{
|
|
129
|
-
container: document.querySelector(`#app`)
|
|
130
|
-
}
|
|
131
|
-
);
|
|
132
|
-
const prettyPrint = () => {
|
|
133
|
-
console.log(prettyDOM(renderResult.container));
|
|
134
|
-
};
|
|
135
|
-
const enableLogging = () => {
|
|
136
|
-
prefixLogger(silo.store, name);
|
|
137
|
-
socket.onAny((event, ...args) => {
|
|
138
|
-
console.log(`\u{1F4E1} `, name, event, ...args);
|
|
139
|
-
});
|
|
140
|
-
socket.onAnyOutgoing((event, ...args) => {
|
|
141
|
-
console.log(`\u{1F4E1} >>`, name, event, ...args);
|
|
142
|
-
});
|
|
143
|
-
};
|
|
144
|
-
const dispose = () => {
|
|
145
|
-
renderResult.unmount();
|
|
146
|
-
socket.disconnect();
|
|
147
|
-
clearStore(silo.store);
|
|
148
|
-
};
|
|
149
|
-
testClient.dispose = dispose;
|
|
150
|
-
return {
|
|
151
|
-
name,
|
|
152
|
-
silo,
|
|
153
|
-
socket,
|
|
154
|
-
renderResult,
|
|
155
|
-
prettyPrint,
|
|
156
|
-
enableLogging
|
|
157
|
-
};
|
|
158
|
-
};
|
|
159
|
-
return Object.assign(testClient, { init });
|
|
160
|
-
};
|
|
161
|
-
var singleClient = (options) => {
|
|
162
|
-
const server = setupRealtimeTestServer(options);
|
|
163
|
-
const client = setupRealtimeTestClient(options, `CLIENT`, server.port);
|
|
164
|
-
return {
|
|
165
|
-
client,
|
|
166
|
-
server,
|
|
167
|
-
teardown: async () => {
|
|
168
|
-
await server.dispose();
|
|
169
|
-
client.dispose();
|
|
170
|
-
}
|
|
171
|
-
};
|
|
172
|
-
};
|
|
173
|
-
var multiClient = (options) => {
|
|
174
|
-
const server = setupRealtimeTestServer(options);
|
|
175
|
-
const clients = toEntries(options.clients).reduce(
|
|
176
|
-
(clientRecord, [name, client]) => {
|
|
177
|
-
clientRecord[name] = setupRealtimeTestClient(
|
|
178
|
-
{ ...options, client },
|
|
179
|
-
name,
|
|
180
|
-
server.port
|
|
181
|
-
);
|
|
182
|
-
return clientRecord;
|
|
183
|
-
},
|
|
184
|
-
{}
|
|
185
|
-
);
|
|
186
|
-
return {
|
|
187
|
-
clients,
|
|
188
|
-
server,
|
|
189
|
-
teardown: async () => {
|
|
190
|
-
await server.dispose();
|
|
191
|
-
for (const [, client] of toEntries(clients)) {
|
|
192
|
-
client.dispose();
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
};
|
|
196
|
-
};
|
|
197
|
-
|
|
198
|
-
export { multiClient, setupRealtimeTestClient, setupRealtimeTestServer, singleClient };
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { Transceiver, Lineage, TransceiverMode, Subject } from 'atom.io/internal';
|
|
2
|
-
import { primitive, Json } from 'atom.io/json';
|
|
3
|
-
|
|
4
|
-
type SetUpdateType = `add` | `clear` | `del` | `tx`;
|
|
5
|
-
type SetUpdate = `${SetUpdateType}:${string}`;
|
|
6
|
-
type NumberedSetUpdate = `${number}=${SetUpdate}`;
|
|
7
|
-
interface SetRTXJson<P extends primitive> extends Json.Object {
|
|
8
|
-
members: P[];
|
|
9
|
-
cache: (NumberedSetUpdate | null)[];
|
|
10
|
-
cacheLimit: number;
|
|
11
|
-
cacheIdx: number;
|
|
12
|
-
cacheUpdateNumber: number;
|
|
13
|
-
}
|
|
14
|
-
declare class SetRTX<P extends primitive> extends Set<P> implements Transceiver<NumberedSetUpdate>, Lineage {
|
|
15
|
-
mode: TransceiverMode;
|
|
16
|
-
readonly subject: Subject<`add:${string}` | `clear:${string}` | `del:${string}` | `tx:${string}`>;
|
|
17
|
-
cacheLimit: number;
|
|
18
|
-
cache: (NumberedSetUpdate | null)[];
|
|
19
|
-
cacheIdx: number;
|
|
20
|
-
cacheUpdateNumber: number;
|
|
21
|
-
constructor(values?: Iterable<P>, cacheLimit?: number);
|
|
22
|
-
toJSON(): SetRTXJson<P>;
|
|
23
|
-
static fromJSON<P extends primitive>(json: SetRTXJson<P>): SetRTX<P>;
|
|
24
|
-
add(value: P): this;
|
|
25
|
-
clear(): void;
|
|
26
|
-
delete(value: P): boolean;
|
|
27
|
-
readonly parent: SetRTX<P> | null;
|
|
28
|
-
child: SetRTX<P> | null;
|
|
29
|
-
transactionUpdates: SetUpdate[] | null;
|
|
30
|
-
transaction(run: (child: SetRTX<P>) => boolean): void;
|
|
31
|
-
protected _subscribe(key: string, fn: (update: SetUpdate) => void): () => void;
|
|
32
|
-
subscribe(key: string, fn: (update: NumberedSetUpdate) => void): () => void;
|
|
33
|
-
emit(update: SetUpdate): void;
|
|
34
|
-
private doStep;
|
|
35
|
-
getUpdateNumber(update: NumberedSetUpdate): number;
|
|
36
|
-
do(update: NumberedSetUpdate): number | `OUT_OF_RANGE` | null;
|
|
37
|
-
undoStep(update: SetUpdate): void;
|
|
38
|
-
undo(update: NumberedSetUpdate): number | null;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
export { type NumberedSetUpdate, SetRTX, type SetRTXJson, type SetUpdate, type SetUpdateType };
|
package/web/dist/index.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { AtomEffect } from 'atom.io';
|
|
2
|
-
|
|
3
|
-
type StringInterface<T> = {
|
|
4
|
-
stringify: (t: T) => string;
|
|
5
|
-
parse: (s: string) => T;
|
|
6
|
-
};
|
|
7
|
-
declare const persistSync: <T>(storage: Storage, { stringify, parse }: StringInterface<T>, key: string) => AtomEffect<T>;
|
|
8
|
-
|
|
9
|
-
export { type StringInterface, persistSync };
|
package/web/dist/index.js
DELETED
package/web/package.json
DELETED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|