@n8n/db 1.22.3 → 1.23.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/dist/build.tsbuildinfo +1 -1
- package/dist/entities/workflow-entity.d.ts +2 -1
- package/dist/entities/workflow-entity.js +4 -0
- package/dist/entities/workflow-entity.js.map +1 -1
- package/dist/entities/workflow-history.d.ts +2 -1
- package/dist/entities/workflow-history.js +4 -0
- package/dist/entities/workflow-history.js.map +1 -1
- package/dist/migrations/common/1784000000007-CreateInstanceAiCheckpointTable.d.ts +5 -0
- package/dist/migrations/common/1784000000007-CreateInstanceAiCheckpointTable.js +33 -0
- package/dist/migrations/common/1784000000007-CreateInstanceAiCheckpointTable.js.map +1 -0
- package/dist/migrations/common/1784000000008-ResetInstanceAiNativePersistence.d.ts +4 -0
- package/dist/migrations/common/1784000000008-ResetInstanceAiNativePersistence.js +21 -0
- package/dist/migrations/common/1784000000008-ResetInstanceAiNativePersistence.js.map +1 -0
- package/dist/migrations/common/1784000000009-CreateAgentMemoryEntryTables.d.ts +5 -0
- package/dist/migrations/common/1784000000009-CreateAgentMemoryEntryTables.js +97 -0
- package/dist/migrations/common/1784000000009-CreateAgentMemoryEntryTables.js.map +1 -0
- package/dist/migrations/common/1784000000010-RefactorAgentObservationScope.d.ts +11 -0
- package/dist/migrations/common/1784000000010-RefactorAgentObservationScope.js +230 -0
- package/dist/migrations/common/1784000000010-RefactorAgentObservationScope.js.map +1 -0
- package/dist/migrations/common/1784000000011-CreateAgentHistoryTable.d.ts +9 -0
- package/dist/migrations/common/1784000000011-CreateAgentHistoryTable.js +134 -0
- package/dist/migrations/common/1784000000011-CreateAgentHistoryTable.js.map +1 -0
- package/dist/migrations/common/1784000000012-CreateInstanceAiObservationTables.d.ts +5 -0
- package/dist/migrations/common/1784000000012-CreateInstanceAiObservationTables.js +58 -0
- package/dist/migrations/common/1784000000012-CreateInstanceAiObservationTables.js.map +1 -0
- package/dist/migrations/common/1784000000013-SplitRedactionScopeInCustomRoles.d.ts +5 -0
- package/dist/migrations/common/1784000000013-SplitRedactionScopeInCustomRoles.js +62 -0
- package/dist/migrations/common/1784000000013-SplitRedactionScopeInCustomRoles.js.map +1 -0
- package/dist/migrations/common/1784000000014-PersistInstanceAiPendingConfirmations.d.ts +6 -0
- package/dist/migrations/common/1784000000014-PersistInstanceAiPendingConfirmations.js +71 -0
- package/dist/migrations/common/1784000000014-PersistInstanceAiPendingConfirmations.js.map +1 -0
- package/dist/migrations/common/1784000000016-UseSlugAsPrimaryKeyInMcpRegistryServer.d.ts +5 -0
- package/dist/migrations/common/1784000000016-UseSlugAsPrimaryKeyInMcpRegistryServer.js +35 -0
- package/dist/migrations/common/1784000000016-UseSlugAsPrimaryKeyInMcpRegistryServer.js.map +1 -0
- package/dist/migrations/dsl/index.d.ts +3 -1
- package/dist/migrations/dsl/index.js +2 -0
- package/dist/migrations/dsl/index.js.map +1 -1
- package/dist/migrations/dsl/table.d.ts +11 -0
- package/dist/migrations/dsl/table.js +41 -13
- package/dist/migrations/dsl/table.js.map +1 -1
- package/dist/migrations/postgresdb/index.js +18 -0
- package/dist/migrations/postgresdb/index.js.map +1 -1
- package/dist/migrations/sqlite/1784000000011-CreateAgentHistoryTable.d.ts +4 -0
- package/dist/migrations/sqlite/1784000000011-CreateAgentHistoryTable.js +12 -0
- package/dist/migrations/sqlite/1784000000011-CreateAgentHistoryTable.js.map +1 -0
- package/dist/migrations/sqlite/index.js +18 -0
- package/dist/migrations/sqlite/index.js.map +1 -1
- package/dist/repositories/project.repository.d.ts +1 -0
- package/dist/repositories/project.repository.js +16 -0
- package/dist/repositories/project.repository.js.map +1 -1
- package/dist/services/auth.roles.service.js +12 -7
- package/dist/services/auth.roles.service.js.map +1 -1
- package/package.json +10 -10
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CreateAgentHistoryTable1784000000011 = void 0;
|
|
4
|
+
class CreateAgentHistoryTable1784000000011 {
|
|
5
|
+
async up(ctx) {
|
|
6
|
+
const { schemaBuilder } = ctx;
|
|
7
|
+
const { createTable, addColumns, addForeignKey, column, dropTable, dropColumns } = schemaBuilder;
|
|
8
|
+
await createTable('agent_history')
|
|
9
|
+
.withColumns(column('versionId').varchar(36).primary, column('agentId').varchar(36).notNull, column('schema').json.comment('Frozen snapshot of the published AgentJsonConfig'), column('tools').json.comment('Frozen map of `toolId → { code, descriptor }` at publish time'), column('skills').json.comment('Frozen map of `skillId → AgentSkill` at publish time'), column('publishedById').uuid, column('author').varchar(255).notNull)
|
|
10
|
+
.withIndexOn('agentId')
|
|
11
|
+
.withForeignKey('agentId', {
|
|
12
|
+
tableName: 'agents',
|
|
13
|
+
columnName: 'id',
|
|
14
|
+
onDelete: 'CASCADE',
|
|
15
|
+
})
|
|
16
|
+
.withForeignKey('publishedById', {
|
|
17
|
+
tableName: 'user',
|
|
18
|
+
columnName: 'id',
|
|
19
|
+
onDelete: 'SET NULL',
|
|
20
|
+
}).withTimestamps;
|
|
21
|
+
await addColumns('agents', [column('activeVersionId').varchar(36)]);
|
|
22
|
+
await addForeignKey('agents', 'activeVersionId', ['agent_history', 'versionId'], undefined, 'SET NULL');
|
|
23
|
+
await this.copyAgentPublishedVersionToHistory(ctx);
|
|
24
|
+
await this.backfillActiveVersionId(ctx);
|
|
25
|
+
await this.assertHistoryMatchesPublishedVersion(ctx);
|
|
26
|
+
await dropTable('agent_published_version');
|
|
27
|
+
await dropColumns('agents', ['credentialId', 'provider', 'model']);
|
|
28
|
+
}
|
|
29
|
+
async down(ctx) {
|
|
30
|
+
const { schemaBuilder } = ctx;
|
|
31
|
+
const { createTable, addColumns, dropForeignKey, dropColumns, dropTable, column } = schemaBuilder;
|
|
32
|
+
await addColumns('agents', [
|
|
33
|
+
column('credentialId').varchar(255),
|
|
34
|
+
column('provider').varchar(128),
|
|
35
|
+
column('model').varchar(128),
|
|
36
|
+
]);
|
|
37
|
+
await createTable('agent_published_version')
|
|
38
|
+
.withColumns(column('agentId').varchar(36).primary, column('schema').json, column('publishedFromVersionId').varchar(36).notNull, column('model').varchar(128), column('provider').varchar(128), column('credentialId').varchar(36), column('publishedById').uuid, column('tools').json, column('skills').json)
|
|
39
|
+
.withForeignKey('agentId', {
|
|
40
|
+
tableName: 'agents',
|
|
41
|
+
columnName: 'id',
|
|
42
|
+
onDelete: 'CASCADE',
|
|
43
|
+
})
|
|
44
|
+
.withForeignKey('publishedById', {
|
|
45
|
+
tableName: 'user',
|
|
46
|
+
columnName: 'id',
|
|
47
|
+
onDelete: 'SET NULL',
|
|
48
|
+
}).withTimestamps;
|
|
49
|
+
await this.restoreActiveHistoryToPublishedVersion(ctx);
|
|
50
|
+
await dropForeignKey('agents', 'activeVersionId', ['agent_history', 'versionId']);
|
|
51
|
+
await dropColumns('agents', ['activeVersionId']);
|
|
52
|
+
await dropTable('agent_history');
|
|
53
|
+
}
|
|
54
|
+
async copyAgentPublishedVersionToHistory({ escape, runQuery }) {
|
|
55
|
+
const agentHistoryTable = escape.tableName('agent_history');
|
|
56
|
+
const agentPublishedVersionTable = escape.tableName('agent_published_version');
|
|
57
|
+
const userTable = escape.tableName('user');
|
|
58
|
+
const versionIdCol = escape.columnName('versionId');
|
|
59
|
+
const agentIdCol = escape.columnName('agentId');
|
|
60
|
+
const schemaCol = escape.columnName('schema');
|
|
61
|
+
const toolsCol = escape.columnName('tools');
|
|
62
|
+
const skillsCol = escape.columnName('skills');
|
|
63
|
+
const publishedByIdCol = escape.columnName('publishedById');
|
|
64
|
+
const authorCol = escape.columnName('author');
|
|
65
|
+
const createdAtCol = escape.columnName('createdAt');
|
|
66
|
+
const updatedAtCol = escape.columnName('updatedAt');
|
|
67
|
+
const publishedFromVersionIdCol = escape.columnName('publishedFromVersionId');
|
|
68
|
+
const idCol = escape.columnName('id');
|
|
69
|
+
const firstNameCol = escape.columnName('firstName');
|
|
70
|
+
const lastNameCol = escape.columnName('lastName');
|
|
71
|
+
await runQuery(`INSERT INTO ${agentHistoryTable} (${versionIdCol}, ${agentIdCol}, ${schemaCol}, ${toolsCol}, ${skillsCol}, ${publishedByIdCol}, ${authorCol}, ${createdAtCol}, ${updatedAtCol})
|
|
72
|
+
SELECT apv.${publishedFromVersionIdCol}, apv.${agentIdCol}, apv.${schemaCol}, apv.${toolsCol}, apv.${skillsCol},
|
|
73
|
+
apv.${publishedByIdCol},
|
|
74
|
+
COALESCE(
|
|
75
|
+
NULLIF(
|
|
76
|
+
TRIM(COALESCE(u.${firstNameCol}, '') || ' ' || COALESCE(u.${lastNameCol}, '')),
|
|
77
|
+
''
|
|
78
|
+
),
|
|
79
|
+
'Unknown'
|
|
80
|
+
),
|
|
81
|
+
apv.${createdAtCol}, apv.${updatedAtCol}
|
|
82
|
+
FROM ${agentPublishedVersionTable} apv
|
|
83
|
+
LEFT JOIN ${userTable} u ON u.${idCol} = apv.${publishedByIdCol}`);
|
|
84
|
+
}
|
|
85
|
+
async backfillActiveVersionId({ escape, runQuery }) {
|
|
86
|
+
const agentsTable = escape.tableName('agents');
|
|
87
|
+
const agentPublishedVersionTable = escape.tableName('agent_published_version');
|
|
88
|
+
const activeVersionIdCol = escape.columnName('activeVersionId');
|
|
89
|
+
const publishedFromVersionIdCol = escape.columnName('publishedFromVersionId');
|
|
90
|
+
const agentIdCol = escape.columnName('agentId');
|
|
91
|
+
const idCol = escape.columnName('id');
|
|
92
|
+
await runQuery(`UPDATE ${agentsTable}
|
|
93
|
+
SET ${activeVersionIdCol} = (
|
|
94
|
+
SELECT ${publishedFromVersionIdCol}
|
|
95
|
+
FROM ${agentPublishedVersionTable} apv
|
|
96
|
+
WHERE apv.${agentIdCol} = ${agentsTable}.${idCol}
|
|
97
|
+
)`);
|
|
98
|
+
}
|
|
99
|
+
async assertHistoryMatchesPublishedVersion({ escape, runQuery }) {
|
|
100
|
+
const agentHistoryTable = escape.tableName('agent_history');
|
|
101
|
+
const agentPublishedVersionTable = escape.tableName('agent_published_version');
|
|
102
|
+
const [historyCountRow] = await runQuery(`SELECT COUNT(*) AS count FROM ${agentHistoryTable}`);
|
|
103
|
+
const [publishedCountRow] = await runQuery(`SELECT COUNT(*) AS count FROM ${agentPublishedVersionTable}`);
|
|
104
|
+
if (Number(historyCountRow.count) !== Number(publishedCountRow.count)) {
|
|
105
|
+
throw new Error(`agent_history row count (${historyCountRow.count}) does not match agent_published_version row count (${publishedCountRow.count}); aborting migration`);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
async restoreActiveHistoryToPublishedVersion({ escape, runQuery }) {
|
|
109
|
+
const agentHistoryTable = escape.tableName('agent_history');
|
|
110
|
+
const agentPublishedVersionTable = escape.tableName('agent_published_version');
|
|
111
|
+
const agentsTable = escape.tableName('agents');
|
|
112
|
+
const agentIdCol = escape.columnName('agentId');
|
|
113
|
+
const schemaCol = escape.columnName('schema');
|
|
114
|
+
const publishedFromVersionIdCol = escape.columnName('publishedFromVersionId');
|
|
115
|
+
const modelCol = escape.columnName('model');
|
|
116
|
+
const providerCol = escape.columnName('provider');
|
|
117
|
+
const credentialIdCol = escape.columnName('credentialId');
|
|
118
|
+
const publishedByIdCol = escape.columnName('publishedById');
|
|
119
|
+
const toolsCol = escape.columnName('tools');
|
|
120
|
+
const skillsCol = escape.columnName('skills');
|
|
121
|
+
const createdAtCol = escape.columnName('createdAt');
|
|
122
|
+
const updatedAtCol = escape.columnName('updatedAt');
|
|
123
|
+
const versionIdCol = escape.columnName('versionId');
|
|
124
|
+
const activeVersionIdCol = escape.columnName('activeVersionId');
|
|
125
|
+
const idCol = escape.columnName('id');
|
|
126
|
+
await runQuery(`INSERT INTO ${agentPublishedVersionTable}
|
|
127
|
+
(${agentIdCol}, ${schemaCol}, ${publishedFromVersionIdCol}, ${modelCol}, ${providerCol}, ${credentialIdCol}, ${publishedByIdCol}, ${toolsCol}, ${skillsCol}, ${createdAtCol}, ${updatedAtCol})
|
|
128
|
+
SELECT a.${idCol}, h.${schemaCol}, h.${versionIdCol}, NULL, NULL, NULL, h.${publishedByIdCol}, h.${toolsCol}, h.${skillsCol}, h.${createdAtCol}, h.${updatedAtCol}
|
|
129
|
+
FROM ${agentsTable} a
|
|
130
|
+
INNER JOIN ${agentHistoryTable} h ON a.${activeVersionIdCol} = h.${versionIdCol}`);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
exports.CreateAgentHistoryTable1784000000011 = CreateAgentHistoryTable1784000000011;
|
|
134
|
+
//# sourceMappingURL=1784000000011-CreateAgentHistoryTable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"1784000000011-CreateAgentHistoryTable.js","sourceRoot":"","sources":["../../../src/migrations/common/1784000000011-CreateAgentHistoryTable.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { MigrationContext, ReversibleMigration } from '../migration-types';
|
|
2
|
+
export declare class CreateInstanceAiObservationTables1784000000012 implements ReversibleMigration {
|
|
3
|
+
up({ schemaBuilder: { createTable, column } }: MigrationContext): Promise<void>;
|
|
4
|
+
down({ schemaBuilder: { dropTable } }: MigrationContext): Promise<void>;
|
|
5
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CreateInstanceAiObservationTables1784000000012 = void 0;
|
|
4
|
+
const OBSERVATION_MARKERS = ['critical', 'important', 'info', 'completion'];
|
|
5
|
+
const OBSERVATION_STATUSES = ['active', 'superseded', 'dropped'];
|
|
6
|
+
const OBSERVATION_TASK_KINDS = ['observer', 'reflector'];
|
|
7
|
+
const table = {
|
|
8
|
+
observations: 'instance_ai_observations',
|
|
9
|
+
observationCursors: 'instance_ai_observation_cursors',
|
|
10
|
+
observationLocks: 'instance_ai_observation_locks',
|
|
11
|
+
};
|
|
12
|
+
class CreateInstanceAiObservationTables1784000000012 {
|
|
13
|
+
async up({ schemaBuilder: { createTable, column } }) {
|
|
14
|
+
await createTable(table.observations)
|
|
15
|
+
.withColumns(column('id')
|
|
16
|
+
.varchar(36)
|
|
17
|
+
.primary.notNull.comment('Application-generated n8n string ID, not a database UUID'), column('observationScopeId').uuid.notNull.comment('instance_ai_threads.id source stream for this observation log'), column('marker').varchar(16).notNull.withEnumCheck(OBSERVATION_MARKERS), column('text').text.notNull, column('parentId').varchar(36), column('tokenCount').int.notNull.default(0), column('status').varchar(16).notNull.withEnumCheck(OBSERVATION_STATUSES), column('supersededBy').varchar(36))
|
|
18
|
+
.withIndexOn(['observationScopeId', 'status', 'createdAt', 'id'])
|
|
19
|
+
.withIndexOn('parentId')
|
|
20
|
+
.withIndexOn('supersededBy')
|
|
21
|
+
.withForeignKey('observationScopeId', {
|
|
22
|
+
tableName: 'instance_ai_threads',
|
|
23
|
+
columnName: 'id',
|
|
24
|
+
onDelete: 'CASCADE',
|
|
25
|
+
})
|
|
26
|
+
.withForeignKey('parentId', {
|
|
27
|
+
tableName: table.observations,
|
|
28
|
+
columnName: 'id',
|
|
29
|
+
})
|
|
30
|
+
.withForeignKey('supersededBy', {
|
|
31
|
+
tableName: table.observations,
|
|
32
|
+
columnName: 'id',
|
|
33
|
+
}).withTimestamps;
|
|
34
|
+
await createTable(table.observationCursors)
|
|
35
|
+
.withColumns(column('observationScopeId').uuid.notNull.primary.comment('instance_ai_threads.id source stream checkpointed by this cursor'), column('lastObservedMessageId').varchar(36).notNull, column('lastObservedAt').timestampTimezone(3).notNull)
|
|
36
|
+
.withForeignKey('observationScopeId', {
|
|
37
|
+
tableName: 'instance_ai_threads',
|
|
38
|
+
columnName: 'id',
|
|
39
|
+
onDelete: 'CASCADE',
|
|
40
|
+
}).withTimestamps;
|
|
41
|
+
await createTable(table.observationLocks)
|
|
42
|
+
.withColumns(column('observationScopeId').uuid.notNull.primary.comment('instance_ai_threads.id source stream locked for observation tasks'), column('taskKind').varchar(20).notNull.primary.withEnumCheck(OBSERVATION_TASK_KINDS), column('holderId')
|
|
43
|
+
.varchar(64)
|
|
44
|
+
.notNull.comment('Ephemeral background-task lock owner token, not a user ID'), column('heldUntil').timestampTimezone(3).notNull)
|
|
45
|
+
.withForeignKey('observationScopeId', {
|
|
46
|
+
tableName: 'instance_ai_threads',
|
|
47
|
+
columnName: 'id',
|
|
48
|
+
onDelete: 'CASCADE',
|
|
49
|
+
}).withTimestamps;
|
|
50
|
+
}
|
|
51
|
+
async down({ schemaBuilder: { dropTable } }) {
|
|
52
|
+
await dropTable(table.observationLocks);
|
|
53
|
+
await dropTable(table.observationCursors);
|
|
54
|
+
await dropTable(table.observations);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
exports.CreateInstanceAiObservationTables1784000000012 = CreateInstanceAiObservationTables1784000000012;
|
|
58
|
+
//# sourceMappingURL=1784000000012-CreateInstanceAiObservationTables.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"1784000000012-CreateInstanceAiObservationTables.js","sourceRoot":"","sources":["../../../src/migrations/common/1784000000012-CreateInstanceAiObservationTables.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { MigrationContext, ReversibleMigration } from '../migration-types';
|
|
2
|
+
export declare class SplitRedactionScopeInCustomRoles1784000000013 implements ReversibleMigration {
|
|
3
|
+
up({ escape, runQuery }: MigrationContext): Promise<void>;
|
|
4
|
+
down({ escape, runQuery }: MigrationContext): Promise<void>;
|
|
5
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SplitRedactionScopeInCustomRoles1784000000013 = void 0;
|
|
4
|
+
const PERSONAL_OWNER_ROLE_SLUG = 'project:personalOwner';
|
|
5
|
+
const OLD_SCOPE = 'workflow:updateRedactionSetting';
|
|
6
|
+
const NEW_SCOPES = ['workflow:enableRedaction', 'workflow:disableRedaction'];
|
|
7
|
+
class SplitRedactionScopeInCustomRoles1784000000013 {
|
|
8
|
+
async up({ escape, runQuery }) {
|
|
9
|
+
const scopeTableName = escape.tableName('scope');
|
|
10
|
+
const scopeSlugColumn = escape.columnName('slug');
|
|
11
|
+
const displayNameColumn = escape.columnName('displayName');
|
|
12
|
+
const descriptionColumn = escape.columnName('description');
|
|
13
|
+
const roleTableName = escape.tableName('role');
|
|
14
|
+
const roleScopeTableName = escape.tableName('role_scope');
|
|
15
|
+
const roleSlugColumn = escape.columnName('slug');
|
|
16
|
+
const roleScopeRoleSlugColumn = escape.columnName('roleSlug');
|
|
17
|
+
const roleScopeScopeSlugColumn = escape.columnName('scopeSlug');
|
|
18
|
+
const insertScopeQuery = `INSERT INTO ${scopeTableName} (${scopeSlugColumn}, ${displayNameColumn}, ${descriptionColumn})
|
|
19
|
+
VALUES (:slug, :displayName, :description)
|
|
20
|
+
ON CONFLICT (${scopeSlugColumn}) DO NOTHING`;
|
|
21
|
+
await runQuery(insertScopeQuery, {
|
|
22
|
+
slug: 'workflow:enableRedaction',
|
|
23
|
+
displayName: 'Enable Workflow Data Redaction',
|
|
24
|
+
description: 'Allows enabling data redaction on workflows.',
|
|
25
|
+
});
|
|
26
|
+
await runQuery(insertScopeQuery, {
|
|
27
|
+
slug: 'workflow:disableRedaction',
|
|
28
|
+
displayName: 'Disable Workflow Data Redaction',
|
|
29
|
+
description: 'Allows disabling data redaction on workflows.',
|
|
30
|
+
});
|
|
31
|
+
const batchInsertQuery = `
|
|
32
|
+
INSERT INTO ${roleScopeTableName} (${roleScopeRoleSlugColumn}, ${roleScopeScopeSlugColumn})
|
|
33
|
+
SELECT DISTINCT role.${roleSlugColumn}, :newScope
|
|
34
|
+
FROM ${roleTableName} role
|
|
35
|
+
INNER JOIN ${roleScopeTableName} role_scope
|
|
36
|
+
ON role.${roleSlugColumn} = role_scope.${roleScopeRoleSlugColumn}
|
|
37
|
+
WHERE role.${roleSlugColumn} != :personalOwnerSlug
|
|
38
|
+
AND role_scope.${roleScopeScopeSlugColumn} = :oldScope
|
|
39
|
+
ON CONFLICT (${roleScopeRoleSlugColumn}, ${roleScopeScopeSlugColumn}) DO NOTHING
|
|
40
|
+
`;
|
|
41
|
+
for (const newScope of NEW_SCOPES) {
|
|
42
|
+
await runQuery(batchInsertQuery, {
|
|
43
|
+
personalOwnerSlug: PERSONAL_OWNER_ROLE_SLUG,
|
|
44
|
+
oldScope: OLD_SCOPE,
|
|
45
|
+
newScope,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
async down({ escape, runQuery }) {
|
|
50
|
+
const roleScopeTableName = escape.tableName('role_scope');
|
|
51
|
+
const roleScopeScopeSlugColumn = escape.columnName('scopeSlug');
|
|
52
|
+
const deleteQuery = `
|
|
53
|
+
DELETE FROM ${roleScopeTableName}
|
|
54
|
+
WHERE ${roleScopeScopeSlugColumn} = :scope
|
|
55
|
+
`;
|
|
56
|
+
for (const newScope of NEW_SCOPES) {
|
|
57
|
+
await runQuery(deleteQuery, { scope: newScope });
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
exports.SplitRedactionScopeInCustomRoles1784000000013 = SplitRedactionScopeInCustomRoles1784000000013;
|
|
62
|
+
//# sourceMappingURL=1784000000013-SplitRedactionScopeInCustomRoles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"1784000000013-SplitRedactionScopeInCustomRoles.js","sourceRoot":"","sources":["../../../src/migrations/common/1784000000013-SplitRedactionScopeInCustomRoles.ts"],"names":[],"mappings":";;;AAEA,MAAM,wBAAwB,GAAG,uBAAuB,CAAC;AACzD,MAAM,SAAS,GAAG,iCAAiC,CAAC;AACpD,MAAM,UAAU,GAAG,CAAC,0BAA0B,EAAE,2BAA2B,CAAU,CAAC;AAkBtF,MAAa,6CAA6C;IACzD,KAAK,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAoB;QAC9C,MAAM,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,eAAe,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QAC3D,MAAM,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QAE3D,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,kBAAkB,GAAG,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAC1D,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACjD,MAAM,uBAAuB,GAAG,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC9D,MAAM,wBAAwB,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAEhE,MAAM,gBAAgB,GAAG,eAAe,cAAc,KAAK,eAAe,KAAK,iBAAiB,KAAK,iBAAiB;;wBAEhG,eAAe,cAAc,CAAC;QAEpD,MAAM,QAAQ,CAAC,gBAAgB,EAAE;YAChC,IAAI,EAAE,0BAA0B;YAChC,WAAW,EAAE,gCAAgC;YAC7C,WAAW,EAAE,8CAA8C;SAC3D,CAAC,CAAC;QAEH,MAAM,QAAQ,CAAC,gBAAgB,EAAE;YAChC,IAAI,EAAE,2BAA2B;YACjC,WAAW,EAAE,iCAAiC;YAC9C,WAAW,EAAE,+CAA+C;SAC5D,CAAC,CAAC;QAEH,MAAM,gBAAgB,GAAG;gBACX,kBAAkB,KAAK,uBAAuB,KAAK,wBAAwB;yBAClE,cAAc;SAC9B,aAAa;eACP,kBAAkB;aACpB,cAAc,iBAAiB,uBAAuB;eACpD,cAAc;oBACT,wBAAwB;iBAC3B,uBAAuB,KAAK,wBAAwB;GAClE,CAAC;QAEF,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,QAAQ,CAAC,gBAAgB,EAAE;gBAChC,iBAAiB,EAAE,wBAAwB;gBAC3C,QAAQ,EAAE,SAAS;gBACnB,QAAQ;aACR,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAoB;QAChD,MAAM,kBAAkB,GAAG,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAC1D,MAAM,wBAAwB,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAEhE,MAAM,WAAW,GAAG;iBACL,kBAAkB;WACxB,wBAAwB;GAChC,CAAC;QAEF,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,QAAQ,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClD,CAAC;IACF,CAAC;CACD;AA9DD,sGA8DC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { MigrationContext, ReversibleMigration } from '../migration-types';
|
|
2
|
+
export declare class PersistInstanceAiPendingConfirmations1784000000014 implements ReversibleMigration {
|
|
3
|
+
up(context: MigrationContext): Promise<void>;
|
|
4
|
+
down({ schemaBuilder: { addNotNull, dropTable, dropColumns }, queryRunner, tablePrefix, runQuery, escape, }: MigrationContext): Promise<void>;
|
|
5
|
+
private createPendingConfirmationsTable;
|
|
6
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PersistInstanceAiPendingConfirmations1784000000014 = void 0;
|
|
4
|
+
const typeorm_1 = require("@n8n/typeorm");
|
|
5
|
+
const pendingConfirmationsTable = 'instance_ai_pending_confirmations';
|
|
6
|
+
const checkpointsTable = 'instance_ai_checkpoints';
|
|
7
|
+
const threadsTable = 'instance_ai_threads';
|
|
8
|
+
const userTable = 'user';
|
|
9
|
+
const checkpointTombstoneCheck = 'instance_ai_checkpoints_state_tombstone_check';
|
|
10
|
+
class PersistInstanceAiPendingConfirmations1784000000014 {
|
|
11
|
+
async up(context) {
|
|
12
|
+
const { schemaBuilder, queryRunner, tablePrefix } = context;
|
|
13
|
+
await schemaBuilder.addColumns(checkpointsTable, [
|
|
14
|
+
schemaBuilder
|
|
15
|
+
.column('expiredAt')
|
|
16
|
+
.timestampTimezone()
|
|
17
|
+
.comment('Soft-delete timestamp: null means live; non-null marks the row as a tombstone.'),
|
|
18
|
+
]);
|
|
19
|
+
await schemaBuilder.dropNotNull(checkpointsTable, 'state');
|
|
20
|
+
await queryRunner.createCheckConstraint(`${tablePrefix}${checkpointsTable}`, new typeorm_1.TableCheck({
|
|
21
|
+
name: `${tablePrefix}${checkpointTombstoneCheck}`,
|
|
22
|
+
expression: '("expiredAt" IS NOT NULL AND "state" IS NULL) OR "expiredAt" IS NULL',
|
|
23
|
+
}));
|
|
24
|
+
await this.createPendingConfirmationsTable(context);
|
|
25
|
+
}
|
|
26
|
+
async down({ schemaBuilder: { addNotNull, dropTable, dropColumns }, queryRunner, tablePrefix, runQuery, escape, }) {
|
|
27
|
+
await dropTable(pendingConfirmationsTable);
|
|
28
|
+
await queryRunner.dropCheckConstraint(`${tablePrefix}${checkpointsTable}`, `${tablePrefix}${checkpointTombstoneCheck}`);
|
|
29
|
+
const table = escape.tableName(checkpointsTable);
|
|
30
|
+
const stateCol = escape.columnName('state');
|
|
31
|
+
await runQuery(`DELETE FROM ${table} WHERE ${stateCol} IS NULL`);
|
|
32
|
+
await addNotNull(checkpointsTable, 'state');
|
|
33
|
+
await dropColumns(checkpointsTable, ['expiredAt']);
|
|
34
|
+
}
|
|
35
|
+
async createPendingConfirmationsTable({ schemaBuilder: { createTable, column }, }) {
|
|
36
|
+
await createTable(pendingConfirmationsTable)
|
|
37
|
+
.withColumns(column('requestId').varchar(36).primary.comment('HITL confirmation request identifier.'), column('threadId').uuid.notNull.comment('Instance AI thread that owns the confirmation.'), column('userId').uuid.notNull.comment('User who is expected to confirm or cancel.'), column('kind')
|
|
38
|
+
.varchar(16)
|
|
39
|
+
.notNull.withEnumCheck(['suspended', 'inline'])
|
|
40
|
+
.comment("'suspended' (resumable from checkpoint) or 'inline' (orchestrator-held Promise)."), column('runId')
|
|
41
|
+
.varchar(36)
|
|
42
|
+
.notNull.comment('External run ID; reused on resume for SSE correlation.'), column('toolCallId').varchar(64).comment('Suspended tool call awaiting confirmation.'), column('messageGroupId').varchar(36).comment('SSE event correlation group.'), column('checkpointKey')
|
|
43
|
+
.varchar(255)
|
|
44
|
+
.comment('FK to instance_ai_checkpoints.key; also the SDK runId used to resume.'), column('checkpointTaskId')
|
|
45
|
+
.varchar(36)
|
|
46
|
+
.comment('Set when the suspended run was a planned-task checkpoint follow-up.'), column('expiresAt')
|
|
47
|
+
.timestampTimezone()
|
|
48
|
+
.comment('TTL for the leader-only sweep; null disables auto-expiry.'))
|
|
49
|
+
.withIndexOn('threadId')
|
|
50
|
+
.withIndexOn('userId')
|
|
51
|
+
.withIndexOn('checkpointKey')
|
|
52
|
+
.withIndexOn('expiresAt')
|
|
53
|
+
.withForeignKey('threadId', {
|
|
54
|
+
tableName: threadsTable,
|
|
55
|
+
columnName: 'id',
|
|
56
|
+
onDelete: 'CASCADE',
|
|
57
|
+
})
|
|
58
|
+
.withForeignKey('userId', {
|
|
59
|
+
tableName: userTable,
|
|
60
|
+
columnName: 'id',
|
|
61
|
+
onDelete: 'CASCADE',
|
|
62
|
+
})
|
|
63
|
+
.withForeignKey('checkpointKey', {
|
|
64
|
+
tableName: checkpointsTable,
|
|
65
|
+
columnName: 'key',
|
|
66
|
+
onDelete: 'CASCADE',
|
|
67
|
+
}).withTimestamps;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
exports.PersistInstanceAiPendingConfirmations1784000000014 = PersistInstanceAiPendingConfirmations1784000000014;
|
|
71
|
+
//# sourceMappingURL=1784000000014-PersistInstanceAiPendingConfirmations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"1784000000014-PersistInstanceAiPendingConfirmations.js","sourceRoot":"","sources":["../../../src/migrations/common/1784000000014-PersistInstanceAiPendingConfirmations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { MigrationContext, ReversibleMigration } from '../migration-types';
|
|
2
|
+
export declare class UseSlugAsPrimaryKeyInMcpRegistryServer1784000000016 implements ReversibleMigration {
|
|
3
|
+
up({ copyTable, runQuery, escape, schemaBuilder: { createTable, dropTable, column }, }: MigrationContext): Promise<void>;
|
|
4
|
+
down({ copyTable, runQuery, escape, schemaBuilder: { createTable, dropTable, column }, }: MigrationContext): Promise<void>;
|
|
5
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UseSlugAsPrimaryKeyInMcpRegistryServer1784000000016 = void 0;
|
|
4
|
+
class UseSlugAsPrimaryKeyInMcpRegistryServer1784000000016 {
|
|
5
|
+
async up({ copyTable, runQuery, escape, schemaBuilder: { createTable, dropTable, column }, }) {
|
|
6
|
+
const tableName = 'mcp_registry_server';
|
|
7
|
+
const tempTableName = 'tmp_mcp_registry_server';
|
|
8
|
+
await createTable(tempTableName).withColumns(column('slug').varchar(255).primary, column('status')
|
|
9
|
+
.varchar(50)
|
|
10
|
+
.notNull.withEnumCheck(['active', 'deprecated'])
|
|
11
|
+
.comment('Server status in the MCP registry. Deprecated servers are not surfaced to users.'), column('version').varchar(50).notNull, column('registryUpdatedAt').timestampNoTimezone(3).notNull, column('data')
|
|
12
|
+
.json.notNull.default("'{}'")
|
|
13
|
+
.comment('JSON object containing server metadata (icons, remotes, tools, etc.)')).withTimestamps;
|
|
14
|
+
await copyTable(tableName, tempTableName, ['slug', 'status', 'version', 'registryUpdatedAt', 'data', 'createdAt', 'updatedAt'], ['slug', 'status', 'version', 'registryUpdatedAt', 'data', 'createdAt', 'updatedAt']);
|
|
15
|
+
await dropTable(tableName);
|
|
16
|
+
await runQuery(`ALTER TABLE ${escape.tableName(tempTableName)} RENAME TO ${escape.tableName(tableName)}`);
|
|
17
|
+
}
|
|
18
|
+
async down({ copyTable, runQuery, escape, schemaBuilder: { createTable, dropTable, column }, }) {
|
|
19
|
+
const tableName = 'mcp_registry_server';
|
|
20
|
+
const tempTableName = 'tmp_mcp_registry_server';
|
|
21
|
+
await createTable(tempTableName)
|
|
22
|
+
.withColumns(column('id').int.primary.autoGenerate2, column('slug').varchar(255).notNull, column('status')
|
|
23
|
+
.varchar(50)
|
|
24
|
+
.notNull.withEnumCheck(['active', 'deprecated'])
|
|
25
|
+
.comment('Server status in the MCP registry. Deprecated servers are not surfaced to users.'), column('version').varchar(50).notNull, column('registryUpdatedAt').timestampNoTimezone(3).notNull, column('data')
|
|
26
|
+
.json.notNull.default("'{}'")
|
|
27
|
+
.comment('JSON object containing server metadata (icons, remotes, tools, etc.)'))
|
|
28
|
+
.withUniqueConstraintOn(['slug']).withTimestamps;
|
|
29
|
+
await copyTable(tableName, tempTableName, ['slug', 'status', 'version', 'registryUpdatedAt', 'data', 'createdAt', 'updatedAt'], ['slug', 'status', 'version', 'registryUpdatedAt', 'data', 'createdAt', 'updatedAt']);
|
|
30
|
+
await dropTable(tableName);
|
|
31
|
+
await runQuery(`ALTER TABLE ${escape.tableName(tempTableName)} RENAME TO ${escape.tableName(tableName)}`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.UseSlugAsPrimaryKeyInMcpRegistryServer1784000000016 = UseSlugAsPrimaryKeyInMcpRegistryServer1784000000016;
|
|
35
|
+
//# sourceMappingURL=1784000000016-UseSlugAsPrimaryKeyInMcpRegistryServer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"1784000000016-UseSlugAsPrimaryKeyInMcpRegistryServer.js","sourceRoot":"","sources":["../../../src/migrations/common/1784000000016-UseSlugAsPrimaryKeyInMcpRegistryServer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { QueryRunner } from '@n8n/typeorm';
|
|
2
2
|
import { Column } from './column';
|
|
3
3
|
import { CreateIndex, DropIndex } from './indices';
|
|
4
|
-
import { AddColumns, AddForeignKey, AddNotNull, CreateTable, DropColumns, DropForeignKey, DropNotNull, DropTable } from './table';
|
|
4
|
+
import { AddColumns, AddEnumCheck, AddForeignKey, AddNotNull, CreateTable, DropColumns, DropEnumCheck, DropForeignKey, DropNotNull, DropTable } from './table';
|
|
5
5
|
export declare const createSchemaBuilder: (tablePrefix: string, queryRunner: QueryRunner) => {
|
|
6
6
|
column: (name: string) => Column;
|
|
7
7
|
createTable: (tableName: string) => CreateTable;
|
|
@@ -17,4 +17,6 @@ export declare const createSchemaBuilder: (tablePrefix: string, queryRunner: Que
|
|
|
17
17
|
dropForeignKey: (tableName: string, columnName: string, reference: [string, string], customConstraintName?: string) => DropForeignKey;
|
|
18
18
|
addNotNull: (tableName: string, columnName: string) => AddNotNull;
|
|
19
19
|
dropNotNull: (tableName: string, columnName: string) => DropNotNull;
|
|
20
|
+
addEnumCheck: (tableName: string, columnName: string, values: string[]) => AddEnumCheck;
|
|
21
|
+
dropEnumCheck: (tableName: string, columnName: string) => DropEnumCheck;
|
|
20
22
|
};
|
|
@@ -18,6 +18,8 @@ const createSchemaBuilder = (tablePrefix, queryRunner) => ({
|
|
|
18
18
|
dropForeignKey: (tableName, columnName, reference, customConstraintName) => new table_1.DropForeignKey(tableName, columnName, reference, tablePrefix, queryRunner, customConstraintName),
|
|
19
19
|
addNotNull: (tableName, columnName) => new table_1.AddNotNull(tableName, columnName, tablePrefix, queryRunner),
|
|
20
20
|
dropNotNull: (tableName, columnName) => new table_1.DropNotNull(tableName, columnName, tablePrefix, queryRunner),
|
|
21
|
+
addEnumCheck: (tableName, columnName, values) => new table_1.AddEnumCheck(tableName, columnName, values, tablePrefix, queryRunner),
|
|
22
|
+
dropEnumCheck: (tableName, columnName) => new table_1.DropEnumCheck(tableName, columnName, tablePrefix, queryRunner),
|
|
21
23
|
});
|
|
22
24
|
exports.createSchemaBuilder = createSchemaBuilder;
|
|
23
25
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/migrations/dsl/index.ts"],"names":[],"mappings":";;;AAEA,qCAAkC;AAClC,uCAAmD;AACnD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/migrations/dsl/index.ts"],"names":[],"mappings":";;;AAEA,qCAAkC;AAClC,uCAAmD;AACnD,mCAWiB;AAEV,MAAM,mBAAmB,GAAG,CAAC,WAAmB,EAAE,WAAwB,EAAE,EAAE,CAAC,CAAC;IACtF,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,eAAM,CAAC,IAAI,CAAC;IAG1C,WAAW,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,IAAI,mBAAW,CAAC,SAAS,EAAE,WAAW,EAAE,WAAW,CAAC;IAExF,SAAS,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,IAAI,iBAAS,CAAC,SAAS,EAAE,WAAW,EAAE,WAAW,CAAC;IAEpF,UAAU,EAAE,CAAC,SAAiB,EAAE,OAAiB,EAAE,EAAE,CACpD,IAAI,kBAAU,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC;IAC7D,WAAW,EAAE,CAAC,SAAiB,EAAE,WAAqB,EAAE,EAAE,CACzD,IAAI,mBAAW,CAAC,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC;IAOlE,WAAW,EAAE,CACZ,SAAiB,EACjB,WAAqB,EACrB,QAAQ,GAAG,KAAK,EAChB,eAAwB,EACxB,WAAoB,EACnB,EAAE,CACH,IAAI,qBAAW,CACd,SAAS,EACT,WAAW,EACX,QAAQ,EACR,WAAW,EACX,WAAW,EACX,eAAe,EACf,WAAW,CACX;IAEF,SAAS,EAAE,CACV,SAAiB,EACjB,WAAqB,EACrB,EAAE,eAAe,EAAE,aAAa,KAA4D;QAC3F,aAAa,EAAE,KAAK;KACpB,EACA,EAAE,CACH,IAAI,mBAAS,CAAC,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,CAAC;IAEhG,aAAa,EAAE,CACd,SAAiB,EACjB,UAAkB,EAClB,SAA2B,EAC3B,oBAA6B,EAC7B,QAA4D,EAC3D,EAAE,CACH,IAAI,qBAAa,CAChB,SAAS,EACT,UAAU,EACV,SAAS,EACT,WAAW,EACX,WAAW,EACX,oBAAoB,EACpB,QAAQ,CACR;IAEF,cAAc,EAAE,CACf,SAAiB,EACjB,UAAkB,EAClB,SAA2B,EAC3B,oBAA6B,EAC5B,EAAE,CACH,IAAI,sBAAc,CACjB,SAAS,EACT,UAAU,EACV,SAAS,EACT,WAAW,EACX,WAAW,EACX,oBAAoB,CACpB;IAEF,UAAU,EAAE,CAAC,SAAiB,EAAE,UAAkB,EAAE,EAAE,CACrD,IAAI,kBAAU,CAAC,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,CAAC;IAChE,WAAW,EAAE,CAAC,SAAiB,EAAE,UAAkB,EAAE,EAAE,CACtD,IAAI,mBAAW,CAAC,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,CAAC;IAGjE,YAAY,EAAE,CAAC,SAAiB,EAAE,UAAkB,EAAE,MAAgB,EAAE,EAAE,CACzE,IAAI,oBAAY,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC;IAE1E,aAAa,EAAE,CAAC,SAAiB,EAAE,UAAkB,EAAE,EAAE,CACxD,IAAI,qBAAa,CAAC,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,CAAC;CAGnE,CAAC,CAAC;AAzFU,QAAA,mBAAmB,uBAyF7B"}
|
|
@@ -66,4 +66,15 @@ export declare class DropNotNull extends ModifyNotNull {
|
|
|
66
66
|
protected columnName: string;
|
|
67
67
|
constructor(tableName: string, columnName: string, prefix: string, queryRunner: QueryRunner);
|
|
68
68
|
}
|
|
69
|
+
export declare class DropEnumCheck extends TableOperation {
|
|
70
|
+
protected columnName: string;
|
|
71
|
+
constructor(tableName: string, columnName: string, prefix: string, queryRunner: QueryRunner);
|
|
72
|
+
execute(queryRunner: QueryRunner): Promise<void>;
|
|
73
|
+
}
|
|
74
|
+
export declare class AddEnumCheck extends TableOperation {
|
|
75
|
+
protected columnName: string;
|
|
76
|
+
protected values: string[];
|
|
77
|
+
constructor(tableName: string, columnName: string, values: string[], prefix: string, queryRunner: QueryRunner);
|
|
78
|
+
execute(queryRunner: QueryRunner): Promise<void>;
|
|
79
|
+
}
|
|
69
80
|
export {};
|
|
@@ -3,24 +3,23 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.DropNotNull = exports.AddNotNull = exports.DropForeignKey = exports.AddForeignKey = exports.DropColumns = exports.AddColumns = exports.DropTable = exports.CreateTable = void 0;
|
|
6
|
+
exports.AddEnumCheck = exports.DropEnumCheck = exports.DropNotNull = exports.AddNotNull = exports.DropForeignKey = exports.AddForeignKey = exports.DropColumns = exports.AddColumns = exports.DropTable = exports.CreateTable = void 0;
|
|
7
7
|
const typeorm_1 = require("@n8n/typeorm");
|
|
8
8
|
const n8n_workflow_1 = require("n8n-workflow");
|
|
9
9
|
const p_lazy_1 = __importDefault(require("p-lazy"));
|
|
10
10
|
const column_1 = require("./column");
|
|
11
|
+
function buildEnumCheck(columnName, values, prefix, tableName, driver) {
|
|
12
|
+
const checkName = `CHK_${prefix}${tableName}_${columnName}`;
|
|
13
|
+
const escapedColumnName = driver.escape(columnName);
|
|
14
|
+
const escapedValues = values.map((v) => `'${v.replace(/'/g, "''")}'`).join(', ');
|
|
15
|
+
const expression = `${escapedColumnName} IN (${escapedValues})`;
|
|
16
|
+
return new typeorm_1.TableCheck({ name: checkName, expression });
|
|
17
|
+
}
|
|
11
18
|
function buildEnumChecks(columns, prefix, tableName, driver) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const checkName = `CHK_${prefix}${tableName}_${enumCheck.columnName}`;
|
|
17
|
-
const escapedColumnName = driver.escape(enumCheck.columnName);
|
|
18
|
-
const escapedValues = enumCheck.values.map((v) => `'${v.replace(/'/g, "''")}'`).join(', ');
|
|
19
|
-
const expression = `${escapedColumnName} IN (${escapedValues})`;
|
|
20
|
-
checks.push(new typeorm_1.TableCheck({ name: checkName, expression }));
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
return checks;
|
|
19
|
+
return columns
|
|
20
|
+
.map((column) => column.getEnumCheck())
|
|
21
|
+
.filter((enumCheck) => enumCheck !== undefined)
|
|
22
|
+
.map((enumCheck) => buildEnumCheck(enumCheck.columnName, enumCheck.values, prefix, tableName, driver));
|
|
24
23
|
}
|
|
25
24
|
class TableOperation extends p_lazy_1.default {
|
|
26
25
|
constructor(tableName, prefix, queryRunner) {
|
|
@@ -190,4 +189,33 @@ class DropNotNull extends ModifyNotNull {
|
|
|
190
189
|
}
|
|
191
190
|
}
|
|
192
191
|
exports.DropNotNull = DropNotNull;
|
|
192
|
+
class DropEnumCheck extends TableOperation {
|
|
193
|
+
constructor(tableName, columnName, prefix, queryRunner) {
|
|
194
|
+
super(tableName, prefix, queryRunner);
|
|
195
|
+
this.columnName = columnName;
|
|
196
|
+
}
|
|
197
|
+
async execute(queryRunner) {
|
|
198
|
+
const { tableName, prefix, columnName } = this;
|
|
199
|
+
const fullTableName = `${prefix}${tableName}`;
|
|
200
|
+
const checkName = `CHK_${prefix}${tableName}_${columnName}`;
|
|
201
|
+
return await queryRunner.dropCheckConstraint(fullTableName, checkName);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
exports.DropEnumCheck = DropEnumCheck;
|
|
205
|
+
class AddEnumCheck extends TableOperation {
|
|
206
|
+
constructor(tableName, columnName, values, prefix, queryRunner) {
|
|
207
|
+
super(tableName, prefix, queryRunner);
|
|
208
|
+
this.columnName = columnName;
|
|
209
|
+
this.values = values;
|
|
210
|
+
}
|
|
211
|
+
async execute(queryRunner) {
|
|
212
|
+
const { tableName, prefix, columnName, values } = this;
|
|
213
|
+
const { driver } = queryRunner.connection;
|
|
214
|
+
const fullTableName = `${prefix}${tableName}`;
|
|
215
|
+
return await queryRunner.createCheckConstraints(fullTableName, [
|
|
216
|
+
buildEnumCheck(columnName, values, prefix, tableName, driver),
|
|
217
|
+
]);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
exports.AddEnumCheck = AddEnumCheck;
|
|
193
221
|
//# sourceMappingURL=table.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.js","sourceRoot":"","sources":["../../../src/migrations/dsl/table.ts"],"names":[],"mappings":";;;;;;AACA,0CAA4F;AAC5F,+CAA+C;AAC/C,oDAAiC;AAEjC,qCAAkC;AAElC,SAAS,
|
|
1
|
+
{"version":3,"file":"table.js","sourceRoot":"","sources":["../../../src/migrations/dsl/table.ts"],"names":[],"mappings":";;;;;;AACA,0CAA4F;AAC5F,+CAA+C;AAC/C,oDAAiC;AAEjC,qCAAkC;AAElC,SAAS,cAAc,CACtB,UAAkB,EAClB,MAAgB,EAChB,MAAc,EACd,SAAiB,EACjB,MAAc;IAEd,MAAM,SAAS,GAAG,OAAO,MAAM,GAAG,SAAS,IAAI,UAAU,EAAE,CAAC;IAC5D,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACpD,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjF,MAAM,UAAU,GAAG,GAAG,iBAAiB,QAAQ,aAAa,GAAG,CAAC;IAChE,OAAO,IAAI,oBAAU,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,eAAe,CACvB,OAAiB,EACjB,MAAc,EACd,SAAiB,EACjB,MAAc;IAEd,OAAO,OAAO;SACZ,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;SACtC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,KAAK,SAAS,CAAC;SAC9C,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAClB,cAAc,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CACjF,CAAC;AACJ,CAAC;AAED,MAAe,cAAyB,SAAQ,gBAAc;IAG7D,YACW,SAAiB,EACjB,MAAc,EACxB,WAAwB;QAExB,KAAK,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACzB,KAAK,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QANO,cAAS,GAAT,SAAS,CAAQ;QACjB,WAAM,GAAN,MAAM,CAAQ;IAMzB,CAAC;CACD;AAED,MAAa,WAAY,SAAQ,cAAc;IAA/C;;QACS,YAAO,GAAa,EAAE,CAAC;QAEvB,YAAO,GAAG,IAAI,GAAG,EAAqB,CAAC;QAEvC,sBAAiB,GAAG,IAAI,GAAG,EAAe,CAAC;QAE3C,gBAAW,GAAG,IAAI,GAAG,EAA0B,CAAC;QAEhD,WAAM,GAAG,IAAI,GAAG,EAAc,CAAC;IAuFxC,CAAC;IArFA,WAAW,CAAC,GAAG,OAAiB;QAC/B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,cAAc;QACjB,IAAI,CAAC,OAAO,CAAC,IAAI,CAChB,IAAI,eAAM,CAAC,WAAW,CAAC,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAC5D,IAAI,eAAM,CAAC,WAAW,CAAC,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAC5D,CAAC;QACF,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,aAAa;QAChB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,eAAM,CAAC,WAAW,CAAC,CAAC,iBAAiB,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QACxF,OAAO,IAAI,CAAC;IACb,CAAC;IAED,WAAW,CAAC,UAA6B,EAAE,QAAQ,GAAG,KAAK;QAC1D,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QAC1E,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC;IACb,CAAC;IAED,sBAAsB,CAAC,UAA6B;QACnD,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QAC1E,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,qBAAW,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC;IACb,CAAC;IAED,SAAS,CAAC,IAAY,EAAE,UAAkB;QACzC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,oBAAU,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IACb,CAAC;IAED,cAAc,CACb,UAAkB,EAClB,GAMC;QAED,MAAM,UAAU,GAA2B;YAC1C,WAAW,EAAE,CAAC,UAAU,CAAC;YACzB,mBAAmB,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE;YACrD,qBAAqB,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC;SACvC,CAAC;QACF,IAAI,GAAG,CAAC,QAAQ;YAAE,UAAU,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;QACrD,IAAI,GAAG,CAAC,QAAQ;YAAE,UAAU,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;QACrD,IAAI,GAAG,CAAC,IAAI;YAAE,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QACzC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IACb,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,WAAwB;QACrC,MAAM,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC,UAAU,CAAC;QAC1C,MAAM,EACL,OAAO,EACP,SAAS,EAAE,IAAI,EACf,MAAM,EACN,OAAO,EACP,iBAAiB,EACjB,WAAW,EACX,MAAM,GACN,GAAG,IAAI,CAAC;QAET,KAAK,MAAM,KAAK,IAAI,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;YACpE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC;QAED,OAAO,MAAM,WAAW,CAAC,WAAW,CACnC,IAAI,eAAK,CAAC;YACT,IAAI,EAAE,GAAG,MAAM,GAAG,IAAI,EAAE;YACxB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAChD,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClD,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtE,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/C,CAAC,EACF,IAAI,CACJ,CAAC;IACH,CAAC;CACD;AAhGD,kCAgGC;AAED,MAAa,SAAU,SAAQ,cAAc;IAC5C,KAAK,CAAC,OAAO,CAAC,WAAwB;QACrC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACzC,OAAO,MAAM,WAAW,CAAC,SAAS,CAAC,GAAG,MAAM,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;IAC9D,CAAC;CACD;AALD,8BAKC;AAED,MAAa,UAAW,SAAQ,cAAc;IAC7C,YACC,SAAiB,EACP,OAAiB,EAC3B,MAAc,EACd,WAAwB;QAExB,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAJ5B,YAAO,GAAP,OAAO,CAAU;IAK5B,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,WAAwB;QACrC,MAAM,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC,UAAU,CAAC;QAC1C,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAC5C,MAAM,aAAa,GAAG,GAAG,MAAM,GAAG,SAAS,EAAE,CAAC;QAE9C,MAAM,WAAW,CAAC,UAAU,CAC3B,aAAa,EACb,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,qBAAW,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CACxD,CAAC;QAEF,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACvE,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,WAAW,CAAC,sBAAsB,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;QACrE,CAAC;IACF,CAAC;CACD;AAzBD,gCAyBC;AAED,MAAa,WAAY,SAAQ,cAAc;IAC9C,YACC,SAAiB,EACP,WAAqB,EAC/B,MAAc,EACd,WAAwB;QAExB,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAJ5B,gBAAW,GAAX,WAAW,CAAU;IAKhC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,WAAwB;QACrC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;QAChD,OAAO,MAAM,WAAW,CAAC,WAAW,CAAC,GAAG,MAAM,GAAG,SAAS,EAAE,EAAE,WAAW,CAAC,CAAC;IAC5E,CAAC;CACD;AAdD,kCAcC;AAED,MAAe,mBAAoB,SAAQ,cAAc;IAGxD,YACC,SAAiB,EACjB,UAAkB,EAClB,CAAC,mBAAmB,EAAE,oBAAoB,CAAmB,EAC7D,MAAc,EACd,WAAwB,EACxB,oBAA6B,EAC7B,QAAiB;QAEjB,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAEtC,IAAI,CAAC,UAAU,GAAG,IAAI,yBAAe,CAAC;YACrC,IAAI,EAAE,oBAAoB;YAC1B,WAAW,EAAE,CAAC,UAAU,CAAC;YACzB,mBAAmB,EAAE,GAAG,MAAM,GAAG,mBAAmB,EAAE;YACtD,qBAAqB,EAAE,CAAC,oBAAoB,CAAC;YAC7C,QAAQ;SACR,CAAC,CAAC;IACJ,CAAC;CACD;AAED,MAAa,aAAc,SAAQ,mBAAmB;IACrD,KAAK,CAAC,OAAO,CAAC,WAAwB;QACrC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACnC,OAAO,MAAM,WAAW,CAAC,gBAAgB,CAAC,GAAG,MAAM,GAAG,SAAS,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACrF,CAAC;CACD;AALD,sCAKC;AAED,MAAa,cAAe,SAAQ,mBAAmB;IACtD,KAAK,CAAC,OAAO,CAAC,WAAwB;QACrC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACnC,OAAO,MAAM,WAAW,CAAC,cAAc,CAAC,GAAG,MAAM,GAAG,SAAS,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACnF,CAAC;CACD;AALD,wCAKC;AAED,MAAM,aAAc,SAAQ,cAAc;IACzC,YACC,SAAiB,EACP,UAAkB,EAClB,UAAmB,EAC7B,MAAc,EACd,WAAwB;QAExB,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAL5B,eAAU,GAAV,UAAU,CAAQ;QAClB,eAAU,GAAV,UAAU,CAAS;IAK9B,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,WAAwB;QACrC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAC3D,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,GAAG,MAAM,GAAG,SAAS,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,8BAAe,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;QAClF,MAAM,SAAS,GAAG,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAE,CAAC;QACtD,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;QACpC,SAAS,CAAC,UAAU,GAAG,UAAU,CAAC;QAClC,OAAO,MAAM,WAAW,CAAC,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACpE,CAAC;CACD;AAED,MAAa,UAAW,SAAQ,aAAa;IAC5C,YACC,SAAiB,EACP,UAAkB,EAC5B,MAAc,EACd,WAAwB;QAExB,KAAK,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAJ/C,eAAU,GAAV,UAAU,CAAQ;IAK7B,CAAC;CACD;AATD,gCASC;AAED,MAAa,WAAY,SAAQ,aAAa;IAC7C,YACC,SAAiB,EACP,UAAkB,EAC5B,MAAc,EACd,WAAwB;QAExB,KAAK,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAJ9C,eAAU,GAAV,UAAU,CAAQ;IAK7B,CAAC;CACD;AATD,kCASC;AAED,MAAa,aAAc,SAAQ,cAAc;IAChD,YACC,SAAiB,EACP,UAAkB,EAC5B,MAAc,EACd,WAAwB;QAExB,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAJ5B,eAAU,GAAV,UAAU,CAAQ;IAK7B,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,WAAwB;QACrC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAC/C,MAAM,aAAa,GAAG,GAAG,MAAM,GAAG,SAAS,EAAE,CAAC;QAC9C,MAAM,SAAS,GAAG,OAAO,MAAM,GAAG,SAAS,IAAI,UAAU,EAAE,CAAC;QAC5D,OAAO,MAAM,WAAW,CAAC,mBAAmB,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IACxE,CAAC;CACD;AAhBD,sCAgBC;AAED,MAAa,YAAa,SAAQ,cAAc;IAC/C,YACC,SAAiB,EACP,UAAkB,EAClB,MAAgB,EAC1B,MAAc,EACd,WAAwB;QAExB,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAL5B,eAAU,GAAV,UAAU,CAAQ;QAClB,WAAM,GAAN,MAAM,CAAU;IAK3B,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,WAAwB;QACrC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACvD,MAAM,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC,UAAU,CAAC;QAC1C,MAAM,aAAa,GAAG,GAAG,MAAM,GAAG,SAAS,EAAE,CAAC;QAC9C,OAAO,MAAM,WAAW,CAAC,sBAAsB,CAAC,aAAa,EAAE;YAC9D,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC;SAC7D,CAAC,CAAC;IACJ,CAAC;CACD;AAnBD,oCAmBC"}
|