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.
Files changed (60) hide show
  1. package/LICENSE.txt +2 -2
  2. package/README.md +91 -0
  3. package/dist/browser/solid/index.mjs +1863 -0
  4. package/dist/browser/solid/index.mjs.map +1 -0
  5. package/dist/index.browser.mjs +14 -0
  6. package/dist/index.browser.mjs.map +1 -1
  7. package/dist/index.cjs +14 -0
  8. package/dist/index.cjs.map +1 -1
  9. package/dist/index.mjs +14 -0
  10. package/dist/index.mjs.map +1 -1
  11. package/dist/lib/autogen/types.d.ts +17 -0
  12. package/dist/lib/autogen/types.d.ts.map +1 -1
  13. package/dist/lib/schema.d.ts.map +1 -1
  14. package/dist/min/index.browser.mjs +1 -1
  15. package/dist/min/index.browser.mjs.map +1 -1
  16. package/dist/min/sdk/index.browser.mjs +1 -1
  17. package/dist/min/sdk/index.browser.mjs.map +1 -1
  18. package/dist/sdk/index.browser.mjs +14 -0
  19. package/dist/sdk/index.browser.mjs.map +1 -1
  20. package/dist/sdk/index.cjs +14 -0
  21. package/dist/sdk/index.cjs.map +1 -1
  22. package/dist/sdk/index.mjs +14 -0
  23. package/dist/sdk/index.mjs.map +1 -1
  24. package/dist/server/index.mjs +46 -2
  25. package/dist/server/index.mjs.map +1 -1
  26. package/dist/server/schema.d.ts +3 -3
  27. package/dist/server/schema.d.ts.map +1 -1
  28. package/dist/server/views.d.ts +17 -1
  29. package/dist/server/views.d.ts.map +1 -1
  30. package/dist/solid/SpacetimeDBProvider.d.ts +7 -0
  31. package/dist/solid/SpacetimeDBProvider.d.ts.map +1 -0
  32. package/dist/solid/connection_state.d.ts +6 -0
  33. package/dist/solid/connection_state.d.ts.map +1 -0
  34. package/dist/solid/index.cjs +1869 -0
  35. package/dist/solid/index.cjs.map +1 -0
  36. package/dist/solid/index.d.ts +6 -0
  37. package/dist/solid/index.d.ts.map +1 -0
  38. package/dist/solid/index.mjs +1863 -0
  39. package/dist/solid/index.mjs.map +1 -0
  40. package/dist/solid/useProcedure.d.ts +4 -0
  41. package/dist/solid/useProcedure.d.ts.map +1 -0
  42. package/dist/solid/useReducer.d.ts +4 -0
  43. package/dist/solid/useReducer.d.ts.map +1 -0
  44. package/dist/solid/useSpacetimeDB.d.ts +4 -0
  45. package/dist/solid/useSpacetimeDB.d.ts.map +1 -0
  46. package/dist/solid/useTable.d.ts +32 -0
  47. package/dist/solid/useTable.d.ts.map +1 -0
  48. package/package.json +13 -3
  49. package/src/lib/autogen/types.ts +9 -0
  50. package/src/lib/schema.ts +7 -0
  51. package/src/server/schema.ts +15 -2
  52. package/src/server/view.test-d.ts +22 -0
  53. package/src/server/views.ts +126 -0
  54. package/src/solid/SpacetimeDBProvider.ts +97 -0
  55. package/src/solid/connection_state.ts +6 -0
  56. package/src/solid/index.ts +5 -0
  57. package/src/solid/useProcedure.ts +57 -0
  58. package/src/solid/useReducer.ts +50 -0
  59. package/src/solid/useSpacetimeDB.ts +18 -0
  60. package/src/solid/useTable.ts +203 -0
@@ -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) {