@astrogate/sdk 0.0.0-stage → 0.1.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/README.md +6 -2
- package/THIRD_PARTY_NOTICES.md +17 -0
- package/dist/browser.d.ts +85 -0
- package/dist/browser.js +16 -0
- package/dist/database-binding.d.ts +7 -0
- package/dist/database-binding.js +11 -0
- package/dist/hosted-session.d.ts +1 -0
- package/dist/hosted-session.js +11 -0
- package/dist/http.d.ts +24 -0
- package/dist/http.js +92 -0
- package/dist/inventory.d.ts +7 -0
- package/dist/inventory.js +18 -0
- package/dist/management-read.d.ts +17 -0
- package/dist/management-read.js +104 -0
- package/dist/management.d.ts +347 -0
- package/dist/management.js +137 -0
- package/dist/operator.d.ts +136 -0
- package/dist/operator.js +53 -0
- package/dist/react.d.ts +16 -0
- package/dist/react.js +10 -0
- package/dist/server.d.ts +27 -0
- package/dist/server.js +30 -0
- package/dist/services.d.ts +7 -0
- package/dist/services.js +53 -0
- package/dist/storage.d.ts +68 -0
- package/dist/storage.js +30 -0
- package/dist/tasks.d.ts +42 -0
- package/dist/tasks.js +24 -0
- package/dist/wire.gen.d.ts +7107 -0
- package/dist/wire.gen.js +5 -0
- package/native-provenance.json +15 -0
- package/node_modules/@instantdb/admin/LICENSE +202 -0
- package/node_modules/@instantdb/admin/dist/esm/index.d.ts +607 -0
- package/node_modules/@instantdb/admin/dist/esm/index.js +1036 -0
- package/node_modules/@instantdb/admin/dist/esm/polyfill.d.ts +16 -0
- package/node_modules/@instantdb/admin/dist/esm/polyfill.js +21 -0
- package/node_modules/@instantdb/admin/dist/esm/subscribe.d.ts +38 -0
- package/node_modules/@instantdb/admin/dist/esm/subscribe.js +301 -0
- package/node_modules/@instantdb/admin/dist/esm/version.d.ts +2 -0
- package/node_modules/@instantdb/admin/dist/esm/version.js +2 -0
- package/node_modules/@instantdb/admin/package.json +23 -0
- package/node_modules/@instantdb/core/LICENSE +202 -0
- package/node_modules/@instantdb/core/dist/esm/Connection.d.ts +92 -0
- package/node_modules/@instantdb/core/dist/esm/Connection.js +188 -0
- package/node_modules/@instantdb/core/dist/esm/InMemoryStorage.d.ts +10 -0
- package/node_modules/@instantdb/core/dist/esm/InMemoryStorage.js +25 -0
- package/node_modules/@instantdb/core/dist/esm/IndexedDBStorage.d.ts +17 -0
- package/node_modules/@instantdb/core/dist/esm/IndexedDBStorage.js +309 -0
- package/node_modules/@instantdb/core/dist/esm/InstantError.d.ts +6 -0
- package/node_modules/@instantdb/core/dist/esm/InstantError.js +23 -0
- package/node_modules/@instantdb/core/dist/esm/Reactor.d.ts +430 -0
- package/node_modules/@instantdb/core/dist/esm/Reactor.js +2369 -0
- package/node_modules/@instantdb/core/dist/esm/StorageAPI.d.ts +39 -0
- package/node_modules/@instantdb/core/dist/esm/StorageAPI.js +65 -0
- package/node_modules/@instantdb/core/dist/esm/Stream.d.ts +120 -0
- package/node_modules/@instantdb/core/dist/esm/Stream.js +811 -0
- package/node_modules/@instantdb/core/dist/esm/SyncTable.d.ts +144 -0
- package/node_modules/@instantdb/core/dist/esm/SyncTable.js +523 -0
- package/node_modules/@instantdb/core/dist/esm/WindowNetworkListener.d.ts +4 -0
- package/node_modules/@instantdb/core/dist/esm/WindowNetworkListener.js +19 -0
- package/node_modules/@instantdb/core/dist/esm/attrTypes.d.ts +25 -0
- package/node_modules/@instantdb/core/dist/esm/attrTypes.js +1 -0
- package/node_modules/@instantdb/core/dist/esm/authAPI.d.ts +64 -0
- package/node_modules/@instantdb/core/dist/esm/authAPI.js +103 -0
- package/node_modules/@instantdb/core/dist/esm/clientTypes.d.ts +40 -0
- package/node_modules/@instantdb/core/dist/esm/clientTypes.js +1 -0
- package/node_modules/@instantdb/core/dist/esm/coreTypes.d.ts +33 -0
- package/node_modules/@instantdb/core/dist/esm/coreTypes.js +1 -0
- package/node_modules/@instantdb/core/dist/esm/createRouteHandler.d.ts +7 -0
- package/node_modules/@instantdb/core/dist/esm/createRouteHandler.js +51 -0
- package/node_modules/@instantdb/core/dist/esm/datalog.d.ts +7 -0
- package/node_modules/@instantdb/core/dist/esm/datalog.js +99 -0
- package/node_modules/@instantdb/core/dist/esm/devtool.d.ts +3 -0
- package/node_modules/@instantdb/core/dist/esm/devtool.js +144 -0
- package/node_modules/@instantdb/core/dist/esm/framework.d.ts +80 -0
- package/node_modules/@instantdb/core/dist/esm/framework.js +243 -0
- package/node_modules/@instantdb/core/dist/esm/helperTypes.d.ts +75 -0
- package/node_modules/@instantdb/core/dist/esm/helperTypes.js +1 -0
- package/node_modules/@instantdb/core/dist/esm/index.d.ts +597 -0
- package/node_modules/@instantdb/core/dist/esm/index.js +649 -0
- package/node_modules/@instantdb/core/dist/esm/infiniteQuery.d.ts +25 -0
- package/node_modules/@instantdb/core/dist/esm/infiniteQuery.js +430 -0
- package/node_modules/@instantdb/core/dist/esm/instaml.d.ts +17 -0
- package/node_modules/@instantdb/core/dist/esm/instaml.js +576 -0
- package/node_modules/@instantdb/core/dist/esm/instaql.d.ts +12 -0
- package/node_modules/@instantdb/core/dist/esm/instaql.js +632 -0
- package/node_modules/@instantdb/core/dist/esm/instatx.d.ts +127 -0
- package/node_modules/@instantdb/core/dist/esm/instatx.js +93 -0
- package/node_modules/@instantdb/core/dist/esm/model/instaqlResult.d.ts +7 -0
- package/node_modules/@instantdb/core/dist/esm/model/instaqlResult.js +24 -0
- package/node_modules/@instantdb/core/dist/esm/parseSchemaFromJSON.d.ts +2 -0
- package/node_modules/@instantdb/core/dist/esm/parseSchemaFromJSON.js +142 -0
- package/node_modules/@instantdb/core/dist/esm/presence.d.ts +50 -0
- package/node_modules/@instantdb/core/dist/esm/presence.js +50 -0
- package/node_modules/@instantdb/core/dist/esm/presenceTypes.d.ts +9 -0
- package/node_modules/@instantdb/core/dist/esm/presenceTypes.js +3 -0
- package/node_modules/@instantdb/core/dist/esm/queryTypes.d.ts +271 -0
- package/node_modules/@instantdb/core/dist/esm/queryTypes.js +3 -0
- package/node_modules/@instantdb/core/dist/esm/queryValidation.d.ts +5 -0
- package/node_modules/@instantdb/core/dist/esm/queryValidation.js +287 -0
- package/node_modules/@instantdb/core/dist/esm/reactorTypes.d.ts +29 -0
- package/node_modules/@instantdb/core/dist/esm/reactorTypes.js +1 -0
- package/node_modules/@instantdb/core/dist/esm/routeHandlerProtocol.d.ts +19 -0
- package/node_modules/@instantdb/core/dist/esm/routeHandlerProtocol.js +1 -0
- package/node_modules/@instantdb/core/dist/esm/rulesTypes.d.ts +85 -0
- package/node_modules/@instantdb/core/dist/esm/rulesTypes.js +1 -0
- package/node_modules/@instantdb/core/dist/esm/sanityCheckQueries.d.ts +18 -0
- package/node_modules/@instantdb/core/dist/esm/sanityCheckQueries.js +152 -0
- package/node_modules/@instantdb/core/dist/esm/schema.d.ts +72 -0
- package/node_modules/@instantdb/core/dist/esm/schema.js +128 -0
- package/node_modules/@instantdb/core/dist/esm/schemaTypes.d.ts +244 -0
- package/node_modules/@instantdb/core/dist/esm/schemaTypes.js +106 -0
- package/node_modules/@instantdb/core/dist/esm/store.d.ts +89 -0
- package/node_modules/@instantdb/core/dist/esm/store.js +722 -0
- package/node_modules/@instantdb/core/dist/esm/transactionValidation.d.ts +7 -0
- package/node_modules/@instantdb/core/dist/esm/transactionValidation.js +130 -0
- package/node_modules/@instantdb/core/dist/esm/utils/Deferred.d.ts +8 -0
- package/node_modules/@instantdb/core/dist/esm/utils/Deferred.js +17 -0
- package/node_modules/@instantdb/core/dist/esm/utils/PersistedObject.d.ts +80 -0
- package/node_modules/@instantdb/core/dist/esm/utils/PersistedObject.js +448 -0
- package/node_modules/@instantdb/core/dist/esm/utils/dates.d.ts +1 -0
- package/node_modules/@instantdb/core/dist/esm/utils/dates.js +211 -0
- package/node_modules/@instantdb/core/dist/esm/utils/error.d.ts +2 -0
- package/node_modules/@instantdb/core/dist/esm/utils/error.js +8 -0
- package/node_modules/@instantdb/core/dist/esm/utils/fetch.d.ts +125 -0
- package/node_modules/@instantdb/core/dist/esm/utils/fetch.js +31 -0
- package/node_modules/@instantdb/core/dist/esm/utils/flags.d.ts +4 -0
- package/node_modules/@instantdb/core/dist/esm/utils/flags.js +10 -0
- package/node_modules/@instantdb/core/dist/esm/utils/id.d.ts +3 -0
- package/node_modules/@instantdb/core/dist/esm/utils/id.js +25 -0
- package/node_modules/@instantdb/core/dist/esm/utils/linkIndex.d.ts +7 -0
- package/node_modules/@instantdb/core/dist/esm/utils/linkIndex.js +17 -0
- package/node_modules/@instantdb/core/dist/esm/utils/log.d.ts +6 -0
- package/node_modules/@instantdb/core/dist/esm/utils/log.js +13 -0
- package/node_modules/@instantdb/core/dist/esm/utils/object.d.ts +16 -0
- package/node_modules/@instantdb/core/dist/esm/utils/object.js +143 -0
- package/node_modules/@instantdb/core/dist/esm/utils/pgtime.d.ts +197 -0
- package/node_modules/@instantdb/core/dist/esm/utils/pgtime.js +197 -0
- package/node_modules/@instantdb/core/dist/esm/utils/pick.d.ts +1 -0
- package/node_modules/@instantdb/core/dist/esm/utils/pick.js +9 -0
- package/node_modules/@instantdb/core/dist/esm/utils/strings.d.ts +1 -0
- package/node_modules/@instantdb/core/dist/esm/utils/strings.js +15 -0
- package/node_modules/@instantdb/core/dist/esm/utils/weakHash.d.ts +15 -0
- package/node_modules/@instantdb/core/dist/esm/utils/weakHash.js +71 -0
- package/node_modules/@instantdb/core/dist/esm/utils/weakHashLegacy.d.ts +7 -0
- package/node_modules/@instantdb/core/dist/esm/utils/weakHashLegacy.js +72 -0
- package/node_modules/@instantdb/core/dist/esm/version.d.ts +2 -0
- package/node_modules/@instantdb/core/dist/esm/version.js +2 -0
- package/node_modules/@instantdb/core/dist/esm/warningToggle.d.ts +2 -0
- package/node_modules/@instantdb/core/dist/esm/warningToggle.js +4 -0
- package/node_modules/@instantdb/core/package.json +20 -0
- package/node_modules/@instantdb/eventsource/LICENSE +22 -0
- package/node_modules/@instantdb/eventsource/README.md +226 -0
- package/node_modules/@instantdb/eventsource/dist/index.cjs +279 -0
- package/node_modules/@instantdb/eventsource/dist/index.cjs.map +1 -0
- package/node_modules/@instantdb/eventsource/dist/index.d.cts +346 -0
- package/node_modules/@instantdb/eventsource/dist/index.d.ts +346 -0
- package/node_modules/@instantdb/eventsource/dist/index.js +279 -0
- package/node_modules/@instantdb/eventsource/dist/index.js.map +1 -0
- package/node_modules/@instantdb/eventsource/package.json +128 -0
- package/node_modules/@instantdb/eventsource/src/EventSource.ts +614 -0
- package/node_modules/@instantdb/eventsource/src/errors.ts +141 -0
- package/node_modules/@instantdb/eventsource/src/index.ts +3 -0
- package/node_modules/@instantdb/eventsource/src/types.ts +164 -0
- package/node_modules/@instantdb/react/LICENSE +202 -0
- package/node_modules/@instantdb/react/dist/esm/Cursors.d.ts +18 -0
- package/node_modules/@instantdb/react/dist/esm/Cursors.js +103 -0
- package/node_modules/@instantdb/react/dist/esm/InstantReactWebDatabase.d.ts +5 -0
- package/node_modules/@instantdb/react/dist/esm/InstantReactWebDatabase.js +5 -0
- package/node_modules/@instantdb/react/dist/esm/index.d.ts +6 -0
- package/node_modules/@instantdb/react/dist/esm/index.js +22 -0
- package/node_modules/@instantdb/react/dist/esm/init.d.ts +40 -0
- package/node_modules/@instantdb/react/dist/esm/init.js +49 -0
- package/node_modules/@instantdb/react/dist/esm/next-ssr/HydrationStreamProvider.d.ts +65 -0
- package/node_modules/@instantdb/react/dist/esm/next-ssr/HydrationStreamProvider.js +96 -0
- package/node_modules/@instantdb/react/dist/esm/next-ssr/InstantNextDatabase.d.ts +11 -0
- package/node_modules/@instantdb/react/dist/esm/next-ssr/InstantNextDatabase.js +31 -0
- package/node_modules/@instantdb/react/dist/esm/next-ssr/InstantSuspenseProvider.d.ts +24 -0
- package/node_modules/@instantdb/react/dist/esm/next-ssr/InstantSuspenseProvider.js +162 -0
- package/node_modules/@instantdb/react/dist/esm/next-ssr/getUserFromInstantCookie.d.ts +9 -0
- package/node_modules/@instantdb/react/dist/esm/next-ssr/getUserFromInstantCookie.js +16 -0
- package/node_modules/@instantdb/react/dist/esm/next-ssr/htmlescape.d.ts +2 -0
- package/node_modules/@instantdb/react/dist/esm/next-ssr/htmlescape.js +20 -0
- package/node_modules/@instantdb/react/dist/esm/next-ssr/index.d.ts +29 -0
- package/node_modules/@instantdb/react/dist/esm/next-ssr/index.js +34 -0
- package/node_modules/@instantdb/react/dist/esm/version.d.ts +2 -0
- package/node_modules/@instantdb/react/dist/esm/version.js +2 -0
- package/node_modules/@instantdb/react/package.json +24 -0
- package/node_modules/@instantdb/react-common/LICENSE +202 -0
- package/node_modules/@instantdb/react-common/dist/esm/InstantReactAbstractDatabase.d.ts +282 -0
- package/node_modules/@instantdb/react-common/dist/esm/InstantReactAbstractDatabase.js +386 -0
- package/node_modules/@instantdb/react-common/dist/esm/InstantReactRoom.d.ts +182 -0
- package/node_modules/@instantdb/react-common/dist/esm/InstantReactRoom.js +280 -0
- package/node_modules/@instantdb/react-common/dist/esm/index.d.ts +4 -0
- package/node_modules/@instantdb/react-common/dist/esm/index.js +3 -0
- package/node_modules/@instantdb/react-common/dist/esm/useInfiniteQuerySubscription.d.ts +27 -0
- package/node_modules/@instantdb/react-common/dist/esm/useInfiniteQuerySubscription.js +53 -0
- package/node_modules/@instantdb/react-common/dist/esm/useQuery.d.ts +6 -0
- package/node_modules/@instantdb/react-common/dist/esm/useQuery.js +75 -0
- package/node_modules/@instantdb/react-common/dist/esm/useTimeout.d.ts +4 -0
- package/node_modules/@instantdb/react-common/dist/esm/useTimeout.js +17 -0
- package/node_modules/@instantdb/react-common/dist/esm/version.d.ts +2 -0
- package/node_modules/@instantdb/react-common/dist/esm/version.js +2 -0
- package/node_modules/@instantdb/react-common/package.json +22 -0
- package/node_modules/@instantdb/version/LICENSE +202 -0
- package/node_modules/@instantdb/version/dist/esm/index.d.ts +2 -0
- package/node_modules/@instantdb/version/dist/esm/index.js +2 -0
- package/node_modules/@instantdb/version/dist/esm/version.d.ts +2 -0
- package/node_modules/@instantdb/version/dist/esm/version.js +5 -0
- package/node_modules/@instantdb/version/package.json +16 -0
- package/node_modules/@instantdb/webhooks/LICENSE +202 -0
- package/node_modules/@instantdb/webhooks/dist/esm/index.d.ts +587 -0
- package/node_modules/@instantdb/webhooks/dist/esm/index.js +748 -0
- package/node_modules/@instantdb/webhooks/package.json +18 -0
- package/node_modules/cookie/LICENSE +24 -0
- package/node_modules/cookie/README.md +295 -0
- package/node_modules/cookie/dist/index.d.ts +143 -0
- package/node_modules/cookie/dist/index.js +355 -0
- package/node_modules/cookie/dist/index.js.map +1 -0
- package/node_modules/cookie/package.json +57 -0
- package/node_modules/eventsource/LICENSE +22 -0
- package/node_modules/eventsource/README.md +252 -0
- package/node_modules/eventsource/dist/EventSource.d.ts +128 -0
- package/node_modules/eventsource/dist/EventSource.d.ts.map +1 -0
- package/node_modules/eventsource/dist/EventSource.js +556 -0
- package/node_modules/eventsource/dist/EventSource.js.map +1 -0
- package/node_modules/eventsource/dist/errors.d.ts +53 -0
- package/node_modules/eventsource/dist/errors.d.ts.map +1 -0
- package/node_modules/eventsource/dist/errors.js +120 -0
- package/node_modules/eventsource/dist/errors.js.map +1 -0
- package/node_modules/eventsource/dist/index.d.ts +4 -0
- package/node_modules/eventsource/dist/index.d.ts.map +1 -0
- package/node_modules/eventsource/dist/index.js +3 -0
- package/node_modules/eventsource/dist/index.js.map +1 -0
- package/node_modules/eventsource/dist/types.d.ts +156 -0
- package/node_modules/eventsource/dist/types.d.ts.map +1 -0
- package/node_modules/eventsource/dist/types.js +2 -0
- package/node_modules/eventsource/dist/types.js.map +1 -0
- package/node_modules/eventsource/node_modules/eventsource-parser/LICENSE +21 -0
- package/node_modules/eventsource/node_modules/eventsource-parser/README.md +177 -0
- package/node_modules/eventsource/node_modules/eventsource-parser/dist/errors.d.ts +35 -0
- package/node_modules/eventsource/node_modules/eventsource-parser/dist/errors.d.ts.map +1 -0
- package/node_modules/eventsource/node_modules/eventsource-parser/dist/errors.js +16 -0
- package/node_modules/eventsource/node_modules/eventsource-parser/dist/errors.js.map +1 -0
- package/node_modules/eventsource/node_modules/eventsource-parser/dist/index.d.ts +4 -0
- package/node_modules/eventsource/node_modules/eventsource-parser/dist/index.d.ts.map +1 -0
- package/node_modules/eventsource/node_modules/eventsource-parser/dist/index.js +3 -0
- package/node_modules/eventsource/node_modules/eventsource-parser/dist/index.js.map +1 -0
- package/node_modules/eventsource/node_modules/eventsource-parser/dist/parse.d.ts +12 -0
- package/node_modules/eventsource/node_modules/eventsource-parser/dist/parse.d.ts.map +1 -0
- package/node_modules/eventsource/node_modules/eventsource-parser/dist/parse.js +509 -0
- package/node_modules/eventsource/node_modules/eventsource-parser/dist/parse.js.map +1 -0
- package/node_modules/eventsource/node_modules/eventsource-parser/dist/stream.d.ts +76 -0
- package/node_modules/eventsource/node_modules/eventsource-parser/dist/stream.d.ts.map +1 -0
- package/node_modules/eventsource/node_modules/eventsource-parser/dist/stream.js +59 -0
- package/node_modules/eventsource/node_modules/eventsource-parser/dist/stream.js.map +1 -0
- package/node_modules/eventsource/node_modules/eventsource-parser/dist/types.d.ts +130 -0
- package/node_modules/eventsource/node_modules/eventsource-parser/dist/types.d.ts.map +1 -0
- package/node_modules/eventsource/node_modules/eventsource-parser/dist/types.js +1 -0
- package/node_modules/eventsource/node_modules/eventsource-parser/dist/types.js.map +1 -0
- package/node_modules/eventsource/node_modules/eventsource-parser/package.json +96 -0
- package/node_modules/eventsource/node_modules/eventsource-parser/src/errors.ts +44 -0
- package/node_modules/eventsource/node_modules/eventsource-parser/src/index.ts +3 -0
- package/node_modules/eventsource/node_modules/eventsource-parser/src/parse.ts +576 -0
- package/node_modules/eventsource/node_modules/eventsource-parser/src/stream.ts +118 -0
- package/node_modules/eventsource/node_modules/eventsource-parser/src/types.ts +138 -0
- package/node_modules/eventsource/package.json +103 -0
- package/node_modules/eventsource/src/EventSource.ts +844 -0
- package/node_modules/eventsource/src/errors.ts +141 -0
- package/node_modules/eventsource/src/index.ts +3 -0
- package/node_modules/eventsource/src/types.ts +166 -0
- package/node_modules/eventsource-parser/LICENSE +21 -0
- package/node_modules/eventsource-parser/README.md +157 -0
- package/node_modules/eventsource-parser/dist/index.cjs +177 -0
- package/node_modules/eventsource-parser/dist/index.cjs.map +1 -0
- package/node_modules/eventsource-parser/dist/index.d.cts +169 -0
- package/node_modules/eventsource-parser/dist/index.d.ts +169 -0
- package/node_modules/eventsource-parser/dist/index.js +177 -0
- package/node_modules/eventsource-parser/dist/index.js.map +1 -0
- package/node_modules/eventsource-parser/dist/stream.cjs +29 -0
- package/node_modules/eventsource-parser/dist/stream.cjs.map +1 -0
- package/node_modules/eventsource-parser/dist/stream.d.cts +134 -0
- package/node_modules/eventsource-parser/dist/stream.d.ts +134 -0
- package/node_modules/eventsource-parser/dist/stream.js +30 -0
- package/node_modules/eventsource-parser/dist/stream.js.map +1 -0
- package/node_modules/eventsource-parser/package.json +92 -0
- package/node_modules/eventsource-parser/src/errors.ts +44 -0
- package/node_modules/eventsource-parser/src/index.ts +8 -0
- package/node_modules/eventsource-parser/src/parse.ts +439 -0
- package/node_modules/eventsource-parser/src/stream.ts +107 -0
- package/node_modules/eventsource-parser/src/types.ts +122 -0
- package/node_modules/eventsource-parser/stream.js +2 -0
- package/node_modules/mutative/LICENSE +21 -0
- package/node_modules/mutative/README.md +870 -0
- package/node_modules/mutative/dist/apply.d.ts +31 -0
- package/node_modules/mutative/dist/array.d.ts +45 -0
- package/node_modules/mutative/dist/constant.d.ts +8 -0
- package/node_modules/mutative/dist/create.d.ts +46 -0
- package/node_modules/mutative/dist/current.d.ts +23 -0
- package/node_modules/mutative/dist/draft.d.ts +3 -0
- package/node_modules/mutative/dist/draftify.d.ts +2 -0
- package/node_modules/mutative/dist/error.d.ts +54 -0
- package/node_modules/mutative/dist/index.d.mts +1 -0
- package/node_modules/mutative/dist/index.d.ts +12 -0
- package/node_modules/mutative/dist/index.js +8 -0
- package/node_modules/mutative/dist/index.mjs +3 -0
- package/node_modules/mutative/dist/interface.d.ts +200 -0
- package/node_modules/mutative/dist/internal.d.ts +4 -0
- package/node_modules/mutative/dist/makeCreator.d.ts +54 -0
- package/node_modules/mutative/dist/map.d.ts +15 -0
- package/node_modules/mutative/dist/mutative.cjs.development.js +2126 -0
- package/node_modules/mutative/dist/mutative.cjs.development.js.map +1 -0
- package/node_modules/mutative/dist/mutative.cjs.production.min.js +2 -0
- package/node_modules/mutative/dist/mutative.cjs.production.min.js.map +1 -0
- package/node_modules/mutative/dist/mutative.esm.js +2123 -0
- package/node_modules/mutative/dist/mutative.esm.js.map +1 -0
- package/node_modules/mutative/dist/mutative.esm.mjs +2123 -0
- package/node_modules/mutative/dist/mutative.esm.mjs.map +1 -0
- package/node_modules/mutative/dist/mutative.esm.production.min.mjs +2 -0
- package/node_modules/mutative/dist/mutative.esm.production.min.mjs.map +1 -0
- package/node_modules/mutative/dist/mutative.umd.development.js +2132 -0
- package/node_modules/mutative/dist/mutative.umd.development.js.map +1 -0
- package/node_modules/mutative/dist/mutative.umd.production.min.js +2 -0
- package/node_modules/mutative/dist/mutative.umd.production.min.js.map +1 -0
- package/node_modules/mutative/dist/original.d.ts +19 -0
- package/node_modules/mutative/dist/patch.d.ts +2 -0
- package/node_modules/mutative/dist/rawReturn.d.ts +19 -0
- package/node_modules/mutative/dist/set.d.ts +14 -0
- package/node_modules/mutative/dist/unsafe.d.ts +34 -0
- package/node_modules/mutative/dist/utils/cast.d.ts +13 -0
- package/node_modules/mutative/dist/utils/copy.d.ts +5 -0
- package/node_modules/mutative/dist/utils/deepFreeze.d.ts +1 -0
- package/node_modules/mutative/dist/utils/draft.d.ts +27 -0
- package/node_modules/mutative/dist/utils/finalize.d.ts +13 -0
- package/node_modules/mutative/dist/utils/forEach.d.ts +1 -0
- package/node_modules/mutative/dist/utils/index.d.ts +7 -0
- package/node_modules/mutative/dist/utils/mark.d.ts +2 -0
- package/node_modules/mutative/dist/utils/marker.d.ts +5 -0
- package/node_modules/mutative/dist/utils/proto.d.ts +10 -0
- package/node_modules/mutative/package.json +142 -0
- package/node_modules/mutative/src/apply.ts +239 -0
- package/node_modules/mutative/src/array.ts +679 -0
- package/node_modules/mutative/src/constant.ts +17 -0
- package/node_modules/mutative/src/create.ts +27 -0
- package/node_modules/mutative/src/current.ts +206 -0
- package/node_modules/mutative/src/draft.ts +489 -0
- package/node_modules/mutative/src/draftify.ts +57 -0
- package/node_modules/mutative/src/error.ts +129 -0
- package/node_modules/mutative/src/index.ts +21 -0
- package/node_modules/mutative/src/interface.ts +321 -0
- package/node_modules/mutative/src/internal.ts +5 -0
- package/node_modules/mutative/src/makeCreator.ts +382 -0
- package/node_modules/mutative/src/map.ts +160 -0
- package/node_modules/mutative/src/original.ts +28 -0
- package/node_modules/mutative/src/patch.ts +386 -0
- package/node_modules/mutative/src/rawReturn.ts +41 -0
- package/node_modules/mutative/src/set.ts +201 -0
- package/node_modules/mutative/src/unsafe.ts +66 -0
- package/node_modules/mutative/src/utils/cast.ts +22 -0
- package/node_modules/mutative/src/utils/copy.ts +224 -0
- package/node_modules/mutative/src/utils/deepFreeze.ts +103 -0
- package/node_modules/mutative/src/utils/draft.ts +189 -0
- package/node_modules/mutative/src/utils/finalize.ts +232 -0
- package/node_modules/mutative/src/utils/forEach.ts +24 -0
- package/node_modules/mutative/src/utils/index.ts +7 -0
- package/node_modules/mutative/src/utils/mark.ts +11 -0
- package/node_modules/mutative/src/utils/marker.ts +34 -0
- package/node_modules/mutative/src/utils/proto.ts +38 -0
- package/node_modules/uuid/LICENSE.md +9 -0
- package/node_modules/uuid/README.md +491 -0
- package/node_modules/uuid/dist/index.d.ts +15 -0
- package/node_modules/uuid/dist/index.js +14 -0
- package/node_modules/uuid/dist/max.d.ts +2 -0
- package/node_modules/uuid/dist/max.js +1 -0
- package/node_modules/uuid/dist/md5.d.ts +2 -0
- package/node_modules/uuid/dist/md5.js +135 -0
- package/node_modules/uuid/dist/nil.d.ts +2 -0
- package/node_modules/uuid/dist/nil.js +1 -0
- package/node_modules/uuid/dist/parse.d.ts +3 -0
- package/node_modules/uuid/dist/parse.js +9 -0
- package/node_modules/uuid/dist/regex.d.ts +2 -0
- package/node_modules/uuid/dist/regex.js +1 -0
- package/node_modules/uuid/dist/rng.d.ts +1 -0
- package/node_modules/uuid/dist/rng.js +4 -0
- package/node_modules/uuid/dist/sha1.d.ts +2 -0
- package/node_modules/uuid/dist/sha1.js +70 -0
- package/node_modules/uuid/dist/stringify.d.ts +3 -0
- package/node_modules/uuid/dist/stringify.js +35 -0
- package/node_modules/uuid/dist/types.d.ts +22 -0
- package/node_modules/uuid/dist/types.js +1 -0
- package/node_modules/uuid/dist/uuid-bin.d.ts +1 -0
- package/node_modules/uuid/dist/uuid-bin.js +70 -0
- package/node_modules/uuid/dist/v1.d.ts +11 -0
- package/node_modules/uuid/dist/v1.js +87 -0
- package/node_modules/uuid/dist/v1ToV6.d.ts +3 -0
- package/node_modules/uuid/dist/v1ToV6.js +10 -0
- package/node_modules/uuid/dist/v3.d.ts +9 -0
- package/node_modules/uuid/dist/v3.js +9 -0
- package/node_modules/uuid/dist/v35.d.ts +7 -0
- package/node_modules/uuid/dist/v35.js +39 -0
- package/node_modules/uuid/dist/v4.d.ts +4 -0
- package/node_modules/uuid/dist/v4.js +29 -0
- package/node_modules/uuid/dist/v5.d.ts +9 -0
- package/node_modules/uuid/dist/v5.js +9 -0
- package/node_modules/uuid/dist/v6.d.ts +4 -0
- package/node_modules/uuid/dist/v6.js +20 -0
- package/node_modules/uuid/dist/v6ToV1.d.ts +2 -0
- package/node_modules/uuid/dist/v6ToV1.js +10 -0
- package/node_modules/uuid/dist/v7.d.ts +9 -0
- package/node_modules/uuid/dist/v7.js +68 -0
- package/node_modules/uuid/dist/validate.d.ts +2 -0
- package/node_modules/uuid/dist/validate.js +5 -0
- package/node_modules/uuid/dist/version.d.ts +2 -0
- package/node_modules/uuid/dist/version.js +8 -0
- package/node_modules/uuid/dist-node/bin/uuid +2 -0
- package/node_modules/uuid/dist-node/index.js +14 -0
- package/node_modules/uuid/dist-node/max.js +1 -0
- package/node_modules/uuid/dist-node/md5.js +11 -0
- package/node_modules/uuid/dist-node/nil.js +1 -0
- package/node_modules/uuid/dist-node/parse.js +9 -0
- package/node_modules/uuid/dist-node/regex.js +1 -0
- package/node_modules/uuid/dist-node/rng.js +4 -0
- package/node_modules/uuid/dist-node/sha1.js +11 -0
- package/node_modules/uuid/dist-node/stringify.js +35 -0
- package/node_modules/uuid/dist-node/types.js +1 -0
- package/node_modules/uuid/dist-node/uuid-bin.js +70 -0
- package/node_modules/uuid/dist-node/v1.js +87 -0
- package/node_modules/uuid/dist-node/v1ToV6.js +10 -0
- package/node_modules/uuid/dist-node/v3.js +9 -0
- package/node_modules/uuid/dist-node/v35.js +39 -0
- package/node_modules/uuid/dist-node/v4.js +29 -0
- package/node_modules/uuid/dist-node/v5.js +9 -0
- package/node_modules/uuid/dist-node/v6.js +20 -0
- package/node_modules/uuid/dist-node/v6ToV1.js +10 -0
- package/node_modules/uuid/dist-node/v7.js +68 -0
- package/node_modules/uuid/dist-node/validate.js +5 -0
- package/node_modules/uuid/dist-node/version.js +8 -0
- package/node_modules/uuid/package.json +115 -0
- package/package.json +80 -4
- package/release.json +78 -0
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import type { IContainEntitiesAndLinks, LinkParams, CreateParams, UpdateParams, UpdateOpts, RuleParams, UniqueKeys, ResolveEntityAttrs } from './schemaTypes.ts';
|
|
2
|
+
type Action = 'create' | 'update' | 'link' | 'unlink' | 'delete' | 'merge' | 'ruleParams';
|
|
3
|
+
type EType = string;
|
|
4
|
+
type Id = string;
|
|
5
|
+
type Args = any;
|
|
6
|
+
type LookupRef = [string, any];
|
|
7
|
+
type Lookup = string;
|
|
8
|
+
type Opts = UpdateOpts;
|
|
9
|
+
export type Op = [Action, EType, Id | LookupRef, Args, Opts?];
|
|
10
|
+
export interface TransactionChunk<Schema extends IContainEntitiesAndLinks<any, any>, EntityName extends keyof Schema['entities']> {
|
|
11
|
+
__ops: Op[];
|
|
12
|
+
__etype: EntityName;
|
|
13
|
+
/**
|
|
14
|
+
* Create objects. Throws an error if the object with the provided ID already
|
|
15
|
+
* exists.
|
|
16
|
+
*/
|
|
17
|
+
create: (args: CreateParams<Schema, EntityName>) => TransactionChunk<Schema, EntityName>;
|
|
18
|
+
/**
|
|
19
|
+
* Create and update objects. By default works in upsert mode (will create
|
|
20
|
+
* entity if that doesn't exist). Can be optionally put into "strict update"
|
|
21
|
+
* mode by providing { upsert: false } option as second argument:
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* const goalId = id();
|
|
25
|
+
* // upsert
|
|
26
|
+
* db.tx.goals[goalId].update({title: "Get fit", difficulty: 5})
|
|
27
|
+
*
|
|
28
|
+
* // strict update
|
|
29
|
+
* db.tx.goals[goalId].update({title: "Get fit"}, {upsert: false})
|
|
30
|
+
*/
|
|
31
|
+
update: (args: UpdateParams<Schema, EntityName>, opts?: UpdateOpts) => TransactionChunk<Schema, EntityName>;
|
|
32
|
+
/**
|
|
33
|
+
* Link two objects together
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* const goalId = id();
|
|
37
|
+
* const todoId = id();
|
|
38
|
+
* db.transact([
|
|
39
|
+
* db.tx.goals[goalId].update({title: "Get fit"}),
|
|
40
|
+
* db.tx.todos[todoId].update({title: "Go on a run"}),
|
|
41
|
+
* db.tx.goals[goalId].link({todos: todoId}),
|
|
42
|
+
* ])
|
|
43
|
+
*
|
|
44
|
+
* // Now, if you query:
|
|
45
|
+
* useQuery({ goals: { todos: {} } })
|
|
46
|
+
* // You'll get back:
|
|
47
|
+
*
|
|
48
|
+
* // { goals: [{ title: "Get fit", todos: [{ title: "Go on a run" }]}
|
|
49
|
+
*/
|
|
50
|
+
link: (args: LinkParams<Schema, EntityName>) => TransactionChunk<Schema, EntityName>;
|
|
51
|
+
/**
|
|
52
|
+
* Unlink two objects
|
|
53
|
+
* @example
|
|
54
|
+
* // to "unlink" a todo from a goal:
|
|
55
|
+
* db.tx.goals[goalId].unlink({todos: todoId})
|
|
56
|
+
*/
|
|
57
|
+
unlink: (args: LinkParams<Schema, EntityName>) => TransactionChunk<Schema, EntityName>;
|
|
58
|
+
/**
|
|
59
|
+
* Delete an object, alongside all of its links.
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* db.tx.goals[goalId].delete()
|
|
63
|
+
*/
|
|
64
|
+
delete: () => TransactionChunk<Schema, EntityName>;
|
|
65
|
+
/**
|
|
66
|
+
*
|
|
67
|
+
* Similar to `update`, but instead of overwriting the current value, it will merge the provided values into the current value.
|
|
68
|
+
*
|
|
69
|
+
* This is useful for deeply nested, document-style values, or for updating a single attribute at an arbitrary depth without overwriting the rest of the object.
|
|
70
|
+
*
|
|
71
|
+
* For example, if you have a goal with a nested `metrics` object:
|
|
72
|
+
*
|
|
73
|
+
* ```js
|
|
74
|
+
* goal = { name: "Get fit", metrics: { progress: 0.3 } }
|
|
75
|
+
* ```
|
|
76
|
+
*
|
|
77
|
+
* You can update the `progress` attribute like so:
|
|
78
|
+
*
|
|
79
|
+
* ```js
|
|
80
|
+
* db.tx.goals[goalId].merge({ metrics: { progress: 0.5 }, category: "Fitness" })
|
|
81
|
+
* ```
|
|
82
|
+
*
|
|
83
|
+
* And the resulting object will be:
|
|
84
|
+
*
|
|
85
|
+
* ```js
|
|
86
|
+
* goal = { name: "Get fit", metrics: { progress: 0.5 }, category: "Fitness" }
|
|
87
|
+
* ```
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* const goalId = id();
|
|
91
|
+
* db.tx.goals[goalId].merge({title: "Get fitter"})
|
|
92
|
+
*/
|
|
93
|
+
merge: (args: {
|
|
94
|
+
[attribute: string]: any;
|
|
95
|
+
}, opts?: UpdateOpts) => TransactionChunk<Schema, EntityName>;
|
|
96
|
+
ruleParams: (args: RuleParams) => TransactionChunk<Schema, EntityName>;
|
|
97
|
+
}
|
|
98
|
+
export type ETypeChunk<Schema extends IContainEntitiesAndLinks<any, any>, EntityName extends keyof Schema['entities']> = {
|
|
99
|
+
[id: Id]: TransactionChunk<Schema, EntityName>;
|
|
100
|
+
} & {
|
|
101
|
+
lookup: <Name extends UniqueKeys<Schema['entities'][EntityName]['attrs']>>(attrName: Name, value: ResolveEntityAttrs<Schema['entities'][EntityName]>[Name]) => TransactionChunk<Schema, EntityName>;
|
|
102
|
+
};
|
|
103
|
+
export type TxChunk<Schema extends IContainEntitiesAndLinks<any, any>> = {
|
|
104
|
+
[EntityName in keyof Schema['entities']]: ETypeChunk<Schema, EntityName>;
|
|
105
|
+
};
|
|
106
|
+
/**
|
|
107
|
+
* Creates a lookup to use in place of an id in a transaction
|
|
108
|
+
*
|
|
109
|
+
* @example
|
|
110
|
+
* db.tx.users[lookup('email', 'lyndon@example.com')].update({name: 'Lyndon'})
|
|
111
|
+
*/
|
|
112
|
+
export declare function lookup(attribute: string, value: any): Lookup;
|
|
113
|
+
export declare function isLookup(k: string): boolean;
|
|
114
|
+
export declare function parseLookup(k: string): LookupRef;
|
|
115
|
+
export declare function txInit<Schema extends IContainEntitiesAndLinks<any, any>>(): TxChunk<Schema>;
|
|
116
|
+
/**
|
|
117
|
+
* A handy builder for changes.
|
|
118
|
+
*
|
|
119
|
+
* You must start with the `namespace` you want to change:
|
|
120
|
+
*
|
|
121
|
+
* @example
|
|
122
|
+
* db.tx.goals[goalId].update({title: "Get fit"})
|
|
123
|
+
* // Note: you don't need to create `goals` ahead of time.
|
|
124
|
+
*/
|
|
125
|
+
export declare const tx: TxChunk<IContainEntitiesAndLinks<any, any>>;
|
|
126
|
+
export declare function getOps(x: TransactionChunk<any, any>): Op[];
|
|
127
|
+
export {};
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
function getAllTransactionChunkKeys() {
|
|
2
|
+
const v = 1;
|
|
3
|
+
const _dummy = {
|
|
4
|
+
__etype: v,
|
|
5
|
+
__ops: v,
|
|
6
|
+
create: v,
|
|
7
|
+
update: v,
|
|
8
|
+
link: v,
|
|
9
|
+
unlink: v,
|
|
10
|
+
delete: v,
|
|
11
|
+
merge: v,
|
|
12
|
+
ruleParams: v,
|
|
13
|
+
};
|
|
14
|
+
return new Set(Object.keys(_dummy));
|
|
15
|
+
}
|
|
16
|
+
const allTransactionChunkKeys = getAllTransactionChunkKeys();
|
|
17
|
+
function transactionChunk(etype, id, prevOps) {
|
|
18
|
+
const target = {
|
|
19
|
+
__etype: etype,
|
|
20
|
+
__ops: prevOps,
|
|
21
|
+
};
|
|
22
|
+
return new Proxy(target, {
|
|
23
|
+
get: (_target, cmd) => {
|
|
24
|
+
if (cmd === '__ops')
|
|
25
|
+
return prevOps;
|
|
26
|
+
if (cmd === '__etype')
|
|
27
|
+
return etype;
|
|
28
|
+
if (!allTransactionChunkKeys.has(cmd)) {
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
return (args, opts) => {
|
|
32
|
+
return transactionChunk(etype, id, [
|
|
33
|
+
...prevOps,
|
|
34
|
+
opts ? [cmd, etype, id, args, opts] : [cmd, etype, id, args],
|
|
35
|
+
]);
|
|
36
|
+
};
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Creates a lookup to use in place of an id in a transaction
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* db.tx.users[lookup('email', 'lyndon@example.com')].update({name: 'Lyndon'})
|
|
45
|
+
*/
|
|
46
|
+
export function lookup(attribute, value) {
|
|
47
|
+
return `lookup__${attribute}__${JSON.stringify(value)}`;
|
|
48
|
+
}
|
|
49
|
+
export function isLookup(k) {
|
|
50
|
+
return k.startsWith('lookup__');
|
|
51
|
+
}
|
|
52
|
+
export function parseLookup(k) {
|
|
53
|
+
const [_, attribute, ...vJSON] = k.split('__');
|
|
54
|
+
return [attribute, JSON.parse(vJSON.join('__'))];
|
|
55
|
+
}
|
|
56
|
+
function etypeChunk(etype) {
|
|
57
|
+
return new Proxy({
|
|
58
|
+
__etype: etype,
|
|
59
|
+
}, {
|
|
60
|
+
get(_target, cmd) {
|
|
61
|
+
if (cmd === 'lookup') {
|
|
62
|
+
return (attrName, value) => transactionChunk(etype, parseLookup(lookup(attrName, value)), []);
|
|
63
|
+
}
|
|
64
|
+
if (cmd === '__etype')
|
|
65
|
+
return etype;
|
|
66
|
+
const id = cmd;
|
|
67
|
+
if (isLookup(id)) {
|
|
68
|
+
return transactionChunk(etype, parseLookup(id), []);
|
|
69
|
+
}
|
|
70
|
+
return transactionChunk(etype, id, []);
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
export function txInit() {
|
|
75
|
+
return new Proxy({}, {
|
|
76
|
+
get(_target, ns) {
|
|
77
|
+
return etypeChunk(ns);
|
|
78
|
+
},
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* A handy builder for changes.
|
|
83
|
+
*
|
|
84
|
+
* You must start with the `namespace` you want to change:
|
|
85
|
+
*
|
|
86
|
+
* @example
|
|
87
|
+
* db.tx.goals[goalId].update({title: "Get fit"})
|
|
88
|
+
* // Note: you don't need to create `goals` ahead of time.
|
|
89
|
+
*/
|
|
90
|
+
export const tx = txInit();
|
|
91
|
+
export function getOps(x) {
|
|
92
|
+
return x.__ops;
|
|
93
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Marshall instaql-result into list of triples. Instaql-result may have
|
|
3
|
+
* multiple datalog-results, each datalog-result may have multiple join-rows
|
|
4
|
+
* and each join-row may have triples.The union of these triples may have
|
|
5
|
+
* duplicates, so we dedup them.
|
|
6
|
+
*/
|
|
7
|
+
export declare function extractTriples(idNodes: any): any[];
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
function _extractTriplesHelper(idNodes, acc = []) {
|
|
2
|
+
idNodes.forEach((idNode) => {
|
|
3
|
+
const { data } = idNode;
|
|
4
|
+
const { 'datalog-result': datalogResult } = data;
|
|
5
|
+
const { 'join-rows': joinRows } = datalogResult;
|
|
6
|
+
for (const rows of joinRows) {
|
|
7
|
+
for (const triple of rows) {
|
|
8
|
+
acc.push(triple);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
_extractTriplesHelper(idNode['child-nodes'], acc);
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Marshall instaql-result into list of triples. Instaql-result may have
|
|
16
|
+
* multiple datalog-results, each datalog-result may have multiple join-rows
|
|
17
|
+
* and each join-row may have triples.The union of these triples may have
|
|
18
|
+
* duplicates, so we dedup them.
|
|
19
|
+
*/
|
|
20
|
+
export function extractTriples(idNodes) {
|
|
21
|
+
const triples = [];
|
|
22
|
+
_extractTriplesHelper(idNodes, triples);
|
|
23
|
+
return triples;
|
|
24
|
+
}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { i } from './schema.js';
|
|
2
|
+
export const parseSchemaFromJSON = (s) => {
|
|
3
|
+
// Parse entities
|
|
4
|
+
const entities = {};
|
|
5
|
+
for (const [entityName, entityInfo] of Object.entries(s.entities)) {
|
|
6
|
+
const entityDef = entityInfo;
|
|
7
|
+
const attrs = {};
|
|
8
|
+
// Parse attributes
|
|
9
|
+
for (const [attrName, attrInfo] of Object.entries(entityDef.attrs)) {
|
|
10
|
+
const attrDef = attrInfo;
|
|
11
|
+
let attr;
|
|
12
|
+
// Create the appropriate attribute type
|
|
13
|
+
switch (attrDef.valueType) {
|
|
14
|
+
case 'string':
|
|
15
|
+
attr = i.string();
|
|
16
|
+
break;
|
|
17
|
+
case 'number':
|
|
18
|
+
attr = i.number();
|
|
19
|
+
break;
|
|
20
|
+
case 'boolean':
|
|
21
|
+
attr = i.boolean();
|
|
22
|
+
break;
|
|
23
|
+
case 'date':
|
|
24
|
+
attr = i.date();
|
|
25
|
+
break;
|
|
26
|
+
case 'json':
|
|
27
|
+
attr = i.json();
|
|
28
|
+
break;
|
|
29
|
+
default:
|
|
30
|
+
attr = i.json();
|
|
31
|
+
}
|
|
32
|
+
// Apply modifiers
|
|
33
|
+
if (!attrDef.required) {
|
|
34
|
+
attr = attr.optional();
|
|
35
|
+
}
|
|
36
|
+
if (attrDef.config?.indexed) {
|
|
37
|
+
attr = attr.indexed();
|
|
38
|
+
}
|
|
39
|
+
if (attrDef.config?.unique) {
|
|
40
|
+
attr = attr.unique();
|
|
41
|
+
}
|
|
42
|
+
attrs[attrName] = attr;
|
|
43
|
+
}
|
|
44
|
+
entities[entityName] = i.entity(attrs);
|
|
45
|
+
}
|
|
46
|
+
// Parse links
|
|
47
|
+
const links = s.links || {};
|
|
48
|
+
// Parse rooms
|
|
49
|
+
const rooms = {};
|
|
50
|
+
if (s.rooms) {
|
|
51
|
+
for (const [roomName, roomInfo] of Object.entries(s.rooms)) {
|
|
52
|
+
const roomDef = roomInfo;
|
|
53
|
+
// Parse presence
|
|
54
|
+
const presenceAttrs = {};
|
|
55
|
+
for (const [attrName, attrInfo] of Object.entries(roomDef.presence.attrs)) {
|
|
56
|
+
const attrDef = attrInfo;
|
|
57
|
+
let attr;
|
|
58
|
+
switch (attrDef.valueType) {
|
|
59
|
+
case 'string':
|
|
60
|
+
attr = i.string();
|
|
61
|
+
break;
|
|
62
|
+
case 'number':
|
|
63
|
+
attr = i.number();
|
|
64
|
+
break;
|
|
65
|
+
case 'boolean':
|
|
66
|
+
attr = i.boolean();
|
|
67
|
+
break;
|
|
68
|
+
case 'date':
|
|
69
|
+
attr = i.date();
|
|
70
|
+
break;
|
|
71
|
+
case 'json':
|
|
72
|
+
attr = i.json();
|
|
73
|
+
break;
|
|
74
|
+
default:
|
|
75
|
+
attr = i.json();
|
|
76
|
+
}
|
|
77
|
+
if (!attrDef.required) {
|
|
78
|
+
attr = attr.optional();
|
|
79
|
+
}
|
|
80
|
+
if (attrDef.config?.indexed) {
|
|
81
|
+
attr = attr.indexed();
|
|
82
|
+
}
|
|
83
|
+
if (attrDef.config?.unique) {
|
|
84
|
+
attr = attr.unique();
|
|
85
|
+
}
|
|
86
|
+
presenceAttrs[attrName] = attr;
|
|
87
|
+
}
|
|
88
|
+
// Parse topics
|
|
89
|
+
const topics = {};
|
|
90
|
+
if (roomDef.topics) {
|
|
91
|
+
for (const [topicName, topicInfo] of Object.entries(roomDef.topics)) {
|
|
92
|
+
const topicDef = topicInfo;
|
|
93
|
+
const topicAttrs = {};
|
|
94
|
+
for (const [attrName, attrInfo] of Object.entries(topicDef.attrs)) {
|
|
95
|
+
const attrDef = attrInfo;
|
|
96
|
+
let attr;
|
|
97
|
+
switch (attrDef.valueType) {
|
|
98
|
+
case 'string':
|
|
99
|
+
attr = i.string();
|
|
100
|
+
break;
|
|
101
|
+
case 'number':
|
|
102
|
+
attr = i.number();
|
|
103
|
+
break;
|
|
104
|
+
case 'boolean':
|
|
105
|
+
attr = i.boolean();
|
|
106
|
+
break;
|
|
107
|
+
case 'date':
|
|
108
|
+
attr = i.date();
|
|
109
|
+
break;
|
|
110
|
+
case 'json':
|
|
111
|
+
attr = i.json();
|
|
112
|
+
break;
|
|
113
|
+
default:
|
|
114
|
+
attr = i.json();
|
|
115
|
+
}
|
|
116
|
+
if (!attrDef.required) {
|
|
117
|
+
attr = attr.optional();
|
|
118
|
+
}
|
|
119
|
+
if (attrDef.config?.indexed) {
|
|
120
|
+
attr = attr.indexed();
|
|
121
|
+
}
|
|
122
|
+
if (attrDef.config?.unique) {
|
|
123
|
+
attr = attr.unique();
|
|
124
|
+
}
|
|
125
|
+
topicAttrs[attrName] = attr;
|
|
126
|
+
}
|
|
127
|
+
topics[topicName] = i.entity(topicAttrs);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
rooms[roomName] = {
|
|
131
|
+
presence: i.entity(presenceAttrs),
|
|
132
|
+
topics,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
const resultingSchema = i.schema({
|
|
137
|
+
entities,
|
|
138
|
+
links,
|
|
139
|
+
rooms,
|
|
140
|
+
});
|
|
141
|
+
return resultingSchema;
|
|
142
|
+
};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
export type RoomSchemaShape = {
|
|
2
|
+
[k: string]: {
|
|
3
|
+
presence?: {
|
|
4
|
+
[k: string]: any;
|
|
5
|
+
};
|
|
6
|
+
topics?: {
|
|
7
|
+
[k: string]: {
|
|
8
|
+
[k: string]: any;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
export type PresenceOpts<PresenceShape, Keys extends keyof PresenceShape> = {
|
|
14
|
+
user?: boolean;
|
|
15
|
+
peers?: string[];
|
|
16
|
+
keys?: Keys[];
|
|
17
|
+
/**
|
|
18
|
+
* If you haven't joined this room yet, initialPresence lets you set
|
|
19
|
+
* the very first presence state for the user.
|
|
20
|
+
*/
|
|
21
|
+
initialPresence?: Partial<PresenceShape>;
|
|
22
|
+
/** @deprecated use `initialPresence` */
|
|
23
|
+
initialData?: Partial<PresenceShape>;
|
|
24
|
+
};
|
|
25
|
+
type PresencePeer<PresenceShape, Keys extends keyof PresenceShape> = Pick<PresenceShape, Keys> & {
|
|
26
|
+
peerId: string;
|
|
27
|
+
};
|
|
28
|
+
export type PresenceSlice<PresenceShape, Keys extends keyof PresenceShape> = {
|
|
29
|
+
user?: PresencePeer<PresenceShape, Keys>;
|
|
30
|
+
peers: {
|
|
31
|
+
[peerId: string]: PresencePeer<PresenceShape, Keys>;
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
export type PresenceResponse<PresenceShape, Keys extends keyof PresenceShape> = PresenceSlice<PresenceShape, Keys> & {
|
|
35
|
+
isLoading: boolean;
|
|
36
|
+
error?: string;
|
|
37
|
+
};
|
|
38
|
+
export declare function buildPresenceSlice<PresenceShape, Keys extends keyof PresenceShape>(data: {
|
|
39
|
+
user?: PresenceShape;
|
|
40
|
+
peers: Record<string, PresenceShape>;
|
|
41
|
+
}, opts: PresenceOpts<PresenceShape, Keys>, userPeerId: string): PresenceSlice<PresenceShape, Keys>;
|
|
42
|
+
/**
|
|
43
|
+
* Compare two presence slices
|
|
44
|
+
* 0. compare isLoading and error
|
|
45
|
+
* 1. shallow compare user
|
|
46
|
+
* 2. compare peers keys
|
|
47
|
+
* 3. shallow compare each peer
|
|
48
|
+
*/
|
|
49
|
+
export declare function hasPresenceResponseChanged<PresenceShape, Keys extends keyof PresenceShape>(a: PresenceResponse<PresenceShape, Keys>, b: PresenceResponse<PresenceShape, Keys>): boolean;
|
|
50
|
+
export {};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { pick } from './utils/pick.js';
|
|
2
|
+
import { areObjectsShallowEqual, areObjectKeysEqual } from './utils/object.js';
|
|
3
|
+
export function buildPresenceSlice(data, opts, userPeerId) {
|
|
4
|
+
const slice = {
|
|
5
|
+
peers: {},
|
|
6
|
+
};
|
|
7
|
+
const includeUser = opts && 'user' in opts ? opts.user : true;
|
|
8
|
+
if (includeUser) {
|
|
9
|
+
const user = pick(data.user ?? {}, opts?.keys);
|
|
10
|
+
slice.user = { ...user, peerId: userPeerId };
|
|
11
|
+
}
|
|
12
|
+
for (const id of Object.keys(data.peers ?? {})) {
|
|
13
|
+
const shouldIncludeAllPeers = opts?.peers === undefined;
|
|
14
|
+
const isPeerIncluded = Array.isArray(opts?.peers) && opts?.peers.includes(id);
|
|
15
|
+
if (shouldIncludeAllPeers || isPeerIncluded) {
|
|
16
|
+
const peer = pick(data.peers[id], opts?.keys);
|
|
17
|
+
slice.peers[id] = { ...peer, peerId: id };
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return slice;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Compare two presence slices
|
|
24
|
+
* 0. compare isLoading and error
|
|
25
|
+
* 1. shallow compare user
|
|
26
|
+
* 2. compare peers keys
|
|
27
|
+
* 3. shallow compare each peer
|
|
28
|
+
*/
|
|
29
|
+
export function hasPresenceResponseChanged(a, b) {
|
|
30
|
+
if (a.isLoading !== b.isLoading)
|
|
31
|
+
return true;
|
|
32
|
+
if (a.error !== b.error)
|
|
33
|
+
return true;
|
|
34
|
+
if (a.user || b.user) {
|
|
35
|
+
if (!a.user || !b.user)
|
|
36
|
+
return true;
|
|
37
|
+
const same = areObjectsShallowEqual(a.user, b.user);
|
|
38
|
+
if (!same)
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
const sameKeys = areObjectKeysEqual(a.peers, b.peers);
|
|
42
|
+
if (!sameKeys)
|
|
43
|
+
return true;
|
|
44
|
+
for (const id of Object.keys(a.peers)) {
|
|
45
|
+
const same = areObjectsShallowEqual(a.peers[id], b.peers[id]);
|
|
46
|
+
if (!same)
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Expand } from './queryTypes.ts';
|
|
2
|
+
import type { EntityDef, ResolveEntityAttrs, RoomsDef } from './schemaTypes.ts';
|
|
3
|
+
type ExtractPresenceAttrs<PresenceEntity> = PresenceEntity extends EntityDef<any, any, any> ? ResolveEntityAttrs<PresenceEntity> : never;
|
|
4
|
+
export type PresencePeer<Schema extends {
|
|
5
|
+
rooms: RoomsDef;
|
|
6
|
+
}, RoomType extends Extract<keyof Schema['rooms'], string>> = Expand<ExtractPresenceAttrs<Schema['rooms'][RoomType]['presence']> & {
|
|
7
|
+
peerId: string;
|
|
8
|
+
}>;
|
|
9
|
+
export {};
|