mindoodb 0.0.88 → 0.0.90

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 (132) hide show
  1. package/README.md +1 -0
  2. package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.d.ts +4 -1
  3. package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.d.ts.map +1 -1
  4. package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.js +8 -0
  5. package/dist/appendonlystores/network/ServerNetworkContentAddressedStore.js.map +1 -1
  6. package/dist/browser/index.mjs +17 -0
  7. package/dist/core/BaseMindooDB.d.ts +14 -0
  8. package/dist/core/BaseMindooDB.d.ts.map +1 -1
  9. package/dist/core/BaseMindooDB.js +42 -0
  10. package/dist/core/BaseMindooDB.js.map +1 -1
  11. package/dist/core/BaseMindooTenant.d.ts +3 -0
  12. package/dist/core/BaseMindooTenant.d.ts.map +1 -1
  13. package/dist/core/BaseMindooTenant.js +28 -0
  14. package/dist/core/BaseMindooTenant.js.map +1 -1
  15. package/dist/core/BaseMindooTenantDirectory.d.ts +5 -0
  16. package/dist/core/BaseMindooTenantDirectory.d.ts.map +1 -1
  17. package/dist/core/BaseMindooTenantDirectory.js +29 -1
  18. package/dist/core/BaseMindooTenantDirectory.js.map +1 -1
  19. package/dist/core/accesscontrol/directoryProjection.d.ts.map +1 -1
  20. package/dist/core/accesscontrol/directoryProjection.js +4 -0
  21. package/dist/core/accesscontrol/directoryProjection.js.map +1 -1
  22. package/dist/core/accesscontrol/types.d.ts +25 -3
  23. package/dist/core/accesscontrol/types.d.ts.map +1 -1
  24. package/dist/core/accesscontrol/types.js +27 -6
  25. package/dist/core/accesscontrol/types.js.map +1 -1
  26. package/dist/core/builtinDbInvariants.d.ts +5 -1
  27. package/dist/core/builtinDbInvariants.d.ts.map +1 -1
  28. package/dist/core/builtinDbInvariants.js +5 -1
  29. package/dist/core/builtinDbInvariants.js.map +1 -1
  30. package/dist/core/expressions/builder.d.ts +30 -0
  31. package/dist/core/expressions/builder.d.ts.map +1 -1
  32. package/dist/core/expressions/builder.js +42 -0
  33. package/dist/core/expressions/builder.js.map +1 -1
  34. package/dist/core/expressions/evaluateExpression.d.ts +10 -0
  35. package/dist/core/expressions/evaluateExpression.d.ts.map +1 -1
  36. package/dist/core/expressions/evaluateExpression.js +66 -1
  37. package/dist/core/expressions/evaluateExpression.js.map +1 -1
  38. package/dist/core/expressions/formulaSource.d.ts.map +1 -1
  39. package/dist/core/expressions/formulaSource.js +5 -0
  40. package/dist/core/expressions/formulaSource.js.map +1 -1
  41. package/dist/core/expressions/index.d.ts +1 -1
  42. package/dist/core/expressions/index.d.ts.map +1 -1
  43. package/dist/core/expressions/index.js +2 -1
  44. package/dist/core/expressions/index.js.map +1 -1
  45. package/dist/core/expressions/metadata.d.ts +2 -2
  46. package/dist/core/expressions/metadata.d.ts.map +1 -1
  47. package/dist/core/expressions/metadata.js +14 -0
  48. package/dist/core/expressions/metadata.js.map +1 -1
  49. package/dist/core/expressions/types.d.ts +1 -1
  50. package/dist/core/expressions/types.d.ts.map +1 -1
  51. package/dist/core/filing/FilingIndex.d.ts +209 -0
  52. package/dist/core/filing/FilingIndex.d.ts.map +1 -0
  53. package/dist/core/filing/FilingIndex.js +689 -0
  54. package/dist/core/filing/FilingIndex.js.map +1 -0
  55. package/dist/core/filing/MindooFilingStore.d.ts +200 -0
  56. package/dist/core/filing/MindooFilingStore.d.ts.map +1 -0
  57. package/dist/core/filing/MindooFilingStore.js +515 -0
  58. package/dist/core/filing/MindooFilingStore.js.map +1 -0
  59. package/dist/core/filing/index.d.ts +4 -0
  60. package/dist/core/filing/index.d.ts.map +1 -0
  61. package/dist/core/filing/index.js +22 -0
  62. package/dist/core/filing/index.js.map +1 -0
  63. package/dist/core/filing/refs.d.ts +56 -0
  64. package/dist/core/filing/refs.d.ts.map +1 -0
  65. package/dist/core/filing/refs.js +109 -0
  66. package/dist/core/filing/refs.js.map +1 -0
  67. package/dist/core/index.d.ts +3 -2
  68. package/dist/core/index.d.ts.map +1 -1
  69. package/dist/core/index.js +10 -5
  70. package/dist/core/index.js.map +1 -1
  71. package/dist/core/indexing/createViewDataProvider.d.ts +6 -0
  72. package/dist/core/indexing/createViewDataProvider.d.ts.map +1 -1
  73. package/dist/core/indexing/createViewDataProvider.js +26 -1
  74. package/dist/core/indexing/createViewDataProvider.js.map +1 -1
  75. package/dist/core/indexing/summary/DocumentSummaryStore.d.ts +43 -1
  76. package/dist/core/indexing/summary/DocumentSummaryStore.d.ts.map +1 -1
  77. package/dist/core/indexing/summary/DocumentSummaryStore.js +302 -2
  78. package/dist/core/indexing/summary/DocumentSummaryStore.js.map +1 -1
  79. package/dist/core/indexing/summary/SummaryVirtualViewDataProvider.d.ts +33 -2
  80. package/dist/core/indexing/summary/SummaryVirtualViewDataProvider.d.ts.map +1 -1
  81. package/dist/core/indexing/summary/SummaryVirtualViewDataProvider.js +129 -26
  82. package/dist/core/indexing/summary/SummaryVirtualViewDataProvider.js.map +1 -1
  83. package/dist/core/indexing/summary/types.d.ts +40 -0
  84. package/dist/core/indexing/summary/types.d.ts.map +1 -1
  85. package/dist/core/indexing/virtualviews/MindooDBVirtualViewDataProvider.d.ts +27 -2
  86. package/dist/core/indexing/virtualviews/MindooDBVirtualViewDataProvider.d.ts.map +1 -1
  87. package/dist/core/indexing/virtualviews/MindooDBVirtualViewDataProvider.js +106 -1
  88. package/dist/core/indexing/virtualviews/MindooDBVirtualViewDataProvider.js.map +1 -1
  89. package/dist/core/indexing/virtualviews/VirtualView.d.ts +70 -5
  90. package/dist/core/indexing/virtualviews/VirtualView.d.ts.map +1 -1
  91. package/dist/core/indexing/virtualviews/VirtualView.js +329 -28
  92. package/dist/core/indexing/virtualviews/VirtualView.js.map +1 -1
  93. package/dist/core/indexing/virtualviews/VirtualViewEntryData.d.ts +4 -22
  94. package/dist/core/indexing/virtualviews/VirtualViewEntryData.d.ts.map +1 -1
  95. package/dist/core/indexing/virtualviews/VirtualViewEntryData.js +175 -129
  96. package/dist/core/indexing/virtualviews/VirtualViewEntryData.js.map +1 -1
  97. package/dist/core/indexing/virtualviews/VirtualViewFactory.d.ts +28 -0
  98. package/dist/core/indexing/virtualviews/VirtualViewFactory.d.ts.map +1 -1
  99. package/dist/core/indexing/virtualviews/VirtualViewFactory.js +62 -0
  100. package/dist/core/indexing/virtualviews/VirtualViewFactory.js.map +1 -1
  101. package/dist/core/indexing/virtualviews/VirtualViewFilingJoin.d.ts +75 -0
  102. package/dist/core/indexing/virtualviews/VirtualViewFilingJoin.d.ts.map +1 -0
  103. package/dist/core/indexing/virtualviews/VirtualViewFilingJoin.js +163 -0
  104. package/dist/core/indexing/virtualviews/VirtualViewFilingJoin.js.map +1 -0
  105. package/dist/core/indexing/virtualviews/VirtualViewMergedNavigator.d.ts +112 -0
  106. package/dist/core/indexing/virtualviews/VirtualViewMergedNavigator.d.ts.map +1 -0
  107. package/dist/core/indexing/virtualviews/VirtualViewMergedNavigator.js +296 -0
  108. package/dist/core/indexing/virtualviews/VirtualViewMergedNavigator.js.map +1 -0
  109. package/dist/core/indexing/virtualviews/VirtualViewNavigator.d.ts +2 -0
  110. package/dist/core/indexing/virtualviews/VirtualViewNavigator.d.ts.map +1 -1
  111. package/dist/core/indexing/virtualviews/VirtualViewNavigator.js +10 -9
  112. package/dist/core/indexing/virtualviews/VirtualViewNavigator.js.map +1 -1
  113. package/dist/core/indexing/virtualviews/index.d.ts +2 -0
  114. package/dist/core/indexing/virtualviews/index.d.ts.map +1 -1
  115. package/dist/core/indexing/virtualviews/index.js +8 -1
  116. package/dist/core/indexing/virtualviews/index.js.map +1 -1
  117. package/dist/core/query/executeQuery.d.ts.map +1 -1
  118. package/dist/core/query/executeQuery.js +4 -0
  119. package/dist/core/query/executeQuery.js.map +1 -1
  120. package/dist/core/query/executeQueryInclude.d.ts.map +1 -1
  121. package/dist/core/query/executeQueryInclude.js +4 -0
  122. package/dist/core/query/executeQueryInclude.js.map +1 -1
  123. package/dist/core/query/queryView.d.ts.map +1 -1
  124. package/dist/core/query/queryView.js +4 -0
  125. package/dist/core/query/queryView.js.map +1 -1
  126. package/dist/core/types.d.ts +20 -0
  127. package/dist/core/types.d.ts.map +1 -1
  128. package/dist/core/types.js.map +1 -1
  129. package/dist/server/TenantManager.d.ts.map +1 -1
  130. package/dist/server/TenantManager.js +1 -1
  131. package/dist/server/TenantManager.js.map +1 -1
  132. package/package.json +1 -1
@@ -1444,24 +1444,52 @@ class BaseMindooTenantDirectory {
1444
1444
  * that grant and by the tenant admin; it may be deposited into by
1445
1445
  * identities whose grant lists the prefix in `depositPrefixes`; nobody
1446
1446
  * else gets anything. An unknown grant id leaves everyone but the admin out.
1447
+ * `mbusy_` (free/busy) is the exception: other members read it read-only
1448
+ * (`readOnly`, pushes refused) under the tenant's `freeBusy` setting, and
1449
+ * the tenant admin reads it read-only as well (whatever `freeBusy` says).
1447
1450
  */
1448
1451
  async evaluatePersonalDatabaseAccess(input) {
1449
1452
  const head = await this.getDirectoryStateHead();
1450
1453
  const owner = (0, builtinDbInvariants_1.personalDatabaseOwner)(input.dbid, head.defaultPolicy?.personalDatabasePrefixes ?? []);
1451
1454
  if (!owner)
1452
1455
  return null;
1453
- if ((0, DirectoryStateNode_1.signingKeysEqual)(input.signingKey, this.tenant.getAdministrationPublicKey())) {
1456
+ const isAdmin = (0, DirectoryStateNode_1.signingKeysEqual)(input.signingKey, this.tenant.getAdministrationPublicKey());
1457
+ if (isAdmin && owner.prefix !== "mbusy_") {
1454
1458
  return { mode: "read", reason: "tenant admin" };
1455
1459
  }
1456
1460
  const grant = await this.loadGrantDocument(owner.grantDocId);
1457
1461
  if (grant && (0, grantKeys_1.extractActiveKeyPairs)(grant).some((pair) => (0, DirectoryStateNode_1.signingKeysEqual)(pair.signingPublicKey, input.signingKey))) {
1458
1462
  return { mode: "read", reason: "a device of the owner" };
1459
1463
  }
1464
+ // Free/busy (§6.11): the tenant admin reads every person's busy times but,
1465
+ // like every other member, does not write them (unless the admin key is a
1466
+ // device of the owner, checked above).
1467
+ if (isAdmin) {
1468
+ return { mode: "read", readOnly: true, reason: "tenant admin (free/busy, read-only)" };
1469
+ }
1460
1470
  const signerGrants = await this.grantsForSigningKey(input.signingKey);
1461
1471
  const listed = (grant, field) => Array.isArray(grant[field]) && grant[field].includes(owner.prefix);
1462
1472
  if (signerGrants.some((grant) => listed(grant, "accessPrefixes"))) {
1463
1473
  return { mode: "read", reason: `service access to ${owner.prefix}* granted` };
1464
1474
  }
1475
+ // Free/busy (§6.11): other members read the owner's busy times, read-only,
1476
+ // under the tenant's `freeBusy` setting. Nobody but the owner writes.
1477
+ if (owner.prefix === "mbusy_" && grant && signerGrants.length > 0) {
1478
+ const mode = head.defaultPolicy?.freeBusy ?? "members";
1479
+ let allowed = mode === "members";
1480
+ if (mode === "rules") {
1481
+ const decision = await this.evaluateAccessForSigningKey({
1482
+ op: "doc_read",
1483
+ dbid: input.dbid,
1484
+ signingKey: input.signingKey,
1485
+ trustedTime: Number.MAX_SAFE_INTEGER,
1486
+ });
1487
+ allowed = decision.allowed && decision.matchedRuleId !== undefined;
1488
+ }
1489
+ if (allowed)
1490
+ return { mode: "read", readOnly: true, reason: `free/busy (${mode})` };
1491
+ return { mode: "none", reason: `free/busy of another person (${mode})` };
1492
+ }
1465
1493
  const depositors = signerGrants.filter((grant) => listed(grant, "depositPrefixes"));
1466
1494
  if (depositors.length > 0) {
1467
1495
  // Document ids a deposit may use: the grant's `depositDocIdPrefixes`