@flowerforce/flowerbase 1.7.4 → 1.7.5-beta.1
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/dist/auth/controller.d.ts.map +1 -1
- package/dist/auth/controller.js +14 -4
- package/dist/auth/plugins/jwt.d.ts.map +1 -1
- package/dist/auth/plugins/jwt.js +8 -5
- package/dist/auth/providers/custom-function/controller.d.ts.map +1 -1
- package/dist/auth/providers/custom-function/controller.js +31 -6
- package/dist/features/functions/controller.d.ts.map +1 -1
- package/dist/features/functions/controller.js +126 -28
- package/dist/features/triggers/utils.d.ts.map +1 -1
- package/dist/features/triggers/utils.js +36 -28
- package/dist/services/mongodb-atlas/index.d.ts.map +1 -1
- package/dist/services/mongodb-atlas/index.js +102 -34
- package/dist/utils/initializer/exposeRoutes.d.ts.map +1 -1
- package/dist/utils/initializer/exposeRoutes.js +2 -0
- package/package.json +1 -1
- package/src/auth/controller.ts +17 -6
- package/src/auth/plugins/jwt.test.ts +1 -1
- package/src/auth/plugins/jwt.ts +5 -8
- package/src/auth/providers/custom-function/controller.ts +35 -8
- package/src/features/functions/controller.ts +149 -31
- package/src/features/triggers/utils.ts +39 -28
- package/src/services/mongodb-atlas/index.ts +247 -142
- package/src/utils/initializer/exposeRoutes.ts +2 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/auth/controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/auth/controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAgBzC;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,eAAe,iBA0LxD"}
|
package/dist/auth/controller.js
CHANGED
|
@@ -16,6 +16,12 @@ const state_1 = require("../state");
|
|
|
16
16
|
const crypto_1 = require("../utils/crypto");
|
|
17
17
|
const utils_1 = require("./utils");
|
|
18
18
|
const HANDLER_TYPE = 'preHandler';
|
|
19
|
+
const unauthorizedSessionError = {
|
|
20
|
+
message: 'Unauthorized',
|
|
21
|
+
error: 'unauthorized',
|
|
22
|
+
errorCode: 'InvalidSession',
|
|
23
|
+
error_code: 'InvalidSession'
|
|
24
|
+
};
|
|
19
25
|
/**
|
|
20
26
|
* Controller for handling user authentication, profile retrieval, and session management.
|
|
21
27
|
* @testable
|
|
@@ -96,11 +102,13 @@ function authController(app) {
|
|
|
96
102
|
}, function (req, res) {
|
|
97
103
|
return __awaiter(this, void 0, void 0, function* () {
|
|
98
104
|
if (req.user.typ !== 'refresh') {
|
|
99
|
-
|
|
105
|
+
res.code(401).send(unauthorizedSessionError);
|
|
106
|
+
return;
|
|
100
107
|
}
|
|
101
108
|
const authHeader = req.headers.authorization;
|
|
102
109
|
if (!(authHeader === null || authHeader === void 0 ? void 0 : authHeader.startsWith('Bearer '))) {
|
|
103
|
-
|
|
110
|
+
res.code(401).send(unauthorizedSessionError);
|
|
111
|
+
return;
|
|
104
112
|
}
|
|
105
113
|
const refreshToken = authHeader.slice('Bearer '.length).trim();
|
|
106
114
|
const refreshTokenHash = (0, crypto_1.hashToken)(refreshToken);
|
|
@@ -110,11 +118,13 @@ function authController(app) {
|
|
|
110
118
|
expiresAt: { $gt: new Date() }
|
|
111
119
|
});
|
|
112
120
|
if (!storedToken) {
|
|
113
|
-
|
|
121
|
+
res.code(401).send(unauthorizedSessionError);
|
|
122
|
+
return;
|
|
114
123
|
}
|
|
115
124
|
const auth_user = yield (db === null || db === void 0 ? void 0 : db.collection(authCollection).findOne({ _id: new this.mongo.ObjectId(req.user.sub) }));
|
|
116
125
|
if (!auth_user) {
|
|
117
|
-
|
|
126
|
+
res.code(401).send(unauthorizedSessionError);
|
|
127
|
+
return;
|
|
118
128
|
}
|
|
119
129
|
const user = userCollection && constants_1.AUTH_CONFIG.user_id_field
|
|
120
130
|
? (yield db.collection(userCollection).findOne({ [constants_1.AUTH_CONFIG.user_id_field]: req.user.sub }))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../../../src/auth/plugins/jwt.ts"],"names":[],"mappings":"AAKA,KAAK,OAAO,GAAG;IACb,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAkBD;;;;;;;GAOG;iUAC8C,OAAO;AAAxD,
|
|
1
|
+
{"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../../../src/auth/plugins/jwt.ts"],"names":[],"mappings":"AAKA,KAAK,OAAO,GAAG;IACb,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAkBD;;;;;;;GAOG;iUAC8C,OAAO;AAAxD,wBA4GE"}
|
package/dist/auth/plugins/jwt.js
CHANGED
|
@@ -95,15 +95,18 @@ exports.default = (0, fastify_plugin_1.default)(function (fastify, opts) {
|
|
|
95
95
|
});
|
|
96
96
|
fastify.decorate('createAccessToken', function (user) {
|
|
97
97
|
const id = user._id.toString();
|
|
98
|
-
const userData = isRecord(user.user_data) ? Object.assign({}, user.user_data) : {};
|
|
99
98
|
const customData = isRecord(user.custom_data)
|
|
100
|
-
? Object.assign({}, user.custom_data) : Object.assign({},
|
|
101
|
-
const
|
|
99
|
+
? Object.assign({}, user.custom_data) : (isRecord(user.user_data) ? Object.assign({}, user.user_data) : {});
|
|
100
|
+
const authData = {
|
|
101
|
+
_id: id,
|
|
102
|
+
id,
|
|
103
|
+
email: typeof user.email === 'string' ? user.email : customData.email
|
|
104
|
+
};
|
|
102
105
|
return this.jwt.sign({
|
|
103
106
|
typ: 'access',
|
|
104
107
|
id,
|
|
105
|
-
data:
|
|
106
|
-
user_data:
|
|
108
|
+
data: authData,
|
|
109
|
+
user_data: customData,
|
|
107
110
|
custom_data: customData
|
|
108
111
|
}, {
|
|
109
112
|
iss: BAAS_ID,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../../src/auth/providers/custom-function/controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../../src/auth/providers/custom-function/controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAUzC;;;;GAIG;AACH,wBAAsB,wBAAwB,CAAC,GAAG,EAAE,eAAe,iBA2IlE"}
|
|
@@ -10,6 +10,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.customFunctionController = customFunctionController;
|
|
13
|
+
const mongodb_1 = require("mongodb");
|
|
13
14
|
const constants_1 = require("../../../constants");
|
|
14
15
|
const state_1 = require("../../../state");
|
|
15
16
|
const context_1 = require("../../../utils/context");
|
|
@@ -36,7 +37,10 @@ function customFunctionController(app) {
|
|
|
36
37
|
* @returns {Promise<Object>} A promise resolving with access and refresh tokens.
|
|
37
38
|
*/
|
|
38
39
|
app.post(utils_1.AUTH_ENDPOINTS.LOGIN, {
|
|
39
|
-
schema: schema_1.LOGIN_SCHEMA
|
|
40
|
+
schema: schema_1.LOGIN_SCHEMA,
|
|
41
|
+
errorHandler: (_error, _request, reply) => {
|
|
42
|
+
reply.code(500).send({ message: 'Internal Server Error' });
|
|
43
|
+
}
|
|
40
44
|
}, function (req, reply) {
|
|
41
45
|
return __awaiter(this, void 0, void 0, function* () {
|
|
42
46
|
var _a, _b;
|
|
@@ -75,10 +79,29 @@ function customFunctionController(app) {
|
|
|
75
79
|
reply.code(401).send({ message: 'Unauthorized' });
|
|
76
80
|
return;
|
|
77
81
|
}
|
|
78
|
-
const
|
|
82
|
+
const email = (authResult === null || authResult === void 0 ? void 0 : authResult.email) || authResult.id;
|
|
83
|
+
let authUser = yield db.collection(authCollection).findOne({ email });
|
|
79
84
|
if (!authUser) {
|
|
80
|
-
|
|
81
|
-
|
|
85
|
+
const authUserId = new mongodb_1.ObjectId();
|
|
86
|
+
yield db.collection(authCollection).insertOne({
|
|
87
|
+
_id: authUserId,
|
|
88
|
+
email,
|
|
89
|
+
status: 'confirmed',
|
|
90
|
+
createdAt: new Date(),
|
|
91
|
+
custom_data: {},
|
|
92
|
+
identities: [
|
|
93
|
+
{
|
|
94
|
+
id: authResult.id.toString(),
|
|
95
|
+
provider_id: authResult.id.toString(),
|
|
96
|
+
provider_type: 'custom-function',
|
|
97
|
+
provider_data: { email }
|
|
98
|
+
}
|
|
99
|
+
]
|
|
100
|
+
});
|
|
101
|
+
authUser = {
|
|
102
|
+
_id: authUserId,
|
|
103
|
+
email
|
|
104
|
+
};
|
|
82
105
|
}
|
|
83
106
|
const user = user_id_field && userCollection
|
|
84
107
|
? yield db
|
|
@@ -99,12 +122,14 @@ function customFunctionController(app) {
|
|
|
99
122
|
expiresAt: new Date(Date.now() + refreshTokenTtlMs),
|
|
100
123
|
revokedAt: null
|
|
101
124
|
});
|
|
102
|
-
|
|
103
|
-
|
|
125
|
+
const accessToken = this.createAccessToken(currentUserData);
|
|
126
|
+
const responsePayload = {
|
|
127
|
+
access_token: accessToken,
|
|
104
128
|
refresh_token: refreshToken,
|
|
105
129
|
device_id: '',
|
|
106
130
|
user_id: authUser._id.toString()
|
|
107
131
|
};
|
|
132
|
+
reply.code(200).send(responsePayload);
|
|
108
133
|
});
|
|
109
134
|
});
|
|
110
135
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../src/features/functions/controller.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../src/features/functions/controller.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAoFhD;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAE,kBAqPjC,CAAA"}
|
|
@@ -8,11 +8,21 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
12
|
+
var t = {};
|
|
13
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
14
|
+
t[p] = s[p];
|
|
15
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
16
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
17
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
18
|
+
t[p[i]] = s[p[i]];
|
|
19
|
+
}
|
|
20
|
+
return t;
|
|
21
|
+
};
|
|
11
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
23
|
exports.functionsController = void 0;
|
|
13
24
|
const bson_1 = require("bson");
|
|
14
25
|
const services_1 = require("../../services");
|
|
15
|
-
const state_1 = require("../../state");
|
|
16
26
|
const context_1 = require("../../utils/context");
|
|
17
27
|
const utils_1 = require("./utils");
|
|
18
28
|
const normalizeUser = (payload) => {
|
|
@@ -47,6 +57,20 @@ const isReturnedError = (value) => {
|
|
|
47
57
|
return typeof candidate.message === 'string' && typeof candidate.name === 'string';
|
|
48
58
|
};
|
|
49
59
|
const serializeEjson = (value) => JSON.stringify(bson_1.EJSON.serialize(value, { relaxed: false }));
|
|
60
|
+
const isRecord = (value) => !!value && typeof value === 'object' && !Array.isArray(value);
|
|
61
|
+
const sharedWatchStreams = new Map();
|
|
62
|
+
let watchSubscriberCounter = 0;
|
|
63
|
+
const parseWatchFilter = (args) => {
|
|
64
|
+
var _a;
|
|
65
|
+
if (!isRecord(args))
|
|
66
|
+
return undefined;
|
|
67
|
+
const candidate = (_a = (isRecord(args.filter) ? args.filter : undefined)) !== null && _a !== void 0 ? _a : (isRecord(args.query) ? args.query : undefined);
|
|
68
|
+
return candidate ? candidate : undefined;
|
|
69
|
+
};
|
|
70
|
+
const isReadableDocumentResult = (value) => !!value &&
|
|
71
|
+
typeof value === 'object' &&
|
|
72
|
+
!Array.isArray(value) &&
|
|
73
|
+
Object.keys(value).length > 0;
|
|
50
74
|
/**
|
|
51
75
|
* > Creates a pre handler for every query
|
|
52
76
|
* @param app -> the fastify instance
|
|
@@ -55,7 +79,6 @@ const serializeEjson = (value) => JSON.stringify(bson_1.EJSON.serialize(value, {
|
|
|
55
79
|
*/
|
|
56
80
|
const functionsController = (app_1, _a) => __awaiter(void 0, [app_1, _a], void 0, function* (app, { functionsList, rules }) {
|
|
57
81
|
app.addHook('preHandler', app.jwtAuthentication);
|
|
58
|
-
const streams = {};
|
|
59
82
|
app.post('/call', {
|
|
60
83
|
schema: {
|
|
61
84
|
tags: ['Functions']
|
|
@@ -140,10 +163,9 @@ const functionsController = (app_1, _a) => __awaiter(void 0, [app_1, _a], void 0
|
|
|
140
163
|
throw new Error('Access token required');
|
|
141
164
|
}
|
|
142
165
|
const { baas_request, stitch_request } = query;
|
|
143
|
-
const
|
|
144
|
-
const
|
|
145
|
-
const
|
|
146
|
-
const services = state_1.StateManager.select('services');
|
|
166
|
+
const decodedConfig = JSON.parse(Buffer.from(baas_request || stitch_request || '', 'base64').toString('utf8'));
|
|
167
|
+
const config = bson_1.EJSON.deserialize(decodedConfig);
|
|
168
|
+
const [_a] = config.arguments, { database, collection } = _a, watchArgs = __rest(_a, ["database", "collection"]);
|
|
147
169
|
const headers = {
|
|
148
170
|
'Content-Type': 'text/event-stream',
|
|
149
171
|
'Cache-Control': 'no-cache',
|
|
@@ -154,31 +176,107 @@ const functionsController = (app_1, _a) => __awaiter(void 0, [app_1, _a], void 0
|
|
|
154
176
|
};
|
|
155
177
|
res.raw.writeHead(200, headers);
|
|
156
178
|
res.raw.flushHeaders();
|
|
157
|
-
const
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
const
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
179
|
+
const streamKey = `${database}::${collection}`;
|
|
180
|
+
const subscriberId = `${Date.now()}-${watchSubscriberCounter++}`;
|
|
181
|
+
const extraFilter = parseWatchFilter(watchArgs);
|
|
182
|
+
const mongoClient = app.mongo.client;
|
|
183
|
+
let hub = sharedWatchStreams.get(streamKey);
|
|
184
|
+
if (!hub) {
|
|
185
|
+
const stream = mongoClient.db(database).collection(collection).watch([], {
|
|
186
|
+
fullDocument: 'whenAvailable'
|
|
164
187
|
});
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
}
|
|
171
|
-
|
|
188
|
+
hub = {
|
|
189
|
+
database,
|
|
190
|
+
collection,
|
|
191
|
+
stream,
|
|
192
|
+
subscribers: new Map()
|
|
193
|
+
};
|
|
194
|
+
sharedWatchStreams.set(streamKey, hub);
|
|
172
195
|
}
|
|
173
|
-
|
|
196
|
+
const ensureHubListeners = (currentHub) => {
|
|
197
|
+
if (currentHub.listenersBound) {
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
const closeHub = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
201
|
+
currentHub.stream.off('change', onHubChange);
|
|
202
|
+
currentHub.stream.off('error', onHubError);
|
|
203
|
+
sharedWatchStreams.delete(streamKey);
|
|
204
|
+
try {
|
|
205
|
+
yield currentHub.stream.close();
|
|
206
|
+
}
|
|
207
|
+
catch (_a) {
|
|
208
|
+
// Ignore stream close errors.
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
const onHubChange = (change) => __awaiter(void 0, void 0, void 0, function* () {
|
|
212
|
+
const subscribers = Array.from(currentHub.subscribers.values());
|
|
213
|
+
yield Promise.all(subscribers.map((subscriber) => __awaiter(void 0, void 0, void 0, function* () {
|
|
214
|
+
var _a, _b, _c;
|
|
215
|
+
const subscriberRes = subscriber.response;
|
|
216
|
+
if (subscriberRes.writableEnded || subscriberRes.destroyed) {
|
|
217
|
+
currentHub.subscribers.delete(subscriber.id);
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
const docId = (_b = (_a = change === null || change === void 0 ? void 0 : change.documentKey) === null || _a === void 0 ? void 0 : _a._id) !== null && _b !== void 0 ? _b : (_c = change === null || change === void 0 ? void 0 : change.fullDocument) === null || _c === void 0 ? void 0 : _c._id;
|
|
221
|
+
if (typeof docId === 'undefined')
|
|
222
|
+
return;
|
|
223
|
+
const readQuery = subscriber.extraFilter
|
|
224
|
+
? { $and: [subscriber.extraFilter, { _id: docId }] }
|
|
225
|
+
: { _id: docId };
|
|
226
|
+
try {
|
|
227
|
+
const readableDoc = yield services_1.services['mongodb-atlas'](app, {
|
|
228
|
+
user: subscriber.user,
|
|
229
|
+
rules
|
|
230
|
+
})
|
|
231
|
+
.db(currentHub.database)
|
|
232
|
+
.collection(currentHub.collection)
|
|
233
|
+
.findOne(readQuery);
|
|
234
|
+
if (!isReadableDocumentResult(readableDoc))
|
|
235
|
+
return;
|
|
236
|
+
subscriberRes.write(`data: ${serializeEjson(change)}\n\n`);
|
|
237
|
+
}
|
|
238
|
+
catch (error) {
|
|
239
|
+
subscriberRes.write(`event: error\ndata: ${formatFunctionExecutionError(error)}\n\n`);
|
|
240
|
+
subscriberRes.end();
|
|
241
|
+
currentHub.subscribers.delete(subscriber.id);
|
|
242
|
+
}
|
|
243
|
+
})));
|
|
244
|
+
if (!currentHub.subscribers.size) {
|
|
245
|
+
yield closeHub();
|
|
246
|
+
}
|
|
247
|
+
});
|
|
248
|
+
const onHubError = (error) => __awaiter(void 0, void 0, void 0, function* () {
|
|
249
|
+
for (const subscriber of currentHub.subscribers.values()) {
|
|
250
|
+
const subscriberRes = subscriber.response;
|
|
251
|
+
if (!subscriberRes.writableEnded && !subscriberRes.destroyed) {
|
|
252
|
+
subscriberRes.write(`event: error\ndata: ${formatFunctionExecutionError(error)}\n\n`);
|
|
253
|
+
subscriberRes.end();
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
currentHub.subscribers.clear();
|
|
257
|
+
yield closeHub();
|
|
258
|
+
});
|
|
259
|
+
currentHub.stream.on('change', onHubChange);
|
|
260
|
+
currentHub.stream.on('error', onHubError);
|
|
261
|
+
currentHub.listenersBound = true;
|
|
262
|
+
};
|
|
263
|
+
ensureHubListeners(hub);
|
|
264
|
+
const subscriber = {
|
|
265
|
+
id: subscriberId,
|
|
174
266
|
user,
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
267
|
+
response: res.raw,
|
|
268
|
+
extraFilter
|
|
269
|
+
};
|
|
270
|
+
hub.subscribers.set(subscriberId, subscriber);
|
|
271
|
+
req.raw.on('close', () => {
|
|
272
|
+
const currentHub = sharedWatchStreams.get(streamKey);
|
|
273
|
+
if (!currentHub)
|
|
274
|
+
return;
|
|
275
|
+
currentHub.subscribers.delete(subscriberId);
|
|
276
|
+
if (!currentHub.subscribers.size) {
|
|
277
|
+
void currentHub.stream.close();
|
|
278
|
+
sharedWatchStreams.delete(streamKey);
|
|
279
|
+
}
|
|
182
280
|
});
|
|
183
281
|
}));
|
|
184
282
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/features/triggers/utils.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAW,QAAQ,EAAE,MAAM,aAAa,CAAA;AA0E9D;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,GAAU,gBAAuB,KAAG,OAAO,CAAC,QAAQ,CAkB5E,CAAA;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/features/triggers/utils.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAW,QAAQ,EAAE,MAAM,aAAa,CAAA;AA0E9D;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,GAAU,gBAAuB,KAAG,OAAO,CAAC,QAAQ,CAkB5E,CAAA;AA0nBD,eAAO,MAAM,gBAAgB;kHAnmB1B,aAAa;iHA2gBb,aAAa;uHA1Zb,aAAa;CAsff,CAAA"}
|
|
@@ -252,6 +252,14 @@ const handleAuthenticationTrigger = (_a) => __awaiter(void 0, [_a], void 0, func
|
|
|
252
252
|
if (shouldIgnoreStreamError(error))
|
|
253
253
|
return;
|
|
254
254
|
console.error('Authentication trigger change stream error', error);
|
|
255
|
+
emitTriggerEvent({
|
|
256
|
+
status: 'error',
|
|
257
|
+
triggerName,
|
|
258
|
+
triggerType,
|
|
259
|
+
functionName,
|
|
260
|
+
meta: Object.assign(Object.assign({}, baseMeta), { event: 'CHANGE_STREAM' }),
|
|
261
|
+
error
|
|
262
|
+
});
|
|
255
263
|
});
|
|
256
264
|
changeStream.on('change', function (change) {
|
|
257
265
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -321,13 +329,6 @@ const handleAuthenticationTrigger = (_a) => __awaiter(void 0, [_a], void 0, func
|
|
|
321
329
|
updateDescription
|
|
322
330
|
};
|
|
323
331
|
try {
|
|
324
|
-
emitTriggerEvent({
|
|
325
|
-
status: 'fired',
|
|
326
|
-
triggerName,
|
|
327
|
-
triggerType,
|
|
328
|
-
functionName,
|
|
329
|
-
meta: Object.assign(Object.assign({}, baseMeta), { event: 'LOGOUT' })
|
|
330
|
-
});
|
|
331
332
|
yield (0, context_1.GenerateContext)({
|
|
332
333
|
args: [Object.assign({ user: userData }, op)],
|
|
333
334
|
app,
|
|
@@ -339,6 +340,13 @@ const handleAuthenticationTrigger = (_a) => __awaiter(void 0, [_a], void 0, func
|
|
|
339
340
|
services,
|
|
340
341
|
runAsSystem: true
|
|
341
342
|
});
|
|
343
|
+
emitTriggerEvent({
|
|
344
|
+
status: 'fired',
|
|
345
|
+
triggerName,
|
|
346
|
+
triggerType,
|
|
347
|
+
functionName,
|
|
348
|
+
meta: Object.assign(Object.assign({}, baseMeta), { event: 'LOGOUT' })
|
|
349
|
+
});
|
|
342
350
|
}
|
|
343
351
|
catch (error) {
|
|
344
352
|
emitTriggerEvent({
|
|
@@ -373,13 +381,6 @@ const handleAuthenticationTrigger = (_a) => __awaiter(void 0, [_a], void 0, func
|
|
|
373
381
|
updateDescription
|
|
374
382
|
};
|
|
375
383
|
try {
|
|
376
|
-
emitTriggerEvent({
|
|
377
|
-
status: 'fired',
|
|
378
|
-
triggerName,
|
|
379
|
-
triggerType,
|
|
380
|
-
functionName,
|
|
381
|
-
meta: Object.assign(Object.assign({}, baseMeta), { event: 'DELETE' })
|
|
382
|
-
});
|
|
383
384
|
yield (0, context_1.GenerateContext)({
|
|
384
385
|
args: isAutoTrigger ? [userData] : [Object.assign({ user: userData }, op)],
|
|
385
386
|
app,
|
|
@@ -391,6 +392,13 @@ const handleAuthenticationTrigger = (_a) => __awaiter(void 0, [_a], void 0, func
|
|
|
391
392
|
services,
|
|
392
393
|
runAsSystem: true
|
|
393
394
|
});
|
|
395
|
+
emitTriggerEvent({
|
|
396
|
+
status: 'fired',
|
|
397
|
+
triggerName,
|
|
398
|
+
triggerType,
|
|
399
|
+
functionName,
|
|
400
|
+
meta: Object.assign(Object.assign({}, baseMeta), { event: 'DELETE' })
|
|
401
|
+
});
|
|
394
402
|
}
|
|
395
403
|
catch (error) {
|
|
396
404
|
emitTriggerEvent({
|
|
@@ -427,13 +435,6 @@ const handleAuthenticationTrigger = (_a) => __awaiter(void 0, [_a], void 0, func
|
|
|
427
435
|
updateDescription
|
|
428
436
|
};
|
|
429
437
|
try {
|
|
430
|
-
emitTriggerEvent({
|
|
431
|
-
status: 'fired',
|
|
432
|
-
triggerName,
|
|
433
|
-
triggerType,
|
|
434
|
-
functionName,
|
|
435
|
-
meta: Object.assign(Object.assign({}, baseMeta), { event: 'UPDATE' })
|
|
436
|
-
});
|
|
437
438
|
yield (0, context_1.GenerateContext)({
|
|
438
439
|
args: isAutoTrigger ? [userData] : [Object.assign({ user: userData }, op)],
|
|
439
440
|
app,
|
|
@@ -445,6 +446,13 @@ const handleAuthenticationTrigger = (_a) => __awaiter(void 0, [_a], void 0, func
|
|
|
445
446
|
services,
|
|
446
447
|
runAsSystem: true
|
|
447
448
|
});
|
|
449
|
+
emitTriggerEvent({
|
|
450
|
+
status: 'fired',
|
|
451
|
+
triggerName,
|
|
452
|
+
triggerType,
|
|
453
|
+
functionName,
|
|
454
|
+
meta: Object.assign(Object.assign({}, baseMeta), { event: 'UPDATE' })
|
|
455
|
+
});
|
|
448
456
|
}
|
|
449
457
|
catch (error) {
|
|
450
458
|
emitTriggerEvent({
|
|
@@ -518,13 +526,6 @@ const handleAuthenticationTrigger = (_a) => __awaiter(void 0, [_a], void 0, func
|
|
|
518
526
|
updateDescription
|
|
519
527
|
};
|
|
520
528
|
try {
|
|
521
|
-
emitTriggerEvent({
|
|
522
|
-
status: 'fired',
|
|
523
|
-
triggerName,
|
|
524
|
-
triggerType,
|
|
525
|
-
functionName,
|
|
526
|
-
meta: Object.assign(Object.assign({}, baseMeta), { event: 'CREATE' })
|
|
527
|
-
});
|
|
528
529
|
yield (0, context_1.GenerateContext)({
|
|
529
530
|
args: isAutoTrigger ? [userData] : [Object.assign({ user: userData }, op)],
|
|
530
531
|
app,
|
|
@@ -536,6 +537,13 @@ const handleAuthenticationTrigger = (_a) => __awaiter(void 0, [_a], void 0, func
|
|
|
536
537
|
services,
|
|
537
538
|
runAsSystem: true
|
|
538
539
|
});
|
|
540
|
+
emitTriggerEvent({
|
|
541
|
+
status: 'fired',
|
|
542
|
+
triggerName,
|
|
543
|
+
triggerType,
|
|
544
|
+
functionName,
|
|
545
|
+
meta: Object.assign(Object.assign({}, baseMeta), { event: 'CREATE' })
|
|
546
|
+
});
|
|
539
547
|
}
|
|
540
548
|
catch (error) {
|
|
541
549
|
emitTriggerEvent({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/mongodb-atlas/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/mongodb-atlas/index.ts"],"names":[],"mappings":"AAwBA,OAAO,EAGL,oBAAoB,EAErB,MAAM,SAAS,CAAA;AAk1ChB,QAAA,MAAM,YAAY,EAAE,oBA6BlB,CAAA;AAEF,eAAe,YAAY,CAAA"}
|