emberflow 1.1.4 → 1.1.5

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.
@@ -1,7 +1,13 @@
1
- export declare function initDbStructure(dbStructure: Record<string, object>, Entity: Record<string, string>): {
2
- docPaths: Record<string, string>;
3
- docPathsRegex: Record<string, RegExp>;
4
- colPaths: {
5
- [key: string]: string;
1
+ export declare enum InternalEntity {
2
+ Internal = "internal",
3
+ ForDistribution = "for-distribution"
4
+ }
5
+ export declare const internalDbStructure: {
6
+ "@internal": {
7
+ internal: {
8
+ distributions: {
9
+ "for-distribution": {};
10
+ };
11
+ };
6
12
  };
7
13
  };
@@ -1,67 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.initDbStructure = void 0;
4
- function traverseBFS(obj) {
5
- const paths = [];
6
- const queue = [];
7
- // Enqueue the root object with an empty path
8
- queue.push({ node: obj, path: "" });
9
- while (queue.length > 0) {
10
- // Dequeue the next node
11
- const item = queue.shift();
12
- if (!item)
13
- continue;
14
- const node = item.node;
15
- const path = item.path;
16
- // Only add non-blank paths to the paths array
17
- if (path !== "") {
18
- paths.push(path);
19
- }
20
- // Enqueue the child objects with their paths
21
- for (const key in node) {
22
- if (typeof node[key] === "object" && node[key] !== null) {
23
- const childPath = path === "" ? key : `${path}/${key}`;
24
- queue.push({ node: node[key], path: childPath });
25
- }
26
- }
27
- }
28
- return paths;
29
- }
30
- function mapDocPaths(paths, Entity) {
31
- const docPathsMap = {};
32
- for (const entityKey of Object.values(Entity)) {
33
- const entityPaths = paths.filter((path) => path.endsWith(`/${entityKey}`));
34
- if (entityPaths.length > 0) {
35
- const entityPath = entityPaths[0];
36
- docPathsMap[entityKey] = entityPath.split("/").map((element) => {
37
- if (Object.values(Entity).includes(element)) {
38
- return `{${element}Id}`;
39
- }
40
- else {
41
- return element;
42
- }
43
- }).join("/");
44
- }
45
- }
46
- return docPathsMap;
47
- }
48
- function mapColPaths(docPathsMap) {
49
- const colPathsMap = {};
50
- for (const [entityKey, docPath] of Object.entries(docPathsMap)) {
51
- colPathsMap[entityKey] = docPath.split("/").slice(0, -1).join("/");
52
- }
53
- return colPathsMap;
54
- }
55
- function initDbStructure(dbStructure, Entity) {
56
- const paths = traverseBFS(dbStructure);
57
- const docPaths = mapDocPaths(paths, Entity);
58
- const docPathsRegex = {};
59
- for (const [key, value] of Object.entries(docPaths)) {
60
- const regexPattern = value.replace(/{(\w+)Id}/g, "([^/]+)");
61
- docPathsRegex[key] = new RegExp(`^${regexPattern}$`);
62
- }
63
- const colPaths = mapColPaths(docPaths);
64
- return { docPaths, docPathsRegex, colPaths };
65
- }
66
- exports.initDbStructure = initDbStructure;
3
+ exports.internalDbStructure = exports.InternalEntity = void 0;
4
+ var InternalEntity;
5
+ (function (InternalEntity) {
6
+ InternalEntity["Internal"] = "internal";
7
+ InternalEntity["ForDistribution"] = "for-distribution";
8
+ })(InternalEntity = exports.InternalEntity || (exports.InternalEntity = {}));
9
+ exports.internalDbStructure = {
10
+ "@internal": {
11
+ [InternalEntity.Internal]: {
12
+ distributions: {
13
+ [InternalEntity.ForDistribution]: {},
14
+ },
15
+ },
16
+ },
17
+ };
67
18
  //# sourceMappingURL=db-structure.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"db-structure.js","sourceRoot":"","sources":["../src/db-structure.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"db-structure.js","sourceRoot":"","sources":["../src/db-structure.ts"],"names":[],"mappings":";;;AACA,IAAY,cAGX;AAHD,WAAY,cAAc;IACtB,uCAAqB,CAAA;IACrB,sDAAoC,CAAA;AACxC,CAAC,EAHW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAGzB;AACY,QAAA,mBAAmB,GAAG;IACjC,WAAW,EAAE;QACX,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;YACzB,aAAa,EAAE;gBACb,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,EAAE;aACrC;SACF;KACF;CACF,CAAC"}
@@ -8,16 +8,17 @@ export declare const _mockable: {
8
8
  createNowTimestamp: () => firestore.Timestamp;
9
9
  };
10
10
  export declare function distribute(docsByDstPath: Map<string, LogicResultDoc>): Promise<void>;
11
+ export declare function distributeLater(docsByDstPath: Map<string, LogicResultDoc>, id: string): Promise<void>;
11
12
  export declare function validateForm(entity: string, form: FirebaseFirestore.DocumentData): Promise<ValidateFormResult>;
12
13
  export declare function getFormModifiedFields(form: DocumentData, document: DocumentData): DocumentData;
13
14
  export declare function delayFormSubmissionAndCheckIfCancelled(delay: number, formRef: Reference): Promise<boolean>;
14
- export declare function runBusinessLogics(actionType: LogicActionType, formModifiedFields: DocumentData, entity: string, action: Action): Promise<LogicResult[]>;
15
+ export declare function runBusinessLogics(actionType: LogicActionType, formModifiedFields: DocumentData, entity: string, action: Action, distributeFn: (logicResults: LogicResult[], page: number) => Promise<void>): Promise<void>;
15
16
  export declare function groupDocsByUserAndDstPath(docsByDstPath: Map<string, LogicResultDoc>, userId: string): {
16
17
  userDocsByDstPath: Map<string, LogicResultDoc>;
17
18
  otherUsersDocsByDstPath: Map<string, LogicResultDoc>;
18
19
  };
19
20
  export declare function getSecurityFn(entity: string): SecurityFn;
20
- export declare function expandConsolidateAndGroupByDstPath(logicResults: LogicResult[]): Promise<Map<string, LogicResultDoc>>;
21
+ export declare function expandConsolidateAndGroupByDstPath(logicDocs: LogicResultDoc[]): Promise<Map<string, LogicResultDoc>>;
21
22
  export declare function runViewLogics(dstPathLogicDocsMap: Map<string, LogicResultDoc>): Promise<LogicResult[]>;
22
23
  export declare function runPeerSyncViews(userDocsByDstPath: Map<string, LogicResultDoc>): Promise<LogicResult[]>;
23
24
  export declare function processScheduledEntities(): Promise<void>;
@@ -23,13 +23,14 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.onDeleteFunction = exports.processScheduledEntities = exports.runPeerSyncViews = exports.runViewLogics = exports.expandConsolidateAndGroupByDstPath = exports.getSecurityFn = exports.groupDocsByUserAndDstPath = exports.runBusinessLogics = exports.delayFormSubmissionAndCheckIfCancelled = exports.getFormModifiedFields = exports.validateForm = exports.distribute = exports._mockable = void 0;
26
+ exports.onDeleteFunction = exports.processScheduledEntities = exports.runPeerSyncViews = exports.runViewLogics = exports.expandConsolidateAndGroupByDstPath = exports.getSecurityFn = exports.groupDocsByUserAndDstPath = exports.runBusinessLogics = exports.delayFormSubmissionAndCheckIfCancelled = exports.getFormModifiedFields = exports.validateForm = exports.distributeLater = exports.distribute = exports._mockable = void 0;
27
27
  const index_1 = require("./index");
28
28
  const view_logics_1 = require("./logics/view-logics");
29
29
  const paths_1 = require("./utils/paths");
30
30
  const misc_1 = require("./utils/misc");
31
31
  const batch = __importStar(require("./utils/batch"));
32
32
  const functions_1 = require("@google-cloud/functions");
33
+ const lib_1 = require("emberflow-admin-client/lib");
33
34
  exports._mockable = {
34
35
  getViewLogicsConfig: () => index_1.viewLogicConfigs,
35
36
  createNowTimestamp: () => index_1.admin.firestore.Timestamp.now(),
@@ -92,6 +93,26 @@ async function distribute(docsByDstPath) {
92
93
  }
93
94
  }
94
95
  exports.distribute = distribute;
96
+ async function distributeLater(docsByDstPath, id) {
97
+ console.log("Submitting to form for later processing...");
98
+ docsByDstPath.forEach((doc, dstPath) => {
99
+ if (doc.priority === "normal") {
100
+ doc.priority = "high";
101
+ }
102
+ else if (doc.priority === "low") {
103
+ doc.priority = "normal";
104
+ }
105
+ });
106
+ const formData = {
107
+ "@docPath": `@internal/forDistribution/distributions/${id}`,
108
+ "@actionType": "create",
109
+ "logicResultDocs": Array.from(docsByDstPath.values()),
110
+ };
111
+ await (0, lib_1.submitForm)(formData, (status, data, isLastUpdate) => {
112
+ console.log(`Status: ${status}, data: ${JSON.stringify(data)}, isLastUpdate: ${isLastUpdate}`);
113
+ });
114
+ }
115
+ exports.distributeLater = distributeLater;
95
116
  async function validateForm(entity, form) {
96
117
  let hasValidationError = false;
97
118
  console.info(`Validating form for entity ${entity}`);
@@ -133,33 +154,50 @@ async function delayFormSubmissionAndCheckIfCancelled(delay, formRef) {
133
154
  return cancelFormSubmission;
134
155
  }
135
156
  exports.delayFormSubmissionAndCheckIfCancelled = delayFormSubmissionAndCheckIfCancelled;
136
- async function runBusinessLogics(actionType, formModifiedFields, entity, action) {
157
+ async function runBusinessLogics(actionType, formModifiedFields, entity, action, distributeFn) {
137
158
  const matchingLogics = index_1.logicConfigs.filter((logic) => {
138
159
  return ((logic.actionTypes === "all" || logic.actionTypes.includes(actionType)) &&
139
160
  (logic.modifiedFields === "all" || logic.modifiedFields.some((field) => field in formModifiedFields)) &&
140
161
  (logic.entities === "all" || logic.entities.includes(entity)));
141
162
  });
142
- return await Promise.all(matchingLogics.map(async (logic) => {
143
- const start = performance.now();
144
- try {
145
- const result = await logic.logicFn(action);
146
- const end = performance.now();
147
- const execTime = end - start;
148
- return Object.assign(Object.assign({}, result), { execTime, timeFinished: index_1.admin.firestore.Timestamp.now() });
149
- }
150
- catch (e) {
151
- const end = performance.now();
152
- const execTime = end - start;
153
- return {
154
- name: logic.name,
155
- status: "error",
156
- documents: [],
157
- execTime,
158
- message: e.message,
159
- timeFinished: index_1.admin.firestore.Timestamp.now()
160
- };
163
+ const nextPageMarkers = Array(matchingLogics.length).fill(undefined);
164
+ let page = 0;
165
+ while (matchingLogics.length > 0) {
166
+ const logicResults = [];
167
+ for (let i = matchingLogics.length - 1; i >= 0; i--) {
168
+ const start = performance.now();
169
+ const logic = matchingLogics[i];
170
+ try {
171
+ const result = await logic.logicFn(action, nextPageMarkers[i]);
172
+ const end = performance.now();
173
+ const execTime = end - start;
174
+ const { status, nextPage } = result;
175
+ if (status === "finished") {
176
+ matchingLogics.splice(i, 1);
177
+ nextPageMarkers.splice(i, 1);
178
+ }
179
+ else if (status === "partial-result") {
180
+ nextPageMarkers[i] = nextPage;
181
+ }
182
+ logicResults.push(Object.assign(Object.assign({}, result), { execTime, timeFinished: index_1.admin.firestore.Timestamp.now() }));
183
+ }
184
+ catch (e) {
185
+ const end = performance.now();
186
+ const execTime = end - start;
187
+ matchingLogics.splice(i, 1);
188
+ nextPageMarkers.splice(i, 1);
189
+ logicResults.push({
190
+ name: logic.name,
191
+ status: "error",
192
+ documents: [],
193
+ execTime,
194
+ message: e.message,
195
+ timeFinished: index_1.admin.firestore.Timestamp.now(),
196
+ });
197
+ }
161
198
  }
162
- }));
199
+ await distributeFn(logicResults, page++);
200
+ }
163
201
  }
164
202
  exports.runBusinessLogics = runBusinessLogics;
165
203
  function groupDocsByUserAndDstPath(docsByDstPath, userId) {
@@ -181,7 +219,7 @@ function getSecurityFn(entity) {
181
219
  return index_1.securityConfig[entity];
182
220
  }
183
221
  exports.getSecurityFn = getSecurityFn;
184
- async function expandConsolidateAndGroupByDstPath(logicResults) {
222
+ async function expandConsolidateAndGroupByDstPath(logicDocs) {
185
223
  function warnOverwritingKeys(existing, incoming, type, dstPath) {
186
224
  for (const key in incoming) {
187
225
  if (Object.prototype.hasOwnProperty.call(existing, key)) {
@@ -221,67 +259,63 @@ async function expandConsolidateAndGroupByDstPath(logicResults) {
221
259
  }
222
260
  async function expandRecursiveActions() {
223
261
  const expandedLogicResultDocs = [];
224
- for (const logicResult of logicResults) {
225
- for (let i = logicResult.documents.length - 1; i >= 0; i--) {
226
- const logicResultDoc = logicResult.documents[i];
227
- const { action, dstPath, srcPath, skipEntityDuringRecursion, } = logicResultDoc;
228
- if (!["recursive-delete", "recursive-copy"].includes(action))
229
- continue;
230
- const toExpandPath = action === "recursive-delete" ? dstPath : srcPath;
231
- if (!toExpandPath) {
232
- continue;
233
- }
234
- const subDocPaths = await (0, paths_1.expandAndGroupDocPathsByEntity)(toExpandPath, undefined, skipEntityDuringRecursion);
235
- for (const [_, paths] of Object.entries(subDocPaths)) {
236
- for (const path of paths) {
237
- if (action === "recursive-delete") {
238
- expandedLogicResultDocs.push({
239
- action: "delete",
240
- dstPath: path,
241
- });
242
- }
243
- else if (action === "recursive-copy" && srcPath) {
244
- const absoluteDstPath = path.replace(srcPath, dstPath);
245
- const data = (await index_1.db.doc(path).get()).data();
246
- expandedLogicResultDocs.push({
247
- action: "merge",
248
- doc: data,
249
- dstPath: absoluteDstPath,
250
- });
251
- }
262
+ for (let i = logicDocs.length - 1; i >= 0; i--) {
263
+ const logicResultDoc = logicDocs[i];
264
+ const { action, dstPath, srcPath, skipEntityDuringRecursion, priority, } = logicResultDoc;
265
+ if (!["recursive-delete", "recursive-copy"].includes(action))
266
+ continue;
267
+ const toExpandPath = action === "recursive-delete" ? dstPath : srcPath;
268
+ if (!toExpandPath) {
269
+ continue;
270
+ }
271
+ const subDocPaths = await (0, paths_1.expandAndGroupDocPathsByEntity)(toExpandPath, undefined, skipEntityDuringRecursion);
272
+ for (const [_, paths] of Object.entries(subDocPaths)) {
273
+ for (const path of paths) {
274
+ if (action === "recursive-delete") {
275
+ expandedLogicResultDocs.push({
276
+ action: "delete",
277
+ dstPath: path,
278
+ priority,
279
+ });
280
+ }
281
+ else if (action === "recursive-copy" && srcPath) {
282
+ const absoluteDstPath = path.replace(srcPath, dstPath);
283
+ const data = (await index_1.db.doc(path).get()).data();
284
+ expandedLogicResultDocs.push({
285
+ action: "merge",
286
+ doc: data,
287
+ dstPath: absoluteDstPath,
288
+ priority,
289
+ });
252
290
  }
253
291
  }
254
- logicResult.documents.splice(i, 1, ...expandedLogicResultDocs);
255
292
  }
293
+ logicDocs.splice(i, 1, ...expandedLogicResultDocs);
256
294
  }
257
295
  }
258
296
  async function convertCopyToMerge() {
259
- for (const logicResult of logicResults) {
260
- for (const doc of logicResult.documents) {
261
- const { srcPath, action, } = doc;
262
- if (action !== "copy" || !srcPath) {
263
- continue;
264
- }
265
- const data = (await index_1.db.doc(srcPath).get()).data();
266
- delete doc.srcPath;
267
- doc.doc = data;
268
- doc.action = "merge";
297
+ for (const doc of logicDocs) {
298
+ const { srcPath, action, } = doc;
299
+ if (action !== "copy" || !srcPath) {
300
+ continue;
269
301
  }
302
+ const data = (await index_1.db.doc(srcPath).get()).data();
303
+ delete doc.srcPath;
304
+ doc.doc = data;
305
+ doc.action = "merge";
270
306
  }
271
307
  }
272
308
  await expandRecursiveActions();
273
309
  await convertCopyToMerge();
274
310
  const consolidated = new Map();
275
- for (const logicResult of logicResults) {
276
- for (const doc of logicResult.documents) {
277
- const { dstPath, action, } = doc;
278
- const existingDoc = consolidated.get(dstPath);
279
- if (action === "merge") {
280
- processMerge(existingDoc, doc, dstPath);
281
- }
282
- else if (action === "delete") {
283
- processDelete(existingDoc, doc, dstPath);
284
- }
311
+ for (const doc of logicDocs) {
312
+ const { dstPath, action, } = doc;
313
+ const existingDoc = consolidated.get(dstPath);
314
+ if (action === "merge") {
315
+ processMerge(existingDoc, doc, dstPath);
316
+ }
317
+ else if (action === "delete") {
318
+ processDelete(existingDoc, doc, dstPath);
285
319
  }
286
320
  }
287
321
  return consolidated;
@@ -1 +1 @@
1
- {"version":3,"file":"index-utils.js","sourceRoot":"","sources":["../src/index-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index-utils.js","sourceRoot":"","sources":["../src/index-utils.ts"],"names":[],"mappings":"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"}
package/lib/index.js CHANGED
@@ -42,6 +42,9 @@ const view_logics_1 = require("./logics/view-logics");
42
42
  const bill_protect_1 = require("./utils/bill-protect");
43
43
  const database_1 = require("firebase-functions/v2/database");
44
44
  const paths_1 = require("./utils/paths");
45
+ const lib_1 = require("emberflow-admin-client/lib");
46
+ const db_structure_1 = require("./db-structure");
47
+ const logics_1 = require("./logics/logics");
45
48
  exports.functionsConfig = {};
46
49
  exports._mockable = {
47
50
  createNowTimestamp: () => exports.admin.firestore.Timestamp.now(),
@@ -52,11 +55,12 @@ function initializeEmberFlow(customProjectConfig, adminInstance, customDbStructu
52
55
  exports.admin = adminInstance;
53
56
  exports.db = exports.admin.firestore();
54
57
  exports.rtdb = exports.admin.database();
55
- exports.dbStructure = customDbStructure;
56
- exports.Entity = CustomEntity;
58
+ exports.dbStructure = Object.assign(Object.assign({}, customDbStructure), db_structure_1.internalDbStructure);
59
+ exports.Entity = Object.assign(Object.assign({}, CustomEntity), db_structure_1.InternalEntity);
57
60
  exports.securityConfig = customSecurityConfig;
58
61
  exports.validatorConfig = customValidatorConfig;
59
- exports.logicConfigs = customLogicConfigs;
62
+ exports.logicConfigs = [...customLogicConfigs, logics_1.forDistributionLogicConfig];
63
+ (0, lib_1.initClient)(exports.admin.app());
60
64
  const { docPaths: dp, colPaths: cp, docPathsRegex: dbr, viewDefinitions: vd, } = (0, init_db_structure_1.initDbStructure)(exports.dbStructure, exports.Entity);
61
65
  exports.docPaths = dp;
62
66
  exports.colPaths = cp;
@@ -104,7 +108,7 @@ async function onFormSubmit(event) {
104
108
  return;
105
109
  }
106
110
  console.info("Validating userId");
107
- if (!docPath.startsWith(`users/${userId}`)) {
111
+ if (docPath.startsWith("users") && !docPath.startsWith(`users/${userId}`)) {
108
112
  const message = "User id from path does not match user id from event params";
109
113
  console.warn(message);
110
114
  await formRef.update({ "@status": "error", "@message": message });
@@ -180,43 +184,90 @@ async function onFormSubmit(event) {
180
184
  await actionRef.set(action);
181
185
  await formRef.update({ "@status": "submitted" });
182
186
  console.info("Running Business Logics");
183
- const logicResults = await (0, index_utils_1.runBusinessLogics)(actionType, formModifiedFields, entity, action);
184
- // Save all logic results under logicResults collection of action form
185
- for (let i = 0; i < logicResults.length; i++) {
186
- const _a = logicResults[i], { documents } = _a, logicResult = __rest(_a, ["documents"]);
187
- const logicResultsRef = actionRef.collection("logicResults")
188
- .doc(`${actionRef.id}-${i}`);
189
- await logicResultsRef.set(logicResult);
190
- const documentsRef = logicResultsRef.collection("documents");
191
- for (let j = 0; j < documents.length; j++) {
192
- await documentsRef.doc(`${logicResultsRef.id}-${j}`).set(documents[j]);
187
+ let userDocsByDstPath = new Map();
188
+ let errorMessage = "";
189
+ await (0, index_utils_1.runBusinessLogics)(actionType, formModifiedFields, entity, action, async (logicResults, page) => {
190
+ // Save all logic results under logicResults collection of action form
191
+ for (let i = 0; i < logicResults.length; i++) {
192
+ const _a = logicResults[i], { documents } = _a, logicResult = __rest(_a, ["documents"]);
193
+ const logicResultsRef = actionRef.collection("logicResults")
194
+ .doc(`${actionRef.id}-${i}`);
195
+ await logicResultsRef.set(logicResult);
196
+ const documentsRef = logicResultsRef.collection("documents");
197
+ for (let j = 0; j < documents.length; j++) {
198
+ await documentsRef.doc(`${logicResultsRef.id}-${j}`).set(documents[j]);
199
+ }
193
200
  }
194
- }
195
- const errorLogicResults = logicResults.filter((result) => result.status === "error");
196
- if (errorLogicResults.length > 0) {
197
- const errorMessage = errorLogicResults.map((result) => result.message).join("\n");
198
- await actionRef.update({ status: "finished-with-error", message: errorMessage });
199
- }
200
- console.info("Consolidating Logic Results");
201
- const dstPathLogicDocsMap = await (0, index_utils_1.expandConsolidateAndGroupByDstPath)(logicResults);
202
- const { userDocsByDstPath, otherUsersDocsByDstPath, } = (0, index_utils_1.groupDocsByUserAndDstPath)(dstPathLogicDocsMap, userId);
201
+ const errorLogicResults = logicResults.filter((result) => result.status === "error");
202
+ if (errorLogicResults.length > 0) {
203
+ errorMessage = errorMessage + errorLogicResults.map((result) => result.message).join("\n");
204
+ }
205
+ console.info("Group logic docs by priority");
206
+ const { highPriorityDocs, normalPriorityDocs, lowPriorityDocs } = logicResults
207
+ .map((result) => result.documents)
208
+ .flat()
209
+ .reduce((acc, doc) => {
210
+ if (doc.priority === "high") {
211
+ acc.highPriorityDocs.push(doc);
212
+ }
213
+ else if (doc.priority === "normal") {
214
+ acc.normalPriorityDocs.push(doc);
215
+ }
216
+ else {
217
+ acc.lowPriorityDocs.push(doc);
218
+ }
219
+ return acc;
220
+ }, {
221
+ highPriorityDocs: [],
222
+ normalPriorityDocs: [],
223
+ lowPriorityDocs: [],
224
+ });
225
+ console.info("Consolidating and Distributing High Priority Logic Results");
226
+ const highPriorityDstPathLogicDocsMap = await (0, index_utils_1.expandConsolidateAndGroupByDstPath)(highPriorityDocs);
227
+ const { userDocsByDstPath: highPriorityUserDocsByDstPath, otherUsersDocsByDstPath: highPriorityOtherUsersDocsByDstPath, } = (0, index_utils_1.groupDocsByUserAndDstPath)(highPriorityDstPathLogicDocsMap, userId);
228
+ await (0, index_utils_1.distribute)(highPriorityUserDocsByDstPath);
229
+ await (0, index_utils_1.distribute)(highPriorityOtherUsersDocsByDstPath);
230
+ if (page === 0) {
231
+ await formRef.update({ "@status": "finished" });
232
+ }
233
+ console.info("Consolidating and Distributing Normal Priority Logic Results");
234
+ const normalPriorityDstPathLogicDocsMap = await (0, index_utils_1.expandConsolidateAndGroupByDstPath)(normalPriorityDocs);
235
+ const { userDocsByDstPath: normalPriorityUserDocsByDstPath, otherUsersDocsByDstPath: normalPriorityOtherUsersDocsByDstPath, } = (0, index_utils_1.groupDocsByUserAndDstPath)(normalPriorityDstPathLogicDocsMap, userId);
236
+ await (0, index_utils_1.distribute)(normalPriorityUserDocsByDstPath);
237
+ await (0, index_utils_1.distributeLater)(normalPriorityOtherUsersDocsByDstPath, `${formId}-normal-${page}`);
238
+ console.info("Consolidating and Distributing Low Priority Logic Results");
239
+ const lowPriorityDstPathLogicDocsMap = await (0, index_utils_1.expandConsolidateAndGroupByDstPath)(lowPriorityDocs);
240
+ const { userDocsByDstPath: lowPriorityUserDocsByDstPath, otherUsersDocsByDstPath: lowPriorityOtherUsersDocsByDstPath, } = (0, index_utils_1.groupDocsByUserAndDstPath)(lowPriorityDstPathLogicDocsMap, userId);
241
+ await (0, index_utils_1.distributeLater)(lowPriorityUserDocsByDstPath, `${formId}-low-user-${page}`);
242
+ await (0, index_utils_1.distributeLater)(lowPriorityOtherUsersDocsByDstPath, `${formId}-low-others-${page}`);
243
+ userDocsByDstPath = new Map([
244
+ ...userDocsByDstPath,
245
+ ...highPriorityUserDocsByDstPath,
246
+ ...normalPriorityUserDocsByDstPath,
247
+ ...lowPriorityUserDocsByDstPath,
248
+ ]);
249
+ });
203
250
  console.info("Running View Logics");
204
251
  const viewLogicResults = await (0, index_utils_1.runViewLogics)(userDocsByDstPath);
205
- const dstPathViewLogicDocsMap = await (0, index_utils_1.expandConsolidateAndGroupByDstPath)(viewLogicResults);
252
+ const viewLogicResultDocs = viewLogicResults.map((result) => result.documents).flat();
253
+ const dstPathViewLogicDocsMap = await (0, index_utils_1.expandConsolidateAndGroupByDstPath)(viewLogicResultDocs);
206
254
  const { userDocsByDstPath: userViewDocsByDstPath, otherUsersDocsByDstPath: otherUsersViewDocsByDstPath, } = (0, index_utils_1.groupDocsByUserAndDstPath)(dstPathViewLogicDocsMap, userId);
207
- console.info("Distributing Logic Results for initiating user");
208
- await (0, index_utils_1.distribute)(userDocsByDstPath);
255
+ console.info("Distributing View Logic Results");
209
256
  await (0, index_utils_1.distribute)(userViewDocsByDstPath);
210
- await formRef.update({ "@status": "finished" });
257
+ await (0, index_utils_1.distributeLater)(otherUsersViewDocsByDstPath, `${formId}-views`);
211
258
  console.info("Running Peer Sync Views");
212
259
  const peerSyncViewLogicResults = await (0, index_utils_1.runPeerSyncViews)(userDocsByDstPath);
213
- const dstPathPeerSyncViewLogicDocsMap = await (0, index_utils_1.expandConsolidateAndGroupByDstPath)(peerSyncViewLogicResults);
260
+ const peerSyncViewLogicResultDocs = peerSyncViewLogicResults.map((result) => result.documents).flat();
261
+ const dstPathPeerSyncViewLogicDocsMap = await (0, index_utils_1.expandConsolidateAndGroupByDstPath)(peerSyncViewLogicResultDocs);
214
262
  const { otherUsersDocsByDstPath: otherUsersPeerSyncViewDocsByDstPath } = (0, index_utils_1.groupDocsByUserAndDstPath)(dstPathPeerSyncViewLogicDocsMap, userId);
215
- console.info("Distributing Logic Results for other users");
216
- await (0, index_utils_1.distribute)(otherUsersDocsByDstPath);
217
- await (0, index_utils_1.distribute)(otherUsersViewDocsByDstPath);
218
- await (0, index_utils_1.distribute)(otherUsersPeerSyncViewDocsByDstPath);
219
- await actionRef.update({ status: "finished" });
263
+ console.info("Distributing Logic Results for Peer Sync Views");
264
+ await (0, index_utils_1.distributeLater)(otherUsersPeerSyncViewDocsByDstPath, `${formId}-peers`);
265
+ if (errorMessage) {
266
+ await actionRef.update({ status: "finished-with-error", message: errorMessage });
267
+ }
268
+ else {
269
+ await actionRef.update({ status: "finished" });
270
+ }
220
271
  console.info("Finished");
221
272
  }
222
273
  catch (error) {