spacetimedb 2.0.4 → 2.2.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 (116) hide show
  1. package/LICENSE.txt +2 -2
  2. package/dist/angular/index.cjs +9 -3
  3. package/dist/angular/index.cjs.map +1 -1
  4. package/dist/angular/index.mjs +9 -3
  5. package/dist/angular/index.mjs.map +1 -1
  6. package/dist/browser/angular/index.mjs +9 -3
  7. package/dist/browser/angular/index.mjs.map +1 -1
  8. package/dist/browser/react/index.mjs +62 -7
  9. package/dist/browser/react/index.mjs.map +1 -1
  10. package/dist/browser/svelte/index.mjs +9 -3
  11. package/dist/browser/svelte/index.mjs.map +1 -1
  12. package/dist/browser/vue/index.mjs +9 -3
  13. package/dist/browser/vue/index.mjs.map +1 -1
  14. package/dist/index.browser.mjs +481 -146
  15. package/dist/index.browser.mjs.map +1 -1
  16. package/dist/index.cjs +481 -146
  17. package/dist/index.cjs.map +1 -1
  18. package/dist/index.mjs +481 -146
  19. package/dist/index.mjs.map +1 -1
  20. package/dist/lib/algebraic_type.d.ts.map +1 -1
  21. package/dist/lib/binary_reader.d.ts +1 -1
  22. package/dist/lib/binary_reader.d.ts.map +1 -1
  23. package/dist/lib/binary_writer.d.ts +2 -1
  24. package/dist/lib/binary_writer.d.ts.map +1 -1
  25. package/dist/lib/filter.d.ts +2 -1
  26. package/dist/lib/filter.d.ts.map +1 -1
  27. package/dist/lib/query.d.ts +10 -5
  28. package/dist/lib/query.d.ts.map +1 -1
  29. package/dist/lib/table.d.ts +12 -1
  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 +62 -6
  38. package/dist/react/index.cjs.map +1 -1
  39. package/dist/react/index.d.ts +1 -0
  40. package/dist/react/index.d.ts.map +1 -1
  41. package/dist/react/index.mjs +62 -7
  42. package/dist/react/index.mjs.map +1 -1
  43. package/dist/react/useProcedure.d.ts +4 -0
  44. package/dist/react/useProcedure.d.ts.map +1 -0
  45. package/dist/react/useTable.d.ts +2 -0
  46. package/dist/react/useTable.d.ts.map +1 -1
  47. package/dist/sdk/db_connection_builder.d.ts +3 -3
  48. package/dist/sdk/db_connection_builder.d.ts.map +1 -1
  49. package/dist/sdk/db_connection_impl.d.ts +3 -3
  50. package/dist/sdk/db_connection_impl.d.ts.map +1 -1
  51. package/dist/sdk/decompress.d.ts +1 -1
  52. package/dist/sdk/decompress.d.ts.map +1 -1
  53. package/dist/sdk/index.browser.mjs +477 -144
  54. package/dist/sdk/index.browser.mjs.map +1 -1
  55. package/dist/sdk/index.cjs +477 -144
  56. package/dist/sdk/index.cjs.map +1 -1
  57. package/dist/sdk/index.mjs +477 -144
  58. package/dist/sdk/index.mjs.map +1 -1
  59. package/dist/sdk/table_cache.d.ts +1 -0
  60. package/dist/sdk/table_cache.d.ts.map +1 -1
  61. package/dist/sdk/type_utils.d.ts +4 -1
  62. package/dist/sdk/type_utils.d.ts.map +1 -1
  63. package/dist/sdk/websocket_decompress_adapter.d.ts +5 -21
  64. package/dist/sdk/websocket_decompress_adapter.d.ts.map +1 -1
  65. package/dist/sdk/websocket_protocols.d.ts +6 -0
  66. package/dist/sdk/websocket_protocols.d.ts.map +1 -0
  67. package/dist/sdk/websocket_test_adapter.d.ts +14 -18
  68. package/dist/sdk/websocket_test_adapter.d.ts.map +1 -1
  69. package/dist/sdk/websocket_v3_frames.d.ts +9 -0
  70. package/dist/sdk/websocket_v3_frames.d.ts.map +1 -0
  71. package/dist/sdk/ws.d.ts +26 -1
  72. package/dist/sdk/ws.d.ts.map +1 -1
  73. package/dist/server/http_internal.d.ts.map +1 -1
  74. package/dist/server/index.d.ts +2 -1
  75. package/dist/server/index.d.ts.map +1 -1
  76. package/dist/server/index.mjs +76 -15
  77. package/dist/server/index.mjs.map +1 -1
  78. package/dist/server/runtime.d.ts +29 -2
  79. package/dist/server/runtime.d.ts.map +1 -1
  80. package/dist/svelte/index.cjs +9 -3
  81. package/dist/svelte/index.cjs.map +1 -1
  82. package/dist/svelte/index.mjs +9 -3
  83. package/dist/svelte/index.mjs.map +1 -1
  84. package/dist/tanstack/index.cjs +9 -3
  85. package/dist/tanstack/index.cjs.map +1 -1
  86. package/dist/tanstack/index.mjs +9 -3
  87. package/dist/tanstack/index.mjs.map +1 -1
  88. package/dist/vue/index.cjs +9 -3
  89. package/dist/vue/index.cjs.map +1 -1
  90. package/dist/vue/index.mjs +9 -3
  91. package/dist/vue/index.mjs.map +1 -1
  92. package/package.json +2 -2
  93. package/src/lib/algebraic_type.ts +5 -1
  94. package/src/lib/binary_reader.ts +5 -2
  95. package/src/lib/binary_writer.ts +7 -1
  96. package/src/lib/filter.ts +12 -1
  97. package/src/lib/query.ts +60 -19
  98. package/src/lib/table.ts +15 -2
  99. package/src/react/index.ts +1 -0
  100. package/src/react/useProcedure.ts +60 -0
  101. package/src/react/useTable.ts +22 -2
  102. package/src/sdk/db_connection_builder.ts +16 -7
  103. package/src/sdk/db_connection_impl.ts +404 -89
  104. package/src/sdk/decompress.ts +7 -23
  105. package/src/sdk/table_cache.ts +5 -5
  106. package/src/sdk/type_utils.ts +10 -1
  107. package/src/sdk/websocket_decompress_adapter.ts +15 -77
  108. package/src/sdk/websocket_protocols.ts +25 -0
  109. package/src/sdk/websocket_test_adapter.ts +65 -29
  110. package/src/sdk/websocket_v3_frames.ts +126 -0
  111. package/src/sdk/ws.ts +81 -3
  112. package/src/server/http_internal.ts +10 -1
  113. package/src/server/index.ts +2 -1
  114. package/src/server/runtime.ts +39 -1
  115. package/src/server/sys.d.ts +4 -0
  116. package/src/server/view.test-d.ts +4 -0
@@ -1,4 +1,5 @@
1
1
  import * as _syscalls2_0 from 'spacetime:sys@2.0';
2
+ import * as _syscalls2_1 from 'spacetime:sys@2.1';
2
3
 
3
4
  import type { ModuleHooks, u128, u16, u256, u32 } from 'spacetime:sys@2.0';
4
5
  import {
@@ -45,7 +46,7 @@ import type { SchemaInner } from './schema';
45
46
 
46
47
  const { freeze } = Object;
47
48
 
48
- export const sys = _syscalls2_0;
49
+ export const sys = { ..._syscalls2_0, ..._syscalls2_1 };
49
50
 
50
51
  export function parseJsonObject(json: string): JsonObject {
51
52
  let value: unknown;
@@ -508,6 +509,7 @@ function makeTableView(
508
509
  );
509
510
  return count > 0;
510
511
  },
512
+ clear: () => sys.datastore_clear(table_id),
511
513
  };
512
514
 
513
515
  const tableView = Object.assign(
@@ -667,9 +669,37 @@ function makeTableView(
667
669
  index = base as UniqueIndex<any, any>;
668
670
  } else if (serializeSinglePoint) {
669
671
  // numColumns == 1
672
+
673
+ const serializeSingleRange = !isHashIndex
674
+ ? (buffer: ResizableBuffer, range: Range<any>): IndexScanArgs => {
675
+ BINARY_WRITER.reset(buffer);
676
+ const writer = BINARY_WRITER;
677
+ const writeBound = (bound: Bound<any>) => {
678
+ const tags = { included: 0, excluded: 1, unbounded: 2 };
679
+ writer.writeU8(tags[bound.tag]);
680
+ if (bound.tag !== 'unbounded')
681
+ serializeSingleElement!(writer, bound.value);
682
+ };
683
+ writeBound(range.from);
684
+ const rstartLen = writer.offset;
685
+ writeBound(range.to);
686
+ const rendLen = writer.offset - rstartLen;
687
+ return [0, 0, rstartLen, rendLen];
688
+ }
689
+ : null;
690
+
670
691
  const rawIndex = {
671
692
  filter: (range: any): IteratorObject<RowType<any>> => {
672
693
  const buf = LEAF_BUF;
694
+ if (serializeSingleRange && range instanceof Range) {
695
+ const args = serializeSingleRange(buf, range);
696
+ const iter_id = sys.datastore_index_scan_range_bsatn(
697
+ index_id,
698
+ buf.buffer,
699
+ ...args
700
+ );
701
+ return tableIterator(iter_id, deserializeRow);
702
+ }
673
703
  const point_len = serializeSinglePoint(buf, range);
674
704
  const iter_id = sys.datastore_index_scan_point_bsatn(
675
705
  index_id,
@@ -680,6 +710,14 @@ function makeTableView(
680
710
  },
681
711
  delete: (range: any): u32 => {
682
712
  const buf = LEAF_BUF;
713
+ if (serializeSingleRange && range instanceof Range) {
714
+ const args = serializeSingleRange(buf, range);
715
+ return sys.datastore_delete_by_index_scan_range_bsatn(
716
+ index_id,
717
+ buf.buffer,
718
+ ...args
719
+ );
720
+ }
683
721
  const point_len = serializeSinglePoint(buf, range);
684
722
  return sys.datastore_delete_by_index_scan_point_bsatn(
685
723
  index_id,
@@ -112,3 +112,7 @@ declare module 'spacetime:sys@2.0' {
112
112
  point_len: u32
113
113
  ): u32;
114
114
  }
115
+
116
+ declare module 'spacetime:sys@2.1' {
117
+ export function datastore_clear(table_id: u32): u64;
118
+ }
@@ -161,6 +161,10 @@ spacetime.anonymousView({ name: 'v5', public: true }, arrayRetValue, ctx => {
161
161
  .where(row => row.id.eq(5))
162
162
  .leftSemijoin(ctx.from.order, (p, o) => p.name.eq(o.person_name))
163
163
  .build();
164
+ const _mixedScopeAndInJoinPredicate = ctx.from.person
165
+ // @ts-expect-error semijoin on(...) only supports one table scope for and/or clauses.
166
+ .leftSemijoin(ctx.from.order, (p, o) => p.id.eq(o.id).and(o.id.eq(5)))
167
+ .build();
164
168
  return ctx.from.person
165
169
  .where(row => row.id.eq(5))
166
170
  .leftSemijoin(ctx.from.order, (p, o) => p.id.eq(o.id))