emberflow 1.0.26 → 1.0.28
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.js +118 -99
- package/lib/index.js.map +1 -1
- package/package.json +1 -1
package/lib/index.js
CHANGED
|
@@ -88,114 +88,133 @@ async function initActionRef(actionId) {
|
|
|
88
88
|
}
|
|
89
89
|
async function onFormSubmit(event) {
|
|
90
90
|
console.log("Running onFormSubmit");
|
|
91
|
-
const formSnapshot = event.data;
|
|
92
|
-
const form = formSnapshot.val();
|
|
93
91
|
const { userId, formId } = event.params;
|
|
94
92
|
const formResponseRef = exports.rtdb.ref(`forms-response/${formId}`);
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
const message = "User id from path does not match user id from event params";
|
|
106
|
-
console.warn(message);
|
|
107
|
-
await formResponseRef.update({ "@status": "error", "@message": message });
|
|
108
|
-
return;
|
|
109
|
-
}
|
|
110
|
-
// Create Action form
|
|
111
|
-
const actionType = form["@actionType"];
|
|
112
|
-
if (!actionType) {
|
|
113
|
-
const message = "No @actionType found";
|
|
114
|
-
console.warn(message);
|
|
115
|
-
await formResponseRef.update({ "@status": "error", "@message": message });
|
|
116
|
-
return;
|
|
117
|
-
}
|
|
118
|
-
// Validate the form
|
|
119
|
-
const [hasValidationError, validationResult] = await (0, index_utils_1.validateForm)(entity, form);
|
|
120
|
-
if (hasValidationError) {
|
|
121
|
-
await formResponseRef.update({ "@status": "validation-error", "@message": validationResult });
|
|
122
|
-
return;
|
|
123
|
-
}
|
|
124
|
-
const document = (await exports.db.doc(docPath).get()).data() || {};
|
|
125
|
-
const formModifiedFields = (0, index_utils_1.getFormModifiedFields)(form, document);
|
|
126
|
-
// Run security check
|
|
127
|
-
const securityFn = (0, index_utils_1.getSecurityFn)(entity);
|
|
128
|
-
if (securityFn) {
|
|
129
|
-
const securityResult = await securityFn(entity, form, document, actionType, formModifiedFields);
|
|
130
|
-
if (securityResult.status === "rejected") {
|
|
131
|
-
console.log(`Security check failed: ${securityResult.message}`);
|
|
132
|
-
await formResponseRef.update({ "@status": "security-error", "@message": securityResult.message });
|
|
93
|
+
try {
|
|
94
|
+
const formSnapshot = event.data;
|
|
95
|
+
const form = formSnapshot.val();
|
|
96
|
+
console.info("Validating docPath");
|
|
97
|
+
const docPath = form["@docPath"];
|
|
98
|
+
const { entity, entityId } = (0, paths_1.parseEntity)(docPath);
|
|
99
|
+
if (!entity) {
|
|
100
|
+
const message = "docPath does not match any known Entity";
|
|
101
|
+
console.warn(message);
|
|
102
|
+
await formResponseRef.update({ "@status": "error", "@message": message });
|
|
133
103
|
return;
|
|
134
104
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
await formResponseRef.update({ "@status": "cancelled" });
|
|
105
|
+
console.info("Validating userId");
|
|
106
|
+
if (!docPath.startsWith(`users/${userId}`)) {
|
|
107
|
+
const message = "User id from path does not match user id from event params";
|
|
108
|
+
console.warn(message);
|
|
109
|
+
await formResponseRef.update({ "@status": "error", "@message": message });
|
|
141
110
|
return;
|
|
142
111
|
}
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
112
|
+
// Create Action form
|
|
113
|
+
console.info("Validating @actionType");
|
|
114
|
+
const actionType = form["@actionType"];
|
|
115
|
+
if (!actionType) {
|
|
116
|
+
const message = "No @actionType found";
|
|
117
|
+
console.warn(message);
|
|
118
|
+
await formResponseRef.update({ "@status": "error", "@message": message });
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
// Validate the form
|
|
122
|
+
console.info("Validating form");
|
|
123
|
+
const [hasValidationError, validationResult] = await (0, index_utils_1.validateForm)(entity, form);
|
|
124
|
+
if (hasValidationError) {
|
|
125
|
+
await formResponseRef.update({ "@status": "validation-error", "@message": validationResult });
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
console.info("Validating Security");
|
|
129
|
+
const document = (await exports.db.doc(docPath).get()).data() || {};
|
|
130
|
+
const formModifiedFields = (0, index_utils_1.getFormModifiedFields)(form, document);
|
|
131
|
+
// Run security check
|
|
132
|
+
const securityFn = (0, index_utils_1.getSecurityFn)(entity);
|
|
133
|
+
if (securityFn) {
|
|
134
|
+
const securityResult = await securityFn(entity, form, document, actionType, formModifiedFields);
|
|
135
|
+
if (securityResult.status === "rejected") {
|
|
136
|
+
console.log(`Security check failed: ${securityResult.message}`);
|
|
137
|
+
await formResponseRef.update({ "@status": "security-error", "@message": securityResult.message });
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
// Check for delay
|
|
142
|
+
console.info("Checking for delay");
|
|
143
|
+
const delay = form["@delay"];
|
|
144
|
+
if (delay) {
|
|
145
|
+
if (await (0, index_utils_1.delayFormSubmissionAndCheckIfCancelled)(delay, formResponseRef)) {
|
|
146
|
+
await formResponseRef.update({ "@status": "cancelled" });
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
await formResponseRef.update({ "@status": "processing" });
|
|
151
|
+
const status = "processing";
|
|
152
|
+
const timeCreated = exports._mockable.createNowTimestamp();
|
|
153
|
+
console.info("Creating Action");
|
|
154
|
+
const eventContext = {
|
|
155
|
+
id: event.id,
|
|
156
|
+
uid: userId,
|
|
157
|
+
formId,
|
|
158
|
+
docId: entityId,
|
|
159
|
+
docPath,
|
|
160
|
+
entity,
|
|
161
|
+
};
|
|
162
|
+
const action = {
|
|
163
|
+
eventContext,
|
|
164
|
+
actionType,
|
|
165
|
+
document,
|
|
166
|
+
form,
|
|
167
|
+
status,
|
|
168
|
+
timeCreated,
|
|
169
|
+
modifiedFields: formModifiedFields,
|
|
170
|
+
};
|
|
171
|
+
const actionRef = await exports._mockable.initActionRef(formId);
|
|
172
|
+
await actionRef.set(action);
|
|
173
|
+
await formResponseRef.update({ "@status": "submitted" });
|
|
174
|
+
console.info("Running Business Logics");
|
|
175
|
+
const logicResults = await (0, index_utils_1.runBusinessLogics)(actionType, formModifiedFields, entity, action);
|
|
176
|
+
// Save all logic results under logicResults collection of action form
|
|
177
|
+
for (let i = 0; i < logicResults.length; i++) {
|
|
178
|
+
const _a = logicResults[i], { documents } = _a, logicResult = __rest(_a, ["documents"]);
|
|
179
|
+
const logicResultRef = actionRef.collection("logicResults")
|
|
180
|
+
.doc(`${actionRef.id}-${i}`);
|
|
181
|
+
await logicResultRef.set(logicResult);
|
|
182
|
+
for (let j = 0; j < documents.length; j++) {
|
|
183
|
+
await logicResultRef.collection("documents")
|
|
184
|
+
.doc(`${logicResultRef.id}-${j}`).set(document[j]);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
const errorLogicResults = logicResults.filter((result) => result.status === "error");
|
|
188
|
+
if (errorLogicResults.length > 0) {
|
|
189
|
+
const errorMessage = errorLogicResults.map((result) => result.message).join("\n");
|
|
190
|
+
await actionRef.update({ status: "finished-with-error", message: errorMessage });
|
|
177
191
|
}
|
|
192
|
+
console.info("Consolidating Logic Results");
|
|
193
|
+
const dstPathLogicDocsMap = (0, index_utils_1.consolidateAndGroupByDstPath)(logicResults);
|
|
194
|
+
const { userDocsByDstPath, otherUsersDocsByDstPath, } = (0, index_utils_1.groupDocsByUserAndDstPath)(dstPathLogicDocsMap, userId);
|
|
195
|
+
console.info("Running View Logics");
|
|
196
|
+
const viewLogicResults = await (0, index_utils_1.runViewLogics)(userDocsByDstPath);
|
|
197
|
+
const dstPathViewLogicDocsMap = (0, index_utils_1.consolidateAndGroupByDstPath)(viewLogicResults);
|
|
198
|
+
const { userDocsByDstPath: userViewDocsByDstPath, otherUsersDocsByDstPath: otherUsersViewDocsByDstPath, } = (0, index_utils_1.groupDocsByUserAndDstPath)(dstPathViewLogicDocsMap, userId);
|
|
199
|
+
console.info("Distributing Logic Results for initiating user");
|
|
200
|
+
await (0, index_utils_1.distribute)(userDocsByDstPath);
|
|
201
|
+
await (0, index_utils_1.distribute)(userViewDocsByDstPath);
|
|
202
|
+
await formResponseRef.update({ "@status": "finished" });
|
|
203
|
+
console.info("Running Peer Sync Views");
|
|
204
|
+
const peerSyncViewLogicResults = await (0, index_utils_1.runPeerSyncViews)(userDocsByDstPath);
|
|
205
|
+
const dstPathPeerSyncViewLogicDocsMap = (0, index_utils_1.consolidateAndGroupByDstPath)(peerSyncViewLogicResults);
|
|
206
|
+
const { otherUsersDocsByDstPath: otherUsersPeerSyncViewDocsByDstPath } = (0, index_utils_1.groupDocsByUserAndDstPath)(dstPathPeerSyncViewLogicDocsMap, userId);
|
|
207
|
+
console.info("Distributing Logic Results for other users");
|
|
208
|
+
await (0, index_utils_1.distribute)(otherUsersDocsByDstPath);
|
|
209
|
+
await (0, index_utils_1.distribute)(otherUsersViewDocsByDstPath);
|
|
210
|
+
await (0, index_utils_1.distribute)(otherUsersPeerSyncViewDocsByDstPath);
|
|
211
|
+
await actionRef.update({ status: "finished" });
|
|
212
|
+
console.info("Finished");
|
|
178
213
|
}
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
await actionRef.update({ status: "finished-with-error", message: errorMessage });
|
|
214
|
+
catch (error) {
|
|
215
|
+
console.error("Error in onFormSubmit", error);
|
|
216
|
+
await formResponseRef.update({ "@status": "error", "@message": error });
|
|
183
217
|
}
|
|
184
|
-
const dstPathLogicDocsMap = (0, index_utils_1.consolidateAndGroupByDstPath)(logicResults);
|
|
185
|
-
const { userDocsByDstPath, otherUsersDocsByDstPath, } = (0, index_utils_1.groupDocsByUserAndDstPath)(dstPathLogicDocsMap, userId);
|
|
186
|
-
const viewLogicResults = await (0, index_utils_1.runViewLogics)(userDocsByDstPath);
|
|
187
|
-
const dstPathViewLogicDocsMap = (0, index_utils_1.consolidateAndGroupByDstPath)(viewLogicResults);
|
|
188
|
-
const { userDocsByDstPath: userViewDocsByDstPath, otherUsersDocsByDstPath: otherUsersViewDocsByDstPath, } = (0, index_utils_1.groupDocsByUserAndDstPath)(dstPathViewLogicDocsMap, userId);
|
|
189
|
-
await (0, index_utils_1.distribute)(userDocsByDstPath);
|
|
190
|
-
await (0, index_utils_1.distribute)(userViewDocsByDstPath);
|
|
191
|
-
await formResponseRef.update({ "@status": "finished" });
|
|
192
|
-
const peerSyncViewLogicResults = await (0, index_utils_1.runPeerSyncViews)(userDocsByDstPath);
|
|
193
|
-
const dstPathPeerSyncViewLogicDocsMap = (0, index_utils_1.consolidateAndGroupByDstPath)(peerSyncViewLogicResults);
|
|
194
|
-
const { otherUsersDocsByDstPath: otherUsersPeerSyncViewDocsByDstPath } = (0, index_utils_1.groupDocsByUserAndDstPath)(dstPathPeerSyncViewLogicDocsMap, userId);
|
|
195
|
-
await (0, index_utils_1.distribute)(otherUsersDocsByDstPath);
|
|
196
|
-
await (0, index_utils_1.distribute)(otherUsersViewDocsByDstPath);
|
|
197
|
-
await (0, index_utils_1.distribute)(otherUsersPeerSyncViewDocsByDstPath);
|
|
198
|
-
await actionRef.update({ status: "finished" });
|
|
199
218
|
}
|
|
200
219
|
exports.onFormSubmit = onFormSubmit;
|
|
201
220
|
//# 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;AAahD,+CAauB;AACvB,2DAAoD;AACpD,sDAAuD;AACvD,uDAAkF;AAElF,6DAA2F;AAC3F,yCAA0C;AAkB7B,QAAA,eAAe,GAAwB,EAAE,CAAC;AAE1C,QAAA,SAAS,GAAG;IACvB,kBAAkB,EAAE,GAAG,EAAE,CAAC,aAAK,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE;IACzD,aAAa;CACd,CAAC;AAEF,SAAgB,mBAAmB,CACjC,mBAAkC,EAClC,aAA4B,EAC5B,iBAAyC,EACzC,YAAoC,EACpC,oBAAoC,EACpC,qBAAsC,EACtC,kBAAiC;IAOjC,qBAAa,GAAG,mBAAmB,CAAC;IACpC,aAAK,GAAG,aAAa,CAAC;IACtB,UAAE,GAAG,aAAK,CAAC,SAAS,EAAE,CAAC;IACvB,YAAI,GAAG,aAAK,CAAC,QAAQ,EAAE,CAAC;IACxB,mBAAW,GAAG,iBAAiB,CAAC;IAChC,cAAM,GAAG,YAAY,CAAC;IACtB,sBAAc,GAAG,oBAAoB,CAAC;IACtC,uBAAe,GAAG,qBAAqB,CAAC;IACxC,oBAAY,GAAG,kBAAkB,CAAC;IAElC,MAAM,EACJ,QAAQ,EAAE,EAAE,EACZ,QAAQ,EAAE,EAAE,EACZ,aAAa,EAAE,GAAG,EAClB,eAAe,EAAE,EAAE,GACpB,GAAG,IAAA,mCAAe,EAAC,mBAAW,EAAE,cAAM,CAAC,CAAC;IACzC,gBAAQ,GAAG,EAAE,CAAC;IACd,gBAAQ,GAAG,EAAE,CAAC;IACd,qBAAa,GAAG,GAAG,CAAC;IAEpB,wBAAgB,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,OAAuB,EAAmB,EAAE;QACrE,OAAO;YACL,IAAI,EAAE,GAAG,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,YAAY;YACxF,MAAM,EAAE,OAAO,CAAC,SAAS;YACzB,cAAc,EAAE,OAAO,CAAC,QAAQ;YAChC,WAAW,EAAE,IAAA,+BAAiB,EAAC,OAAO,CAAC;SACxC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,uBAAe,CAAC,cAAc,CAAC,GAAG,IAAA,yBAAc,EAC9C;QACE,GAAG,EAAE,yBAAyB;QAC9B,MAAM,EAAE,qBAAa,CAAC,MAAM;KAC7B,EACD,YAAY,CACb,CAAC;IAGF,uBAAe,CAAC,eAAe,CAAC;QAC1B,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAa,CAAC,oBAAoB,CAAC,CAAC,SAAS,CAAC,0CAA2B,CAAC,CAAC;IACxG,uBAAe,CAAC,iBAAiB,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC;SAC5E,KAAK,CAAC,8BAAe,CAAC,CAAC;IAC1B,uBAAe,CAAC,iBAAiB,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC;SAC9E,KAAK,CAAC,sCAAwB,CAAC,CAAC;IACnC,uBAAe,CAAC,mBAAmB,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,yCAAyC,CAAC,CAAC,QAAQ,CACrH,8BAAgB,CAAC,CAAC;IAEpB,OAAO,EAAC,QAAQ,EAAR,gBAAQ,EAAE,QAAQ,EAAR,gBAAQ,EAAE,aAAa,EAAb,qBAAa,EAAE,eAAe,EAAf,uBAAe,EAAC,CAAC;AAC9D,CAAC;AA9DD,kDA8DC;AAED,KAAK,UAAU,aAAa,CAAC,QAAgB;IAC3C,OAAO,UAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAChD,CAAC;AAEM,KAAK,UAAU,YAAY,CAChC,KAAkC;IAElC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|