emberflow 1.0.8 → 1.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/lib/index-utils.d.ts +4 -0
- package/lib/index-utils.js +96 -21
- package/lib/index-utils.js.map +1 -1
- package/lib/index.d.ts +9 -3
- package/lib/index.js +42 -18
- package/lib/index.js.map +1 -1
- package/lib/tests/index-utils.test.js +14 -46
- package/lib/tests/index-utils.test.js.map +1 -1
- package/lib/tests/index.test.js +63 -31
- package/lib/tests/index.test.js.map +1 -1
- package/lib/tests/utils/batch.test.d.ts +1 -0
- package/lib/tests/utils/batch.test.js +128 -0
- package/lib/tests/utils/batch.test.js.map +1 -0
- package/lib/tests/utils/bill-protect.test.d.ts +1 -0
- package/lib/tests/utils/bill-protect.test.js +241 -0
- package/lib/tests/utils/bill-protect.test.js.map +1 -0
- package/lib/tests/utils/misc.test.js +24 -0
- package/lib/tests/utils/misc.test.js.map +1 -1
- package/lib/tests/utils/paths.test.js +21 -29
- package/lib/tests/utils/paths.test.js.map +1 -1
- package/lib/tests/utils/query.test.js +6 -8
- package/lib/tests/utils/query.test.js.map +1 -1
- package/lib/types.d.ts +15 -0
- package/lib/utils/batch.d.ts +9 -0
- package/lib/utils/batch.js +35 -0
- package/lib/utils/batch.js.map +1 -0
- package/lib/utils/bill-protect.d.ts +72 -0
- package/lib/utils/bill-protect.js +227 -0
- package/lib/utils/bill-protect.js.map +1 -0
- package/lib/utils/misc.d.ts +1 -0
- package/lib/utils/misc.js +13 -1
- package/lib/utils/misc.js.map +1 -1
- package/lib/utils/paths.d.ts +4 -1
- package/lib/utils/paths.js +19 -17
- package/lib/utils/paths.js.map +1 -1
- package/lib/utils/query.js +1 -1
- package/lib/utils/query.js.map +1 -1
- package/package.json +6 -2
- package/src/sample-custom/firestore.rules +16 -0
package/README.md
CHANGED
|
@@ -6,18 +6,18 @@ Emberflow is a library for Firebase Functions that simplifies the process of set
|
|
|
6
6
|
|
|
7
7
|
To use Emberflow in your Firebase Functions project, follow these steps:
|
|
8
8
|
|
|
9
|
-
1. Install Emberflow:
|
|
9
|
+
1. Install Emberflow in your 'functions' folder:
|
|
10
10
|
|
|
11
11
|
```sh
|
|
12
12
|
npm install emberflow
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
-
2. Import and initialize Emberflow in your Firebase Functions `
|
|
15
|
+
2. Import and initialize Emberflow in your Firebase Functions `index.ts` file:
|
|
16
16
|
|
|
17
17
|
```typescript
|
|
18
18
|
import * as admin from "firebase-admin";
|
|
19
19
|
import {dbStructure, Entity} from "./db-structure";
|
|
20
|
-
import {initializeEmberFlow} from "
|
|
20
|
+
import {initializeEmberFlow} from "emberflow";
|
|
21
21
|
import {securityConfig} from "./security";
|
|
22
22
|
import {validatorConfig} from "./validators";
|
|
23
23
|
import {logics} from "./business-logics";
|
package/lib/index-utils.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { Action, LogicActionType, LogicResult, LogicResultDoc, SecurityFn, ValidateFormResult } from "./types";
|
|
2
2
|
import { firestore } from "firebase-admin";
|
|
3
3
|
import DocumentData = firestore.DocumentData;
|
|
4
|
+
import QueryDocumentSnapshot = firestore.QueryDocumentSnapshot;
|
|
4
5
|
export declare const _mockable: {
|
|
5
6
|
getViewLogicsConfig: () => import("./types").ViewLogicConfig[];
|
|
7
|
+
createNowTimestamp: () => firestore.Timestamp;
|
|
6
8
|
};
|
|
7
9
|
export declare function distribute(docsByDstPath: Map<string, LogicResultDoc>): Promise<void>;
|
|
8
10
|
export declare function revertModificationsOutsideForm(document: FirebaseFirestore.DocumentData, beforeDocument: FirebaseFirestore.DocumentData | null | undefined, snapshot: FirebaseFirestore.DocumentSnapshot): Promise<void>;
|
|
@@ -18,3 +20,5 @@ export declare function getSecurityFn(entity: string): SecurityFn;
|
|
|
18
20
|
export declare function consolidateAndGroupByDstPath(logicResults: LogicResult[]): Map<string, LogicResultDoc>;
|
|
19
21
|
export declare function runViewLogics(dstPathLogicDocsMap: Map<string, LogicResultDoc>): Promise<LogicResult[]>;
|
|
20
22
|
export declare function runPeerSyncViews(userDocsByDstPath: Map<string, LogicResultDoc>): Promise<LogicResult[]>;
|
|
23
|
+
export declare function processScheduledEntities(): Promise<void>;
|
|
24
|
+
export declare function onDeleteFunction(snapshot: QueryDocumentSnapshot): Promise<void>;
|
package/lib/index-utils.js
CHANGED
|
@@ -1,12 +1,38 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.runPeerSyncViews = exports.runViewLogics = exports.consolidateAndGroupByDstPath = exports.getSecurityFn = exports.groupDocsByUserAndDstPath = exports.runBusinessLogics = exports.delayFormSubmissionAndCheckIfCancelled = exports.getFormModifiedFields = exports.validateForm = exports.revertModificationsOutsideForm = exports.distribute = exports._mockable = void 0;
|
|
26
|
+
exports.onDeleteFunction = exports.processScheduledEntities = exports.runPeerSyncViews = exports.runViewLogics = exports.consolidateAndGroupByDstPath = exports.getSecurityFn = exports.groupDocsByUserAndDstPath = exports.runBusinessLogics = exports.delayFormSubmissionAndCheckIfCancelled = exports.getFormModifiedFields = exports.validateForm = exports.revertModificationsOutsideForm = exports.distribute = exports._mockable = void 0;
|
|
4
27
|
const index_1 = require("./index");
|
|
5
28
|
const view_logics_1 = require("./logics/view-logics");
|
|
6
29
|
const paths_1 = require("./utils/paths");
|
|
7
30
|
const misc_1 = require("./utils/misc");
|
|
31
|
+
const batch = __importStar(require("./utils/batch"));
|
|
32
|
+
const functions_1 = require("@google-cloud/functions");
|
|
8
33
|
exports._mockable = {
|
|
9
34
|
getViewLogicsConfig: () => index_1.viewLogicConfigs,
|
|
35
|
+
createNowTimestamp: () => index_1.admin.firestore.Timestamp.now(),
|
|
10
36
|
};
|
|
11
37
|
async function commitBatchIfNeeded(batch, db, writeCount) {
|
|
12
38
|
writeCount++; // Increment writeCount for each write operation
|
|
@@ -19,8 +45,7 @@ async function commitBatchIfNeeded(batch, db, writeCount) {
|
|
|
19
45
|
return [batch, writeCount];
|
|
20
46
|
}
|
|
21
47
|
async function distribute(docsByDstPath) {
|
|
22
|
-
|
|
23
|
-
let batch = db.batch();
|
|
48
|
+
let batch = index_1.db.batch();
|
|
24
49
|
let writeCount = 0;
|
|
25
50
|
const forCopy = [];
|
|
26
51
|
for (const dstPath of Array.from(docsByDstPath.keys()).sort()) {
|
|
@@ -34,9 +59,9 @@ async function distribute(docsByDstPath) {
|
|
|
34
59
|
}
|
|
35
60
|
else if (action === "delete") {
|
|
36
61
|
// Delete document at dstPath
|
|
37
|
-
const dstDocRef = db.doc(dstPath);
|
|
62
|
+
const dstDocRef = index_1.db.doc(dstPath);
|
|
38
63
|
batch.delete(dstDocRef);
|
|
39
|
-
[batch, writeCount] = await commitBatchIfNeeded(batch, db, writeCount);
|
|
64
|
+
[batch, writeCount] = await commitBatchIfNeeded(batch, index_1.db, writeCount);
|
|
40
65
|
console.log(`Document deleted at ${dstPath}`);
|
|
41
66
|
}
|
|
42
67
|
else if (action === "merge") {
|
|
@@ -73,20 +98,13 @@ async function distribute(docsByDstPath) {
|
|
|
73
98
|
}
|
|
74
99
|
}
|
|
75
100
|
// Merge document to dstPath
|
|
76
|
-
const
|
|
77
|
-
let dstDocRef;
|
|
78
|
-
if (dstColPath) {
|
|
79
|
-
const dstColRef = db.collection(dstColPath);
|
|
80
|
-
dstDocRef = dstColRef.doc();
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
dstDocRef = db.doc(dstPath);
|
|
84
|
-
}
|
|
101
|
+
const dstDocRef = index_1.db.doc(dstPath);
|
|
85
102
|
batch.set(dstDocRef, updateData, { merge: true });
|
|
86
|
-
[batch, writeCount] = await commitBatchIfNeeded(batch, db, writeCount);
|
|
103
|
+
[batch, writeCount] = await commitBatchIfNeeded(batch, index_1.db, writeCount);
|
|
87
104
|
console.log(`Document merged to ${dstPath}`);
|
|
88
105
|
}
|
|
89
106
|
}
|
|
107
|
+
// TODO: Let's use the batch utils
|
|
90
108
|
if (writeCount > 0) {
|
|
91
109
|
console.log(`Committing final batch of ${writeCount} writes...`);
|
|
92
110
|
await batch.commit();
|
|
@@ -98,10 +116,10 @@ async function distribute(docsByDstPath) {
|
|
|
98
116
|
if (!srcPath) {
|
|
99
117
|
continue;
|
|
100
118
|
}
|
|
101
|
-
const srcDocRef = db.doc(srcPath);
|
|
102
|
-
const dstDocRef = db.doc(dstPath);
|
|
119
|
+
const srcDocRef = index_1.db.doc(srcPath);
|
|
120
|
+
const dstDocRef = index_1.db.doc(dstPath);
|
|
103
121
|
batch.set(dstDocRef, (await srcDocRef.get()).data());
|
|
104
|
-
[batch, writeCount] = await commitBatchIfNeeded(batch, db, writeCount);
|
|
122
|
+
[batch, writeCount] = await commitBatchIfNeeded(batch, index_1.db, writeCount);
|
|
105
123
|
console.log(`Document copied from ${srcPath} to ${dstPath}`);
|
|
106
124
|
if (copyMode === "recursive") {
|
|
107
125
|
const subDocPaths = (0, paths_1.expandAndGroupDocPaths)(srcPath);
|
|
@@ -112,10 +130,10 @@ async function distribute(docsByDstPath) {
|
|
|
112
130
|
}
|
|
113
131
|
}
|
|
114
132
|
for (const path of pathsToCopy) {
|
|
115
|
-
const srcDocRef = db.doc(path);
|
|
116
|
-
const dstDocRef = db.doc(path.replace(srcPath, dstPath));
|
|
133
|
+
const srcDocRef = index_1.db.doc(path);
|
|
134
|
+
const dstDocRef = index_1.db.doc(path.replace(srcPath, dstPath));
|
|
117
135
|
batch.set(dstDocRef, (await srcDocRef.get()).data());
|
|
118
|
-
[batch, writeCount] = await commitBatchIfNeeded(batch, db, writeCount);
|
|
136
|
+
[batch, writeCount] = await commitBatchIfNeeded(batch, index_1.db, writeCount);
|
|
119
137
|
console.log(`Document copied from ${path} to ${dstDocRef.path}`);
|
|
120
138
|
}
|
|
121
139
|
}
|
|
@@ -321,4 +339,61 @@ async function runPeerSyncViews(userDocsByDstPath) {
|
|
|
321
339
|
return logicResults;
|
|
322
340
|
}
|
|
323
341
|
exports.runPeerSyncViews = runPeerSyncViews;
|
|
342
|
+
async function processScheduledEntities() {
|
|
343
|
+
// Query all documents inside @scheduled collection where runAt is less than now
|
|
344
|
+
const now = exports._mockable.createNowTimestamp();
|
|
345
|
+
const scheduledDocs = await index_1.db.collection("@scheduled")
|
|
346
|
+
.where("runAt", "<=", now).get();
|
|
347
|
+
// For each document, get path, data and docId. Then copy data to the path
|
|
348
|
+
try {
|
|
349
|
+
scheduledDocs.forEach((doc) => {
|
|
350
|
+
const { colPath, data, } = doc.data();
|
|
351
|
+
const docRef = index_1.db.collection(colPath).doc(doc.id);
|
|
352
|
+
batch.set(docRef, data);
|
|
353
|
+
batch.deleteDoc(doc.ref);
|
|
354
|
+
});
|
|
355
|
+
}
|
|
356
|
+
finally {
|
|
357
|
+
await batch.commit();
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
exports.processScheduledEntities = processScheduledEntities;
|
|
361
|
+
async function onDeleteFunction(snapshot) {
|
|
362
|
+
const data = snapshot.data();
|
|
363
|
+
if (!data) {
|
|
364
|
+
console.error("Data should not be null");
|
|
365
|
+
return;
|
|
366
|
+
}
|
|
367
|
+
const { name } = data;
|
|
368
|
+
if (!name) {
|
|
369
|
+
console.error("name should not be null");
|
|
370
|
+
return;
|
|
371
|
+
}
|
|
372
|
+
return deleteFunction(index_1.projectConfig.projectId, name);
|
|
373
|
+
}
|
|
374
|
+
exports.onDeleteFunction = onDeleteFunction;
|
|
375
|
+
async function getFunctionLocation(projectId, functionName) {
|
|
376
|
+
const client = new functions_1.CloudFunctionsServiceClient();
|
|
377
|
+
const [functionsResponse] = await client.listFunctions({
|
|
378
|
+
parent: `projects/${projectId}/locations/-`,
|
|
379
|
+
});
|
|
380
|
+
const targetFunction = functionsResponse.find((fn) => fn.name === functionName);
|
|
381
|
+
if (targetFunction && targetFunction.name) {
|
|
382
|
+
const locationParts = targetFunction.name.split("/");
|
|
383
|
+
return locationParts[3];
|
|
384
|
+
}
|
|
385
|
+
return undefined;
|
|
386
|
+
}
|
|
387
|
+
async function deleteFunction(projectId, functionName) {
|
|
388
|
+
const location = await getFunctionLocation(projectId, functionName);
|
|
389
|
+
if (location) {
|
|
390
|
+
const client = new functions_1.CloudFunctionsServiceClient();
|
|
391
|
+
const name = `projects/${projectId}/locations/${location}/functions/${functionName}`;
|
|
392
|
+
await client.deleteFunction({ name });
|
|
393
|
+
console.log(`Function '${functionName}' in location '${location}' deleted successfully.`);
|
|
394
|
+
}
|
|
395
|
+
else {
|
|
396
|
+
console.log(`Function '${functionName}' not found or location not available.`);
|
|
397
|
+
}
|
|
398
|
+
}
|
|
324
399
|
//# sourceMappingURL=index-utils.js.map
|
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,6 +1,8 @@
|
|
|
1
1
|
import * as functions from "firebase-functions";
|
|
2
|
-
import { FirebaseAdmin, LogicConfig, SecurityConfig, ValidatorConfig, ViewLogicConfig } from "./types";
|
|
2
|
+
import { FirebaseAdmin, LogicConfig, ProjectConfig, SecurityConfig, ValidatorConfig, ViewLogicConfig } from "./types";
|
|
3
|
+
import { Firestore } from "firebase-admin/firestore";
|
|
3
4
|
export declare let admin: FirebaseAdmin;
|
|
5
|
+
export declare let db: Firestore;
|
|
4
6
|
export declare let dbStructure: Record<string, object>;
|
|
5
7
|
export declare let Entity: Record<string, string>;
|
|
6
8
|
export declare let securityConfig: SecurityConfig;
|
|
@@ -10,14 +12,18 @@ export declare let docPaths: Record<string, string>;
|
|
|
10
12
|
export declare let colPaths: Record<string, string>;
|
|
11
13
|
export declare let docPathsRegex: Record<string, RegExp>;
|
|
12
14
|
export declare let viewLogicConfigs: ViewLogicConfig[];
|
|
15
|
+
export declare let projectConfig: ProjectConfig;
|
|
13
16
|
export declare const functionsConfig: Record<string, any>;
|
|
14
17
|
export declare const _mockable: {
|
|
15
18
|
createNowTimestamp: () => FirebaseFirestore.Timestamp;
|
|
19
|
+
initActionRef: typeof initActionRef;
|
|
16
20
|
};
|
|
17
|
-
export declare function initializeEmberFlow(adminInstance: FirebaseAdmin, customDbStructure: Record<string, object>, CustomEntity: Record<string, string>, customSecurityConfig: SecurityConfig, customValidatorConfig: ValidatorConfig, customLogicConfigs: LogicConfig[]): {
|
|
21
|
+
export declare function initializeEmberFlow(customProjectConfig: ProjectConfig, adminInstance: FirebaseAdmin, customDbStructure: Record<string, object>, CustomEntity: Record<string, string>, customSecurityConfig: SecurityConfig, customValidatorConfig: ValidatorConfig, customLogicConfigs: LogicConfig[]): {
|
|
18
22
|
docPaths: Record<string, string>;
|
|
19
23
|
colPaths: Record<string, string>;
|
|
20
24
|
docPathsRegex: Record<string, RegExp>;
|
|
21
25
|
functionsConfig: Record<string, any>;
|
|
22
26
|
};
|
|
23
|
-
|
|
27
|
+
declare function initActionRef(eventId: string): Promise<FirebaseFirestore.DocumentReference<FirebaseFirestore.DocumentData>>;
|
|
28
|
+
export declare function onDocChange(funcName: string, entity: string, change: functions.Change<functions.firestore.DocumentSnapshot | null>, context: functions.EventContext, event: "create" | "update" | "delete"): Promise<void>;
|
|
29
|
+
export {};
|
package/lib/index.js
CHANGED
|
@@ -34,23 +34,27 @@ 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.viewLogicConfigs = exports.docPathsRegex = exports.colPaths = exports.docPaths = exports.logicConfigs = exports.validatorConfig = exports.securityConfig = exports.Entity = exports.dbStructure = 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.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
|
+
const bill_protect_1 = require("./utils/bill-protect");
|
|
42
43
|
exports.functionsConfig = {};
|
|
43
44
|
exports._mockable = {
|
|
44
45
|
createNowTimestamp: () => exports.admin.firestore.Timestamp.now(),
|
|
46
|
+
initActionRef,
|
|
45
47
|
};
|
|
46
|
-
function initializeEmberFlow(adminInstance, customDbStructure, CustomEntity, customSecurityConfig, customValidatorConfig, customLogicConfigs) {
|
|
48
|
+
function initializeEmberFlow(customProjectConfig, adminInstance, customDbStructure, CustomEntity, customSecurityConfig, customValidatorConfig, customLogicConfigs) {
|
|
49
|
+
exports.projectConfig = customProjectConfig;
|
|
47
50
|
exports.admin = adminInstance;
|
|
51
|
+
exports.db = exports.admin.firestore();
|
|
48
52
|
exports.dbStructure = customDbStructure;
|
|
49
53
|
exports.Entity = CustomEntity;
|
|
50
54
|
exports.securityConfig = customSecurityConfig;
|
|
51
55
|
exports.validatorConfig = customValidatorConfig;
|
|
52
56
|
exports.logicConfigs = customLogicConfigs;
|
|
53
|
-
const { docPaths: dp, colPaths: cp, docPathsRegex: dbr, viewDefinitions: vd } = (0, init_db_structure_1.initDbStructure)(exports.dbStructure, exports.Entity);
|
|
57
|
+
const { docPaths: dp, colPaths: cp, docPathsRegex: dbr, viewDefinitions: vd, } = (0, init_db_structure_1.initDbStructure)(exports.dbStructure, exports.Entity);
|
|
54
58
|
exports.docPaths = dp;
|
|
55
59
|
exports.colPaths = cp;
|
|
56
60
|
exports.docPathsRegex = dbr;
|
|
@@ -62,34 +66,49 @@ function initializeEmberFlow(adminInstance, customDbStructure, CustomEntity, cus
|
|
|
62
66
|
viewLogicFn: (0, view_logics_1.createViewLogicFn)(viewDef),
|
|
63
67
|
};
|
|
64
68
|
});
|
|
69
|
+
const _onDocChange = (0, bill_protect_1.useBillProtect)(onDocChange);
|
|
65
70
|
Object.values(exports.docPaths).forEach((path) => {
|
|
66
71
|
const parts = path.split("/");
|
|
67
72
|
const entity = parts[parts.length - 1].replace(/{(\w+)Id}$/, "$1");
|
|
68
|
-
|
|
73
|
+
const onCreateFuncName = `on${entity.charAt(0).toUpperCase() + entity.slice(1)}Create`;
|
|
74
|
+
exports.functionsConfig[onCreateFuncName] = functions.firestore
|
|
69
75
|
.document(path)
|
|
70
76
|
.onCreate(async (snapshot, context) => {
|
|
71
|
-
await
|
|
77
|
+
await _onDocChange(onCreateFuncName, entity, { before: null, after: snapshot }, context, "create");
|
|
72
78
|
});
|
|
73
|
-
|
|
79
|
+
const onEditFuncName = `on${entity.charAt(0).toUpperCase() + entity.slice(1)}Update`;
|
|
80
|
+
exports.functionsConfig[onEditFuncName] = functions.firestore
|
|
74
81
|
.document(path)
|
|
75
82
|
.onUpdate(async (change, context) => {
|
|
76
|
-
await
|
|
83
|
+
await _onDocChange(onEditFuncName, entity, change, context, "update");
|
|
77
84
|
});
|
|
78
|
-
|
|
85
|
+
const onDeleteFuncName = `on${entity.charAt(0).toUpperCase() + entity.slice(1)}Delete`;
|
|
86
|
+
exports.functionsConfig[onDeleteFuncName] = functions.firestore
|
|
79
87
|
.document(path)
|
|
80
88
|
.onDelete(async (snapshot, context) => {
|
|
81
|
-
await
|
|
89
|
+
await _onDocChange(onDeleteFuncName, entity, { before: snapshot, after: null }, context, "delete");
|
|
82
90
|
});
|
|
83
91
|
});
|
|
92
|
+
exports.functionsConfig["onBudgetAlert"] =
|
|
93
|
+
functions.pubsub.topic(exports.projectConfig.budgetAlertTopicName).onPublish(bill_protect_1.stopBillingIfBudgetExceeded);
|
|
94
|
+
exports.functionsConfig["hourlyFunctions"] = functions.pubsub.schedule("every 1 hours")
|
|
95
|
+
.onRun(bill_protect_1.resetUsageStats);
|
|
96
|
+
exports.functionsConfig["minuteFunctions"] = functions.pubsub.schedule("every 1 minute")
|
|
97
|
+
.onRun(index_utils_1.processScheduledEntities);
|
|
98
|
+
exports.functionsConfig["onDeleteFunctions"] = functions.firestore.document("/@server/delete/functions").onCreate(index_utils_1.onDeleteFunction);
|
|
84
99
|
return { docPaths: exports.docPaths, colPaths: exports.colPaths, docPathsRegex: exports.docPathsRegex, functionsConfig: exports.functionsConfig };
|
|
85
100
|
}
|
|
86
101
|
exports.initializeEmberFlow = initializeEmberFlow;
|
|
87
|
-
async function
|
|
102
|
+
async function initActionRef(eventId) {
|
|
103
|
+
return exports.db.collection("actions").doc(eventId);
|
|
104
|
+
}
|
|
105
|
+
async function onDocChange(funcName, entity, change, context, event) {
|
|
88
106
|
var _a, _b, _c;
|
|
89
107
|
if (!context.auth) {
|
|
90
108
|
console.log("Auth is null, then this change is initiated by the service account and should be ignored");
|
|
91
109
|
return;
|
|
92
110
|
}
|
|
111
|
+
const eventId = context.eventId;
|
|
93
112
|
const userId = context.auth.uid;
|
|
94
113
|
const afterDocument = change.after ? change.after.data() : null;
|
|
95
114
|
const beforeDocument = change.before ? change.before.data() : null;
|
|
@@ -161,21 +180,26 @@ async function onDocChange(entity, change, context, event) {
|
|
|
161
180
|
timeCreated,
|
|
162
181
|
modifiedFields: formModifiedFields,
|
|
163
182
|
};
|
|
164
|
-
const actionRef = await exports.
|
|
183
|
+
const actionRef = await exports._mockable.initActionRef(eventId);
|
|
184
|
+
await actionRef.set(action);
|
|
165
185
|
await snapshot.ref.update({ "@form.@status": "submitted" });
|
|
166
186
|
const logicResults = await (0, index_utils_1.runBusinessLogics)(actionType, formModifiedFields, entity, action);
|
|
167
187
|
// Save all logic results under logicResults collection of action document
|
|
168
|
-
|
|
169
|
-
const { documents } =
|
|
170
|
-
const logicResultRef = await actionRef.collection("logicResults")
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
188
|
+
for (let i = 0; i < logicResults.length; i++) {
|
|
189
|
+
const _d = logicResults[i], { documents } = _d, logicResult = __rest(_d, ["documents"]);
|
|
190
|
+
const logicResultRef = await actionRef.collection("logicResults")
|
|
191
|
+
.doc(`${actionRef.id}-${i}`);
|
|
192
|
+
await logicResultRef.set(logicResult);
|
|
193
|
+
for (let j = 0; j < documents.length; j++) {
|
|
194
|
+
await logicResultRef.collection("documents")
|
|
195
|
+
.doc(`${logicResultRef.id}-${j}`).set(document[j]);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
175
198
|
const errorLogicResults = logicResults.filter((result) => result.status === "error");
|
|
176
199
|
if (errorLogicResults.length > 0) {
|
|
177
200
|
const errorMessage = errorLogicResults.map((result) => result.message).join("\n");
|
|
178
201
|
await actionRef.update({ status: "finished-with-error", message: errorMessage });
|
|
202
|
+
// TODO: Need to cancel everything if there's an error.
|
|
179
203
|
}
|
|
180
204
|
const dstPathLogicDocsMap = (0, index_utils_1.consolidateAndGroupByDstPath)(logicResults);
|
|
181
205
|
const { userDocsByDstPath, otherUsersDocsByDstPath, } = (0, index_utils_1.groupDocsByUserAndDstPath)(dstPathLogicDocsMap, 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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"}
|
|
@@ -34,6 +34,16 @@ const validators_1 = require("../sample-custom/validators");
|
|
|
34
34
|
admin.initializeApp();
|
|
35
35
|
jest.spyOn(console, "log").mockImplementation();
|
|
36
36
|
jest.spyOn(console, "info").mockImplementation();
|
|
37
|
+
const projectConfig = {
|
|
38
|
+
projectId: "your-project-id",
|
|
39
|
+
budgetAlertTopicName: "budget-alerts",
|
|
40
|
+
maxCostLimitPerFunction: 100,
|
|
41
|
+
specialCostLimitPerFunction: {
|
|
42
|
+
function1: 50,
|
|
43
|
+
function2: 75,
|
|
44
|
+
function3: 120,
|
|
45
|
+
},
|
|
46
|
+
};
|
|
37
47
|
describe("distribute", () => {
|
|
38
48
|
let dbSpy;
|
|
39
49
|
let colSpy;
|
|
@@ -73,7 +83,7 @@ describe("distribute", () => {
|
|
|
73
83
|
dstPath: "/users/test-user-id/documents/test-doc-id",
|
|
74
84
|
},
|
|
75
85
|
]]);
|
|
76
|
-
(0, index_1.initializeEmberFlow)(admin, db_structure_1.dbStructure, db_structure_1.Entity, security_1.securityConfig, validators_1.validatorConfig, []);
|
|
86
|
+
(0, index_1.initializeEmberFlow)(projectConfig, admin, db_structure_1.dbStructure, db_structure_1.Entity, security_1.securityConfig, validators_1.validatorConfig, []);
|
|
77
87
|
await (0, index_utils_1.distribute)(userDocsByDstPath);
|
|
78
88
|
expect(batchSpy).toHaveBeenCalledTimes(1);
|
|
79
89
|
expect(admin.firestore().doc).toHaveBeenCalledTimes(1);
|
|
@@ -89,48 +99,6 @@ describe("distribute", () => {
|
|
|
89
99
|
expect(setSpy).toHaveBeenCalledTimes(1);
|
|
90
100
|
batchSpy.mockRestore();
|
|
91
101
|
});
|
|
92
|
-
it("should merge a document to dstPath with # in path", async () => {
|
|
93
|
-
const setSpy = jest.fn().mockResolvedValue({});
|
|
94
|
-
const batchSpy = jest.spyOn(admin.firestore(), "batch").mockReturnValue({
|
|
95
|
-
set: setSpy,
|
|
96
|
-
delete: jest.fn(),
|
|
97
|
-
commit: jest.fn().mockResolvedValue(undefined),
|
|
98
|
-
});
|
|
99
|
-
const randomId = "random-id";
|
|
100
|
-
const docSpy = jest.spyOn(admin.firestore.CollectionReference.prototype, "doc").mockReturnValue({
|
|
101
|
-
set: jest.fn(),
|
|
102
|
-
delete: jest.fn(),
|
|
103
|
-
collection: jest.fn(),
|
|
104
|
-
get: jest.fn(),
|
|
105
|
-
id: randomId,
|
|
106
|
-
parent: jest.fn(),
|
|
107
|
-
path: "/users/test-user-id/documents/" + randomId,
|
|
108
|
-
withConverter: jest.fn(),
|
|
109
|
-
});
|
|
110
|
-
jest.spyOn(admin.firestore(), "collection").mockReturnValue({
|
|
111
|
-
doc: docSpy,
|
|
112
|
-
});
|
|
113
|
-
const userDocsByDstPath = new Map([[
|
|
114
|
-
"/users/test-user-id/documents/#",
|
|
115
|
-
{
|
|
116
|
-
action: "merge",
|
|
117
|
-
doc: { name: "test-doc-name-updated" },
|
|
118
|
-
instructions: undefined,
|
|
119
|
-
dstPath: "/users/test-user-id/documents/#",
|
|
120
|
-
},
|
|
121
|
-
]]);
|
|
122
|
-
await (0, index_utils_1.distribute)(userDocsByDstPath);
|
|
123
|
-
expect(batchSpy).toHaveBeenCalledTimes(1);
|
|
124
|
-
expect(admin.firestore().collection).toHaveBeenCalledTimes(1);
|
|
125
|
-
expect(admin.firestore().doc).not.toHaveBeenCalled();
|
|
126
|
-
expect(admin.firestore().collection).toHaveBeenCalledWith("/users/test-user-id/documents");
|
|
127
|
-
expect(docSpy).toHaveBeenCalledTimes(1);
|
|
128
|
-
expect(setSpy.mock.calls[0][1]).toEqual({ name: "test-doc-name-updated" });
|
|
129
|
-
expect(setSpy.mock.calls[0][2]).toEqual({ merge: true });
|
|
130
|
-
expect(setSpy).toHaveBeenCalledTimes(1);
|
|
131
|
-
batchSpy.mockRestore();
|
|
132
|
-
docSpy.mockRestore();
|
|
133
|
-
});
|
|
134
102
|
it("should delete a document at dstPath", async () => {
|
|
135
103
|
const deleteSpy = jest.fn().mockResolvedValue({});
|
|
136
104
|
const batchSpy = jest.spyOn(admin.firestore(), "batch").mockReturnValue({
|
|
@@ -413,7 +381,7 @@ describe("runBusinessLogics", () => {
|
|
|
413
381
|
logicFn: logicFn3,
|
|
414
382
|
},
|
|
415
383
|
];
|
|
416
|
-
(0, index_1.initializeEmberFlow)(admin, db_structure_1.dbStructure, db_structure_1.Entity, security_1.securityConfig, validators_1.validatorConfig, logics);
|
|
384
|
+
(0, index_1.initializeEmberFlow)(projectConfig, admin, db_structure_1.dbStructure, db_structure_1.Entity, security_1.securityConfig, validators_1.validatorConfig, logics);
|
|
417
385
|
const results = await (0, index_utils_1.runBusinessLogics)(actionType, formModifiedFields, entity, action);
|
|
418
386
|
expect(logicFn1).toHaveBeenCalledWith(action);
|
|
419
387
|
expect(logicFn2).toHaveBeenCalledWith(action);
|
|
@@ -447,13 +415,13 @@ describe("runBusinessLogics", () => {
|
|
|
447
415
|
logicFn: jest.fn(),
|
|
448
416
|
},
|
|
449
417
|
];
|
|
450
|
-
(0, index_1.initializeEmberFlow)(admin, db_structure_1.dbStructure, db_structure_1.Entity, security_1.securityConfig, validators_1.validatorConfig, logics);
|
|
418
|
+
(0, index_1.initializeEmberFlow)(projectConfig, admin, db_structure_1.dbStructure, db_structure_1.Entity, security_1.securityConfig, validators_1.validatorConfig, logics);
|
|
451
419
|
const results = await (0, index_utils_1.runBusinessLogics)(actionType, formModifiedFields, entity, action);
|
|
452
420
|
expect(results).toEqual([]);
|
|
453
421
|
});
|
|
454
422
|
});
|
|
455
423
|
describe("groupDocsByUserAndDstPath", () => {
|
|
456
|
-
(0, index_1.initializeEmberFlow)(admin, db_structure_1.dbStructure, db_structure_1.Entity, {}, {}, []);
|
|
424
|
+
(0, index_1.initializeEmberFlow)(projectConfig, admin, db_structure_1.dbStructure, db_structure_1.Entity, {}, {}, []);
|
|
457
425
|
const docsByDstPath = new Map([
|
|
458
426
|
["users/user123/document1", { action: "merge", dstPath: "users/user123/document1", doc: { field1: "value1", field2: "value2" } }],
|
|
459
427
|
["users/user123/document2", { action: "merge", dstPath: "users/user123/document2", doc: { field3: "value3", field6: "value6" } }],
|