@friggframework/core 2.0.0--canary.461.bb7fcba.0 → 2.0.0--canary.461.5767fa4.0

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 (118) hide show
  1. package/generated/prisma-mongodb/client.d.ts +1 -0
  2. package/generated/prisma-mongodb/client.js +4 -0
  3. package/generated/prisma-mongodb/default.d.ts +1 -0
  4. package/generated/prisma-mongodb/default.js +4 -0
  5. package/generated/prisma-mongodb/edge.d.ts +1 -0
  6. package/generated/prisma-mongodb/edge.js +336 -0
  7. package/generated/prisma-mongodb/index-browser.js +318 -0
  8. package/generated/prisma-mongodb/index.d.ts +22993 -0
  9. package/generated/prisma-mongodb/index.js +361 -0
  10. package/generated/prisma-mongodb/package.json +183 -0
  11. package/generated/prisma-mongodb/query-engine-debian-openssl-3.0.x +0 -0
  12. package/generated/prisma-mongodb/query-engine-rhel-openssl-3.0.x +0 -0
  13. package/generated/prisma-mongodb/runtime/binary.d.ts +1 -0
  14. package/generated/prisma-mongodb/runtime/binary.js +289 -0
  15. package/generated/prisma-mongodb/runtime/edge-esm.js +34 -0
  16. package/generated/prisma-mongodb/runtime/edge.js +34 -0
  17. package/generated/prisma-mongodb/runtime/index-browser.d.ts +370 -0
  18. package/generated/prisma-mongodb/runtime/index-browser.js +16 -0
  19. package/generated/prisma-mongodb/runtime/library.d.ts +3977 -0
  20. package/generated/prisma-mongodb/runtime/react-native.js +83 -0
  21. package/generated/prisma-mongodb/runtime/wasm-compiler-edge.js +84 -0
  22. package/generated/prisma-mongodb/runtime/wasm-engine-edge.js +36 -0
  23. package/generated/prisma-mongodb/schema.prisma +364 -0
  24. package/generated/prisma-mongodb/wasm-edge-light-loader.mjs +4 -0
  25. package/generated/prisma-mongodb/wasm-worker-loader.mjs +4 -0
  26. package/generated/prisma-mongodb/wasm.d.ts +1 -0
  27. package/generated/prisma-mongodb/wasm.js +343 -0
  28. package/generated/prisma-postgresql/client.d.ts +1 -0
  29. package/generated/prisma-postgresql/client.js +4 -0
  30. package/generated/prisma-postgresql/default.d.ts +1 -0
  31. package/generated/prisma-postgresql/default.js +4 -0
  32. package/generated/prisma-postgresql/edge.d.ts +1 -0
  33. package/generated/prisma-postgresql/edge.js +358 -0
  34. package/generated/prisma-postgresql/index-browser.js +340 -0
  35. package/generated/prisma-postgresql/index.d.ts +25171 -0
  36. package/generated/prisma-postgresql/index.js +383 -0
  37. package/generated/prisma-postgresql/package.json +183 -0
  38. package/generated/prisma-postgresql/query-engine-debian-openssl-3.0.x +0 -0
  39. package/generated/prisma-postgresql/query-engine-rhel-openssl-3.0.x +0 -0
  40. package/generated/prisma-postgresql/query_engine_bg.js +2 -0
  41. package/generated/prisma-postgresql/query_engine_bg.wasm +0 -0
  42. package/generated/prisma-postgresql/runtime/binary.d.ts +1 -0
  43. package/generated/prisma-postgresql/runtime/binary.js +289 -0
  44. package/generated/prisma-postgresql/runtime/edge-esm.js +34 -0
  45. package/generated/prisma-postgresql/runtime/edge.js +34 -0
  46. package/generated/prisma-postgresql/runtime/index-browser.d.ts +370 -0
  47. package/generated/prisma-postgresql/runtime/index-browser.js +16 -0
  48. package/generated/prisma-postgresql/runtime/library.d.ts +3977 -0
  49. package/generated/prisma-postgresql/runtime/react-native.js +83 -0
  50. package/generated/prisma-postgresql/runtime/wasm-compiler-edge.js +84 -0
  51. package/generated/prisma-postgresql/runtime/wasm-engine-edge.js +36 -0
  52. package/generated/prisma-postgresql/schema.prisma +347 -0
  53. package/generated/prisma-postgresql/wasm-edge-light-loader.mjs +4 -0
  54. package/generated/prisma-postgresql/wasm-worker-loader.mjs +4 -0
  55. package/generated/prisma-postgresql/wasm.d.ts +1 -0
  56. package/generated/prisma-postgresql/wasm.js +365 -0
  57. package/package.json +5 -5
  58. package/application/commands/integration-commands.test.js +0 -123
  59. package/core/Worker.test.js +0 -159
  60. package/database/encryption/encryption-integration.test.js +0 -553
  61. package/database/encryption/encryption-schema-registry.test.js +0 -392
  62. package/database/encryption/field-encryption-service.test.js +0 -525
  63. package/database/encryption/mongo-decryption-fix-verification.test.js +0 -348
  64. package/database/encryption/postgres-decryption-fix-verification.test.js +0 -371
  65. package/database/encryption/postgres-relation-decryption.test.js +0 -245
  66. package/database/encryption/prisma-encryption-extension.test.js +0 -439
  67. package/database/repositories/migration-status-repository-s3.test.js +0 -158
  68. package/database/use-cases/check-encryption-health-use-case.test.js +0 -192
  69. package/database/use-cases/get-migration-status-use-case.test.js +0 -171
  70. package/database/use-cases/run-database-migration-use-case.test.js +0 -310
  71. package/database/use-cases/trigger-database-migration-use-case.test.js +0 -250
  72. package/database/utils/prisma-runner.test.js +0 -486
  73. package/encrypt/Cryptor.test.js +0 -144
  74. package/errors/base-error.test.js +0 -32
  75. package/errors/fetch-error.test.js +0 -79
  76. package/errors/halt-error.test.js +0 -11
  77. package/errors/validation-errors.test.js +0 -120
  78. package/handlers/auth-flow.integration.test.js +0 -147
  79. package/handlers/integration-event-dispatcher.test.js +0 -209
  80. package/handlers/routers/db-migration.test.js +0 -51
  81. package/handlers/routers/health.test.js +0 -210
  82. package/handlers/routers/integration-webhook-routers.test.js +0 -126
  83. package/handlers/use-cases/check-integrations-health-use-case.test.js +0 -125
  84. package/handlers/webhook-flow.integration.test.js +0 -356
  85. package/handlers/workers/db-migration.test.js +0 -50
  86. package/handlers/workers/integration-defined-workers.test.js +0 -184
  87. package/integrations/tests/integration-router-multi-auth.test.js +0 -369
  88. package/integrations/tests/use-cases/create-integration.test.js +0 -131
  89. package/integrations/tests/use-cases/delete-integration-for-user.test.js +0 -150
  90. package/integrations/tests/use-cases/find-integration-context-by-external-entity-id.test.js +0 -92
  91. package/integrations/tests/use-cases/get-integration-for-user.test.js +0 -150
  92. package/integrations/tests/use-cases/get-integration-instance.test.js +0 -176
  93. package/integrations/tests/use-cases/get-integrations-for-user.test.js +0 -176
  94. package/integrations/tests/use-cases/get-possible-integrations.test.js +0 -188
  95. package/integrations/tests/use-cases/update-integration-messages.test.js +0 -142
  96. package/integrations/tests/use-cases/update-integration-status.test.js +0 -103
  97. package/integrations/tests/use-cases/update-integration.test.js +0 -141
  98. package/integrations/use-cases/create-process.test.js +0 -178
  99. package/integrations/use-cases/get-process.test.js +0 -190
  100. package/integrations/use-cases/load-integration-context-full.test.js +0 -329
  101. package/integrations/use-cases/load-integration-context.test.js +0 -114
  102. package/integrations/use-cases/update-process-metrics.test.js +0 -308
  103. package/integrations/use-cases/update-process-state.test.js +0 -256
  104. package/lambda/TimeoutCatcher.test.js +0 -68
  105. package/logs/logger.test.js +0 -76
  106. package/modules/module-hydration.test.js +0 -205
  107. package/modules/requester/requester.test.js +0 -28
  108. package/queues/queuer-util.test.js +0 -132
  109. package/user/tests/use-cases/create-individual-user.test.js +0 -24
  110. package/user/tests/use-cases/create-organization-user.test.js +0 -28
  111. package/user/tests/use-cases/create-token-for-user-id.test.js +0 -19
  112. package/user/tests/use-cases/get-user-from-adopter-jwt.test.js +0 -113
  113. package/user/tests/use-cases/get-user-from-bearer-token.test.js +0 -64
  114. package/user/tests/use-cases/get-user-from-x-frigg-headers.test.js +0 -346
  115. package/user/tests/use-cases/login-user.test.js +0 -220
  116. package/user/tests/user-password-encryption-isolation.test.js +0 -237
  117. package/user/tests/user-password-hashing.test.js +0 -235
  118. package/websocket/repositories/websocket-connection-repository.test.js +0 -227
@@ -0,0 +1,347 @@
1
+ // Frigg Framework - Prisma Schema (PostgreSQL)
2
+ // PostgreSQL database schema for enterprise integration platform
3
+ // Converted from MongoDB schema for relational database support
4
+
5
+ generator client {
6
+ provider = "prisma-client-js"
7
+ output = "../generated/prisma-postgresql"
8
+ binaryTargets = ["native", "rhel-openssl-3.0.x"] // native for local dev, rhel for Lambda deployment
9
+ engineType = "binary" // Use binary engines (smaller size)
10
+ }
11
+
12
+ datasource db {
13
+ provider = "postgresql"
14
+ url = env("DATABASE_URL")
15
+ }
16
+
17
+ // ============================================================================
18
+ // USER MODELS
19
+ // ============================================================================
20
+
21
+ /// User model with discriminator pattern support
22
+ /// Replaces Mongoose discriminators (IndividualUser, OrganizationUser)
23
+ model User {
24
+ id Int @id @default(autoincrement())
25
+ type UserType
26
+
27
+ // Timestamps
28
+ createdAt DateTime @default(now())
29
+ updatedAt DateTime @updatedAt
30
+
31
+ // IndividualUser fields (nullable for organizations)
32
+ email String?
33
+ username String?
34
+ hashword String? // Bcrypt hashed password (handled in application layer)
35
+ appUserId String?
36
+ organizationId Int?
37
+
38
+ // Self-referential relation for organization membership
39
+ organization User? @relation("OrgMembers", fields: [organizationId], references: [id], onDelete: NoAction, onUpdate: NoAction)
40
+ members User[] @relation("OrgMembers")
41
+
42
+ // OrganizationUser fields (nullable for individuals)
43
+ appOrgId String?
44
+ name String?
45
+
46
+ // Relations
47
+ tokens Token[]
48
+ credentials Credential[]
49
+ entities Entity[]
50
+ integrations Integration[]
51
+ processes Process[]
52
+
53
+ @@unique([email])
54
+ @@unique([username])
55
+ @@unique([appOrgId])
56
+ @@index([type])
57
+ @@index([appUserId])
58
+ }
59
+
60
+ enum UserType {
61
+ INDIVIDUAL
62
+ ORGANIZATION
63
+ }
64
+
65
+ // ============================================================================
66
+ // AUTHENTICATION MODELS
67
+ // ============================================================================
68
+
69
+ /// Authentication tokens with expiration
70
+ /// Bcrypt hashed tokens stored (handled in application layer)
71
+ model Token {
72
+ id Int @id @default(autoincrement())
73
+ token String // Bcrypt hashed
74
+ created DateTime @default(now())
75
+ expires DateTime?
76
+ userId Int
77
+ user User @relation(fields: [userId], references: [id], onDelete: Cascade)
78
+
79
+ @@index([userId])
80
+ @@index([expires])
81
+ }
82
+
83
+ // ============================================================================
84
+ // CREDENTIAL & ENTITY MODELS
85
+ // ============================================================================
86
+
87
+ /// OAuth credentials and API tokens
88
+ /// All sensitive data encrypted with KMS at rest
89
+ model Credential {
90
+ id Int @id @default(autoincrement())
91
+ userId Int?
92
+ user User? @relation(fields: [userId], references: [id], onDelete: Cascade)
93
+ subType String?
94
+ authIsValid Boolean?
95
+ externalId String?
96
+
97
+ // Dynamic OAuth fields stored as JSON (encrypted via Prisma middleware)
98
+ // Contains: access_token, refresh_token, domain, expires_in, token_type, etc.
99
+ data Json @default("{}")
100
+
101
+ createdAt DateTime @default(now())
102
+ updatedAt DateTime @updatedAt
103
+
104
+ // Relations
105
+ entities Entity[]
106
+
107
+ @@index([userId])
108
+ @@index([externalId])
109
+ }
110
+
111
+ /// External service entities (API connections)
112
+ model Entity {
113
+ id Int @id @default(autoincrement())
114
+ credentialId Int?
115
+ credential Credential? @relation(fields: [credentialId], references: [id], onDelete: SetNull)
116
+ subType String?
117
+ userId Int?
118
+ user User? @relation(fields: [userId], references: [id], onDelete: Cascade)
119
+ name String?
120
+ moduleName String?
121
+ externalId String?
122
+
123
+ createdAt DateTime @default(now())
124
+ updatedAt DateTime @updatedAt
125
+
126
+ // Relations - many-to-many with implicit join tables
127
+ integrations Integration[]
128
+ syncs Sync[]
129
+
130
+ dataIdentifiers DataIdentifier[]
131
+ associationObjects AssociationObject[]
132
+
133
+ @@index([userId])
134
+ @@index([externalId])
135
+ @@index([moduleName])
136
+ @@index([credentialId])
137
+ }
138
+
139
+ // ============================================================================
140
+ // INTEGRATION MODELS
141
+ // ============================================================================
142
+
143
+ /// Main integration configuration and state
144
+ model Integration {
145
+ id Int @id @default(autoincrement())
146
+ userId Int?
147
+ user User? @relation(fields: [userId], references: [id], onDelete: Cascade)
148
+ status IntegrationStatus @default(ENABLED)
149
+
150
+ // Configuration and version
151
+ config Json? // Integration configuration object
152
+ version String?
153
+
154
+ // Entity references (many-to-many via implicit join table)
155
+ entities Entity[]
156
+
157
+ // Message arrays (stored as JSON)
158
+ errors Json @default("[]")
159
+ warnings Json @default("[]")
160
+ info Json @default("[]")
161
+ logs Json @default("[]")
162
+
163
+ createdAt DateTime @default(now())
164
+ updatedAt DateTime @updatedAt
165
+
166
+ // Relations
167
+ associations Association[]
168
+ syncs Sync[]
169
+ mappings IntegrationMapping[]
170
+ processes Process[]
171
+
172
+ @@index([userId])
173
+ @@index([status])
174
+ }
175
+
176
+ enum IntegrationStatus {
177
+ ENABLED
178
+ NEEDS_CONFIG
179
+ PROCESSING
180
+ DISABLED
181
+ ERROR
182
+ }
183
+
184
+ /// Integration-specific data mappings
185
+ /// All mapping data encrypted with KMS
186
+ model IntegrationMapping {
187
+ id Int @id @default(autoincrement())
188
+ integrationId Int
189
+ integration Integration @relation(fields: [integrationId], references: [id], onDelete: Cascade)
190
+ sourceId String?
191
+
192
+ // Encrypted mapping data (handled via Prisma middleware)
193
+ mapping Json?
194
+
195
+ createdAt DateTime @default(now())
196
+ updatedAt DateTime @updatedAt
197
+
198
+ @@unique([integrationId, sourceId])
199
+ @@index([integrationId])
200
+ @@index([sourceId])
201
+ }
202
+
203
+ // ============================================================================
204
+ // SYNC MODELS
205
+ // ============================================================================
206
+
207
+ /// Bidirectional data synchronization tracking
208
+ model Sync {
209
+ id Int @id @default(autoincrement())
210
+ integrationId Int?
211
+ integration Integration? @relation(fields: [integrationId], references: [id], onDelete: Cascade)
212
+
213
+ // Entity references (many-to-many via implicit join table)
214
+ entities Entity[]
215
+
216
+ hash String
217
+ name String
218
+
219
+ // Data identifiers (extracted to separate model)
220
+ dataIdentifiers DataIdentifier[]
221
+
222
+ @@index([integrationId])
223
+ @@index([hash])
224
+ @@index([name])
225
+ }
226
+
227
+ /// Data identifier for sync operations
228
+ /// Replaces nested array structure in Mongoose
229
+ model DataIdentifier {
230
+ id Int @id @default(autoincrement())
231
+ syncId Int?
232
+ sync Sync? @relation(fields: [syncId], references: [id], onDelete: Cascade)
233
+ entityId Int
234
+ entity Entity @relation(fields: [entityId], references: [id], onDelete: Cascade)
235
+
236
+ // Identifier data (can be any structure)
237
+ idData Json
238
+
239
+ hash String
240
+
241
+ @@index([syncId])
242
+ @@index([entityId])
243
+ @@index([hash])
244
+ }
245
+
246
+ // ============================================================================
247
+ // ASSOCIATION MODELS
248
+ // ============================================================================
249
+
250
+ /// Entity associations with cardinality tracking
251
+ model Association {
252
+ id Int @id @default(autoincrement())
253
+ integrationId Int
254
+ integration Integration @relation(fields: [integrationId], references: [id], onDelete: Cascade)
255
+ name String
256
+ type AssociationType
257
+ primaryObject String
258
+
259
+ // Associated objects (extracted to separate model)
260
+ objects AssociationObject[]
261
+
262
+ @@index([integrationId])
263
+ @@index([name])
264
+ }
265
+
266
+ /// Association object entry
267
+ /// Replaces nested array structure in Mongoose
268
+ model AssociationObject {
269
+ id Int @id @default(autoincrement())
270
+ associationId Int
271
+ association Association @relation(fields: [associationId], references: [id], onDelete: Cascade)
272
+ entityId Int
273
+ entity Entity @relation(fields: [entityId], references: [id], onDelete: Cascade)
274
+ objectType String
275
+ objId String
276
+ metadata Json? // Optional metadata
277
+
278
+ @@index([associationId])
279
+ @@index([entityId])
280
+ }
281
+
282
+ enum AssociationType {
283
+ ONE_TO_MANY
284
+ ONE_TO_ONE
285
+ MANY_TO_ONE
286
+ }
287
+
288
+ // ============================================================================
289
+ // PROCESS MODELS
290
+ // ============================================================================
291
+
292
+ /// Generic Process Model - tracks any long-running operation
293
+ /// Used for: CRM syncs, data migrations, bulk operations, etc.
294
+ model Process {
295
+ id Int @id @default(autoincrement())
296
+
297
+ // Core references
298
+ userId Int
299
+ user User @relation(fields: [userId], references: [id], onDelete: Cascade)
300
+ integrationId Int
301
+ integration Integration @relation(fields: [integrationId], references: [id], onDelete: Cascade)
302
+
303
+ // Process identification
304
+ name String // e.g., "zoho-crm-contact-sync", "pipedrive-lead-sync"
305
+ type String // e.g., "CRM_SYNC", "DATA_MIGRATION", "BULK_OPERATION"
306
+
307
+ // State machine
308
+ state String // Current state (integration-defined states)
309
+
310
+ // Flexible storage
311
+ context Json @default("{}") // Process-specific data (pagination, metadata, etc.)
312
+ results Json @default("{}") // Process results and metrics
313
+
314
+ // Hierarchy support - self-referential relation
315
+ parentProcessId Int?
316
+ parentProcess Process? @relation("ProcessHierarchy", fields: [parentProcessId], references: [id], onDelete: SetNull)
317
+ childProcesses Process[] @relation("ProcessHierarchy")
318
+
319
+ // Timestamps
320
+ createdAt DateTime @default(now())
321
+ updatedAt DateTime @updatedAt
322
+
323
+ @@index([userId])
324
+ @@index([integrationId])
325
+ @@index([type])
326
+ @@index([state])
327
+ @@index([name])
328
+ @@index([parentProcessId])
329
+ }
330
+
331
+ // ============================================================================
332
+ // UTILITY MODELS
333
+ // ============================================================================
334
+
335
+ /// Generic state storage
336
+ model State {
337
+ id Int @id @default(autoincrement())
338
+ state Json?
339
+ }
340
+
341
+ /// AWS API Gateway WebSocket connection tracking
342
+ model WebsocketConnection {
343
+ id Int @id @default(autoincrement())
344
+ connectionId String?
345
+
346
+ @@index([connectionId])
347
+ }
@@ -0,0 +1,4 @@
1
+
2
+ /* !!! This is code generated by Prisma. Do not edit directly. !!!
3
+ /* eslint-disable */
4
+ export default import('./query_engine_bg.wasm?module')
@@ -0,0 +1,4 @@
1
+
2
+ /* !!! This is code generated by Prisma. Do not edit directly. !!!
3
+ /* eslint-disable */
4
+ export default import('./query_engine_bg.wasm')
@@ -0,0 +1 @@
1
+ export * from "./default"