@ai-matrx/records 0.92.1 → 0.93.0
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 +43 -0
- package/README.md +4 -4
- package/dist/{client-Dzd8gtAo.d.ts → client-DsPuWFp0.d.ts} +8 -8
- package/dist/{client-Cn3odIIB.d.cts → client-EyD3rS0T.d.cts} +8 -8
- package/dist/core/index.cjs +101 -32
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.d.cts +16 -15
- package/dist/core/index.d.ts +16 -15
- package/dist/core/index.js +101 -32
- package/dist/core/index.js.map +1 -1
- package/dist/data/index.cjs +46 -24
- package/dist/data/index.cjs.map +1 -1
- package/dist/data/index.d.cts +11 -11
- package/dist/data/index.d.ts +11 -11
- package/dist/data/index.js +46 -24
- package/dist/data/index.js.map +1 -1
- package/dist/{declareTable-CrL6AZKB.d.cts → declareTable-Bkk_Ewib.d.cts} +4 -4
- package/dist/{declareTable-ZRW5EsTQ.d.ts → declareTable-kL5qZoTe.d.ts} +4 -4
- package/dist/entity/index.cjs +43 -29
- package/dist/entity/index.cjs.map +1 -1
- package/dist/entity/index.d.cts +7 -6
- package/dist/entity/index.d.ts +7 -6
- package/dist/entity/index.js +43 -29
- package/dist/entity/index.js.map +1 -1
- package/dist/entity/react.cjs +43 -29
- package/dist/entity/react.cjs.map +1 -1
- package/dist/entity/react.js +43 -29
- package/dist/entity/react.js.map +1 -1
- package/dist/{field-CCY1rG9l.d.cts → field-6rwt4ejZ.d.cts} +1 -1
- package/dist/{field-enufS5ry.d.ts → field-B-WaVZnS.d.ts} +1 -1
- package/dist/forms/index.d.cts +3 -3
- package/dist/forms/index.d.ts +3 -3
- package/dist/index.cjs +92 -25
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +13 -33
- package/dist/index.d.ts +13 -33
- package/dist/index.js +92 -25
- package/dist/index.js.map +1 -1
- package/dist/memory/index.d.cts +7 -7
- package/dist/memory/index.d.ts +7 -7
- package/dist/objectOrganization-BII_K3Gm.d.ts +45 -0
- package/dist/objectOrganization-DfjDQtDb.d.cts +45 -0
- package/dist/{port-C54ykAOv.d.ts → port--acgmxh5.d.ts} +5 -2
- package/dist/{port-Drioh9al.d.cts → port-Cx76dq-X.d.cts} +5 -2
- package/dist/{portal-DRdmZ-xv.d.cts → portal-9sRr6cpG.d.cts} +1 -1
- package/dist/{portal-or_f7BkT.d.ts → portal-BDAqsGkg.d.ts} +1 -1
- package/dist/{ports-s0D2jvqn.d.cts → ports-9BQ3zo2y.d.cts} +108 -2
- package/dist/{ports-BeOgjwYl.d.ts → ports-DYWE1ENo.d.ts} +108 -2
- package/dist/react/index.cjs +101 -32
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.d.cts +1463 -1363
- package/dist/react/index.d.ts +1463 -1363
- package/dist/react/index.js +101 -32
- package/dist/react/index.js.map +1 -1
- package/dist/realtime/index.cjs +43 -13
- package/dist/realtime/index.cjs.map +1 -1
- package/dist/realtime/index.d.cts +9 -3
- package/dist/realtime/index.d.ts +9 -3
- package/dist/realtime/index.js +43 -13
- package/dist/realtime/index.js.map +1 -1
- package/dist/{record-BwCf9wKW.d.cts → record-DmmeuUrC.d.cts} +1 -1
- package/dist/{record-BwCf9wKW.d.ts → record-DmmeuUrC.d.ts} +1 -1
- package/dist/{relation-eLMgv_dV.d.ts → relation-Op1M67le.d.ts} +2 -2
- package/dist/{relation-8vAWCa67.d.cts → relation-qrb2NbHf.d.cts} +2 -2
- package/dist/{rule-wHI5B0Ka.d.cts → rule-CeHg1sy1.d.cts} +1 -1
- package/dist/{rule-D9yNiorf.d.ts → rule-tN2lxvJ1.d.ts} +1 -1
- package/dist/search/index.d.cts +1 -1
- package/dist/search/index.d.ts +1 -1
- package/dist/setup/index.cjs +117 -42
- package/dist/setup/index.cjs.map +1 -1
- package/dist/setup/index.d.cts +25 -11
- package/dist/setup/index.d.ts +25 -11
- package/dist/setup/index.js +117 -42
- package/dist/setup/index.js.map +1 -1
- package/dist/{subscription-CdoI-UaB.d.cts → subscription-Drbxn-9Z.d.cts} +3 -3
- package/dist/{subscription-BynsG1K6.d.ts → subscription-hdTaRrfK.d.ts} +3 -3
- package/dist/{table-kind-i3lZJa3f.d.ts → table-kind-BZkvzBgc.d.ts} +4 -29
- package/dist/{table-kind-DzctQ7dO.d.cts → table-kind-C-hZxDN7.d.cts} +4 -29
- package/dist/templates/index.d.cts +10 -10
- package/dist/templates/index.d.ts +10 -10
- package/dist/typed-table/index.cjs +46 -24
- package/dist/typed-table/index.cjs.map +1 -1
- package/dist/typed-table/index.d.cts +10 -10
- package/dist/typed-table/index.d.ts +10 -10
- package/dist/typed-table/index.js +46 -24
- package/dist/typed-table/index.js.map +1 -1
- package/dist/{types-BvL_oKFl.d.ts → types-BauAeFW8.d.ts} +2 -2
- package/dist/{types-DAFP6XFe.d.cts → types-CBmUdBT0.d.cts} +2 -2
- package/dist/{types-BKYEeFt4.d.cts → types-Dek9owBe.d.cts} +2 -2
- package/dist/{types-D8qdG3Lg.d.cts → types-DsgXrESm.d.cts} +2 -2
- package/dist/{types-cpKY7Pjb.d.ts → types-HVgWcZDY.d.ts} +2 -2
- package/dist/{types-DYzXhD7j.d.ts → types-hrw-Eff1.d.ts} +2 -2
- package/dist/use-cases/index.d.cts +5 -5
- package/dist/use-cases/index.d.ts +5 -5
- package/dist/{validate-DfNMxjmU.d.cts → validate-B_iUeyh2.d.cts} +1 -1
- package/dist/{validate-DbvAParj.d.ts → validate-w-HGGTf-.d.ts} +1 -1
- package/dist/views/index.cjs +438 -0
- package/dist/views/index.cjs.map +1 -0
- package/dist/views/index.d.cts +401 -0
- package/dist/views/index.d.ts +401 -0
- package/dist/views/index.js +415 -0
- package/dist/views/index.js.map +1 -0
- package/package.json +12 -2
package/dist/entity/index.js
CHANGED
|
@@ -419,34 +419,47 @@ import {
|
|
|
419
419
|
import { globalSlot } from "@ai-matrx/kit/global-slot";
|
|
420
420
|
var REMEMBER_MS = 3e4;
|
|
421
421
|
var REMEMBER_MAX = 500;
|
|
422
|
-
|
|
423
|
-
function trim(now) {
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
422
|
+
function ledgerOver(ours) {
|
|
423
|
+
function trim(now) {
|
|
424
|
+
for (const [id, at] of ours) {
|
|
425
|
+
if (now - at <= REMEMBER_MS) break;
|
|
426
|
+
ours.delete(id);
|
|
427
|
+
}
|
|
428
|
+
while (ours.size > REMEMBER_MAX) {
|
|
429
|
+
const oldest = ours.keys().next();
|
|
430
|
+
if (oldest.done === true) break;
|
|
431
|
+
ours.delete(oldest.value);
|
|
432
|
+
}
|
|
432
433
|
}
|
|
434
|
+
return {
|
|
435
|
+
mint() {
|
|
436
|
+
const id = crypto.randomUUID();
|
|
437
|
+
const now = Date.now();
|
|
438
|
+
ours.set(id, now);
|
|
439
|
+
trim(now);
|
|
440
|
+
return id;
|
|
441
|
+
},
|
|
442
|
+
isOwn(opId) {
|
|
443
|
+
if (!opId) return false;
|
|
444
|
+
const at = ours.get(opId);
|
|
445
|
+
if (at === void 0) return false;
|
|
446
|
+
if (Date.now() - at > REMEMBER_MS) {
|
|
447
|
+
ours.delete(opId);
|
|
448
|
+
return false;
|
|
449
|
+
}
|
|
450
|
+
return true;
|
|
451
|
+
},
|
|
452
|
+
clear() {
|
|
453
|
+
ours.clear();
|
|
454
|
+
},
|
|
455
|
+
get size() {
|
|
456
|
+
return ours.size;
|
|
457
|
+
}
|
|
458
|
+
};
|
|
433
459
|
}
|
|
434
|
-
|
|
435
|
-
const id = crypto.randomUUID();
|
|
436
|
-
const now = Date.now();
|
|
437
|
-
ours.set(id, now);
|
|
438
|
-
trim(now);
|
|
439
|
-
return id;
|
|
440
|
-
}
|
|
460
|
+
var defaultOpLedger = ledgerOver(globalSlot("ai-matrx.records.op-ledger", () => /* @__PURE__ */ new Map()));
|
|
441
461
|
function isOwnOp(opId) {
|
|
442
|
-
|
|
443
|
-
const at = ours.get(opId);
|
|
444
|
-
if (at === void 0) return false;
|
|
445
|
-
if (Date.now() - at > REMEMBER_MS) {
|
|
446
|
-
ours.delete(opId);
|
|
447
|
-
return false;
|
|
448
|
-
}
|
|
449
|
-
return true;
|
|
462
|
+
return defaultOpLedger.isOwn(opId);
|
|
450
463
|
}
|
|
451
464
|
|
|
452
465
|
// src/entity/core/realtime.ts
|
|
@@ -669,6 +682,7 @@ function toWireValues(values) {
|
|
|
669
682
|
}
|
|
670
683
|
function createEntityDataPort(options) {
|
|
671
684
|
const client = options.client ?? createEntityClient({ dataSource: options.dataSource });
|
|
685
|
+
const ledger = options.opLedger ?? defaultOpLedger;
|
|
672
686
|
const activeOrganization = () => (options.activeOrganizationId ? options.activeOrganizationId() : options.organization) ?? null;
|
|
673
687
|
const gets = /* @__PURE__ */ new Map();
|
|
674
688
|
const aliases = options.aliases;
|
|
@@ -859,27 +873,27 @@ function createEntityDataPort(options) {
|
|
|
859
873
|
"Pick an organization, then add the row again. Nothing was saved."
|
|
860
874
|
);
|
|
861
875
|
}
|
|
862
|
-
const answer = await client.insert({ token: binding.token, organizationId, rows: [toWireValues(values)], opId:
|
|
876
|
+
const answer = await client.insert({ token: binding.token, organizationId, rows: [toWireValues(values)], opId: ledger.mint() });
|
|
863
877
|
return readBack(alias, answer, "The new row");
|
|
864
878
|
},
|
|
865
879
|
async update(alias, id, patch, baseVersion) {
|
|
866
880
|
const binding = bindingOf(alias);
|
|
867
881
|
if (!binding) return noSuchAlias(alias);
|
|
868
882
|
if (!isUuidShape(id)) return refusal("invalid_argument", `"${String(id)}" is not a row id.`);
|
|
869
|
-
const answer = await client.update({ token: binding.token, id, baseVersion, patch: toWireValues(patch), opId:
|
|
883
|
+
const answer = await client.update({ token: binding.token, id, baseVersion, patch: toWireValues(patch), opId: ledger.mint() });
|
|
870
884
|
return readBack(alias, answer, "The change");
|
|
871
885
|
},
|
|
872
886
|
async archive(alias, id) {
|
|
873
887
|
const binding = bindingOf(alias);
|
|
874
888
|
if (!binding) return noSuchAlias(alias);
|
|
875
889
|
if (!isUuidShape(id)) return refusal("invalid_argument", `"${String(id)}" is not a row id.`);
|
|
876
|
-
return done(await client.archive({ token: binding.token, ids: [id], opId:
|
|
890
|
+
return done(await client.archive({ token: binding.token, ids: [id], opId: ledger.mint() }));
|
|
877
891
|
},
|
|
878
892
|
async restore(alias, id) {
|
|
879
893
|
const binding = bindingOf(alias);
|
|
880
894
|
if (!binding) return noSuchAlias(alias);
|
|
881
895
|
if (!isUuidShape(id)) return refusal("invalid_argument", `"${String(id)}" is not a row id.`);
|
|
882
|
-
return done(await client.unarchive({ token: binding.token, ids: [id], opId:
|
|
896
|
+
return done(await client.unarchive({ token: binding.token, ids: [id], opId: ledger.mint() }));
|
|
883
897
|
},
|
|
884
898
|
subscribe(event, listener) {
|
|
885
899
|
const alias = event.startsWith("rows:") ? event.slice(5) : null;
|