spacetimedb 2.5.0 → 2.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.txt +759 -759
- package/README.md +211 -211
- package/dist/angular/index.cjs.map +1 -1
- package/dist/angular/index.mjs.map +1 -1
- package/dist/browser/angular/index.mjs.map +1 -1
- package/dist/browser/react/index.mjs +129 -57
- package/dist/browser/react/index.mjs.map +1 -1
- package/dist/browser/solid/index.mjs +120 -50
- package/dist/browser/solid/index.mjs.map +1 -1
- package/dist/browser/svelte/index.mjs.map +1 -1
- package/dist/browser/vue/index.mjs.map +1 -1
- package/dist/index.browser.mjs +10 -2
- package/dist/index.browser.mjs.map +1 -1
- package/dist/index.cjs +10 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +10 -2
- package/dist/index.mjs.map +1 -1
- package/dist/min/index.browser.mjs +1 -1
- package/dist/min/index.browser.mjs.map +1 -1
- package/dist/min/react/index.mjs +1 -1
- package/dist/min/react/index.mjs.map +1 -1
- package/dist/min/sdk/index.browser.mjs +1 -1
- package/dist/min/sdk/index.browser.mjs.map +1 -1
- package/dist/react/index.cjs +129 -57
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.mjs +129 -57
- package/dist/react/index.mjs.map +1 -1
- package/dist/react/useTable.d.ts.map +1 -1
- package/dist/sdk/connection_manager.d.ts +8 -0
- package/dist/sdk/connection_manager.d.ts.map +1 -1
- package/dist/sdk/db_connection_impl.d.ts +7 -0
- package/dist/sdk/db_connection_impl.d.ts.map +1 -1
- package/dist/sdk/index.browser.mjs +10 -2
- package/dist/sdk/index.browser.mjs.map +1 -1
- package/dist/sdk/index.cjs +10 -2
- package/dist/sdk/index.cjs.map +1 -1
- package/dist/sdk/index.mjs +10 -2
- package/dist/sdk/index.mjs.map +1 -1
- package/dist/sdk/websocket_test_adapter.d.ts +2 -1
- package/dist/sdk/websocket_test_adapter.d.ts.map +1 -1
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/runtime.d.ts.map +1 -1
- package/dist/solid/index.cjs +120 -50
- package/dist/solid/index.cjs.map +1 -1
- package/dist/solid/index.mjs +120 -50
- package/dist/solid/index.mjs.map +1 -1
- package/dist/svelte/index.cjs.map +1 -1
- package/dist/svelte/index.mjs.map +1 -1
- package/dist/tanstack/index.cjs +120 -50
- package/dist/tanstack/index.cjs.map +1 -1
- package/dist/tanstack/index.mjs +120 -50
- package/dist/tanstack/index.mjs.map +1 -1
- package/dist/vue/index.cjs.map +1 -1
- package/dist/vue/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/angular/connection_state.ts +19 -19
- package/src/angular/index.ts +3 -3
- package/src/angular/injectors/index.ts +4 -4
- package/src/angular/injectors/inject-reducer.ts +62 -62
- package/src/angular/injectors/inject-spacetimedb-connected.ts +13 -13
- package/src/angular/injectors/inject-spacetimedb.ts +10 -10
- package/src/angular/injectors/inject-table.ts +234 -234
- package/src/angular/providers/index.ts +1 -1
- package/src/angular/providers/provide-spacetimedb.ts +96 -96
- package/src/index.ts +16 -16
- package/src/lib/algebraic_type.ts +819 -819
- package/src/lib/algebraic_type_variants.ts +26 -26
- package/src/lib/algebraic_value.ts +10 -10
- package/src/lib/autogen/types.ts +746 -746
- package/src/lib/binary_reader.ts +188 -188
- package/src/lib/binary_writer.ts +213 -213
- package/src/lib/connection_id.ts +102 -102
- package/src/lib/constraints.ts +48 -48
- package/src/lib/errors.ts +26 -26
- package/src/lib/filter.ts +195 -195
- package/src/lib/identity.ts +83 -83
- package/src/lib/indexes.ts +251 -251
- package/src/lib/option.ts +34 -34
- package/src/lib/query.ts +1019 -1019
- package/src/lib/reducer_schema.ts +38 -38
- package/src/lib/reducers.ts +116 -116
- package/src/lib/result.ts +36 -36
- package/src/lib/schedule_at.ts +86 -86
- package/src/lib/schema.ts +420 -420
- package/src/lib/table.ts +548 -548
- package/src/lib/table_schema.ts +64 -64
- package/src/lib/time_duration.ts +77 -77
- package/src/lib/timestamp.ts +148 -148
- package/src/lib/type_builders.test-d.ts +128 -128
- package/src/lib/type_builders.ts +4014 -4014
- package/src/lib/type_util.ts +124 -124
- package/src/lib/util.ts +196 -196
- package/src/lib/uuid.ts +337 -337
- package/src/react/SpacetimeDBProvider.ts +84 -84
- package/src/react/connection_state.ts +6 -6
- package/src/react/index.ts +5 -5
- package/src/react/useProcedure.ts +60 -60
- package/src/react/useReducer.ts +53 -53
- package/src/react/useSpacetimeDB.ts +18 -18
- package/src/react/useTable.ts +256 -251
- package/src/sdk/client_api/index.ts +114 -114
- package/src/sdk/client_api/types/procedures.ts +8 -8
- package/src/sdk/client_api/types/reducers.ts +8 -8
- package/src/sdk/client_api/types.ts +288 -288
- package/src/sdk/client_cache.ts +129 -129
- package/src/sdk/client_table.ts +179 -179
- package/src/sdk/connection_manager.ts +352 -237
- package/src/sdk/db_connection_builder.ts +290 -290
- package/src/sdk/db_connection_impl.ts +1356 -1347
- package/src/sdk/db_context.ts +28 -28
- package/src/sdk/db_view.ts +12 -12
- package/src/sdk/decompress.ts +51 -51
- package/src/sdk/event.ts +18 -18
- package/src/sdk/event_context.ts +51 -51
- package/src/sdk/event_emitter.ts +32 -32
- package/src/sdk/index.ts +14 -14
- package/src/sdk/internal.ts +2 -2
- package/src/sdk/json_api.ts +46 -46
- package/src/sdk/logger.ts +134 -134
- package/src/sdk/message_types.ts +46 -46
- package/src/sdk/procedures.ts +83 -83
- package/src/sdk/reducer_event.ts +20 -20
- package/src/sdk/reducer_handle.ts +12 -12
- package/src/sdk/reducers.ts +159 -159
- package/src/sdk/schema.ts +45 -45
- package/src/sdk/spacetime_module.ts +28 -28
- package/src/sdk/subscription_builder_impl.ts +275 -275
- package/src/sdk/table_cache.ts +581 -581
- package/src/sdk/type_utils.ts +19 -19
- package/src/sdk/version.ts +133 -133
- package/src/sdk/websocket_decompress_adapter.ts +63 -63
- package/src/sdk/websocket_protocols.ts +25 -25
- package/src/sdk/websocket_test_adapter.ts +107 -100
- package/src/sdk/websocket_v3_frames.ts +126 -126
- package/src/sdk/ws.ts +105 -105
- package/src/server/console.ts +81 -81
- package/src/server/db_view.ts +21 -21
- package/src/server/errors.ts +138 -138
- package/src/server/http.test-d.ts +80 -80
- package/src/server/http.ts +14 -14
- package/src/server/http_handlers.ts +413 -413
- package/src/server/http_internal.ts +79 -79
- package/src/server/http_shared.ts +186 -186
- package/src/server/index.ts +37 -37
- package/src/server/polyfills.ts +4 -4
- package/src/server/procedures.ts +239 -239
- package/src/server/query.ts +1 -1
- package/src/server/range.ts +53 -53
- package/src/server/reducers.ts +113 -113
- package/src/server/rng.ts +113 -113
- package/src/server/runtime.ts +1102 -1102
- package/src/server/schema.test-d.ts +99 -99
- package/src/server/schema.ts +663 -663
- package/src/server/sys.d.ts +125 -125
- package/src/server/view.test-d.ts +194 -194
- package/src/server/views.ts +340 -340
- package/src/solid/SpacetimeDBProvider.ts +97 -97
- package/src/solid/connection_state.ts +6 -6
- package/src/solid/index.ts +5 -5
- package/src/solid/useProcedure.ts +57 -57
- package/src/solid/useReducer.ts +50 -50
- package/src/solid/useSpacetimeDB.ts +18 -18
- package/src/solid/useTable.ts +203 -203
- package/src/svelte/SpacetimeDBProvider.ts +101 -101
- package/src/svelte/connection_state.ts +16 -16
- package/src/svelte/index.ts +4 -4
- package/src/svelte/useReducer.ts +61 -61
- package/src/svelte/useSpacetimeDB.ts +22 -22
- package/src/svelte/useTable.ts +218 -218
- package/src/tanstack/SpacetimeDBQueryClient.ts +330 -330
- package/src/tanstack/hooks.ts +83 -83
- package/src/tanstack/index.ts +16 -16
- package/src/util-stub.ts +1 -1
- package/src/vue/SpacetimeDBProvider.ts +157 -157
- package/src/vue/connection_state.ts +19 -19
- package/src/vue/index.ts +5 -5
- package/src/vue/useProcedure.ts +62 -62
- package/src/vue/useReducer.ts +55 -55
- package/src/vue/useSpacetimeDB.ts +18 -18
- package/src/vue/useTable.ts +229 -229
|
@@ -1,99 +1,99 @@
|
|
|
1
|
-
import { schema } from './schema';
|
|
2
|
-
import { table } from '../lib/table';
|
|
3
|
-
import t from '../lib/type_builders';
|
|
4
|
-
|
|
5
|
-
const person = table(
|
|
6
|
-
{
|
|
7
|
-
// name: 'person',
|
|
8
|
-
indexes: [
|
|
9
|
-
{
|
|
10
|
-
accessor: 'id_name_idx',
|
|
11
|
-
algorithm: 'btree',
|
|
12
|
-
columns: ['id', 'name'] as const,
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
accessor: 'id_name2_idx',
|
|
16
|
-
algorithm: 'btree',
|
|
17
|
-
columns: ['id', 'name2'] as const,
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
accessor: 'name_idx',
|
|
21
|
-
algorithm: 'btree',
|
|
22
|
-
columns: ['name'] as const,
|
|
23
|
-
},
|
|
24
|
-
],
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
id: t.u32().primaryKey(),
|
|
28
|
-
name: t.string(),
|
|
29
|
-
name2: t.string().unique(),
|
|
30
|
-
married: t.bool(),
|
|
31
|
-
id2: t.identity(),
|
|
32
|
-
age: t.u32(),
|
|
33
|
-
age2: t.u16(),
|
|
34
|
-
}
|
|
35
|
-
);
|
|
36
|
-
|
|
37
|
-
const spacetimedb = schema({ person });
|
|
38
|
-
|
|
39
|
-
spacetimedb.init(ctx => {
|
|
40
|
-
ctx.db.person.id_name_idx.filter(1);
|
|
41
|
-
ctx.db.person.id_name_idx.filter([1, 'aname']);
|
|
42
|
-
// ctx.db.person.id_name2_idx.find
|
|
43
|
-
|
|
44
|
-
// @ts-expect-error id2 is not indexed, so this should not exist at all.
|
|
45
|
-
const _id2 = ctx.db.person.id2;
|
|
46
|
-
|
|
47
|
-
ctx.db.person.id.find(2);
|
|
48
|
-
|
|
49
|
-
// update() is allowed on primary key indexes
|
|
50
|
-
ctx.db.person.id.update({
|
|
51
|
-
id: 1,
|
|
52
|
-
name: '',
|
|
53
|
-
name2: '',
|
|
54
|
-
married: false,
|
|
55
|
-
id2: '' as any,
|
|
56
|
-
age: 0,
|
|
57
|
-
age2: 0,
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
// @ts-expect-error update() is NOT allowed on non-PK unique indexes
|
|
61
|
-
const _update = ctx.db.person.name2.update;
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* Regression coverage for the declared-vs-resolved index split:
|
|
66
|
-
* - declared table-level indexes must still produce typed accessors
|
|
67
|
-
* - field-level indexes must still produce typed accessors
|
|
68
|
-
* - non-indexed fields must not accidentally become index accessors
|
|
69
|
-
*/
|
|
70
|
-
const account = table(
|
|
71
|
-
{
|
|
72
|
-
indexes: [
|
|
73
|
-
{
|
|
74
|
-
accessor: 'byEmailAndOrg',
|
|
75
|
-
algorithm: 'btree',
|
|
76
|
-
columns: ['email', 'orgId'] as const,
|
|
77
|
-
},
|
|
78
|
-
] as const,
|
|
79
|
-
},
|
|
80
|
-
{
|
|
81
|
-
accountId: t.u32(),
|
|
82
|
-
email: t.string().index('hash'),
|
|
83
|
-
orgId: t.u32(),
|
|
84
|
-
nickname: t.string(),
|
|
85
|
-
}
|
|
86
|
-
);
|
|
87
|
-
|
|
88
|
-
const spacetimedbIndexSplit = schema({ account });
|
|
89
|
-
|
|
90
|
-
spacetimedbIndexSplit.init(ctx => {
|
|
91
|
-
// Explicit table-level index accessor from `table({ indexes: [...] })`.
|
|
92
|
-
ctx.db.account.byEmailAndOrg.filter(['a@example.com', 1]);
|
|
93
|
-
|
|
94
|
-
// Field-level index accessor derived from column metadata.
|
|
95
|
-
ctx.db.account.email.filter('a@example.com');
|
|
96
|
-
|
|
97
|
-
// @ts-expect-error `nickname` is not indexed, so no index accessor should exist.
|
|
98
|
-
const _nickname = ctx.db.account.nickname;
|
|
99
|
-
});
|
|
1
|
+
import { schema } from './schema';
|
|
2
|
+
import { table } from '../lib/table';
|
|
3
|
+
import t from '../lib/type_builders';
|
|
4
|
+
|
|
5
|
+
const person = table(
|
|
6
|
+
{
|
|
7
|
+
// name: 'person',
|
|
8
|
+
indexes: [
|
|
9
|
+
{
|
|
10
|
+
accessor: 'id_name_idx',
|
|
11
|
+
algorithm: 'btree',
|
|
12
|
+
columns: ['id', 'name'] as const,
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
accessor: 'id_name2_idx',
|
|
16
|
+
algorithm: 'btree',
|
|
17
|
+
columns: ['id', 'name2'] as const,
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
accessor: 'name_idx',
|
|
21
|
+
algorithm: 'btree',
|
|
22
|
+
columns: ['name'] as const,
|
|
23
|
+
},
|
|
24
|
+
],
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
id: t.u32().primaryKey(),
|
|
28
|
+
name: t.string(),
|
|
29
|
+
name2: t.string().unique(),
|
|
30
|
+
married: t.bool(),
|
|
31
|
+
id2: t.identity(),
|
|
32
|
+
age: t.u32(),
|
|
33
|
+
age2: t.u16(),
|
|
34
|
+
}
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
const spacetimedb = schema({ person });
|
|
38
|
+
|
|
39
|
+
spacetimedb.init(ctx => {
|
|
40
|
+
ctx.db.person.id_name_idx.filter(1);
|
|
41
|
+
ctx.db.person.id_name_idx.filter([1, 'aname']);
|
|
42
|
+
// ctx.db.person.id_name2_idx.find
|
|
43
|
+
|
|
44
|
+
// @ts-expect-error id2 is not indexed, so this should not exist at all.
|
|
45
|
+
const _id2 = ctx.db.person.id2;
|
|
46
|
+
|
|
47
|
+
ctx.db.person.id.find(2);
|
|
48
|
+
|
|
49
|
+
// update() is allowed on primary key indexes
|
|
50
|
+
ctx.db.person.id.update({
|
|
51
|
+
id: 1,
|
|
52
|
+
name: '',
|
|
53
|
+
name2: '',
|
|
54
|
+
married: false,
|
|
55
|
+
id2: '' as any,
|
|
56
|
+
age: 0,
|
|
57
|
+
age2: 0,
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
// @ts-expect-error update() is NOT allowed on non-PK unique indexes
|
|
61
|
+
const _update = ctx.db.person.name2.update;
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Regression coverage for the declared-vs-resolved index split:
|
|
66
|
+
* - declared table-level indexes must still produce typed accessors
|
|
67
|
+
* - field-level indexes must still produce typed accessors
|
|
68
|
+
* - non-indexed fields must not accidentally become index accessors
|
|
69
|
+
*/
|
|
70
|
+
const account = table(
|
|
71
|
+
{
|
|
72
|
+
indexes: [
|
|
73
|
+
{
|
|
74
|
+
accessor: 'byEmailAndOrg',
|
|
75
|
+
algorithm: 'btree',
|
|
76
|
+
columns: ['email', 'orgId'] as const,
|
|
77
|
+
},
|
|
78
|
+
] as const,
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
accountId: t.u32(),
|
|
82
|
+
email: t.string().index('hash'),
|
|
83
|
+
orgId: t.u32(),
|
|
84
|
+
nickname: t.string(),
|
|
85
|
+
}
|
|
86
|
+
);
|
|
87
|
+
|
|
88
|
+
const spacetimedbIndexSplit = schema({ account });
|
|
89
|
+
|
|
90
|
+
spacetimedbIndexSplit.init(ctx => {
|
|
91
|
+
// Explicit table-level index accessor from `table({ indexes: [...] })`.
|
|
92
|
+
ctx.db.account.byEmailAndOrg.filter(['a@example.com', 1]);
|
|
93
|
+
|
|
94
|
+
// Field-level index accessor derived from column metadata.
|
|
95
|
+
ctx.db.account.email.filter('a@example.com');
|
|
96
|
+
|
|
97
|
+
// @ts-expect-error `nickname` is not indexed, so no index accessor should exist.
|
|
98
|
+
const _nickname = ctx.db.account.nickname;
|
|
99
|
+
});
|