@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,16 @@
|
|
|
1
|
+
export interface BltConfig {
|
|
2
|
+
schemaBase: string;
|
|
3
|
+
distPath: string;
|
|
4
|
+
instancesPath?: string;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Load configuration from multiple sources (priority order):
|
|
8
|
+
* 1. blt.config.json in current directory
|
|
9
|
+
* 2. .bltrc in current directory
|
|
10
|
+
* 3. ~/.blt/config.json in home directory
|
|
11
|
+
* 4. Environment variables (BLT_SCHEMA_BASE, BLT_DIST_PATH)
|
|
12
|
+
* 5. Default values
|
|
13
|
+
*/
|
|
14
|
+
export declare function loadConfig(): BltConfig;
|
|
15
|
+
export declare function getConfig(): BltConfig;
|
|
16
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAOD;;;;;;;GAOG;AACH,wBAAgB,UAAU,IAAI,SAAS,CAgCtC;AAID,wBAAgB,SAAS,IAAI,SAAS,CAKrC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.loadConfig = loadConfig;
|
|
4
|
+
exports.getConfig = getConfig;
|
|
5
|
+
const fs_1 = require("fs");
|
|
6
|
+
const path_1 = require("path");
|
|
7
|
+
const os_1 = require("os");
|
|
8
|
+
const DEFAULT_CONFIG = {
|
|
9
|
+
schemaBase: './schema',
|
|
10
|
+
distPath: './dist',
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Load configuration from multiple sources (priority order):
|
|
14
|
+
* 1. blt.config.json in current directory
|
|
15
|
+
* 2. .bltrc in current directory
|
|
16
|
+
* 3. ~/.blt/config.json in home directory
|
|
17
|
+
* 4. Environment variables (BLT_SCHEMA_BASE, BLT_DIST_PATH)
|
|
18
|
+
* 5. Default values
|
|
19
|
+
*/
|
|
20
|
+
function loadConfig() {
|
|
21
|
+
let config = { ...DEFAULT_CONFIG };
|
|
22
|
+
// Try loading from files
|
|
23
|
+
const configPaths = [
|
|
24
|
+
(0, path_1.join)(process.cwd(), 'blt.config.json'),
|
|
25
|
+
(0, path_1.join)(process.cwd(), '.bltrc'),
|
|
26
|
+
(0, path_1.join)((0, os_1.homedir)(), '.blt', 'config.json'),
|
|
27
|
+
];
|
|
28
|
+
for (const configPath of configPaths) {
|
|
29
|
+
if ((0, fs_1.existsSync)(configPath)) {
|
|
30
|
+
try {
|
|
31
|
+
const fileConfig = JSON.parse((0, fs_1.readFileSync)(configPath, 'utf8'));
|
|
32
|
+
config = { ...config, ...fileConfig };
|
|
33
|
+
console.log(`Loaded config from: ${configPath}`);
|
|
34
|
+
break;
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
console.warn(`Failed to parse config file: ${configPath}`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
// Override with environment variables
|
|
42
|
+
if (process.env.BLT_SCHEMA_BASE) {
|
|
43
|
+
config.schemaBase = process.env.BLT_SCHEMA_BASE;
|
|
44
|
+
}
|
|
45
|
+
if (process.env.BLT_DIST_PATH) {
|
|
46
|
+
config.distPath = process.env.BLT_DIST_PATH;
|
|
47
|
+
}
|
|
48
|
+
return config;
|
|
49
|
+
}
|
|
50
|
+
let cachedConfig = null;
|
|
51
|
+
function getConfig() {
|
|
52
|
+
if (!cachedConfig) {
|
|
53
|
+
cachedConfig = loadConfig();
|
|
54
|
+
}
|
|
55
|
+
return cachedConfig;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":";;AAuBA,gCAgCC;AAID,8BAKC;AAhED,2BAA8C;AAC9C,+BAA4B;AAC5B,2BAA6B;AAQ7B,MAAM,cAAc,GAAc;IAChC,UAAU,EAAE,UAAU;IACtB,QAAQ,EAAE,QAAQ;CACnB,CAAC;AAEF;;;;;;;GAOG;AACH,SAAgB,UAAU;IACxB,IAAI,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,CAAC;IAEnC,yBAAyB;IACzB,MAAM,WAAW,GAAG;QAClB,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,iBAAiB,CAAC;QACtC,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC;QAC7B,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,MAAM,EAAE,aAAa,CAAC;KACvC,CAAC;IAEF,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,IAAI,IAAA,eAAU,EAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,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,KAAK,EAAE,CAAC;gBACf,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,SAAgB,SAAS;IACvB,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,YAAY,GAAG,UAAU,EAAE,CAAC;IAC9B,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
+
};
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
const core_1 = require("@caporal/core");
|
|
8
|
+
const check_1 = __importDefault(require("./commands/check"));
|
|
9
|
+
const image_1 = __importDefault(require("./commands/image"));
|
|
10
|
+
core_1.program
|
|
11
|
+
.name("blt")
|
|
12
|
+
.version("1.0.0")
|
|
13
|
+
.description("BLT Core Cli");
|
|
14
|
+
(0, check_1.default)(core_1.program);
|
|
15
|
+
(0, image_1.default)(core_1.program);
|
|
16
|
+
// envCommand(program);
|
|
17
|
+
// dataCommand(program);
|
|
18
|
+
// cleanupCommand(program);
|
|
19
|
+
// bucketCommand(program);
|
|
20
|
+
// repoCommand(program);
|
|
21
|
+
// If no command is provided, show help
|
|
22
|
+
const args = process.argv.slice(2);
|
|
23
|
+
if (args.length === 0) {
|
|
24
|
+
process.argv.push('--help');
|
|
25
|
+
}
|
|
26
|
+
core_1.program.run();
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AACA,wCAAwC;AACxC,6DAA4C;AAC5C,6DAA4C;AAS5C,cAAO;KACJ,IAAI,CAAC,KAAK,CAAC;KACX,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,cAAc,CAAC,CAAC;AAE7B,IAAA,eAAY,EAAC,cAAO,CAAC,CAAC;AACtB,IAAA,eAAY,EAAC,cAAO,CAAC,CAAC;AAGtB,uBAAuB;AACvB,wBAAwB;AACxB,2BAA2B;AAC3B,0BAA0B;AAC1B,wBAAwB;AAE1B,uCAAuC;AACvC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;IACtB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9B,CAAC;AAED,cAAO,CAAC,GAAG,EAAE,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export declare const PATTERNS: {
|
|
2
|
+
SQL_FILE: RegExp;
|
|
3
|
+
TABLE_NAME: RegExp;
|
|
4
|
+
FUNCTION_NAME: RegExp;
|
|
5
|
+
PROCEDURE_NAME: RegExp;
|
|
6
|
+
FILE_NUMBER: RegExp;
|
|
7
|
+
};
|
|
8
|
+
export declare function getPaths(): {
|
|
9
|
+
DIST: string;
|
|
10
|
+
SCHEMA_BASE: string;
|
|
11
|
+
INSTANCES_BASE: string;
|
|
12
|
+
};
|
|
13
|
+
export interface YamlFile {
|
|
14
|
+
name: string;
|
|
15
|
+
path: string;
|
|
16
|
+
source: string;
|
|
17
|
+
}
|
|
18
|
+
export interface SqlFile {
|
|
19
|
+
name: string;
|
|
20
|
+
version: string;
|
|
21
|
+
path: string;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,QAAQ;;;;;;CAMpB,CAAC;AAEF,wBAAgB,QAAQ;;;;EAOvB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PATTERNS = void 0;
|
|
4
|
+
exports.getPaths = getPaths;
|
|
5
|
+
// Shared constants and types for schema operations
|
|
6
|
+
const config_1 = require("../config/config");
|
|
7
|
+
exports.PATTERNS = {
|
|
8
|
+
SQL_FILE: /bltcore-v(\d+\.\d+\.\d+)\.sql/,
|
|
9
|
+
TABLE_NAME: /^table:\s*(.+)$/m,
|
|
10
|
+
FUNCTION_NAME: /^function:\s*(.+)$/m,
|
|
11
|
+
PROCEDURE_NAME: /^procedure:\s*(.+)$/m,
|
|
12
|
+
FILE_NUMBER: /\d+/,
|
|
13
|
+
};
|
|
14
|
+
function getPaths() {
|
|
15
|
+
const config = (0, config_1.getConfig)();
|
|
16
|
+
return {
|
|
17
|
+
DIST: config.distPath,
|
|
18
|
+
SCHEMA_BASE: config.schemaBase,
|
|
19
|
+
INSTANCES_BASE: config.instancesPath || `${config.schemaBase}/instances`,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":";;;AAWA,4BAOC;AAlBD,mDAAmD;AACnD,6CAA6C;AAEhC,QAAA,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,SAAgB,QAAQ;IACtB,MAAM,MAAM,GAAG,IAAA,kBAAS,GAAE,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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build data file from instance directory
|
|
3
|
+
* Handles both direct SQL files and YAML files that need conversion
|
|
4
|
+
* Instance directory structure: instances/<instance>/{sql/, yaml/}
|
|
5
|
+
*/
|
|
6
|
+
export declare function buildDataFile(instanceName: string, version: string): string;
|
|
7
|
+
/**
|
|
8
|
+
* Write data file to dist directory
|
|
9
|
+
*/
|
|
10
|
+
export declare function writeDataFile(content: string, instanceName: string): void;
|
|
11
|
+
//# sourceMappingURL=data-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-generator.d.ts","sourceRoot":"","sources":["../../src/lib/data-generator.ts"],"names":[],"mappings":"AASA;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAuD3E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAYzE"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Data generation utilities for instance-specific data
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.buildDataFile = buildDataFile;
|
|
5
|
+
exports.writeDataFile = writeDataFile;
|
|
6
|
+
const fs_1 = require("fs");
|
|
7
|
+
const path_1 = require("path");
|
|
8
|
+
const constants_1 = require("./constants");
|
|
9
|
+
const yaml_converter_1 = require("./yaml-converter");
|
|
10
|
+
const instance_discovery_1 = require("./instance-discovery");
|
|
11
|
+
/**
|
|
12
|
+
* Build data file from instance directory
|
|
13
|
+
* Handles both direct SQL files and YAML files that need conversion
|
|
14
|
+
* Instance directory structure: instances/<instance>/{sql/, yaml/}
|
|
15
|
+
*/
|
|
16
|
+
function buildDataFile(instanceName, version) {
|
|
17
|
+
const instanceDir = (0, instance_discovery_1.getInstanceDir)(instanceName);
|
|
18
|
+
if (!(0, fs_1.existsSync)(instanceDir)) {
|
|
19
|
+
throw new Error(`Instance directory does not exist: ${instanceDir}`);
|
|
20
|
+
}
|
|
21
|
+
const sqlDir = (0, path_1.join)(instanceDir, "sql");
|
|
22
|
+
const yamlDir = (0, path_1.join)(instanceDir, "yaml");
|
|
23
|
+
let dataContent = `-- =============================================
|
|
24
|
+
-- Instance Data: ${instanceName}
|
|
25
|
+
-- v${version} ፨ ${new Date().toLocaleString()}
|
|
26
|
+
-- =============================================
|
|
27
|
+
SET search_path = public, auth, extensions;
|
|
28
|
+
`;
|
|
29
|
+
// Check for YAML files and convert them first
|
|
30
|
+
// processYamlFiles expects sqlDir and looks for yaml files in sqlDir/../yaml
|
|
31
|
+
if ((0, fs_1.existsSync)(yamlDir)) {
|
|
32
|
+
// Process YAML files to SQL (creates .sql files in the sql directory)
|
|
33
|
+
if ((0, fs_1.existsSync)(sqlDir)) {
|
|
34
|
+
(0, yaml_converter_1.processYamlFiles)(sqlDir);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
// Create sql directory if it doesn't exist
|
|
38
|
+
(0, fs_1.mkdirSync)(sqlDir, { recursive: true });
|
|
39
|
+
(0, yaml_converter_1.processYamlFiles)(sqlDir);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// Get all SQL files from the sql subdirectory
|
|
43
|
+
if (!(0, fs_1.existsSync)(sqlDir)) {
|
|
44
|
+
console.warn(`No SQL directory found in instance: ${instanceDir}`);
|
|
45
|
+
return dataContent;
|
|
46
|
+
}
|
|
47
|
+
const sqlFiles = (0, fs_1.readdirSync)(sqlDir)
|
|
48
|
+
.filter((file) => file.toLowerCase().endsWith(".sql") && constants_1.PATTERNS.FILE_NUMBER.test(file))
|
|
49
|
+
.sort();
|
|
50
|
+
if (sqlFiles.length === 0) {
|
|
51
|
+
console.warn(`No SQL files found in instance sql directory: ${sqlDir}`);
|
|
52
|
+
return dataContent;
|
|
53
|
+
}
|
|
54
|
+
// Append each SQL file
|
|
55
|
+
for (const file of sqlFiles) {
|
|
56
|
+
console.log(`Processing data file: ${file}`);
|
|
57
|
+
const filePath = (0, path_1.join)(sqlDir, file);
|
|
58
|
+
const content = (0, fs_1.readFileSync)(filePath, "utf8");
|
|
59
|
+
dataContent += `\n\n-- ${file}\nSET search_path = public, auth, extensions;\n\n`;
|
|
60
|
+
dataContent += `${content}`;
|
|
61
|
+
}
|
|
62
|
+
return dataContent;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Write data file to dist directory
|
|
66
|
+
*/
|
|
67
|
+
function writeDataFile(content, instanceName) {
|
|
68
|
+
const paths = (0, constants_1.getPaths)();
|
|
69
|
+
const distPath = (0, path_1.join)(process.cwd(), paths.DIST);
|
|
70
|
+
const datafile = (0, path_1.join)(distPath, 'data.sql');
|
|
71
|
+
console.log(`Writing data file to ${datafile}`);
|
|
72
|
+
// Ensure dist directory exists
|
|
73
|
+
if (!(0, fs_1.existsSync)(distPath)) {
|
|
74
|
+
(0, fs_1.mkdirSync)(distPath, { recursive: true });
|
|
75
|
+
}
|
|
76
|
+
(0, fs_1.writeFileSync)(datafile, content);
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=data-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-generator.js","sourceRoot":"","sources":["../../src/lib/data-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { SqlFile } from "./constants";
|
|
2
|
+
/**
|
|
3
|
+
* Get the latest SQL file from the dist directory
|
|
4
|
+
*/
|
|
5
|
+
export declare function getLatestSqlFile(): SqlFile;
|
|
6
|
+
/**
|
|
7
|
+
* Execute a SQL file against the database
|
|
8
|
+
*/
|
|
9
|
+
export declare function runSqlFile(filePath?: string): Promise<void>;
|
|
10
|
+
/**
|
|
11
|
+
* Execute a SQL query and return results
|
|
12
|
+
*/
|
|
13
|
+
export declare function executeQuery<T = any>(query: string): Promise<T[]>;
|
|
14
|
+
//# sourceMappingURL=database-runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database-runner.d.ts","sourceRoot":"","sources":["../../src/lib/database-runner.ts"],"names":[],"mappings":"AAKA,OAAO,EAAsB,OAAO,EAAE,MAAM,aAAa,CAAC;AAE1D;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAqC1C;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8GjE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAgCvE"}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Database execution utilities
|
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
+
};
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
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");
|
|
14
|
+
/**
|
|
15
|
+
* Get the latest SQL file from the dist directory
|
|
16
|
+
*/
|
|
17
|
+
function getLatestSqlFile() {
|
|
18
|
+
const paths = (0, constants_1.getPaths)();
|
|
19
|
+
const distPath = (0, path_1.join)(process.cwd(), paths.DIST);
|
|
20
|
+
if (!(0, fs_1.existsSync)(distPath)) {
|
|
21
|
+
console.error(`Dist directory does not exist: ${distPath}`);
|
|
22
|
+
process.exit(1);
|
|
23
|
+
}
|
|
24
|
+
const sqlFiles = (0, fs_1.readdirSync)(distPath)
|
|
25
|
+
.filter((file) => file.startsWith("bltcore-v") && file.endsWith(".sql"))
|
|
26
|
+
.map((file) => {
|
|
27
|
+
const versionMatch = file.match(constants_1.PATTERNS.SQL_FILE);
|
|
28
|
+
if (!versionMatch)
|
|
29
|
+
return null;
|
|
30
|
+
return {
|
|
31
|
+
name: file,
|
|
32
|
+
version: versionMatch[1],
|
|
33
|
+
path: (0, path_1.join)(distPath, file),
|
|
34
|
+
};
|
|
35
|
+
})
|
|
36
|
+
.filter((f) => f !== null)
|
|
37
|
+
.sort((a, b) => {
|
|
38
|
+
// Sort by semantic version (major.minor.patch)
|
|
39
|
+
const [aMajor, aMinor, aPatch] = a.version.split(".").map(Number);
|
|
40
|
+
const [bMajor, bMinor, bPatch] = b.version.split(".").map(Number);
|
|
41
|
+
if (aMajor !== bMajor)
|
|
42
|
+
return bMajor - aMajor;
|
|
43
|
+
if (aMinor !== bMinor)
|
|
44
|
+
return bMinor - aMinor;
|
|
45
|
+
return bPatch - aPatch;
|
|
46
|
+
});
|
|
47
|
+
if (sqlFiles.length === 0) {
|
|
48
|
+
console.error("No SQL files found in dist directory");
|
|
49
|
+
process.exit(1);
|
|
50
|
+
}
|
|
51
|
+
return sqlFiles[0];
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Execute a SQL file against the database
|
|
55
|
+
*/
|
|
56
|
+
async function runSqlFile(filePath) {
|
|
57
|
+
let targetFile;
|
|
58
|
+
let sqlContent;
|
|
59
|
+
if (filePath) {
|
|
60
|
+
// Use specified file
|
|
61
|
+
const fileName = filePath.split("/").pop() || filePath;
|
|
62
|
+
sqlContent = (0, fs_1.readFileSync)(filePath, "utf8");
|
|
63
|
+
targetFile = {
|
|
64
|
+
name: fileName,
|
|
65
|
+
version: "unknown",
|
|
66
|
+
path: filePath,
|
|
67
|
+
};
|
|
68
|
+
console.log(`\n🚀 Running SQL file: ${fileName}`);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
// Use latest file (backward compatibility)
|
|
72
|
+
targetFile = getLatestSqlFile();
|
|
73
|
+
sqlContent = (0, fs_1.readFileSync)(targetFile.path, "utf8");
|
|
74
|
+
console.log(`\n🚀 Running latest SQL file: ${targetFile.name} (v${targetFile.version})`);
|
|
75
|
+
}
|
|
76
|
+
// Read database connection from environment variables
|
|
77
|
+
const connectionString = process.env.DATABASE_URL || process.env.SUPABASE_DB_URL;
|
|
78
|
+
if (!connectionString) {
|
|
79
|
+
console.error(`\n❌ Error: No database connection string found.`);
|
|
80
|
+
console.error("Please set DATABASE_URL or SUPABASE_DB_URL environment variable.");
|
|
81
|
+
console.error("\nExample:");
|
|
82
|
+
console.error(' export DATABASE_URL="postgresql://user:password@localhost:5432/dbname"');
|
|
83
|
+
process.exit(1);
|
|
84
|
+
}
|
|
85
|
+
// Create PostgreSQL client
|
|
86
|
+
const client = new pg_1.default.Client({ connectionString });
|
|
87
|
+
try {
|
|
88
|
+
console.log("📡 Connecting to database...");
|
|
89
|
+
await client.connect();
|
|
90
|
+
console.log("✅ Connected successfully");
|
|
91
|
+
console.log("\n⏳ Executing SQL script...");
|
|
92
|
+
console.log(" This may take a few moments...\n");
|
|
93
|
+
// Execute the SQL
|
|
94
|
+
await client.query(sqlContent);
|
|
95
|
+
console.log("✅ SQL script executed successfully!");
|
|
96
|
+
if (targetFile.version !== "unknown") {
|
|
97
|
+
console.log(`\n📊 Database updated with schema v${targetFile.version}`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
console.error("\n❌ Error executing SQL:");
|
|
102
|
+
console.error("━".repeat(60));
|
|
103
|
+
// Show the main error message
|
|
104
|
+
console.error(`\n${error.message}`);
|
|
105
|
+
// Show line number if available
|
|
106
|
+
if (error.position) {
|
|
107
|
+
const lines = sqlContent.substring(0, error.position).split("\n");
|
|
108
|
+
const lineNumber = lines.length;
|
|
109
|
+
const columnNumber = lines[lines.length - 1].length + 1;
|
|
110
|
+
console.error(`\n📍 Location: Line ${lineNumber}, Column ${columnNumber}`);
|
|
111
|
+
console.error(` Position: ${error.position} characters into file`);
|
|
112
|
+
// Show context around the error (3 lines before and after)
|
|
113
|
+
const allLines = sqlContent.split("\n");
|
|
114
|
+
const startLine = Math.max(0, lineNumber - 4);
|
|
115
|
+
const endLine = Math.min(allLines.length, lineNumber + 2);
|
|
116
|
+
console.error("\n📄 Context:");
|
|
117
|
+
console.error("━".repeat(60));
|
|
118
|
+
for (let i = startLine; i < endLine; i++) {
|
|
119
|
+
const marker = i + 1 === lineNumber ? "➤" : " ";
|
|
120
|
+
const lineNum = String(i + 1).padStart(5, " ");
|
|
121
|
+
console.error(`${marker} ${lineNum} | ${allLines[i]}`);
|
|
122
|
+
}
|
|
123
|
+
console.error("━".repeat(60));
|
|
124
|
+
}
|
|
125
|
+
// Show additional PostgreSQL error details
|
|
126
|
+
if (error.detail) {
|
|
127
|
+
console.error(`\n📝 Detail: ${error.detail}`);
|
|
128
|
+
}
|
|
129
|
+
if (error.hint) {
|
|
130
|
+
console.error(`\n💡 Hint: ${error.hint}`);
|
|
131
|
+
}
|
|
132
|
+
if (error.where) {
|
|
133
|
+
console.error(`\n🔍 Where: ${error.where}`);
|
|
134
|
+
}
|
|
135
|
+
if (error.code) {
|
|
136
|
+
console.error(`\n🏷️ SQL Error Code: ${error.code}`);
|
|
137
|
+
}
|
|
138
|
+
// Show the SQL file being executed
|
|
139
|
+
console.error(`\n📂 File: ${targetFile.path}`);
|
|
140
|
+
if (targetFile.version !== "unknown") {
|
|
141
|
+
console.error(` Version: ${targetFile.version}`);
|
|
142
|
+
}
|
|
143
|
+
console.error("\n" + "━".repeat(60));
|
|
144
|
+
process.exit(1);
|
|
145
|
+
}
|
|
146
|
+
finally {
|
|
147
|
+
await client.end();
|
|
148
|
+
console.log("\n👋 Database connection closed");
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Execute a SQL query and return results
|
|
153
|
+
*/
|
|
154
|
+
async function executeQuery(query) {
|
|
155
|
+
// Read database connection from environment variables
|
|
156
|
+
const connectionString = process.env.DATABASE_URL || process.env.SUPABASE_DB_URL;
|
|
157
|
+
if (!connectionString) {
|
|
158
|
+
console.error(`\n❌ Error: No database connection string found.`);
|
|
159
|
+
console.error("Please set DATABASE_URL or SUPABASE_DB_URL environment variable.");
|
|
160
|
+
console.error("\nExample:");
|
|
161
|
+
console.error(' export DATABASE_URL="postgresql://user:password@localhost:5432/dbname"');
|
|
162
|
+
process.exit(1);
|
|
163
|
+
}
|
|
164
|
+
// Create PostgreSQL client
|
|
165
|
+
const client = new pg_1.default.Client({ connectionString });
|
|
166
|
+
try {
|
|
167
|
+
await client.connect();
|
|
168
|
+
const result = await client.query(query);
|
|
169
|
+
return result.rows;
|
|
170
|
+
}
|
|
171
|
+
catch (error) {
|
|
172
|
+
console.error("\n❌ Error executing query:");
|
|
173
|
+
console.error(`\n${error.message}`);
|
|
174
|
+
if (error.detail) {
|
|
175
|
+
console.error(`\n📝 Detail: ${error.detail}`);
|
|
176
|
+
}
|
|
177
|
+
if (error.hint) {
|
|
178
|
+
console.error(`\n💡 Hint: ${error.hint}`);
|
|
179
|
+
}
|
|
180
|
+
process.exit(1);
|
|
181
|
+
}
|
|
182
|
+
finally {
|
|
183
|
+
await client.end();
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=database-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database-runner.js","sourceRoot":"","sources":["../../src/lib/database-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get all available instance names from the instances directory
|
|
3
|
+
*/
|
|
4
|
+
export declare function getAvailableInstances(): string[];
|
|
5
|
+
/**
|
|
6
|
+
* Get the default instance name (prefers "default" if it exists)
|
|
7
|
+
*/
|
|
8
|
+
export declare function getDefaultInstanceName(): string;
|
|
9
|
+
/**
|
|
10
|
+
* Get instance directory path
|
|
11
|
+
*/
|
|
12
|
+
export declare function getInstanceDir(instanceName: string): string;
|
|
13
|
+
//# sourceMappingURL=instance-discovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instance-discovery.d.ts","sourceRoot":"","sources":["../../src/lib/instance-discovery.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAYhD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAW/C;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAG3D"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Instance discovery and file listing utilities
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.getAvailableInstances = getAvailableInstances;
|
|
5
|
+
exports.getDefaultInstanceName = getDefaultInstanceName;
|
|
6
|
+
exports.getInstanceDir = getInstanceDir;
|
|
7
|
+
const fs_1 = require("fs");
|
|
8
|
+
const path_1 = require("path");
|
|
9
|
+
const constants_1 = require("./constants");
|
|
10
|
+
/**
|
|
11
|
+
* Get all available instance names from the instances directory
|
|
12
|
+
*/
|
|
13
|
+
function getAvailableInstances() {
|
|
14
|
+
const paths = (0, constants_1.getPaths)();
|
|
15
|
+
const instancesBase = (0, path_1.join)(process.cwd(), paths.INSTANCES_BASE);
|
|
16
|
+
if (!(0, fs_1.existsSync)(instancesBase)) {
|
|
17
|
+
return [];
|
|
18
|
+
}
|
|
19
|
+
return (0, fs_1.readdirSync)(instancesBase)
|
|
20
|
+
.filter((item) => {
|
|
21
|
+
const itemPath = (0, path_1.join)(instancesBase, item);
|
|
22
|
+
return (0, fs_1.statSync)(itemPath).isDirectory();
|
|
23
|
+
})
|
|
24
|
+
.sort();
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Get the default instance name (prefers "default" if it exists)
|
|
28
|
+
*/
|
|
29
|
+
function getDefaultInstanceName() {
|
|
30
|
+
const instances = getAvailableInstances();
|
|
31
|
+
// Prefer "default" if it exists, otherwise use the first available instance
|
|
32
|
+
if (instances.includes("default")) {
|
|
33
|
+
return "default";
|
|
34
|
+
}
|
|
35
|
+
if (instances.length > 0) {
|
|
36
|
+
return instances[0];
|
|
37
|
+
}
|
|
38
|
+
// Fallback if no instances found
|
|
39
|
+
return "default";
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Get instance directory path
|
|
43
|
+
*/
|
|
44
|
+
function getInstanceDir(instanceName) {
|
|
45
|
+
const paths = (0, constants_1.getPaths)();
|
|
46
|
+
return (0, path_1.join)(process.cwd(), paths.INSTANCES_BASE, instanceName);
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=instance-discovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instance-discovery.js","sourceRoot":"","sources":["../../src/lib/instance-discovery.ts"],"names":[],"mappings":";AAAA,gDAAgD;;AAShD,sDAYC;AAKD,wDAWC;AAKD,wCAGC;AA3CD,2BAAuD;AACvD,+BAA4B;AAC5B,2CAAuC;AAEvC;;GAEG;AACH,SAAgB,qBAAqB;IACnC,MAAM,KAAK,GAAG,IAAA,oBAAQ,GAAE,CAAC;IACzB,MAAM,aAAa,GAAG,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IAChE,IAAI,CAAC,IAAA,eAAU,EAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,IAAA,gBAAW,EAAC,aAAa,CAAC;SAC9B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACf,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAC3C,OAAO,IAAA,aAAQ,EAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IAC1C,CAAC,CAAC;SACD,IAAI,EAAE,CAAC;AACZ,CAAC;AAED;;GAEG;AACH,SAAgB,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,SAAgB,cAAc,CAAC,YAAoB;IACjD,MAAM,KAAK,GAAG,IAAA,oBAAQ,GAAE,CAAC;IACzB,OAAO,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;AACjE,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get all available schema names from the schema directory
|
|
3
|
+
*/
|
|
4
|
+
export declare function getAvailableSchemas(): string[];
|
|
5
|
+
/**
|
|
6
|
+
* Get the default schema name (prefers "public" if it exists)
|
|
7
|
+
*/
|
|
8
|
+
export declare function getDefaultSchemaName(): string;
|
|
9
|
+
/**
|
|
10
|
+
* Get detailed file information for all files in a schema's sql directory
|
|
11
|
+
* Only includes files ending in .sql (case-insensitive)
|
|
12
|
+
*/
|
|
13
|
+
export declare function getSchemaFileList(schemaName?: string): {
|
|
14
|
+
name: string;
|
|
15
|
+
size: number;
|
|
16
|
+
lastModified: string;
|
|
17
|
+
createdAt: string;
|
|
18
|
+
updatedAt: string;
|
|
19
|
+
}[];
|
|
20
|
+
/**
|
|
21
|
+
* Get simplified file information for table display
|
|
22
|
+
*/
|
|
23
|
+
export declare function getSchemaTableRows(schemaName?: string): {
|
|
24
|
+
name: string;
|
|
25
|
+
size: number;
|
|
26
|
+
createdAt: string;
|
|
27
|
+
lastModified: string;
|
|
28
|
+
updatedAt: string;
|
|
29
|
+
}[];
|
|
30
|
+
//# sourceMappingURL=schema-discovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-discovery.d.ts","sourceRoot":"","sources":["../../src/lib/schema-discovery.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAY9C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAW7C;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,CAAC,EAAE,MAAM;;;;;;IAwBpD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,CAAC,EAAE,MAAM;;;;;;IAUrD"}
|