@ai-matrx/records 0.84.3 → 0.84.5

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.
@@ -183,6 +183,7 @@ __export(core_exports, {
183
183
  isPersonStamp: () => isPersonStamp,
184
184
  isPortalAccent: () => isPortalAccent,
185
185
  isPortalArchiveFilter: () => isPortalArchiveFilter,
186
+ isRecordRemoved: () => isRecordRemoved,
186
187
  isRecordsErr: () => isRecordsErr,
187
188
  isRuleFilter: () => isRuleFilter,
188
189
  isShownTo: () => isShownTo,
@@ -196,6 +197,8 @@ __export(core_exports, {
196
197
  localeDateOrder: () => localeDateOrder,
197
198
  looksLikeAnId: () => looksLikeAnId,
198
199
  mapPgError: () => mapPgError,
200
+ markRecordRemoved: () => markRecordRemoved,
201
+ markRecordRestored: () => markRecordRestored,
199
202
  mayDrag: () => mayDrag,
200
203
  measureKey: () => measureKey,
201
204
  memoryStore: () => memoryStore,
@@ -5222,6 +5225,16 @@ function announceRecordChanged(recordId) {
5222
5225
  }
5223
5226
  }
5224
5227
  }
5228
+ var removed = /* @__PURE__ */ new Set();
5229
+ function markRecordRemoved(recordId) {
5230
+ removed.add(recordId);
5231
+ }
5232
+ function markRecordRestored(recordId) {
5233
+ removed.delete(recordId);
5234
+ }
5235
+ function isRecordRemoved(recordId) {
5236
+ return removed.has(recordId);
5237
+ }
5225
5238
  function onRecordChanged(listener) {
5226
5239
  listeners.add(listener);
5227
5240
  return () => listeners.delete(listener);
@@ -6293,6 +6306,7 @@ function createRecordsClient(given) {
6293
6306
  }
6294
6307
  return takePrimedDoorAnswer(`${door}|${canonicalArgs(args)}`);
6295
6308
  }
6309
+ const readsInFlight = /* @__PURE__ */ new Map();
6296
6310
  async function callDoor(door, args, where) {
6297
6311
  const primed = primedFor(door, args);
6298
6312
  if (primed) return ok(primed.data);
@@ -6303,7 +6317,19 @@ function createRecordsClient(given) {
6303
6317
  scream({ code: refusal.code, message: refusal.message, ...refusal.hint ? { hint: refusal.hint } : {}, where });
6304
6318
  return err(refusal);
6305
6319
  }
6306
- const response = await config.dataSource.rpc(`${door}`, args, { schema });
6320
+ const flightKey = isWritingDoor(door) ? null : `${door}|${canonicalArgs(args)}`;
6321
+ const flying = flightKey ? readsInFlight.get(flightKey) : void 0;
6322
+ const response = await (flying ?? (() => {
6323
+ const call = Promise.resolve(config.dataSource.rpc(`${door}`, args, { schema }));
6324
+ if (flightKey) {
6325
+ readsInFlight.set(flightKey, call);
6326
+ const forget = () => {
6327
+ if (readsInFlight.get(flightKey) === call) readsInFlight.delete(flightKey);
6328
+ };
6329
+ call.then(forget, forget);
6330
+ }
6331
+ return call;
6332
+ })());
6307
6333
  if (response.error) {
6308
6334
  const refusal = mapPgError(response.error, where);
6309
6335
  scream({ code: refusal.code, message: refusal.message, ...refusal.hint ? { hint: refusal.hint } : {}, where });
@@ -6613,7 +6639,10 @@ function createRecordsClient(given) {
6613
6639
  { p_organization_id: org, p_record_id: record_id },
6614
6640
  "recordDelete"
6615
6641
  );
6616
- if (result.ok) announceRecordChanged(record_id);
6642
+ if (result.ok) {
6643
+ markRecordRemoved(record_id);
6644
+ announceRecordChanged(record_id);
6645
+ }
6617
6646
  return result;
6618
6647
  },
6619
6648
  async recordRestore({ record_id }) {
@@ -6622,7 +6651,10 @@ function createRecordsClient(given) {
6622
6651
  { p_organization_id: org, p_record_id: record_id },
6623
6652
  "recordRestore"
6624
6653
  );
6625
- if (result.ok) announceRecordChanged(record_id);
6654
+ if (result.ok) {
6655
+ markRecordRestored(record_id);
6656
+ announceRecordChanged(record_id);
6657
+ }
6626
6658
  return result;
6627
6659
  },
6628
6660
  async tableArchive({ table_id, chunk, includeTable }) {
@@ -9691,8 +9723,8 @@ async function declareTable(client, spec) {
9691
9723
  return { ok: true, data: table.data, homeId: home.data };
9692
9724
  }
9693
9725
  async function undo(client, tableId, homeId, name, refusal) {
9694
- const removed = await client.recordDelete({ record_id: tableId });
9695
- if (removed.ok) {
9726
+ const removed2 = await client.recordDelete({ record_id: tableId });
9727
+ if (removed2.ok) {
9696
9728
  await client.recordDelete({ record_id: homeId });
9697
9729
  return { ok: false, error: refusal };
9698
9730
  }