@friggframework/core 2.0.0-next.44 → 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/WEBHOOKS.md +653 -0
- package/handlers/backend-utils.js +118 -3
- 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 +67 -0
- package/handlers/use-cases/check-integrations-health-use-case.js +22 -10
- package/handlers/workers/db-migration.js +352 -0
- package/index.js +28 -0
- package/integrations/WEBHOOK-QUICKSTART.md +151 -0
- package/integrations/integration-base.js +74 -3
- 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 +43 -20
- package/integrations/tests/doubles/dummy-integration-class.js +1 -8
- 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 +28 -15
- package/types/core/index.d.ts +2 -2
- package/types/module-plugin/index.d.ts +0 -2
- package/user/repositories/user-repository-mongo.js +53 -12
- package/user/repositories/user-repository-postgres.js +53 -14
- 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/use-cases/login-user.js +1 -1
- package/user/user.js +18 -2
- 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 -141
- package/handlers/routers/health.test.js +0 -210
- 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 -140
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
const { prisma } = require('../../database/prisma');
|
|
2
|
-
const {
|
|
2
|
+
const {
|
|
3
|
+
ProcessRepositoryInterface,
|
|
4
|
+
} = require('./process-repository-interface');
|
|
3
5
|
|
|
4
6
|
/**
|
|
5
7
|
* PostgreSQL Process Repository Adapter
|
|
@@ -22,6 +24,22 @@ class ProcessRepositoryPostgres extends ProcessRepositoryInterface {
|
|
|
22
24
|
this.prisma = prisma;
|
|
23
25
|
}
|
|
24
26
|
|
|
27
|
+
/**
|
|
28
|
+
* Convert string ID to integer for PostgreSQL queries
|
|
29
|
+
* @private
|
|
30
|
+
* @param {string|number|null|undefined} id - ID to convert
|
|
31
|
+
* @returns {number|null|undefined} Integer ID or null/undefined
|
|
32
|
+
* @throws {Error} If ID cannot be converted to integer
|
|
33
|
+
*/
|
|
34
|
+
_convertId(id) {
|
|
35
|
+
if (id === null || id === undefined) return id;
|
|
36
|
+
const parsed = parseInt(id, 10);
|
|
37
|
+
if (isNaN(parsed)) {
|
|
38
|
+
throw new Error(`Invalid ID: ${id} cannot be converted to integer`);
|
|
39
|
+
}
|
|
40
|
+
return parsed;
|
|
41
|
+
}
|
|
42
|
+
|
|
25
43
|
/**
|
|
26
44
|
* Create a new process record
|
|
27
45
|
* @param {Object} processData - Process data to create
|
|
@@ -30,15 +48,14 @@ class ProcessRepositoryPostgres extends ProcessRepositoryInterface {
|
|
|
30
48
|
async create(processData) {
|
|
31
49
|
const process = await this.prisma.process.create({
|
|
32
50
|
data: {
|
|
33
|
-
userId: processData.userId,
|
|
34
|
-
integrationId: processData.integrationId,
|
|
51
|
+
userId: this._convertId(processData.userId),
|
|
52
|
+
integrationId: this._convertId(processData.integrationId),
|
|
35
53
|
name: processData.name,
|
|
36
54
|
type: processData.type,
|
|
37
55
|
state: processData.state || 'INITIALIZING',
|
|
38
56
|
context: processData.context || {},
|
|
39
57
|
results: processData.results || {},
|
|
40
|
-
|
|
41
|
-
parentProcessId: processData.parentProcessId || null,
|
|
58
|
+
parentProcessId: this._convertId(processData.parentProcessId),
|
|
42
59
|
},
|
|
43
60
|
});
|
|
44
61
|
|
|
@@ -52,7 +69,7 @@ class ProcessRepositoryPostgres extends ProcessRepositoryInterface {
|
|
|
52
69
|
*/
|
|
53
70
|
async findById(processId) {
|
|
54
71
|
const process = await this.prisma.process.findUnique({
|
|
55
|
-
where: { id: processId },
|
|
72
|
+
where: { id: this._convertId(processId) },
|
|
56
73
|
});
|
|
57
74
|
|
|
58
75
|
return process ? this._toPlainObject(process) : null;
|
|
@@ -77,15 +94,14 @@ class ProcessRepositoryPostgres extends ProcessRepositoryInterface {
|
|
|
77
94
|
if (updates.results !== undefined) {
|
|
78
95
|
updateData.results = updates.results;
|
|
79
96
|
}
|
|
80
|
-
if (updates.childProcesses !== undefined) {
|
|
81
|
-
updateData.childProcesses = updates.childProcesses;
|
|
82
|
-
}
|
|
83
97
|
if (updates.parentProcessId !== undefined) {
|
|
84
|
-
updateData.parentProcessId =
|
|
98
|
+
updateData.parentProcessId = this._convertId(
|
|
99
|
+
updates.parentProcessId
|
|
100
|
+
);
|
|
85
101
|
}
|
|
86
102
|
|
|
87
103
|
const process = await this.prisma.process.update({
|
|
88
|
-
where: { id: processId },
|
|
104
|
+
where: { id: this._convertId(processId) },
|
|
89
105
|
data: updateData,
|
|
90
106
|
});
|
|
91
107
|
|
|
@@ -101,7 +117,7 @@ class ProcessRepositoryPostgres extends ProcessRepositoryInterface {
|
|
|
101
117
|
async findByIntegrationAndType(integrationId, type) {
|
|
102
118
|
const processes = await this.prisma.process.findMany({
|
|
103
119
|
where: {
|
|
104
|
-
integrationId,
|
|
120
|
+
integrationId: this._convertId(integrationId),
|
|
105
121
|
type,
|
|
106
122
|
},
|
|
107
123
|
orderBy: {
|
|
@@ -118,10 +134,13 @@ class ProcessRepositoryPostgres extends ProcessRepositoryInterface {
|
|
|
118
134
|
* @param {string[]} [excludeStates=['COMPLETED', 'ERROR']] - States to exclude
|
|
119
135
|
* @returns {Promise<Array>} Array of active process records
|
|
120
136
|
*/
|
|
121
|
-
async findActiveProcesses(
|
|
137
|
+
async findActiveProcesses(
|
|
138
|
+
integrationId,
|
|
139
|
+
excludeStates = ['COMPLETED', 'ERROR']
|
|
140
|
+
) {
|
|
122
141
|
const processes = await this.prisma.process.findMany({
|
|
123
142
|
where: {
|
|
124
|
-
integrationId,
|
|
143
|
+
integrationId: this._convertId(integrationId),
|
|
125
144
|
state: {
|
|
126
145
|
notIn: excludeStates,
|
|
127
146
|
},
|
|
@@ -157,7 +176,7 @@ class ProcessRepositoryPostgres extends ProcessRepositoryInterface {
|
|
|
157
176
|
*/
|
|
158
177
|
async deleteById(processId) {
|
|
159
178
|
await this.prisma.process.delete({
|
|
160
|
-
where: { id: processId },
|
|
179
|
+
where: { id: this._convertId(processId) },
|
|
161
180
|
});
|
|
162
181
|
}
|
|
163
182
|
|
|
@@ -179,11 +198,16 @@ class ProcessRepositoryPostgres extends ProcessRepositoryInterface {
|
|
|
179
198
|
context: process.context,
|
|
180
199
|
results: process.results,
|
|
181
200
|
childProcesses: Array.isArray(process.childProcesses)
|
|
182
|
-
?
|
|
183
|
-
|
|
184
|
-
|
|
201
|
+
? process.childProcesses.length > 0 &&
|
|
202
|
+
typeof process.childProcesses[0] === 'object' &&
|
|
203
|
+
process.childProcesses[0] !== null
|
|
204
|
+
? process.childProcesses.map((child) => String(child.id))
|
|
205
|
+
: process.childProcesses
|
|
185
206
|
: [],
|
|
186
|
-
parentProcessId:
|
|
207
|
+
parentProcessId:
|
|
208
|
+
process.parentProcessId !== null
|
|
209
|
+
? String(process.parentProcessId)
|
|
210
|
+
: null,
|
|
187
211
|
createdAt: process.createdAt,
|
|
188
212
|
updatedAt: process.updatedAt,
|
|
189
213
|
};
|
|
@@ -191,4 +215,3 @@ class ProcessRepositoryPostgres extends ProcessRepositoryInterface {
|
|
|
191
215
|
}
|
|
192
216
|
|
|
193
217
|
module.exports = { ProcessRepositoryPostgres };
|
|
194
|
-
|
|
@@ -47,23 +47,16 @@ class DummyIntegration extends IntegrationBase {
|
|
|
47
47
|
this.updateIntegrationMessages = {
|
|
48
48
|
execute: jest.fn().mockResolvedValue({})
|
|
49
49
|
};
|
|
50
|
-
|
|
51
|
-
this.registerEventHandlers();
|
|
52
50
|
}
|
|
53
51
|
|
|
54
52
|
async loadDynamicUserActions() {
|
|
55
53
|
return {};
|
|
56
54
|
}
|
|
57
55
|
|
|
58
|
-
async registerEventHandlers() {
|
|
59
|
-
super.registerEventHandlers();
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
56
|
async send(event, data) {
|
|
64
57
|
this.sendSpy(event, data);
|
|
65
58
|
this.eventCallHistory.push({ event, data, timestamp: Date.now() });
|
|
66
|
-
return
|
|
59
|
+
return { event, data };
|
|
67
60
|
}
|
|
68
61
|
|
|
69
62
|
async initialize() {
|
|
@@ -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
|
}
|