@t1mmen/srtd 0.4.3 โ†’ 0.4.5

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 (65) hide show
  1. package/README.md +45 -17
  2. package/dist/__tests__/apply.test.js +2 -2
  3. package/dist/__tests__/build.test.js +4 -4
  4. package/dist/__tests__/build.test.js.map +1 -1
  5. package/dist/__tests__/promote.test.d.ts +1 -0
  6. package/dist/__tests__/promote.test.js +9 -0
  7. package/dist/__tests__/promote.test.js.map +1 -0
  8. package/dist/__tests__/vitest.setup.js +2 -1
  9. package/dist/__tests__/vitest.setup.js.map +1 -1
  10. package/dist/__tests__/watch.test.js +2 -0
  11. package/dist/__tests__/watch.test.js.map +1 -1
  12. package/dist/commands/_app.js +0 -8
  13. package/dist/commands/_app.js.map +1 -1
  14. package/dist/commands/apply.js +6 -9
  15. package/dist/commands/apply.js.map +1 -1
  16. package/dist/commands/build.js +6 -11
  17. package/dist/commands/build.js.map +1 -1
  18. package/dist/commands/clear.js +10 -2
  19. package/dist/commands/clear.js.map +1 -1
  20. package/dist/commands/index.js +11 -12
  21. package/dist/commands/index.js.map +1 -1
  22. package/dist/commands/init.js +7 -2
  23. package/dist/commands/init.js.map +1 -1
  24. package/dist/commands/promote.d.ts +8 -0
  25. package/dist/commands/promote.js +159 -0
  26. package/dist/commands/promote.js.map +1 -0
  27. package/dist/commands/register.d.ts +1 -1
  28. package/dist/commands/register.js +62 -16
  29. package/dist/commands/register.js.map +1 -1
  30. package/dist/commands/watch.js +25 -28
  31. package/dist/commands/watch.js.map +1 -1
  32. package/dist/components/Branding.js +1 -1
  33. package/dist/components/Branding.js.map +1 -1
  34. package/dist/components/ProcessingResults.js +26 -14
  35. package/dist/components/ProcessingResults.js.map +1 -1
  36. package/dist/components/Quittable.js +6 -4
  37. package/dist/components/Quittable.js.map +1 -1
  38. package/dist/components/StatBadge.d.ts +6 -0
  39. package/dist/components/StatBadge.js +14 -0
  40. package/dist/components/StatBadge.js.map +1 -0
  41. package/dist/components/TimeSince.js +9 -5
  42. package/dist/components/TimeSince.js.map +1 -1
  43. package/dist/hooks/useDatabaseConnection.js +2 -1
  44. package/dist/hooks/useDatabaseConnection.js.map +1 -1
  45. package/dist/hooks/useFullscreen.d.ts +1 -0
  46. package/dist/hooks/useFullscreen.js +18 -0
  47. package/dist/hooks/useFullscreen.js.map +1 -0
  48. package/dist/hooks/useTemplateProcessor.d.ts +1 -0
  49. package/dist/hooks/useTemplateProcessor.js +82 -47
  50. package/dist/hooks/useTemplateProcessor.js.map +1 -1
  51. package/dist/lib/templateManager.js +41 -26
  52. package/dist/lib/templateManager.js.map +1 -1
  53. package/dist/lib/templateManager.test.js +794 -488
  54. package/dist/lib/templateManager.test.js.map +1 -1
  55. package/dist/utils/applyMigrations.test.js +4 -1
  56. package/dist/utils/applyMigrations.test.js.map +1 -1
  57. package/dist/utils/databaseConnection.js +21 -19
  58. package/dist/utils/databaseConnection.js.map +1 -1
  59. package/dist/utils/databaseConnection.test.js +1 -4
  60. package/dist/utils/databaseConnection.test.js.map +1 -1
  61. package/dist/utils/logger.js +6 -5
  62. package/dist/utils/logger.js.map +1 -1
  63. package/dist/utils/registerTemplate.js +1 -2
  64. package/dist/utils/registerTemplate.js.map +1 -1
  65. package/package.json +5 -2
package/README.md CHANGED
@@ -4,13 +4,15 @@
4
4
 
5
5
  > Live-reloading SQL templates for [Supabase](https://supabase.com) projects. DX supercharged! ๐Ÿš€
6
6
 
7
- ![NPM Version](https://img.shields.io/npm/v/%40t1mmen%2Fsrtd)
7
+ [![NPM Version](https://img.shields.io/npm/v/%40t1mmen%2Fsrtd)](https://www.npmjs.com/package/@t1mmen/srtd)
8
+ [![Downloads](https://img.shields.io/npm/dt/%40t1mmen%2Fsrtd)](https://www.npmjs.com/package/@t1mmen/srtd)
8
9
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
9
10
  [![CI/CD](https://github.com/t1mmen/srtd/actions/workflows/ci.yml/badge.svg)](https://github.com/t1mmen/srtd/actions/workflows/ci.yml)
10
11
  [![codecov](https://codecov.io/gh/t1mmen/srtd/graph/badge.svg?token=CIMAZ55KCJ)](https://codecov.io/gh/t1mmen/srtd)
11
12
 
12
13
 
13
- [![screenshot of srtd](./readme-screenshot.png)](./readme-screenshot.png)
14
+ [![video demo](./readme-demo.gif)](./readme-demo.gif)
15
+
14
16
 
15
17
  `srtd` enhances the [Supabase](https://supabase.com) DX by adding live-reloading SQL templates into local db. The single-source-of-truth template โžก๏ธ migrations system brings sanity to code reviews, making `git blame` useful.
16
18
 
@@ -28,6 +30,8 @@ I spent [nearly two years looking](https://news.ycombinator.com/item?id=37755076
28
30
 
29
31
  Say hello to `srtd`.
30
32
 
33
+ [![screenshot of srtd](./readme-screenshot.png)](./readme-screenshot.png)
34
+
31
35
  ## Key Features โœจ
32
36
 
33
37
  - **Live Reload**: Changes to your SQL templates instantly update your local database
@@ -62,7 +66,7 @@ npx @t1mmen/srtd
62
66
 
63
67
  ```bash
64
68
  cd your-supabase-project
65
- srtd init
69
+ npx @t1mmen/srtd init # Creates srtd.config.json, not required
66
70
  ```
67
71
 
68
72
  ### Create Your First Template
@@ -82,16 +86,20 @@ $$ LANGUAGE plpgsql;
82
86
 
83
87
  1. Start watch mode:
84
88
  ```bash
85
- srtd watch # Changes auto-apply to local database
89
+ npx @t1mmen/srtd watch # Changes auto-apply to local database
86
90
  ```
87
91
 
88
92
  2. When ready to deploy:
89
93
  ```bash
90
- srtd build # Creates timestamped migration file
91
- supabase migration up # Apply using Supabase CLI
94
+ npx @t1mmen/srtd build # Creates timestamped migration file
95
+ supabase migration up # Apply using Supabase CLI
92
96
  ```
93
97
 
94
98
 
99
+ > [!INFO]
100
+ > To reduce noise in PR's, consider adding `migration-templates/*srtd*.sql linguist-generated=true` to your [`.gitattributes` file.](https://docs.github.com/en/repositories/working-with-files/managing-files/customizing-how-changed-files-appear-on-github) (unless you manually edit the generated files)
101
+
102
+
95
103
  ## The Power of Templates ๐Ÿ’ช
96
104
 
97
105
  Without templates, the smallest change to a function would show up as a complete rewrite in your version control system. With templates, the diff is clear and concise.
@@ -183,13 +191,12 @@ Use regular [Supabase](https://supabase.com) migrations for these cases.
183
191
 
184
192
  ### Interactive Mode
185
193
 
186
- Running `srtd` without arguments opens an interactive menu:
187
-
188
- ### CLI Mode
194
+ Running `npx @t1mmen/srtd` without arguments opens an interactive menu:
189
195
 
190
196
  - ๐Ÿ—๏ธ `srtd build [--force]` - Generate migrations from templates
191
197
  - โ–ถ๏ธ `srtd apply [--force]` - Apply templates directly to local database
192
- - โœ๏ธ `srtd register [file.sql]` - Mark templates as already built
198
+ - โœ๏ธ `srtd register [file.sql...]` - Mark templates as already built
199
+ - ๐Ÿš€ `srtd promote - [file.sql ...]` - Promote WIP template to buildable templates
193
200
  - ๐Ÿ‘€ `srtd watch` - Watch and auto-apply changes
194
201
  - ๐Ÿงน `srtd clean` - Remove all logs and reset config
195
202
 
@@ -238,6 +245,11 @@ Add `.wip.sql` extension to prevent migration generation:
238
245
  my_function.wip.sql # Only applied locally, never built
239
246
  ```
240
247
 
248
+ Make a WIP templates buildable my renaming it, or using the `promote` command:
249
+ ```bash
250
+ npx @t1mmen/srtd promote my_function.wip.sql
251
+ ```
252
+
241
253
  ### Template State Management
242
254
 
243
255
  Two state tracking files:
@@ -246,13 +258,14 @@ Two state tracking files:
246
258
 
247
259
  ### Register Existing Objects
248
260
 
249
- Import existing database objects:
261
+ Registering a template is useful when you're creating templates for what is already in your database. This avoids generating migrations on `build` (until they're changed)
262
+
250
263
  ```bash
251
264
  # Register specific template
252
- srtd register my_function.sql
265
+ npx @t1mmen/srtd register my_function.sql another_fn.sql
253
266
 
254
267
  # Interactive multi-select UI
255
- srtd register
268
+ npx @t1mmen/srtd register
256
269
  ```
257
270
 
258
271
  ## Development ๐Ÿ› ๏ธ
@@ -266,13 +279,15 @@ cd srtd
266
279
  npm install
267
280
 
268
281
  # Development
269
- npm run dev # Watch mode
270
- npm test # Run tests
271
- npm start # Build, link, run
282
+ npm run dev # Watch mode
283
+ npm test # Run tests
284
+ npm start # Run CLI
285
+ npm start:link # Build, npm link, and run CLI
272
286
 
273
287
  # Quality Checks
274
- npm run typecheck # Type checking
288
+ npm run typecheck # Type checking
275
289
  npm run lint # Lint and fix
290
+ npm run format # Format code
276
291
  npm run test:coverage # Test coverage
277
292
  ```
278
293
 
@@ -294,6 +309,19 @@ While feature-complete for our needs, we welcome:
294
309
 
295
310
  Note: New features are evaluated based on alignment with project scope.
296
311
 
312
+ ## Built With ๐Ÿ› ๏ธ
313
+
314
+ ### Terminal UI
315
+ - [Ink](https://github.com/vadimdemedes/ink) - React for CLI interfaces
316
+ - [Pastel](https://github.com/vadimdemedes/pastel) - Next-like framework for Ink
317
+ - [Figures](https://github.com/sindresorhus/figures) - Unicode symbols
318
+ - [Chokidar](https://github.com/paulmillr/chokidar) - File watcher
319
+ - [update-notifier](https://github.com/sindresorhus/update-notifier) - Version checks
320
+ - [Zod](https://zod.dev/) - Schema validation
321
+ - [Conf](https://github.com/sindresorhus/conf) - Config management
322
+ - [vhs](https://github.com/charmbracelet/vhs) - Video recording
323
+
324
+
297
325
  ## License
298
326
 
299
327
  MIT License - see [LICENSE](LICENSE) file.
@@ -59,11 +59,11 @@ describe('Apply Command', () => {
59
59
  });
60
60
  test('shows progress and success', async () => {
61
61
  const { lastFrame } = render(React.createElement(Apply, { options: { force: false } }));
62
- expect(lastFrame()).toMatch(/โœ“ test\.sql/);
62
+ expect(lastFrame()).toMatch(/โ–ถ test\.sql/);
63
63
  });
64
64
  test('handles force flag', async () => {
65
65
  const { lastFrame } = render(React.createElement(Apply, { options: { force: true } }));
66
- expect(lastFrame()).toMatch(/โœ“ test\.sql/);
66
+ expect(lastFrame()).toMatch(/โ–ถ test\.sql/);
67
67
  });
68
68
  });
69
69
  //# sourceMappingURL=apply.test.js.map
@@ -51,17 +51,17 @@ describe('Build Command', () => {
51
51
  });
52
52
  test('shows build progress and success', async () => {
53
53
  const { lastFrame } = render(React.createElement(Build, { options: { force: false } }));
54
- expect(lastFrame()).toMatch(/โœ“ test\.sql/);
54
+ expect(lastFrame()).toMatch(/Built:\s*\n\s*โœ” test\.sql/);
55
55
  });
56
56
  test('handles force flag', async () => {
57
57
  const { lastFrame } = render(React.createElement(Build, { options: { force: true } }));
58
- expect(lastFrame()).toMatch(/โœ“ test\.sql/);
58
+ expect(lastFrame()).toMatch(/Built:\s*\n\s*โœ” test\.sql/);
59
59
  });
60
60
  test('handles build and apply together', async () => {
61
61
  const { lastFrame } = render(React.createElement(Build, { options: { force: false, apply: true } }));
62
62
  // Use more precise matching that accounts for newlines
63
- expect(lastFrame()).toMatch(/Built:\s*\n\s*โœ“ test\.sql/);
64
- expect(lastFrame()).toMatch(/Applied:\s*\n\s*โœ“ test\.sql/);
63
+ expect(lastFrame()).toMatch(/Built:\s*\n\s*โœ” test\.sql/);
64
+ expect(lastFrame()).toMatch(/Applied:\s*\n\s*โ–ถ test\.sql/);
65
65
  });
66
66
  });
67
67
  //# sourceMappingURL=build.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"build.test.js","sourceRoot":"","sources":["../../src/__tests__/build.test.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build.test.js","sourceRoot":"","sources":["../../src/__tests__/build.test.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,9 @@
1
+ import { render } from 'ink-testing-library';
2
+ import React from 'react';
3
+ import { expect, it } from 'vitest';
4
+ import Promote from '../commands/promote.js';
5
+ it('renders promote command', () => {
6
+ const { lastFrame } = render(React.createElement(Promote, { args: undefined }));
7
+ expect(lastFrame()).toContain('Promote WIP template');
8
+ });
9
+ //# sourceMappingURL=promote.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promote.test.js","sourceRoot":"","sources":["../../src/__tests__/promote.test.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,OAAO,MAAM,wBAAwB,CAAC;AAE7C,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACjC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,oBAAC,OAAO,IAAC,IAAI,EAAE,SAAS,GAAI,CAAC,CAAC;IAC3D,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;AACxD,CAAC,CAAC,CAAC"}
@@ -29,6 +29,7 @@ vi.mock('../utils/logger', () => ({
29
29
  }));
30
30
  beforeAll(async () => {
31
31
  try {
32
+ await fs.rm(TEST_ROOT, { recursive: true, force: true });
32
33
  await fs.mkdir(TEST_ROOT, { recursive: true });
33
34
  }
34
35
  catch (error) {
@@ -64,8 +65,8 @@ afterAll(async () => {
64
65
  }
65
66
  finally {
66
67
  client.release();
68
+ void disconnect();
67
69
  }
68
- disconnect();
69
70
  });
70
71
  vi.mock('../utils/config', async (importOriginal) => {
71
72
  const actual = (await importOriginal());
@@ -1 +1 @@
1
- {"version":3,"file":"vitest.setup.js","sourceRoot":"","sources":["../../src/__tests__/vitest.setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vitest.setup.js","sourceRoot":"","sources":["../../src/__tests__/vitest.setup.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import { render } from 'ink-testing-library';
2
2
  import React from 'react';
3
3
  import { beforeEach, describe, expect, test, vi } from 'vitest';
4
4
  import Watch from '../commands/watch.js';
5
+ import { connect } from '../utils/databaseConnection.js';
5
6
  vi.mock('ink', async (importOriginal) => {
6
7
  const actual = (await importOriginal());
7
8
  return {
@@ -15,6 +16,7 @@ describe('Watch Command', () => {
15
16
  vi.clearAllMocks();
16
17
  });
17
18
  test('renders initial state with no templates', async () => {
19
+ await connect();
18
20
  const { lastFrame } = render(React.createElement(Watch, null));
19
21
  await wait(200); // Allow time for UI to render and DB to initialize
20
22
  expect(lastFrame()).toContain('Watch Mode');
@@ -1 +1 @@
1
- {"version":3,"file":"watch.test.js","sourceRoot":"","sources":["../../src/__tests__/watch.test.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAChE,OAAO,KAAK,MAAM,sBAAsB,CAAC;AAEzC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAC,cAAc,EAAC,EAAE;IACpC,MAAM,MAAM,GAAG,CAAC,MAAM,cAAc,EAAE,CAAyB,CAAC;IAChE,OAAO;QACL,GAAG,MAAM;QACT,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;KAClC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,MAAM,IAAI,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAE7E,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,aAAa,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,oBAAC,KAAK,OAAG,CAAC,CAAC;QACxC,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,mDAAmD;QAEpE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAC5C,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"watch.test.js","sourceRoot":"","sources":["../../src/__tests__/watch.test.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAChE,OAAO,KAAK,MAAM,sBAAsB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAEzD,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAC,cAAc,EAAC,EAAE;IACpC,MAAM,MAAM,GAAG,CAAC,MAAM,cAAc,EAAE,CAAyB,CAAC;IAChE,OAAO;QACL,GAAG,MAAM;QACT,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;KAClC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,MAAM,IAAI,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAE7E,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,aAAa,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,OAAO,EAAE,CAAC;QAChB,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,oBAAC,KAAK,OAAG,CAAC,CAAC;QACxC,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,mDAAmD;QAEpE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAC5C,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -18,12 +18,4 @@ export default function App({ Component, commandProps }) {
18
18
  React.createElement(Component, { ...commandProps }),
19
19
  React.createElement(Debug, null))));
20
20
  }
21
- // Fullscreen behavior
22
- const enterAltScreenCommand = '\x1b[?1049h';
23
- const leaveAltScreenCommand = '\x1b[?1049l';
24
- process.stdout.write(enterAltScreenCommand);
25
- const cleanup = () => {
26
- process.stdout.write(leaveAltScreenCommand);
27
- };
28
- process.on('exit', cleanup);
29
21
  //# sourceMappingURL=_app.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"_app.js","sourceRoot":"","sources":["../../src/commands/_app.tsx"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAExC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,MAAM,wBAAwB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE1E,MAAM,CAAC,OAAO,UAAU,GAAG,CAAC,EAAE,SAAS,EAAE,YAAY,EAAY;IAC/D,MAAM,EAAE,KAAK,EAAE,GAAG,qBAAqB,EAAE,CAAC;IAE1C,OAAO,CACL,oBAAC,aAAa,IAAC,KAAK,EAAE,WAAW;QAC/B,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,OAAO,EAAE,CAAC;YACnC,CAAC,CAAC,KAAK,IAAI,CACV,oBAAC,MAAM,IAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IACnB,KAAK,CAAC,EAAE,CAAC,CACR,oBAAC,GAAG,IAAC,GAAG,EAAE,KAAK;gBACb,oBAAC,KAAK,IAAC,OAAO,EAAC,OAAO;oBACpB,oBAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,WAAW;;wBACpB,GAAG,CACL;oBACN,KAAK,CACA,CACJ,CACP,CACM,CACV;YACD,oBAAC,SAAS,OAAK,YAAY,GAAI;YAC/B,oBAAC,KAAK,OAAG,CACL,CACQ,CACjB,CAAC;AACJ,CAAC;AAED,sBAAsB;AACtB,MAAM,qBAAqB,GAAG,aAAa,CAAC;AAC5C,MAAM,qBAAqB,GAAG,aAAa,CAAC;AAC5C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;AAE5C,MAAM,OAAO,GAAG,GAAG,EAAE;IACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;AAC9C,CAAC,CAAC;AAEF,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC"}
1
+ {"version":3,"file":"_app.js","sourceRoot":"","sources":["../../src/commands/_app.tsx"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAExC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,MAAM,wBAAwB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE1E,MAAM,CAAC,OAAO,UAAU,GAAG,CAAC,EAAE,SAAS,EAAE,YAAY,EAAY;IAC/D,MAAM,EAAE,KAAK,EAAE,GAAG,qBAAqB,EAAE,CAAC;IAE1C,OAAO,CACL,oBAAC,aAAa,IAAC,KAAK,EAAE,WAAW;QAC/B,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,OAAO,EAAE,CAAC;YACnC,CAAC,CAAC,KAAK,IAAI,CACV,oBAAC,MAAM,IAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IACnB,KAAK,CAAC,EAAE,CAAC,CACR,oBAAC,GAAG,IAAC,GAAG,EAAE,KAAK;gBACb,oBAAC,KAAK,IAAC,OAAO,EAAC,OAAO;oBACpB,oBAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,WAAW;;wBACpB,GAAG,CACL;oBACN,KAAK,CACA,CACJ,CACP,CACM,CACV;YACD,oBAAC,SAAS,OAAK,YAAY,GAAI;YAC/B,oBAAC,KAAK,OAAG,CACL,CACQ,CACjB,CAAC;AACJ,CAAC"}
@@ -1,6 +1,6 @@
1
1
  // src/commands/apply.tsx
2
2
  import { Spinner } from '@inkjs/ui';
3
- import { Box, Text, useApp, useInput } from 'ink';
3
+ import { Box, useApp } from 'ink';
4
4
  import { option } from 'pastel';
5
5
  import React from 'react';
6
6
  import zod from 'zod';
@@ -15,16 +15,13 @@ export const options = zod.object({
15
15
  });
16
16
  export default function Apply({ options }) {
17
17
  const { exit } = useApp();
18
- const { result, isProcessing } = useTemplateProcessor({ force: options.force, apply: true });
19
- useInput((_input, _) => {
20
- if (!isProcessing) {
21
- exit();
22
- }
18
+ const { result, isProcessing } = useTemplateProcessor({
19
+ force: options.force,
20
+ apply: true,
21
+ onComplete: () => exit(), // Move exit here
23
22
  });
24
23
  return (React.createElement(Box, { flexDirection: "column", gap: 1 },
25
24
  React.createElement(Branding, { subtitle: "\u25B6\uFE0F Apply migrations" }),
26
- isProcessing ? (React.createElement(Spinner, { label: "Applying templates..." })) : (React.createElement(React.Fragment, null,
27
- React.createElement(ProcessingResults, { result: result, showApply: true }),
28
- React.createElement(Text, { dimColor: true }, "Press any key to exit")))));
25
+ isProcessing ? (React.createElement(Spinner, { label: "Applying templates..." })) : (React.createElement(ProcessingResults, { result: result, showApply: true }))));
29
26
  }
30
27
  //# sourceMappingURL=apply.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"apply.js","sourceRoot":"","sources":["../../src/commands/apply.tsx"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,QAAQ,MAAM,2BAA2B,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAExE,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC;IAChC,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,QAAQ,CAC3B,MAAM,CAAC;QACL,WAAW,EAAE,uDAAuD;QACpE,KAAK,EAAE,GAAG;KACX,CAAC,CACH;CACF,CAAC,CAAC;AAMH,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,EAAE,OAAO,EAAS;IAC9C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,oBAAoB,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAE7F,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACrB,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,IAAI,EAAE,CAAC;QACT,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,GAAG,EAAE,CAAC;QAChC,oBAAC,QAAQ,IAAC,QAAQ,EAAC,gCAAsB,GAAG;QAC3C,YAAY,CAAC,CAAC,CAAC,CACd,oBAAC,OAAO,IAAC,KAAK,EAAC,uBAAuB,GAAG,CAC1C,CAAC,CAAC,CAAC,CACF;YACE,oBAAC,iBAAiB,IAAC,MAAM,EAAE,MAAM,EAAE,SAAS,SAAG;YAC/C,oBAAC,IAAI,IAAC,QAAQ,kCAA6B,CAC1C,CACJ,CACG,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"apply.js","sourceRoot":"","sources":["../../src/commands/apply.tsx"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,QAAQ,MAAM,2BAA2B,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAExE,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC;IAChC,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,QAAQ,CAC3B,MAAM,CAAC;QACL,WAAW,EAAE,uDAAuD;QACpE,KAAK,EAAE,GAAG;KACX,CAAC,CACH;CACF,CAAC,CAAC;AAMH,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,EAAE,OAAO,EAAS;IAC9C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,oBAAoB,CAAC;QACpD,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,iBAAiB;KAC5C,CAAC,CAAC;IAEH,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,GAAG,EAAE,CAAC;QAChC,oBAAC,QAAQ,IAAC,QAAQ,EAAC,gCAAsB,GAAG;QAC3C,YAAY,CAAC,CAAC,CAAC,CACd,oBAAC,OAAO,IAAC,KAAK,EAAC,uBAAuB,GAAG,CAC1C,CAAC,CAAC,CAAC,CACF,oBAAC,iBAAiB,IAAC,MAAM,EAAE,MAAM,EAAE,SAAS,SAAG,CAChD,CACG,CACP,CAAC;AACJ,CAAC"}
@@ -1,6 +1,6 @@
1
1
  // commands/build.tsx
2
2
  import { Spinner } from '@inkjs/ui';
3
- import { Box, Text, useApp, useInput } from 'ink';
3
+ import { Box, useApp } from 'ink';
4
4
  import { option } from 'pastel';
5
5
  import React from 'react';
6
6
  import zod from 'zod';
@@ -24,18 +24,13 @@ export default function Build({ options }) {
24
24
  const { exit } = useApp();
25
25
  const { result, isProcessing } = useTemplateProcessor({
26
26
  force: options.force,
27
- generateFiles: true,
28
27
  apply: options.apply,
28
+ generateFiles: true,
29
+ onComplete: () => exit(), // Move exit here
29
30
  });
30
- useInput((_input, _) => {
31
- if (!isProcessing) {
32
- exit();
33
- }
34
- });
31
+ const forced = options.force ? '(forced)' : '';
35
32
  return (React.createElement(Box, { flexDirection: "column", gap: 1 },
36
- React.createElement(Branding, { subtitle: "\uD83C\uDFD7\uFE0F Build migrations" }),
37
- isProcessing ? (React.createElement(Spinner, { label: "Building templates..." })) : (React.createElement(React.Fragment, null,
38
- React.createElement(ProcessingResults, { result: result, showBuild: true, showApply: !!option.apply }),
39
- React.createElement(Text, { dimColor: true }, "Press any key to exit")))));
33
+ React.createElement(Branding, { subtitle: `๐Ÿ—๏ธ Build migrations ${forced}` }),
34
+ isProcessing ? (React.createElement(Spinner, { label: `Building templates...` })) : (React.createElement(ProcessingResults, { result: result, showBuild: true, showApply: !!option.apply }))));
40
35
  }
41
36
  //# sourceMappingURL=build.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.tsx"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,QAAQ,MAAM,2BAA2B,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAExE,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC;IAChC,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,QAAQ,CAC3B,MAAM,CAAC;QACL,WAAW,EAAE,0DAA0D;QACvE,KAAK,EAAE,GAAG;KACX,CAAC,CACH;IACD,KAAK,EAAE,GAAG;SACP,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CACP,MAAM,CAAC;QACL,WAAW,EAAE,2BAA2B;QACxC,KAAK,EAAE,GAAG;KACX,CAAC,CACH;CACJ,CAAC,CAAC;AAMH,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,EAAE,OAAO,EAAS;IAC9C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,oBAAoB,CAAC;QACpD,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,aAAa,EAAE,IAAI;QACnB,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC,CAAC;IAEH,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACrB,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,IAAI,EAAE,CAAC;QACT,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,GAAG,EAAE,CAAC;QAChC,oBAAC,QAAQ,IAAC,QAAQ,EAAC,sCAAuB,GAAG;QAC5C,YAAY,CAAC,CAAC,CAAC,CACd,oBAAC,OAAO,IAAC,KAAK,EAAC,uBAAuB,GAAG,CAC1C,CAAC,CAAC,CAAC,CACF;YACE,oBAAC,iBAAiB,IAAC,MAAM,EAAE,MAAM,EAAE,SAAS,QAAC,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,GAAI;YAC1E,oBAAC,IAAI,IAAC,QAAQ,kCAA6B,CAC1C,CACJ,CACG,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.tsx"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,QAAQ,MAAM,2BAA2B,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAExE,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC;IAChC,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,QAAQ,CAC3B,MAAM,CAAC;QACL,WAAW,EAAE,0DAA0D;QACvE,KAAK,EAAE,GAAG;KACX,CAAC,CACH;IACD,KAAK,EAAE,GAAG;SACP,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CACP,MAAM,CAAC;QACL,WAAW,EAAE,2BAA2B;QACxC,KAAK,EAAE,GAAG;KACX,CAAC,CACH;CACJ,CAAC,CAAC;AAMH,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,EAAE,OAAO,EAAS;IAC9C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,oBAAoB,CAAC;QACpD,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,iBAAiB;KAC5C,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IAE/C,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,GAAG,EAAE,CAAC;QAChC,oBAAC,QAAQ,IAAC,QAAQ,EAAE,yBAAyB,MAAM,EAAE,GAAI;QACxD,YAAY,CAAC,CAAC,CAAC,CACd,oBAAC,OAAO,IAAC,KAAK,EAAE,uBAAuB,GAAI,CAC5C,CAAC,CAAC,CAAC,CACF,oBAAC,iBAAiB,IAAC,MAAM,EAAE,MAAM,EAAE,SAAS,QAAC,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,GAAI,CAC3E,CACG,CACP,CAAC;AACJ,CAAC"}
@@ -1,8 +1,10 @@
1
1
  import { Select, Spinner } from '@inkjs/ui';
2
- import { Box, useApp } from 'ink';
2
+ import figures from 'figures';
3
+ import { Box, Text, useApp } from 'ink';
3
4
  import React from 'react';
4
5
  import Branding from '../components/Branding.js';
5
6
  import Quittable from '../components/Quittable.js';
7
+ import { COLOR_SUCCESS } from '../components/customTheme.js';
6
8
  import { clearBuildLogs, resetConfig } from '../utils/config.js';
7
9
  const clearOptions = [
8
10
  { label: 'Clear local build logs', value: 'local' },
@@ -12,6 +14,7 @@ const clearOptions = [
12
14
  export default function Clear() {
13
15
  const { exit } = useApp();
14
16
  const [isResetting, setIsResetting] = React.useState(false);
17
+ const [isDone, setIsDone] = React.useState(false);
15
18
  const handleSelect = async (value) => {
16
19
  try {
17
20
  setIsResetting(true);
@@ -29,6 +32,8 @@ export default function Clear() {
29
32
  default:
30
33
  throw new Error('Invalid option');
31
34
  }
35
+ setIsDone(true);
36
+ setIsResetting(false);
32
37
  exit();
33
38
  }
34
39
  catch (err) {
@@ -38,7 +43,10 @@ export default function Clear() {
38
43
  return (React.createElement(React.Fragment, null,
39
44
  React.createElement(Branding, { subtitle: "\uD83E\uDDF9 Maintenance" }),
40
45
  React.createElement(Select, { options: clearOptions, onChange: handleSelect }),
41
- isResetting ? (React.createElement(Box, { marginY: 1 },
46
+ isDone ? (React.createElement(Box, { marginY: 1 },
47
+ React.createElement(Text, { color: COLOR_SUCCESS },
48
+ figures.tick,
49
+ " Reset complete. Exiting"))) : isResetting ? (React.createElement(Box, { marginY: 1 },
42
50
  React.createElement(Spinner, { label: "Resetting..." }))) : (React.createElement(Quittable, null))));
43
51
  }
44
52
  //# sourceMappingURL=clear.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"clear.js","sourceRoot":"","sources":["../../src/commands/clear.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAClC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,2BAA2B,CAAC;AACjD,OAAO,SAAS,MAAM,4BAA4B,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjE,MAAM,YAAY,GAAG;IACnB,EAAE,KAAK,EAAE,wBAAwB,EAAE,KAAK,EAAE,OAAO,EAAE;IACnD,EAAE,KAAK,EAAE,yBAAyB,EAAE,KAAK,EAAE,QAAQ,EAAE;IACrD,EAAE,KAAK,EAAE,2CAA2C,EAAE,KAAK,EAAE,YAAY,EAAE;CAC5E,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,KAAK;IAC3B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE5D,MAAM,YAAY,GAAG,KAAK,EAAE,KAAa,EAAE,EAAE;QAC3C,IAAI,CAAC;YACH,cAAc,CAAC,IAAI,CAAC,CAAC;YACrB,QAAQ,KAAK,EAAE,CAAC;gBACd,KAAK,OAAO;oBACV,MAAM,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;oBAC7C,MAAM;gBACR,KAAK,QAAQ;oBACX,MAAM,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;oBAC9C,MAAM;gBACR,KAAK,YAAY;oBACf,MAAM,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;oBACjC,MAAM,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;oBAC5C,MAAM;gBACR;oBACE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;YACtC,CAAC;YACD,IAAI,EAAE,CAAC;QACT,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;QACzE,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL;QACE,oBAAC,QAAQ,IAAC,QAAQ,EAAC,0BAAgB,GAAG;QACtC,oBAAC,MAAM,IAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,GAAI;QACxD,WAAW,CAAC,CAAC,CAAC,CACb,oBAAC,GAAG,IAAC,OAAO,EAAE,CAAC;YACb,oBAAC,OAAO,IAAC,KAAK,EAAC,cAAc,GAAG,CAC5B,CACP,CAAC,CAAC,CAAC,CACF,oBAAC,SAAS,OAAG,CACd,CACA,CACJ,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"clear.js","sourceRoot":"","sources":["../../src/commands/clear.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AACxC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,2BAA2B,CAAC;AACjD,OAAO,SAAS,MAAM,4BAA4B,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjE,MAAM,YAAY,GAAG;IACnB,EAAE,KAAK,EAAE,wBAAwB,EAAE,KAAK,EAAE,OAAO,EAAE;IACnD,EAAE,KAAK,EAAE,yBAAyB,EAAE,KAAK,EAAE,QAAQ,EAAE;IACrD,EAAE,KAAK,EAAE,2CAA2C,EAAE,KAAK,EAAE,YAAY,EAAE;CAC5E,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,KAAK;IAC3B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5D,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAElD,MAAM,YAAY,GAAG,KAAK,EAAE,KAAa,EAAE,EAAE;QAC3C,IAAI,CAAC;YACH,cAAc,CAAC,IAAI,CAAC,CAAC;YACrB,QAAQ,KAAK,EAAE,CAAC;gBACd,KAAK,OAAO;oBACV,MAAM,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;oBAC7C,MAAM;gBACR,KAAK,QAAQ;oBACX,MAAM,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;oBAC9C,MAAM;gBACR,KAAK,YAAY;oBACf,MAAM,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;oBACjC,MAAM,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;oBAC5C,MAAM;gBACR;oBACE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;YACtC,CAAC;YACD,SAAS,CAAC,IAAI,CAAC,CAAC;YAChB,cAAc,CAAC,KAAK,CAAC,CAAC;YACtB,IAAI,EAAE,CAAC;QACT,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;QACzE,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL;QACE,oBAAC,QAAQ,IAAC,QAAQ,EAAC,0BAAgB,GAAG;QACtC,oBAAC,MAAM,IAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,GAAI;QACxD,MAAM,CAAC,CAAC,CAAC,CACR,oBAAC,GAAG,IAAC,OAAO,EAAE,CAAC;YACb,oBAAC,IAAI,IAAC,KAAK,EAAE,aAAa;gBAAG,OAAO,CAAC,IAAI;2CAAgC,CACrE,CACP,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAChB,oBAAC,GAAG,IAAC,OAAO,EAAE,CAAC;YACb,oBAAC,OAAO,IAAC,KAAK,EAAC,cAAc,GAAG,CAC5B,CACP,CAAC,CAAC,CAAC,CACF,oBAAC,SAAS,OAAG,CACd,CACA,CACJ,CAAC;AACJ,CAAC"}
@@ -1,18 +1,16 @@
1
1
  // commands/index.tsx
2
- import { Select, Spinner } from '@inkjs/ui';
3
- import { Box, Text } from 'ink';
2
+ import { Select } from '@inkjs/ui';
3
+ import { Box } from 'ink';
4
4
  import React from 'react';
5
5
  import Branding from '../components/Branding.js';
6
6
  import Quittable from '../components/Quittable.js';
7
- import { COLOR_ERROR } from '../components/customTheme.js';
8
- import { useDatabaseConnection } from '../hooks/useDatabaseConnection.js';
9
7
  import Apply from './apply.js';
10
8
  import Build from './build.js';
11
9
  import Clear from './clear.js';
10
+ import Promote from './promote.js';
12
11
  import Register from './register.js';
13
12
  import Watch from './watch.js';
14
13
  export default function UI() {
15
- const { error, isChecking, isConnected } = useDatabaseConnection();
16
14
  const [selectedCommand, setSelectedCommand] = React.useState(null);
17
15
  const handleOnChange = async (value) => {
18
16
  setSelectedCommand(value);
@@ -32,22 +30,23 @@ export default function UI() {
32
30
  if (selectedCommand === 'clear') {
33
31
  return React.createElement(Clear, null);
34
32
  }
33
+ if (selectedCommand === 'promote') {
34
+ return React.createElement(Promote, null);
35
+ }
35
36
  const menuItems = [
36
37
  {
37
- label: '๐Ÿ‘€ watch - Watch for changes, apply directly to db',
38
+ label: '๐Ÿ‘€ watch - Watch for changes, apply directly to db',
38
39
  value: 'watch',
39
40
  },
40
41
  { label: 'โ–ถ๏ธ apply - Apply templates directly to db', value: 'apply' },
41
42
  { label: '๐Ÿ—๏ธ build - Build templates as Supabase migrations', value: 'build' },
42
43
  { label: 'โœ๏ธ register - Register templates as already built', value: 'register' },
43
- { label: '๐Ÿงน maintenance - Clear build logs and reset config', value: 'clear' },
44
+ { label: '๐Ÿš€ promote - Promote WIP template to buildable templates', value: 'promote' },
45
+ { label: '๐Ÿงน maintenance - Clear build logs and reset config', value: 'clear' },
44
46
  ];
45
47
  return (React.createElement(Box, { flexDirection: "column" },
46
48
  React.createElement(Branding, null),
47
- error ? (React.createElement(Box, { gap: 1 },
48
- React.createElement(Text, { color: COLOR_ERROR, bold: true }, "Error"),
49
- React.createElement(Text, null, "Check your database connection and try again."))) : (React.createElement(Select, { options: menuItems, isDisabled: !isConnected, onChange: handleOnChange })),
50
- isChecking ? (React.createElement(Box, { marginTop: 1 },
51
- React.createElement(Spinner, { label: "Checking database connection..." }))) : (React.createElement(Quittable, null))));
49
+ React.createElement(Select, { visibleOptionCount: 10, options: menuItems, onChange: handleOnChange }),
50
+ React.createElement(Quittable, null)));
52
51
  }
53
52
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.tsx"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,2BAA2B,CAAC;AACjD,OAAO,SAAS,MAAM,4BAA4B,CAAC;AACnD,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,MAAM,CAAC,OAAO,UAAU,EAAE;IACxB,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAElF,MAAM,cAAc,GAAG,KAAK,EAAE,KAAa,EAAE,EAAE;QAC7C,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC,CAAC;IAEF,IAAI,eAAe,KAAK,UAAU,EAAE,CAAC;QACnC,OAAO,oBAAC,QAAQ,IAAC,IAAI,EAAE,SAAS,GAAI,CAAC;IACvC,CAAC;IAED,IAAI,eAAe,KAAK,OAAO,EAAE,CAAC;QAChC,OAAO,oBAAC,KAAK,IAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAI,CAAC;IAC9C,CAAC;IAED,IAAI,eAAe,KAAK,OAAO,EAAE,CAAC;QAChC,OAAO,oBAAC,KAAK,IAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAI,CAAC;IAC9C,CAAC;IAED,IAAI,eAAe,KAAK,OAAO,EAAE,CAAC;QAChC,OAAO,oBAAC,KAAK,OAAG,CAAC;IACnB,CAAC;IAED,IAAI,eAAe,KAAK,OAAO,EAAE,CAAC;QAChC,OAAO,oBAAC,KAAK,OAAG,CAAC;IACnB,CAAC;IAED,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO,oBAAC,OAAO,OAAG,CAAC;IACrB,CAAC;IAED,MAAM,SAAS,GAAG;QAChB;YACE,KAAK,EAAE,qDAAqD;YAC5D,KAAK,EAAE,OAAO;SACf;QACD,EAAE,KAAK,EAAE,4CAA4C,EAAE,KAAK,EAAE,OAAO,EAAE;QACvE,EAAE,KAAK,EAAE,qDAAqD,EAAE,KAAK,EAAE,OAAO,EAAE;QAChF,EAAE,KAAK,EAAE,oDAAoD,EAAE,KAAK,EAAE,UAAU,EAAE;QAClF,EAAE,KAAK,EAAE,2DAA2D,EAAE,KAAK,EAAE,SAAS,EAAE;QACxF,EAAE,KAAK,EAAE,qDAAqD,EAAE,KAAK,EAAE,OAAO,EAAE;KACjF,CAAC;IAEF,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ;QACzB,oBAAC,QAAQ,OAAG;QACZ,oBAAC,MAAM,IAAC,kBAAkB,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,GAAI;QAChF,oBAAC,SAAS,OAAG,CACT,CACP,CAAC;AACJ,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import fs from 'node:fs/promises';
2
2
  import path from 'node:path';
3
3
  import chalk from 'chalk';
4
+ import { useApp } from 'ink';
4
5
  import React from 'react';
5
6
  import { CONFIG_FILE } from '../constants.js';
6
7
  import { getConfig, saveConfig } from '../utils/config.js';
@@ -9,6 +10,7 @@ import { ensureDirectories } from '../utils/ensureDirectories.js';
9
10
  import { fileExists } from '../utils/fileExists.js';
10
11
  import { logger } from '../utils/logger.js';
11
12
  export default function Init() {
13
+ const { exit } = useApp();
12
14
  React.useEffect(() => {
13
15
  async function doInit() {
14
16
  console.log(`${chalk.green('\nโœจ Initializing srtd\n')}`);
@@ -67,14 +69,17 @@ export default function Init() {
67
69
  else {
68
70
  logger.skip(`.gitignore already contains ${ignoreEntry}`);
69
71
  }
72
+ exit();
70
73
  }
71
74
  catch (error) {
72
75
  logger.error(`Failed to initialize: ${JSON.stringify(error)}`);
73
- process.exit(1);
76
+ if (error instanceof Error) {
77
+ exit(error);
78
+ }
74
79
  }
75
80
  }
76
81
  doInit();
77
- }, []);
82
+ }, [exit]);
78
83
  return null;
79
84
  }
80
85
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import zod from 'zod';
3
+ export declare const args: zod.ZodOptional<zod.ZodArray<zod.ZodString, "many">>;
4
+ interface Props {
5
+ args?: zod.infer<typeof args>;
6
+ }
7
+ export default function Promote({ args: templateArgs }: Props): React.JSX.Element;
8
+ export {};