@t1mmen/srtd 0.2.1 → 0.3.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.
Files changed (44) hide show
  1. package/README.md +148 -87
  2. package/dist/__tests__/watch.test.js +0 -1
  3. package/dist/__tests__/watch.test.js.map +1 -1
  4. package/dist/cli.js +3 -0
  5. package/dist/cli.js.map +1 -1
  6. package/dist/commands/_app.js +22 -2
  7. package/dist/commands/_app.js.map +1 -1
  8. package/dist/commands/apply.d.ts +13 -1
  9. package/dist/commands/apply.js +18 -6
  10. package/dist/commands/apply.js.map +1 -1
  11. package/dist/commands/build.d.ts +13 -1
  12. package/dist/commands/build.js +14 -4
  13. package/dist/commands/build.js.map +1 -1
  14. package/dist/commands/index.js +20 -10
  15. package/dist/commands/index.js.map +1 -1
  16. package/dist/commands/register.js +9 -6
  17. package/dist/commands/register.js.map +1 -1
  18. package/dist/commands/watch.js +105 -117
  19. package/dist/commands/watch.js.map +1 -1
  20. package/dist/components/Branding.js +5 -4
  21. package/dist/components/Branding.js.map +1 -1
  22. package/dist/components/Quittable.d.ts +6 -0
  23. package/dist/components/Quittable.js +36 -0
  24. package/dist/components/Quittable.js.map +1 -0
  25. package/dist/hooks/useDatabaseConnection.d.ts +7 -0
  26. package/dist/hooks/useDatabaseConnection.js +68 -0
  27. package/dist/hooks/useDatabaseConnection.js.map +1 -0
  28. package/dist/hooks/useTemplateManager.d.ts +24 -0
  29. package/dist/hooks/useTemplateManager.js +141 -0
  30. package/dist/hooks/useTemplateManager.js.map +1 -0
  31. package/dist/lib/templateManager.d.ts +3 -3
  32. package/dist/lib/templateManager.js +24 -17
  33. package/dist/lib/templateManager.js.map +1 -1
  34. package/dist/types.d.ts +2 -1
  35. package/dist/utils/config.js +1 -0
  36. package/dist/utils/config.js.map +1 -1
  37. package/dist/utils/databaseConnection.d.ts +5 -1
  38. package/dist/utils/databaseConnection.js +27 -8
  39. package/dist/utils/databaseConnection.js.map +1 -1
  40. package/dist/utils/logger.d.ts +1 -0
  41. package/package.json +13 -8
  42. package/dist/commands/help.d.ts +0 -1
  43. package/dist/commands/help.js +0 -2
  44. package/dist/commands/help.js.map +0 -1
@@ -0,0 +1,141 @@
1
+ // src/hooks/useTemplateManager.ts
2
+ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
3
+ import { TemplateManager } from '../lib/templateManager.js';
4
+ import { getConfig } from '../utils/config.js';
5
+ export function useTemplateManager(cwd = process.cwd()) {
6
+ const [templates, setTemplates] = useState([]);
7
+ const [isLoading, setIsLoading] = useState(true);
8
+ const [errors, setErrors] = useState(new Map());
9
+ const [updates, setUpdates] = useState([]);
10
+ const [templateDir, setTemplateDir] = useState();
11
+ const managerRef = useRef();
12
+ const latestPath = useRef();
13
+ const mounted = useRef(true);
14
+ const updateTimeoutRef = useRef();
15
+ const sortedTemplates = useMemo(() => {
16
+ return [...templates].sort((a, b) => {
17
+ const dateA = a.buildState.lastAppliedDate || '';
18
+ const dateB = b.buildState.lastAppliedDate || '';
19
+ if (dateA !== dateB) {
20
+ return dateA.localeCompare(dateB);
21
+ }
22
+ const folderA = a.path.split('/').slice(0, -1).join('/');
23
+ const folderB = b.path.split('/').slice(0, -1).join('/');
24
+ return folderA.localeCompare(folderB);
25
+ });
26
+ }, [templates]);
27
+ const stats = useMemo(() => ({
28
+ total: templates.length,
29
+ needsBuild: templates.filter(t => !t.buildState.lastBuildDate || t.currentHash !== t.buildState.lastBuildHash).length,
30
+ recentlyChanged: updates.filter(u => {
31
+ const timestamp = new Date(u.timestamp);
32
+ const fiveMinutesAgo = new Date(Date.now() - 5 * 60 * 1000);
33
+ return timestamp > fiveMinutesAgo;
34
+ }).length,
35
+ errors: errors.size,
36
+ }), [templates, updates, errors]);
37
+ const updateTemplate = useCallback(async (template, type, errorMsg) => {
38
+ if (!mounted.current || !managerRef.current)
39
+ return;
40
+ if (updateTimeoutRef.current) {
41
+ clearTimeout(updateTimeoutRef.current);
42
+ }
43
+ updateTimeoutRef.current = setTimeout(async () => {
44
+ try {
45
+ const status = await managerRef.current?.getTemplateStatus(template.path);
46
+ if (status) {
47
+ latestPath.current = status.path;
48
+ setTemplates(prev => {
49
+ const rest = prev.filter(t => t.path !== status.path);
50
+ return [...rest, status];
51
+ });
52
+ if (type === 'error' && errorMsg) {
53
+ setErrors(prev => new Map(prev).set(template.path, errorMsg));
54
+ }
55
+ else if (type === 'applied') {
56
+ setErrors(prev => {
57
+ const next = new Map(prev);
58
+ next.delete(template.path);
59
+ return next;
60
+ });
61
+ }
62
+ const update = {
63
+ type,
64
+ template: status,
65
+ timestamp: new Date().toISOString(),
66
+ error: errorMsg,
67
+ path: template.path,
68
+ };
69
+ setUpdates(prev => [update, ...prev]
70
+ .filter((u, i, arr) => i === arr.findIndex(t => t.path === u.path && t.type === u.type))
71
+ .slice(0, 50));
72
+ }
73
+ }
74
+ catch (err) {
75
+ const errorMessage = err instanceof Error ? err.message : String(err);
76
+ console.error('Failed to update template:', errorMessage);
77
+ }
78
+ }, 500); // Todo: performance should be looked at here, likely
79
+ }, []);
80
+ useEffect(() => {
81
+ let watcher;
82
+ async function init() {
83
+ try {
84
+ setIsLoading(true);
85
+ const config = await getConfig(cwd);
86
+ setTemplateDir(config.templateDir);
87
+ managerRef.current = await TemplateManager.create(cwd, { silent: true });
88
+ async function loadTemplates() {
89
+ const initialTemplates = await managerRef.current?.findTemplates();
90
+ const statuses = await Promise.all(initialTemplates?.map(t => managerRef.current?.getTemplateStatus(t)) ?? []);
91
+ const validStatuses = statuses.filter((s) => s !== null);
92
+ const needsApply = validStatuses.some(t => !t.buildState.lastAppliedHash || t.currentHash !== t.buildState.lastAppliedHash);
93
+ if (mounted.current) {
94
+ setTemplates(validStatuses);
95
+ setIsLoading(false);
96
+ if (needsApply) {
97
+ await managerRef.current?.processTemplates({ apply: true });
98
+ }
99
+ }
100
+ }
101
+ await loadTemplates();
102
+ watcher = await managerRef.current?.watch();
103
+ managerRef.current?.on('templateAdded', () => void loadTemplates());
104
+ managerRef.current?.on('templateChanged', t => void updateTemplate(t, 'changed'));
105
+ managerRef.current?.on('templateApplied', t => void updateTemplate(t, 'applied'));
106
+ managerRef.current?.on('templateError', ({ template, error: err }) => {
107
+ const errorMsg = err instanceof Error
108
+ ? err.message
109
+ : typeof err === 'object' && err !== null
110
+ ? JSON.stringify(err)
111
+ : String(err);
112
+ void updateTemplate(template, 'error', errorMsg);
113
+ });
114
+ }
115
+ catch (err) {
116
+ if (mounted.current) {
117
+ setErrors(new Map().set('global', err instanceof Error ? err.message : String(err)));
118
+ setIsLoading(false);
119
+ }
120
+ }
121
+ }
122
+ void init();
123
+ return () => {
124
+ mounted.current = false;
125
+ watcher?.close();
126
+ if (updateTimeoutRef.current) {
127
+ clearTimeout(updateTimeoutRef.current);
128
+ }
129
+ };
130
+ }, [cwd, updateTemplate]);
131
+ return {
132
+ templates: sortedTemplates,
133
+ updates,
134
+ stats,
135
+ isLoading,
136
+ errors,
137
+ latestPath: latestPath.current,
138
+ templateDir,
139
+ };
140
+ }
141
+ //# sourceMappingURL=useTemplateManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTemplateManager.js","sourceRoot":"","sources":["../../src/hooks/useTemplateManager.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import EventEmitter from 'node:events';
2
- import type { CLIResult, TemplateStatus } from '../types.js';
2
+ import type { ProcessedTemplateResult, TemplateStatus } from '../types.js';
3
3
  export declare class TemplateManager extends EventEmitter {
4
4
  private baseDir;
5
5
  private buildLog;
@@ -21,12 +21,12 @@ export declare class TemplateManager extends EventEmitter {
21
21
  watch(): Promise<{
22
22
  close: () => void;
23
23
  }>;
24
- applyTemplate(templatePath: string): Promise<CLIResult>;
24
+ applyTemplate(templatePath: string): Promise<ProcessedTemplateResult>;
25
25
  buildTemplate(templatePath: string, force?: boolean): Promise<void>;
26
26
  private log;
27
27
  processTemplates(options: {
28
28
  apply?: boolean;
29
29
  generateFiles?: boolean;
30
30
  force?: boolean;
31
- }): Promise<CLIResult>;
31
+ }): Promise<ProcessedTemplateResult>;
32
32
  }
@@ -5,6 +5,7 @@ import { glob } from 'glob';
5
5
  import { applyMigration } from '../utils/applyMigration.js';
6
6
  import { calculateMD5 } from '../utils/calculateMD5.js';
7
7
  import { getConfig } from '../utils/config.js';
8
+ import { testConnection } from '../utils/databaseConnection.js';
8
9
  import { getNextTimestamp } from '../utils/getNextTimestamp.js';
9
10
  import { isWipTemplate } from '../utils/isWipTemplate.js';
10
11
  import { loadBuildLog } from '../utils/loadBuildLog.js';
@@ -96,7 +97,7 @@ export class TemplateManager extends EventEmitter {
96
97
  const chokidar = await import('chokidar');
97
98
  const templatePath = path.join(this.baseDir, this.config.templateDir);
98
99
  const watcher = chokidar.watch(templatePath, {
99
- ignoreInitial: true,
100
+ ignoreInitial: false,
100
101
  depth: 0,
101
102
  ignored: /(^|[\\])\../,
102
103
  });
@@ -147,12 +148,14 @@ export class TemplateManager extends EventEmitter {
147
148
  return;
148
149
  }
149
150
  const timestamp = await getNextTimestamp(this.buildLog);
150
- const migrationName = `${timestamp}_tmpl-${template.name}.sql`;
151
+ const prefix = this.config.migrationPrefix ? `${this.config.migrationPrefix}-` : '';
152
+ const migrationName = `${timestamp}_${prefix}${template.name}.sql`;
151
153
  const migrationPath = path.join(this.config.migrationDir, migrationName);
152
- const header = `-- Generated from template: ${this.config.templateDir}/${template.name}.sql\n`;
154
+ const header = `-- Generated with srtd from template: ${this.config.templateDir}/${template.name}.sql\n`;
153
155
  const banner = this.config.banner ? `-- ${this.config.banner}\n` : '\n';
154
- const footer = `${this.config.footer}\n-- Last built: ${this.buildLog.templates[relPath]?.lastBuildDate || 'Never'}`;
155
- const safeContent = this.config.wrapInTransaction ? `BEGIN;\n${content}\nCOMMIT;` : content;
156
+ const lastBuildAt = this.buildLog.templates[relPath]?.lastMigrationFile;
157
+ const footer = `${this.config.footer}\n-- Last built: ${lastBuildAt || 'Never'}\n-- Built with https://github.com/t1mmen/srtd\n`;
158
+ const safeContent = this.config.wrapInTransaction ? `BEGIN;\n\n${content}\n\nCOMMIT;` : content;
156
159
  const migrationContent = `${header}${banner}\n${safeContent}\n${footer}`;
157
160
  await fs.writeFile(path.resolve(this.baseDir, migrationPath), migrationContent);
158
161
  this.buildLog.templates[relPath] = {
@@ -166,23 +169,26 @@ export class TemplateManager extends EventEmitter {
166
169
  await this.saveBuildLogs();
167
170
  this.emit('templateBuilt', template);
168
171
  }
169
- log(msg, type = 'info') {
172
+ log(msg, logLevel = 'info') {
170
173
  if (this.silent)
171
174
  return;
172
- if (type === 'error')
173
- logger.error(msg);
174
- else if (type === 'success')
175
- logger.success(msg);
176
- else if (type === 'skip')
177
- logger.skip(msg);
178
- else
179
- logger.info(msg);
175
+ logger[logLevel](msg);
180
176
  }
181
177
  async processTemplates(options) {
182
178
  const templates = await this.findTemplates();
183
179
  const result = { errors: [], applied: [] };
180
+ this.log('\n');
184
181
  if (options.apply) {
185
- this.log('Applying changes...');
182
+ const isConnected = await testConnection();
183
+ if (isConnected) {
184
+ this.log('Connected to database', 'success');
185
+ }
186
+ else {
187
+ this.log('Failed to connect to database, cannot proceed. Is Supabase running?', 'error');
188
+ return result;
189
+ }
190
+ const action = options.force ? 'Force applying' : 'Applying';
191
+ this.log(`${action} changed templates to local database...`, 'success');
186
192
  let hasChanges = false;
187
193
  for (const templatePath of templates) {
188
194
  const template = await this.getTemplateStatus(templatePath);
@@ -196,7 +202,7 @@ export class TemplateManager extends EventEmitter {
196
202
  }
197
203
  }
198
204
  if (!hasChanges) {
199
- this.log('No changes to apply');
205
+ this.log('No changes to apply', 'skip');
200
206
  }
201
207
  else if (result.errors.length > 0) {
202
208
  this.log(`${result.errors.length} template(s) failed to apply`, 'error');
@@ -211,6 +217,7 @@ export class TemplateManager extends EventEmitter {
211
217
  if (options.generateFiles) {
212
218
  let built = 0;
213
219
  let skipped = 0;
220
+ this.log('Building migration files from templates...', 'success');
214
221
  for (const templatePath of templates) {
215
222
  const isWip = await isWipTemplate(templatePath);
216
223
  if (!isWip) {
@@ -228,7 +235,7 @@ export class TemplateManager extends EventEmitter {
228
235
  this.log(`Generated ${built} migration file(s)`, 'success');
229
236
  }
230
237
  else if (skipped > 0) {
231
- this.log('No changes to build');
238
+ this.log('No new changes to build', 'skip');
232
239
  }
233
240
  }
234
241
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"templateManager.js","sourceRoot":"","sources":["../../src/lib/templateManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"templateManager.js","sourceRoot":"","sources":["../../src/lib/templateManager.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -27,11 +27,12 @@ export interface CLIConfig {
27
27
  footer: string;
28
28
  templateDir: string;
29
29
  migrationDir: string;
30
+ migrationPrefix?: string;
30
31
  buildLog: string;
31
32
  localBuildLog: string;
32
33
  pgConnection: string;
33
34
  }
34
- export interface CLIResult {
35
+ export interface ProcessedTemplateResult {
35
36
  errors: MigrationError[];
36
37
  applied: string[];
37
38
  }
@@ -3,6 +3,7 @@ import path from 'node:path';
3
3
  import { CONFIG_FILE } from '../constants.js';
4
4
  const defaultConfig = {
5
5
  wipIndicator: '.wip',
6
+ migrationPrefix: 'srtd',
6
7
  filter: '**/*.sql',
7
8
  banner: 'You very likely **DO NOT** want to manually edit this generated file.',
8
9
  footer: '',
@@ -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,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":"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,3 +1,7 @@
1
1
  import pg from 'pg';
2
- export declare function connect(): Promise<pg.PoolClient>;
2
+ export declare const RETRY_DELAY = 1000;
3
+ export declare function connect(params?: {
4
+ silent?: boolean;
5
+ }): Promise<pg.PoolClient>;
3
6
  export declare function disconnect(): Promise<void>;
7
+ export declare function testConnection(): Promise<boolean>;
@@ -1,19 +1,20 @@
1
- // utils/db.connection.ts
1
+ // utils/databaseConnection.ts
2
2
  import pg from 'pg';
3
3
  import { getConfig } from './config.js';
4
4
  import { logger } from './logger.js';
5
5
  let pool;
6
6
  let connectionAttempts = 0;
7
7
  const MAX_RETRIES = 3;
8
- const RETRY_DELAY = 1000;
8
+ export const RETRY_DELAY = 1000;
9
9
  async function createPool() {
10
10
  const config = await getConfig(process.cwd());
11
11
  return new pg.Pool({
12
12
  connectionString: config.pgConnection,
13
- connectionTimeoutMillis: 5000,
13
+ connectionTimeoutMillis: 500,
14
14
  });
15
15
  }
16
- async function retryConnection() {
16
+ async function retryConnection(params) {
17
+ const { silent = true } = params || {};
17
18
  connectionAttempts++;
18
19
  logger.debug(`Connection attempt ${connectionAttempts}`);
19
20
  try {
@@ -23,23 +24,41 @@ async function retryConnection() {
23
24
  }
24
25
  catch (err) {
25
26
  if (connectionAttempts < MAX_RETRIES) {
26
- logger.warn(`Connection failed, retrying in ${RETRY_DELAY}ms...`);
27
+ if (!silent) {
28
+ logger.warn(`Connection failed, retrying in ${RETRY_DELAY}ms...`);
29
+ }
27
30
  await new Promise(resolve => setTimeout(resolve, RETRY_DELAY));
28
- return retryConnection();
31
+ return retryConnection(params);
29
32
  }
30
33
  throw new Error(`Database connection failed after ${MAX_RETRIES} attempts: ${err}`);
31
34
  }
32
35
  }
33
- export async function connect() {
36
+ export async function connect(params) {
34
37
  connectionAttempts = 0;
35
- return retryConnection();
38
+ return retryConnection(params);
36
39
  }
37
40
  export async function disconnect() {
38
41
  if (pool) {
42
+ // Add poolPendingCount check to avoid hanging on
43
+ // pending queries during shutdown
44
+ if (pool.totalCount !== pool.idleCount) {
45
+ await new Promise(resolve => setTimeout(resolve, RETRY_DELAY));
46
+ }
39
47
  await pool.end();
40
48
  pool = undefined;
41
49
  }
42
50
  return;
43
51
  }
52
+ export async function testConnection() {
53
+ try {
54
+ const client = await connect();
55
+ await client.query('SELECT 1');
56
+ client.release();
57
+ return true;
58
+ }
59
+ catch {
60
+ return false;
61
+ }
62
+ }
44
63
  process.on('exit', async () => await disconnect());
45
64
  //# sourceMappingURL=databaseConnection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"databaseConnection.js","sourceRoot":"","sources":["../../src/utils/databaseConnection.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,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,WAAW,GAAG,IAAI,CAAC;AAEzB,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,IAAI;KAC9B,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,eAAe;IAC5B,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,MAAM,CAAC,IAAI,CAAC,kCAAkC,WAAW,OAAO,CAAC,CAAC;YAClE,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;YAC/D,OAAO,eAAe,EAAE,CAAC;QAC3B,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,oCAAoC,WAAW,cAAc,GAAG,EAAE,CAAC,CAAC;IACtF,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO;IAC3B,kBAAkB,GAAG,CAAC,CAAC;IACvB,OAAO,eAAe,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACjB,IAAI,GAAG,SAAS,CAAC;IACnB,CAAC;IACD,OAAO;AACT,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":"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"}
@@ -6,3 +6,4 @@ export declare const logger: {
6
6
  skip: (msg: string) => void;
7
7
  debug: (msg: string) => false | void | "" | undefined;
8
8
  };
9
+ export type LogLevel = keyof typeof logger;
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@t1mmen/srtd",
3
- "version": "0.2.1",
3
+ "version": "0.3.0",
4
4
  "license": "MIT",
5
- "description": "Supabase Repeatable Template Definitions (srtd) is a powerful CLI for managing repeatable SQL templates tailored for Postgres features that require full redefinition, such as functions, stored procedures, and RLS policies. Streamline your development with live reloads and simplified workflows.",
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": {
7
7
  "srtd": "dist/cli.js"
8
8
  },
@@ -11,6 +11,7 @@
11
11
  "node": ">=20"
12
12
  },
13
13
  "scripts": {
14
+ "clean": "rm -rf dist; rm -rf build; rm -rf coverage; npm run supabase:stop",
14
15
  "changeset": "changeset",
15
16
  "version": "changeset version",
16
17
  "release": "npm run build && changeset publish",
@@ -20,9 +21,11 @@
20
21
  "format": "biome format . --write",
21
22
  "dev": "tsc --watch",
22
23
  "test": "vitest",
23
- "test:coverage": "vitest run --coverage",
24
- "start": "npm run build && npm link && chmod u+x ./dist/cli.js && srtd",
25
- "repomix": "npx repomix"
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",
26
+ "repomix": "mkdir build; npx repomix",
27
+ "supabase:start": "npx supabase start",
28
+ "supabase:stop": "npx supabase stop"
26
29
  },
27
30
  "files": [
28
31
  "dist"
@@ -70,22 +73,24 @@
70
73
  "pastel": "^3.0.0",
71
74
  "pg": "^8.13.1",
72
75
  "react": "^18.3.0",
76
+ "update-notifier": "^7.3.1",
73
77
  "zod": "^3.24.1"
74
78
  },
75
79
  "devDependencies": {
76
80
  "@biomejs/biome": "1.9.4",
77
81
  "@changesets/cli": "^2.27.11",
78
82
  "@sindresorhus/tsconfig": "^7.0.0",
83
+ "@types/glob": "^8.1.0",
84
+ "@types/node": "^20.17.10",
79
85
  "@types/pg": "^8.11.10",
80
86
  "@types/react": "^18.3.0",
87
+ "@types/update-notifier": "^6.0.8",
81
88
  "@vitest/coverage-v8": "^2.1.8",
82
89
  "chalk": "^5.4.1",
83
90
  "ink-testing-library": "^4.0.0",
84
91
  "lefthook": "^1.10.1",
85
92
  "tsx": "^4.19.2",
86
93
  "typescript": "^5.7.2",
87
- "vitest": "^2.1.8",
88
- "@types/glob": "^8.1.0",
89
- "@types/node": "^20.17.10"
94
+ "vitest": "^2.1.8"
90
95
  }
91
96
  }
@@ -1 +0,0 @@
1
- export {};
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=help.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/commands/help.tsx"],"names":[],"mappings":""}