@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.
- package/README.md +28 -0
- package/application/commands/integration-commands.js +19 -0
- package/core/Worker.js +8 -21
- package/credential/repositories/credential-repository-mongo.js +14 -8
- package/credential/repositories/credential-repository-postgres.js +14 -8
- package/credential/repositories/credential-repository.js +3 -8
- package/database/MONGODB_TRANSACTION_FIX.md +198 -0
- package/database/adapters/lambda-invoker.js +97 -0
- package/database/config.js +11 -2
- package/database/models/WebsocketConnection.js +11 -10
- package/database/prisma.js +63 -3
- package/database/repositories/health-check-repository-mongodb.js +3 -0
- package/database/repositories/migration-status-repository-s3.js +137 -0
- package/database/use-cases/check-database-state-use-case.js +81 -0
- package/database/use-cases/check-encryption-health-use-case.js +3 -2
- package/database/use-cases/get-database-state-via-worker-use-case.js +61 -0
- package/database/use-cases/get-migration-status-use-case.js +93 -0
- package/database/use-cases/run-database-migration-use-case.js +137 -0
- package/database/use-cases/trigger-database-migration-use-case.js +157 -0
- package/database/utils/mongodb-collection-utils.js +91 -0
- package/database/utils/mongodb-schema-init.js +106 -0
- package/database/utils/prisma-runner.js +400 -0
- package/database/utils/prisma-schema-parser.js +182 -0
- package/encrypt/Cryptor.js +14 -16
- package/generated/prisma-mongodb/client.d.ts +1 -0
- package/generated/prisma-mongodb/client.js +4 -0
- package/generated/prisma-mongodb/default.d.ts +1 -0
- package/generated/prisma-mongodb/default.js +4 -0
- package/generated/prisma-mongodb/edge.d.ts +1 -0
- package/generated/prisma-mongodb/edge.js +334 -0
- package/generated/prisma-mongodb/index-browser.js +316 -0
- package/generated/prisma-mongodb/index.d.ts +22897 -0
- package/generated/prisma-mongodb/index.js +359 -0
- package/generated/prisma-mongodb/package.json +183 -0
- package/generated/prisma-mongodb/query-engine-debian-openssl-3.0.x +0 -0
- package/generated/prisma-mongodb/query-engine-rhel-openssl-3.0.x +0 -0
- package/generated/prisma-mongodb/runtime/binary.d.ts +1 -0
- package/generated/prisma-mongodb/runtime/binary.js +289 -0
- package/generated/prisma-mongodb/runtime/edge-esm.js +34 -0
- package/generated/prisma-mongodb/runtime/edge.js +34 -0
- package/generated/prisma-mongodb/runtime/index-browser.d.ts +370 -0
- package/generated/prisma-mongodb/runtime/index-browser.js +16 -0
- package/generated/prisma-mongodb/runtime/library.d.ts +3977 -0
- package/generated/prisma-mongodb/runtime/react-native.js +83 -0
- package/generated/prisma-mongodb/runtime/wasm-compiler-edge.js +84 -0
- package/generated/prisma-mongodb/runtime/wasm-engine-edge.js +36 -0
- package/generated/prisma-mongodb/schema.prisma +362 -0
- package/generated/prisma-mongodb/wasm-edge-light-loader.mjs +4 -0
- package/generated/prisma-mongodb/wasm-worker-loader.mjs +4 -0
- package/generated/prisma-mongodb/wasm.d.ts +1 -0
- package/generated/prisma-mongodb/wasm.js +341 -0
- package/generated/prisma-postgresql/client.d.ts +1 -0
- package/generated/prisma-postgresql/client.js +4 -0
- package/generated/prisma-postgresql/default.d.ts +1 -0
- package/generated/prisma-postgresql/default.js +4 -0
- package/generated/prisma-postgresql/edge.d.ts +1 -0
- package/generated/prisma-postgresql/edge.js +356 -0
- package/generated/prisma-postgresql/index-browser.js +338 -0
- package/generated/prisma-postgresql/index.d.ts +25071 -0
- package/generated/prisma-postgresql/index.js +381 -0
- package/generated/prisma-postgresql/package.json +183 -0
- package/generated/prisma-postgresql/query-engine-debian-openssl-3.0.x +0 -0
- package/generated/prisma-postgresql/query-engine-rhel-openssl-3.0.x +0 -0
- package/generated/prisma-postgresql/query_engine_bg.js +2 -0
- package/generated/prisma-postgresql/query_engine_bg.wasm +0 -0
- package/generated/prisma-postgresql/runtime/binary.d.ts +1 -0
- package/generated/prisma-postgresql/runtime/binary.js +289 -0
- package/generated/prisma-postgresql/runtime/edge-esm.js +34 -0
- package/generated/prisma-postgresql/runtime/edge.js +34 -0
- package/generated/prisma-postgresql/runtime/index-browser.d.ts +370 -0
- package/generated/prisma-postgresql/runtime/index-browser.js +16 -0
- package/generated/prisma-postgresql/runtime/library.d.ts +3977 -0
- package/generated/prisma-postgresql/runtime/react-native.js +83 -0
- package/generated/prisma-postgresql/runtime/wasm-compiler-edge.js +84 -0
- package/generated/prisma-postgresql/runtime/wasm-engine-edge.js +36 -0
- package/generated/prisma-postgresql/schema.prisma +345 -0
- package/generated/prisma-postgresql/wasm-edge-light-loader.mjs +4 -0
- package/generated/prisma-postgresql/wasm-worker-loader.mjs +4 -0
- package/generated/prisma-postgresql/wasm.d.ts +1 -0
- package/generated/prisma-postgresql/wasm.js +363 -0
- package/handlers/database-migration-handler.js +227 -0
- package/handlers/routers/auth.js +1 -1
- package/handlers/routers/db-migration.handler.js +29 -0
- package/handlers/routers/db-migration.js +256 -0
- package/handlers/routers/health.js +41 -6
- package/handlers/routers/integration-webhook-routers.js +2 -2
- package/handlers/use-cases/check-integrations-health-use-case.js +22 -10
- package/handlers/workers/db-migration.js +352 -0
- package/index.js +12 -0
- package/integrations/integration-router.js +60 -70
- package/integrations/repositories/integration-repository-interface.js +12 -0
- package/integrations/repositories/integration-repository-mongo.js +32 -0
- package/integrations/repositories/integration-repository-postgres.js +33 -0
- package/integrations/repositories/process-repository-postgres.js +2 -2
- package/integrations/tests/doubles/test-integration-repository.js +2 -2
- package/logs/logger.js +0 -4
- package/modules/entity.js +0 -1
- package/modules/repositories/module-repository-mongo.js +3 -12
- package/modules/repositories/module-repository-postgres.js +0 -11
- package/modules/repositories/module-repository.js +1 -12
- package/modules/use-cases/get-entity-options-by-id.js +1 -1
- package/modules/use-cases/get-module.js +1 -2
- package/modules/use-cases/refresh-entity-options.js +1 -1
- package/modules/use-cases/test-module-auth.js +1 -1
- package/package.json +82 -66
- package/prisma-mongodb/schema.prisma +21 -21
- package/prisma-postgresql/schema.prisma +15 -15
- package/queues/queuer-util.js +24 -21
- package/types/core/index.d.ts +2 -2
- package/types/module-plugin/index.d.ts +0 -2
- package/user/use-cases/authenticate-user.js +127 -0
- package/user/use-cases/authenticate-with-shared-secret.js +48 -0
- package/user/use-cases/get-user-from-adopter-jwt.js +149 -0
- package/user/use-cases/get-user-from-x-frigg-headers.js +106 -0
- package/user/user.js +16 -0
- package/websocket/repositories/websocket-connection-repository-mongo.js +11 -10
- package/websocket/repositories/websocket-connection-repository-postgres.js +11 -10
- package/websocket/repositories/websocket-connection-repository.js +11 -10
- package/application/commands/integration-commands.test.js +0 -123
- package/database/encryption/encryption-integration.test.js +0 -553
- package/database/encryption/encryption-schema-registry.test.js +0 -392
- package/database/encryption/field-encryption-service.test.js +0 -525
- package/database/encryption/mongo-decryption-fix-verification.test.js +0 -348
- package/database/encryption/postgres-decryption-fix-verification.test.js +0 -371
- package/database/encryption/postgres-relation-decryption.test.js +0 -245
- package/database/encryption/prisma-encryption-extension.test.js +0 -439
- package/errors/base-error.test.js +0 -32
- package/errors/fetch-error.test.js +0 -79
- package/errors/halt-error.test.js +0 -11
- package/errors/validation-errors.test.js +0 -120
- package/handlers/auth-flow.integration.test.js +0 -147
- package/handlers/integration-event-dispatcher.test.js +0 -209
- package/handlers/routers/health.test.js +0 -210
- package/handlers/routers/integration-webhook-routers.test.js +0 -126
- package/handlers/webhook-flow.integration.test.js +0 -356
- package/handlers/workers/integration-defined-workers.test.js +0 -184
- package/integrations/tests/use-cases/create-integration.test.js +0 -131
- package/integrations/tests/use-cases/delete-integration-for-user.test.js +0 -150
- package/integrations/tests/use-cases/find-integration-context-by-external-entity-id.test.js +0 -92
- package/integrations/tests/use-cases/get-integration-for-user.test.js +0 -150
- package/integrations/tests/use-cases/get-integration-instance.test.js +0 -176
- package/integrations/tests/use-cases/get-integrations-for-user.test.js +0 -176
- package/integrations/tests/use-cases/get-possible-integrations.test.js +0 -188
- package/integrations/tests/use-cases/update-integration-messages.test.js +0 -142
- package/integrations/tests/use-cases/update-integration-status.test.js +0 -103
- package/integrations/tests/use-cases/update-integration.test.js +0 -141
- package/integrations/use-cases/create-process.test.js +0 -178
- package/integrations/use-cases/get-process.test.js +0 -190
- package/integrations/use-cases/load-integration-context-full.test.js +0 -329
- package/integrations/use-cases/load-integration-context.test.js +0 -114
- package/integrations/use-cases/update-process-metrics.test.js +0 -308
- package/integrations/use-cases/update-process-state.test.js +0 -256
- package/lambda/TimeoutCatcher.test.js +0 -68
- package/logs/logger.test.js +0 -76
- package/modules/module-hydration.test.js +0 -205
- package/modules/requester/requester.test.js +0 -28
- package/user/tests/use-cases/create-individual-user.test.js +0 -24
- package/user/tests/use-cases/create-organization-user.test.js +0 -28
- package/user/tests/use-cases/create-token-for-user-id.test.js +0 -19
- package/user/tests/use-cases/get-user-from-bearer-token.test.js +0 -64
- package/user/tests/use-cases/login-user.test.js +0 -220
- package/user/tests/user-password-encryption-isolation.test.js +0 -237
- 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
|
-
|
|
203
|
-
|
|
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
|
-
|
|
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
|
|
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
|
@@ -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
|
-
*
|
|
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
|
-
* -
|
|
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.
|
|
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.
|
|
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.
|
|
35
|
+
const entityType = entity.moduleName;
|
|
36
36
|
const moduleDefinition = this.moduleDefinitions.find((def) => {
|
|
37
37
|
const modelName =
|
|
38
38
|
Module.getEntityModelFromDefinition(def).modelName;
|
package/package.json
CHANGED
|
@@ -1,68 +1,84 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
"
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
"
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
"
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
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
|
}
|