@memberjunction/metadata-sync 6.2.0-edge.5 → 6.2.0-edge.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +151 -2
- package/dist/config.d.ts +37 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/RecordProcessor.d.ts +16 -0
- package/dist/lib/RecordProcessor.d.ts.map +1 -1
- package/dist/lib/RecordProcessor.js +51 -4
- package/dist/lib/RecordProcessor.js.map +1 -1
- package/dist/lib/collection-promotion.d.ts +89 -0
- package/dist/lib/collection-promotion.d.ts.map +1 -0
- package/dist/lib/collection-promotion.js +154 -0
- package/dist/lib/collection-promotion.js.map +1 -0
- package/dist/lib/deletion-auditor.d.ts.map +1 -1
- package/dist/lib/deletion-auditor.js +1 -1
- package/dist/lib/deletion-auditor.js.map +1 -1
- package/dist/lib/deletion-prescan.d.ts +26 -0
- package/dist/lib/deletion-prescan.d.ts.map +1 -0
- package/dist/lib/deletion-prescan.js +56 -0
- package/dist/lib/deletion-prescan.js.map +1 -0
- package/dist/lib/env-sql-redactor.d.ts +1 -1
- package/dist/lib/env-sql-redactor.d.ts.map +1 -1
- package/dist/lib/env-sql-redactor.js +7 -72
- package/dist/lib/env-sql-redactor.js.map +1 -1
- package/dist/lib/lookup-sql.d.ts +109 -0
- package/dist/lib/lookup-sql.d.ts.map +1 -0
- package/dist/lib/lookup-sql.js +243 -0
- package/dist/lib/lookup-sql.js.map +1 -0
- package/dist/lib/natural-key-preflight.d.ts +86 -0
- package/dist/lib/natural-key-preflight.d.ts.map +1 -0
- package/dist/lib/natural-key-preflight.js +174 -0
- package/dist/lib/natural-key-preflight.js.map +1 -0
- package/dist/lib/record-dependency-analyzer.d.ts +14 -3
- package/dist/lib/record-dependency-analyzer.d.ts.map +1 -1
- package/dist/lib/record-dependency-analyzer.js +59 -72
- package/dist/lib/record-dependency-analyzer.js.map +1 -1
- package/dist/lib/schema-placeholders.d.ts +29 -0
- package/dist/lib/schema-placeholders.d.ts.map +1 -0
- package/dist/lib/schema-placeholders.js +72 -0
- package/dist/lib/schema-placeholders.js.map +1 -0
- package/dist/lib/sql-log-filters.d.ts +31 -0
- package/dist/lib/sql-log-filters.d.ts.map +1 -0
- package/dist/lib/sql-log-filters.js +41 -0
- package/dist/lib/sql-log-filters.js.map +1 -0
- package/dist/lib/sql-logger.d.ts +9 -1
- package/dist/lib/sql-logger.d.ts.map +1 -1
- package/dist/lib/sql-logger.js +12 -7
- package/dist/lib/sql-logger.js.map +1 -1
- package/dist/lib/sql-set-line.d.ts +26 -0
- package/dist/lib/sql-set-line.d.ts.map +1 -0
- package/dist/lib/sql-set-line.js +84 -0
- package/dist/lib/sql-set-line.js.map +1 -0
- package/dist/lib/sync-engine.d.ts +14 -2
- package/dist/lib/sync-engine.d.ts.map +1 -1
- package/dist/lib/sync-engine.js +68 -9
- package/dist/lib/sync-engine.js.map +1 -1
- package/dist/services/PullService.d.ts +2 -0
- package/dist/services/PullService.d.ts.map +1 -1
- package/dist/services/PullService.js +20 -2
- package/dist/services/PullService.js.map +1 -1
- package/dist/services/PushService.d.ts +42 -0
- package/dist/services/PushService.d.ts.map +1 -1
- package/dist/services/PushService.js +180 -58
- package/dist/services/PushService.js.map +1 -1
- package/dist/services/ValidationService.d.ts +31 -0
- package/dist/services/ValidationService.d.ts.map +1 -1
- package/dist/services/ValidationService.js +135 -9
- package/dist/services/ValidationService.js.map +1 -1
- package/dist/services/WatchService.d.ts +2 -0
- package/dist/services/WatchService.d.ts.map +1 -1
- package/dist/services/WatchService.js +19 -2
- package/dist/services/WatchService.js.map +1 -1
- package/package.json +15 -15
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Pre-flight for a create that a unique constraint would reject (#4400).
|
|
3
|
+
*
|
|
4
|
+
* A seed record with a literal primary key that is not in the database is created with that key.
|
|
5
|
+
* When the database already has a row with the same natural key under another ID (CodeGen and
|
|
6
|
+
* other server-side code create rows with database-generated IDs), the create violates the unique
|
|
7
|
+
* constraint and the push stops on a driver error. This check runs first: for each unique key of
|
|
8
|
+
* the table, it looks the record's values up and, on a hit, reports the existing row's key so the
|
|
9
|
+
* seed can be re-keyed with `@lookup`.
|
|
10
|
+
* @module natural-key-preflight
|
|
11
|
+
*/
|
|
12
|
+
import { RunView } from '@memberjunction/core';
|
|
13
|
+
/** Finds the existing row, if any, that a create of `entity` would collide with on a unique key. */
|
|
14
|
+
export class NaturalKeyPreflight {
|
|
15
|
+
constructor(reader) {
|
|
16
|
+
this.reader = reader;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* The first unique key whose values another row already holds, or null. A key is checked only
|
|
20
|
+
* when every one of its columns is a field of the entity with a non-null value and no column is
|
|
21
|
+
* part of the primary key.
|
|
22
|
+
*/
|
|
23
|
+
async Check(entity) {
|
|
24
|
+
const info = entity.EntityInfo;
|
|
25
|
+
const keys = await this.reader.UniqueKeys(info);
|
|
26
|
+
if (keys.length === 0) {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
const keyNames = new Set(info.PrimaryKeys.map((pk) => pk.Name.toLowerCase()));
|
|
30
|
+
for (const key of keys) {
|
|
31
|
+
const values = this.keyValues(entity, key, keyNames);
|
|
32
|
+
if (!values) {
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
const existing = await this.reader.FindKey(info, values);
|
|
36
|
+
if (existing && !samePrimaryKey(entity, existing)) {
|
|
37
|
+
return { KeyName: key.Name, Fields: values.map((value) => value.Field.Name), ExistingKey: existing };
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
keyValues(entity, key, keyNames) {
|
|
43
|
+
if (key.Columns.length === 0) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
const values = [];
|
|
47
|
+
for (const column of key.Columns) {
|
|
48
|
+
if (keyNames.has(column.toLowerCase())) {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
const field = entity.EntityInfo.Fields.find((candidate) => candidate.Name.toLowerCase() === column.toLowerCase());
|
|
52
|
+
const value = field ? entity.Get(field.Name) : undefined;
|
|
53
|
+
if (!field || value === null || value === undefined) {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
values.push({ Field: field, Value: value });
|
|
57
|
+
}
|
|
58
|
+
return values;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/** True when `existing` is the entity's own key (compared without regard to case). */
|
|
62
|
+
function samePrimaryKey(entity, existing) {
|
|
63
|
+
return entity.EntityInfo.PrimaryKeys.every((pk) => String(entity.Get(pk.Name) ?? '').trim().toLowerCase() === String(existing[pk.Name] ?? '').trim().toLowerCase());
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Reads unique keys from the database catalog (unfiltered unique indexes and unique constraints,
|
|
67
|
+
* not the primary key) and finds rows with `RunView` on the record's provider, so the lookup sees
|
|
68
|
+
* rows the push transaction wrote. Catalog reads go to the pool and are never logged. A catalog
|
|
69
|
+
* read that fails gives no keys, so the check is skipped rather than failing the push.
|
|
70
|
+
*/
|
|
71
|
+
export class DatabaseNaturalKeyReader {
|
|
72
|
+
/**
|
|
73
|
+
* `rowProvider` is the provider rows are found on (the record's, so the read joins its
|
|
74
|
+
* transaction); `cache` (entity name → keys) can be shared by readers that find rows on
|
|
75
|
+
* different providers.
|
|
76
|
+
*/
|
|
77
|
+
constructor(provider, contextUser, rowProvider, cache = new Map()) {
|
|
78
|
+
this.provider = provider;
|
|
79
|
+
this.contextUser = contextUser;
|
|
80
|
+
this.rowProvider = rowProvider;
|
|
81
|
+
this.cache = cache;
|
|
82
|
+
}
|
|
83
|
+
UniqueKeys(info) {
|
|
84
|
+
let keys = this.cache.get(info.Name);
|
|
85
|
+
if (!keys) {
|
|
86
|
+
keys = this.readUniqueKeys(info);
|
|
87
|
+
this.cache.set(info.Name, keys);
|
|
88
|
+
}
|
|
89
|
+
return keys;
|
|
90
|
+
}
|
|
91
|
+
async FindKey(info, values) {
|
|
92
|
+
// Quoted, so a reserved-word or spaced column name still filters (rather than failing the read)
|
|
93
|
+
const filter = values.map(({ Field, Value }) => `${this.provider.QuoteIdentifier(Field.Name)} = ${this.literal(Field, Value)}`).join(' AND ');
|
|
94
|
+
const rv = this.rowProvider ? RunView.FromMetadataProvider(this.rowProvider) : new RunView();
|
|
95
|
+
const result = await rv.RunView({
|
|
96
|
+
EntityName: info.Name,
|
|
97
|
+
ExtraFilter: filter,
|
|
98
|
+
Fields: info.PrimaryKeys.map((pk) => pk.Name),
|
|
99
|
+
MaxRows: 1,
|
|
100
|
+
SkipTotalRowCount: true,
|
|
101
|
+
ResultType: 'simple',
|
|
102
|
+
}, this.contextUser);
|
|
103
|
+
return result.Success && result.Results.length > 0 ? result.Results[0] : null;
|
|
104
|
+
}
|
|
105
|
+
async readUniqueKeys(info) {
|
|
106
|
+
try {
|
|
107
|
+
const rows = await this.provider.ExecuteSQL(UniqueKeyCatalogSQL(this.provider.PlatformKey, info.SchemaName, info.BaseTable), undefined, { ignoreLogging: true, isMutation: false, ignoreAmbientTransaction: true }, this.contextUser);
|
|
108
|
+
return GroupUniqueKeyRows(rows);
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
return [];
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
literal(field, value) {
|
|
115
|
+
if (value instanceof Date) {
|
|
116
|
+
return `'${value.toISOString()}'`;
|
|
117
|
+
}
|
|
118
|
+
if (typeof value === 'boolean') {
|
|
119
|
+
if (this.provider.PlatformKey === 'postgresql') {
|
|
120
|
+
return value ? 'true' : 'false';
|
|
121
|
+
}
|
|
122
|
+
return value ? '1' : '0';
|
|
123
|
+
}
|
|
124
|
+
const text = String(value).replace(/'/g, "''");
|
|
125
|
+
return field.NeedsQuotes ? `'${text}'` : text;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/** The catalog query listing a table's unfiltered unique keys other than the primary key, one row per column in key order. */
|
|
129
|
+
export function UniqueKeyCatalogSQL(platformKey, schemaName, tableName) {
|
|
130
|
+
const schema = schemaName.replace(/'/g, "''");
|
|
131
|
+
const table = tableName.replace(/'/g, "''");
|
|
132
|
+
if (platformKey === 'postgresql') {
|
|
133
|
+
return `SELECT ix.relname AS "IndexName", a.attname AS "ColumnName"
|
|
134
|
+
FROM pg_index x
|
|
135
|
+
JOIN pg_class t ON t.oid = x.indrelid
|
|
136
|
+
JOIN pg_namespace n ON n.oid = t.relnamespace
|
|
137
|
+
JOIN pg_class ix ON ix.oid = x.indexrelid
|
|
138
|
+
JOIN LATERAL unnest(x.indkey) WITH ORDINALITY AS k(attnum, ord) ON true
|
|
139
|
+
JOIN pg_attribute a ON a.attrelid = t.oid AND a.attnum = k.attnum
|
|
140
|
+
WHERE x.indisunique AND NOT x.indisprimary AND x.indpred IS NULL
|
|
141
|
+
AND n.nspname = '${schema}' AND t.relname = '${table}'
|
|
142
|
+
ORDER BY ix.relname, k.ord`;
|
|
143
|
+
}
|
|
144
|
+
return `SELECT i.name AS IndexName, c.name AS ColumnName
|
|
145
|
+
FROM sys.indexes i
|
|
146
|
+
JOIN sys.index_columns ic ON ic.object_id = i.object_id AND ic.index_id = i.index_id
|
|
147
|
+
JOIN sys.columns c ON c.object_id = ic.object_id AND c.column_id = ic.column_id
|
|
148
|
+
WHERE i.object_id = OBJECT_ID(N'[${schema.replace(/]/g, ']]')}].[${table.replace(/]/g, ']]')}]')
|
|
149
|
+
AND i.is_unique = 1 AND i.is_primary_key = 0 AND i.has_filter = 0 AND ic.is_included_column = 0
|
|
150
|
+
ORDER BY i.name, ic.key_ordinal`;
|
|
151
|
+
}
|
|
152
|
+
/** Catalog rows grouped into keys, in row order. */
|
|
153
|
+
export function GroupUniqueKeyRows(rows) {
|
|
154
|
+
const byName = new Map();
|
|
155
|
+
for (const row of rows) {
|
|
156
|
+
const columns = byName.get(row.IndexName) ?? [];
|
|
157
|
+
columns.push(row.ColumnName);
|
|
158
|
+
byName.set(row.IndexName, columns);
|
|
159
|
+
}
|
|
160
|
+
return [...byName].map(([Name, Columns]) => ({ Name, Columns }));
|
|
161
|
+
}
|
|
162
|
+
/** The pre-flight error for a conflict. `recordKey` is the record's key as it may be shown. */
|
|
163
|
+
export function NaturalKeyConflictMessage(entityName, recordKey, conflict) {
|
|
164
|
+
const existing = Object.entries(conflict.ExistingKey)
|
|
165
|
+
.map(([field, value]) => `${field}=${String(value)}`)
|
|
166
|
+
.join(', ');
|
|
167
|
+
const fields = conflict.Fields.join(', ');
|
|
168
|
+
const example = conflict.Fields.map((field) => `${field}=…`).join('&');
|
|
169
|
+
return (`${entityName}: no row has primary key {${recordKey}}, but row {${existing}} already has the same ${fields} ` +
|
|
170
|
+
`(unique key ${conflict.KeyName}), so creating this record would violate it. That row's ID was made by this ` +
|
|
171
|
+
`database, so a literal ID in metadata cannot match it. Re-key the record's primaryKey with @lookup on ` +
|
|
172
|
+
`${fields}, for example "@lookup:${entityName}.${example}".`);
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=natural-key-preflight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"natural-key-preflight.js","sourceRoot":"","sources":["../../src/lib/natural-key-preflight.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { RecordData } from './sync-engine.js';
|
|
2
|
+
import type { CollectionPromotionResolver } from './collection-promotion.js';
|
|
2
3
|
/**
|
|
3
4
|
* Represents a flattened record with its context and dependencies
|
|
4
5
|
*/
|
|
@@ -44,6 +45,13 @@ export interface DependencyAnalysisResult {
|
|
|
44
45
|
dependencyGraph: Map<string, Set<string>>;
|
|
45
46
|
dependencyLevels?: FlattenedRecord[][];
|
|
46
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* Depth-first topological order: each record comes after every record it depends on that is in
|
|
50
|
+
* `byId`. Records with no dependencies are started first, then the rest in input order. A cycle is
|
|
51
|
+
* broken where the walk meets it (cycles are reported separately); a dependency missing from `byId`
|
|
52
|
+
* is skipped.
|
|
53
|
+
*/
|
|
54
|
+
export declare function DependencyOrder(records: FlattenedRecord[], byId: ReadonlyMap<string, FlattenedRecord>): FlattenedRecord[];
|
|
47
55
|
/**
|
|
48
56
|
* Analyzes and sorts records based on their dependencies
|
|
49
57
|
*/
|
|
@@ -57,6 +65,7 @@ export declare class RecordDependencyAnalyzer {
|
|
|
57
65
|
private recordIdMap;
|
|
58
66
|
private entityInfoCache;
|
|
59
67
|
private recordCounter;
|
|
68
|
+
private collectionPromotions;
|
|
60
69
|
constructor();
|
|
61
70
|
/**
|
|
62
71
|
* Phase 1: Flatten records from a single file without analyzing dependencies.
|
|
@@ -103,9 +112,11 @@ export declare class RecordDependencyAnalyzer {
|
|
|
103
112
|
*
|
|
104
113
|
* @param records The records from a metadata file
|
|
105
114
|
* @param entityName The root entity name for these records
|
|
115
|
+
* @param collectionPromotions Optional prepared resolver: the `relatedEntities` groups it promotes
|
|
116
|
+
* are left out of the flattened records, because push saves them in their parent's graph
|
|
106
117
|
* @returns Analysis result with sorted records
|
|
107
118
|
*/
|
|
108
|
-
analyzeFileRecords(records: RecordData[], entityName: string): Promise<DependencyAnalysisResult>;
|
|
119
|
+
analyzeFileRecords(records: RecordData[], entityName: string, collectionPromotions?: CollectionPromotionResolver): Promise<DependencyAnalysisResult>;
|
|
109
120
|
/**
|
|
110
121
|
* Flattens all records including nested relatedEntities
|
|
111
122
|
*/
|
|
@@ -172,9 +183,9 @@ export declare class RecordDependencyAnalyzer {
|
|
|
172
183
|
*
|
|
173
184
|
* This is simply the reverse of the forward topological sort used for creates.
|
|
174
185
|
*/
|
|
175
|
-
ReverseTopologicalSort(records: FlattenedRecord[]
|
|
186
|
+
ReverseTopologicalSort(records: FlattenedRecord[]): FlattenedRecord[][];
|
|
176
187
|
/** @deprecated Use {@link ReverseTopologicalSort}. */
|
|
177
|
-
reverseTopologicalSort(records: FlattenedRecord[]
|
|
188
|
+
reverseTopologicalSort(records: FlattenedRecord[]): FlattenedRecord[][];
|
|
178
189
|
/**
|
|
179
190
|
* Find all transitive dependents of a set of records
|
|
180
191
|
* This is useful for finding all records that must be deleted when deleting a parent
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record-dependency-analyzer.d.ts","sourceRoot":"","sources":["../../src/lib/record-dependency-analyzer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"record-dependency-analyzer.d.ts","sourceRoot":"","sources":["../../src/lib/record-dependency-analyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,41 @@
|
|
|
1
1
|
import { Metadata } from '@memberjunction/core';
|
|
2
2
|
import { METADATA_KEYWORDS } from '../constants/metadata-keywords.js';
|
|
3
|
+
/**
|
|
4
|
+
* Depth-first topological order: each record comes after every record it depends on that is in
|
|
5
|
+
* `byId`. Records with no dependencies are started first, then the rest in input order. A cycle is
|
|
6
|
+
* broken where the walk meets it (cycles are reported separately); a dependency missing from `byId`
|
|
7
|
+
* is skipped.
|
|
8
|
+
*/
|
|
9
|
+
export function DependencyOrder(records, byId) {
|
|
10
|
+
const result = [];
|
|
11
|
+
const visited = new Set();
|
|
12
|
+
const inProgress = new Set();
|
|
13
|
+
const visit = (recordId) => {
|
|
14
|
+
if (visited.has(recordId) || inProgress.has(recordId)) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
const record = byId.get(recordId);
|
|
18
|
+
if (!record) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
inProgress.add(recordId);
|
|
22
|
+
for (const depId of record.dependencies) {
|
|
23
|
+
visit(depId);
|
|
24
|
+
}
|
|
25
|
+
inProgress.delete(recordId);
|
|
26
|
+
visited.add(recordId);
|
|
27
|
+
result.push(record);
|
|
28
|
+
};
|
|
29
|
+
for (const record of records) {
|
|
30
|
+
if (record.dependencies.size === 0) {
|
|
31
|
+
visit(record.id);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
for (const record of records) {
|
|
35
|
+
visit(record.id);
|
|
36
|
+
}
|
|
37
|
+
return result;
|
|
38
|
+
}
|
|
3
39
|
/**
|
|
4
40
|
* Analyzes and sorts records based on their dependencies
|
|
5
41
|
*/
|
|
@@ -26,6 +62,7 @@ export class RecordDependencyAnalyzer {
|
|
|
26
62
|
this.recordIdMap = new Map();
|
|
27
63
|
this.entityInfoCache = new Map();
|
|
28
64
|
this.recordCounter = 0;
|
|
65
|
+
this.collectionPromotions = null;
|
|
29
66
|
this.metadata = new Metadata(); // global-provider-ok: metadata sync operates on the configured provider only
|
|
30
67
|
}
|
|
31
68
|
/**
|
|
@@ -116,11 +153,17 @@ export class RecordDependencyAnalyzer {
|
|
|
116
153
|
*
|
|
117
154
|
* @param records The records from a metadata file
|
|
118
155
|
* @param entityName The root entity name for these records
|
|
156
|
+
* @param collectionPromotions Optional prepared resolver: the `relatedEntities` groups it promotes
|
|
157
|
+
* are left out of the flattened records, because push saves them in their parent's graph
|
|
119
158
|
* @returns Analysis result with sorted records
|
|
120
159
|
*/
|
|
121
|
-
async analyzeFileRecords(records, entityName) {
|
|
160
|
+
async analyzeFileRecords(records, entityName, collectionPromotions) {
|
|
122
161
|
// Reset state for single-file analysis (backward compatible behavior)
|
|
123
162
|
this.Reset();
|
|
163
|
+
// `relatedEntities` groups the resolver promotes are saved as collection items in their parent's
|
|
164
|
+
// graph, so they are not flattened into records of their own. The resolver must already be
|
|
165
|
+
// prepared for these records.
|
|
166
|
+
this.collectionPromotions = collectionPromotions ?? null;
|
|
124
167
|
// Flatten records
|
|
125
168
|
this.flattenRecords(records, entityName);
|
|
126
169
|
// Analyze dependencies (only within this file's records)
|
|
@@ -181,6 +224,9 @@ export class RecordDependencyAnalyzer {
|
|
|
181
224
|
// Recursively flatten related entities
|
|
182
225
|
if (record.relatedEntities) {
|
|
183
226
|
for (const [relatedEntityName, relatedRecords] of Object.entries(record.relatedEntities)) {
|
|
227
|
+
if (this.collectionPromotions?.Resolve(entityName, relatedEntityName, relatedRecords)) {
|
|
228
|
+
continue; // saved as collection items in this record's own graph
|
|
229
|
+
}
|
|
184
230
|
this.flattenRecords(relatedRecords, relatedEntityName, {
|
|
185
231
|
entityName,
|
|
186
232
|
record,
|
|
@@ -494,46 +540,7 @@ export class RecordDependencyAnalyzer {
|
|
|
494
540
|
* Performs topological sort on the dependency graph
|
|
495
541
|
*/
|
|
496
542
|
topologicalSort() {
|
|
497
|
-
|
|
498
|
-
const visited = new Set();
|
|
499
|
-
const tempStack = new Set();
|
|
500
|
-
const visit = (recordId) => {
|
|
501
|
-
if (tempStack.has(recordId)) {
|
|
502
|
-
// Circular dependency - we've already detected these
|
|
503
|
-
return false;
|
|
504
|
-
}
|
|
505
|
-
if (visited.has(recordId)) {
|
|
506
|
-
return true;
|
|
507
|
-
}
|
|
508
|
-
tempStack.add(recordId);
|
|
509
|
-
const record = this.recordIdMap.get(recordId);
|
|
510
|
-
if (record) {
|
|
511
|
-
// Visit dependencies first
|
|
512
|
-
for (const depId of record.dependencies) {
|
|
513
|
-
visit(depId);
|
|
514
|
-
}
|
|
515
|
-
}
|
|
516
|
-
tempStack.delete(recordId);
|
|
517
|
-
visited.add(recordId);
|
|
518
|
-
if (record) {
|
|
519
|
-
result.push(record);
|
|
520
|
-
}
|
|
521
|
-
return true;
|
|
522
|
-
};
|
|
523
|
-
// Process all records, starting with those that have no dependencies
|
|
524
|
-
// First, process records with no dependencies
|
|
525
|
-
for (const record of this.flattenedRecords) {
|
|
526
|
-
if (record.dependencies.size === 0 && !visited.has(record.id)) {
|
|
527
|
-
visit(record.id);
|
|
528
|
-
}
|
|
529
|
-
}
|
|
530
|
-
// Then process any remaining records (handles disconnected components)
|
|
531
|
-
for (const record of this.flattenedRecords) {
|
|
532
|
-
if (!visited.has(record.id)) {
|
|
533
|
-
visit(record.id);
|
|
534
|
-
}
|
|
535
|
-
}
|
|
536
|
-
return result;
|
|
543
|
+
return DependencyOrder(this.flattenedRecords, this.recordIdMap);
|
|
537
544
|
}
|
|
538
545
|
/**
|
|
539
546
|
* Groups sorted records into dependency levels for parallel processing
|
|
@@ -646,40 +653,20 @@ export class RecordDependencyAnalyzer {
|
|
|
646
653
|
*
|
|
647
654
|
* This is simply the reverse of the forward topological sort used for creates.
|
|
648
655
|
*/
|
|
649
|
-
ReverseTopologicalSort(records
|
|
650
|
-
//
|
|
651
|
-
|
|
652
|
-
//
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
if (depLevel !== undefined && depLevel > maxDependencyLevel) {
|
|
659
|
-
maxDependencyLevel = depLevel;
|
|
660
|
-
}
|
|
661
|
-
}
|
|
662
|
-
// This record's level is one more than its highest dependency
|
|
663
|
-
const recordLevel = maxDependencyLevel + 1;
|
|
664
|
-
recordLevels.set(record.id, recordLevel);
|
|
665
|
-
}
|
|
666
|
-
// Group records by level
|
|
667
|
-
const forwardLevels = [];
|
|
668
|
-
for (const record of records) {
|
|
669
|
-
const level = recordLevels.get(record.id) || 0;
|
|
670
|
-
if (!forwardLevels[level]) {
|
|
671
|
-
forwardLevels[level] = [];
|
|
672
|
-
}
|
|
673
|
-
forwardLevels[level].push(record);
|
|
674
|
-
}
|
|
675
|
-
// Reverse the array for deletion order
|
|
676
|
-
// Forward level 0 (roots) becomes last to delete
|
|
677
|
-
// Forward level N (leaves) becomes first to delete
|
|
656
|
+
ReverseTopologicalSort(records) {
|
|
657
|
+
// The same DFS order and level grouping the forward sort uses, over only these records: a
|
|
658
|
+
// dependency outside the set has no level, so it is ignored. The DFS visits each record's
|
|
659
|
+
// dependencies before the record, so the levels do not depend on the input order (#4935).
|
|
660
|
+
const byId = new Map(records.map((record) => [record.id, record]));
|
|
661
|
+
const ordered = DependencyOrder(records, byId);
|
|
662
|
+
// A record's level is one more than its highest dependency's, so the levels have no gaps
|
|
663
|
+
const forwardLevels = this.groupByDependencyLevels(ordered, new Map());
|
|
664
|
+
// Forward level 0 (roots) deletes last; the highest level (leaves) deletes first
|
|
678
665
|
return forwardLevels.reverse();
|
|
679
666
|
}
|
|
680
667
|
/** @deprecated Use {@link ReverseTopologicalSort}. */
|
|
681
|
-
reverseTopologicalSort(records
|
|
682
|
-
return this.ReverseTopologicalSort(records
|
|
668
|
+
reverseTopologicalSort(records) {
|
|
669
|
+
return this.ReverseTopologicalSort(records);
|
|
683
670
|
}
|
|
684
671
|
/**
|
|
685
672
|
* Find all transitive dependents of a set of records
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record-dependency-analyzer.js","sourceRoot":"","sources":["../../src/lib/record-dependency-analyzer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"record-dependency-analyzer.js","sourceRoot":"","sources":["../../src/lib/record-dependency-analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAc,MAAM,sBAAsB,CAAC;AAE5D,OAAO,EAAE,iBAAiB,EAAwB,MAAM,gCAAgC,CAAC;AAmDzF;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,OAA0B,EAAE,IAA0C;IACpG,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IAErC,MAAM,KAAK,GAAG,CAAC,QAAgB,EAAQ,EAAE;QACvC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtD,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QACD,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACzB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACxC,KAAK,CAAC,KAAK,CAAC,CAAC;QACf,CAAC;QACD,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC,CAAC;IAEF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACnC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,qEAAqE;AACrE,MAAM,UAAU,qBAAqB,CAAC,OAA0B;IAC9D,MAAM,GAAG,GAAG,IAAI,GAAG,EAA6B,CAAC;IACjD,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC;QACxB,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;YACpB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,qBAAqB,CAAC,OAA0B;IAC9D,OAAO,qBAAqB,CAAC,OAAO,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,OAAO,wBAAwB;IAQnC;QANQ,qBAAgB,GAAsB,EAAE,CAAC;QACzC,gBAAW,GAAiC,IAAI,GAAG,EAAE,CAAC;QACtD,oBAAe,GAA4B,IAAI,GAAG,EAAE,CAAC;QACrD,kBAAa,GAAW,CAAC,CAAC;QAC1B,yBAAoB,GAAuC,IAAI,CAAC;QAGtE,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC,CAAC,6EAA6E;IAC/G,CAAC;IAED;;;;;;;;;;;;;OAaG;IACI,kBAAkB,CACvB,OAAqB,EACrB,UAAkB;QAElB,kEAAkE;QAClE,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;QAEhD,4EAA4E;QAC5E,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAEzC,+CAA+C;QAC/C,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;IAED,kDAAkD;IAC3C,kBAAkB,CACvB,OAAqB,EACrB,UAAkB;QAElB,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACtD,CAAC;IAED;;;;;;;;;OASG;IACI,sBAAsB,CAC3B,UAA6B;QAE7B,yCAAyC;QACzC,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC;QACnC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QACzB,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;YAChC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAC1C,CAAC;QAED,qFAAqF;QACrF,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,+BAA+B;QAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAEvD,2BAA2B;QAC3B,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAE7C,uCAAuC;QACvC,MAAM,eAAe,GAAG,IAAI,GAAG,EAAuB,CAAC;QACvD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3C,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;QACtD,CAAC;QAED,+DAA+D;QAC/D,MAAM,gBAAgB,GAAG,IAAI,CAAC,uBAAuB,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;QAEtF,OAAO;YACL,aAAa;YACb,oBAAoB,EAAE,YAAY;YAClC,eAAe;YACf,gBAAgB;SACjB,CAAC;IACJ,CAAC;IAED,sDAAsD;IAC/C,sBAAsB,CAC3B,UAA6B;QAE7B,OAAO,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACI,KAAK;QACV,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,qCAAqC;IAC9B,KAAK;QACV,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED;;;;;;;;;;;;OAYG;IACI,KAAK,CAAC,kBAAkB,CAC7B,OAAqB,EACrB,UAAkB,EAClB,oBAAkD;QAElD,sEAAsE;QACtE,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,iGAAiG;QACjG,2FAA2F;QAC3F,8BAA8B;QAC9B,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,IAAI,IAAI,CAAC;QAEzD,kBAAkB;QAClB,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAEzC,yDAAyD;QACzD,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,+BAA+B;QAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAEvD,2BAA2B;QAC3B,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAE7C,uCAAuC;QACvC,MAAM,eAAe,GAAG,IAAI,GAAG,EAAuB,CAAC;QACvD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3C,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;QACtD,CAAC;QAED,+DAA+D;QAC/D,MAAM,gBAAgB,GAAG,IAAI,CAAC,uBAAuB,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;QAEtF,OAAO;YACL,aAAa;YACb,oBAAoB,EAAE,YAAY;YAClC,eAAe;YACf,gBAAgB;SACjB,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,cAAc,CACpB,OAAqB,EACrB,UAAkB,EAClB,aAAgD,EAChD,QAAgB,CAAC,EACjB,aAAqB,EAAE,EACvB,cAAuB,EACvB,OAAgB;QAEhB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,QAAQ,GAAG,GAAG,UAAU,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YACzD,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,IAAI,UAAU,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,IAAI,CAAC,GAAG,CAAC;YACtF,MAAM,aAAa,GAAG,OAAO,IAAI,QAAQ,CAAC;YAE1C,iFAAiF;YACjF,kFAAkF;YAClF,qFAAqF;YACrF,0EAA0E;YAC1E,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,EAAE,CAAC;gBAC3D,MAAM,IAAI,GAAG,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,4CAA4C,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnF,MAAM,IAAI,KAAK,CACb,aAAa,IAAI,0CAA0C,IAAI,GAAG;oBAClE,6EAA6E,CAC9E,CAAC;YACJ,CAAC;YAED,MAAM,eAAe,GAAoB;gBACvC,MAAM;gBACN,UAAU;gBACV,aAAa;gBACb,KAAK;gBACL,IAAI;gBACJ,YAAY,EAAE,IAAI,GAAG,EAAE;gBACvB,EAAE,EAAE,QAAQ;gBACZ,aAAa,EAAE,CAAC;gBAChB,OAAO,EAAE,aAAa;aACvB,CAAC;YAEF,qDAAqD;YACrD,IAAI,cAAc,EAAE,CAAC;gBACnB,eAAe,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YACnD,CAAC;YAED,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC5C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;YAEhD,uCAAuC;YACvC,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;gBAC3B,KAAK,MAAM,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;oBACzF,IAAI,IAAI,CAAC,oBAAoB,EAAE,OAAO,CAAC,UAAU,EAAE,iBAAiB,EAAE,cAAc,CAAC,EAAE,CAAC;wBACtF,SAAS,CAAC,uDAAuD;oBACnE,CAAC;oBACD,IAAI,CAAC,cAAc,CACjB,cAAc,EACd,iBAAiB,EACjB;wBACE,UAAU;wBACV,MAAM;wBACN,WAAW,EAAE,CAAC;qBACf,EACD,KAAK,GAAG,CAAC,EACT,IAAI,EACJ,QAAQ,EAAG,gDAAgD;oBAC3D,aAAa,CACd,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,mBAAmB;QACzB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3C,gDAAgD;YAChD,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACzD,IAAI,CAAC,UAAU;gBAAE,SAAS;YAE1B,6BAA6B;YAC7B,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACzB,KAAK,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC3E,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;wBACnC,4BAA4B;wBAC5B,IAAI,UAAU,CAAC,UAAU,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;4BACpD,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;4BACjE,IAAI,UAAU,EAAE,CAAC;gCACf,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;4BACtC,CAAC;wBACH,CAAC;wBACD,yEAAyE;6BACpE,IAAI,UAAU,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;4BACvD,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;4BACvD,IAAI,cAAc,EAAE,CAAC;gCACnB,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;4BAC1C,CAAC;wBACH,CAAC;wBACD,mFAAmF;wBACnF,8EAA8E;wBAC9E,+DAA+D;oBACjE,CAAC;gBACH,CAAC;YACH,CAAC;YAED,iCAAiC;YACjC,IAAI,CAAC,6BAA6B,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED;;OAEG;IACK,6BAA6B,CAAC,MAAuB,EAAE,UAAsB;QACnF,+BAA+B;QAC/B,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;YAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACtD,IAAI,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChF,iEAAiE;gBACjE,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;gBAClE,IAAI,iBAAiB,EAAE,CAAC;oBACtB,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAC5C,KAAK,CAAC,aAAa,EACnB,UAAU,EACV,iBAAiB,CAClB,CAAC;oBACF,IAAI,UAAU,EAAE,CAAC;wBACf,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;oBACtC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,oBAAoB,CAAC,WAAmB,EAAE,aAA8B;QAC9E,6EAA6E;QAC7E,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB;QAEhE,2CAA2C;QAC3C,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAE5C,+BAA+B;QAC/B,IAAI,YAAoB,CAAC;QACzB,IAAI,QAAgB,CAAC;QAErB,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACrC,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACxB,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,+BAA+B;YAC/B,YAAY,GAAG,aAAa,CAAC,UAAU,CAAC;YACxC,QAAQ,GAAG,WAAW,CAAC;QACzB,CAAC;QAED,0CAA0C;QAC1C,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC9C,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACvC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACvC,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;gBACnB,IAAI,aAAa,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;gBAEjC,oEAAoE;gBACpE,oDAAoD;gBACpD,IAAI,aAAa,CAAC,UAAU,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;oBACvD,MAAM,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;oBACjF,IAAI,gBAAgB,EAAE,CAAC;wBACrB,iDAAiD;wBACjD,aAAa,CAAC,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;wBACjD,+DAA+D;wBAC/D,oCAAoC;oBACtC,CAAC;gBACH,CAAC;gBACD,2DAA2D;qBACtD,IAAI,aAAa,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC1D,gCAAgC;oBAChC,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;oBACvD,IAAI,OAAO,EAAE,CAAC;wBACZ,aAAa,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;oBAC1C,CAAC;oBACD,kFAAkF;gBACpF,CAAC;gBACD,6DAA6D;gBAC7D,+EAA+E;qBAC1E,IAAI,aAAa,CAAC,UAAU,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,aAAa,EAAE,CAAC;oBAC3F,MAAM,WAAW,GAAG,aAAa,CAAC,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBAE7E,qCAAqC;oBACrC,MAAM,WAAW,GAAG,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC;wBACzD,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,CAAC;oBAEhF,IAAI,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;wBACnD,yEAAyE;wBACzE,IAAI,WAAW,CAAC,UAAU,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;4BACrD,mDAAmD;4BACnD,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAClD,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,aAAc,CAAC,MAAM;gCAChD,CAAC,CAAC,UAAU,KAAK,aAAa,CAAC,aAAc,CAAC,UAAU,CACzD,CAAC;4BAEF,IAAI,YAAY,IAAI,YAAY,CAAC,aAAa,EAAE,CAAC;gCAC/C,MAAM,gBAAgB,GAAG,WAAW,CAAC,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gCAChF,MAAM,gBAAgB,GAAG,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,gBAAgB,CAAC;oCAC7D,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,gBAAgB,CAAC,CAAC;gCACzF,IAAI,gBAAgB,IAAI,OAAO,gBAAgB,KAAK,QAAQ,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oCAClG,aAAa,GAAG,gBAAgB,CAAC;gCACnC,CAAC;4BACH,CAAC;wBACH,CAAC;6BAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;4BACxC,aAAa,GAAG,WAAW,CAAC;wBAC9B,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,aAAa,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QAED,6CAA6C;QAC7C,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC9C,IAAI,SAAS,CAAC,UAAU,KAAK,YAAY;gBAAE,SAAS;YACpD,IAAI,SAAS,CAAC,EAAE,KAAK,aAAa,CAAC,EAAE;gBAAE,SAAS,CAAC,YAAY;YAE7D,8BAA8B;YAC9B,IAAI,QAAQ,GAAG,IAAI,CAAC;YACpB,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC;gBACzC,IAAI,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC;oBAChC,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC;gBAC1D,IAAI,WAAW,GAAG,KAAK,CAAC;gBAExB,sDAAsD;gBACtD,IAAI,OAAO,cAAc,KAAK,QAAQ,IAAI,cAAc,CAAC,UAAU,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,aAAa,EAAE,CAAC;oBACzH,MAAM,WAAW,GAAG,cAAc,CAAC,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBAC9E,MAAM,YAAY,GAAG,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC;oBACpD,cAAc,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,IAAI,YAAY,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,CAAC;oBAE9F,0EAA0E;oBAC1E,IAAI,OAAO,cAAc,KAAK,QAAQ,IAAI,cAAc,CAAC,UAAU,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;wBAC9F,oDAAoD;wBACpD,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CACrD,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,aAAc,CAAC,MAAM;4BAC5C,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC,aAAc,CAAC,UAAU,CACrD,CAAC;wBACF,IAAI,eAAe,EAAE,aAAa,EAAE,CAAC;4BACnC,MAAM,gBAAgB,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;4BACrD,cAAc,GAAG,eAAe,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,gBAAgB,CAAC;gCAChE,eAAe,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,gBAAgB,CAAC,CAAC;wBACtF,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,wDAAwD;gBACxD,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;oBACtF,6DAA6D;oBAC7D,IAAI,WAAW,CAAC,UAAU,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,aAAa,EAAE,CAAC;wBACpF,MAAM,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;wBAC3E,WAAW,GAAG,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC;4BACzD,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,CAAC;wBAE1E,gEAAgE;wBAChE,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,UAAU,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;4BACxF,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CACnD,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,aAAc,CAAC,MAAM;gCAChD,CAAC,CAAC,UAAU,KAAK,aAAa,CAAC,aAAc,CAAC,UAAU,CACzD,CAAC;4BACF,IAAI,aAAa,EAAE,aAAa,EAAE,CAAC;gCACjC,MAAM,gBAAgB,GAAG,WAAW,CAAC,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gCAChF,WAAW,GAAG,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,gBAAgB,CAAC;oCAC9D,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,gBAAgB,CAAC,CAAC;4BACjF,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,yFAAyF;gBACzF,oDAAoD;gBACpD,IAAI,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,cAAc,KAAK,KAAK;oBACtE,aAAa,CAAC,aAAa,IAAI,SAAS,CAAC,aAAa,EAAE,CAAC;oBAC3D,sCAAsC;oBACtC,IAAI,aAAa,CAAC,aAAa,CAAC,MAAM,KAAK,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;wBAC1E,oEAAoE;wBACpE,SAAS,CAAC,yBAAyB;oBACrC,CAAC;gBACH,CAAC;gBAED,IAAI,cAAc,KAAK,WAAW,EAAE,CAAC;oBACnC,QAAQ,GAAG,KAAK,CAAC;oBACjB,MAAM;gBACR,CAAC;YACH,CAAC;YAED,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,SAAS,CAAC,EAAE,CAAC;YACtB,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,MAAuB;QAChD,8DAA8D;QAC9D,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,4CAA4C;QAC5C,IAAI,OAAO,GAAG,MAAM,CAAC;QACrB,OAAO,OAAO,CAAC,aAAa,EAAE,CAAC;YAC7B,sDAAsD;YACtD,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAClD,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,aAAc,CAAC,MAAM;gBAC1C,CAAC,CAAC,UAAU,KAAK,OAAO,CAAC,aAAc,CAAC,UAAU,CACnD,CAAC;YAEF,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,uCAAuC;gBACvC,OAAO,IAAI,CAAC;YACd,CAAC;YAED,8CAA8C;YAC9C,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;gBAChC,OAAO,YAAY,CAAC,EAAE,CAAC;YACzB,CAAC;YAED,OAAO,GAAG,YAAY,CAAC;QACzB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,sBAAsB,CAC5B,UAAkB,EAClB,eAAuB,EACvB,UAAsB;QAEtB,6BAA6B;QAC7B,MAAM,eAAe,GAAG,UAAU,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC,qHAAqH;QAC/K,IAAI,CAAC,eAAe;YAAE,OAAO,IAAI,CAAC;QAElC,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC9C,IAAI,SAAS,CAAC,UAAU,KAAK,UAAU;gBAAE,SAAS;YAElD,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,eAAe,CAAC;gBAC/C,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,eAAe,CAAC,CAAC;YACjE,IAAI,cAAc,KAAK,eAAe,EAAE,CAAC;gBACvC,OAAO,SAAS,CAAC,EAAE,CAAC;YACtB,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,UAAkB;QACtC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YACpD,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;IACtD,CAAC;IAED;;OAEG;IACK,0BAA0B;QAChC,MAAM,MAAM,GAAe,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;QAEzC,MAAM,WAAW,GAAG,CAAC,QAAgB,EAAE,IAAc,EAAW,EAAE;YAChE,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACtB,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEpB,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC9C,IAAI,MAAM,EAAE,CAAC;gBACX,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;oBACxC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;wBACxB,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC;4BAClC,OAAO,IAAI,CAAC;wBACd,CAAC;oBACH,CAAC;yBAAM,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;wBACrC,gBAAgB;wBAChB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;wBACvC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;wBACrC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,qBAAqB;wBACxC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBACnB,OAAO,IAAI,CAAC;oBACd,CAAC;gBACH,CAAC;YACH,CAAC;YAED,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAChC,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,+BAA+B;QAC/B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC5B,WAAW,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,eAAe;QACrB,OAAO,eAAe,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAClE,CAAC;IAED;;;OAGG;IACK,uBAAuB,CAC7B,aAAgC,EAChC,eAAyC;QAEzC,MAAM,MAAM,GAAwB,EAAE,CAAC;QACvC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;QAE/C,sCAAsC;QACtC,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;YACnC,IAAI,kBAAkB,GAAG,CAAC,CAAC,CAAC;YAE5B,6CAA6C;YAC7C,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;gBACxC,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACzC,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,GAAG,kBAAkB,EAAE,CAAC;oBAC5D,kBAAkB,GAAG,QAAQ,CAAC;gBAChC,CAAC;YACH,CAAC;YAED,8DAA8D;YAC9D,MAAM,WAAW,GAAG,kBAAkB,GAAG,CAAC,CAAC;YAC3C,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;YAEzC,qCAAqC;YACrC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;gBACzB,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;YAC3B,CAAC;YACD,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;OAMG;IACI,yBAAyB,CAC9B,OAA0B;QAE1B,MAAM,UAAU,GAAG,IAAI,GAAG,EAA+B,CAAC;QAE1D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,yCAAyC;YACzC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;gBACxC,0DAA0D;gBAC1D,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,OAAO,CAAC,IAAI,CAAC,mBAAmB,MAAM,CAAC,EAAE,0CAA0C,CAAC,CAAC;oBACrF,SAAS;gBACX,CAAC;gBAED,oDAAoD;gBACpD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC3B,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBAC5B,CAAC;gBAED,UAAU,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,IAAI,CAAC;oBAC1B,QAAQ,EAAE,KAAK;oBACf,WAAW,EAAE,MAAM,CAAC,EAAE;oBACtB,UAAU,EAAE,MAAM,CAAC,UAAU;oBAC7B,SAAS,EAAE,IAAI,CAAC,gCAAgC,CAAC,MAAM,EAAE,KAAK,CAAC;oBAC/D,QAAQ,EAAE,MAAM,CAAC,IAAI;iBACtB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,yDAAyD;IAClD,yBAAyB,CAC9B,OAA0B;QAE1B,OAAO,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC;IAED;;;OAGG;IACK,gCAAgC,CACtC,MAAuB,EACvB,YAAoB;QAEpB,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC;QAE7B,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC3D,IAAI,CAAC,eAAe;YAAE,OAAO,IAAI,CAAC;QAElC,+BAA+B;QAC/B,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;YAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAEtD,sDAAsD;YACtD,IAAI,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;gBACjD,4BAA4B;gBAC5B,IAAI,UAAU,CAAC,UAAU,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;oBACpD,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;oBAClE,IAAI,WAAW,KAAK,YAAY,EAAE,CAAC;wBACjC,OAAO,KAAK,CAAC,IAAI,CAAC;oBACpB,CAAC;gBACH,CAAC;gBACD,mCAAmC;qBAC9B,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBACrC,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;oBAClE,IAAI,iBAAiB,EAAE,CAAC;wBACtB,MAAM,GAAG,GAAG,IAAI,CAAC,sBAAsB,CACrC,KAAK,CAAC,aAAa,EACnB,UAAU,EACV,iBAAiB,CAClB,CAAC;wBACF,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;4BACzB,OAAO,KAAK,CAAC,IAAI,CAAC;wBACpB,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;OASG;IACI,sBAAsB,CAAC,OAA0B;QACtD,0FAA0F;QAC1F,0FAA0F;QAC1F,0FAA0F;QAC1F,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAU,CAAC,CAAC,CAAC;QAC5E,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC/C,yFAAyF;QACzF,MAAM,aAAa,GAAG,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QAEvE,iFAAiF;QACjF,OAAO,aAAa,CAAC,OAAO,EAAE,CAAC;IACjC,CAAC;IAED,sDAAsD;IAC/C,sBAAsB,CAAC,OAA0B;QACtD,OAAO,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED;;;;;;;OAOG;IACI,wBAAwB,CAC7B,SAAsB,EACtB,mBAAqD;QAErD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;QACrC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAElC,wCAAwC;QACxC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEpC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;YAChC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,SAAS;YACpC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAEtB,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAErD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,8BAA8B;gBAC9B,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBAEhC,sCAAsC;gBACtC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,wDAAwD;IACjD,wBAAwB,CAC7B,SAAsB,EACtB,mBAAqD;QAErD,OAAO,IAAI,CAAC,wBAAwB,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;IACvE,CAAC;CACF"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Which schema names a captured push log turns into Flyway placeholders (#3618).
|
|
3
|
+
*
|
|
4
|
+
* `formatAsMigration` alone rewrites only the core schema to `${flyway:defaultSchema}`. That is right
|
|
5
|
+
* in MJ's own repo and wrong in an Open App repo, where `${flyway:defaultSchema}` is the app schema
|
|
6
|
+
* and core is `${mjSchema}`. A repo states its mapping once: `.mj-sync.json`
|
|
7
|
+
* `sqlLogging.schemaPlaceholders`, else `mj.config.cjs` `SQLOutput.schemaPlaceholders` (the array
|
|
8
|
+
* CodeGen already reads).
|
|
9
|
+
* @module schema-placeholders
|
|
10
|
+
*/
|
|
11
|
+
import { type SqlSchemaPlaceholder } from '@memberjunction/generic-database-provider';
|
|
12
|
+
import type { MJConfig, SyncConfig } from '../config.js';
|
|
13
|
+
/** The rule used when no mapping is configured: the core schema becomes `${flyway:defaultSchema}`. */
|
|
14
|
+
export declare const DEFAULT_SCHEMA_PLACEHOLDER: SqlSchemaPlaceholder;
|
|
15
|
+
/**
|
|
16
|
+
* The schema placeholder rules for a push or watch log: `.mj-sync.json` `sqlLogging.schemaPlaceholders`
|
|
17
|
+
* when it has a rule, else `mj.config.cjs` `SQLOutput.schemaPlaceholders`. Undefined when neither has
|
|
18
|
+
* one, so the logger keeps its single-schema default. Entries without both a schema and a placeholder
|
|
19
|
+
* are dropped.
|
|
20
|
+
*/
|
|
21
|
+
export declare function ResolveSchemaPlaceholders(syncConfig: SyncConfig | null | undefined, mjConfig: MJConfig | null | undefined): SqlSchemaPlaceholder[] | undefined;
|
|
22
|
+
/**
|
|
23
|
+
* Rewrites each `schema.` / `[schema].` in `sql` to its placeholder in one pass. A match needs a
|
|
24
|
+
* following `.`, so `__mj` never matches the start of `__mj_BizApps`, and nothing before it that
|
|
25
|
+
* {@link SCHEMA_PLACEHOLDER_LOOKBEHIND} excludes. Code and string data are treated alike: `__mj.`
|
|
26
|
+
* inside a quoted literal is rewritten too. Brackets are kept.
|
|
27
|
+
*/
|
|
28
|
+
export declare function ApplySchemaPlaceholders(sql: string, rules: readonly SqlSchemaPlaceholder[]): string;
|
|
29
|
+
//# sourceMappingURL=schema-placeholders.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-placeholders.d.ts","sourceRoot":"","sources":["../../src/lib/schema-placeholders.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAiC,KAAK,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACrH,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAGtD,sGAAsG;AACtG,eAAO,MAAM,0BAA0B,EAAE,oBAAiF,CAAC;AAE3H;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,GAAG,oBAAoB,EAAE,GAAG,SAAS,CAO9J;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,oBAAoB,EAAE,GAAG,MAAM,CAanG"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Which schema names a captured push log turns into Flyway placeholders (#3618).
|
|
3
|
+
*
|
|
4
|
+
* `formatAsMigration` alone rewrites only the core schema to `${flyway:defaultSchema}`. That is right
|
|
5
|
+
* in MJ's own repo and wrong in an Open App repo, where `${flyway:defaultSchema}` is the app schema
|
|
6
|
+
* and core is `${mjSchema}`. A repo states its mapping once: `.mj-sync.json`
|
|
7
|
+
* `sqlLogging.schemaPlaceholders`, else `mj.config.cjs` `SQLOutput.schemaPlaceholders` (the array
|
|
8
|
+
* CodeGen already reads).
|
|
9
|
+
* @module schema-placeholders
|
|
10
|
+
*/
|
|
11
|
+
import { SCHEMA_PLACEHOLDER_LOOKBEHIND } from '@memberjunction/generic-database-provider';
|
|
12
|
+
import { EscapeRegExp } from './sql-set-line.js';
|
|
13
|
+
/** The rule used when no mapping is configured: the core schema becomes `${flyway:defaultSchema}`. */
|
|
14
|
+
export const DEFAULT_SCHEMA_PLACEHOLDER = { schema: '__mj', placeholder: '${flyway:defaultSchema}' };
|
|
15
|
+
/**
|
|
16
|
+
* The schema placeholder rules for a push or watch log: `.mj-sync.json` `sqlLogging.schemaPlaceholders`
|
|
17
|
+
* when it has a rule, else `mj.config.cjs` `SQLOutput.schemaPlaceholders`. Undefined when neither has
|
|
18
|
+
* one, so the logger keeps its single-schema default. Entries without both a schema and a placeholder
|
|
19
|
+
* are dropped.
|
|
20
|
+
*/
|
|
21
|
+
export function ResolveSchemaPlaceholders(syncConfig, mjConfig) {
|
|
22
|
+
const fromSync = validRules(syncConfig?.sqlLogging?.schemaPlaceholders);
|
|
23
|
+
if (fromSync.length > 0) {
|
|
24
|
+
return fromSync;
|
|
25
|
+
}
|
|
26
|
+
const fromMjConfig = validRules(sqlOutputRules(mjConfig));
|
|
27
|
+
return fromMjConfig.length > 0 ? fromMjConfig : undefined;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Rewrites each `schema.` / `[schema].` in `sql` to its placeholder in one pass. A match needs a
|
|
31
|
+
* following `.`, so `__mj` never matches the start of `__mj_BizApps`, and nothing before it that
|
|
32
|
+
* {@link SCHEMA_PLACEHOLDER_LOOKBEHIND} excludes. Code and string data are treated alike: `__mj.`
|
|
33
|
+
* inside a quoted literal is rewritten too. Brackets are kept.
|
|
34
|
+
*/
|
|
35
|
+
export function ApplySchemaPlaceholders(sql, rules) {
|
|
36
|
+
const bySchema = new Map();
|
|
37
|
+
for (const rule of rules) {
|
|
38
|
+
if (rule.schema && rule.placeholder && !bySchema.has(rule.schema)) {
|
|
39
|
+
bySchema.set(rule.schema, rule.placeholder);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
if (bySchema.size === 0) {
|
|
43
|
+
return sql;
|
|
44
|
+
}
|
|
45
|
+
const alternatives = [...bySchema.keys()].sort((a, b) => b.length - a.length).map(EscapeRegExp).join('|');
|
|
46
|
+
const pattern = new RegExp(`${SCHEMA_PLACEHOLDER_LOOKBEHIND}(\\[?)(${alternatives})(\\]?)\\.`, 'g');
|
|
47
|
+
return sql.replace(pattern, (_match, open, schema, close) => `${open}${bySchema.get(schema)}${close}.`);
|
|
48
|
+
}
|
|
49
|
+
/** `SQLOutput.schemaPlaceholders` of an `mj.config.cjs`, read without trusting its shape. */
|
|
50
|
+
function sqlOutputRules(mjConfig) {
|
|
51
|
+
const sqlOutput = mjConfig?.SQLOutput;
|
|
52
|
+
if (sqlOutput === null || typeof sqlOutput !== 'object' || !('schemaPlaceholders' in sqlOutput)) {
|
|
53
|
+
return undefined;
|
|
54
|
+
}
|
|
55
|
+
return sqlOutput.schemaPlaceholders;
|
|
56
|
+
}
|
|
57
|
+
function validRules(value) {
|
|
58
|
+
if (!Array.isArray(value)) {
|
|
59
|
+
return [];
|
|
60
|
+
}
|
|
61
|
+
const rules = [];
|
|
62
|
+
for (const entry of value) {
|
|
63
|
+
if (entry !== null && typeof entry === 'object' && 'schema' in entry && 'placeholder' in entry) {
|
|
64
|
+
const { schema, placeholder } = entry;
|
|
65
|
+
if (typeof schema === 'string' && schema.length > 0 && typeof placeholder === 'string' && placeholder.length > 0) {
|
|
66
|
+
rules.push({ schema, placeholder });
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return rules;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=schema-placeholders.js.map
|