spacetimedb 2.0.3 → 2.0.4
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 +2 -2
- package/dist/angular/index.cjs +3 -0
- package/dist/angular/index.cjs.map +1 -1
- package/dist/angular/index.mjs +3 -0
- package/dist/angular/index.mjs.map +1 -1
- package/dist/browser/angular/index.mjs +3 -0
- package/dist/browser/angular/index.mjs.map +1 -1
- package/dist/browser/react/index.mjs +3 -0
- package/dist/browser/react/index.mjs.map +1 -1
- package/dist/browser/svelte/index.mjs +3 -0
- package/dist/browser/svelte/index.mjs.map +1 -1
- package/dist/browser/vue/index.mjs +3 -0
- package/dist/browser/vue/index.mjs.map +1 -1
- package/dist/index.browser.mjs +126 -92
- package/dist/index.browser.mjs.map +1 -1
- package/dist/index.cjs +126 -92
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +126 -92
- package/dist/index.mjs.map +1 -1
- package/dist/lib/binary_writer.d.ts +1 -0
- package/dist/lib/binary_writer.d.ts.map +1 -1
- package/dist/lib/indexes.d.ts +1 -1
- package/dist/lib/indexes.d.ts.map +1 -1
- package/dist/lib/query.d.ts +4 -2
- package/dist/lib/query.d.ts.map +1 -1
- package/dist/lib/schema.d.ts +2 -0
- package/dist/lib/schema.d.ts.map +1 -1
- package/dist/lib/table.d.ts +19 -1
- package/dist/lib/table.d.ts.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 +3 -0
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.mjs +3 -0
- package/dist/react/index.mjs.map +1 -1
- package/dist/sdk/db_connection_impl.d.ts.map +1 -1
- package/dist/sdk/index.browser.mjs +126 -92
- package/dist/sdk/index.browser.mjs.map +1 -1
- package/dist/sdk/index.cjs +126 -92
- package/dist/sdk/index.cjs.map +1 -1
- package/dist/sdk/index.mjs +126 -92
- package/dist/sdk/index.mjs.map +1 -1
- package/dist/sdk/table_cache.d.ts.map +1 -1
- package/dist/sdk/websocket_decompress_adapter.d.ts +17 -7
- package/dist/sdk/websocket_decompress_adapter.d.ts.map +1 -1
- package/dist/sdk/websocket_test_adapter.d.ts +3 -2
- package/dist/sdk/websocket_test_adapter.d.ts.map +1 -1
- package/dist/server/index.mjs +65 -21
- package/dist/server/index.mjs.map +1 -1
- package/dist/svelte/index.cjs +3 -0
- package/dist/svelte/index.cjs.map +1 -1
- package/dist/svelte/index.mjs +3 -0
- package/dist/svelte/index.mjs.map +1 -1
- package/dist/tanstack/SpacetimeDBQueryClient.d.ts +1 -0
- package/dist/tanstack/SpacetimeDBQueryClient.d.ts.map +1 -1
- package/dist/tanstack/index.cjs +24 -0
- package/dist/tanstack/index.cjs.map +1 -1
- package/dist/tanstack/index.mjs +24 -0
- package/dist/tanstack/index.mjs.map +1 -1
- package/dist/vue/index.cjs +3 -0
- package/dist/vue/index.cjs.map +1 -1
- package/dist/vue/index.mjs +3 -0
- package/dist/vue/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/lib/binary_writer.ts +4 -0
- package/src/lib/indexes.ts +1 -1
- package/src/lib/query.ts +30 -6
- package/src/lib/schema.ts +66 -24
- package/src/lib/table.ts +41 -9
- package/src/sdk/db_connection_impl.ts +38 -43
- package/src/sdk/table_cache.ts +14 -11
- package/src/sdk/websocket_decompress_adapter.ts +42 -45
- package/src/sdk/websocket_test_adapter.ts +3 -2
- package/src/server/runtime.ts +7 -3
- package/src/server/schema.test-d.ts +37 -0
- package/src/server/view.test-d.ts +2 -0
- package/src/tanstack/SpacetimeDBQueryClient.ts +24 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table_cache.d.ts","sourceRoot":"","sources":["../../src/sdk/table_cache.ts"],"names":[],"mappings":"AAGA,OAAO,EAAa,KAAK,mBAAmB,EAAE,MAAM,KAAK,CAAC;AAC1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAC9E,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC9E,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAEV,eAAe,
|
|
1
|
+
{"version":3,"file":"table_cache.d.ts","sourceRoot":"","sources":["../../src/sdk/table_cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,22 @@
|
|
|
1
|
-
export
|
|
1
|
+
export interface WebsocketAdapter {
|
|
2
|
+
send(msg: Uint8Array): void;
|
|
3
|
+
close(): void;
|
|
4
|
+
set onclose(handler: (ev: CloseEvent) => void);
|
|
5
|
+
set onopen(handler: () => void);
|
|
6
|
+
set onmessage(handler: (msg: {
|
|
7
|
+
data: Uint8Array;
|
|
8
|
+
}) => void);
|
|
9
|
+
set onerror(handler: (msg: ErrorEvent) => void);
|
|
10
|
+
}
|
|
11
|
+
export declare class WebsocketDecompressAdapter implements WebsocketAdapter {
|
|
2
12
|
#private;
|
|
3
|
-
onclose
|
|
4
|
-
onopen
|
|
5
|
-
onmessage
|
|
13
|
+
set onclose(handler: (ev: CloseEvent) => void);
|
|
14
|
+
set onopen(handler: () => void);
|
|
15
|
+
set onmessage(handler: (msg: {
|
|
6
16
|
data: Uint8Array;
|
|
7
|
-
}) => void;
|
|
8
|
-
onerror
|
|
9
|
-
send(msg:
|
|
17
|
+
}) => void);
|
|
18
|
+
set onerror(handler: (msg: ErrorEvent) => void);
|
|
19
|
+
send(msg: Uint8Array): void;
|
|
10
20
|
close(): void;
|
|
11
21
|
constructor(ws: WebSocket);
|
|
12
22
|
static createWebSocketFn({ url, nameOrAddress, wsProtocol, authToken, compression, lightMode, confirmedReads, }: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket_decompress_adapter.d.ts","sourceRoot":"","sources":["../../src/sdk/websocket_decompress_adapter.ts"],"names":[],"mappings":"AAGA,
|
|
1
|
+
{"version":3,"file":"websocket_decompress_adapter.d.ts","sourceRoot":"","sources":["../../src/sdk/websocket_decompress_adapter.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAAC;IAC5B,KAAK,IAAI,IAAI,CAAC;IAEd,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,UAAU,KAAK,IAAI,EAAE;IAC/C,IAAI,MAAM,CAAC,OAAO,EAAE,MAAM,IAAI,EAAE;IAChC,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE;QAAE,IAAI,EAAE,UAAU,CAAA;KAAE,KAAK,IAAI,EAAE;IAC5D,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,EAAE;CACjD;AAED,qBAAa,0BAA2B,YAAW,gBAAgB;;IACjE,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,UAAU,KAAK,IAAI,EAE5C;IACD,IAAI,MAAM,CAAC,OAAO,EAAE,MAAM,IAAI,EAE7B;IACD,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE;QAAE,IAAI,EAAE,UAAU,CAAA;KAAE,KAAK,IAAI,EAKzD;IACD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,EAE7C;IAuBD,IAAI,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI;IAI3B,KAAK,IAAI,IAAI;gBAID,EAAE,EAAE,SAAS;WAMZ,iBAAiB,CAAC,EAC7B,GAAG,EACH,aAAa,EACb,UAAU,EACV,SAAS,EACT,WAAW,EACX,SAAS,EACT,cAAc,GACf,EAAE;QACD,GAAG,EAAE,GAAG,CAAC;QACT,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;QAC7B,SAAS,EAAE,OAAO,CAAC;QACnB,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B,GAAG,OAAO,CAAC,0BAA0B,CAAC;CA2CxC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { ClientMessage, ServerMessage } from './client_api/types';
|
|
2
|
-
|
|
2
|
+
import type { WebsocketAdapter } from './websocket_decompress_adapter';
|
|
3
|
+
declare class WebsocketTestAdapter implements WebsocketAdapter {
|
|
3
4
|
onclose: any;
|
|
4
|
-
onopen:
|
|
5
|
+
onopen: () => void;
|
|
5
6
|
onmessage: any;
|
|
6
7
|
onerror: any;
|
|
7
8
|
messageQueue: any[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket_test_adapter.d.ts","sourceRoot":"","sources":["../../src/sdk/websocket_test_adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"websocket_test_adapter.d.ts","sourceRoot":"","sources":["../../src/sdk/websocket_test_adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAEvE,cAAM,oBAAqB,YAAW,gBAAgB;IACpD,OAAO,EAAE,GAAG,CAAC;IAEb,MAAM,EAAG,MAAM,IAAI,CAAC;IACpB,SAAS,EAAE,GAAG,CAAC;IACf,OAAO,EAAE,GAAG,CAAC;IAEb,YAAY,EAAE,GAAG,EAAE,CAAC;IACpB,gBAAgB,EAAE,aAAa,EAAE,CAAC;IAClC,MAAM,EAAE,OAAO,CAAC;;IAQhB,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI;IAOxB,KAAK,IAAI,IAAI;IAKb,gBAAgB,IAAI,IAAI;IAIxB,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAYpC,iBAAiB,CAAC,KAAK,EAAE;QAC7B,GAAG,EAAE,GAAG,CAAC;QACT,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;QAC7B,SAAS,EAAE,OAAO,CAAC;QACnB,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAGlC;AAED,YAAY,EAAE,oBAAoB,EAAE,CAAC;AACrC,eAAe,oBAAoB,CAAC"}
|
package/dist/server/index.mjs
CHANGED
|
@@ -1411,6 +1411,9 @@ var BinaryWriter = class {
|
|
|
1411
1411
|
constructor(init) {
|
|
1412
1412
|
this.buffer = typeof init === "number" ? new ResizableBuffer(init) : init;
|
|
1413
1413
|
}
|
|
1414
|
+
clear() {
|
|
1415
|
+
this.offset = 0;
|
|
1416
|
+
}
|
|
1414
1417
|
reset(buffer) {
|
|
1415
1418
|
this.buffer = buffer;
|
|
1416
1419
|
this.offset = 0;
|
|
@@ -5034,6 +5037,31 @@ var ViewResultHeader = t.enum("ViewResultHeader", {
|
|
|
5034
5037
|
// src/lib/schema.ts
|
|
5035
5038
|
function tableToSchema(accName, schema2, tableDef) {
|
|
5036
5039
|
const getColName = (i) => schema2.rowType.algebraicType.value.elements[i].name;
|
|
5040
|
+
const resolvedIndexes = tableDef.indexes.map(
|
|
5041
|
+
(idx) => {
|
|
5042
|
+
const accessorName = idx.accessorName;
|
|
5043
|
+
if (typeof accessorName !== "string" || accessorName.length === 0) {
|
|
5044
|
+
throw new TypeError(
|
|
5045
|
+
`Index '${idx.sourceName ?? "<unknown>"}' on table '${tableDef.sourceName}' is missing accessor name`
|
|
5046
|
+
);
|
|
5047
|
+
}
|
|
5048
|
+
const columnIds = idx.algorithm.tag === "Direct" ? [idx.algorithm.value] : idx.algorithm.value;
|
|
5049
|
+
const unique = tableDef.constraints.some(
|
|
5050
|
+
(c) => c.data.tag === "Unique" && c.data.value.columns.every((col) => columnIds.includes(col))
|
|
5051
|
+
);
|
|
5052
|
+
const algorithm = {
|
|
5053
|
+
BTree: "btree",
|
|
5054
|
+
Hash: "hash",
|
|
5055
|
+
Direct: "direct"
|
|
5056
|
+
}[idx.algorithm.tag];
|
|
5057
|
+
return {
|
|
5058
|
+
name: accessorName,
|
|
5059
|
+
unique,
|
|
5060
|
+
algorithm,
|
|
5061
|
+
columns: columnIds.map(getColName)
|
|
5062
|
+
};
|
|
5063
|
+
}
|
|
5064
|
+
);
|
|
5037
5065
|
return {
|
|
5038
5066
|
// For client,`schama.tableName` will always be there as canonical name.
|
|
5039
5067
|
// For module, if explicit name is not provided via `name`, accessor name will
|
|
@@ -5043,26 +5071,16 @@ function tableToSchema(accName, schema2, tableDef) {
|
|
|
5043
5071
|
columns: schema2.rowType.row,
|
|
5044
5072
|
// typed as T[i]['rowType']['row'] under TablesToSchema<T>
|
|
5045
5073
|
rowType: schema2.rowSpacetimeType,
|
|
5074
|
+
// Keep declarative indexes in their original shape for type-level consumers.
|
|
5075
|
+
indexes: schema2.idxs,
|
|
5046
5076
|
constraints: tableDef.constraints.map((c) => ({
|
|
5047
5077
|
name: c.sourceName,
|
|
5048
5078
|
constraint: "unique",
|
|
5049
5079
|
columns: c.data.value.columns.map(getColName)
|
|
5050
5080
|
})),
|
|
5051
|
-
//
|
|
5052
|
-
//
|
|
5053
|
-
|
|
5054
|
-
// We should stop lying about our types.
|
|
5055
|
-
indexes: tableDef.indexes.map((idx) => {
|
|
5056
|
-
const columnIds = idx.algorithm.tag === "Direct" ? [idx.algorithm.value] : idx.algorithm.value;
|
|
5057
|
-
return {
|
|
5058
|
-
name: idx.accessorName,
|
|
5059
|
-
unique: tableDef.constraints.some(
|
|
5060
|
-
(c) => c.data.value.columns.every((col) => columnIds.includes(col))
|
|
5061
|
-
),
|
|
5062
|
-
algorithm: idx.algorithm.tag.toLowerCase(),
|
|
5063
|
-
columns: columnIds.map(getColName)
|
|
5064
|
-
};
|
|
5065
|
-
}),
|
|
5081
|
+
// Expose resolved runtime indexes separately so runtime users don't have to
|
|
5082
|
+
// reinterpret `indexes` with unsafe casts.
|
|
5083
|
+
resolvedIndexes,
|
|
5066
5084
|
tableDef,
|
|
5067
5085
|
...tableDef.isEvent ? { isEvent: true } : {}
|
|
5068
5086
|
};
|
|
@@ -5342,6 +5360,14 @@ function table(opts, row, ..._) {
|
|
|
5342
5360
|
}
|
|
5343
5361
|
}
|
|
5344
5362
|
for (const indexOpts of userIndexes ?? []) {
|
|
5363
|
+
const accessor = indexOpts.accessor;
|
|
5364
|
+
if (typeof accessor !== "string" || accessor.length === 0) {
|
|
5365
|
+
const tableLabel = name ?? "<unnamed>";
|
|
5366
|
+
const indexLabel = indexOpts.name ?? "<unnamed>";
|
|
5367
|
+
throw new TypeError(
|
|
5368
|
+
`Index '${indexLabel}' on table '${tableLabel}' must define a non-empty 'accessor'`
|
|
5369
|
+
);
|
|
5370
|
+
}
|
|
5345
5371
|
let algorithm;
|
|
5346
5372
|
switch (indexOpts.algorithm) {
|
|
5347
5373
|
case "btree":
|
|
@@ -5362,7 +5388,7 @@ function table(opts, row, ..._) {
|
|
|
5362
5388
|
}
|
|
5363
5389
|
indexes.push({
|
|
5364
5390
|
sourceName: void 0,
|
|
5365
|
-
accessorName:
|
|
5391
|
+
accessorName: accessor,
|
|
5366
5392
|
algorithm,
|
|
5367
5393
|
canonicalName: indexOpts.name
|
|
5368
5394
|
});
|
|
@@ -5412,7 +5438,9 @@ function table(opts, row, ..._) {
|
|
|
5412
5438
|
isEvent
|
|
5413
5439
|
};
|
|
5414
5440
|
},
|
|
5415
|
-
|
|
5441
|
+
// Preserve the declared index options as runtime data so `tableToSchema`
|
|
5442
|
+
// can expose them without type-smuggling.
|
|
5443
|
+
idxs: userIndexes,
|
|
5416
5444
|
constraints,
|
|
5417
5445
|
schedule
|
|
5418
5446
|
};
|
|
@@ -5474,7 +5502,7 @@ var FromBuilder = class _FromBuilder {
|
|
|
5474
5502
|
}
|
|
5475
5503
|
[QueryBrand] = true;
|
|
5476
5504
|
where(predicate) {
|
|
5477
|
-
const newCondition = predicate(this.table.cols);
|
|
5505
|
+
const newCondition = normalizePredicateExpr(predicate(this.table.cols));
|
|
5478
5506
|
const nextWhere = this.whereClause ? this.whereClause.and(newCondition) : newCondition;
|
|
5479
5507
|
return new _FromBuilder(this.table, nextWhere);
|
|
5480
5508
|
}
|
|
@@ -5651,6 +5679,21 @@ function normalizeValue(val) {
|
|
|
5651
5679
|
}
|
|
5652
5680
|
return literal(val);
|
|
5653
5681
|
}
|
|
5682
|
+
function normalizePredicateExpr(value) {
|
|
5683
|
+
if (value instanceof BooleanExpr) return value;
|
|
5684
|
+
if (typeof value === "boolean") {
|
|
5685
|
+
return new BooleanExpr({
|
|
5686
|
+
type: "eq",
|
|
5687
|
+
left: literal(value),
|
|
5688
|
+
right: literal(true)
|
|
5689
|
+
});
|
|
5690
|
+
}
|
|
5691
|
+
return new BooleanExpr({
|
|
5692
|
+
type: "eq",
|
|
5693
|
+
left: value,
|
|
5694
|
+
right: literal(true)
|
|
5695
|
+
});
|
|
5696
|
+
}
|
|
5654
5697
|
var BooleanExpr = class _BooleanExpr {
|
|
5655
5698
|
constructor(data) {
|
|
5656
5699
|
this.data = data;
|
|
@@ -6599,6 +6642,7 @@ function makeTableView(typespace, table2) {
|
|
|
6599
6642
|
tableMethods
|
|
6600
6643
|
);
|
|
6601
6644
|
for (const indexDef of table2.indexes) {
|
|
6645
|
+
const accessorName = indexDef.accessorName;
|
|
6602
6646
|
const index_id = sys.index_id_from_name(indexDef.sourceName);
|
|
6603
6647
|
let column_ids;
|
|
6604
6648
|
let isHashIndex = false;
|
|
@@ -6844,10 +6888,10 @@ function makeTableView(typespace, table2) {
|
|
|
6844
6888
|
}
|
|
6845
6889
|
};
|
|
6846
6890
|
}
|
|
6847
|
-
if (Object.hasOwn(tableView,
|
|
6848
|
-
freeze(Object.assign(tableView[
|
|
6891
|
+
if (Object.hasOwn(tableView, accessorName)) {
|
|
6892
|
+
freeze(Object.assign(tableView[accessorName], index));
|
|
6849
6893
|
} else {
|
|
6850
|
-
tableView[
|
|
6894
|
+
tableView[accessorName] = freeze(index);
|
|
6851
6895
|
}
|
|
6852
6896
|
}
|
|
6853
6897
|
return freeze(tableView);
|