@instantdb/core 0.22.89 → 0.22.90-experimental.drewh-ssr.20286580593.1

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.
Files changed (88) hide show
  1. package/__tests__/src/Reactor.test.js +1 -1
  2. package/__tests__/src/instaml.test.ts +1 -1
  3. package/__tests__/src/serializeSchema.test.ts +123 -0
  4. package/__tests__/src/store.test.ts +1 -1
  5. package/__tests__/src/transactionValidation.test.ts +1 -1
  6. package/dist/commonjs/Reactor.d.ts +13 -1
  7. package/dist/commonjs/Reactor.d.ts.map +1 -1
  8. package/dist/commonjs/Reactor.js +79 -15
  9. package/dist/commonjs/Reactor.js.map +1 -1
  10. package/dist/commonjs/SyncTable.js +3 -3
  11. package/dist/commonjs/SyncTable.js.map +1 -1
  12. package/dist/commonjs/createRouteHandler.d.ts +8 -0
  13. package/dist/commonjs/createRouteHandler.d.ts.map +1 -0
  14. package/dist/commonjs/createRouteHandler.js +57 -0
  15. package/dist/commonjs/createRouteHandler.js.map +1 -0
  16. package/dist/commonjs/framework.d.ts +77 -0
  17. package/dist/commonjs/framework.d.ts.map +1 -0
  18. package/dist/commonjs/framework.js +209 -0
  19. package/dist/commonjs/framework.js.map +1 -0
  20. package/dist/commonjs/index.d.ts +6 -2
  21. package/dist/commonjs/index.d.ts.map +1 -1
  22. package/dist/commonjs/index.js +9 -3
  23. package/dist/commonjs/index.js.map +1 -1
  24. package/dist/commonjs/instaml.js +8 -8
  25. package/dist/commonjs/instaml.js.map +1 -1
  26. package/dist/commonjs/instaql.js +2 -2
  27. package/dist/commonjs/instaql.js.map +1 -1
  28. package/dist/commonjs/parseSchemaFromJSON.d.ts +3 -0
  29. package/dist/commonjs/parseSchemaFromJSON.d.ts.map +1 -0
  30. package/dist/commonjs/parseSchemaFromJSON.js +148 -0
  31. package/dist/commonjs/parseSchemaFromJSON.js.map +1 -0
  32. package/dist/commonjs/reactorTypes.d.ts +5 -4
  33. package/dist/commonjs/reactorTypes.d.ts.map +1 -1
  34. package/dist/commonjs/reactorTypes.js.map +1 -1
  35. package/dist/commonjs/utils/{uuid.d.ts → id.d.ts} +1 -1
  36. package/dist/commonjs/utils/id.d.ts.map +1 -0
  37. package/dist/commonjs/utils/{uuid.js → id.js} +1 -1
  38. package/dist/commonjs/utils/id.js.map +1 -0
  39. package/dist/esm/Reactor.d.ts +13 -1
  40. package/dist/esm/Reactor.d.ts.map +1 -1
  41. package/dist/esm/Reactor.js +70 -6
  42. package/dist/esm/Reactor.js.map +1 -1
  43. package/dist/esm/SyncTable.js +1 -1
  44. package/dist/esm/SyncTable.js.map +1 -1
  45. package/dist/esm/createRouteHandler.d.ts +8 -0
  46. package/dist/esm/createRouteHandler.d.ts.map +1 -0
  47. package/dist/esm/createRouteHandler.js +53 -0
  48. package/dist/esm/createRouteHandler.js.map +1 -0
  49. package/dist/esm/framework.d.ts +77 -0
  50. package/dist/esm/framework.d.ts.map +1 -0
  51. package/dist/esm/framework.js +169 -0
  52. package/dist/esm/framework.js.map +1 -0
  53. package/dist/esm/index.d.ts +6 -2
  54. package/dist/esm/index.d.ts.map +1 -1
  55. package/dist/esm/index.js +6 -3
  56. package/dist/esm/index.js.map +1 -1
  57. package/dist/esm/instaml.js +1 -1
  58. package/dist/esm/instaml.js.map +1 -1
  59. package/dist/esm/instaql.js +1 -1
  60. package/dist/esm/instaql.js.map +1 -1
  61. package/dist/esm/parseSchemaFromJSON.d.ts +3 -0
  62. package/dist/esm/parseSchemaFromJSON.d.ts.map +1 -0
  63. package/dist/esm/parseSchemaFromJSON.js +144 -0
  64. package/dist/esm/parseSchemaFromJSON.js.map +1 -0
  65. package/dist/esm/reactorTypes.d.ts +5 -4
  66. package/dist/esm/reactorTypes.d.ts.map +1 -1
  67. package/dist/esm/reactorTypes.js.map +1 -1
  68. package/dist/esm/utils/{uuid.d.ts → id.d.ts} +1 -1
  69. package/dist/esm/utils/id.d.ts.map +1 -0
  70. package/dist/esm/utils/{uuid.js → id.js} +1 -1
  71. package/dist/esm/utils/id.js.map +1 -0
  72. package/dist/standalone/index.js +2697 -2377
  73. package/dist/standalone/index.umd.cjs +3 -3
  74. package/package.json +2 -2
  75. package/src/Reactor.js +85 -7
  76. package/src/SyncTable.ts +1 -1
  77. package/src/createRouteHandler.ts +44 -0
  78. package/src/framework.ts +294 -0
  79. package/src/index.ts +10 -1
  80. package/src/instaml.ts +1 -1
  81. package/src/instaql.ts +1 -1
  82. package/src/parseSchemaFromJSON.ts +176 -0
  83. package/src/reactorTypes.ts +5 -4
  84. package/dist/commonjs/utils/uuid.d.ts.map +0 -1
  85. package/dist/commonjs/utils/uuid.js.map +0 -1
  86. package/dist/esm/utils/uuid.d.ts.map +0 -1
  87. package/dist/esm/utils/uuid.js.map +0 -1
  88. /package/src/utils/{uuid.ts → id.ts} +0 -0
@@ -1,7 +1,7 @@
1
1
  import Reactor from './Reactor.js';
2
2
  import { tx, txInit, lookup, getOps, type TxChunk, type TransactionChunk } from './instatx.js';
3
3
  import weakHash from './utils/weakHash.js';
4
- import id from './utils/uuid.js';
4
+ import id from './utils/id.ts';
5
5
  import IndexedDBStorage from './IndexedDBStorage.ts';
6
6
  import { coerceToDate } from './utils/dates.js';
7
7
  import WindowNetworkListener from './WindowNetworkListener.js';
@@ -10,6 +10,8 @@ import version from './version.ts';
10
10
  import { validateQuery, QueryValidationError } from './queryValidation.ts';
11
11
  import { validateTransactions, TransactionValidationError } from './transactionValidation.ts';
12
12
  import { StorageInterface, type StorageInterfaceStoreName } from './utils/PersistedObject.ts';
13
+ import { createInstantRouteHandler } from './createRouteHandler.ts';
14
+ import { parseSchemaFromJSON } from './parseSchemaFromJSON.ts';
13
15
  import type { PresenceOpts, PresenceResponse, PresenceSlice, RoomSchemaShape } from './presence.ts';
14
16
  import type { DevtoolConfig, IDatabase, IInstantDatabase } from './coreTypes.ts';
15
17
  import type { Query, QueryResponse, InstaQLResponse, PageInfoResponse, Exactly, InstantObject, InstaQLParams, InstaQLOptions, InstaQLQueryParams, InstaQLEntity, InstaQLEntitySubquery, InstaQLResult, InstaQLFields, ValidQuery } from './queryTypes.ts';
@@ -20,6 +22,7 @@ import type { InstantDBAttr, InstantDBAttrOnDelete, InstantDBCheckedDataType, In
20
22
  import type { AttrsDefs, CardinalityKind, DataAttrDef, EntitiesDef, EntitiesWithLinks, EntityDef, RoomsDef, InstantSchemaDef, InstantGraph, LinkAttrDef, LinkDef, LinksDef, PresenceOf, ResolveAttrs, RoomsOf, TopicsOf, TopicOf, ValueTypes, InstantUnknownSchema, InstantUnknownSchemaDef, BackwardsCompatibleSchema, UpdateParams, LinkParams, CreateParams, RuleParams } from './schemaTypes.ts';
21
23
  import type { InstantRules } from './rulesTypes.ts';
22
24
  import type { UploadFileResponse, DeleteFileResponse } from './StorageAPI.ts';
25
+ import { FrameworkClient, type FrameworkConfig } from './framework.ts';
23
26
  import type { ExchangeCodeForTokenParams, SendMagicCodeParams, SendMagicCodeResponse, SignInWithIdTokenParams, VerifyMagicCodeParams, VerifyResponse } from './authAPI.ts';
24
27
  import { InstantAPIError, type InstantIssue } from './utils/fetch.js';
25
28
  import { InstantError } from './InstantError.ts';
@@ -43,6 +46,7 @@ export type InstantConfig<S extends InstantSchemaDef<any, any, any>, UseDates ex
43
46
  appId: string;
44
47
  schema?: S;
45
48
  websocketURI?: string;
49
+ cookieEndpoint?: string;
46
50
  apiURI?: string;
47
51
  devtool?: boolean | DevtoolConfig;
48
52
  verbose?: boolean;
@@ -482,5 +486,5 @@ declare function init<Schema extends InstantSchemaDef<any, any, any> = InstantUn
482
486
  * const db = init({ ... });
483
487
  */
484
488
  declare const init_experimental: typeof init;
485
- export { init, init_experimental, id, tx, txInit, lookup, validateQuery, QueryValidationError, validateTransactions, TransactionValidationError, InstantAPIError, i, getOps, coerceQuery, weakHash, coerceToDate, IndexedDBStorage, WindowNetworkListener, InstantCoreDatabase, Auth, Storage, version, InstantError, SyncTableCallbackEventType, type IDatabase, type RoomSchemaShape, type Query, type QueryResponse, type InstaQLResponse, type PageInfoResponse, type InstantObject, type Exactly, type TransactionChunk, type AuthState, type ConnectionStatus, type User, type AuthToken, type TxChunk, type SubscriptionState, type InstaQLSubscriptionState, type LifecycleSubscriptionState, type InstaQLLifecycleState, type PresenceOpts, type PresenceSlice, type PresenceResponse, type PresencePeer, type InstaQLParams, type ValidQuery, type InstaQLOptions, type InstaQLQueryParams, type InstantQuery, type InstantQueryResult, type InstantSchema, type InstantEntity, type InstantSchemaDatabase, type InstaQLFields, type AttrsDefs, type CardinalityKind, type DataAttrDef, type EntitiesDef, type InstantUnknownSchemaDef, type EntitiesWithLinks, type EntityDef, type RoomsDef, type InstantGraph, type LinkAttrDef, type LinkDef, type LinksDef, type ResolveAttrs, type ValueTypes, type RoomsOf, type PresenceOf, type TopicsOf, type TopicOf, type InstaQLEntity, type InstaQLResult, type InstaQLEntitySubquery, type InstantSchemaDef, type InstantUnknownSchema, type IInstantDatabase, type BackwardsCompatibleSchema, type InstantRules, type UpdateParams, type LinkParams, type CreateParams, type RuleParams, type InstantDBAttr, type InstantDBAttrOnDelete, type InstantDBCheckedDataType, type InstantDBIdent, type InstantDBInferredType, type ExchangeCodeForTokenParams, type SendMagicCodeParams, type SendMagicCodeResponse, type SignInWithIdTokenParams, type VerifyMagicCodeParams, type VerifyResponse, type FileOpts, type UploadFileResponse, type DeleteFileResponse, type EventSourceType, type SyncTableCallback, type SyncTableCallbackEvent, type SyncTableInitialSyncBatch, type SyncTableInitialSyncComplete, type SyncTableSyncTransaction, type SyncTableLoadFromStorage, type SyncTableSetupError, type InstantIssue, StorageInterface, type StorageInterfaceStoreName, };
489
+ export { init, init_experimental, id, tx, txInit, lookup, validateQuery, QueryValidationError, validateTransactions, parseSchemaFromJSON, TransactionValidationError, FrameworkClient, InstantAPIError, i, getOps, coerceQuery, weakHash, coerceToDate, IndexedDBStorage, WindowNetworkListener, InstantCoreDatabase, Auth, Storage, version, InstantError, SyncTableCallbackEventType, type IDatabase, type RoomSchemaShape, type Query, type QueryResponse, type InstaQLResponse, type PageInfoResponse, type InstantObject, type Exactly, type TransactionChunk, type AuthState, type ConnectionStatus, type User, type AuthToken, type TxChunk, type SubscriptionState, type InstaQLSubscriptionState, type LifecycleSubscriptionState, type InstaQLLifecycleState, type PresenceOpts, type PresenceSlice, type PresenceResponse, type PresencePeer, type InstaQLParams, type ValidQuery, type InstaQLOptions, type InstaQLQueryParams, type InstantQuery, type InstantQueryResult, type InstantSchema, type InstantEntity, type InstantSchemaDatabase, type InstaQLFields, type AttrsDefs, type CardinalityKind, type DataAttrDef, type EntitiesDef, type InstantUnknownSchemaDef, type EntitiesWithLinks, type EntityDef, type RoomsDef, type InstantGraph, type LinkAttrDef, type LinkDef, type LinksDef, type ResolveAttrs, type ValueTypes, type RoomsOf, type PresenceOf, type TopicsOf, type TopicOf, type InstaQLEntity, type InstaQLResult, type InstaQLEntitySubquery, type InstantSchemaDef, type InstantUnknownSchema, type IInstantDatabase, type BackwardsCompatibleSchema, type InstantRules, type UpdateParams, type LinkParams, type CreateParams, type RuleParams, type InstantDBAttr, type InstantDBAttrOnDelete, type InstantDBCheckedDataType, type InstantDBIdent, type InstantDBInferredType, type ExchangeCodeForTokenParams, type SendMagicCodeParams, type SendMagicCodeResponse, type SignInWithIdTokenParams, type VerifyMagicCodeParams, type VerifyResponse, type FileOpts, type UploadFileResponse, type DeleteFileResponse, type EventSourceType, type FrameworkConfig, type SyncTableCallback, type SyncTableCallbackEvent, type SyncTableInitialSyncBatch, type SyncTableInitialSyncComplete, type SyncTableSyncTransaction, type SyncTableLoadFromStorage, type SyncTableSetupError, type InstantIssue, StorageInterface, type StorageInterfaceStoreName, createInstantRouteHandler, };
486
490
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/dist/esm/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import Reactor from './Reactor.js';
2
2
  import { tx, txInit, lookup, getOps, } from './instatx.js';
3
3
  import weakHash from './utils/weakHash.js';
4
- import id from './utils/uuid.js';
4
+ import id from "./utils/id.js";
5
5
  import IndexedDBStorage from "./IndexedDBStorage.js";
6
6
  import { coerceToDate } from './utils/dates.js';
7
7
  import WindowNetworkListener from './WindowNetworkListener.js';
@@ -11,6 +11,9 @@ import version from "./version.js";
11
11
  import { validateQuery, QueryValidationError } from "./queryValidation.js";
12
12
  import { validateTransactions, TransactionValidationError, } from "./transactionValidation.js";
13
13
  import { StorageInterface, } from "./utils/PersistedObject.js";
14
+ import { createInstantRouteHandler } from "./createRouteHandler.js";
15
+ import { parseSchemaFromJSON } from "./parseSchemaFromJSON.js";
16
+ import { FrameworkClient } from "./framework.js";
14
17
  import { InstantAPIError } from './utils/fetch.js';
15
18
  import { InstantError } from "./InstantError.js";
16
19
  import { CallbackEventType as SyncTableCallbackEventType } from "./SyncTable.js";
@@ -517,7 +520,7 @@ function handleDevtool(appId, devtool) {
517
520
  const init_experimental = init;
518
521
  export {
519
522
  // bada bing bada boom
520
- init, init_experimental, id, tx, txInit, lookup, validateQuery, QueryValidationError, validateTransactions, TransactionValidationError,
523
+ init, init_experimental, id, tx, txInit, lookup, validateQuery, QueryValidationError, validateTransactions, parseSchemaFromJSON, TransactionValidationError, FrameworkClient,
521
524
  // error
522
525
  InstantAPIError,
523
526
  // cli
@@ -527,5 +530,5 @@ getOps, coerceQuery, weakHash, coerceToDate, IndexedDBStorage, WindowNetworkList
527
530
  // sync table enums
528
531
  SyncTableCallbackEventType,
529
532
  // storage (e.g. indexeddb) interface
530
- StorageInterface, };
533
+ StorageInterface, createInstantRouteHandler, };
531
534
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import Reactor from './Reactor.js';\nimport {\n tx,\n txInit,\n lookup,\n getOps,\n type TxChunk,\n type TransactionChunk,\n} from './instatx.js';\nimport weakHash from './utils/weakHash.js';\nimport id from './utils/uuid.js';\nimport IndexedDBStorage from './IndexedDBStorage.ts';\nimport { coerceToDate } from './utils/dates.js';\nimport WindowNetworkListener from './WindowNetworkListener.js';\nimport { i } from './schema.js';\nimport { createDevtool } from './devtool.js';\nimport version from './version.ts';\nimport { validateQuery, QueryValidationError } from './queryValidation.ts';\nimport {\n validateTransactions,\n TransactionValidationError,\n} from './transactionValidation.ts';\nimport {\n StorageInterface,\n type StorageInterfaceStoreName,\n} from './utils/PersistedObject.ts';\n\nimport type {\n PresenceOpts,\n PresenceResponse,\n PresenceSlice,\n RoomSchemaShape,\n} from './presence.ts';\nimport type {\n DevtoolConfig,\n IDatabase,\n IInstantDatabase,\n StrictDevtoolConfig,\n} from './coreTypes.ts';\nimport type {\n Query,\n QueryResponse,\n InstaQLResponse,\n PageInfoResponse,\n Exactly,\n InstantObject,\n InstaQLParams,\n InstaQLOptions,\n InstaQLQueryParams,\n InstaQLEntity,\n InstaQLEntitySubquery,\n InstaQLResult,\n InstaQLFields,\n ValidQuery,\n} from './queryTypes.ts';\nimport type { PresencePeer } from './presenceTypes.ts';\nimport type {\n AuthState,\n User,\n AuthResult,\n ConnectionStatus,\n} from './clientTypes.ts';\nimport type {\n InstantQuery,\n InstantQueryResult,\n InstantSchema,\n InstantEntity,\n InstantSchemaDatabase,\n} from './helperTypes.ts';\nimport type {\n InstantDBAttr,\n InstantDBAttrOnDelete,\n InstantDBCheckedDataType,\n InstantDBIdent,\n InstantDBInferredType,\n} from './attrTypes.ts';\nimport type {\n AttrsDefs,\n CardinalityKind,\n DataAttrDef,\n EntitiesDef,\n EntitiesWithLinks,\n EntityDef,\n RoomsDef,\n InstantSchemaDef,\n InstantGraph,\n LinkAttrDef,\n LinkDef,\n LinksDef,\n PresenceOf,\n ResolveAttrs,\n RoomsOf,\n TopicsOf,\n TopicOf,\n ValueTypes,\n InstantUnknownSchema,\n InstantUnknownSchemaDef,\n BackwardsCompatibleSchema,\n UpdateParams,\n LinkParams,\n CreateParams,\n RuleParams,\n} from './schemaTypes.ts';\nimport type { InstantRules } from './rulesTypes.ts';\nimport type { UploadFileResponse, DeleteFileResponse } from './StorageAPI.ts';\n\nimport type {\n ExchangeCodeForTokenParams,\n SendMagicCodeParams,\n SendMagicCodeResponse,\n SignInWithIdTokenParams,\n VerifyMagicCodeParams,\n VerifyResponse,\n} from './authAPI.ts';\n\nimport { InstantAPIError, type InstantIssue } from './utils/fetch.js';\nimport { InstantError } from './InstantError.ts';\nimport { EventSourceType } from './Connection.ts';\nimport { CallbackEventType as SyncTableCallbackEventType } from './SyncTable.ts';\nimport type {\n SyncTableCallback,\n CallbackEvent as SyncTableCallbackEvent,\n InitialSyncBatch as SyncTableInitialSyncBatch,\n InitialSyncComplete as SyncTableInitialSyncComplete,\n SyncTransaction as SyncTableSyncTransaction,\n LoadFromStorage as SyncTableLoadFromStorage,\n SetupError as SyncTableSetupError,\n} from './SyncTable.ts';\n\nconst defaultOpenDevtool = true;\n\n// types\n\ntype ExactlyOne<T> = {\n [K in keyof T]: Pick<T, K> & Partial<Record<Exclude<keyof T, K>, never>>;\n}[keyof T];\n\nexport type Config = {\n appId: string;\n websocketURI?: string;\n apiURI?: string;\n devtool?: boolean | DevtoolConfig;\n verbose?: boolean;\n queryCacheLimit?: number;\n useDateObjects: boolean;\n disableValidation?: boolean;\n};\n\nexport type InstantConfig<\n S extends InstantSchemaDef<any, any, any>,\n UseDates extends boolean = false,\n> = {\n appId: string;\n schema?: S;\n websocketURI?: string;\n apiURI?: string;\n devtool?: boolean | DevtoolConfig;\n verbose?: boolean;\n queryCacheLimit?: number;\n useDateObjects: UseDates;\n disableValidation?: boolean;\n};\n\nexport type ConfigWithSchema<S extends InstantGraph<any, any>> = Config & {\n schema: S;\n};\n\nexport type TransactionResult = {\n status: 'synced' | 'enqueued';\n clientId: string;\n};\n\nexport type PublishTopic<TopicsByKey> = <Key extends keyof TopicsByKey>(\n topic: Key,\n data: TopicsByKey[Key],\n) => void;\n\nexport type SubscribeTopic<PresenceShape, TopicsByKey> = <\n Key extends keyof TopicsByKey,\n>(\n topic: Key,\n onEvent: (event: TopicsByKey[Key], peer: PresenceShape) => void,\n) => () => void;\n\nexport type GetPresence<PresenceShape> = <Keys extends keyof PresenceShape>(\n opts: PresenceOpts<PresenceShape, Keys>,\n) => PresenceResponse<PresenceShape, Keys> | null;\n\nexport type SubscribePresence<PresenceShape> = <\n Keys extends keyof PresenceShape,\n>(\n opts: PresenceOpts<PresenceShape, Keys>,\n onChange: (slice: PresenceResponse<PresenceShape, Keys>) => void,\n) => () => void;\n\nexport type RoomHandle<PresenceShape, TopicsByKey> = {\n leaveRoom: () => void;\n publishTopic: PublishTopic<TopicsByKey>;\n subscribeTopic: SubscribeTopic<PresenceShape, TopicsByKey>;\n publishPresence: (data: Partial<PresenceShape>) => void;\n getPresence: GetPresence<PresenceShape>;\n subscribePresence: SubscribePresence<PresenceShape>;\n};\n\ntype AuthToken = string;\n\ntype SubscriptionState<Q, Schema, WithCardinalityInference extends boolean> =\n | { error: { message: string }; data: undefined; pageInfo: undefined }\n | {\n error: undefined;\n data: QueryResponse<Q, Schema, WithCardinalityInference>;\n pageInfo: PageInfoResponse<Q>;\n };\n\ntype InstaQLSubscriptionState<Schema, Q, UseDates extends boolean> =\n | { error: { message: string }; data: undefined; pageInfo: undefined }\n | {\n error: undefined;\n data: InstaQLResponse<Schema, Q, UseDates>;\n pageInfo: PageInfoResponse<Q>;\n };\n\ntype LifecycleSubscriptionState<\n Q,\n Schema,\n WithCardinalityInference extends boolean,\n> = SubscriptionState<Q, Schema, WithCardinalityInference> & {\n isLoading: boolean;\n};\n\ntype InstaQLLifecycleState<Schema, Q, UseDates extends boolean = false> =\n | (InstaQLSubscriptionState<Schema, Q, UseDates> & {\n isLoading: boolean;\n })\n | {\n isLoading: true;\n data: undefined;\n pageInfo: undefined;\n error: undefined;\n };\n\ntype UnsubscribeFn = () => void;\n\n// consts\n\nconst defaultConfig = {\n apiURI: 'https://api.instantdb.com',\n websocketURI: 'wss://api.instantdb.com/runtime/session',\n};\n\n// hmr\nfunction initSchemaHashStore(): WeakMap<any, string> {\n globalThis.__instantDbSchemaHashStore =\n globalThis.__instantDbSchemaHashStore ?? new WeakMap<any, string>();\n return globalThis.__instantDbSchemaHashStore;\n}\n\nfunction initGlobalInstantCoreStore(): Record<string, any> {\n globalThis.__instantDbStore = globalThis.__instantDbStore ?? {};\n return globalThis.__instantDbStore;\n}\n\nfunction reactorKey(config: InstantConfig<any, boolean>): string {\n // @ts-expect-error\n const adminToken = config.__adminToken;\n return (\n config.appId +\n '_' +\n (config.websocketURI || 'default_ws_uri') +\n '_' +\n (config.apiURI || 'default_api_uri') +\n '_' +\n (adminToken || 'client_only') +\n '_' +\n config.useDateObjects\n );\n}\n\nconst globalInstantCoreStore = initGlobalInstantCoreStore();\nconst schemaHashStore = initSchemaHashStore();\n\ntype SignoutOpts = {\n invalidateToken?: boolean;\n};\n\n/**\n * Functions to log users in and out.\n *\n * @see https://instantdb.com/docs/auth\n */\nclass Auth {\n constructor(private db: Reactor) {}\n\n /**\n * Sends a magic code to the user's email address.\n *\n * Once you send the magic code, see {@link auth.signInWithMagicCode} to let the\n * user verify.\n *\n * @see https://instantdb.com/docs/auth\n * @example\n * db.auth.sendMagicCode({email: \"example@gmail.com\"})\n * .catch((err) => console.error(err.body?.message))\n */\n sendMagicCode = (\n params: SendMagicCodeParams,\n ): Promise<SendMagicCodeResponse> => {\n return this.db.sendMagicCode(params);\n };\n\n /**\n * Verify a magic code that was sent to the user's email address.\n *\n * @see https://instantdb.com/docs/auth\n *\n * @example\n * db.auth.signInWithMagicCode({email: \"example@gmail.com\", code: \"123456\"})\n * .catch((err) => console.error(err.body?.message))\n */\n signInWithMagicCode = (\n params: VerifyMagicCodeParams,\n ): Promise<VerifyResponse> => {\n return this.db.signInWithMagicCode(params);\n };\n\n /**\n * Sign in a user with a refresh token\n *\n * @see https://instantdb.com/docs/backend#frontend-auth-sign-in-with-token\n *\n * @example\n * // Get the token from your backend\n * const token = await fetch('/signin', ...);\n * //Sign in\n * db.auth.signInWithToken(token);\n */\n signInWithToken = (token: AuthToken): Promise<VerifyResponse> => {\n return this.db.signInWithCustomToken(token);\n };\n\n /**\n * Sign in as guest, creating a new user without email\n *\n * @see https://instantdb.com/docs/auth\n *\n * @example\n * db.auth.signInAsGuest();\n */\n signInAsGuest = (): Promise<VerifyResponse> => {\n return this.db.signInAsGuest();\n };\n\n /**\n * Create an authorization url to sign in with an external provider.\n *\n * @see https://instantdb.com/docs/auth\n *\n * @example\n * // Get the authorization url from your backend\n * const url = db.auth.createAuthorizationUrl({\n * clientName: \"google\",\n * redirectURL: window.location.href,\n * });\n *\n * // Put it in a sign in link\n * <a href={url}>Log in with Google</a>\n */\n createAuthorizationURL = (params: {\n clientName: string;\n redirectURL: string;\n }): string => {\n return this.db.createAuthorizationURL(params);\n };\n\n /**\n * Sign in with the id_token from an external provider like Google\n *\n * @see https://instantdb.com/docs/auth\n * @example\n * db.auth\n * .signInWithIdToken({\n * // Token from external service\n * idToken: id_token,\n * // The name you gave the client when you registered it with Instant\n * clientName: \"google\",\n * // The nonce, if any, that you used when you initiated the auth flow\n * // with the external service.\n * nonce: your_nonce\n * })\n * .catch((err) => console.error(err.body?.message));\n *\n */\n signInWithIdToken = (\n params: SignInWithIdTokenParams,\n ): Promise<VerifyResponse> => {\n return this.db.signInWithIdToken(params);\n };\n\n /**\n * Sign in with the id_token from an external provider like Google\n *\n * @see https://instantdb.com/docs/auth\n * @example\n * db.auth\n * .exchangeOAuthCode({\n * // code received in redirect from OAuth callback\n * code: code\n * // The PKCE code_verifier, if any, that you used when you\n * // initiated the auth flow\n * codeVerifier: your_code_verifier\n * })\n * .catch((err) => console.error(err.body?.message));\n *\n */\n exchangeOAuthCode = (params: ExchangeCodeForTokenParams) => {\n return this.db.exchangeCodeForToken(params);\n };\n\n /**\n * OpenID Discovery path for use with tools like\n * expo-auth-session that use auto-discovery of\n * OAuth parameters.\n *\n * @see https://instantdb.com/docs/auth\n * @example\n * const discovery = useAutoDiscovery(\n * db.auth.issuerURI()\n * );\n */\n issuerURI = (): string => {\n return this.db.issuerURI();\n };\n\n /**\n * Sign out the current user\n */\n signOut = (opts: SignoutOpts = { invalidateToken: true }): Promise<void> => {\n return this.db.signOut(opts);\n };\n}\n\ntype FileOpts = {\n contentType?: string;\n contentDisposition?: string;\n fileSize?: number; // Required for streaming uploads\n};\n\n/**\n * Functions to manage file storage.\n */\nclass Storage {\n constructor(private db: Reactor) {}\n\n /**\n * Uploads file at the provided path.\n *\n * @see https://instantdb.com/docs/storage\n * @example\n * const [file] = e.target.files; // result of file input\n * const data = await db.storage.uploadFile('photos/demo.png', file);\n */\n uploadFile = (\n path: string,\n file: File | Blob,\n opts: FileOpts = {},\n ): Promise<UploadFileResponse> => {\n return this.db.uploadFile(path, file, opts);\n };\n\n /**\n * Deletes a file by path name.\n *\n * @see https://instantdb.com/docs/storage\n * @example\n * await db.storage.delete('photos/demo.png');\n */\n delete = (pathname: string) => {\n return this.db.deleteFile(pathname);\n };\n\n // Deprecated Storage API (Jan 2025)\n // ---------------------------------\n\n /**\n * @deprecated. Use `db.storage.uploadFile` instead\n * remove in the future.\n */\n upload = (pathname: string, file: File) => {\n return this.db.upload(pathname, file);\n };\n\n /**\n * @deprecated Use `db.storage.uploadFile` instead\n */\n put = this.upload;\n\n /**\n * @deprecated. getDownloadUrl will be removed in the future.\n * Use `useQuery` instead to query and fetch for valid urls\n *\n * db.useQuery({\n * $files: {\n * $: {\n * where: {\n * path: \"moop.png\"\n * }\n * }\n * }\n * })\n */\n getDownloadUrl = (pathname: string) => {\n return this.db.getDownloadUrl(pathname);\n };\n}\n\n// util\n\nfunction coerceQuery(o: any) {\n // stringify and parse to remove undefined values\n return JSON.parse(JSON.stringify(o));\n}\n\nclass InstantCoreDatabase<\n Schema extends InstantSchemaDef<any, any, any>,\n UseDates extends boolean = false,\n> implements IInstantDatabase<Schema>\n{\n public _reactor: Reactor<RoomsOf<Schema>>;\n public auth: Auth;\n public storage: Storage;\n\n public tx = txInit<Schema>();\n\n constructor(reactor: Reactor<RoomsOf<Schema>>) {\n this._reactor = reactor;\n this.auth = new Auth(this._reactor);\n this.storage = new Storage(this._reactor);\n }\n\n /**\n * Use this to write data! You can create, update, delete, and link objects\n *\n * @see https://instantdb.com/docs/instaml\n *\n * @example\n * // Create a new object in the `goals` namespace\n * const goalId = id();\n * db.transact(db.tx.goals[goalId].update({title: \"Get fit\"}))\n *\n * // Update the title\n * db.transact(db.tx.goals[goalId].update({title: \"Get super fit\"}))\n *\n * // Delete it\n * db.transact(db.tx.goals[goalId].delete())\n *\n * // Or create an association:\n * todoId = id();\n * db.transact([\n * db.tx.todos[todoId].update({ title: 'Go on a run' }),\n * db.tx.goals[goalId].link({todos: todoId}),\n * ])\n */\n transact(\n chunks: TransactionChunk<any, any> | TransactionChunk<any, any>[],\n ): Promise<TransactionResult> {\n return this._reactor.pushTx(chunks);\n }\n\n getLocalId(name: string): Promise<string> {\n return this._reactor.getLocalId(name);\n }\n\n /**\n * Use this to query your data!\n *\n * @see https://instantdb.com/docs/instaql\n *\n * @example\n * // listen to all goals\n * db.subscribeQuery({ goals: {} }, (resp) => {\n * console.log(resp.data.goals)\n * })\n *\n * // goals where the title is \"Get Fit\"\n * db.subscribeQuery(\n * { goals: { $: { where: { title: \"Get Fit\" } } } },\n * (resp) => {\n * console.log(resp.data.goals)\n * }\n * )\n *\n * // all goals, _alongside_ their todos\n * db.subscribeQuery({ goals: { todos: {} } }, (resp) => {\n * console.log(resp.data.goals)\n * });\n */\n subscribeQuery<\n Q extends ValidQuery<Q, Schema>,\n UseDatesLocal extends boolean = UseDates,\n >(\n query: Q,\n cb: (resp: InstaQLSubscriptionState<Schema, Q, UseDatesLocal>) => void,\n opts?: InstaQLOptions,\n ) {\n return this._reactor.subscribeQuery(query, cb, opts);\n }\n\n /**\n * Listen for the logged in state. This is useful\n * for deciding when to show a login screen.\n *\n * @see https://instantdb.com/docs/auth\n * @example\n * const unsub = db.subscribeAuth((auth) => {\n * if (auth.user) {\n * console.log('logged in as', auth.user.email)\n * } else {\n * console.log('logged out')\n * }\n * })\n */\n subscribeAuth(cb: (auth: AuthResult) => void): UnsubscribeFn {\n return this._reactor.subscribeAuth(cb);\n }\n\n /**\n * One time query for the logged in state. This is useful\n * for scenarios where you want to know the current auth\n * state without subscribing to changes.\n *\n * @see https://instantdb.com/docs/auth\n * @example\n * const user = await db.getAuth();\n * console.log('logged in as', user.email)\n */\n getAuth(): Promise<User | null> {\n return this._reactor.getAuth();\n }\n\n /**\n * Listen for connection status changes to Instant. This is useful\n * for building things like connectivity indicators\n *\n * @see https://www.instantdb.com/docs/patterns#connection-status\n * @example\n * const unsub = db.subscribeConnectionStatus((status) => {\n * const connectionState =\n * status === 'connecting' || status === 'opened'\n * ? 'authenticating'\n * : status === 'authenticated'\n * ? 'connected'\n * : status === 'closed'\n * ? 'closed'\n * : status === 'errored'\n * ? 'errored'\n * : 'unexpected state';\n *\n * console.log('Connection status:', connectionState);\n * });\n */\n subscribeConnectionStatus(\n cb: (status: ConnectionStatus) => void,\n ): UnsubscribeFn {\n return this._reactor.subscribeConnectionStatus(cb);\n }\n\n /**\n * Join a room to publish and subscribe to topics and presence.\n *\n * @see https://instantdb.com/docs/presence-and-topics\n * @example\n * // init\n * const db = init();\n * const room = db.joinRoom(roomType, roomId);\n * // usage\n * const unsubscribeTopic = room.subscribeTopic(\"foo\", console.log);\n * const unsubscribePresence = room.subscribePresence({}, console.log);\n * room.publishTopic(\"hello\", { message: \"hello world!\" });\n * room.publishPresence({ name: \"joe\" });\n * // later\n * unsubscribePresence();\n * unsubscribeTopic();\n * room.leaveRoom();\n */\n joinRoom<RoomType extends keyof RoomsOf<Schema>>(\n roomType: RoomType = '_defaultRoomType' as RoomType,\n roomId: string = '_defaultRoomId',\n opts?: {\n initialPresence?: Partial<PresenceOf<Schema, RoomType>>;\n },\n ): RoomHandle<PresenceOf<Schema, RoomType>, TopicsOf<Schema, RoomType>> {\n const leaveRoom = this._reactor.joinRoom(roomId, opts?.initialPresence);\n\n return {\n leaveRoom,\n subscribeTopic: (topic, onEvent) =>\n this._reactor.subscribeTopic(roomId, topic, onEvent),\n subscribePresence: (opts, onChange) =>\n this._reactor.subscribePresence(roomType, roomId, opts, onChange),\n publishTopic: (topic, data) =>\n this._reactor.publishTopic({ roomType, roomId, topic, data }),\n publishPresence: (data) =>\n this._reactor.publishPresence(roomType, roomId, data),\n getPresence: (opts) => this._reactor.getPresence(roomType, roomId, opts),\n };\n }\n\n shutdown() {\n delete globalInstantCoreStore[reactorKey(this._reactor.config)];\n this._reactor.shutdown();\n }\n\n /**\n * Use this for one-off queries.\n * Returns local data if available, otherwise fetches from the server.\n * Because we want to avoid stale data, this method will throw an error\n * if the user is offline or there is no active connection to the server.\n *\n * @see https://instantdb.com/docs/instaql\n *\n * @example\n *\n * const resp = await db.queryOnce({ goals: {} });\n * console.log(resp.data.goals)\n */\n queryOnce<Q extends ValidQuery<Q, Schema>>(\n query: Q,\n opts?: InstaQLOptions,\n ): Promise<{\n data: InstaQLResponse<Schema, Q, UseDates>;\n pageInfo: PageInfoResponse<Q>;\n }> {\n return this._reactor.queryOnce(query, opts);\n }\n\n /**\n * @deprecated This is an experimental function that is not yet ready for production use.\n * Use this function to sync an entire namespace.\n * It has many limitations that will be removed in the future:\n * 1. Must be used with an admin token\n * 2. Does not support permissions\n * 3. Does not support where clauses\n * 4. Does not support links\n * It also does not support multiple top-level namespaces. For example,\n * {posts: {}, users: {}} is invalid. Only `posts` or `users` is allowed, but not both.\n */\n _syncTableExperimental<Q extends ValidQuery<Q, Schema>>(\n query: ExactlyOne<Q>,\n cb: SyncTableCallback<Schema, Q, UseDates>,\n ): (\n opts?: { keepSubscription: boolean | null | undefined } | null | undefined,\n ) => void {\n return this._reactor.subscribeTable(query, cb);\n }\n}\n\nfunction schemaHash(schema?: InstantSchemaDef<any, any, any>): string {\n if (!schema) {\n return '0';\n }\n\n const fromStore = schemaHashStore.get(schema);\n if (fromStore) {\n return fromStore;\n }\n const hash = weakHash(schema);\n schemaHashStore.set(schema, hash);\n return hash;\n}\n\nfunction schemaChanged(\n existingClient: InstantCoreDatabase<any, boolean>,\n newSchema?: InstantSchemaDef<any, any, any>,\n): boolean {\n return (\n schemaHash(existingClient._reactor.config.schema) !== schemaHash(newSchema)\n );\n}\n\n/**\n *\n * The first step: init your application!\n *\n * Visit https://instantdb.com/dash to get your `appId` :)\n *\n * @example\n * import { init } from \"@instantdb/core\"\n *\n * const db = init({ appId: \"my-app-id\" })\n *\n * // You can also provide a schema for type safety and editor autocomplete!\n *\n * import { init } from \"@instantdb/core\"\n * import schema from \"\"../instant.schema.ts\";\n *\n * const db = init({ appId: \"my-app-id\", schema })\n *\n * // To learn more: https://instantdb.com/docs/modeling-data\n */\nfunction init<\n Schema extends InstantSchemaDef<any, any, any> = InstantUnknownSchema,\n UseDates extends boolean = false,\n>(\n // Allows config with missing `useDateObjects`, but keeps `UseDates`\n // as a non-nullable in the InstantConfig type.\n config: Omit<InstantConfig<Schema, UseDates>, 'useDateObjects'> & {\n useDateObjects?: UseDates;\n },\n Storage?: any,\n NetworkListener?: any,\n versions?: { [key: string]: string },\n EventSourceImpl?: any,\n): InstantCoreDatabase<Schema, UseDates> {\n const configStrict = {\n ...config,\n useDateObjects: (config.useDateObjects ?? false) as UseDates,\n };\n const existingClient = globalInstantCoreStore[\n reactorKey(configStrict)\n ] as InstantCoreDatabase<any, UseDates>;\n\n if (existingClient) {\n if (schemaChanged(existingClient, configStrict.schema)) {\n existingClient._reactor.updateSchema(configStrict.schema);\n }\n return existingClient;\n }\n\n const reactor = new Reactor<RoomsOf<Schema>>(\n {\n ...defaultConfig,\n ...configStrict,\n cardinalityInference: configStrict.schema ? true : false,\n },\n Storage || IndexedDBStorage,\n NetworkListener || WindowNetworkListener,\n { ...(versions || {}), '@instantdb/core': version },\n EventSourceImpl,\n );\n\n const client = new InstantCoreDatabase<any, UseDates>(reactor);\n globalInstantCoreStore[reactorKey(configStrict)] = client;\n\n handleDevtool(configStrict.appId, configStrict.devtool);\n\n return client;\n}\n\nfunction handleDevtool(\n appId: string,\n devtool: boolean | DevtoolConfig | null | undefined,\n) {\n if (\n typeof window === 'undefined' ||\n typeof window.location === 'undefined' ||\n typeof document === 'undefined'\n ) {\n return;\n }\n\n if (typeof devtool === 'boolean' && !devtool) {\n return;\n }\n\n const config: StrictDevtoolConfig = {\n position: 'bottom-right' as const,\n allowedHosts: ['localhost'],\n ...(typeof devtool === 'object' ? devtool : {}),\n };\n\n if (!config.allowedHosts.includes(window.location.hostname)) {\n return;\n }\n\n createDevtool(appId, config);\n}\n\n/**\n * @deprecated\n * `init_experimental` is deprecated. You can replace it with `init`.\n *\n * @example\n *\n * // Before\n * import { init_experimental } from \"@instantdb/core\"\n * const db = init_experimental({ ... });\n *\n * // After\n * import { init } from \"@instantdb/core\"\n * const db = init({ ... });\n */\nconst init_experimental = init;\n\nexport {\n // bada bing bada boom\n init,\n init_experimental,\n id,\n tx,\n txInit,\n lookup,\n validateQuery,\n QueryValidationError,\n validateTransactions,\n TransactionValidationError,\n\n // error\n InstantAPIError,\n\n // cli\n i,\n\n // util\n getOps,\n coerceQuery,\n weakHash,\n coerceToDate,\n IndexedDBStorage,\n WindowNetworkListener,\n InstantCoreDatabase,\n Auth,\n Storage,\n version,\n InstantError,\n\n // sync table enums\n SyncTableCallbackEventType,\n\n // og types\n type IDatabase,\n type RoomSchemaShape,\n type Query,\n type QueryResponse,\n type InstaQLResponse,\n type PageInfoResponse,\n type InstantObject,\n type Exactly,\n type TransactionChunk,\n type AuthState,\n type ConnectionStatus,\n type User,\n type AuthToken,\n type TxChunk,\n type SubscriptionState,\n type InstaQLSubscriptionState,\n type LifecycleSubscriptionState,\n type InstaQLLifecycleState,\n\n // presence types\n type PresenceOpts,\n type PresenceSlice,\n type PresenceResponse,\n type PresencePeer,\n\n // new query types\n type InstaQLParams,\n type ValidQuery,\n type InstaQLOptions,\n type InstaQLQueryParams,\n type InstantQuery,\n type InstantQueryResult,\n type InstantSchema,\n type InstantEntity,\n type InstantSchemaDatabase,\n type InstaQLFields,\n\n // schema types\n type AttrsDefs,\n type CardinalityKind,\n type DataAttrDef,\n type EntitiesDef,\n type InstantUnknownSchemaDef,\n type EntitiesWithLinks,\n type EntityDef,\n type RoomsDef,\n type InstantGraph,\n type LinkAttrDef,\n type LinkDef,\n type LinksDef,\n type ResolveAttrs,\n type ValueTypes,\n type RoomsOf,\n type PresenceOf,\n type TopicsOf,\n type TopicOf,\n type InstaQLEntity,\n type InstaQLResult,\n type InstaQLEntitySubquery,\n type InstantSchemaDef,\n type InstantUnknownSchema,\n type IInstantDatabase,\n type BackwardsCompatibleSchema,\n type InstantRules,\n type UpdateParams,\n type LinkParams,\n type CreateParams,\n type RuleParams,\n\n // attr types\n type InstantDBAttr,\n type InstantDBAttrOnDelete,\n type InstantDBCheckedDataType,\n type InstantDBIdent,\n type InstantDBInferredType,\n\n // auth types\n type ExchangeCodeForTokenParams,\n type SendMagicCodeParams,\n type SendMagicCodeResponse,\n type SignInWithIdTokenParams,\n type VerifyMagicCodeParams,\n type VerifyResponse,\n\n // storage types\n type FileOpts,\n type UploadFileResponse,\n type DeleteFileResponse,\n\n // SSE\n type EventSourceType,\n\n // sync table types\n type SyncTableCallback,\n type SyncTableCallbackEvent,\n type SyncTableInitialSyncBatch,\n type SyncTableInitialSyncComplete,\n type SyncTableSyncTransaction,\n type SyncTableLoadFromStorage,\n type SyncTableSetupError,\n\n // error types\n type InstantIssue,\n\n // storage (e.g. indexeddb) interface\n StorageInterface,\n type StorageInterfaceStoreName,\n};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import Reactor from './Reactor.js';\nimport {\n tx,\n txInit,\n lookup,\n getOps,\n type TxChunk,\n type TransactionChunk,\n} from './instatx.js';\nimport weakHash from './utils/weakHash.js';\nimport id from './utils/id.ts';\nimport IndexedDBStorage from './IndexedDBStorage.ts';\nimport { coerceToDate } from './utils/dates.js';\nimport WindowNetworkListener from './WindowNetworkListener.js';\nimport { i } from './schema.js';\nimport { createDevtool } from './devtool.js';\nimport version from './version.ts';\nimport { validateQuery, QueryValidationError } from './queryValidation.ts';\nimport {\n validateTransactions,\n TransactionValidationError,\n} from './transactionValidation.ts';\n\nimport {\n StorageInterface,\n type StorageInterfaceStoreName,\n} from './utils/PersistedObject.ts';\nimport { createInstantRouteHandler } from './createRouteHandler.ts';\nimport { parseSchemaFromJSON } from './parseSchemaFromJSON.ts';\n\nimport type {\n PresenceOpts,\n PresenceResponse,\n PresenceSlice,\n RoomSchemaShape,\n} from './presence.ts';\nimport type {\n DevtoolConfig,\n IDatabase,\n IInstantDatabase,\n StrictDevtoolConfig,\n} from './coreTypes.ts';\nimport type {\n Query,\n QueryResponse,\n InstaQLResponse,\n PageInfoResponse,\n Exactly,\n InstantObject,\n InstaQLParams,\n InstaQLOptions,\n InstaQLQueryParams,\n InstaQLEntity,\n InstaQLEntitySubquery,\n InstaQLResult,\n InstaQLFields,\n ValidQuery,\n} from './queryTypes.ts';\nimport type { PresencePeer } from './presenceTypes.ts';\nimport type {\n AuthState,\n User,\n AuthResult,\n ConnectionStatus,\n} from './clientTypes.ts';\nimport type {\n InstantQuery,\n InstantQueryResult,\n InstantSchema,\n InstantEntity,\n InstantSchemaDatabase,\n} from './helperTypes.ts';\nimport type {\n InstantDBAttr,\n InstantDBAttrOnDelete,\n InstantDBCheckedDataType,\n InstantDBIdent,\n InstantDBInferredType,\n} from './attrTypes.ts';\nimport type {\n AttrsDefs,\n CardinalityKind,\n DataAttrDef,\n EntitiesDef,\n EntitiesWithLinks,\n EntityDef,\n RoomsDef,\n InstantSchemaDef,\n InstantGraph,\n LinkAttrDef,\n LinkDef,\n LinksDef,\n PresenceOf,\n ResolveAttrs,\n RoomsOf,\n TopicsOf,\n TopicOf,\n ValueTypes,\n InstantUnknownSchema,\n InstantUnknownSchemaDef,\n BackwardsCompatibleSchema,\n UpdateParams,\n LinkParams,\n CreateParams,\n RuleParams,\n} from './schemaTypes.ts';\nimport type { InstantRules } from './rulesTypes.ts';\nimport type { UploadFileResponse, DeleteFileResponse } from './StorageAPI.ts';\nimport { FrameworkClient, type FrameworkConfig } from './framework.ts';\n\nimport type {\n ExchangeCodeForTokenParams,\n SendMagicCodeParams,\n SendMagicCodeResponse,\n SignInWithIdTokenParams,\n VerifyMagicCodeParams,\n VerifyResponse,\n} from './authAPI.ts';\n\nimport { InstantAPIError, type InstantIssue } from './utils/fetch.js';\nimport { InstantError } from './InstantError.ts';\nimport { EventSourceType } from './Connection.ts';\nimport { CallbackEventType as SyncTableCallbackEventType } from './SyncTable.ts';\nimport type {\n SyncTableCallback,\n CallbackEvent as SyncTableCallbackEvent,\n InitialSyncBatch as SyncTableInitialSyncBatch,\n InitialSyncComplete as SyncTableInitialSyncComplete,\n SyncTransaction as SyncTableSyncTransaction,\n LoadFromStorage as SyncTableLoadFromStorage,\n SetupError as SyncTableSetupError,\n} from './SyncTable.ts';\n\nconst defaultOpenDevtool = true;\n\n// types\n\ntype ExactlyOne<T> = {\n [K in keyof T]: Pick<T, K> & Partial<Record<Exclude<keyof T, K>, never>>;\n}[keyof T];\n\nexport type Config = {\n appId: string;\n websocketURI?: string;\n apiURI?: string;\n devtool?: boolean | DevtoolConfig;\n verbose?: boolean;\n queryCacheLimit?: number;\n useDateObjects: boolean;\n disableValidation?: boolean;\n};\n\nexport type InstantConfig<\n S extends InstantSchemaDef<any, any, any>,\n UseDates extends boolean = false,\n> = {\n appId: string;\n schema?: S;\n websocketURI?: string;\n cookieEndpoint?: string;\n apiURI?: string;\n devtool?: boolean | DevtoolConfig;\n verbose?: boolean;\n queryCacheLimit?: number;\n useDateObjects: UseDates;\n disableValidation?: boolean;\n};\n\nexport type ConfigWithSchema<S extends InstantGraph<any, any>> = Config & {\n schema: S;\n};\n\nexport type TransactionResult = {\n status: 'synced' | 'enqueued';\n clientId: string;\n};\n\nexport type PublishTopic<TopicsByKey> = <Key extends keyof TopicsByKey>(\n topic: Key,\n data: TopicsByKey[Key],\n) => void;\n\nexport type SubscribeTopic<PresenceShape, TopicsByKey> = <\n Key extends keyof TopicsByKey,\n>(\n topic: Key,\n onEvent: (event: TopicsByKey[Key], peer: PresenceShape) => void,\n) => () => void;\n\nexport type GetPresence<PresenceShape> = <Keys extends keyof PresenceShape>(\n opts: PresenceOpts<PresenceShape, Keys>,\n) => PresenceResponse<PresenceShape, Keys> | null;\n\nexport type SubscribePresence<PresenceShape> = <\n Keys extends keyof PresenceShape,\n>(\n opts: PresenceOpts<PresenceShape, Keys>,\n onChange: (slice: PresenceResponse<PresenceShape, Keys>) => void,\n) => () => void;\n\nexport type RoomHandle<PresenceShape, TopicsByKey> = {\n leaveRoom: () => void;\n publishTopic: PublishTopic<TopicsByKey>;\n subscribeTopic: SubscribeTopic<PresenceShape, TopicsByKey>;\n publishPresence: (data: Partial<PresenceShape>) => void;\n getPresence: GetPresence<PresenceShape>;\n subscribePresence: SubscribePresence<PresenceShape>;\n};\n\ntype AuthToken = string;\n\ntype SubscriptionState<Q, Schema, WithCardinalityInference extends boolean> =\n | { error: { message: string }; data: undefined; pageInfo: undefined }\n | {\n error: undefined;\n data: QueryResponse<Q, Schema, WithCardinalityInference>;\n pageInfo: PageInfoResponse<Q>;\n };\n\ntype InstaQLSubscriptionState<Schema, Q, UseDates extends boolean> =\n | { error: { message: string }; data: undefined; pageInfo: undefined }\n | {\n error: undefined;\n data: InstaQLResponse<Schema, Q, UseDates>;\n pageInfo: PageInfoResponse<Q>;\n };\n\ntype LifecycleSubscriptionState<\n Q,\n Schema,\n WithCardinalityInference extends boolean,\n> = SubscriptionState<Q, Schema, WithCardinalityInference> & {\n isLoading: boolean;\n};\n\ntype InstaQLLifecycleState<Schema, Q, UseDates extends boolean = false> =\n | (InstaQLSubscriptionState<Schema, Q, UseDates> & {\n isLoading: boolean;\n })\n | {\n isLoading: true;\n data: undefined;\n pageInfo: undefined;\n error: undefined;\n };\n\ntype UnsubscribeFn = () => void;\n\n// consts\n\nconst defaultConfig = {\n apiURI: 'https://api.instantdb.com',\n websocketURI: 'wss://api.instantdb.com/runtime/session',\n};\n\n// hmr\nfunction initSchemaHashStore(): WeakMap<any, string> {\n globalThis.__instantDbSchemaHashStore =\n globalThis.__instantDbSchemaHashStore ?? new WeakMap<any, string>();\n return globalThis.__instantDbSchemaHashStore;\n}\n\nfunction initGlobalInstantCoreStore(): Record<string, any> {\n globalThis.__instantDbStore = globalThis.__instantDbStore ?? {};\n return globalThis.__instantDbStore;\n}\n\nfunction reactorKey(config: InstantConfig<any, boolean>): string {\n // @ts-expect-error\n const adminToken = config.__adminToken;\n return (\n config.appId +\n '_' +\n (config.websocketURI || 'default_ws_uri') +\n '_' +\n (config.apiURI || 'default_api_uri') +\n '_' +\n (adminToken || 'client_only') +\n '_' +\n config.useDateObjects\n );\n}\n\nconst globalInstantCoreStore = initGlobalInstantCoreStore();\nconst schemaHashStore = initSchemaHashStore();\n\ntype SignoutOpts = {\n invalidateToken?: boolean;\n};\n\n/**\n * Functions to log users in and out.\n *\n * @see https://instantdb.com/docs/auth\n */\nclass Auth {\n constructor(private db: Reactor) {}\n\n /**\n * Sends a magic code to the user's email address.\n *\n * Once you send the magic code, see {@link auth.signInWithMagicCode} to let the\n * user verify.\n *\n * @see https://instantdb.com/docs/auth\n * @example\n * db.auth.sendMagicCode({email: \"example@gmail.com\"})\n * .catch((err) => console.error(err.body?.message))\n */\n sendMagicCode = (\n params: SendMagicCodeParams,\n ): Promise<SendMagicCodeResponse> => {\n return this.db.sendMagicCode(params);\n };\n\n /**\n * Verify a magic code that was sent to the user's email address.\n *\n * @see https://instantdb.com/docs/auth\n *\n * @example\n * db.auth.signInWithMagicCode({email: \"example@gmail.com\", code: \"123456\"})\n * .catch((err) => console.error(err.body?.message))\n */\n signInWithMagicCode = (\n params: VerifyMagicCodeParams,\n ): Promise<VerifyResponse> => {\n return this.db.signInWithMagicCode(params);\n };\n\n /**\n * Sign in a user with a refresh token\n *\n * @see https://instantdb.com/docs/backend#frontend-auth-sign-in-with-token\n *\n * @example\n * // Get the token from your backend\n * const token = await fetch('/signin', ...);\n * //Sign in\n * db.auth.signInWithToken(token);\n */\n signInWithToken = (token: AuthToken): Promise<VerifyResponse> => {\n return this.db.signInWithCustomToken(token);\n };\n\n /**\n * Sign in as guest, creating a new user without email\n *\n * @see https://instantdb.com/docs/auth\n *\n * @example\n * db.auth.signInAsGuest();\n */\n signInAsGuest = (): Promise<VerifyResponse> => {\n return this.db.signInAsGuest();\n };\n\n /**\n * Create an authorization url to sign in with an external provider.\n *\n * @see https://instantdb.com/docs/auth\n *\n * @example\n * // Get the authorization url from your backend\n * const url = db.auth.createAuthorizationUrl({\n * clientName: \"google\",\n * redirectURL: window.location.href,\n * });\n *\n * // Put it in a sign in link\n * <a href={url}>Log in with Google</a>\n */\n createAuthorizationURL = (params: {\n clientName: string;\n redirectURL: string;\n }): string => {\n return this.db.createAuthorizationURL(params);\n };\n\n /**\n * Sign in with the id_token from an external provider like Google\n *\n * @see https://instantdb.com/docs/auth\n * @example\n * db.auth\n * .signInWithIdToken({\n * // Token from external service\n * idToken: id_token,\n * // The name you gave the client when you registered it with Instant\n * clientName: \"google\",\n * // The nonce, if any, that you used when you initiated the auth flow\n * // with the external service.\n * nonce: your_nonce\n * })\n * .catch((err) => console.error(err.body?.message));\n *\n */\n signInWithIdToken = (\n params: SignInWithIdTokenParams,\n ): Promise<VerifyResponse> => {\n return this.db.signInWithIdToken(params);\n };\n\n /**\n * Sign in with the id_token from an external provider like Google\n *\n * @see https://instantdb.com/docs/auth\n * @example\n * db.auth\n * .exchangeOAuthCode({\n * // code received in redirect from OAuth callback\n * code: code\n * // The PKCE code_verifier, if any, that you used when you\n * // initiated the auth flow\n * codeVerifier: your_code_verifier\n * })\n * .catch((err) => console.error(err.body?.message));\n *\n */\n exchangeOAuthCode = (params: ExchangeCodeForTokenParams) => {\n return this.db.exchangeCodeForToken(params);\n };\n\n /**\n * OpenID Discovery path for use with tools like\n * expo-auth-session that use auto-discovery of\n * OAuth parameters.\n *\n * @see https://instantdb.com/docs/auth\n * @example\n * const discovery = useAutoDiscovery(\n * db.auth.issuerURI()\n * );\n */\n issuerURI = (): string => {\n return this.db.issuerURI();\n };\n\n /**\n * Sign out the current user\n */\n signOut = (opts: SignoutOpts = { invalidateToken: true }): Promise<void> => {\n return this.db.signOut(opts);\n };\n}\n\ntype FileOpts = {\n contentType?: string;\n contentDisposition?: string;\n fileSize?: number; // Required for streaming uploads\n};\n\n/**\n * Functions to manage file storage.\n */\nclass Storage {\n constructor(private db: Reactor) {}\n\n /**\n * Uploads file at the provided path.\n *\n * @see https://instantdb.com/docs/storage\n * @example\n * const [file] = e.target.files; // result of file input\n * const data = await db.storage.uploadFile('photos/demo.png', file);\n */\n uploadFile = (\n path: string,\n file: File | Blob,\n opts: FileOpts = {},\n ): Promise<UploadFileResponse> => {\n return this.db.uploadFile(path, file, opts);\n };\n\n /**\n * Deletes a file by path name.\n *\n * @see https://instantdb.com/docs/storage\n * @example\n * await db.storage.delete('photos/demo.png');\n */\n delete = (pathname: string) => {\n return this.db.deleteFile(pathname);\n };\n\n // Deprecated Storage API (Jan 2025)\n // ---------------------------------\n\n /**\n * @deprecated. Use `db.storage.uploadFile` instead\n * remove in the future.\n */\n upload = (pathname: string, file: File) => {\n return this.db.upload(pathname, file);\n };\n\n /**\n * @deprecated Use `db.storage.uploadFile` instead\n */\n put = this.upload;\n\n /**\n * @deprecated. getDownloadUrl will be removed in the future.\n * Use `useQuery` instead to query and fetch for valid urls\n *\n * db.useQuery({\n * $files: {\n * $: {\n * where: {\n * path: \"moop.png\"\n * }\n * }\n * }\n * })\n */\n getDownloadUrl = (pathname: string) => {\n return this.db.getDownloadUrl(pathname);\n };\n}\n\n// util\n\nfunction coerceQuery(o: any) {\n // stringify and parse to remove undefined values\n return JSON.parse(JSON.stringify(o));\n}\n\nclass InstantCoreDatabase<\n Schema extends InstantSchemaDef<any, any, any>,\n UseDates extends boolean = false,\n> implements IInstantDatabase<Schema>\n{\n public _reactor: Reactor<RoomsOf<Schema>>;\n public auth: Auth;\n public storage: Storage;\n\n public tx = txInit<Schema>();\n\n constructor(reactor: Reactor<RoomsOf<Schema>>) {\n this._reactor = reactor;\n this.auth = new Auth(this._reactor);\n this.storage = new Storage(this._reactor);\n }\n\n /**\n * Use this to write data! You can create, update, delete, and link objects\n *\n * @see https://instantdb.com/docs/instaml\n *\n * @example\n * // Create a new object in the `goals` namespace\n * const goalId = id();\n * db.transact(db.tx.goals[goalId].update({title: \"Get fit\"}))\n *\n * // Update the title\n * db.transact(db.tx.goals[goalId].update({title: \"Get super fit\"}))\n *\n * // Delete it\n * db.transact(db.tx.goals[goalId].delete())\n *\n * // Or create an association:\n * todoId = id();\n * db.transact([\n * db.tx.todos[todoId].update({ title: 'Go on a run' }),\n * db.tx.goals[goalId].link({todos: todoId}),\n * ])\n */\n transact(\n chunks: TransactionChunk<any, any> | TransactionChunk<any, any>[],\n ): Promise<TransactionResult> {\n return this._reactor.pushTx(chunks);\n }\n\n getLocalId(name: string): Promise<string> {\n return this._reactor.getLocalId(name);\n }\n\n /**\n * Use this to query your data!\n *\n * @see https://instantdb.com/docs/instaql\n *\n * @example\n * // listen to all goals\n * db.subscribeQuery({ goals: {} }, (resp) => {\n * console.log(resp.data.goals)\n * })\n *\n * // goals where the title is \"Get Fit\"\n * db.subscribeQuery(\n * { goals: { $: { where: { title: \"Get Fit\" } } } },\n * (resp) => {\n * console.log(resp.data.goals)\n * }\n * )\n *\n * // all goals, _alongside_ their todos\n * db.subscribeQuery({ goals: { todos: {} } }, (resp) => {\n * console.log(resp.data.goals)\n * });\n */\n subscribeQuery<\n Q extends ValidQuery<Q, Schema>,\n UseDatesLocal extends boolean = UseDates,\n >(\n query: Q,\n cb: (resp: InstaQLSubscriptionState<Schema, Q, UseDatesLocal>) => void,\n opts?: InstaQLOptions,\n ) {\n return this._reactor.subscribeQuery(query, cb, opts);\n }\n\n /**\n * Listen for the logged in state. This is useful\n * for deciding when to show a login screen.\n *\n * @see https://instantdb.com/docs/auth\n * @example\n * const unsub = db.subscribeAuth((auth) => {\n * if (auth.user) {\n * console.log('logged in as', auth.user.email)\n * } else {\n * console.log('logged out')\n * }\n * })\n */\n subscribeAuth(cb: (auth: AuthResult) => void): UnsubscribeFn {\n return this._reactor.subscribeAuth(cb);\n }\n\n /**\n * One time query for the logged in state. This is useful\n * for scenarios where you want to know the current auth\n * state without subscribing to changes.\n *\n * @see https://instantdb.com/docs/auth\n * @example\n * const user = await db.getAuth();\n * console.log('logged in as', user.email)\n */\n getAuth(): Promise<User | null> {\n return this._reactor.getAuth();\n }\n\n /**\n * Listen for connection status changes to Instant. This is useful\n * for building things like connectivity indicators\n *\n * @see https://www.instantdb.com/docs/patterns#connection-status\n * @example\n * const unsub = db.subscribeConnectionStatus((status) => {\n * const connectionState =\n * status === 'connecting' || status === 'opened'\n * ? 'authenticating'\n * : status === 'authenticated'\n * ? 'connected'\n * : status === 'closed'\n * ? 'closed'\n * : status === 'errored'\n * ? 'errored'\n * : 'unexpected state';\n *\n * console.log('Connection status:', connectionState);\n * });\n */\n subscribeConnectionStatus(\n cb: (status: ConnectionStatus) => void,\n ): UnsubscribeFn {\n return this._reactor.subscribeConnectionStatus(cb);\n }\n\n /**\n * Join a room to publish and subscribe to topics and presence.\n *\n * @see https://instantdb.com/docs/presence-and-topics\n * @example\n * // init\n * const db = init();\n * const room = db.joinRoom(roomType, roomId);\n * // usage\n * const unsubscribeTopic = room.subscribeTopic(\"foo\", console.log);\n * const unsubscribePresence = room.subscribePresence({}, console.log);\n * room.publishTopic(\"hello\", { message: \"hello world!\" });\n * room.publishPresence({ name: \"joe\" });\n * // later\n * unsubscribePresence();\n * unsubscribeTopic();\n * room.leaveRoom();\n */\n joinRoom<RoomType extends keyof RoomsOf<Schema>>(\n roomType: RoomType = '_defaultRoomType' as RoomType,\n roomId: string = '_defaultRoomId',\n opts?: {\n initialPresence?: Partial<PresenceOf<Schema, RoomType>>;\n },\n ): RoomHandle<PresenceOf<Schema, RoomType>, TopicsOf<Schema, RoomType>> {\n const leaveRoom = this._reactor.joinRoom(roomId, opts?.initialPresence);\n\n return {\n leaveRoom,\n subscribeTopic: (topic, onEvent) =>\n this._reactor.subscribeTopic(roomId, topic, onEvent),\n subscribePresence: (opts, onChange) =>\n this._reactor.subscribePresence(roomType, roomId, opts, onChange),\n publishTopic: (topic, data) =>\n this._reactor.publishTopic({ roomType, roomId, topic, data }),\n publishPresence: (data) =>\n this._reactor.publishPresence(roomType, roomId, data),\n getPresence: (opts) => this._reactor.getPresence(roomType, roomId, opts),\n };\n }\n\n shutdown() {\n delete globalInstantCoreStore[reactorKey(this._reactor.config)];\n this._reactor.shutdown();\n }\n\n /**\n * Use this for one-off queries.\n * Returns local data if available, otherwise fetches from the server.\n * Because we want to avoid stale data, this method will throw an error\n * if the user is offline or there is no active connection to the server.\n *\n * @see https://instantdb.com/docs/instaql\n *\n * @example\n *\n * const resp = await db.queryOnce({ goals: {} });\n * console.log(resp.data.goals)\n */\n queryOnce<Q extends ValidQuery<Q, Schema>>(\n query: Q,\n opts?: InstaQLOptions,\n ): Promise<{\n data: InstaQLResponse<Schema, Q, UseDates>;\n pageInfo: PageInfoResponse<Q>;\n }> {\n return this._reactor.queryOnce(query, opts);\n }\n\n /**\n * @deprecated This is an experimental function that is not yet ready for production use.\n * Use this function to sync an entire namespace.\n * It has many limitations that will be removed in the future:\n * 1. Must be used with an admin token\n * 2. Does not support permissions\n * 3. Does not support where clauses\n * 4. Does not support links\n * It also does not support multiple top-level namespaces. For example,\n * {posts: {}, users: {}} is invalid. Only `posts` or `users` is allowed, but not both.\n */\n _syncTableExperimental<Q extends ValidQuery<Q, Schema>>(\n query: ExactlyOne<Q>,\n cb: SyncTableCallback<Schema, Q, UseDates>,\n ): (\n opts?: { keepSubscription: boolean | null | undefined } | null | undefined,\n ) => void {\n return this._reactor.subscribeTable(query, cb);\n }\n}\n\nfunction schemaHash(schema?: InstantSchemaDef<any, any, any>): string {\n if (!schema) {\n return '0';\n }\n\n const fromStore = schemaHashStore.get(schema);\n if (fromStore) {\n return fromStore;\n }\n const hash = weakHash(schema);\n schemaHashStore.set(schema, hash);\n return hash;\n}\n\nfunction schemaChanged(\n existingClient: InstantCoreDatabase<any, boolean>,\n newSchema?: InstantSchemaDef<any, any, any>,\n): boolean {\n return (\n schemaHash(existingClient._reactor.config.schema) !== schemaHash(newSchema)\n );\n}\n\n/**\n *\n * The first step: init your application!\n *\n * Visit https://instantdb.com/dash to get your `appId` :)\n *\n * @example\n * import { init } from \"@instantdb/core\"\n *\n * const db = init({ appId: \"my-app-id\" })\n *\n * // You can also provide a schema for type safety and editor autocomplete!\n *\n * import { init } from \"@instantdb/core\"\n * import schema from \"\"../instant.schema.ts\";\n *\n * const db = init({ appId: \"my-app-id\", schema })\n *\n * // To learn more: https://instantdb.com/docs/modeling-data\n */\nfunction init<\n Schema extends InstantSchemaDef<any, any, any> = InstantUnknownSchema,\n UseDates extends boolean = false,\n>(\n // Allows config with missing `useDateObjects`, but keeps `UseDates`\n // as a non-nullable in the InstantConfig type.\n config: Omit<InstantConfig<Schema, UseDates>, 'useDateObjects'> & {\n useDateObjects?: UseDates;\n },\n Storage?: any,\n NetworkListener?: any,\n versions?: { [key: string]: string },\n EventSourceImpl?: any,\n): InstantCoreDatabase<Schema, UseDates> {\n const configStrict = {\n ...config,\n useDateObjects: (config.useDateObjects ?? false) as UseDates,\n };\n const existingClient = globalInstantCoreStore[\n reactorKey(configStrict)\n ] as InstantCoreDatabase<any, UseDates>;\n\n if (existingClient) {\n if (schemaChanged(existingClient, configStrict.schema)) {\n existingClient._reactor.updateSchema(configStrict.schema);\n }\n return existingClient;\n }\n\n const reactor = new Reactor<RoomsOf<Schema>>(\n {\n ...defaultConfig,\n ...configStrict,\n cardinalityInference: configStrict.schema ? true : false,\n },\n Storage || IndexedDBStorage,\n NetworkListener || WindowNetworkListener,\n { ...(versions || {}), '@instantdb/core': version },\n EventSourceImpl,\n );\n\n const client = new InstantCoreDatabase<any, UseDates>(reactor);\n globalInstantCoreStore[reactorKey(configStrict)] = client;\n\n handleDevtool(configStrict.appId, configStrict.devtool);\n\n return client;\n}\n\nfunction handleDevtool(\n appId: string,\n devtool: boolean | DevtoolConfig | null | undefined,\n) {\n if (\n typeof window === 'undefined' ||\n typeof window.location === 'undefined' ||\n typeof document === 'undefined'\n ) {\n return;\n }\n\n if (typeof devtool === 'boolean' && !devtool) {\n return;\n }\n\n const config: StrictDevtoolConfig = {\n position: 'bottom-right' as const,\n allowedHosts: ['localhost'],\n ...(typeof devtool === 'object' ? devtool : {}),\n };\n\n if (!config.allowedHosts.includes(window.location.hostname)) {\n return;\n }\n\n createDevtool(appId, config);\n}\n\n/**\n * @deprecated\n * `init_experimental` is deprecated. You can replace it with `init`.\n *\n * @example\n *\n * // Before\n * import { init_experimental } from \"@instantdb/core\"\n * const db = init_experimental({ ... });\n *\n * // After\n * import { init } from \"@instantdb/core\"\n * const db = init({ ... });\n */\nconst init_experimental = init;\n\nexport {\n // bada bing bada boom\n init,\n init_experimental,\n id,\n tx,\n txInit,\n lookup,\n validateQuery,\n QueryValidationError,\n validateTransactions,\n parseSchemaFromJSON,\n TransactionValidationError,\n FrameworkClient,\n\n // error\n InstantAPIError,\n\n // cli\n i,\n\n // util\n getOps,\n coerceQuery,\n weakHash,\n coerceToDate,\n IndexedDBStorage,\n WindowNetworkListener,\n InstantCoreDatabase,\n Auth,\n Storage,\n version,\n InstantError,\n\n // sync table enums\n SyncTableCallbackEventType,\n\n // og types\n type IDatabase,\n type RoomSchemaShape,\n type Query,\n type QueryResponse,\n type InstaQLResponse,\n type PageInfoResponse,\n type InstantObject,\n type Exactly,\n type TransactionChunk,\n type AuthState,\n type ConnectionStatus,\n type User,\n type AuthToken,\n type TxChunk,\n type SubscriptionState,\n type InstaQLSubscriptionState,\n type LifecycleSubscriptionState,\n type InstaQLLifecycleState,\n\n // presence types\n type PresenceOpts,\n type PresenceSlice,\n type PresenceResponse,\n type PresencePeer,\n\n // new query types\n type InstaQLParams,\n type ValidQuery,\n type InstaQLOptions,\n type InstaQLQueryParams,\n type InstantQuery,\n type InstantQueryResult,\n type InstantSchema,\n type InstantEntity,\n type InstantSchemaDatabase,\n type InstaQLFields,\n\n // schema types\n type AttrsDefs,\n type CardinalityKind,\n type DataAttrDef,\n type EntitiesDef,\n type InstantUnknownSchemaDef,\n type EntitiesWithLinks,\n type EntityDef,\n type RoomsDef,\n type InstantGraph,\n type LinkAttrDef,\n type LinkDef,\n type LinksDef,\n type ResolveAttrs,\n type ValueTypes,\n type RoomsOf,\n type PresenceOf,\n type TopicsOf,\n type TopicOf,\n type InstaQLEntity,\n type InstaQLResult,\n type InstaQLEntitySubquery,\n type InstantSchemaDef,\n type InstantUnknownSchema,\n type IInstantDatabase,\n type BackwardsCompatibleSchema,\n type InstantRules,\n type UpdateParams,\n type LinkParams,\n type CreateParams,\n type RuleParams,\n\n // attr types\n type InstantDBAttr,\n type InstantDBAttrOnDelete,\n type InstantDBCheckedDataType,\n type InstantDBIdent,\n type InstantDBInferredType,\n\n // auth types\n type ExchangeCodeForTokenParams,\n type SendMagicCodeParams,\n type SendMagicCodeResponse,\n type SignInWithIdTokenParams,\n type VerifyMagicCodeParams,\n type VerifyResponse,\n\n // storage types\n type FileOpts,\n type UploadFileResponse,\n type DeleteFileResponse,\n\n // SSE\n type EventSourceType,\n type FrameworkConfig,\n\n // sync table types\n type SyncTableCallback,\n type SyncTableCallbackEvent,\n type SyncTableInitialSyncBatch,\n type SyncTableInitialSyncComplete,\n type SyncTableSyncTransaction,\n type SyncTableLoadFromStorage,\n type SyncTableSetupError,\n\n // error types\n type InstantIssue,\n\n // storage (e.g. indexeddb) interface\n StorageInterface,\n type StorageInterfaceStoreName,\n createInstantRouteHandler,\n};\n"]}
@@ -2,7 +2,7 @@ import { allMapValues, AttrsStoreClass, getAttrByFwdIdentName, getAttrByReverseI
2
2
  import { getOps, isLookup, parseLookup } from "./instatx.js";
3
3
  import { immutableRemoveUndefined } from './utils/object.js';
4
4
  import { coerceToDate } from "./utils/dates.js";
5
- import uuid from "./utils/uuid.js";
5
+ import uuid from "./utils/id.js";
6
6
  // Rewrites optimistic attrs with the attrs we get back from the server.
7
7
  export function rewriteStep(attrMapping, txStep) {
8
8
  const { attrIdMap, refSwapAttrIds } = attrMapping;
@@ -1 +1 @@
1
- {"version":3,"file":"instaml.js","sourceRoot":"","sources":["../../src/instaml.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n allMapValues,\n AttrsStore,\n AttrsStoreClass,\n getAttrByFwdIdentName,\n getAttrByReverseIdentName,\n Store,\n} from './store.ts';\nimport { getOps, isLookup, parseLookup } from './instatx.ts';\nimport { immutableRemoveUndefined } from './utils/object.js';\nimport { coerceToDate } from './utils/dates.ts';\nimport uuid from './utils/uuid.ts';\nimport {\n EntitiesWithLinks,\n IContainEntitiesAndLinks,\n LinkDef,\n} from './schemaTypes.ts';\nimport { InstantDBAttr, InstantDBIdent } from './attrTypes.ts';\n\nexport type AttrMapping = {\n attrIdMap: Record<string, string>;\n refSwapAttrIds: Set<string>;\n};\n\ntype TXStep = any[];\n\n// Rewrites optimistic attrs with the attrs we get back from the server.\nexport function rewriteStep(attrMapping: AttrMapping, txStep: TXStep): TXStep {\n const { attrIdMap, refSwapAttrIds } = attrMapping;\n const rewritten: TXStep = [];\n for (const part of txStep) {\n const newValue = attrIdMap[part];\n\n if (newValue) {\n // Rewrites attr id\n rewritten.push(newValue);\n } else if (Array.isArray(part) && part.length == 2 && attrIdMap[part[0]]) {\n // Rewrites attr id in lookups\n const [aid, value] = part;\n rewritten.push([attrIdMap[aid], value]);\n } else {\n rewritten.push(part);\n }\n }\n const [action] = txStep;\n if (\n (action === 'add-triple' || action === 'retract-triple') &&\n refSwapAttrIds.has(txStep[2])\n ) {\n // Reverse links if the optimistic link attr is backwards\n const tmp = rewritten[1];\n rewritten[1] = rewritten[3];\n rewritten[3] = tmp;\n }\n return rewritten;\n}\n\nfunction explodeLookupRef(eid) {\n if (Array.isArray(eid)) {\n return eid;\n }\n const entries = Object.entries(eid);\n if (entries.length !== 1) {\n throw new Error(\n 'lookup must be an object with a single unique attr and value.',\n );\n }\n return entries[0];\n}\n\nfunction isRefLookupIdent(attrs: AttrsStore, etype: string, identName: string) {\n return (\n identName.indexOf('.') !== -1 &&\n // attr names can have `.` in them, so use the attr we find with a `.`\n // before assuming it's a ref lookup.\n !getAttrByFwdIdentName(attrs, etype, identName)\n );\n}\n\nfunction extractRefLookupFwdName(identName) {\n const [fwdName, idIdent, ...rest] = identName.split('.');\n if (rest.length > 0 || idIdent !== 'id') {\n throw new Error(`${identName} is not a valid lookup attribute.`);\n }\n\n return fwdName;\n}\n\nfunction lookupIdentToAttr(\n attrs: AttrsStore,\n etype: string,\n identName: string,\n) {\n if (!isRefLookupIdent(attrs, etype, identName)) {\n return getAttrByFwdIdentName(attrs, etype, identName);\n }\n\n const fwdName = extractRefLookupFwdName(identName);\n\n const refAttr =\n getAttrByFwdIdentName(attrs, etype, fwdName) ||\n getAttrByReverseIdentName(attrs, etype, fwdName);\n if (refAttr && refAttr['value-type'] !== 'ref') {\n throw new Error(`${identName} does not reference a valid link attribute.`);\n }\n return refAttr;\n}\n\n// Returns [attr, value] for the eid if the eid is a lookup.\n// If it's a regular eid, returns null\nfunction lookupPairOfEid(eid) {\n if (typeof eid === 'string' && !isLookup(eid)) {\n return null;\n }\n return typeof eid === 'string' && isLookup(eid)\n ? parseLookup(eid)\n : explodeLookupRef(eid);\n}\n\nfunction extractLookup(attrs: AttrsStore, etype: string, eid: string) {\n const lookupPair = lookupPairOfEid(eid);\n\n if (lookupPair === null) {\n return eid;\n }\n\n const [identName, value] = lookupPair;\n const attr = lookupIdentToAttr(attrs, etype, identName);\n if (!attr || !attr['unique?']) {\n throw new Error(`${identName} is not a unique attribute.`);\n }\n return [attr.id, value];\n}\n\nfunction withIdAttrForLookup(\n attrs: AttrsStore,\n etype: string,\n eidA: string,\n txSteps: TXStep[],\n) {\n const lookup = extractLookup(attrs, etype, eidA);\n if (!Array.isArray(lookup)) {\n return txSteps;\n }\n const idTuple = [\n 'add-triple',\n lookup,\n getAttrByFwdIdentName(attrs, etype, 'id')?.id,\n lookup,\n ];\n return [idTuple].concat(txSteps);\n}\n\nfunction expandLink({ attrsStore }: Ctx, [etype, eidA, obj]) {\n const addTriples = Object.entries(obj).flatMap(([label, eidOrEids]) => {\n const eids = Array.isArray(eidOrEids) ? eidOrEids : [eidOrEids];\n const fwdAttr = getAttrByFwdIdentName(attrsStore, etype, label);\n const revAttr = getAttrByReverseIdentName(attrsStore, etype, label);\n return eids.map((eidB) => {\n const txStep = fwdAttr\n ? [\n 'add-triple',\n extractLookup(attrsStore, etype, eidA),\n fwdAttr.id,\n // Uses `!` because if we get here, we should have created the attr if it doesn't\n // already exist\n extractLookup(attrsStore, fwdAttr['reverse-identity']![1], eidB),\n ]\n : [\n 'add-triple',\n // Uses `!` because if we get here, we should have created the attr if it doesn't\n // already exist\n extractLookup(attrsStore, revAttr!['forward-identity']![1], eidB),\n revAttr?.id,\n extractLookup(attrsStore, etype, eidA),\n ];\n return txStep;\n });\n });\n return withIdAttrForLookup(attrsStore, etype, eidA, addTriples);\n}\n\nfunction expandUnlink({ attrsStore }: Ctx, [etype, eidA, obj]) {\n const retractTriples = Object.entries(obj).flatMap(([label, eidOrEids]) => {\n const eids = Array.isArray(eidOrEids) ? eidOrEids : [eidOrEids];\n const fwdAttr = getAttrByFwdIdentName(attrsStore, etype, label);\n const revAttr = getAttrByReverseIdentName(attrsStore, etype, label);\n return eids.map((eidB) => {\n const txStep = fwdAttr\n ? [\n 'retract-triple',\n extractLookup(attrsStore, etype, eidA),\n fwdAttr.id,\n // Uses `!` because if we get here, we should have created the attr if it doesn't\n // already exist\n extractLookup(attrsStore, fwdAttr!['reverse-identity']![1], eidB),\n ]\n : [\n 'retract-triple',\n // Uses `!` because if we get here, we should have created the attr if it doesn't\n // already exist\n extractLookup(attrsStore, revAttr!['forward-identity'][1], eidB),\n revAttr!.id,\n extractLookup(attrsStore, etype, eidA),\n ];\n return txStep;\n });\n });\n return withIdAttrForLookup(attrsStore, etype, eidA, retractTriples);\n}\n\nfunction checkEntityExists(\n stores: (Store | undefined)[] | undefined,\n attrsStore: AttrsStore,\n etype: string,\n eid: string,\n) {\n if (Array.isArray(eid)) {\n // lookup ref\n const [entity_a, entity_v] = eid;\n for (const store of stores || []) {\n const ev = store?.aev.get(entity_a);\n if (ev) {\n // This would be a lot more efficient with a ave index\n for (const [_e, _a, v] of allMapValues(ev, 2)) {\n if (v === entity_v) {\n return true;\n }\n }\n }\n }\n } else {\n // eid\n for (const store of stores || []) {\n const av = store?.eav.get(eid);\n if (av) {\n for (const attr_id of av.keys()) {\n if (attrsStore.getAttr(attr_id)?.['forward-identity'][1] == etype) {\n return true;\n }\n }\n }\n }\n }\n return false;\n}\n\ntype Ctx = {\n stores?: (Store | undefined)[];\n attrsStore: AttrsStore;\n schema?: Schema;\n useDateObjects?: boolean | null;\n};\n\nfunction convertOpts({ stores, attrsStore }: Ctx, [etype, eid, obj_, opts]) {\n return opts?.upsert === false\n ? { mode: 'update' }\n : opts?.upsert === true\n ? null\n : checkEntityExists(stores, attrsStore, etype, eid)\n ? { mode: 'update' }\n : null; // auto mode chooses between update and upsert, not update and create, just in case\n}\n\nfunction expandCreate(ctx: Ctx, step) {\n const { attrsStore } = ctx;\n const [etype, eid, obj_, opts] = step;\n const obj = immutableRemoveUndefined(obj_);\n const lookup = extractLookup(attrsStore, etype, eid);\n // id first so that we don't clobber updates on the lookup field\n const attrTuples = [['id', lookup]]\n .concat(Object.entries(obj))\n .map(([identName, value]: [string, any]) => {\n // Uses `!` because we should have optimistically created the attr if it doesn't exist\n const attr = getAttrByFwdIdentName(attrsStore, etype, identName)!;\n\n if (attr['checked-data-type'] === 'date' && ctx.useDateObjects) {\n value = coerceToDate(value);\n }\n\n return ['add-triple', lookup, attr.id, value, { mode: 'create' }];\n });\n return attrTuples;\n}\n\nfunction expandUpdate(ctx: Ctx, step) {\n const { attrsStore } = ctx;\n const [etype, eid, obj_, opts] = step;\n const obj = immutableRemoveUndefined(obj_);\n const lookup = extractLookup(attrsStore, etype, eid);\n const serverOpts = convertOpts(ctx, [etype, lookup, obj_, opts]);\n // id first so that we don't clobber updates on the lookup field\n const attrTuples = [['id', lookup]]\n .concat(Object.entries(obj))\n .map(([identName, value]: [string, any]) => {\n const attr = getAttrByFwdIdentName(attrsStore, etype, identName)!;\n\n if (attr['checked-data-type'] === 'date' && ctx.useDateObjects) {\n value = coerceToDate(value);\n }\n\n return [\n 'add-triple',\n lookup,\n attr.id,\n value,\n ...(serverOpts ? [serverOpts] : []),\n ];\n });\n return attrTuples;\n}\n\nfunction expandDelete({ attrsStore }: Ctx, [etype, eid]) {\n const lookup = extractLookup(attrsStore, etype, eid);\n return [['delete-entity', lookup, etype]];\n}\n\nfunction expandDeepMerge(ctx: Ctx, step) {\n const { attrsStore } = ctx;\n const [etype, eid, obj_, opts] = step;\n const obj = immutableRemoveUndefined(obj_);\n const lookup = extractLookup(attrsStore, etype, eid);\n const serverOpts = convertOpts(ctx, [etype, lookup, obj_, opts]);\n const attrTuples = Object.entries(obj).map(([identName, value]) => {\n const attr = getAttrByFwdIdentName(attrsStore, etype, identName)!;\n return [\n 'deep-merge-triple',\n lookup,\n attr.id,\n value,\n ...(serverOpts ? [serverOpts] : []),\n ];\n });\n\n const idTuple = [\n 'add-triple',\n lookup,\n getAttrByFwdIdentName(attrsStore, etype, 'id')!.id,\n lookup,\n ...(serverOpts ? [serverOpts] : []),\n ];\n\n // id first so that we don't clobber updates on the lookup field\n return [idTuple].concat(attrTuples);\n}\n\nfunction expandRuleParams({ attrsStore }: Ctx, [etype, eid, ruleParams]) {\n const lookup = extractLookup(attrsStore, etype, eid);\n return [['rule-params', lookup, etype, ruleParams]];\n}\n\nfunction removeIdFromArgs(step) {\n const [op, etype, eid, obj, opts] = step;\n if (!obj) {\n return step;\n }\n const newObj = { ...obj };\n delete newObj.id;\n return [op, etype, eid, newObj, ...(opts ? [opts] : [])];\n}\n\nfunction toTxSteps(ctx: Ctx, step) {\n const [action, ...args] = removeIdFromArgs(step);\n switch (action) {\n case 'merge':\n return expandDeepMerge(ctx, args);\n case 'create':\n return expandCreate(ctx, args);\n case 'update':\n return expandUpdate(ctx, args);\n case 'link':\n return expandLink(ctx, args);\n case 'unlink':\n return expandUnlink(ctx, args);\n case 'delete':\n return expandDelete(ctx, args);\n case 'ruleParams':\n return expandRuleParams(ctx, args);\n default:\n throw new Error(`unsupported action ${action}`);\n }\n}\n\n// ---------\n// transform\n\nfunction checkedDataTypeOfValueType(valueType) {\n switch (valueType) {\n case 'string':\n case 'date':\n case 'boolean':\n case 'number':\n return valueType;\n default:\n return undefined;\n }\n}\n\nfunction objectPropsFromSchema(schema, etype, label) {\n const attr = schema.entities[etype]?.attrs?.[label];\n if (label === 'id') return null;\n if (!attr) {\n throw new Error(`${etype}.${label} does not exist in your schema`);\n }\n const { unique, indexed } = attr?.config;\n const checkedDataType = checkedDataTypeOfValueType(attr?.valueType);\n\n return {\n 'index?': indexed,\n 'unique?': unique,\n 'checked-data-type': checkedDataType,\n };\n}\n\nfunction createObjectAttr(schema, etype, label, props) {\n const schemaObjectProps = schema\n ? objectPropsFromSchema(schema, etype, label)\n : null;\n const attrId = uuid();\n const fwdIdentId = uuid();\n const fwdIdent = [fwdIdentId, etype, label];\n return {\n id: attrId,\n 'forward-identity': fwdIdent,\n 'value-type': 'blob',\n cardinality: 'one',\n 'unique?': false,\n 'index?': false,\n isUnsynced: true,\n ...(schemaObjectProps || {}),\n ...(props || {}),\n };\n}\n\ntype Link = LinkDef<any, any, any, any, any, any, any>;\ntype Schema = IContainEntitiesAndLinks<any, any>;\n\nfunction findSchemaLink(schema: Schema, etype, label): Link | undefined {\n const links: Link[] = Object.values(schema.links);\n const found = links.find((x: Link) => {\n return (\n (x.forward.on === etype && x.forward.label === label) ||\n (x.reverse.on === etype && x.reverse.label === label)\n );\n });\n return found;\n}\n\nfunction refPropsFromSchema(schema: Schema, etype, label) {\n const found = findSchemaLink(schema, etype, label);\n if (!found) {\n throw new Error(`Couldn't find the link ${etype}.${label} in your schema`);\n }\n const { forward, reverse } = found;\n return {\n 'forward-identity': [uuid(), forward.on, forward.label],\n 'reverse-identity': [uuid(), reverse.on, reverse.label],\n cardinality: forward.has === 'one' ? 'one' : 'many',\n 'unique?': reverse.has === 'one',\n 'on-delete': forward.onDelete,\n 'on-delete-reverse': reverse.onDelete,\n };\n}\n\nfunction createRefAttr(\n schema: Schema | undefined,\n etype: string,\n label: string,\n props?: Partial<InstantDBAttr> | undefined,\n): InstantDBAttr {\n const schemaRefProps = schema\n ? refPropsFromSchema(schema, etype, label)\n : null;\n const attrId = uuid();\n const fwdIdent: InstantDBIdent = [uuid(), etype, label];\n const revIdent: InstantDBIdent = [uuid(), label, etype];\n return {\n id: attrId,\n // @ts-ignore: ts thinks it's any[]\n 'forward-identity': fwdIdent,\n // @ts-ignore: ts thinks it's any[]\n 'reverse-identity': revIdent,\n 'value-type': 'ref',\n // @ts-ignore: ts thinks it's type string\n cardinality: 'many',\n 'unique?': false,\n 'index?': false,\n isUnsynced: true,\n ...(schemaRefProps || {}),\n ...(props || {}),\n };\n}\n\n// Actions that have an object, e.g. not delete\nconst OBJ_ACTIONS = new Set(['create', 'update', 'merge', 'link', 'unlink']);\nconst REF_ACTIONS = new Set(['link', 'unlink']);\nconst UPDATE_ACTIONS = new Set(['create', 'update', 'merge']);\nconst SUPPORTS_LOOKUP_ACTIONS = new Set([\n 'link',\n 'unlink',\n 'create',\n 'update',\n 'merge',\n 'delete',\n 'ruleParams',\n]);\n\nconst lookupProps: Partial<InstantDBAttr> = { 'unique?': true, 'index?': true };\nconst refLookupProps: Partial<InstantDBAttr> = {\n ...lookupProps,\n cardinality: 'one',\n};\n\nfunction lookupPairsOfOp(op) {\n const res: { etype: string; lookupPair: any; linkLabel?: string }[] = [];\n const [action, etype, eid, obj] = op;\n if (!SUPPORTS_LOOKUP_ACTIONS.has(action)) {\n return res;\n }\n\n const eidLookupPair = lookupPairOfEid(eid);\n if (eidLookupPair) {\n res.push({ etype: etype, lookupPair: eidLookupPair });\n }\n if (action === 'link') {\n for (const [label, eidOrEids] of Object.entries(obj)) {\n const eids = Array.isArray(eidOrEids) ? eidOrEids : [eidOrEids];\n for (const linkEid of eids) {\n const linkEidLookupPair = lookupPairOfEid(linkEid);\n if (linkEidLookupPair) {\n res.push({\n etype: etype,\n lookupPair: linkEidLookupPair,\n linkLabel: label,\n });\n }\n }\n }\n }\n return res;\n}\n\nfunction createMissingAttrs(\n { attrsStore, schema }: Ctx,\n ops,\n): [AttrsStore, TXStep[]] {\n const addedIds = new Set();\n const localAttrs: InstantDBAttr[] = [];\n const addOps: TXStep[] = [];\n\n function attrByFwdIdent(etype, label): InstantDBAttr | undefined {\n return (\n getAttrByFwdIdentName(attrsStore, etype, label) ||\n localAttrs.find(\n (x) =>\n x['forward-identity'][1] === etype &&\n x['forward-identity'][2] === label,\n )\n );\n }\n\n function attrByRevIdent(etype, label): InstantDBAttr | undefined {\n return (\n getAttrByReverseIdentName(attrsStore, etype, label) ||\n localAttrs.find(\n (x) =>\n x['reverse-identity']?.[1] === etype &&\n x['reverse-identity']?.[2] === label,\n )\n );\n }\n\n function addAttr(attr: InstantDBAttr) {\n localAttrs.push(attr);\n addOps.push(['add-attr', attr]);\n addedIds.add(attr.id);\n }\n function addUnsynced(\n attr:\n | (InstantDBAttr & { isUnsynced?: boolean })\n | InstantDBAttr\n | undefined,\n ) {\n if (\n attr &&\n 'isUnsynced' in attr &&\n attr.isUnsynced &&\n !addedIds.has(attr.id)\n ) {\n localAttrs.push(attr);\n addOps.push(['add-attr', attr]);\n addedIds.add(attr.id);\n }\n }\n\n function isRefLookupIdentLocal(etype: string, identName: string) {\n return (\n identName.indexOf('.') !== -1 &&\n // attr names can have `.` in them, so use the attr we find with a `.`\n // before assuming it's a ref lookup.\n !attrByFwdIdent(etype, identName)\n );\n }\n\n // Adds attrs needed for a ref lookup\n function addForRef(etype, label) {\n const fwdAttr = attrByFwdIdent(etype, label);\n const revAttr = attrByRevIdent(etype, label);\n addUnsynced(fwdAttr);\n addUnsynced(revAttr);\n if (!fwdAttr && !revAttr) {\n addAttr(createRefAttr(schema, etype, label, refLookupProps));\n }\n }\n\n // Create attrs for lookups if we need to\n // Do these first because otherwise we might add a non-unique attr\n // before we get to it\n for (const op of ops) {\n for (const { etype, lookupPair, linkLabel } of lookupPairsOfOp(op)) {\n const identName = lookupPair[0];\n // We got a link eid that's a lookup, linkLabel is the label of the ident,\n // e.g. `posts` in `link({posts: postIds})`\n if (linkLabel) {\n // Add our ref attr, e.g. users.posts\n addForRef(etype, linkLabel);\n\n // Figure out the link etype so we can make sure we have the attrs\n // for the link lookup\n const fwdAttr = attrByFwdIdent(etype, linkLabel);\n const revAttr = attrByRevIdent(etype, linkLabel);\n addUnsynced(fwdAttr);\n addUnsynced(revAttr);\n const linkEtype =\n fwdAttr?.['reverse-identity']?.[1] ||\n revAttr?.['forward-identity']?.[1] ||\n linkLabel;\n if (isRefLookupIdentLocal(linkEtype, identName)) {\n addForRef(linkEtype, extractRefLookupFwdName(identName));\n } else {\n const attr = attrByFwdIdent(linkEtype, identName);\n if (!attr) {\n addAttr(\n createObjectAttr(schema, linkEtype, identName, lookupProps),\n );\n }\n addUnsynced(attr);\n }\n } else if (isRefLookupIdentLocal(etype, identName)) {\n addForRef(etype, extractRefLookupFwdName(identName));\n } else {\n const attr = attrByFwdIdent(etype, identName);\n if (!attr) {\n addAttr(createObjectAttr(schema, etype, identName, lookupProps));\n }\n addUnsynced(attr);\n }\n }\n }\n\n // Create object and ref attrs\n for (const op of ops) {\n const [action, etype, eid, obj] = op;\n if (OBJ_ACTIONS.has(action)) {\n const idAttr = attrByFwdIdent(etype, 'id');\n addUnsynced(idAttr);\n if (!idAttr) {\n addAttr(createObjectAttr(schema, etype, 'id', { 'unique?': true }));\n }\n\n for (const label of Object.keys(obj)) {\n const fwdAttr = attrByFwdIdent(etype, label);\n addUnsynced(fwdAttr);\n if (UPDATE_ACTIONS.has(action)) {\n if (!fwdAttr) {\n addAttr(\n createObjectAttr(\n schema,\n etype,\n label,\n label === 'id' ? { 'unique?': true } : null,\n ),\n );\n }\n }\n if (REF_ACTIONS.has(action)) {\n const revAttr = attrByRevIdent(etype, label);\n if (!fwdAttr && !revAttr) {\n addAttr(createRefAttr(schema, etype, label));\n }\n addUnsynced(revAttr);\n }\n }\n }\n }\n\n if (localAttrs.length) {\n const nextAttrs = { ...attrsStore.attrs };\n for (const attr of localAttrs) {\n nextAttrs[attr.id] = attr;\n }\n return [new AttrsStoreClass(nextAttrs, attrsStore.linkIndex), addOps];\n }\n return [attrsStore, addOps];\n}\n\nexport function transform(ctx: Ctx, inputChunks) {\n const chunks = Array.isArray(inputChunks) ? inputChunks : [inputChunks];\n const ops = chunks.flatMap((tx) => getOps(tx));\n const [newAttrs, addAttrTxSteps] = createMissingAttrs(ctx, ops);\n const newCtx = { ...ctx, attrsStore: newAttrs };\n const txSteps = ops.flatMap((op) => toTxSteps(newCtx, op));\n return [...addAttrTxSteps, ...txSteps];\n}\n"]}
1
+ {"version":3,"file":"instaml.js","sourceRoot":"","sources":["../../src/instaml.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n allMapValues,\n AttrsStore,\n AttrsStoreClass,\n getAttrByFwdIdentName,\n getAttrByReverseIdentName,\n Store,\n} from './store.ts';\nimport { getOps, isLookup, parseLookup } from './instatx.ts';\nimport { immutableRemoveUndefined } from './utils/object.js';\nimport { coerceToDate } from './utils/dates.ts';\nimport uuid from './utils/id.ts';\nimport {\n EntitiesWithLinks,\n IContainEntitiesAndLinks,\n LinkDef,\n} from './schemaTypes.ts';\nimport { InstantDBAttr, InstantDBIdent } from './attrTypes.ts';\n\nexport type AttrMapping = {\n attrIdMap: Record<string, string>;\n refSwapAttrIds: Set<string>;\n};\n\ntype TXStep = any[];\n\n// Rewrites optimistic attrs with the attrs we get back from the server.\nexport function rewriteStep(attrMapping: AttrMapping, txStep: TXStep): TXStep {\n const { attrIdMap, refSwapAttrIds } = attrMapping;\n const rewritten: TXStep = [];\n for (const part of txStep) {\n const newValue = attrIdMap[part];\n\n if (newValue) {\n // Rewrites attr id\n rewritten.push(newValue);\n } else if (Array.isArray(part) && part.length == 2 && attrIdMap[part[0]]) {\n // Rewrites attr id in lookups\n const [aid, value] = part;\n rewritten.push([attrIdMap[aid], value]);\n } else {\n rewritten.push(part);\n }\n }\n const [action] = txStep;\n if (\n (action === 'add-triple' || action === 'retract-triple') &&\n refSwapAttrIds.has(txStep[2])\n ) {\n // Reverse links if the optimistic link attr is backwards\n const tmp = rewritten[1];\n rewritten[1] = rewritten[3];\n rewritten[3] = tmp;\n }\n return rewritten;\n}\n\nfunction explodeLookupRef(eid) {\n if (Array.isArray(eid)) {\n return eid;\n }\n const entries = Object.entries(eid);\n if (entries.length !== 1) {\n throw new Error(\n 'lookup must be an object with a single unique attr and value.',\n );\n }\n return entries[0];\n}\n\nfunction isRefLookupIdent(attrs: AttrsStore, etype: string, identName: string) {\n return (\n identName.indexOf('.') !== -1 &&\n // attr names can have `.` in them, so use the attr we find with a `.`\n // before assuming it's a ref lookup.\n !getAttrByFwdIdentName(attrs, etype, identName)\n );\n}\n\nfunction extractRefLookupFwdName(identName) {\n const [fwdName, idIdent, ...rest] = identName.split('.');\n if (rest.length > 0 || idIdent !== 'id') {\n throw new Error(`${identName} is not a valid lookup attribute.`);\n }\n\n return fwdName;\n}\n\nfunction lookupIdentToAttr(\n attrs: AttrsStore,\n etype: string,\n identName: string,\n) {\n if (!isRefLookupIdent(attrs, etype, identName)) {\n return getAttrByFwdIdentName(attrs, etype, identName);\n }\n\n const fwdName = extractRefLookupFwdName(identName);\n\n const refAttr =\n getAttrByFwdIdentName(attrs, etype, fwdName) ||\n getAttrByReverseIdentName(attrs, etype, fwdName);\n if (refAttr && refAttr['value-type'] !== 'ref') {\n throw new Error(`${identName} does not reference a valid link attribute.`);\n }\n return refAttr;\n}\n\n// Returns [attr, value] for the eid if the eid is a lookup.\n// If it's a regular eid, returns null\nfunction lookupPairOfEid(eid) {\n if (typeof eid === 'string' && !isLookup(eid)) {\n return null;\n }\n return typeof eid === 'string' && isLookup(eid)\n ? parseLookup(eid)\n : explodeLookupRef(eid);\n}\n\nfunction extractLookup(attrs: AttrsStore, etype: string, eid: string) {\n const lookupPair = lookupPairOfEid(eid);\n\n if (lookupPair === null) {\n return eid;\n }\n\n const [identName, value] = lookupPair;\n const attr = lookupIdentToAttr(attrs, etype, identName);\n if (!attr || !attr['unique?']) {\n throw new Error(`${identName} is not a unique attribute.`);\n }\n return [attr.id, value];\n}\n\nfunction withIdAttrForLookup(\n attrs: AttrsStore,\n etype: string,\n eidA: string,\n txSteps: TXStep[],\n) {\n const lookup = extractLookup(attrs, etype, eidA);\n if (!Array.isArray(lookup)) {\n return txSteps;\n }\n const idTuple = [\n 'add-triple',\n lookup,\n getAttrByFwdIdentName(attrs, etype, 'id')?.id,\n lookup,\n ];\n return [idTuple].concat(txSteps);\n}\n\nfunction expandLink({ attrsStore }: Ctx, [etype, eidA, obj]) {\n const addTriples = Object.entries(obj).flatMap(([label, eidOrEids]) => {\n const eids = Array.isArray(eidOrEids) ? eidOrEids : [eidOrEids];\n const fwdAttr = getAttrByFwdIdentName(attrsStore, etype, label);\n const revAttr = getAttrByReverseIdentName(attrsStore, etype, label);\n return eids.map((eidB) => {\n const txStep = fwdAttr\n ? [\n 'add-triple',\n extractLookup(attrsStore, etype, eidA),\n fwdAttr.id,\n // Uses `!` because if we get here, we should have created the attr if it doesn't\n // already exist\n extractLookup(attrsStore, fwdAttr['reverse-identity']![1], eidB),\n ]\n : [\n 'add-triple',\n // Uses `!` because if we get here, we should have created the attr if it doesn't\n // already exist\n extractLookup(attrsStore, revAttr!['forward-identity']![1], eidB),\n revAttr?.id,\n extractLookup(attrsStore, etype, eidA),\n ];\n return txStep;\n });\n });\n return withIdAttrForLookup(attrsStore, etype, eidA, addTriples);\n}\n\nfunction expandUnlink({ attrsStore }: Ctx, [etype, eidA, obj]) {\n const retractTriples = Object.entries(obj).flatMap(([label, eidOrEids]) => {\n const eids = Array.isArray(eidOrEids) ? eidOrEids : [eidOrEids];\n const fwdAttr = getAttrByFwdIdentName(attrsStore, etype, label);\n const revAttr = getAttrByReverseIdentName(attrsStore, etype, label);\n return eids.map((eidB) => {\n const txStep = fwdAttr\n ? [\n 'retract-triple',\n extractLookup(attrsStore, etype, eidA),\n fwdAttr.id,\n // Uses `!` because if we get here, we should have created the attr if it doesn't\n // already exist\n extractLookup(attrsStore, fwdAttr!['reverse-identity']![1], eidB),\n ]\n : [\n 'retract-triple',\n // Uses `!` because if we get here, we should have created the attr if it doesn't\n // already exist\n extractLookup(attrsStore, revAttr!['forward-identity'][1], eidB),\n revAttr!.id,\n extractLookup(attrsStore, etype, eidA),\n ];\n return txStep;\n });\n });\n return withIdAttrForLookup(attrsStore, etype, eidA, retractTriples);\n}\n\nfunction checkEntityExists(\n stores: (Store | undefined)[] | undefined,\n attrsStore: AttrsStore,\n etype: string,\n eid: string,\n) {\n if (Array.isArray(eid)) {\n // lookup ref\n const [entity_a, entity_v] = eid;\n for (const store of stores || []) {\n const ev = store?.aev.get(entity_a);\n if (ev) {\n // This would be a lot more efficient with a ave index\n for (const [_e, _a, v] of allMapValues(ev, 2)) {\n if (v === entity_v) {\n return true;\n }\n }\n }\n }\n } else {\n // eid\n for (const store of stores || []) {\n const av = store?.eav.get(eid);\n if (av) {\n for (const attr_id of av.keys()) {\n if (attrsStore.getAttr(attr_id)?.['forward-identity'][1] == etype) {\n return true;\n }\n }\n }\n }\n }\n return false;\n}\n\ntype Ctx = {\n stores?: (Store | undefined)[];\n attrsStore: AttrsStore;\n schema?: Schema;\n useDateObjects?: boolean | null;\n};\n\nfunction convertOpts({ stores, attrsStore }: Ctx, [etype, eid, obj_, opts]) {\n return opts?.upsert === false\n ? { mode: 'update' }\n : opts?.upsert === true\n ? null\n : checkEntityExists(stores, attrsStore, etype, eid)\n ? { mode: 'update' }\n : null; // auto mode chooses between update and upsert, not update and create, just in case\n}\n\nfunction expandCreate(ctx: Ctx, step) {\n const { attrsStore } = ctx;\n const [etype, eid, obj_, opts] = step;\n const obj = immutableRemoveUndefined(obj_);\n const lookup = extractLookup(attrsStore, etype, eid);\n // id first so that we don't clobber updates on the lookup field\n const attrTuples = [['id', lookup]]\n .concat(Object.entries(obj))\n .map(([identName, value]: [string, any]) => {\n // Uses `!` because we should have optimistically created the attr if it doesn't exist\n const attr = getAttrByFwdIdentName(attrsStore, etype, identName)!;\n\n if (attr['checked-data-type'] === 'date' && ctx.useDateObjects) {\n value = coerceToDate(value);\n }\n\n return ['add-triple', lookup, attr.id, value, { mode: 'create' }];\n });\n return attrTuples;\n}\n\nfunction expandUpdate(ctx: Ctx, step) {\n const { attrsStore } = ctx;\n const [etype, eid, obj_, opts] = step;\n const obj = immutableRemoveUndefined(obj_);\n const lookup = extractLookup(attrsStore, etype, eid);\n const serverOpts = convertOpts(ctx, [etype, lookup, obj_, opts]);\n // id first so that we don't clobber updates on the lookup field\n const attrTuples = [['id', lookup]]\n .concat(Object.entries(obj))\n .map(([identName, value]: [string, any]) => {\n const attr = getAttrByFwdIdentName(attrsStore, etype, identName)!;\n\n if (attr['checked-data-type'] === 'date' && ctx.useDateObjects) {\n value = coerceToDate(value);\n }\n\n return [\n 'add-triple',\n lookup,\n attr.id,\n value,\n ...(serverOpts ? [serverOpts] : []),\n ];\n });\n return attrTuples;\n}\n\nfunction expandDelete({ attrsStore }: Ctx, [etype, eid]) {\n const lookup = extractLookup(attrsStore, etype, eid);\n return [['delete-entity', lookup, etype]];\n}\n\nfunction expandDeepMerge(ctx: Ctx, step) {\n const { attrsStore } = ctx;\n const [etype, eid, obj_, opts] = step;\n const obj = immutableRemoveUndefined(obj_);\n const lookup = extractLookup(attrsStore, etype, eid);\n const serverOpts = convertOpts(ctx, [etype, lookup, obj_, opts]);\n const attrTuples = Object.entries(obj).map(([identName, value]) => {\n const attr = getAttrByFwdIdentName(attrsStore, etype, identName)!;\n return [\n 'deep-merge-triple',\n lookup,\n attr.id,\n value,\n ...(serverOpts ? [serverOpts] : []),\n ];\n });\n\n const idTuple = [\n 'add-triple',\n lookup,\n getAttrByFwdIdentName(attrsStore, etype, 'id')!.id,\n lookup,\n ...(serverOpts ? [serverOpts] : []),\n ];\n\n // id first so that we don't clobber updates on the lookup field\n return [idTuple].concat(attrTuples);\n}\n\nfunction expandRuleParams({ attrsStore }: Ctx, [etype, eid, ruleParams]) {\n const lookup = extractLookup(attrsStore, etype, eid);\n return [['rule-params', lookup, etype, ruleParams]];\n}\n\nfunction removeIdFromArgs(step) {\n const [op, etype, eid, obj, opts] = step;\n if (!obj) {\n return step;\n }\n const newObj = { ...obj };\n delete newObj.id;\n return [op, etype, eid, newObj, ...(opts ? [opts] : [])];\n}\n\nfunction toTxSteps(ctx: Ctx, step) {\n const [action, ...args] = removeIdFromArgs(step);\n switch (action) {\n case 'merge':\n return expandDeepMerge(ctx, args);\n case 'create':\n return expandCreate(ctx, args);\n case 'update':\n return expandUpdate(ctx, args);\n case 'link':\n return expandLink(ctx, args);\n case 'unlink':\n return expandUnlink(ctx, args);\n case 'delete':\n return expandDelete(ctx, args);\n case 'ruleParams':\n return expandRuleParams(ctx, args);\n default:\n throw new Error(`unsupported action ${action}`);\n }\n}\n\n// ---------\n// transform\n\nfunction checkedDataTypeOfValueType(valueType) {\n switch (valueType) {\n case 'string':\n case 'date':\n case 'boolean':\n case 'number':\n return valueType;\n default:\n return undefined;\n }\n}\n\nfunction objectPropsFromSchema(schema, etype, label) {\n const attr = schema.entities[etype]?.attrs?.[label];\n if (label === 'id') return null;\n if (!attr) {\n throw new Error(`${etype}.${label} does not exist in your schema`);\n }\n const { unique, indexed } = attr?.config;\n const checkedDataType = checkedDataTypeOfValueType(attr?.valueType);\n\n return {\n 'index?': indexed,\n 'unique?': unique,\n 'checked-data-type': checkedDataType,\n };\n}\n\nfunction createObjectAttr(schema, etype, label, props) {\n const schemaObjectProps = schema\n ? objectPropsFromSchema(schema, etype, label)\n : null;\n const attrId = uuid();\n const fwdIdentId = uuid();\n const fwdIdent = [fwdIdentId, etype, label];\n return {\n id: attrId,\n 'forward-identity': fwdIdent,\n 'value-type': 'blob',\n cardinality: 'one',\n 'unique?': false,\n 'index?': false,\n isUnsynced: true,\n ...(schemaObjectProps || {}),\n ...(props || {}),\n };\n}\n\ntype Link = LinkDef<any, any, any, any, any, any, any>;\ntype Schema = IContainEntitiesAndLinks<any, any>;\n\nfunction findSchemaLink(schema: Schema, etype, label): Link | undefined {\n const links: Link[] = Object.values(schema.links);\n const found = links.find((x: Link) => {\n return (\n (x.forward.on === etype && x.forward.label === label) ||\n (x.reverse.on === etype && x.reverse.label === label)\n );\n });\n return found;\n}\n\nfunction refPropsFromSchema(schema: Schema, etype, label) {\n const found = findSchemaLink(schema, etype, label);\n if (!found) {\n throw new Error(`Couldn't find the link ${etype}.${label} in your schema`);\n }\n const { forward, reverse } = found;\n return {\n 'forward-identity': [uuid(), forward.on, forward.label],\n 'reverse-identity': [uuid(), reverse.on, reverse.label],\n cardinality: forward.has === 'one' ? 'one' : 'many',\n 'unique?': reverse.has === 'one',\n 'on-delete': forward.onDelete,\n 'on-delete-reverse': reverse.onDelete,\n };\n}\n\nfunction createRefAttr(\n schema: Schema | undefined,\n etype: string,\n label: string,\n props?: Partial<InstantDBAttr> | undefined,\n): InstantDBAttr {\n const schemaRefProps = schema\n ? refPropsFromSchema(schema, etype, label)\n : null;\n const attrId = uuid();\n const fwdIdent: InstantDBIdent = [uuid(), etype, label];\n const revIdent: InstantDBIdent = [uuid(), label, etype];\n return {\n id: attrId,\n // @ts-ignore: ts thinks it's any[]\n 'forward-identity': fwdIdent,\n // @ts-ignore: ts thinks it's any[]\n 'reverse-identity': revIdent,\n 'value-type': 'ref',\n // @ts-ignore: ts thinks it's type string\n cardinality: 'many',\n 'unique?': false,\n 'index?': false,\n isUnsynced: true,\n ...(schemaRefProps || {}),\n ...(props || {}),\n };\n}\n\n// Actions that have an object, e.g. not delete\nconst OBJ_ACTIONS = new Set(['create', 'update', 'merge', 'link', 'unlink']);\nconst REF_ACTIONS = new Set(['link', 'unlink']);\nconst UPDATE_ACTIONS = new Set(['create', 'update', 'merge']);\nconst SUPPORTS_LOOKUP_ACTIONS = new Set([\n 'link',\n 'unlink',\n 'create',\n 'update',\n 'merge',\n 'delete',\n 'ruleParams',\n]);\n\nconst lookupProps: Partial<InstantDBAttr> = { 'unique?': true, 'index?': true };\nconst refLookupProps: Partial<InstantDBAttr> = {\n ...lookupProps,\n cardinality: 'one',\n};\n\nfunction lookupPairsOfOp(op) {\n const res: { etype: string; lookupPair: any; linkLabel?: string }[] = [];\n const [action, etype, eid, obj] = op;\n if (!SUPPORTS_LOOKUP_ACTIONS.has(action)) {\n return res;\n }\n\n const eidLookupPair = lookupPairOfEid(eid);\n if (eidLookupPair) {\n res.push({ etype: etype, lookupPair: eidLookupPair });\n }\n if (action === 'link') {\n for (const [label, eidOrEids] of Object.entries(obj)) {\n const eids = Array.isArray(eidOrEids) ? eidOrEids : [eidOrEids];\n for (const linkEid of eids) {\n const linkEidLookupPair = lookupPairOfEid(linkEid);\n if (linkEidLookupPair) {\n res.push({\n etype: etype,\n lookupPair: linkEidLookupPair,\n linkLabel: label,\n });\n }\n }\n }\n }\n return res;\n}\n\nfunction createMissingAttrs(\n { attrsStore, schema }: Ctx,\n ops,\n): [AttrsStore, TXStep[]] {\n const addedIds = new Set();\n const localAttrs: InstantDBAttr[] = [];\n const addOps: TXStep[] = [];\n\n function attrByFwdIdent(etype, label): InstantDBAttr | undefined {\n return (\n getAttrByFwdIdentName(attrsStore, etype, label) ||\n localAttrs.find(\n (x) =>\n x['forward-identity'][1] === etype &&\n x['forward-identity'][2] === label,\n )\n );\n }\n\n function attrByRevIdent(etype, label): InstantDBAttr | undefined {\n return (\n getAttrByReverseIdentName(attrsStore, etype, label) ||\n localAttrs.find(\n (x) =>\n x['reverse-identity']?.[1] === etype &&\n x['reverse-identity']?.[2] === label,\n )\n );\n }\n\n function addAttr(attr: InstantDBAttr) {\n localAttrs.push(attr);\n addOps.push(['add-attr', attr]);\n addedIds.add(attr.id);\n }\n function addUnsynced(\n attr:\n | (InstantDBAttr & { isUnsynced?: boolean })\n | InstantDBAttr\n | undefined,\n ) {\n if (\n attr &&\n 'isUnsynced' in attr &&\n attr.isUnsynced &&\n !addedIds.has(attr.id)\n ) {\n localAttrs.push(attr);\n addOps.push(['add-attr', attr]);\n addedIds.add(attr.id);\n }\n }\n\n function isRefLookupIdentLocal(etype: string, identName: string) {\n return (\n identName.indexOf('.') !== -1 &&\n // attr names can have `.` in them, so use the attr we find with a `.`\n // before assuming it's a ref lookup.\n !attrByFwdIdent(etype, identName)\n );\n }\n\n // Adds attrs needed for a ref lookup\n function addForRef(etype, label) {\n const fwdAttr = attrByFwdIdent(etype, label);\n const revAttr = attrByRevIdent(etype, label);\n addUnsynced(fwdAttr);\n addUnsynced(revAttr);\n if (!fwdAttr && !revAttr) {\n addAttr(createRefAttr(schema, etype, label, refLookupProps));\n }\n }\n\n // Create attrs for lookups if we need to\n // Do these first because otherwise we might add a non-unique attr\n // before we get to it\n for (const op of ops) {\n for (const { etype, lookupPair, linkLabel } of lookupPairsOfOp(op)) {\n const identName = lookupPair[0];\n // We got a link eid that's a lookup, linkLabel is the label of the ident,\n // e.g. `posts` in `link({posts: postIds})`\n if (linkLabel) {\n // Add our ref attr, e.g. users.posts\n addForRef(etype, linkLabel);\n\n // Figure out the link etype so we can make sure we have the attrs\n // for the link lookup\n const fwdAttr = attrByFwdIdent(etype, linkLabel);\n const revAttr = attrByRevIdent(etype, linkLabel);\n addUnsynced(fwdAttr);\n addUnsynced(revAttr);\n const linkEtype =\n fwdAttr?.['reverse-identity']?.[1] ||\n revAttr?.['forward-identity']?.[1] ||\n linkLabel;\n if (isRefLookupIdentLocal(linkEtype, identName)) {\n addForRef(linkEtype, extractRefLookupFwdName(identName));\n } else {\n const attr = attrByFwdIdent(linkEtype, identName);\n if (!attr) {\n addAttr(\n createObjectAttr(schema, linkEtype, identName, lookupProps),\n );\n }\n addUnsynced(attr);\n }\n } else if (isRefLookupIdentLocal(etype, identName)) {\n addForRef(etype, extractRefLookupFwdName(identName));\n } else {\n const attr = attrByFwdIdent(etype, identName);\n if (!attr) {\n addAttr(createObjectAttr(schema, etype, identName, lookupProps));\n }\n addUnsynced(attr);\n }\n }\n }\n\n // Create object and ref attrs\n for (const op of ops) {\n const [action, etype, eid, obj] = op;\n if (OBJ_ACTIONS.has(action)) {\n const idAttr = attrByFwdIdent(etype, 'id');\n addUnsynced(idAttr);\n if (!idAttr) {\n addAttr(createObjectAttr(schema, etype, 'id', { 'unique?': true }));\n }\n\n for (const label of Object.keys(obj)) {\n const fwdAttr = attrByFwdIdent(etype, label);\n addUnsynced(fwdAttr);\n if (UPDATE_ACTIONS.has(action)) {\n if (!fwdAttr) {\n addAttr(\n createObjectAttr(\n schema,\n etype,\n label,\n label === 'id' ? { 'unique?': true } : null,\n ),\n );\n }\n }\n if (REF_ACTIONS.has(action)) {\n const revAttr = attrByRevIdent(etype, label);\n if (!fwdAttr && !revAttr) {\n addAttr(createRefAttr(schema, etype, label));\n }\n addUnsynced(revAttr);\n }\n }\n }\n }\n\n if (localAttrs.length) {\n const nextAttrs = { ...attrsStore.attrs };\n for (const attr of localAttrs) {\n nextAttrs[attr.id] = attr;\n }\n return [new AttrsStoreClass(nextAttrs, attrsStore.linkIndex), addOps];\n }\n return [attrsStore, addOps];\n}\n\nexport function transform(ctx: Ctx, inputChunks) {\n const chunks = Array.isArray(inputChunks) ? inputChunks : [inputChunks];\n const ops = chunks.flatMap((tx) => getOps(tx));\n const [newAttrs, addAttrTxSteps] = createMissingAttrs(ctx, ops);\n const newCtx = { ...ctx, attrsStore: newAttrs };\n const txSteps = ops.flatMap((op) => toTxSteps(newCtx, op));\n return [...addAttrTxSteps, ...txSteps];\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import { query as datalogQuery } from './datalog.js';
2
- import { uuidCompare } from "./utils/uuid.js";
2
+ import { uuidCompare } from "./utils/id.js";
3
3
  import { stringCompare } from "./utils/strings.js";
4
4
  import * as s from "./store.js";
5
5
  let _seed = 0;