@codemarc/blt 1.0.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.
- package/LICENSE +21 -0
- package/README.md +184 -0
- package/dist/commands/bucket.d.ts +3 -0
- package/dist/commands/bucket.d.ts.map +1 -0
- package/dist/commands/bucket.js +399 -0
- package/dist/commands/bucket.js.map +1 -0
- package/dist/commands/check.d.ts +3 -0
- package/dist/commands/check.d.ts.map +1 -0
- package/dist/commands/check.js +43 -0
- package/dist/commands/check.js.map +1 -0
- package/dist/commands/cleanup.d.ts +6 -0
- package/dist/commands/cleanup.d.ts.map +1 -0
- package/dist/commands/cleanup.js +65 -0
- package/dist/commands/cleanup.js.map +1 -0
- package/dist/commands/data.d.ts +8 -0
- package/dist/commands/data.d.ts.map +1 -0
- package/dist/commands/data.js +222 -0
- package/dist/commands/data.js.map +1 -0
- package/dist/commands/env.d.ts +6 -0
- package/dist/commands/env.d.ts.map +1 -0
- package/dist/commands/env.js +29 -0
- package/dist/commands/env.js.map +1 -0
- package/dist/commands/image/color.d.ts +12 -0
- package/dist/commands/image/color.d.ts.map +1 -0
- package/dist/commands/image/color.js +274 -0
- package/dist/commands/image/color.js.map +1 -0
- package/dist/commands/image/convert.d.ts +11 -0
- package/dist/commands/image/convert.d.ts.map +1 -0
- package/dist/commands/image/convert.js +230 -0
- package/dist/commands/image/convert.js.map +1 -0
- package/dist/commands/image/enhance.d.ts +10 -0
- package/dist/commands/image/enhance.d.ts.map +1 -0
- package/dist/commands/image/enhance.js +174 -0
- package/dist/commands/image/enhance.js.map +1 -0
- package/dist/commands/image/sharpen.d.ts +13 -0
- package/dist/commands/image/sharpen.d.ts.map +1 -0
- package/dist/commands/image/sharpen.js +205 -0
- package/dist/commands/image/sharpen.js.map +1 -0
- package/dist/commands/image.d.ts +3 -0
- package/dist/commands/image.d.ts.map +1 -0
- package/dist/commands/image.js +125 -0
- package/dist/commands/image.js.map +1 -0
- package/dist/commands/repo.d.ts +6 -0
- package/dist/commands/repo.d.ts.map +1 -0
- package/dist/commands/repo.js +75 -0
- package/dist/commands/repo.js.map +1 -0
- package/dist/config/config.d.ts +16 -0
- package/dist/config/config.d.ts.map +1 -0
- package/dist/config/config.js +57 -0
- package/dist/config/config.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/constants.d.ts +23 -0
- package/dist/lib/constants.d.ts.map +1 -0
- package/dist/lib/constants.js +22 -0
- package/dist/lib/constants.js.map +1 -0
- package/dist/lib/data-generator.d.ts +11 -0
- package/dist/lib/data-generator.d.ts.map +1 -0
- package/dist/lib/data-generator.js +78 -0
- package/dist/lib/data-generator.js.map +1 -0
- package/dist/lib/database-runner.d.ts +14 -0
- package/dist/lib/database-runner.d.ts.map +1 -0
- package/dist/lib/database-runner.js +186 -0
- package/dist/lib/database-runner.js.map +1 -0
- package/dist/lib/instance-discovery.d.ts +13 -0
- package/dist/lib/instance-discovery.d.ts.map +1 -0
- package/dist/lib/instance-discovery.js +48 -0
- package/dist/lib/instance-discovery.js.map +1 -0
- package/dist/lib/schema-discovery.d.ts +30 -0
- package/dist/lib/schema-discovery.d.ts.map +1 -0
- package/dist/lib/schema-discovery.js +85 -0
- package/dist/lib/schema-discovery.js.map +1 -0
- package/dist/lib/sql-builder.d.ts +25 -0
- package/dist/lib/sql-builder.d.ts.map +1 -0
- package/dist/lib/sql-builder.js +108 -0
- package/dist/lib/sql-builder.js.map +1 -0
- package/dist/lib/yaml-converter.d.ts +26 -0
- package/dist/lib/yaml-converter.d.ts.map +1 -0
- package/dist/lib/yaml-converter.js +350 -0
- package/dist/lib/yaml-converter.js.map +1 -0
- package/dist/utils/supabase.d.ts +3 -0
- package/dist/utils/supabase.d.ts.map +1 -0
- package/dist/utils/supabase.js +19 -0
- package/dist/utils/supabase.js.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Schema discovery and file listing utilities
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.getAvailableSchemas = getAvailableSchemas;
|
|
5
|
+
exports.getDefaultSchemaName = getDefaultSchemaName;
|
|
6
|
+
exports.getSchemaFileList = getSchemaFileList;
|
|
7
|
+
exports.getSchemaTableRows = getSchemaTableRows;
|
|
8
|
+
const fs_1 = require("fs");
|
|
9
|
+
const path_1 = require("path");
|
|
10
|
+
const constants_1 = require("./constants");
|
|
11
|
+
/**
|
|
12
|
+
* Get all available schema names from the schema directory
|
|
13
|
+
*/
|
|
14
|
+
function getAvailableSchemas() {
|
|
15
|
+
const paths = (0, constants_1.getPaths)();
|
|
16
|
+
const schemaBase = (0, path_1.join)(process.cwd(), paths.SCHEMA_BASE);
|
|
17
|
+
if (!(0, fs_1.existsSync)(schemaBase)) {
|
|
18
|
+
return [];
|
|
19
|
+
}
|
|
20
|
+
return (0, fs_1.readdirSync)(schemaBase)
|
|
21
|
+
.filter((item) => {
|
|
22
|
+
const itemPath = (0, path_1.join)(schemaBase, item);
|
|
23
|
+
return (0, fs_1.statSync)(itemPath).isDirectory() && (0, fs_1.existsSync)((0, path_1.join)(itemPath, "sql"));
|
|
24
|
+
})
|
|
25
|
+
.sort();
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Get the default schema name (prefers "public" if it exists)
|
|
29
|
+
*/
|
|
30
|
+
function getDefaultSchemaName() {
|
|
31
|
+
const schemas = getAvailableSchemas();
|
|
32
|
+
// Prefer "public" if it exists, otherwise use the first available schema
|
|
33
|
+
if (schemas.includes("public")) {
|
|
34
|
+
return "public";
|
|
35
|
+
}
|
|
36
|
+
if (schemas.length > 0) {
|
|
37
|
+
return schemas[0];
|
|
38
|
+
}
|
|
39
|
+
// Fallback if no schemas found
|
|
40
|
+
return "public";
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Get detailed file information for all files in a schema's sql directory
|
|
44
|
+
* Only includes files ending in .sql (case-insensitive)
|
|
45
|
+
*/
|
|
46
|
+
function getSchemaFileList(schemaName) {
|
|
47
|
+
const paths = (0, constants_1.getPaths)();
|
|
48
|
+
const effectiveSchemaName = schemaName || getDefaultSchemaName();
|
|
49
|
+
const schemaDir = (0, path_1.join)(process.cwd(), paths.SCHEMA_BASE, effectiveSchemaName, "sql");
|
|
50
|
+
if (!(0, fs_1.existsSync)(schemaDir)) {
|
|
51
|
+
throw new Error(`Schema directory does not exist: ${schemaDir}`);
|
|
52
|
+
}
|
|
53
|
+
const files = (0, fs_1.readdirSync)(schemaDir)
|
|
54
|
+
.filter((file) => {
|
|
55
|
+
// Only include .sql files (case-insensitive)
|
|
56
|
+
return file.toLowerCase().endsWith(".sql");
|
|
57
|
+
})
|
|
58
|
+
.sort()
|
|
59
|
+
.map((file) => {
|
|
60
|
+
const stats = (0, fs_1.statSync)((0, path_1.join)(schemaDir, file));
|
|
61
|
+
return {
|
|
62
|
+
name: file,
|
|
63
|
+
size: stats.size,
|
|
64
|
+
lastModified: stats.mtime.toISOString(),
|
|
65
|
+
createdAt: stats.ctime.toISOString(),
|
|
66
|
+
updatedAt: stats.mtime.toISOString(),
|
|
67
|
+
};
|
|
68
|
+
});
|
|
69
|
+
return files;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Get simplified file information for table display
|
|
73
|
+
*/
|
|
74
|
+
function getSchemaTableRows(schemaName) {
|
|
75
|
+
const effectiveSchemaName = schemaName || getDefaultSchemaName();
|
|
76
|
+
const files = getSchemaFileList(effectiveSchemaName);
|
|
77
|
+
return files.map((file) => ({
|
|
78
|
+
name: file.name,
|
|
79
|
+
size: file.size,
|
|
80
|
+
createdAt: file.createdAt,
|
|
81
|
+
lastModified: file.lastModified,
|
|
82
|
+
updatedAt: file.updatedAt,
|
|
83
|
+
}));
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=schema-discovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-discovery.js","sourceRoot":"","sources":["../../src/lib/schema-discovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get sorted list of SQL files from a directory
|
|
3
|
+
* Uses lexicographic sorting to preserve the numeric ordering from file names
|
|
4
|
+
* (e.g., "10-000-audit.sql" comes before "10-010-types.sql")
|
|
5
|
+
*/
|
|
6
|
+
export declare function getSortedSqlFiles(sqlDir: string, schemaName: string): string[];
|
|
7
|
+
/**
|
|
8
|
+
* Generate SQL header with version and schema setup
|
|
9
|
+
*/
|
|
10
|
+
export declare function generateSqlHeader(schemaName: string, version: string): string;
|
|
11
|
+
/**
|
|
12
|
+
* Build combined schema file from individual SQL files
|
|
13
|
+
*/
|
|
14
|
+
export declare function buildSchemaFile(sqlDir: string, schemaName: string, sqlFiles: string[], version: string): string;
|
|
15
|
+
/**
|
|
16
|
+
* Write schema file to dist directory
|
|
17
|
+
* Output: dist/<schemaName>.sql (e.g., dist/public.sql)
|
|
18
|
+
*/
|
|
19
|
+
export declare function writeSchemaFile(content: string, schemaName: string): void;
|
|
20
|
+
/**
|
|
21
|
+
* Get package version from package.json
|
|
22
|
+
* Looks in multiple locations: user's project and @codemarc/blt package
|
|
23
|
+
*/
|
|
24
|
+
export declare function getPackageVersion(): string;
|
|
25
|
+
//# sourceMappingURL=sql-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql-builder.d.ts","sourceRoot":"","sources":["../../src/lib/sql-builder.ts"],"names":[],"mappings":"AAMA;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAS9E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CA4B7E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAa/G;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAYzE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAoB1C"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// SQL file building and generation utilities
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.getSortedSqlFiles = getSortedSqlFiles;
|
|
5
|
+
exports.generateSqlHeader = generateSqlHeader;
|
|
6
|
+
exports.buildSchemaFile = buildSchemaFile;
|
|
7
|
+
exports.writeSchemaFile = writeSchemaFile;
|
|
8
|
+
exports.getPackageVersion = getPackageVersion;
|
|
9
|
+
const node_fs_1 = require("node:fs");
|
|
10
|
+
const node_path_1 = require("node:path");
|
|
11
|
+
const constants_1 = require("./constants");
|
|
12
|
+
/**
|
|
13
|
+
* Get sorted list of SQL files from a directory
|
|
14
|
+
* Uses lexicographic sorting to preserve the numeric ordering from file names
|
|
15
|
+
* (e.g., "10-000-audit.sql" comes before "10-010-types.sql")
|
|
16
|
+
*/
|
|
17
|
+
function getSortedSqlFiles(sqlDir, schemaName) {
|
|
18
|
+
return (0, node_fs_1.readdirSync)(sqlDir)
|
|
19
|
+
.filter((file) => !file.startsWith(schemaName) &&
|
|
20
|
+
(file.endsWith(".sql") || file.endsWith(".ddl")) &&
|
|
21
|
+
constants_1.PATTERNS.FILE_NUMBER.test(file))
|
|
22
|
+
.sort(); // Use lexicographic sorting (same as schema info) - works correctly due to leading zeros
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Generate SQL header with version and schema setup
|
|
26
|
+
*/
|
|
27
|
+
function generateSqlHeader(schemaName, version) {
|
|
28
|
+
let header = `-- =============================================
|
|
29
|
+
-- Database postgres, Schema ${schemaName}
|
|
30
|
+
-- v${version} ፨ ${new Date().toLocaleString()}
|
|
31
|
+
-- =============================================
|
|
32
|
+
SELECT current_user, session_user;
|
|
33
|
+
--
|
|
34
|
+
SELECT set_config('myvars.version','${version}', false);
|
|
35
|
+
SELECT current_setting('myvars.version');`;
|
|
36
|
+
// Add schema setup (drops and recreates the schema)
|
|
37
|
+
// This applies to all schemas, not just "public"
|
|
38
|
+
header += `
|
|
39
|
+
-- =============================================
|
|
40
|
+
-- Schema Setup
|
|
41
|
+
-- =============================================
|
|
42
|
+
-- CAREFUL: This will drop the ${schemaName} schema
|
|
43
|
+
DROP SCHEMA IF EXISTS ${schemaName} CASCADE;
|
|
44
|
+
${schemaName === "public" ? "DELETE FROM vault.secrets;\n" : ""}
|
|
45
|
+
CREATE SCHEMA IF NOT EXISTS ${schemaName} AUTHORIZATION pg_database_owner;
|
|
46
|
+
-- Enable pgcrypto extension (installed at database level for Supabase compatibility)
|
|
47
|
+
CREATE EXTENSION IF NOT EXISTS pgcrypto;
|
|
48
|
+
|
|
49
|
+
-- Ensure extension functions are in search path
|
|
50
|
+
SET search_path = ${schemaName}, auth, extensions;
|
|
51
|
+
`;
|
|
52
|
+
return header;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Build combined schema file from individual SQL files
|
|
56
|
+
*/
|
|
57
|
+
function buildSchemaFile(sqlDir, schemaName, sqlFiles, version) {
|
|
58
|
+
let combinedContent = generateSqlHeader(schemaName, version);
|
|
59
|
+
// Append each SQL file with search_path set
|
|
60
|
+
for (const file of sqlFiles) {
|
|
61
|
+
console.log("Processing file:", file);
|
|
62
|
+
const filePath = (0, node_path_1.join)(sqlDir, file);
|
|
63
|
+
const content = (0, node_fs_1.readFileSync)(filePath, "utf8");
|
|
64
|
+
combinedContent += `\n\n-- ${file}\nSET search_path = ${schemaName}, auth;\n\n`;
|
|
65
|
+
combinedContent += `${content}`;
|
|
66
|
+
}
|
|
67
|
+
return combinedContent;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Write schema file to dist directory
|
|
71
|
+
* Output: dist/<schemaName>.sql (e.g., dist/public.sql)
|
|
72
|
+
*/
|
|
73
|
+
function writeSchemaFile(content, schemaName) {
|
|
74
|
+
const paths = (0, constants_1.getPaths)();
|
|
75
|
+
const distPath = (0, node_path_1.join)(process.cwd(), paths.DIST);
|
|
76
|
+
const schemafile = (0, node_path_1.join)(distPath, `${schemaName}.sql`);
|
|
77
|
+
console.log(`Writing schema file to ${schemafile}`);
|
|
78
|
+
// Ensure dist directory exists
|
|
79
|
+
if (!(0, node_fs_1.existsSync)(distPath)) {
|
|
80
|
+
(0, node_fs_1.mkdirSync)(distPath, { recursive: true });
|
|
81
|
+
}
|
|
82
|
+
(0, node_fs_1.writeFileSync)(schemafile, content);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Get package version from package.json
|
|
86
|
+
* Looks in multiple locations: user's project and @codemarc/blt package
|
|
87
|
+
*/
|
|
88
|
+
function getPackageVersion() {
|
|
89
|
+
const searchPaths = [
|
|
90
|
+
(0, node_path_1.join)(process.cwd(), 'package.json'), // User's project
|
|
91
|
+
(0, node_path_1.join)(__dirname, '..', '..', 'package.json'), // @codemarc/blt package
|
|
92
|
+
];
|
|
93
|
+
for (const packageJsonPath of searchPaths) {
|
|
94
|
+
if ((0, node_fs_1.existsSync)(packageJsonPath)) {
|
|
95
|
+
try {
|
|
96
|
+
const packageJson = JSON.parse((0, node_fs_1.readFileSync)(packageJsonPath, "utf8"));
|
|
97
|
+
if (packageJson.version) {
|
|
98
|
+
return packageJson.version;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
// Continue to next path
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return "0.0.0"; // Fallback
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=sql-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql-builder.js","sourceRoot":"","sources":["../../src/lib/sql-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { YamlFile } from "./constants";
|
|
2
|
+
/**
|
|
3
|
+
* Convert YAML content to JSON array format.
|
|
4
|
+
*/
|
|
5
|
+
export declare function yamlToJson(yamlContent: string): Record<string, unknown>[];
|
|
6
|
+
/**
|
|
7
|
+
* Convert JSON rows to SQL statements.
|
|
8
|
+
*/
|
|
9
|
+
export declare function jsonToSql(rows: {
|
|
10
|
+
row: Record<string, unknown>;
|
|
11
|
+
}[], name: string, type?: "function" | "procedure" | "table"): string;
|
|
12
|
+
/**
|
|
13
|
+
* Convert YAML content to SQL statements.
|
|
14
|
+
*/
|
|
15
|
+
export declare function yamlToSql(yamlContent: string, name: string, type?: "function" | "procedure" | "table"): string;
|
|
16
|
+
/**
|
|
17
|
+
* Find all YAML files in the schema directory.
|
|
18
|
+
* Checks both the yaml subdirectory and the sql directory.
|
|
19
|
+
*/
|
|
20
|
+
export declare function findYamlFiles(sqlDir: string): YamlFile[];
|
|
21
|
+
/**
|
|
22
|
+
* Process all YAML files in a directory and convert them to SQL.
|
|
23
|
+
* @returns Number of files processed.
|
|
24
|
+
*/
|
|
25
|
+
export declare function processYamlFiles(sqlDir: string): number;
|
|
26
|
+
//# sourceMappingURL=yaml-converter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yaml-converter.d.ts","sourceRoot":"","sources":["../../src/lib/yaml-converter.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AA6P5C;;GAEG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAEzE;AAED;;GAEG;AACH,wBAAgB,SAAS,CACvB,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,EAAE,EACxC,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,UAAU,GAAG,WAAW,GAAG,OAAiB,GACjD,MAAM,CAWR;AAED;;GAEG;AACH,wBAAgB,SAAS,CACvB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,UAAU,GAAG,WAAW,GAAG,OAAiB,GACjD,MAAM,CAMR;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,EAAE,CAqBxD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAyBvD"}
|
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// YAML to SQL conversion utilities
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
36
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
|
+
};
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.yamlToJson = yamlToJson;
|
|
41
|
+
exports.jsonToSql = jsonToSql;
|
|
42
|
+
exports.yamlToSql = yamlToSql;
|
|
43
|
+
exports.findYamlFiles = findYamlFiles;
|
|
44
|
+
exports.processYamlFiles = processYamlFiles;
|
|
45
|
+
const fs = __importStar(require("node:fs"));
|
|
46
|
+
const node_path_1 = require("node:path");
|
|
47
|
+
const js_yaml_1 = __importDefault(require("js-yaml"));
|
|
48
|
+
const constants_1 = require("./constants");
|
|
49
|
+
// ============================================================================
|
|
50
|
+
// Environment Variable Substitution
|
|
51
|
+
// ============================================================================
|
|
52
|
+
/**
|
|
53
|
+
* Replace environment variables in a string.
|
|
54
|
+
* Supports: ${VAR}, {VAR}, and $VAR patterns.
|
|
55
|
+
*/
|
|
56
|
+
function substituteEnvVars(str) {
|
|
57
|
+
return str
|
|
58
|
+
.replace(/\$\{([^}]+)\}/g, (match, name) => process.env[name] ?? match)
|
|
59
|
+
.replace(/\{([A-Z_][A-Z0-9_]*)\}/g, (match, name) => process.env[name] ?? match)
|
|
60
|
+
.replace(/\$([A-Z_][A-Z0-9_]*)/gi, (match, name) => process.env[name] ?? match);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Recursively substitute environment variables in all string values.
|
|
64
|
+
*/
|
|
65
|
+
function processEnvVars(value) {
|
|
66
|
+
if (typeof value === "string")
|
|
67
|
+
return substituteEnvVars(value);
|
|
68
|
+
if (Array.isArray(value))
|
|
69
|
+
return value.map(processEnvVars);
|
|
70
|
+
if (value !== null && typeof value === "object") {
|
|
71
|
+
return Object.fromEntries(Object.entries(value).map(([k, v]) => [k, processEnvVars(v)]));
|
|
72
|
+
}
|
|
73
|
+
return value;
|
|
74
|
+
}
|
|
75
|
+
// ============================================================================
|
|
76
|
+
// Value Formatting
|
|
77
|
+
// ============================================================================
|
|
78
|
+
/**
|
|
79
|
+
* Escape a string for SQL (double single quotes).
|
|
80
|
+
*/
|
|
81
|
+
function escapeString(str) {
|
|
82
|
+
return str.replace(/'/g, "''");
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Format a value as a SQL literal.
|
|
86
|
+
*/
|
|
87
|
+
function toSqlLiteral(value, column) {
|
|
88
|
+
if (value === null || value === undefined)
|
|
89
|
+
return "NULL";
|
|
90
|
+
if (value === "")
|
|
91
|
+
return column === "props" ? "'{}'::json" : "NULL";
|
|
92
|
+
if (typeof value === "string") {
|
|
93
|
+
return value.toUpperCase() === "NULL" ? "NULL" : `'${escapeString(value)}'`;
|
|
94
|
+
}
|
|
95
|
+
if (typeof value === "boolean")
|
|
96
|
+
return value ? "TRUE" : "FALSE";
|
|
97
|
+
if (typeof value === "number")
|
|
98
|
+
return String(value);
|
|
99
|
+
if (Array.isArray(value)) {
|
|
100
|
+
if (value.length === 0) {
|
|
101
|
+
const arrayType = column === "perms" ? "app_perm" : column === "roles" ? "app_role" : "text";
|
|
102
|
+
return `ARRAY[]::${arrayType}[]`;
|
|
103
|
+
}
|
|
104
|
+
const items = value.map((v) => typeof v === "string" ? `'${escapeString(v)}'` : String(v));
|
|
105
|
+
const arrayType = column === "perms" ? "app_perm" : column === "roles" ? "app_role" : "text";
|
|
106
|
+
return `ARRAY[${items.join(", ")}]::${arrayType}[]`;
|
|
107
|
+
}
|
|
108
|
+
if (typeof value === "object") {
|
|
109
|
+
const json = JSON.stringify(value).replace(/\\/g, "\\\\").replace(/'/g, "''");
|
|
110
|
+
return Object.keys(value).length === 0 ? "'{}'::json" : `'${json}'::json`;
|
|
111
|
+
}
|
|
112
|
+
return `'${escapeString(String(value))}'`;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Check if a value is a JSON object or array (not a primitive).
|
|
116
|
+
*/
|
|
117
|
+
function isJsonValue(value) {
|
|
118
|
+
return Array.isArray(value) || (value !== null && typeof value === "object");
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Format a value as a quoted text parameter (for CALL/SELECT statements).
|
|
122
|
+
* JSON objects/arrays are serialized to JSON strings.
|
|
123
|
+
*/
|
|
124
|
+
function toQuotedParam(value) {
|
|
125
|
+
if (value === null || value === undefined)
|
|
126
|
+
return "'NULL'";
|
|
127
|
+
if (typeof value === "string") {
|
|
128
|
+
return value.toUpperCase() === "NULL" ? "'NULL'" : `'${escapeString(value)}'`;
|
|
129
|
+
}
|
|
130
|
+
if (typeof value === "boolean")
|
|
131
|
+
return value ? "'TRUE'" : "'FALSE'";
|
|
132
|
+
if (typeof value === "number")
|
|
133
|
+
return `'${value}'`;
|
|
134
|
+
// JSON objects and arrays → serialize to JSON string
|
|
135
|
+
if (isJsonValue(value)) {
|
|
136
|
+
const json = JSON.stringify(value).replace(/\\/g, "\\\\").replace(/'/g, "''");
|
|
137
|
+
return `'${json}'`;
|
|
138
|
+
}
|
|
139
|
+
return `'${escapeString(String(value))}'`;
|
|
140
|
+
}
|
|
141
|
+
// ============================================================================
|
|
142
|
+
// YAML Parsing
|
|
143
|
+
// ============================================================================
|
|
144
|
+
/**
|
|
145
|
+
* Parse YAML content and extract rows array.
|
|
146
|
+
*/
|
|
147
|
+
function parseYamlRows(yamlContent) {
|
|
148
|
+
const parsed = js_yaml_1.default.load(yamlContent);
|
|
149
|
+
if (Array.isArray(parsed))
|
|
150
|
+
return parsed;
|
|
151
|
+
if (parsed && typeof parsed === "object") {
|
|
152
|
+
if ("rows" in parsed && Array.isArray(parsed.rows)) {
|
|
153
|
+
return parsed.rows;
|
|
154
|
+
}
|
|
155
|
+
return [parsed];
|
|
156
|
+
}
|
|
157
|
+
return [];
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Detect the target type and name from YAML content.
|
|
161
|
+
*/
|
|
162
|
+
function detectTarget(yamlContent) {
|
|
163
|
+
const functionMatch = yamlContent.match(constants_1.PATTERNS.FUNCTION_NAME);
|
|
164
|
+
if (functionMatch)
|
|
165
|
+
return { type: "function", name: functionMatch[1].trim() };
|
|
166
|
+
const procedureMatch = yamlContent.match(constants_1.PATTERNS.PROCEDURE_NAME);
|
|
167
|
+
if (procedureMatch)
|
|
168
|
+
return { type: "procedure", name: procedureMatch[1].trim() };
|
|
169
|
+
const tableMatch = yamlContent.match(constants_1.PATTERNS.TABLE_NAME);
|
|
170
|
+
if (tableMatch)
|
|
171
|
+
return { type: "table", name: tableMatch[1].trim() };
|
|
172
|
+
return null;
|
|
173
|
+
}
|
|
174
|
+
// ============================================================================
|
|
175
|
+
// SQL Generation
|
|
176
|
+
// ============================================================================
|
|
177
|
+
/**
|
|
178
|
+
* Format a parameter with appropriate type cast for function/procedure calls.
|
|
179
|
+
* Handles proper type casting for booleans, integers, strings, and JSON.
|
|
180
|
+
*/
|
|
181
|
+
function formatParam(value, columnName) {
|
|
182
|
+
// Handle null/undefined
|
|
183
|
+
if (value === null || value === undefined) {
|
|
184
|
+
return "NULL";
|
|
185
|
+
}
|
|
186
|
+
// Handle booleans - cast to BOOLEAN
|
|
187
|
+
if (typeof value === "boolean") {
|
|
188
|
+
return value ? "TRUE::BOOLEAN" : "FALSE::BOOLEAN";
|
|
189
|
+
}
|
|
190
|
+
// Handle numbers - cast to INTEGER or NUMERIC
|
|
191
|
+
if (typeof value === "number") {
|
|
192
|
+
// Check column name hints for type
|
|
193
|
+
if (columnName && (columnName.includes("order") || (columnName.includes("id") && !columnName.includes("uuid")))) {
|
|
194
|
+
return `${value}::INTEGER`;
|
|
195
|
+
}
|
|
196
|
+
// Default to INTEGER for whole numbers, NUMERIC for decimals
|
|
197
|
+
return Number.isInteger(value) ? `${value}::INTEGER` : `${value}::NUMERIC`;
|
|
198
|
+
}
|
|
199
|
+
// Handle JSON objects/arrays - cast to JSONB using jsonb_build_object
|
|
200
|
+
if (isJsonValue(value) && typeof value === "object" && value !== null && !Array.isArray(value)) {
|
|
201
|
+
const entries = Object.entries(value);
|
|
202
|
+
if (entries.length === 0) {
|
|
203
|
+
return "jsonb_build_object()::JSONB";
|
|
204
|
+
}
|
|
205
|
+
const kvSql = entries
|
|
206
|
+
.map(([k, v]) => {
|
|
207
|
+
return `'${escapeString(String(k))}', ${formatParam(v)}`;
|
|
208
|
+
})
|
|
209
|
+
.join(", ");
|
|
210
|
+
return `jsonb_build_object(${kvSql})::JSONB`;
|
|
211
|
+
}
|
|
212
|
+
// For arrays or non-object JSON types, fallback to stringify-and-cast
|
|
213
|
+
if (isJsonValue(value)) {
|
|
214
|
+
const json = JSON.stringify(value).replace(/\\/g, "\\\\").replace(/'/g, "''");
|
|
215
|
+
return `'${json}'::JSONB`;
|
|
216
|
+
}
|
|
217
|
+
// Handle strings - cast to TEXT
|
|
218
|
+
if (typeof value === "string") {
|
|
219
|
+
if (value.toUpperCase() === "NULL") {
|
|
220
|
+
return "NULL";
|
|
221
|
+
}
|
|
222
|
+
return `'${escapeString(value)}'::TEXT`;
|
|
223
|
+
}
|
|
224
|
+
// Fallback - convert to string and cast to TEXT
|
|
225
|
+
return `'${escapeString(String(value))}'::TEXT`;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Generate SELECT statements for function calls.
|
|
229
|
+
*/
|
|
230
|
+
function generateFunctionCalls(rows, functionName) {
|
|
231
|
+
const statements = rows.map((r) => {
|
|
232
|
+
const columns = Object.keys(r.row);
|
|
233
|
+
const params = columns.map((col) => formatParam(r.row[col], col));
|
|
234
|
+
return `SELECT ${functionName}(${params.join(", ")});`;
|
|
235
|
+
});
|
|
236
|
+
return `-- Generated from JSON data\n${statements.join("\n")}`;
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Generate CALL statements for procedure calls.
|
|
240
|
+
*/
|
|
241
|
+
function generateProcedureCalls(rows, procedureName) {
|
|
242
|
+
const statements = rows.map((r) => {
|
|
243
|
+
const columns = Object.keys(r.row);
|
|
244
|
+
const params = columns.map((col) => formatParam(r.row[col], col));
|
|
245
|
+
return `CALL ${procedureName}(${params.join(", ")});`;
|
|
246
|
+
});
|
|
247
|
+
return `-- Generated from JSON data\n${statements.join("\n")}`;
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Generate INSERT statement with ON CONFLICT upsert.
|
|
251
|
+
*/
|
|
252
|
+
function generateInsert(rows, tableName) {
|
|
253
|
+
const columns = Object.keys(rows[0].row);
|
|
254
|
+
const conflictColumn = columns[0];
|
|
255
|
+
const updateColumns = columns.slice(1);
|
|
256
|
+
const valueRows = rows.map((r) => {
|
|
257
|
+
const values = columns.map((col) => toSqlLiteral(r.row[col], col));
|
|
258
|
+
return `(${values.join(", ")})`;
|
|
259
|
+
});
|
|
260
|
+
const updateClauses = updateColumns.map((col) => ` ${col} = COALESCE(EXCLUDED.${col}, ${tableName}.${col})`);
|
|
261
|
+
return [
|
|
262
|
+
"-- Generated from JSON data",
|
|
263
|
+
`INSERT INTO ${tableName} (${columns.join(", ")}) VALUES`,
|
|
264
|
+
valueRows.join(",\n"),
|
|
265
|
+
`ON CONFLICT (${conflictColumn}) DO UPDATE SET`,
|
|
266
|
+
updateClauses.join(",\n") + ";",
|
|
267
|
+
].join("\n");
|
|
268
|
+
}
|
|
269
|
+
// ============================================================================
|
|
270
|
+
// Public API
|
|
271
|
+
// ============================================================================
|
|
272
|
+
/**
|
|
273
|
+
* Convert YAML content to JSON array format.
|
|
274
|
+
*/
|
|
275
|
+
function yamlToJson(yamlContent) {
|
|
276
|
+
return parseYamlRows(yamlContent);
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Convert JSON rows to SQL statements.
|
|
280
|
+
*/
|
|
281
|
+
function jsonToSql(rows, name, type = "table") {
|
|
282
|
+
if (rows.length === 0)
|
|
283
|
+
return "-- No rows to insert";
|
|
284
|
+
switch (type) {
|
|
285
|
+
case "function":
|
|
286
|
+
return generateFunctionCalls(rows, name);
|
|
287
|
+
case "procedure":
|
|
288
|
+
return generateProcedureCalls(rows, name);
|
|
289
|
+
case "table":
|
|
290
|
+
return generateInsert(rows, name);
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Convert YAML content to SQL statements.
|
|
295
|
+
*/
|
|
296
|
+
function yamlToSql(yamlContent, name, type = "table") {
|
|
297
|
+
const jsonData = parseYamlRows(yamlContent);
|
|
298
|
+
const processedData = jsonData.map((row) => ({
|
|
299
|
+
row: processEnvVars(row.row),
|
|
300
|
+
}));
|
|
301
|
+
return jsonToSql(processedData, name, type);
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Find all YAML files in the schema directory.
|
|
305
|
+
* Checks both the yaml subdirectory and the sql directory.
|
|
306
|
+
*/
|
|
307
|
+
function findYamlFiles(sqlDir) {
|
|
308
|
+
const yamlSubdir = (0, node_path_1.join)(sqlDir, "..", "yaml");
|
|
309
|
+
const yamlFiles = [];
|
|
310
|
+
const seen = new Set();
|
|
311
|
+
// Check yaml subdirectory first
|
|
312
|
+
if (fs.existsSync(yamlSubdir)) {
|
|
313
|
+
for (const file of fs.readdirSync(yamlSubdir).filter((f) => f.endsWith(".yml")).sort()) {
|
|
314
|
+
yamlFiles.push({ name: file, path: (0, node_path_1.join)(yamlSubdir, file), source: "subdir" });
|
|
315
|
+
seen.add(file);
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
// Check current directory (skip duplicates)
|
|
319
|
+
for (const file of fs.readdirSync(sqlDir).filter((f) => f.endsWith(".yml")).sort()) {
|
|
320
|
+
if (!seen.has(file)) {
|
|
321
|
+
yamlFiles.push({ name: file, path: (0, node_path_1.join)(sqlDir, file), source: "current" });
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
return yamlFiles;
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* Process all YAML files in a directory and convert them to SQL.
|
|
328
|
+
* @returns Number of files processed.
|
|
329
|
+
*/
|
|
330
|
+
function processYamlFiles(sqlDir) {
|
|
331
|
+
const yamlFiles = findYamlFiles(sqlDir);
|
|
332
|
+
let count = 0;
|
|
333
|
+
for (const yamlFile of yamlFiles) {
|
|
334
|
+
console.log(`\nProcessing YAML file: ${yamlFile.name} (from ${yamlFile.source} directory)`);
|
|
335
|
+
const yamlContent = fs.readFileSync(yamlFile.path, "utf8");
|
|
336
|
+
const target = detectTarget(yamlContent);
|
|
337
|
+
if (!target) {
|
|
338
|
+
console.error(`No table, function, or procedure name found in YAML file: ${yamlFile.name}`);
|
|
339
|
+
continue;
|
|
340
|
+
}
|
|
341
|
+
const sqlContent = yamlToSql(yamlContent, target.name, target.type);
|
|
342
|
+
const sqlFileName = yamlFile.name.replace(".yml", ".sql");
|
|
343
|
+
const sqlPath = (0, node_path_1.join)(sqlDir, sqlFileName);
|
|
344
|
+
fs.writeFileSync(sqlPath, sqlContent);
|
|
345
|
+
console.log(`Created ${sqlFileName}`);
|
|
346
|
+
count++;
|
|
347
|
+
}
|
|
348
|
+
return count;
|
|
349
|
+
}
|
|
350
|
+
//# sourceMappingURL=yaml-converter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yaml-converter.js","sourceRoot":"","sources":["../../src/lib/yaml-converter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supabase.d.ts","sourceRoot":"","sources":["../../src/utils/supabase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAKrE,wBAAgB,iBAAiB,IAAI,cAAc,CAYlD"}
|