mindoodb 0.0.89 → 0.0.91

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 (114) hide show
  1. package/README.md +1 -0
  2. package/dist/browser/index.mjs +15 -0
  3. package/dist/core/BaseMindooDB.d.ts +18 -0
  4. package/dist/core/BaseMindooDB.d.ts.map +1 -1
  5. package/dist/core/BaseMindooDB.js +57 -0
  6. package/dist/core/BaseMindooDB.js.map +1 -1
  7. package/dist/core/BaseMindooTenant.d.ts +3 -0
  8. package/dist/core/BaseMindooTenant.d.ts.map +1 -1
  9. package/dist/core/BaseMindooTenant.js +28 -0
  10. package/dist/core/BaseMindooTenant.js.map +1 -1
  11. package/dist/core/BaseMindooTenantDirectory.d.ts +2 -1
  12. package/dist/core/BaseMindooTenantDirectory.d.ts.map +1 -1
  13. package/dist/core/BaseMindooTenantDirectory.js +10 -2
  14. package/dist/core/BaseMindooTenantDirectory.js.map +1 -1
  15. package/dist/core/expressions/builder.d.ts +30 -0
  16. package/dist/core/expressions/builder.d.ts.map +1 -1
  17. package/dist/core/expressions/builder.js +42 -0
  18. package/dist/core/expressions/builder.js.map +1 -1
  19. package/dist/core/expressions/evaluateExpression.d.ts +10 -0
  20. package/dist/core/expressions/evaluateExpression.d.ts.map +1 -1
  21. package/dist/core/expressions/evaluateExpression.js +66 -1
  22. package/dist/core/expressions/evaluateExpression.js.map +1 -1
  23. package/dist/core/expressions/formulaSource.d.ts.map +1 -1
  24. package/dist/core/expressions/formulaSource.js +5 -0
  25. package/dist/core/expressions/formulaSource.js.map +1 -1
  26. package/dist/core/expressions/index.d.ts +1 -1
  27. package/dist/core/expressions/index.d.ts.map +1 -1
  28. package/dist/core/expressions/index.js +2 -1
  29. package/dist/core/expressions/index.js.map +1 -1
  30. package/dist/core/expressions/metadata.d.ts +2 -2
  31. package/dist/core/expressions/metadata.d.ts.map +1 -1
  32. package/dist/core/expressions/metadata.js +14 -0
  33. package/dist/core/expressions/metadata.js.map +1 -1
  34. package/dist/core/expressions/types.d.ts +1 -1
  35. package/dist/core/expressions/types.d.ts.map +1 -1
  36. package/dist/core/filing/FilingIndex.d.ts +209 -0
  37. package/dist/core/filing/FilingIndex.d.ts.map +1 -0
  38. package/dist/core/filing/FilingIndex.js +689 -0
  39. package/dist/core/filing/FilingIndex.js.map +1 -0
  40. package/dist/core/filing/MindooFilingStore.d.ts +200 -0
  41. package/dist/core/filing/MindooFilingStore.d.ts.map +1 -0
  42. package/dist/core/filing/MindooFilingStore.js +515 -0
  43. package/dist/core/filing/MindooFilingStore.js.map +1 -0
  44. package/dist/core/filing/index.d.ts +4 -0
  45. package/dist/core/filing/index.d.ts.map +1 -0
  46. package/dist/core/filing/index.js +22 -0
  47. package/dist/core/filing/index.js.map +1 -0
  48. package/dist/core/filing/refs.d.ts +56 -0
  49. package/dist/core/filing/refs.d.ts.map +1 -0
  50. package/dist/core/filing/refs.js +109 -0
  51. package/dist/core/filing/refs.js.map +1 -0
  52. package/dist/core/index.d.ts +2 -1
  53. package/dist/core/index.d.ts.map +1 -1
  54. package/dist/core/index.js +5 -2
  55. package/dist/core/index.js.map +1 -1
  56. package/dist/core/indexing/createViewDataProvider.d.ts +6 -0
  57. package/dist/core/indexing/createViewDataProvider.d.ts.map +1 -1
  58. package/dist/core/indexing/createViewDataProvider.js +26 -1
  59. package/dist/core/indexing/createViewDataProvider.js.map +1 -1
  60. package/dist/core/indexing/summary/DocumentSummaryStore.d.ts +43 -1
  61. package/dist/core/indexing/summary/DocumentSummaryStore.d.ts.map +1 -1
  62. package/dist/core/indexing/summary/DocumentSummaryStore.js +302 -2
  63. package/dist/core/indexing/summary/DocumentSummaryStore.js.map +1 -1
  64. package/dist/core/indexing/summary/SummaryVirtualViewDataProvider.d.ts +33 -2
  65. package/dist/core/indexing/summary/SummaryVirtualViewDataProvider.d.ts.map +1 -1
  66. package/dist/core/indexing/summary/SummaryVirtualViewDataProvider.js +129 -26
  67. package/dist/core/indexing/summary/SummaryVirtualViewDataProvider.js.map +1 -1
  68. package/dist/core/indexing/summary/types.d.ts +40 -0
  69. package/dist/core/indexing/summary/types.d.ts.map +1 -1
  70. package/dist/core/indexing/virtualviews/MindooDBVirtualViewDataProvider.d.ts +27 -2
  71. package/dist/core/indexing/virtualviews/MindooDBVirtualViewDataProvider.d.ts.map +1 -1
  72. package/dist/core/indexing/virtualviews/MindooDBVirtualViewDataProvider.js +106 -1
  73. package/dist/core/indexing/virtualviews/MindooDBVirtualViewDataProvider.js.map +1 -1
  74. package/dist/core/indexing/virtualviews/VirtualView.d.ts +70 -5
  75. package/dist/core/indexing/virtualviews/VirtualView.d.ts.map +1 -1
  76. package/dist/core/indexing/virtualviews/VirtualView.js +329 -28
  77. package/dist/core/indexing/virtualviews/VirtualView.js.map +1 -1
  78. package/dist/core/indexing/virtualviews/VirtualViewEntryData.d.ts +4 -22
  79. package/dist/core/indexing/virtualviews/VirtualViewEntryData.d.ts.map +1 -1
  80. package/dist/core/indexing/virtualviews/VirtualViewEntryData.js +175 -129
  81. package/dist/core/indexing/virtualviews/VirtualViewEntryData.js.map +1 -1
  82. package/dist/core/indexing/virtualviews/VirtualViewFactory.d.ts +28 -0
  83. package/dist/core/indexing/virtualviews/VirtualViewFactory.d.ts.map +1 -1
  84. package/dist/core/indexing/virtualviews/VirtualViewFactory.js +62 -0
  85. package/dist/core/indexing/virtualviews/VirtualViewFactory.js.map +1 -1
  86. package/dist/core/indexing/virtualviews/VirtualViewFilingJoin.d.ts +75 -0
  87. package/dist/core/indexing/virtualviews/VirtualViewFilingJoin.d.ts.map +1 -0
  88. package/dist/core/indexing/virtualviews/VirtualViewFilingJoin.js +163 -0
  89. package/dist/core/indexing/virtualviews/VirtualViewFilingJoin.js.map +1 -0
  90. package/dist/core/indexing/virtualviews/VirtualViewMergedNavigator.d.ts +112 -0
  91. package/dist/core/indexing/virtualviews/VirtualViewMergedNavigator.d.ts.map +1 -0
  92. package/dist/core/indexing/virtualviews/VirtualViewMergedNavigator.js +296 -0
  93. package/dist/core/indexing/virtualviews/VirtualViewMergedNavigator.js.map +1 -0
  94. package/dist/core/indexing/virtualviews/VirtualViewNavigator.d.ts +2 -0
  95. package/dist/core/indexing/virtualviews/VirtualViewNavigator.d.ts.map +1 -1
  96. package/dist/core/indexing/virtualviews/VirtualViewNavigator.js +10 -9
  97. package/dist/core/indexing/virtualviews/VirtualViewNavigator.js.map +1 -1
  98. package/dist/core/indexing/virtualviews/index.d.ts +2 -0
  99. package/dist/core/indexing/virtualviews/index.d.ts.map +1 -1
  100. package/dist/core/indexing/virtualviews/index.js +8 -1
  101. package/dist/core/indexing/virtualviews/index.js.map +1 -1
  102. package/dist/core/query/executeQuery.d.ts.map +1 -1
  103. package/dist/core/query/executeQuery.js +4 -0
  104. package/dist/core/query/executeQuery.js.map +1 -1
  105. package/dist/core/query/executeQueryInclude.d.ts.map +1 -1
  106. package/dist/core/query/executeQueryInclude.js +4 -0
  107. package/dist/core/query/executeQueryInclude.js.map +1 -1
  108. package/dist/core/query/queryView.d.ts.map +1 -1
  109. package/dist/core/query/queryView.js +4 -0
  110. package/dist/core/query/queryView.js.map +1 -1
  111. package/dist/core/types.d.ts +20 -0
  112. package/dist/core/types.d.ts.map +1 -1
  113. package/dist/core/types.js.map +1 -1
  114. package/package.json +1 -1
@@ -4,9 +4,12 @@ exports.VirtualViewFactory = exports.VirtualViewNavigatorBuilder = exports.Virtu
4
4
  const VirtualView_1 = require("./VirtualView");
5
5
  const VirtualViewColumn_1 = require("./VirtualViewColumn");
6
6
  const VirtualViewNavigator_1 = require("./VirtualViewNavigator");
7
+ const VirtualViewMergedNavigator_1 = require("./VirtualViewMergedNavigator");
7
8
  const MindooDBVirtualViewDataProvider_1 = require("./MindooDBVirtualViewDataProvider");
8
9
  const IViewEntryAccessCheck_1 = require("./IViewEntryAccessCheck");
9
10
  const createViewDataProvider_1 = require("../createViewDataProvider");
11
+ const evaluateExpression_1 = require("../../expressions/evaluateExpression");
12
+ const VirtualViewFilingJoin_1 = require("./VirtualViewFilingJoin");
10
13
  const types_1 = require("./types");
11
14
  /**
12
15
  * Builder for creating VirtualView instances with a fluent API
@@ -21,6 +24,8 @@ class VirtualViewBuilder {
21
24
  * summary-vs-documents per source (summary-first).
22
25
  */
23
26
  this.pendingDbSources = [];
27
+ /** Filing stores joined via `withFilingStore`, or null. */
28
+ this.filingJoin = null;
24
29
  }
25
30
  /**
26
31
  * Add a column to the view
@@ -97,6 +102,46 @@ class VirtualViewBuilder {
97
102
  this.pendingDbSources.push({ origin, db, filter, options });
98
103
  return this;
99
104
  }
105
+ /**
106
+ * Join a filing store into the view under `name`: column and filter
107
+ * expressions can then use `folders(name)` (the folder ids the document
108
+ * is filed in — typically a multi-value category) and
109
+ * `inFolder(name, folderId?)` (a selection, AND-combined with the rest of
110
+ * the filter). Filing lives in sidecar documents of the filing database
111
+ * (see `db.filing(store)`); when filing changes, exactly the affected
112
+ * documents are re-evaluated. References to databases that are not a
113
+ * data source of this view are ignored.
114
+ *
115
+ * @param source `{ db, store }` (optionally `decryptionKeyId`) or a
116
+ * filing store obtained from `db.filing(store)`.
117
+ */
118
+ withFilingStore(name, source) {
119
+ if (!this.filingJoin) {
120
+ this.filingJoin = new VirtualViewFilingJoin_1.VirtualViewFilingJoin();
121
+ }
122
+ this.filingJoin.add(name, source);
123
+ return this;
124
+ }
125
+ /** Every filing store name the columns and filters reference. */
126
+ collectReferencedFilingStores() {
127
+ const names = new Set();
128
+ const visit = (expression) => {
129
+ if (!expression)
130
+ return;
131
+ for (const name of (0, evaluateExpression_1.analyzeExpressionRequirements)(expression).filingStores) {
132
+ names.add(name);
133
+ }
134
+ };
135
+ for (const column of this.columns) {
136
+ visit(column.expression);
137
+ }
138
+ for (const source of this.pendingDbSources) {
139
+ if (source.filter && typeof source.filter !== "function") {
140
+ visit(source.filter);
141
+ }
142
+ }
143
+ return names;
144
+ }
100
145
  /**
101
146
  * Add a custom data provider
102
147
  */
@@ -114,6 +159,12 @@ class VirtualViewBuilder {
114
159
  * (possibly synced) summary configuration.
115
160
  */
116
161
  async build() {
162
+ for (const name of this.collectReferencedFilingStores()) {
163
+ if (name !== "*" && !this.filingJoin?.has(name)) {
164
+ throw new Error(`The view uses folders("${name}") / inFolder("${name}"), but no filing store "${name}" was ` +
165
+ `registered — add .withFilingStore("${name}", { db, store }).`);
166
+ }
167
+ }
117
168
  const providers = [...this.dataProviders];
118
169
  const dataSourceInfos = new Map();
119
170
  for (const source of this.pendingDbSources) {
@@ -140,6 +191,7 @@ class VirtualViewBuilder {
140
191
  }
141
192
  const view = new VirtualView_1.VirtualView(this.columns);
142
193
  view.setCategorizationStyle(this.categorizationStyle);
194
+ view.setFilingJoin(this.filingJoin);
143
195
  for (const provider of providers) {
144
196
  provider.init(view);
145
197
  view.addDataProvider(provider);
@@ -267,6 +319,16 @@ class VirtualViewFactory {
267
319
  static createNavigator(view) {
268
320
  return new VirtualViewNavigatorBuilder(view);
269
321
  }
322
+ /**
323
+ * Create a navigator that reads the documents of several categories as
324
+ * one sorted, de-duplicated list (k-way merge over the document sort
325
+ * columns) — e.g. the inbox folders of several accounts from one
326
+ * "mail by folder" view. Each path is a category-value path from the
327
+ * top, like `["acc1/inbox"]`; paths that do not exist are ignored.
328
+ */
329
+ static createMergedNavigator(view, rootCategoryPaths, options) {
330
+ return new VirtualViewMergedNavigator_1.VirtualViewMergedNavigator(view, rootCategoryPaths, options);
331
+ }
270
332
  /**
271
333
  * Create a simple navigator for a view (all categories and documents)
272
334
  */
@@ -1 +1 @@
1
- {"version":3,"file":"VirtualViewFactory.js","sourceRoot":"","sources":["../../../../src/core/indexing/virtualviews/VirtualViewFactory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VirtualViewFactory.js","sourceRoot":"","sources":["../../../../src/core/indexing/virtualviews/VirtualViewFactory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ import type { MindooDB } from "../../types";
2
+ import type { MindooFilingStore } from "../../filing/MindooFilingStore";
3
+ import type { MindooDBAppExpression } from "../../expressions/types";
4
+ /** Where a view's filing store comes from (`VirtualViewBuilder.withFilingStore`). */
5
+ export type FilingStoreSource = MindooFilingStore | {
6
+ db: MindooDB;
7
+ store: string;
8
+ decryptionKeyId?: string;
9
+ };
10
+ /** Filing changes handed to data providers before their update. */
11
+ export type FilingRefChanges = ReadonlySet<string> | "all";
12
+ /**
13
+ * Optional data-provider capability: providers that evaluate `folders()` /
14
+ * `inFolder()` receive the physical keys (`"<tenantId>/<dbId>/<docId>"`) of
15
+ * documents whose folder membership changed, so they can re-evaluate them
16
+ * even though the documents themselves did not change.
17
+ */
18
+ export interface IFilingAwareDataProvider {
19
+ onFilingChanges(changes: FilingRefChanges): void;
20
+ }
21
+ export declare function isFilingAwareDataProvider(provider: unknown): provider is IFilingAwareDataProvider;
22
+ /** Persisted positions of a view's filing join (part of the view cache). */
23
+ export type FilingJoinState = Record<string, {
24
+ generation: string;
25
+ seq: number;
26
+ } | null>;
27
+ /**
28
+ * The filing stores a VirtualView joins (`withFilingStore`), as seen by its
29
+ * data providers: membership lookups for `folders()` / `inFolder()` and the
30
+ * per-update delta of documents whose membership changed.
31
+ *
32
+ * Filing indexes are shared per (database, store); the join only tracks how
33
+ * far THIS view has consumed each index's change log.
34
+ */
35
+ export declare class VirtualViewFilingJoin {
36
+ private readonly stores;
37
+ /** Register a filing store under the name expressions use. */
38
+ add(name: string, source: FilingStoreSource): void;
39
+ /** Names of the joined filing stores. */
40
+ getNames(): string[];
41
+ has(name: string): boolean;
42
+ /** The filing store registered under `name`. */
43
+ getFilingStore(name: string): MindooFilingStore | undefined;
44
+ /** The filing databases (for live bindings). */
45
+ getDatabases(): MindooDB[];
46
+ /**
47
+ * Bring every joined index up to date and return the documents whose
48
+ * membership changed since this view's last refresh (`"all"` when the
49
+ * view has to re-evaluate everything, e.g. on its first update).
50
+ * Advances the view's positions — callers hand the result to their
51
+ * providers, which keep it until processed.
52
+ */
53
+ refresh(): Promise<FilingRefChanges>;
54
+ /** Folder ids of a document (physical key) in the store registered as `name`. */
55
+ foldersOf(name: string, physRef: string): readonly string[];
56
+ /** Physical keys of the members of a folder in the store registered as `name`. */
57
+ membersOf(name: string, folderId: string): readonly string[];
58
+ /** Whether every joined index has been loaded (lookups are meaningful). */
59
+ isReady(): boolean;
60
+ /** Register a listener fired whenever a joined index changes. */
61
+ onDidChange(listener: () => void): () => void;
62
+ exportState(): FilingJoinState;
63
+ importState(state: FilingJoinState | undefined): void;
64
+ }
65
+ /**
66
+ * The folder a filter is driven by: `inFolder(store, "<literal id>")` as the
67
+ * whole filter or as one operand of a top-level `and`. Only such members
68
+ * can match, so a provider may read the folder's members instead of every
69
+ * document. `null` when the filter is not of that shape.
70
+ */
71
+ export declare function findDrivingFolder(filter: MindooDBAppExpression | null | undefined): {
72
+ store: string;
73
+ folderId: string;
74
+ } | null;
75
+ //# sourceMappingURL=VirtualViewFilingJoin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VirtualViewFilingJoin.d.ts","sourceRoot":"","sources":["../../../../src/core/indexing/virtualviews/VirtualViewFilingJoin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAExE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAErE,qFAAqF;AACrF,MAAM,MAAM,iBAAiB,GACzB,iBAAiB,GACjB;IAAE,EAAE,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9D,mEAAmE;AACnE,MAAM,MAAM,gBAAgB,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;AAE3D;;;;;GAKG;AACH,MAAM,WAAW,wBAAwB;IACvC,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAC;CAClD;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,wBAAwB,CAEjG;AAQD,4EAA4E;AAC5E,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAAC;AAEzF;;;;;;;GAOG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6C;IAEpE,8DAA8D;IAC9D,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAuBlD,yCAAyC;IACzC,QAAQ,IAAI,MAAM,EAAE;IAIpB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,gDAAgD;IAChD,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAI3D,gDAAgD;IAChD,YAAY,IAAI,QAAQ,EAAE;IAI1B;;;;;;OAMG;IACG,OAAO,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAqB1C,iFAAiF;IACjF,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE;IAI3D,kFAAkF;IAClF,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE;IAI5D,2EAA2E;IAC3E,OAAO,IAAI,OAAO;IAOlB,iEAAiE;IACjE,WAAW,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAgB7C,WAAW,IAAI,eAAe;IAQ9B,WAAW,CAAC,KAAK,EAAE,eAAe,GAAG,SAAS,GAAG,IAAI;CAStD;AAID;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,qBAAqB,GAAG,IAAI,GAAG,SAAS,GAC/C;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAoB5C"}
@@ -0,0 +1,163 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VirtualViewFilingJoin = void 0;
4
+ exports.isFilingAwareDataProvider = isFilingAwareDataProvider;
5
+ exports.findDrivingFolder = findDrivingFolder;
6
+ function isFilingAwareDataProvider(provider) {
7
+ return typeof provider?.onFilingChanges === "function";
8
+ }
9
+ /**
10
+ * The filing stores a VirtualView joins (`withFilingStore`), as seen by its
11
+ * data providers: membership lookups for `folders()` / `inFolder()` and the
12
+ * per-update delta of documents whose membership changed.
13
+ *
14
+ * Filing indexes are shared per (database, store); the join only tracks how
15
+ * far THIS view has consumed each index's change log.
16
+ */
17
+ class VirtualViewFilingJoin {
18
+ constructor() {
19
+ this.stores = new Map();
20
+ }
21
+ /** Register a filing store under the name expressions use. */
22
+ add(name, source) {
23
+ if (!name) {
24
+ throw new Error("withFilingStore: name must be a non-empty string.");
25
+ }
26
+ if (this.stores.has(name)) {
27
+ throw new Error(`Filing store "${name}" is already registered on this view.`);
28
+ }
29
+ let filingStore;
30
+ if ("getIndex" in source && typeof source.getIndex === "function") {
31
+ filingStore = source;
32
+ }
33
+ else {
34
+ const spec = source;
35
+ if (!spec.db?.filing) {
36
+ throw new Error(`withFilingStore("${name}"): the database does not support filing.`);
37
+ }
38
+ filingStore = spec.db.filing(spec.store, spec.decryptionKeyId !== undefined ? { decryptionKeyId: spec.decryptionKeyId } : undefined);
39
+ }
40
+ this.stores.set(name, { filingStore, index: null, position: null });
41
+ }
42
+ /** Names of the joined filing stores. */
43
+ getNames() {
44
+ return Array.from(this.stores.keys());
45
+ }
46
+ has(name) {
47
+ return this.stores.has(name);
48
+ }
49
+ /** The filing store registered under `name`. */
50
+ getFilingStore(name) {
51
+ return this.stores.get(name)?.filingStore;
52
+ }
53
+ /** The filing databases (for live bindings). */
54
+ getDatabases() {
55
+ return Array.from(new Set(Array.from(this.stores.values(), (s) => s.filingStore.getDatabase())));
56
+ }
57
+ /**
58
+ * Bring every joined index up to date and return the documents whose
59
+ * membership changed since this view's last refresh (`"all"` when the
60
+ * view has to re-evaluate everything, e.g. on its first update).
61
+ * Advances the view's positions — callers hand the result to their
62
+ * providers, which keep it until processed.
63
+ */
64
+ async refresh() {
65
+ let all = false;
66
+ const refs = new Set();
67
+ for (const joined of this.stores.values()) {
68
+ if (!joined.index) {
69
+ joined.index = await joined.filingStore.getIndex();
70
+ }
71
+ await joined.index.update();
72
+ const changes = joined.index.changesSince(joined.position);
73
+ joined.position = { generation: changes.generation, seq: changes.seq };
74
+ if (changes.refs === "all") {
75
+ all = true;
76
+ }
77
+ else if (!all) {
78
+ for (const ref of changes.refs) {
79
+ refs.add(ref);
80
+ }
81
+ }
82
+ }
83
+ return all ? "all" : refs;
84
+ }
85
+ /** Folder ids of a document (physical key) in the store registered as `name`. */
86
+ foldersOf(name, physRef) {
87
+ return this.stores.get(name)?.index?.foldersOf(physRef) ?? NO_FOLDERS;
88
+ }
89
+ /** Physical keys of the members of a folder in the store registered as `name`. */
90
+ membersOf(name, folderId) {
91
+ return this.stores.get(name)?.index?.membersOf(folderId) ?? NO_FOLDERS;
92
+ }
93
+ /** Whether every joined index has been loaded (lookups are meaningful). */
94
+ isReady() {
95
+ for (const joined of this.stores.values()) {
96
+ if (!joined.index)
97
+ return false;
98
+ }
99
+ return true;
100
+ }
101
+ /** Register a listener fired whenever a joined index changes. */
102
+ onDidChange(listener) {
103
+ const unsubscribes = [];
104
+ let disposed = false;
105
+ for (const joined of this.stores.values()) {
106
+ void joined.filingStore.getIndex().then((index) => {
107
+ if (!disposed) {
108
+ unsubscribes.push(index.onDidChange(listener));
109
+ }
110
+ }).catch(() => undefined);
111
+ }
112
+ return () => {
113
+ disposed = true;
114
+ for (const unsubscribe of unsubscribes)
115
+ unsubscribe();
116
+ };
117
+ }
118
+ exportState() {
119
+ const state = {};
120
+ for (const [name, joined] of this.stores) {
121
+ state[name] = joined.position;
122
+ }
123
+ return state;
124
+ }
125
+ importState(state) {
126
+ if (!state)
127
+ return;
128
+ for (const [name, position] of Object.entries(state)) {
129
+ const joined = this.stores.get(name);
130
+ if (joined && position && typeof position.generation === "string" && typeof position.seq === "number") {
131
+ joined.position = { ...position };
132
+ }
133
+ }
134
+ }
135
+ }
136
+ exports.VirtualViewFilingJoin = VirtualViewFilingJoin;
137
+ const NO_FOLDERS = Object.freeze([]);
138
+ /**
139
+ * The folder a filter is driven by: `inFolder(store, "<literal id>")` as the
140
+ * whole filter or as one operand of a top-level `and`. Only such members
141
+ * can match, so a provider may read the folder's members instead of every
142
+ * document. `null` when the filter is not of that shape.
143
+ */
144
+ function findDrivingFolder(filter) {
145
+ if (!filter || filter.kind !== "operation") {
146
+ return null;
147
+ }
148
+ const candidates = filter.op === "and" ? filter.args : [filter];
149
+ for (const candidate of candidates) {
150
+ if (candidate.kind === "operation" &&
151
+ candidate.op === "inFolder" &&
152
+ candidate.args.length >= 2 &&
153
+ candidate.args[0]?.kind === "literal" &&
154
+ candidate.args[1]?.kind === "literal" &&
155
+ typeof candidate.args[0].value === "string" &&
156
+ typeof candidate.args[1].value === "string" &&
157
+ candidate.args[1].value !== "") {
158
+ return { store: candidate.args[0].value, folderId: candidate.args[1].value };
159
+ }
160
+ }
161
+ return null;
162
+ }
163
+ //# sourceMappingURL=VirtualViewFilingJoin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VirtualViewFilingJoin.js","sourceRoot":"","sources":["../../../../src/core/indexing/virtualviews/VirtualViewFilingJoin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,112 @@
1
+ import type { VirtualView } from "./VirtualView";
2
+ import type { VirtualViewEntryData } from "./VirtualViewEntryData";
3
+ /**
4
+ * Position of a document entry in a merged read: its document sort key.
5
+ * JSON-serializable, so it can travel as a paging token.
6
+ */
7
+ export interface MergedEntryKey {
8
+ /** Document sort values. */
9
+ v: unknown[];
10
+ /** Origin of the entry. */
11
+ o: string;
12
+ /** Document id of the entry. */
13
+ d: string;
14
+ }
15
+ /** One page of a merged read. */
16
+ export interface MergedNavigatorPage {
17
+ entries: VirtualViewEntryData[];
18
+ /**
19
+ * Key of the last returned entry — pass it as `after` (forward) or
20
+ * `before` (backward) to read the next page; `null` when the read
21
+ * reached the end.
22
+ */
23
+ nextKey: MergedEntryKey | null;
24
+ }
25
+ /** Options of {@link VirtualViewMergedNavigator}. */
26
+ export interface MergedNavigatorOptions {
27
+ /** Optional visibility filter (e.g. reader checks); hidden entries are skipped. */
28
+ accessCheck?: (entry: VirtualViewEntryData) => boolean;
29
+ }
30
+ /**
31
+ * Reads the documents of SEVERAL categories of one view as one sorted list
32
+ * — a k-way merge over the document sort columns. All categories of a view
33
+ * share the same column design, so their documents' sort keys are
34
+ * comparable.
35
+ *
36
+ * Typical use: one persistent "mail by folder" view, where the folder is
37
+ * the first (multi-value) category, read as "inbox of accounts A and B" or
38
+ * "all folders named Projects" without rebuilding anything. A document in
39
+ * several of the read categories appears once: its occurrences share the
40
+ * same sort key (values, origin, doc id), so they meet in the merge and the
41
+ * duplicate is dropped.
42
+ *
43
+ * Only document entries are returned (sub-categories below the given
44
+ * categories are walked through; their documents are merged by the
45
+ * document sort columns, not grouped). Paging is key-based: a page costs
46
+ * O(page size × number of categories), plus a binary search per category
47
+ * to find the start (a category with sub-categories is collected and sorted
48
+ * first, O(n log n) in its size).
49
+ */
50
+ export declare class VirtualViewMergedNavigator {
51
+ private readonly view;
52
+ private readonly paths;
53
+ private readonly accessCheck;
54
+ private current;
55
+ constructor(view: VirtualView, rootCategoryPaths: unknown[][], options?: MergedNavigatorOptions);
56
+ /**
57
+ * The category entries of the paths, resolved on every read: in a live
58
+ * view a category appears with its first document and is removed (and
59
+ * later re-created) with its last one.
60
+ */
61
+ private get roots();
62
+ getView(): VirtualView;
63
+ /** The category entries that were found (missing paths are left out). */
64
+ getRootEntries(): VirtualViewEntryData[];
65
+ /**
66
+ * Sum of the documents below the categories — an upper bound of the
67
+ * merged count (documents in several of them count more than once).
68
+ * Use {@link countDocuments} for the exact number.
69
+ */
70
+ getDocumentCountUpperBound(): number;
71
+ /** Exact number of distinct, visible documents (walks all of them). */
72
+ countDocuments(): number;
73
+ /** Comparator for document sort keys (any leaf category's child comparator). */
74
+ private comparator;
75
+ static keyOf(entry: VirtualViewEntryData): MergedEntryKey;
76
+ private static toSortKey;
77
+ /** The merged, de-duplicated document stream in one direction. */
78
+ documents(direction: "forward" | "backward", start: MergedEntryKey | null): Generator<VirtualViewEntryData>;
79
+ private readPage;
80
+ /** Read up to `limit` documents in view order, after `after` (exclusive). */
81
+ readForward(options?: {
82
+ after?: MergedEntryKey | null;
83
+ limit?: number;
84
+ }): MergedNavigatorPage;
85
+ /** Read up to `limit` documents in reverse view order, before `before` (exclusive). */
86
+ readBackward(options?: {
87
+ before?: MergedEntryKey | null;
88
+ limit?: number;
89
+ }): MergedNavigatorPage;
90
+ /** Iterate all documents forward (async, like `VirtualViewNavigator.entriesForward`). */
91
+ entriesForward(after?: MergedEntryKey | null): AsyncGenerator<VirtualViewEntryData>;
92
+ /** Iterate all documents backward. */
93
+ entriesBackward(before?: MergedEntryKey | null): AsyncGenerator<VirtualViewEntryData>;
94
+ getCurrentEntry(): VirtualViewEntryData | null;
95
+ gotoFirst(): boolean;
96
+ gotoLast(): boolean;
97
+ gotoNext(): boolean;
98
+ gotoPrev(): boolean;
99
+ /** Move the cursor to the document with this key (or the first after it). */
100
+ gotoKey(key: MergedEntryKey): boolean;
101
+ /**
102
+ * The document at a tree position string of the underlying view (as
103
+ * returned by `entry.getPositionStr()`), when it belongs to one of the
104
+ * merged categories — so hosts can keep using ordinary positions as
105
+ * paging tokens. `null` otherwise.
106
+ */
107
+ getPos(position: string): VirtualViewEntryData | null;
108
+ /** Move the cursor to the document at a tree position (see {@link getPos}). */
109
+ gotoPos(position: string): boolean;
110
+ private moveTo;
111
+ }
112
+ //# sourceMappingURL=VirtualViewMergedNavigator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VirtualViewMergedNavigator.d.ts","sourceRoot":"","sources":["../../../../src/core/indexing/virtualviews/VirtualViewMergedNavigator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAMnE;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,4BAA4B;IAC5B,CAAC,EAAE,OAAO,EAAE,CAAC;IACb,2BAA2B;IAC3B,CAAC,EAAE,MAAM,CAAC;IACV,gCAAgC;IAChC,CAAC,EAAE,MAAM,CAAC;CACX;AAED,iCAAiC;AACjC,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAChC;;;;OAIG;IACH,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;CAChC;AAED,qDAAqD;AACrD,MAAM,WAAW,sBAAsB;IACrC,mFAAmF;IACnF,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,OAAO,CAAC;CACxD;AAyED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,0BAA0B;IACrC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAc;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAc;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoD;IAChF,OAAO,CAAC,OAAO,CAAqC;gBAExC,IAAI,EAAE,WAAW,EAAE,iBAAiB,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,sBAAsB;IAM/F;;;;OAIG;IACH,OAAO,KAAK,KAAK,GAUhB;IAED,OAAO,IAAI,WAAW;IAItB,yEAAyE;IACzE,cAAc,IAAI,oBAAoB,EAAE;IAIxC;;;;OAIG;IACH,0BAA0B,IAAI,MAAM;IAIpC,uEAAuE;IACvE,cAAc,IAAI,MAAM;IAQxB,gFAAgF;IAChF,OAAO,CAAC,UAAU;IAKlB,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,oBAAoB,GAAG,cAAc;IAKzD,OAAO,CAAC,MAAM,CAAC,SAAS;IAIxB,kEAAkE;IACjE,SAAS,CAAC,SAAS,EAAE,SAAS,GAAG,UAAU,EAAE,KAAK,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,CAAC,oBAAoB,CAAC;IA0C5G,OAAO,CAAC,QAAQ;IAoBhB,6EAA6E;IAC7E,WAAW,CAAC,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,mBAAmB;IAI7F,uFAAuF;IACvF,YAAY,CAAC,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,mBAAmB;IAI/F,yFAAyF;IAClF,cAAc,CAAC,KAAK,CAAC,EAAE,cAAc,GAAG,IAAI,GAAG,cAAc,CAAC,oBAAoB,CAAC;IAI1F,sCAAsC;IAC/B,eAAe,CAAC,MAAM,CAAC,EAAE,cAAc,GAAG,IAAI,GAAG,cAAc,CAAC,oBAAoB,CAAC;IAM5F,eAAe,IAAI,oBAAoB,GAAG,IAAI;IAI9C,SAAS,IAAI,OAAO;IAIpB,QAAQ,IAAI,OAAO;IAInB,QAAQ,IAAI,OAAO;IAMnB,QAAQ,IAAI,OAAO;IAMnB,6EAA6E;IAC7E,OAAO,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO;IAcrC;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI;IAerD,+EAA+E;IAC/E,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIlC,OAAO,CAAC,MAAM;CAKf"}