@codemarc/blt 1.0.0 → 1.2.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 +133 -7
- package/dist/blt +28 -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/bucket/download.d.ts +7 -0
- package/dist/commands/bucket/download.d.ts.map +1 -0
- package/dist/commands/bucket/download.js +28 -0
- package/dist/commands/bucket/download.js.map +1 -0
- package/dist/commands/bucket/list.d.ts +9 -0
- package/dist/commands/bucket/list.d.ts.map +1 -0
- package/dist/commands/bucket/list.js +69 -0
- package/dist/commands/bucket/list.js.map +1 -0
- package/dist/commands/bucket/names.d.ts +5 -0
- package/dist/commands/bucket/names.d.ts.map +1 -0
- package/dist/commands/bucket/names.js +53 -0
- package/dist/commands/bucket/names.js.map +1 -0
- package/dist/commands/bucket/upload-folder.d.ts +10 -0
- package/dist/commands/bucket/upload-folder.d.ts.map +1 -0
- package/dist/commands/bucket/upload-folder.js +84 -0
- package/dist/commands/bucket/upload-folder.js.map +1 -0
- package/dist/commands/bucket/upload.d.ts +9 -0
- package/dist/commands/bucket/upload.d.ts.map +1 -0
- package/dist/commands/bucket/upload.js +32 -0
- package/dist/commands/bucket/upload.js.map +1 -0
- package/dist/commands/bucket/url.d.ts +9 -0
- package/dist/commands/bucket/url.d.ts.map +1 -0
- package/dist/commands/bucket/url.js +32 -0
- package/dist/commands/bucket/url.js.map +1 -0
- package/dist/commands/bucket/utils.d.ts +3 -0
- package/dist/commands/bucket/utils.d.ts.map +1 -0
- package/dist/commands/bucket/utils.js +28 -0
- package/dist/commands/bucket/utils.js.map +1 -0
- package/dist/commands/bucket.d.ts +3 -0
- package/dist/commands/bucket.d.ts.map +1 -1
- package/dist/commands/bucket.js +53 -325
- package/dist/commands/bucket.js.map +1 -1
- 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 +10 -13
- 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/sql.d.ts +6 -0
- package/dist/commands/version/sql.d.ts.map +1 -0
- package/dist/commands/version/sql.js +35 -0
- package/dist/commands/version/sql.js.map +1 -0
- package/dist/commands/version/string.d.ts +13 -0
- package/dist/commands/version/string.d.ts.map +1 -0
- package/dist/commands/version/string.js +52 -0
- package/dist/commands/version/string.js.map +1 -0
- 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 +195 -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 +66 -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 +13 -8
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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"}
|
package/dist/lib/sql-builder.js
CHANGED
|
@@ -1,30 +1,23 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// SQL file building and generation utilities
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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");
|
|
2
|
+
import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { getPaths, PATTERNS } from "./constants";
|
|
12
5
|
/**
|
|
13
6
|
* Get sorted list of SQL files from a directory
|
|
14
7
|
* Uses lexicographic sorting to preserve the numeric ordering from file names
|
|
15
8
|
* (e.g., "10-000-audit.sql" comes before "10-010-types.sql")
|
|
16
9
|
*/
|
|
17
|
-
function getSortedSqlFiles(sqlDir, schemaName) {
|
|
18
|
-
return
|
|
10
|
+
export function getSortedSqlFiles(sqlDir, schemaName) {
|
|
11
|
+
return readdirSync(sqlDir)
|
|
19
12
|
.filter((file) => !file.startsWith(schemaName) &&
|
|
20
13
|
(file.endsWith(".sql") || file.endsWith(".ddl")) &&
|
|
21
|
-
|
|
14
|
+
PATTERNS.FILE_NUMBER.test(file))
|
|
22
15
|
.sort(); // Use lexicographic sorting (same as schema info) - works correctly due to leading zeros
|
|
23
16
|
}
|
|
24
17
|
/**
|
|
25
18
|
* Generate SQL header with version and schema setup
|
|
26
19
|
*/
|
|
27
|
-
function generateSqlHeader(schemaName, version) {
|
|
20
|
+
export function generateSqlHeader(schemaName, version) {
|
|
28
21
|
let header = `-- =============================================
|
|
29
22
|
-- Database postgres, Schema ${schemaName}
|
|
30
23
|
-- v${version} ፨ ${new Date().toLocaleString()}
|
|
@@ -54,13 +47,13 @@ SET search_path = ${schemaName}, auth, extensions;
|
|
|
54
47
|
/**
|
|
55
48
|
* Build combined schema file from individual SQL files
|
|
56
49
|
*/
|
|
57
|
-
function buildSchemaFile(sqlDir, schemaName, sqlFiles, version) {
|
|
50
|
+
export function buildSchemaFile(sqlDir, schemaName, sqlFiles, version) {
|
|
58
51
|
let combinedContent = generateSqlHeader(schemaName, version);
|
|
59
52
|
// Append each SQL file with search_path set
|
|
60
53
|
for (const file of sqlFiles) {
|
|
61
54
|
console.log("Processing file:", file);
|
|
62
|
-
const filePath =
|
|
63
|
-
const content =
|
|
55
|
+
const filePath = join(sqlDir, file);
|
|
56
|
+
const content = readFileSync(filePath, "utf8");
|
|
64
57
|
combinedContent += `\n\n-- ${file}\nSET search_path = ${schemaName}, auth;\n\n`;
|
|
65
58
|
combinedContent += `${content}`;
|
|
66
59
|
}
|
|
@@ -70,30 +63,30 @@ function buildSchemaFile(sqlDir, schemaName, sqlFiles, version) {
|
|
|
70
63
|
* Write schema file to dist directory
|
|
71
64
|
* Output: dist/<schemaName>.sql (e.g., dist/public.sql)
|
|
72
65
|
*/
|
|
73
|
-
function writeSchemaFile(content, schemaName) {
|
|
74
|
-
const paths =
|
|
75
|
-
const distPath =
|
|
76
|
-
const schemafile =
|
|
66
|
+
export function writeSchemaFile(content, schemaName) {
|
|
67
|
+
const paths = getPaths();
|
|
68
|
+
const distPath = join(process.cwd(), paths.DIST);
|
|
69
|
+
const schemafile = join(distPath, `${schemaName}.sql`);
|
|
77
70
|
console.log(`Writing schema file to ${schemafile}`);
|
|
78
71
|
// Ensure dist directory exists
|
|
79
|
-
if (!
|
|
80
|
-
|
|
72
|
+
if (!existsSync(distPath)) {
|
|
73
|
+
mkdirSync(distPath, { recursive: true });
|
|
81
74
|
}
|
|
82
|
-
|
|
75
|
+
writeFileSync(schemafile, content);
|
|
83
76
|
}
|
|
84
77
|
/**
|
|
85
78
|
* Get package version from package.json
|
|
86
79
|
* Looks in multiple locations: user's project and @codemarc/blt package
|
|
87
80
|
*/
|
|
88
|
-
function getPackageVersion() {
|
|
81
|
+
export function getPackageVersion() {
|
|
89
82
|
const searchPaths = [
|
|
90
|
-
|
|
91
|
-
|
|
83
|
+
join(process.cwd(), 'package.json'), // User's project
|
|
84
|
+
join(__dirname, '..', '..', 'package.json'), // @codemarc/blt package
|
|
92
85
|
];
|
|
93
86
|
for (const packageJsonPath of searchPaths) {
|
|
94
|
-
if (
|
|
87
|
+
if (existsSync(packageJsonPath)) {
|
|
95
88
|
try {
|
|
96
|
-
const packageJson = JSON.parse(
|
|
89
|
+
const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf8"));
|
|
97
90
|
if (packageJson.version) {
|
|
98
91
|
return packageJson.version;
|
|
99
92
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql-builder.js","sourceRoot":"","sources":["../../src/lib/sql-builder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sql-builder.js","sourceRoot":"","sources":["../../src/lib/sql-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Standard version.json schema types for BLT components
|
|
3
|
+
*
|
|
4
|
+
* This schema is used across all BLT components (CLI, Data, POS, DevOps, Deploy, Gateway)
|
|
5
|
+
* to provide uniform version information including runtime, build metadata, and dependencies.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Supported component types
|
|
9
|
+
*/
|
|
10
|
+
export type ComponentType = 'cli' | 'data' | 'pos' | 'devops' | 'deploy' | 'gateway';
|
|
11
|
+
/**
|
|
12
|
+
* Supported runtime types
|
|
13
|
+
*/
|
|
14
|
+
export type RuntimeType = 'node' | 'bun' | 'deno';
|
|
15
|
+
/**
|
|
16
|
+
* Supported package manager types
|
|
17
|
+
*/
|
|
18
|
+
export type PackageManagerType = 'npm' | 'bun' | 'pnpm' | 'deno';
|
|
19
|
+
/**
|
|
20
|
+
* Runtime information
|
|
21
|
+
*/
|
|
22
|
+
export interface RuntimeInfo {
|
|
23
|
+
/** Runtime type (node, bun, or deno) */
|
|
24
|
+
type: RuntimeType;
|
|
25
|
+
/** Runtime version string */
|
|
26
|
+
version: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Build metadata from git and build process
|
|
30
|
+
*/
|
|
31
|
+
export interface BuildInfo {
|
|
32
|
+
/** Git commit hash */
|
|
33
|
+
commit: string;
|
|
34
|
+
/** Git branch name */
|
|
35
|
+
branch: string;
|
|
36
|
+
/** ISO timestamp of build time */
|
|
37
|
+
time: string;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Package manager metadata
|
|
41
|
+
*/
|
|
42
|
+
export interface MetadataInfo {
|
|
43
|
+
/** Package manager type (npm, bun, pnpm, or deno) */
|
|
44
|
+
packageManager: PackageManagerType;
|
|
45
|
+
/** Package manager version */
|
|
46
|
+
packageManagerVersion: string;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Complete version.json schema structure
|
|
50
|
+
*
|
|
51
|
+
* This interface defines the structure of version.json files used across
|
|
52
|
+
* all BLT components for uniform version tracking and inspection.
|
|
53
|
+
*/
|
|
54
|
+
export interface VersionInfo {
|
|
55
|
+
/** Component identifier */
|
|
56
|
+
component: ComponentType;
|
|
57
|
+
/** Semantic version string (e.g., "1.0.0") */
|
|
58
|
+
version: string;
|
|
59
|
+
/** Runtime information (Node.js, Bun, or Deno) */
|
|
60
|
+
runtime: RuntimeInfo;
|
|
61
|
+
/** Build metadata (git commit, branch, build time) */
|
|
62
|
+
build: BuildInfo;
|
|
63
|
+
/** Package manager metadata */
|
|
64
|
+
metadata: MetadataInfo;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Partial version info for cases where some fields may be optional
|
|
68
|
+
* (e.g., during development or when git info is unavailable)
|
|
69
|
+
*/
|
|
70
|
+
export interface PartialVersionInfo {
|
|
71
|
+
component: ComponentType;
|
|
72
|
+
version: string;
|
|
73
|
+
runtime?: RuntimeInfo;
|
|
74
|
+
build?: Partial<BuildInfo>;
|
|
75
|
+
metadata?: Partial<MetadataInfo>;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=version-types.d.ts.map
|