emberflow 1.0.20 → 1.0.21
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.
- package/lib/index-utils.d.ts +6 -6
- package/lib/index-utils.js +29 -59
- package/lib/index-utils.js.map +1 -1
- package/lib/index.d.ts +6 -2
- package/lib/index.js +90 -73
- package/lib/index.js.map +1 -1
- package/lib/sample-custom/business-logics.js +3 -3
- package/lib/sample-custom/business-logics.js.map +1 -1
- package/lib/sample-custom/db-structure.d.ts +13 -1
- package/lib/sample-custom/db-structure.js +13 -0
- package/lib/sample-custom/db-structure.js.map +1 -1
- package/lib/sample-custom/security.js +2 -2
- package/lib/sample-custom/security.js.map +1 -1
- package/lib/sample-custom/validators.js +2 -4
- package/lib/sample-custom/validators.js.map +1 -1
- package/lib/tests/index-utils.test.js +65 -149
- package/lib/tests/index-utils.test.js.map +1 -1
- package/lib/tests/index.test.js +167 -279
- package/lib/tests/index.test.js.map +1 -1
- package/lib/tests/utils/bill-protect.test.js +7 -11
- package/lib/tests/utils/bill-protect.test.js.map +1 -1
- package/lib/tests/utils/paths.test.js +5 -1
- package/lib/tests/utils/paths.test.js.map +1 -1
- package/lib/types.d.ts +13 -3
- package/lib/utils/db-structure.d.ts +1 -1
- package/lib/utils/db-structure.js +1 -1
- package/lib/utils/db-structure.js.map +1 -1
- package/lib/utils/paths.d.ts +5 -0
- package/lib/utils/paths.js +9 -1
- package/lib/utils/paths.js.map +1 -1
- package/package.json +2 -2
- package/src/sample-custom/business-logics.ts +4 -3
- package/src/sample-custom/db-structure.ts +13 -0
- package/src/sample-custom/firestore.rules +2 -1
- package/src/sample-custom/security.ts +2 -2
- package/src/sample-custom/validators.ts +2 -4
package/lib/index-utils.d.ts
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { Action, LogicActionType, LogicResult, LogicResultDoc, SecurityFn, ValidateFormResult } from "./types";
|
|
2
|
-
import { firestore } from "firebase-admin";
|
|
3
|
-
import DocumentData = firestore.DocumentData;
|
|
2
|
+
import { database, firestore } from "firebase-admin";
|
|
4
3
|
import QueryDocumentSnapshot = firestore.QueryDocumentSnapshot;
|
|
4
|
+
import DocumentData = FirebaseFirestore.DocumentData;
|
|
5
|
+
import Reference = database.Reference;
|
|
5
6
|
export declare const _mockable: {
|
|
6
7
|
getViewLogicsConfig: () => import("./types").ViewLogicConfig[];
|
|
7
8
|
createNowTimestamp: () => firestore.Timestamp;
|
|
8
9
|
};
|
|
9
10
|
export declare function distribute(docsByDstPath: Map<string, LogicResultDoc>): Promise<void>;
|
|
10
|
-
export declare function
|
|
11
|
-
export declare function
|
|
12
|
-
export declare function
|
|
13
|
-
export declare function delayFormSubmissionAndCheckIfCancelled(delay: number, snapshot: firestore.DocumentSnapshot): Promise<boolean>;
|
|
11
|
+
export declare function validateForm(entity: string, form: FirebaseFirestore.DocumentData): Promise<ValidateFormResult>;
|
|
12
|
+
export declare function getFormModifiedFields(form: DocumentData, document: DocumentData): string[];
|
|
13
|
+
export declare function delayFormSubmissionAndCheckIfCancelled(delay: number, formResponseRef: Reference): Promise<boolean>;
|
|
14
14
|
export declare function runBusinessLogics(actionType: LogicActionType, formModifiedFields: string[], entity: string, action: Action): Promise<LogicResult[]>;
|
|
15
15
|
export declare function groupDocsByUserAndDstPath(docsByDstPath: Map<string, LogicResultDoc>, userId: string): {
|
|
16
16
|
userDocsByDstPath: Map<string, LogicResultDoc>;
|
package/lib/index-utils.js
CHANGED
|
@@ -23,7 +23,7 @@ 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.consolidateAndGroupByDstPath = exports.getSecurityFn = exports.groupDocsByUserAndDstPath = exports.runBusinessLogics = exports.delayFormSubmissionAndCheckIfCancelled = exports.getFormModifiedFields = exports.validateForm = exports.
|
|
26
|
+
exports.onDeleteFunction = exports.processScheduledEntities = exports.runPeerSyncViews = exports.runViewLogics = exports.consolidateAndGroupByDstPath = exports.getSecurityFn = exports.groupDocsByUserAndDstPath = exports.runBusinessLogics = exports.delayFormSubmissionAndCheckIfCancelled = exports.getFormModifiedFields = exports.validateForm = 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");
|
|
@@ -34,19 +34,7 @@ exports._mockable = {
|
|
|
34
34
|
getViewLogicsConfig: () => index_1.viewLogicConfigs,
|
|
35
35
|
createNowTimestamp: () => index_1.admin.firestore.Timestamp.now(),
|
|
36
36
|
};
|
|
37
|
-
async function commitBatchIfNeeded(batch, db, writeCount) {
|
|
38
|
-
writeCount++; // Increment writeCount for each write operation
|
|
39
|
-
if (writeCount === 500) { // Commit batch every 500 writes
|
|
40
|
-
console.log("Committing batch of 500 writes...");
|
|
41
|
-
await batch.commit();
|
|
42
|
-
batch = db.batch();
|
|
43
|
-
writeCount = 0;
|
|
44
|
-
}
|
|
45
|
-
return [batch, writeCount];
|
|
46
|
-
}
|
|
47
37
|
async function distribute(docsByDstPath) {
|
|
48
|
-
let batch = index_1.db.batch();
|
|
49
|
-
let writeCount = 0;
|
|
50
38
|
const forCopy = [];
|
|
51
39
|
for (const dstPath of Array.from(docsByDstPath.keys()).sort()) {
|
|
52
40
|
console.log(`Documents for path ${dstPath}:`);
|
|
@@ -60,8 +48,7 @@ async function distribute(docsByDstPath) {
|
|
|
60
48
|
else if (action === "delete") {
|
|
61
49
|
// Delete document at dstPath
|
|
62
50
|
const dstDocRef = index_1.db.doc(dstPath);
|
|
63
|
-
batch.
|
|
64
|
-
[batch, writeCount] = await commitBatchIfNeeded(batch, index_1.db, writeCount);
|
|
51
|
+
await batch.deleteDoc(dstDocRef);
|
|
65
52
|
console.log(`Document deleted at ${dstPath}`);
|
|
66
53
|
}
|
|
67
54
|
else if (action === "merge") {
|
|
@@ -99,16 +86,13 @@ async function distribute(docsByDstPath) {
|
|
|
99
86
|
}
|
|
100
87
|
// Merge document to dstPath
|
|
101
88
|
const dstDocRef = index_1.db.doc(dstPath);
|
|
102
|
-
batch.set(dstDocRef, updateData
|
|
103
|
-
[batch, writeCount] = await commitBatchIfNeeded(batch, index_1.db, writeCount);
|
|
89
|
+
await batch.set(dstDocRef, updateData);
|
|
104
90
|
console.log(`Document merged to ${dstPath}`);
|
|
105
91
|
}
|
|
106
92
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
console.log(`Committing final batch of ${writeCount} writes...`);
|
|
93
|
+
if (batch.writeCount > 0) {
|
|
94
|
+
console.log(`Committing final batch of ${batch.writeCount} writes...`);
|
|
110
95
|
await batch.commit();
|
|
111
|
-
writeCount = 0;
|
|
112
96
|
}
|
|
113
97
|
// Do copy after all other operations
|
|
114
98
|
for (const resultDoc of forCopy) {
|
|
@@ -118,8 +102,12 @@ async function distribute(docsByDstPath) {
|
|
|
118
102
|
}
|
|
119
103
|
const srcDocRef = index_1.db.doc(srcPath);
|
|
120
104
|
const dstDocRef = index_1.db.doc(dstPath);
|
|
121
|
-
|
|
122
|
-
|
|
105
|
+
const srcData = (await srcDocRef.get()).data();
|
|
106
|
+
if (!srcData) {
|
|
107
|
+
console.warn("Copy src doesn't exists");
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
await batch.set(dstDocRef, srcData);
|
|
123
111
|
console.log(`Document copied from ${srcPath} to ${dstPath}`);
|
|
124
112
|
if (copyMode === "recursive") {
|
|
125
113
|
const subDocPaths = (0, paths_1.expandAndGroupDocPaths)(srcPath);
|
|
@@ -132,41 +120,26 @@ async function distribute(docsByDstPath) {
|
|
|
132
120
|
for (const path of pathsToCopy) {
|
|
133
121
|
const srcDocRef = index_1.db.doc(path);
|
|
134
122
|
const dstDocRef = index_1.db.doc(path.replace(srcPath, dstPath));
|
|
135
|
-
|
|
136
|
-
|
|
123
|
+
const srcData = (await srcDocRef.get()).data();
|
|
124
|
+
if (!srcData) {
|
|
125
|
+
console.warn("Copy src doesn't exists");
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
await batch.set(dstDocRef, srcData);
|
|
137
129
|
console.log(`Document copied from ${path} to ${dstDocRef.path}`);
|
|
138
130
|
}
|
|
139
131
|
}
|
|
140
132
|
}
|
|
141
|
-
if (writeCount > 0) {
|
|
142
|
-
console.log(`Committing final batch of ${writeCount} writes...`);
|
|
133
|
+
if (batch.writeCount > 0) {
|
|
134
|
+
console.log(`Committing final batch of ${batch.writeCount} writes...`);
|
|
143
135
|
await batch.commit();
|
|
144
|
-
writeCount = 0;
|
|
145
136
|
}
|
|
146
137
|
}
|
|
147
138
|
exports.distribute = distribute;
|
|
148
|
-
async function
|
|
149
|
-
// Revert any changes made to document other than @form
|
|
150
|
-
const revertedValues = {};
|
|
151
|
-
if (beforeDocument) {
|
|
152
|
-
const modifiedFields = Object.keys(document !== null && document !== void 0 ? document : {}).filter((key) => !key.startsWith("@form"));
|
|
153
|
-
modifiedFields.forEach((field) => {
|
|
154
|
-
if (!(0, misc_1.deepEqual)(document === null || document === void 0 ? void 0 : document[field], beforeDocument[field])) {
|
|
155
|
-
revertedValues[field] = beforeDocument[field];
|
|
156
|
-
}
|
|
157
|
-
});
|
|
158
|
-
}
|
|
159
|
-
// if revertedValues is not empty, update the document
|
|
160
|
-
if (Object.keys(revertedValues).length > 0) {
|
|
161
|
-
console.log("Reverting document:\n", revertedValues);
|
|
162
|
-
await snapshot.ref.update(revertedValues);
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
exports.revertModificationsOutsideForm = revertModificationsOutsideForm;
|
|
166
|
-
async function validateForm(entity, document, docPath) {
|
|
139
|
+
async function validateForm(entity, form) {
|
|
167
140
|
let hasValidationError = false;
|
|
168
141
|
const validate = index_1.validatorConfig[entity];
|
|
169
|
-
const validationResult = await validate(
|
|
142
|
+
const validationResult = await validate(form);
|
|
170
143
|
// Check if validation failed
|
|
171
144
|
if (validationResult && Object.keys(validationResult).length > 0) {
|
|
172
145
|
console.log(`Document validation failed: ${JSON.stringify(validationResult)}`);
|
|
@@ -175,25 +148,22 @@ async function validateForm(entity, document, docPath) {
|
|
|
175
148
|
return [hasValidationError, validationResult];
|
|
176
149
|
}
|
|
177
150
|
exports.validateForm = validateForm;
|
|
178
|
-
function getFormModifiedFields(document) {
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
// compare value of each @form field with the value of the same field in the document to get modified fields
|
|
182
|
-
return formFields.filter((field) => { var _a; return !(0, misc_1.deepEqual)(document === null || document === void 0 ? void 0 : document[field], (_a = document === null || document === void 0 ? void 0 : document["@form"]) === null || _a === void 0 ? void 0 : _a[field]); });
|
|
151
|
+
function getFormModifiedFields(form, document) {
|
|
152
|
+
const formFields = Object.keys(form).filter((key) => !key.startsWith("@"));
|
|
153
|
+
return formFields.filter((field) => !(0, misc_1.deepEqual)(document[field], form[field]));
|
|
183
154
|
}
|
|
184
155
|
exports.getFormModifiedFields = getFormModifiedFields;
|
|
185
|
-
async function delayFormSubmissionAndCheckIfCancelled(delay,
|
|
186
|
-
var _a;
|
|
156
|
+
async function delayFormSubmissionAndCheckIfCancelled(delay, formResponseRef) {
|
|
187
157
|
let cancelFormSubmission = false;
|
|
188
158
|
console.log(`Delaying document for ${delay}ms...`);
|
|
189
|
-
await
|
|
159
|
+
await formResponseRef.update({ "@status": "delay" });
|
|
190
160
|
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
191
161
|
// Re-fetch document from Firestore
|
|
192
|
-
const updatedSnapshot = await
|
|
193
|
-
const updatedDocument = updatedSnapshot.
|
|
162
|
+
const updatedSnapshot = await formResponseRef.get();
|
|
163
|
+
const updatedDocument = updatedSnapshot.val();
|
|
194
164
|
console.log("Re-fetched document from Firestore after delay:\n", updatedDocument);
|
|
195
165
|
// Check if form status is "cancel"
|
|
196
|
-
if (
|
|
166
|
+
if (updatedDocument["@status"] === "cancel") {
|
|
197
167
|
cancelFormSubmission = true;
|
|
198
168
|
}
|
|
199
169
|
return cancelFormSubmission;
|
package/lib/index-utils.js.map
CHANGED
|
@@ -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
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import * as functions from "firebase-functions";
|
|
2
|
-
import { FirebaseAdmin, LogicConfig, ProjectConfig, SecurityConfig, ValidatorConfig, ViewLogicConfig } from "./types";
|
|
2
|
+
import { EventContext, FirebaseAdmin, LogicConfig, ProjectConfig, SecurityConfig, ValidatorConfig, ViewLogicConfig } from "./types";
|
|
3
3
|
import { Firestore } from "firebase-admin/firestore";
|
|
4
|
+
import { DataSnapshot } from "firebase-functions/lib/v2/providers/database";
|
|
5
|
+
import { database } from "firebase-admin";
|
|
6
|
+
import Database = database.Database;
|
|
4
7
|
export declare let admin: FirebaseAdmin;
|
|
5
8
|
export declare let db: Firestore;
|
|
9
|
+
export declare let rtdb: Database;
|
|
6
10
|
export declare let dbStructure: Record<string, object>;
|
|
7
11
|
export declare let Entity: Record<string, string>;
|
|
8
12
|
export declare let securityConfig: SecurityConfig;
|
|
@@ -25,5 +29,5 @@ export declare function initializeEmberFlow(customProjectConfig: ProjectConfig,
|
|
|
25
29
|
functionsConfig: Record<string, any>;
|
|
26
30
|
};
|
|
27
31
|
declare function initActionRef(eventId: string): Promise<FirebaseFirestore.DocumentReference<FirebaseFirestore.DocumentData>>;
|
|
28
|
-
export declare function onDocChange(funcName: string, entity: string, change: functions.Change<
|
|
32
|
+
export declare function onDocChange(funcName: string, entity: string, change: functions.Change<DataSnapshot | undefined>, eventContext: EventContext, event: "create" | "update" | "delete"): Promise<void>;
|
|
29
33
|
export {};
|
package/lib/index.js
CHANGED
|
@@ -34,12 +34,14 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
34
34
|
return t;
|
|
35
35
|
};
|
|
36
36
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
-
exports.onDocChange = 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.db = exports.admin = void 0;
|
|
37
|
+
exports.onDocChange = 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;
|
|
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");
|
|
41
41
|
const view_logics_1 = require("./logics/view-logics");
|
|
42
42
|
const bill_protect_1 = require("./utils/bill-protect");
|
|
43
|
+
const database_1 = require("firebase-functions/lib/v2/providers/database");
|
|
44
|
+
const paths_1 = require("./utils/paths");
|
|
43
45
|
exports.functionsConfig = {};
|
|
44
46
|
exports._mockable = {
|
|
45
47
|
createNowTimestamp: () => exports.admin.firestore.Timestamp.now(),
|
|
@@ -49,6 +51,7 @@ function initializeEmberFlow(customProjectConfig, adminInstance, customDbStructu
|
|
|
49
51
|
exports.projectConfig = customProjectConfig;
|
|
50
52
|
exports.admin = adminInstance;
|
|
51
53
|
exports.db = exports.admin.firestore();
|
|
54
|
+
exports.rtdb = exports.admin.database();
|
|
52
55
|
exports.dbStructure = customDbStructure;
|
|
53
56
|
exports.Entity = CustomEntity;
|
|
54
57
|
exports.securityConfig = customSecurityConfig;
|
|
@@ -67,27 +70,61 @@ function initializeEmberFlow(customProjectConfig, adminInstance, customDbStructu
|
|
|
67
70
|
};
|
|
68
71
|
});
|
|
69
72
|
const _onDocChange = (0, bill_protect_1.useBillProtect)(onDocChange);
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
+
exports.functionsConfig["onFormCreate"] = (0, database_1.onValueCreated)({
|
|
74
|
+
ref: "forms/{userId}/{formId}",
|
|
75
|
+
region: exports.projectConfig.region,
|
|
76
|
+
instance: exports.projectConfig.rtdbName,
|
|
77
|
+
}, async (event) => {
|
|
78
|
+
const snapshot = event.data;
|
|
79
|
+
if (!snapshot) {
|
|
80
|
+
console.log("Snapshot is undefined onValueCreated. Returning");
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
const { userId, formId } = event.params;
|
|
84
|
+
// Get user id from path
|
|
85
|
+
const docPath = snapshot.val()["@docPath"];
|
|
86
|
+
const { userId: docPathUserId, entity, docId } = (0, paths_1.parseUserAndEntity)(docPath);
|
|
87
|
+
if (docPathUserId !== userId) {
|
|
88
|
+
console.warn("User id from path does not match user id from event params");
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
const eventContext = {
|
|
92
|
+
id: event.id,
|
|
93
|
+
uid: userId,
|
|
94
|
+
formId,
|
|
95
|
+
docId,
|
|
96
|
+
docPath,
|
|
97
|
+
};
|
|
73
98
|
const onCreateFuncName = `on${entity.charAt(0).toUpperCase() + entity.slice(1)}Create`;
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
99
|
+
await _onDocChange(onCreateFuncName, entity, { before: undefined, after: snapshot }, eventContext, "create");
|
|
100
|
+
});
|
|
101
|
+
exports.functionsConfig["onFormUpdate"] = (0, database_1.onValueUpdated)({
|
|
102
|
+
ref: "forms/{userId}/{formId}",
|
|
103
|
+
region: exports.projectConfig.region,
|
|
104
|
+
instance: exports.projectConfig.rtdbName,
|
|
105
|
+
}, async (event) => {
|
|
106
|
+
const change = event.data;
|
|
107
|
+
if (!change) {
|
|
108
|
+
console.log("changeSnapshot is undefined onValueUpdated. Returning");
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
const { userId, formId } = event.params;
|
|
112
|
+
// Get user id from path
|
|
113
|
+
const docPath = change.after.val()["@docPath"];
|
|
114
|
+
const { userId: docPathUserId, entity, docId } = (0, paths_1.parseUserAndEntity)(docPath);
|
|
115
|
+
if (docPathUserId !== userId) {
|
|
116
|
+
console.warn("User id from path does not match user id from event params");
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
const eventContext = {
|
|
120
|
+
id: event.id,
|
|
121
|
+
uid: userId,
|
|
122
|
+
formId,
|
|
123
|
+
docId,
|
|
124
|
+
docPath,
|
|
125
|
+
};
|
|
126
|
+
const onEditFuncName = `on${entity.charAt(0).toUpperCase() + entity.slice(1)}Create`;
|
|
127
|
+
await _onDocChange(onEditFuncName, entity, change, eventContext, "update");
|
|
91
128
|
});
|
|
92
129
|
exports.functionsConfig["onBudgetAlert"] =
|
|
93
130
|
functions.pubsub.topic(exports.projectConfig.budgetAlertTopicName).onPublish(bill_protect_1.stopBillingIfBudgetExceeded);
|
|
@@ -102,92 +139,73 @@ exports.initializeEmberFlow = initializeEmberFlow;
|
|
|
102
139
|
async function initActionRef(eventId) {
|
|
103
140
|
return exports.db.collection("actions").doc(eventId);
|
|
104
141
|
}
|
|
105
|
-
async function onDocChange(funcName, entity, change,
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
142
|
+
async function onDocChange(funcName, entity, change, eventContext, event) {
|
|
143
|
+
console.log(`Running ${funcName} for ${entity} on ${event} event`);
|
|
144
|
+
const { id: eventId, uid: userId, formId, docPath } = eventContext;
|
|
145
|
+
const afterDocument = change.after ? change.after.val() : null;
|
|
146
|
+
const beforeDocument = change.before ? change.before.val() : null;
|
|
147
|
+
const form = afterDocument || beforeDocument;
|
|
148
|
+
const formSnapshot = (change.after || change.before);
|
|
149
|
+
const formResponseRef = exports.rtdb.ref(`forms-response/${formId}`);
|
|
150
|
+
if (!formSnapshot || !form) {
|
|
151
|
+
console.error("Snapshot or form should not be null");
|
|
109
152
|
return;
|
|
110
153
|
}
|
|
111
|
-
|
|
112
|
-
const userId = context.auth.uid;
|
|
113
|
-
const afterDocument = change.after ? change.after.data() : null;
|
|
114
|
-
const beforeDocument = change.before ? change.before.data() : null;
|
|
115
|
-
const document = afterDocument || beforeDocument;
|
|
116
|
-
const snapshot = change.after || change.before;
|
|
117
|
-
if (!snapshot || !document) {
|
|
118
|
-
console.error("Snapshot or document should not be null");
|
|
119
|
-
return;
|
|
120
|
-
}
|
|
121
|
-
const documentId = snapshot.ref.id;
|
|
122
|
-
console.log(`Document ${event}d in ${context.resource.service.split("/")[6]} collection with ID ${documentId}`);
|
|
154
|
+
console.log(`Document ${event}d in ${docPath}`);
|
|
123
155
|
console.log("After Document data: ", afterDocument);
|
|
124
|
-
console.log("Before
|
|
125
|
-
//
|
|
126
|
-
|
|
127
|
-
// Re-add deleted document
|
|
128
|
-
await snapshot.ref.set(document);
|
|
129
|
-
console.log(`Document re-added with ID ${documentId}`);
|
|
130
|
-
return;
|
|
131
|
-
}
|
|
132
|
-
if (afterDocument) {
|
|
133
|
-
await (0, index_utils_1.revertModificationsOutsideForm)(afterDocument, beforeDocument, snapshot);
|
|
134
|
-
}
|
|
135
|
-
// if not form.@status is submit then return
|
|
136
|
-
if (((_a = document === null || document === void 0 ? void 0 : document["@form"]) === null || _a === void 0 ? void 0 : _a["@status"]) !== "submit") {
|
|
137
|
-
console.log("Form is not submitted");
|
|
138
|
-
return;
|
|
139
|
-
}
|
|
140
|
-
// Create Action document
|
|
141
|
-
const actionType = (_b = document["@form"]) === null || _b === void 0 ? void 0 : _b["@actionType"];
|
|
156
|
+
console.log("Before form data: ", beforeDocument);
|
|
157
|
+
// Create Action form
|
|
158
|
+
const actionType = form["@actionType"];
|
|
142
159
|
if (!actionType) {
|
|
143
160
|
console.log("No actionType found");
|
|
144
161
|
return;
|
|
145
162
|
}
|
|
146
|
-
// Validate the
|
|
147
|
-
const [hasValidationError, validationResult] = await (0, index_utils_1.validateForm)(entity,
|
|
163
|
+
// Validate the form
|
|
164
|
+
const [hasValidationError, validationResult] = await (0, index_utils_1.validateForm)(entity, form);
|
|
148
165
|
if (hasValidationError) {
|
|
149
|
-
await
|
|
166
|
+
await formResponseRef.update({ "@status": "validation-error", "@message": validationResult });
|
|
150
167
|
return;
|
|
151
168
|
}
|
|
152
|
-
const
|
|
169
|
+
const document = (await exports.db.doc(docPath).get()).data() || {};
|
|
170
|
+
const formModifiedFields = (0, index_utils_1.getFormModifiedFields)(form, document);
|
|
153
171
|
// Run security check
|
|
154
172
|
const securityFn = (0, index_utils_1.getSecurityFn)(entity);
|
|
155
173
|
if (securityFn) {
|
|
156
|
-
const securityResult = await securityFn(entity, document, event, formModifiedFields);
|
|
174
|
+
const securityResult = await securityFn(entity, form, document, event, formModifiedFields);
|
|
157
175
|
if (securityResult.status === "rejected") {
|
|
158
176
|
console.log(`Security check failed: ${securityResult.message}`);
|
|
159
|
-
await
|
|
177
|
+
await formResponseRef.update({ "@status": "security-error", "@message": securityResult.message });
|
|
160
178
|
return;
|
|
161
179
|
}
|
|
162
180
|
}
|
|
163
181
|
// Check for delay
|
|
164
|
-
const delay =
|
|
182
|
+
const delay = form["@delay"];
|
|
165
183
|
if (delay) {
|
|
166
|
-
if (await (0, index_utils_1.delayFormSubmissionAndCheckIfCancelled)(delay,
|
|
167
|
-
await
|
|
184
|
+
if (await (0, index_utils_1.delayFormSubmissionAndCheckIfCancelled)(delay, formResponseRef)) {
|
|
185
|
+
await formResponseRef.update({ "@status": "cancelled" });
|
|
168
186
|
return;
|
|
169
187
|
}
|
|
170
188
|
}
|
|
171
|
-
await
|
|
172
|
-
const path = snapshot.ref.path;
|
|
189
|
+
await formResponseRef.update({ "@status": "processing" });
|
|
173
190
|
const status = "processing";
|
|
174
191
|
const timeCreated = exports._mockable.createNowTimestamp();
|
|
175
192
|
const action = {
|
|
193
|
+
eventContext,
|
|
176
194
|
actionType,
|
|
177
|
-
path,
|
|
178
195
|
document,
|
|
196
|
+
form,
|
|
179
197
|
status,
|
|
180
198
|
timeCreated,
|
|
181
199
|
modifiedFields: formModifiedFields,
|
|
182
200
|
};
|
|
183
201
|
const actionRef = await exports._mockable.initActionRef(eventId);
|
|
184
202
|
await actionRef.set(action);
|
|
185
|
-
await
|
|
203
|
+
await formResponseRef.update({ "@status": "submitted" });
|
|
186
204
|
const logicResults = await (0, index_utils_1.runBusinessLogics)(actionType, formModifiedFields, entity, action);
|
|
187
|
-
// Save all logic results under logicResults collection of action
|
|
205
|
+
// Save all logic results under logicResults collection of action form
|
|
188
206
|
for (let i = 0; i < logicResults.length; i++) {
|
|
189
|
-
const
|
|
190
|
-
const logicResultRef =
|
|
207
|
+
const _a = logicResults[i], { documents } = _a, logicResult = __rest(_a, ["documents"]);
|
|
208
|
+
const logicResultRef = actionRef.collection("logicResults")
|
|
191
209
|
.doc(`${actionRef.id}-${i}`);
|
|
192
210
|
await logicResultRef.set(logicResult);
|
|
193
211
|
for (let j = 0; j < documents.length; j++) {
|
|
@@ -199,7 +217,6 @@ async function onDocChange(funcName, entity, change, context, event) {
|
|
|
199
217
|
if (errorLogicResults.length > 0) {
|
|
200
218
|
const errorMessage = errorLogicResults.map((result) => result.message).join("\n");
|
|
201
219
|
await actionRef.update({ status: "finished-with-error", message: errorMessage });
|
|
202
|
-
// TODO: Need to cancel everything if there's an error.
|
|
203
220
|
}
|
|
204
221
|
const dstPathLogicDocsMap = (0, index_utils_1.consolidateAndGroupByDstPath)(logicResults);
|
|
205
222
|
const { userDocsByDstPath, otherUsersDocsByDstPath, } = (0, index_utils_1.groupDocsByUserAndDstPath)(dstPathLogicDocsMap, userId);
|
|
@@ -208,7 +225,7 @@ async function onDocChange(funcName, entity, change, context, event) {
|
|
|
208
225
|
const { userDocsByDstPath: userViewDocsByDstPath, otherUsersDocsByDstPath: otherUsersViewDocsByDstPath, } = (0, index_utils_1.groupDocsByUserAndDstPath)(dstPathViewLogicDocsMap, userId);
|
|
209
226
|
await (0, index_utils_1.distribute)(userDocsByDstPath);
|
|
210
227
|
await (0, index_utils_1.distribute)(userViewDocsByDstPath);
|
|
211
|
-
await
|
|
228
|
+
await formResponseRef.update({ "@status": "finished" });
|
|
212
229
|
const peerSyncViewLogicResults = await (0, index_utils_1.runPeerSyncViews)(userDocsByDstPath);
|
|
213
230
|
const dstPathPeerSyncViewLogicDocsMap = (0, index_utils_1.consolidateAndGroupByDstPath)(peerSyncViewLogicResults);
|
|
214
231
|
const { otherUsersDocsByDstPath: otherUsersPeerSyncViewDocsByDstPath } = (0, index_utils_1.groupDocsByUserAndDstPath)(dstPathPeerSyncViewLogicDocsMap, userId);
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8DAAgD;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,8 +26,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
26
26
|
exports.logics = void 0;
|
|
27
27
|
const admin = __importStar(require("firebase-admin"));
|
|
28
28
|
const echoLogic = async (action) => {
|
|
29
|
-
const { document, timeCreated,
|
|
30
|
-
console.log(`Executing EchoLogic on document at ${
|
|
29
|
+
const { document, timeCreated, eventContext: { docPath }, modifiedFields } = action;
|
|
30
|
+
console.log(`Executing EchoLogic on document at ${docPath}...`);
|
|
31
31
|
const updatedDoc = {};
|
|
32
32
|
// Copy modified fields of document's @form to the document
|
|
33
33
|
if (document["@form"] && modifiedFields) {
|
|
@@ -46,7 +46,7 @@ const echoLogic = async (action) => {
|
|
|
46
46
|
documents: [
|
|
47
47
|
{
|
|
48
48
|
action: "merge",
|
|
49
|
-
dstPath:
|
|
49
|
+
dstPath: docPath,
|
|
50
50
|
doc: updatedDoc,
|
|
51
51
|
instructions: {},
|
|
52
52
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"business-logics.js","sourceRoot":"","sources":["../../src/sample-custom/business-logics.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sDAAwC;AAMxC,MAAM,SAAS,GAAY,KAAK,EAAE,MAAM,EAAE,EAAE;IAC1C,MAAM,EAAC,QAAQ,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"business-logics.js","sourceRoot":"","sources":["../../src/sample-custom/business-logics.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sDAAwC;AAMxC,MAAM,SAAS,GAAY,KAAK,EAAE,MAAM,EAAE,EAAE;IAC1C,MAAM,EAAC,QAAQ,EAAE,WAAW,EAC1B,YAAY,EAAE,EAAC,OAAO,EAAC,EAAE,cAAc,EAAC,GAAG,MAAM,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,sCAAsC,OAAO,KAAK,CAAC,CAAC;IAEhE,MAAM,UAAU,GAAiB,EAAE,CAAC;IAEpC,2DAA2D;IAC3D,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,cAAc,EAAE;QACvC,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE;YAClC,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE;gBAC5B,UAAU,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC;aAC9C;SACF;KACF;IAED,0CAA0C;IAC1C,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,UAAU;QAClB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,QAAQ,EAAE;QAC7C,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE;QAC7C,SAAS,EAAE;YACT;gBACE,MAAM,EAAE,OAAO;gBACf,OAAO,EAAE,OAAO;gBAChB,GAAG,EAAE,UAAU;gBACf,YAAY,EAAE,EAAE;aACjB;SACF;KACF,CAAC;AACJ,CAAC,CAAC;AAGF,MAAM,MAAM,GAAkB;IAC5B;QACE,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;QACjC,cAAc,EAAE,KAAK;QACrB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,SAAS;KACnB;IACD,mBAAmB;CACpB,CAAC;AAEM,wBAAM"}
|
|
@@ -2,9 +2,21 @@ export declare enum Entity {
|
|
|
2
2
|
User = "user",
|
|
3
3
|
Feed = "feed",
|
|
4
4
|
Friend = "friend",
|
|
5
|
-
Game = "game"
|
|
5
|
+
Game = "game",
|
|
6
|
+
Algolia = "algolia",
|
|
7
|
+
Topic = "topic",
|
|
8
|
+
TopicAlgolia = "topic-algolia"
|
|
6
9
|
}
|
|
7
10
|
export declare const dbStructure: {
|
|
11
|
+
push: {
|
|
12
|
+
algolia: {
|
|
13
|
+
topics: {
|
|
14
|
+
"topic-algolia": {
|
|
15
|
+
[x: string]: {};
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
};
|
|
8
20
|
users: {
|
|
9
21
|
user: {
|
|
10
22
|
feeds: {
|