eggi-ai-db-schema-2 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +750 -0
- package/README.md +660 -0
- package/dist/config/database.d.ts +28 -0
- package/dist/config/database.d.ts.map +1 -0
- package/dist/config/database.js +72 -0
- package/dist/config/database.js.map +1 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +199 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/database-service.d.ts +714 -0
- package/dist/lib/database-service.d.ts.map +1 -0
- package/dist/lib/database-service.js +1394 -0
- package/dist/lib/database-service.js.map +1 -0
- package/dist/lib/db-types.d.ts +167 -0
- package/dist/lib/db-types.d.ts.map +1 -0
- package/dist/lib/db-types.js +28 -0
- package/dist/lib/db-types.js.map +1 -0
- package/dist/lib/db.d.ts +58 -0
- package/dist/lib/db.d.ts.map +1 -0
- package/dist/lib/db.js +292 -0
- package/dist/lib/db.js.map +1 -0
- package/dist/lib/index.d.ts +11 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +26 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/pg-client.d.ts +50 -0
- package/dist/lib/pg-client.d.ts.map +1 -0
- package/dist/lib/pg-client.js +106 -0
- package/dist/lib/pg-client.js.map +1 -0
- package/dist/lib/schema.d.ts +298 -0
- package/dist/lib/schema.d.ts.map +1 -0
- package/dist/lib/schema.js +12 -0
- package/dist/lib/schema.js.map +1 -0
- package/dist/migration-manager.d.ts +49 -0
- package/dist/migration-manager.d.ts.map +1 -0
- package/dist/migration-manager.js +282 -0
- package/dist/migration-manager.js.map +1 -0
- package/dist/queries/minimal-connections.d.ts +31 -0
- package/dist/queries/minimal-connections.d.ts.map +1 -0
- package/dist/queries/minimal-connections.js +143 -0
- package/dist/queries/minimal-connections.js.map +1 -0
- package/dist/schema.ts +340 -0
- package/dist/seed.d.ts +8 -0
- package/dist/seed.d.ts.map +1 -0
- package/dist/seed.js +40 -0
- package/dist/seed.js.map +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +23 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/types.d.ts +77 -0
- package/dist/types/types.d.ts.map +1 -0
- package/dist/types/types.js +3 -0
- package/dist/types/types.js.map +1 -0
- package/dist/utils/authenticated-user-operations.d.ts +110 -0
- package/dist/utils/authenticated-user-operations.d.ts.map +1 -0
- package/dist/utils/authenticated-user-operations.js +292 -0
- package/dist/utils/authenticated-user-operations.js.map +1 -0
- package/dist/utils/authentication-operations.d.ts +48 -0
- package/dist/utils/authentication-operations.d.ts.map +1 -0
- package/dist/utils/authentication-operations.js +172 -0
- package/dist/utils/authentication-operations.js.map +1 -0
- package/dist/utils/company-mapping-job-operations.d.ts +103 -0
- package/dist/utils/company-mapping-job-operations.d.ts.map +1 -0
- package/dist/utils/company-mapping-job-operations.js +413 -0
- package/dist/utils/company-mapping-job-operations.js.map +1 -0
- package/dist/utils/company-sheet-upload-operations.d.ts +53 -0
- package/dist/utils/company-sheet-upload-operations.d.ts.map +1 -0
- package/dist/utils/company-sheet-upload-operations.js +135 -0
- package/dist/utils/company-sheet-upload-operations.js.map +1 -0
- package/dist/utils/contact-operations.d.ts +70 -0
- package/dist/utils/contact-operations.d.ts.map +1 -0
- package/dist/utils/contact-operations.js +294 -0
- package/dist/utils/contact-operations.js.map +1 -0
- package/dist/utils/forager-linkedin-operations.d.ts +74 -0
- package/dist/utils/forager-linkedin-operations.d.ts.map +1 -0
- package/dist/utils/forager-linkedin-operations.js +778 -0
- package/dist/utils/forager-linkedin-operations.js.map +1 -0
- package/dist/utils/ghost-genius-linkedin-operations.d.ts +23 -0
- package/dist/utils/ghost-genius-linkedin-operations.d.ts.map +1 -0
- package/dist/utils/ghost-genius-linkedin-operations.js +282 -0
- package/dist/utils/ghost-genius-linkedin-operations.js.map +1 -0
- package/dist/utils/index.d.ts +29 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +77 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/introduction-request-operations.d.ts +160 -0
- package/dist/utils/introduction-request-operations.d.ts.map +1 -0
- package/dist/utils/introduction-request-operations.js +492 -0
- package/dist/utils/introduction-request-operations.js.map +1 -0
- package/dist/utils/invitation-operations.d.ts +141 -0
- package/dist/utils/invitation-operations.d.ts.map +1 -0
- package/dist/utils/invitation-operations.js +749 -0
- package/dist/utils/invitation-operations.js.map +1 -0
- package/dist/utils/linkedin-account-operations.d.ts +45 -0
- package/dist/utils/linkedin-account-operations.d.ts.map +1 -0
- package/dist/utils/linkedin-account-operations.js +279 -0
- package/dist/utils/linkedin-account-operations.js.map +1 -0
- package/dist/utils/linkedin-account-relationship-operations.d.ts +77 -0
- package/dist/utils/linkedin-account-relationship-operations.d.ts.map +1 -0
- package/dist/utils/linkedin-account-relationship-operations.js +274 -0
- package/dist/utils/linkedin-account-relationship-operations.js.map +1 -0
- package/dist/utils/linkedin-data-operations.d.ts +102 -0
- package/dist/utils/linkedin-data-operations.d.ts.map +1 -0
- package/dist/utils/linkedin-data-operations.js +613 -0
- package/dist/utils/linkedin-data-operations.js.map +1 -0
- package/dist/utils/linkedin-identifier-utils.d.ts +31 -0
- package/dist/utils/linkedin-identifier-utils.d.ts.map +1 -0
- package/dist/utils/linkedin-identifier-utils.js +63 -0
- package/dist/utils/linkedin-identifier-utils.js.map +1 -0
- package/dist/utils/linkedin-profile-cache.d.ts +131 -0
- package/dist/utils/linkedin-profile-cache.d.ts.map +1 -0
- package/dist/utils/linkedin-profile-cache.js +418 -0
- package/dist/utils/linkedin-profile-cache.js.map +1 -0
- package/dist/utils/llm-inference-job-operations.d.ts +116 -0
- package/dist/utils/llm-inference-job-operations.d.ts.map +1 -0
- package/dist/utils/llm-inference-job-operations.js +267 -0
- package/dist/utils/llm-inference-job-operations.js.map +1 -0
- package/dist/utils/mapping-job-operations.d.ts +272 -0
- package/dist/utils/mapping-job-operations.d.ts.map +1 -0
- package/dist/utils/mapping-job-operations.js +833 -0
- package/dist/utils/mapping-job-operations.js.map +1 -0
- package/dist/utils/mapping-operations.d.ts +80 -0
- package/dist/utils/mapping-operations.d.ts.map +1 -0
- package/dist/utils/mapping-operations.js +318 -0
- package/dist/utils/mapping-operations.js.map +1 -0
- package/dist/utils/on-demand-mapping-operations.d.ts +199 -0
- package/dist/utils/on-demand-mapping-operations.d.ts.map +1 -0
- package/dist/utils/on-demand-mapping-operations.js +728 -0
- package/dist/utils/on-demand-mapping-operations.js.map +1 -0
- package/dist/utils/onboarding-operations.d.ts +53 -0
- package/dist/utils/onboarding-operations.d.ts.map +1 -0
- package/dist/utils/onboarding-operations.js +223 -0
- package/dist/utils/onboarding-operations.js.map +1 -0
- package/dist/utils/organization-assignment-job-operations.d.ts +258 -0
- package/dist/utils/organization-assignment-job-operations.d.ts.map +1 -0
- package/dist/utils/organization-assignment-job-operations.js +881 -0
- package/dist/utils/organization-assignment-job-operations.js.map +1 -0
- package/dist/utils/organization-assignment-operations.d.ts +59 -0
- package/dist/utils/organization-assignment-operations.d.ts.map +1 -0
- package/dist/utils/organization-assignment-operations.js +130 -0
- package/dist/utils/organization-assignment-operations.js.map +1 -0
- package/dist/utils/organization-operations.d.ts +284 -0
- package/dist/utils/organization-operations.d.ts.map +1 -0
- package/dist/utils/organization-operations.js +1030 -0
- package/dist/utils/organization-operations.js.map +1 -0
- package/dist/utils/organization-relationship-operations.d.ts +79 -0
- package/dist/utils/organization-relationship-operations.d.ts.map +1 -0
- package/dist/utils/organization-relationship-operations.js +294 -0
- package/dist/utils/organization-relationship-operations.js.map +1 -0
- package/dist/utils/quota-operations.d.ts +107 -0
- package/dist/utils/quota-operations.d.ts.map +1 -0
- package/dist/utils/quota-operations.js +692 -0
- package/dist/utils/quota-operations.js.map +1 -0
- package/dist/utils/recursive-mapping-job-operations.d.ts +42 -0
- package/dist/utils/recursive-mapping-job-operations.d.ts.map +1 -0
- package/dist/utils/recursive-mapping-job-operations.js +169 -0
- package/dist/utils/recursive-mapping-job-operations.js.map +1 -0
- package/dist/utils/relationship-operations.d.ts +130 -0
- package/dist/utils/relationship-operations.d.ts.map +1 -0
- package/dist/utils/relationship-operations.js +329 -0
- package/dist/utils/relationship-operations.js.map +1 -0
- package/dist/utils/sales-pipeline-operations.d.ts +163 -0
- package/dist/utils/sales-pipeline-operations.d.ts.map +1 -0
- package/dist/utils/sales-pipeline-operations.js +725 -0
- package/dist/utils/sales-pipeline-operations.js.map +1 -0
- package/dist/utils/skills-operations.d.ts +117 -0
- package/dist/utils/skills-operations.d.ts.map +1 -0
- package/dist/utils/skills-operations.js +487 -0
- package/dist/utils/skills-operations.js.map +1 -0
- package/dist/utils/subscription-operations.d.ts +123 -0
- package/dist/utils/subscription-operations.d.ts.map +1 -0
- package/dist/utils/subscription-operations.js +391 -0
- package/dist/utils/subscription-operations.js.map +1 -0
- package/dist/utils/unipile-account-operations.d.ts +96 -0
- package/dist/utils/unipile-account-operations.d.ts.map +1 -0
- package/dist/utils/unipile-account-operations.js +255 -0
- package/dist/utils/unipile-account-operations.js.map +1 -0
- package/dist/utils/user-industry-operations.d.ts +80 -0
- package/dist/utils/user-industry-operations.d.ts.map +1 -0
- package/dist/utils/user-industry-operations.js +237 -0
- package/dist/utils/user-industry-operations.js.map +1 -0
- package/dist/utils/user-operations.d.ts +87 -0
- package/dist/utils/user-operations.d.ts.map +1 -0
- package/dist/utils/user-operations.js +212 -0
- package/dist/utils/user-operations.js.map +1 -0
- package/package.json +98 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"organization-operations.js","sourceRoot":"","sources":["../../src/utils/organization-operations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* =============================================================================
|
|
3
|
+
* ORGANIZATION RELATIONSHIP ASSIGNMENT OPERATIONS
|
|
4
|
+
* =============================================================================
|
|
5
|
+
* Utility functions for assigning LinkedIn relationships to organizations
|
|
6
|
+
*
|
|
7
|
+
* When a mapping job completes, all discovered relationships are assigned to
|
|
8
|
+
* the target organization.
|
|
9
|
+
*/
|
|
10
|
+
import { Pool, PoolClient } from 'pg';
|
|
11
|
+
import type { Database, DatabaseOrTransaction } from "../lib/db";
|
|
12
|
+
/**
|
|
13
|
+
* Process mapping job completion: Assign all relationships to organization
|
|
14
|
+
*
|
|
15
|
+
* This is the main function to be called when a mapping job completes.
|
|
16
|
+
* Workflow:
|
|
17
|
+
* 1. Find the LinkedIn account that was mapped (from mapping_jobs.linkedin_account_id)
|
|
18
|
+
* 2. Get the associated user
|
|
19
|
+
* 3. Add user to organization as CONTRIBUTOR (if not already a member)
|
|
20
|
+
* 4. Get all relationships from linkedin.relationships WHERE mapping_job_id = X
|
|
21
|
+
* 5. Assign all those relationships to the organization in organization_user_relationships_assignments
|
|
22
|
+
*/
|
|
23
|
+
export declare function processMappingJobCompletion(db: DatabaseOrTransaction | Pool | PoolClient, params: {
|
|
24
|
+
mappingJobId: number;
|
|
25
|
+
organizationId: number;
|
|
26
|
+
}): Promise<{
|
|
27
|
+
success: boolean;
|
|
28
|
+
userId?: number;
|
|
29
|
+
organizationMemberId?: number | undefined;
|
|
30
|
+
assignmentsCreated: number;
|
|
31
|
+
assignmentsSkipped: number;
|
|
32
|
+
error?: string;
|
|
33
|
+
}>;
|
|
34
|
+
/**
|
|
35
|
+
* Get all relationship assignments for an organization
|
|
36
|
+
*/
|
|
37
|
+
export declare function getOrganizationRelationshipAssignments(db: Database | Pool | PoolClient, params: {
|
|
38
|
+
organizationId: number;
|
|
39
|
+
limit?: number;
|
|
40
|
+
}): Promise<Array<{
|
|
41
|
+
id: number;
|
|
42
|
+
createdAt: Date;
|
|
43
|
+
linkedinRelationshipId: number;
|
|
44
|
+
}>>;
|
|
45
|
+
/**
|
|
46
|
+
* Get organization relationship assignment by ID
|
|
47
|
+
*/
|
|
48
|
+
export declare function getOrganizationRelationshipAssignmentById(db: Database | Pool | PoolClient, assignmentId: number): Promise<{
|
|
49
|
+
id: number;
|
|
50
|
+
organizationId: number;
|
|
51
|
+
linkedinRelationshipId: number;
|
|
52
|
+
organizationMemberId: number | null;
|
|
53
|
+
createdAt: Date;
|
|
54
|
+
} | null>;
|
|
55
|
+
/**
|
|
56
|
+
* Find organization member who owns a LinkedIn relationship
|
|
57
|
+
* Returns the organization_member_id for the member whose LinkedIn account is part of the relationship
|
|
58
|
+
*/
|
|
59
|
+
export declare function findOrganizationMemberForRelationship(db: Database | Pool | PoolClient, params: {
|
|
60
|
+
linkedinRelationshipId: number;
|
|
61
|
+
organizationId: number;
|
|
62
|
+
}): Promise<{
|
|
63
|
+
id: number;
|
|
64
|
+
} | null>;
|
|
65
|
+
/**
|
|
66
|
+
* Delete all relationship assignments for a LinkedIn account in an organization
|
|
67
|
+
*
|
|
68
|
+
* This is used to clear old assignments when a new mapping job completes,
|
|
69
|
+
* ensuring we always show the most recent relationships from the latest job.
|
|
70
|
+
*
|
|
71
|
+
* @param db - Database instance
|
|
72
|
+
* @param params - Organization ID and LinkedIn account ID
|
|
73
|
+
* @returns Number of assignments deleted
|
|
74
|
+
*/
|
|
75
|
+
export declare function deleteOrganizationUserRelationshipAssignmentsByLinkedInAccount(db: DatabaseOrTransaction | Pool | PoolClient, params: {
|
|
76
|
+
organizationId: number;
|
|
77
|
+
linkedinAccountId: number;
|
|
78
|
+
}): Promise<number>;
|
|
79
|
+
//# sourceMappingURL=organization-relationship-operations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"organization-relationship-operations.d.ts","sourceRoot":"","sources":["../../src/utils/organization-relationship-operations.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAEtC,OAAO,KAAK,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAGjE;;;;;;;;;;GAUG;AACH,wBAAsB,2BAA2B,CAC/C,EAAE,EAAE,qBAAqB,GAAG,IAAI,GAAG,UAAU,EAC7C,MAAM,EAAE;IACN,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;CACxB,GACA,OAAO,CAAC;IACT,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAoLD;AAED;;GAEG;AACH,wBAAsB,sCAAsC,CAC1D,EAAE,EAAE,QAAQ,GAAG,IAAI,GAAG,UAAU,EAChC,MAAM,EAAE;IACN,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GACA,OAAO,CACR,KAAK,CAAC;IACJ,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,IAAI,CAAC;IAChB,sBAAsB,EAAE,MAAM,CAAC;CAChC,CAAC,CACH,CAqCA;AAED;;GAEG;AACH,wBAAsB,yCAAyC,CAC7D,EAAE,EAAE,QAAQ,GAAG,IAAI,GAAG,UAAU,EAChC,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC;IACT,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;IACvB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,SAAS,EAAE,IAAI,CAAC;CACjB,GAAG,IAAI,CAAC,CA2CR;AAED;;;GAGG;AACH,wBAAsB,qCAAqC,CACzD,EAAE,EAAE,QAAQ,GAAG,IAAI,GAAG,UAAU,EAChC,MAAM,EAAE;IACN,sBAAsB,EAAE,MAAM,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;CACxB,GACA,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CA6BhC;AAED;;;;;;;;;GASG;AACH,wBAAsB,8DAA8D,CAClF,EAAE,EAAE,qBAAqB,GAAG,IAAI,GAAG,UAAU,EAC7C,MAAM,EAAE;IACN,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;CAC3B,GACA,OAAO,CAAC,MAAM,CAAC,CAoDjB"}
|
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* =============================================================================
|
|
4
|
+
* ORGANIZATION RELATIONSHIP ASSIGNMENT OPERATIONS
|
|
5
|
+
* =============================================================================
|
|
6
|
+
* Utility functions for assigning LinkedIn relationships to organizations
|
|
7
|
+
*
|
|
8
|
+
* When a mapping job completes, all discovered relationships are assigned to
|
|
9
|
+
* the target organization.
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.processMappingJobCompletion = processMappingJobCompletion;
|
|
13
|
+
exports.getOrganizationRelationshipAssignments = getOrganizationRelationshipAssignments;
|
|
14
|
+
exports.getOrganizationRelationshipAssignmentById = getOrganizationRelationshipAssignmentById;
|
|
15
|
+
exports.findOrganizationMemberForRelationship = findOrganizationMemberForRelationship;
|
|
16
|
+
exports.deleteOrganizationUserRelationshipAssignmentsByLinkedInAccount = deleteOrganizationUserRelationshipAssignmentsByLinkedInAccount;
|
|
17
|
+
const pg_client_1 = require("../lib/pg-client");
|
|
18
|
+
const db_1 = require("../lib/db");
|
|
19
|
+
/**
|
|
20
|
+
* Process mapping job completion: Assign all relationships to organization
|
|
21
|
+
*
|
|
22
|
+
* This is the main function to be called when a mapping job completes.
|
|
23
|
+
* Workflow:
|
|
24
|
+
* 1. Find the LinkedIn account that was mapped (from mapping_jobs.linkedin_account_id)
|
|
25
|
+
* 2. Get the associated user
|
|
26
|
+
* 3. Add user to organization as CONTRIBUTOR (if not already a member)
|
|
27
|
+
* 4. Get all relationships from linkedin.relationships WHERE mapping_job_id = X
|
|
28
|
+
* 5. Assign all those relationships to the organization in organization_user_relationships_assignments
|
|
29
|
+
*/
|
|
30
|
+
async function processMappingJobCompletion(db, params) {
|
|
31
|
+
const { mappingJobId, organizationId } = params;
|
|
32
|
+
(0, db_1.debugLogDbOperation)("complex", "mapping_job_completion_processing", { mappingJobId, organizationId }, undefined, {
|
|
33
|
+
operation: "processMappingJobCompletion",
|
|
34
|
+
mappingJobId,
|
|
35
|
+
organizationId,
|
|
36
|
+
});
|
|
37
|
+
try {
|
|
38
|
+
// Step 1: Get the mapping job with LinkedIn account details
|
|
39
|
+
const jobSql = `
|
|
40
|
+
SELECT
|
|
41
|
+
mj.id as mapping_job_id,
|
|
42
|
+
mj.linkedin_account_id,
|
|
43
|
+
la.id as linkedin_account_id,
|
|
44
|
+
la.user_id
|
|
45
|
+
FROM monitoring.mapping_jobs mj
|
|
46
|
+
INNER JOIN linkedin.accounts la ON mj.linkedin_account_id = la.id
|
|
47
|
+
WHERE mj.id = $1
|
|
48
|
+
LIMIT 1
|
|
49
|
+
`;
|
|
50
|
+
const jobWithAccount = await (0, pg_client_1.queryOne)(db, jobSql, [mappingJobId]);
|
|
51
|
+
if (!jobWithAccount) {
|
|
52
|
+
return {
|
|
53
|
+
success: false,
|
|
54
|
+
assignmentsCreated: 0,
|
|
55
|
+
assignmentsSkipped: 0,
|
|
56
|
+
error: `Mapping job ${mappingJobId} not found or has no associated LinkedIn account`,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
// Step 2: Ensure the LinkedIn account has an associated user
|
|
60
|
+
if (!jobWithAccount.user_id) {
|
|
61
|
+
return {
|
|
62
|
+
success: false,
|
|
63
|
+
assignmentsCreated: 0,
|
|
64
|
+
assignmentsSkipped: 0,
|
|
65
|
+
error: `LinkedIn account ${jobWithAccount.linkedin_account_id} has no associated user`,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
const userId = jobWithAccount.user_id;
|
|
69
|
+
// Step 3: Add user to organization as CONTRIBUTOR (if not already a member)
|
|
70
|
+
let organizationMemberId;
|
|
71
|
+
try {
|
|
72
|
+
// Check if already a member
|
|
73
|
+
const existingMemberSql = `
|
|
74
|
+
SELECT id FROM public.organization_members
|
|
75
|
+
WHERE organization_id = $1 AND user_id = $2
|
|
76
|
+
LIMIT 1
|
|
77
|
+
`;
|
|
78
|
+
const existingMember = await (0, pg_client_1.queryOne)(db, existingMemberSql, [organizationId, userId]);
|
|
79
|
+
if (existingMember) {
|
|
80
|
+
organizationMemberId = existingMember.id;
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
// Create new member with default roles
|
|
84
|
+
const insertMemberSql = `
|
|
85
|
+
INSERT INTO public.organization_members (organization_id, user_id, contribution_role, permissions_role, created_at)
|
|
86
|
+
VALUES ($1, $2, $3, $4, NOW())
|
|
87
|
+
RETURNING id
|
|
88
|
+
`;
|
|
89
|
+
const createdMember = await (0, pg_client_1.queryOne)(db, insertMemberSql, [organizationId, userId, 'CONTRIBUTOR', 'REGULAR']);
|
|
90
|
+
if (createdMember) {
|
|
91
|
+
organizationMemberId = createdMember.id;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
console.error("Error creating organization member:", error);
|
|
97
|
+
// Continue even if member creation fails
|
|
98
|
+
}
|
|
99
|
+
// Step 4: Get all relationships from this mapping job
|
|
100
|
+
const relationshipsSql = `
|
|
101
|
+
SELECT id FROM linkedin.relationships
|
|
102
|
+
WHERE mapping_job_id = $1
|
|
103
|
+
`;
|
|
104
|
+
const relationships = await (0, pg_client_1.query)(db, relationshipsSql, [mappingJobId]);
|
|
105
|
+
if (relationships.length === 0) {
|
|
106
|
+
return {
|
|
107
|
+
success: true,
|
|
108
|
+
userId,
|
|
109
|
+
organizationMemberId,
|
|
110
|
+
assignmentsCreated: 0,
|
|
111
|
+
assignmentsSkipped: 0,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
const relationshipIds = relationships.map(r => r.id);
|
|
115
|
+
// Step 5: Check for existing assignments
|
|
116
|
+
const placeholders = relationshipIds.map((_, i) => `$${i + 2}`).join(', ');
|
|
117
|
+
const existingAssignmentsSql = `
|
|
118
|
+
SELECT linkedin_relationship_id
|
|
119
|
+
FROM public.organization_user_relationships_assignments
|
|
120
|
+
WHERE organization_id = $1 AND linkedin_relationship_id IN (${placeholders})
|
|
121
|
+
`;
|
|
122
|
+
const existingAssignments = await (0, pg_client_1.query)(db, existingAssignmentsSql, [organizationId, ...relationshipIds]);
|
|
123
|
+
const existingRelationshipIds = new Set(existingAssignments.map(a => a.linkedin_relationship_id));
|
|
124
|
+
// Filter out relationships that are already assigned
|
|
125
|
+
const newRelationshipIds = relationshipIds.filter(id => !existingRelationshipIds.has(id));
|
|
126
|
+
if (newRelationshipIds.length === 0) {
|
|
127
|
+
return {
|
|
128
|
+
success: true,
|
|
129
|
+
userId,
|
|
130
|
+
organizationMemberId,
|
|
131
|
+
assignmentsCreated: 0,
|
|
132
|
+
assignmentsSkipped: existingRelationshipIds.size,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
// Step 6: Create new assignments
|
|
136
|
+
const values = [];
|
|
137
|
+
const params = [];
|
|
138
|
+
let paramIndex = 1;
|
|
139
|
+
newRelationshipIds.forEach((relationshipId) => {
|
|
140
|
+
values.push(`($${paramIndex}, $${paramIndex + 1}, NOW())`);
|
|
141
|
+
params.push(organizationId, relationshipId);
|
|
142
|
+
paramIndex += 2;
|
|
143
|
+
});
|
|
144
|
+
const insertSql = `
|
|
145
|
+
INSERT INTO public.organization_user_relationships_assignments (organization_id, linkedin_relationship_id, created_at)
|
|
146
|
+
VALUES ${values.join(', ')}
|
|
147
|
+
`;
|
|
148
|
+
await (0, pg_client_1.execute)(db, insertSql, params);
|
|
149
|
+
return {
|
|
150
|
+
success: true,
|
|
151
|
+
userId,
|
|
152
|
+
organizationMemberId,
|
|
153
|
+
assignmentsCreated: newRelationshipIds.length,
|
|
154
|
+
assignmentsSkipped: existingRelationshipIds.size,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
catch (error) {
|
|
158
|
+
console.error("Error processing mapping job completion:", error);
|
|
159
|
+
return {
|
|
160
|
+
success: false,
|
|
161
|
+
assignmentsCreated: 0,
|
|
162
|
+
assignmentsSkipped: 0,
|
|
163
|
+
error: error instanceof Error ? error.message : String(error),
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Get all relationship assignments for an organization
|
|
169
|
+
*/
|
|
170
|
+
async function getOrganizationRelationshipAssignments(db, params) {
|
|
171
|
+
const { organizationId, limit = 100 } = params;
|
|
172
|
+
(0, db_1.debugLogDbOperation)("select", "organization_user_relationships_assignments", { organizationId, limit }, undefined, {
|
|
173
|
+
operation: "getOrganizationRelationshipAssignments",
|
|
174
|
+
organizationId,
|
|
175
|
+
});
|
|
176
|
+
try {
|
|
177
|
+
const sql = `
|
|
178
|
+
SELECT id, created_at, linkedin_relationship_id
|
|
179
|
+
FROM public.organization_user_relationships_assignments
|
|
180
|
+
WHERE organization_id = $1
|
|
181
|
+
LIMIT $2
|
|
182
|
+
`;
|
|
183
|
+
const results = await (0, pg_client_1.query)(db, sql, [organizationId, limit]);
|
|
184
|
+
return results.map(r => ({
|
|
185
|
+
id: r.id,
|
|
186
|
+
createdAt: r.created_at,
|
|
187
|
+
linkedinRelationshipId: r.linkedin_relationship_id,
|
|
188
|
+
}));
|
|
189
|
+
}
|
|
190
|
+
catch (error) {
|
|
191
|
+
console.error("Error getting organization relationship assignments:", error);
|
|
192
|
+
throw error;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Get organization relationship assignment by ID
|
|
197
|
+
*/
|
|
198
|
+
async function getOrganizationRelationshipAssignmentById(db, assignmentId) {
|
|
199
|
+
(0, db_1.debugLogDbOperation)("select", "organization_user_relationships_assignments", { assignmentId }, undefined, {
|
|
200
|
+
operation: "getOrganizationRelationshipAssignmentById",
|
|
201
|
+
assignmentId,
|
|
202
|
+
});
|
|
203
|
+
const sql = `
|
|
204
|
+
SELECT
|
|
205
|
+
id,
|
|
206
|
+
organization_id,
|
|
207
|
+
linkedin_relationship_id,
|
|
208
|
+
organization_member_id,
|
|
209
|
+
created_at
|
|
210
|
+
FROM public.organization_user_relationships_assignments
|
|
211
|
+
WHERE id = $1
|
|
212
|
+
LIMIT 1
|
|
213
|
+
`;
|
|
214
|
+
const result = await (0, pg_client_1.queryOne)(db, sql, [assignmentId]);
|
|
215
|
+
if (!result) {
|
|
216
|
+
return null;
|
|
217
|
+
}
|
|
218
|
+
return {
|
|
219
|
+
id: result.id,
|
|
220
|
+
organizationId: result.organization_id,
|
|
221
|
+
linkedinRelationshipId: result.linkedin_relationship_id,
|
|
222
|
+
organizationMemberId: result.organization_member_id,
|
|
223
|
+
createdAt: result.created_at,
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Find organization member who owns a LinkedIn relationship
|
|
228
|
+
* Returns the organization_member_id for the member whose LinkedIn account is part of the relationship
|
|
229
|
+
*/
|
|
230
|
+
async function findOrganizationMemberForRelationship(db, params) {
|
|
231
|
+
(0, db_1.debugLogDbOperation)("select", "organization_members", params, undefined, {
|
|
232
|
+
operation: "findOrganizationMemberForRelationship",
|
|
233
|
+
...params,
|
|
234
|
+
});
|
|
235
|
+
const sql = `
|
|
236
|
+
SELECT om.id
|
|
237
|
+
FROM linkedin.relationships r
|
|
238
|
+
INNER JOIN linkedin.accounts la ON (la.id = r.linkedin_account_id_a OR la.id = r.linkedin_account_id_b)
|
|
239
|
+
INNER JOIN public.organization_members om ON om.user_id = la.user_id
|
|
240
|
+
WHERE r.id = $1
|
|
241
|
+
AND om.organization_id = $2
|
|
242
|
+
LIMIT 1
|
|
243
|
+
`;
|
|
244
|
+
const result = await (0, pg_client_1.queryOne)(db, sql, [params.linkedinRelationshipId, params.organizationId]);
|
|
245
|
+
return result;
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Delete all relationship assignments for a LinkedIn account in an organization
|
|
249
|
+
*
|
|
250
|
+
* This is used to clear old assignments when a new mapping job completes,
|
|
251
|
+
* ensuring we always show the most recent relationships from the latest job.
|
|
252
|
+
*
|
|
253
|
+
* @param db - Database instance
|
|
254
|
+
* @param params - Organization ID and LinkedIn account ID
|
|
255
|
+
* @returns Number of assignments deleted
|
|
256
|
+
*/
|
|
257
|
+
async function deleteOrganizationUserRelationshipAssignmentsByLinkedInAccount(db, params) {
|
|
258
|
+
const { organizationId, linkedinAccountId } = params;
|
|
259
|
+
(0, db_1.debugLogDbOperation)("delete", "organization_user_relationships_assignments", { organizationId, linkedinAccountId }, undefined, {
|
|
260
|
+
operation: "deleteOrganizationUserRelationshipAssignmentsByLinkedInAccount",
|
|
261
|
+
organizationId,
|
|
262
|
+
linkedinAccountId,
|
|
263
|
+
});
|
|
264
|
+
try {
|
|
265
|
+
// First, get all relationship IDs for this LinkedIn account
|
|
266
|
+
const relationshipIdsSql = `
|
|
267
|
+
SELECT id FROM linkedin.relationships
|
|
268
|
+
WHERE linkedin_account_id_a = $1 OR linkedin_account_id_b = $1
|
|
269
|
+
`;
|
|
270
|
+
const allRelationships = await (0, pg_client_1.query)(db, relationshipIdsSql, [linkedinAccountId]);
|
|
271
|
+
const allRelationshipIds = allRelationships.map(r => r.id);
|
|
272
|
+
if (allRelationshipIds.length === 0) {
|
|
273
|
+
return 0;
|
|
274
|
+
}
|
|
275
|
+
// Delete all assignments for these relationships in THIS organization ONLY
|
|
276
|
+
// CRITICAL: The WHERE organization_id = $1 clause ensures we only delete
|
|
277
|
+
// assignments for the target organization. Other organizations' assignments
|
|
278
|
+
// for the same user are NOT affected.
|
|
279
|
+
const placeholders = allRelationshipIds.map((_, i) => `$${i + 2}`).join(', ');
|
|
280
|
+
const deleteSql = `
|
|
281
|
+
DELETE FROM public.organization_user_relationships_assignments
|
|
282
|
+
WHERE organization_id = $1 AND linkedin_relationship_id IN (${placeholders})
|
|
283
|
+
RETURNING id
|
|
284
|
+
`;
|
|
285
|
+
const deleteResult = await (0, pg_client_1.query)(db, deleteSql, [organizationId, ...allRelationshipIds]);
|
|
286
|
+
// Return the actual number of rows deleted
|
|
287
|
+
return deleteResult.length;
|
|
288
|
+
}
|
|
289
|
+
catch (error) {
|
|
290
|
+
console.error("Error deleting organization relationship assignments:", error);
|
|
291
|
+
throw error;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
//# sourceMappingURL=organization-relationship-operations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"organization-relationship-operations.js","sourceRoot":"","sources":["../../src/utils/organization-relationship-operations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* =============================================================================
|
|
3
|
+
* QUOTA OPERATIONS - Mapping Job Quota Management
|
|
4
|
+
* =============================================================================
|
|
5
|
+
*
|
|
6
|
+
* Manages on-demand mapping job quotas per authenticated user and organization.
|
|
7
|
+
* Quota limits are determined by organization subscription_tier:
|
|
8
|
+
* - INDIVIDUAL: Lower quotas for personal workspaces
|
|
9
|
+
* - BUSINESS: Higher quotas for business workspaces
|
|
10
|
+
*
|
|
11
|
+
* Quotas are tracked per period (daily/monthly) and incremented atomically
|
|
12
|
+
* using INSERT ... ON CONFLICT DO UPDATE pattern.
|
|
13
|
+
*/
|
|
14
|
+
import { Pool, PoolClient } from "pg";
|
|
15
|
+
import type { Database } from "../lib/db";
|
|
16
|
+
export type WorkspaceType = "INDIVIDUALS" | "BUSINESS";
|
|
17
|
+
export type SubscriptionTier = "PRO_VERSION" | "WAITING_FOR_SUBSCRIPTION_SELECTION";
|
|
18
|
+
export type QuotaPeriod = "daily" | "monthly";
|
|
19
|
+
export declare const QUOTA_LIMITS: Record<WorkspaceType, Record<SubscriptionTier, Record<QuotaPeriod, number>>>;
|
|
20
|
+
export interface QuotaRecord {
|
|
21
|
+
id: number;
|
|
22
|
+
authenticatedUserId: number;
|
|
23
|
+
organizationId: number;
|
|
24
|
+
quotaPeriod: QuotaPeriod;
|
|
25
|
+
periodStart: Date;
|
|
26
|
+
periodEnd: Date;
|
|
27
|
+
quotaLimit: number | null;
|
|
28
|
+
currentUsage: number;
|
|
29
|
+
createdAt: Date;
|
|
30
|
+
updatedAt: Date;
|
|
31
|
+
}
|
|
32
|
+
export interface QuotaCheckResult {
|
|
33
|
+
allowed: boolean;
|
|
34
|
+
quotaRecord: QuotaRecord | null;
|
|
35
|
+
remainingQuota: number | null;
|
|
36
|
+
quotaLimit: number | null;
|
|
37
|
+
period: QuotaPeriod;
|
|
38
|
+
periodStart: Date;
|
|
39
|
+
periodEnd: Date;
|
|
40
|
+
}
|
|
41
|
+
export interface QuotaSummary {
|
|
42
|
+
quotaType: string;
|
|
43
|
+
period: QuotaPeriod;
|
|
44
|
+
currentUsage: number;
|
|
45
|
+
quotaLimit: number | null;
|
|
46
|
+
remainingQuota: number | null;
|
|
47
|
+
periodStart: Date;
|
|
48
|
+
periodEnd: Date;
|
|
49
|
+
organizationId: number;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Get quota limits for a workspace type and subscription tier combination
|
|
53
|
+
* @param workspaceType - Workspace type (INDIVIDUALS or BUSINESS)
|
|
54
|
+
* @param subscriptionTier - Subscription tier
|
|
55
|
+
* @param period - Quota period (daily or monthly)
|
|
56
|
+
* @param subscriptionStatus - Optional subscription status to determine if unlimited (for PRO_VERSION)
|
|
57
|
+
* @returns Quota limit, or null for unlimited
|
|
58
|
+
*/
|
|
59
|
+
export declare function getQuotaLimit(workspaceType: WorkspaceType, subscriptionTier: SubscriptionTier, period: QuotaPeriod, subscriptionStatus?: string | null): number | null;
|
|
60
|
+
/**
|
|
61
|
+
* Check and increment quota for a mapping job request
|
|
62
|
+
*
|
|
63
|
+
* This function:
|
|
64
|
+
* 1. Gets the organization's subscription tier
|
|
65
|
+
* 2. Determines quota limits for the tier
|
|
66
|
+
* 3. Gets or creates quota record for current period
|
|
67
|
+
* 4. Atomically increments usage if quota allows
|
|
68
|
+
* 5. Returns whether the operation is allowed
|
|
69
|
+
*
|
|
70
|
+
* @param db - Database instance
|
|
71
|
+
* @param authenticatedUserId - ID from authentication.users table
|
|
72
|
+
* @param organizationId - Organization ID
|
|
73
|
+
* @param period - Quota period to check (daily or monthly)
|
|
74
|
+
* @returns Quota check result with allowance status and quota info
|
|
75
|
+
*/
|
|
76
|
+
export declare function checkAndIncrementQuota(db: Database | Pool | PoolClient, authenticatedUserId: number, organizationId: number, period?: QuotaPeriod): Promise<QuotaCheckResult>;
|
|
77
|
+
/**
|
|
78
|
+
* Get current quota status without incrementing
|
|
79
|
+
*
|
|
80
|
+
* @param db - Database instance
|
|
81
|
+
* @param authenticatedUserId - ID from authentication.users table
|
|
82
|
+
* @param organizationId - Organization ID
|
|
83
|
+
* @param period - Quota period to check (daily or monthly)
|
|
84
|
+
* @returns Current quota status or null if no quota record exists
|
|
85
|
+
*/
|
|
86
|
+
export declare function getQuotaStatus(db: Database | Pool | PoolClient, authenticatedUserId: number, organizationId: number, period?: QuotaPeriod): Promise<QuotaCheckResult | null>;
|
|
87
|
+
/**
|
|
88
|
+
* Get all quotas for a user across all organizations
|
|
89
|
+
* Returns quotas for all quota types (currently only mapping_jobs, but extensible)
|
|
90
|
+
*
|
|
91
|
+
* @param db - Database instance
|
|
92
|
+
* @param authenticatedUserId - ID from authentication.users table
|
|
93
|
+
* @returns Array of quota summaries grouped by quota type and organization
|
|
94
|
+
*/
|
|
95
|
+
export declare function getAllQuotasForUser(db: Database | Pool | PoolClient, authenticatedUserId: number): Promise<QuotaSummary[]>;
|
|
96
|
+
/**
|
|
97
|
+
* Initialize quota records for all organization members when subscription is activated
|
|
98
|
+
*
|
|
99
|
+
* Creates daily and monthly quota records for all authenticated users in the organization
|
|
100
|
+
* with the appropriate quota limits based on subscription tier.
|
|
101
|
+
*
|
|
102
|
+
* @param db - Database instance
|
|
103
|
+
* @param organizationId - Organization ID
|
|
104
|
+
* @returns Number of quota records created
|
|
105
|
+
*/
|
|
106
|
+
export declare function initializeQuotasForOrganization(db: Database | Pool | PoolClient, organizationId: number): Promise<number>;
|
|
107
|
+
//# sourceMappingURL=quota-operations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quota-operations.d.ts","sourceRoot":"","sources":["../../src/utils/quota-operations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAEtC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAO1C,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG,UAAU,CAAC;AACvD,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG,oCAAoC,CAAC;AACpF,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,SAAS,CAAC;AAE9C,eAAO,MAAM,YAAY,EAAE,MAAM,CAC/B,aAAa,EACb,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAsB7C,CAAC;AAMX,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,IAAI,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,WAAW,CAAC;IACpB,WAAW,EAAE,IAAI,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,WAAW,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,IAAI,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;CACxB;AAMD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,gBAAgB,EAClC,MAAM,EAAE,WAAW,EACnB,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,GACjC,MAAM,GAAG,IAAI,CAgBf;AA8CD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,sBAAsB,CAC1C,EAAE,EAAE,QAAQ,GAAG,IAAI,GAAG,UAAU,EAChC,mBAAmB,EAAE,MAAM,EAC3B,cAAc,EAAE,MAAM,EACtB,MAAM,GAAE,WAAqB,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CAsL3B;AAED;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,EAAE,EAAE,QAAQ,GAAG,IAAI,GAAG,UAAU,EAChC,mBAAmB,EAAE,MAAM,EAC3B,cAAc,EAAE,MAAM,EACtB,MAAM,GAAE,WAAqB,GAC5B,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CA0JlC;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,QAAQ,GAAG,IAAI,GAAG,UAAU,EAChC,mBAAmB,EAAE,MAAM,GAC1B,OAAO,CAAC,YAAY,EAAE,CAAC,CA+OzB;AAED;;;;;;;;;GASG;AACH,wBAAsB,+BAA+B,CACnD,EAAE,EAAE,QAAQ,GAAG,IAAI,GAAG,UAAU,EAChC,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,MAAM,CAAC,CA2IjB"}
|