@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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog — @ai-matrx/records
2
2
 
3
+ ## 0.84.3
4
+
5
+ Automatic changed-only republish (docs/metadata drift since the last tag — see
6
+ `git diff npm/records/v0.84.2..npm/records/v0.84.3 -- apps/shared/records`).
7
+ No source changes intended and no consumer action required.
8
+
9
+ ## 0.84.2
10
+
11
+ Automatic changed-only republish (docs/metadata drift since the last tag — see
12
+ `git diff npm/records/v0.84.1..npm/records/v0.84.2 -- apps/shared/records`).
13
+ No source changes intended and no consumer action required.
14
+
3
15
  ## 0.84.1
4
16
 
5
17
  Automatic changed-only republish (docs/metadata drift since the last tag — see
@@ -433,6 +433,37 @@ function takePrimedTablePageBundle(organizationId, tableId, viewId) {
433
433
  primed.delete(key);
434
434
  return Date.now() - held.at < PRIMED_TTL_MS ? held.answer : null;
435
435
  }
436
+ var DOOR_REGISTRY = /* @__PURE__ */ Symbol.for("@ai-matrx/records/primed-door-answers");
437
+ function doorRegistry() {
438
+ const g = globalThis;
439
+ return g[DOOR_REGISTRY] ??= /* @__PURE__ */ new Map();
440
+ }
441
+ var PRIMED_DOOR_TTL_MS = 1e4;
442
+ function takePrimedDoorAnswer(key) {
443
+ const registry2 = doorRegistry();
444
+ const held = registry2.get(key);
445
+ if (!held) return null;
446
+ if (Date.now() - held.at < PRIMED_DOOR_TTL_MS) return { data: held.data };
447
+ registry2.delete(key);
448
+ return null;
449
+ }
450
+ function dropPrimedDoorAnswers(doors) {
451
+ const registry2 = doorRegistry();
452
+ if (!doors) {
453
+ registry2.clear();
454
+ return;
455
+ }
456
+ for (const key of [...registry2.keys()]) if (doors.some((door) => key.startsWith(`${door}|`))) registry2.delete(key);
457
+ }
458
+ var LOOK_WRITES = {
459
+ view_declare: ["views", "view_look_read", "grid_layout", "table_page_bundle"],
460
+ view_designate: ["views", "view_look_read", "grid_layout", "table_page_bundle"],
461
+ view_look_set: ["views", "view_look_read", "grid_layout", "table_page_bundle"],
462
+ view_record_order_set: ["views", "view_look_read", "grid_layout", "table_page_bundle"]
463
+ };
464
+ function isWritingDoor(door) {
465
+ 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);
466
+ }
436
467
 
437
468
  // src/core/recordChanges.ts
438
469
  var listeners = /* @__PURE__ */ new Set();
@@ -2905,7 +2936,21 @@ function createRecordsClient(given) {
2905
2936
  bundleAsked.delete(tableId);
2906
2937
  for (const key of [...bundleParts.keys()]) if (key.includes(tableId)) bundleParts.delete(key);
2907
2938
  }
2939
+ function primedFor(door, args) {
2940
+ const look = LOOK_WRITES[door];
2941
+ if (look) {
2942
+ dropPrimedDoorAnswers(look);
2943
+ return null;
2944
+ }
2945
+ if (isWritingDoor(door)) {
2946
+ dropPrimedDoorAnswers();
2947
+ return null;
2948
+ }
2949
+ return takePrimedDoorAnswer(`${door}|${canonicalArgs(args)}`);
2950
+ }
2908
2951
  async function callDoor(door, args, where) {
2952
+ const primed = primedFor(door, args);
2953
+ if (primed) return ok(primed.data);
2909
2954
  const bundled = await fromBundle(door, args);
2910
2955
  if (bundled) return ok(bundled.data);
2911
2956
  if (!doorReady(config, door)) {
@@ -2930,6 +2975,8 @@ function createRecordsClient(given) {
2930
2975
  }
2931
2976
  async function owedDoor(door, args, where) {
2932
2977
  if (doorExists(door)) return callDoor(door, args, where);
2978
+ const primed = primedFor(door, args);
2979
+ if (primed) return ok(primed.data);
2933
2980
  const response = await config.dataSource.rpc(door, args, { schema });
2934
2981
  if (response.error) {
2935
2982
  const code = response.error.code;
@@ -2995,6 +3042,8 @@ function createRecordsClient(given) {
2995
3042
  return ok(response.data);
2996
3043
  }
2997
3044
  async function drillDoor(door, args, where) {
3045
+ const primed = primedFor(door, args);
3046
+ if (primed) return ok(primed.data);
2998
3047
  const response = await config.dataSource.rpc(door, args, { schema: DRILL_SCHEMA });
2999
3048
  if (response.error) {
3000
3049
  const refusal2 = mapPgError(response.error, where);