@t1mmen/srtd 0.3.0 → 0.4.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 +75 -110
- package/dist/__tests__/vitest.setup.js +41 -25
- package/dist/__tests__/vitest.setup.js.map +1 -1
- package/dist/commands/_app.js +15 -7
- package/dist/commands/_app.js.map +1 -1
- package/dist/commands/apply.js +1 -0
- package/dist/commands/apply.js.map +1 -1
- package/dist/commands/clear.d.ts +2 -0
- package/dist/commands/clear.js +45 -0
- package/dist/commands/clear.js.map +1 -0
- package/dist/commands/index.js +9 -4
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/watch.js +30 -14
- package/dist/commands/watch.js.map +1 -1
- package/dist/hooks/useTemplateManager.d.ts +6 -8
- package/dist/hooks/useTemplateManager.js +80 -97
- package/dist/hooks/useTemplateManager.js.map +1 -1
- package/dist/lib/templateManager.d.ts +9 -2
- package/dist/lib/templateManager.js +147 -48
- package/dist/lib/templateManager.js.map +1 -1
- package/dist/lib/templateManager.test.js +452 -15
- package/dist/lib/templateManager.test.js.map +1 -1
- package/dist/utils/config.d.ts +2 -0
- package/dist/utils/config.js +26 -40
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/databaseConnection.js +13 -1
- package/dist/utils/databaseConnection.js.map +1 -1
- package/package.json +2 -2
package/dist/utils/config.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import fs from 'node:fs/promises';
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { CONFIG_FILE } from '../constants.js';
|
|
4
|
+
import { logger } from './logger.js';
|
|
4
5
|
const defaultConfig = {
|
|
5
6
|
wipIndicator: '.wip',
|
|
6
7
|
migrationPrefix: 'srtd',
|
|
@@ -34,46 +35,31 @@ export async function getConfig(dir = process.cwd()) {
|
|
|
34
35
|
export async function saveConfig(baseDir, config) {
|
|
35
36
|
const configPath = path.join(baseDir, CONFIG_FILE);
|
|
36
37
|
const finalConfig = { ...defaultConfig, ...config };
|
|
37
|
-
await fs.writeFile(configPath, JSON.stringify(finalConfig, null, 2))
|
|
38
|
+
await fs.writeFile(configPath, JSON.stringify(finalConfig, null, 2)).catch(e => {
|
|
39
|
+
logger.error(`Failed to save config: ${e.message}`);
|
|
40
|
+
});
|
|
38
41
|
cachedConfig = finalConfig;
|
|
39
42
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
// };
|
|
63
|
-
// export async function getConfig(dir?: string): Promise<CLIConfig> {
|
|
64
|
-
// const baseDir = dir || process.cwd();
|
|
65
|
-
// const configPath = path.join(baseDir, CONFIG_FILE);
|
|
66
|
-
// try {
|
|
67
|
-
// const content = await fs.readFile(configPath, 'utf-8');
|
|
68
|
-
// const userConfig = JSON.parse(content);
|
|
69
|
-
// return { ...defaultConfig, ...userConfig };
|
|
70
|
-
// } catch {
|
|
71
|
-
// return defaultConfig;
|
|
72
|
-
// }
|
|
73
|
-
// }
|
|
74
|
-
// export async function saveConfig(baseDir: string, config: Partial<CLIConfig>): Promise<void> {
|
|
75
|
-
// const configPath = path.join(baseDir, CONFIG_FILE);
|
|
76
|
-
// const finalConfig = { ...defaultConfig, ...config };
|
|
77
|
-
// await fs.writeFile(configPath, JSON.stringify(finalConfig, null, 2));
|
|
78
|
-
// }
|
|
43
|
+
export async function resetConfig(baseDir) {
|
|
44
|
+
cachedConfig = defaultConfig;
|
|
45
|
+
await fs.unlink(path.join(baseDir, CONFIG_FILE)).catch(() => {
|
|
46
|
+
/* ignore */
|
|
47
|
+
});
|
|
48
|
+
await saveConfig(baseDir, {});
|
|
49
|
+
}
|
|
50
|
+
export async function clearBuildLogs(baseDir, type) {
|
|
51
|
+
const config = cachedConfig || defaultConfig;
|
|
52
|
+
const ops = [];
|
|
53
|
+
if (type === 'local' || type === 'both') {
|
|
54
|
+
ops.push(fs.unlink(path.join(baseDir, config.localBuildLog)).catch(() => {
|
|
55
|
+
/* ignore */
|
|
56
|
+
}));
|
|
57
|
+
}
|
|
58
|
+
if (type === 'shared' || type === 'both') {
|
|
59
|
+
ops.push(fs.unlink(path.join(baseDir, config.buildLog)).catch(() => {
|
|
60
|
+
/* ignore */
|
|
61
|
+
}));
|
|
62
|
+
}
|
|
63
|
+
await Promise.all(ops);
|
|
64
|
+
}
|
|
79
65
|
//# sourceMappingURL=config.js.map
|
package/dist/utils/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -60,5 +60,17 @@ export async function testConnection() {
|
|
|
60
60
|
return false;
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
|
-
|
|
63
|
+
function cleanup() {
|
|
64
|
+
// Sync disconnect since exit handlers must be synchronous
|
|
65
|
+
try {
|
|
66
|
+
void disconnect();
|
|
67
|
+
}
|
|
68
|
+
catch (e) {
|
|
69
|
+
logger.error(`Error disconnecting from database: ${String(e)}`);
|
|
70
|
+
process.exit(1);
|
|
71
|
+
}
|
|
72
|
+
process.exit(0);
|
|
73
|
+
}
|
|
74
|
+
process.on('SIGTERM', cleanup);
|
|
75
|
+
process.on('SIGINT', cleanup);
|
|
64
76
|
//# sourceMappingURL=databaseConnection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"databaseConnection.js","sourceRoot":"","sources":["../../src/utils/databaseConnection.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,IAAI,IAAyB,CAAC;AAC9B,IAAI,kBAAkB,GAAG,CAAC,CAAC;AAC3B,MAAM,WAAW,GAAG,CAAC,CAAC;AACtB,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC;AAEhC,KAAK,UAAU,UAAU;IACvB,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9C,OAAO,IAAI,EAAE,CAAC,IAAI,CAAC;QACjB,gBAAgB,EAAE,MAAM,CAAC,YAAY;QACrC,uBAAuB,EAAE,GAAG;KAC7B,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,MAA6B;IAC1D,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;IACvC,kBAAkB,EAAE,CAAC;IACrB,MAAM,CAAC,KAAK,CAAC,sBAAsB,kBAAkB,EAAE,CAAC,CAAC;IAEzD,IAAI,CAAC;QACH,IAAI,CAAC,IAAI;YAAE,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;QACrC,OAAO,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,kBAAkB,GAAG,WAAW,EAAE,CAAC;YACrC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,CAAC,IAAI,CAAC,kCAAkC,WAAW,OAAO,CAAC,CAAC;YACpE,CAAC;YACD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;YAC/D,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,oCAAoC,WAAW,cAAc,GAAG,EAAE,CAAC,CAAC;IACtF,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,MAA6B;IACzD,kBAAkB,GAAG,CAAC,CAAC;IACvB,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,IAAI,IAAI,EAAE,CAAC;QACT,iDAAiD;QACjD,kCAAkC;QAClC,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;YACvC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;QACjE,CAAC;QACD,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,IAAI,GAAG,SAAS,CAAC;IACnB,CAAC;IACD,OAAO;AACT,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,EAAE,CAAC;QAC/B,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC/B,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,OAAO,CAAC,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"databaseConnection.js","sourceRoot":"","sources":["../../src/utils/databaseConnection.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@t1mmen/srtd",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Supabase Repeatable Template Definitions (srtd): 🪄 Live-reloading SQL templates for Supabase DX. Make your database changes reviewable and migrations maintainable! 🚀",
|
|
6
6
|
"bin": {
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"dev": "tsc --watch",
|
|
23
23
|
"test": "vitest",
|
|
24
24
|
"test:coverage": "vitest run --coverage --reporter=junit --outputFile=test-report.junit.xml",
|
|
25
|
-
"start": "
|
|
25
|
+
"start": "tsx src/cli.tsx",
|
|
26
26
|
"repomix": "mkdir build; npx repomix",
|
|
27
27
|
"supabase:start": "npx supabase start",
|
|
28
28
|
"supabase:stop": "npx supabase stop"
|