@ai-matrx/records 0.92.2 → 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.
Files changed (102) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/dist/{client-Dzd8gtAo.d.ts → client-DsPuWFp0.d.ts} +8 -8
  3. package/dist/{client-Cn3odIIB.d.cts → client-EyD3rS0T.d.cts} +8 -8
  4. package/dist/core/index.cjs +101 -32
  5. package/dist/core/index.cjs.map +1 -1
  6. package/dist/core/index.d.cts +16 -15
  7. package/dist/core/index.d.ts +16 -15
  8. package/dist/core/index.js +101 -32
  9. package/dist/core/index.js.map +1 -1
  10. package/dist/data/index.cjs +46 -24
  11. package/dist/data/index.cjs.map +1 -1
  12. package/dist/data/index.d.cts +11 -11
  13. package/dist/data/index.d.ts +11 -11
  14. package/dist/data/index.js +46 -24
  15. package/dist/data/index.js.map +1 -1
  16. package/dist/{declareTable-CrL6AZKB.d.cts → declareTable-Bkk_Ewib.d.cts} +4 -4
  17. package/dist/{declareTable-ZRW5EsTQ.d.ts → declareTable-kL5qZoTe.d.ts} +4 -4
  18. package/dist/entity/index.cjs +43 -29
  19. package/dist/entity/index.cjs.map +1 -1
  20. package/dist/entity/index.d.cts +7 -6
  21. package/dist/entity/index.d.ts +7 -6
  22. package/dist/entity/index.js +43 -29
  23. package/dist/entity/index.js.map +1 -1
  24. package/dist/entity/react.cjs +43 -29
  25. package/dist/entity/react.cjs.map +1 -1
  26. package/dist/entity/react.js +43 -29
  27. package/dist/entity/react.js.map +1 -1
  28. package/dist/{field-CCY1rG9l.d.cts → field-6rwt4ejZ.d.cts} +1 -1
  29. package/dist/{field-enufS5ry.d.ts → field-B-WaVZnS.d.ts} +1 -1
  30. package/dist/forms/index.d.cts +3 -3
  31. package/dist/forms/index.d.ts +3 -3
  32. package/dist/index.cjs +92 -25
  33. package/dist/index.cjs.map +1 -1
  34. package/dist/index.d.cts +13 -33
  35. package/dist/index.d.ts +13 -33
  36. package/dist/index.js +92 -25
  37. package/dist/index.js.map +1 -1
  38. package/dist/memory/index.d.cts +7 -7
  39. package/dist/memory/index.d.ts +7 -7
  40. package/dist/objectOrganization-BII_K3Gm.d.ts +45 -0
  41. package/dist/objectOrganization-DfjDQtDb.d.cts +45 -0
  42. package/dist/{port-C54ykAOv.d.ts → port--acgmxh5.d.ts} +5 -2
  43. package/dist/{port-Drioh9al.d.cts → port-Cx76dq-X.d.cts} +5 -2
  44. package/dist/{portal-DRdmZ-xv.d.cts → portal-9sRr6cpG.d.cts} +1 -1
  45. package/dist/{portal-or_f7BkT.d.ts → portal-BDAqsGkg.d.ts} +1 -1
  46. package/dist/{ports-s0D2jvqn.d.cts → ports-9BQ3zo2y.d.cts} +108 -2
  47. package/dist/{ports-BeOgjwYl.d.ts → ports-DYWE1ENo.d.ts} +108 -2
  48. package/dist/react/index.cjs +101 -32
  49. package/dist/react/index.cjs.map +1 -1
  50. package/dist/react/index.d.cts +1463 -1363
  51. package/dist/react/index.d.ts +1463 -1363
  52. package/dist/react/index.js +101 -32
  53. package/dist/react/index.js.map +1 -1
  54. package/dist/realtime/index.cjs +43 -13
  55. package/dist/realtime/index.cjs.map +1 -1
  56. package/dist/realtime/index.d.cts +9 -3
  57. package/dist/realtime/index.d.ts +9 -3
  58. package/dist/realtime/index.js +43 -13
  59. package/dist/realtime/index.js.map +1 -1
  60. package/dist/{record-BwCf9wKW.d.cts → record-DmmeuUrC.d.cts} +1 -1
  61. package/dist/{record-BwCf9wKW.d.ts → record-DmmeuUrC.d.ts} +1 -1
  62. package/dist/{relation-eLMgv_dV.d.ts → relation-Op1M67le.d.ts} +2 -2
  63. package/dist/{relation-8vAWCa67.d.cts → relation-qrb2NbHf.d.cts} +2 -2
  64. package/dist/{rule-wHI5B0Ka.d.cts → rule-CeHg1sy1.d.cts} +1 -1
  65. package/dist/{rule-D9yNiorf.d.ts → rule-tN2lxvJ1.d.ts} +1 -1
  66. package/dist/search/index.d.cts +1 -1
  67. package/dist/search/index.d.ts +1 -1
  68. package/dist/setup/index.cjs +117 -42
  69. package/dist/setup/index.cjs.map +1 -1
  70. package/dist/setup/index.d.cts +25 -11
  71. package/dist/setup/index.d.ts +25 -11
  72. package/dist/setup/index.js +117 -42
  73. package/dist/setup/index.js.map +1 -1
  74. package/dist/{subscription-CdoI-UaB.d.cts → subscription-Drbxn-9Z.d.cts} +3 -3
  75. package/dist/{subscription-BynsG1K6.d.ts → subscription-hdTaRrfK.d.ts} +3 -3
  76. package/dist/{table-kind-i3lZJa3f.d.ts → table-kind-BZkvzBgc.d.ts} +4 -29
  77. package/dist/{table-kind-DzctQ7dO.d.cts → table-kind-C-hZxDN7.d.cts} +4 -29
  78. package/dist/templates/index.d.cts +10 -10
  79. package/dist/templates/index.d.ts +10 -10
  80. package/dist/typed-table/index.cjs +46 -24
  81. package/dist/typed-table/index.cjs.map +1 -1
  82. package/dist/typed-table/index.d.cts +10 -10
  83. package/dist/typed-table/index.d.ts +10 -10
  84. package/dist/typed-table/index.js +46 -24
  85. package/dist/typed-table/index.js.map +1 -1
  86. package/dist/{types-BvL_oKFl.d.ts → types-BauAeFW8.d.ts} +2 -2
  87. package/dist/{types-DAFP6XFe.d.cts → types-CBmUdBT0.d.cts} +2 -2
  88. package/dist/{types-BKYEeFt4.d.cts → types-Dek9owBe.d.cts} +2 -2
  89. package/dist/{types-D8qdG3Lg.d.cts → types-DsgXrESm.d.cts} +2 -2
  90. package/dist/{types-cpKY7Pjb.d.ts → types-HVgWcZDY.d.ts} +2 -2
  91. package/dist/{types-DYzXhD7j.d.ts → types-hrw-Eff1.d.ts} +2 -2
  92. package/dist/use-cases/index.d.cts +5 -5
  93. package/dist/use-cases/index.d.ts +5 -5
  94. package/dist/{validate-DfNMxjmU.d.cts → validate-B_iUeyh2.d.cts} +1 -1
  95. package/dist/{validate-DbvAParj.d.ts → validate-w-HGGTf-.d.ts} +1 -1
  96. package/dist/views/index.cjs +438 -0
  97. package/dist/views/index.cjs.map +1 -0
  98. package/dist/views/index.d.cts +401 -0
  99. package/dist/views/index.d.ts +401 -0
  100. package/dist/views/index.js +415 -0
  101. package/dist/views/index.js.map +1 -0
  102. package/package.json +13 -3
@@ -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
- var ours = globalSlot("ai-matrx.records.op-ledger", () => /* @__PURE__ */ new Map());
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);
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
- function mintOpId() {
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
- if (!opId) return false;
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: mintOpId() });
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: mintOpId() });
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: mintOpId() }));
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: mintOpId() }));
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;