tinybase 4.3.0-beta.0 → 4.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (172) hide show
  1. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  2. package/lib/cjs/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  3. package/lib/cjs/persisters/persister-expo-sqlite.cjs +1 -1
  4. package/lib/cjs/persisters/persister-expo-sqlite.cjs.gz +0 -0
  5. package/lib/cjs/persisters/persister-partykit-client.cjs +1 -0
  6. package/lib/cjs/persisters/persister-partykit-client.cjs.gz +0 -0
  7. package/lib/cjs/persisters/persister-partykit-server.cjs +1 -0
  8. package/lib/cjs/persisters/persister-partykit-server.cjs.gz +0 -0
  9. package/lib/cjs/persisters/persister-sqlite-wasm.cjs +1 -1
  10. package/lib/cjs/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  11. package/lib/cjs/persisters/persister-sqlite3.cjs +1 -1
  12. package/lib/cjs/persisters/persister-sqlite3.cjs.gz +0 -0
  13. package/lib/cjs/store.cjs +1 -1
  14. package/lib/cjs/store.cjs.gz +0 -0
  15. package/lib/cjs/tinybase.cjs +1 -1
  16. package/lib/cjs/tinybase.cjs.gz +0 -0
  17. package/lib/cjs/tools.cjs +1 -1
  18. package/lib/cjs/tools.cjs.gz +0 -0
  19. package/lib/cjs/ui-react-dom-debug.cjs +1 -1
  20. package/lib/cjs/ui-react-dom-debug.cjs.gz +0 -0
  21. package/lib/cjs/ui-react-dom.cjs +1 -1
  22. package/lib/cjs/ui-react-dom.cjs.gz +0 -0
  23. package/lib/cjs/ui-react.cjs +1 -1
  24. package/lib/cjs/ui-react.cjs.gz +0 -0
  25. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs +1 -1
  26. package/lib/cjs-es6/persisters/persister-cr-sqlite-wasm.cjs.gz +0 -0
  27. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs +1 -1
  28. package/lib/cjs-es6/persisters/persister-expo-sqlite.cjs.gz +0 -0
  29. package/lib/cjs-es6/persisters/persister-partykit-client.cjs +1 -0
  30. package/lib/cjs-es6/persisters/persister-partykit-client.cjs.gz +0 -0
  31. package/lib/cjs-es6/persisters/persister-partykit-server.cjs +1 -0
  32. package/lib/cjs-es6/persisters/persister-partykit-server.cjs.gz +0 -0
  33. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs +1 -1
  34. package/lib/cjs-es6/persisters/persister-sqlite-wasm.cjs.gz +0 -0
  35. package/lib/cjs-es6/persisters/persister-sqlite3.cjs +1 -1
  36. package/lib/cjs-es6/persisters/persister-sqlite3.cjs.gz +0 -0
  37. package/lib/cjs-es6/store.cjs +1 -1
  38. package/lib/cjs-es6/store.cjs.gz +0 -0
  39. package/lib/cjs-es6/tinybase.cjs +1 -1
  40. package/lib/cjs-es6/tinybase.cjs.gz +0 -0
  41. package/lib/cjs-es6/tools.cjs +1 -1
  42. package/lib/cjs-es6/tools.cjs.gz +0 -0
  43. package/lib/cjs-es6/ui-react-dom-debug.cjs +1 -1
  44. package/lib/cjs-es6/ui-react-dom-debug.cjs.gz +0 -0
  45. package/lib/cjs-es6/ui-react-dom.cjs +1 -1
  46. package/lib/cjs-es6/ui-react-dom.cjs.gz +0 -0
  47. package/lib/cjs-es6/ui-react.cjs +1 -1
  48. package/lib/cjs-es6/ui-react.cjs.gz +0 -0
  49. package/lib/debug/persisters/persister-cr-sqlite-wasm.js +10 -7
  50. package/lib/debug/persisters/persister-expo-sqlite.js +10 -7
  51. package/lib/debug/persisters/persister-partykit-client.js +249 -0
  52. package/lib/debug/persisters/persister-partykit-server.js +161 -0
  53. package/lib/debug/persisters/persister-sqlite-wasm.js +10 -7
  54. package/lib/debug/persisters/persister-sqlite3.js +10 -7
  55. package/lib/debug/queries.js +2 -2
  56. package/lib/debug/store.js +13 -13
  57. package/lib/debug/tinybase.js +14 -14
  58. package/lib/debug/tools.js +3 -4
  59. package/lib/debug/ui-react-dom.js +35 -24
  60. package/lib/debug/ui-react.js +38 -1
  61. package/lib/es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  62. package/lib/es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  63. package/lib/es6/persisters/persister-expo-sqlite.js +1 -1
  64. package/lib/es6/persisters/persister-expo-sqlite.js.gz +0 -0
  65. package/lib/es6/persisters/persister-partykit-client.js +1 -0
  66. package/lib/es6/persisters/persister-partykit-client.js.gz +0 -0
  67. package/lib/es6/persisters/persister-partykit-server.js +1 -0
  68. package/lib/es6/persisters/persister-partykit-server.js.gz +0 -0
  69. package/lib/es6/persisters/persister-sqlite-wasm.js +1 -1
  70. package/lib/es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  71. package/lib/es6/persisters/persister-sqlite3.js +1 -1
  72. package/lib/es6/persisters/persister-sqlite3.js.gz +0 -0
  73. package/lib/es6/store.js +1 -1
  74. package/lib/es6/store.js.gz +0 -0
  75. package/lib/es6/tinybase.js +1 -1
  76. package/lib/es6/tinybase.js.gz +0 -0
  77. package/lib/es6/tools.js +1 -1
  78. package/lib/es6/tools.js.gz +0 -0
  79. package/lib/es6/ui-react-dom-debug.js +1 -1
  80. package/lib/es6/ui-react-dom-debug.js.gz +0 -0
  81. package/lib/es6/ui-react-dom.js +1 -1
  82. package/lib/es6/ui-react-dom.js.gz +0 -0
  83. package/lib/es6/ui-react.js +1 -1
  84. package/lib/es6/ui-react.js.gz +0 -0
  85. package/lib/persisters/persister-cr-sqlite-wasm.js +1 -1
  86. package/lib/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  87. package/lib/persisters/persister-expo-sqlite.js +1 -1
  88. package/lib/persisters/persister-expo-sqlite.js.gz +0 -0
  89. package/lib/persisters/persister-partykit-client.js +1 -0
  90. package/lib/persisters/persister-partykit-client.js.gz +0 -0
  91. package/lib/persisters/persister-partykit-server.js +1 -0
  92. package/lib/persisters/persister-partykit-server.js.gz +0 -0
  93. package/lib/persisters/persister-sqlite-wasm.js +1 -1
  94. package/lib/persisters/persister-sqlite-wasm.js.gz +0 -0
  95. package/lib/persisters/persister-sqlite3.js +1 -1
  96. package/lib/persisters/persister-sqlite3.js.gz +0 -0
  97. package/lib/store.js +1 -1
  98. package/lib/store.js.gz +0 -0
  99. package/lib/tinybase.js +1 -1
  100. package/lib/tinybase.js.gz +0 -0
  101. package/lib/tools.js +1 -1
  102. package/lib/tools.js.gz +0 -0
  103. package/lib/types/persisters/persister-cr-sqlite-wasm.d.ts +2 -0
  104. package/lib/types/persisters/persister-expo-sqlite.d.ts +2 -0
  105. package/lib/types/persisters/persister-partykit-client.d.ts +88 -0
  106. package/lib/types/persisters/persister-partykit-server.d.ts +114 -0
  107. package/lib/types/persisters/persister-sqlite-wasm.d.ts +2 -0
  108. package/lib/types/persisters/persister-sqlite3.d.ts +2 -0
  109. package/lib/types/store.d.ts +6 -0
  110. package/lib/types/ui-react.d.ts +187 -4
  111. package/lib/types/with-schemas/persisters/persister-cr-sqlite-wasm.d.ts +2 -0
  112. package/lib/types/with-schemas/persisters/persister-expo-sqlite.d.ts +2 -0
  113. package/lib/types/with-schemas/persisters/persister-partykit-client.d.ts +99 -0
  114. package/lib/types/with-schemas/persisters/persister-partykit-server.d.ts +114 -0
  115. package/lib/types/with-schemas/persisters/persister-sqlite-wasm.d.ts +2 -0
  116. package/lib/types/with-schemas/persisters/persister-sqlite3.d.ts +2 -0
  117. package/lib/types/with-schemas/store.d.ts +6 -0
  118. package/lib/types/with-schemas/ui-react.d.ts +223 -8
  119. package/lib/ui-react-dom.js +1 -1
  120. package/lib/ui-react-dom.js.gz +0 -0
  121. package/lib/ui-react.js +1 -1
  122. package/lib/ui-react.js.gz +0 -0
  123. package/lib/umd/persisters/persister-cr-sqlite-wasm.js +1 -1
  124. package/lib/umd/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  125. package/lib/umd/persisters/persister-expo-sqlite.js +1 -1
  126. package/lib/umd/persisters/persister-expo-sqlite.js.gz +0 -0
  127. package/lib/umd/persisters/persister-partykit-client.js +1 -0
  128. package/lib/umd/persisters/persister-partykit-client.js.gz +0 -0
  129. package/lib/umd/persisters/persister-partykit-server.js +1 -0
  130. package/lib/umd/persisters/persister-partykit-server.js.gz +0 -0
  131. package/lib/umd/persisters/persister-sqlite-wasm.js +1 -1
  132. package/lib/umd/persisters/persister-sqlite-wasm.js.gz +0 -0
  133. package/lib/umd/persisters/persister-sqlite3.js +1 -1
  134. package/lib/umd/persisters/persister-sqlite3.js.gz +0 -0
  135. package/lib/umd/store.js +1 -1
  136. package/lib/umd/store.js.gz +0 -0
  137. package/lib/umd/tinybase.js +1 -1
  138. package/lib/umd/tinybase.js.gz +0 -0
  139. package/lib/umd/tools.js +1 -1
  140. package/lib/umd/tools.js.gz +0 -0
  141. package/lib/umd/ui-react-dom-debug.js +1 -1
  142. package/lib/umd/ui-react-dom-debug.js.gz +0 -0
  143. package/lib/umd/ui-react-dom.js +1 -1
  144. package/lib/umd/ui-react-dom.js.gz +0 -0
  145. package/lib/umd/ui-react.js +1 -1
  146. package/lib/umd/ui-react.js.gz +0 -0
  147. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js +1 -1
  148. package/lib/umd-es6/persisters/persister-cr-sqlite-wasm.js.gz +0 -0
  149. package/lib/umd-es6/persisters/persister-expo-sqlite.js +1 -1
  150. package/lib/umd-es6/persisters/persister-expo-sqlite.js.gz +0 -0
  151. package/lib/umd-es6/persisters/persister-partykit-client.js +1 -0
  152. package/lib/umd-es6/persisters/persister-partykit-client.js.gz +0 -0
  153. package/lib/umd-es6/persisters/persister-partykit-server.js +1 -0
  154. package/lib/umd-es6/persisters/persister-partykit-server.js.gz +0 -0
  155. package/lib/umd-es6/persisters/persister-sqlite-wasm.js +1 -1
  156. package/lib/umd-es6/persisters/persister-sqlite-wasm.js.gz +0 -0
  157. package/lib/umd-es6/persisters/persister-sqlite3.js +1 -1
  158. package/lib/umd-es6/persisters/persister-sqlite3.js.gz +0 -0
  159. package/lib/umd-es6/store.js +1 -1
  160. package/lib/umd-es6/store.js.gz +0 -0
  161. package/lib/umd-es6/tinybase.js +1 -1
  162. package/lib/umd-es6/tinybase.js.gz +0 -0
  163. package/lib/umd-es6/tools.js +1 -1
  164. package/lib/umd-es6/tools.js.gz +0 -0
  165. package/lib/umd-es6/ui-react-dom-debug.js +1 -1
  166. package/lib/umd-es6/ui-react-dom-debug.js.gz +0 -0
  167. package/lib/umd-es6/ui-react-dom.js +1 -1
  168. package/lib/umd-es6/ui-react-dom.js.gz +0 -0
  169. package/lib/umd-es6/ui-react.js +1 -1
  170. package/lib/umd-es6/ui-react.js.gz +0 -0
  171. package/package.json +42 -31
  172. package/readme.md +13 -13
@@ -84,6 +84,7 @@ import {
84
84
  TableListener,
85
85
  Tables,
86
86
  TablesListener,
87
+ TransactionListener,
87
88
  Value,
88
89
  ValueIdsListener,
89
90
  ValueListener,
@@ -4286,6 +4287,210 @@ export type WithSchemas<Schemas extends OptionalSchemas> = {
4286
4287
  storeOrStoreId?: StoreOrStoreId<Schemas>,
4287
4288
  ) => void;
4288
4289
 
4290
+ /**
4291
+ * The useStartTransactionListener hook registers a listener function with the
4292
+ * Store that will be called at the start of a transaction.
4293
+ *
4294
+ * This has schema-based typing. The following is a simplified representation:
4295
+ *
4296
+ * ```ts override
4297
+ * useStartTransactionListener(
4298
+ * listener: TransactionListener,
4299
+ * listenerDeps?: React.DependencyList,
4300
+ * storeOrStoreId?: StoreOrStoreId,
4301
+ * ): void;
4302
+ * ```
4303
+ *
4304
+ * Unlike the addStartTransactionListener method, which returns a listener Id
4305
+ * and requires you to remove it manually, the useStartTransactionListener hook
4306
+ * manages this lifecycle for you: when the listener changes (per its
4307
+ * `listenerDeps` dependencies) or the component unmounts, the listener on the
4308
+ * underlying Store will be deleted.
4309
+ * @param listener The function that will be called at the start of a
4310
+ * transaction.
4311
+ * @param listenerDeps An optional array of dependencies for the `listener`
4312
+ * function, which, if any change, result in the re-registration of the
4313
+ * listener. This parameter defaults to an empty array.
4314
+ * @param storeOrStoreId The Store to register the listener with: omit for the
4315
+ * default context Store, provide an Id for a named context Store, or provide an
4316
+ * explicit reference.
4317
+ * @example
4318
+ * This example uses the useStartTransactionListener hook to create a listener
4319
+ * that is scoped to a single component. When the component is unmounted, the
4320
+ * listener is removed from the Store.
4321
+ *
4322
+ * ```jsx
4323
+ * const App = ({store}) => (
4324
+ * <Provider store={store}>
4325
+ * <Pane />
4326
+ * </Provider>
4327
+ * );
4328
+ * const Pane = () => {
4329
+ * useStartTransactionListener(() => console.log('Start transaction'));
4330
+ * return <span>App</span>;
4331
+ * };
4332
+ *
4333
+ * const store = createStore();
4334
+ * const app = document.createElement('div');
4335
+ * const root = ReactDOMClient.createRoot(app);
4336
+ * root.render(<App store={store} />); // !act
4337
+ * console.log(store.getListenerStats().transaction);
4338
+ * // -> 1
4339
+ *
4340
+ * store.setValue('open', false); // !act
4341
+ * // -> 'Start transaction'
4342
+ *
4343
+ * root.unmount(); // !act
4344
+ * console.log(store.getListenerStats().transaction);
4345
+ * // -> 0
4346
+ * ```
4347
+ * @category Store hooks
4348
+ * @since v4.2.2
4349
+ */
4350
+ useStartTransactionListener: (
4351
+ listener: TransactionListener<Schemas>,
4352
+ listenerDeps?: React.DependencyList,
4353
+ storeOrStoreId?: StoreOrStoreId<Schemas>,
4354
+ ) => void;
4355
+
4356
+ /**
4357
+ * The useWillFinishTransactionListener hook registers a listener function with
4358
+ * a Store that will be called just before other non-mutating listeners are
4359
+ * called at the end of the transaction.
4360
+ *
4361
+ * This has schema-based typing. The following is a simplified representation:
4362
+ *
4363
+ * ```ts override
4364
+ * useWillFinishTransactionListener(
4365
+ * listener: TransactionListener,
4366
+ * listenerDeps?: React.DependencyList,
4367
+ * storeOrStoreId?: StoreOrStoreId,
4368
+ * ): void;
4369
+ * ```
4370
+ *
4371
+ * Unlike the addWillFinisTransactionListener method, which returns a listener
4372
+ * Id and requires you to remove it manually, the
4373
+ * useWillFinishTransactionListener hook manages this lifecycle for you: when
4374
+ * the listener changes (per its `listenerDeps` dependencies) or the component
4375
+ * unmounts, the listener on the underlying Store will be deleted.
4376
+ * @param listener The function that will be called before the end of a
4377
+ * transaction.
4378
+ * @param listenerDeps An optional array of dependencies for the `listener`
4379
+ * function, which, if any change, result in the re-registration of the
4380
+ * listener. This parameter defaults to an empty array.
4381
+ * @param storeOrStoreId The Store to register the listener with: omit for the
4382
+ * default context Store, provide an Id for a named context Store, or provide an
4383
+ * explicit reference.
4384
+ * @example
4385
+ * This example uses the useWillFinishTransactionListener hook to create a
4386
+ * listener that is scoped to a single component. When the component is
4387
+ * unmounted, the listener is removed from the Store.
4388
+ *
4389
+ * ```jsx
4390
+ * const App = ({store}) => (
4391
+ * <Provider store={store}>
4392
+ * <Pane />
4393
+ * </Provider>
4394
+ * );
4395
+ * const Pane = () => {
4396
+ * useWillFinishTransactionListener(
4397
+ * () => console.log('Will finish transaction'),
4398
+ * );
4399
+ * return <span>App</span>;
4400
+ * };
4401
+ *
4402
+ * const store = createStore();
4403
+ * const app = document.createElement('div');
4404
+ * const root = ReactDOMClient.createRoot(app);
4405
+ * root.render(<App store={store} />); // !act
4406
+ * console.log(store.getListenerStats().transaction);
4407
+ * // -> 1
4408
+ *
4409
+ * store.setValue('open', false); // !act
4410
+ * // -> 'Will finish transaction'
4411
+ *
4412
+ * root.unmount(); // !act
4413
+ * console.log(store.getListenerStats().transaction);
4414
+ * // -> 0
4415
+ * ```
4416
+ * @category Store hooks
4417
+ * @since v4.2.2
4418
+ */
4419
+ useWillFinishTransactionListener: (
4420
+ listener: TransactionListener<Schemas>,
4421
+ listenerDeps?: React.DependencyList,
4422
+ storeOrStoreId?: StoreOrStoreId<Schemas>,
4423
+ ) => void;
4424
+
4425
+ /**
4426
+ * The useDidFinishTransactionListener hook registers a listener function with a
4427
+ * Store that will be called just after other non-mutating listeners are called
4428
+ * at the end of the transaction.
4429
+ *
4430
+ * This has schema-based typing. The following is a simplified representation:
4431
+ *
4432
+ * ```ts override
4433
+ * useDidFinishTransactionListener(
4434
+ * listener: TransactionListener,
4435
+ * listenerDeps?: React.DependencyList,
4436
+ * storeOrStoreId?: StoreOrStoreId,
4437
+ * ): void;
4438
+ * ```
4439
+ *
4440
+ * Unlike the addDidFinishTransactionListener method, which returns a listener
4441
+ * Id and requires you to remove it manually, the
4442
+ * useDidFinishTransactionListener hook manages this lifecycle for you: when the
4443
+ * listener changes (per its `listenerDeps` dependencies) or the component
4444
+ * unmounts, the listener on the underlying Store will be deleted.
4445
+ * @param listener The function that will be called after the end of a
4446
+ * transaction.
4447
+ * @param listenerDeps An optional array of dependencies for the `listener`
4448
+ * function, which, if any change, result in the re-registration of the
4449
+ * listener. This parameter defaults to an empty array.
4450
+ * @param storeOrStoreId The Store to register the listener with: omit for the
4451
+ * default context Store, provide an Id for a named context Store, or provide an
4452
+ * explicit reference.
4453
+ * @example
4454
+ * This example uses the useDidFinishTransactionListener hook to create a
4455
+ * listener that is scoped to a single component. When the component is
4456
+ * unmounted, the listener is removed from the Store.
4457
+ *
4458
+ * ```jsx
4459
+ * const App = ({store}) => (
4460
+ * <Provider store={store}>
4461
+ * <Pane />
4462
+ * </Provider>
4463
+ * );
4464
+ * const Pane = () => {
4465
+ * useDidFinishTransactionListener(
4466
+ * () => console.log('Did finish transaction'),
4467
+ * );
4468
+ * return <span>App</span>;
4469
+ * };
4470
+ *
4471
+ * const store = createStore();
4472
+ * const app = document.createElement('div');
4473
+ * const root = ReactDOMClient.createRoot(app);
4474
+ * root.render(<App store={store} />); // !act
4475
+ * console.log(store.getListenerStats().transaction);
4476
+ * // -> 1
4477
+ *
4478
+ * store.setValue('open', false); // !act
4479
+ * // -> 'Did finish transaction'
4480
+ *
4481
+ * root.unmount(); // !act
4482
+ * console.log(store.getListenerStats().transaction);
4483
+ * // -> 0
4484
+ * ```
4485
+ * @category Store hooks
4486
+ * @since v4.2.2
4487
+ */
4488
+ useDidFinishTransactionListener: (
4489
+ listener: TransactionListener<Schemas>,
4490
+ listenerDeps?: React.DependencyList,
4491
+ storeOrStoreId?: StoreOrStoreId<Schemas>,
4492
+ ) => void;
4493
+
4289
4494
  /**
4290
4495
  * The useCreateMetrics hook is used to create a Metrics object within a React
4291
4496
  * application with convenient memoization.
@@ -9909,13 +10114,15 @@ export type WithSchemas<Schemas extends OptionalSchemas> = {
9909
10114
  * This has schema-based typing. The following is a simplified representation:
9910
10115
  *
9911
10116
  * ```ts override
9912
- * useCreatePersister(
10117
+ * useCreatePersister<
10118
+ * PersisterOrUndefined extends Persister | undefined,
10119
+ * >(
9913
10120
  * store: Store,
9914
- * create: (store: Store) => Persister,
10121
+ * create: (store: Store) => PersisterOrUndefined,
9915
10122
  * createDeps?: React.DependencyList,
9916
- * then?: (persister: Persister) => Promise<void>,
10123
+ * then?: (persister: PersisterOrUndefined) => Promise<void>,
9917
10124
  * thenDeps?: React.DependencyList,
9918
- * ): Persister;
10125
+ * ): PersisterOrUndefined;
9919
10126
  * ```
9920
10127
  *
9921
10128
  * It is possible to create a Persister outside of the React app with the
@@ -9940,6 +10147,12 @@ export type WithSchemas<Schemas extends OptionalSchemas> = {
9940
10147
  * an array in the fifth parameter. The Persister itself is used as a dependency
9941
10148
  * by default.
9942
10149
  *
10150
+ * Since v4.3.0, the `create` function can return undefined, meaning that you
10151
+ * can enable or disable persistence conditionally within this hook. This is
10152
+ * useful for applications which might turn on or off their cloud persistence or
10153
+ * collaboration features. As a result, the `then` callback may also get passed
10154
+ * undefined, which you should handle accordingly.
10155
+ *
9943
10156
  * This hook ensures the Persister object is destroyed whenever a new one is
9944
10157
  * created or the component is unmounted.
9945
10158
  * @param store A reference to the Store for which to create a new Persister
@@ -10050,13 +10263,15 @@ export type WithSchemas<Schemas extends OptionalSchemas> = {
10050
10263
  * ```
10051
10264
  * @category Persister hooks
10052
10265
  */
10053
- useCreatePersister: (
10266
+ useCreatePersister: <
10267
+ PersisterOrUndefined extends Persister<Schemas> | undefined,
10268
+ >(
10054
10269
  store: Store<Schemas>,
10055
- create: (store: Store<Schemas>) => Persister<Schemas>,
10270
+ create: (store: Store<Schemas>) => PersisterOrUndefined,
10056
10271
  createDeps?: React.DependencyList,
10057
- then?: (persister: Persister<Schemas>) => Promise<void>,
10272
+ then?: (persister?: PersisterOrUndefined) => Promise<void>,
10058
10273
  thenDeps?: React.DependencyList,
10059
- ) => Persister<Schemas>;
10274
+ ) => PersisterOrUndefined;
10060
10275
 
10061
10276
  /**
10062
10277
  * The ExtraProps type represents a set of arbitrary additional props.
@@ -1 +1 @@
1
- import e from"react";import{useRowIds as t,useTableCellIds as l,useRowCount as a,useSortedRowIds as n,useValueIds as o,ValueView as r,useIndexesOrIndexesById as i,useSliceRowIds as s,useRelationshipsOrRelationshipsById as d,useResultRowIds as m,useResultTableCellIds as u,useResultRowCount as h,useResultSortedRowIds as c,useCell as g,useSetCellCallback as b,useStoreOrStoreById as p,useValue as f,useSetValueCallback as w,useRemoteRowId as k,CellView as v,ResultCellView as y}from"./ui-react";const C=e=>typeof e,x=C(""),I=C(!0),N=C(0),z="Value",M="currentTarget",$="value",S=isFinite,T=e=>null==e,{PureComponent:R,Fragment:q,createElement:F,useCallback:P,useLayoutEffect:E,useRef:O,useState:V}=e,j=(e,...t)=>T(e)?{}:e(...t),A=(e,t)=>e.map(t),B=Object,L=(e=[])=>B.fromEntries(e),D=(e,t)=>A(B.entries(e),(([e,l])=>t(l,e))),G="M20 80l5-15l40-40l10 10l-40 40l-15 5m5-15l10 10",H='content:url("',J=H+"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' stroke-width='4' stroke='white' fill='none'>",K='</svg>")',Q=H+"data:image/svg+xml,%3csvg viewBox='0 0 680 680' xmlns='http://www.w3.org/2000/svg' style='width:680px%3bheight:680px'%3e %3cpath stroke='white' stroke-width='80' fill='none' d='M340 617a84 241 90 11.01 0zM131 475a94 254 70 10428-124 114 286 70 01-428 124zm0-140a94 254 70 10428-124 114 286 70 01-428 124zm-12-127a94 254 70 00306 38 90 260 90 01-306-38zm221 3a74 241 90 11.01 0z' /%3e %3cpath fill='%23d81b60' d='M131 475a94 254 70 10428-124 114 286 70 01-428 124zm0-140a94 254 70 10428-124 114 286 70 01-428 124z' /%3e %3cpath d='M249 619a94 240 90 00308-128 114 289 70 01-308 128zM119 208a94 254 70 00306 38 90 260 90 01-306-38zm221 3a74 241 90 11.01 0z' /%3e%3c/svg%3e\")",U=A([[20,20,20,60],[20,20,60,20],[20,60,60,20],[60,20,20,60],[30,30,40,40]],(([e,t,l,a])=>J+`<rect x='20' y='20' width='60' height='60' fill='grey'/><rect x='${e}' y='${t}' width='${l}' height='${a}' fill='white'/>`+K)),W=J+"<path d='M20 20l60 60M20 80l60-60' />"+K,X=J+`<path d='${G}' />`+K,Y=J+`<path d='${G}M20 20l60 60' />`+K,Z="*::-webkit-scrollbar";((e,t="")=>{e.join(t)})(D({"*":"all:revert","*::before":"all:revert","*::after":"all:revert",[Z]:"width:0.5rem;height:0.5rem;",[Z+"-track"]:"background:#111",[Z+"-thumb"]:"background:#999;border:1px solid #111",[Z+"-thumb:hover"]:"background:#fff",[Z+"-corner"]:"background:#111",img:"width:1rem;height:1rem;background:#111;border:0;vertical-align:text-bottom",">img":"padding:0.25rem;bottom:0;right:0;position:fixed;"+Q,...L(A(["bottom:0;left:0","top:0;right:0"],((e,t)=>[`>img[data-position='${t}']`,e]))),main:"display:flex;flex-direction:column;background:#111d;color:#fff;position:fixed;",...L(A(["bottom:0;left:0;width:35vw;height:100vh","top:0;right:0;width:100vw;height:30vh","bottom:0;left:0;width:100vw;height:30vh","top:0;right:0;width:35vw;height:100vh","top:0;right:0;width:100vw;height:100vh"],((e,t)=>[`main[data-position='${t}']`,e]))),header:"display:flex;padding:0.25rem;background:#000;align-items:center","header>img:nth-of-type(1)":Q,"header>img:nth-of-type(6)":W,...L(A(U,((e,t)=>[`header>img[data-id='${t}']`,e]))),"header>span":"flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin-left:0.25rem",article:"padding:0.25rem 0.25rem 0.25rem 0.5rem;overflow:auto;flex:1",details:"margin-left:0.75rem;width:fit-content;","details img":"display:none","details[open]>summary img":"display:unset;background:none;margin-left:0.25rem","details[open]>summary img.edit":X,"details[open]>summary img.done":Y,summary:"margin-left:-0.75rem;line-height:1.25rem;user-select:none;width:fit-content",table:"border-collapse:collapse;table-layout:fixed;margin-bottom:0.5rem","table input":"background:#111;color:unset;padding:0 0.25rem;border:0;font-size:unset;vertical-align:top;margin:0",'table input[type="number"]':"width:4rem","table tbody button":"font-size:0;background:#fff;border-radius:50%;margin:0 0.125rem 0 0;width:0.85rem;color:#111","table button:first-letter":"font-size:0.75rem",thead:"background:#222","th:nth-of-type(1)":"min-width:2rem;","th.sorted":"background:#000","table caption":"text-align:left;white-space:nowrap;line-height:1.25rem",button:"width:1.5rem;border:none;background:none;color:#fff;padding:0","button[disabled]":"color:#777","button.next":"margin-right:0.5rem","th,td":"overflow:hidden;text-overflow:ellipsis;padding:0.25rem 0.5rem;max-width:12rem;white-space:nowrap;border-width:1px 0;border-style:solid;border-color:#777;text-align:left","span.warn":"margin:0.25rem;color:#d81b60"},((e,t)=>e?`& ${t}{${e}}`:"")));const _=(e,t,l,a)=>e==x?t:e==N?l:a,{useCallback:ee,useMemo:te,useState:le}=e,ae="editable",ne=(e,t)=>A(l(e,t),(t=>e+"."+t)),oe=(e,t,l)=>{const a=ee(e,t);return l?a:void 0},re=(...e)=>te((()=>e),e),ie=(e,t)=>te((()=>({store:e,tableId:t})),[e,t]),se=(e,t)=>te((()=>({queries:e,queryId:t})),[e,t]),de=(e,t=!1,l,a=0,n,o,r,i)=>{const[[s,d,m],u]=le([e,t,a]),h=ee((e=>{u(e),i?.(e)}),[i]),c=oe((e=>h([e,e==s&&!d,m])),[h,s,d,m],l),g=ee((e=>h([s,d,e])),[h,s,d]),b=!0===r?Ie:r;return[[s,d,m],c,te((()=>!1===r?null:F(b,{offset:m,limit:n,total:o,onChange:g})),[r,b,m,n,o,g])]},me=(e,t,l)=>te((()=>{const a=t??e;return L(D(Array.isArray(a)?L(A(a,(e=>[e,e]))):a,((e,t)=>{return[t,{label:t,component:l,...(a=e,C(a)==x?{label:e}:e)}];var a})))}),[t,l,e]),ue=({className:e,headerRow:t,idColumn:l,params:[a,n,o,r,i,s]})=>F("table",{className:e},s?F("caption",null,s):null,!1===t?null:F("thead",null,F("tr",null,!1===l?null:F(he,{sort:r??[],label:"Id",onClick:i}),D(a,(({label:e},t)=>F(he,{key:t,cellId:t,label:e,sort:r??[],onClick:i}))))),F("tbody",null,A(o,(e=>F("tr",{key:e},!1===l?null:F("th",null,e),D(a,(({component:t,getComponentProps:l},a)=>F("td",{key:a},F(t,{...j(l,e,a),...n,rowId:e,cellId:a}))))))))),he=({cellId:e,sort:[t,l],label:a=e??"",onClick:n})=>F("th",{onClick:oe((()=>n?.(e)),[n,e],n),className:T(l)||t!=e?void 0:`sorted ${l?"de":"a"}scending`},T(l)||t!=e?null:(l?"↓":"↑")+" ",a),ce=({localRowId:t,params:[l,a,n,o,r,i,s]})=>{const d=k(r,t,i);return F("tr",null,!1===l?null:F(e.Fragment,null,F("th",null,t),F("th",null,d)),D(a,(({component:e,getComponentProps:l},a)=>{const[r,i]=a.split(".",2),m=r===n?t:r===o?d:null;return T(m)?null:F("td",{key:a},F(e,{...j(l,m,i),store:s,tableId:r,rowId:m,cellId:i}))})))},ge=({thing:e,onThingChange:t,className:l,hasSchema:a})=>{const[n,o]=le(),[r,i]=le(),[s,d]=le(),[m,u]=le(),[h,c]=le();r!==e&&(o((e=>{const t=C(e);return(e=>e==x||e==I)(t)||t==N&&S(e)?t:void 0})(e)),i(e),d(e+""),u(Number(e)||0),c(!!e));const g=ee(((e,l)=>{l(e),i(e),t(e)}),[t]);return F("div",{className:l},F("button",{className:n,onClick:ee((()=>{if(!a?.()){const e=_(n,N,I,x),l=_(e,s,m,h);o(e),i(l),t(l)}}),[a,t,s,m,h,n])},n),_(n,F("input",{key:n,value:s,onChange:ee((e=>g(e[M][$]+"",d)),[g])}),F("input",{key:n,type:"number",value:m,onChange:ee((e=>g(Number(e[M][$]||0),u)),[g])}),F("input",{key:n,type:"checkbox",checked:h,onChange:ee((e=>g(!!e[M].checked,c)),[g])})))},be=({tableId:e,store:a,editable:n,customCells:o,...r})=>F(ue,{...r,params:re(me(l(e,a),o,n?Ce:v),ie(a,e),t(e,a))}),pe=({tableId:e,cellId:t,descending:o,offset:r,limit:i,store:s,editable:d,sortOnClick:m,paginator:u=!1,onChange:h,customCells:c,...g})=>{const[b,p,f]=de(t,o,m,r,i,a(e,s),u,h);return F(ue,{...g,params:re(me(l(e,s),c,d?Ce:v),ie(s,e),n(e,...b,i,s),b,p,f)})},fe=({store:e,editable:t=!1,valueComponent:l=(t?xe:r),getValueComponentProps:a,className:n,headerRow:i,idColumn:s})=>F("table",{className:n},!1===i?null:F("thead",null,F("tr",null,!1===s?null:F("th",null,"Id"),F("th",null,z))),F("tbody",null,A(o(e),(t=>F("tr",{key:t},!1===s?null:F("th",null,t),F("td",null,F(l,{...j(a,t),valueId:t,store:e}))))))),we=({indexId:e,sliceId:t,indexes:a,editable:n,customCells:o,...r})=>{const[d,m,u]=((e,t)=>[e,e?.getStore(),e?.getTableId(t)])(i(a),e);return F(ue,{...r,params:re(me(l(u,m),o,n?Ce:v),ie(m,u),s(e,t,d))})},ke=({relationshipId:l,relationships:a,editable:n,customCells:o,className:r,headerRow:i,idColumn:s=!0})=>{const[m,u,h,c]=((e,t)=>[e,e?.getStore(),e?.getLocalTableId(t),e?.getRemoteTableId(t)])(d(a),l),g=me([...ne(h,u),...ne(c,u)],o,n?Ce:v),b=re(s,g,h,c,l,m,u);return F("table",{className:r},!1===i?null:F("thead",null,F("tr",null,!1===s?null:F(e.Fragment,null,F("th",null,h,".Id"),F("th",null,c,".Id")),D(g,(({label:e},t)=>F("th",{key:t},e))))),F("tbody",null,A(t(h,u),(e=>F(ce,{key:e,localRowId:e,params:b})))))},ve=({queryId:e,queries:t,customCells:l,...a})=>F(ue,{...a,params:re(me(u(e,t),l,y),se(t,e),m(e,t))}),ye=({queryId:e,cellId:t,descending:l,offset:a,limit:n,queries:o,sortOnClick:r,paginator:i=!1,customCells:s,onChange:d,...m})=>{const[g,b,p]=de(t,l,r,a,n,h(e,o),i,d);return F(ue,{...m,params:re(me(u(e,o),s,y),se(o,e),c(e,...g,n,o),g,b,p)})},Ce=({tableId:e,rowId:t,cellId:l,store:a,className:n})=>F(ge,{thing:g(e,t,l,a),onThingChange:b(e,t,l,(e=>e),[],a),className:n??ae+"Cell",hasSchema:p(a)?.hasTablesSchema}),xe=({valueId:e,store:t,className:l})=>F(ge,{thing:f(e,t),onThingChange:w(e,(e=>e),[],t),className:l??ae+z,hasSchema:p(t)?.hasValuesSchema}),Ie=({onChange:t,total:l,offset:a=0,limit:n=l,singular:o="row",plural:r=o+"s"})=>{(a>l||a<0)&&(a=0,t(0));const i=oe((()=>t(a-n)),[t,a,n],a>0),s=oe((()=>t(a+n)),[t,a,n],a+n<l);return F(e.Fragment,null,l>n&&F(e.Fragment,null,F("button",{className:"previous",disabled:0==a,onClick:i},"←"),F("button",{className:"next",disabled:a+n>=l,onClick:s},"→"),a+1," to ",Math.min(l,a+n)," of "),l," ",1!=l?r:o)},Ne=e=>new Map(e);Ne(),Ne();const ze=e=>null;export{Ce as EditableCellView,xe as EditableValueView,ke as RelationshipInHtmlTable,ye as ResultSortedTableInHtmlTable,ve as ResultTableInHtmlTable,we as SliceInHtmlTable,pe as SortedTableInHtmlTable,Ie as SortedTablePaginator,ze as StoreInspector,be as TableInHtmlTable,fe as ValuesInHtmlTable};
1
+ import e from"react";import{useRowIds as t,useTableCellIds as l,useRowCount as a,useSortedRowIds as n,useValueIds as o,ValueView as r,useIndexesOrIndexesById as i,useSliceRowIds as s,useRelationshipsOrRelationshipsById as d,useResultRowIds as m,useResultTableCellIds as c,useResultRowCount as h,useResultSortedRowIds as u,useCell as g,useSetCellCallback as p,useStoreOrStoreById as b,useValue as f,useSetValueCallback as w,useRemoteRowId as k,CellView as v,ResultCellView as y}from"./ui-react";const C=e=>typeof e,x=C(""),I=C(!0),N=C(0),z="Value",M="currentTarget",$="value",S=isFinite,T=e=>null==e,{PureComponent:F,Fragment:R,createElement:q,useCallback:E,useLayoutEffect:P,useRef:O,useState:V}=e,j=(e,...t)=>T(e)?{}:e(...t),A=(e,t)=>e.map(t),B=Object,D=(e=[])=>B.fromEntries(e),L=(e,t)=>A(B.entries(e),(([e,l])=>t(l,e))),G="M20 80l5-15l40-40l10 10l-40 40l-15 5m5-15l10 10",H='content:url("',J=H+"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' stroke-width='4' stroke='white' fill='none'>",K='</svg>")',Q=H+"data:image/svg+xml,%3csvg viewBox='0 0 680 680' xmlns='http://www.w3.org/2000/svg' style='width:680px%3bheight:680px'%3e %3cpath stroke='white' stroke-width='80' fill='none' d='M340 617a84 241 90 11.01 0zM131 475a94 254 70 10428-124 114 286 70 01-428 124zm0-140a94 254 70 10428-124 114 286 70 01-428 124zm-12-127a94 254 70 00306 38 90 260 90 01-306-38zm221 3a74 241 90 11.01 0z' /%3e %3cpath fill='%23d81b60' d='M131 475a94 254 70 10428-124 114 286 70 01-428 124zm0-140a94 254 70 10428-124 114 286 70 01-428 124z' /%3e %3cpath d='M249 619a94 240 90 00308-128 114 289 70 01-308 128zM119 208a94 254 70 00306 38 90 260 90 01-306-38zm221 3a74 241 90 11.01 0z' /%3e%3c/svg%3e\")",U=A([[20,20,20,60],[20,20,60,20],[20,60,60,20],[60,20,20,60],[30,30,40,40]],(([e,t,l,a])=>J+`<rect x='20' y='20' width='60' height='60' fill='grey'/><rect x='${e}' y='${t}' width='${l}' height='${a}' fill='white'/>`+K)),W=J+"<path d='M20 20l60 60M20 80l60-60' />"+K,X=J+`<path d='${G}' />`+K,Y=J+`<path d='${G}M20 20l60 60' />`+K,Z="*::-webkit-scrollbar";((e,t="")=>{e.join(t)})(L({"*":"all:revert","*::before":"all:revert","*::after":"all:revert",[Z]:"width:0.5rem;height:0.5rem;",[Z+"-track"]:"background:#111",[Z+"-thumb"]:"background:#999;border:1px solid #111",[Z+"-thumb:hover"]:"background:#fff",[Z+"-corner"]:"background:#111",img:"width:1rem;height:1rem;background:#111;border:0;vertical-align:text-bottom",">img":"padding:0.25rem;bottom:0;right:0;position:fixed;"+Q,...D(A(["bottom:0;left:0","top:0;right:0"],((e,t)=>[`>img[data-position='${t}']`,e]))),main:"display:flex;flex-direction:column;background:#111d;color:#fff;position:fixed;",...D(A(["bottom:0;left:0;width:35vw;height:100vh","top:0;right:0;width:100vw;height:30vh","bottom:0;left:0;width:100vw;height:30vh","top:0;right:0;width:35vw;height:100vh","top:0;right:0;width:100vw;height:100vh"],((e,t)=>[`main[data-position='${t}']`,e]))),header:"display:flex;padding:0.25rem;background:#000;align-items:center","header>img:nth-of-type(1)":Q,"header>img:nth-of-type(6)":W,...D(A(U,((e,t)=>[`header>img[data-id='${t}']`,e]))),"header>span":"flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin-left:0.25rem",article:"padding:0.25rem 0.25rem 0.25rem 0.5rem;overflow:auto;flex:1",details:"margin-left:0.75rem;width:fit-content;","details img":"display:none","details[open]>summary img":"display:unset;background:none;margin-left:0.25rem","details[open]>summary img.edit":X,"details[open]>summary img.done":Y,summary:"margin-left:-0.75rem;line-height:1.25rem;user-select:none;width:fit-content",table:"border-collapse:collapse;table-layout:fixed;margin-bottom:0.5rem","table input":"background:#111;color:unset;padding:0 0.25rem;border:0;font-size:unset;vertical-align:top;margin:0",'table input[type="number"]':"width:4rem","table tbody button":"font-size:0;background:#fff;border-radius:50%;margin:0 0.125rem 0 0;width:0.85rem;color:#111","table button:first-letter":"font-size:0.75rem",thead:"background:#222","th:nth-of-type(1)":"min-width:2rem;","th.sorted":"background:#000","table caption":"text-align:left;white-space:nowrap;line-height:1.25rem",button:"width:1.5rem;border:none;background:none;color:#fff;padding:0","button[disabled]":"color:#777","button.next":"margin-right:0.5rem","th,td":"overflow:hidden;text-overflow:ellipsis;padding:0.25rem 0.5rem;max-width:12rem;white-space:nowrap;border-width:1px 0;border-style:solid;border-color:#777;text-align:left","span.warn":"margin:0.25rem;color:#d81b60"},((e,t)=>e?`& ${t}{${e}}`:"")));const _=(e,t,l,a)=>e==x?t:e==N?l:a,{useCallback:ee,useMemo:te,useState:le}=e,ae="editable",ne=(e,t)=>A(l(e,t),(t=>e+"."+t)),oe=(e,t,l)=>{const a=ee(e,t);return l?a:void 0},re=(...e)=>te((()=>e),e),ie=(e,t)=>te((()=>({store:e,tableId:t})),[e,t]),se=(e,t)=>te((()=>({queries:e,queryId:t})),[e,t]),de=(e,t=!1,l,a=0,n,o,r,i)=>{const[[s,d,m],c]=le([e,t,a]),h=ee((e=>{c(e),i?.(e)}),[i]),u=oe((e=>h([e,e==s&&!d,m])),[h,s,d,m],l),g=ee((e=>h([s,d,e])),[h,s,d]),p=!0===r?Ie:r;return[[s,d,m],u,te((()=>!1===r?null:q(p,{offset:m,limit:n,total:o,onChange:g})),[r,p,m,n,o,g])]},me=(e,t,l)=>te((()=>{const a=t??e;return D(L(Array.isArray(a)?D(A(a,(e=>[e,e]))):a,((e,t)=>{return[t,{label:t,component:l,...(a=e,C(a)==x?{label:e}:e)}];var a})))}),[t,l,e]),ce=({className:e,headerRow:t,idColumn:l,params:[a,n,o,r,i,s]})=>q("table",{className:e},s?q("caption",null,s):null,!1===t?null:q("thead",null,q("tr",null,!1===l?null:q(he,{sort:r??[],label:"Id",onClick:i}),L(a,(({label:e},t)=>q(he,{key:t,cellId:t,label:e,sort:r??[],onClick:i}))))),q("tbody",null,A(o,(e=>q("tr",{key:e},!1===l?null:q("th",null,e),L(a,(({component:t,getComponentProps:l},a)=>q("td",{key:a},q(t,{...j(l,e,a),...n,rowId:e,cellId:a}))))))))),he=({cellId:e,sort:[t,l],label:a=e??"",onClick:n})=>q("th",{onClick:oe((()=>n?.(e)),[n,e],n),className:T(l)||t!=e?void 0:`sorted ${l?"de":"a"}scending`},T(l)||t!=e?null:(l?"↓":"↑")+" ",a),ue=({localRowId:t,params:[l,a,n,o,r,i,s]})=>{const d=k(r,t,i);return q("tr",null,!1===l?null:q(e.Fragment,null,q("th",null,t),q("th",null,d)),L(a,(({component:e,getComponentProps:l},a)=>{const[r,i]=a.split(".",2),m=r===n?t:r===o?d:null;return T(m)?null:q("td",{key:a},q(e,{...j(l,m,i),store:s,tableId:r,rowId:m,cellId:i}))})))},ge=({thing:e,onThingChange:t,className:l,hasSchema:a})=>{const[n,o]=le(),[r,i]=le(),[s,d]=le(),[m,c]=le(),[h,u]=le();r!==e&&(o((e=>{const t=C(e);return(e=>e==x||e==I)(t)||t==N&&S(e)?t:void 0})(e)),i(e),d(e+""),c(Number(e)||0),u(!!e));const g=ee(((e,l)=>{l(e),i(e),t(e)}),[t]);return q("div",{className:l},q("button",{className:n,onClick:ee((()=>{if(!a?.()){const e=_(n,N,I,x),l=_(e,s,m,h);o(e),i(l),t(l)}}),[a,t,s,m,h,n])},n),_(n,q("input",{key:n,value:s,onChange:ee((e=>g(e[M][$]+"",d)),[g])}),q("input",{key:n,type:"number",value:m,onChange:ee((e=>g(Number(e[M][$]||0),c)),[g])}),q("input",{key:n,type:"checkbox",checked:h,onChange:ee((e=>g(!!e[M].checked,u)),[g])})))},pe=({tableId:e,store:a,editable:n,customCells:o,...r})=>q(ce,{...r,params:re(me(l(e,a),o,n?Ce:v),ie(a,e),t(e,a))}),be=({tableId:e,cellId:t,descending:o,offset:r,limit:i,store:s,editable:d,sortOnClick:m,paginator:c=!1,onChange:h,customCells:u,...g})=>{const[p,b,f]=de(t,o,m,r,i,a(e,s),c,h);return q(ce,{...g,params:re(me(l(e,s),u,d?Ce:v),ie(s,e),n(e,...p,i,s),p,b,f)})},fe=({store:e,editable:t=!1,valueComponent:l=(t?xe:r),getValueComponentProps:a,className:n,headerRow:i,idColumn:s})=>q("table",{className:n},!1===i?null:q("thead",null,q("tr",null,!1===s?null:q("th",null,"Id"),q("th",null,z))),q("tbody",null,A(o(e),(t=>q("tr",{key:t},!1===s?null:q("th",null,t),q("td",null,q(l,{...j(a,t),valueId:t,store:e}))))))),we=({indexId:e,sliceId:t,indexes:a,editable:n,customCells:o,...r})=>{const[d,m,c]=((e,t)=>[e,e?.getStore(),e?.getTableId(t)])(i(a),e);return q(ce,{...r,params:re(me(l(c,m),o,n?Ce:v),ie(m,c),s(e,t,d))})},ke=({relationshipId:l,relationships:a,editable:n,customCells:o,className:r,headerRow:i,idColumn:s=!0})=>{const[m,c,h,u]=((e,t)=>[e,e?.getStore(),e?.getLocalTableId(t),e?.getRemoteTableId(t)])(d(a),l),g=me([...ne(h,c),...ne(u,c)],o,n?Ce:v),p=re(s,g,h,u,l,m,c);return q("table",{className:r},!1===i?null:q("thead",null,q("tr",null,!1===s?null:q(e.Fragment,null,q("th",null,h,".Id"),q("th",null,u,".Id")),L(g,(({label:e},t)=>q("th",{key:t},e))))),q("tbody",null,A(t(h,c),(e=>q(ue,{key:e,localRowId:e,params:p})))))},ve=({queryId:e,queries:t,customCells:l,...a})=>q(ce,{...a,params:re(me(c(e,t),l,y),se(t,e),m(e,t))}),ye=({queryId:e,cellId:t,descending:l,offset:a,limit:n,queries:o,sortOnClick:r,paginator:i=!1,customCells:s,onChange:d,...m})=>{const[g,p,b]=de(t,l,r,a,n,h(e,o),i,d);return q(ce,{...m,params:re(me(c(e,o),s,y),se(o,e),u(e,...g,n,o),g,p,b)})},Ce=({tableId:e,rowId:t,cellId:l,store:a,className:n})=>q(ge,{thing:g(e,t,l,a),onThingChange:p(e,t,l,(e=>e),[],a),className:n??ae+"Cell",hasSchema:b(a)?.hasTablesSchema}),xe=({valueId:e,store:t,className:l})=>q(ge,{thing:f(e,t),onThingChange:w(e,(e=>e),[],t),className:l??ae+z,hasSchema:b(t)?.hasValuesSchema}),Ie=({onChange:t,total:l,offset:a=0,limit:n=l,singular:o="row",plural:r=o+"s"})=>{(a>l||a<0)&&(a=0,t(0));const i=oe((()=>t(a-n)),[t,a,n],a>0),s=oe((()=>t(a+n)),[t,a,n],a+n<l);return q(e.Fragment,null,l>n&&q(e.Fragment,null,q("button",{className:"previous",disabled:0==a,onClick:i},"←"),q("button",{className:"next",disabled:a+n>=l,onClick:s},"→"),a+1," to ",Math.min(l,a+n)," of "),l," ",1!=l?r:o)};class Ne extends F{constructor(e){super(e),this.componentDidCatch=(e,t)=>console.error(e,t.componentStack),this.state={e:0}}static{this.getDerivedStateFromError=()=>({e:1})}render(){return this.state.e?q("span",{className:"warn"},"Inspector error: please see console for details."):this.props.children}}const ze=e=>new Map(e);ze(),ze();const Me=e=>null;export{Ce as EditableCellView,xe as EditableValueView,ke as RelationshipInHtmlTable,ye as ResultSortedTableInHtmlTable,ve as ResultTableInHtmlTable,we as SliceInHtmlTable,be as SortedTableInHtmlTable,Ie as SortedTablePaginator,Me as StoreInspector,pe as TableInHtmlTable,fe as ValuesInHtmlTable};
Binary file
package/lib/ui-react.js CHANGED
@@ -1 +1 @@
1
- import e,{useContext as t}from"react";const o=e=>typeof e,s="",r=o(s),d="Result",n="Ids",I="Table",u=I+"s",l=I+n,i="Row",c=i+"Count",a=i+n,p="Sorted"+i+n,g="Cell",b=g+n,C="Value",m=C+"s",k=C+n,y=e=>null==e,w=(e,t,o)=>y(e)?o?.():t(e),h=e=>o(e)==r,R=()=>{},v=(e,t)=>e.map(t),q=Object.keys,{createContext:P,useContext:f}=e,x=P([]),S=(e,t)=>{const o=f(x);return y(e)?o[t]:h(e)?((e,t)=>w(e,(e=>e[t])))(o[t+1]??{},e):e},L=(e,t)=>{const o=S(e,t);return y(e)||h(e)?o:e},B=e=>q(f(x)[e]??{}),T=e=>S(e,0),M=e=>L(e,0),E=e=>S(e,2),V=e=>L(e,2),A=e=>S(e,4),F=e=>L(e,4),j=e=>S(e,6),O=e=>L(e,6),Q=e=>S(e,8),z=e=>L(e,8),D=e=>S(e,10),G=e=>L(e,10),{useCallback:H,useEffect:J,useMemo:K,useRef:N,useState:U}=e,W=(e,t,o=[])=>{const s=K((()=>t(e)),[e,...o]);return J((()=>()=>s.destroy()),[s]),s},X=(e,t,o,s=[],r)=>{const[,d]=U(),n=H((()=>t?.["get"+e]?.(...s)??o),[t,...s]),[I]=U(n),u=N(I);return K((()=>u.current=n()),[n]),Y(e,t,((...e)=>{u.current=y(r)?n():e[r],d([])}),[],s),u.current},Y=(e,t,o,s=[],r=[],...d)=>J((()=>{const s=t?.["add"+e+"Listener"]?.(...r,o,...d);return()=>t?.delListener(s)}),[t,...r,...s,...d]),Z=(e,t,o,s=[],r=R,d=[],...n)=>{const I=M(e);return H((e=>w(I,(s=>w(o(e,s),(e=>r(s["set"+t](...n,e),e)))))),[I,t,...s,...d,...n])},$=(e,t,o=R,s=[],...r)=>{const d=M(e);return H((()=>o(d?.["del"+t](...r))),[d,t,...s,...r])},_=(e,t,o)=>{const s=G(e);return H((()=>s?.[t](o)),[s,t,o])},ee=(e,t=[])=>K(e,t),te=()=>B(1),oe=e=>X(u,M(e),{}),se=e=>X(l,M(e),[],[]),re=(e,t)=>X(I,M(t),{},[e]),de=(e,t)=>X(I+b,M(t),[],[e]),ne=(e,t)=>X(c,M(t),[],[e]),Ie=(e,t)=>X(a,M(t),[],[e]),ue=(e,t,o,s=0,r,d)=>X(p,M(d),[],[e,t,o,s,r],6),le=(e,t,o)=>X(i,M(o),{},[e,t]),ie=(e,t,o)=>X(b,M(o),[],[e,t]),ce=(e,t,o,s)=>X(g,M(s),void 0,[e,t,o],4),ae=e=>X(m,M(e),{}),pe=e=>X(k,M(e),[],[]),ge=(e,t)=>X(C,M(t),void 0,[e]),be=(e,t,o,s,r)=>Z(o,u,e,t,s,r),Ce=(e,t,o,s,r,d)=>Z(s,I,t,o,r,d,e),me=(e,t,o,s,r,d,n)=>Z(r,i,o,s,d,n,e,t),ke=(e,t,o=[],s,r=R,d=[],n=!0)=>{const I=M(s);return H((o=>w(I,(s=>w(t(o,s),(t=>r(s.addRow(e,t,n),s,t)))))),[I,e,...o,...d,n])},ye=(e,t,o,s,r,d,n)=>Z(r,"PartialRow",o,s,d,n,e,t),we=(e,t,o,s,r,d,n,I)=>Z(d,g,s,r,n,I,e,t,o),he=(e,t,o,s,r)=>Z(o,m,e,t,s,r),Re=(e,t,o,s,r)=>Z(o,"PartialValues",e,t,s,r),ve=(e,t,o,s,r,d)=>Z(s,C,t,o,r,d,e),qe=(e,t,o)=>$(e,u,t,o),Pe=(e,t,o,s)=>$(t,I,o,s,e),fe=(e,t,o,s,r)=>$(o,i,s,r,e,t),xe=(e,t,o,s,r,d,n)=>$(r,g,d,n,e,t,o,s),Se=(e,t,o)=>$(e,m,t,o),Le=(e,t,o,s)=>$(t,C,o,s,e),Be=(e,t,o,s)=>Y(u,M(s),e,t,[],o),Te=(e,t,o,s)=>Y(l,M(s),e,t,[],o),Me=(e,t,o,s,r)=>Y(I,M(r),t,o,[e],s),Ee=(e,t,o,s,r)=>Y(I+b,M(r),t,o,[e],s),Ve=(e,t,o,s,r)=>Y(c,M(r),t,o,[e],s),Ae=(e,t,o,s,r)=>Y(a,M(r),t,o,[e],s),Fe=(e,t,o,s,r,d,n,I,u)=>Y(p,M(u),d,n,[e,t,o,s,r],I),je=(e,t,o,s,r,d)=>Y(i,M(d),o,s,[e,t],r),Oe=(e,t,o,s,r,d)=>Y(b,M(d),o,s,[e,t],r),Qe=(e,t,o,s,r,d,n)=>Y(g,M(n),s,r,[e,t,o],d),ze=(e,t,o,s)=>Y(m,M(s),e,t,[],o),De=(e,t,o,s)=>Y(k,M(s),e,t,[],o),Ge=(e,t,o,s,r)=>Y(C,M(r),t,o,[e],s),He=(e,t,o)=>W(e,t,o),Je=()=>B(3),Ke=e=>X("MetricIds",V(e),[]),Ne=(e,t)=>X("Metric",V(t),void 0,[e]),Ue=(e,t,o,s)=>Y("Metric",V(s),t,o,[e]),We=(e,t,o)=>W(e,t,o),Xe=()=>B(5),Ye=(e,t)=>X("SliceIds",F(t),[],[e]),Ze=e=>X("IndexIds",F(e),[]),$e=(e,t,o)=>X("Slice"+a,F(o),[],[e,t]),_e=(e,t,o,s)=>Y("SliceIds",F(s),t,o,[e]),et=(e,t,o,s,r)=>Y("Slice"+a,F(r),o,s,[e,t]),tt=(e,t,o)=>W(e,t,o),ot=()=>B(7),st=e=>X("RelationshipIds",O(e),[]),rt=(e,t,o)=>X("RemoteRowId",O(o),void 0,[e,t]),dt=(e,t,o)=>X("Local"+a,O(o),[],[e,t]),nt=(e,t,o)=>X("Linked"+a,O(o),[],[e,t]),It=(e,t,o,s,r)=>Y("RemoteRowId",O(r),o,s,[e,t]),ut=(e,t,o,s,r)=>Y("Local"+a,O(r),o,s,[e,t]),lt=(e,t,o,s,r)=>Y("Linked"+a,O(r),o,s,[e,t]),it=(e,t,o)=>W(e,t,o),ct=()=>B(9),at=e=>X("QueryIds",z(e),[]),pt=(e,t)=>X(d+I,z(t),{},[e]),gt=(e,t)=>X(d+I+b,z(t),[],[e]),bt=(e,t)=>X(d+c,z(t),[],[e]),Ct=(e,t)=>X(d+a,z(t),[],[e]),mt=(e,t,o,s=0,r,n)=>X(d+p,z(n),[],[e,t,o,s,r],6),kt=(e,t,o)=>X(d+i,z(o),{},[e,t]),yt=(e,t,o)=>X(d+b,z(o),[],[e,t]),wt=(e,t,o,s)=>X(d+g,z(s),void 0,[e,t,o]),ht=(e,t,o,s)=>Y(d+I,z(s),t,o,[e]),Rt=(e,t,o,s)=>Y(d+I+b,z(s),t,o,[e]),vt=(e,t,o,s)=>Y(d+c,z(s),t,o,[e]),qt=(e,t,o,s)=>Y(d+a,z(s),t,o,[e]),Pt=(e,t,o,s,r,n,I,u)=>Y(d+p,z(u),n,I,[e,t,o,s,r]),ft=(e,t,o,s,r)=>Y(d+i,z(r),o,s,[e,t]),xt=(e,t,o,s,r)=>Y(d+b,z(r),o,s,[e,t]),St=(e,t,o,s,r,n)=>Y(d+g,z(n),s,r,[e,t,o]),Lt=(e,t,o)=>W(e,t,o),Bt=()=>B(11),Tt=e=>X("CheckpointIds",G(e),[[],void 0,[]]),Mt=(e,t)=>X("Checkpoint",G(t),void 0,[e]),Et=(e=R,t=[],o,s=R,r=[])=>{const d=G(o);return H((t=>w(d,(o=>{const r=e(t);s(o.addCheckpoint(r),o,r)}))),[d,...t,...r])},Vt=e=>_(e,"goBackward"),At=e=>_(e,"goForward"),Ft=(e,t=[],o,s=R,r=[])=>{const d=G(o);return H((t=>w(d,(o=>w(e(t),(e=>s(o.goTo(e),e)))))),[d,...t,...r])},jt=e=>{const t=G(e),[o,r]=Tt(t);return[(d=o,!(0==(e=>e.length)(d))),Vt(t),r,w(r,(e=>t?.getCheckpoint(e)))??s];var d},Ot=e=>{const t=G(e),[,,[o]]=Tt(t);return[!y(o),At(t),o,w(o,(e=>t?.getCheckpoint(e)))??s]},Qt=(e,t,o)=>Y("CheckpointIds",G(o),e,t),zt=(e,t,o,s)=>Y("Checkpoint",G(s),t,o,[e]),Dt=(e,t,o=[],s,r=[])=>{const[,d]=U(),n=K((()=>t(e)),[e,...o]);return J((()=>((async()=>{await(s?.(n)),d(1)})(),()=>{n.destroy()})),[n,...r]),n},{PureComponent:Gt,Fragment:Ht,createElement:Jt,useCallback:Kt,useLayoutEffect:Nt,useRef:Ut,useState:Wt}=e,Xt=(e,...t)=>y(e)?{}:e(...t),Yt=(e,t)=>[e,e?.getStore(),e?.getLocalTableId(t),e?.getRemoteTableId(t)],{useMemo:Zt}=e,$t=({tableId:e,store:t,rowComponent:o=no,getRowComponentProps:s,customCellIds:r,separator:d,debugIds:n},I)=>so(v(I,(d=>Jt(o,{...Xt(s,d),key:d,tableId:e,rowId:d,customCellIds:r,store:t,debugIds:n}))),d,n,e),_t=({queryId:e,queries:t,resultRowComponent:o=yo,getResultRowComponentProps:s,separator:r,debugIds:d},n)=>so(v(n,(r=>Jt(o,{...Xt(s,r),key:r,queryId:e,rowId:r,queries:t,debugIds:d}))),r,d,e),eo=({relationshipId:e,relationships:t,rowComponent:o=no,getRowComponentProps:s,separator:r,debugIds:d},n,I)=>{const[u,l,i]=Yt(O(t),e),c=n(e,I,u);return so(v(c,(e=>Jt(o,{...Xt(s,e),key:e,tableId:i,rowId:e,store:l,debugIds:d}))),r,d,I)},to=e=>({checkpoints:t,checkpointComponent:o=Ro,getCheckpointComponentProps:s,separator:r,debugIds:d})=>{const n=G(t);return so(v(e(Tt(n)),(e=>Jt(o,{...Xt(s,e),key:e,checkpoints:n,checkpointId:e,debugIds:d}))),r)},oo=({store:e,storesById:o,metrics:s,metricsById:r,indexes:d,indexesById:n,relationships:I,relationshipsById:u,queries:l,queriesById:i,checkpoints:c,checkpointsById:a,children:p})=>{const g=t(x);return Jt(x.Provider,{value:Zt((()=>[e??g[0],{...g[1],...o},s??g[2],{...g[3],...r},d??g[4],{...g[5],...n},I??g[6],{...g[7],...u},l??g[8],{...g[9],...i},c??g[10],{...g[11],...a}]),[e,o,s,r,d,n,I,u,l,i,c,a,g])},p)},so=(e,t,o,s)=>{const r=y(t)||!Array.isArray(e)?e:v(e,((e,o)=>o>0?[t,e]:e));return o?[s,":{",r,"}"]:r},ro=({tableId:e,rowId:t,cellId:o,store:r,debugIds:d})=>so(s+(ce(e,t,o,r)??s),void 0,d,o),no=({tableId:e,rowId:t,store:o,cellComponent:s=ro,getCellComponentProps:r,customCellIds:d,separator:n,debugIds:I})=>so(v(((e,t,o,s)=>{const r=ie(t,o,s);return e??r})(d,e,t,o),(d=>Jt(s,{...Xt(r,d),key:d,tableId:e,rowId:t,cellId:d,store:o,debugIds:I}))),n,I,t),Io=e=>$t(e,Ie(e.tableId,e.store)),uo=({cellId:e,descending:t,offset:o,limit:s,...r})=>$t(r,ue(r.tableId,e,t,o,s,r.store)),lo=({store:e,tableComponent:t=Io,getTableComponentProps:o,separator:s,debugIds:r})=>so(v(se(e),(s=>Jt(t,{...Xt(o,s),key:s,tableId:s,store:e,debugIds:r}))),s),io=({valueId:e,store:t,debugIds:o})=>so(s+(ge(e,t)??s),void 0,o,e),co=({store:e,valueComponent:t=io,getValueComponentProps:o,separator:s,debugIds:r})=>so(v(pe(e),(s=>Jt(t,{...Xt(o,s),key:s,valueId:s,store:e,debugIds:r}))),s),ao=({metricId:e,metrics:t,debugIds:o})=>so(Ne(e,t)??s,void 0,o,e),po=({indexId:e,sliceId:t,indexes:o,rowComponent:s=no,getRowComponentProps:r,separator:d,debugIds:n})=>{const[I,u,l]=((e,t)=>[e,e?.getStore(),e?.getTableId(t)])(F(o),e),i=$e(e,t,I);return so(v(i,(e=>Jt(s,{...Xt(r,e),key:e,tableId:l,rowId:e,store:u,debugIds:n}))),d,n,t)},go=({indexId:e,indexes:t,sliceComponent:o=po,getSliceComponentProps:s,separator:r,debugIds:d})=>so(v(Ye(e,t),(r=>Jt(o,{...Xt(s,r),key:r,indexId:e,sliceId:r,indexes:t,debugIds:d}))),r,d,e),bo=({relationshipId:e,localRowId:t,relationships:o,rowComponent:s=no,getRowComponentProps:r,debugIds:d})=>{const[n,I,,u]=Yt(O(o),e),l=rt(e,t,n);return so(y(u)||y(l)?null:Jt(s,{...Xt(r,l),key:l,tableId:u,rowId:l,store:I,debugIds:d}),void 0,d,t)},Co=e=>eo(e,dt,e.remoteRowId),mo=e=>eo(e,nt,e.firstRowId),ko=({queryId:e,rowId:t,cellId:o,queries:r,debugIds:d})=>so(s+(wt(e,t,o,r)??s),void 0,d,o),yo=({queryId:e,rowId:t,queries:o,resultCellComponent:s=ko,getResultCellComponentProps:r,separator:d,debugIds:n})=>so(v(yt(e,t,o),(d=>Jt(s,{...Xt(r,d),key:d,queryId:e,rowId:t,cellId:d,queries:o,debugIds:n}))),d,n,t),wo=e=>_t(e,Ct(e.queryId,e.queries)),ho=({cellId:e,descending:t,offset:o,limit:s,...r})=>_t(r,mt(r.queryId,e,t,o,s,r.queries)),Ro=({checkpoints:e,checkpointId:t,debugIds:o})=>so(Mt(t,e)??s,void 0,o,t),vo=to((e=>e[0])),qo=to((e=>y(e[1])?[]:[e[1]])),Po=to((e=>e[2]));export{vo as BackwardCheckpointsView,ro as CellView,Ro as CheckpointView,qo as CurrentCheckpointView,Po as ForwardCheckpointsView,go as IndexView,mo as LinkedRowsView,Co as LocalRowsView,ao as MetricView,oo as Provider,bo as RemoteRowView,ko as ResultCellView,yo as ResultRowView,ho as ResultSortedTableView,wo as ResultTableView,no as RowView,po as SliceView,uo as SortedTableView,Io as TableView,lo as TablesView,io as ValueView,co as ValuesView,ke as useAddRowCallback,ce as useCell,ie as useCellIds,Oe as useCellIdsListener,Qe as useCellListener,Mt as useCheckpoint,Tt as useCheckpointIds,Qt as useCheckpointIdsListener,zt as useCheckpointListener,D as useCheckpoints,Bt as useCheckpointsIds,G as useCheckpointsOrCheckpointsById,Lt as useCreateCheckpoints,We as useCreateIndexes,He as useCreateMetrics,Dt as useCreatePersister,it as useCreateQueries,tt as useCreateRelationships,ee as useCreateStore,xe as useDelCellCallback,fe as useDelRowCallback,Pe as useDelTableCallback,qe as useDelTablesCallback,Le as useDelValueCallback,Se as useDelValuesCallback,Vt as useGoBackwardCallback,At as useGoForwardCallback,Ft as useGoToCallback,Ze as useIndexIds,A as useIndexes,Xe as useIndexesIds,F as useIndexesOrIndexesById,nt as useLinkedRowIds,lt as useLinkedRowIdsListener,dt as useLocalRowIds,ut as useLocalRowIdsListener,Ne as useMetric,Ke as useMetricIds,Ue as useMetricListener,E as useMetrics,Je as useMetricsIds,V as useMetricsOrMetricsById,Q as useQueries,ct as useQueriesIds,z as useQueriesOrQueriesById,at as useQueryIds,Ot as useRedoInformation,st as useRelationshipIds,j as useRelationships,ot as useRelationshipsIds,O as useRelationshipsOrRelationshipsById,rt as useRemoteRowId,It as useRemoteRowIdListener,wt as useResultCell,yt as useResultCellIds,xt as useResultCellIdsListener,St as useResultCellListener,kt as useResultRow,bt as useResultRowCount,vt as useResultRowCountListener,Ct as useResultRowIds,qt as useResultRowIdsListener,ft as useResultRowListener,mt as useResultSortedRowIds,Pt as useResultSortedRowIdsListener,pt as useResultTable,gt as useResultTableCellIds,Rt as useResultTableCellIdsListener,ht as useResultTableListener,le as useRow,ne as useRowCount,Ve as useRowCountListener,Ie as useRowIds,Ae as useRowIdsListener,je as useRowListener,we as useSetCellCallback,Et as useSetCheckpointCallback,ye as useSetPartialRowCallback,Re as useSetPartialValuesCallback,me as useSetRowCallback,Ce as useSetTableCallback,be as useSetTablesCallback,ve as useSetValueCallback,he as useSetValuesCallback,Ye as useSliceIds,_e as useSliceIdsListener,$e as useSliceRowIds,et as useSliceRowIdsListener,ue as useSortedRowIds,Fe as useSortedRowIdsListener,T as useStore,te as useStoreIds,M as useStoreOrStoreById,re as useTable,de as useTableCellIds,Ee as useTableCellIdsListener,se as useTableIds,Te as useTableIdsListener,Me as useTableListener,oe as useTables,Be as useTablesListener,jt as useUndoInformation,ge as useValue,pe as useValueIds,De as useValueIdsListener,Ge as useValueListener,ae as useValues,ze as useValuesListener};
1
+ import e,{useContext as t}from"react";const o=e=>typeof e,s="",r=o(s),d="Listener",n="Result",I="Ids",i="Table",u=i+"s",l=i+I,c="Row",a=c+"Count",p=c+I,g="Sorted"+c+I,b="Cell",C=b+I,m="Value",k=m+"s",w=m+I,y=e=>null==e,h=(e,t,o)=>y(e)?o?.():t(e),R=e=>o(e)==r,v=()=>{},q=(e,t)=>e.map(t),P=Object.keys,{createContext:f,useContext:x}=e,S=f([]),L=(e,t)=>{const o=x(S);return y(e)?o[t]:R(e)?((e,t)=>h(e,(e=>e[t])))(o[t+1]??{},e):e},B=(e,t)=>{const o=L(e,t);return y(e)||R(e)?o:e},T=e=>P(x(S)[e]??{}),M=e=>L(e,0),F=e=>B(e,0),E=e=>L(e,2),V=e=>B(e,2),A=e=>L(e,4),j=e=>B(e,4),D=e=>L(e,6),O=e=>B(e,6),Q=e=>L(e,8),W=e=>B(e,8),z=e=>L(e,10),G=e=>B(e,10),H=e=>e.toLowerCase();H(d);const J="Transaction";H(J);const{useCallback:K,useEffect:N,useMemo:U,useRef:X,useState:Y}=e,Z=(e,t,o=[])=>{const s=U((()=>t(e)),[e,...o]);return N((()=>()=>s.destroy()),[s]),s},$=(e,t,o,s=[],r)=>{const[,d]=Y(),n=K((()=>t?.["get"+e]?.(...s)??o),[t,...s]),[I]=Y(n),i=X(I);return U((()=>i.current=n()),[n]),_(e,t,((...e)=>{i.current=y(r)?n():e[r],d([])}),[],s),i.current},_=(e,t,o,s=[],r=[],...n)=>N((()=>{const s=t?.["add"+e+d]?.(...r,o,...n);return()=>t?.delListener(s)}),[t,...r,...s,...n]),ee=(e,t,o,s=[],r=v,d=[],...n)=>{const I=F(e);return K((e=>h(I,(s=>h(o(e,s),(e=>r(s["set"+t](...n,e),e)))))),[I,t,...s,...d,...n])},te=(e,t,o=v,s=[],...r)=>{const d=F(e);return K((()=>o(d?.["del"+t](...r))),[d,t,...s,...r])},oe=(e,t,o)=>{const s=G(e);return K((()=>s?.[t](o)),[s,t,o])},se=(e,t=[])=>U(e,t),re=()=>T(1),de=e=>$(u,F(e),{}),ne=e=>$(l,F(e),[],[]),Ie=(e,t)=>$(i,F(t),{},[e]),ie=(e,t)=>$(i+C,F(t),[],[e]),ue=(e,t)=>$(a,F(t),[],[e]),le=(e,t)=>$(p,F(t),[],[e]),ce=(e,t,o,s=0,r,d)=>$(g,F(d),[],[e,t,o,s,r],6),ae=(e,t,o)=>$(c,F(o),{},[e,t]),pe=(e,t,o)=>$(C,F(o),[],[e,t]),ge=(e,t,o,s)=>$(b,F(s),void 0,[e,t,o],4),be=e=>$(k,F(e),{}),Ce=e=>$(w,F(e),[],[]),me=(e,t)=>$(m,F(t),void 0,[e]),ke=(e,t,o,s,r)=>ee(o,u,e,t,s,r),we=(e,t,o,s,r,d)=>ee(s,i,t,o,r,d,e),ye=(e,t,o,s,r,d,n)=>ee(r,c,o,s,d,n,e,t),he=(e,t,o=[],s,r=v,d=[],n=!0)=>{const I=F(s);return K((o=>h(I,(s=>h(t(o,s),(t=>r(s.addRow(e,t,n),s,t)))))),[I,e,...o,...d,n])},Re=(e,t,o,s,r,d,n)=>ee(r,"PartialRow",o,s,d,n,e,t),ve=(e,t,o,s,r,d,n,I)=>ee(d,b,s,r,n,I,e,t,o),qe=(e,t,o,s,r)=>ee(o,k,e,t,s,r),Pe=(e,t,o,s,r)=>ee(o,"PartialValues",e,t,s,r),fe=(e,t,o,s,r,d)=>ee(s,m,t,o,r,d,e),xe=(e,t,o)=>te(e,u,t,o),Se=(e,t,o,s)=>te(t,i,o,s,e),Le=(e,t,o,s,r)=>te(o,c,s,r,e,t),Be=(e,t,o,s,r,d,n)=>te(r,b,d,n,e,t,o,s),Te=(e,t,o)=>te(e,k,t,o),Me=(e,t,o,s)=>te(t,m,o,s,e),Fe=(e,t,o,s)=>_(u,F(s),e,t,[],o),Ee=(e,t,o,s)=>_(l,F(s),e,t,[],o),Ve=(e,t,o,s,r)=>_(i,F(r),t,o,[e],s),Ae=(e,t,o,s,r)=>_(i+C,F(r),t,o,[e],s),je=(e,t,o,s,r)=>_(a,F(r),t,o,[e],s),De=(e,t,o,s,r)=>_(p,F(r),t,o,[e],s),Oe=(e,t,o,s,r,d,n,I,i)=>_(g,F(i),d,n,[e,t,o,s,r],I),Qe=(e,t,o,s,r,d)=>_(c,F(d),o,s,[e,t],r),We=(e,t,o,s,r,d)=>_(C,F(d),o,s,[e,t],r),ze=(e,t,o,s,r,d,n)=>_(b,F(n),s,r,[e,t,o],d),Ge=(e,t,o,s)=>_(k,F(s),e,t,[],o),He=(e,t,o,s)=>_(w,F(s),e,t,[],o),Je=(e,t,o,s,r)=>_(m,F(r),t,o,[e],s),Ke=(e,t,o)=>_("Start"+J,F(o),e,t),Ne=(e,t,o)=>_("WillFinish"+J,F(o),e,t),Ue=(e,t,o)=>_("DidFinish"+J,F(o),e,t),Xe=(e,t,o)=>Z(e,t,o),Ye=()=>T(3),Ze=e=>$("MetricIds",V(e),[]),$e=(e,t)=>$("Metric",V(t),void 0,[e]),_e=(e,t,o,s)=>_("Metric",V(s),t,o,[e]),et=(e,t,o)=>Z(e,t,o),tt=()=>T(5),ot=(e,t)=>$("SliceIds",j(t),[],[e]),st=e=>$("IndexIds",j(e),[]),rt=(e,t,o)=>$("Slice"+p,j(o),[],[e,t]),dt=(e,t,o,s)=>_("SliceIds",j(s),t,o,[e]),nt=(e,t,o,s,r)=>_("Slice"+p,j(r),o,s,[e,t]),It=(e,t,o)=>Z(e,t,o),it=()=>T(7),ut=e=>$("RelationshipIds",O(e),[]),lt=(e,t,o)=>$("RemoteRowId",O(o),void 0,[e,t]),ct=(e,t,o)=>$("Local"+p,O(o),[],[e,t]),at=(e,t,o)=>$("Linked"+p,O(o),[],[e,t]),pt=(e,t,o,s,r)=>_("RemoteRowId",O(r),o,s,[e,t]),gt=(e,t,o,s,r)=>_("Local"+p,O(r),o,s,[e,t]),bt=(e,t,o,s,r)=>_("Linked"+p,O(r),o,s,[e,t]),Ct=(e,t,o)=>Z(e,t,o),mt=()=>T(9),kt=e=>$("QueryIds",W(e),[]),wt=(e,t)=>$(n+i,W(t),{},[e]),yt=(e,t)=>$(n+i+C,W(t),[],[e]),ht=(e,t)=>$(n+a,W(t),[],[e]),Rt=(e,t)=>$(n+p,W(t),[],[e]),vt=(e,t,o,s=0,r,d)=>$(n+g,W(d),[],[e,t,o,s,r],6),qt=(e,t,o)=>$(n+c,W(o),{},[e,t]),Pt=(e,t,o)=>$(n+C,W(o),[],[e,t]),ft=(e,t,o,s)=>$(n+b,W(s),void 0,[e,t,o]),xt=(e,t,o,s)=>_(n+i,W(s),t,o,[e]),St=(e,t,o,s)=>_(n+i+C,W(s),t,o,[e]),Lt=(e,t,o,s)=>_(n+a,W(s),t,o,[e]),Bt=(e,t,o,s)=>_(n+p,W(s),t,o,[e]),Tt=(e,t,o,s,r,d,I,i)=>_(n+g,W(i),d,I,[e,t,o,s,r]),Mt=(e,t,o,s,r)=>_(n+c,W(r),o,s,[e,t]),Ft=(e,t,o,s,r)=>_(n+C,W(r),o,s,[e,t]),Et=(e,t,o,s,r,d)=>_(n+b,W(d),s,r,[e,t,o]),Vt=(e,t,o)=>Z(e,t,o),At=()=>T(11),jt=e=>$("CheckpointIds",G(e),[[],void 0,[]]),Dt=(e,t)=>$("Checkpoint",G(t),void 0,[e]),Ot=(e=v,t=[],o,s=v,r=[])=>{const d=G(o);return K((t=>h(d,(o=>{const r=e(t);s(o.addCheckpoint(r),o,r)}))),[d,...t,...r])},Qt=e=>oe(e,"goBackward"),Wt=e=>oe(e,"goForward"),zt=(e,t=[],o,s=v,r=[])=>{const d=G(o);return K((t=>h(d,(o=>h(e(t),(e=>s(o.goTo(e),e)))))),[d,...t,...r])},Gt=e=>{const t=G(e),[o,r]=jt(t);return[(d=o,!(0==(e=>e.length)(d))),Qt(t),r,h(r,(e=>t?.getCheckpoint(e)))??s];var d},Ht=e=>{const t=G(e),[,,[o]]=jt(t);return[!y(o),Wt(t),o,h(o,(e=>t?.getCheckpoint(e)))??s]},Jt=(e,t,o)=>_("CheckpointIds",G(o),e,t),Kt=(e,t,o,s)=>_("Checkpoint",G(s),t,o,[e]),Nt=(e,t,o=[],s,r=[])=>{const[,d]=Y(),n=U((()=>t(e)),[e,...o]);return N((()=>((async()=>{await(s?.(n)),d(1)})(),()=>{n?.destroy()})),[n,...r]),n},{PureComponent:Ut,Fragment:Xt,createElement:Yt,useCallback:Zt,useLayoutEffect:$t,useRef:_t,useState:eo}=e,to=(e,...t)=>y(e)?{}:e(...t),oo=(e,t)=>[e,e?.getStore(),e?.getLocalTableId(t),e?.getRemoteTableId(t)],{useMemo:so}=e,ro=({tableId:e,store:t,rowComponent:o=ao,getRowComponentProps:s,customCellIds:r,separator:d,debugIds:n},I)=>lo(q(I,(d=>Yt(o,{...to(s,d),key:d,tableId:e,rowId:d,customCellIds:r,store:t,debugIds:n}))),d,n,e),no=({queryId:e,queries:t,resultRowComponent:o=Po,getResultRowComponentProps:s,separator:r,debugIds:d},n)=>lo(q(n,(r=>Yt(o,{...to(s,r),key:r,queryId:e,rowId:r,queries:t,debugIds:d}))),r,d,e),Io=({relationshipId:e,relationships:t,rowComponent:o=ao,getRowComponentProps:s,separator:r,debugIds:d},n,I)=>{const[i,u,l]=oo(O(t),e),c=n(e,I,i);return lo(q(c,(e=>Yt(o,{...to(s,e),key:e,tableId:l,rowId:e,store:u,debugIds:d}))),r,d,I)},io=e=>({checkpoints:t,checkpointComponent:o=So,getCheckpointComponentProps:s,separator:r,debugIds:d})=>{const n=G(t);return lo(q(e(jt(n)),(e=>Yt(o,{...to(s,e),key:e,checkpoints:n,checkpointId:e,debugIds:d}))),r)},uo=({store:e,storesById:o,metrics:s,metricsById:r,indexes:d,indexesById:n,relationships:I,relationshipsById:i,queries:u,queriesById:l,checkpoints:c,checkpointsById:a,children:p})=>{const g=t(S);return Yt(S.Provider,{value:so((()=>[e??g[0],{...g[1],...o},s??g[2],{...g[3],...r},d??g[4],{...g[5],...n},I??g[6],{...g[7],...i},u??g[8],{...g[9],...l},c??g[10],{...g[11],...a}]),[e,o,s,r,d,n,I,i,u,l,c,a,g])},p)},lo=(e,t,o,s)=>{const r=y(t)||!Array.isArray(e)?e:q(e,((e,o)=>o>0?[t,e]:e));return o?[s,":{",r,"}"]:r},co=({tableId:e,rowId:t,cellId:o,store:r,debugIds:d})=>lo(s+(ge(e,t,o,r)??s),void 0,d,o),ao=({tableId:e,rowId:t,store:o,cellComponent:s=co,getCellComponentProps:r,customCellIds:d,separator:n,debugIds:I})=>lo(q(((e,t,o,s)=>{const r=pe(t,o,s);return e??r})(d,e,t,o),(d=>Yt(s,{...to(r,d),key:d,tableId:e,rowId:t,cellId:d,store:o,debugIds:I}))),n,I,t),po=e=>ro(e,le(e.tableId,e.store)),go=({cellId:e,descending:t,offset:o,limit:s,...r})=>ro(r,ce(r.tableId,e,t,o,s,r.store)),bo=({store:e,tableComponent:t=po,getTableComponentProps:o,separator:s,debugIds:r})=>lo(q(ne(e),(s=>Yt(t,{...to(o,s),key:s,tableId:s,store:e,debugIds:r}))),s),Co=({valueId:e,store:t,debugIds:o})=>lo(s+(me(e,t)??s),void 0,o,e),mo=({store:e,valueComponent:t=Co,getValueComponentProps:o,separator:s,debugIds:r})=>lo(q(Ce(e),(s=>Yt(t,{...to(o,s),key:s,valueId:s,store:e,debugIds:r}))),s),ko=({metricId:e,metrics:t,debugIds:o})=>lo($e(e,t)??s,void 0,o,e),wo=({indexId:e,sliceId:t,indexes:o,rowComponent:s=ao,getRowComponentProps:r,separator:d,debugIds:n})=>{const[I,i,u]=((e,t)=>[e,e?.getStore(),e?.getTableId(t)])(j(o),e),l=rt(e,t,I);return lo(q(l,(e=>Yt(s,{...to(r,e),key:e,tableId:u,rowId:e,store:i,debugIds:n}))),d,n,t)},yo=({indexId:e,indexes:t,sliceComponent:o=wo,getSliceComponentProps:s,separator:r,debugIds:d})=>lo(q(ot(e,t),(r=>Yt(o,{...to(s,r),key:r,indexId:e,sliceId:r,indexes:t,debugIds:d}))),r,d,e),ho=({relationshipId:e,localRowId:t,relationships:o,rowComponent:s=ao,getRowComponentProps:r,debugIds:d})=>{const[n,I,,i]=oo(O(o),e),u=lt(e,t,n);return lo(y(i)||y(u)?null:Yt(s,{...to(r,u),key:u,tableId:i,rowId:u,store:I,debugIds:d}),void 0,d,t)},Ro=e=>Io(e,ct,e.remoteRowId),vo=e=>Io(e,at,e.firstRowId),qo=({queryId:e,rowId:t,cellId:o,queries:r,debugIds:d})=>lo(s+(ft(e,t,o,r)??s),void 0,d,o),Po=({queryId:e,rowId:t,queries:o,resultCellComponent:s=qo,getResultCellComponentProps:r,separator:d,debugIds:n})=>lo(q(Pt(e,t,o),(d=>Yt(s,{...to(r,d),key:d,queryId:e,rowId:t,cellId:d,queries:o,debugIds:n}))),d,n,t),fo=e=>no(e,Rt(e.queryId,e.queries)),xo=({cellId:e,descending:t,offset:o,limit:s,...r})=>no(r,vt(r.queryId,e,t,o,s,r.queries)),So=({checkpoints:e,checkpointId:t,debugIds:o})=>lo(Dt(t,e)??s,void 0,o,t),Lo=io((e=>e[0])),Bo=io((e=>y(e[1])?[]:[e[1]])),To=io((e=>e[2]));export{Lo as BackwardCheckpointsView,co as CellView,So as CheckpointView,Bo as CurrentCheckpointView,To as ForwardCheckpointsView,yo as IndexView,vo as LinkedRowsView,Ro as LocalRowsView,ko as MetricView,uo as Provider,ho as RemoteRowView,qo as ResultCellView,Po as ResultRowView,xo as ResultSortedTableView,fo as ResultTableView,ao as RowView,wo as SliceView,go as SortedTableView,po as TableView,bo as TablesView,Co as ValueView,mo as ValuesView,he as useAddRowCallback,ge as useCell,pe as useCellIds,We as useCellIdsListener,ze as useCellListener,Dt as useCheckpoint,jt as useCheckpointIds,Jt as useCheckpointIdsListener,Kt as useCheckpointListener,z as useCheckpoints,At as useCheckpointsIds,G as useCheckpointsOrCheckpointsById,Vt as useCreateCheckpoints,et as useCreateIndexes,Xe as useCreateMetrics,Nt as useCreatePersister,Ct as useCreateQueries,It as useCreateRelationships,se as useCreateStore,Be as useDelCellCallback,Le as useDelRowCallback,Se as useDelTableCallback,xe as useDelTablesCallback,Me as useDelValueCallback,Te as useDelValuesCallback,Ue as useDidFinishTransactionListener,Qt as useGoBackwardCallback,Wt as useGoForwardCallback,zt as useGoToCallback,st as useIndexIds,A as useIndexes,tt as useIndexesIds,j as useIndexesOrIndexesById,at as useLinkedRowIds,bt as useLinkedRowIdsListener,ct as useLocalRowIds,gt as useLocalRowIdsListener,$e as useMetric,Ze as useMetricIds,_e as useMetricListener,E as useMetrics,Ye as useMetricsIds,V as useMetricsOrMetricsById,Q as useQueries,mt as useQueriesIds,W as useQueriesOrQueriesById,kt as useQueryIds,Ht as useRedoInformation,ut as useRelationshipIds,D as useRelationships,it as useRelationshipsIds,O as useRelationshipsOrRelationshipsById,lt as useRemoteRowId,pt as useRemoteRowIdListener,ft as useResultCell,Pt as useResultCellIds,Ft as useResultCellIdsListener,Et as useResultCellListener,qt as useResultRow,ht as useResultRowCount,Lt as useResultRowCountListener,Rt as useResultRowIds,Bt as useResultRowIdsListener,Mt as useResultRowListener,vt as useResultSortedRowIds,Tt as useResultSortedRowIdsListener,wt as useResultTable,yt as useResultTableCellIds,St as useResultTableCellIdsListener,xt as useResultTableListener,ae as useRow,ue as useRowCount,je as useRowCountListener,le as useRowIds,De as useRowIdsListener,Qe as useRowListener,ve as useSetCellCallback,Ot as useSetCheckpointCallback,Re as useSetPartialRowCallback,Pe as useSetPartialValuesCallback,ye as useSetRowCallback,we as useSetTableCallback,ke as useSetTablesCallback,fe as useSetValueCallback,qe as useSetValuesCallback,ot as useSliceIds,dt as useSliceIdsListener,rt as useSliceRowIds,nt as useSliceRowIdsListener,ce as useSortedRowIds,Oe as useSortedRowIdsListener,Ke as useStartTransactionListener,M as useStore,re as useStoreIds,F as useStoreOrStoreById,Ie as useTable,ie as useTableCellIds,Ae as useTableCellIdsListener,ne as useTableIds,Ee as useTableIdsListener,Ve as useTableListener,de as useTables,Fe as useTablesListener,Gt as useUndoInformation,me as useValue,Ce as useValueIds,He as useValueIdsListener,Je as useValueListener,be as useValues,Ge as useValuesListener,Ne as useWillFinishTransactionListener};
Binary file
@@ -1 +1 @@
1
- var a,t;a=this,t=function(a){"use strict";const t=a=>typeof a,e="tinybase",s=",",n=t(""),i=(a,t)=>a.repeat(t),c=Promise,o=setInterval,r=clearInterval,l=(a,t)=>a instanceof t,y=a=>null==a,w=(a,t,e)=>y(a)?e?.():t(a),E=a=>t(a)==n,u=async a=>c.all(a),d=(a,t="")=>a.join(t),f=(a,t)=>a.map(t),p=a=>a.length,T=a=>0==p(a),m=(a,t)=>a.filter(t),v=(a,t,e)=>a.slice(t,e),A=(a,...t)=>a.push(...t),L=(a,t)=>a?.has(t)??!1,h=a=>[...a?.values()??[]],N=(a,t)=>a?.delete(t),O=Object,R=O.keys,C=O.freeze,S=(a=[])=>O.fromEntries(a),b=(...a)=>O.assign({},...a),g=(a,t)=>f(O.entries(a),(([a,e])=>t(e,a))),D=a=>O.values(a),I=a=>p(R(a)),F=a=>(a=>l(a,O)&&a.constructor==O)(a)&&0==I(a),M=a=>new Map(a),$=a=>[...a?.keys()??[]],P=(a,t)=>a?.get(t),_=(a,t)=>f([...a?.entries()??[]],(([a,e])=>t(e,a))),B=(a,t,e)=>y(e)?(N(a,t),a):a?.set(t,e),W=(a,t,e)=>(L(a,t)||B(a,t,e()),P(a,t)),x=(a,t,e,s=B)=>(g(t,((t,s)=>e(a,s,t))),((a,t)=>{((a,t)=>{a?.forEach(t)})(a,((a,e)=>t(e)))})(a,(e=>((a,t)=>!y(((a,t)=>w(a,(a=>a[t])))(a,t)))(t,e)?0:s(a,e))),a),j=a=>new Set(Array.isArray(a)||y(a)?a:[a]),H=(a,t)=>a?.add(t),U="_",k="_id",q=a=>`"${a.replace(/"/g,'""')}"`,J="FROM pragma_table_",Y="WHERE",z=(a,t,e)=>{const n=M();return[async()=>x(n,S(await u(f(await a("SELECT name "+J+"list WHERE schema='main'AND type='table'AND name IN("+K(t)+")",t),(async({name:t})=>[t,S(f(await a("SELECT name,type "+J+"info(?)",[t]),(({name:a,type:t})=>[a,t])))])))),((a,t,e)=>B(n,t,x(W(n,t,M),e,((a,t,e)=>{e!=P(a,t)&&B(a,t,e)}),((a,t)=>B(a,t))))),((a,t)=>B(n,t))),async(t,e)=>((a,t)=>!y(P(P(n,a),t)))(t,e)?S(m(f(await a("SELECT*FROM"+q(t)),(a=>{return[a[e],(t={...a},s=e,delete t[s],t)];var t,s})),(([a,t])=>!y(a)&&!F(t)))):{},async(t,e,i,c,o,r=!1)=>{const l=j();g(i??{},(a=>f(R(a??{}),(a=>H(l,a)))));const w=h(l);if(!r&&o&&T(w)&&L(n,t))return await a("DROP TABLE"+q(t)),void B(n,t);if(T(w)||L(n,t)){const s=P(n,t),i=j($(s));await u([...f(w,(async e=>{N(i,e)||(await a(`ALTER TABLE${q(t)}ADD${q(e)}`),B(s,e,""))})),...!r&&c?f(h(i),(async n=>{n!=e&&(await a(`ALTER TABLE${q(t)}DROP${q(n)}`),B(s,n))})):[]])}else await a(`CREATE TABLE${q(t)}(${q(e)} PRIMARY KEY ON CONFLICT REPLACE${d(f(w,(a=>s+q(a))))});`),B(n,t,M([[e,""],...f(w,(a=>[a,""]))]));if(r)y(i)?await a("DELETE FROM"+q(t)+"WHERE 1"):await u(g(i,(async(s,n)=>{y(s)?await a("DELETE FROM"+q(t)+Y+q(e)+"=?",[n]):T(w)||await G(a,t,e,R(s),[n,...D(s)])})));else if(T(w))L(n,t)&&await a("DELETE FROM"+q(t)+"WHERE 1");else{const s=m($(P(n,t)),(a=>a!=e)),c=[],o=[];g(i??{},((a,t)=>{A(c,t,...f(s,(t=>a?.[t]))),A(o,t)})),await G(a,t,e,s,c),await a("DELETE FROM"+q(t)+Y+q(e)+"NOT IN("+K(o)+")",o)}},async t=>{let s;await a("BEGIN");try{s=await t()}catch(a){e?.(a)}return await a("END"),s}]},G=async(a,t,e,n,c)=>await a("INSERT INTO"+q(t)+"("+q(e)+d(f(n,(a=>s+q(a))))+")VALUES"+i(`,(?${i(",?",p(n))})`,p(c)/(p(n)+1)).substring(1)+"ON CONFLICT("+q(e)+")DO UPDATE SET"+d(f(n,(a=>q(a)+"=excluded."+q(a))),s),c),K=a=>d(f(a,(()=>"?")),s),V=JSON.parse,Q=M(),X=M(),Z=(a,t,e,s,n,i,c=[])=>{let o,r,l,E=0,u=0;W(Q,c,(()=>0)),W(X,c,(()=>[]));const d=async a=>(2!=E&&(E=1,await f.schedule((async()=>{await a(),E=0}))),f),f={load:async(e,s)=>await d((async()=>{try{a.setContent(await t())}catch{a.setContent([e,s])}})),startAutoLoad:async(e={},n={})=>(f.stopAutoLoad(),await f.load(e,n),u=1,l=s((async(e,s)=>{if(s){const t=s();await d((async()=>a.setTransactionChanges(t)))}else await d((async()=>{try{a.setContent(e?.()??await t())}catch(a){i?.(a)}}))})),f),stopAutoLoad:()=>(u&&(n(l),l=void 0,u=0),f),save:async t=>(1!=E&&(E=2,await f.schedule((async()=>{try{await e(a.getContent,t)}catch(a){i?.(a)}E=0}))),f),startAutoSave:async()=>(await f.stopAutoSave().save(),o=a.addDidFinishTransactionListener(((a,t)=>{const[e,s]=t();F(e)&&F(s)||f.save((()=>[e,s]))})),f),stopAutoSave:()=>(w(o,a.delListener),f),schedule:async(...a)=>(A(P(X,c),...a),await(async()=>{if(!P(Q,c)){for(B(Q,c,1);!y((a=P(X,c),r=a.shift()));)try{await r()}catch(a){i?.(a)}B(Q,c,0)}var a})(),f),getStore:()=>a,destroy:()=>f.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return C(f)},aa="store",ta=(a,t,e,s,n,[i],c,o)=>{const[r,y,w,E]=z(t,c,n);return Z(a,(async()=>await E((async()=>(await r(),V((await y(i,k))[U]?.[aa]??"null"))))),(async a=>await E((async()=>{var t;await r(),await w(i,k,{[U]:{[aa]:(t=a()??null,JSON.stringify(t,((a,t)=>l(t,Map)?O.fromEntries([...t]):t)))}},!0,!0)}))),e,s,n,o)},ea=(a,t,e,s,n,[i,c,[o,r,l]],w,E)=>{const[d,f,p,T]=z(t,w,n),v=async(a,t)=>await u(_(c,(async([e,s,n,i],c)=>{const o=a[c];t&&void 0===o||await p(e,s,o,n,i,t)}))),A=async(a,t)=>r?await p(l,k,{[U]:a},!0,!0,t):null;return Z(a,(async()=>await T((async()=>{await d();const a=await(async()=>S(m(await u(_(i,(async([a,t],e)=>[a,await f(e,t)]))),(a=>!F(a[1])))))(),t=await(async()=>o?(await f(l,k))[U]:{})();return F(a)&&y(t)?void 0:[a,t]}))),(async(a,t)=>await T((async()=>{if(await d(),y(t)){const[t,e]=a();await v(t),await A(e)}else{const[a,e]=t();await v(a,!0),await A(e,!0)}}))),e,s,n,E)},sa="json",na="autoLoadIntervalSeconds",ia="rowIdColumnName",ca="tableId",oa="tableName",ra={mode:sa,[na]:1},la={load:0,save:0,[oa]:e+"_values"},ya=(a,t,e,s)=>{const n=M();return g(a,((a,i)=>{const c=v(D(b(t,E(a)?{[e]:a}:a)),0,I(t));y(c[0])||s(i,c[0])||B(n,i,c)})),n},wa="pragma ",Ea="data_version",ua="schema_version",da=(a,t,s,n,i,c,l,y)=>{let w,u;const[d,f,p,T]=(a=>{const t=(a=>b(ra,E(a)?{storeTableName:a}:a??{}))(a),s=t[na];if(t.mode==sa){const{storeTableName:a=e}=t;return[1,s,[a],j(a)]}const{tables:{load:n={},save:i={}}={},values:c={}}=t,o=v(D(b(la,c)),0,I(la)),r=o[2],l=j(r);return[0,s,[ya(n,{[ca]:null,[ia]:k},ca,(a=>H(l,a)&&a==r)),ya(i,{[oa]:null,[ia]:k,deleteEmptyColumns:0,deleteEmptyTable:0},oa,((a,t)=>H(l,t)&&t==r)),o],l]})(t);return(d?ta:ea)(a,c?async(a,t)=>(c(a,t),await s(a,t)):s,(a=>[o((async()=>{try{const t=(await s(wa+Ea))[0][Ea],e=(await s(wa+ua))[0][ua];t==(w??=t)&&e==(u??=e)||(a(),w=t,u=e)}catch{}}),1e3*f),n((t=>T.has(t)?a():0))]),(([a,t])=>{r(a),w=u=null,i(t)}),l,p,h(T),y)};a.createCrSqliteWasmPersister=(a,t,e,s,n)=>da(a,e,(async(a,e=[])=>await t.execO(a,e)),(a=>t.onUpdate(((t,e,s)=>a(s)))),(a=>a()),s,n,t)},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((a="undefined"!=typeof globalThis?globalThis:a||self).TinyBasePersisterCrSqliteWasm={});
1
+ var a,t;a=this,t=function(a){"use strict";const t=a=>typeof a,e="tinybase",s=",",n=t(""),i=(a,t)=>a.repeat(t),c=Promise,o=setInterval,r=clearInterval,l=(a,t)=>a instanceof t,y=a=>null==a,w=(a,t,e)=>y(a)?e?.():t(a),E=a=>t(a)==n,d=(a,t,e)=>a.slice(t,e),u=async a=>c.all(a),f=(a,t="")=>a.join(t),p=(a,t)=>a.map(t),T=a=>a.length,m=a=>0==T(a),v=(a,t)=>a.filter(t),A=(a,...t)=>a.push(...t),L=(a,t)=>a?.has(t)??!1,h=a=>[...a?.values()??[]],N=(a,t)=>a?.delete(t),O=Object,R=O.keys,C=O.freeze,S=(a=[])=>O.fromEntries(a),D=(...a)=>O.assign({},...a),b=(a,t)=>p(O.entries(a),(([a,e])=>t(e,a))),g=a=>O.values(a),I=a=>T(R(a)),F=a=>(a=>l(a,O)&&a.constructor==O)(a)&&0==I(a),M=a=>new Map(a),$=a=>[...a?.keys()??[]],P=(a,t)=>a?.get(t),_=(a,t)=>p([...a?.entries()??[]],(([a,e])=>t(e,a))),B=(a,t,e)=>y(e)?(N(a,t),a):a?.set(t,e),W=(a,t,e)=>(L(a,t)||B(a,t,e()),P(a,t)),x=(a,t,e,s=B)=>(b(t,((t,s)=>e(a,s,t))),((a,t)=>{((a,t)=>{a?.forEach(t)})(a,((a,e)=>t(e)))})(a,(e=>((a,t)=>!y(((a,t)=>w(a,(a=>a[t])))(a,t)))(t,e)?0:s(a,e))),a),j=a=>new Set(Array.isArray(a)||y(a)?a:[a]),H=(a,t)=>a?.add(t),U="_",k="_id",q=a=>`"${a.replace(/"/g,'""')}"`,J="FROM pragma_table_",Y="WHERE",z=(a,t,e)=>{const n=M();return[async()=>x(n,S(await u(p(await a("SELECT name "+J+"list WHERE schema='main'AND type='table'AND name IN("+K(t)+")",t),(async({name:t})=>[t,S(p(await a("SELECT name,type "+J+"info(?)",[t]),(({name:a,type:t})=>[a,t])))])))),((a,t,e)=>B(n,t,x(W(n,t,M),e,((a,t,e)=>{e!=P(a,t)&&B(a,t,e)}),((a,t)=>B(a,t))))),((a,t)=>B(n,t))),async(t,e)=>((a,t)=>!y(P(P(n,a),t)))(t,e)?S(v(p(await a("SELECT*FROM"+q(t)),(a=>{return[a[e],(t={...a},s=e,delete t[s],t)];var t,s})),(([a,t])=>!y(a)&&!F(t)))):{},async(t,e,i,c,o,r=!1)=>{const l=j();b(i??{},(a=>p(R(a??{}),(a=>H(l,a)))));const w=h(l);if(!r&&o&&m(w)&&L(n,t))return await a("DROP TABLE"+q(t)),void B(n,t);if(m(w)||L(n,t)){const s=P(n,t),i=j($(s));await u([...p(w,(async e=>{N(i,e)||(await a(`ALTER TABLE${q(t)}ADD${q(e)}`),B(s,e,""))})),...!r&&c?p(h(i),(async n=>{n!=e&&(await a(`ALTER TABLE${q(t)}DROP${q(n)}`),B(s,n))})):[]])}else await a(`CREATE TABLE${q(t)}(${q(e)} PRIMARY KEY ON CONFLICT REPLACE${f(p(w,(a=>s+q(a))))});`),B(n,t,M([[e,""],...p(w,(a=>[a,""]))]));if(r)y(i)?await a("DELETE FROM"+q(t)+"WHERE 1"):await u(b(i,(async(s,n)=>{y(s)?await a("DELETE FROM"+q(t)+Y+q(e)+"=?",[n]):m(w)||await G(a,t,e,R(s),[n,...g(s)])})));else if(m(w))L(n,t)&&await a("DELETE FROM"+q(t)+"WHERE 1");else{const s=v($(P(n,t)),(a=>a!=e)),c=[],o=[];b(i??{},((a,t)=>{A(c,t,...p(s,(t=>a?.[t]))),A(o,t)})),await G(a,t,e,s,c),await a("DELETE FROM"+q(t)+Y+q(e)+"NOT IN("+K(o)+")",o)}},async t=>{let s;await a("BEGIN");try{s=await t()}catch(a){e?.(a)}return await a("END"),s}]},G=async(a,t,e,n,c)=>await a("INSERT INTO"+q(t)+"("+q(e)+f(p(n,(a=>s+q(a))))+")VALUES"+d(i(`,(?${i(",?",T(n))})`,T(c)/(T(n)+1)),1)+"ON CONFLICT("+q(e)+")DO UPDATE SET"+f(p(n,(a=>q(a)+"=excluded."+q(a))),s),c),K=a=>f(p(a,(()=>"?")),s),V=JSON.parse,Q=M(),X=M(),Z=(a,t,e,s,n,i,c=[])=>{let o,r,l,E=0,d=0;W(Q,c,(()=>0)),W(X,c,(()=>[]));const u=async a=>(2!=E&&(E=1,await f.schedule((async()=>{await a(),E=0}))),f),f={load:async(e,s)=>await u((async()=>{try{a.setContent(await t())}catch{a.setContent([e,s])}})),startAutoLoad:async(e={},n={})=>(f.stopAutoLoad(),await f.load(e,n),d=1,l=s((async(e,s)=>{if(s){const t=s();await u((async()=>a.setTransactionChanges(t)))}else await u((async()=>{try{a.setContent(e?.()??await t())}catch(a){i?.(a)}}))})),f),stopAutoLoad:()=>(d&&(n(l),l=void 0,d=0),f),save:async t=>(1!=E&&(E=2,await f.schedule((async()=>{try{await e(a.getContent,t)}catch(a){i?.(a)}E=0}))),f),startAutoSave:async()=>(await f.stopAutoSave().save(),o=a.addDidFinishTransactionListener(((a,t)=>{const[e,s]=t();F(e)&&F(s)||f.save((()=>[e,s]))})),f),stopAutoSave:()=>(w(o,a.delListener),f),schedule:async(...a)=>(A(P(X,c),...a),await(async()=>{if(!P(Q,c)){for(B(Q,c,1);!y((a=P(X,c),r=a.shift()));)try{await r()}catch(a){i?.(a)}B(Q,c,0)}var a})(),f),getStore:()=>a,destroy:()=>f.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return C(f)},aa="store",ta=(a,t,e,s,n,[i],c,o)=>{const[r,y,w,E]=z(t,c,n);return Z(a,(async()=>await E((async()=>(await r(),V((await y(i,k))[U]?.[aa]??"null"))))),(async a=>await E((async()=>{var t;await r(),await w(i,k,{[U]:{[aa]:(t=a()??null,JSON.stringify(t,((a,t)=>l(t,Map)?O.fromEntries([...t]):t)))}},!0,!0)}))),e,s,n,o)},ea=(a,t,e,s,n,[i,c,[o,r,l]],w,E)=>{const[d,f,p,T]=z(t,w,n),m=async(a,t)=>await u(_(c,(async([e,s,n,i],c)=>{const o=a[c];t&&void 0===o||await p(e,s,o,n,i,t)}))),A=async(a,t)=>r?await p(l,k,{[U]:a},!0,!0,t):null;return Z(a,(async()=>await T((async()=>{await d();const a=await(async()=>S(v(await u(_(i,(async([a,t],e)=>[a,await f(e,t)]))),(a=>!F(a[1])))))(),t=await(async()=>o?(await f(l,k))[U]:{})();return F(a)&&y(t)?void 0:[a,t]}))),(async(a,t)=>await T((async()=>{if(await d(),y(t)){const[t,e]=a();await m(t),await A(e)}else{const[a,e]=t();await m(a,!0),await A(e,!0)}}))),e,s,n,E)},sa="json",na="autoLoadIntervalSeconds",ia="rowIdColumnName",ca="tableId",oa="tableName",ra={mode:sa,[na]:1},la={load:0,save:0,[oa]:e+"_values"},ya=(a,t,e,s)=>{const n=M();return b(a,((a,i)=>{const c=d(g(D(t,E(a)?{[e]:a}:a)),0,I(t));y(c[0])||s(i,c[0])||B(n,i,c)})),n},wa="pragma ",Ea="data_version",da="schema_version",ua=(a,t,s,n,i,c,l,y)=>{let w,u;const[f,p,T,m]=(a=>{const t=(a=>D(ra,E(a)?{storeTableName:a}:a??{}))(a),s=t[na];if(t.mode==sa){const{storeTableName:a=e}=t;return[1,s,[a],j(a)]}const{tables:{load:n={},save:i={}}={},values:c={}}=t,o=d(g(D(la,c)),0,I(la)),r=o[2],l=j(r);return[0,s,[ya(n,{[ca]:null,[ia]:k},ca,(a=>H(l,a)&&a==r)),ya(i,{[oa]:null,[ia]:k,deleteEmptyColumns:0,deleteEmptyTable:0},oa,((a,t)=>H(l,t)&&t==r)),o],l]})(t);return(f?ta:ea)(a,c?async(a,t)=>(c(a,t),await s(a,t)):s,(a=>[o((async()=>{try{const t=(await s(wa+Ea))[0][Ea],e=(await s(wa+da))[0][da];t==(w??=t)&&e==(u??=e)||(a(),w=t,u=e)}catch{}}),1e3*p),n((t=>m.has(t)?a():0))]),(([a,t])=>{r(a),w=u=null,i(t)}),l,T,h(m),y)};a.createCrSqliteWasmPersister=(a,t,e,s,n)=>ua(a,e,(async(a,e=[])=>await t.execO(a,e)),(a=>t.onUpdate(((t,e,s)=>a(s)))),(a=>a()),s,n,t)},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((a="undefined"!=typeof globalThis?globalThis:a||self).TinyBasePersisterCrSqliteWasm={});
@@ -1 +1 @@
1
- var a,t;a=this,t=function(a){"use strict";const t=a=>typeof a,e="tinybase",s=",",n=t(""),i=(a,t)=>a.repeat(t),o=Promise,c=setInterval,r=clearInterval,l=(a,t)=>a instanceof t,y=a=>null==a,w=(a,t,e)=>y(a)?e?.():t(a),E=a=>t(a)==n,u=async a=>o.all(a),d=(a,t="")=>a.join(t),f=(a,t)=>a.map(t),p=a=>a.length,T=a=>0==p(a),m=(a,t)=>a.filter(t),v=(a,t,e)=>a.slice(t,e),A=(a,...t)=>a.push(...t),L=(a,t)=>a?.has(t)??!1,h=a=>[...a?.values()??[]],N=(a,t)=>a?.delete(t),R=Object,O=R.keys,S=R.freeze,C=(a=[])=>R.fromEntries(a),b=(...a)=>R.assign({},...a),g=(a,t)=>f(R.entries(a),(([a,e])=>t(e,a))),D=a=>R.values(a),I=a=>p(O(a)),F=a=>(a=>l(a,R)&&a.constructor==R)(a)&&0==I(a),M=a=>new Map(a),$=a=>[...a?.keys()??[]],P=(a,t)=>a?.get(t),x=(a,t)=>f([...a?.entries()??[]],(([a,e])=>t(e,a))),_=(a,t,e)=>y(e)?(N(a,t),a):a?.set(t,e),B=(a,t,e)=>(L(a,t)||_(a,t,e()),P(a,t)),j=(a,t,e,s=_)=>(g(t,((t,s)=>e(a,s,t))),((a,t)=>{((a,t)=>{a?.forEach(t)})(a,((a,e)=>t(e)))})(a,(e=>((a,t)=>!y(((a,t)=>w(a,(a=>a[t])))(a,t)))(t,e)?0:s(a,e))),a),H=a=>new Set(Array.isArray(a)||y(a)?a:[a]),W=(a,t)=>a?.add(t),q="_",k="_id",J=a=>`"${a.replace(/"/g,'""')}"`,U="FROM pragma_table_",Y="WHERE",z=(a,t,e)=>{const n=M();return[async()=>j(n,C(await u(f(await a("SELECT name "+U+"list WHERE schema='main'AND type='table'AND name IN("+K(t)+")",t),(async({name:t})=>[t,C(f(await a("SELECT name,type "+U+"info(?)",[t]),(({name:a,type:t})=>[a,t])))])))),((a,t,e)=>_(n,t,j(B(n,t,M),e,((a,t,e)=>{e!=P(a,t)&&_(a,t,e)}),((a,t)=>_(a,t))))),((a,t)=>_(n,t))),async(t,e)=>((a,t)=>!y(P(P(n,a),t)))(t,e)?C(m(f(await a("SELECT*FROM"+J(t)),(a=>{return[a[e],(t={...a},s=e,delete t[s],t)];var t,s})),(([a,t])=>!y(a)&&!F(t)))):{},async(t,e,i,o,c,r=!1)=>{const l=H();g(i??{},(a=>f(O(a??{}),(a=>W(l,a)))));const w=h(l);if(!r&&c&&T(w)&&L(n,t))return await a("DROP TABLE"+J(t)),void _(n,t);if(T(w)||L(n,t)){const s=P(n,t),i=H($(s));await u([...f(w,(async e=>{N(i,e)||(await a(`ALTER TABLE${J(t)}ADD${J(e)}`),_(s,e,""))})),...!r&&o?f(h(i),(async n=>{n!=e&&(await a(`ALTER TABLE${J(t)}DROP${J(n)}`),_(s,n))})):[]])}else await a(`CREATE TABLE${J(t)}(${J(e)} PRIMARY KEY ON CONFLICT REPLACE${d(f(w,(a=>s+J(a))))});`),_(n,t,M([[e,""],...f(w,(a=>[a,""]))]));if(r)y(i)?await a("DELETE FROM"+J(t)+"WHERE 1"):await u(g(i,(async(s,n)=>{y(s)?await a("DELETE FROM"+J(t)+Y+J(e)+"=?",[n]):T(w)||await G(a,t,e,O(s),[n,...D(s)])})));else if(T(w))L(n,t)&&await a("DELETE FROM"+J(t)+"WHERE 1");else{const s=m($(P(n,t)),(a=>a!=e)),o=[],c=[];g(i??{},((a,t)=>{A(o,t,...f(s,(t=>a?.[t]))),A(c,t)})),await G(a,t,e,s,o),await a("DELETE FROM"+J(t)+Y+J(e)+"NOT IN("+K(c)+")",c)}},async t=>{let s;await a("BEGIN");try{s=await t()}catch(a){e?.(a)}return await a("END"),s}]},G=async(a,t,e,n,o)=>await a("INSERT INTO"+J(t)+"("+J(e)+d(f(n,(a=>s+J(a))))+")VALUES"+i(`,(?${i(",?",p(n))})`,p(o)/(p(n)+1)).substring(1)+"ON CONFLICT("+J(e)+")DO UPDATE SET"+d(f(n,(a=>J(a)+"=excluded."+J(a))),s),o),K=a=>d(f(a,(()=>"?")),s),V=JSON.parse,Q=M(),X=M(),Z=(a,t,e,s,n,i,o=[])=>{let c,r,l,E=0,u=0;B(Q,o,(()=>0)),B(X,o,(()=>[]));const d=async a=>(2!=E&&(E=1,await f.schedule((async()=>{await a(),E=0}))),f),f={load:async(e,s)=>await d((async()=>{try{a.setContent(await t())}catch{a.setContent([e,s])}})),startAutoLoad:async(e={},n={})=>(f.stopAutoLoad(),await f.load(e,n),u=1,l=s((async(e,s)=>{if(s){const t=s();await d((async()=>a.setTransactionChanges(t)))}else await d((async()=>{try{a.setContent(e?.()??await t())}catch(a){i?.(a)}}))})),f),stopAutoLoad:()=>(u&&(n(l),l=void 0,u=0),f),save:async t=>(1!=E&&(E=2,await f.schedule((async()=>{try{await e(a.getContent,t)}catch(a){i?.(a)}E=0}))),f),startAutoSave:async()=>(await f.stopAutoSave().save(),c=a.addDidFinishTransactionListener(((a,t)=>{const[e,s]=t();F(e)&&F(s)||f.save((()=>[e,s]))})),f),stopAutoSave:()=>(w(c,a.delListener),f),schedule:async(...a)=>(A(P(X,o),...a),await(async()=>{if(!P(Q,o)){for(_(Q,o,1);!y((a=P(X,o),r=a.shift()));)try{await r()}catch(a){i?.(a)}_(Q,o,0)}var a})(),f),getStore:()=>a,destroy:()=>f.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return S(f)},aa="store",ta=(a,t,e,s,n,[i],o,c)=>{const[r,y,w,E]=z(t,o,n);return Z(a,(async()=>await E((async()=>(await r(),V((await y(i,k))[q]?.[aa]??"null"))))),(async a=>await E((async()=>{var t;await r(),await w(i,k,{[q]:{[aa]:(t=a()??null,JSON.stringify(t,((a,t)=>l(t,Map)?R.fromEntries([...t]):t)))}},!0,!0)}))),e,s,n,c)},ea=(a,t,e,s,n,[i,o,[c,r,l]],w,E)=>{const[d,f,p,T]=z(t,w,n),v=async(a,t)=>await u(x(o,(async([e,s,n,i],o)=>{const c=a[o];t&&void 0===c||await p(e,s,c,n,i,t)}))),A=async(a,t)=>r?await p(l,k,{[q]:a},!0,!0,t):null;return Z(a,(async()=>await T((async()=>{await d();const a=await(async()=>C(m(await u(x(i,(async([a,t],e)=>[a,await f(e,t)]))),(a=>!F(a[1])))))(),t=await(async()=>c?(await f(l,k))[q]:{})();return F(a)&&y(t)?void 0:[a,t]}))),(async(a,t)=>await T((async()=>{if(await d(),y(t)){const[t,e]=a();await v(t),await A(e)}else{const[a,e]=t();await v(a,!0),await A(e,!0)}}))),e,s,n,E)},sa="json",na="autoLoadIntervalSeconds",ia="rowIdColumnName",oa="tableId",ca="tableName",ra={mode:sa,[na]:1},la={load:0,save:0,[ca]:e+"_values"},ya=(a,t,e,s)=>{const n=M();return g(a,((a,i)=>{const o=v(D(b(t,E(a)?{[e]:a}:a)),0,I(t));y(o[0])||s(i,o[0])||_(n,i,o)})),n},wa="pragma ",Ea="data_version",ua="schema_version",da=(a,t,s,n,i,o,l,y)=>{let w,u;const[d,f,p,T]=(a=>{const t=(a=>b(ra,E(a)?{storeTableName:a}:a??{}))(a),s=t[na];if(t.mode==sa){const{storeTableName:a=e}=t;return[1,s,[a],H(a)]}const{tables:{load:n={},save:i={}}={},values:o={}}=t,c=v(D(b(la,o)),0,I(la)),r=c[2],l=H(r);return[0,s,[ya(n,{[oa]:null,[ia]:k},oa,(a=>W(l,a)&&a==r)),ya(i,{[ca]:null,[ia]:k,deleteEmptyColumns:0,deleteEmptyTable:0},ca,((a,t)=>W(l,t)&&t==r)),c],l]})(t);return(d?ta:ea)(a,o?async(a,t)=>(o(a,t),await s(a,t)):s,(a=>[c((async()=>{try{const t=(await s(wa+Ea))[0][Ea],e=(await s(wa+ua))[0][ua];t==(w??=t)&&e==(u??=e)||(a(),w=t,u=e)}catch{}}),1e3*f),n((t=>T.has(t)?a():0))]),(([a,t])=>{r(a),w=u=null,i(t)}),l,p,h(T),y)};a.createExpoSqlitePersister=(a,t,e,s,n)=>da(a,e,(async(a,e=[])=>(await t.execAsync([{sql:a,args:e}],!1))[0].rows),(a=>t.onDatabaseChange((({tableName:t})=>a(t)))),(a=>a.remove()),s,n,t)},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((a="undefined"!=typeof globalThis?globalThis:a||self).TinyBasePersisterExpoSqlite={});
1
+ var a,t;a=this,t=function(a){"use strict";const t=a=>typeof a,e="tinybase",s=",",n=t(""),i=(a,t)=>a.repeat(t),o=Promise,c=setInterval,r=clearInterval,l=(a,t)=>a instanceof t,y=a=>null==a,w=(a,t,e)=>y(a)?e?.():t(a),E=a=>t(a)==n,u=(a,t,e)=>a.slice(t,e),d=async a=>o.all(a),f=(a,t="")=>a.join(t),p=(a,t)=>a.map(t),T=a=>a.length,m=a=>0==T(a),v=(a,t)=>a.filter(t),A=(a,...t)=>a.push(...t),L=(a,t)=>a?.has(t)??!1,h=a=>[...a?.values()??[]],N=(a,t)=>a?.delete(t),R=Object,O=R.keys,S=R.freeze,C=(a=[])=>R.fromEntries(a),b=(...a)=>R.assign({},...a),g=(a,t)=>p(R.entries(a),(([a,e])=>t(e,a))),D=a=>R.values(a),I=a=>T(O(a)),F=a=>(a=>l(a,R)&&a.constructor==R)(a)&&0==I(a),M=a=>new Map(a),$=a=>[...a?.keys()??[]],P=(a,t)=>a?.get(t),x=(a,t)=>p([...a?.entries()??[]],(([a,e])=>t(e,a))),_=(a,t,e)=>y(e)?(N(a,t),a):a?.set(t,e),B=(a,t,e)=>(L(a,t)||_(a,t,e()),P(a,t)),j=(a,t,e,s=_)=>(g(t,((t,s)=>e(a,s,t))),((a,t)=>{((a,t)=>{a?.forEach(t)})(a,((a,e)=>t(e)))})(a,(e=>((a,t)=>!y(((a,t)=>w(a,(a=>a[t])))(a,t)))(t,e)?0:s(a,e))),a),H=a=>new Set(Array.isArray(a)||y(a)?a:[a]),W=(a,t)=>a?.add(t),q="_",k="_id",J=a=>`"${a.replace(/"/g,'""')}"`,U="FROM pragma_table_",Y="WHERE",z=(a,t,e)=>{const n=M();return[async()=>j(n,C(await d(p(await a("SELECT name "+U+"list WHERE schema='main'AND type='table'AND name IN("+K(t)+")",t),(async({name:t})=>[t,C(p(await a("SELECT name,type "+U+"info(?)",[t]),(({name:a,type:t})=>[a,t])))])))),((a,t,e)=>_(n,t,j(B(n,t,M),e,((a,t,e)=>{e!=P(a,t)&&_(a,t,e)}),((a,t)=>_(a,t))))),((a,t)=>_(n,t))),async(t,e)=>((a,t)=>!y(P(P(n,a),t)))(t,e)?C(v(p(await a("SELECT*FROM"+J(t)),(a=>{return[a[e],(t={...a},s=e,delete t[s],t)];var t,s})),(([a,t])=>!y(a)&&!F(t)))):{},async(t,e,i,o,c,r=!1)=>{const l=H();g(i??{},(a=>p(O(a??{}),(a=>W(l,a)))));const w=h(l);if(!r&&c&&m(w)&&L(n,t))return await a("DROP TABLE"+J(t)),void _(n,t);if(m(w)||L(n,t)){const s=P(n,t),i=H($(s));await d([...p(w,(async e=>{N(i,e)||(await a(`ALTER TABLE${J(t)}ADD${J(e)}`),_(s,e,""))})),...!r&&o?p(h(i),(async n=>{n!=e&&(await a(`ALTER TABLE${J(t)}DROP${J(n)}`),_(s,n))})):[]])}else await a(`CREATE TABLE${J(t)}(${J(e)} PRIMARY KEY ON CONFLICT REPLACE${f(p(w,(a=>s+J(a))))});`),_(n,t,M([[e,""],...p(w,(a=>[a,""]))]));if(r)y(i)?await a("DELETE FROM"+J(t)+"WHERE 1"):await d(g(i,(async(s,n)=>{y(s)?await a("DELETE FROM"+J(t)+Y+J(e)+"=?",[n]):m(w)||await G(a,t,e,O(s),[n,...D(s)])})));else if(m(w))L(n,t)&&await a("DELETE FROM"+J(t)+"WHERE 1");else{const s=v($(P(n,t)),(a=>a!=e)),o=[],c=[];g(i??{},((a,t)=>{A(o,t,...p(s,(t=>a?.[t]))),A(c,t)})),await G(a,t,e,s,o),await a("DELETE FROM"+J(t)+Y+J(e)+"NOT IN("+K(c)+")",c)}},async t=>{let s;await a("BEGIN");try{s=await t()}catch(a){e?.(a)}return await a("END"),s}]},G=async(a,t,e,n,o)=>await a("INSERT INTO"+J(t)+"("+J(e)+f(p(n,(a=>s+J(a))))+")VALUES"+u(i(`,(?${i(",?",T(n))})`,T(o)/(T(n)+1)),1)+"ON CONFLICT("+J(e)+")DO UPDATE SET"+f(p(n,(a=>J(a)+"=excluded."+J(a))),s),o),K=a=>f(p(a,(()=>"?")),s),V=JSON.parse,Q=M(),X=M(),Z=(a,t,e,s,n,i,o=[])=>{let c,r,l,E=0,u=0;B(Q,o,(()=>0)),B(X,o,(()=>[]));const d=async a=>(2!=E&&(E=1,await f.schedule((async()=>{await a(),E=0}))),f),f={load:async(e,s)=>await d((async()=>{try{a.setContent(await t())}catch{a.setContent([e,s])}})),startAutoLoad:async(e={},n={})=>(f.stopAutoLoad(),await f.load(e,n),u=1,l=s((async(e,s)=>{if(s){const t=s();await d((async()=>a.setTransactionChanges(t)))}else await d((async()=>{try{a.setContent(e?.()??await t())}catch(a){i?.(a)}}))})),f),stopAutoLoad:()=>(u&&(n(l),l=void 0,u=0),f),save:async t=>(1!=E&&(E=2,await f.schedule((async()=>{try{await e(a.getContent,t)}catch(a){i?.(a)}E=0}))),f),startAutoSave:async()=>(await f.stopAutoSave().save(),c=a.addDidFinishTransactionListener(((a,t)=>{const[e,s]=t();F(e)&&F(s)||f.save((()=>[e,s]))})),f),stopAutoSave:()=>(w(c,a.delListener),f),schedule:async(...a)=>(A(P(X,o),...a),await(async()=>{if(!P(Q,o)){for(_(Q,o,1);!y((a=P(X,o),r=a.shift()));)try{await r()}catch(a){i?.(a)}_(Q,o,0)}var a})(),f),getStore:()=>a,destroy:()=>f.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return S(f)},aa="store",ta=(a,t,e,s,n,[i],o,c)=>{const[r,y,w,E]=z(t,o,n);return Z(a,(async()=>await E((async()=>(await r(),V((await y(i,k))[q]?.[aa]??"null"))))),(async a=>await E((async()=>{var t;await r(),await w(i,k,{[q]:{[aa]:(t=a()??null,JSON.stringify(t,((a,t)=>l(t,Map)?R.fromEntries([...t]):t)))}},!0,!0)}))),e,s,n,c)},ea=(a,t,e,s,n,[i,o,[c,r,l]],w,E)=>{const[u,f,p,T]=z(t,w,n),m=async(a,t)=>await d(x(o,(async([e,s,n,i],o)=>{const c=a[o];t&&void 0===c||await p(e,s,c,n,i,t)}))),A=async(a,t)=>r?await p(l,k,{[q]:a},!0,!0,t):null;return Z(a,(async()=>await T((async()=>{await u();const a=await(async()=>C(v(await d(x(i,(async([a,t],e)=>[a,await f(e,t)]))),(a=>!F(a[1])))))(),t=await(async()=>c?(await f(l,k))[q]:{})();return F(a)&&y(t)?void 0:[a,t]}))),(async(a,t)=>await T((async()=>{if(await u(),y(t)){const[t,e]=a();await m(t),await A(e)}else{const[a,e]=t();await m(a,!0),await A(e,!0)}}))),e,s,n,E)},sa="json",na="autoLoadIntervalSeconds",ia="rowIdColumnName",oa="tableId",ca="tableName",ra={mode:sa,[na]:1},la={load:0,save:0,[ca]:e+"_values"},ya=(a,t,e,s)=>{const n=M();return g(a,((a,i)=>{const o=u(D(b(t,E(a)?{[e]:a}:a)),0,I(t));y(o[0])||s(i,o[0])||_(n,i,o)})),n},wa="pragma ",Ea="data_version",ua="schema_version",da=(a,t,s,n,i,o,l,y)=>{let w,d;const[f,p,T,m]=(a=>{const t=(a=>b(ra,E(a)?{storeTableName:a}:a??{}))(a),s=t[na];if(t.mode==sa){const{storeTableName:a=e}=t;return[1,s,[a],H(a)]}const{tables:{load:n={},save:i={}}={},values:o={}}=t,c=u(D(b(la,o)),0,I(la)),r=c[2],l=H(r);return[0,s,[ya(n,{[oa]:null,[ia]:k},oa,(a=>W(l,a)&&a==r)),ya(i,{[ca]:null,[ia]:k,deleteEmptyColumns:0,deleteEmptyTable:0},ca,((a,t)=>W(l,t)&&t==r)),c],l]})(t);return(f?ta:ea)(a,o?async(a,t)=>(o(a,t),await s(a,t)):s,(a=>[c((async()=>{try{const t=(await s(wa+Ea))[0][Ea],e=(await s(wa+ua))[0][ua];t==(w??=t)&&e==(d??=e)||(a(),w=t,d=e)}catch{}}),1e3*p),n((t=>m.has(t)?a():0))]),(([a,t])=>{r(a),w=d=null,i(t)}),l,T,h(m),y)};a.createExpoSqlitePersister=(a,t,e,s,n)=>da(a,e,(async(a,e=[])=>(await t.execAsync([{sql:a,args:e}],!1))[0].rows),(a=>t.onDatabaseChange((({tableName:t})=>a(t)))),(a=>a.remove()),s,n,t)},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((a="undefined"!=typeof globalThis?globalThis:a||self).TinyBasePersisterExpoSqlite={});
@@ -0,0 +1 @@
1
+ var t,e;t=this,e=function(t){"use strict";const e=t=>typeof t,a=e(""),s=(t,e)=>t instanceof e,n=t=>null==t,o=Object,r=o.keys,i=o.freeze,c=t=>(t=>s(t,o)&&t.constructor==o)(t)&&0==(t=>r(t).length)(t),d=t=>JSON.stringify(t,((t,e)=>s(e,Map)?o.fromEntries([...e]):e)),y=JSON.parse,u=t=>new Map(t),f=(t,e)=>t?.get(e),p=(t,e,a)=>{return n(a)?(s=t,o=e,s?.delete(o),t):t?.set(e,a);var s,o},h=(t,e,a)=>{var s,n;return s=t,n=e,s?.has(n)||p(t,e,a()),f(t,e)},l=u(),v=u(),w="message";t.createPartyKitPersister=(t,s,o="https",r)=>{const{host:u,room:g}=s.partySocketOptions,m=o+"://"+u+"/parties/"+(s.name??"main")+"/"+g+"/store",S=async t=>await(await fetch(m,{...t?{method:"PUT",body:d(t)}:{},mode:"cors",cache:"no-store"})).json();return((t,e,a,s,o,r,d=[])=>{let y,u,w,g=0,m=0;h(l,d,(()=>0)),h(v,d,(()=>[]));const S=async t=>(2!=g&&(g=1,await A.schedule((async()=>{await t(),g=0}))),A),A={load:async(a,s)=>await S((async()=>{try{t.setContent(await e())}catch{t.setContent([a,s])}})),startAutoLoad:async(a={},n={})=>(A.stopAutoLoad(),await A.load(a,n),m=1,w=s((async(a,s)=>{if(s){const e=s();await S((async()=>t.setTransactionChanges(e)))}else await S((async()=>{try{t.setContent(a?.()??await e())}catch(t){r?.(t)}}))})),A),stopAutoLoad:()=>(m&&(o(w),w=void 0,m=0),A),save:async e=>(1!=g&&(g=2,await A.schedule((async()=>{try{await a(t.getContent,e)}catch(t){r?.(t)}g=0}))),A),startAutoSave:async()=>(await A.stopAutoSave().save(),y=t.addDidFinishTransactionListener(((t,e)=>{const[a,s]=e();c(a)&&c(s)||A.save((()=>[a,s]))})),A),stopAutoSave:()=>{var e,a;return e=y,a=t.delListener,n(e)||a(e),A},schedule:async(...t)=>(((t,...e)=>{t.push(...e)})(f(v,d),...t),await(async()=>{if(!f(l,d)){for(p(l,d,1);!n((t=f(v,d),u=t.shift()));)try{await u()}catch(t){r?.(t)}p(l,d,0)}var t})(),A),getStore:()=>t,destroy:()=>A.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return i(A)})(t,(async()=>await S()),(async(t,n)=>{var o;n?s.send(("s",o=n(),"s"+(e(o)==a?o:d(o)))):await S(t())}),(t=>{const e=e=>{const[a,s]=[(i=e.data)[0],y((n=i,o=1,n.slice(o,r)))];var n,o,r,i;"s"==a&&t(void 0,(()=>s))};return s.addEventListener(w,e),e}),(t=>{s.removeEventListener(w,t)}),r)}},"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisterPartyKitClient={});
@@ -0,0 +1 @@
1
+ var t,e;t=this,e=function(t){"use strict";const e=t=>typeof t,s=e(""),a="t",r=Promise,i=t=>null==t,n=(t,e,s)=>t.slice(e,s),o=(t,e)=>t.map(e),c=(t,...e)=>t.push(...e),l=Object,y=(t=[])=>l.fromEntries(t),f=(t,e)=>o(l.entries(t),(([t,s])=>e(s,t))),p=(t,e,s)=>(((t,e)=>!i(((t,e)=>{return a=t=>t[e],i(s=t)?void 0:a(s);var s,a})(t,e)))(t,e)||(t[e]=s()),t[e]),u=t=>JSON.stringify(t,((t,e)=>e instanceof Map?l.fromEntries([...e]):e)),d=JSON.parse,h=(t,e)=>[t[0],e?d(n(t,1)):n(t,1)],w=(t,e)=>((t,e)=>t?.forEach(e))(t,((t,s)=>e(s,t))),g="hasStore",v=y(o(["Origin","Methods","Headers"],(t=>["Access-Control-Allow-"+t,"*"]))),m=async t=>await t.get(g),b=async(t,e)=>{const s=[t.put(g,1)],n=[];f(e[0],((e,r)=>i(e)?((t,...e)=>t.unshift(...e))(n,P(a,r)):f(e,((e,o)=>i(e)?c(n,P(a,r,o)):f(e,((e,i)=>S(s,t,P(a,r,o,i),e))))))),f(e[1],((e,a)=>S(s,t,"v"+a,e))),0!=n.length&&w(await t.list(),(e=>n.every((a=>!e.startsWith(a)||S(s,t,e)&&!1)))),await(async t=>r.all(t))(s)},P=(t,...e)=>t+n(u(e),1,-1),S=(t,e,s,a)=>c(t,i(a)?e.delete(s):e.put(s,a)),T=(t,e=null)=>new Response(e,{status:t,headers:v});t.TinyBasePartyKitServer=class{constructor(t){this.party=t}async onRequest(t){const e=this.party.storage;if(t.url.endsWith("/store")){const s=await m(e),r=await t.text();return"PUT"==t.method?s?T(205):(await b(this.party.storage,d(r)),T(201)):T(200,s?u(await(async t=>{const e={},s={};return w(await t.list(),((t,r)=>{const[i,n]=h(t);if(i==a){const[t,s,a]=d("["+n+"]");p(p(e,t,y),s,y)[a]=r}else"v"==i&&(s[n]=r)})),[e,s]})(e)):"")}return T(404)}async onMessage(t,a){const r=this.party.storage,[i,n]=h(t,1);"s"==i&&await m(r)&&(await b(r,n),this.party.broadcast(((t,a)=>"s"+(e(a)==s?a:u(a)))(0,n),[a.id]))}}},"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).TinyBasePersisterPartyKitServer={});
@@ -1 +1 @@
1
- var a,t;a=this,t=function(a){"use strict";const t=a=>typeof a,e="tinybase",s=",",n=t(""),i=(a,t)=>a.repeat(t),o=Promise,c=setInterval,r=clearInterval,l=(a,t)=>a instanceof t,y=a=>null==a,w=(a,t,e)=>y(a)?e?.():t(a),u=a=>t(a)==n,d=async a=>o.all(a),E=(a,t="")=>a.join(t),p=(a,t)=>a.map(t),f=a=>a.length,m=a=>0==f(a),T=(a,t)=>a.filter(t),v=(a,t,e)=>a.slice(t,e),h=(a,...t)=>a.push(...t),A=(a,t)=>a?.has(t)??!1,L=a=>[...a?.values()??[]],R=(a,t)=>a?.delete(t),N=Object,O=N.keys,S=N.freeze,b=(a=[])=>N.fromEntries(a),C=(...a)=>N.assign({},...a),g=(a,t)=>p(N.entries(a),(([a,e])=>t(e,a))),D=a=>N.values(a),I=a=>f(O(a)),_=a=>(a=>l(a,N)&&a.constructor==N)(a)&&0==I(a),M=a=>new Map(a),F=a=>[...a?.keys()??[]],$=(a,t)=>a?.get(t),P=(a,t)=>p([...a?.entries()??[]],(([a,e])=>t(e,a))),B=(a,t,e)=>y(e)?(R(a,t),a):a?.set(t,e),W=(a,t,e)=>(A(a,t)||B(a,t,e()),$(a,t)),j=(a,t,e,s=B)=>(g(t,((t,s)=>e(a,s,t))),((a,t)=>{((a,t)=>{a?.forEach(t)})(a,((a,e)=>t(e)))})(a,(e=>((a,t)=>!y(((a,t)=>w(a,(a=>a[t])))(a,t)))(t,e)?0:s(a,e))),a),x=a=>new Set(Array.isArray(a)||y(a)?a:[a]),k=(a,t)=>a?.add(t),q="_",H="_id",J=a=>`"${a.replace(/"/g,'""')}"`,U="FROM pragma_table_",V="WHERE",Y=(a,t,e)=>{const n=M();return[async()=>j(n,b(await d(p(await a("SELECT name "+U+"list WHERE schema='main'AND type='table'AND name IN("+G(t)+")",t),(async({name:t})=>[t,b(p(await a("SELECT name,type "+U+"info(?)",[t]),(({name:a,type:t})=>[a,t])))])))),((a,t,e)=>B(n,t,j(W(n,t,M),e,((a,t,e)=>{e!=$(a,t)&&B(a,t,e)}),((a,t)=>B(a,t))))),((a,t)=>B(n,t))),async(t,e)=>((a,t)=>!y($($(n,a),t)))(t,e)?b(T(p(await a("SELECT*FROM"+J(t)),(a=>{return[a[e],(t={...a},s=e,delete t[s],t)];var t,s})),(([a,t])=>!y(a)&&!_(t)))):{},async(t,e,i,o,c,r=!1)=>{const l=x();g(i??{},(a=>p(O(a??{}),(a=>k(l,a)))));const w=L(l);if(!r&&c&&m(w)&&A(n,t))return await a("DROP TABLE"+J(t)),void B(n,t);if(m(w)||A(n,t)){const s=$(n,t),i=x(F(s));await d([...p(w,(async e=>{R(i,e)||(await a(`ALTER TABLE${J(t)}ADD${J(e)}`),B(s,e,""))})),...!r&&o?p(L(i),(async n=>{n!=e&&(await a(`ALTER TABLE${J(t)}DROP${J(n)}`),B(s,n))})):[]])}else await a(`CREATE TABLE${J(t)}(${J(e)} PRIMARY KEY ON CONFLICT REPLACE${E(p(w,(a=>s+J(a))))});`),B(n,t,M([[e,""],...p(w,(a=>[a,""]))]));if(r)y(i)?await a("DELETE FROM"+J(t)+"WHERE 1"):await d(g(i,(async(s,n)=>{y(s)?await a("DELETE FROM"+J(t)+V+J(e)+"=?",[n]):m(w)||await z(a,t,e,O(s),[n,...D(s)])})));else if(m(w))A(n,t)&&await a("DELETE FROM"+J(t)+"WHERE 1");else{const s=T(F($(n,t)),(a=>a!=e)),o=[],c=[];g(i??{},((a,t)=>{h(o,t,...p(s,(t=>a?.[t]))),h(c,t)})),await z(a,t,e,s,o),await a("DELETE FROM"+J(t)+V+J(e)+"NOT IN("+G(c)+")",c)}},async t=>{let s;await a("BEGIN");try{s=await t()}catch(a){e?.(a)}return await a("END"),s}]},z=async(a,t,e,n,o)=>await a("INSERT INTO"+J(t)+"("+J(e)+E(p(n,(a=>s+J(a))))+")VALUES"+i(`,(?${i(",?",f(n))})`,f(o)/(f(n)+1)).substring(1)+"ON CONFLICT("+J(e)+")DO UPDATE SET"+E(p(n,(a=>J(a)+"=excluded."+J(a))),s),o),G=a=>E(p(a,(()=>"?")),s),K=JSON.parse,Q=M(),X=M(),Z=(a,t,e,s,n,i,o=[])=>{let c,r,l,u=0,d=0;W(Q,o,(()=>0)),W(X,o,(()=>[]));const E=async a=>(2!=u&&(u=1,await p.schedule((async()=>{await a(),u=0}))),p),p={load:async(e,s)=>await E((async()=>{try{a.setContent(await t())}catch{a.setContent([e,s])}})),startAutoLoad:async(e={},n={})=>(p.stopAutoLoad(),await p.load(e,n),d=1,l=s((async(e,s)=>{if(s){const t=s();await E((async()=>a.setTransactionChanges(t)))}else await E((async()=>{try{a.setContent(e?.()??await t())}catch(a){i?.(a)}}))})),p),stopAutoLoad:()=>(d&&(n(l),l=void 0,d=0),p),save:async t=>(1!=u&&(u=2,await p.schedule((async()=>{try{await e(a.getContent,t)}catch(a){i?.(a)}u=0}))),p),startAutoSave:async()=>(await p.stopAutoSave().save(),c=a.addDidFinishTransactionListener(((a,t)=>{const[e,s]=t();_(e)&&_(s)||p.save((()=>[e,s]))})),p),stopAutoSave:()=>(w(c,a.delListener),p),schedule:async(...a)=>(h($(X,o),...a),await(async()=>{if(!$(Q,o)){for(B(Q,o,1);!y((a=$(X,o),r=a.shift()));)try{await r()}catch(a){i?.(a)}B(Q,o,0)}var a})(),p),getStore:()=>a,destroy:()=>p.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return S(p)},aa="store",ta=(a,t,e,s,n,[i],o,c)=>{const[r,y,w,u]=Y(t,o,n);return Z(a,(async()=>await u((async()=>(await r(),K((await y(i,H))[q]?.[aa]??"null"))))),(async a=>await u((async()=>{var t;await r(),await w(i,H,{[q]:{[aa]:(t=a()??null,JSON.stringify(t,((a,t)=>l(t,Map)?N.fromEntries([...t]):t)))}},!0,!0)}))),e,s,n,c)},ea=(a,t,e,s,n,[i,o,[c,r,l]],w,u)=>{const[E,p,f,m]=Y(t,w,n),v=async(a,t)=>await d(P(o,(async([e,s,n,i],o)=>{const c=a[o];t&&void 0===c||await f(e,s,c,n,i,t)}))),h=async(a,t)=>r?await f(l,H,{[q]:a},!0,!0,t):null;return Z(a,(async()=>await m((async()=>{await E();const a=await(async()=>b(T(await d(P(i,(async([a,t],e)=>[a,await p(e,t)]))),(a=>!_(a[1])))))(),t=await(async()=>c?(await p(l,H))[q]:{})();return _(a)&&y(t)?void 0:[a,t]}))),(async(a,t)=>await m((async()=>{if(await E(),y(t)){const[t,e]=a();await v(t),await h(e)}else{const[a,e]=t();await v(a,!0),await h(e,!0)}}))),e,s,n,u)},sa="json",na="autoLoadIntervalSeconds",ia="rowIdColumnName",oa="tableId",ca="tableName",ra={mode:sa,[na]:1},la={load:0,save:0,[ca]:e+"_values"},ya=(a,t,e,s)=>{const n=M();return g(a,((a,i)=>{const o=v(D(C(t,u(a)?{[e]:a}:a)),0,I(t));y(o[0])||s(i,o[0])||B(n,i,o)})),n},wa="pragma ",ua="data_version",da="schema_version",Ea=(a,t,s,n,i,o,l,y)=>{let w,d;const[E,p,f,m]=(a=>{const t=(a=>C(ra,u(a)?{storeTableName:a}:a??{}))(a),s=t[na];if(t.mode==sa){const{storeTableName:a=e}=t;return[1,s,[a],x(a)]}const{tables:{load:n={},save:i={}}={},values:o={}}=t,c=v(D(C(la,o)),0,I(la)),r=c[2],l=x(r);return[0,s,[ya(n,{[oa]:null,[ia]:H},oa,(a=>k(l,a)&&a==r)),ya(i,{[ca]:null,[ia]:H,deleteEmptyColumns:0,deleteEmptyTable:0},ca,((a,t)=>k(l,t)&&t==r)),c],l]})(t);return(E?ta:ea)(a,o?async(a,t)=>(o(a,t),await s(a,t)):s,(a=>[c((async()=>{try{const t=(await s(wa+ua))[0][ua],e=(await s(wa+da))[0][da];t==(w??=t)&&e==(d??=e)||(a(),w=t,d=e)}catch{}}),1e3*p),n((t=>m.has(t)?a():0))]),(([a,t])=>{r(a),w=d=null,i(t)}),l,f,L(m),y)};a.createSqliteWasmPersister=(a,t,e,s,n,i)=>Ea(a,s,(async(a,t=[])=>e.exec(a,{bind:t,rowMode:"object",returnValue:"resultRows"}).map((a=>({...a})))),(a=>t.capi.sqlite3_update_hook(e,((t,e,s,n)=>a(n)),0)),(()=>t.capi.sqlite3_update_hook(e,(()=>0),0)),n,i,e)},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((a="undefined"!=typeof globalThis?globalThis:a||self).TinyBasePersisterSqliteWasm={});
1
+ var a,t;a=this,t=function(a){"use strict";const t=a=>typeof a,e="tinybase",s=",",n=t(""),i=(a,t)=>a.repeat(t),o=Promise,c=setInterval,r=clearInterval,l=(a,t)=>a instanceof t,y=a=>null==a,w=(a,t,e)=>y(a)?e?.():t(a),u=a=>t(a)==n,d=(a,t,e)=>a.slice(t,e),E=async a=>o.all(a),p=(a,t="")=>a.join(t),f=(a,t)=>a.map(t),m=a=>a.length,T=a=>0==m(a),v=(a,t)=>a.filter(t),h=(a,...t)=>a.push(...t),A=(a,t)=>a?.has(t)??!1,L=a=>[...a?.values()??[]],R=(a,t)=>a?.delete(t),N=Object,O=N.keys,S=N.freeze,C=(a=[])=>N.fromEntries(a),b=(...a)=>N.assign({},...a),D=(a,t)=>f(N.entries(a),(([a,e])=>t(e,a))),g=a=>N.values(a),I=a=>m(O(a)),_=a=>(a=>l(a,N)&&a.constructor==N)(a)&&0==I(a),M=a=>new Map(a),F=a=>[...a?.keys()??[]],$=(a,t)=>a?.get(t),P=(a,t)=>f([...a?.entries()??[]],(([a,e])=>t(e,a))),B=(a,t,e)=>y(e)?(R(a,t),a):a?.set(t,e),W=(a,t,e)=>(A(a,t)||B(a,t,e()),$(a,t)),j=(a,t,e,s=B)=>(D(t,((t,s)=>e(a,s,t))),((a,t)=>{((a,t)=>{a?.forEach(t)})(a,((a,e)=>t(e)))})(a,(e=>((a,t)=>!y(((a,t)=>w(a,(a=>a[t])))(a,t)))(t,e)?0:s(a,e))),a),x=a=>new Set(Array.isArray(a)||y(a)?a:[a]),k=(a,t)=>a?.add(t),q="_",H="_id",J=a=>`"${a.replace(/"/g,'""')}"`,U="FROM pragma_table_",V="WHERE",Y=(a,t,e)=>{const n=M();return[async()=>j(n,C(await E(f(await a("SELECT name "+U+"list WHERE schema='main'AND type='table'AND name IN("+G(t)+")",t),(async({name:t})=>[t,C(f(await a("SELECT name,type "+U+"info(?)",[t]),(({name:a,type:t})=>[a,t])))])))),((a,t,e)=>B(n,t,j(W(n,t,M),e,((a,t,e)=>{e!=$(a,t)&&B(a,t,e)}),((a,t)=>B(a,t))))),((a,t)=>B(n,t))),async(t,e)=>((a,t)=>!y($($(n,a),t)))(t,e)?C(v(f(await a("SELECT*FROM"+J(t)),(a=>{return[a[e],(t={...a},s=e,delete t[s],t)];var t,s})),(([a,t])=>!y(a)&&!_(t)))):{},async(t,e,i,o,c,r=!1)=>{const l=x();D(i??{},(a=>f(O(a??{}),(a=>k(l,a)))));const w=L(l);if(!r&&c&&T(w)&&A(n,t))return await a("DROP TABLE"+J(t)),void B(n,t);if(T(w)||A(n,t)){const s=$(n,t),i=x(F(s));await E([...f(w,(async e=>{R(i,e)||(await a(`ALTER TABLE${J(t)}ADD${J(e)}`),B(s,e,""))})),...!r&&o?f(L(i),(async n=>{n!=e&&(await a(`ALTER TABLE${J(t)}DROP${J(n)}`),B(s,n))})):[]])}else await a(`CREATE TABLE${J(t)}(${J(e)} PRIMARY KEY ON CONFLICT REPLACE${p(f(w,(a=>s+J(a))))});`),B(n,t,M([[e,""],...f(w,(a=>[a,""]))]));if(r)y(i)?await a("DELETE FROM"+J(t)+"WHERE 1"):await E(D(i,(async(s,n)=>{y(s)?await a("DELETE FROM"+J(t)+V+J(e)+"=?",[n]):T(w)||await z(a,t,e,O(s),[n,...g(s)])})));else if(T(w))A(n,t)&&await a("DELETE FROM"+J(t)+"WHERE 1");else{const s=v(F($(n,t)),(a=>a!=e)),o=[],c=[];D(i??{},((a,t)=>{h(o,t,...f(s,(t=>a?.[t]))),h(c,t)})),await z(a,t,e,s,o),await a("DELETE FROM"+J(t)+V+J(e)+"NOT IN("+G(c)+")",c)}},async t=>{let s;await a("BEGIN");try{s=await t()}catch(a){e?.(a)}return await a("END"),s}]},z=async(a,t,e,n,o)=>await a("INSERT INTO"+J(t)+"("+J(e)+p(f(n,(a=>s+J(a))))+")VALUES"+d(i(`,(?${i(",?",m(n))})`,m(o)/(m(n)+1)),1)+"ON CONFLICT("+J(e)+")DO UPDATE SET"+p(f(n,(a=>J(a)+"=excluded."+J(a))),s),o),G=a=>p(f(a,(()=>"?")),s),K=JSON.parse,Q=M(),X=M(),Z=(a,t,e,s,n,i,o=[])=>{let c,r,l,u=0,d=0;W(Q,o,(()=>0)),W(X,o,(()=>[]));const E=async a=>(2!=u&&(u=1,await p.schedule((async()=>{await a(),u=0}))),p),p={load:async(e,s)=>await E((async()=>{try{a.setContent(await t())}catch{a.setContent([e,s])}})),startAutoLoad:async(e={},n={})=>(p.stopAutoLoad(),await p.load(e,n),d=1,l=s((async(e,s)=>{if(s){const t=s();await E((async()=>a.setTransactionChanges(t)))}else await E((async()=>{try{a.setContent(e?.()??await t())}catch(a){i?.(a)}}))})),p),stopAutoLoad:()=>(d&&(n(l),l=void 0,d=0),p),save:async t=>(1!=u&&(u=2,await p.schedule((async()=>{try{await e(a.getContent,t)}catch(a){i?.(a)}u=0}))),p),startAutoSave:async()=>(await p.stopAutoSave().save(),c=a.addDidFinishTransactionListener(((a,t)=>{const[e,s]=t();_(e)&&_(s)||p.save((()=>[e,s]))})),p),stopAutoSave:()=>(w(c,a.delListener),p),schedule:async(...a)=>(h($(X,o),...a),await(async()=>{if(!$(Q,o)){for(B(Q,o,1);!y((a=$(X,o),r=a.shift()));)try{await r()}catch(a){i?.(a)}B(Q,o,0)}var a})(),p),getStore:()=>a,destroy:()=>p.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return S(p)},aa="store",ta=(a,t,e,s,n,[i],o,c)=>{const[r,y,w,u]=Y(t,o,n);return Z(a,(async()=>await u((async()=>(await r(),K((await y(i,H))[q]?.[aa]??"null"))))),(async a=>await u((async()=>{var t;await r(),await w(i,H,{[q]:{[aa]:(t=a()??null,JSON.stringify(t,((a,t)=>l(t,Map)?N.fromEntries([...t]):t)))}},!0,!0)}))),e,s,n,c)},ea=(a,t,e,s,n,[i,o,[c,r,l]],w,u)=>{const[d,p,f,m]=Y(t,w,n),T=async(a,t)=>await E(P(o,(async([e,s,n,i],o)=>{const c=a[o];t&&void 0===c||await f(e,s,c,n,i,t)}))),h=async(a,t)=>r?await f(l,H,{[q]:a},!0,!0,t):null;return Z(a,(async()=>await m((async()=>{await d();const a=await(async()=>C(v(await E(P(i,(async([a,t],e)=>[a,await p(e,t)]))),(a=>!_(a[1])))))(),t=await(async()=>c?(await p(l,H))[q]:{})();return _(a)&&y(t)?void 0:[a,t]}))),(async(a,t)=>await m((async()=>{if(await d(),y(t)){const[t,e]=a();await T(t),await h(e)}else{const[a,e]=t();await T(a,!0),await h(e,!0)}}))),e,s,n,u)},sa="json",na="autoLoadIntervalSeconds",ia="rowIdColumnName",oa="tableId",ca="tableName",ra={mode:sa,[na]:1},la={load:0,save:0,[ca]:e+"_values"},ya=(a,t,e,s)=>{const n=M();return D(a,((a,i)=>{const o=d(g(b(t,u(a)?{[e]:a}:a)),0,I(t));y(o[0])||s(i,o[0])||B(n,i,o)})),n},wa="pragma ",ua="data_version",da="schema_version",Ea=(a,t,s,n,i,o,l,y)=>{let w,E;const[p,f,m,T]=(a=>{const t=(a=>b(ra,u(a)?{storeTableName:a}:a??{}))(a),s=t[na];if(t.mode==sa){const{storeTableName:a=e}=t;return[1,s,[a],x(a)]}const{tables:{load:n={},save:i={}}={},values:o={}}=t,c=d(g(b(la,o)),0,I(la)),r=c[2],l=x(r);return[0,s,[ya(n,{[oa]:null,[ia]:H},oa,(a=>k(l,a)&&a==r)),ya(i,{[ca]:null,[ia]:H,deleteEmptyColumns:0,deleteEmptyTable:0},ca,((a,t)=>k(l,t)&&t==r)),c],l]})(t);return(p?ta:ea)(a,o?async(a,t)=>(o(a,t),await s(a,t)):s,(a=>[c((async()=>{try{const t=(await s(wa+ua))[0][ua],e=(await s(wa+da))[0][da];t==(w??=t)&&e==(E??=e)||(a(),w=t,E=e)}catch{}}),1e3*f),n((t=>T.has(t)?a():0))]),(([a,t])=>{r(a),w=E=null,i(t)}),l,m,L(T),y)};a.createSqliteWasmPersister=(a,t,e,s,n,i)=>Ea(a,s,(async(a,t=[])=>e.exec(a,{bind:t,rowMode:"object",returnValue:"resultRows"}).map((a=>({...a})))),(a=>t.capi.sqlite3_update_hook(e,((t,e,s,n)=>a(n)),0)),(()=>t.capi.sqlite3_update_hook(e,(()=>0),0)),n,i,e)},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((a="undefined"!=typeof globalThis?globalThis:a||self).TinyBasePersisterSqliteWasm={});
@@ -1 +1 @@
1
- var a,t;a=this,t=function(a){"use strict";const t=a=>typeof a,e="tinybase",s=",",n=t(""),i=(a,t)=>a.repeat(t),c=Promise,o=setInterval,r=clearInterval,l=(a,t)=>a instanceof t,y=a=>null==a,w=(a,t,e)=>y(a)?e?.():t(a),u=a=>t(a)==n,E=async a=>c.all(a),d=(a,t="")=>a.join(t),f=(a,t)=>a.map(t),p=a=>a.length,T=a=>0==p(a),m=(a,t)=>a.filter(t),v=(a,t,e)=>a.slice(t,e),A=(a,...t)=>a.push(...t),L=(a,t)=>a?.has(t)??!1,h=a=>[...a?.values()??[]],N=(a,t)=>a?.delete(t),R=Object,O=R.keys,S=R.freeze,C=(a=[])=>R.fromEntries(a),g=(...a)=>R.assign({},...a),b=(a,t)=>f(R.entries(a),(([a,e])=>t(e,a))),D=a=>R.values(a),I=a=>p(O(a)),F=a=>(a=>l(a,R)&&a.constructor==R)(a)&&0==I(a),M=a=>new Map(a),$=a=>[...a?.keys()??[]],P=(a,t)=>a?.get(t),_=(a,t)=>f([...a?.entries()??[]],(([a,e])=>t(e,a))),B=(a,t,e)=>y(e)?(N(a,t),a):a?.set(t,e),j=(a,t,e)=>(L(a,t)||B(a,t,e()),P(a,t)),x=(a,t,e,s=B)=>(b(t,((t,s)=>e(a,s,t))),((a,t)=>{((a,t)=>{a?.forEach(t)})(a,((a,e)=>t(e)))})(a,(e=>((a,t)=>!y(((a,t)=>w(a,(a=>a[t])))(a,t)))(t,e)?0:s(a,e))),a),H=a=>new Set(Array.isArray(a)||y(a)?a:[a]),W=(a,t)=>a?.add(t),k="_",q="_id",J=a=>`"${a.replace(/"/g,'""')}"`,U="FROM pragma_table_",Y="WHERE",z=(a,t,e)=>{const n=M();return[async()=>x(n,C(await E(f(await a("SELECT name "+U+"list WHERE schema='main'AND type='table'AND name IN("+K(t)+")",t),(async({name:t})=>[t,C(f(await a("SELECT name,type "+U+"info(?)",[t]),(({name:a,type:t})=>[a,t])))])))),((a,t,e)=>B(n,t,x(j(n,t,M),e,((a,t,e)=>{e!=P(a,t)&&B(a,t,e)}),((a,t)=>B(a,t))))),((a,t)=>B(n,t))),async(t,e)=>((a,t)=>!y(P(P(n,a),t)))(t,e)?C(m(f(await a("SELECT*FROM"+J(t)),(a=>{return[a[e],(t={...a},s=e,delete t[s],t)];var t,s})),(([a,t])=>!y(a)&&!F(t)))):{},async(t,e,i,c,o,r=!1)=>{const l=H();b(i??{},(a=>f(O(a??{}),(a=>W(l,a)))));const w=h(l);if(!r&&o&&T(w)&&L(n,t))return await a("DROP TABLE"+J(t)),void B(n,t);if(T(w)||L(n,t)){const s=P(n,t),i=H($(s));await E([...f(w,(async e=>{N(i,e)||(await a(`ALTER TABLE${J(t)}ADD${J(e)}`),B(s,e,""))})),...!r&&c?f(h(i),(async n=>{n!=e&&(await a(`ALTER TABLE${J(t)}DROP${J(n)}`),B(s,n))})):[]])}else await a(`CREATE TABLE${J(t)}(${J(e)} PRIMARY KEY ON CONFLICT REPLACE${d(f(w,(a=>s+J(a))))});`),B(n,t,M([[e,""],...f(w,(a=>[a,""]))]));if(r)y(i)?await a("DELETE FROM"+J(t)+"WHERE 1"):await E(b(i,(async(s,n)=>{y(s)?await a("DELETE FROM"+J(t)+Y+J(e)+"=?",[n]):T(w)||await G(a,t,e,O(s),[n,...D(s)])})));else if(T(w))L(n,t)&&await a("DELETE FROM"+J(t)+"WHERE 1");else{const s=m($(P(n,t)),(a=>a!=e)),c=[],o=[];b(i??{},((a,t)=>{A(c,t,...f(s,(t=>a?.[t]))),A(o,t)})),await G(a,t,e,s,c),await a("DELETE FROM"+J(t)+Y+J(e)+"NOT IN("+K(o)+")",o)}},async t=>{let s;await a("BEGIN");try{s=await t()}catch(a){e?.(a)}return await a("END"),s}]},G=async(a,t,e,n,c)=>await a("INSERT INTO"+J(t)+"("+J(e)+d(f(n,(a=>s+J(a))))+")VALUES"+i(`,(?${i(",?",p(n))})`,p(c)/(p(n)+1)).substring(1)+"ON CONFLICT("+J(e)+")DO UPDATE SET"+d(f(n,(a=>J(a)+"=excluded."+J(a))),s),c),K=a=>d(f(a,(()=>"?")),s),V=JSON.parse,Q=M(),X=M(),Z=(a,t,e,s,n,i,c=[])=>{let o,r,l,u=0,E=0;j(Q,c,(()=>0)),j(X,c,(()=>[]));const d=async a=>(2!=u&&(u=1,await f.schedule((async()=>{await a(),u=0}))),f),f={load:async(e,s)=>await d((async()=>{try{a.setContent(await t())}catch{a.setContent([e,s])}})),startAutoLoad:async(e={},n={})=>(f.stopAutoLoad(),await f.load(e,n),E=1,l=s((async(e,s)=>{if(s){const t=s();await d((async()=>a.setTransactionChanges(t)))}else await d((async()=>{try{a.setContent(e?.()??await t())}catch(a){i?.(a)}}))})),f),stopAutoLoad:()=>(E&&(n(l),l=void 0,E=0),f),save:async t=>(1!=u&&(u=2,await f.schedule((async()=>{try{await e(a.getContent,t)}catch(a){i?.(a)}u=0}))),f),startAutoSave:async()=>(await f.stopAutoSave().save(),o=a.addDidFinishTransactionListener(((a,t)=>{const[e,s]=t();F(e)&&F(s)||f.save((()=>[e,s]))})),f),stopAutoSave:()=>(w(o,a.delListener),f),schedule:async(...a)=>(A(P(X,c),...a),await(async()=>{if(!P(Q,c)){for(B(Q,c,1);!y((a=P(X,c),r=a.shift()));)try{await r()}catch(a){i?.(a)}B(Q,c,0)}var a})(),f),getStore:()=>a,destroy:()=>f.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return S(f)},aa="store",ta=(a,t,e,s,n,[i],c,o)=>{const[r,y,w,u]=z(t,c,n);return Z(a,(async()=>await u((async()=>(await r(),V((await y(i,q))[k]?.[aa]??"null"))))),(async a=>await u((async()=>{var t;await r(),await w(i,q,{[k]:{[aa]:(t=a()??null,JSON.stringify(t,((a,t)=>l(t,Map)?R.fromEntries([...t]):t)))}},!0,!0)}))),e,s,n,o)},ea=(a,t,e,s,n,[i,c,[o,r,l]],w,u)=>{const[d,f,p,T]=z(t,w,n),v=async(a,t)=>await E(_(c,(async([e,s,n,i],c)=>{const o=a[c];t&&void 0===o||await p(e,s,o,n,i,t)}))),A=async(a,t)=>r?await p(l,q,{[k]:a},!0,!0,t):null;return Z(a,(async()=>await T((async()=>{await d();const a=await(async()=>C(m(await E(_(i,(async([a,t],e)=>[a,await f(e,t)]))),(a=>!F(a[1])))))(),t=await(async()=>o?(await f(l,q))[k]:{})();return F(a)&&y(t)?void 0:[a,t]}))),(async(a,t)=>await T((async()=>{if(await d(),y(t)){const[t,e]=a();await v(t),await A(e)}else{const[a,e]=t();await v(a,!0),await A(e,!0)}}))),e,s,n,u)},sa="json",na="autoLoadIntervalSeconds",ia="rowIdColumnName",ca="tableId",oa="tableName",ra={mode:sa,[na]:1},la={load:0,save:0,[oa]:e+"_values"},ya=(a,t,e,s)=>{const n=M();return b(a,((a,i)=>{const c=v(D(g(t,u(a)?{[e]:a}:a)),0,I(t));y(c[0])||s(i,c[0])||B(n,i,c)})),n},wa="pragma ",ua="data_version",Ea="schema_version",da=(a,t,s,n,i,c,l,y)=>{let w,E;const[d,f,p,T]=(a=>{const t=(a=>g(ra,u(a)?{storeTableName:a}:a??{}))(a),s=t[na];if(t.mode==sa){const{storeTableName:a=e}=t;return[1,s,[a],H(a)]}const{tables:{load:n={},save:i={}}={},values:c={}}=t,o=v(D(g(la,c)),0,I(la)),r=o[2],l=H(r);return[0,s,[ya(n,{[ca]:null,[ia]:q},ca,(a=>W(l,a)&&a==r)),ya(i,{[oa]:null,[ia]:q,deleteEmptyColumns:0,deleteEmptyTable:0},oa,((a,t)=>W(l,t)&&t==r)),o],l]})(t);return(d?ta:ea)(a,c?async(a,t)=>(c(a,t),await s(a,t)):s,(a=>[o((async()=>{try{const t=(await s(wa+ua))[0][ua],e=(await s(wa+Ea))[0][Ea];t==(w??=t)&&e==(E??=e)||(a(),w=t,E=e)}catch{}}),1e3*f),n((t=>T.has(t)?a():0))]),(([a,t])=>{r(a),w=E=null,i(t)}),l,p,h(T),y)},fa="change";a.createSqlite3Persister=(a,t,e,s,n)=>da(a,e,(async(a,e=[])=>{return await(s=(s,n)=>t.all(a,e,((a,t)=>a?n(a):s(t.map((a=>({...a})))))),new c(s));var s}),(a=>{const e=(t,e,s)=>a(s);return t.on(fa,e),e}),(a=>t.off(fa,a)),s,n,t)},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((a="undefined"!=typeof globalThis?globalThis:a||self).TinyBasePersisterSqlite3={});
1
+ var a,t;a=this,t=function(a){"use strict";const t=a=>typeof a,e="tinybase",s=",",n=t(""),i=(a,t)=>a.repeat(t),c=Promise,o=setInterval,r=clearInterval,l=(a,t)=>a instanceof t,y=a=>null==a,w=(a,t,e)=>y(a)?e?.():t(a),u=a=>t(a)==n,E=(a,t,e)=>a.slice(t,e),d=async a=>c.all(a),f=(a,t="")=>a.join(t),p=(a,t)=>a.map(t),T=a=>a.length,m=a=>0==T(a),v=(a,t)=>a.filter(t),A=(a,...t)=>a.push(...t),L=(a,t)=>a?.has(t)??!1,h=a=>[...a?.values()??[]],N=(a,t)=>a?.delete(t),R=Object,O=R.keys,S=R.freeze,C=(a=[])=>R.fromEntries(a),g=(...a)=>R.assign({},...a),D=(a,t)=>p(R.entries(a),(([a,e])=>t(e,a))),b=a=>R.values(a),I=a=>T(O(a)),F=a=>(a=>l(a,R)&&a.constructor==R)(a)&&0==I(a),M=a=>new Map(a),$=a=>[...a?.keys()??[]],P=(a,t)=>a?.get(t),_=(a,t)=>p([...a?.entries()??[]],(([a,e])=>t(e,a))),B=(a,t,e)=>y(e)?(N(a,t),a):a?.set(t,e),j=(a,t,e)=>(L(a,t)||B(a,t,e()),P(a,t)),x=(a,t,e,s=B)=>(D(t,((t,s)=>e(a,s,t))),((a,t)=>{((a,t)=>{a?.forEach(t)})(a,((a,e)=>t(e)))})(a,(e=>((a,t)=>!y(((a,t)=>w(a,(a=>a[t])))(a,t)))(t,e)?0:s(a,e))),a),H=a=>new Set(Array.isArray(a)||y(a)?a:[a]),W=(a,t)=>a?.add(t),k="_",q="_id",J=a=>`"${a.replace(/"/g,'""')}"`,U="FROM pragma_table_",Y="WHERE",z=(a,t,e)=>{const n=M();return[async()=>x(n,C(await d(p(await a("SELECT name "+U+"list WHERE schema='main'AND type='table'AND name IN("+K(t)+")",t),(async({name:t})=>[t,C(p(await a("SELECT name,type "+U+"info(?)",[t]),(({name:a,type:t})=>[a,t])))])))),((a,t,e)=>B(n,t,x(j(n,t,M),e,((a,t,e)=>{e!=P(a,t)&&B(a,t,e)}),((a,t)=>B(a,t))))),((a,t)=>B(n,t))),async(t,e)=>((a,t)=>!y(P(P(n,a),t)))(t,e)?C(v(p(await a("SELECT*FROM"+J(t)),(a=>{return[a[e],(t={...a},s=e,delete t[s],t)];var t,s})),(([a,t])=>!y(a)&&!F(t)))):{},async(t,e,i,c,o,r=!1)=>{const l=H();D(i??{},(a=>p(O(a??{}),(a=>W(l,a)))));const w=h(l);if(!r&&o&&m(w)&&L(n,t))return await a("DROP TABLE"+J(t)),void B(n,t);if(m(w)||L(n,t)){const s=P(n,t),i=H($(s));await d([...p(w,(async e=>{N(i,e)||(await a(`ALTER TABLE${J(t)}ADD${J(e)}`),B(s,e,""))})),...!r&&c?p(h(i),(async n=>{n!=e&&(await a(`ALTER TABLE${J(t)}DROP${J(n)}`),B(s,n))})):[]])}else await a(`CREATE TABLE${J(t)}(${J(e)} PRIMARY KEY ON CONFLICT REPLACE${f(p(w,(a=>s+J(a))))});`),B(n,t,M([[e,""],...p(w,(a=>[a,""]))]));if(r)y(i)?await a("DELETE FROM"+J(t)+"WHERE 1"):await d(D(i,(async(s,n)=>{y(s)?await a("DELETE FROM"+J(t)+Y+J(e)+"=?",[n]):m(w)||await G(a,t,e,O(s),[n,...b(s)])})));else if(m(w))L(n,t)&&await a("DELETE FROM"+J(t)+"WHERE 1");else{const s=v($(P(n,t)),(a=>a!=e)),c=[],o=[];D(i??{},((a,t)=>{A(c,t,...p(s,(t=>a?.[t]))),A(o,t)})),await G(a,t,e,s,c),await a("DELETE FROM"+J(t)+Y+J(e)+"NOT IN("+K(o)+")",o)}},async t=>{let s;await a("BEGIN");try{s=await t()}catch(a){e?.(a)}return await a("END"),s}]},G=async(a,t,e,n,c)=>await a("INSERT INTO"+J(t)+"("+J(e)+f(p(n,(a=>s+J(a))))+")VALUES"+E(i(`,(?${i(",?",T(n))})`,T(c)/(T(n)+1)),1)+"ON CONFLICT("+J(e)+")DO UPDATE SET"+f(p(n,(a=>J(a)+"=excluded."+J(a))),s),c),K=a=>f(p(a,(()=>"?")),s),V=JSON.parse,Q=M(),X=M(),Z=(a,t,e,s,n,i,c=[])=>{let o,r,l,u=0,E=0;j(Q,c,(()=>0)),j(X,c,(()=>[]));const d=async a=>(2!=u&&(u=1,await f.schedule((async()=>{await a(),u=0}))),f),f={load:async(e,s)=>await d((async()=>{try{a.setContent(await t())}catch{a.setContent([e,s])}})),startAutoLoad:async(e={},n={})=>(f.stopAutoLoad(),await f.load(e,n),E=1,l=s((async(e,s)=>{if(s){const t=s();await d((async()=>a.setTransactionChanges(t)))}else await d((async()=>{try{a.setContent(e?.()??await t())}catch(a){i?.(a)}}))})),f),stopAutoLoad:()=>(E&&(n(l),l=void 0,E=0),f),save:async t=>(1!=u&&(u=2,await f.schedule((async()=>{try{await e(a.getContent,t)}catch(a){i?.(a)}u=0}))),f),startAutoSave:async()=>(await f.stopAutoSave().save(),o=a.addDidFinishTransactionListener(((a,t)=>{const[e,s]=t();F(e)&&F(s)||f.save((()=>[e,s]))})),f),stopAutoSave:()=>(w(o,a.delListener),f),schedule:async(...a)=>(A(P(X,c),...a),await(async()=>{if(!P(Q,c)){for(B(Q,c,1);!y((a=P(X,c),r=a.shift()));)try{await r()}catch(a){i?.(a)}B(Q,c,0)}var a})(),f),getStore:()=>a,destroy:()=>f.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return S(f)},aa="store",ta=(a,t,e,s,n,[i],c,o)=>{const[r,y,w,u]=z(t,c,n);return Z(a,(async()=>await u((async()=>(await r(),V((await y(i,q))[k]?.[aa]??"null"))))),(async a=>await u((async()=>{var t;await r(),await w(i,q,{[k]:{[aa]:(t=a()??null,JSON.stringify(t,((a,t)=>l(t,Map)?R.fromEntries([...t]):t)))}},!0,!0)}))),e,s,n,o)},ea=(a,t,e,s,n,[i,c,[o,r,l]],w,u)=>{const[E,f,p,T]=z(t,w,n),m=async(a,t)=>await d(_(c,(async([e,s,n,i],c)=>{const o=a[c];t&&void 0===o||await p(e,s,o,n,i,t)}))),A=async(a,t)=>r?await p(l,q,{[k]:a},!0,!0,t):null;return Z(a,(async()=>await T((async()=>{await E();const a=await(async()=>C(v(await d(_(i,(async([a,t],e)=>[a,await f(e,t)]))),(a=>!F(a[1])))))(),t=await(async()=>o?(await f(l,q))[k]:{})();return F(a)&&y(t)?void 0:[a,t]}))),(async(a,t)=>await T((async()=>{if(await E(),y(t)){const[t,e]=a();await m(t),await A(e)}else{const[a,e]=t();await m(a,!0),await A(e,!0)}}))),e,s,n,u)},sa="json",na="autoLoadIntervalSeconds",ia="rowIdColumnName",ca="tableId",oa="tableName",ra={mode:sa,[na]:1},la={load:0,save:0,[oa]:e+"_values"},ya=(a,t,e,s)=>{const n=M();return D(a,((a,i)=>{const c=E(b(g(t,u(a)?{[e]:a}:a)),0,I(t));y(c[0])||s(i,c[0])||B(n,i,c)})),n},wa="pragma ",ua="data_version",Ea="schema_version",da=(a,t,s,n,i,c,l,y)=>{let w,d;const[f,p,T,m]=(a=>{const t=(a=>g(ra,u(a)?{storeTableName:a}:a??{}))(a),s=t[na];if(t.mode==sa){const{storeTableName:a=e}=t;return[1,s,[a],H(a)]}const{tables:{load:n={},save:i={}}={},values:c={}}=t,o=E(b(g(la,c)),0,I(la)),r=o[2],l=H(r);return[0,s,[ya(n,{[ca]:null,[ia]:q},ca,(a=>W(l,a)&&a==r)),ya(i,{[oa]:null,[ia]:q,deleteEmptyColumns:0,deleteEmptyTable:0},oa,((a,t)=>W(l,t)&&t==r)),o],l]})(t);return(f?ta:ea)(a,c?async(a,t)=>(c(a,t),await s(a,t)):s,(a=>[o((async()=>{try{const t=(await s(wa+ua))[0][ua],e=(await s(wa+Ea))[0][Ea];t==(w??=t)&&e==(d??=e)||(a(),w=t,d=e)}catch{}}),1e3*p),n((t=>m.has(t)?a():0))]),(([a,t])=>{r(a),w=d=null,i(t)}),l,T,h(m),y)},fa="change";a.createSqlite3Persister=(a,t,e,s,n)=>da(a,e,(async(a,e=[])=>{return await(s=(s,n)=>t.all(a,e,((a,t)=>a?n(a):s(t.map((a=>({...a})))))),new c(s));var s}),(a=>{const e=(t,e,s)=>a(s);return t.on(fa,e),e}),(a=>t.off(fa,a)),s,n,t)},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((a="undefined"!=typeof globalThis?globalThis:a||self).TinyBasePersisterSqlite3={});