@memberjunction/cli 5.4.1 → 5.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/commands/doctor/index.d.ts +12 -0
  2. package/dist/commands/doctor/index.d.ts.map +1 -0
  3. package/dist/commands/doctor/index.js +69 -0
  4. package/dist/commands/doctor/index.js.map +1 -0
  5. package/dist/commands/install/index.d.ts +18 -136
  6. package/dist/commands/install/index.d.ts.map +1 -1
  7. package/dist/commands/install/index.js +189 -390
  8. package/dist/commands/install/index.js.map +1 -1
  9. package/dist/commands/sql-audit/index.d.ts +25 -0
  10. package/dist/commands/sql-audit/index.d.ts.map +1 -0
  11. package/dist/commands/sql-audit/index.js +198 -0
  12. package/dist/commands/sql-audit/index.js.map +1 -0
  13. package/dist/commands/sql-convert/index.d.ts +30 -0
  14. package/dist/commands/sql-convert/index.d.ts.map +1 -0
  15. package/dist/commands/sql-convert/index.js +128 -0
  16. package/dist/commands/sql-convert/index.js.map +1 -0
  17. package/dist/commands/translate-sql/index.d.ts +39 -0
  18. package/dist/commands/translate-sql/index.d.ts.map +1 -0
  19. package/dist/commands/translate-sql/index.js +229 -0
  20. package/dist/commands/translate-sql/index.js.map +1 -0
  21. package/dist/lib/legacy-install.d.ts +29 -0
  22. package/dist/lib/legacy-install.d.ts.map +1 -0
  23. package/dist/lib/legacy-install.js +391 -0
  24. package/dist/lib/legacy-install.js.map +1 -0
  25. package/dist/light-commands.d.ts.map +1 -1
  26. package/dist/light-commands.js +6 -1
  27. package/dist/light-commands.js.map +1 -1
  28. package/dist/translate-sql/classifier.d.ts +27 -0
  29. package/dist/translate-sql/classifier.d.ts.map +1 -0
  30. package/dist/translate-sql/classifier.js +118 -0
  31. package/dist/translate-sql/classifier.js.map +1 -0
  32. package/dist/translate-sql/groundTruth.d.ts +25 -0
  33. package/dist/translate-sql/groundTruth.d.ts.map +1 -0
  34. package/dist/translate-sql/groundTruth.js +93 -0
  35. package/dist/translate-sql/groundTruth.js.map +1 -0
  36. package/dist/translate-sql/index.d.ts +5 -0
  37. package/dist/translate-sql/index.d.ts.map +1 -0
  38. package/dist/translate-sql/index.js +5 -0
  39. package/dist/translate-sql/index.js.map +1 -0
  40. package/dist/translate-sql/reportGenerator.d.ts +26 -0
  41. package/dist/translate-sql/reportGenerator.d.ts.map +1 -0
  42. package/dist/translate-sql/reportGenerator.js +83 -0
  43. package/dist/translate-sql/reportGenerator.js.map +1 -0
  44. package/dist/translate-sql/ruleTranslator.d.ts +21 -0
  45. package/dist/translate-sql/ruleTranslator.d.ts.map +1 -0
  46. package/dist/translate-sql/ruleTranslator.js +74 -0
  47. package/dist/translate-sql/ruleTranslator.js.map +1 -0
  48. package/oclif.manifest.json +532 -168
  49. package/package.json +14 -12
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacy-install.js","sourceRoot":"","sources":["../../src/lib/legacy-install.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"light-commands.d.ts","sourceRoot":"","sources":["../src/light-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,MAAM,CA6B7C,CAAC"}
1
+ {"version":3,"file":"light-commands.d.ts","sourceRoot":"","sources":["../src/light-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,MAAM,CAoC7C,CAAC"}
@@ -22,13 +22,18 @@ export const LIGHT_COMMANDS = new Set([
22
22
  // Database commands - use @memberjunction/skyway-core + config only
23
23
  'clean',
24
24
  'migrate',
25
- // Install wizard - uses zod, recast, fs-extra only
25
+ // Install wizard - uses @memberjunction/installer engine (lightweight, no bootstrap)
26
26
  'install',
27
+ // Doctor - uses @memberjunction/installer engine (lightweight, no bootstrap)
28
+ 'doctor',
27
29
  // Topic index commands (just display help text, no heavy imports)
28
30
  'ai',
29
31
  'ai audit',
30
32
  'test',
31
33
  'dbdoc',
34
+ // SQL conversion commands - use @memberjunction/sql-converter + sqlglot-ts only
35
+ 'sql-convert',
36
+ 'sql-audit',
32
37
  // DBDoc commands - already use dynamic imports internally
33
38
  'dbdoc init',
34
39
  'dbdoc analyze',
@@ -1 +1 @@
1
- {"version":3,"file":"light-commands.js","sourceRoot":"","sources":["../src/light-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,cAAc,GAAwB,IAAI,GAAG,CAAC;IACzD,yBAAyB;IACzB,SAAS;IACT,MAAM;IAEN,sCAAsC;IACtC,MAAM;IAEN,oEAAoE;IACpE,OAAO;IACP,SAAS;IAET,mDAAmD;IACnD,SAAS;IAET,kEAAkE;IAClE,IAAI;IACJ,UAAU;IACV,MAAM;IACN,OAAO;IAEP,0DAA0D;IAC1D,YAAY;IACZ,eAAe;IACf,cAAc;IACd,6BAA6B;IAC7B,wBAAwB;IACxB,aAAa;IACb,cAAc;CACf,CAAC,CAAC"}
1
+ {"version":3,"file":"light-commands.js","sourceRoot":"","sources":["../src/light-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,cAAc,GAAwB,IAAI,GAAG,CAAC;IACzD,yBAAyB;IACzB,SAAS;IACT,MAAM;IAEN,sCAAsC;IACtC,MAAM;IAEN,oEAAoE;IACpE,OAAO;IACP,SAAS;IAET,qFAAqF;IACrF,SAAS;IAET,6EAA6E;IAC7E,QAAQ;IAER,kEAAkE;IAClE,IAAI;IACJ,UAAU;IACV,MAAM;IACN,OAAO;IAEP,gFAAgF;IAChF,aAAa;IACb,WAAW;IAEX,0DAA0D;IAC1D,YAAY;IACZ,eAAe;IACf,cAAc;IACd,6BAA6B;IAC7B,wBAAwB;IACxB,aAAa;IACb,cAAc;CACf,CAAC,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { DatabasePlatform } from '@memberjunction/core';
2
+ /**
3
+ * Classification result for a SQL fragment.
4
+ */
5
+ export type SQLClassification = 'standard' | 'rule-based' | 'llm-needed';
6
+ /**
7
+ * Classifies a SQL fragment to determine the translation approach needed.
8
+ *
9
+ * @param sql - The SQL fragment to classify
10
+ * @param sourceDialect - The dialect the SQL is written in
11
+ * @returns The classification determining the translation strategy
12
+ */
13
+ export declare function ClassifySQL(sql: string, sourceDialect: DatabasePlatform): SQLClassification;
14
+ /**
15
+ * Batch classification result.
16
+ */
17
+ export interface ClassificationResult {
18
+ sql: string;
19
+ classification: SQLClassification;
20
+ /** Specific dialect markers found in the SQL */
21
+ markers: string[];
22
+ }
23
+ /**
24
+ * Classifies multiple SQL fragments and returns detailed results.
25
+ */
26
+ export declare function ClassifySQLBatch(fragments: string[], sourceDialect: DatabasePlatform): ClassificationResult[];
27
+ //# sourceMappingURL=classifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classifier.d.ts","sourceRoot":"","sources":["../../src/translate-sql/classifier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,YAAY,GAAG,YAAY,CAAC;AA8CzE;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,gBAAgB,GAAG,iBAAiB,CAmB3F;AAuBD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,iBAAiB,CAAC;IAClC,gDAAgD;IAChD,OAAO,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC5B,SAAS,EAAE,MAAM,EAAE,EACnB,aAAa,EAAE,gBAAgB,GAChC,oBAAoB,EAAE,CAMxB"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Patterns that indicate SQL Server-specific syntax.
3
+ */
4
+ const SQL_SERVER_PATTERNS = [
5
+ /\[[\w\s]+\]/, // [bracket] identifiers
6
+ /\bTOP\s+\d+/i, // TOP N
7
+ /\bGETUTCDATE\s*\(\)/i, // GETUTCDATE()
8
+ /\bGETDATE\s*\(\)/i, // GETDATE()
9
+ /\bISNULL\s*\(/i, // ISNULL()
10
+ /\bIIF\s*\(/i, // IIF()
11
+ /\bSCOPE_IDENTITY\s*\(\)/i, // SCOPE_IDENTITY()
12
+ /\bNEWID\s*\(\)/i, // NEWID()
13
+ /\bNEWSEQUENTIALID\s*\(\)/i, // NEWSEQUENTIALID()
14
+ /\bDATEADD\s*\(/i, // DATEADD()
15
+ /\bDATEDIFF\s*\(/i, // DATEDIFF()
16
+ /\bCONVERT\s*\(/i, // CONVERT()
17
+ /\bCAST\s*\([^)]+\bAS\s+NVARCHAR/i, // CAST(... AS NVARCHAR...)
18
+ /\bCAST\s*\([^)]+\bAS\s+BIT\b/i, // CAST(... AS BIT)
19
+ /\bBIT\b/i, // BIT type
20
+ /\bUNIQUEIDENTIFIER\b/i, // UNIQUEIDENTIFIER type
21
+ /\bNVARCHAR\b/i, // NVARCHAR type
22
+ /\bDATETIMEOFFSET\b/i, // DATETIMEOFFSET type
23
+ /=\s*1\b/, // = 1 (boolean comparison)
24
+ /=\s*0\b/, // = 0 (boolean comparison)
25
+ /\bEXEC\s+/i, // EXEC stored_proc
26
+ /\+\s*'/, // String concatenation with +
27
+ ];
28
+ /**
29
+ * Patterns that can be translated with simple rules (identifier quoting + boolean literals).
30
+ */
31
+ const SIMPLE_RULE_PATTERNS = [
32
+ /\[[\w]+\]/, // Simple bracket identifiers (no spaces)
33
+ /=\s*1\b/, // Boolean = 1
34
+ /=\s*0\b/, // Boolean = 0
35
+ ];
36
+ /**
37
+ * Patterns indicating the SQL is standard and cross-platform.
38
+ */
39
+ const STANDARD_SQL_KEYWORDS = [
40
+ /^[\w\s.,=<>!()'+\-*/%;]+$/, // Only basic characters
41
+ ];
42
+ /**
43
+ * Classifies a SQL fragment to determine the translation approach needed.
44
+ *
45
+ * @param sql - The SQL fragment to classify
46
+ * @param sourceDialect - The dialect the SQL is written in
47
+ * @returns The classification determining the translation strategy
48
+ */
49
+ export function ClassifySQL(sql, sourceDialect) {
50
+ if (!sql || sql.trim().length === 0)
51
+ return 'standard';
52
+ const trimmed = sql.trim();
53
+ // Check for dialect-specific patterns
54
+ const dialectPatterns = sourceDialect === 'sqlserver' ? SQL_SERVER_PATTERNS : [];
55
+ const hasDialectSpecific = dialectPatterns.some(p => p.test(trimmed));
56
+ if (!hasDialectSpecific) {
57
+ return 'standard';
58
+ }
59
+ // Check if it's only simple transformations (bracket quoting + boolean literals)
60
+ if (isOnlySimpleTransformations(trimmed, sourceDialect)) {
61
+ return 'rule-based';
62
+ }
63
+ return 'llm-needed';
64
+ }
65
+ /**
66
+ * Checks whether a SQL fragment only needs simple, rule-based transformations.
67
+ * Simple transformations are: bracket→double-quote identifier conversion and 1/0→true/false booleans.
68
+ */
69
+ function isOnlySimpleTransformations(sql, sourceDialect) {
70
+ if (sourceDialect !== 'sqlserver')
71
+ return false;
72
+ // Remove bracket identifiers and boolean comparisons, then check if anything dialect-specific remains
73
+ let simplified = sql
74
+ .replace(/\[[\w]+\]/g, '__ID__') // Remove simple bracket identifiers
75
+ .replace(/=\s*1\b/g, '= __BOOL__') // Remove boolean = 1
76
+ .replace(/=\s*0\b/g, '= __BOOL__'); // Remove boolean = 0
77
+ // Now check if any complex dialect markers remain
78
+ const complexPatterns = SQL_SERVER_PATTERNS.filter(p => !SIMPLE_RULE_PATTERNS.some(sp => sp.source === p.source));
79
+ return !complexPatterns.some(p => p.test(simplified));
80
+ }
81
+ /**
82
+ * Classifies multiple SQL fragments and returns detailed results.
83
+ */
84
+ export function ClassifySQLBatch(fragments, sourceDialect) {
85
+ return fragments.map(sql => {
86
+ const classification = ClassifySQL(sql, sourceDialect);
87
+ const markers = findDialectMarkers(sql, sourceDialect);
88
+ return { sql, classification, markers };
89
+ });
90
+ }
91
+ /**
92
+ * Finds specific dialect markers in a SQL fragment for reporting.
93
+ */
94
+ function findDialectMarkers(sql, sourceDialect) {
95
+ if (sourceDialect !== 'sqlserver')
96
+ return [];
97
+ const markers = [];
98
+ const tests = [
99
+ [/\[[\w\s]+\]/, 'bracket-identifiers'],
100
+ [/\bTOP\s+\d+/i, 'TOP-N'],
101
+ [/\bGETUTCDATE\s*\(\)/i, 'GETUTCDATE'],
102
+ [/\bGETDATE\s*\(\)/i, 'GETDATE'],
103
+ [/\bISNULL\s*\(/i, 'ISNULL'],
104
+ [/\bIIF\s*\(/i, 'IIF'],
105
+ [/=\s*[10]\b/, 'boolean-literal'],
106
+ [/\+\s*'/i, 'string-concat-plus'],
107
+ [/\bCONVERT\s*\(/i, 'CONVERT'],
108
+ [/\bDATEADD\s*\(/i, 'DATEADD'],
109
+ [/\bDATEDIFF\s*\(/i, 'DATEDIFF'],
110
+ [/\bSCOPE_IDENTITY\s*\(\)/i, 'SCOPE_IDENTITY'],
111
+ ];
112
+ for (const [regex, label] of tests) {
113
+ if (regex.test(sql))
114
+ markers.push(label);
115
+ }
116
+ return markers;
117
+ }
118
+ //# sourceMappingURL=classifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classifier.js","sourceRoot":"","sources":["../../src/translate-sql/classifier.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { DatabasePlatform } from '@memberjunction/core';
2
+ /**
3
+ * A single translation example pairing source and target SQL.
4
+ */
5
+ export interface TranslationExample {
6
+ source: {
7
+ platform: DatabasePlatform;
8
+ sql: string;
9
+ };
10
+ target: {
11
+ platform: DatabasePlatform;
12
+ sql: string;
13
+ };
14
+ category: string;
15
+ }
16
+ /**
17
+ * Ground truth translation examples for SQL Server ↔ PostgreSQL.
18
+ * Used as few-shot examples in LLM translation prompts.
19
+ */
20
+ export declare const GROUND_TRUTH_EXAMPLES: TranslationExample[];
21
+ /**
22
+ * Builds LLM prompt sections from ground truth examples for a given dialect pair.
23
+ */
24
+ export declare function BuildGroundTruthPromptSection(from: DatabasePlatform, to: DatabasePlatform, maxExamples?: number): string;
25
+ //# sourceMappingURL=groundTruth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groundTruth.d.ts","sourceRoot":"","sources":["../../src/translate-sql/groundTruth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,MAAM,EAAE;QAAE,QAAQ,EAAE,gBAAgB,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACpD,MAAM,EAAE;QAAE,QAAQ,EAAE,gBAAgB,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACpD,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,kBAAkB,EAyErD,CAAC;AAEF;;GAEG;AACH,wBAAgB,6BAA6B,CACzC,IAAI,EAAE,gBAAgB,EACtB,EAAE,EAAE,gBAAgB,EACpB,WAAW,GAAE,MAAU,GACxB,MAAM,CAcR"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Ground truth translation examples for SQL Server ↔ PostgreSQL.
3
+ * Used as few-shot examples in LLM translation prompts.
4
+ */
5
+ export const GROUND_TRUTH_EXAMPLES = [
6
+ // Identifier quoting
7
+ {
8
+ source: { platform: 'sqlserver', sql: "[Status] = 'Active' AND [Name] LIKE 'J%'" },
9
+ target: { platform: 'postgresql', sql: '"Status" = \'Active\' AND "Name" LIKE \'J%\'' },
10
+ category: 'identifier-quoting'
11
+ },
12
+ // Boolean literals
13
+ {
14
+ source: { platform: 'sqlserver', sql: "[IsActive] = 1 AND [IsAdmin] = 0" },
15
+ target: { platform: 'postgresql', sql: '"IsActive" = true AND "IsAdmin" = false' },
16
+ category: 'boolean-literal'
17
+ },
18
+ // TOP → LIMIT
19
+ {
20
+ source: { platform: 'sqlserver', sql: "SELECT TOP 10 [Name], [Email] FROM [__mj].[vwUsers] WHERE [IsActive] = 1 ORDER BY [Name]" },
21
+ target: { platform: 'postgresql', sql: 'SELECT "Name", "Email" FROM __mj."vwUsers" WHERE "IsActive" = true ORDER BY "Name" LIMIT 10' },
22
+ category: 'top-to-limit'
23
+ },
24
+ // GETUTCDATE → NOW()
25
+ {
26
+ source: { platform: 'sqlserver', sql: "[CreatedAt] > GETUTCDATE() - 30" },
27
+ target: { platform: 'postgresql', sql: '"CreatedAt" > NOW() - INTERVAL \'30 days\'' },
28
+ category: 'date-function'
29
+ },
30
+ // ISNULL → COALESCE
31
+ {
32
+ source: { platform: 'sqlserver', sql: "ISNULL([MiddleName], '') + ' ' + [LastName]" },
33
+ target: { platform: 'postgresql', sql: "COALESCE(\"MiddleName\", '') || ' ' || \"LastName\"" },
34
+ category: 'null-function'
35
+ },
36
+ // String concatenation (+ → ||)
37
+ {
38
+ source: { platform: 'sqlserver', sql: "[FirstName] + ' ' + [LastName]" },
39
+ target: { platform: 'postgresql', sql: '"FirstName" || \' \' || "LastName"' },
40
+ category: 'string-concat'
41
+ },
42
+ // CONVERT → CAST
43
+ {
44
+ source: { platform: 'sqlserver', sql: "CONVERT(NVARCHAR(50), [Price])" },
45
+ target: { platform: 'postgresql', sql: 'CAST("Price" AS VARCHAR(50))' },
46
+ category: 'type-conversion'
47
+ },
48
+ // IIF → CASE
49
+ {
50
+ source: { platform: 'sqlserver', sql: "IIF([Status] = 1, 'Active', 'Inactive')" },
51
+ target: { platform: 'postgresql', sql: "CASE WHEN \"Status\" = true THEN 'Active' ELSE 'Inactive' END" },
52
+ category: 'conditional'
53
+ },
54
+ // DATEADD → interval arithmetic
55
+ {
56
+ source: { platform: 'sqlserver', sql: "DATEADD(day, -7, GETUTCDATE())" },
57
+ target: { platform: 'postgresql', sql: "NOW() - INTERVAL '7 days'" },
58
+ category: 'date-arithmetic'
59
+ },
60
+ // DATEDIFF → EXTRACT/date_part
61
+ {
62
+ source: { platform: 'sqlserver', sql: "DATEDIFF(day, [StartDate], [EndDate])" },
63
+ target: { platform: 'postgresql', sql: 'EXTRACT(DAY FROM ("EndDate" - "StartDate"))::integer' },
64
+ category: 'date-diff'
65
+ },
66
+ // Schema-qualified with brackets
67
+ {
68
+ source: { platform: 'sqlserver', sql: "SELECT * FROM [__mj].[vwEntities] WHERE [SchemaName] = '__mj'" },
69
+ target: { platform: 'postgresql', sql: 'SELECT * FROM __mj."vwEntities" WHERE "SchemaName" = \'__mj\'' },
70
+ category: 'schema-qualified'
71
+ },
72
+ // Complex WHERE clause
73
+ {
74
+ source: { platform: 'sqlserver', sql: "[EntityID] IN (SELECT [ID] FROM [__mj].[vwEntities] WHERE [IncludeInAPI] = 1)" },
75
+ target: { platform: 'postgresql', sql: '"EntityID" IN (SELECT "ID" FROM __mj."vwEntities" WHERE "IncludeInAPI" = true)' },
76
+ category: 'subquery'
77
+ },
78
+ ];
79
+ /**
80
+ * Builds LLM prompt sections from ground truth examples for a given dialect pair.
81
+ */
82
+ export function BuildGroundTruthPromptSection(from, to, maxExamples = 8) {
83
+ const relevant = GROUND_TRUTH_EXAMPLES
84
+ .filter(e => e.source.platform === from && e.target.platform === to)
85
+ .slice(0, maxExamples);
86
+ if (relevant.length === 0)
87
+ return '';
88
+ const lines = relevant.map((ex, i) => `Example ${i + 1} (${ex.category}):\n` +
89
+ ` Source (${from}): ${ex.source.sql}\n` +
90
+ ` Target (${to}): ${ex.target.sql}`);
91
+ return `## Translation Examples\n\n${lines.join('\n\n')}`;
92
+ }
93
+ //# sourceMappingURL=groundTruth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groundTruth.js","sourceRoot":"","sources":["../../src/translate-sql/groundTruth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export { SQLClassification, ClassifySQL, ClassifySQLBatch, ClassificationResult } from './classifier.js';
2
+ export { RuleBasedTranslate, RuleTranslationResult } from './ruleTranslator.js';
3
+ export { GROUND_TRUTH_EXAMPLES, BuildGroundTruthPromptSection, TranslationExample } from './groundTruth.js';
4
+ export { GenerateTranslationReport, TranslationReportItem } from './reportGenerator.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/translate-sql/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACzG,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,6BAA6B,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC5G,OAAO,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { ClassifySQL, ClassifySQLBatch } from './classifier.js';
2
+ export { RuleBasedTranslate } from './ruleTranslator.js';
3
+ export { GROUND_TRUTH_EXAMPLES, BuildGroundTruthPromptSection } from './groundTruth.js';
4
+ export { GenerateTranslationReport } from './reportGenerator.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/translate-sql/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,WAAW,EAAE,gBAAgB,EAAwB,MAAM,iBAAiB,CAAC;AACzG,OAAO,EAAE,kBAAkB,EAAyB,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,6BAA6B,EAAsB,MAAM,kBAAkB,CAAC;AAC5G,OAAO,EAAE,yBAAyB,EAAyB,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { DatabasePlatform } from '@memberjunction/core';
2
+ import { SQLClassification } from './classifier.js';
3
+ /**
4
+ * A single translation item for the report.
5
+ */
6
+ export interface TranslationReportItem {
7
+ /** Source identifier (e.g., "Query: User Activity Report") */
8
+ source: string;
9
+ /** The original SQL fragment */
10
+ originalSQL: string;
11
+ /** How the SQL was classified */
12
+ classification: SQLClassification;
13
+ /** The translated SQL (null if not translated) */
14
+ translatedSQL: string | null;
15
+ /** Translation method used */
16
+ method: 'rule-based' | 'llm' | 'skipped' | 'flagged';
17
+ /** Dialect markers found */
18
+ markers: string[];
19
+ /** Any error or note */
20
+ note?: string;
21
+ }
22
+ /**
23
+ * Generates a markdown report from translation results.
24
+ */
25
+ export declare function GenerateTranslationReport(items: TranslationReportItem[], from: DatabasePlatform, to: DatabasePlatform): string;
26
+ //# sourceMappingURL=reportGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reportGenerator.d.ts","sourceRoot":"","sources":["../../src/translate-sql/reportGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IAClC,8DAA8D;IAC9D,MAAM,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,iCAAiC;IACjC,cAAc,EAAE,iBAAiB,CAAC;IAClC,kDAAkD;IAClD,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,8BAA8B;IAC9B,MAAM,EAAE,YAAY,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,CAAC;IACrD,4BAA4B;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,wBAAwB;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACrC,KAAK,EAAE,qBAAqB,EAAE,EAC9B,IAAI,EAAE,gBAAgB,EACtB,EAAE,EAAE,gBAAgB,GACrB,MAAM,CA6ER"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Generates a markdown report from translation results.
3
+ */
4
+ export function GenerateTranslationReport(items, from, to) {
5
+ const lines = [];
6
+ lines.push(`# SQL Translation Report`);
7
+ lines.push(`**Source dialect:** ${from}`);
8
+ lines.push(`**Target dialect:** ${to}`);
9
+ lines.push(`**Generated at:** ${new Date().toISOString()}`);
10
+ lines.push('');
11
+ // Summary
12
+ const summary = buildSummary(items);
13
+ lines.push(`## Summary`);
14
+ lines.push('');
15
+ lines.push(`| Metric | Count |`);
16
+ lines.push(`|--------|-------|`);
17
+ lines.push(`| Total fragments | ${summary.total} |`);
18
+ lines.push(`| Standard SQL (no translation needed) | ${summary.standard} |`);
19
+ lines.push(`| Rule-based translations | ${summary.ruleBased} |`);
20
+ lines.push(`| LLM translations | ${summary.llm} |`);
21
+ lines.push(`| Flagged for review | ${summary.flagged} |`);
22
+ lines.push('');
23
+ // Details by classification
24
+ if (summary.ruleBased > 0 || summary.llm > 0) {
25
+ lines.push(`## Translations`);
26
+ lines.push('');
27
+ const translated = items.filter(i => i.method === 'rule-based' || i.method === 'llm');
28
+ for (const item of translated) {
29
+ lines.push(`### ${item.source}`);
30
+ lines.push(`**Method:** ${item.method} | **Markers:** ${item.markers.join(', ') || 'none'}`);
31
+ lines.push('');
32
+ lines.push('**Original:**');
33
+ lines.push('```sql');
34
+ lines.push(item.originalSQL);
35
+ lines.push('```');
36
+ lines.push('');
37
+ lines.push('**Translated:**');
38
+ lines.push('```sql');
39
+ lines.push(item.translatedSQL || '-- Translation failed');
40
+ lines.push('```');
41
+ if (item.note) {
42
+ lines.push(`> ${item.note}`);
43
+ }
44
+ lines.push('');
45
+ }
46
+ }
47
+ // Flagged items
48
+ const flagged = items.filter(i => i.method === 'flagged');
49
+ if (flagged.length > 0) {
50
+ lines.push(`## Flagged for Human Review`);
51
+ lines.push('');
52
+ for (const item of flagged) {
53
+ lines.push(`### ${item.source}`);
54
+ lines.push(`**Markers:** ${item.markers.join(', ')}`);
55
+ lines.push('```sql');
56
+ lines.push(item.originalSQL);
57
+ lines.push('```');
58
+ if (item.note) {
59
+ lines.push(`> ${item.note}`);
60
+ }
61
+ lines.push('');
62
+ }
63
+ }
64
+ // Standard SQL items (collapsed)
65
+ const standard = items.filter(i => i.classification === 'standard');
66
+ if (standard.length > 0) {
67
+ lines.push(`## Standard SQL (No Translation Needed)`);
68
+ lines.push('');
69
+ lines.push(`${standard.length} fragments are standard SQL and work on both platforms.`);
70
+ lines.push('');
71
+ }
72
+ return lines.join('\n');
73
+ }
74
+ function buildSummary(items) {
75
+ return {
76
+ total: items.length,
77
+ standard: items.filter(i => i.classification === 'standard').length,
78
+ ruleBased: items.filter(i => i.method === 'rule-based').length,
79
+ llm: items.filter(i => i.method === 'llm').length,
80
+ flagged: items.filter(i => i.method === 'flagged').length,
81
+ };
82
+ }
83
+ //# sourceMappingURL=reportGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reportGenerator.js","sourceRoot":"","sources":["../../src/translate-sql/reportGenerator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { DatabasePlatform } from '@memberjunction/core';
2
+ /**
3
+ * Result of a rule-based SQL translation.
4
+ */
5
+ export interface RuleTranslationResult {
6
+ success: boolean;
7
+ translatedSQL: string;
8
+ appliedRules: string[];
9
+ }
10
+ /**
11
+ * Translates SQL Server SQL to PostgreSQL using deterministic, rule-based transformations.
12
+ * Only handles simple cases: bracket identifiers → double-quote identifiers,
13
+ * boolean literal 1/0 → true/false.
14
+ *
15
+ * @param sql - The source SQL fragment
16
+ * @param from - The source platform
17
+ * @param to - The target platform
18
+ * @returns The translation result with applied rules
19
+ */
20
+ export declare function RuleBasedTranslate(sql: string, from: DatabasePlatform, to: DatabasePlatform): RuleTranslationResult;
21
+ //# sourceMappingURL=ruleTranslator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ruleTranslator.d.ts","sourceRoot":"","sources":["../../src/translate-sql/ruleTranslator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAC9B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,gBAAgB,EACtB,EAAE,EAAE,gBAAgB,GACrB,qBAAqB,CAcvB"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Translates SQL Server SQL to PostgreSQL using deterministic, rule-based transformations.
3
+ * Only handles simple cases: bracket identifiers → double-quote identifiers,
4
+ * boolean literal 1/0 → true/false.
5
+ *
6
+ * @param sql - The source SQL fragment
7
+ * @param from - The source platform
8
+ * @param to - The target platform
9
+ * @returns The translation result with applied rules
10
+ */
11
+ export function RuleBasedTranslate(sql, from, to) {
12
+ if (from === to) {
13
+ return { success: true, translatedSQL: sql, appliedRules: [] };
14
+ }
15
+ if (from === 'sqlserver' && to === 'postgresql') {
16
+ return translateSqlServerToPostgres(sql);
17
+ }
18
+ if (from === 'postgresql' && to === 'sqlserver') {
19
+ return translatePostgresToSqlServer(sql);
20
+ }
21
+ return { success: false, translatedSQL: sql, appliedRules: [] };
22
+ }
23
+ function translateSqlServerToPostgres(sql) {
24
+ let result = sql;
25
+ const appliedRules = [];
26
+ // Rule 1: Convert [bracket] identifiers to "double-quote" identifiers
27
+ const bracketRegex = /\[(\w+)\]/g;
28
+ if (bracketRegex.test(result)) {
29
+ result = result.replace(/\[(\w+)\]/g, '"$1"');
30
+ appliedRules.push('bracket-to-doublequote');
31
+ }
32
+ // Rule 2: Convert boolean = 1 to = true
33
+ if (/=\s*1\b/.test(result)) {
34
+ result = result.replace(/=\s*1\b/g, '= true');
35
+ appliedRules.push('bit-1-to-true');
36
+ }
37
+ // Rule 3: Convert boolean = 0 to = false
38
+ if (/=\s*0\b/.test(result)) {
39
+ result = result.replace(/=\s*0\b/g, '= false');
40
+ appliedRules.push('bit-0-to-false');
41
+ }
42
+ return {
43
+ success: appliedRules.length > 0,
44
+ translatedSQL: result,
45
+ appliedRules
46
+ };
47
+ }
48
+ function translatePostgresToSqlServer(sql) {
49
+ let result = sql;
50
+ const appliedRules = [];
51
+ // Rule 1: Convert "double-quote" identifiers to [bracket] identifiers
52
+ // Only convert identifiers, not string literals
53
+ const dqRegex = /"(\w+)"/g;
54
+ if (dqRegex.test(result)) {
55
+ result = result.replace(/"(\w+)"/g, '[$1]');
56
+ appliedRules.push('doublequote-to-bracket');
57
+ }
58
+ // Rule 2: Convert = true to = 1
59
+ if (/=\s*true\b/i.test(result)) {
60
+ result = result.replace(/=\s*true\b/gi, '= 1');
61
+ appliedRules.push('true-to-bit-1');
62
+ }
63
+ // Rule 3: Convert = false to = 0
64
+ if (/=\s*false\b/i.test(result)) {
65
+ result = result.replace(/=\s*false\b/gi, '= 0');
66
+ appliedRules.push('false-to-bit-0');
67
+ }
68
+ return {
69
+ success: appliedRules.length > 0,
70
+ translatedSQL: result,
71
+ appliedRules
72
+ };
73
+ }
74
+ //# sourceMappingURL=ruleTranslator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ruleTranslator.js","sourceRoot":"","sources":["../../src/translate-sql/ruleTranslator.ts"],"names":[],"mappings":"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"}