@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.
@@ -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;AASzC;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,eAAe,iBAsLxD"}
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"}
@@ -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
- throw new Error(utils_1.AUTH_ERRORS.INVALID_TOKEN);
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
- throw new Error(utils_1.AUTH_ERRORS.INVALID_TOKEN);
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
- throw new Error(utils_1.AUTH_ERRORS.INVALID_TOKEN);
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
- throw new Error(`User with ID ${req.user.sub} not found`);
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,wBA+GE"}
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"}
@@ -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({}, userData);
101
- const mergedUserData = Object.assign(Object.assign(Object.assign({}, customData), userData), { _id: id, id, email: typeof user.email === 'string' ? user.email : userData.email });
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: mergedUserData,
106
- user_data: mergedUserData,
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;AASzC;;;;GAIG;AACH,wBAAsB,wBAAwB,CAAC,GAAG,EAAE,eAAe,iBAiHlE"}
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 authUser = yield db.collection(authCollection).findOne({ email: authResult.id });
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
- reply.code(401).send({ message: 'Unauthorized' });
81
- return;
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
- return {
103
- access_token: this.createAccessToken(currentUserData),
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;AA8ChD;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAE,kBAqKjC,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 config = JSON.parse(Buffer.from(baas_request || stitch_request || '', 'base64').toString('utf8'));
144
- const [{ database, collection }] = config.arguments;
145
- const app = state_1.StateManager.select('app');
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 requestKey = baas_request || stitch_request;
158
- if (!requestKey)
159
- return;
160
- const changeStream = streams[requestKey];
161
- if (changeStream) {
162
- changeStream.on('change', (change) => {
163
- res.raw.write(`data: ${serializeEjson(change)}\n\n`);
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
- req.raw.on('close', () => {
166
- var _a;
167
- console.log("change stream closed");
168
- (_a = changeStream === null || changeStream === void 0 ? void 0 : changeStream.close) === null || _a === void 0 ? void 0 : _a.call(changeStream);
169
- delete streams[requestKey];
170
- });
171
- return;
188
+ hub = {
189
+ database,
190
+ collection,
191
+ stream,
192
+ subscribers: new Map()
193
+ };
194
+ sharedWatchStreams.set(streamKey, hub);
172
195
  }
173
- streams[requestKey] = yield services['mongodb-atlas'](app, {
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
- rules
176
- })
177
- .db(database)
178
- .collection(collection)
179
- .watch([], { fullDocument: 'whenAvailable' });
180
- streams[requestKey].on('change', (change) => {
181
- res.raw.write(`data: ${serializeEjson(change)}\n\n`);
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;AA+mBD,eAAO,MAAM,gBAAgB;kHAxlB1B,aAAa;iHAggBb,aAAa;uHA/Yb,aAAa;CA2ef,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":"AAuBA,OAAO,EAGL,oBAAoB,EAErB,MAAM,SAAS,CAAA;AA0uChB,QAAA,MAAM,YAAY,EAAE,oBA6BlB,CAAA;AAEF,eAAe,YAAY,CAAA"}
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"}