@take-out/cli 0.2.10 → 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 (114) hide show
  1. package/dist/cjs/cli.cjs +0 -0
  2. package/dist/esm/cli.mjs +0 -0
  3. package/dist/esm/index.js +1 -3
  4. package/dist/esm/index.js.map +1 -6
  5. package/package.json +7 -6
  6. package/src/commands/changed.ts +6 -6
  7. package/src/commands/onboard.ts +63 -63
  8. package/src/commands/run.ts +1 -1
  9. package/src/commands/script.ts +3 -3
  10. package/src/commands/skills.ts +6 -6
  11. package/src/commands/sync.ts +3 -3
  12. package/src/utils/env-setup.ts +8 -8
  13. package/src/utils/env.ts +3 -3
  14. package/src/utils/files.ts +6 -6
  15. package/src/utils/parallel-runner.ts +1 -1
  16. package/src/utils/prompts.ts +6 -6
  17. package/src/utils/script-listing.ts +5 -5
  18. package/src/utils/script-utils.ts +1 -1
  19. package/src/utils/sync.ts +1 -1
  20. package/src/withExpoModulesCoreSwift6Fix.cjs +58 -0
  21. package/dist/cjs/cli.js +0 -123
  22. package/dist/cjs/cli.js.map +0 -6
  23. package/dist/cjs/commands/changed.js +0 -214
  24. package/dist/cjs/commands/changed.js.map +0 -6
  25. package/dist/cjs/commands/docs.js +0 -174
  26. package/dist/cjs/commands/docs.js.map +0 -6
  27. package/dist/cjs/commands/env-setup.js +0 -78
  28. package/dist/cjs/commands/env-setup.js.map +0 -6
  29. package/dist/cjs/commands/onboard.js +0 -641
  30. package/dist/cjs/commands/onboard.js.map +0 -6
  31. package/dist/cjs/commands/run-all.js +0 -74
  32. package/dist/cjs/commands/run-all.js.map +0 -6
  33. package/dist/cjs/commands/run.js +0 -95
  34. package/dist/cjs/commands/run.js.map +0 -6
  35. package/dist/cjs/commands/script.js +0 -261
  36. package/dist/cjs/commands/script.js.map +0 -6
  37. package/dist/cjs/commands/skills.js +0 -168
  38. package/dist/cjs/commands/skills.js.map +0 -6
  39. package/dist/cjs/commands/sync.js +0 -187
  40. package/dist/cjs/commands/sync.js.map +0 -6
  41. package/dist/cjs/constants/ascii.js +0 -30
  42. package/dist/cjs/constants/ascii.js.map +0 -6
  43. package/dist/cjs/index.js +0 -21
  44. package/dist/cjs/index.js.map +0 -6
  45. package/dist/cjs/types.js +0 -14
  46. package/dist/cjs/types.js.map +0 -6
  47. package/dist/cjs/utils/env-categories.js +0 -296
  48. package/dist/cjs/utils/env-categories.js.map +0 -6
  49. package/dist/cjs/utils/env-setup.js +0 -190
  50. package/dist/cjs/utils/env-setup.js.map +0 -6
  51. package/dist/cjs/utils/env.js +0 -97
  52. package/dist/cjs/utils/env.js.map +0 -6
  53. package/dist/cjs/utils/files.js +0 -164
  54. package/dist/cjs/utils/files.js.map +0 -6
  55. package/dist/cjs/utils/parallel-runner.js +0 -113
  56. package/dist/cjs/utils/parallel-runner.js.map +0 -6
  57. package/dist/cjs/utils/ports.js +0 -81
  58. package/dist/cjs/utils/ports.js.map +0 -6
  59. package/dist/cjs/utils/prerequisites.js +0 -107
  60. package/dist/cjs/utils/prerequisites.js.map +0 -6
  61. package/dist/cjs/utils/prompts.js +0 -162
  62. package/dist/cjs/utils/prompts.js.map +0 -6
  63. package/dist/cjs/utils/script-listing.js +0 -97
  64. package/dist/cjs/utils/script-listing.js.map +0 -6
  65. package/dist/cjs/utils/script-utils.js +0 -82
  66. package/dist/cjs/utils/script-utils.js.map +0 -6
  67. package/dist/cjs/utils/sync.js +0 -70
  68. package/dist/cjs/utils/sync.js.map +0 -6
  69. package/dist/esm/cli.js +0 -106
  70. package/dist/esm/cli.js.map +0 -6
  71. package/dist/esm/commands/changed.js +0 -194
  72. package/dist/esm/commands/changed.js.map +0 -6
  73. package/dist/esm/commands/docs.js +0 -159
  74. package/dist/esm/commands/docs.js.map +0 -6
  75. package/dist/esm/commands/env-setup.js +0 -56
  76. package/dist/esm/commands/env-setup.js.map +0 -6
  77. package/dist/esm/commands/onboard.js +0 -655
  78. package/dist/esm/commands/onboard.js.map +0 -6
  79. package/dist/esm/commands/run-all.js +0 -53
  80. package/dist/esm/commands/run-all.js.map +0 -6
  81. package/dist/esm/commands/run.js +0 -74
  82. package/dist/esm/commands/run.js.map +0 -6
  83. package/dist/esm/commands/script.js +0 -255
  84. package/dist/esm/commands/script.js.map +0 -6
  85. package/dist/esm/commands/skills.js +0 -159
  86. package/dist/esm/commands/skills.js.map +0 -6
  87. package/dist/esm/commands/sync.js +0 -177
  88. package/dist/esm/commands/sync.js.map +0 -6
  89. package/dist/esm/constants/ascii.js +0 -14
  90. package/dist/esm/constants/ascii.js.map +0 -6
  91. package/dist/esm/types.js +0 -1
  92. package/dist/esm/types.js.map +0 -6
  93. package/dist/esm/utils/env-categories.js +0 -272
  94. package/dist/esm/utils/env-categories.js.map +0 -6
  95. package/dist/esm/utils/env-setup.js +0 -171
  96. package/dist/esm/utils/env-setup.js.map +0 -6
  97. package/dist/esm/utils/env.js +0 -83
  98. package/dist/esm/utils/env.js.map +0 -6
  99. package/dist/esm/utils/files.js +0 -150
  100. package/dist/esm/utils/files.js.map +0 -6
  101. package/dist/esm/utils/parallel-runner.js +0 -98
  102. package/dist/esm/utils/parallel-runner.js.map +0 -6
  103. package/dist/esm/utils/ports.js +0 -65
  104. package/dist/esm/utils/ports.js.map +0 -6
  105. package/dist/esm/utils/prerequisites.js +0 -91
  106. package/dist/esm/utils/prerequisites.js.map +0 -6
  107. package/dist/esm/utils/prompts.js +0 -139
  108. package/dist/esm/utils/prompts.js.map +0 -6
  109. package/dist/esm/utils/script-listing.js +0 -80
  110. package/dist/esm/utils/script-listing.js.map +0 -6
  111. package/dist/esm/utils/script-utils.js +0 -68
  112. package/dist/esm/utils/script-utils.js.map +0 -6
  113. package/dist/esm/utils/sync.js +0 -50
  114. package/dist/esm/utils/sync.js.map +0 -6
package/dist/cjs/cli.cjs CHANGED
File without changes
package/dist/esm/cli.mjs CHANGED
File without changes
package/dist/esm/index.js CHANGED
@@ -1,5 +1,3 @@
1
1
  import { cmd } from "@take-out/scripts/cmd";
2
- export {
3
- cmd
4
- };
2
+ export { cmd };
5
3
  //# sourceMappingURL=index.js.map
@@ -1,6 +1 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/index.ts"],
4
- "mappings": "AAAA,SAAS,WAAW;",
5
- "names": []
6
- }
1
+ {"version":3,"names":["cmd"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,GAAA,QAAW","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@take-out/cli",
3
- "version": "0.2.10",
3
+ "version": "0.3.0",
4
4
  "description": "CLI tools for Takeout starter kit - interactive onboarding and project setup",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -37,7 +37,8 @@
37
37
  "import": "./dist/esm/constants/*.mjs",
38
38
  "require": "./dist/cjs/constants/*.cjs"
39
39
  },
40
- "./withOpSqliteStatic": "./src/withOpSqliteStatic.cjs"
40
+ "./withOpSqliteStatic": "./src/withOpSqliteStatic.cjs",
41
+ "./withExpoModulesCoreSwift6Fix": "./src/withExpoModulesCoreSwift6Fix.cjs"
41
42
  },
42
43
  "scripts": {
43
44
  "build": "tamagui-build --skip-native --skip-types",
@@ -51,9 +52,9 @@
51
52
  },
52
53
  "dependencies": {
53
54
  "@clack/prompts": "^0.8.2",
54
- "@take-out/docs": "0.2.10",
55
- "@take-out/run": "0.2.10",
56
- "@take-out/scripts": "0.2.10",
55
+ "@take-out/docs": "0.3.0",
56
+ "@take-out/run": "0.3.0",
57
+ "@take-out/scripts": "0.3.0",
57
58
  "citty": "^0.1.6",
58
59
  "picocolors": "^1.1.1"
59
60
  },
@@ -66,7 +67,7 @@
66
67
  }
67
68
  },
68
69
  "devDependencies": {
69
- "@tamagui/build": "2.0.0-rc.15",
70
+ "@tamagui/build": "2.0.0-rc.36",
70
71
  "@types/node": "24.0.3",
71
72
  "bun-types": "latest",
72
73
  "oxfmt": "^0.16.0",
@@ -67,7 +67,7 @@ function readTakeoutConfig(): TakeoutConfig | null {
67
67
  }
68
68
 
69
69
  function parseConventionalCommit(
70
- message: string
70
+ message: string,
71
71
  ): { type: string; scope?: string; message: string; breaking: boolean } | null {
72
72
  // match conventional commit format: type(scope)!: message or type!: message
73
73
  const match = message.match(/^(\w+)(?:\(([^)]+)\))?(!)?: (.+)$/)
@@ -126,7 +126,7 @@ function getCommitsBetween(fromSha: string, toRef: string): CommitInfo[] {
126
126
  // format: hash|date|message
127
127
  const result = execSync(
128
128
  `git log ${fromSha}..${toRef} --pretty=format:"%H|%ad|%s" --date=short 2>/dev/null`,
129
- { encoding: 'utf-8', maxBuffer: 10 * 1024 * 1024 }
129
+ { encoding: 'utf-8', maxBuffer: 10 * 1024 * 1024 },
130
130
  )
131
131
 
132
132
  const lines = result.trim().split('\n').filter(Boolean)
@@ -183,7 +183,7 @@ function formatChangelog(commits: CommitInfo[]): void {
183
183
  for (const commit of breakingChanges) {
184
184
  const scope = commit.scope ? pc.cyan(`(${commit.scope})`) : ''
185
185
  console.info(
186
- ` ${pc.red('!')} ${scope} ${commit.message} ${pc.dim(`(${commit.hash})`)}`
186
+ ` ${pc.red('!')} ${scope} ${commit.message} ${pc.dim(`(${commit.hash})`)}`,
187
187
  )
188
188
  }
189
189
  }
@@ -229,7 +229,7 @@ function formatChangelog(commits: CommitInfo[]): void {
229
229
  for (const commit of typeCommits) {
230
230
  const scope = commit.scope ? pc.cyan(`(${commit.scope}) `) : ''
231
231
  console.info(
232
- ` ${pc.dim('-')} ${scope}${commit.message} ${pc.dim(`(${commit.hash})`)}`
232
+ ` ${pc.dim('-')} ${scope}${commit.message} ${pc.dim(`(${commit.hash})`)}`,
233
233
  )
234
234
  }
235
235
  }
@@ -300,8 +300,8 @@ export const changedCommand = defineCommand({
300
300
  console.info()
301
301
  console.info(
302
302
  pc.bold(
303
- `${commits.length} commit${commits.length === 1 ? '' : 's'} since last sync:`
304
- )
303
+ `${commits.length} commit${commits.length === 1 ? '' : 's'} since last sync:`,
304
+ ),
305
305
  )
306
306
 
307
307
  formatChangelog(commits)
@@ -140,8 +140,8 @@ export const onboardCommand = defineCommand({
140
140
 
141
141
  console.info(
142
142
  pc.gray(
143
- "We've included a variety of packages we found useful building apps with this stack:"
144
- )
143
+ "We've included a variety of packages we found useful building apps with this stack:",
144
+ ),
145
145
  )
146
146
  console.info(pc.gray(' • @take-out/cli - CLI tools and onboarding'))
147
147
  console.info(pc.gray(' • @take-out/helpers - Utility functions'))
@@ -153,7 +153,7 @@ export const onboardCommand = defineCommand({
153
153
 
154
154
  const shouldEject = await confirmContinue(
155
155
  'Eject from monorepo setup? (removes ./packages, uses published versions)',
156
- true
156
+ true,
157
157
  )
158
158
 
159
159
  if (shouldEject) {
@@ -238,7 +238,7 @@ export const onboardCommand = defineCommand({
238
238
 
239
239
  if (!hasRequired) {
240
240
  showWarning(
241
- 'Some required prerequisites are missing. You can continue, but setup may fail.'
241
+ 'Some required prerequisites are missing. You can continue, but setup may fail.',
242
242
  )
243
243
  const shouldContinue = await confirmContinue('Continue anyway?', false)
244
244
  if (!shouldContinue) {
@@ -262,7 +262,7 @@ export const onboardCommand = defineCommand({
262
262
 
263
263
  const shouldCustomize = await confirmContinue(
264
264
  'Customize project name and bundle identifier?',
265
- false
265
+ false,
266
266
  )
267
267
 
268
268
  if (shouldCustomize) {
@@ -288,14 +288,14 @@ export const onboardCommand = defineCommand({
288
288
  showInfo('Default web port: 8081 (TAMA in T9)')
289
289
  const shouldCustomizePort = await confirmContinue(
290
290
  'Customize web server port?',
291
- false
291
+ false,
292
292
  )
293
293
 
294
294
  if (shouldCustomizePort) {
295
295
  const newPort = await promptText(
296
296
  'Web server port:',
297
297
  '8081',
298
- '3000, 8080, 8081, etc.'
298
+ '3000, 8080, 8081, etc.',
299
299
  )
300
300
 
301
301
  if (newPort && newPort !== '8081') {
@@ -334,7 +334,7 @@ export const onboardCommand = defineCommand({
334
334
 
335
335
  const shouldConfigureCI = await confirmContinue(
336
336
  'Configure GitHub Actions CI runners?',
337
- true
337
+ true,
338
338
  )
339
339
 
340
340
  if (shouldConfigureCI) {
@@ -342,7 +342,7 @@ export const onboardCommand = defineCommand({
342
342
  } else {
343
343
  showInfo('Skipping CI runner configuration')
344
344
  showWarning(
345
- 'Default CI uses ARM64 Docker builds. If not using ARM runners, update scripts/web/build-docker.ts'
345
+ 'Default CI uses ARM64 Docker builds. If not using ARM runners, update scripts/web/build-docker.ts',
346
346
  )
347
347
  }
348
348
 
@@ -379,8 +379,8 @@ export const onboardCommand = defineCommand({
379
379
 
380
380
  console.info(
381
381
  pc.gray(
382
- "We've included a variety of packages we found useful building apps with this stack:"
383
- )
382
+ "We've included a variety of packages we found useful building apps with this stack:",
383
+ ),
384
384
  )
385
385
  console.info(pc.gray(' • @take-out/cli - CLI tools and onboarding'))
386
386
  console.info(pc.gray(' • @take-out/helpers - Utility functions'))
@@ -391,23 +391,23 @@ export const onboardCommand = defineCommand({
391
391
  console.info()
392
392
  console.info(pc.gray('These packages are included locally for two reasons:'))
393
393
  console.info(
394
- pc.gray(' 1. You can see their source and decide if you want to keep them')
394
+ pc.gray(' 1. You can see their source and decide if you want to keep them'),
395
395
  )
396
396
  console.info(
397
- pc.gray(' 2. Anyone can easily submit fixes or improvements back to our repo')
397
+ pc.gray(' 2. Anyone can easily submit fixes or improvements back to our repo'),
398
398
  )
399
399
  console.info()
400
400
  console.info(
401
401
  pc.gray(
402
- "Over time we'll publish new versions. You can sync with 'bun tko sync' (monorepo)"
403
- )
402
+ "Over time we'll publish new versions. You can sync with 'bun tko sync' (monorepo)",
403
+ ),
404
404
  )
405
405
  console.info(pc.gray("or if you eject, use 'bun up takeout' for package updates."))
406
406
  console.info()
407
407
 
408
408
  const shouldEject = await confirmContinue(
409
409
  'Eject from monorepo setup? (removes ./packages, uses published versions)',
410
- false
410
+ false,
411
411
  )
412
412
 
413
413
  if (shouldEject) {
@@ -510,19 +510,19 @@ async function customizeProject(cwd: string): Promise<void> {
510
510
  const slug = await promptText(
511
511
  'Project slug (URL-friendly):',
512
512
  projectName.toLowerCase().replace(/\s+/g, '-'),
513
- 'my-awesome-app'
513
+ 'my-awesome-app',
514
514
  )
515
515
 
516
516
  const bundleId = await promptText(
517
517
  'Bundle identifier:',
518
518
  `com.${slug}.app`,
519
- 'com.example.app'
519
+ 'com.example.app',
520
520
  )
521
521
 
522
522
  const domain = await promptText(
523
523
  'Development domain:',
524
524
  'localhost:8081',
525
- 'localhost:8081'
525
+ 'localhost:8081',
526
526
  )
527
527
 
528
528
  // Update package.json
@@ -591,8 +591,8 @@ async function setupUncloudDeployment(cwd: string): Promise<void> {
591
591
  console.info()
592
592
  console.info(
593
593
  pc.gray(
594
- 'Uncloud provides:\n • Managed PostgreSQL with logical replication\n • Free subdomain (your-app.uncld.dev)\n • Automatic SSL certificates\n • Easy scaling'
595
- )
594
+ 'Uncloud provides:\n • Managed PostgreSQL with logical replication\n • Free subdomain (your-app.uncld.dev)\n • Automatic SSL certificates\n • Easy scaling',
595
+ ),
596
596
  )
597
597
  console.info()
598
598
 
@@ -615,7 +615,7 @@ async function setupUncloudDeployment(cwd: string): Promise<void> {
615
615
  label: 'ARM64 (Apple Silicon)',
616
616
  hint: 'Hetzner ARM, Oracle ARM, Bare metal ARM servers',
617
617
  },
618
- ]
618
+ ],
619
619
  )
620
620
 
621
621
  if (architecture === 'cancel') {
@@ -653,7 +653,7 @@ async function setupUncloudDeployment(cwd: string): Promise<void> {
653
653
  const appName = await promptText(
654
654
  'App name for subdomain:',
655
655
  defaultAppName,
656
- defaultAppName
656
+ defaultAppName,
657
657
  )
658
658
  domain = `https://${appName}.uncld.dev`
659
659
  zeroUrl = `https://zero-${appName}.uncld.dev`
@@ -661,12 +661,12 @@ async function setupUncloudDeployment(cwd: string): Promise<void> {
661
661
  domain = await promptText(
662
662
  'Enter your custom domain:',
663
663
  undefined,
664
- 'https://yourapp.com'
664
+ 'https://yourapp.com',
665
665
  )
666
666
  zeroUrl = await promptText(
667
667
  'Enter your Zero sync domain:',
668
668
  undefined,
669
- 'https://zero.yourapp.com'
669
+ 'https://zero.yourapp.com',
670
670
  )
671
671
  console.info()
672
672
  showWarning('Custom domain setup requires DNS configuration after deployment')
@@ -693,13 +693,13 @@ async function setupUncloudDeployment(cwd: string): Promise<void> {
693
693
  const dbHost = await promptText(
694
694
  'Database host (e.g., db-xxx.ondigitalocean.com):',
695
695
  undefined,
696
- 'localhost'
696
+ 'localhost',
697
697
  )
698
698
  const dbPort = await promptText('Database port:', '5432', '5432')
699
699
  const dbName = await promptText(
700
700
  'Main database name (will derive Zero databases from this):',
701
701
  'postgres',
702
- 'postgres'
702
+ 'postgres',
703
703
  )
704
704
 
705
705
  // Construct database URL (deployment script will derive Zero databases from this)
@@ -762,7 +762,7 @@ async function setupUncloudDeployment(cwd: string): Promise<void> {
762
762
  const sshKeyPath = await promptText(
763
763
  'Path to SSH private key:',
764
764
  `${homedir()}/.ssh/id_rsa`,
765
- `${homedir()}/.ssh/id_rsa`
765
+ `${homedir()}/.ssh/id_rsa`,
766
766
  )
767
767
 
768
768
  if (sshKeyPath) {
@@ -773,8 +773,8 @@ async function setupUncloudDeployment(cwd: string): Promise<void> {
773
773
  console.info()
774
774
  showInfo(
775
775
  pc.gray(
776
- "For CI/CD, you'll need to add the SSH private key content as a GitHub secret"
777
- )
776
+ "For CI/CD, you'll need to add the SSH private key content as a GitHub secret",
777
+ ),
778
778
  )
779
779
  showInfo(pc.gray('The sync script will help with this'))
780
780
  } else {
@@ -793,18 +793,18 @@ async function setupUncloudDeployment(cwd: string): Promise<void> {
793
793
  console.info(pc.gray(` ${deployHost} (cluster subdomain from Uncloud DNS)`))
794
794
  console.info()
795
795
  console.info(
796
- pc.gray('You can optionally configure custom domains (e.g., app.yourdomain.com) by:')
796
+ pc.gray('You can optionally configure custom domains (e.g., app.yourdomain.com) by:'),
797
797
  )
798
798
  console.info(pc.gray(' 1. Adding CNAME records in your DNS provider'))
799
799
  console.info(pc.gray(` 2. Pointing to your cluster subdomain`))
800
800
  console.info(
801
- pc.gray(' 3. Setting VITE_WEB_HOSTNAME and VITE_ZERO_HOSTNAME in .env.production')
801
+ pc.gray(' 3. Setting VITE_WEB_HOSTNAME and VITE_ZERO_HOSTNAME in .env.production'),
802
802
  )
803
803
  console.info()
804
804
 
805
805
  const configureCustomDomain = await confirmContinue(
806
806
  'Configure custom domain now?',
807
- false
807
+ false,
808
808
  )
809
809
 
810
810
  if (configureCustomDomain) {
@@ -816,27 +816,27 @@ async function setupUncloudDeployment(cwd: string): Promise<void> {
816
816
  const clusterSubdomain = await promptText(
817
817
  'Enter your cluster subdomain from uc dns show:',
818
818
  '',
819
- ''
819
+ '',
820
820
  )
821
821
 
822
822
  if (clusterSubdomain) {
823
823
  console.info()
824
824
  showInfo('DNS Setup Instructions:')
825
825
  console.info(
826
- pc.gray('Add these CNAME records in your DNS provider (e.g., Cloudflare):')
826
+ pc.gray('Add these CNAME records in your DNS provider (e.g., Cloudflare):'),
827
827
  )
828
828
  console.info()
829
829
 
830
830
  const webDomain = await promptText(
831
831
  'Custom domain for web app (e.g., app.yourdomain.com):',
832
832
  '',
833
- ''
833
+ '',
834
834
  )
835
835
 
836
836
  const zeroDomain = await promptText(
837
837
  'Custom domain for zero sync (e.g., zero.yourdomain.com):',
838
838
  '',
839
- ''
839
+ '',
840
840
  )
841
841
 
842
842
  if (webDomain) {
@@ -866,7 +866,7 @@ async function setupUncloudDeployment(cwd: string): Promise<void> {
866
866
  console.info()
867
867
  showInfo('SSL Certificate Options')
868
868
  console.info(
869
- pc.gray("By default, Caddy will use Let's Encrypt for SSL certificates.")
869
+ pc.gray("By default, Caddy will use Let's Encrypt for SSL certificates."),
870
870
  )
871
871
  console.info(pc.gray('If using Cloudflare, you can use Origin CA instead to:'))
872
872
  console.info(pc.gray(" • Bypass Let's Encrypt rate limits"))
@@ -875,7 +875,7 @@ async function setupUncloudDeployment(cwd: string): Promise<void> {
875
875
 
876
876
  const useOriginCA = await confirmContinue(
877
877
  'Use Cloudflare Origin CA? (requires Cloudflare account)',
878
- false
878
+ false,
879
879
  )
880
880
 
881
881
  if (useOriginCA) {
@@ -885,8 +885,8 @@ async function setupUncloudDeployment(cwd: string): Promise<void> {
885
885
  console.info(pc.gray('2. Click "Create Certificate"'))
886
886
  console.info(
887
887
  pc.gray(
888
- `3. Add hostnames: ${webDomain}${zeroDomain ? `, ${zeroDomain}` : ''}`
889
- )
888
+ `3. Add hostnames: ${webDomain}${zeroDomain ? `, ${zeroDomain}` : ''}`,
889
+ ),
890
890
  )
891
891
  console.info(pc.gray('4. Choose 15 year validity'))
892
892
  console.info(pc.gray('5. Save certificate to: certs/origin.pem'))
@@ -896,13 +896,13 @@ async function setupUncloudDeployment(cwd: string): Promise<void> {
896
896
  const certPath = await promptText(
897
897
  'Path to Origin CA certificate:',
898
898
  'certs/origin.pem',
899
- 'certs/origin.pem'
899
+ 'certs/origin.pem',
900
900
  )
901
901
 
902
902
  const keyPath = await promptText(
903
903
  'Path to Origin CA private key:',
904
904
  'certs/origin.key',
905
- 'certs/origin.key'
905
+ 'certs/origin.key',
906
906
  )
907
907
 
908
908
  if (certPath && keyPath) {
@@ -945,7 +945,7 @@ async function setupUncloudDeployment(cwd: string): Promise<void> {
945
945
  console.info()
946
946
  const syncToGitHub = await confirmContinue(
947
947
  'Sync environment to GitHub secrets for CI/CD?',
948
- true
948
+ true,
949
949
  )
950
950
 
951
951
  if (syncToGitHub) {
@@ -992,8 +992,8 @@ async function setupSSTDeployment(cwd: string): Promise<void> {
992
992
  console.info()
993
993
  console.info(
994
994
  pc.gray(
995
- 'SST provides:\n • AWS infrastructure (ECS, Aurora, ALB)\n • Auto-scaling\n • Full control over resources\n • Higher setup complexity'
996
- )
995
+ 'SST provides:\n • AWS infrastructure (ECS, Aurora, ALB)\n • Auto-scaling\n • Full control over resources\n • Higher setup complexity',
996
+ ),
997
997
  )
998
998
  console.info()
999
999
 
@@ -1002,7 +1002,7 @@ async function setupSSTDeployment(cwd: string): Promise<void> {
1002
1002
  showInfo('AWS ECS Architecture')
1003
1003
  console.info(pc.gray('AWS Graviton (ARM64) is ~40% cheaper than x86_64'))
1004
1004
  console.info(
1005
- pc.gray('Both have excellent performance, ARM recommended for cost savings')
1005
+ pc.gray('Both have excellent performance, ARM recommended for cost savings'),
1006
1006
  )
1007
1007
  console.info()
1008
1008
 
@@ -1019,7 +1019,7 @@ async function setupSSTDeployment(cwd: string): Promise<void> {
1019
1019
  label: 'AMD64/x86_64 (Intel/AMD)',
1020
1020
  hint: 'Standard option if you need specific x86 dependencies',
1021
1021
  },
1022
- ]
1022
+ ],
1023
1023
  )
1024
1024
 
1025
1025
  if (architecture === 'cancel') {
@@ -1034,7 +1034,7 @@ async function setupSSTDeployment(cwd: string): Promise<void> {
1034
1034
 
1035
1035
  const shouldContinue = await confirmContinue(
1036
1036
  'Continue with AWS SST setup? (requires AWS account)',
1037
- false
1037
+ false,
1038
1038
  )
1039
1039
 
1040
1040
  if (!shouldContinue) {
@@ -1066,11 +1066,11 @@ async function setupSSTDeployment(cwd: string): Promise<void> {
1066
1066
  const archValue = architecture === 'arm64' ? 'arm64' : 'x86_64'
1067
1067
  sstConfig = sstConfig.replace(
1068
1068
  /architecture:\s*['"]arm64['"]/g,
1069
- `architecture: '${archValue}'`
1069
+ `architecture: '${archValue}'`,
1070
1070
  )
1071
1071
  sstConfig = sstConfig.replace(
1072
1072
  /architecture:\s*['"]x86_64['"]/g,
1073
- `architecture: '${archValue}'`
1073
+ `architecture: '${archValue}'`,
1074
1074
  )
1075
1075
 
1076
1076
  writeFileSync(sstConfigPath, sstConfig)
@@ -1103,7 +1103,7 @@ async function setupSSTDeployment(cwd: string): Promise<void> {
1103
1103
  console.info()
1104
1104
  const syncToGitHub = await confirmContinue(
1105
1105
  'Sync environment to GitHub secrets for CI/CD?',
1106
- true
1106
+ true,
1107
1107
  )
1108
1108
 
1109
1109
  if (syncToGitHub) {
@@ -1119,7 +1119,7 @@ async function setupSSTDeployment(cwd: string): Promise<void> {
1119
1119
 
1120
1120
  console.info()
1121
1121
  showInfo(
1122
- 'For complete AWS deployment guide, see: https://docs.yourapp.com/deployment/sst'
1122
+ 'For complete AWS deployment guide, see: https://docs.yourapp.com/deployment/sst',
1123
1123
  )
1124
1124
  }
1125
1125
 
@@ -1129,8 +1129,8 @@ async function configureCIRunners(cwd: string): Promise<void> {
1129
1129
  console.info(
1130
1130
  pc.gray(
1131
1131
  'Your project uses ARM64 (Apple Silicon) architecture for Docker builds.\n' +
1132
- 'GitHub Actions requires compatible runners for CI/CD to work properly.'
1133
- )
1132
+ 'GitHub Actions requires compatible runners for CI/CD to work properly.',
1133
+ ),
1134
1134
  )
1135
1135
  console.info()
1136
1136
 
@@ -1157,13 +1157,13 @@ async function configureCIRunners(cwd: string): Promise<void> {
1157
1157
  label: 'Configure Later',
1158
1158
  hint: 'Skip for now (CI will fail until configured)',
1159
1159
  },
1160
- ]
1160
+ ],
1161
1161
  )
1162
1162
 
1163
1163
  if (runnerChoice === 'cancel' || runnerChoice === 'skip') {
1164
1164
  showInfo('Skipping CI runner configuration')
1165
1165
  showWarning(
1166
- 'CI/CD will fail until you configure runners. Update .github/workflows/ci.yml'
1166
+ 'CI/CD will fail until you configure runners. Update .github/workflows/ci.yml',
1167
1167
  )
1168
1168
  return
1169
1169
  }
@@ -1195,7 +1195,7 @@ async function configureCIRunners(cwd: string): Promise<void> {
1195
1195
  // Update CI to use GitHub ARM runners
1196
1196
  ciContent = ciContent.replace(
1197
1197
  /runs-on:.*warp-ubuntu-latest-arm64.*/,
1198
- 'runs-on: ubuntu-24.04-arm'
1198
+ 'runs-on: ubuntu-24.04-arm',
1199
1199
  )
1200
1200
  writeFileSync(ciConfigPath, ciContent)
1201
1201
 
@@ -1207,7 +1207,7 @@ async function configureCIRunners(cwd: string): Promise<void> {
1207
1207
  // Update CI to use standard GitHub runners
1208
1208
  ciContent = ciContent.replace(
1209
1209
  /runs-on:.*warp-ubuntu-latest-arm64.*/,
1210
- 'runs-on: ubuntu-latest'
1210
+ 'runs-on: ubuntu-latest',
1211
1211
  )
1212
1212
  writeFileSync(ciConfigPath, ciContent)
1213
1213
 
@@ -1219,7 +1219,7 @@ async function configureCIRunners(cwd: string): Promise<void> {
1219
1219
  showSuccess('✓ Updated CI to use free GitHub x64 runners')
1220
1220
  showSuccess('✓ Updated Docker builds to x64 architecture')
1221
1221
  showWarning(
1222
- "Note: Docker images built on x64 won't run on ARM64 machines without emulation"
1222
+ "Note: Docker images built on x64 won't run on ARM64 machines without emulation",
1223
1223
  )
1224
1224
  }
1225
1225
 
@@ -1228,7 +1228,7 @@ async function configureCIRunners(cwd: string): Promise<void> {
1228
1228
  } catch (error) {
1229
1229
  showError('Failed to update CI configuration')
1230
1230
  showInfo(
1231
- 'Please manually update .github/workflows/ci.yml and scripts/web/build-docker.ts'
1231
+ 'Please manually update .github/workflows/ci.yml and scripts/web/build-docker.ts',
1232
1232
  )
1233
1233
  }
1234
1234
  }
@@ -1279,10 +1279,10 @@ async function startServices(cwd: string): Promise<void> {
1279
1279
  async function replacePortInProject(
1280
1280
  cwd: string,
1281
1281
  oldPort: string,
1282
- newPort: string
1282
+ newPort: string,
1283
1283
  ): Promise<void> {
1284
1284
  const spinner = showSpinner(
1285
- `Replacing port ${oldPort} with ${newPort} throughout project...`
1285
+ `Replacing port ${oldPort} with ${newPort} throughout project...`,
1286
1286
  )
1287
1287
 
1288
1288
  // directories to skip
@@ -51,7 +51,7 @@ export const runCommand = defineCommand({
51
51
  ([name, path]) => ({
52
52
  name: name.replace(`${firstArg}/`, ''),
53
53
  path,
54
- })
54
+ }),
55
55
  )
56
56
 
57
57
  await runScriptsInParallel(scriptsToRun, {
@@ -119,7 +119,7 @@ const newCommand = defineCommand({
119
119
  // check if file exists
120
120
  if (existsSync(fullPath)) {
121
121
  console.error(
122
- pc.red(`✗ Script already exists: ${relative(process.cwd(), fullPath)}`)
122
+ pc.red(`✗ Script already exists: ${relative(process.cwd(), fullPath)}`),
123
123
  )
124
124
  process.exit(1)
125
125
  }
@@ -218,8 +218,8 @@ const ejectCommand = defineCommand({
218
218
  if (!sourceScriptsDir) {
219
219
  console.error(
220
220
  pc.red(
221
- '✗ Built-in scripts package (@take-out/scripts) not found or not installed'
222
- )
221
+ '✗ Built-in scripts package (@take-out/scripts) not found or not installed',
222
+ ),
223
223
  )
224
224
  console.info()
225
225
  console.info(pc.dim('Install with: bun add -d @take-out/scripts'))
@@ -59,7 +59,7 @@ function toSkillName(name: string): string {
59
59
  }
60
60
 
61
61
  function collectAllDocs(
62
- cwd: string
62
+ cwd: string,
63
63
  ): Array<{ name: string; path: string; source: 'package' | 'local' }> {
64
64
  const docs: Array<{ name: string; path: string; source: 'package' | 'local' }> = []
65
65
  const seen = new Set<string>()
@@ -89,7 +89,7 @@ function collectAllDocs(
89
89
 
90
90
  async function generateDocSkills(
91
91
  cwd: string,
92
- clean: boolean
92
+ clean: boolean,
93
93
  ): Promise<{
94
94
  symlinked: number
95
95
  generated: number
@@ -173,13 +173,13 @@ async function generateDocSkills(
173
173
 
174
174
  const sourceLabel = doc.source === 'local' ? pc.blue('local') : pc.dim('package')
175
175
  console.info(
176
- ` ${pc.green('⟷')} ${skillName} ${sourceLabel} ${pc.dim('(symlink)')}`
176
+ ` ${pc.green('⟷')} ${skillName} ${sourceLabel} ${pc.dim('(symlink)')}`,
177
177
  )
178
178
  } else {
179
179
  if (!hasFrontmatter) {
180
180
  skipped++
181
181
  console.info(
182
- ` ${pc.yellow('!')} skipped ${pc.dim(doc.name)} ${pc.dim('(missing skill frontmatter)')}`
182
+ ` ${pc.yellow('!')} skipped ${pc.dim(doc.name)} ${pc.dim('(missing skill frontmatter)')}`,
183
183
  )
184
184
  continue
185
185
  }
@@ -277,11 +277,11 @@ const generateCommand = defineCommand({
277
277
  if (symlinked > 0) console.info(` ${pc.green(`${symlinked} symlinked`)}`)
278
278
  if (generated > 0)
279
279
  console.info(
280
- ` ${pc.yellow(`${generated} generated`)} ${pc.dim('(add frontmatter to enable symlink)')}`
280
+ ` ${pc.yellow(`${generated} generated`)} ${pc.dim('(add frontmatter to enable symlink)')}`,
281
281
  )
282
282
  if (skipped > 0)
283
283
  console.info(
284
- ` ${pc.yellow(`${skipped} skipped`)} ${pc.dim('(missing skill frontmatter)')}`
284
+ ` ${pc.yellow(`${skipped} skipped`)} ${pc.dim('(missing skill frontmatter)')}`,
285
285
  )
286
286
  if (unchanged > 0) console.info(` ${pc.dim(`${unchanged} unchanged`)}`)
287
287
  if (removed > 0) console.info(` ${pc.red(`${removed} removed`)}`)
@@ -42,7 +42,7 @@ function getSyncPrompt(): string {
42
42
  throw new Error('Could not find sync-prompt.md in packages/docs')
43
43
  } catch (error) {
44
44
  throw new Error(
45
- `Could not load sync prompt: ${error instanceof Error ? error.message : 'Unknown error'}`
45
+ `Could not load sync prompt: ${error instanceof Error ? error.message : 'Unknown error'}`,
46
46
  )
47
47
  }
48
48
  }
@@ -230,8 +230,8 @@ export const syncCommand = defineCommand({
230
230
  if (!isAuto) {
231
231
  console.info(
232
232
  pc.dim(
233
- 'Note: Claude Code will run in headless mode and make changes automatically.'
234
- )
233
+ 'Note: Claude Code will run in headless mode and make changes automatically.',
234
+ ),
235
235
  )
236
236
  console.info(pc.dim('You will be asked to confirm important decisions.'))
237
237
  console.info()