emberflow 1.3.46 → 1.3.48

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 (36) hide show
  1. package/lib/index-utils.d.ts +9 -2
  2. package/lib/index-utils.js +156 -7
  3. package/lib/index-utils.js.map +1 -1
  4. package/lib/index.d.ts +9 -4
  5. package/lib/index.js +23 -5
  6. package/lib/index.js.map +1 -1
  7. package/lib/logics/view-logics.d.ts +2 -2
  8. package/lib/logics/view-logics.js +2 -4
  9. package/lib/logics/view-logics.js.map +1 -1
  10. package/lib/sample-custom/db-structure.d.ts +10 -1
  11. package/lib/sample-custom/db-structure.js +9 -0
  12. package/lib/sample-custom/db-structure.js.map +1 -1
  13. package/lib/tests/index-utils.test.js +538 -43
  14. package/lib/tests/index-utils.test.js.map +1 -1
  15. package/lib/tests/index.test.js +8 -8
  16. package/lib/tests/index.test.js.map +1 -1
  17. package/lib/tests/logics/view-logics.test.js +40 -40
  18. package/lib/tests/logics/view-logics.test.js.map +1 -1
  19. package/lib/tests/utils/distribution.test.js +68 -48
  20. package/lib/tests/utils/distribution.test.js.map +1 -1
  21. package/lib/tests/utils/forms.test.js +14 -18
  22. package/lib/tests/utils/forms.test.js.map +1 -1
  23. package/lib/tests/utils/paths.test.js +4 -0
  24. package/lib/tests/utils/paths.test.js.map +1 -1
  25. package/lib/tests/utils/pubsub.test.js +58 -20
  26. package/lib/tests/utils/pubsub.test.js.map +1 -1
  27. package/lib/types.d.ts +6 -3
  28. package/lib/utils/distribution.js +28 -9
  29. package/lib/utils/distribution.js.map +1 -1
  30. package/lib/utils/forms.js +2 -3
  31. package/lib/utils/forms.js.map +1 -1
  32. package/lib/utils/pubsub.d.ts +1 -0
  33. package/lib/utils/pubsub.js +15 -3
  34. package/lib/utils/pubsub.js.map +1 -1
  35. package/package.json +1 -1
  36. package/src/sample-custom/db-structure.ts +9 -0
@@ -1 +1 @@
1
- {"version":3,"file":"pubsub.test.js","sourceRoot":"","sources":["../../../src/tests/utils/pubsub.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pubsub.test.js","sourceRoot":"","sources":["../../../src/tests/utils/pubsub.test.ts"],"names":[],"mappings":"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"}
package/lib/types.d.ts CHANGED
@@ -2,6 +2,7 @@ import * as admin from "firebase-admin";
2
2
  import { firestore } from "firebase-admin";
3
3
  import Timestamp = firestore.Timestamp;
4
4
  import DocumentData = firestore.DocumentData;
5
+ import { DocumentReference } from "firebase-admin/lib/firestore";
5
6
  export type FirebaseAdmin = typeof admin;
6
7
  export interface ProjectConfig {
7
8
  projectId: string;
@@ -13,9 +14,10 @@ export interface ProjectConfig {
13
14
  [key: string]: number;
14
15
  };
15
16
  }
17
+ export type ActionType = "create" | "update" | "delete";
16
18
  export interface Action {
17
19
  eventContext: EventContext;
18
- actionType: string;
20
+ actionType: ActionType;
19
21
  document: FirebaseFirestore.DocumentData;
20
22
  modifiedFields: DocumentData;
21
23
  user: DocumentData;
@@ -23,10 +25,10 @@ export interface Action {
23
25
  timeCreated: Timestamp;
24
26
  message?: string;
25
27
  }
26
- export type LogicResultAction = "create" | "merge" | "delete" | "copy" | "recursive-copy" | "recursive-delete" | "submit-form";
28
+ export type LogicResultDocAction = "create" | "merge" | "delete" | "copy" | "recursive-copy" | "recursive-delete" | "submit-form" | "simulate-submit-form";
27
29
  export type LogicResultDocPriority = "high" | "normal" | "low";
28
30
  export interface LogicResultDoc {
29
- action: LogicResultAction;
31
+ action: LogicResultDocAction;
30
32
  dstPath: string;
31
33
  priority?: LogicResultDocPriority;
32
34
  srcPath?: string;
@@ -110,3 +112,4 @@ export interface EventContext {
110
112
  docPath: string;
111
113
  entity: string;
112
114
  }
115
+ export type DistributeFn = (actionRef: DocumentReference, logicResults: LogicResult[], page: number) => Promise<void>;
@@ -6,10 +6,9 @@ const index_utils_1 = require("../index-utils");
6
6
  const pubsub_1 = require("./pubsub");
7
7
  const misc_1 = require("./misc");
8
8
  const queueForDistributionLater = async (...logicResultDocs) => {
9
- const topic = index_1.pubsub.topic(index_1.FOR_DISTRIBUTION_TOPIC_NAME);
10
9
  try {
11
10
  for (const logicResultDoc of logicResultDocs) {
12
- const messageId = await topic.publishMessage({ json: logicResultDoc });
11
+ const messageId = await index_1.FOR_DISTRIBUTION_TOPIC.publishMessage({ json: logicResultDoc });
13
12
  console.log(`Message ${messageId} published.`);
14
13
  }
15
14
  }
@@ -55,9 +54,8 @@ async function onMessageForDistributionQueue(event) {
55
54
  }
56
55
  exports.onMessageForDistributionQueue = onMessageForDistributionQueue;
57
56
  async function queueInstructions(dstPath, instructions) {
58
- const topic = index_1.pubsub.topic(index_1.INSTRUCTIONS_TOPIC_NAME);
59
57
  try {
60
- const messageId = await topic.publishMessage({ json: { dstPath, instructions } });
58
+ const messageId = await index_1.INSTRUCTIONS_TOPIC.publishMessage({ json: { dstPath, instructions } });
61
59
  console.log(`Message ${messageId} published.`);
62
60
  }
63
61
  catch (error) {
@@ -82,6 +80,7 @@ async function onMessageInstructionsQueue(event) {
82
80
  console.info("Running Instructions");
83
81
  const { dstPath, instructions } = instructionsMessage;
84
82
  const updateData = {};
83
+ const removeData = {};
85
84
  for (const [property, instruction] of Object.entries(instructions)) {
86
85
  if (instruction === "++") {
87
86
  updateData[property] = index_1.admin.firestore.FieldValue.increment(1);
@@ -107,7 +106,7 @@ async function onMessageInstructionsQueue(event) {
107
106
  updateData[property] = index_1.admin.firestore.FieldValue.increment(-decrementValue);
108
107
  }
109
108
  }
110
- else if (instruction.startsWith("arr+") || instruction.startsWith("arr-")) {
109
+ else if (instruction.startsWith("arr")) {
111
110
  const regex = /\((.*?)\)/;
112
111
  const match = instruction.match(regex);
113
112
  if (!match) {
@@ -120,19 +119,39 @@ async function onMessageInstructionsQueue(event) {
120
119
  continue;
121
120
  }
122
121
  const params = paramsStr.split(",").map((value) => value.trim());
123
- if (instruction.startsWith("arr+")) {
124
- updateData[property] = index_1.admin.firestore.FieldValue.arrayUnion(...params);
122
+ const valuesToAdd = [];
123
+ const valuesToRemove = [];
124
+ for (const param of params) {
125
+ const operation = param[0];
126
+ let value = param;
127
+ if (operation === "-" || operation === "+") {
128
+ value = param.slice(1);
129
+ }
130
+ if (operation === "-") {
131
+ valuesToRemove.push(value);
132
+ continue;
133
+ }
134
+ valuesToAdd.push(value);
125
135
  }
126
- else {
127
- updateData[property] = index_1.admin.firestore.FieldValue.arrayRemove(...params);
136
+ if (valuesToAdd.length > 0) {
137
+ updateData[property] = index_1.admin.firestore.FieldValue.arrayUnion(...valuesToAdd);
138
+ }
139
+ if (valuesToRemove.length > 0) {
140
+ removeData[property] = index_1.admin.firestore.FieldValue.arrayRemove(...valuesToRemove);
128
141
  }
129
142
  }
143
+ else if (instruction === "del") {
144
+ updateData[property] = index_1.admin.firestore.FieldValue.delete();
145
+ }
130
146
  else {
131
147
  console.log(`Invalid instruction ${instruction} for property ${property}`);
132
148
  }
133
149
  }
134
150
  const dstDocRef = index_1.db.doc(dstPath);
135
151
  await dstDocRef.set(updateData, { merge: true });
152
+ if (Object.keys(removeData).length > 0) {
153
+ await dstDocRef.set(removeData, { merge: true });
154
+ }
136
155
  await pubsub_1.pubsubUtils.trackProcessedIds(index_1.INSTRUCTIONS_TOPIC_NAME, event.id);
137
156
  return "Processed instructions";
138
157
  }
@@ -1 +1 @@
1
- {"version":3,"file":"distribution.js","sourceRoot":"","sources":["../../src/utils/distribution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"distribution.js","sourceRoot":"","sources":["../../src/utils/distribution.ts"],"names":[],"mappings":";;;AACA,oCAOkB;AAGlB,gDAA6C;AAG7C,qCAAqC;AACrC,iCAA8C;AAEvC,MAAM,yBAAyB,GAAG,KAAK,EAAE,GAAG,eAAiC,EAAE,EAAE;IACtF,IAAI;QACF,KAAK,MAAM,cAAc,IAAI,eAAe,EAAE;YAC5C,MAAM,SAAS,GAAG,MAAM,8BAAsB,CAAC,cAAc,CAAC,EAAC,IAAI,EAAE,cAAc,EAAC,CAAC,CAAC;YACtF,OAAO,CAAC,GAAG,CAAC,WAAW,SAAS,aAAa,CAAC,CAAC;SAChD;KACF;IAAC,OAAO,KAAc,EAAE;QACvB,IAAI,KAAK,YAAY,KAAK,EAAE;YAC1B,OAAO,CAAC,KAAK,CAAC,oCAAoC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;SACpE;aAAM;YACL,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;SAC9D;QACD,MAAM,KAAK,CAAC;KACb;AACH,CAAC,CAAC;AAdW,QAAA,yBAAyB,6BAcpC;AAEK,KAAK,UAAU,6BAA6B,CAAC,KAAuC;IACzF,IAAI,MAAM,oBAAW,CAAC,WAAW,CAAC,mCAA2B,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE;QACxE,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC1C,OAAO;KACR;IACD,IAAI;QACF,MAAM,cAAc,GAAG,IAAA,6BAAsB,EAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAmB,CAAC;QACzF,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAAE,cAAc,CAAC,CAAC;QAE/D,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACzC,MAAM,EAAC,QAAQ,GAAG,QAAQ,EAAC,GAAG,cAAc,CAAC;QAC7C,IAAI,QAAQ,KAAK,MAAM,EAAE;YACvB,MAAM,IAAA,2BAAa,EAAC,cAAc,CAAC,CAAC;SACrC;aAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE;YAChC,cAAc,CAAC,QAAQ,GAAG,MAAM,CAAC;YACjC,MAAM,IAAA,iCAAyB,EAAC,cAAc,CAAC,CAAC;SACjD;aAAM,IAAI,QAAQ,KAAK,KAAK,EAAE;YAC7B,cAAc,CAAC,QAAQ,GAAG,QAAQ,CAAC;YACnC,MAAM,IAAA,iCAAyB,EAAC,cAAc,CAAC,CAAC;SACjD;QAED,MAAM,oBAAW,CAAC,iBAAiB,CAAC,mCAA2B,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3E,OAAO,kCAAkC,CAAC;KAC3C;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,CAAC,CAAC,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;KACvC;AACH,CAAC;AA3BD,sEA2BC;AAEM,KAAK,UAAU,iBAAiB,CAAC,OAAe,EAAE,YAAqC;IAC5F,IAAI;QACF,MAAM,SAAS,GAAG,MAAM,0BAAkB,CAAC,cAAc,CAAC,EAAC,IAAI,EAAE,EAAC,OAAO,EAAE,YAAY,EAAC,EAAC,CAAC,CAAC;QAC3F,OAAO,CAAC,GAAG,CAAC,WAAW,SAAS,aAAa,CAAC,CAAC;KAChD;IAAC,OAAO,KAAc,EAAE;QACvB,IAAI,KAAK,YAAY,KAAK,EAAE;YAC1B,OAAO,CAAC,KAAK,CAAC,oCAAoC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;SACpE;aAAM;YACL,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;SAC9D;QACD,MAAM,KAAK,CAAC;KACb;AACH,CAAC;AAZD,8CAYC;AAEM,KAAK,UAAU,0BAA0B,CAAC,KAAuC;IACtF,IAAI,MAAM,oBAAW,CAAC,WAAW,CAAC,+BAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE;QACpE,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC1C,OAAO;KACR;IACD,IAAI;QACF,MAAM,mBAAmB,GAAwB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QACzE,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAAE,mBAAmB,CAAC,CAAC;QAEpE,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACrC,MAAM,EAAC,OAAO,EAAE,YAAY,EAAC,GAAG,mBAAmB,CAAC;QACpD,MAAM,UAAU,GAAgC,EAAE,CAAC;QACnD,MAAM,UAAU,GAAgC,EAAE,CAAC;QAEnD,KAAK,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;YAClE,IAAI,WAAW,KAAK,IAAI,EAAE;gBACxB,UAAU,CAAC,QAAQ,CAAC,GAAG,aAAK,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;aAChE;iBAAM,IAAI,WAAW,KAAK,IAAI,EAAE;gBAC/B,UAAU,CAAC,QAAQ,CAAC,GAAG,aAAK,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;aACjE;iBAAM,IAAI,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;gBACtC,MAAM,cAAc,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtD,IAAI,KAAK,CAAC,cAAc,CAAC,EAAE;oBACzB,OAAO,CAAC,GAAG,CAAC,2BAA2B,WAAW,iBAAiB,QAAQ,EAAE,CAAC,CAAC;iBAChF;qBAAM;oBACL,UAAU,CAAC,QAAQ,CAAC,GAAG,aAAK,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;iBAC7E;aACF;iBAAM,IAAI,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;gBACtC,MAAM,cAAc,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtD,IAAI,KAAK,CAAC,cAAc,CAAC,EAAE;oBACzB,OAAO,CAAC,GAAG,CAAC,2BAA2B,WAAW,iBAAiB,QAAQ,EAAE,CAAC,CAAC;iBAChF;qBAAM;oBACL,UAAU,CAAC,QAAQ,CAAC,GAAG,aAAK,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,CAAC;iBAC9E;aACF;iBAAM,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;gBACxC,MAAM,KAAK,GAAG,WAAW,CAAC;gBAC1B,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAEvC,IAAI,CAAC,KAAK,EAAE;oBACV,OAAO,CAAC,GAAG,CAAC,uBAAuB,WAAW,iBAAiB,QAAQ,EAAE,CAAC,CAAC;oBAC3E,SAAS;iBACV;gBAED,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC3B,IAAI,CAAC,SAAS,EAAE;oBACd,OAAO,CAAC,GAAG,CAAC,kCAAkC,WAAW,iBAAiB,QAAQ,EAAE,CAAC,CAAC;oBACtF,SAAS;iBACV;gBAED,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;gBACjE,MAAM,WAAW,GAAG,EAAE,CAAC;gBACvB,MAAM,cAAc,GAAG,EAAE,CAAC;gBAC1B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;oBAC1B,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC3B,IAAI,KAAK,GAAG,KAAK,CAAC;oBAClB,IAAI,SAAS,KAAK,GAAG,IAAI,SAAS,KAAK,GAAG,EAAE;wBAC1C,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;qBACxB;oBACD,IAAI,SAAS,KAAK,GAAG,EAAE;wBACrB,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBAC3B,SAAS;qBACV;oBACD,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBACzB;gBACD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC1B,UAAU,CAAC,QAAQ,CAAC,GAAG,aAAK,CAAC,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC,CAAC;iBAC9E;gBACD,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC7B,UAAU,CAAC,QAAQ,CAAC,GAAG,aAAK,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,cAAc,CAAC,CAAC;iBAClF;aACF;iBAAM,IAAI,WAAW,KAAK,KAAK,EAAE;gBAChC,UAAU,CAAC,QAAQ,CAAC,GAAG,aAAK,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;aAC5D;iBAAM;gBACL,OAAO,CAAC,GAAG,CAAC,uBAAuB,WAAW,iBAAiB,QAAQ,EAAE,CAAC,CAAC;aAC5E;SACF;QACD,MAAM,SAAS,GAAG,UAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClC,MAAM,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC;QAC/C,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YACtC,MAAM,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC;SAChD;QACD,MAAM,oBAAW,CAAC,iBAAiB,CAAC,+BAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;QACvE,OAAO,wBAAwB,CAAC;KACjC;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,CAAC,CAAC,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;KACvC;AACH,CAAC;AAtFD,gEAsFC"}
@@ -6,9 +6,8 @@ const lib_1 = require("emberflow-admin-client/lib");
6
6
  const pubsub_1 = require("./pubsub");
7
7
  const misc_1 = require("./misc");
8
8
  async function queueSubmitForm(formData) {
9
- const topic = index_1.pubsub.topic(index_1.SUBMIT_FORM_TOPIC_NAME);
10
9
  try {
11
- const messageId = await topic.publishMessage({ json: formData });
10
+ const messageId = await index_1.SUBMIT_FORM_TOPIC.publishMessage({ json: formData });
12
11
  console.log(`Message ${messageId} published.`);
13
12
  return messageId;
14
13
  }
@@ -47,7 +46,7 @@ exports.onMessageSubmitFormQueue = onMessageSubmitFormQueue;
47
46
  async function cleanActionsAndForms(event) {
48
47
  console.info("Running cleanActionsAndForms");
49
48
  const query = index_1.db.collection("@actions")
50
- .where("timestamp", "<", new Date(Date.now() - 1000 * 60 * 60 * 24 * 7));
49
+ .where("timeCreated", "<", new Date(Date.now() - 1000 * 60 * 60 * 24 * 7));
51
50
  await (0, misc_1.deleteCollection)(query, async (snapshot) => {
52
51
  const forms = {};
53
52
  snapshot.docs.forEach((doc) => {
@@ -1 +1 @@
1
- {"version":3,"file":"forms.js","sourceRoot":"","sources":["../../src/utils/forms.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"forms.js","sourceRoot":"","sources":["../../src/utils/forms.ts"],"names":[],"mappings":"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"}
@@ -5,5 +5,6 @@ export declare const pubsubUtils: {
5
5
  trackProcessedIds: typeof trackProcessedIds;
6
6
  isProcessed: typeof isProcessed;
7
7
  };
8
+ export declare function createPubSubTopics(pubSubTopics: string[]): Promise<void>;
8
9
  export declare function cleanPubSubProcessedIds(event: ScheduledEvent): Promise<void>;
9
10
  export {};
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.cleanPubSubProcessedIds = exports.pubsubUtils = void 0;
3
+ exports.cleanPubSubProcessedIds = exports.createPubSubTopics = exports.pubsubUtils = void 0;
4
4
  const index_1 = require("../index");
5
5
  const misc_1 = require("./misc");
6
6
  async function trackProcessedIds(topicName, id) {
@@ -16,6 +16,17 @@ exports.pubsubUtils = {
16
16
  trackProcessedIds,
17
17
  isProcessed,
18
18
  };
19
+ async function createPubSubTopics(pubSubTopics) {
20
+ for (const topicName of pubSubTopics) {
21
+ const pubSubTopicRef = index_1.db.doc(`@topics/${topicName}`);
22
+ const pubSubTopic = await pubSubTopicRef.get();
23
+ if (pubSubTopic.exists) {
24
+ continue;
25
+ }
26
+ await pubSubTopicRef.set({ timestamp: new Date() });
27
+ }
28
+ }
29
+ exports.createPubSubTopics = createPubSubTopics;
19
30
  async function cleanPubSubProcessedIds(event) {
20
31
  console.info("Running cleanPubSubProcessedIds");
21
32
  const topicsSnapshot = await index_1.db.collection("@topics").get();
@@ -23,8 +34,9 @@ async function cleanPubSubProcessedIds(event) {
23
34
  for (const topicDoc of topicsSnapshot.docs) {
24
35
  const query = topicDoc.ref.collection("processedIds")
25
36
  .where("timestamp", "<", new Date(Date.now() - 1000 * 60 * 60 * 24 * 7));
26
- await (0, misc_1.deleteCollection)(query);
27
- i++;
37
+ await (0, misc_1.deleteCollection)(query, (snapshot) => {
38
+ i += snapshot.size;
39
+ });
28
40
  }
29
41
  console.info(`Cleaned ${i} topics of processedIds`);
30
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pubsub.js","sourceRoot":"","sources":["../../src/utils/pubsub.ts"],"names":[],"mappings":";;;AAAA,oCAA4B;AAC5B,iCAAwC;AAGxC,KAAK,UAAU,iBAAiB,CAAC,SAAiB,EAAE,EAAU;IAC5D,MAAM,MAAM,GAAG,UAAE,CAAC,GAAG,CAAC,WAAW,SAAS,iBAAiB,EAAE,EAAE,CAAC,CAAC;IACjE,MAAM,MAAM,CAAC,GAAG,CAAC,EAAC,SAAS,EAAE,IAAI,IAAI,EAAE,EAAC,CAAC,CAAC;AAC5C,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,SAAiB,EAAE,EAAU;IACtD,MAAM,MAAM,GAAG,UAAE,CAAC,GAAG,CAAC,WAAW,SAAS,iBAAiB,EAAE,EAAE,CAAC,CAAC;IACjE,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;IAC/B,OAAO,GAAG,CAAC,MAAM,CAAC;AACpB,CAAC;AAEY,QAAA,WAAW,GAAG;IACzB,iBAAiB;IACjB,WAAW;CACZ,CAAC;AAEK,KAAK,UAAU,uBAAuB,CAAC,KAAqB;IACjE,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAChD,MAAM,cAAc,GAAG,MAAM,UAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC;IAC5D,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,MAAM,QAAQ,IAAI,cAAc,CAAC,IAAI,EAAE;QAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC;aAClD,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QAE3E,MAAM,IAAA,uBAAgB,EAAC,KAAK,CAAC,CAAC;QAC9B,CAAC,EAAE,CAAC;KACL;IACD,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC;AACtD,CAAC;AAZD,0DAYC"}
1
+ {"version":3,"file":"pubsub.js","sourceRoot":"","sources":["../../src/utils/pubsub.ts"],"names":[],"mappings":";;;AAAA,oCAA4B;AAC5B,iCAAwC;AAGxC,KAAK,UAAU,iBAAiB,CAAC,SAAiB,EAAE,EAAU;IAC5D,MAAM,MAAM,GAAG,UAAE,CAAC,GAAG,CAAC,WAAW,SAAS,iBAAiB,EAAE,EAAE,CAAC,CAAC;IACjE,MAAM,MAAM,CAAC,GAAG,CAAC,EAAC,SAAS,EAAE,IAAI,IAAI,EAAE,EAAC,CAAC,CAAC;AAC5C,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,SAAiB,EAAE,EAAU;IACtD,MAAM,MAAM,GAAG,UAAE,CAAC,GAAG,CAAC,WAAW,SAAS,iBAAiB,EAAE,EAAE,CAAC,CAAC;IACjE,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC;IAC/B,OAAO,GAAG,CAAC,MAAM,CAAC;AACpB,CAAC;AAEY,QAAA,WAAW,GAAG;IACzB,iBAAiB;IACjB,WAAW;CACZ,CAAC;AAEK,KAAK,UAAU,kBAAkB,CAAC,YAAsB;IAC7D,KAAK,MAAM,SAAS,IAAI,YAAY,EAAE;QACpC,MAAM,cAAc,GAAG,UAAE,CAAC,GAAG,CAAC,WAAW,SAAS,EAAE,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,CAAC;QAC/C,IAAI,WAAW,CAAC,MAAM,EAAE;YACtB,SAAS;SACV;QACD,MAAM,cAAc,CAAC,GAAG,CAAC,EAAC,SAAS,EAAE,IAAI,IAAI,EAAE,EAAC,CAAC,CAAC;KACnD;AACH,CAAC;AATD,gDASC;AAEM,KAAK,UAAU,uBAAuB,CAAC,KAAqB;IACjE,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAChD,MAAM,cAAc,GAAG,MAAM,UAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC;IAC5D,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,MAAM,QAAQ,IAAI,cAAc,CAAC,IAAI,EAAE;QAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC;aAClD,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QAE3E,MAAM,IAAA,uBAAgB,EAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,EAAE;YACzC,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC;QACrB,CAAC,CAAC,CAAC;KACJ;IACD,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC;AACtD,CAAC;AAbD,0DAaC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "emberflow",
3
- "version": "1.3.46",
3
+ "version": "1.3.48",
4
4
  "description": "A Firebase Cloud Functions library for handling document changes in a structured way",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.js",
@@ -10,6 +10,8 @@ export enum Entity {
10
10
  Server = "server",
11
11
  Channel = "channel",
12
12
  Member = "member",
13
+ Post = "post",
14
+ Comment = "comment",
13
15
  }
14
16
 
15
17
  // Map your custom entities to dbStructure below.
@@ -49,6 +51,13 @@ export const dbStructure = {
49
51
  },
50
52
  },
51
53
  },
54
+ posts: {
55
+ [Entity.Post]: {
56
+ comments: {
57
+ [Entity.Comment]: {},
58
+ },
59
+ },
60
+ },
52
61
  },
53
62
  },
54
63
  };