tinybase 9.6.0 → 9.7.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/@types/omni/index.d.ts +1 -0
  2. package/@types/omni/with-schemas/index.d.ts +1 -0
  3. package/@types/persisters/persister-sqlite-node/index.d.ts +184 -0
  4. package/@types/persisters/persister-sqlite-node/with-schemas/index.d.ts +208 -0
  5. package/@types/ui-react-dom/index.d.ts +10 -10
  6. package/@types/ui-react-dom/with-schemas/index.d.ts +10 -10
  7. package/@types/ui-react-dom-charts/index.d.ts +7 -7
  8. package/@types/ui-react-dom-charts/with-schemas/index.d.ts +7 -7
  9. package/@types/ui-react-inspector/index.d.ts +1 -1
  10. package/@types/ui-react-inspector/with-schemas/index.d.ts +1 -1
  11. package/@types/ui-solid-dom/index.d.ts +10 -10
  12. package/@types/ui-solid-dom/with-schemas/index.d.ts +10 -10
  13. package/@types/ui-solid-inspector/index.d.ts +1 -1
  14. package/@types/ui-solid-inspector/with-schemas/index.d.ts +1 -1
  15. package/@types/ui-svelte-dom/index.d.ts +10 -10
  16. package/@types/ui-svelte-dom/with-schemas/index.d.ts +10 -10
  17. package/@types/ui-svelte-inspector/index.d.ts +1 -1
  18. package/@types/ui-svelte-inspector/with-schemas/index.d.ts +1 -1
  19. package/agents.md +38 -0
  20. package/min/omni/index.js +1 -1
  21. package/min/omni/index.js.gz +0 -0
  22. package/min/omni/with-schemas/index.js +1 -1
  23. package/min/omni/with-schemas/index.js.gz +0 -0
  24. package/min/persisters/persister-sqlite-node/index.js +1 -0
  25. package/min/persisters/persister-sqlite-node/index.js.gz +0 -0
  26. package/min/persisters/persister-sqlite-node/with-schemas/index.js +1 -0
  27. package/min/persisters/persister-sqlite-node/with-schemas/index.js.gz +0 -0
  28. package/omni/index.js +22 -0
  29. package/omni/with-schemas/index.js +22 -0
  30. package/package.json +42 -6
  31. package/persisters/persister-sqlite-node/index.js +1762 -0
  32. package/persisters/persister-sqlite-node/with-schemas/index.js +1762 -0
  33. package/readme.md +14 -14
  34. package/releases.md +94 -72
@@ -43,6 +43,7 @@ export * from '../persisters/persister-react-native-mmkv/index.d.ts';
43
43
  export * from '../persisters/persister-react-native-sqlite/index.d.ts';
44
44
  export * from '../persisters/persister-remote/index.d.ts';
45
45
  export * from '../persisters/persister-sqlite-bun/index.d.ts';
46
+ export * from '../persisters/persister-sqlite-node/index.d.ts';
46
47
  export * from '../persisters/persister-sqlite-wasm/index.d.ts';
47
48
  export * from '../persisters/persister-sqlite3/index.d.ts';
48
49
  export * from '../persisters/persister-supabase/index.d.ts';
@@ -42,6 +42,7 @@ export * from '../../persisters/persister-react-native-mmkv/with-schemas/index.d
42
42
  export * from '../../persisters/persister-react-native-sqlite/with-schemas/index.d.ts';
43
43
  export * from '../../persisters/persister-remote/with-schemas/index.d.ts';
44
44
  export * from '../../persisters/persister-sqlite-bun/with-schemas/index.d.ts';
45
+ export * from '../../persisters/persister-sqlite-node/with-schemas/index.d.ts';
45
46
  export * from '../../persisters/persister-sqlite-wasm/with-schemas/index.d.ts';
46
47
  export * from '../../persisters/persister-sqlite3/with-schemas/index.d.ts';
47
48
  export * from '../../persisters/persister-supabase/with-schemas/index.d.ts';
@@ -0,0 +1,184 @@
1
+ /**
2
+ * The persister-sqlite-node module of the TinyBase project lets you save and
3
+ * load Store data to and from a local SQLite database, via the synchronous
4
+ * [`node:sqlite`](https://nodejs.org/api/sqlite.html) module built into
5
+ * Node.js.
6
+ * @see Database Persistence guide
7
+ * @packageDocumentation
8
+ * @module persister-sqlite-node
9
+ * @since 9.7.0
10
+ */
11
+ import type {DatabaseSync} from 'node:sqlite';
12
+ import type {MergeableStore} from '../../mergeable-store/index.d.ts';
13
+ import type {Store} from '../../store/index.d.ts';
14
+ import type {
15
+ DatabasePersisterConfig,
16
+ DpcJson,
17
+ Persister,
18
+ Persists,
19
+ } from '../index.d.ts';
20
+
21
+ /**
22
+ * The SqliteNodePersister interface represents a Persister that lets you save
23
+ * and load Store data to and from a local SQLite database.
24
+ *
25
+ * You should use the createSqliteNodePersister function to create a
26
+ * SqliteNodePersister object.
27
+ *
28
+ * It is a minor extension to the Persister interface and simply provides an
29
+ * extra getDb method for accessing a reference to the database the Store is
30
+ * being persisted to.
31
+ * @category Persister
32
+ * @since 9.7.0
33
+ */
34
+ export interface SqliteNodePersister extends Persister<Persists.StoreOrMergeableStore> {
35
+ /**
36
+ * The getDb method returns a reference to the database the Store is being
37
+ * persisted to.
38
+ * @returns A reference to the database.
39
+ * @example
40
+ * This example creates a Persister object against a newly-created Store and
41
+ * then gets the database back out again.
42
+ *
43
+ * ```js
44
+ * import {DatabaseSync} from 'node:sqlite';
45
+ * import {createStore} from 'tinybase';
46
+ * import {createSqliteNodePersister} from 'tinybase/persisters/persister-sqlite-node';
47
+ *
48
+ * const db = new DatabaseSync(':memory:');
49
+ * const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
50
+ * const persister = createSqliteNodePersister(store, db, 'my_tinybase');
51
+ *
52
+ * console.log(persister.getDb() == db);
53
+ * // -> true
54
+ *
55
+ * await persister.destroy();
56
+ * db.close();
57
+ * ```
58
+ * @category Getter
59
+ * @since 9.7.0
60
+ */
61
+ getDb(): DatabaseSync;
62
+ }
63
+
64
+ /**
65
+ * The createSqliteNodePersister function creates a SqliteNodePersister object
66
+ * that can persist a Store to a local SQLite database.
67
+ *
68
+ * A SqliteNodePersister supports regular Store objects, and can also be used to
69
+ * persist the metadata of a MergeableStore when using the JSON serialization
70
+ * mode, as described below.
71
+ *
72
+ * As well as providing a reference to the Store to persist, you must provide a
73
+ * `db` parameter which is the database returned from `new DatabaseSync(...)`.
74
+ *
75
+ * Since the `node:sqlite` module is built into Node.js, this is the only
76
+ * SQLite-based Persister that requires no additional dependency at all. Note
77
+ * that the module is only available in newer versions of Node.js, and that it
78
+ * is still marked as experimental, so its API may change.
79
+ *
80
+ * A database Persister uses one of two modes: either a JSON serialization of
81
+ * the whole Store stored in a single row of a table (the default), or a tabular
82
+ * mapping of Table Ids to database table names and vice-versa).
83
+ *
84
+ * The third argument is a DatabasePersisterConfig object that configures which
85
+ * of those modes to use, and settings for each. If the third argument is simply
86
+ * a string, it is used as the `storeTableName` property of the JSON
87
+ * serialization.
88
+ *
89
+ * See the documentation for the DpcJson and DpcTabular types for more
90
+ * information on how both of those modes can be configured.
91
+ *
92
+ * Note that `node:sqlite` does not signal when the database changes, so if you
93
+ * enable automatic loading with the startAutoLoad method, it polls the database
94
+ * for changes. The Sqlite3Persister, which uses the asynchronous `sqlite3`
95
+ * module, is notified of changes as they happen, and may suit you better if
96
+ * that matters.
97
+ * @param store The Store or MergeableStore to persist.
98
+ * @param db The database that was returned from `new DatabaseSync(...)`.
99
+ * @param configOrStoreTableName A DatabasePersisterConfig to configure the
100
+ * persistence mode (or a string to set the `storeTableName` property of the
101
+ * JSON serialization).
102
+ * @param onSqlCommand An optional handler called every time the Persister
103
+ * executes a SQL command or query. This is suitable for logging persistence
104
+ * behavior in a development environment.
105
+ * @param onIgnoredError An optional handler for the errors that the Persister
106
+ * would otherwise ignore when trying to save or load data. This is suitable for
107
+ * debugging persistence issues in a development environment.
108
+ * @returns A reference to the new SqliteNodePersister object.
109
+ * @example
110
+ * This example creates a SqliteNodePersister object and persists the Store to a
111
+ * local SQLite database as a JSON serialization into the `my_tinybase` table.
112
+ * It makes a change to the database directly and then reloads it back into the
113
+ * Store.
114
+ *
115
+ * ```js
116
+ * import {DatabaseSync} from 'node:sqlite';
117
+ * import {createStore} from 'tinybase';
118
+ * import {createSqliteNodePersister} from 'tinybase/persisters/persister-sqlite-node';
119
+ *
120
+ * const db = new DatabaseSync(':memory:');
121
+ * const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
122
+ * const persister = createSqliteNodePersister(store, db, 'my_tinybase');
123
+ *
124
+ * await persister.save();
125
+ * // Store will be saved to the database.
126
+ *
127
+ * console.log(db.prepare('SELECT * FROM my_tinybase;').all());
128
+ * // -> [{_id: '_', store: '[{"pets":{"fido":{"species":"dog"}}},{}]'}]
129
+ *
130
+ * db.prepare('UPDATE my_tinybase SET store = ? WHERE _id = ?;').run(
131
+ * '[{"pets":{"felix":{"species":"cat"}}},{}]',
132
+ * '_',
133
+ * );
134
+ * await persister.load();
135
+ * console.log(store.getTables());
136
+ * // -> {pets: {felix: {species: 'cat'}}}
137
+ *
138
+ * await persister.destroy();
139
+ * db.close();
140
+ * ```
141
+ * @example
142
+ * This example creates a SqliteNodePersister object and persists the Store to a
143
+ * local SQLite database with tabular mapping.
144
+ *
145
+ * ```js
146
+ * import {DatabaseSync} from 'node:sqlite';
147
+ * import {createStore} from 'tinybase';
148
+ * import {createSqliteNodePersister} from 'tinybase/persisters/persister-sqlite-node';
149
+ *
150
+ * const db = new DatabaseSync(':memory:');
151
+ * const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
152
+ * const persister = createSqliteNodePersister(store, db, {
153
+ * mode: 'tabular',
154
+ * tables: {load: {pets: 'pets'}, save: {pets: 'pets'}},
155
+ * });
156
+ *
157
+ * await persister.save();
158
+ * console.log(db.prepare('SELECT * FROM pets;').all());
159
+ * // -> [{_id: 'fido', species: 'dog'}]
160
+ *
161
+ * db.prepare(
162
+ * `INSERT INTO pets (_id, species) VALUES ('felix', 'cat')`,
163
+ * ).run();
164
+ * await persister.load();
165
+ * console.log(store.getTables());
166
+ * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
167
+ *
168
+ * await persister.destroy();
169
+ * db.close();
170
+ * ```
171
+ * @category Creation
172
+ * @since 9.7.0
173
+ */
174
+ export function createSqliteNodePersister<StoreType extends Store>(
175
+ store: StoreType,
176
+ db: DatabaseSync,
177
+ configOrStoreTableName?:
178
+ | (NoInfer<StoreType> extends MergeableStore
179
+ ? DpcJson
180
+ : DatabasePersisterConfig)
181
+ | string,
182
+ onSqlCommand?: (sql: string, params?: any[]) => void,
183
+ onIgnoredError?: (error: any) => void,
184
+ ): SqliteNodePersister;
@@ -0,0 +1,208 @@
1
+ /**
2
+ * The persister-sqlite-node module of the TinyBase project lets you save and
3
+ * load Store data to and from a local SQLite database, via the synchronous
4
+ * [`node:sqlite`](https://nodejs.org/api/sqlite.html) module built into
5
+ * Node.js.
6
+ * @see Database Persistence guide
7
+ * @packageDocumentation
8
+ * @module persister-sqlite-node
9
+ * @since 9.7.0
10
+ */
11
+ import type {DatabaseSync} from 'node:sqlite';
12
+ import type {MergeableStore} from '../../../mergeable-store/with-schemas/index.d.ts';
13
+ import type {
14
+ OptionalSchemas,
15
+ Store,
16
+ } from '../../../store/with-schemas/index.d.ts';
17
+ import type {
18
+ DatabasePersisterConfig,
19
+ DpcJson,
20
+ Persister,
21
+ Persists,
22
+ } from '../../with-schemas/index.d.ts';
23
+
24
+ /**
25
+ * The SqliteNodePersister interface represents a Persister that lets you save
26
+ * and load Store data to and from a local SQLite database.
27
+ *
28
+ * You should use the createSqliteNodePersister function to create a
29
+ * SqliteNodePersister object.
30
+ *
31
+ * It is a minor extension to the Persister interface and simply provides an
32
+ * extra getDb method for accessing a reference to the database the Store is
33
+ * being persisted to.
34
+ * @category Persister
35
+ * @since 9.7.0
36
+ */
37
+ export interface SqliteNodePersister<
38
+ Schemas extends OptionalSchemas,
39
+ > extends Persister<Schemas, Persists.StoreOrMergeableStore> {
40
+ /**
41
+ * The getDb method returns a reference to the database the Store is being
42
+ * persisted to.
43
+ * @returns A reference to the database.
44
+ * @example
45
+ * This example creates a Persister object against a newly-created Store and
46
+ * then gets the database back out again.
47
+ *
48
+ * ```js
49
+ * import {DatabaseSync} from 'node:sqlite';
50
+ * import {createStore} from 'tinybase';
51
+ * import {createSqliteNodePersister} from 'tinybase/persisters/persister-sqlite-node';
52
+ *
53
+ * const db = new DatabaseSync(':memory:');
54
+ * const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
55
+ * const persister = createSqliteNodePersister(store, db, 'my_tinybase');
56
+ *
57
+ * console.log(persister.getDb() == db);
58
+ * // -> true
59
+ *
60
+ * await persister.destroy();
61
+ * db.close();
62
+ * ```
63
+ * @category Getter
64
+ * @since 9.7.0
65
+ */
66
+ getDb(): DatabaseSync;
67
+ }
68
+
69
+ /**
70
+ * The createSqliteNodePersister function creates a SqliteNodePersister object
71
+ * that can persist a Store to a local SQLite database.
72
+ *
73
+ * This has schema-based typing. The following is a simplified representation:
74
+ *
75
+ * ```ts override
76
+ * createSqliteNodePersister<StoreType extends Store>(
77
+ * store: StoreType,
78
+ * db: DatabaseSync,
79
+ * configOrStoreTableName?:
80
+ * | (NoInfer<StoreType> extends MergeableStore
81
+ * ? DpcJson
82
+ * : DatabasePersisterConfig)
83
+ * | string,
84
+ * onSqlCommand?: (sql: string, params?: any[]) => void,
85
+ * onIgnoredError?: (error: any) => void,
86
+ * ): SqliteNodePersister;
87
+ * ```
88
+ *
89
+ * A SqliteNodePersister supports regular Store objects, and can also be used to
90
+ * persist the metadata of a MergeableStore when using the JSON serialization
91
+ * mode, as described below.
92
+ *
93
+ * As well as providing a reference to the Store to persist, you must provide a
94
+ * `db` parameter which is the database returned from `new DatabaseSync(...)`.
95
+ *
96
+ * Since the `node:sqlite` module is built into Node.js, this is the only
97
+ * SQLite-based Persister that requires no additional dependency at all. Note
98
+ * that the module is only available in newer versions of Node.js, and that it
99
+ * is still marked as experimental, so its API may change.
100
+ *
101
+ * A database Persister uses one of two modes: either a JSON serialization of
102
+ * the whole Store stored in a single row of a table (the default), or a tabular
103
+ * mapping of Table Ids to database table names and vice-versa).
104
+ *
105
+ * The third argument is a DatabasePersisterConfig object that configures which
106
+ * of those modes to use, and settings for each. If the third argument is simply
107
+ * a string, it is used as the `storeTableName` property of the JSON
108
+ * serialization.
109
+ *
110
+ * See the documentation for the DpcJson and DpcTabular types for more
111
+ * information on how both of those modes can be configured.
112
+ *
113
+ * Note that `node:sqlite` does not signal when the database changes, so if you
114
+ * enable automatic loading with the startAutoLoad method, it polls the database
115
+ * for changes. The Sqlite3Persister, which uses the asynchronous `sqlite3`
116
+ * module, is notified of changes as they happen, and may suit you better if
117
+ * that matters.
118
+ * @param store The Store or MergeableStore to persist.
119
+ * @param db The database that was returned from `new DatabaseSync(...)`.
120
+ * @param configOrStoreTableName A DatabasePersisterConfig to configure the
121
+ * persistence mode (or a string to set the `storeTableName` property of the
122
+ * JSON serialization).
123
+ * @param onSqlCommand An optional handler called every time the Persister
124
+ * executes a SQL command or query. This is suitable for logging persistence
125
+ * behavior in a development environment.
126
+ * @param onIgnoredError An optional handler for the errors that the Persister
127
+ * would otherwise ignore when trying to save or load data. This is suitable for
128
+ * debugging persistence issues in a development environment.
129
+ * @returns A reference to the new SqliteNodePersister object.
130
+ * @example
131
+ * This example creates a SqliteNodePersister object and persists the Store to a
132
+ * local SQLite database as a JSON serialization into the `my_tinybase` table.
133
+ * It makes a change to the database directly and then reloads it back into the
134
+ * Store.
135
+ *
136
+ * ```js
137
+ * import {DatabaseSync} from 'node:sqlite';
138
+ * import {createStore} from 'tinybase';
139
+ * import {createSqliteNodePersister} from 'tinybase/persisters/persister-sqlite-node';
140
+ *
141
+ * const db = new DatabaseSync(':memory:');
142
+ * const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
143
+ * const persister = createSqliteNodePersister(store, db, 'my_tinybase');
144
+ *
145
+ * await persister.save();
146
+ * // Store will be saved to the database.
147
+ *
148
+ * console.log(db.prepare('SELECT * FROM my_tinybase;').all());
149
+ * // -> [{_id: '_', store: '[{"pets":{"fido":{"species":"dog"}}},{}]'}]
150
+ *
151
+ * db.prepare('UPDATE my_tinybase SET store = ? WHERE _id = ?;').run(
152
+ * '[{"pets":{"felix":{"species":"cat"}}},{}]',
153
+ * '_',
154
+ * );
155
+ * await persister.load();
156
+ * console.log(store.getTables());
157
+ * // -> {pets: {felix: {species: 'cat'}}}
158
+ *
159
+ * await persister.destroy();
160
+ * db.close();
161
+ * ```
162
+ * @example
163
+ * This example creates a SqliteNodePersister object and persists the Store to a
164
+ * local SQLite database with tabular mapping.
165
+ *
166
+ * ```js
167
+ * import {DatabaseSync} from 'node:sqlite';
168
+ * import {createStore} from 'tinybase';
169
+ * import {createSqliteNodePersister} from 'tinybase/persisters/persister-sqlite-node';
170
+ *
171
+ * const db = new DatabaseSync(':memory:');
172
+ * const store = createStore().setTables({pets: {fido: {species: 'dog'}}});
173
+ * const persister = createSqliteNodePersister(store, db, {
174
+ * mode: 'tabular',
175
+ * tables: {load: {pets: 'pets'}, save: {pets: 'pets'}},
176
+ * });
177
+ *
178
+ * await persister.save();
179
+ * console.log(db.prepare('SELECT * FROM pets;').all());
180
+ * // -> [{_id: 'fido', species: 'dog'}]
181
+ *
182
+ * db.prepare(
183
+ * `INSERT INTO pets (_id, species) VALUES ('felix', 'cat')`,
184
+ * ).run();
185
+ * await persister.load();
186
+ * console.log(store.getTables());
187
+ * // -> {pets: {fido: {species: 'dog'}, felix: {species: 'cat'}}}
188
+ *
189
+ * await persister.destroy();
190
+ * db.close();
191
+ * ```
192
+ * @category Creation
193
+ * @since 9.7.0
194
+ */
195
+ export function createSqliteNodePersister<Schemas extends OptionalSchemas>(
196
+ store: MergeableStore<Schemas>,
197
+ db: DatabaseSync,
198
+ configOrStoreTableName?: DpcJson | string,
199
+ onSqlCommand?: (sql: string, params?: any[]) => void,
200
+ onIgnoredError?: (error: any) => void,
201
+ ): SqliteNodePersister<Schemas>;
202
+ export function createSqliteNodePersister<Schemas extends OptionalSchemas>(
203
+ store: Store<Schemas> & {getMergeableContent?: never},
204
+ db: DatabaseSync,
205
+ configOrStoreTableName?: DatabasePersisterConfig<Schemas> | string,
206
+ onSqlCommand?: (sql: string, params?: any[]) => void,
207
+ onIgnoredError?: (error: any) => void,
208
+ ): SqliteNodePersister<Schemas>;
@@ -692,7 +692,7 @@ export type SortedTablePaginatorProps = {
692
692
  *
693
693
  * See the <TableInHtmlTable /> (React) demo for this component in action:
694
694
  *
695
- * ![TableInHtmlTable example](https://tinybase.org/shots/tableinhtmltable-react-demo.png
695
+ * ![TableInHtmlTable example](https://beta.tinybase.org/shots/tableinhtmltable-react-demo.png
696
696
  * "TableInHtmlTable example")
697
697
  *
698
698
  * The component's props identify which Table to render based on Table Id, and
@@ -838,7 +838,7 @@ export function TableInHtmlTable(
838
838
  * See the <SortedTableInHtmlTable /> (React) demo for this component in
839
839
  * action:
840
840
  *
841
- * ![SortedTableInHtmlTable example](https://tinybase.org/shots/sortedtableinhtmltable-react-demo.png
841
+ * ![SortedTableInHtmlTable example](https://beta.tinybase.org/shots/sortedtableinhtmltable-react-demo.png
842
842
  * "SortedTableInHtmlTable example")
843
843
  *
844
844
  * The component's props identify which Table to render based on Table Id, and
@@ -1011,7 +1011,7 @@ export function SortedTableInHtmlTable(
1011
1011
  *
1012
1012
  * See the <ValuesInHtmlTable /> (React) demo for this component in action:
1013
1013
  *
1014
- * ![ValuesInHtmlTable example](https://tinybase.org/shots/valuesinhtmltable-react-demo.png
1014
+ * ![ValuesInHtmlTable example](https://beta.tinybase.org/shots/valuesinhtmltable-react-demo.png
1015
1015
  * "ValuesInHtmlTable example")
1016
1016
  *
1017
1017
  * The component's props identify which Row to render based on Table Id, Row Id,
@@ -1142,7 +1142,7 @@ export function ValuesInHtmlTable(
1142
1142
  *
1143
1143
  * See the <SliceInHtmlTable /> (React) demo for this component in action:
1144
1144
  *
1145
- * ![SliceInHtmlTable example](https://tinybase.org/shots/sliceinhtmltable-react-demo.png
1145
+ * ![SliceInHtmlTable example](https://beta.tinybase.org/shots/sliceinhtmltable-react-demo.png
1146
1146
  * "SliceInHtmlTable example")
1147
1147
  *
1148
1148
  * The component's props identify which Slice to render based on Index Id, Slice
@@ -1300,7 +1300,7 @@ export function SliceInHtmlTable(
1300
1300
  * See the <RelationshipInHtmlTable /> (React) demo for this component in
1301
1301
  * action:
1302
1302
  *
1303
- * ![RelationshipInHtmlTable example](https://tinybase.org/shots/relationshipinhtmltable-react-demo.png
1303
+ * ![RelationshipInHtmlTable example](https://beta.tinybase.org/shots/relationshipinhtmltable-react-demo.png
1304
1304
  * "RelationshipInHtmlTable example")
1305
1305
  *
1306
1306
  * The component's props identify which Relationship to render based on
@@ -1478,7 +1478,7 @@ export function RelationshipInHtmlTable(
1478
1478
  * See the <ResultTableInHtmlTable /> (React) demo for this component in
1479
1479
  * action:
1480
1480
  *
1481
- * ![ResultTableInHtmlTable example](https://tinybase.org/shots/resulttableinhtmltable-react-demo.png
1481
+ * ![ResultTableInHtmlTable example](https://beta.tinybase.org/shots/resulttableinhtmltable-react-demo.png
1482
1482
  * "ResultTableInHtmlTable example")
1483
1483
  *
1484
1484
  * The component's props identify which ResultTable to render based on query Id,
@@ -1631,7 +1631,7 @@ export function ResultTableInHtmlTable(
1631
1631
  * See the <ResultSortedTableInHtmlTable /> (React) demo for this component in
1632
1632
  * action:
1633
1633
  *
1634
- * ![ResultSortedTableInHtmlTable example](https://tinybase.org/shots/resultsortedtableinhtmltable-react-demo.png
1634
+ * ![ResultSortedTableInHtmlTable example](https://beta.tinybase.org/shots/resultsortedtableinhtmltable-react-demo.png
1635
1635
  * "ResultSortedTableInHtmlTable example")
1636
1636
  *
1637
1637
  * The component's props identify which ResultTable to render based on query Id,
@@ -1805,7 +1805,7 @@ export function ResultSortedTableInHtmlTable(
1805
1805
  *
1806
1806
  * See the <EditableCellView /> (React) demo for this component in action:
1807
1807
  *
1808
- * ![EditableCellView example](https://tinybase.org/shots/editablecellview-react-demo.png
1808
+ * ![EditableCellView example](https://beta.tinybase.org/shots/editablecellview-react-demo.png
1809
1809
  * "EditableCellView example")
1810
1810
  *
1811
1811
  * The component's props identify which Cell to render based on Table Id, Row
@@ -1876,7 +1876,7 @@ export function EditableCellView(
1876
1876
  *
1877
1877
  * See the <EditableValueView /> (React) demo for this component in action:
1878
1878
  *
1879
- * ![EditableValueView example](https://tinybase.org/shots/editablevalueview-react-demo.png
1879
+ * ![EditableValueView example](https://beta.tinybase.org/shots/editablevalueview-react-demo.png
1880
1880
  * "EditableValueView example")
1881
1881
  *
1882
1882
  * The component's props identify which Value to render based on Table Id, Row
@@ -1947,7 +1947,7 @@ export function EditableValueView(
1947
1947
  * See the <SortedTableInHtmlTable /> (React) demo for this component in
1948
1948
  * action:
1949
1949
  *
1950
- * ![SortedTablePaginator example](https://tinybase.org/shots/sortedtablepaginator-react-demo.png
1950
+ * ![SortedTablePaginator example](https://beta.tinybase.org/shots/sortedtablepaginator-react-demo.png
1951
1951
  * "SortedTablePaginator example")
1952
1952
  *
1953
1953
  * The component displays 'previous' and 'next' buttons for paging through the
@@ -752,7 +752,7 @@ export type WithSchemas<Schemas extends OptionalSchemas> = {
752
752
  *
753
753
  * See the <TableInHtmlTable /> (React) demo for this component in action:
754
754
  *
755
- * ![TableInHtmlTable example](https://tinybase.org/shots/tableinhtmltable-react-demo.png
755
+ * ![TableInHtmlTable example](https://beta.tinybase.org/shots/tableinhtmltable-react-demo.png
756
756
  * "TableInHtmlTable example")
757
757
  *
758
758
  * The component's props identify which Table to render based on Table Id, and
@@ -906,7 +906,7 @@ export type WithSchemas<Schemas extends OptionalSchemas> = {
906
906
  * See the <SortedTableInHtmlTable /> (React) demo for this component in
907
907
  * action:
908
908
  *
909
- * ![SortedTableInHtmlTable example](https://tinybase.org/shots/sortedtableinhtmltable-react-demo.png
909
+ * ![SortedTableInHtmlTable example](https://beta.tinybase.org/shots/sortedtableinhtmltable-react-demo.png
910
910
  * "SortedTableInHtmlTable example")
911
911
  *
912
912
  * The component's props identify which Table to render based on Table Id, and
@@ -1087,7 +1087,7 @@ export type WithSchemas<Schemas extends OptionalSchemas> = {
1087
1087
  *
1088
1088
  * See the <ValuesInHtmlTable /> (React) demo for this component in action:
1089
1089
  *
1090
- * ![ValuesInHtmlTable example](https://tinybase.org/shots/valuesinhtmltable-react-demo.png
1090
+ * ![ValuesInHtmlTable example](https://beta.tinybase.org/shots/valuesinhtmltable-react-demo.png
1091
1091
  * "ValuesInHtmlTable example")
1092
1092
  *
1093
1093
  * The component's props identify which Row to render based on Table Id, Row Id,
@@ -1226,7 +1226,7 @@ export type WithSchemas<Schemas extends OptionalSchemas> = {
1226
1226
  *
1227
1227
  * See the <SliceInHtmlTable /> (React) demo for this component in action:
1228
1228
  *
1229
- * ![SliceInHtmlTable example](https://tinybase.org/shots/sliceinhtmltable-react-demo.png
1229
+ * ![SliceInHtmlTable example](https://beta.tinybase.org/shots/sliceinhtmltable-react-demo.png
1230
1230
  * "SliceInHtmlTable example")
1231
1231
  *
1232
1232
  * The component's props identify which Slice to render based on Index Id, Slice
@@ -1392,7 +1392,7 @@ export type WithSchemas<Schemas extends OptionalSchemas> = {
1392
1392
  * See the <RelationshipInHtmlTable /> (React) demo for this component in
1393
1393
  * action:
1394
1394
  *
1395
- * ![RelationshipInHtmlTable example](https://tinybase.org/shots/relationshipinhtmltable-react-demo.png
1395
+ * ![RelationshipInHtmlTable example](https://beta.tinybase.org/shots/relationshipinhtmltable-react-demo.png
1396
1396
  * "RelationshipInHtmlTable example")
1397
1397
  *
1398
1398
  * The component's props identify which Relationship to render based on
@@ -1578,7 +1578,7 @@ export type WithSchemas<Schemas extends OptionalSchemas> = {
1578
1578
  * See the <ResultTableInHtmlTable /> (React) demo for this component in
1579
1579
  * action:
1580
1580
  *
1581
- * ![ResultTableInHtmlTable example](https://tinybase.org/shots/resulttableinhtmltable-react-demo.png
1581
+ * ![ResultTableInHtmlTable example](https://beta.tinybase.org/shots/resulttableinhtmltable-react-demo.png
1582
1582
  * "ResultTableInHtmlTable example")
1583
1583
  *
1584
1584
  * The component's props identify which ResultTable to render based on query Id,
@@ -1739,7 +1739,7 @@ export type WithSchemas<Schemas extends OptionalSchemas> = {
1739
1739
  * See the <ResultSortedTableInHtmlTable /> (React) demo for this component in
1740
1740
  * action:
1741
1741
  *
1742
- * ![ResultSortedTableInHtmlTable example](https://tinybase.org/shots/resultsortedtableinhtmltable-react-demo.png
1742
+ * ![ResultSortedTableInHtmlTable example](https://beta.tinybase.org/shots/resultsortedtableinhtmltable-react-demo.png
1743
1743
  * "ResultSortedTableInHtmlTable example")
1744
1744
  *
1745
1745
  * The component's props identify which ResultTable to render based on query Id,
@@ -1921,7 +1921,7 @@ export type WithSchemas<Schemas extends OptionalSchemas> = {
1921
1921
  *
1922
1922
  * See the <EditableCellView /> (React) demo for this component in action:
1923
1923
  *
1924
- * ![EditableCellView example](https://tinybase.org/shots/editablecellview-react-demo.png
1924
+ * ![EditableCellView example](https://beta.tinybase.org/shots/editablecellview-react-demo.png
1925
1925
  * "EditableCellView example")
1926
1926
  *
1927
1927
  * The component's props identify which Cell to render based on Table Id, Row
@@ -2006,7 +2006,7 @@ export type WithSchemas<Schemas extends OptionalSchemas> = {
2006
2006
  *
2007
2007
  * See the <EditableValueView /> (React) demo for this component in action:
2008
2008
  *
2009
- * ![EditableValueView example](https://tinybase.org/shots/editablevalueview-react-demo.png
2009
+ * ![EditableValueView example](https://beta.tinybase.org/shots/editablevalueview-react-demo.png
2010
2010
  * "EditableValueView example")
2011
2011
  *
2012
2012
  * The component's props identify which Value to render based on Table Id, Row
@@ -2077,7 +2077,7 @@ export type WithSchemas<Schemas extends OptionalSchemas> = {
2077
2077
  * See the <SortedTableInHtmlTable /> (React) demo for this component in
2078
2078
  * action:
2079
2079
  *
2080
- * ![SortedTablePaginator example](https://tinybase.org/shots/sortedtablepaginator-react-demo.png
2080
+ * ![SortedTablePaginator example](https://beta.tinybase.org/shots/sortedtablepaginator-react-demo.png
2081
2081
  * "SortedTablePaginator example")
2082
2082
  *
2083
2083
  * The component displays 'previous' and 'next' buttons for paging through the
@@ -483,7 +483,7 @@ export type YAxisProps = {
483
483
  *
484
484
  * See the Composing Charts (React) demo for this component in action:
485
485
  *
486
- * ![CartesianChart component example](https://tinybase.org/shots/composing-charts-react-demo.png
486
+ * ![CartesianChart component example](https://beta.tinybase.org/shots/composing-charts-react-demo.png
487
487
  * "CartesianChart component example")
488
488
  *
489
489
  * The series children declare their own xCellId and yCellId bindings. The
@@ -542,7 +542,7 @@ export function CartesianChart(
542
542
  *
543
543
  * See the Axis Overrides (React) demo for this component in action:
544
544
  *
545
- * ![XAxis component example](https://tinybase.org/shots/axis-overrides-react-demo.png
545
+ * ![XAxis component example](https://beta.tinybase.org/shots/axis-overrides-react-demo.png
546
546
  * "XAxis component example")
547
547
  * @category Store components
548
548
  * @since v8.5.0
@@ -558,7 +558,7 @@ export function XAxis(props: XAxisProps): ComponentReturnType;
558
558
  *
559
559
  * See the Axis Overrides (React) demo for this component in action:
560
560
  *
561
- * ![YAxis component example](https://tinybase.org/shots/axis-overrides-react-demo.png
561
+ * ![YAxis component example](https://beta.tinybase.org/shots/axis-overrides-react-demo.png
562
562
  * "YAxis component example")
563
563
  * @category Store components
564
564
  * @since v8.5.0
@@ -574,7 +574,7 @@ export function YAxis(props: YAxisProps): ComponentReturnType;
574
574
  *
575
575
  * See the Composing Charts (React) demo for this component in action:
576
576
  *
577
- * ![LineSeries component example](https://tinybase.org/shots/composing-charts-react-demo.png
577
+ * ![LineSeries component example](https://beta.tinybase.org/shots/composing-charts-react-demo.png
578
578
  * "LineSeries component example")
579
579
  * @category Store components
580
580
  * @since v8.5.0
@@ -590,7 +590,7 @@ export function LineSeries(props: SeriesProps): ComponentReturnType;
590
590
  *
591
591
  * See the Composing Charts (React) demo for this component in action:
592
592
  *
593
- * ![BarSeries component example](https://tinybase.org/shots/composing-charts-react-demo.png
593
+ * ![BarSeries component example](https://beta.tinybase.org/shots/composing-charts-react-demo.png
594
594
  * "BarSeries component example")
595
595
  * @category Store components
596
596
  * @since v8.5.0
@@ -607,7 +607,7 @@ export function BarSeries(props: SeriesProps): ComponentReturnType;
607
607
  *
608
608
  * See the <LineChart /> (React) demo for this component in action:
609
609
  *
610
- * ![LineChart component example](https://tinybase.org/shots/basic-chart-react-demo.png "LineChart
610
+ * ![LineChart component example](https://beta.tinybase.org/shots/basic-chart-react-demo.png "LineChart
611
611
  * component example")
612
612
  * @category Store components
613
613
  * @since v8.5.0
@@ -660,7 +660,7 @@ export function LineChart(
660
660
  *
661
661
  * See the Sorting And Types (React) demo for this component in action:
662
662
  *
663
- * ![BarChart component example](https://tinybase.org/shots/sorting-and-types-react-demo.png
663
+ * ![BarChart component example](https://beta.tinybase.org/shots/sorting-and-types-react-demo.png
664
664
  * "BarChart component example")
665
665
  * @category Store components
666
666
  * @since v8.5.0