@ai-matrx/records 0.84.1 → 0.84.3

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.
@@ -240,6 +240,37 @@ function takePrimedTablePageBundle(organizationId, tableId, viewId) {
240
240
  primed.delete(key);
241
241
  return Date.now() - held.at < PRIMED_TTL_MS ? held.answer : null;
242
242
  }
243
+ var DOOR_REGISTRY = /* @__PURE__ */ Symbol.for("@ai-matrx/records/primed-door-answers");
244
+ function doorRegistry() {
245
+ const g = globalThis;
246
+ return g[DOOR_REGISTRY] ??= /* @__PURE__ */ new Map();
247
+ }
248
+ var PRIMED_DOOR_TTL_MS = 1e4;
249
+ function takePrimedDoorAnswer(key) {
250
+ const registry2 = doorRegistry();
251
+ const held = registry2.get(key);
252
+ if (!held) return null;
253
+ if (Date.now() - held.at < PRIMED_DOOR_TTL_MS) return { data: held.data };
254
+ registry2.delete(key);
255
+ return null;
256
+ }
257
+ function dropPrimedDoorAnswers(doors) {
258
+ const registry2 = doorRegistry();
259
+ if (!doors) {
260
+ registry2.clear();
261
+ return;
262
+ }
263
+ for (const key of [...registry2.keys()]) if (doors.some((door) => key.startsWith(`${door}|`))) registry2.delete(key);
264
+ }
265
+ var LOOK_WRITES = {
266
+ view_declare: ["views", "view_look_read", "grid_layout", "table_page_bundle"],
267
+ view_designate: ["views", "view_look_read", "grid_layout", "table_page_bundle"],
268
+ view_look_set: ["views", "view_look_read", "grid_layout", "table_page_bundle"],
269
+ view_record_order_set: ["views", "view_look_read", "grid_layout", "table_page_bundle"]
270
+ };
271
+ function isWritingDoor(door) {
272
+ return /(_declare|_set(_|$)|_update|_write|_delete|_restore|_archive|_upsert|_reparent|_change|_duplicate|_move|_decide|_run$|_submit|_publish|_import_|_start$|_complete|_sign$|_add$|_retire|_propose|_promote|_land$|_pin$|_mute|_snooze|_unsnooze|_clear|_unclear|_revoke|_issue|_bind|_unbind|_apply|_backfill|_sync$|_decorate|_designate|_ensure|^migrate_|^home_add|^capture_|^claim_|^record_stage|^anon_|^io_import_|^io_comment_resolve|^enrich_(declare|land|pin)|^field_(declare|duplicate|propose|restore|retire|update)|^table_(declare|ensure|from_example|move|sync)|^value_restore|^relation_own)/.test(door);
273
+ }
243
274
 
244
275
  // src/core/recordChanges.ts
245
276
  var listeners = /* @__PURE__ */ new Set();
@@ -2736,7 +2767,21 @@ function createRecordsClient(given) {
2736
2767
  bundleAsked.delete(tableId);
2737
2768
  for (const key of [...bundleParts.keys()]) if (key.includes(tableId)) bundleParts.delete(key);
2738
2769
  }
2770
+ function primedFor(door, args) {
2771
+ const look = LOOK_WRITES[door];
2772
+ if (look) {
2773
+ dropPrimedDoorAnswers(look);
2774
+ return null;
2775
+ }
2776
+ if (isWritingDoor(door)) {
2777
+ dropPrimedDoorAnswers();
2778
+ return null;
2779
+ }
2780
+ return takePrimedDoorAnswer(`${door}|${canonicalArgs(args)}`);
2781
+ }
2739
2782
  async function callDoor(door, args, where) {
2783
+ const primed = primedFor(door, args);
2784
+ if (primed) return ok(primed.data);
2740
2785
  const bundled = await fromBundle(door, args);
2741
2786
  if (bundled) return ok(bundled.data);
2742
2787
  if (!doorReady(config, door)) {
@@ -2761,6 +2806,8 @@ function createRecordsClient(given) {
2761
2806
  }
2762
2807
  async function owedDoor(door, args, where) {
2763
2808
  if (doorExists(door)) return callDoor(door, args, where);
2809
+ const primed = primedFor(door, args);
2810
+ if (primed) return ok(primed.data);
2764
2811
  const response = await config.dataSource.rpc(door, args, { schema });
2765
2812
  if (response.error) {
2766
2813
  const code = response.error.code;
@@ -2826,6 +2873,8 @@ function createRecordsClient(given) {
2826
2873
  return ok(response.data);
2827
2874
  }
2828
2875
  async function drillDoor(door, args, where) {
2876
+ const primed = primedFor(door, args);
2877
+ if (primed) return ok(primed.data);
2829
2878
  const response = await config.dataSource.rpc(door, args, { schema: DRILL_SCHEMA });
2830
2879
  if (response.error) {
2831
2880
  const refusal2 = mapPgError(response.error, where);