@codemarc/blt 1.0.0 → 1.1.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/README.md +107 -7
- package/dist/blt +32 -0
- package/dist/blt.d.ts +3 -0
- package/dist/blt.d.ts.map +1 -0
- package/dist/blt.js.map +1 -0
- package/dist/commands/check.js +7 -13
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/cleanup.js +12 -48
- package/dist/commands/cleanup.js.map +1 -1
- package/dist/commands/data.js +37 -43
- package/dist/commands/data.js.map +1 -1
- package/dist/commands/env.js +3 -6
- package/dist/commands/env.js.map +1 -1
- package/dist/commands/image/color.js +12 -52
- package/dist/commands/image/color.js.map +1 -1
- package/dist/commands/image/convert.js +28 -68
- package/dist/commands/image/convert.js.map +1 -1
- package/dist/commands/image/enhance.js +12 -52
- package/dist/commands/image/enhance.js.map +1 -1
- package/dist/commands/image/sharpen.js +24 -64
- package/dist/commands/image/sharpen.js.map +1 -1
- package/dist/commands/image.js +9 -12
- package/dist/commands/image.js.map +1 -1
- package/dist/commands/repo.js +3 -9
- package/dist/commands/repo.js.map +1 -1
- package/dist/commands/version/update-version.d.ts +3 -0
- package/dist/commands/version/update-version.d.ts.map +1 -0
- package/dist/commands/version/update-version.js +97 -0
- package/dist/commands/version/update-version.js.map +1 -0
- package/dist/commands/version/update.d.ts +8 -0
- package/dist/commands/version/update.d.ts.map +1 -0
- package/dist/commands/version/update.js +171 -0
- package/dist/commands/version/update.js.map +1 -0
- package/dist/commands/version.d.ts +6 -0
- package/dist/commands/version.d.ts.map +1 -0
- package/dist/commands/version.js +44 -0
- package/dist/commands/version.js.map +1 -0
- package/dist/config/config.js +11 -15
- package/dist/config/config.js.map +1 -1
- package/dist/lib/constants.js +4 -8
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/data-generator.js +27 -31
- package/dist/lib/data-generator.js.map +1 -1
- package/dist/lib/database-runner.js +17 -25
- package/dist/lib/database-runner.js.map +1 -1
- package/dist/lib/instance-discovery.js +14 -19
- package/dist/lib/instance-discovery.js.map +1 -1
- package/dist/lib/schema-discovery.js +18 -24
- package/dist/lib/schema-discovery.js.map +1 -1
- package/dist/lib/sql-builder.js +22 -29
- package/dist/lib/sql-builder.js.map +1 -1
- package/dist/lib/version-types.d.ts +77 -0
- package/dist/lib/version-types.d.ts.map +1 -0
- package/dist/lib/version-types.js +8 -0
- package/dist/lib/version-types.js.map +1 -0
- package/dist/lib/yaml-converter.js +17 -60
- package/dist/lib/yaml-converter.js.map +1 -1
- package/dist/utils/supabase.js +5 -11
- package/dist/utils/supabase.js.map +1 -1
- package/package.json +12 -8
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { updateVersion } from "./version/update";
|
|
2
|
+
/**
|
|
3
|
+
* Register version commands with the CLI program
|
|
4
|
+
*/
|
|
5
|
+
export default function versionCommand(program) {
|
|
6
|
+
// Main version command - shows help for subcommands
|
|
7
|
+
const versionHelpText = `
|
|
8
|
+
version management utilities
|
|
9
|
+
|
|
10
|
+
Usage:
|
|
11
|
+
blt version <operation>
|
|
12
|
+
|
|
13
|
+
Available operations:
|
|
14
|
+
update Update version.json with current build information
|
|
15
|
+
|
|
16
|
+
Run 'blt version <operation> --help' for more information on a specific command.
|
|
17
|
+
`;
|
|
18
|
+
program
|
|
19
|
+
.command("version", "version management utilities")
|
|
20
|
+
.help(versionHelpText)
|
|
21
|
+
.action(() => {
|
|
22
|
+
console.log(versionHelpText);
|
|
23
|
+
});
|
|
24
|
+
// Update version.json
|
|
25
|
+
program
|
|
26
|
+
.command("version update", "Update version.json with current build information")
|
|
27
|
+
.hide()
|
|
28
|
+
.action(async ({ logger }) => {
|
|
29
|
+
try {
|
|
30
|
+
// Use current working directory where the command is run
|
|
31
|
+
const rootDir = process.cwd();
|
|
32
|
+
logger.info("Updating version.json...");
|
|
33
|
+
// Call the update function directly
|
|
34
|
+
updateVersion(rootDir);
|
|
35
|
+
logger.info("Version information updated successfully");
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
39
|
+
logger.error(`Failed to update version.json: ${message}`);
|
|
40
|
+
process.exit(1);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/commands/version.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,OAAgB;IACtD,oDAAoD;IACpD,MAAM,eAAe,GAAG;;;;;;;;;;CAUxB,CAAC;IAED,OAAO;SACL,OAAO,CAAC,SAAS,EAAE,8BAA8B,CAAC;SAClD,IAAI,CAAC,eAAe,CAAC;SACrB,MAAM,CAAC,GAAG,EAAE;QACZ,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEJ,sBAAsB;IACtB,OAAO;SACL,OAAO,CAAC,gBAAgB,EAAE,oDAAoD,CAAC;SAC/E,IAAI,EAAE;SACN,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAsB,EAAE,EAAE;QAChD,IAAI,CAAC;YACJ,yDAAyD;YACzD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YAExC,oCAAoC;YACpC,aAAa,CAAC,OAAO,CAAC,CAAC;YAEvB,MAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,MAAM,CAAC,KAAK,CAAC,kCAAkC,OAAO,EAAE,CAAC,CAAC;YAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;IACF,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/config/config.js
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
exports.getConfig = getConfig;
|
|
5
|
-
const fs_1 = require("fs");
|
|
6
|
-
const path_1 = require("path");
|
|
7
|
-
const os_1 = require("os");
|
|
1
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { homedir } from 'node:os';
|
|
8
4
|
const DEFAULT_CONFIG = {
|
|
9
5
|
schemaBase: './schema',
|
|
10
6
|
distPath: './dist',
|
|
@@ -17,23 +13,23 @@ const DEFAULT_CONFIG = {
|
|
|
17
13
|
* 4. Environment variables (BLT_SCHEMA_BASE, BLT_DIST_PATH)
|
|
18
14
|
* 5. Default values
|
|
19
15
|
*/
|
|
20
|
-
function loadConfig() {
|
|
16
|
+
export function loadConfig() {
|
|
21
17
|
let config = { ...DEFAULT_CONFIG };
|
|
22
18
|
// Try loading from files
|
|
23
19
|
const configPaths = [
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
20
|
+
join(process.cwd(), 'blt.config.json'),
|
|
21
|
+
join(process.cwd(), '.bltrc'),
|
|
22
|
+
join(homedir(), '.blt', 'config.json'),
|
|
27
23
|
];
|
|
28
24
|
for (const configPath of configPaths) {
|
|
29
|
-
if (
|
|
25
|
+
if (existsSync(configPath)) {
|
|
30
26
|
try {
|
|
31
|
-
const fileConfig = JSON.parse(
|
|
27
|
+
const fileConfig = JSON.parse(readFileSync(configPath, 'utf8'));
|
|
32
28
|
config = { ...config, ...fileConfig };
|
|
33
29
|
console.log(`Loaded config from: ${configPath}`);
|
|
34
30
|
break;
|
|
35
31
|
}
|
|
36
|
-
catch (
|
|
32
|
+
catch (_error) {
|
|
37
33
|
console.warn(`Failed to parse config file: ${configPath}`);
|
|
38
34
|
}
|
|
39
35
|
}
|
|
@@ -48,7 +44,7 @@ function loadConfig() {
|
|
|
48
44
|
return config;
|
|
49
45
|
}
|
|
50
46
|
let cachedConfig = null;
|
|
51
|
-
function getConfig() {
|
|
47
|
+
export function getConfig() {
|
|
52
48
|
if (!cachedConfig) {
|
|
53
49
|
cachedConfig = loadConfig();
|
|
54
50
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAQlC,MAAM,cAAc,GAAc;IAChC,UAAU,EAAE,UAAU;IACtB,QAAQ,EAAE,QAAQ;CACnB,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU;IACxB,IAAI,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,CAAC;IAEnC,yBAAyB;IACzB,MAAM,WAAW,GAAG;QAClB,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,iBAAiB,CAAC;QACtC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC;QAC7B,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC;KACvC,CAAC;IAEF,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;gBAChE,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;gBACtC,OAAO,CAAC,GAAG,CAAC,uBAAuB,UAAU,EAAE,CAAC,CAAC;gBACjD,MAAM;YACR,CAAC;YAAC,OAAO,MAAM,EAAE,CAAC;gBAChB,OAAO,CAAC,IAAI,CAAC,gCAAgC,UAAU,EAAE,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;IACH,CAAC;IAED,sCAAsC;IACtC,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;QAChC,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IAClD,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QAC9B,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IAC9C,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,IAAI,YAAY,GAAqB,IAAI,CAAC;AAE1C,MAAM,UAAU,SAAS;IACvB,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,YAAY,GAAG,UAAU,EAAE,CAAC;IAC9B,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC"}
|
package/dist/lib/constants.js
CHANGED
|
@@ -1,18 +1,14 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PATTERNS = void 0;
|
|
4
|
-
exports.getPaths = getPaths;
|
|
5
1
|
// Shared constants and types for schema operations
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
import { getConfig } from '../config/config';
|
|
3
|
+
export const PATTERNS = {
|
|
8
4
|
SQL_FILE: /bltcore-v(\d+\.\d+\.\d+)\.sql/,
|
|
9
5
|
TABLE_NAME: /^table:\s*(.+)$/m,
|
|
10
6
|
FUNCTION_NAME: /^function:\s*(.+)$/m,
|
|
11
7
|
PROCEDURE_NAME: /^procedure:\s*(.+)$/m,
|
|
12
8
|
FILE_NUMBER: /\d+/,
|
|
13
9
|
};
|
|
14
|
-
function getPaths() {
|
|
15
|
-
const config =
|
|
10
|
+
export function getPaths() {
|
|
11
|
+
const config = getConfig();
|
|
16
12
|
return {
|
|
17
13
|
DIST: config.distPath,
|
|
18
14
|
SCHEMA_BASE: config.schemaBase,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,QAAQ,EAAE,+BAA+B;IACzC,UAAU,EAAE,kBAAkB;IAC9B,aAAa,EAAE,qBAAqB;IACpC,cAAc,EAAE,sBAAsB;IACtC,WAAW,EAAE,KAAK;CACnB,CAAC;AAEF,MAAM,UAAU,QAAQ;IACtB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,QAAQ;QACrB,WAAW,EAAE,MAAM,CAAC,UAAU;QAC9B,cAAc,EAAE,MAAM,CAAC,aAAa,IAAI,GAAG,MAAM,CAAC,UAAU,YAAY;KACzE,CAAC;AACJ,CAAC"}
|
|
@@ -1,25 +1,21 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// Data generation utilities for instance-specific data
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const constants_1 = require("./constants");
|
|
9
|
-
const yaml_converter_1 = require("./yaml-converter");
|
|
10
|
-
const instance_discovery_1 = require("./instance-discovery");
|
|
2
|
+
import { readdirSync, readFileSync, writeFileSync, mkdirSync, existsSync } from "fs";
|
|
3
|
+
import { join } from "path";
|
|
4
|
+
import { getPaths, PATTERNS } from "./constants";
|
|
5
|
+
import { processYamlFiles } from "./yaml-converter";
|
|
6
|
+
import { getInstanceDir } from "./instance-discovery";
|
|
11
7
|
/**
|
|
12
8
|
* Build data file from instance directory
|
|
13
9
|
* Handles both direct SQL files and YAML files that need conversion
|
|
14
10
|
* Instance directory structure: instances/<instance>/{sql/, yaml/}
|
|
15
11
|
*/
|
|
16
|
-
function buildDataFile(instanceName, version) {
|
|
17
|
-
const instanceDir =
|
|
18
|
-
if (!
|
|
12
|
+
export function buildDataFile(instanceName, version) {
|
|
13
|
+
const instanceDir = getInstanceDir(instanceName);
|
|
14
|
+
if (!existsSync(instanceDir)) {
|
|
19
15
|
throw new Error(`Instance directory does not exist: ${instanceDir}`);
|
|
20
16
|
}
|
|
21
|
-
const sqlDir =
|
|
22
|
-
const yamlDir =
|
|
17
|
+
const sqlDir = join(instanceDir, "sql");
|
|
18
|
+
const yamlDir = join(instanceDir, "yaml");
|
|
23
19
|
let dataContent = `-- =============================================
|
|
24
20
|
-- Instance Data: ${instanceName}
|
|
25
21
|
-- v${version} ፨ ${new Date().toLocaleString()}
|
|
@@ -28,24 +24,24 @@ SET search_path = public, auth, extensions;
|
|
|
28
24
|
`;
|
|
29
25
|
// Check for YAML files and convert them first
|
|
30
26
|
// processYamlFiles expects sqlDir and looks for yaml files in sqlDir/../yaml
|
|
31
|
-
if (
|
|
27
|
+
if (existsSync(yamlDir)) {
|
|
32
28
|
// Process YAML files to SQL (creates .sql files in the sql directory)
|
|
33
|
-
if (
|
|
34
|
-
|
|
29
|
+
if (existsSync(sqlDir)) {
|
|
30
|
+
processYamlFiles(sqlDir);
|
|
35
31
|
}
|
|
36
32
|
else {
|
|
37
33
|
// Create sql directory if it doesn't exist
|
|
38
|
-
|
|
39
|
-
|
|
34
|
+
mkdirSync(sqlDir, { recursive: true });
|
|
35
|
+
processYamlFiles(sqlDir);
|
|
40
36
|
}
|
|
41
37
|
}
|
|
42
38
|
// Get all SQL files from the sql subdirectory
|
|
43
|
-
if (!
|
|
39
|
+
if (!existsSync(sqlDir)) {
|
|
44
40
|
console.warn(`No SQL directory found in instance: ${instanceDir}`);
|
|
45
41
|
return dataContent;
|
|
46
42
|
}
|
|
47
|
-
const sqlFiles =
|
|
48
|
-
.filter((file) => file.toLowerCase().endsWith(".sql") &&
|
|
43
|
+
const sqlFiles = readdirSync(sqlDir)
|
|
44
|
+
.filter((file) => file.toLowerCase().endsWith(".sql") && PATTERNS.FILE_NUMBER.test(file))
|
|
49
45
|
.sort();
|
|
50
46
|
if (sqlFiles.length === 0) {
|
|
51
47
|
console.warn(`No SQL files found in instance sql directory: ${sqlDir}`);
|
|
@@ -54,8 +50,8 @@ SET search_path = public, auth, extensions;
|
|
|
54
50
|
// Append each SQL file
|
|
55
51
|
for (const file of sqlFiles) {
|
|
56
52
|
console.log(`Processing data file: ${file}`);
|
|
57
|
-
const filePath =
|
|
58
|
-
const content =
|
|
53
|
+
const filePath = join(sqlDir, file);
|
|
54
|
+
const content = readFileSync(filePath, "utf8");
|
|
59
55
|
dataContent += `\n\n-- ${file}\nSET search_path = public, auth, extensions;\n\n`;
|
|
60
56
|
dataContent += `${content}`;
|
|
61
57
|
}
|
|
@@ -64,15 +60,15 @@ SET search_path = public, auth, extensions;
|
|
|
64
60
|
/**
|
|
65
61
|
* Write data file to dist directory
|
|
66
62
|
*/
|
|
67
|
-
function writeDataFile(content, instanceName) {
|
|
68
|
-
const paths =
|
|
69
|
-
const distPath =
|
|
70
|
-
const datafile =
|
|
63
|
+
export function writeDataFile(content, instanceName) {
|
|
64
|
+
const paths = getPaths();
|
|
65
|
+
const distPath = join(process.cwd(), paths.DIST);
|
|
66
|
+
const datafile = join(distPath, 'data.sql');
|
|
71
67
|
console.log(`Writing data file to ${datafile}`);
|
|
72
68
|
// Ensure dist directory exists
|
|
73
|
-
if (!
|
|
74
|
-
|
|
69
|
+
if (!existsSync(distPath)) {
|
|
70
|
+
mkdirSync(distPath, { recursive: true });
|
|
75
71
|
}
|
|
76
|
-
|
|
72
|
+
writeFileSync(datafile, content);
|
|
77
73
|
}
|
|
78
74
|
//# sourceMappingURL=data-generator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-generator.js","sourceRoot":"","sources":["../../src/lib/data-generator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"data-generator.js","sourceRoot":"","sources":["../../src/lib/data-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,36 +1,28 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// Database execution utilities
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
exports.getLatestSqlFile = getLatestSqlFile;
|
|
8
|
-
exports.runSqlFile = runSqlFile;
|
|
9
|
-
exports.executeQuery = executeQuery;
|
|
10
|
-
const fs_1 = require("fs");
|
|
11
|
-
const path_1 = require("path");
|
|
12
|
-
const pg_1 = __importDefault(require("pg"));
|
|
13
|
-
const constants_1 = require("./constants");
|
|
2
|
+
import { readdirSync, readFileSync, existsSync } from "fs";
|
|
3
|
+
import { join } from "path";
|
|
4
|
+
import pg from "pg";
|
|
5
|
+
import { PATTERNS, getPaths } from "./constants";
|
|
14
6
|
/**
|
|
15
7
|
* Get the latest SQL file from the dist directory
|
|
16
8
|
*/
|
|
17
|
-
function getLatestSqlFile() {
|
|
18
|
-
const paths =
|
|
19
|
-
const distPath =
|
|
20
|
-
if (!
|
|
9
|
+
export function getLatestSqlFile() {
|
|
10
|
+
const paths = getPaths();
|
|
11
|
+
const distPath = join(process.cwd(), paths.DIST);
|
|
12
|
+
if (!existsSync(distPath)) {
|
|
21
13
|
console.error(`Dist directory does not exist: ${distPath}`);
|
|
22
14
|
process.exit(1);
|
|
23
15
|
}
|
|
24
|
-
const sqlFiles =
|
|
16
|
+
const sqlFiles = readdirSync(distPath)
|
|
25
17
|
.filter((file) => file.startsWith("bltcore-v") && file.endsWith(".sql"))
|
|
26
18
|
.map((file) => {
|
|
27
|
-
const versionMatch = file.match(
|
|
19
|
+
const versionMatch = file.match(PATTERNS.SQL_FILE);
|
|
28
20
|
if (!versionMatch)
|
|
29
21
|
return null;
|
|
30
22
|
return {
|
|
31
23
|
name: file,
|
|
32
24
|
version: versionMatch[1],
|
|
33
|
-
path:
|
|
25
|
+
path: join(distPath, file),
|
|
34
26
|
};
|
|
35
27
|
})
|
|
36
28
|
.filter((f) => f !== null)
|
|
@@ -53,13 +45,13 @@ function getLatestSqlFile() {
|
|
|
53
45
|
/**
|
|
54
46
|
* Execute a SQL file against the database
|
|
55
47
|
*/
|
|
56
|
-
async function runSqlFile(filePath) {
|
|
48
|
+
export async function runSqlFile(filePath) {
|
|
57
49
|
let targetFile;
|
|
58
50
|
let sqlContent;
|
|
59
51
|
if (filePath) {
|
|
60
52
|
// Use specified file
|
|
61
53
|
const fileName = filePath.split("/").pop() || filePath;
|
|
62
|
-
sqlContent =
|
|
54
|
+
sqlContent = readFileSync(filePath, "utf8");
|
|
63
55
|
targetFile = {
|
|
64
56
|
name: fileName,
|
|
65
57
|
version: "unknown",
|
|
@@ -70,7 +62,7 @@ async function runSqlFile(filePath) {
|
|
|
70
62
|
else {
|
|
71
63
|
// Use latest file (backward compatibility)
|
|
72
64
|
targetFile = getLatestSqlFile();
|
|
73
|
-
sqlContent =
|
|
65
|
+
sqlContent = readFileSync(targetFile.path, "utf8");
|
|
74
66
|
console.log(`\n🚀 Running latest SQL file: ${targetFile.name} (v${targetFile.version})`);
|
|
75
67
|
}
|
|
76
68
|
// Read database connection from environment variables
|
|
@@ -83,7 +75,7 @@ async function runSqlFile(filePath) {
|
|
|
83
75
|
process.exit(1);
|
|
84
76
|
}
|
|
85
77
|
// Create PostgreSQL client
|
|
86
|
-
const client = new
|
|
78
|
+
const client = new pg.Client({ connectionString });
|
|
87
79
|
try {
|
|
88
80
|
console.log("📡 Connecting to database...");
|
|
89
81
|
await client.connect();
|
|
@@ -151,7 +143,7 @@ async function runSqlFile(filePath) {
|
|
|
151
143
|
/**
|
|
152
144
|
* Execute a SQL query and return results
|
|
153
145
|
*/
|
|
154
|
-
async function executeQuery(query) {
|
|
146
|
+
export async function executeQuery(query) {
|
|
155
147
|
// Read database connection from environment variables
|
|
156
148
|
const connectionString = process.env.DATABASE_URL || process.env.SUPABASE_DB_URL;
|
|
157
149
|
if (!connectionString) {
|
|
@@ -162,7 +154,7 @@ async function executeQuery(query) {
|
|
|
162
154
|
process.exit(1);
|
|
163
155
|
}
|
|
164
156
|
// Create PostgreSQL client
|
|
165
|
-
const client = new
|
|
157
|
+
const client = new pg.Client({ connectionString });
|
|
166
158
|
try {
|
|
167
159
|
await client.connect();
|
|
168
160
|
const result = await client.query(query);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database-runner.js","sourceRoot":"","sources":["../../src/lib/database-runner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"database-runner.js","sourceRoot":"","sources":["../../src/lib/database-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,32 +1,27 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// Instance discovery and file listing utilities
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
exports.getInstanceDir = getInstanceDir;
|
|
7
|
-
const fs_1 = require("fs");
|
|
8
|
-
const path_1 = require("path");
|
|
9
|
-
const constants_1 = require("./constants");
|
|
2
|
+
import { readdirSync, statSync, existsSync } from "fs";
|
|
3
|
+
import { join } from "path";
|
|
4
|
+
import { getPaths } from "./constants";
|
|
10
5
|
/**
|
|
11
6
|
* Get all available instance names from the instances directory
|
|
12
7
|
*/
|
|
13
|
-
function getAvailableInstances() {
|
|
14
|
-
const paths =
|
|
15
|
-
const instancesBase =
|
|
16
|
-
if (!
|
|
8
|
+
export function getAvailableInstances() {
|
|
9
|
+
const paths = getPaths();
|
|
10
|
+
const instancesBase = join(process.cwd(), paths.INSTANCES_BASE);
|
|
11
|
+
if (!existsSync(instancesBase)) {
|
|
17
12
|
return [];
|
|
18
13
|
}
|
|
19
|
-
return
|
|
14
|
+
return readdirSync(instancesBase)
|
|
20
15
|
.filter((item) => {
|
|
21
|
-
const itemPath =
|
|
22
|
-
return
|
|
16
|
+
const itemPath = join(instancesBase, item);
|
|
17
|
+
return statSync(itemPath).isDirectory();
|
|
23
18
|
})
|
|
24
19
|
.sort();
|
|
25
20
|
}
|
|
26
21
|
/**
|
|
27
22
|
* Get the default instance name (prefers "default" if it exists)
|
|
28
23
|
*/
|
|
29
|
-
function getDefaultInstanceName() {
|
|
24
|
+
export function getDefaultInstanceName() {
|
|
30
25
|
const instances = getAvailableInstances();
|
|
31
26
|
// Prefer "default" if it exists, otherwise use the first available instance
|
|
32
27
|
if (instances.includes("default")) {
|
|
@@ -41,8 +36,8 @@ function getDefaultInstanceName() {
|
|
|
41
36
|
/**
|
|
42
37
|
* Get instance directory path
|
|
43
38
|
*/
|
|
44
|
-
function getInstanceDir(instanceName) {
|
|
45
|
-
const paths =
|
|
46
|
-
return
|
|
39
|
+
export function getInstanceDir(instanceName) {
|
|
40
|
+
const paths = getPaths();
|
|
41
|
+
return join(process.cwd(), paths.INSTANCES_BASE, instanceName);
|
|
47
42
|
}
|
|
48
43
|
//# sourceMappingURL=instance-discovery.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instance-discovery.js","sourceRoot":"","sources":["../../src/lib/instance-discovery.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"instance-discovery.js","sourceRoot":"","sources":["../../src/lib/instance-discovery.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAEhD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IAChE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,WAAW,CAAC,aAAa,CAAC;SAC9B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACf,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAC3C,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IAC1C,CAAC,CAAC;SACD,IAAI,EAAE,CAAC;AACZ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB;IACpC,MAAM,SAAS,GAAG,qBAAqB,EAAE,CAAC;IAC1C,4EAA4E;IAC5E,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAClC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC;IACD,iCAAiC;IACjC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,YAAoB;IACjD,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;AACjE,CAAC"}
|
|
@@ -1,33 +1,27 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// Schema discovery and file listing utilities
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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");
|
|
2
|
+
import { readdirSync, statSync, existsSync } from "fs";
|
|
3
|
+
import { join } from "path";
|
|
4
|
+
import { getPaths } from "./constants";
|
|
11
5
|
/**
|
|
12
6
|
* Get all available schema names from the schema directory
|
|
13
7
|
*/
|
|
14
|
-
function getAvailableSchemas() {
|
|
15
|
-
const paths =
|
|
16
|
-
const schemaBase =
|
|
17
|
-
if (!
|
|
8
|
+
export function getAvailableSchemas() {
|
|
9
|
+
const paths = getPaths();
|
|
10
|
+
const schemaBase = join(process.cwd(), paths.SCHEMA_BASE);
|
|
11
|
+
if (!existsSync(schemaBase)) {
|
|
18
12
|
return [];
|
|
19
13
|
}
|
|
20
|
-
return
|
|
14
|
+
return readdirSync(schemaBase)
|
|
21
15
|
.filter((item) => {
|
|
22
|
-
const itemPath =
|
|
23
|
-
return
|
|
16
|
+
const itemPath = join(schemaBase, item);
|
|
17
|
+
return statSync(itemPath).isDirectory() && existsSync(join(itemPath, "sql"));
|
|
24
18
|
})
|
|
25
19
|
.sort();
|
|
26
20
|
}
|
|
27
21
|
/**
|
|
28
22
|
* Get the default schema name (prefers "public" if it exists)
|
|
29
23
|
*/
|
|
30
|
-
function getDefaultSchemaName() {
|
|
24
|
+
export function getDefaultSchemaName() {
|
|
31
25
|
const schemas = getAvailableSchemas();
|
|
32
26
|
// Prefer "public" if it exists, otherwise use the first available schema
|
|
33
27
|
if (schemas.includes("public")) {
|
|
@@ -43,21 +37,21 @@ function getDefaultSchemaName() {
|
|
|
43
37
|
* Get detailed file information for all files in a schema's sql directory
|
|
44
38
|
* Only includes files ending in .sql (case-insensitive)
|
|
45
39
|
*/
|
|
46
|
-
function getSchemaFileList(schemaName) {
|
|
47
|
-
const paths =
|
|
40
|
+
export function getSchemaFileList(schemaName) {
|
|
41
|
+
const paths = getPaths();
|
|
48
42
|
const effectiveSchemaName = schemaName || getDefaultSchemaName();
|
|
49
|
-
const schemaDir =
|
|
50
|
-
if (!
|
|
43
|
+
const schemaDir = join(process.cwd(), paths.SCHEMA_BASE, effectiveSchemaName, "sql");
|
|
44
|
+
if (!existsSync(schemaDir)) {
|
|
51
45
|
throw new Error(`Schema directory does not exist: ${schemaDir}`);
|
|
52
46
|
}
|
|
53
|
-
const files =
|
|
47
|
+
const files = readdirSync(schemaDir)
|
|
54
48
|
.filter((file) => {
|
|
55
49
|
// Only include .sql files (case-insensitive)
|
|
56
50
|
return file.toLowerCase().endsWith(".sql");
|
|
57
51
|
})
|
|
58
52
|
.sort()
|
|
59
53
|
.map((file) => {
|
|
60
|
-
const stats =
|
|
54
|
+
const stats = statSync(join(schemaDir, file));
|
|
61
55
|
return {
|
|
62
56
|
name: file,
|
|
63
57
|
size: stats.size,
|
|
@@ -71,7 +65,7 @@ function getSchemaFileList(schemaName) {
|
|
|
71
65
|
/**
|
|
72
66
|
* Get simplified file information for table display
|
|
73
67
|
*/
|
|
74
|
-
function getSchemaTableRows(schemaName) {
|
|
68
|
+
export function getSchemaTableRows(schemaName) {
|
|
75
69
|
const effectiveSchemaName = schemaName || getDefaultSchemaName();
|
|
76
70
|
const files = getSchemaFileList(effectiveSchemaName);
|
|
77
71
|
return files.map((file) => ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-discovery.js","sourceRoot":"","sources":["../../src/lib/schema-discovery.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"schema-discovery.js","sourceRoot":"","sources":["../../src/lib/schema-discovery.ts"],"names":[],"mappings":"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"}
|