@flowerforce/flowerbase 1.0.1-beta.8 → 1.0.2
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/CHANGELOG.md +17 -0
- package/LICENSE +1 -1
- package/README.md +466 -7
- package/dist/auth/controller.d.ts.map +1 -1
- package/dist/auth/controller.js +11 -1
- package/dist/auth/providers/local-userpass/controller.d.ts.map +1 -1
- package/dist/auth/providers/local-userpass/controller.js +15 -15
- package/dist/auth/utils.d.ts +2 -1
- package/dist/auth/utils.d.ts.map +1 -1
- package/dist/auth/utils.js +14 -10
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +3 -3
- package/dist/features/endpoints/utils.d.ts +1 -1
- package/dist/features/endpoints/utils.d.ts.map +1 -1
- package/dist/features/endpoints/utils.js +5 -2
- package/dist/features/functions/controller.d.ts.map +1 -1
- package/dist/features/functions/controller.js +12 -8
- package/dist/features/functions/dtos.d.ts +2 -1
- package/dist/features/functions/dtos.d.ts.map +1 -1
- package/dist/features/functions/interface.d.ts +2 -1
- package/dist/features/functions/interface.d.ts.map +1 -1
- package/dist/features/functions/utils.d.ts +1 -1
- package/dist/features/functions/utils.d.ts.map +1 -1
- package/dist/features/functions/utils.js +4 -4
- package/dist/features/triggers/index.d.ts.map +1 -1
- package/dist/features/triggers/index.js +9 -3
- package/dist/features/triggers/interface.d.ts +4 -4
- package/dist/features/triggers/interface.d.ts.map +1 -1
- package/dist/features/triggers/utils.d.ts.map +1 -1
- package/dist/features/triggers/utils.js +25 -14
- package/dist/global.d.ts +9 -0
- package/dist/global.d.ts.map +1 -0
- package/dist/global.js +2 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -9
- package/dist/model.d.ts +1 -0
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +15 -0
- package/dist/services/api/index.d.ts.map +1 -1
- package/dist/services/api/index.js +6 -1
- package/dist/services/aws/index.d.ts.map +1 -1
- package/dist/services/aws/index.js +5 -5
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/mongodb-atlas/index.d.ts.map +1 -1
- package/dist/services/mongodb-atlas/index.js +76 -71
- package/dist/services/mongodb-atlas/model.d.ts +3 -3
- package/dist/services/mongodb-atlas/model.d.ts.map +1 -1
- package/dist/services/mongodb-atlas/utils.d.ts.map +1 -1
- package/dist/state.d.ts +2 -2
- package/dist/state.d.ts.map +1 -1
- package/dist/utils/context/helpers.d.ts +4 -4
- package/dist/utils/context/helpers.d.ts.map +1 -1
- package/dist/utils/context/helpers.js +1 -1
- package/dist/utils/context/index.d.ts.map +1 -1
- package/dist/utils/context/index.js +6 -5
- package/dist/utils/helpers/someAsync.d.ts.map +1 -1
- package/dist/utils/initializer/exposeRoutes.d.ts.map +1 -1
- package/dist/utils/initializer/exposeRoutes.js +44 -1
- package/dist/utils/initializer/registerPlugins.d.ts.map +1 -1
- package/dist/utils/initializer/registerPlugins.js +9 -9
- package/dist/utils/roles/helpers.d.ts.map +1 -1
- package/dist/utils/roles/helpers.js +9 -7
- package/dist/utils/roles/interface.d.ts.map +1 -1
- package/dist/utils/roles/machines/commonValidators.d.ts +2 -2
- package/dist/utils/roles/machines/commonValidators.d.ts.map +1 -1
- package/dist/utils/roles/machines/commonValidators.js +5 -6
- package/dist/utils/roles/machines/index.d.ts.map +1 -1
- package/dist/utils/roles/machines/interface.d.ts.map +1 -1
- package/dist/utils/roles/machines/machine.d.ts +3 -3
- package/dist/utils/roles/machines/machine.d.ts.map +1 -1
- package/dist/utils/roles/machines/machine.js +12 -4
- package/dist/utils/roles/machines/read/A/index.d.ts.map +1 -1
- package/dist/utils/roles/machines/read/A/index.js +12 -2
- package/dist/utils/roles/machines/read/B/index.d.ts.map +1 -1
- package/dist/utils/roles/machines/read/B/index.js +20 -5
- package/dist/utils/roles/machines/read/C/index.d.ts.map +1 -1
- package/dist/utils/roles/machines/read/C/index.js +20 -5
- package/dist/utils/roles/machines/read/D/index.d.ts.map +1 -1
- package/dist/utils/roles/machines/read/D/index.js +13 -3
- package/dist/utils/roles/machines/read/D/validators.d.ts +1 -1
- package/dist/utils/roles/machines/read/D/validators.d.ts.map +1 -1
- package/dist/utils/roles/machines/read/D/validators.js +8 -4
- package/dist/utils/roles/machines/utils.d.ts +4 -4
- package/dist/utils/roles/machines/utils.d.ts.map +1 -1
- package/dist/utils/roles/machines/utils.js +5 -1
- package/dist/utils/roles/machines/write/A/index.d.ts.map +1 -1
- package/dist/utils/roles/machines/write/A/index.js +13 -3
- package/dist/utils/roles/machines/write/B/index.d.ts.map +1 -1
- package/dist/utils/roles/machines/write/B/index.js +37 -10
- package/dist/utils/roles/machines/write/C/index.d.ts.map +1 -1
- package/dist/utils/roles/machines/write/C/index.js +13 -3
- package/dist/utils/roles/machines/write/C/validators.d.ts +1 -1
- package/dist/utils/roles/machines/write/C/validators.d.ts.map +1 -1
- package/dist/utils/roles/machines/write/C/validators.js +8 -4
- package/dist/utils/rules-matcher/interface.d.ts.map +1 -1
- package/dist/utils/rules-matcher/utils.d.ts.map +1 -1
- package/dist/utils/rules.d.ts.map +1 -1
- package/package.json +9 -2
- package/src/auth/controller.ts +12 -1
- package/src/auth/providers/local-userpass/controller.ts +47 -39
- package/src/auth/providers/local-userpass/dtos.ts +1 -1
- package/src/auth/utils.ts +24 -18
- package/src/constants.ts +7 -3
- package/src/features/endpoints/utils.ts +6 -4
- package/src/features/functions/controller.ts +23 -22
- package/src/features/functions/dtos.ts +9 -9
- package/src/features/functions/interface.ts +2 -1
- package/src/features/functions/utils.ts +12 -12
- package/src/features/triggers/index.ts +9 -6
- package/src/features/triggers/interface.ts +9 -10
- package/src/features/triggers/utils.ts +57 -29
- package/src/global.ts +9 -0
- package/src/index.ts +16 -11
- package/src/model.ts +3 -1
- package/src/services/api/index.ts +6 -1
- package/src/services/aws/index.ts +19 -17
- package/src/services/mongodb-atlas/index.ts +204 -163
- package/src/services/mongodb-atlas/model.ts +13 -13
- package/src/services/mongodb-atlas/utils.ts +6 -4
- package/src/state.ts +32 -20
- package/src/utils/__tests__/STEP_A_STATES.test.ts +78 -47
- package/src/utils/__tests__/STEP_B_STATES.test.ts +168 -105
- package/src/utils/__tests__/STEP_C_STATES.test.ts +150 -78
- package/src/utils/__tests__/STEP_D_STATES.test.ts +129 -86
- package/src/utils/__tests__/checkAdditionalFieldsFn.test.ts +35 -35
- package/src/utils/__tests__/checkApplyWhen.test.ts +40 -41
- package/src/utils/__tests__/checkFieldsPropertyExists.test.ts +40 -40
- package/src/utils/__tests__/checkIsValidFieldNameFn.test.ts +185 -184
- package/src/utils/__tests__/comparePassword.test.ts +27 -30
- package/src/utils/__tests__/evaluateDocumentsFiltersReadFn.test.ts +55 -47
- package/src/utils/__tests__/evaluateDocumentsFiltersWriteFn.test.ts +61 -47
- package/src/utils/__tests__/evaluateTopLevelReadFn.test.ts +48 -48
- package/src/utils/__tests__/evaluateTopLevelWriteFn.test.ts +56 -56
- package/src/utils/__tests__/exposeRoutes.test.ts +46 -44
- package/src/utils/__tests__/generateContextData.test.ts +57 -51
- package/src/utils/__tests__/getDefaultRule.test.ts +32 -27
- package/src/utils/__tests__/getKey.test.ts +10 -10
- package/src/utils/__tests__/getKeys.test.ts +10 -9
- package/src/utils/__tests__/getWinningRole.test.ts +57 -50
- package/src/utils/__tests__/hashPassword.test.ts +24 -25
- package/src/utils/__tests__/isEmpty.test.ts +14 -15
- package/src/utils/__tests__/logMachineInfo.test.ts +12 -12
- package/src/utils/__tests__/operators.test.ts +94 -96
- package/src/utils/__tests__/readFileContent.test.ts +28 -28
- package/src/utils/__tests__/registerPlugins.test.ts +44 -32
- package/src/utils/__tests__/rule.test.ts +47 -49
- package/src/utils/__tests__/rulesMatcherInterfaces.test.ts +57 -52
- package/src/utils/__tests__/rulesMatcherUtils.test.ts +64 -53
- package/src/utils/__tests__/someAsync.test.ts +46 -49
- package/src/utils/context/helpers.ts +1 -1
- package/src/utils/context/index.ts +9 -10
- package/src/utils/crypto/index.ts +2 -2
- package/src/utils/helpers/someAsync.ts +11 -11
- package/src/utils/initializer/exposeRoutes.ts +56 -2
- package/src/utils/initializer/registerPlugins.ts +11 -13
- package/src/utils/roles/helpers.ts +22 -15
- package/src/utils/roles/interface.ts +2 -3
- package/src/utils/roles/machines/commonValidators.ts +23 -14
- package/src/utils/roles/machines/index.ts +7 -4
- package/src/utils/roles/machines/interface.ts +17 -5
- package/src/utils/roles/machines/machine.ts +97 -72
- package/src/utils/roles/machines/read/A/index.ts +12 -4
- package/src/utils/roles/machines/read/B/index.ts +20 -7
- package/src/utils/roles/machines/read/C/index.ts +24 -8
- package/src/utils/roles/machines/read/D/index.ts +14 -8
- package/src/utils/roles/machines/read/D/validators.ts +21 -13
- package/src/utils/roles/machines/read/index.ts +5 -5
- package/src/utils/roles/machines/utils.ts +30 -13
- package/src/utils/roles/machines/write/A/index.ts +13 -5
- package/src/utils/roles/machines/write/B/index.ts +42 -16
- package/src/utils/roles/machines/write/C/index.ts +14 -8
- package/src/utils/roles/machines/write/C/validators.ts +21 -13
- package/src/utils/roles/machines/write/index.ts +4 -4
- package/src/utils/rules-matcher/interface.ts +4 -4
- package/src/utils/rules-matcher/utils.ts +10 -6
- package/src/utils/rules.ts +12 -5
- package/src/global.d.ts +0 -0
package/dist/auth/utils.js
CHANGED
|
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.getMailConfig = exports.loadCustomUserData = exports.loadAuthConfig = exports.PROVIDER_TYPE = exports.AUTH_ERRORS = exports.AUTH_ENDPOINTS = exports.REGISTRATION_SCHEMA = exports.CONFIRM_RESET_SCHEMA = exports.RESET_SCHEMA = exports.LOGIN_SCHEMA = void 0;
|
|
7
7
|
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
8
9
|
exports.LOGIN_SCHEMA = {
|
|
9
10
|
body: {
|
|
10
11
|
type: 'object',
|
|
@@ -54,6 +55,7 @@ var AUTH_ENDPOINTS;
|
|
|
54
55
|
AUTH_ENDPOINTS["SESSION"] = "/session";
|
|
55
56
|
AUTH_ENDPOINTS["RESET"] = "/reset/call";
|
|
56
57
|
AUTH_ENDPOINTS["CONFIRM_RESET"] = "/reset";
|
|
58
|
+
AUTH_ENDPOINTS["FIRST_USER"] = "/setup/first-user";
|
|
57
59
|
})(AUTH_ENDPOINTS || (exports.AUTH_ENDPOINTS = AUTH_ENDPOINTS = {}));
|
|
58
60
|
var AUTH_ERRORS;
|
|
59
61
|
(function (AUTH_ERRORS) {
|
|
@@ -67,7 +69,8 @@ exports.PROVIDER_TYPE = 'local-userpass';
|
|
|
67
69
|
* @testable
|
|
68
70
|
*/
|
|
69
71
|
const loadAuthConfig = () => {
|
|
70
|
-
|
|
72
|
+
const authPath = path_1.default.join(require.main.path, 'auth/providers.json');
|
|
73
|
+
return JSON.parse(fs_1.default.readFileSync(authPath, 'utf-8'));
|
|
71
74
|
};
|
|
72
75
|
exports.loadAuthConfig = loadAuthConfig;
|
|
73
76
|
/**
|
|
@@ -75,20 +78,21 @@ exports.loadAuthConfig = loadAuthConfig;
|
|
|
75
78
|
* @testable
|
|
76
79
|
*/
|
|
77
80
|
const loadCustomUserData = () => {
|
|
78
|
-
|
|
81
|
+
const userDataPath = path_1.default.join(require.main.path, 'auth/custom_user_data.json');
|
|
82
|
+
return JSON.parse(fs_1.default.readFileSync(userDataPath, 'utf-8'));
|
|
79
83
|
};
|
|
80
84
|
exports.loadCustomUserData = loadCustomUserData;
|
|
81
85
|
const getMailConfig = (resetPasswordConfig, token, tokenId) => {
|
|
82
86
|
var _a, _b, _c;
|
|
83
87
|
const { mailConfig, resetPasswordUrl } = resetPasswordConfig;
|
|
84
|
-
const ENV_PREFIX =
|
|
88
|
+
const ENV_PREFIX = 'ENV';
|
|
85
89
|
const { from, subject, mailToken } = mailConfig;
|
|
86
|
-
const [fromPrefix, fromPath] = from.split(
|
|
87
|
-
const currentSender = (_a = (fromPrefix === ENV_PREFIX ? process.env[fromPath] : from)) !== null && _a !== void 0 ? _a :
|
|
88
|
-
const [subjectPrefix, subjectPath] = subject.split(
|
|
89
|
-
const currentSubject = (_b = (subjectPrefix === ENV_PREFIX ? process.env[subjectPath] : subject)) !== null && _b !== void 0 ? _b :
|
|
90
|
-
const [mailTokenPrefix, mailTokenPath] = mailToken.split(
|
|
91
|
-
const currentMailToken = (_c = (mailTokenPrefix ===
|
|
90
|
+
const [fromPrefix, fromPath] = from.split('.');
|
|
91
|
+
const currentSender = (_a = (fromPrefix === ENV_PREFIX ? process.env[fromPath] : from)) !== null && _a !== void 0 ? _a : '';
|
|
92
|
+
const [subjectPrefix, subjectPath] = subject.split('.');
|
|
93
|
+
const currentSubject = (_b = (subjectPrefix === ENV_PREFIX ? process.env[subjectPath] : subject)) !== null && _b !== void 0 ? _b : '';
|
|
94
|
+
const [mailTokenPrefix, mailTokenPath] = mailToken.split('.');
|
|
95
|
+
const currentMailToken = (_c = (mailTokenPrefix === 'ENV' ? process.env[mailTokenPath] : mailToken)) !== null && _c !== void 0 ? _c : '';
|
|
92
96
|
const link = `${resetPasswordUrl}/${token}/${tokenId}`;
|
|
93
97
|
const body = `<body style="font-family: Arial, sans-serif; background-color: #f4f4f4; text-align: center; padding: 20px;">
|
|
94
98
|
<table width="100%" cellspacing="0" cellpadding="0">
|
|
@@ -113,7 +117,7 @@ const getMailConfig = (resetPasswordConfig, token, tokenId) => {
|
|
|
113
117
|
</table>
|
|
114
118
|
</body>`;
|
|
115
119
|
return {
|
|
116
|
-
from: currentSender !== null && currentSender !== void 0 ? currentSender :
|
|
120
|
+
from: currentSender !== null && currentSender !== void 0 ? currentSender : '',
|
|
117
121
|
subject: currentSubject,
|
|
118
122
|
mailToken: currentMailToken,
|
|
119
123
|
body
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,cAAc;;;;;;;;CAQ1B,CAAA;AACD,eAAO,MAAM,WAAW,QAA8C,CAAA;AACtE,eAAO,MAAM,YAAY,QAA8B,CAAA;AACvD,eAAO,MAAM,OAAO,QAAgB,CAAA;AACpC,eAAO,MAAM,WAAW;;;;;;CAMvB,CAAA"}
|
package/dist/constants.js
CHANGED
|
@@ -13,13 +13,13 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
14
|
exports.AUTH_CONFIG = exports.DB_NAME = exports.HTTPS_SCHEMA = exports.API_VERSION = exports.DEFAULT_CONFIG = void 0;
|
|
15
15
|
const utils_1 = require("./auth/utils");
|
|
16
|
-
const { database_name, collection_name = 'users', user_id_field =
|
|
16
|
+
const { database_name, collection_name = 'users', user_id_field = 'id' } = (0, utils_1.loadCustomUserData)();
|
|
17
17
|
const _a = (0, utils_1.loadAuthConfig)(), { auth_collection = 'auth_users' } = _a, configuration = __rest(_a, ["auth_collection"]);
|
|
18
18
|
exports.DEFAULT_CONFIG = {
|
|
19
19
|
PORT: Number(process.env.PORT) || 3000,
|
|
20
20
|
MONGODB_URL: process.env.MONGODB_URL || '',
|
|
21
21
|
JWT_SECRET: process.env.JWT_SECRET || '',
|
|
22
|
-
API_VERSION: process.env.API_VERSION ||
|
|
22
|
+
API_VERSION: process.env.API_VERSION || 'v2.0',
|
|
23
23
|
HTTPS_SCHEMA: process.env.HTTPS_SCHEMA || 'https',
|
|
24
24
|
HOST: process.env.HOST || '0.0.0.0',
|
|
25
25
|
ENABLE_LOGGER: process.env.ENABLE_LOGGER
|
|
@@ -30,7 +30,7 @@ exports.DB_NAME = database_name;
|
|
|
30
30
|
exports.AUTH_CONFIG = {
|
|
31
31
|
authCollection: auth_collection,
|
|
32
32
|
userCollection: collection_name,
|
|
33
|
-
resetPasswordCollection:
|
|
33
|
+
resetPasswordCollection: 'reset-password-requests',
|
|
34
34
|
resetPasswordConfig: configuration['local-userpass'].config,
|
|
35
35
|
user_id_field
|
|
36
36
|
};
|
|
@@ -4,7 +4,7 @@ import { Endpoints, GenerateHandlerParams } from './interface';
|
|
|
4
4
|
* > Loads the endpoint config json file
|
|
5
5
|
* @testable
|
|
6
6
|
*/
|
|
7
|
-
export declare const loadEndpoints: () => Promise<Endpoints>;
|
|
7
|
+
export declare const loadEndpoints: (rootDir?: string) => Promise<Endpoints>;
|
|
8
8
|
/**
|
|
9
9
|
* > Creates an object with a config for all HTTP methods
|
|
10
10
|
* @testable
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/features/endpoints/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/features/endpoints/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAKvE,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAE9D;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAU,gBAAuB,KAAG,OAAO,CAAC,SAAS,CAS9E,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAC3B,KAAK,eAAe,EACpB,SAAS,UAAU,CAAC,OAAO,eAAe,CAAC,EAC3C,UAAU,MAAM;;;;;;;CAQhB,CAAA;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAI,yCAI7B,qBAAqB,MACR,KAAK,cAAc,EAAE,KAAK,YAAY,gBAiBrD,CAAA"}
|
|
@@ -25,14 +25,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.generateHandler = exports.getMethodsConfig = exports.loadEndpoints = void 0;
|
|
27
27
|
const fs_1 = __importDefault(require("fs"));
|
|
28
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
28
29
|
const services_1 = require("../../services");
|
|
29
30
|
const context_1 = require("../../utils/context");
|
|
30
31
|
/**
|
|
31
32
|
* > Loads the endpoint config json file
|
|
32
33
|
* @testable
|
|
33
34
|
*/
|
|
34
|
-
const loadEndpoints = () => __awaiter(void 0,
|
|
35
|
-
const
|
|
35
|
+
const loadEndpoints = (...args_1) => __awaiter(void 0, [...args_1], void 0, function* (rootDir = process.cwd()) {
|
|
36
|
+
const endpointsDir = 'http_endpoints';
|
|
37
|
+
const endPointsFile = node_path_1.default.join(rootDir, endpointsDir, 'config.json');
|
|
38
|
+
const config = JSON.parse(fs_1.default.readFileSync(endPointsFile, 'utf-8'));
|
|
36
39
|
return config.map((_a) => {
|
|
37
40
|
var { http_method } = _a, endpoint = __rest(_a, ["http_method"]);
|
|
38
41
|
return (Object.assign({ http_method: http_method === '*' ? 'ALL' : http_method }, endpoint));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../src/features/functions/controller.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../src/features/functions/controller.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAGhD;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAE,kBAuFjC,CAAA"}
|
|
@@ -31,7 +31,7 @@ const functionsController = (app_1, _a) => __awaiter(void 0, [app_1, _a], void 0
|
|
|
31
31
|
if (!serviceFn) {
|
|
32
32
|
throw new Error(`Service "${req.body.service}" does not exist`);
|
|
33
33
|
}
|
|
34
|
-
const [{ database, collection, query, update, document }] = args;
|
|
34
|
+
const [{ database, collection, query, update, document, documents }] = args;
|
|
35
35
|
const currentMethod = serviceFn(app, { rules, user })
|
|
36
36
|
.db(database)
|
|
37
37
|
.collection(collection)[method];
|
|
@@ -39,7 +39,8 @@ const functionsController = (app_1, _a) => __awaiter(void 0, [app_1, _a], void 0
|
|
|
39
39
|
currentMethod,
|
|
40
40
|
query,
|
|
41
41
|
update,
|
|
42
|
-
document
|
|
42
|
+
document,
|
|
43
|
+
documents
|
|
43
44
|
});
|
|
44
45
|
return operatorsByType[method]();
|
|
45
46
|
}
|
|
@@ -59,20 +60,23 @@ const functionsController = (app_1, _a) => __awaiter(void 0, [app_1, _a], void 0
|
|
|
59
60
|
functionsList,
|
|
60
61
|
services: services_1.services
|
|
61
62
|
});
|
|
62
|
-
res.type(
|
|
63
|
+
res.type('application/json');
|
|
63
64
|
return JSON.stringify(result);
|
|
64
65
|
}));
|
|
65
66
|
app.get('/call', (req, res) => __awaiter(void 0, void 0, void 0, function* () {
|
|
66
67
|
const { query, user } = req;
|
|
67
68
|
const { baas_request, stitch_request } = query;
|
|
68
|
-
const config = JSON.parse(Buffer.from(baas_request || stitch_request ||
|
|
69
|
+
const config = JSON.parse(Buffer.from(baas_request || stitch_request || '', 'base64').toString('utf8'));
|
|
69
70
|
const [{ database, collection }] = config.arguments;
|
|
70
|
-
const app = state_1.StateManager.select(
|
|
71
|
-
const services = state_1.StateManager.select(
|
|
72
|
-
const changeStream = yield services[
|
|
71
|
+
const app = state_1.StateManager.select('app');
|
|
72
|
+
const services = state_1.StateManager.select('services');
|
|
73
|
+
const changeStream = yield services['mongodb-atlas'](app, {
|
|
73
74
|
user,
|
|
74
75
|
rules
|
|
75
|
-
})
|
|
76
|
+
})
|
|
77
|
+
.db(database)
|
|
78
|
+
.collection(collection)
|
|
79
|
+
.watch([], { fullDocument: 'whenAvailable' });
|
|
76
80
|
res.header('Content-Type', 'text/event-stream');
|
|
77
81
|
res.header('Cache-Control', 'no-cache');
|
|
78
82
|
res.header('Connection', 'keep-alive');
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Document } from
|
|
1
|
+
import { Document } from 'mongodb';
|
|
2
2
|
import { Arguments } from '../../auth/dtos';
|
|
3
3
|
import { GetOperatorsFunction } from '../../services/mongodb-atlas/model';
|
|
4
4
|
type MethodName = Exclude<keyof ReturnType<GetOperatorsFunction>, 'match'>;
|
|
@@ -20,6 +20,7 @@ type ArgumentsData = Arguments<{
|
|
|
20
20
|
query: Parameters<GetOperatorsFunction>;
|
|
21
21
|
update: Document;
|
|
22
22
|
document: Document;
|
|
23
|
+
documents: Document[];
|
|
23
24
|
}>;
|
|
24
25
|
export type Base64Function = {
|
|
25
26
|
name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dtos.d.ts","sourceRoot":"","sources":["../../../src/features/functions/dtos.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAA;AAEzE,KAAK,UAAU,GAAG,OAAO,CAAC,MAAM,UAAU,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC,CAAA;AAE1E,MAAM,MAAM,eAAe,GACvB;
|
|
1
|
+
{"version":3,"file":"dtos.d.ts","sourceRoot":"","sources":["../../../src/features/functions/dtos.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAA;AAEzE,KAAK,UAAU,GAAG,OAAO,CAAC,MAAM,UAAU,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC,CAAA;AAE1E,MAAM,MAAM,eAAe,GACvB;IACE,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,aAAa,CAAA;CACzB,GACD;IACE,SAAS,EAAE,aAAa,CAAA;IACxB,IAAI,EAAE,UAAU,CAAA;IAChB,OAAO,EAAE,eAAe,CAAA;CACzB,CAAA;AAEL,MAAM,MAAM,qBAAqB,GAAG;IAClC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,KAAK,aAAa,GAAG,SAAS,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,UAAU,CAAC,oBAAoB,CAAC,CAAA;IACvC,MAAM,EAAE,QAAQ,CAAA;IAChB,QAAQ,EAAE,QAAQ,CAAA;IAClB,SAAS,EAAE,QAAQ,EAAE,CAAA;CACtB,CAAC,CAAA;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,QAAQ,EAAE,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,KAAK,QAAQ,GAAG;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FastifyInstance } from 'fastify';
|
|
2
|
-
import { Document } from
|
|
2
|
+
import { Document } from 'mongodb';
|
|
3
3
|
import { GetOperatorsFunction } from '../../services/mongodb-atlas/model';
|
|
4
4
|
import { Rules } from '../rules/interface';
|
|
5
5
|
export interface FunctionConfig {
|
|
@@ -22,6 +22,7 @@ export type ExecuteQueryParams = {
|
|
|
22
22
|
query: Parameters<GetOperatorsFunction>;
|
|
23
23
|
update: Document;
|
|
24
24
|
document: Document;
|
|
25
|
+
documents: Document[];
|
|
25
26
|
};
|
|
26
27
|
type FunctionsControllerOptions = {
|
|
27
28
|
functionsList: Functions;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../src/features/functions/interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAA;AACzE,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAE1C,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAEtE,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;AAEhD,MAAM,MAAM,uBAAuB,GAAG;IACpC,GAAG,EAAE,eAAe,CAAA;IACpB,aAAa,EAAE,SAAS,CAAA;IACxB,SAAS,EAAE,KAAK,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,aAAa,EAAE,UAAU,CAAC,oBAAoB,CAAC,CAAC,MAAM,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAA;IACvF,KAAK,EAAE,UAAU,CAAC,oBAAoB,CAAC,CAAA;IACvC,MAAM,EAAE,QAAQ,CAAA;IAChB,QAAQ,EAAE,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../src/features/functions/interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAA;AACzE,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAE1C,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAEtE,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;AAEhD,MAAM,MAAM,uBAAuB,GAAG;IACpC,GAAG,EAAE,eAAe,CAAA;IACpB,aAAa,EAAE,SAAS,CAAA;IACxB,SAAS,EAAE,KAAK,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,aAAa,EAAE,UAAU,CAAC,oBAAoB,CAAC,CAAC,MAAM,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAA;IACvF,KAAK,EAAE,UAAU,CAAC,oBAAoB,CAAC,CAAA;IACvC,MAAM,EAAE,QAAQ,CAAA;IAChB,QAAQ,EAAE,QAAQ,CAAA;IAClB,SAAS,EAAE,QAAQ,EAAE,CAAA;CACtB,CAAA;AAED,KAAK,0BAA0B,GAAG;IAChC,aAAa,EAAE,SAAS,CAAA;IACxB,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG,CAC/B,GAAG,EAAE,eAAe,EACpB,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,0BAA0B,KACjD,OAAO,CAAC,IAAI,CAAC,CAAA"}
|
|
@@ -10,7 +10,7 @@ export declare const loadFunctions: (rootDir?: string) => Promise<Functions>;
|
|
|
10
10
|
* @param query -> the query data
|
|
11
11
|
* @param update -> the update Document that should be deserialized
|
|
12
12
|
*/
|
|
13
|
-
export declare const executeQuery: ({ currentMethod, query, update, document }: ExecuteQueryParams) => Promise<{
|
|
13
|
+
export declare const executeQuery: ({ currentMethod, query, update, document, documents }: ExecuteQueryParams) => Promise<{
|
|
14
14
|
find: () => Promise<any[]>;
|
|
15
15
|
findOne: () => Promise<unknown>;
|
|
16
16
|
deleteOne: () => Promise<unknown>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/features/functions/utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE3D;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAU,gBAAuB,KAAG,OAAO,CAAC,SAAS,CAwB9E,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,YAAY,GAAU,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/features/functions/utils.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE3D;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAU,gBAAuB,KAAG,OAAO,CAAC,SAAS,CAwB9E,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,YAAY,GAAU,uDAMhC,kBAAkB;;;;;;;;;EAiCpB,CAAA"}
|
|
@@ -40,7 +40,7 @@ const loadFunctions = (...args_1) => __awaiter(void 0, [...args_1], void 0, func
|
|
|
40
40
|
const extensions = ['.js', '.ts'];
|
|
41
41
|
let code = '';
|
|
42
42
|
const fnPath = extensions
|
|
43
|
-
.map(ext => node_path_1.default.join(rootDir, fnDir, `${name}${ext}`))
|
|
43
|
+
.map((ext) => node_path_1.default.join(rootDir, fnDir, `${name}${ext}`))
|
|
44
44
|
.find(fs_1.default.existsSync);
|
|
45
45
|
if (!fnPath) {
|
|
46
46
|
throw new Error(`File ${name}.js or ${name}.ts not found`);
|
|
@@ -58,7 +58,7 @@ exports.loadFunctions = loadFunctions;
|
|
|
58
58
|
* @param query -> the query data
|
|
59
59
|
* @param update -> the update Document that should be deserialized
|
|
60
60
|
*/
|
|
61
|
-
const executeQuery = (_a) => __awaiter(void 0, [_a], void 0, function* ({ currentMethod, query, update, document }) {
|
|
61
|
+
const executeQuery = (_a) => __awaiter(void 0, [_a], void 0, function* ({ currentMethod, query, update, document, documents }) {
|
|
62
62
|
return {
|
|
63
63
|
find: () => __awaiter(void 0, void 0, void 0, function* () {
|
|
64
64
|
return yield currentMethod(bson_1.EJSON.deserialize(query)).toArray();
|
|
@@ -68,8 +68,8 @@ const executeQuery = (_a) => __awaiter(void 0, [_a], void 0, function* ({ curren
|
|
|
68
68
|
insertOne: () => currentMethod(bson_1.EJSON.deserialize(document)),
|
|
69
69
|
updateOne: () => currentMethod(bson_1.EJSON.deserialize(query), bson_1.EJSON.deserialize(update)),
|
|
70
70
|
aggregate: () => currentMethod(bson_1.EJSON.deserialize(query)),
|
|
71
|
-
insertMany: () => currentMethod(bson_1.EJSON.deserialize(
|
|
72
|
-
updateMany: () => currentMethod(bson_1.EJSON.deserialize(query), bson_1.EJSON.deserialize(update))
|
|
71
|
+
insertMany: () => currentMethod(bson_1.EJSON.deserialize(documents)),
|
|
72
|
+
updateMany: () => currentMethod(bson_1.EJSON.deserialize(query), bson_1.EJSON.deserialize(update))
|
|
73
73
|
};
|
|
74
74
|
});
|
|
75
75
|
exports.executeQuery = executeQuery;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/features/triggers/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,QAAQ,CAAA;AAG/C;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAAU,0CAIpC,sBAAsB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/features/triggers/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,QAAQ,CAAA;AAG/C;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAAU,0CAIpC,sBAAsB,kBAsBxB,CAAA"}
|
|
@@ -29,7 +29,7 @@ const utils_1 = require("./utils");
|
|
|
29
29
|
const activateTriggers = (_a) => __awaiter(void 0, [_a], void 0, function* ({ fastify, triggersList, functionsList }) {
|
|
30
30
|
var _b, triggersList_1, triggersList_1_1;
|
|
31
31
|
var _c, e_1, _d, _e;
|
|
32
|
-
console.log(
|
|
32
|
+
console.log('START ACTIVATION TRIGGERS');
|
|
33
33
|
try {
|
|
34
34
|
try {
|
|
35
35
|
for (_b = true, triggersList_1 = __asyncValues(triggersList); triggersList_1_1 = yield triggersList_1.next(), _c = triggersList_1_1.done, !_c; _b = true) {
|
|
@@ -40,7 +40,13 @@ const activateTriggers = (_a) => __awaiter(void 0, [_a], void 0, function* ({ fa
|
|
|
40
40
|
const { type, config, event_processors } = content;
|
|
41
41
|
const functionName = event_processors.FUNCTION.config.function_name;
|
|
42
42
|
const triggerHandler = functionsList[functionName];
|
|
43
|
-
yield utils_1.TRIGGER_HANDLERS[type]({
|
|
43
|
+
yield utils_1.TRIGGER_HANDLERS[type]({
|
|
44
|
+
config,
|
|
45
|
+
triggerHandler,
|
|
46
|
+
app: fastify,
|
|
47
|
+
services: services_1.services,
|
|
48
|
+
functionsList
|
|
49
|
+
});
|
|
44
50
|
}
|
|
45
51
|
}
|
|
46
52
|
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
@@ -50,7 +56,7 @@ const activateTriggers = (_a) => __awaiter(void 0, [_a], void 0, function* ({ fa
|
|
|
50
56
|
}
|
|
51
57
|
finally { if (e_1) throw e_1.error; }
|
|
52
58
|
}
|
|
53
|
-
console.log(
|
|
59
|
+
console.log('TRIGGERS ACTIVATION COMPLETED');
|
|
54
60
|
}
|
|
55
61
|
catch (e) {
|
|
56
62
|
console.error('Error while activating triggers', e.message);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { FastifyInstance } from
|
|
2
|
-
import { Services } from
|
|
3
|
-
import { Function, Functions } from
|
|
1
|
+
import { FastifyInstance } from 'fastify';
|
|
2
|
+
import { Services } from '../../services/interface';
|
|
3
|
+
import { Function, Functions } from '../functions/interface';
|
|
4
4
|
export interface Trigger {
|
|
5
5
|
name: string;
|
|
6
6
|
type: TriggerType;
|
|
@@ -28,7 +28,7 @@ type Config = {
|
|
|
28
28
|
unordered: boolean;
|
|
29
29
|
schedule: string;
|
|
30
30
|
};
|
|
31
|
-
export type TriggerType =
|
|
31
|
+
export type TriggerType = 'SCHEDULED' | 'DATABASE' | 'AUTHENTICATION';
|
|
32
32
|
export type Triggers = {
|
|
33
33
|
fileName: string;
|
|
34
34
|
content: Trigger;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../src/features/triggers/interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAE5D,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,WAAW,CAAA;IACjB,QAAQ,EAAE,OAAO,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,gBAAgB,EAAE;QAChB,QAAQ,EAAE;YACR,MAAM,EAAE;gBACN,aAAa,EAAE,MAAM,CAAA;aACtB,CAAA;SACF,CAAA;KACF,CAAA;CACF;AAED,KAAK,MAAM,GAAG;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,OAAO,CAAA;IACtB,2BAA2B,EAAE,OAAO,CAAA;IACpC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC,YAAY,EAAE,MAAM,CAAA;IACpB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,sBAAsB,EAAE,OAAO,CAAA;IAC/B,SAAS,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,UAAU,GAAG,gBAAgB,CAAA;AACrE,MAAM,MAAM,QAAQ,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../src/features/triggers/interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAE5D,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,WAAW,CAAA;IACjB,QAAQ,EAAE,OAAO,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,gBAAgB,EAAE;QAChB,QAAQ,EAAE;YACR,MAAM,EAAE;gBACN,aAAa,EAAE,MAAM,CAAA;aACtB,CAAA;SACF,CAAA;KACF,CAAA;CACF;AAED,KAAK,MAAM,GAAG;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,OAAO,CAAA;IACtB,2BAA2B,EAAE,OAAO,CAAA;IACpC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC,YAAY,EAAE,MAAM,CAAA;IACpB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,sBAAsB,EAAE,OAAO,CAAA;IAC/B,SAAS,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,UAAU,GAAG,gBAAgB,CAAA;AACrE,MAAM,MAAM,QAAQ,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,EAAE,CAAA;AAE/D,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,QAAQ,CAAA;IACxB,GAAG,EAAE,eAAe,CAAA;IACpB,QAAQ,EAAE,QAAQ,CAAA;IAClB,aAAa,EAAE,SAAS,CAAA;CACzB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/features/triggers/utils.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAW,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE9D;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,GAAU,gBAAuB,KAAG,OAAO,CAAC,QAAQ,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/features/triggers/utils.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAW,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE9D;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,GAAU,gBAAuB,KAAG,OAAO,CAAC,QAAQ,CAkB5E,CAAA;AAkJD,eAAO,MAAM,gBAAgB;0EA9H1B,aAAa;yEAmFb,aAAa;+EA/Db,aAAa;CA8Gf,CAAA"}
|
|
@@ -28,15 +28,21 @@ const context_1 = require("../../utils/context");
|
|
|
28
28
|
* @returns {Promise<Triggers>} A promise that resolves to an array of trigger objects.
|
|
29
29
|
*/
|
|
30
30
|
const loadTriggers = (...args_1) => __awaiter(void 0, [...args_1], void 0, function* (rootDir = process.cwd()) {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
31
|
+
try {
|
|
32
|
+
const triggersPath = node_path_1.default.join(rootDir, 'triggers');
|
|
33
|
+
const files = fs_1.default.readdirSync(triggersPath);
|
|
34
|
+
const triggers = files
|
|
35
|
+
.filter((fileName) => fileName.endsWith('.json'))
|
|
36
|
+
.map((fileName) => ({
|
|
37
|
+
fileName,
|
|
38
|
+
content: (0, utils_1.readJsonContent)(node_path_1.default.join(triggersPath, fileName))
|
|
39
|
+
}));
|
|
40
|
+
return triggers;
|
|
41
|
+
}
|
|
42
|
+
catch (e) {
|
|
43
|
+
console.log("TRIGGERS NOT FOUND ->", e.message);
|
|
44
|
+
return [];
|
|
45
|
+
}
|
|
40
46
|
});
|
|
41
47
|
exports.loadTriggers = loadTriggers;
|
|
42
48
|
/**
|
|
@@ -66,17 +72,22 @@ const handleCronTrigger = (_a) => __awaiter(void 0, [_a], void 0, function* ({ c
|
|
|
66
72
|
});
|
|
67
73
|
const handleAuthenticationTrigger = (_a) => __awaiter(void 0, [_a], void 0, function* ({ config, triggerHandler, functionsList, services, app }) {
|
|
68
74
|
const { database } = config;
|
|
69
|
-
const pipeline = [
|
|
75
|
+
const pipeline = [
|
|
76
|
+
{
|
|
70
77
|
$match: {
|
|
71
|
-
operationType: { $in: [
|
|
78
|
+
operationType: { $in: ['INSERT'] }
|
|
72
79
|
}
|
|
73
|
-
}
|
|
74
|
-
|
|
80
|
+
}
|
|
81
|
+
];
|
|
82
|
+
const changeStream = app.mongo.client
|
|
83
|
+
.db(database)
|
|
84
|
+
.collection(constants_1.AUTH_CONFIG.authCollection)
|
|
85
|
+
.watch(pipeline, {
|
|
75
86
|
fullDocument: 'whenAvailable'
|
|
76
87
|
});
|
|
77
88
|
changeStream.on('change', function (change) {
|
|
78
89
|
return __awaiter(this, void 0, void 0, function* () {
|
|
79
|
-
const document = change[
|
|
90
|
+
const document = change['fullDocument']; //TODO -> define user type
|
|
80
91
|
if (document) {
|
|
81
92
|
delete document.password;
|
|
82
93
|
const currentUser = Object.assign({}, document);
|
package/dist/global.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { User } from "./fastify";
|
|
2
|
+
import { Services } from "./services/interface";
|
|
3
|
+
export type Context = {
|
|
4
|
+
services: {
|
|
5
|
+
get: <T extends keyof Services>(serviceName: T) => ReturnType<Services[T]>;
|
|
6
|
+
};
|
|
7
|
+
user: User;
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=global.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global.d.ts","sourceRoot":"","sources":["../src/global.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAE/C,MAAM,MAAM,OAAO,GAAG;IAClB,QAAQ,EAAE;QACN,GAAG,EAAE,CAAC,CAAC,SAAS,MAAM,QAAQ,EAAE,WAAW,EAAE,CAAC,KAAK,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;KAC7E,CAAC;IACF,IAAI,EAAE,IAAI,CAAA;CACb,CAAA"}
|
package/dist/global.js
ADDED
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAA;AActB,cAAc,SAAS,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAA;AActB,cAAc,SAAS,CAAA;AAEvB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAAC,EAC/B,SAAS,EACT,IAAI,EACJ,SAAqC,EACrC,IAA0B,EAC1B,UAAuC,EACxC,EAAE,gBAAgB,iBAqDlB"}
|
package/dist/index.js
CHANGED
|
@@ -52,18 +52,21 @@ __exportStar(require("./model"), exports);
|
|
|
52
52
|
*/
|
|
53
53
|
function initialize(_a) {
|
|
54
54
|
return __awaiter(this, arguments, void 0, function* ({ projectId, host, jwtSecret = constants_1.DEFAULT_CONFIG.JWT_SECRET, port = constants_1.DEFAULT_CONFIG.PORT, mongodbUrl = constants_1.DEFAULT_CONFIG.MONGODB_URL }) {
|
|
55
|
+
var _b;
|
|
55
56
|
const fastify = (0, fastify_1.default)({
|
|
56
57
|
logger: !!constants_1.DEFAULT_CONFIG.ENABLE_LOGGER
|
|
57
58
|
});
|
|
59
|
+
const basePath = (_b = require.main) === null || _b === void 0 ? void 0 : _b.path;
|
|
60
|
+
console.log("BASE PATH", basePath);
|
|
58
61
|
console.log("CURRENT PORT", port);
|
|
59
62
|
console.log("CURRENT HOST", host);
|
|
60
|
-
const functionsList = yield (0, utils_2.loadFunctions)();
|
|
63
|
+
const functionsList = yield (0, utils_2.loadFunctions)(basePath);
|
|
61
64
|
console.log("Functions LOADED");
|
|
62
|
-
const triggersList = yield (0, utils_4.loadTriggers)();
|
|
65
|
+
const triggersList = yield (0, utils_4.loadTriggers)(basePath);
|
|
63
66
|
console.log("Triggers LOADED");
|
|
64
|
-
const endpointsList = yield (0, utils_1.loadEndpoints)();
|
|
67
|
+
const endpointsList = yield (0, utils_1.loadEndpoints)(basePath);
|
|
65
68
|
console.log("Endpoints LOADED");
|
|
66
|
-
const rulesList = yield (0, utils_3.loadRules)();
|
|
69
|
+
const rulesList = yield (0, utils_3.loadRules)(basePath);
|
|
67
70
|
console.log("Rules LOADED");
|
|
68
71
|
const stateConfig = {
|
|
69
72
|
functions: functionsList,
|
|
@@ -80,16 +83,17 @@ function initialize(_a) {
|
|
|
80
83
|
jwtSecret,
|
|
81
84
|
functionsList
|
|
82
85
|
});
|
|
83
|
-
console.log(
|
|
86
|
+
console.log('Plugins registration COMPLETED');
|
|
84
87
|
yield (0, exposeRoutes_1.exposeRoutes)(fastify);
|
|
85
|
-
console.log(
|
|
88
|
+
console.log('APP Routes registration COMPLETED');
|
|
86
89
|
yield (0, functions_1.registerFunctions)({ app: fastify, functionsList, rulesList });
|
|
87
|
-
console.log(
|
|
90
|
+
console.log('Functions registration COMPLETED');
|
|
88
91
|
yield (0, endpoints_1.generateEndpoints)({ app: fastify, functionsList, endpointsList });
|
|
89
|
-
console.log(
|
|
92
|
+
console.log('HTTP Endpoints registration COMPLETED');
|
|
90
93
|
fastify.ready(() => {
|
|
91
94
|
console.log("FASTIFY IS READY");
|
|
92
|
-
(triggersList === null || triggersList === void 0 ? void 0 : triggersList.length) > 0
|
|
95
|
+
if ((triggersList === null || triggersList === void 0 ? void 0 : triggersList.length) > 0)
|
|
96
|
+
(0, triggers_1.activateTriggers)({ fastify, triggersList, functionsList });
|
|
93
97
|
});
|
|
94
98
|
yield fastify.listen({ port, host });
|
|
95
99
|
fastify.log.info(`[${projectId}] Server listening on port ${port}`);
|
package/dist/model.d.ts
CHANGED
package/dist/model.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAE1C,cAAc,UAAU,CAAA"}
|
package/dist/model.js
CHANGED
|
@@ -1,2 +1,17 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
2
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./global"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/api/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAGxE;;GAEG;AACH,QAAA,MAAM,GAAG;UACK,CAAC,2BAAgC,SAAS;;;;;;;WAGzC,CAAC,mFAQX,UAAU;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/api/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAGxE;;GAEG;AACH,QAAA,MAAM,GAAG;UACK,CAAC,2BAAgC,SAAS;;;;;;;WAGzC,CAAC,mFAQX,UAAU;;;;;;;UAUD,CAAC,mFAQV,SAAS;;;;;;;aAKG,CAAC,2DAMb,YAAY;;;;;;;CAIf,CAAA;AAEF,eAAe,GAAG,CAAA"}
|
|
@@ -21,7 +21,12 @@ const Api = () => ({
|
|
|
21
21
|
post: (_a) => __awaiter(void 0, [_a], void 0, function* ({ scheme = constants_1.HTTPS_SCHEMA, host, path, url: currentUrl, headers = {}, body, encodeBodyAsJSON = false }) {
|
|
22
22
|
const formattedBody = encodeBodyAsJSON ? JSON.stringify(body) : body;
|
|
23
23
|
const url = currentUrl ? currentUrl : `${scheme}://${host}/${path}`;
|
|
24
|
-
return (0, utils_1.makeRequest)({
|
|
24
|
+
return (0, utils_1.makeRequest)({
|
|
25
|
+
method: 'POST',
|
|
26
|
+
url,
|
|
27
|
+
headers: Object.assign({ 'Content-Type': 'application/json' }, headers),
|
|
28
|
+
body: formattedBody
|
|
29
|
+
});
|
|
25
30
|
}),
|
|
26
31
|
put: (_a) => __awaiter(void 0, [_a], void 0, function* ({ scheme = constants_1.HTTPS_SCHEMA, host, path, url: currentUrl, headers = {}, body, encodeBodyAsJSON = false }) {
|
|
27
32
|
const formattedBody = encodeBodyAsJSON ? JSON.stringify(body) : body;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/aws/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,MAAM,MAAM,wBAAwB,CAAA;AAC3C,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/aws/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,MAAM,MAAM,wBAAwB,CAAA;AAC3C,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAKnD,QAAA,MAAM,GAAG;qBAEY,MAAM;gBAQX,CACN,GAAG,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAClC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;qBACnD,MAAM,CAAC,aAAa,CAAC;;iBAczB,MAAM;CAYtB,CAAA;AAED,eAAe,GAAG,CAAA"}
|
|
@@ -14,8 +14,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
const lambda_1 = __importDefault(require("aws-sdk/clients/lambda"));
|
|
16
16
|
const s3_1 = __importDefault(require("aws-sdk/clients/s3"));
|
|
17
|
-
const accessKeyId =
|
|
18
|
-
const secretAccessKey =
|
|
17
|
+
const accessKeyId = 'GET_THIS_FROM_CONFIG';
|
|
18
|
+
const secretAccessKey = 'GET_THIS_FROM_CONFIG';
|
|
19
19
|
const Aws = () => {
|
|
20
20
|
return {
|
|
21
21
|
lambda: (region) => {
|
|
@@ -23,7 +23,7 @@ const Aws = () => {
|
|
|
23
23
|
region: region,
|
|
24
24
|
credentials: {
|
|
25
25
|
accessKeyId,
|
|
26
|
-
secretAccessKey
|
|
26
|
+
secretAccessKey
|
|
27
27
|
}
|
|
28
28
|
});
|
|
29
29
|
lambda.Invoke = (...args) => __awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -40,10 +40,10 @@ const Aws = () => {
|
|
|
40
40
|
apiVersion: '2006-03-01',
|
|
41
41
|
credentials: {
|
|
42
42
|
accessKeyId,
|
|
43
|
-
secretAccessKey
|
|
43
|
+
secretAccessKey
|
|
44
44
|
},
|
|
45
45
|
s3ForcePathStyle: true,
|
|
46
|
-
signatureVersion: 'v4'
|
|
46
|
+
signatureVersion: 'v4'
|
|
47
47
|
})
|
|
48
48
|
};
|
|
49
49
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAKmT,GAAc;;;;;;CADrV,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/mongodb-atlas/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAwB,oBAAoB,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/mongodb-atlas/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAwB,oBAAoB,EAAE,MAAM,SAAS,CAAA;AA4kBpE,QAAA,MAAM,YAAY,EAAE,oBAclB,CAAA;AAEF,eAAe,YAAY,CAAA"}
|