@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.
@@ -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
- // import { CLIConfig } from '../types.js';
41
- // import path from 'path';
42
- // import fs from 'fs/promises';
43
- // import { CONFIG_FILE } from '../constants.js';
44
- // let config: CLIConfig;
45
- // export async function getConfig(baseDir: string): Promise<CLIConfig> {
46
- // if (!config) {
47
- // config = await getConfig(baseDir);
48
- // }
49
- // return config;
50
- // }
51
- // const defaultConfig: CLIConfig = {
52
- // wipIndicator: '.wip',
53
- // filter: '**/*.sql',
54
- // banner: 'You very likely **DO NOT** want to manually edit this generated file.',
55
- // footer: '',
56
- // wrapInTransaction: true,
57
- // templateDir: 'supabase/migrations-templates',
58
- // migrationDir: 'supabase/migrations',
59
- // buildLog: 'supabase/migrations-templates/.buildlog.json',
60
- // localBuildLog: 'supabase/migrations-templates/.buildlog.local.json',
61
- // pgConnection: 'postgresql://postgres:postgres@localhost:54322/postgres',
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
@@ -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;AAG9C,MAAM,aAAa,GAAc;IAC/B,YAAY,EAAE,MAAM;IACpB,eAAe,EAAE,MAAM;IACvB,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,uEAAuE;IAC/E,MAAM,EAAE,EAAE;IACV,iBAAiB,EAAE,IAAI;IACvB,WAAW,EAAE,+BAA+B;IAC5C,YAAY,EAAE,qBAAqB;IACnC,QAAQ,EAAE,mDAAmD;IAC7D,aAAa,EAAE,yDAAyD;IACxE,YAAY,EAAE,yDAAyD;CACxE,CAAC;AAEF,IAAI,YAAmC,CAAC;AAExC,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IACzD,IAAI,YAAY;QAAE,OAAO,YAAY,CAAC;IAEtC,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACvD,YAAY,GAAG,EAAE,GAAG,aAAa,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,YAAY,GAAG,aAAa,CAAC;IAC/B,CAAC;IAED,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAe,EAAE,MAA0B;IAC1E,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,EAAE,GAAG,aAAa,EAAE,GAAG,MAAM,EAAE,CAAC;IACpD,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACrE,YAAY,GAAG,WAAW,CAAC;AAC7B,CAAC;AAED,2CAA2C;AAC3C,2BAA2B;AAC3B,gCAAgC;AAChC,iDAAiD;AAEjD,yBAAyB;AAEzB,yEAAyE;AACzE,mBAAmB;AACnB,yCAAyC;AACzC,MAAM;AACN,mBAAmB;AACnB,IAAI;AAEJ,qCAAqC;AACrC,0BAA0B;AAC1B,wBAAwB;AACxB,qFAAqF;AACrF,gBAAgB;AAChB,6BAA6B;AAC7B,kDAAkD;AAClD,yCAAyC;AACzC,8DAA8D;AAC9D,yEAAyE;AACzE,6EAA6E;AAC7E,KAAK;AAEL,sEAAsE;AACtE,0CAA0C;AAC1C,wDAAwD;AACxD,UAAU;AACV,8DAA8D;AAC9D,8CAA8C;AAC9C,kDAAkD;AAClD,cAAc;AACd,4BAA4B;AAC5B,MAAM;AACN,IAAI;AAEJ,iGAAiG;AACjG,wDAAwD;AACxD,yDAAyD;AACzD,0EAA0E;AAC1E,IAAI"}
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
- process.on('exit', async () => await disconnect());
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,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,UAAU,EAAE,CAAC,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.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": "npm run build && npm link --force && chmod u+x ./dist/cli.js && srtd",
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"