@friggframework/core 2.0.0-next.45 → 2.0.0-next.46

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.
Files changed (163) hide show
  1. package/README.md +28 -0
  2. package/application/commands/integration-commands.js +19 -0
  3. package/core/Worker.js +8 -21
  4. package/credential/repositories/credential-repository-mongo.js +14 -8
  5. package/credential/repositories/credential-repository-postgres.js +14 -8
  6. package/credential/repositories/credential-repository.js +3 -8
  7. package/database/MONGODB_TRANSACTION_FIX.md +198 -0
  8. package/database/adapters/lambda-invoker.js +97 -0
  9. package/database/config.js +11 -2
  10. package/database/models/WebsocketConnection.js +11 -10
  11. package/database/prisma.js +63 -3
  12. package/database/repositories/health-check-repository-mongodb.js +3 -0
  13. package/database/repositories/migration-status-repository-s3.js +137 -0
  14. package/database/use-cases/check-database-state-use-case.js +81 -0
  15. package/database/use-cases/check-encryption-health-use-case.js +3 -2
  16. package/database/use-cases/get-database-state-via-worker-use-case.js +61 -0
  17. package/database/use-cases/get-migration-status-use-case.js +93 -0
  18. package/database/use-cases/run-database-migration-use-case.js +137 -0
  19. package/database/use-cases/trigger-database-migration-use-case.js +157 -0
  20. package/database/utils/mongodb-collection-utils.js +91 -0
  21. package/database/utils/mongodb-schema-init.js +106 -0
  22. package/database/utils/prisma-runner.js +400 -0
  23. package/database/utils/prisma-schema-parser.js +182 -0
  24. package/encrypt/Cryptor.js +14 -16
  25. package/generated/prisma-mongodb/client.d.ts +1 -0
  26. package/generated/prisma-mongodb/client.js +4 -0
  27. package/generated/prisma-mongodb/default.d.ts +1 -0
  28. package/generated/prisma-mongodb/default.js +4 -0
  29. package/generated/prisma-mongodb/edge.d.ts +1 -0
  30. package/generated/prisma-mongodb/edge.js +334 -0
  31. package/generated/prisma-mongodb/index-browser.js +316 -0
  32. package/generated/prisma-mongodb/index.d.ts +22897 -0
  33. package/generated/prisma-mongodb/index.js +359 -0
  34. package/generated/prisma-mongodb/package.json +183 -0
  35. package/generated/prisma-mongodb/query-engine-debian-openssl-3.0.x +0 -0
  36. package/generated/prisma-mongodb/query-engine-rhel-openssl-3.0.x +0 -0
  37. package/generated/prisma-mongodb/runtime/binary.d.ts +1 -0
  38. package/generated/prisma-mongodb/runtime/binary.js +289 -0
  39. package/generated/prisma-mongodb/runtime/edge-esm.js +34 -0
  40. package/generated/prisma-mongodb/runtime/edge.js +34 -0
  41. package/generated/prisma-mongodb/runtime/index-browser.d.ts +370 -0
  42. package/generated/prisma-mongodb/runtime/index-browser.js +16 -0
  43. package/generated/prisma-mongodb/runtime/library.d.ts +3977 -0
  44. package/generated/prisma-mongodb/runtime/react-native.js +83 -0
  45. package/generated/prisma-mongodb/runtime/wasm-compiler-edge.js +84 -0
  46. package/generated/prisma-mongodb/runtime/wasm-engine-edge.js +36 -0
  47. package/generated/prisma-mongodb/schema.prisma +362 -0
  48. package/generated/prisma-mongodb/wasm-edge-light-loader.mjs +4 -0
  49. package/generated/prisma-mongodb/wasm-worker-loader.mjs +4 -0
  50. package/generated/prisma-mongodb/wasm.d.ts +1 -0
  51. package/generated/prisma-mongodb/wasm.js +341 -0
  52. package/generated/prisma-postgresql/client.d.ts +1 -0
  53. package/generated/prisma-postgresql/client.js +4 -0
  54. package/generated/prisma-postgresql/default.d.ts +1 -0
  55. package/generated/prisma-postgresql/default.js +4 -0
  56. package/generated/prisma-postgresql/edge.d.ts +1 -0
  57. package/generated/prisma-postgresql/edge.js +356 -0
  58. package/generated/prisma-postgresql/index-browser.js +338 -0
  59. package/generated/prisma-postgresql/index.d.ts +25071 -0
  60. package/generated/prisma-postgresql/index.js +381 -0
  61. package/generated/prisma-postgresql/package.json +183 -0
  62. package/generated/prisma-postgresql/query-engine-debian-openssl-3.0.x +0 -0
  63. package/generated/prisma-postgresql/query-engine-rhel-openssl-3.0.x +0 -0
  64. package/generated/prisma-postgresql/query_engine_bg.js +2 -0
  65. package/generated/prisma-postgresql/query_engine_bg.wasm +0 -0
  66. package/generated/prisma-postgresql/runtime/binary.d.ts +1 -0
  67. package/generated/prisma-postgresql/runtime/binary.js +289 -0
  68. package/generated/prisma-postgresql/runtime/edge-esm.js +34 -0
  69. package/generated/prisma-postgresql/runtime/edge.js +34 -0
  70. package/generated/prisma-postgresql/runtime/index-browser.d.ts +370 -0
  71. package/generated/prisma-postgresql/runtime/index-browser.js +16 -0
  72. package/generated/prisma-postgresql/runtime/library.d.ts +3977 -0
  73. package/generated/prisma-postgresql/runtime/react-native.js +83 -0
  74. package/generated/prisma-postgresql/runtime/wasm-compiler-edge.js +84 -0
  75. package/generated/prisma-postgresql/runtime/wasm-engine-edge.js +36 -0
  76. package/generated/prisma-postgresql/schema.prisma +345 -0
  77. package/generated/prisma-postgresql/wasm-edge-light-loader.mjs +4 -0
  78. package/generated/prisma-postgresql/wasm-worker-loader.mjs +4 -0
  79. package/generated/prisma-postgresql/wasm.d.ts +1 -0
  80. package/generated/prisma-postgresql/wasm.js +363 -0
  81. package/handlers/database-migration-handler.js +227 -0
  82. package/handlers/routers/auth.js +1 -1
  83. package/handlers/routers/db-migration.handler.js +29 -0
  84. package/handlers/routers/db-migration.js +256 -0
  85. package/handlers/routers/health.js +41 -6
  86. package/handlers/routers/integration-webhook-routers.js +2 -2
  87. package/handlers/use-cases/check-integrations-health-use-case.js +22 -10
  88. package/handlers/workers/db-migration.js +352 -0
  89. package/index.js +12 -0
  90. package/integrations/integration-router.js +60 -70
  91. package/integrations/repositories/integration-repository-interface.js +12 -0
  92. package/integrations/repositories/integration-repository-mongo.js +32 -0
  93. package/integrations/repositories/integration-repository-postgres.js +33 -0
  94. package/integrations/repositories/process-repository-postgres.js +2 -2
  95. package/integrations/tests/doubles/test-integration-repository.js +2 -2
  96. package/logs/logger.js +0 -4
  97. package/modules/entity.js +0 -1
  98. package/modules/repositories/module-repository-mongo.js +3 -12
  99. package/modules/repositories/module-repository-postgres.js +0 -11
  100. package/modules/repositories/module-repository.js +1 -12
  101. package/modules/use-cases/get-entity-options-by-id.js +1 -1
  102. package/modules/use-cases/get-module.js +1 -2
  103. package/modules/use-cases/refresh-entity-options.js +1 -1
  104. package/modules/use-cases/test-module-auth.js +1 -1
  105. package/package.json +82 -66
  106. package/prisma-mongodb/schema.prisma +21 -21
  107. package/prisma-postgresql/schema.prisma +15 -15
  108. package/queues/queuer-util.js +24 -21
  109. package/types/core/index.d.ts +2 -2
  110. package/types/module-plugin/index.d.ts +0 -2
  111. package/user/use-cases/authenticate-user.js +127 -0
  112. package/user/use-cases/authenticate-with-shared-secret.js +48 -0
  113. package/user/use-cases/get-user-from-adopter-jwt.js +149 -0
  114. package/user/use-cases/get-user-from-x-frigg-headers.js +106 -0
  115. package/user/user.js +16 -0
  116. package/websocket/repositories/websocket-connection-repository-mongo.js +11 -10
  117. package/websocket/repositories/websocket-connection-repository-postgres.js +11 -10
  118. package/websocket/repositories/websocket-connection-repository.js +11 -10
  119. package/application/commands/integration-commands.test.js +0 -123
  120. package/database/encryption/encryption-integration.test.js +0 -553
  121. package/database/encryption/encryption-schema-registry.test.js +0 -392
  122. package/database/encryption/field-encryption-service.test.js +0 -525
  123. package/database/encryption/mongo-decryption-fix-verification.test.js +0 -348
  124. package/database/encryption/postgres-decryption-fix-verification.test.js +0 -371
  125. package/database/encryption/postgres-relation-decryption.test.js +0 -245
  126. package/database/encryption/prisma-encryption-extension.test.js +0 -439
  127. package/errors/base-error.test.js +0 -32
  128. package/errors/fetch-error.test.js +0 -79
  129. package/errors/halt-error.test.js +0 -11
  130. package/errors/validation-errors.test.js +0 -120
  131. package/handlers/auth-flow.integration.test.js +0 -147
  132. package/handlers/integration-event-dispatcher.test.js +0 -209
  133. package/handlers/routers/health.test.js +0 -210
  134. package/handlers/routers/integration-webhook-routers.test.js +0 -126
  135. package/handlers/webhook-flow.integration.test.js +0 -356
  136. package/handlers/workers/integration-defined-workers.test.js +0 -184
  137. package/integrations/tests/use-cases/create-integration.test.js +0 -131
  138. package/integrations/tests/use-cases/delete-integration-for-user.test.js +0 -150
  139. package/integrations/tests/use-cases/find-integration-context-by-external-entity-id.test.js +0 -92
  140. package/integrations/tests/use-cases/get-integration-for-user.test.js +0 -150
  141. package/integrations/tests/use-cases/get-integration-instance.test.js +0 -176
  142. package/integrations/tests/use-cases/get-integrations-for-user.test.js +0 -176
  143. package/integrations/tests/use-cases/get-possible-integrations.test.js +0 -188
  144. package/integrations/tests/use-cases/update-integration-messages.test.js +0 -142
  145. package/integrations/tests/use-cases/update-integration-status.test.js +0 -103
  146. package/integrations/tests/use-cases/update-integration.test.js +0 -141
  147. package/integrations/use-cases/create-process.test.js +0 -178
  148. package/integrations/use-cases/get-process.test.js +0 -190
  149. package/integrations/use-cases/load-integration-context-full.test.js +0 -329
  150. package/integrations/use-cases/load-integration-context.test.js +0 -114
  151. package/integrations/use-cases/update-process-metrics.test.js +0 -308
  152. package/integrations/use-cases/update-process-state.test.js +0 -256
  153. package/lambda/TimeoutCatcher.test.js +0 -68
  154. package/logs/logger.test.js +0 -76
  155. package/modules/module-hydration.test.js +0 -205
  156. package/modules/requester/requester.test.js +0 -28
  157. package/user/tests/use-cases/create-individual-user.test.js +0 -24
  158. package/user/tests/use-cases/create-organization-user.test.js +0 -28
  159. package/user/tests/use-cases/create-token-for-user-id.test.js +0 -19
  160. package/user/tests/use-cases/get-user-from-bearer-token.test.js +0 -64
  161. package/user/tests/use-cases/login-user.test.js +0 -220
  162. package/user/tests/user-password-encryption-isolation.test.js +0 -237
  163. package/user/tests/user-password-hashing.test.js +0 -235
@@ -110,6 +110,18 @@ class IntegrationRepositoryInterface {
110
110
  async findIntegrationByUserId(userId) {
111
111
  throw new Error('Method findIntegrationByUserId must be implemented by subclass');
112
112
  }
113
+
114
+ /**
115
+ * Update integration configuration
116
+ *
117
+ * @param {string|number} integrationId - Integration ID
118
+ * @param {Object} config - Updated configuration object
119
+ * @returns {Promise<Object>} Updated integration object
120
+ * @abstract
121
+ */
122
+ async updateIntegrationConfig(integrationId, config) {
123
+ throw new Error('Method updateIntegrationConfig must be implemented by subclass');
124
+ }
113
125
  }
114
126
 
115
127
  module.exports = { IntegrationRepositoryInterface };
@@ -266,6 +266,38 @@ class IntegrationRepositoryMongo extends IntegrationRepositoryInterface {
266
266
  messages: integration.messages,
267
267
  };
268
268
  }
269
+
270
+ /**
271
+ * Update integration configuration
272
+ * Replaces: IntegrationModel.updateOne({ _id: integrationId }, { config })
273
+ *
274
+ * @param {string} integrationId - Integration ID (MongoDB ObjectId as string)
275
+ * @param {Object} config - Updated configuration object
276
+ * @returns {Promise<Object>} Updated integration object
277
+ */
278
+ async updateIntegrationConfig(integrationId, config) {
279
+ if (config === null || config === undefined) {
280
+ throw new Error('Config parameter is required');
281
+ }
282
+
283
+ const integration = await this.prisma.integration.update({
284
+ where: { id: integrationId },
285
+ data: { config },
286
+ include: {
287
+ entities: true,
288
+ },
289
+ });
290
+
291
+ return {
292
+ id: integration.id,
293
+ entitiesIds: integration.entities.map((e) => e.id),
294
+ userId: integration.userId,
295
+ config: integration.config,
296
+ version: integration.version,
297
+ status: integration.status,
298
+ messages: integration.messages,
299
+ };
300
+ }
269
301
  }
270
302
 
271
303
  module.exports = { IntegrationRepositoryMongo };
@@ -314,6 +314,39 @@ class IntegrationRepositoryPostgres extends IntegrationRepositoryInterface {
314
314
  messages: converted.messages,
315
315
  };
316
316
  }
317
+
318
+ /**
319
+ * Update integration configuration
320
+ *
321
+ * @param {string} integrationId - Integration ID (string from application layer)
322
+ * @param {Object} config - Updated configuration object
323
+ * @returns {Promise<Object>} Updated integration object with string IDs
324
+ */
325
+ async updateIntegrationConfig(integrationId, config) {
326
+ if (config === null || config === undefined) {
327
+ throw new Error('Config parameter is required');
328
+ }
329
+
330
+ const intId = this._convertId(integrationId);
331
+ const integration = await this.prisma.integration.update({
332
+ where: { id: intId },
333
+ data: { config },
334
+ include: {
335
+ entities: true,
336
+ },
337
+ });
338
+
339
+ const converted = this._convertIntegrationIds(integration);
340
+ return {
341
+ id: converted.id,
342
+ entitiesIds: converted.entities.map((e) => e.id),
343
+ userId: converted.userId,
344
+ config: converted.config,
345
+ version: converted.version,
346
+ status: converted.status,
347
+ messages: converted.messages,
348
+ };
349
+ }
317
350
  }
318
351
 
319
352
  module.exports = { IntegrationRepositoryPostgres };
@@ -199,8 +199,8 @@ class ProcessRepositoryPostgres extends ProcessRepositoryInterface {
199
199
  results: process.results,
200
200
  childProcesses: Array.isArray(process.childProcesses)
201
201
  ? process.childProcesses.length > 0 &&
202
- typeof process.childProcesses[0] === 'object' &&
203
- process.childProcesses[0] !== null
202
+ typeof process.childProcesses[0] === 'object' &&
203
+ process.childProcesses[0] !== null
204
204
  ? process.childProcesses.map((child) => String(child.id))
205
205
  : process.childProcesses
206
206
  : [],
@@ -62,11 +62,11 @@ class TestIntegrationRepository {
62
62
  const rec = this.store.get(id);
63
63
  if (!rec) {
64
64
  this.operationHistory.push({ operation: 'updateConfig', id, success: false });
65
- return false;
65
+ throw new Error(`Integration with id ${id} not found`);
66
66
  }
67
67
  rec.config = config;
68
68
  this.operationHistory.push({ operation: 'updateConfig', id, success: true });
69
- return true;
69
+ return rec;
70
70
  }
71
71
 
72
72
  async deleteIntegrationById(id) {
package/logs/logger.js CHANGED
@@ -1,5 +1,4 @@
1
1
  const util = require('util');
2
- const aws = require('aws-sdk');
3
2
 
4
3
  // Except in some outlier circumstances, for example steam or event error handlers, this should be the only place that calls `console.*`. That way, this file can be modified to log everything properly on a variety of platforms because all the logging code is here in one place.
5
4
  /* eslint-disable no-console */
@@ -7,9 +6,6 @@ const aws = require('aws-sdk');
7
6
  const logs = [];
8
7
  let flushCalled = false;
9
8
 
10
- // Log AWS SDK calls
11
- aws.config.logger = { log: debug };
12
-
13
9
  function debug(...messages) {
14
10
  if (messages.length) {
15
11
  const date = new Date();
package/modules/entity.js CHANGED
@@ -6,7 +6,6 @@ const schema = new mongoose.Schema(
6
6
  ref: 'Credential',
7
7
  required: false,
8
8
  },
9
- subType: { type: String },
10
9
  user: {
11
10
  type: mongoose.Schema.Types.ObjectId,
12
11
  ref: 'User',
@@ -8,7 +8,9 @@ const { ModuleRepositoryInterface } = require('./module-repository-interface');
8
8
  * MongoDB-specific characteristics:
9
9
  * - Uses String IDs (ObjectId)
10
10
  * - No ID conversion needed (IDs are already strings)
11
- * - entity.__t (discriminator) → entity.subType
11
+ *
12
+ * Prisma Migration Notes:
13
+ * - Mongoose discriminator (__t) → moduleName field (module type: salesforce, hubspot, etc.)
12
14
  */
13
15
  class ModuleRepositoryMongo extends ModuleRepositoryInterface {
14
16
  constructor() {
@@ -100,7 +102,6 @@ class ModuleRepositoryMongo extends ModuleRepositoryInterface {
100
102
  userId: entity.userId,
101
103
  name: entity.name,
102
104
  externalId: entity.externalId,
103
- type: entity.subType,
104
105
  moduleName: entity.moduleName,
105
106
  };
106
107
  }
@@ -127,7 +128,6 @@ class ModuleRepositoryMongo extends ModuleRepositoryInterface {
127
128
  userId: e.userId,
128
129
  name: e.name,
129
130
  externalId: e.externalId,
130
- type: e.subType,
131
131
  moduleName: e.moduleName,
132
132
  }));
133
133
  }
@@ -154,7 +154,6 @@ class ModuleRepositoryMongo extends ModuleRepositoryInterface {
154
154
  userId: e.userId,
155
155
  name: e.name,
156
156
  externalId: e.externalId,
157
- type: e.subType,
158
157
  moduleName: e.moduleName,
159
158
  }));
160
159
  }
@@ -185,7 +184,6 @@ class ModuleRepositoryMongo extends ModuleRepositoryInterface {
185
184
  userId: e.userId,
186
185
  name: e.name,
187
186
  externalId: e.externalId,
188
- type: e.subType,
189
187
  moduleName: e.moduleName,
190
188
  }));
191
189
  }
@@ -232,7 +230,6 @@ class ModuleRepositoryMongo extends ModuleRepositoryInterface {
232
230
  userId: entity.userId,
233
231
  name: entity.name,
234
232
  externalId: entity.externalId,
235
- type: entity.subType,
236
233
  moduleName: entity.moduleName,
237
234
  };
238
235
  }
@@ -248,7 +245,6 @@ class ModuleRepositoryMongo extends ModuleRepositoryInterface {
248
245
  const data = {
249
246
  userId: entityData.user || entityData.userId,
250
247
  credentialId: entityData.credential || entityData.credentialId,
251
- subType: entityData.type || entityData.subType,
252
248
  name: entityData.name,
253
249
  moduleName: entityData.moduleName,
254
250
  externalId: entityData.externalId,
@@ -268,7 +264,6 @@ class ModuleRepositoryMongo extends ModuleRepositoryInterface {
268
264
  userId: entity.userId,
269
265
  name: entity.name,
270
266
  externalId: entity.externalId,
271
- type: entity.subType,
272
267
  moduleName: entity.moduleName,
273
268
  };
274
269
  }
@@ -289,8 +284,6 @@ class ModuleRepositoryMongo extends ModuleRepositoryInterface {
289
284
  data.credentialId = updates.credential;
290
285
  if (updates.credentialId !== undefined)
291
286
  data.credentialId = updates.credentialId;
292
- if (updates.type !== undefined) data.subType = updates.type;
293
- if (updates.subType !== undefined) data.subType = updates.subType;
294
287
  if (updates.name !== undefined) data.name = updates.name;
295
288
  if (updates.moduleName !== undefined)
296
289
  data.moduleName = updates.moduleName;
@@ -313,7 +306,6 @@ class ModuleRepositoryMongo extends ModuleRepositoryInterface {
313
306
  userId: entity.userId,
314
307
  name: entity.name,
315
308
  externalId: entity.externalId,
316
- type: entity.subType,
317
309
  moduleName: entity.moduleName,
318
310
  };
319
311
  } catch (error) {
@@ -377,7 +369,6 @@ class ModuleRepositoryMongo extends ModuleRepositoryInterface {
377
369
  if (filter.name) where.name = filter.name;
378
370
  if (filter.moduleName) where.moduleName = filter.moduleName;
379
371
  if (filter.externalId) where.externalId = this._toString(filter.externalId);
380
- if (filter.subType) where.subType = filter.subType;
381
372
 
382
373
  return where;
383
374
  }
@@ -136,7 +136,6 @@ class ModuleRepositoryPostgres extends ModuleRepositoryInterface {
136
136
  userId: entity.userId?.toString(),
137
137
  name: entity.name,
138
138
  externalId: entity.externalId,
139
- type: entity.subType,
140
139
  moduleName: entity.moduleName,
141
140
  };
142
141
  }
@@ -165,7 +164,6 @@ class ModuleRepositoryPostgres extends ModuleRepositoryInterface {
165
164
  userId: e.userId?.toString(),
166
165
  name: e.name,
167
166
  externalId: e.externalId,
168
- type: e.subType,
169
167
  moduleName: e.moduleName,
170
168
  }));
171
169
  }
@@ -194,7 +192,6 @@ class ModuleRepositoryPostgres extends ModuleRepositoryInterface {
194
192
  userId: e.userId?.toString(),
195
193
  name: e.name,
196
194
  externalId: e.externalId,
197
- type: e.subType,
198
195
  moduleName: e.moduleName,
199
196
  }));
200
197
  }
@@ -227,7 +224,6 @@ class ModuleRepositoryPostgres extends ModuleRepositoryInterface {
227
224
  userId: e.userId?.toString(),
228
225
  name: e.name,
229
226
  externalId: e.externalId,
230
- type: e.subType,
231
227
  moduleName: e.moduleName,
232
228
  }));
233
229
  }
@@ -275,7 +271,6 @@ class ModuleRepositoryPostgres extends ModuleRepositoryInterface {
275
271
  userId: entity.userId?.toString(),
276
272
  name: entity.name,
277
273
  externalId: entity.externalId,
278
- type: entity.subType,
279
274
  moduleName: entity.moduleName,
280
275
  };
281
276
  }
@@ -293,7 +288,6 @@ class ModuleRepositoryPostgres extends ModuleRepositoryInterface {
293
288
  credentialId: this._convertId(
294
289
  entityData.credential || entityData.credentialId
295
290
  ),
296
- subType: entityData.type || entityData.subType,
297
291
  name: entityData.name,
298
292
  moduleName: entityData.moduleName,
299
293
  externalId: entityData.externalId,
@@ -313,7 +307,6 @@ class ModuleRepositoryPostgres extends ModuleRepositoryInterface {
313
307
  userId: entity.userId?.toString(),
314
308
  name: entity.name,
315
309
  externalId: entity.externalId,
316
- type: entity.subType,
317
310
  moduleName: entity.moduleName,
318
311
  };
319
312
  }
@@ -336,8 +329,6 @@ class ModuleRepositoryPostgres extends ModuleRepositoryInterface {
336
329
  data.credentialId = this._convertId(updates.credential);
337
330
  if (updates.credentialId !== undefined)
338
331
  data.credentialId = this._convertId(updates.credentialId);
339
- if (updates.type !== undefined) data.subType = updates.type;
340
- if (updates.subType !== undefined) data.subType = updates.subType;
341
332
  if (updates.name !== undefined) data.name = updates.name;
342
333
  if (updates.moduleName !== undefined)
343
334
  data.moduleName = updates.moduleName;
@@ -362,7 +353,6 @@ class ModuleRepositoryPostgres extends ModuleRepositoryInterface {
362
353
  userId: entity.userId?.toString(),
363
354
  name: entity.name,
364
355
  externalId: entity.externalId,
365
- type: entity.subType,
366
356
  moduleName: entity.moduleName,
367
357
  };
368
358
  } catch (error) {
@@ -428,7 +418,6 @@ class ModuleRepositoryPostgres extends ModuleRepositoryInterface {
428
418
  if (filter.name) where.name = filter.name;
429
419
  if (filter.moduleName) where.moduleName = filter.moduleName;
430
420
  if (filter.externalId) where.externalId = this._toString(filter.externalId);
431
- if (filter.subType) where.subType = filter.subType;
432
421
 
433
422
  return where;
434
423
  }
@@ -13,7 +13,7 @@ const { ModuleRepositoryInterface } = require('./module-repository-interface');
13
13
  * Migration from Mongoose:
14
14
  * - Constructor injection of Prisma client
15
15
  * - populate('credential') → include: { credential: true }
16
- * - entity.__t (discriminator) → entity.subType
16
+ * - Mongoose discriminator (__t) → moduleName field (module type: salesforce, hubspot, etc.)
17
17
  * - _id → id conversion automatic in Prisma
18
18
  */
19
19
  class ModuleRepository extends ModuleRepositoryInterface {
@@ -47,7 +47,6 @@ class ModuleRepository extends ModuleRepositoryInterface {
47
47
  userId: entity.userId,
48
48
  name: entity.name,
49
49
  externalId: entity.externalId,
50
- type: entity.subType,
51
50
  moduleName: entity.moduleName,
52
51
  };
53
52
  }
@@ -72,7 +71,6 @@ class ModuleRepository extends ModuleRepositoryInterface {
72
71
  userId: e.userId,
73
72
  name: e.name,
74
73
  externalId: e.externalId,
75
- type: e.subType,
76
74
  moduleName: e.moduleName,
77
75
  }));
78
76
  }
@@ -97,7 +95,6 @@ class ModuleRepository extends ModuleRepositoryInterface {
97
95
  userId: e.userId,
98
96
  name: e.name,
99
97
  externalId: e.externalId,
100
- type: e.subType,
101
98
  moduleName: e.moduleName,
102
99
  }));
103
100
  }
@@ -126,7 +123,6 @@ class ModuleRepository extends ModuleRepositoryInterface {
126
123
  userId: e.userId,
127
124
  name: e.name,
128
125
  externalId: e.externalId,
129
- type: e.subType,
130
126
  moduleName: e.moduleName,
131
127
  }));
132
128
  }
@@ -172,7 +168,6 @@ class ModuleRepository extends ModuleRepositoryInterface {
172
168
  userId: entity.userId,
173
169
  name: entity.name,
174
170
  externalId: entity.externalId,
175
- type: entity.subType,
176
171
  moduleName: entity.moduleName,
177
172
  };
178
173
  }
@@ -189,7 +184,6 @@ class ModuleRepository extends ModuleRepositoryInterface {
189
184
  const data = {
190
185
  userId: entityData.user || entityData.userId,
191
186
  credentialId: entityData.credential || entityData.credentialId,
192
- subType: entityData.type || entityData.subType,
193
187
  name: entityData.name,
194
188
  moduleName: entityData.moduleName,
195
189
  externalId: entityData.externalId,
@@ -208,7 +202,6 @@ class ModuleRepository extends ModuleRepositoryInterface {
208
202
  userId: entity.userId,
209
203
  name: entity.name,
210
204
  externalId: entity.externalId,
211
- type: entity.subType,
212
205
  moduleName: entity.moduleName,
213
206
  };
214
207
  }
@@ -230,8 +223,6 @@ class ModuleRepository extends ModuleRepositoryInterface {
230
223
  data.credentialId = updates.credential;
231
224
  if (updates.credentialId !== undefined)
232
225
  data.credentialId = updates.credentialId;
233
- if (updates.type !== undefined) data.subType = updates.type;
234
- if (updates.subType !== undefined) data.subType = updates.subType;
235
226
  if (updates.name !== undefined) data.name = updates.name;
236
227
  if (updates.moduleName !== undefined)
237
228
  data.moduleName = updates.moduleName;
@@ -253,7 +244,6 @@ class ModuleRepository extends ModuleRepositoryInterface {
253
244
  userId: entity.userId,
254
245
  name: entity.name,
255
246
  externalId: entity.externalId,
256
- type: entity.subType,
257
247
  moduleName: entity.moduleName,
258
248
  };
259
249
  } catch (error) {
@@ -318,7 +308,6 @@ class ModuleRepository extends ModuleRepositoryInterface {
318
308
  if (filter.name) where.name = filter.name;
319
309
  if (filter.moduleName) where.moduleName = filter.moduleName;
320
310
  if (filter.externalId) where.externalId = filter.externalId;
321
- if (filter.subType) where.subType = filter.subType;
322
311
 
323
312
  return where;
324
313
  }
@@ -32,7 +32,7 @@ class GetEntityOptionsById {
32
32
  );
33
33
  }
34
34
 
35
- const entityType = entity.type;
35
+ const entityType = entity.moduleName;
36
36
  const moduleDefinition = this.moduleDefinitions.find((def) => {
37
37
  const modelName =
38
38
  Module.getEntityModelFromDefinition(def).modelName;
@@ -22,7 +22,7 @@ class GetModule {
22
22
  );
23
23
  }
24
24
 
25
- const entityType = entity.type;
25
+ const entityType = entity.moduleName;
26
26
  const moduleDefinition = this.moduleDefinitions.find((def) => {
27
27
  const modelName = Module.getEntityModelFromDefinition(def).modelName;
28
28
  return entityType === modelName;
@@ -44,7 +44,6 @@ class GetModule {
44
44
  return {
45
45
  id: module.entity.id,
46
46
  name: module.entity.name,
47
- type: module.entity.moduleName,
48
47
  moduleName: module.entity.moduleName,
49
48
  credential: module.credential,
50
49
  externalId: module.entity.externalId,
@@ -32,7 +32,7 @@ class RefreshEntityOptions {
32
32
  );
33
33
  }
34
34
 
35
- const entityType = entity.type;
35
+ const entityType = entity.moduleName;
36
36
  const moduleDefinition = this.moduleDefinitions.find((def) => {
37
37
  const modelName =
38
38
  Module.getEntityModelFromDefinition(def).modelName;
@@ -27,7 +27,7 @@ class TestModuleAuth {
27
27
  );
28
28
  }
29
29
 
30
- const entityType = entity.type;
30
+ const entityType = entity.moduleName;
31
31
  const moduleDefinition = this.moduleDefinitions.find((def) => {
32
32
  const modelName =
33
33
  Module.getEntityModelFromDefinition(def).modelName;
package/package.json CHANGED
@@ -1,68 +1,84 @@
1
1
  {
2
- "name": "@friggframework/core",
3
- "prettier": "@friggframework/prettier-config",
4
- "version": "2.0.0-next.45",
5
- "dependencies": {
6
- "@hapi/boom": "^10.0.1",
7
- "@prisma/client": "^6.16.3",
8
- "aws-sdk": "^2.1200.0",
9
- "bcryptjs": "^2.4.3",
10
- "body-parser": "^1.20.2",
11
- "common-tags": "^1.8.2",
12
- "cors": "^2.8.5",
13
- "dotenv": "^16.4.7",
14
- "express": "^4.19.2",
15
- "express-async-handler": "^1.2.0",
16
- "form-data": "^4.0.0",
17
- "fs-extra": "^11.2.0",
18
- "lodash": "4.17.21",
19
- "lodash.get": "^4.4.2",
20
- "mongoose": "6.11.6",
21
- "node-fetch": "^2.6.7",
22
- "serverless-http": "^2.7.0",
23
- "uuid": "^9.0.1"
24
- },
25
- "devDependencies": {
26
- "@friggframework/eslint-config": "2.0.0-next.45",
27
- "@friggframework/prettier-config": "2.0.0-next.45",
28
- "@friggframework/test": "2.0.0-next.45",
29
- "@types/lodash": "4.17.15",
30
- "@typescript-eslint/eslint-plugin": "^8.0.0",
31
- "chai": "^4.3.6",
32
- "eslint": "^8.22.0",
33
- "eslint-plugin-import": "^2.29.1",
34
- "eslint-plugin-n": "^17.10.2",
35
- "eslint-plugin-promise": "^7.0.0",
36
- "jest": "^29.7.0",
37
- "prettier": "^2.7.1",
38
- "prisma": "^6.16.3",
39
- "sinon": "^16.1.1",
40
- "typescript": "^5.0.2"
41
- },
42
- "scripts": {
43
- "lint:fix": "prettier --write --loglevel error . && eslint . --fix",
44
- "test": "jest --passWithNoTests # TODO",
45
- "prisma:generate:mongo": "npx prisma generate --schema ./prisma-mongodb/schema.prisma",
46
- "prisma:generate:postgres": "npx prisma generate --schema ./prisma-postgresql/schema.prisma",
47
- "prisma:generate": "npm run prisma:generate:mongo && npm run prisma:generate:postgres",
48
- "prisma:push:mongo": "npx prisma db push --schema ./prisma-mongodb/schema.prisma",
49
- "prisma:migrate:postgres": "npx prisma migrate dev --schema ./prisma-postgresql/schema.prisma",
50
- "postinstall": "npm run prisma:generate"
51
- },
52
- "author": "",
53
- "license": "MIT",
54
- "main": "index.js",
55
- "repository": {
56
- "type": "git",
57
- "url": "git+https://github.com/friggframework/frigg.git"
58
- },
59
- "bugs": {
60
- "url": "https://github.com/friggframework/frigg/issues"
61
- },
62
- "homepage": "https://github.com/friggframework/frigg#readme",
63
- "description": "",
64
- "publishConfig": {
65
- "access": "public"
66
- },
67
- "gitHead": "996a15bcdfaa4252b9891a33f1b1c84548d66bbc"
2
+ "name": "@friggframework/core",
3
+ "prettier": "@friggframework/prettier-config",
4
+ "version": "2.0.0-next.46",
5
+ "dependencies": {
6
+ "@aws-sdk/client-apigatewaymanagementapi": "^3.588.0",
7
+ "@aws-sdk/client-kms": "^3.588.0",
8
+ "@aws-sdk/client-lambda": "^3.714.0",
9
+ "@aws-sdk/client-sqs": "^3.588.0",
10
+ "@hapi/boom": "^10.0.1",
11
+ "bcryptjs": "^2.4.3",
12
+ "body-parser": "^1.20.2",
13
+ "chalk": "^4.1.2",
14
+ "common-tags": "^1.8.2",
15
+ "cors": "^2.8.5",
16
+ "dotenv": "^16.4.7",
17
+ "express": "^4.19.2",
18
+ "express-async-handler": "^1.2.0",
19
+ "form-data": "^4.0.0",
20
+ "fs-extra": "^11.2.0",
21
+ "lodash": "4.17.21",
22
+ "lodash.get": "^4.4.2",
23
+ "mongoose": "6.11.6",
24
+ "node-fetch": "^2.6.7",
25
+ "serverless-http": "^2.7.0",
26
+ "uuid": "^9.0.1"
27
+ },
28
+ "peerDependencies": {
29
+ "@prisma/client": "^6.16.3",
30
+ "prisma": "^6.16.3"
31
+ },
32
+ "peerDependenciesMeta": {
33
+ "@prisma/client": {
34
+ "optional": true
35
+ },
36
+ "prisma": {
37
+ "optional": true
38
+ }
39
+ },
40
+ "devDependencies": {
41
+ "@friggframework/eslint-config": "2.0.0-next.46",
42
+ "@friggframework/prettier-config": "2.0.0-next.46",
43
+ "@friggframework/test": "2.0.0-next.46",
44
+ "@prisma/client": "^6.17.0",
45
+ "@types/lodash": "4.17.15",
46
+ "@typescript-eslint/eslint-plugin": "^8.0.0",
47
+ "chai": "^4.3.6",
48
+ "eslint": "^8.22.0",
49
+ "eslint-plugin-import": "^2.29.1",
50
+ "eslint-plugin-n": "^17.10.2",
51
+ "eslint-plugin-promise": "^7.0.0",
52
+ "jest": "^29.7.0",
53
+ "prettier": "^2.7.1",
54
+ "prisma": "^6.17.0",
55
+ "sinon": "^16.1.1",
56
+ "typescript": "^5.0.2"
57
+ },
58
+ "scripts": {
59
+ "lint:fix": "prettier --write --loglevel error . && eslint . --fix",
60
+ "test": "jest --passWithNoTests # TODO",
61
+ "prisma:generate:mongo": "npx prisma generate --schema ./prisma-mongodb/schema.prisma",
62
+ "prisma:generate:postgres": "npx prisma generate --schema ./prisma-postgresql/schema.prisma",
63
+ "prisma:generate": "npm run prisma:generate:mongo && npm run prisma:generate:postgres",
64
+ "prisma:push:mongo": "npx prisma db push --schema ./prisma-mongodb/schema.prisma",
65
+ "prisma:migrate:postgres": "npx prisma migrate dev --schema ./prisma-postgresql/schema.prisma",
66
+ "prepublishOnly": "npm run prisma:generate"
67
+ },
68
+ "author": "",
69
+ "license": "MIT",
70
+ "main": "index.js",
71
+ "repository": {
72
+ "type": "git",
73
+ "url": "git+https://github.com/friggframework/frigg.git"
74
+ },
75
+ "bugs": {
76
+ "url": "https://github.com/friggframework/frigg/issues"
77
+ },
78
+ "homepage": "https://github.com/friggframework/frigg#readme",
79
+ "description": "",
80
+ "publishConfig": {
81
+ "access": "public"
82
+ },
83
+ "gitHead": "5ebdd873fa7e010a66133ed69fccbc3bee29de9d"
68
84
  }