emberflow 1.0.20 → 1.0.22
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 -3
- package/lib/index.js +61 -80
- 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 +66 -149
- package/lib/tests/index-utils.test.js.map +1 -1
- package/lib/tests/index.test.js +246 -299
- package/lib/tests/index.test.js.map +1 -1
- package/lib/tests/utils/bill-protect.test.js +31 -32
- 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 +14 -3
- package/lib/utils/bill-protect.d.ts +4 -4
- package/lib/utils/bill-protect.js +12 -6
- package/lib/utils/bill-protect.js.map +1 -1
- 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 +6 -2
- package/lib/utils/paths.js +9 -2
- 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,11 @@
|
|
|
1
|
-
import * as functions from "firebase-functions";
|
|
2
1
|
import { FirebaseAdmin, LogicConfig, ProjectConfig, SecurityConfig, ValidatorConfig, ViewLogicConfig } from "./types";
|
|
3
2
|
import { Firestore } from "firebase-admin/firestore";
|
|
3
|
+
import { DatabaseEvent, DataSnapshot } from "firebase-functions/lib/v2/providers/database";
|
|
4
|
+
import { database } from "firebase-admin";
|
|
5
|
+
import Database = database.Database;
|
|
4
6
|
export declare let admin: FirebaseAdmin;
|
|
5
7
|
export declare let db: Firestore;
|
|
8
|
+
export declare let rtdb: Database;
|
|
6
9
|
export declare let dbStructure: Record<string, object>;
|
|
7
10
|
export declare let Entity: Record<string, string>;
|
|
8
11
|
export declare let securityConfig: SecurityConfig;
|
|
@@ -24,6 +27,6 @@ export declare function initializeEmberFlow(customProjectConfig: ProjectConfig,
|
|
|
24
27
|
docPathsRegex: Record<string, RegExp>;
|
|
25
28
|
functionsConfig: Record<string, any>;
|
|
26
29
|
};
|
|
27
|
-
declare function initActionRef(
|
|
28
|
-
export declare function
|
|
30
|
+
declare function initActionRef(actionId: string): Promise<FirebaseFirestore.DocumentReference<FirebaseFirestore.DocumentData>>;
|
|
31
|
+
export declare function onFormSubmit(event: DatabaseEvent<DataSnapshot>): Promise<void>;
|
|
29
32
|
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.
|
|
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;
|
|
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;
|
|
@@ -66,29 +69,11 @@ function initializeEmberFlow(customProjectConfig, adminInstance, customDbStructu
|
|
|
66
69
|
viewLogicFn: (0, view_logics_1.createViewLogicFn)(viewDef),
|
|
67
70
|
};
|
|
68
71
|
});
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
exports.functionsConfig[onCreateFuncName] = functions.firestore
|
|
75
|
-
.document(path)
|
|
76
|
-
.onCreate(async (snapshot, context) => {
|
|
77
|
-
await _onDocChange(onCreateFuncName, entity, { before: null, after: snapshot }, context, "create");
|
|
78
|
-
});
|
|
79
|
-
const onEditFuncName = `on${entity.charAt(0).toUpperCase() + entity.slice(1)}Update`;
|
|
80
|
-
exports.functionsConfig[onEditFuncName] = functions.firestore
|
|
81
|
-
.document(path)
|
|
82
|
-
.onUpdate(async (change, context) => {
|
|
83
|
-
await _onDocChange(onEditFuncName, entity, change, context, "update");
|
|
84
|
-
});
|
|
85
|
-
const onDeleteFuncName = `on${entity.charAt(0).toUpperCase() + entity.slice(1)}Delete`;
|
|
86
|
-
exports.functionsConfig[onDeleteFuncName] = functions.firestore
|
|
87
|
-
.document(path)
|
|
88
|
-
.onDelete(async (snapshot, context) => {
|
|
89
|
-
await _onDocChange(onDeleteFuncName, entity, { before: snapshot, after: null }, context, "delete");
|
|
90
|
-
});
|
|
91
|
-
});
|
|
72
|
+
exports.functionsConfig["onFormSubmit"] = (0, database_1.onValueCreated)({
|
|
73
|
+
ref: "forms/{userId}/{formId}",
|
|
74
|
+
region: exports.projectConfig.region,
|
|
75
|
+
instance: exports.projectConfig.rtdbName,
|
|
76
|
+
}, onFormSubmit);
|
|
92
77
|
exports.functionsConfig["onBudgetAlert"] =
|
|
93
78
|
functions.pubsub.topic(exports.projectConfig.budgetAlertTopicName).onPublish(bill_protect_1.stopBillingIfBudgetExceeded);
|
|
94
79
|
exports.functionsConfig["hourlyFunctions"] = functions.pubsub.schedule("every 1 hours")
|
|
@@ -99,95 +84,92 @@ function initializeEmberFlow(customProjectConfig, adminInstance, customDbStructu
|
|
|
99
84
|
return { docPaths: exports.docPaths, colPaths: exports.colPaths, docPathsRegex: exports.docPathsRegex, functionsConfig: exports.functionsConfig };
|
|
100
85
|
}
|
|
101
86
|
exports.initializeEmberFlow = initializeEmberFlow;
|
|
102
|
-
async function initActionRef(
|
|
103
|
-
return exports.db.collection("actions").doc(
|
|
87
|
+
async function initActionRef(actionId) {
|
|
88
|
+
return exports.db.collection("actions").doc(actionId);
|
|
104
89
|
}
|
|
105
|
-
async function
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
}
|
|
111
|
-
const
|
|
112
|
-
const
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
if (!snapshot || !document) {
|
|
118
|
-
console.error("Snapshot or document should not be null");
|
|
90
|
+
async function onFormSubmit(event) {
|
|
91
|
+
console.log("Running onFormSubmit");
|
|
92
|
+
const formSnapshot = event.data;
|
|
93
|
+
const form = formSnapshot.val();
|
|
94
|
+
const { userId, formId } = event.params;
|
|
95
|
+
const formResponseRef = exports.rtdb.ref(`forms-response/${formId}`);
|
|
96
|
+
const docPath = form["@docPath"];
|
|
97
|
+
const { entity, entityId } = (0, paths_1.parseEntity)(docPath);
|
|
98
|
+
if (!entity) {
|
|
99
|
+
const message = "docPath does not match any known Entity";
|
|
100
|
+
console.warn(message);
|
|
101
|
+
await formResponseRef.update({ "@status": "error", "@message": message });
|
|
119
102
|
return;
|
|
120
103
|
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
if (event === "delete") {
|
|
127
|
-
// Re-add deleted document
|
|
128
|
-
await snapshot.ref.set(document);
|
|
129
|
-
console.log(`Document re-added with ID ${documentId}`);
|
|
104
|
+
// Get user id from path
|
|
105
|
+
if (!docPath.startsWith(`users/${userId}`)) {
|
|
106
|
+
const message = "User id from path does not match user id from event params";
|
|
107
|
+
console.warn(message);
|
|
108
|
+
await formResponseRef.update({ "@status": "error", "@message": message });
|
|
130
109
|
return;
|
|
131
110
|
}
|
|
132
|
-
|
|
133
|
-
|
|
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"];
|
|
111
|
+
// Create Action form
|
|
112
|
+
const actionType = form["@actionType"];
|
|
142
113
|
if (!actionType) {
|
|
143
|
-
|
|
114
|
+
const message = "No @actionType found";
|
|
115
|
+
console.warn(message);
|
|
116
|
+
await formResponseRef.update({ "@status": "error", "@message": message });
|
|
144
117
|
return;
|
|
145
118
|
}
|
|
146
|
-
// Validate the
|
|
147
|
-
const [hasValidationError, validationResult] = await (0, index_utils_1.validateForm)(entity,
|
|
119
|
+
// Validate the form
|
|
120
|
+
const [hasValidationError, validationResult] = await (0, index_utils_1.validateForm)(entity, form);
|
|
148
121
|
if (hasValidationError) {
|
|
149
|
-
await
|
|
122
|
+
await formResponseRef.update({ "@status": "validation-error", "@message": validationResult });
|
|
150
123
|
return;
|
|
151
124
|
}
|
|
152
|
-
const
|
|
125
|
+
const document = (await exports.db.doc(docPath).get()).data() || {};
|
|
126
|
+
const formModifiedFields = (0, index_utils_1.getFormModifiedFields)(form, document);
|
|
153
127
|
// Run security check
|
|
154
128
|
const securityFn = (0, index_utils_1.getSecurityFn)(entity);
|
|
155
129
|
if (securityFn) {
|
|
156
|
-
const securityResult = await securityFn(entity, document,
|
|
130
|
+
const securityResult = await securityFn(entity, form, document, actionType, formModifiedFields);
|
|
157
131
|
if (securityResult.status === "rejected") {
|
|
158
132
|
console.log(`Security check failed: ${securityResult.message}`);
|
|
159
|
-
await
|
|
133
|
+
await formResponseRef.update({ "@status": "security-error", "@message": securityResult.message });
|
|
160
134
|
return;
|
|
161
135
|
}
|
|
162
136
|
}
|
|
163
137
|
// Check for delay
|
|
164
|
-
const delay =
|
|
138
|
+
const delay = form["@delay"];
|
|
165
139
|
if (delay) {
|
|
166
|
-
if (await (0, index_utils_1.delayFormSubmissionAndCheckIfCancelled)(delay,
|
|
167
|
-
await
|
|
140
|
+
if (await (0, index_utils_1.delayFormSubmissionAndCheckIfCancelled)(delay, formResponseRef)) {
|
|
141
|
+
await formResponseRef.update({ "@status": "cancelled" });
|
|
168
142
|
return;
|
|
169
143
|
}
|
|
170
144
|
}
|
|
171
|
-
await
|
|
172
|
-
const path = snapshot.ref.path;
|
|
145
|
+
await formResponseRef.update({ "@status": "processing" });
|
|
173
146
|
const status = "processing";
|
|
174
147
|
const timeCreated = exports._mockable.createNowTimestamp();
|
|
148
|
+
const eventContext = {
|
|
149
|
+
id: event.id,
|
|
150
|
+
uid: userId,
|
|
151
|
+
formId,
|
|
152
|
+
docId: entityId,
|
|
153
|
+
docPath,
|
|
154
|
+
entity,
|
|
155
|
+
};
|
|
175
156
|
const action = {
|
|
157
|
+
eventContext,
|
|
176
158
|
actionType,
|
|
177
|
-
path,
|
|
178
159
|
document,
|
|
160
|
+
form,
|
|
179
161
|
status,
|
|
180
162
|
timeCreated,
|
|
181
163
|
modifiedFields: formModifiedFields,
|
|
182
164
|
};
|
|
183
|
-
const actionRef = await exports._mockable.initActionRef(
|
|
165
|
+
const actionRef = await exports._mockable.initActionRef(formId);
|
|
184
166
|
await actionRef.set(action);
|
|
185
|
-
await
|
|
167
|
+
await formResponseRef.update({ "@status": "submitted" });
|
|
186
168
|
const logicResults = await (0, index_utils_1.runBusinessLogics)(actionType, formModifiedFields, entity, action);
|
|
187
|
-
// Save all logic results under logicResults collection of action
|
|
169
|
+
// Save all logic results under logicResults collection of action form
|
|
188
170
|
for (let i = 0; i < logicResults.length; i++) {
|
|
189
|
-
const
|
|
190
|
-
const logicResultRef =
|
|
171
|
+
const _a = logicResults[i], { documents } = _a, logicResult = __rest(_a, ["documents"]);
|
|
172
|
+
const logicResultRef = actionRef.collection("logicResults")
|
|
191
173
|
.doc(`${actionRef.id}-${i}`);
|
|
192
174
|
await logicResultRef.set(logicResult);
|
|
193
175
|
for (let j = 0; j < documents.length; j++) {
|
|
@@ -199,7 +181,6 @@ async function onDocChange(funcName, entity, change, context, event) {
|
|
|
199
181
|
if (errorLogicResults.length > 0) {
|
|
200
182
|
const errorMessage = errorLogicResults.map((result) => result.message).join("\n");
|
|
201
183
|
await actionRef.update({ status: "finished-with-error", message: errorMessage });
|
|
202
|
-
// TODO: Need to cancel everything if there's an error.
|
|
203
184
|
}
|
|
204
185
|
const dstPathLogicDocsMap = (0, index_utils_1.consolidateAndGroupByDstPath)(logicResults);
|
|
205
186
|
const { userDocsByDstPath, otherUsersDocsByDstPath, } = (0, index_utils_1.groupDocsByUserAndDstPath)(dstPathLogicDocsMap, userId);
|
|
@@ -208,7 +189,7 @@ async function onDocChange(funcName, entity, change, context, event) {
|
|
|
208
189
|
const { userDocsByDstPath: userViewDocsByDstPath, otherUsersDocsByDstPath: otherUsersViewDocsByDstPath, } = (0, index_utils_1.groupDocsByUserAndDstPath)(dstPathViewLogicDocsMap, userId);
|
|
209
190
|
await (0, index_utils_1.distribute)(userDocsByDstPath);
|
|
210
191
|
await (0, index_utils_1.distribute)(userViewDocsByDstPath);
|
|
211
|
-
await
|
|
192
|
+
await formResponseRef.update({ "@status": "finished" });
|
|
212
193
|
const peerSyncViewLogicResults = await (0, index_utils_1.runPeerSyncViews)(userDocsByDstPath);
|
|
213
194
|
const dstPathPeerSyncViewLogicDocsMap = (0, index_utils_1.consolidateAndGroupByDstPath)(peerSyncViewLogicResults);
|
|
214
195
|
const { otherUsersDocsByDstPath: otherUsersPeerSyncViewDocsByDstPath } = (0, index_utils_1.groupDocsByUserAndDstPath)(dstPathPeerSyncViewLogicDocsMap, userId);
|
|
@@ -217,5 +198,5 @@ async function onDocChange(funcName, entity, change, context, event) {
|
|
|
217
198
|
await (0, index_utils_1.distribute)(otherUsersPeerSyncViewDocsByDstPath);
|
|
218
199
|
await actionRef.update({ status: "finished" });
|
|
219
200
|
}
|
|
220
|
-
exports.
|
|
201
|
+
exports.onFormSubmit = onFormSubmit;
|
|
221
202
|
//# sourceMappingURL=index.js.map
|
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: {
|
|
@@ -10,11 +10,24 @@ var Entity;
|
|
|
10
10
|
Entity["Feed"] = "feed";
|
|
11
11
|
Entity["Friend"] = "friend";
|
|
12
12
|
Entity["Game"] = "game";
|
|
13
|
+
Entity["Algolia"] = "algolia";
|
|
14
|
+
Entity["Topic"] = "topic";
|
|
15
|
+
Entity["TopicAlgolia"] = "topic-algolia";
|
|
13
16
|
})(Entity = exports.Entity || (exports.Entity = {}));
|
|
14
17
|
// Map your custom entities to dbStructure below.
|
|
15
18
|
// Do not remove users and [Entity.User]
|
|
16
19
|
// by default, view matches the id attribute of the view so make the sure that a view has an id
|
|
17
20
|
exports.dbStructure = {
|
|
21
|
+
// TODO: Implement view Options i.e. autoCreate
|
|
22
|
+
push: {
|
|
23
|
+
[Entity.Algolia]: {
|
|
24
|
+
topics: {
|
|
25
|
+
[Entity.TopicAlgolia]: {
|
|
26
|
+
[(0, db_structure_1.view)(Entity.Topic, ["name", "summary", "type"], { autoCreate: true })]: {},
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
},
|
|
18
31
|
users: {
|
|
19
32
|
[Entity.User]: {
|
|
20
33
|
feeds: {
|