spacetimedb 2.0.3 → 2.1.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 (88) hide show
  1. package/LICENSE.txt +2 -2
  2. package/dist/angular/index.cjs +5 -1
  3. package/dist/angular/index.cjs.map +1 -1
  4. package/dist/angular/index.mjs +5 -1
  5. package/dist/angular/index.mjs.map +1 -1
  6. package/dist/browser/angular/index.mjs +5 -1
  7. package/dist/browser/angular/index.mjs.map +1 -1
  8. package/dist/browser/react/index.mjs +8 -1
  9. package/dist/browser/react/index.mjs.map +1 -1
  10. package/dist/browser/svelte/index.mjs +5 -1
  11. package/dist/browser/svelte/index.mjs.map +1 -1
  12. package/dist/browser/vue/index.mjs +5 -1
  13. package/dist/browser/vue/index.mjs.map +1 -1
  14. package/dist/index.browser.mjs +148 -100
  15. package/dist/index.browser.mjs.map +1 -1
  16. package/dist/index.cjs +148 -100
  17. package/dist/index.cjs.map +1 -1
  18. package/dist/index.mjs +148 -100
  19. package/dist/index.mjs.map +1 -1
  20. package/dist/lib/algebraic_type.d.ts.map +1 -1
  21. package/dist/lib/binary_writer.d.ts +1 -0
  22. package/dist/lib/binary_writer.d.ts.map +1 -1
  23. package/dist/lib/indexes.d.ts +1 -1
  24. package/dist/lib/indexes.d.ts.map +1 -1
  25. package/dist/lib/query.d.ts +14 -7
  26. package/dist/lib/query.d.ts.map +1 -1
  27. package/dist/lib/schema.d.ts +2 -0
  28. package/dist/lib/schema.d.ts.map +1 -1
  29. package/dist/lib/table.d.ts +25 -2
  30. package/dist/lib/table.d.ts.map +1 -1
  31. package/dist/min/index.browser.mjs +1 -1
  32. package/dist/min/index.browser.mjs.map +1 -1
  33. package/dist/min/react/index.mjs +1 -1
  34. package/dist/min/react/index.mjs.map +1 -1
  35. package/dist/min/sdk/index.browser.mjs +1 -1
  36. package/dist/min/sdk/index.browser.mjs.map +1 -1
  37. package/dist/react/index.cjs +8 -1
  38. package/dist/react/index.cjs.map +1 -1
  39. package/dist/react/index.mjs +8 -1
  40. package/dist/react/index.mjs.map +1 -1
  41. package/dist/react/useTable.d.ts.map +1 -1
  42. package/dist/sdk/db_connection_impl.d.ts.map +1 -1
  43. package/dist/sdk/index.browser.mjs +144 -98
  44. package/dist/sdk/index.browser.mjs.map +1 -1
  45. package/dist/sdk/index.cjs +144 -98
  46. package/dist/sdk/index.cjs.map +1 -1
  47. package/dist/sdk/index.mjs +144 -98
  48. package/dist/sdk/index.mjs.map +1 -1
  49. package/dist/sdk/table_cache.d.ts.map +1 -1
  50. package/dist/sdk/websocket_decompress_adapter.d.ts +17 -7
  51. package/dist/sdk/websocket_decompress_adapter.d.ts.map +1 -1
  52. package/dist/sdk/websocket_test_adapter.d.ts +3 -2
  53. package/dist/sdk/websocket_test_adapter.d.ts.map +1 -1
  54. package/dist/server/index.d.ts +1 -0
  55. package/dist/server/index.d.ts.map +1 -1
  56. package/dist/server/index.mjs +88 -30
  57. package/dist/server/index.mjs.map +1 -1
  58. package/dist/svelte/index.cjs +5 -1
  59. package/dist/svelte/index.cjs.map +1 -1
  60. package/dist/svelte/index.mjs +5 -1
  61. package/dist/svelte/index.mjs.map +1 -1
  62. package/dist/tanstack/SpacetimeDBQueryClient.d.ts +1 -0
  63. package/dist/tanstack/SpacetimeDBQueryClient.d.ts.map +1 -1
  64. package/dist/tanstack/index.cjs +26 -1
  65. package/dist/tanstack/index.cjs.map +1 -1
  66. package/dist/tanstack/index.mjs +26 -1
  67. package/dist/tanstack/index.mjs.map +1 -1
  68. package/dist/vue/index.cjs +5 -1
  69. package/dist/vue/index.cjs.map +1 -1
  70. package/dist/vue/index.mjs +5 -1
  71. package/dist/vue/index.mjs.map +1 -1
  72. package/package.json +1 -1
  73. package/src/lib/algebraic_type.ts +5 -1
  74. package/src/lib/binary_writer.ts +4 -0
  75. package/src/lib/indexes.ts +1 -1
  76. package/src/lib/query.ts +90 -25
  77. package/src/lib/schema.ts +66 -24
  78. package/src/lib/table.ts +47 -10
  79. package/src/react/useTable.ts +5 -0
  80. package/src/sdk/db_connection_impl.ts +38 -43
  81. package/src/sdk/table_cache.ts +14 -11
  82. package/src/sdk/websocket_decompress_adapter.ts +42 -45
  83. package/src/sdk/websocket_test_adapter.ts +3 -2
  84. package/src/server/index.ts +1 -0
  85. package/src/server/runtime.ts +7 -3
  86. package/src/server/schema.test-d.ts +37 -0
  87. package/src/server/view.test-d.ts +6 -0
  88. package/src/tanstack/SpacetimeDBQueryClient.ts +24 -0
@@ -31,6 +31,7 @@ export declare class SpacetimeDBQueryClient {
31
31
  private getTableData;
32
32
  private setupSubscription;
33
33
  private processPendingQueries;
34
+ private hydrateSubscriptions;
34
35
  disconnect(): void;
35
36
  }
36
37
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"SpacetimeDBQueryClient.d.ts","sourceRoot":"","sources":["../../src/tanstack/SpacetimeDBQueryClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,QAAQ,EACR,aAAa,EACd,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,KAAK,KAAK,EAMX,MAAM,cAAc,CAAC;AAEtB,KAAK,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;AAO7B,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,8BACf,SAAQ,uBAAuB;IAC/B,OAAO,EAAE,KAAK,CAAC;CAChB;AAMD,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,GAClB,8BAA8B,CAAC;AAElC,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,uBAAuB,CAAC;AA0B7E,UAAU,mBAAmB;IAC3B,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACxB,mBAAmB,EAAE,MAAM;QACzB,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,GAAG,CAAC;QACnC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK;YAAE,WAAW,EAAE,MAAM,IAAI,CAAA;SAAE,CAAC;KAC3D,CAAC;CACH;AASD,qBAAa,sBAAsB;IACjC,OAAO,CAAC,UAAU,CAAoC;IACtD,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,aAAa,CAAwC;IAC7D,OAAO,CAAC,cAAc,CAOlB;IACJ,OAAO,CAAC,gBAAgB,CAA6B;IAGrD,aAAa,CAAC,UAAU,EAAE,mBAAmB,GAAG,IAAI;IAKpD,OAAO,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAoBvC,OAAO,EAAE,aAAa,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAoCrC;IAEF,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,iBAAiB;IAwFzB,OAAO,CAAC,qBAAqB;IAiC7B,UAAU,IAAI,IAAI;CAanB"}
1
+ {"version":3,"file":"SpacetimeDBQueryClient.d.ts","sourceRoot":"","sources":["../../src/tanstack/SpacetimeDBQueryClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,QAAQ,EACR,aAAa,EACd,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,KAAK,KAAK,EAMX,MAAM,cAAc,CAAC;AAEtB,KAAK,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;AAO7B,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,8BACf,SAAQ,uBAAuB;IAC/B,OAAO,EAAE,KAAK,CAAC;CAChB;AAMD,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,GAClB,8BAA8B,CAAC;AAElC,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,uBAAuB,CAAC;AA0B7E,UAAU,mBAAmB;IAC3B,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACxB,mBAAmB,EAAE,MAAM;QACzB,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,GAAG,CAAC;QACnC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK;YAAE,WAAW,EAAE,MAAM,IAAI,CAAA;SAAE,CAAC;KAC3D,CAAC;CACH;AASD,qBAAa,sBAAsB;IACjC,OAAO,CAAC,UAAU,CAAoC;IACtD,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,aAAa,CAAwC;IAC7D,OAAO,CAAC,cAAc,CAOlB;IACJ,OAAO,CAAC,gBAAgB,CAA6B;IAGrD,aAAa,CAAC,UAAU,EAAE,mBAAmB,GAAG,IAAI;IAMpD,OAAO,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAoBvC,OAAO,EAAE,aAAa,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAoCrC;IAEF,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,iBAAiB;IAwFzB,OAAO,CAAC,qBAAqB;IAiC7B,OAAO,CAAC,oBAAoB;IAuB5B,UAAU,IAAI,IAAI;CAanB"}
@@ -604,6 +604,9 @@ var BinaryWriter = class {
604
604
  constructor(init) {
605
605
  this.buffer = typeof init === "number" ? new ResizableBuffer(init) : init;
606
606
  }
607
+ clear() {
608
+ this.offset = 0;
609
+ }
607
610
  reset(buffer) {
608
611
  this.buffer = buffer;
609
612
  this.offset = 0;
@@ -1166,7 +1169,8 @@ writer.offset += ${primitiveSizes[tag]};` : `writer.write${tag}(value.${name});`
1166
1169
  const result = { ${ty.elements.map(getElementInitializer).join(", ")} };
1167
1170
  const view = reader.view;
1168
1171
  ${ty.elements.map(
1169
- ({ name, algebraicType: { tag } }) => tag in primitiveJSName ? `result.${name} = view.get${primitiveJSName[tag]}(reader.offset, ${primitiveSizes[tag] > 1 ? "true" : ""});
1172
+ ({ name, algebraicType: { tag } }) => tag in primitiveJSName ? tag === "Bool" ? `result.${name} = view.getUint8(reader.offset) !== 0;
1173
+ reader.offset += 1;` : `result.${name} = view.get${primitiveJSName[tag]}(reader.offset, ${primitiveSizes[tag] > 1 ? "true" : ""});
1170
1174
  reader.offset += ${primitiveSizes[tag]};` : `result.${name} = reader.read${tag}();`
1171
1175
  ).join("\n")}
1172
1176
  return result;`;
@@ -1517,6 +1521,7 @@ var SpacetimeDBQueryClient = class {
1517
1521
  setConnection(connection) {
1518
1522
  this.connection = connection;
1519
1523
  this.processPendingQueries();
1524
+ this.hydrateSubscriptions();
1520
1525
  }
1521
1526
  connect(queryClient) {
1522
1527
  this.queryClient = queryClient;
@@ -1658,6 +1663,26 @@ var SpacetimeDBQueryClient = class {
1658
1663
  }
1659
1664
  }
1660
1665
  }
1666
+ // subscribe to queries with SSR cached data but no active subscription
1667
+ hydrateSubscriptions() {
1668
+ if (!this.connection || !this.queryClient) {
1669
+ return;
1670
+ }
1671
+ for (const [querySql, { accessorName, whereExpr }] of queryRegistry) {
1672
+ const queryKey = ["spacetimedb", accessorName, querySql];
1673
+ const keyStr = JSON.stringify(queryKey);
1674
+ if (this.subscriptions.has(keyStr)) {
1675
+ continue;
1676
+ }
1677
+ if (this.queryClient.getQueryData(queryKey) === void 0) {
1678
+ continue;
1679
+ }
1680
+ this.setupSubscription(queryKey, accessorName, querySql, whereExpr).catch(
1681
+ () => {
1682
+ }
1683
+ );
1684
+ }
1685
+ }
1661
1686
  // clean up all subscriptions and disconnect
1662
1687
  disconnect() {
1663
1688
  if (this.cacheUnsubscribe) {