@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 +12 -0
- package/dist/app-table/index.cjs +49 -0
- package/dist/app-table/index.cjs.map +1 -1
- package/dist/app-table/index.js +49 -0
- package/dist/app-table/index.js.map +1 -1
- package/dist/core/index.cjs +55 -0
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.d.cts +10 -1
- package/dist/core/index.d.ts +10 -1
- package/dist/core/index.js +55 -0
- package/dist/core/index.js.map +1 -1
- package/dist/data/index.cjs +49 -0
- package/dist/data/index.cjs.map +1 -1
- package/dist/data/index.js +49 -0
- package/dist/data/index.js.map +1 -1
- package/dist/react/index.cjs +58 -1
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.d.cts +17 -1
- package/dist/react/index.d.ts +17 -1
- package/dist/react/index.js +58 -1
- package/dist/react/index.js.map +1 -1
- package/package.json +1 -1
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
|
package/dist/app-table/index.cjs
CHANGED
|
@@ -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);
|