spacetimedb 2.4.0 → 2.5.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 +2 -2
- package/README.md +91 -0
- package/dist/browser/solid/index.mjs +1863 -0
- package/dist/browser/solid/index.mjs.map +1 -0
- package/dist/index.browser.mjs +14 -0
- package/dist/index.browser.mjs.map +1 -1
- package/dist/index.cjs +14 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +14 -0
- package/dist/index.mjs.map +1 -1
- package/dist/lib/autogen/types.d.ts +17 -0
- package/dist/lib/autogen/types.d.ts.map +1 -1
- package/dist/lib/schema.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/sdk/index.browser.mjs +1 -1
- package/dist/min/sdk/index.browser.mjs.map +1 -1
- package/dist/sdk/index.browser.mjs +14 -0
- package/dist/sdk/index.browser.mjs.map +1 -1
- package/dist/sdk/index.cjs +14 -0
- package/dist/sdk/index.cjs.map +1 -1
- package/dist/sdk/index.mjs +14 -0
- package/dist/sdk/index.mjs.map +1 -1
- package/dist/server/index.mjs +46 -2
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/schema.d.ts +3 -3
- package/dist/server/schema.d.ts.map +1 -1
- package/dist/server/views.d.ts +17 -1
- package/dist/server/views.d.ts.map +1 -1
- package/dist/solid/SpacetimeDBProvider.d.ts +7 -0
- package/dist/solid/SpacetimeDBProvider.d.ts.map +1 -0
- package/dist/solid/connection_state.d.ts +6 -0
- package/dist/solid/connection_state.d.ts.map +1 -0
- package/dist/solid/index.cjs +1869 -0
- package/dist/solid/index.cjs.map +1 -0
- package/dist/solid/index.d.ts +6 -0
- package/dist/solid/index.d.ts.map +1 -0
- package/dist/solid/index.mjs +1863 -0
- package/dist/solid/index.mjs.map +1 -0
- package/dist/solid/useProcedure.d.ts +4 -0
- package/dist/solid/useProcedure.d.ts.map +1 -0
- package/dist/solid/useReducer.d.ts +4 -0
- package/dist/solid/useReducer.d.ts.map +1 -0
- package/dist/solid/useSpacetimeDB.d.ts +4 -0
- package/dist/solid/useSpacetimeDB.d.ts.map +1 -0
- package/dist/solid/useTable.d.ts +32 -0
- package/dist/solid/useTable.d.ts.map +1 -0
- package/package.json +13 -3
- package/src/lib/autogen/types.ts +9 -0
- package/src/lib/schema.ts +7 -0
- package/src/server/schema.ts +15 -2
- package/src/server/view.test-d.ts +22 -0
- package/src/server/views.ts +126 -0
- package/src/solid/SpacetimeDBProvider.ts +97 -0
- package/src/solid/connection_state.ts +6 -0
- package/src/solid/index.ts +5 -0
- package/src/solid/useProcedure.ts +57 -0
- package/src/solid/useReducer.ts +50 -0
- package/src/solid/useSpacetimeDB.ts +18 -0
- package/src/solid/useTable.ts +203 -0
package/dist/server/index.mjs
CHANGED
|
@@ -4782,6 +4782,9 @@ var RawModuleDefV10Section = t.enum("RawModuleDefV10Section", {
|
|
|
4782
4782
|
},
|
|
4783
4783
|
get HttpRoutes() {
|
|
4784
4784
|
return t.array(RawHttpRouteDefV10);
|
|
4785
|
+
},
|
|
4786
|
+
get ViewPrimaryKeys() {
|
|
4787
|
+
return t.array(RawViewPrimaryKeyDefV10);
|
|
4785
4788
|
}
|
|
4786
4789
|
});
|
|
4787
4790
|
var RawModuleDefV8 = t.object("RawModuleDefV8", {
|
|
@@ -5019,6 +5022,10 @@ var RawViewDefV9 = t.object("RawViewDefV9", {
|
|
|
5019
5022
|
return AlgebraicType2;
|
|
5020
5023
|
}
|
|
5021
5024
|
});
|
|
5025
|
+
var RawViewPrimaryKeyDefV10 = t.object("RawViewPrimaryKeyDefV10", {
|
|
5026
|
+
viewSourceName: t.string(),
|
|
5027
|
+
columns: t.array(t.string())
|
|
5028
|
+
});
|
|
5022
5029
|
var ReducerDef = t.object("ReducerDef", {
|
|
5023
5030
|
name: t.string(),
|
|
5024
5031
|
get args() {
|
|
@@ -5129,6 +5136,7 @@ var ModuleContext = class {
|
|
|
5129
5136
|
schedules: [],
|
|
5130
5137
|
procedures: [],
|
|
5131
5138
|
views: [],
|
|
5139
|
+
viewPrimaryKeys: [],
|
|
5132
5140
|
lifeCycleReducers: [],
|
|
5133
5141
|
httpHandlers: [],
|
|
5134
5142
|
httpRoutes: [],
|
|
@@ -5152,6 +5160,12 @@ var ModuleContext = class {
|
|
|
5152
5160
|
push(module.reducers && { tag: "Reducers", value: module.reducers });
|
|
5153
5161
|
push(module.procedures && { tag: "Procedures", value: module.procedures });
|
|
5154
5162
|
push(module.views && { tag: "Views", value: module.views });
|
|
5163
|
+
push(
|
|
5164
|
+
module.viewPrimaryKeys && {
|
|
5165
|
+
tag: "ViewPrimaryKeys",
|
|
5166
|
+
value: module.viewPrimaryKeys
|
|
5167
|
+
}
|
|
5168
|
+
);
|
|
5155
5169
|
push(module.schedules && { tag: "Schedules", value: module.schedules });
|
|
5156
5170
|
push(
|
|
5157
5171
|
module.lifeCycleReducers && {
|
|
@@ -6336,6 +6350,18 @@ function registerView(ctx, opts, exportName, anon, params, ret, fn) {
|
|
|
6336
6350
|
params: paramType,
|
|
6337
6351
|
returnType
|
|
6338
6352
|
});
|
|
6353
|
+
const primaryKeyColumns = viewPrimaryKeyColumns(ret);
|
|
6354
|
+
if (primaryKeyColumns.length > 1) {
|
|
6355
|
+
throw new TypeError(
|
|
6356
|
+
`View '${exportName}' can have at most one primaryKey() column on its returned row type; found ${primaryKeyColumns.join(", ")}`
|
|
6357
|
+
);
|
|
6358
|
+
}
|
|
6359
|
+
if (primaryKeyColumns.length === 1) {
|
|
6360
|
+
ctx.moduleDef.viewPrimaryKeys.push({
|
|
6361
|
+
viewSourceName: exportName,
|
|
6362
|
+
columns: primaryKeyColumns
|
|
6363
|
+
});
|
|
6364
|
+
}
|
|
6339
6365
|
if (opts.name != null) {
|
|
6340
6366
|
ctx.moduleDef.explicitNames.entries.push({
|
|
6341
6367
|
tag: "Function",
|
|
@@ -6362,6 +6388,24 @@ function registerView(ctx, opts, exportName, anon, params, ret, fn) {
|
|
|
6362
6388
|
returnTypeBaseSize: bsatnBaseSize(typespace, returnType)
|
|
6363
6389
|
});
|
|
6364
6390
|
}
|
|
6391
|
+
function viewPrimaryKeyColumns(ret) {
|
|
6392
|
+
const row = viewReturnRow(ret);
|
|
6393
|
+
if (row == null) {
|
|
6394
|
+
return [];
|
|
6395
|
+
}
|
|
6396
|
+
return Object.entries(row.row).filter(
|
|
6397
|
+
(entry) => entry[1].columnMetadata.isPrimaryKey === true
|
|
6398
|
+
).map(([name]) => name);
|
|
6399
|
+
}
|
|
6400
|
+
function viewReturnRow(ret) {
|
|
6401
|
+
if (ret instanceof ArrayBuilder && ret.element instanceof RowBuilder) {
|
|
6402
|
+
return ret.element;
|
|
6403
|
+
}
|
|
6404
|
+
if (ret instanceof OptionBuilder && ret.value instanceof RowBuilder) {
|
|
6405
|
+
return ret.value;
|
|
6406
|
+
}
|
|
6407
|
+
return void 0;
|
|
6408
|
+
}
|
|
6365
6409
|
|
|
6366
6410
|
// src/lib/errors.ts
|
|
6367
6411
|
var SenderError = class extends Error {
|
|
@@ -7898,7 +7942,7 @@ var Schema = class {
|
|
|
7898
7942
|
}
|
|
7899
7943
|
return makeReducerExport(this.#ctx, opts, {}, fn, Lifecycle.OnDisconnect);
|
|
7900
7944
|
}
|
|
7901
|
-
view(opts, ret, fn) {
|
|
7945
|
+
view(opts, ret, fn, ..._) {
|
|
7902
7946
|
return makeViewExport(this.#ctx, opts, {}, ret, fn);
|
|
7903
7947
|
}
|
|
7904
7948
|
// TODO: re-enable once parameterized views are supported in SQL
|
|
@@ -7925,7 +7969,7 @@ var Schema = class {
|
|
|
7925
7969
|
// defineView(name, false, paramsOrRet as Params, retOrFn, maybeFn!);
|
|
7926
7970
|
// }
|
|
7927
7971
|
// }
|
|
7928
|
-
anonymousView(opts, ret, fn) {
|
|
7972
|
+
anonymousView(opts, ret, fn, ..._) {
|
|
7929
7973
|
return makeAnonViewExport(this.#ctx, opts, {}, ret, fn);
|
|
7930
7974
|
}
|
|
7931
7975
|
procedure(...args) {
|