@duckcodeailabs/dql-cli 1.5.0 → 1.5.2

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.
@@ -7,7 +7,7 @@
7
7
  <link rel="preconnect" href="https://fonts.googleapis.com" />
8
8
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
9
9
  <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600;700&family=Kalam:wght@400;700&family=Caveat:wght@400;600;700&display=swap" rel="stylesheet" />
10
- <script type="module" crossorigin src="/assets/index-mlfOQ2me.js"></script>
10
+ <script type="module" crossorigin src="/assets/index-BZX1UCr2.js"></script>
11
11
  <link rel="modulepreload" crossorigin href="/assets/react-CRB3T2We.js">
12
12
  <link rel="modulepreload" crossorigin href="/assets/codemirror-DJYUkPr1.js">
13
13
  <link rel="stylesheet" crossorigin href="/assets/index-R3UrqjLQ.css">
@@ -1,5 +1,11 @@
1
1
  export type BlockStudioImportSourceKind = 'raw-sql-file' | 'raw-sql-folder' | 'tableau-workbook' | 'powerbi-project';
2
- export type BlockStudioImportReviewStatus = 'draft' | 'saved' | 'rejected';
2
+ export type BlockStudioImportReviewStatus = 'draft' | 'review' | 'saved' | 'rejected';
3
+ export type BlockStudioImportInputMode = 'path' | 'paste' | 'upload';
4
+ export type BlockStudioImportSplitStrategy = 'semicolon-go' | 'manual';
5
+ export interface BlockStudioImportSource {
6
+ path: string;
7
+ content: string;
8
+ }
3
9
  export interface BlockStudioImportLineage {
4
10
  sourceTables: string[];
5
11
  parameters: string[];
@@ -7,6 +13,25 @@ export interface BlockStudioImportLineage {
7
13
  statementIndex: number;
8
14
  totalStatements: number;
9
15
  }
16
+ export interface BlockStudioAiAssistance {
17
+ action: string;
18
+ summary: string;
19
+ createdAt: string;
20
+ status: 'suggested' | 'accepted' | 'rejected';
21
+ provider?: string;
22
+ patch?: Partial<Pick<BlockStudioImportCandidate, 'name' | 'domain' | 'description' | 'owner' | 'tags' | 'sql' | 'dqlSource'>>;
23
+ }
24
+ export interface BlockStudioCertificationChecklist {
25
+ metadata: boolean;
26
+ validation: boolean;
27
+ run: boolean;
28
+ tests: boolean;
29
+ chart: boolean;
30
+ lineage: boolean;
31
+ aiReviewed: boolean;
32
+ blockers: string[];
33
+ checkedAt?: string;
34
+ }
10
35
  export interface BlockStudioImportCandidate {
11
36
  id: string;
12
37
  sourceKind: BlockStudioImportSourceKind;
@@ -22,6 +47,11 @@ export interface BlockStudioImportCandidate {
22
47
  preview: unknown | null;
23
48
  lineage: BlockStudioImportLineage;
24
49
  confidence: number;
50
+ splitStrategy: BlockStudioImportSplitStrategy;
51
+ warnings: string[];
52
+ conversionNotes: string[];
53
+ aiAssistance: BlockStudioAiAssistance[];
54
+ certificationChecklist?: BlockStudioCertificationChecklist;
25
55
  reviewStatus: BlockStudioImportReviewStatus;
26
56
  savedPath?: string;
27
57
  }
@@ -31,6 +61,8 @@ export interface BlockStudioImportManifest {
31
61
  inputPath: string;
32
62
  createdAt: string;
33
63
  updatedAt: string;
64
+ inputMode: BlockStudioImportInputMode;
65
+ sourceFiles: string[];
34
66
  defaults: {
35
67
  domain: string;
36
68
  owner: string;
@@ -41,15 +73,34 @@ export interface BlockStudioImportManifest {
41
73
  export interface BlockStudioImportSession extends BlockStudioImportManifest {
42
74
  candidates: BlockStudioImportCandidate[];
43
75
  }
76
+ export interface BlockStudioImportSessionSummary {
77
+ id: string;
78
+ sourceKind: BlockStudioImportSourceKind;
79
+ inputMode: BlockStudioImportInputMode;
80
+ inputPath: string;
81
+ sourceFiles: string[];
82
+ createdAt: string;
83
+ updatedAt: string;
84
+ defaults: BlockStudioImportManifest['defaults'];
85
+ candidateCount: number;
86
+ savedCount: number;
87
+ rejectedCount: number;
88
+ warningCount: number;
89
+ }
44
90
  export interface CreateBlockStudioImportOptions {
45
91
  sourceKind?: BlockStudioImportSourceKind | 'raw-sql';
46
- inputPath: string;
92
+ inputPath?: string;
93
+ inputMode?: BlockStudioImportInputMode;
94
+ sources?: BlockStudioImportSource[];
47
95
  domain?: string;
48
96
  owner?: string;
49
97
  tags?: string[];
50
98
  }
51
99
  export declare function createBlockStudioImportSession(projectRoot: string, options: CreateBlockStudioImportOptions): BlockStudioImportSession;
52
100
  export declare function loadBlockStudioImportSession(projectRoot: string, importId: string): BlockStudioImportSession;
101
+ export declare function listBlockStudioImportSessions(projectRoot: string): BlockStudioImportSessionSummary[];
102
+ export declare function deleteBlockStudioImportSession(projectRoot: string, importId: string): void;
103
+ export declare function clearBlockStudioImportSessions(projectRoot: string): number;
53
104
  export declare function writeBlockStudioImportSession(projectRoot: string, session: BlockStudioImportSession): void;
54
105
  export declare function writeBlockStudioImportCandidate(projectRoot: string, importId: string, candidate: BlockStudioImportCandidate): void;
55
106
  export declare function readBlockStudioImportCandidate(projectRoot: string, importId: string, candidateId: string): BlockStudioImportCandidate;
@@ -1 +1 @@
1
- {"version":3,"file":"block-studio-import.d.ts","sourceRoot":"","sources":["../src/block-studio-import.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,2BAA2B,GACnC,cAAc,GACd,gBAAgB,GAChB,kBAAkB,GAClB,iBAAiB,CAAC;AAEtB,MAAM,MAAM,6BAA6B,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC;AAE3E,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,0BAA0B;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,2BAA2B,CAAC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,wBAAwB,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,6BAA6B,CAAC;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,2BAA2B,CAAC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE;QACR,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,EAAE,CAAC;KAChB,CAAC;IACF,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,wBAAyB,SAAQ,yBAAyB;IACzE,UAAU,EAAE,0BAA0B,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,8BAA8B;IAC7C,UAAU,CAAC,EAAE,2BAA2B,GAAG,SAAS,CAAC;IACrD,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAYD,wBAAgB,8BAA8B,CAC5C,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,8BAA8B,GACtC,wBAAwB,CAkC1B;AAED,wBAAgB,4BAA4B,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,wBAAwB,CAO5G;AAED,wBAAgB,6BAA6B,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,wBAAwB,GAAG,IAAI,CAiB1G;AAED,wBAAgB,+BAA+B,CAC7C,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,0BAA0B,GACpC,IAAI,CAIN;AAED,wBAAgB,8BAA8B,CAC5C,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,0BAA0B,CAI5B;AAED,wBAAgB,gCAAgC,CAC9C,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,0BAA0B,EAAE,MAAM,GAAG,QAAQ,GAAG,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,cAAc,CAAC,CAAC,GAC9H,0BAA0B,CAqB5B;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,IAAI,CAAC,0BAA0B,EAAE,MAAM,GAAG,QAAQ,GAAG,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC,GAAG,MAAM,CAuBtJ"}
1
+ {"version":3,"file":"block-studio-import.d.ts","sourceRoot":"","sources":["../src/block-studio-import.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,12 @@
1
- import { createHash } from 'node:crypto';
2
- import { existsSync, mkdirSync, readdirSync, readFileSync, statSync, writeFileSync } from 'node:fs';
1
+ import { createHash, randomUUID } from 'node:crypto';
2
+ import { existsSync, mkdirSync, readdirSync, readFileSync, rmSync, statSync, writeFileSync } from 'node:fs';
3
3
  import { basename, extname, join, relative, resolve } from 'node:path';
4
4
  const SQL_EXTENSIONS = new Set(['.sql']);
5
5
  const ACTIVE_IMPORT_KINDS = new Set(['raw-sql-file', 'raw-sql-folder']);
6
6
  export function createBlockStudioImportSession(projectRoot, options) {
7
- const inputPath = resolveInputPath(projectRoot, options.inputPath);
8
- const sourceKind = resolveSourceKind(inputPath, options.sourceKind);
7
+ const inputMode = options.inputMode ?? (options.sources?.length ? 'upload' : 'path');
8
+ const sourceBundle = collectSqlSources(projectRoot, options);
9
+ const sourceKind = sourceBundle.sourceKind;
9
10
  if (!ACTIVE_IMPORT_KINDS.has(sourceKind)) {
10
11
  throw new Error(`${sourceKind} import is planned but not implemented in this build.`);
11
12
  }
@@ -15,8 +16,8 @@ export function createBlockStudioImportSession(projectRoot, options) {
15
16
  owner: options.owner?.trim() ?? '',
16
17
  tags: normalizeTags(['imported', 'raw-sql', ...(options.tags ?? [])]),
17
18
  };
18
- const statements = collectSqlStatements(inputPath);
19
- const importId = buildImportId(sourceKind, inputPath, now);
19
+ const statements = collectSqlStatements(sourceBundle.sources);
20
+ const importId = buildImportId(sourceKind, sourceBundle.inputPath, now);
20
21
  const candidates = statements.map((statement) => buildSqlCandidate({
21
22
  importId,
22
23
  sourceKind,
@@ -27,7 +28,9 @@ export function createBlockStudioImportSession(projectRoot, options) {
27
28
  const manifest = {
28
29
  id: importId,
29
30
  sourceKind,
30
- inputPath: displayPath(projectRoot, inputPath),
31
+ inputPath: sourceBundle.inputPath,
32
+ inputMode,
33
+ sourceFiles: sourceBundle.sources.map((source) => source.path),
31
34
  createdAt: now,
32
35
  updatedAt: now,
33
36
  defaults,
@@ -46,6 +49,55 @@ export function loadBlockStudioImportSession(projectRoot, importId) {
46
49
  const candidates = manifest.candidateIds.map((candidateId) => readBlockStudioImportCandidate(projectRoot, importId, candidateId));
47
50
  return { ...manifest, candidates };
48
51
  }
52
+ export function listBlockStudioImportSessions(projectRoot) {
53
+ const root = join(projectRoot, '.dql', 'imports');
54
+ if (!existsSync(root))
55
+ return [];
56
+ const summaries = [];
57
+ for (const entry of readdirSync(root, { withFileTypes: true })) {
58
+ if (!entry.isDirectory())
59
+ continue;
60
+ try {
61
+ const session = loadBlockStudioImportSession(projectRoot, entry.name);
62
+ summaries.push({
63
+ id: session.id,
64
+ sourceKind: session.sourceKind,
65
+ inputMode: session.inputMode ?? 'path',
66
+ inputPath: session.inputPath,
67
+ sourceFiles: session.sourceFiles ?? [],
68
+ createdAt: session.createdAt,
69
+ updatedAt: session.updatedAt,
70
+ defaults: session.defaults,
71
+ candidateCount: session.candidates.length,
72
+ savedCount: session.candidates.filter((candidate) => candidate.reviewStatus === 'saved').length,
73
+ rejectedCount: session.candidates.filter((candidate) => candidate.reviewStatus === 'rejected').length,
74
+ warningCount: session.candidates.reduce((sum, candidate) => sum + (candidate.warnings?.length ?? candidate.lineage.warnings.length), 0),
75
+ });
76
+ }
77
+ catch {
78
+ // Ignore partial sessions so one bad cache entry does not break Imports.
79
+ }
80
+ }
81
+ return summaries.sort((a, b) => b.updatedAt.localeCompare(a.updatedAt));
82
+ }
83
+ export function deleteBlockStudioImportSession(projectRoot, importId) {
84
+ rmSync(importRoot(projectRoot, importId), { recursive: true, force: true });
85
+ }
86
+ export function clearBlockStudioImportSessions(projectRoot) {
87
+ const root = join(projectRoot, '.dql', 'imports');
88
+ if (!existsSync(root))
89
+ return 0;
90
+ let removed = 0;
91
+ for (const entry of readdirSync(root, { withFileTypes: true })) {
92
+ if (!entry.isDirectory())
93
+ continue;
94
+ if (!/^imp_[A-Za-z0-9_-]+$/.test(entry.name))
95
+ continue;
96
+ rmSync(join(root, entry.name), { recursive: true, force: true });
97
+ removed += 1;
98
+ }
99
+ return removed;
100
+ }
49
101
  export function writeBlockStudioImportSession(projectRoot, session) {
50
102
  const root = importRoot(projectRoot, session.id);
51
103
  const candidatesDir = join(root, 'candidates');
@@ -54,6 +106,8 @@ export function writeBlockStudioImportSession(projectRoot, session) {
54
106
  id: session.id,
55
107
  sourceKind: session.sourceKind,
56
108
  inputPath: session.inputPath,
109
+ inputMode: session.inputMode ?? 'path',
110
+ sourceFiles: session.sourceFiles ?? [],
57
111
  createdAt: session.createdAt,
58
112
  updatedAt: new Date().toISOString(),
59
113
  defaults: session.defaults,
@@ -98,7 +152,9 @@ export function updateBlockStudioImportCandidate(projectRoot, importId, candidat
98
152
  ...next.lineage,
99
153
  sourceTables: extractSourceTables(next.sql),
100
154
  parameters: extractSqlParameters(next.sql),
155
+ warnings: analyzeSqlWarnings(next.sql, next.lineage.totalStatements),
101
156
  };
157
+ next.warnings = next.lineage.warnings;
102
158
  next.confidence = scoreSqlCandidate(next.sql, next.lineage);
103
159
  }
104
160
  writeBlockStudioImportCandidate(projectRoot, importId, next);
@@ -108,6 +164,7 @@ export function candidateToDqlSource(candidate) {
108
164
  const tags = normalizeTags(candidate.tags).map((tag) => dqlString(tag)).join(', ');
109
165
  const sql = candidate.sql.trim().replace(/"""/g, '\\"\\"\\"');
110
166
  return `block ${dqlString(candidate.name)} {
167
+ status = "draft"
111
168
  domain = ${dqlString(sanitizeDomain(candidate.domain))}
112
169
  type = "custom"
113
170
  description = ${dqlString(candidate.description)}
@@ -128,21 +185,19 @@ ${sql}
128
185
  }
129
186
  `;
130
187
  }
131
- function collectSqlStatements(inputPath) {
132
- const stats = statSync(inputPath);
133
- const files = stats.isDirectory() ? walkSqlFiles(inputPath) : [inputPath];
134
- if (files.length === 0)
135
- throw new Error('No .sql files found to import.');
188
+ function collectSqlStatements(sources) {
136
189
  const statements = [];
137
- for (const file of files) {
138
- const source = readFileSync(file, 'utf-8');
139
- const split = splitSqlStatements(source);
190
+ for (const source of sources) {
191
+ const split = splitSqlStatements(source.content);
192
+ const sharedWarnings = split.length === 1 ? analyzeSqlWarnings(split[0], split.length) : [];
140
193
  split.forEach((sql, index) => {
141
194
  statements.push({
142
- sourcePath: file,
195
+ sourcePath: source.path,
143
196
  sql,
144
197
  statementIndex: index + 1,
145
198
  totalStatements: split.length,
199
+ splitStrategy: 'semicolon-go',
200
+ warnings: index === 0 ? sharedWarnings : [],
146
201
  });
147
202
  });
148
203
  }
@@ -163,6 +218,7 @@ function buildSqlCandidate(options) {
163
218
  const warnings = [
164
219
  ...(parameters.length > 0 ? [`Contains parameters: ${parameters.join(', ')}`] : []),
165
220
  ...(statement.sql.includes('"""') ? ['SQL contains triple quotes that were escaped in the DQL draft.'] : []),
221
+ ...statement.warnings,
166
222
  ];
167
223
  const lineage = {
168
224
  sourceTables,
@@ -176,17 +232,28 @@ function buildSqlCandidate(options) {
176
232
  sourceKind: options.sourceKind,
177
233
  sourcePath,
178
234
  name: titleizeName(name),
179
- domain: options.defaults.domain,
235
+ domain: metadata.domain ? sanitizeDomain(metadata.domain) : options.defaults.domain,
180
236
  description: metadata.description || `Imported from ${sourcePath}`,
181
237
  owner: options.defaults.owner,
182
- tags: normalizeTags(options.defaults.tags),
238
+ tags: normalizeTags([...options.defaults.tags, ...metadata.tags]),
183
239
  sql: statement.sql.trim(),
184
240
  dqlSource: '',
185
241
  validation: null,
186
242
  preview: null,
187
243
  lineage,
188
244
  confidence: scoreSqlCandidate(statement.sql, lineage),
189
- reviewStatus: 'draft',
245
+ splitStrategy: statement.splitStrategy,
246
+ warnings,
247
+ conversionNotes: [
248
+ 'Deterministic SQL extraction created this DQL draft locally.',
249
+ 'Name, description, domain, and tags come from leading SQL comments when present; otherwise DQL uses the source path and import defaults.',
250
+ 'The SQL statement is wrapped into query = """ ... """ without LLM rewriting.',
251
+ 'Visualization defaults to table until a reviewer chooses a chart type.',
252
+ 'The default test is assert row_count > 0.',
253
+ 'Optional AI assist is review-gated and only receives this candidate context.',
254
+ ],
255
+ aiAssistance: [],
256
+ reviewStatus: 'review',
190
257
  };
191
258
  candidate.dqlSource = candidateToDqlSource(candidate);
192
259
  return candidate;
@@ -248,6 +315,17 @@ function splitSqlStatements(source) {
248
315
  double = !double;
249
316
  else if (!single && !double && char === '`')
250
317
  backtick = !backtick;
318
+ if (!single && !double && !backtick) {
319
+ const goMatch = matchGoBatchSeparator(source, i);
320
+ if (goMatch) {
321
+ const statement = source.slice(start, i).trim();
322
+ if (statement)
323
+ statements.push(statement);
324
+ start = goMatch.end;
325
+ i = goMatch.end - 1;
326
+ continue;
327
+ }
328
+ }
251
329
  if (!single && !double && !backtick && char === ';') {
252
330
  const statement = source.slice(start, i).trim();
253
331
  if (statement)
@@ -260,14 +338,41 @@ function splitSqlStatements(source) {
260
338
  statements.push(trailing);
261
339
  return statements;
262
340
  }
341
+ function matchGoBatchSeparator(source, index) {
342
+ const char = source[index];
343
+ if (char !== 'g' && char !== 'G')
344
+ return null;
345
+ const lineStart = Math.max(source.lastIndexOf('\n', index - 1) + 1, 0);
346
+ if (source.slice(lineStart, index).trim())
347
+ return null;
348
+ const rest = source.slice(index);
349
+ const match = rest.match(/^go(?:\s+\d+)?\s*(?:--[^\r\n]*)?(?:\r?\n|$)/i);
350
+ if (!match)
351
+ return null;
352
+ return { end: index + match[0].length };
353
+ }
354
+ function analyzeSqlWarnings(sql, totalStatements) {
355
+ const warnings = [];
356
+ if (totalStatements === 1) {
357
+ const cleaned = stripSqlComments(sql);
358
+ const starts = cleaned.match(/\b(?:select|with)\b/gi) ?? [];
359
+ if (starts.length > 1) {
360
+ warnings.push('Only one candidate was created, but multiple SELECT/WITH clauses were detected. Add semicolons, GO batch separators, or split manually if this file contains multiple scripts.');
361
+ }
362
+ }
363
+ return warnings;
364
+ }
263
365
  function extractStatementMetadata(sql) {
264
366
  const leading = sql.split(/\r?\n/).slice(0, 12).join('\n');
265
367
  const name = leading.match(/(?:--|\/\*)\s*(?:name|block)\s*:\s*([^*\n]+)/i)?.[1]?.trim() ?? '';
266
368
  const description = leading.match(/(?:--|\/\*)\s*(?:description|desc)\s*:\s*([^*\n]+)/i)?.[1]?.trim() ?? '';
369
+ const domain = leading.match(/(?:--|\/\*)\s*domain\s*:\s*([^*\n]+)/i)?.[1]?.trim() ?? '';
370
+ const tagText = leading.match(/(?:--|\/\*)\s*tags?\s*:\s*([^*\n]+)/i)?.[1]?.trim() ?? '';
371
+ const tags = normalizeTags(tagText ? tagText.split(',') : []);
267
372
  if (description)
268
- return { name, description };
373
+ return { name, description, domain, tags };
269
374
  const firstComment = leading.match(/^\s*--\s*(?!name\s*:|block\s*:)(.+)$/im)?.[1]?.trim() ?? '';
270
- return { name, description: firstComment };
375
+ return { name, description: firstComment, domain, tags };
271
376
  }
272
377
  function extractSourceTables(sql) {
273
378
  const tables = new Set();
@@ -333,6 +438,41 @@ function walkSqlFiles(root) {
333
438
  }
334
439
  return files.sort();
335
440
  }
441
+ function collectSqlSources(projectRoot, options) {
442
+ if (options.sources?.length) {
443
+ const sources = options.sources
444
+ .map((source, index) => ({
445
+ path: sanitizeSourcePath(source.path || `pasted-${index + 1}.sql`),
446
+ content: source.content ?? '',
447
+ }))
448
+ .filter((source) => source.content.trim().length > 0);
449
+ if (sources.length === 0)
450
+ throw new Error('No SQL content was provided.');
451
+ return {
452
+ sourceKind: sources.length > 1 ? 'raw-sql-folder' : 'raw-sql-file',
453
+ inputPath: options.inputMode === 'paste' ? 'pasted SQL' : `${sources.length} uploaded SQL file(s)`,
454
+ sources,
455
+ };
456
+ }
457
+ const inputPath = resolveInputPath(projectRoot, options.inputPath ?? '');
458
+ const sourceKind = resolveSourceKind(inputPath, options.sourceKind);
459
+ const stats = statSync(inputPath);
460
+ const files = stats.isDirectory() ? walkSqlFiles(inputPath) : [inputPath];
461
+ if (files.length === 0)
462
+ throw new Error('No .sql files found to import.');
463
+ return {
464
+ sourceKind,
465
+ inputPath: displayPath(projectRoot, inputPath),
466
+ sources: files.map((file) => ({
467
+ path: displayPath(projectRoot, file),
468
+ content: readFileSync(file, 'utf-8'),
469
+ })),
470
+ };
471
+ }
472
+ function sanitizeSourcePath(path) {
473
+ const clean = path.replaceAll('\\', '/').replace(/^\/+/, '').trim();
474
+ return clean.endsWith('.sql') ? clean : `${clean || 'pasted'}.sql`;
475
+ }
336
476
  function resolveInputPath(projectRoot, inputPath) {
337
477
  if (!inputPath.trim())
338
478
  throw new Error('Import path is required.');
@@ -352,10 +492,13 @@ function resolveSourceKind(inputPath, requested) {
352
492
  throw new Error('Only .sql files and folders are supported in this import build.');
353
493
  }
354
494
  function importRoot(projectRoot, importId) {
495
+ if (!/^imp_[A-Za-z0-9_-]+$/.test(importId)) {
496
+ throw new Error(`Invalid import session id: ${importId}`);
497
+ }
355
498
  return join(projectRoot, '.dql', 'imports', importId);
356
499
  }
357
500
  function buildImportId(sourceKind, inputPath, createdAt) {
358
- const hash = createHash('sha1').update(`${sourceKind}:${inputPath}:${createdAt}`).digest('hex').slice(0, 10);
501
+ const hash = createHash('sha1').update(`${sourceKind}:${inputPath}:${createdAt}:${randomUUID()}`).digest('hex').slice(0, 10);
359
502
  return `imp_${hash}`;
360
503
  }
361
504
  function buildCandidateId(sourcePath, statementIndex, sql) {
@@ -1 +1 @@
1
- {"version":3,"file":"block-studio-import.js","sourceRoot":"","sources":["../src/block-studio-import.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"block-studio-import.js","sourceRoot":"","sources":["../src/block-studio-import.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC5G,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiIvE,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACzC,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAA8B,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC,CAAC;AAErG,MAAM,UAAU,8BAA8B,CAC5C,WAAmB,EACnB,OAAuC;IAEvC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACrF,MAAM,YAAY,GAAG,iBAAiB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;IAC3C,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,GAAG,UAAU,uDAAuD,CAAC,CAAC;IACxF,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,QAAQ,GAAG;QACf,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,MAAM,IAAI,UAAU,CAAC;QACpD,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE;QAClC,IAAI,EAAE,aAAa,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;KACtE,CAAC;IACF,MAAM,UAAU,GAAG,oBAAoB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,aAAa,CAAC,UAAU,EAAE,YAAY,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACxE,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,iBAAiB,CAAC;QACjE,QAAQ;QACR,UAAU;QACV,WAAW;QACX,SAAS;QACT,QAAQ;KACT,CAAC,CAAC,CAAC;IACJ,MAAM,QAAQ,GAA8B;QAC1C,EAAE,EAAE,QAAQ;QACZ,UAAU;QACV,SAAS,EAAE,YAAY,CAAC,SAAS;QACjC,SAAS;QACT,WAAW,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;QAC9D,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,GAAG;QACd,QAAQ;QACR,YAAY,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;KAC1D,CAAC;IACF,MAAM,OAAO,GAAG,EAAE,GAAG,QAAQ,EAAE,UAAU,EAAE,CAAC;IAC5C,6BAA6B,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACpD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,WAAmB,EAAE,QAAgB;IAChF,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC/C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IACjD,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,EAAE,CAAC,CAAC;IACxF,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAA8B,CAAC;IAC9F,MAAM,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,8BAA8B,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;IAClI,OAAO,EAAE,GAAG,QAAQ,EAAE,UAAU,EAAE,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,WAAmB;IAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IAClD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,SAAS,GAAsC,EAAE,CAAC;IACxD,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAC/D,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;YAAE,SAAS;QACnC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,4BAA4B,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACtE,SAAS,CAAC,IAAI,CAAC;gBACb,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,MAAM;gBACtC,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE;gBACtC,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,cAAc,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM;gBACzC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,YAAY,KAAK,OAAO,CAAC,CAAC,MAAM;gBAC/F,aAAa,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,YAAY,KAAK,UAAU,CAAC,CAAC,MAAM;gBACrG,YAAY,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;aACxI,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,yEAAyE;QAC3E,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,WAAmB,EAAE,QAAgB;IAClF,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,WAAmB;IAChE,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IAClD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAChC,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAC/D,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;YAAE,SAAS;QACnC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,SAAS;QACvD,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC,CAAC;IACf,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,WAAmB,EAAE,OAAiC;IAClG,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IACjD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAC/C,SAAS,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAA8B;QAC1C,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,MAAM;QACtC,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE;QACtC,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,YAAY,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;KAClE,CAAC;IACF,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9F,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QAC3C,+BAA+B,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IACtE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC7C,WAAmB,EACnB,QAAgB,EAChB,SAAqC;IAErC,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,YAAY,CAAC,CAAC;IAC5E,SAAS,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,SAAS,CAAC,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;AACjH,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,WAAmB,EACnB,QAAgB,EAChB,WAAmB;IAEnB,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,YAAY,EAAE,GAAG,WAAW,OAAO,CAAC,CAAC;IACnG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,WAAW,EAAE,CAAC,CAAC;IAC9F,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAA+B,CAAC;AACxF,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,WAAmB,EACnB,QAAgB,EAChB,WAAmB,EACnB,KAA+H;IAE/H,MAAM,SAAS,GAAG,8BAA8B,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IACrF,MAAM,IAAI,GAA+B,EAAE,GAAG,SAAS,EAAE,CAAC;IAC1D,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;QAAE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACrD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;QAAE,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3E,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS;QAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;IAC1E,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;QAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IACxD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;QAAE,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACpE,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS;QAAE,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;IAClD,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS;QAAE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;IAC7E,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;QAC9F,IAAI,CAAC,SAAS,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,GAAG;YACb,GAAG,IAAI,CAAC,OAAO;YACf,YAAY,EAAE,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC;YAC3C,UAAU,EAAE,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC;YAC1C,QAAQ,EAAE,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;SACrE,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QACtC,IAAI,CAAC,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9D,CAAC;IACD,+BAA+B,CAAC,WAAW,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC7D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,SAAyG;IAC5I,MAAM,IAAI,GAAG,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnF,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC9D,OAAO,SAAS,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC;;eAE5B,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;;oBAEtC,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC;cACtC,IAAI;cACJ,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC;;;EAGtC,GAAG;;;;;;;;;;;CAWJ,CAAC;AACF,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAoB;IAChD,MAAM,UAAU,GAA4B,EAAE,CAAC;IAC/C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5F,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YAC3B,UAAU,CAAC,IAAI,CAAC;gBACd,UAAU,EAAE,MAAM,CAAC,IAAI;gBACvB,GAAG;gBACH,cAAc,EAAE,KAAK,GAAG,CAAC;gBACzB,eAAe,EAAE,KAAK,CAAC,MAAM;gBAC7B,aAAa,EAAE,cAAc;gBAC7B,QAAQ,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;aAC5C,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACnF,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,iBAAiB,CAAC,OAM1B;IACC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IACpC,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;IAC1E,MAAM,QAAQ,GAAG,wBAAwB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACzD,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;IAChG,MAAM,IAAI,GAAG,SAAS,CAAC,eAAe,GAAG,CAAC;QACxC,CAAC,CAAC,GAAG,QAAQ,IAAI,SAAS,CAAC,cAAc,EAAE;QAC3C,CAAC,CAAC,QAAQ,CAAC;IACb,MAAM,YAAY,GAAG,mBAAmB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACxD,MAAM,UAAU,GAAG,oBAAoB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG;QACf,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACnF,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,gEAAgE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5G,GAAG,SAAS,CAAC,QAAQ;KACtB,CAAC;IACF,MAAM,OAAO,GAA6B;QACxC,YAAY;QACZ,UAAU;QACV,QAAQ;QACR,cAAc,EAAE,SAAS,CAAC,cAAc;QACxC,eAAe,EAAE,SAAS,CAAC,eAAe;KAC3C,CAAC;IACF,MAAM,SAAS,GAA+B;QAC5C,EAAE,EAAE,gBAAgB,CAAC,UAAU,EAAE,SAAS,CAAC,cAAc,EAAE,SAAS,CAAC,GAAG,CAAC;QACzE,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,UAAU;QACV,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC;QACxB,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM;QACnF,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,iBAAiB,UAAU,EAAE;QAClE,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK;QAC7B,IAAI,EAAE,aAAa,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjE,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE;QACzB,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,IAAI;QACb,OAAO;QACP,UAAU,EAAE,iBAAiB,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC;QACrD,aAAa,EAAE,SAAS,CAAC,aAAa;QACtC,QAAQ;QACR,eAAe,EAAE;YACf,8DAA8D;YAC9D,0IAA0I;YAC1I,8EAA8E;YAC9E,wEAAwE;YACxE,2CAA2C;YAC3C,8EAA8E;SAC/E;QACD,YAAY,EAAE,EAAE;QAChB,YAAY,EAAE,QAAQ;KACvB,CAAC;IACF,SAAS,CAAC,SAAS,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;IACtD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAc;IACxC,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,WAAW,GAAkB,IAAI,CAAC;IAEtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAE3B,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,IAAI,KAAK,IAAI;gBAAE,WAAW,GAAG,KAAK,CAAC;YACvC,SAAS;QACX,CAAC;QACD,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACjC,YAAY,GAAG,KAAK,CAAC;gBACrB,CAAC,IAAI,CAAC,CAAC;YACT,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC;gBACtC,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC5B,WAAW,GAAG,IAAI,CAAC;YACrB,CAAC;YACD,SAAS;QACX,CAAC;QAED,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACjC,WAAW,GAAG,IAAI,CAAC;gBACnB,CAAC,IAAI,CAAC,CAAC;gBACP,SAAS;YACX,CAAC;YACD,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACjC,YAAY,GAAG,IAAI,CAAC;gBACpB,CAAC,IAAI,CAAC,CAAC;gBACP,SAAS;YACX,CAAC;YACD,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACjB,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,mCAAmC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC5E,IAAI,GAAG,EAAE,CAAC;oBACR,WAAW,GAAG,GAAG,CAAC;oBAClB,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;oBACpB,SAAS;gBACX,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,IAAI,IAAI,KAAK,GAAG,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI;YAAE,MAAM,GAAG,CAAC,MAAM,CAAC;aAChF,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,IAAI,IAAI,KAAK,GAAG,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI;YAAE,MAAM,GAAG,CAAC,MAAM,CAAC;aACrF,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,IAAI,KAAK,GAAG;YAAE,QAAQ,GAAG,CAAC,QAAQ,CAAC;QAElE,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,MAAM,OAAO,GAAG,qBAAqB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACjD,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAChD,IAAI,SAAS;oBAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC1C,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC;gBACpB,CAAC,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;gBACpB,SAAS;YACX,CAAC;QACH,CAAC;QAED,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACpD,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAChD,IAAI,SAAS;gBAAE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC1C,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5C,IAAI,QAAQ;QAAE,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxC,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAc,EAAE,KAAa;IAC1D,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3B,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACvE,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE;QAAE,OAAO,IAAI,CAAC;IACvD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACzE,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,OAAO,EAAE,GAAG,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAC1C,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAW,EAAE,eAAuB;IAC9D,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,eAAe,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;QAC5D,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,QAAQ,CAAC,IAAI,CAAC,gLAAgL,CAAC,CAAC;QAClM,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,wBAAwB,CAAC,GAAW;IAC3C,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC/F,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC5G,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACzF,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACzF,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9D,IAAI,WAAW;QAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC5D,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAChG,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC3D,CAAC;AAED,SAAS,mBAAmB,CAAC,GAAW;IACtC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,0FAA0F,CAAC;IACzG,IAAI,KAA6B,CAAC;IAClC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAC1C,IAAI,mCAAmC,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,SAAS;QAC5D,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAW;IACvC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,KAA6B,CAAC;IAClC,MAAM,UAAU,GAAG,2CAA2C,CAAC;IAC/D,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,MAAM,KAAK,GAAG,sCAAsC,CAAC;IACrD,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,uCAAuC,CAAC;IACvD,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAW;IACnC,OAAO,GAAG;SACP,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC;SACjC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAW,EAAE,OAAiC;IACvE,IAAI,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAClD,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,IAAI,GAAG,CAAC;IAClD,IAAI,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,KAAK,IAAI,IAAI,CAAC;IAC/C,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,IAAI,IAAI,CAAC;IACjD,IAAI,OAAO,CAAC,eAAe,GAAG,CAAC;QAAE,KAAK,IAAI,IAAI,CAAC;IAC/C,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;IACrB,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,EAAG,CAAC;QACzB,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YAC9D,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;gBAAE,SAAS;YAC9F,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,KAAK,CAAC,WAAW,EAAE;gBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACrC,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrG,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;AACtB,CAAC;AAED,SAAS,iBAAiB,CAAC,WAAmB,EAAE,OAAuC;IAKrF,IAAI,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO;aAC5B,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YACvB,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,IAAI,IAAI,UAAU,KAAK,GAAG,CAAC,MAAM,CAAC;YAClE,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE;SAC9B,CAAC,CAAC;aACF,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACxD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAC1E,OAAO;YACL,UAAU,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,cAAc;YAClE,SAAS,EAAE,OAAO,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,uBAAuB;YAClG,OAAO;SACR,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IACzE,MAAM,UAAU,GAAG,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IACpE,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC1E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IAC1E,OAAO;QACL,UAAU;QACV,SAAS,EAAE,WAAW,CAAC,WAAW,EAAE,SAAS,CAAC;QAC9C,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC5B,IAAI,EAAE,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC;YACpC,OAAO,EAAE,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC;SACrC,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY;IACtC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACpE,OAAO,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,QAAQ,MAAM,CAAC;AACrE,CAAC;AAED,SAAS,gBAAgB,CAAC,WAAmB,EAAE,SAAiB;IAC9D,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACjD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,SAAS,EAAE,CAAC,CAAC;IAClF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,iBAAiB,CAAC,SAAiB,EAAE,SAAwD;IACpG,IAAI,SAAS,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC3D,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;IAClC,IAAI,KAAK,CAAC,WAAW,EAAE;QAAE,OAAO,gBAAgB,CAAC;IACjD,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM;QAAE,OAAO,cAAc,CAAC;IACvE,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;AACrF,CAAC;AAED,SAAS,UAAU,CAAC,WAAmB,EAAE,QAAgB;IACvD,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,EAAE,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,aAAa,CAAC,UAAkB,EAAE,SAAiB,EAAE,SAAiB;IAC7E,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,UAAU,IAAI,SAAS,IAAI,SAAS,IAAI,UAAU,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7H,OAAO,OAAO,IAAI,EAAE,CAAC;AACvB,CAAC;AAED,SAAS,gBAAgB,CAAC,UAAkB,EAAE,cAAsB,EAAE,GAAW;IAC/E,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,UAAU,IAAI,cAAc,IAAI,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5G,OAAO,QAAQ,IAAI,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,WAAW,CAAC,WAAmB,EAAE,OAAe;IACvD,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACjE,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,cAAc,CAAC,MAAc;IACpC,OAAO,MAAM;SACV,IAAI,EAAE;SACN,WAAW,EAAE;SACb,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC;SAC9B,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC;AAC7C,CAAC;AAED,SAAS,aAAa,CAAC,IAAc;IACnC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC1F,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,IAAI;SACR,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;SACtB,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,IAAI,EAAE;SACN,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,gBAAgB,CAAC;AACxE,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;AACrC,CAAC"}
@@ -2,7 +2,7 @@ import { describe, expect, it, afterEach } from 'vitest';
2
2
  import { mkdtempSync, readFileSync, rmSync, writeFileSync, mkdirSync } from 'node:fs';
3
3
  import { join } from 'node:path';
4
4
  import { tmpdir } from 'node:os';
5
- import { candidateToDqlSource, createBlockStudioImportSession, loadBlockStudioImportSession, updateBlockStudioImportCandidate, } from './block-studio-import.js';
5
+ import { candidateToDqlSource, clearBlockStudioImportSessions, createBlockStudioImportSession, deleteBlockStudioImportSession, listBlockStudioImportSessions, loadBlockStudioImportSession, updateBlockStudioImportCandidate, } from './block-studio-import.js';
6
6
  const tempDirs = [];
7
7
  afterEach(() => {
8
8
  while (tempDirs.length > 0) {
@@ -21,6 +21,8 @@ describe('Block Studio SQL import', () => {
21
21
  const root = tempProject();
22
22
  writeFileSync(join(root, 'revenue.sql'), `-- name: revenue by region
23
23
  -- description: Revenue by region from legacy BI
24
+ -- domain: finance
25
+ -- tags: dashboard, migration
24
26
  select region, sum(revenue) as total_revenue
25
27
  from marts.orders
26
28
  group by region;
@@ -37,10 +39,13 @@ group by region;
37
39
  expect(candidate.domain).toBe('finance');
38
40
  expect(candidate.owner).toBe('analytics');
39
41
  expect(candidate.description).toBe('Revenue by region from legacy BI');
42
+ expect(candidate.tags).toEqual(['imported', 'raw-sql', 'dashboard', 'migration']);
40
43
  expect(candidate.lineage.sourceTables).toEqual(['marts.orders']);
41
44
  expect(candidate.dqlSource).toContain('block "Revenue By Region"');
45
+ expect(candidate.dqlSource).toContain('status = "draft"');
42
46
  expect(candidate.dqlSource).toContain('query = """');
43
- expect(candidate.reviewStatus).toBe('draft');
47
+ expect(candidate.reviewStatus).toBe('review');
48
+ expect(candidate.conversionNotes?.[0]).toMatch(/Deterministic SQL extraction/);
44
49
  expect(readFileSync(join(root, '.dql', 'imports', session.id, 'manifest.json'), 'utf-8')).toContain(candidate.id);
45
50
  });
46
51
  it('splits multi-statement SQL without breaking semicolons inside strings', () => {
@@ -59,6 +64,33 @@ select region, count(*) as n from raw.accounts group by region;
59
64
  expect(session.candidates[1].lineage.sourceTables).toEqual(['raw.accounts']);
60
65
  expect(session.candidates[0].lineage.totalStatements).toBe(2);
61
66
  });
67
+ it('splits SQL Server style GO batches', () => {
68
+ const root = tempProject();
69
+ writeFileSync(join(root, 'legacy-go.sql'), `
70
+ select count(*) as n from raw.events
71
+ GO
72
+ select region, count(*) as n from raw.accounts group by region
73
+ go
74
+ `);
75
+ const session = createBlockStudioImportSession(root, {
76
+ inputPath: 'legacy-go.sql',
77
+ domain: 'ops',
78
+ });
79
+ expect(session.candidates).toHaveLength(2);
80
+ expect(session.candidates[0].lineage.sourceTables).toEqual(['raw.events']);
81
+ expect(session.candidates[1].lineage.sourceTables).toEqual(['raw.accounts']);
82
+ expect(session.candidates[0].splitStrategy).toBe('semicolon-go');
83
+ });
84
+ it('warns when one candidate likely contains several undelimited scripts', () => {
85
+ const root = tempProject();
86
+ writeFileSync(join(root, 'missing-delimiters.sql'), 'select * from raw.events select * from raw.accounts');
87
+ const session = createBlockStudioImportSession(root, {
88
+ inputPath: 'missing-delimiters.sql',
89
+ domain: 'ops',
90
+ });
91
+ expect(session.candidates).toHaveLength(1);
92
+ expect(session.candidates[0].warnings.join(' ')).toMatch(/multiple SELECT\/WITH clauses/i);
93
+ });
62
94
  it('imports every SQL file in a folder and reloads the persisted session', () => {
63
95
  const root = tempProject();
64
96
  mkdirSync(join(root, 'queries'));
@@ -73,6 +105,36 @@ select region, count(*) as n from raw.accounts group by region;
73
105
  expect(reloaded.candidates.map((candidate) => candidate.lineage.sourceTables[0]).sort()).toEqual(['source_a', 'source_b']);
74
106
  expect(reloaded.defaults.domain).toBe('shared-reporting');
75
107
  });
108
+ it('creates sessions from pasted or uploaded SQL sources and lists summaries', () => {
109
+ const root = tempProject();
110
+ const session = createBlockStudioImportSession(root, {
111
+ inputMode: 'paste',
112
+ sources: [{ path: 'manual.sql', content: 'select * from raw.events; select * from raw.accounts;' }],
113
+ domain: 'ops',
114
+ });
115
+ const summaries = listBlockStudioImportSessions(root);
116
+ expect(session.inputMode).toBe('paste');
117
+ expect(session.sourceFiles).toEqual(['manual.sql']);
118
+ expect(session.candidates).toHaveLength(2);
119
+ expect(summaries).toHaveLength(1);
120
+ expect(summaries[0].candidateCount).toBe(2);
121
+ });
122
+ it('deletes one import session or clears all import history', () => {
123
+ const root = tempProject();
124
+ const first = createBlockStudioImportSession(root, {
125
+ inputMode: 'paste',
126
+ sources: [{ path: 'first.sql', content: 'select * from first_table;' }],
127
+ });
128
+ createBlockStudioImportSession(root, {
129
+ inputMode: 'paste',
130
+ sources: [{ path: 'second.sql', content: 'select * from second_table;' }],
131
+ });
132
+ expect(listBlockStudioImportSessions(root)).toHaveLength(2);
133
+ deleteBlockStudioImportSession(root, first.id);
134
+ expect(listBlockStudioImportSessions(root)).toHaveLength(1);
135
+ expect(clearBlockStudioImportSessions(root)).toBe(1);
136
+ expect(listBlockStudioImportSessions(root)).toHaveLength(0);
137
+ });
76
138
  it('detects parameters and refreshes generated DQL when a candidate is updated', () => {
77
139
  const root = tempProject();
78
140
  writeFileSync(join(root, 'parameterized.sql'), 'select * from orders where region = :region and dt >= {{ start_date }};');