emberflow 1.3.8 → 1.3.9

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 (44) hide show
  1. package/lib/db-structure.d.ts +2 -7
  2. package/lib/db-structure.js +1 -6
  3. package/lib/db-structure.js.map +1 -1
  4. package/lib/index-utils.d.ts +4 -3
  5. package/lib/index-utils.js +83 -118
  6. package/lib/index-utils.js.map +1 -1
  7. package/lib/index.d.ts +7 -0
  8. package/lib/index.js +70 -38
  9. package/lib/index.js.map +1 -1
  10. package/lib/logics/view-logics.d.ts +22 -2
  11. package/lib/logics/view-logics.js +107 -53
  12. package/lib/logics/view-logics.js.map +1 -1
  13. package/lib/tests/index-utils.test.js +233 -137
  14. package/lib/tests/index-utils.test.js.map +1 -1
  15. package/lib/tests/index.test.js +21 -17
  16. package/lib/tests/index.test.js.map +1 -1
  17. package/lib/tests/logics/view-logics.test.js +203 -24
  18. package/lib/tests/logics/view-logics.test.js.map +1 -1
  19. package/lib/tests/utils/distribution.test.d.ts +1 -0
  20. package/lib/tests/utils/distribution.test.js +206 -0
  21. package/lib/tests/utils/distribution.test.js.map +1 -0
  22. package/lib/tests/utils/forms.test.d.ts +1 -0
  23. package/lib/tests/utils/forms.test.js +113 -0
  24. package/lib/tests/utils/forms.test.js.map +1 -0
  25. package/lib/tests/utils/misc.test.js +138 -0
  26. package/lib/tests/utils/misc.test.js.map +1 -1
  27. package/lib/tests/utils/paths.test.js.map +1 -1
  28. package/lib/tests/utils/pubsub.test.d.ts +1 -0
  29. package/lib/tests/utils/pubsub.test.js +109 -0
  30. package/lib/tests/utils/pubsub.test.js.map +1 -0
  31. package/lib/types.d.ts +7 -1
  32. package/lib/utils/distribution.d.ts +9 -0
  33. package/lib/utils/distribution.js +119 -0
  34. package/lib/utils/distribution.js.map +1 -0
  35. package/lib/utils/forms.d.ts +4 -2
  36. package/lib/utils/forms.js +32 -101
  37. package/lib/utils/forms.js.map +1 -1
  38. package/lib/utils/misc.d.ts +17 -0
  39. package/lib/utils/misc.js +81 -1
  40. package/lib/utils/misc.js.map +1 -1
  41. package/lib/utils/pubsub.d.ts +9 -0
  42. package/lib/utils/pubsub.js +32 -0
  43. package/lib/utils/pubsub.js.map +1 -0
  44. package/package.json +3 -2
@@ -1,13 +1,8 @@
1
1
  export declare enum InternalEntity {
2
- Internal = "internal",
3
- ForDistribution = "forDistribution"
2
+ Internal = "internal"
4
3
  }
5
4
  export declare const internalDbStructure: {
6
5
  "@internal": {
7
- internal: {
8
- distributions: {
9
- forDistribution: {};
10
- };
11
- };
6
+ internal: {};
12
7
  };
13
8
  };
@@ -4,15 +4,10 @@ exports.internalDbStructure = exports.InternalEntity = void 0;
4
4
  var InternalEntity;
5
5
  (function (InternalEntity) {
6
6
  InternalEntity["Internal"] = "internal";
7
- InternalEntity["ForDistribution"] = "forDistribution";
8
7
  })(InternalEntity = exports.InternalEntity || (exports.InternalEntity = {}));
9
8
  exports.internalDbStructure = {
10
9
  "@internal": {
11
- [InternalEntity.Internal]: {
12
- distributions: {
13
- [InternalEntity.ForDistribution]: {},
14
- },
15
- },
10
+ [InternalEntity.Internal]: {},
16
11
  },
17
12
  };
18
13
  //# sourceMappingURL=db-structure.js.map
@@ -1 +1 @@
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,qDAAmC,CAAA;AACvC,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"}
1
+ {"version":3,"file":"db-structure.js","sourceRoot":"","sources":["../src/db-structure.ts"],"names":[],"mappings":";;;AACA,IAAY,cAEX;AAFD,WAAY,cAAc;IACtB,uCAAqB,CAAA;AACzB,CAAC,EAFW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAEzB;AACY,QAAA,mBAAmB,GAAG;IACjC,WAAW,EAAE;QACX,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,EAAE;KAC9B;CACF,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { Action, LogicActionType, LogicResult, LogicResultDoc, SecurityFn, ValidateFormResult } from "./types";
2
2
  import { database, firestore } from "firebase-admin";
3
+ import { BatchUtil } from "./utils/batch";
3
4
  import QueryDocumentSnapshot = firestore.QueryDocumentSnapshot;
4
5
  import DocumentData = FirebaseFirestore.DocumentData;
5
6
  import Reference = database.Reference;
@@ -7,8 +8,9 @@ export declare const _mockable: {
7
8
  getViewLogicsConfig: () => import("./types").ViewLogicConfig[];
8
9
  createNowTimestamp: () => firestore.Timestamp;
9
10
  };
11
+ export declare function distributeDoc(logicResultDoc: LogicResultDoc, batch?: BatchUtil): Promise<void>;
10
12
  export declare function distribute(docsByDstPath: Map<string, LogicResultDoc[]>): Promise<void>;
11
- export declare function distributeLater(docsByDstPath: Map<string, LogicResultDoc[]>, id: string): Promise<void>;
13
+ export declare function distributeLater(docsByDstPath: Map<string, LogicResultDoc[]>): Promise<void>;
12
14
  export declare function validateForm(entity: string, form: FirebaseFirestore.DocumentData): Promise<ValidateFormResult>;
13
15
  export declare function getFormModifiedFields(form: DocumentData, document: DocumentData): DocumentData;
14
16
  export declare function delayFormSubmissionAndCheckIfCancelled(delay: number, formRef: Reference): Promise<boolean>;
@@ -19,7 +21,6 @@ export declare function groupDocsByUserAndDstPath(docsByDstPath: Map<string, Log
19
21
  };
20
22
  export declare function getSecurityFn(entity: string): SecurityFn;
21
23
  export declare function expandConsolidateAndGroupByDstPath(logicDocs: LogicResultDoc[]): Promise<Map<string, LogicResultDoc[]>>;
22
- export declare function runViewLogics(dstPathLogicDocsMap: Map<string, LogicResultDoc>): Promise<LogicResult[]>;
23
- export declare function runPeerSyncViews(userDocsByDstPath: Map<string, LogicResultDoc>): Promise<LogicResult[]>;
24
+ export declare function runViewLogics(userLogicResultDoc: LogicResultDoc): Promise<LogicResult[]>;
24
25
  export declare function processScheduledEntities(): Promise<void>;
25
26
  export declare function onDeleteFunction(snapshot: QueryDocumentSnapshot): Promise<void>;
@@ -1,17 +1,51 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- 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;
3
+ exports.onDeleteFunction = exports.processScheduledEntities = exports.runViewLogics = exports.expandConsolidateAndGroupByDstPath = exports.getSecurityFn = exports.groupDocsByUserAndDstPath = exports.runBusinessLogics = exports.delayFormSubmissionAndCheckIfCancelled = exports.getFormModifiedFields = exports.validateForm = exports.distributeLater = exports.distribute = exports.distributeDoc = exports._mockable = void 0;
4
4
  const index_1 = require("./index");
5
- const view_logics_1 = require("./logics/view-logics");
6
5
  const paths_1 = require("./utils/paths");
7
6
  const misc_1 = require("./utils/misc");
8
7
  const functions_1 = require("@google-cloud/functions");
9
8
  const batch_1 = require("./utils/batch");
10
9
  const forms_1 = require("./utils/forms");
10
+ const distribution_1 = require("./utils/distribution");
11
11
  exports._mockable = {
12
12
  getViewLogicsConfig: () => index_1.viewLogicConfigs,
13
13
  createNowTimestamp: () => index_1.admin.firestore.Timestamp.now(),
14
14
  };
15
+ async function distributeDoc(logicResultDoc, batch) {
16
+ const { action, doc, instructions, dstPath, } = logicResultDoc;
17
+ const dstDocRef = index_1.db.doc(dstPath);
18
+ console.debug(`Distributing doc with Action: ${action}`);
19
+ if (action === "delete") {
20
+ // Delete document at dstPath
21
+ if (batch) {
22
+ await batch.deleteDoc(dstDocRef);
23
+ }
24
+ else {
25
+ await dstDocRef.delete();
26
+ }
27
+ console.log(`Document deleted at ${dstPath}`);
28
+ }
29
+ else if (action === "merge" || action === "create") {
30
+ if (instructions) {
31
+ await (0, distribution_1.queueInstructions)(dstPath, instructions);
32
+ }
33
+ const updateData = Object.assign(Object.assign({}, doc), { "@id": dstDocRef.id });
34
+ if (batch) {
35
+ await batch.set(dstDocRef, updateData);
36
+ }
37
+ else {
38
+ await dstDocRef.set(updateData, { merge: true });
39
+ }
40
+ console.log(`Document merged to ${dstPath}`);
41
+ }
42
+ else if (action === "submit-form") {
43
+ console.debug("Queuing submit form...");
44
+ const formData = Object.assign({ "@docPath": dstPath, "@actionType": "create" }, doc);
45
+ await (0, forms_1.queueSubmitForm)(formData);
46
+ }
47
+ }
48
+ exports.distributeDoc = distributeDoc;
15
49
  async function distribute(docsByDstPath) {
16
50
  const batch = batch_1.BatchUtil.getInstance();
17
51
  for (const dstPath of Array.from(docsByDstPath.keys()).sort()) {
@@ -20,56 +54,7 @@ async function distribute(docsByDstPath) {
20
54
  if (!resultDocs)
21
55
  continue;
22
56
  for (const resultDoc of resultDocs) {
23
- const { action, doc, instructions, } = resultDoc;
24
- console.debug(`Distributing doc with Action: ${action}`);
25
- if (action === "delete") {
26
- // Delete document at dstPath
27
- const dstDocRef = index_1.db.doc(dstPath);
28
- await batch.deleteDoc(dstDocRef);
29
- console.log(`Document deleted at ${dstPath}`);
30
- }
31
- else if (action === "merge") {
32
- const updateData = Object.assign({}, doc);
33
- if (instructions) {
34
- for (const [property, instruction] of Object.entries(instructions)) {
35
- if (instruction === "++") {
36
- updateData[property] = index_1.admin.firestore.FieldValue.increment(1);
37
- }
38
- else if (instruction === "--") {
39
- updateData[property] = index_1.admin.firestore.FieldValue.increment(-1);
40
- }
41
- else if (instruction.startsWith("+")) {
42
- const incrementValue = parseInt(instruction.slice(1));
43
- if (isNaN(incrementValue)) {
44
- console.log(`Invalid increment value ${instruction} for property ${property}`);
45
- }
46
- else {
47
- updateData[property] = index_1.admin.firestore.FieldValue.increment(incrementValue);
48
- }
49
- }
50
- else if (instruction.startsWith("-")) {
51
- const decrementValue = parseInt(instruction.slice(1));
52
- if (isNaN(decrementValue)) {
53
- console.log(`Invalid decrement value ${instruction} for property ${property}`);
54
- }
55
- else {
56
- updateData[property] = index_1.admin.firestore.FieldValue.increment(-decrementValue);
57
- }
58
- }
59
- else {
60
- console.log(`Invalid instruction ${instruction} for property ${property}`);
61
- }
62
- }
63
- }
64
- const dstDocRef = index_1.db.doc(dstPath);
65
- await batch.set(dstDocRef, updateData);
66
- console.log(`Document merged to ${dstPath}`);
67
- }
68
- else if (action === "submit-form") {
69
- console.debug("Submitting form...");
70
- const formData = Object.assign({ "@docPath": dstPath, "@actionType": "create" }, doc);
71
- (0, forms_1.queueSubmitForm)(formData);
72
- }
57
+ await distributeDoc(resultDoc, batch);
73
58
  }
74
59
  }
75
60
  if (batch.writeCount > 0) {
@@ -78,26 +63,10 @@ async function distribute(docsByDstPath) {
78
63
  }
79
64
  }
80
65
  exports.distribute = distribute;
81
- async function distributeLater(docsByDstPath, id) {
66
+ async function distributeLater(docsByDstPath) {
82
67
  console.log("Submitting to form for later processing...");
83
68
  const documents = Array.from(docsByDstPath.values()).flat();
84
- if (documents.length === 0) {
85
- return;
86
- }
87
- documents.forEach((doc) => {
88
- if (!doc.priority || doc.priority === "normal") {
89
- doc.priority = "high";
90
- }
91
- else if (doc.priority === "low") {
92
- doc.priority = "normal";
93
- }
94
- });
95
- const formData = {
96
- "@docPath": `@internal/forDistribution/distributions/${id}`,
97
- "@actionType": "create",
98
- "logicResultDocs": documents,
99
- };
100
- (0, forms_1.queueSubmitForm)(formData);
69
+ await (0, distribution_1.queueForDistributionLater)(...documents);
101
70
  }
102
71
  exports.distributeLater = distributeLater;
103
72
  async function validateForm(entity, form) {
@@ -229,28 +198,37 @@ exports.getSecurityFn = getSecurityFn;
229
198
  async function expandConsolidateAndGroupByDstPath(logicDocs) {
230
199
  function warnOverwritingKeys(existing, incoming, type, dstPath) {
231
200
  for (const key in incoming) {
232
- if (Object.prototype.hasOwnProperty.call(existing, key)) {
201
+ if (existing && Object.prototype.hasOwnProperty.call(existing, key)) {
233
202
  console.warn(`Overwriting key "${key}" in ${type} for dstPath "${dstPath}"`);
234
203
  }
235
204
  }
236
205
  }
237
- function processMerge(existingDocs, doc, dstPath) {
206
+ function processMergeAndCreate(existingDocs, logicResultDoc, dstPath) {
238
207
  let merged = false;
239
208
  for (const existingDoc of existingDocs) {
240
- if (existingDoc.action === "merge") {
241
- warnOverwritingKeys(existingDoc.doc, doc.doc, "doc", dstPath);
242
- warnOverwritingKeys(existingDoc.instructions, doc.instructions, "instructions", dstPath);
243
- existingDoc.instructions = Object.assign(Object.assign({}, existingDoc.instructions), doc.instructions);
244
- existingDoc.doc = Object.assign(Object.assign({}, existingDoc.doc), doc.doc);
209
+ if (existingDoc.action === "delete") {
210
+ console.warn(`Action ${logicResultDoc.action} ignored because a "delete" for dstPath "${logicResultDoc.dstPath}" already exists`);
211
+ merged = true;
212
+ break;
213
+ }
214
+ if (existingDoc.action === "merge" || existingDoc.action === "create") {
215
+ warnOverwritingKeys(existingDoc.doc, logicResultDoc.doc, "doc", dstPath);
216
+ warnOverwritingKeys(existingDoc.instructions, logicResultDoc.instructions, "instructions", dstPath);
217
+ if (existingDoc.action === "merge" && logicResultDoc.action === "create") {
218
+ console.info(`Existing doc Action "merge" for dstPath "${dstPath}" is being converted to "create"`);
219
+ existingDoc.action = "create";
220
+ }
221
+ existingDoc.instructions = Object.assign(Object.assign({}, existingDoc.instructions), logicResultDoc.instructions);
222
+ existingDoc.doc = Object.assign(Object.assign({}, existingDoc.doc), logicResultDoc.doc);
245
223
  merged = true;
246
224
  break;
247
225
  }
248
226
  }
249
227
  if (!merged) {
250
- existingDocs.push(doc);
228
+ existingDocs.push(logicResultDoc);
251
229
  }
252
230
  }
253
- function processDelete(existingDocs, doc, dstPath) {
231
+ function processDelete(existingDocs, logicResultDoc, dstPath) {
254
232
  for (let i = existingDocs.length - 1; i >= 0; i--) {
255
233
  const existingDoc = existingDocs[i];
256
234
  if (existingDoc.action === "merge" || existingDoc.action === "delete") {
@@ -258,7 +236,7 @@ async function expandConsolidateAndGroupByDstPath(logicDocs) {
258
236
  existingDocs.splice(i, 1);
259
237
  }
260
238
  }
261
- existingDocs.push(doc);
239
+ existingDocs.push(logicResultDoc);
262
240
  }
263
241
  async function expandRecursiveActions() {
264
242
  const expandedLogicResultDocs = [];
@@ -317,8 +295,8 @@ async function expandConsolidateAndGroupByDstPath(logicDocs) {
317
295
  if (existingDocs.length === 0) {
318
296
  consolidated.set(dstPath, existingDocs);
319
297
  }
320
- if (action === "merge") {
321
- processMerge(existingDocs, doc, dstPath);
298
+ if (action === "merge" || action === "create") {
299
+ processMergeAndCreate(existingDocs, doc, dstPath);
322
300
  }
323
301
  else if (action === "delete") {
324
302
  processDelete(existingDocs, doc, dstPath);
@@ -330,45 +308,32 @@ async function expandConsolidateAndGroupByDstPath(logicDocs) {
330
308
  return consolidated;
331
309
  }
332
310
  exports.expandConsolidateAndGroupByDstPath = expandConsolidateAndGroupByDstPath;
333
- async function runViewLogics(dstPathLogicDocsMap) {
334
- const logicResults = [];
335
- for (const [dstPath, logicResultDoc] of dstPathLogicDocsMap.entries()) {
336
- const { action, doc, instructions, } = logicResultDoc;
337
- const modifiedFields = [];
338
- if (doc) {
339
- modifiedFields.push(...Object.keys(doc));
340
- }
341
- if (instructions) {
342
- modifiedFields.push(...Object.keys(instructions));
343
- }
344
- const { entity } = (0, paths_1.findMatchingDocPathRegex)(dstPath);
345
- if (!entity) {
346
- console.error("Entity should not be blank");
347
- continue;
348
- }
349
- const matchingLogics = exports._mockable.getViewLogicsConfig().filter((logic) => {
350
- return ((action === "merge" &&
351
- logic.modifiedFields.some((field) => modifiedFields.includes(field)) &&
352
- logic.entity === entity) ||
353
- (action === "delete" &&
354
- logic.entity === entity));
355
- });
356
- // TODO: Handle errors
357
- // TODO: Add logic for execTime
358
- const results = await Promise.all(matchingLogics.map((logic) => logic.viewLogicFn(logicResultDoc)));
359
- logicResults.push(...results);
311
+ async function runViewLogics(userLogicResultDoc) {
312
+ const { action, doc, instructions, dstPath, } = userLogicResultDoc;
313
+ const modifiedFields = [];
314
+ if (doc) {
315
+ modifiedFields.push(...Object.keys(doc));
360
316
  }
361
- return logicResults;
362
- }
363
- exports.runViewLogics = runViewLogics;
364
- async function runPeerSyncViews(userDocsByDstPath) {
365
- const logicResults = [];
366
- for (const [_, logicResultDoc] of userDocsByDstPath.entries()) {
367
- logicResults.push(await (0, view_logics_1.syncPeerViews)(logicResultDoc));
317
+ if (instructions) {
318
+ modifiedFields.push(...Object.keys(instructions));
319
+ }
320
+ const { entity } = (0, paths_1.findMatchingDocPathRegex)(dstPath);
321
+ if (!entity) {
322
+ console.error("Entity should not be blank");
323
+ return [];
368
324
  }
369
- return logicResults;
325
+ const matchingLogics = exports._mockable.getViewLogicsConfig().filter((logic) => {
326
+ return ((action === "merge" &&
327
+ logic.modifiedFields.some((field) => modifiedFields.includes(field)) &&
328
+ logic.entity === entity) ||
329
+ (action === "delete" &&
330
+ logic.entity === entity));
331
+ });
332
+ // TODO: Handle errors
333
+ // TODO: Add logic for execTime
334
+ return await Promise.all(matchingLogics.map((logic) => logic.viewLogicFn(userLogicResultDoc)));
370
335
  }
371
- exports.runPeerSyncViews = runPeerSyncViews;
336
+ exports.runViewLogics = runViewLogics;
372
337
  async function processScheduledEntities() {
373
338
  // Query all documents inside @scheduled collection where runAt is less than now
374
339
  const now = exports._mockable.createNowTimestamp();
@@ -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.d.ts CHANGED
@@ -2,10 +2,12 @@ import { FirebaseAdmin, LogicConfig, ProjectConfig, SecurityConfig, ValidatorCon
2
2
  import { Firestore } from "firebase-admin/firestore";
3
3
  import { DatabaseEvent, DataSnapshot } from "firebase-functions/v2/database";
4
4
  import { database } from "firebase-admin";
5
+ import { PubSub } from "@google-cloud/pubsub";
5
6
  import Database = database.Database;
6
7
  export declare let admin: FirebaseAdmin;
7
8
  export declare let db: Firestore;
8
9
  export declare let rtdb: Database;
10
+ export declare let pubsub: PubSub;
9
11
  export declare let dbStructure: Record<string, object>;
10
12
  export declare let Entity: Record<string, string>;
11
13
  export declare let securityConfig: SecurityConfig;
@@ -17,6 +19,11 @@ export declare let docPathsRegex: Record<string, RegExp>;
17
19
  export declare let viewLogicConfigs: ViewLogicConfig[];
18
20
  export declare let projectConfig: ProjectConfig;
19
21
  export declare const functionsConfig: Record<string, any>;
22
+ export declare const SUBMIT_FORM_TOPIC_NAME = "submit-form-queue";
23
+ export declare const VIEW_LOGICS_TOPIC_NAME = "view-logics-queue";
24
+ export declare const PEER_SYNC_TOPIC_NAME = "peer-sync-queue";
25
+ export declare const FOR_DISTRIBUTION_TOPIC_NAME = "for-distribution-queue";
26
+ export declare const INSTRUCTIONS_TOPIC_NAME = "instructions-queue";
20
27
  export declare const _mockable: {
21
28
  createNowTimestamp: () => FirebaseFirestore.Timestamp;
22
29
  initActionRef: typeof initActionRef;
package/lib/index.js CHANGED
@@ -34,7 +34,7 @@ var __rest = (this && this.__rest) || function (s, e) {
34
34
  return t;
35
35
  };
36
36
  Object.defineProperty(exports, "__esModule", { value: true });
37
- exports.onFormSubmit = exports.initializeEmberFlow = exports._mockable = exports.functionsConfig = exports.projectConfig = exports.viewLogicConfigs = exports.docPathsRegex = exports.colPaths = exports.docPaths = exports.logicConfigs = exports.validatorConfig = exports.securityConfig = exports.Entity = exports.dbStructure = exports.rtdb = exports.db = exports.admin = void 0;
37
+ exports.onFormSubmit = exports.initializeEmberFlow = exports._mockable = exports.INSTRUCTIONS_TOPIC_NAME = exports.FOR_DISTRIBUTION_TOPIC_NAME = exports.PEER_SYNC_TOPIC_NAME = exports.VIEW_LOGICS_TOPIC_NAME = exports.SUBMIT_FORM_TOPIC_NAME = exports.functionsConfig = exports.projectConfig = exports.viewLogicConfigs = exports.docPathsRegex = exports.colPaths = exports.docPaths = exports.logicConfigs = exports.validatorConfig = exports.securityConfig = exports.Entity = exports.dbStructure = exports.pubsub = exports.rtdb = exports.db = exports.admin = void 0;
38
38
  const functions = __importStar(require("firebase-functions"));
39
39
  const index_utils_1 = require("./index-utils");
40
40
  const init_db_structure_1 = require("./init-db-structure");
@@ -44,9 +44,19 @@ const database_1 = require("firebase-functions/v2/database");
44
44
  const paths_1 = require("./utils/paths");
45
45
  const lib_1 = require("emberflow-admin-client/lib");
46
46
  const db_structure_1 = require("./db-structure");
47
- const logics_1 = require("./logics/logics");
48
47
  const forms_1 = require("./utils/forms");
48
+ const pubsub_1 = require("@google-cloud/pubsub");
49
+ const pubsub_2 = require("firebase-functions/v2/pubsub");
50
+ const misc_1 = require("./utils/misc");
51
+ const distribution_1 = require("./utils/distribution");
52
+ const pubsub_3 = require("./utils/pubsub");
53
+ const scheduler_1 = require("firebase-functions/v2/scheduler");
49
54
  exports.functionsConfig = {};
55
+ exports.SUBMIT_FORM_TOPIC_NAME = "submit-form-queue";
56
+ exports.VIEW_LOGICS_TOPIC_NAME = "view-logics-queue";
57
+ exports.PEER_SYNC_TOPIC_NAME = "peer-sync-queue";
58
+ exports.FOR_DISTRIBUTION_TOPIC_NAME = "for-distribution-queue";
59
+ exports.INSTRUCTIONS_TOPIC_NAME = "instructions-queue";
50
60
  exports._mockable = {
51
61
  createNowTimestamp: () => exports.admin.firestore.Timestamp.now(),
52
62
  initActionRef,
@@ -56,11 +66,12 @@ function initializeEmberFlow(customProjectConfig, adminInstance, customDbStructu
56
66
  exports.admin = adminInstance;
57
67
  exports.db = exports.admin.firestore();
58
68
  exports.rtdb = exports.admin.database();
69
+ exports.pubsub = new pubsub_1.PubSub();
59
70
  exports.dbStructure = Object.assign(Object.assign({}, customDbStructure), db_structure_1.internalDbStructure);
60
71
  exports.Entity = Object.assign(Object.assign({}, CustomEntity), db_structure_1.InternalEntity);
61
72
  exports.securityConfig = customSecurityConfig;
62
73
  exports.validatorConfig = customValidatorConfig;
63
- exports.logicConfigs = [...customLogicConfigs, logics_1.forDistributionLogicConfig];
74
+ exports.logicConfigs = [...customLogicConfigs];
64
75
  (0, lib_1.initClient)(exports.admin.app());
65
76
  const { docPaths: dp, colPaths: cp, docPathsRegex: dbr, viewDefinitions: vd, } = (0, init_db_structure_1.initDbStructure)(exports.dbStructure, exports.Entity);
66
77
  exports.docPaths = dp;
@@ -77,11 +88,51 @@ function initializeEmberFlow(customProjectConfig, adminInstance, customDbStructu
77
88
  exports.functionsConfig["onFormSubmit"] = (0, database_1.onValueCreated)({
78
89
  ref: "forms/{userId}/{formId}",
79
90
  region: exports.projectConfig.region,
91
+ memory: "256MiB",
92
+ retry: true,
80
93
  }, (0, bill_protect_1.useBillProtect)(onFormSubmit));
94
+ // TODO: Make this disappear when deployed to production
95
+ exports.functionsConfig["deleteForms"] = functions.https.onRequest(misc_1.deleteForms);
81
96
  exports.functionsConfig["onBudgetAlert"] =
82
97
  functions.pubsub.topic(exports.projectConfig.budgetAlertTopicName).onPublish(bill_protect_1.stopBillingIfBudgetExceeded);
83
- exports.functionsConfig["hourlyFunctions"] = functions.pubsub.schedule("every 1 hours")
98
+ exports.functionsConfig["onMessageSubmitFormQueue"] = (0, pubsub_2.onMessagePublished)({
99
+ topic: exports.SUBMIT_FORM_TOPIC_NAME,
100
+ region: exports.projectConfig.region,
101
+ maxInstances: 5,
102
+ timeoutSeconds: 540,
103
+ }, forms_1.onMessageSubmitFormQueue);
104
+ exports.functionsConfig["onMessageViewLogicsQueue"] = (0, pubsub_2.onMessagePublished)({
105
+ topic: exports.VIEW_LOGICS_TOPIC_NAME,
106
+ region: exports.projectConfig.region,
107
+ maxInstances: 5,
108
+ timeoutSeconds: 540,
109
+ }, view_logics_1.onMessageViewLogicsQueue);
110
+ exports.functionsConfig["onMessagePeerSyncQueue"] = (0, pubsub_2.onMessagePublished)({
111
+ topic: exports.PEER_SYNC_TOPIC_NAME,
112
+ region: exports.projectConfig.region,
113
+ maxInstances: 5,
114
+ timeoutSeconds: 540,
115
+ }, view_logics_1.onMessagePeerSyncQueue);
116
+ exports.functionsConfig["onMessageForDistributionQueue"] = (0, pubsub_2.onMessagePublished)({
117
+ topic: exports.FOR_DISTRIBUTION_TOPIC_NAME,
118
+ region: exports.projectConfig.region,
119
+ maxInstances: 5,
120
+ timeoutSeconds: 540,
121
+ }, distribution_1.onMessageForDistributionQueue);
122
+ exports.functionsConfig["onMessageInstructionsQueue"] = (0, pubsub_2.onMessagePublished)({
123
+ topic: exports.INSTRUCTIONS_TOPIC_NAME,
124
+ region: exports.projectConfig.region,
125
+ maxInstances: 1,
126
+ concurrency: 5,
127
+ timeoutSeconds: 540,
128
+ }, distribution_1.onMessageInstructionsQueue);
129
+ exports.functionsConfig["resetUsageStats"] = functions.pubsub.schedule("every 1 hours")
84
130
  .onRun(bill_protect_1.resetUsageStats);
131
+ exports.functionsConfig["cleanPubSubProcessedIds"] = (0, scheduler_1.onSchedule)({
132
+ schedule: "every 1 hours",
133
+ region: exports.projectConfig.region,
134
+ timeoutSeconds: 540,
135
+ }, pubsub_3.cleanPubSubProcessedIds);
85
136
  exports.functionsConfig["minuteFunctions"] = functions.pubsub.schedule("every 1 minutes")
86
137
  .onRun(index_utils_1.processScheduledEntities);
87
138
  exports.functionsConfig["onDeleteFunctions"] = functions.firestore.document("@server/delete/functions/{deleteFuncId}").onCreate(index_utils_1.onDeleteFunction);
@@ -227,7 +278,7 @@ async function onFormSubmit(event) {
227
278
  normalPriorityDocs: [],
228
279
  lowPriorityDocs: [],
229
280
  });
230
- console.info("Consolidating and Distributing High Priority Logic Results", highPriorityDocs);
281
+ console.info("Consolidating and Distributing High Priority Logic Results");
231
282
  const highPriorityDstPathLogicDocsMap = await (0, index_utils_1.expandConsolidateAndGroupByDstPath)(highPriorityDocs);
232
283
  const { userDocsByDstPath: highPriorityUserDocsByDstPath, otherUsersDocsByDstPath: highPriorityOtherUsersDocsByDstPath, } = (0, index_utils_1.groupDocsByUserAndDstPath)(highPriorityDstPathLogicDocsMap, userId);
233
284
  await (0, index_utils_1.distribute)(highPriorityUserDocsByDstPath);
@@ -235,42 +286,25 @@ async function onFormSubmit(event) {
235
286
  if (page === 0) {
236
287
  await formRef.update({ "@status": "finished" });
237
288
  }
238
- console.info("Consolidating and Distributing Normal Priority Logic Results", normalPriorityDocs);
289
+ console.info("Consolidating and Distributing Normal Priority Logic Results");
239
290
  const normalPriorityDstPathLogicDocsMap = await (0, index_utils_1.expandConsolidateAndGroupByDstPath)(normalPriorityDocs);
240
291
  const { userDocsByDstPath: normalPriorityUserDocsByDstPath, otherUsersDocsByDstPath: normalPriorityOtherUsersDocsByDstPath, } = (0, index_utils_1.groupDocsByUserAndDstPath)(normalPriorityDstPathLogicDocsMap, userId);
241
292
  await (0, index_utils_1.distribute)(normalPriorityUserDocsByDstPath);
242
- await (0, index_utils_1.distributeLater)(normalPriorityOtherUsersDocsByDstPath, `${formId}-normal-${page}`);
243
- console.info("Consolidating and Distributing Low Priority Logic Results", lowPriorityDocs);
293
+ await (0, index_utils_1.distributeLater)(normalPriorityOtherUsersDocsByDstPath);
294
+ console.info("Consolidating and Distributing Low Priority Logic Results");
244
295
  const lowPriorityDstPathLogicDocsMap = await (0, index_utils_1.expandConsolidateAndGroupByDstPath)(lowPriorityDocs);
245
296
  const { userDocsByDstPath: lowPriorityUserDocsByDstPath, otherUsersDocsByDstPath: lowPriorityOtherUsersDocsByDstPath, } = (0, index_utils_1.groupDocsByUserAndDstPath)(lowPriorityDstPathLogicDocsMap, userId);
246
- await (0, index_utils_1.distributeLater)(lowPriorityUserDocsByDstPath, `${formId}-low-user-${page}`);
247
- await (0, index_utils_1.distributeLater)(lowPriorityOtherUsersDocsByDstPath, `${formId}-low-others-${page}`);
248
- // const userDocsByDstPath = new Map([
249
- // ...highPriorityUserDocsByDstPath,
250
- // ...normalPriorityUserDocsByDstPath,
251
- // ]);
252
- //
253
- // console.info("Running View Logics");
254
- // const viewLogicResults = await runViewLogics(userDocsByDstPath);
255
- // const viewLogicResultDocs = viewLogicResults.map((result) => result.documents).flat();
256
- // const dstPathViewLogicDocsMap: Map<string, LogicResultDoc> = await expandConsolidateAndGroupByDstPath(viewLogicResultDocs);
257
- // const {
258
- // userDocsByDstPath: userViewDocsByDstPath,
259
- // otherUsersDocsByDstPath: otherUsersViewDocsByDstPath,
260
- // } = groupDocsByUserAndDstPath(dstPathViewLogicDocsMap, userId);
261
- //
262
- // console.info("Distributing View Logic Results");
263
- // await distribute(userViewDocsByDstPath);
264
- // await distributeLater(otherUsersViewDocsByDstPath, `${formId}-views`);
265
- //
266
- // console.info("Running Peer Sync Views");
267
- // const peerSyncViewLogicResults = await runPeerSyncViews(userDocsByDstPath);
268
- // const peerSyncViewLogicResultDocs = peerSyncViewLogicResults.map((result) => result.documents).flat();
269
- // const dstPathPeerSyncViewLogicDocsMap: Map<string, LogicResultDoc> = await expandConsolidateAndGroupByDstPath(peerSyncViewLogicResultDocs);
270
- // const {otherUsersDocsByDstPath: otherUsersPeerSyncViewDocsByDstPath} = groupDocsByUserAndDstPath(dstPathPeerSyncViewLogicDocsMap, userId);
271
- //
272
- // console.info("Distributing Logic Results for Peer Sync Views");
273
- // await distributeLater(otherUsersPeerSyncViewDocsByDstPath, `${formId}-peers`);
297
+ await (0, index_utils_1.distributeLater)(lowPriorityUserDocsByDstPath);
298
+ await (0, index_utils_1.distributeLater)(lowPriorityOtherUsersDocsByDstPath);
299
+ const userDocsMap = [
300
+ highPriorityUserDocsByDstPath,
301
+ normalPriorityOtherUsersDocsByDstPath,
302
+ lowPriorityUserDocsByDstPath,
303
+ ];
304
+ const userDocs = userDocsMap
305
+ .flatMap((map) => Array.from(map.values()))
306
+ .flat();
307
+ await (0, view_logics_1.queueRunViewLogics)(userDocs);
274
308
  });
275
309
  if (errorMessage) {
276
310
  await actionRef.update({ status: "finished-with-error", message: errorMessage });
@@ -278,8 +312,6 @@ async function onFormSubmit(event) {
278
312
  else {
279
313
  await actionRef.update({ status: "finished" });
280
314
  }
281
- console.info("Waiting for submitForm queue to empty");
282
- await (0, forms_1.waitForSubmitFormQueueToEmpty)();
283
315
  console.info("Finished");
284
316
  }
285
317
  catch (error) {