spacetimedb 2.0.2 → 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.
Files changed (95) hide show
  1. package/LICENSE.txt +2 -2
  2. package/dist/angular/index.cjs +3 -0
  3. package/dist/angular/index.cjs.map +1 -1
  4. package/dist/angular/index.mjs +3 -0
  5. package/dist/angular/index.mjs.map +1 -1
  6. package/dist/browser/angular/index.mjs +3 -0
  7. package/dist/browser/angular/index.mjs.map +1 -1
  8. package/dist/browser/react/index.mjs +6 -0
  9. package/dist/browser/react/index.mjs.map +1 -1
  10. package/dist/browser/svelte/index.mjs +3 -0
  11. package/dist/browser/svelte/index.mjs.map +1 -1
  12. package/dist/browser/vue/index.mjs +3 -0
  13. package/dist/browser/vue/index.mjs.map +1 -1
  14. package/dist/index.browser.mjs +133 -100
  15. package/dist/index.browser.mjs.map +1 -1
  16. package/dist/index.cjs +133 -100
  17. package/dist/index.cjs.map +1 -1
  18. package/dist/index.mjs +133 -100
  19. package/dist/index.mjs.map +1 -1
  20. package/dist/lib/binary_writer.d.ts +1 -0
  21. package/dist/lib/binary_writer.d.ts.map +1 -1
  22. package/dist/lib/indexes.d.ts +1 -1
  23. package/dist/lib/indexes.d.ts.map +1 -1
  24. package/dist/lib/query.d.ts +4 -2
  25. package/dist/lib/query.d.ts.map +1 -1
  26. package/dist/lib/schema.d.ts +2 -0
  27. package/dist/lib/schema.d.ts.map +1 -1
  28. package/dist/lib/table.d.ts +19 -1
  29. package/dist/lib/table.d.ts.map +1 -1
  30. package/dist/lib/util.d.ts +11 -11
  31. package/dist/lib/util.d.ts.map +1 -1
  32. package/dist/min/index.browser.mjs +1 -1
  33. package/dist/min/index.browser.mjs.map +1 -1
  34. package/dist/min/react/index.mjs +1 -1
  35. package/dist/min/react/index.mjs.map +1 -1
  36. package/dist/min/sdk/index.browser.mjs +1 -1
  37. package/dist/min/sdk/index.browser.mjs.map +1 -1
  38. package/dist/react/index.cjs +6 -0
  39. package/dist/react/index.cjs.map +1 -1
  40. package/dist/react/index.mjs +6 -0
  41. package/dist/react/index.mjs.map +1 -1
  42. package/dist/react/useTable.d.ts.map +1 -1
  43. package/dist/sdk/db_connection_impl.d.ts.map +1 -1
  44. package/dist/sdk/index.browser.mjs +133 -100
  45. package/dist/sdk/index.browser.mjs.map +1 -1
  46. package/dist/sdk/index.cjs +133 -100
  47. package/dist/sdk/index.cjs.map +1 -1
  48. package/dist/sdk/index.mjs +133 -100
  49. package/dist/sdk/index.mjs.map +1 -1
  50. package/dist/sdk/procedures.d.ts +1 -1
  51. package/dist/sdk/procedures.d.ts.map +1 -1
  52. package/dist/sdk/reducers.d.ts +2 -3
  53. package/dist/sdk/reducers.d.ts.map +1 -1
  54. package/dist/sdk/table_cache.d.ts.map +1 -1
  55. package/dist/sdk/websocket_decompress_adapter.d.ts +17 -7
  56. package/dist/sdk/websocket_decompress_adapter.d.ts.map +1 -1
  57. package/dist/sdk/websocket_test_adapter.d.ts +3 -2
  58. package/dist/sdk/websocket_test_adapter.d.ts.map +1 -1
  59. package/dist/server/index.mjs +72 -29
  60. package/dist/server/index.mjs.map +1 -1
  61. package/dist/svelte/index.cjs +3 -0
  62. package/dist/svelte/index.cjs.map +1 -1
  63. package/dist/svelte/index.mjs +3 -0
  64. package/dist/svelte/index.mjs.map +1 -1
  65. package/dist/tanstack/SpacetimeDBQueryClient.d.ts +3 -3
  66. package/dist/tanstack/SpacetimeDBQueryClient.d.ts.map +1 -1
  67. package/dist/tanstack/hooks.d.ts +3 -6
  68. package/dist/tanstack/hooks.d.ts.map +1 -1
  69. package/dist/tanstack/index.cjs +28 -1
  70. package/dist/tanstack/index.cjs.map +1 -1
  71. package/dist/tanstack/index.mjs +28 -1
  72. package/dist/tanstack/index.mjs.map +1 -1
  73. package/dist/vue/index.cjs +3 -0
  74. package/dist/vue/index.cjs.map +1 -1
  75. package/dist/vue/index.mjs +3 -0
  76. package/dist/vue/index.mjs.map +1 -1
  77. package/package.json +1 -1
  78. package/src/lib/binary_writer.ts +4 -0
  79. package/src/lib/indexes.ts +1 -1
  80. package/src/lib/query.ts +30 -6
  81. package/src/lib/schema.ts +66 -24
  82. package/src/lib/table.ts +41 -9
  83. package/src/lib/util.ts +18 -21
  84. package/src/react/useTable.ts +7 -0
  85. package/src/sdk/db_connection_impl.ts +38 -43
  86. package/src/sdk/procedures.ts +1 -3
  87. package/src/sdk/reducers.ts +5 -7
  88. package/src/sdk/table_cache.ts +14 -11
  89. package/src/sdk/websocket_decompress_adapter.ts +42 -45
  90. package/src/sdk/websocket_test_adapter.ts +3 -2
  91. package/src/server/runtime.ts +7 -3
  92. package/src/server/schema.test-d.ts +37 -0
  93. package/src/server/view.test-d.ts +2 -0
  94. package/src/tanstack/SpacetimeDBQueryClient.ts +28 -2
  95. package/src/tanstack/hooks.ts +3 -2
@@ -1,7 +1,6 @@
1
1
  import type { QueryClient, QueryKey, QueryFunction } from '@tanstack/react-query';
2
- type QueryInput = {
3
- toSql(): string;
4
- } & Record<string, any>;
2
+ import { type Query } from '../lib/query';
3
+ type QueryInput = Query<any>;
5
4
  export interface SpacetimeDBQueryOptions {
6
5
  queryKey: readonly ['spacetimedb', string, string];
7
6
  staleTime: number;
@@ -32,6 +31,7 @@ export declare class SpacetimeDBQueryClient {
32
31
  private getTableData;
33
32
  private setupSubscription;
34
33
  private processPendingQueries;
34
+ private hydrateSubscriptions;
35
35
  disconnect(): void;
36
36
  }
37
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;AAQ/B,KAAK,UAAU,GAAG;IAAE,KAAK,IAAI,MAAM,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAO5D,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"}
@@ -1,5 +1,6 @@
1
1
  import type { UseQueryOptions, UseQueryResult, UseSuspenseQueryOptions, UseSuspenseQueryResult } from '@tanstack/react-query';
2
2
  import type { UntypedTableDef, RowType } from '../lib/table';
3
+ import type { Query } from '../lib/query';
3
4
  export type UseSpacetimeDBQueryResult<T> = [
4
5
  T[],
5
6
  boolean,
@@ -10,10 +11,6 @@ export type UseSpacetimeDBSuspenseQueryResult<T> = [
10
11
  false,
11
12
  UseSuspenseQueryResult<T[], Error>
12
13
  ];
13
- export declare function useSpacetimeDBQuery<TableDef extends UntypedTableDef>(queryOrSkip: ({
14
- toSql(): string;
15
- } & Record<string, any>) | 'skip', options?: Omit<UseQueryOptions<RowType<TableDef>[], Error, RowType<TableDef>[], readonly ['spacetimedb', string, string]>, 'queryKey' | 'queryFn' | 'meta'>): UseSpacetimeDBQueryResult<RowType<TableDef>>;
16
- export declare function useSpacetimeDBSuspenseQuery<TableDef extends UntypedTableDef>(query: {
17
- toSql(): string;
18
- } & Record<string, any>, options?: Omit<UseSuspenseQueryOptions<RowType<TableDef>[], Error, RowType<TableDef>[], readonly ['spacetimedb', string, string]>, 'queryKey' | 'queryFn' | 'meta'>): UseSpacetimeDBSuspenseQueryResult<RowType<TableDef>>;
14
+ export declare function useSpacetimeDBQuery<TableDef extends UntypedTableDef>(queryOrSkip: Query<TableDef> | 'skip', options?: Omit<UseQueryOptions<RowType<TableDef>[], Error, RowType<TableDef>[], readonly ['spacetimedb', string, string]>, 'queryKey' | 'queryFn' | 'meta'>): UseSpacetimeDBQueryResult<RowType<TableDef>>;
15
+ export declare function useSpacetimeDBSuspenseQuery<TableDef extends UntypedTableDef>(query: Query<TableDef>, options?: Omit<UseSuspenseQueryOptions<RowType<TableDef>[], Error, RowType<TableDef>[], readonly ['spacetimedb', string, string]>, 'queryKey' | 'queryFn' | 'meta'>): UseSpacetimeDBSuspenseQueryResult<RowType<TableDef>>;
19
16
  //# sourceMappingURL=hooks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/tanstack/hooks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,uBAAuB,EACvB,sBAAsB,EACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG7D,MAAM,MAAM,yBAAyB,CAAC,CAAC,IAAI;IACzC,CAAC,EAAE;IACH,OAAO;IACP,cAAc,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,iCAAiC,CAAC,CAAC,IAAI;IACjD,CAAC,EAAE;IACH,KAAK;IACL,sBAAsB,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC;CACnC,CAAC;AAUF,wBAAgB,mBAAmB,CAAC,QAAQ,SAAS,eAAe,EAClE,WAAW,EAAE,CAAC;IAAE,KAAK,IAAI,MAAM,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,EAGjE,OAAO,CAAC,EAAE,IAAI,CACZ,eAAe,CACb,OAAO,CAAC,QAAQ,CAAC,EAAE,EACnB,KAAK,EACL,OAAO,CAAC,QAAQ,CAAC,EAAE,EACnB,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,CACzC,EACD,UAAU,GAAG,SAAS,GAAG,MAAM,CAChC,GACA,yBAAyB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAY9C;AAMD,wBAAgB,2BAA2B,CAAC,QAAQ,SAAS,eAAe,EAC1E,KAAK,EAAE;IAAE,KAAK,IAAI,MAAM,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAChD,OAAO,CAAC,EAAE,IAAI,CACZ,uBAAuB,CACrB,OAAO,CAAC,QAAQ,CAAC,EAAE,EACnB,KAAK,EACL,OAAO,CAAC,QAAQ,CAAC,EAAE,EACnB,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,CACzC,EACD,UAAU,GAAG,SAAS,GAAG,MAAM,CAChC,GACA,iCAAiC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAStD"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/tanstack/hooks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,uBAAuB,EACvB,sBAAsB,EACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAG1C,MAAM,MAAM,yBAAyB,CAAC,CAAC,IAAI;IACzC,CAAC,EAAE;IACH,OAAO;IACP,cAAc,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,iCAAiC,CAAC,CAAC,IAAI;IACjD,CAAC,EAAE;IACH,KAAK;IACL,sBAAsB,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC;CACnC,CAAC;AAUF,wBAAgB,mBAAmB,CAAC,QAAQ,SAAS,eAAe,EAClE,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,MAAM,EAGrC,OAAO,CAAC,EAAE,IAAI,CACZ,eAAe,CACb,OAAO,CAAC,QAAQ,CAAC,EAAE,EACnB,KAAK,EACL,OAAO,CAAC,QAAQ,CAAC,EAAE,EACnB,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,CACzC,EACD,UAAU,GAAG,SAAS,GAAG,MAAM,CAChC,GACA,yBAAyB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAY9C;AAMD,wBAAgB,2BAA2B,CAAC,QAAQ,SAAS,eAAe,EAC1E,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,EACtB,OAAO,CAAC,EAAE,IAAI,CACZ,uBAAuB,CACrB,OAAO,CAAC,QAAQ,CAAC,EAAE,EACnB,KAAK,EACL,OAAO,CAAC,QAAQ,CAAC,EAAE,EACnB,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,CACzC,EACD,UAAU,GAAG,SAAS,GAAG,MAAM,CAChC,GACA,iCAAiC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAStD"}
@@ -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;
@@ -1421,6 +1424,9 @@ var ConnectionId = class _ConnectionId {
1421
1424
  }
1422
1425
  }
1423
1426
  };
1427
+ function toSql(q) {
1428
+ return q.toSql();
1429
+ }
1424
1430
  function isLiteralExpr(expr) {
1425
1431
  return expr.type === "literal";
1426
1432
  }
@@ -1497,7 +1503,7 @@ function spacetimeDBQuery(queryOrSkip) {
1497
1503
  const query = queryOrSkip;
1498
1504
  const accessorName = getQueryAccessorName(query);
1499
1505
  const whereExpr = getQueryWhereClause(query);
1500
- const querySql = query.toSql();
1506
+ const querySql = toSql(query);
1501
1507
  queryRegistry.set(querySql, { accessorName, whereExpr });
1502
1508
  return {
1503
1509
  queryKey: ["spacetimedb", accessorName, querySql],
@@ -1514,6 +1520,7 @@ var SpacetimeDBQueryClient = class {
1514
1520
  setConnection(connection) {
1515
1521
  this.connection = connection;
1516
1522
  this.processPendingQueries();
1523
+ this.hydrateSubscriptions();
1517
1524
  }
1518
1525
  connect(queryClient) {
1519
1526
  this.queryClient = queryClient;
@@ -1655,6 +1662,26 @@ var SpacetimeDBQueryClient = class {
1655
1662
  }
1656
1663
  }
1657
1664
  }
1665
+ // subscribe to queries with SSR cached data but no active subscription
1666
+ hydrateSubscriptions() {
1667
+ if (!this.connection || !this.queryClient) {
1668
+ return;
1669
+ }
1670
+ for (const [querySql, { accessorName, whereExpr }] of queryRegistry) {
1671
+ const queryKey = ["spacetimedb", accessorName, querySql];
1672
+ const keyStr = JSON.stringify(queryKey);
1673
+ if (this.subscriptions.has(keyStr)) {
1674
+ continue;
1675
+ }
1676
+ if (this.queryClient.getQueryData(queryKey) === void 0) {
1677
+ continue;
1678
+ }
1679
+ this.setupSubscription(queryKey, accessorName, querySql, whereExpr).catch(
1680
+ () => {
1681
+ }
1682
+ );
1683
+ }
1684
+ }
1658
1685
  // clean up all subscriptions and disconnect
1659
1686
  disconnect() {
1660
1687
  if (this.cacheUnsubscribe) {