@soulbatical/tetra-core 0.1.37 → 0.1.38

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.
@@ -4,9 +4,6 @@
4
4
  * Wraps a SupabaseClient so that every insert/update/upsert/delete on .from()
5
5
  * also fires a fire-and-forget RPC to the Stella daemon's RuVectorStore.
6
6
  *
7
- * The proxy is transparent: it returns the same SupabaseClient interface,
8
- * same return types, same behavior. RuVector sync failures are silently logged.
9
- *
10
7
  * Activation: set DUAL_WRITE=1 or STELLA_STORES=supabase,ruvector
11
8
  */
12
9
  import type { SupabaseClient } from '@supabase/supabase-js';
@@ -1 +1 @@
1
- {"version":3,"file":"dualWriteProxy.d.ts","sourceRoot":"","sources":["../../src/core/dualWriteProxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAoM3D,wBAAgB,kBAAkB,IAAI,OAAO,CAI5C;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CASpE"}
1
+ {"version":3,"file":"dualWriteProxy.d.ts","sourceRoot":"","sources":["../../src/core/dualWriteProxy.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AA+R3D,wBAAgB,kBAAkB,IAAI,OAAO,CAI5C;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CASpE"}
@@ -4,9 +4,6 @@
4
4
  * Wraps a SupabaseClient so that every insert/update/upsert/delete on .from()
5
5
  * also fires a fire-and-forget RPC to the Stella daemon's RuVectorStore.
6
6
  *
7
- * The proxy is transparent: it returns the same SupabaseClient interface,
8
- * same return types, same behavior. RuVector sync failures are silently logged.
9
- *
10
7
  * Activation: set DUAL_WRITE=1 or STELLA_STORES=supabase,ruvector
11
8
  */
12
9
  import { connect } from 'node:net';
@@ -49,7 +46,6 @@ function connectDaemon() {
49
46
  });
50
47
  });
51
48
  }
52
- /** Fire-and-forget RPC to daemon. Never throws, never blocks. */
53
49
  function daemonRpc(method, params) {
54
50
  connectDaemon().then(() => {
55
51
  if (!daemonSocket || !daemonConnected)
@@ -64,129 +60,197 @@ function daemonRpc(method, params) {
64
60
  }
65
61
  }).catch(() => { });
66
62
  }
67
- // ─── Proxy ──────────────────────────────────────────────────
68
- /**
69
- * Strategy: intercept .from(table) and on the returned query builder,
70
- * wrap insert/update/upsert/delete so that after the Supabase call resolves
71
- * we fire-and-forget the same data to the daemon.
72
- *
73
- * We do this by monkey-patching the write methods to attach a post-resolve
74
- * side-effect. The original chain is untouched — we just read the args.
75
- */
76
- function proxyQueryBuilder(original, table) {
77
- return new Proxy(original, {
78
- get(target, prop) {
79
- const value = target[prop];
80
- if (prop === 'insert' && typeof value === 'function') {
81
- return function (data, options) {
82
- const builder = value.call(target, data, options);
83
- // Attach side-effect: after this entire chain resolves, mirror to daemon
84
- attachMirror(builder, () => {
85
- if (Array.isArray(data)) {
86
- daemonRpc('store.seed', { table, records: data });
87
- }
88
- else if (data) {
89
- daemonRpc('store.insert', { table, record: data });
90
- }
91
- });
92
- return builder;
93
- };
94
- }
95
- if (prop === 'upsert' && typeof value === 'function') {
96
- return function (data, options) {
97
- const builder = value.call(target, data, options);
98
- attachMirror(builder, () => {
99
- const onConflict = options?.onConflict || 'id';
100
- if (Array.isArray(data)) {
101
- for (const record of data) {
102
- daemonRpc('store.upsert', { table, record, onConflict });
103
- }
104
- }
105
- else if (data) {
106
- daemonRpc('store.upsert', { table, record: data, onConflict });
107
- }
108
- });
109
- return builder;
110
- };
111
- }
112
- if (prop === 'update' && typeof value === 'function') {
113
- return function (data, options) {
114
- const builder = value.call(target, data, options);
115
- // For update we need the filter chain — we'll capture it from the URL later
116
- attachMirrorWithFilters(builder, table, 'update', data);
117
- return builder;
118
- };
119
- }
120
- if (prop === 'delete' && typeof value === 'function') {
121
- return function (options) {
122
- const builder = value.call(target, options);
123
- attachMirrorWithFilters(builder, table, 'delete', null);
124
- return builder;
125
- };
126
- }
127
- if (typeof value === 'function')
128
- return value.bind(target);
129
- return value;
63
+ // ─── Mirror logic ───────────────────────────────────────────
64
+ function mirrorInsert(table, data) {
65
+ if (Array.isArray(data)) {
66
+ daemonRpc('store.seed', { table, records: data });
67
+ }
68
+ else if (data) {
69
+ daemonRpc('store.insert', { table, record: data });
70
+ }
71
+ }
72
+ function mirrorUpsert(table, data, onConflict) {
73
+ if (Array.isArray(data)) {
74
+ for (const record of data) {
75
+ daemonRpc('store.upsert', { table, record, onConflict });
130
76
  }
131
- });
77
+ }
78
+ else if (data) {
79
+ daemonRpc('store.upsert', { table, record: data, onConflict });
80
+ }
81
+ }
82
+ function mirrorUpdate(table, changes, filters) {
83
+ if (filters.length && changes) {
84
+ daemonRpc('store.update', { table, filters, changes });
85
+ }
86
+ }
87
+ function mirrorDelete(table, filters) {
88
+ if (filters.length) {
89
+ daemonRpc('store.delete', { table, filters });
90
+ }
91
+ }
92
+ class DualWriteQueryBuilder {
93
+ original;
94
+ table;
95
+ constructor(original, table) {
96
+ this.original = original;
97
+ this.table = table;
98
+ }
99
+ // ─── Write methods with dual-write ───
100
+ insert(data, options) {
101
+ const result = this.original.insert(data, options);
102
+ return this.wrapResult(result, () => mirrorInsert(this.table, data));
103
+ }
104
+ upsert(data, options) {
105
+ const result = this.original.upsert(data, options);
106
+ const onConflict = options?.onConflict || 'id';
107
+ return this.wrapResult(result, () => mirrorUpsert(this.table, data, onConflict));
108
+ }
109
+ update(changes, options) {
110
+ const result = this.original.update(changes, options);
111
+ return this.wrapFilteredResult(result, (filters) => mirrorUpdate(this.table, changes, filters));
112
+ }
113
+ delete(options) {
114
+ const result = this.original.delete(options);
115
+ return this.wrapFilteredResult(result, (filters) => mirrorDelete(this.table, filters));
116
+ }
117
+ // ─── Read methods (pass-through) ───
118
+ select(...args) { return this.original.select(...args); }
119
+ // ─── Wrap a write result to trigger mirror on success ───
120
+ wrapResult(builder, onSuccess) {
121
+ return new DualWriteResultBuilder(builder, onSuccess);
122
+ }
123
+ wrapFilteredResult(builder, onSuccess) {
124
+ return new DualWriteFilterBuilder(builder, onSuccess);
125
+ }
132
126
  }
133
127
  /**
134
- * Attach a post-resolve side-effect to a PostgREST builder.
135
- * Patches the internal fetch so we can run our callback after success.
128
+ * Wraps a PostgREST result builder (after insert/upsert).
129
+ * Intercepts await/.then() to trigger the daemon mirror on success.
136
130
  */
137
- function attachMirror(builder, onSuccess) {
138
- // PostgREST builders use .then() — they're thenables.
139
- // We patch .then on the builder prototype chain to inject our callback.
140
- const originalThen = builder.then;
141
- if (typeof originalThen !== 'function')
142
- return;
143
- // We need to intercept regardless of how deep the chain goes.
144
- // The trick: override .then on THIS specific instance.
145
- const origProto = Object.getPrototypeOf(builder);
146
- const patchedThen = function (onFulfilled, onRejected) {
147
- return originalThen.call(this, (result) => {
148
- // Restore original .then to avoid re-triggering
149
- if (Object.getPrototypeOf(this) !== origProto) {
150
- Object.setPrototypeOf(this, origProto);
151
- }
152
- // Only mirror on success
131
+ class DualWriteResultBuilder {
132
+ builder;
133
+ onSuccess;
134
+ constructor(builder, onSuccess) {
135
+ this.builder = builder;
136
+ this.onSuccess = onSuccess;
137
+ }
138
+ // Chain methods delegate to original, keep wrapping
139
+ select(...args) {
140
+ this.builder = this.builder.select(...args);
141
+ return this;
142
+ }
143
+ single() {
144
+ this.builder = this.builder.single();
145
+ return this;
146
+ }
147
+ maybeSingle() {
148
+ this.builder = this.builder.maybeSingle();
149
+ return this;
150
+ }
151
+ order(...args) {
152
+ this.builder = this.builder.order(...args);
153
+ return this;
154
+ }
155
+ limit(...args) {
156
+ this.builder = this.builder.limit(...args);
157
+ return this;
158
+ }
159
+ eq(...args) {
160
+ this.builder = this.builder.eq(...args);
161
+ return this;
162
+ }
163
+ // Thenable — this is what await calls
164
+ then(onFulfilled, onRejected) {
165
+ return this.builder.then((result) => {
153
166
  if (!result?.error) {
154
167
  try {
155
- onSuccess();
168
+ this.onSuccess();
156
169
  }
157
170
  catch { /* never fail */ }
158
171
  }
159
172
  return onFulfilled ? onFulfilled(result) : result;
160
173
  }, onRejected);
161
- };
162
- // Override .then on the instance
163
- builder.then = patchedThen;
174
+ }
164
175
  }
165
176
  /**
166
- * For update/delete: capture .eq() filter calls to build the daemon filter list.
177
+ * Wraps update/delete result builders. Captures .eq() filter calls
178
+ * to pass to the daemon mirror.
167
179
  */
168
- function attachMirrorWithFilters(builder, table, op, changes) {
169
- const filters = [];
170
- // Patch common filter methods to capture their args
171
- for (const method of ['eq', 'neq', 'gt', 'gte', 'lt', 'lte', 'in', 'is']) {
172
- const orig = builder[method];
173
- if (typeof orig === 'function') {
174
- builder[method] = function (column, val) {
175
- filters.push({ column, op: method, value: val });
176
- return orig.call(this, column, val);
177
- };
178
- }
180
+ class DualWriteFilterBuilder {
181
+ builder;
182
+ onSuccess;
183
+ filters = [];
184
+ constructor(builder, onSuccess) {
185
+ this.builder = builder;
186
+ this.onSuccess = onSuccess;
187
+ }
188
+ // Filter methods — capture and delegate
189
+ eq(column, value) {
190
+ this.filters.push({ column, op: 'eq', value });
191
+ this.builder = this.builder.eq(column, value);
192
+ return this;
193
+ }
194
+ neq(column, value) {
195
+ this.filters.push({ column, op: 'neq', value });
196
+ this.builder = this.builder.neq(column, value);
197
+ return this;
198
+ }
199
+ gt(column, value) {
200
+ this.filters.push({ column, op: 'gt', value });
201
+ this.builder = this.builder.gt(column, value);
202
+ return this;
203
+ }
204
+ gte(column, value) {
205
+ this.filters.push({ column, op: 'gte', value });
206
+ this.builder = this.builder.gte(column, value);
207
+ return this;
208
+ }
209
+ lt(column, value) {
210
+ this.filters.push({ column, op: 'lt', value });
211
+ this.builder = this.builder.lt(column, value);
212
+ return this;
213
+ }
214
+ lte(column, value) {
215
+ this.filters.push({ column, op: 'lte', value });
216
+ this.builder = this.builder.lte(column, value);
217
+ return this;
218
+ }
219
+ in(column, values) {
220
+ this.filters.push({ column, op: 'in', value: values });
221
+ this.builder = this.builder.in(column, values);
222
+ return this;
223
+ }
224
+ is(column, value) {
225
+ this.filters.push({ column, op: 'is', value });
226
+ this.builder = this.builder.is(column, value);
227
+ return this;
228
+ }
229
+ // Chain methods
230
+ select(...args) {
231
+ this.builder = this.builder.select(...args);
232
+ return this;
233
+ }
234
+ single() {
235
+ this.builder = this.builder.single();
236
+ return this;
237
+ }
238
+ maybeSingle() {
239
+ this.builder = this.builder.maybeSingle();
240
+ return this;
241
+ }
242
+ // Thenable
243
+ then(onFulfilled, onRejected) {
244
+ return this.builder.then((result) => {
245
+ if (!result?.error) {
246
+ try {
247
+ this.onSuccess(this.filters);
248
+ }
249
+ catch { /* never fail */ }
250
+ }
251
+ return onFulfilled ? onFulfilled(result) : result;
252
+ }, onRejected);
179
253
  }
180
- attachMirror(builder, () => {
181
- if (filters.length === 0)
182
- return; // No filters = unsafe, skip
183
- if (op === 'update' && changes) {
184
- daemonRpc('store.update', { table, filters, changes });
185
- }
186
- else if (op === 'delete') {
187
- daemonRpc('store.delete', { table, filters });
188
- }
189
- });
190
254
  }
191
255
  // ─── Public API ─────────────────────────────────────────────
192
256
  export function isDualWriteEnabled() {
@@ -199,7 +263,7 @@ export function withDualWrite(client) {
199
263
  const originalFrom = client.from.bind(client);
200
264
  client.from = function proxiedFrom(table) {
201
265
  const queryBuilder = originalFrom(table);
202
- return proxyQueryBuilder(queryBuilder, table);
266
+ return new DualWriteQueryBuilder(queryBuilder, table);
203
267
  };
204
268
  return client;
205
269
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dualWriteProxy.js","sourceRoot":"","sources":["../../src/core/dualWriteProxy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dualWriteProxy.js","sourceRoot":"","sources":["../../src/core/dualWriteProxy.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@soulbatical/tetra-core",
3
- "version": "0.1.37",
3
+ "version": "0.1.38",
4
4
  "publishConfig": {
5
5
  "access": "restricted"
6
6
  },