@take-out/cli 0.0.39

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 (331) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +274 -0
  3. package/cli.mjs +3 -0
  4. package/dist/cjs/cli.cjs +71 -0
  5. package/dist/cjs/cli.js +70 -0
  6. package/dist/cjs/cli.js.map +6 -0
  7. package/dist/cjs/cli.native.js +79 -0
  8. package/dist/cjs/cli.native.js.map +6 -0
  9. package/dist/cjs/commands/changed.cjs +212 -0
  10. package/dist/cjs/commands/changed.js +214 -0
  11. package/dist/cjs/commands/changed.js.map +6 -0
  12. package/dist/cjs/commands/changed.native.js +289 -0
  13. package/dist/cjs/commands/changed.native.js.map +6 -0
  14. package/dist/cjs/commands/docs.cjs +388 -0
  15. package/dist/cjs/commands/docs.js +313 -0
  16. package/dist/cjs/commands/docs.js.map +6 -0
  17. package/dist/cjs/commands/docs.native.js +476 -0
  18. package/dist/cjs/commands/docs.native.js.map +6 -0
  19. package/dist/cjs/commands/env-setup.cjs +90 -0
  20. package/dist/cjs/commands/env-setup.js +78 -0
  21. package/dist/cjs/commands/env-setup.js.map +6 -0
  22. package/dist/cjs/commands/env-setup.native.js +85 -0
  23. package/dist/cjs/commands/env-setup.native.js.map +6 -0
  24. package/dist/cjs/commands/onboard.cjs +479 -0
  25. package/dist/cjs/commands/onboard.js +631 -0
  26. package/dist/cjs/commands/onboard.js.map +6 -0
  27. package/dist/cjs/commands/onboard.native.js +608 -0
  28. package/dist/cjs/commands/onboard.native.js.map +6 -0
  29. package/dist/cjs/commands/run.cjs +148 -0
  30. package/dist/cjs/commands/run.js +116 -0
  31. package/dist/cjs/commands/run.js.map +6 -0
  32. package/dist/cjs/commands/run.native.js +140 -0
  33. package/dist/cjs/commands/run.native.js.map +6 -0
  34. package/dist/cjs/commands/script.cjs +379 -0
  35. package/dist/cjs/commands/script.js +339 -0
  36. package/dist/cjs/commands/script.js.map +6 -0
  37. package/dist/cjs/commands/script.native.js +449 -0
  38. package/dist/cjs/commands/script.native.js.map +6 -0
  39. package/dist/cjs/commands/sync.cjs +190 -0
  40. package/dist/cjs/commands/sync.js +168 -0
  41. package/dist/cjs/commands/sync.js.map +6 -0
  42. package/dist/cjs/commands/sync.native.js +211 -0
  43. package/dist/cjs/commands/sync.native.js.map +6 -0
  44. package/dist/cjs/constants/ascii.cjs +36 -0
  45. package/dist/cjs/constants/ascii.js +30 -0
  46. package/dist/cjs/constants/ascii.js.map +6 -0
  47. package/dist/cjs/constants/ascii.native.js +36 -0
  48. package/dist/cjs/constants/ascii.native.js.map +6 -0
  49. package/dist/cjs/index.cjs +64 -0
  50. package/dist/cjs/index.js +55 -0
  51. package/dist/cjs/index.js.map +6 -0
  52. package/dist/cjs/index.native.js +94 -0
  53. package/dist/cjs/index.native.js.map +6 -0
  54. package/dist/cjs/types.cjs +16 -0
  55. package/dist/cjs/types.js +14 -0
  56. package/dist/cjs/types.js.map +6 -0
  57. package/dist/cjs/types.native.js +15 -0
  58. package/dist/cjs/types.native.js.map +6 -0
  59. package/dist/cjs/utils/env-categories.cjs +272 -0
  60. package/dist/cjs/utils/env-categories.js +296 -0
  61. package/dist/cjs/utils/env-categories.js.map +6 -0
  62. package/dist/cjs/utils/env-categories.native.js +317 -0
  63. package/dist/cjs/utils/env-categories.native.js.map +6 -0
  64. package/dist/cjs/utils/env-setup.cjs +181 -0
  65. package/dist/cjs/utils/env-setup.js +190 -0
  66. package/dist/cjs/utils/env-setup.js.map +6 -0
  67. package/dist/cjs/utils/env-setup.native.js +264 -0
  68. package/dist/cjs/utils/env-setup.native.js.map +6 -0
  69. package/dist/cjs/utils/env.cjs +118 -0
  70. package/dist/cjs/utils/env.js +97 -0
  71. package/dist/cjs/utils/env.js.map +6 -0
  72. package/dist/cjs/utils/env.native.js +128 -0
  73. package/dist/cjs/utils/env.native.js.map +6 -0
  74. package/dist/cjs/utils/files.cjs +215 -0
  75. package/dist/cjs/utils/files.js +164 -0
  76. package/dist/cjs/utils/files.js.map +6 -0
  77. package/dist/cjs/utils/files.native.js +266 -0
  78. package/dist/cjs/utils/files.native.js.map +6 -0
  79. package/dist/cjs/utils/parallel-runner.cjs +99 -0
  80. package/dist/cjs/utils/parallel-runner.js +84 -0
  81. package/dist/cjs/utils/parallel-runner.js.map +6 -0
  82. package/dist/cjs/utils/parallel-runner.native.js +123 -0
  83. package/dist/cjs/utils/parallel-runner.native.js.map +6 -0
  84. package/dist/cjs/utils/ports.cjs +101 -0
  85. package/dist/cjs/utils/ports.js +81 -0
  86. package/dist/cjs/utils/ports.js.map +6 -0
  87. package/dist/cjs/utils/ports.native.js +130 -0
  88. package/dist/cjs/utils/ports.native.js.map +6 -0
  89. package/dist/cjs/utils/prerequisites.cjs +119 -0
  90. package/dist/cjs/utils/prerequisites.js +107 -0
  91. package/dist/cjs/utils/prerequisites.js.map +6 -0
  92. package/dist/cjs/utils/prerequisites.native.js +127 -0
  93. package/dist/cjs/utils/prerequisites.native.js.map +6 -0
  94. package/dist/cjs/utils/prompts.cjs +161 -0
  95. package/dist/cjs/utils/prompts.js +162 -0
  96. package/dist/cjs/utils/prompts.js.map +6 -0
  97. package/dist/cjs/utils/prompts.native.js +179 -0
  98. package/dist/cjs/utils/prompts.native.js.map +6 -0
  99. package/dist/cjs/utils/script-listing.cjs +113 -0
  100. package/dist/cjs/utils/script-listing.js +108 -0
  101. package/dist/cjs/utils/script-listing.js.map +6 -0
  102. package/dist/cjs/utils/script-listing.native.js +174 -0
  103. package/dist/cjs/utils/script-listing.native.js.map +6 -0
  104. package/dist/cjs/utils/sync.cjs +85 -0
  105. package/dist/cjs/utils/sync.js +70 -0
  106. package/dist/cjs/utils/sync.js.map +6 -0
  107. package/dist/cjs/utils/sync.native.js +84 -0
  108. package/dist/cjs/utils/sync.native.js.map +6 -0
  109. package/dist/cjs/utils/welcome.cjs +50 -0
  110. package/dist/cjs/utils/welcome.js +42 -0
  111. package/dist/cjs/utils/welcome.js.map +6 -0
  112. package/dist/cjs/utils/welcome.native.js +47 -0
  113. package/dist/cjs/utils/welcome.native.js.map +6 -0
  114. package/dist/esm/cli.js +79 -0
  115. package/dist/esm/cli.js.map +6 -0
  116. package/dist/esm/cli.mjs +71 -0
  117. package/dist/esm/cli.mjs.map +1 -0
  118. package/dist/esm/cli.native.js +69 -0
  119. package/dist/esm/cli.native.js.map +1 -0
  120. package/dist/esm/commands/changed.js +194 -0
  121. package/dist/esm/commands/changed.js.map +6 -0
  122. package/dist/esm/commands/changed.mjs +178 -0
  123. package/dist/esm/commands/changed.mjs.map +1 -0
  124. package/dist/esm/commands/changed.native.js +273 -0
  125. package/dist/esm/commands/changed.native.js.map +1 -0
  126. package/dist/esm/commands/docs.js +306 -0
  127. package/dist/esm/commands/docs.js.map +6 -0
  128. package/dist/esm/commands/docs.mjs +353 -0
  129. package/dist/esm/commands/docs.mjs.map +1 -0
  130. package/dist/esm/commands/docs.native.js +516 -0
  131. package/dist/esm/commands/docs.native.js.map +1 -0
  132. package/dist/esm/commands/env-setup.js +56 -0
  133. package/dist/esm/commands/env-setup.js.map +6 -0
  134. package/dist/esm/commands/env-setup.mjs +56 -0
  135. package/dist/esm/commands/env-setup.mjs.map +1 -0
  136. package/dist/esm/commands/env-setup.native.js +59 -0
  137. package/dist/esm/commands/env-setup.native.js.map +1 -0
  138. package/dist/esm/commands/onboard.js +645 -0
  139. package/dist/esm/commands/onboard.js.map +6 -0
  140. package/dist/esm/commands/onboard.mjs +445 -0
  141. package/dist/esm/commands/onboard.mjs.map +1 -0
  142. package/dist/esm/commands/onboard.native.js +584 -0
  143. package/dist/esm/commands/onboard.native.js.map +1 -0
  144. package/dist/esm/commands/run.js +95 -0
  145. package/dist/esm/commands/run.js.map +6 -0
  146. package/dist/esm/commands/run.mjs +114 -0
  147. package/dist/esm/commands/run.mjs.map +1 -0
  148. package/dist/esm/commands/run.native.js +133 -0
  149. package/dist/esm/commands/run.native.js.map +1 -0
  150. package/dist/esm/commands/script.js +338 -0
  151. package/dist/esm/commands/script.js.map +6 -0
  152. package/dist/esm/commands/script.mjs +336 -0
  153. package/dist/esm/commands/script.mjs.map +1 -0
  154. package/dist/esm/commands/script.native.js +445 -0
  155. package/dist/esm/commands/script.native.js.map +1 -0
  156. package/dist/esm/commands/sync.js +158 -0
  157. package/dist/esm/commands/sync.js.map +6 -0
  158. package/dist/esm/commands/sync.mjs +155 -0
  159. package/dist/esm/commands/sync.mjs.map +1 -0
  160. package/dist/esm/commands/sync.native.js +173 -0
  161. package/dist/esm/commands/sync.native.js.map +1 -0
  162. package/dist/esm/constants/ascii.js +14 -0
  163. package/dist/esm/constants/ascii.js.map +6 -0
  164. package/dist/esm/constants/ascii.mjs +12 -0
  165. package/dist/esm/constants/ascii.mjs.map +1 -0
  166. package/dist/esm/constants/ascii.native.js +12 -0
  167. package/dist/esm/constants/ascii.native.js.map +1 -0
  168. package/dist/esm/index.js +83 -0
  169. package/dist/esm/index.js.map +6 -0
  170. package/dist/esm/index.mjs +7 -0
  171. package/dist/esm/index.mjs.map +1 -0
  172. package/dist/esm/index.native.js +7 -0
  173. package/dist/esm/index.native.js.map +1 -0
  174. package/dist/esm/types.js +1 -0
  175. package/dist/esm/types.js.map +6 -0
  176. package/dist/esm/types.mjs +2 -0
  177. package/dist/esm/types.mjs.map +1 -0
  178. package/dist/esm/types.native.js +2 -0
  179. package/dist/esm/types.native.js.map +1 -0
  180. package/dist/esm/utils/env-categories.js +272 -0
  181. package/dist/esm/utils/env-categories.js.map +6 -0
  182. package/dist/esm/utils/env-categories.mjs +233 -0
  183. package/dist/esm/utils/env-categories.mjs.map +1 -0
  184. package/dist/esm/utils/env-categories.native.js +246 -0
  185. package/dist/esm/utils/env-categories.native.js.map +1 -0
  186. package/dist/esm/utils/env-setup.js +173 -0
  187. package/dist/esm/utils/env-setup.js.map +6 -0
  188. package/dist/esm/utils/env-setup.mjs +146 -0
  189. package/dist/esm/utils/env-setup.mjs.map +1 -0
  190. package/dist/esm/utils/env-setup.native.js +243 -0
  191. package/dist/esm/utils/env-setup.native.js.map +1 -0
  192. package/dist/esm/utils/env.js +83 -0
  193. package/dist/esm/utils/env.js.map +6 -0
  194. package/dist/esm/utils/env.mjs +90 -0
  195. package/dist/esm/utils/env.mjs.map +1 -0
  196. package/dist/esm/utils/env.native.js +99 -0
  197. package/dist/esm/utils/env.native.js.map +1 -0
  198. package/dist/esm/utils/files.js +150 -0
  199. package/dist/esm/utils/files.js.map +6 -0
  200. package/dist/esm/utils/files.mjs +187 -0
  201. package/dist/esm/utils/files.mjs.map +1 -0
  202. package/dist/esm/utils/files.native.js +247 -0
  203. package/dist/esm/utils/files.native.js.map +1 -0
  204. package/dist/esm/utils/parallel-runner.js +69 -0
  205. package/dist/esm/utils/parallel-runner.js.map +6 -0
  206. package/dist/esm/utils/parallel-runner.mjs +76 -0
  207. package/dist/esm/utils/parallel-runner.mjs.map +1 -0
  208. package/dist/esm/utils/parallel-runner.native.js +109 -0
  209. package/dist/esm/utils/parallel-runner.native.js.map +1 -0
  210. package/dist/esm/utils/ports.js +65 -0
  211. package/dist/esm/utils/ports.js.map +6 -0
  212. package/dist/esm/utils/ports.mjs +74 -0
  213. package/dist/esm/utils/ports.mjs.map +1 -0
  214. package/dist/esm/utils/ports.native.js +93 -0
  215. package/dist/esm/utils/ports.native.js.map +1 -0
  216. package/dist/esm/utils/prerequisites.js +91 -0
  217. package/dist/esm/utils/prerequisites.js.map +6 -0
  218. package/dist/esm/utils/prerequisites.mjs +91 -0
  219. package/dist/esm/utils/prerequisites.mjs.map +1 -0
  220. package/dist/esm/utils/prerequisites.native.js +97 -0
  221. package/dist/esm/utils/prerequisites.native.js.map +1 -0
  222. package/dist/esm/utils/prompts.js +139 -0
  223. package/dist/esm/utils/prompts.js.map +6 -0
  224. package/dist/esm/utils/prompts.mjs +112 -0
  225. package/dist/esm/utils/prompts.mjs.map +1 -0
  226. package/dist/esm/utils/prompts.native.js +115 -0
  227. package/dist/esm/utils/prompts.native.js.map +1 -0
  228. package/dist/esm/utils/script-listing.js +91 -0
  229. package/dist/esm/utils/script-listing.js.map +6 -0
  230. package/dist/esm/utils/script-listing.mjs +76 -0
  231. package/dist/esm/utils/script-listing.mjs.map +1 -0
  232. package/dist/esm/utils/script-listing.native.js +151 -0
  233. package/dist/esm/utils/script-listing.native.js.map +1 -0
  234. package/dist/esm/utils/sync.js +50 -0
  235. package/dist/esm/utils/sync.js.map +6 -0
  236. package/dist/esm/utils/sync.mjs +48 -0
  237. package/dist/esm/utils/sync.mjs.map +1 -0
  238. package/dist/esm/utils/sync.native.js +53 -0
  239. package/dist/esm/utils/sync.native.js.map +1 -0
  240. package/dist/esm/utils/welcome.js +21 -0
  241. package/dist/esm/utils/welcome.js.map +6 -0
  242. package/dist/esm/utils/welcome.mjs +15 -0
  243. package/dist/esm/utils/welcome.mjs.map +1 -0
  244. package/dist/esm/utils/welcome.native.js +18 -0
  245. package/dist/esm/utils/welcome.native.js.map +1 -0
  246. package/docs/aggregates.md +579 -0
  247. package/docs/cloudflare-dev-tunnel.md +41 -0
  248. package/docs/database.md +203 -0
  249. package/docs/docs.md +8 -0
  250. package/docs/emitters.md +562 -0
  251. package/docs/hot-updater.md +223 -0
  252. package/docs/native-hot-update.md +252 -0
  253. package/docs/one-components.md +234 -0
  254. package/docs/one-hooks.md +570 -0
  255. package/docs/one-routes.md +660 -0
  256. package/docs/package-json.md +115 -0
  257. package/docs/react-native-navigation-flow.md +184 -0
  258. package/docs/scripts.md +147 -0
  259. package/docs/sync-prompt.md +208 -0
  260. package/docs/tamagui.md +478 -0
  261. package/docs/testing-integration.md +564 -0
  262. package/docs/triggers.md +450 -0
  263. package/docs/zero.md +719 -0
  264. package/package.json +76 -0
  265. package/scripts/seed.ts +209 -0
  266. package/src/cli.ts +147 -0
  267. package/src/commands/changed.ts +313 -0
  268. package/src/commands/docs.ts +582 -0
  269. package/src/commands/env-setup.ts +69 -0
  270. package/src/commands/onboard.ts +1391 -0
  271. package/src/commands/run.ts +173 -0
  272. package/src/commands/script.ts +587 -0
  273. package/src/commands/sync.ts +305 -0
  274. package/src/constants/ascii.ts +17 -0
  275. package/src/index.ts +63 -0
  276. package/src/types.ts +59 -0
  277. package/src/utils/env-categories.ts +245 -0
  278. package/src/utils/env-setup.ts +338 -0
  279. package/src/utils/env.ts +127 -0
  280. package/src/utils/files.ts +302 -0
  281. package/src/utils/parallel-runner.ts +129 -0
  282. package/src/utils/ports.ts +77 -0
  283. package/src/utils/prerequisites.ts +137 -0
  284. package/src/utils/prompts.ts +197 -0
  285. package/src/utils/script-listing.ts +214 -0
  286. package/src/utils/sync.ts +101 -0
  287. package/src/withOpSqliteStatic.cjs +51 -0
  288. package/types/cli.d.ts +7 -0
  289. package/types/cli.d.ts.map +1 -0
  290. package/types/commands/changed.d.ts +14 -0
  291. package/types/commands/changed.d.ts.map +1 -0
  292. package/types/commands/docs.d.ts +5 -0
  293. package/types/commands/docs.d.ts.map +1 -0
  294. package/types/commands/env-setup.d.ts +25 -0
  295. package/types/commands/env-setup.d.ts.map +1 -0
  296. package/types/commands/onboard.d.ts +16 -0
  297. package/types/commands/onboard.d.ts.map +1 -0
  298. package/types/commands/run.d.ts +8 -0
  299. package/types/commands/run.d.ts.map +1 -0
  300. package/types/commands/script.d.ts +28 -0
  301. package/types/commands/script.d.ts.map +1 -0
  302. package/types/commands/sync.d.ts +5 -0
  303. package/types/commands/sync.d.ts.map +1 -0
  304. package/types/constants/ascii.d.ts +6 -0
  305. package/types/constants/ascii.d.ts.map +1 -0
  306. package/types/index.d.ts +12 -0
  307. package/types/index.d.ts.map +1 -0
  308. package/types/types.d.ts +54 -0
  309. package/types/types.d.ts.map +1 -0
  310. package/types/utils/env-categories.d.ts +8 -0
  311. package/types/utils/env-categories.d.ts.map +1 -0
  312. package/types/utils/env-setup.d.ts +10 -0
  313. package/types/utils/env-setup.d.ts.map +1 -0
  314. package/types/utils/env.d.ts +19 -0
  315. package/types/utils/env.d.ts.map +1 -0
  316. package/types/utils/files.d.ts +47 -0
  317. package/types/utils/files.d.ts.map +1 -0
  318. package/types/utils/parallel-runner.d.ts +15 -0
  319. package/types/utils/parallel-runner.d.ts.map +1 -0
  320. package/types/utils/ports.d.ts +16 -0
  321. package/types/utils/ports.d.ts.map +1 -0
  322. package/types/utils/prerequisites.d.ts +11 -0
  323. package/types/utils/prerequisites.d.ts.map +1 -0
  324. package/types/utils/prompts.d.ts +30 -0
  325. package/types/utils/prompts.d.ts.map +1 -0
  326. package/types/utils/script-listing.d.ts +7 -0
  327. package/types/utils/script-listing.d.ts.map +1 -0
  328. package/types/utils/sync.d.ts +16 -0
  329. package/types/utils/sync.d.ts.map +1 -0
  330. package/types/utils/welcome.d.ts +6 -0
  331. package/types/utils/welcome.d.ts.map +1 -0
@@ -0,0 +1,181 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf,
6
+ __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: !0
11
+ });
12
+ },
13
+ __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
15
+ get: () => from[key],
16
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
17
+ });
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
26
+ value: mod,
27
+ enumerable: !0
28
+ }) : target, mod)),
29
+ __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
30
+ value: !0
31
+ }), mod);
32
+ var env_setup_exports = {};
33
+ __export(env_setup_exports, {
34
+ listCategories: () => listCategories,
35
+ setupProductionEnv: () => setupProductionEnv
36
+ });
37
+ module.exports = __toCommonJS(env_setup_exports);
38
+ var import_node_fs = require("node:fs"),
39
+ import_node_path = require("node:path"),
40
+ clack = __toESM(require("@clack/prompts"), 1),
41
+ import_picocolors = __toESM(require("picocolors"), 1),
42
+ import_env = require("./env.cjs"),
43
+ import_env_categories = require("./env-categories.cjs");
44
+ async function setupProductionEnv(cwd, options = {}) {
45
+ const envFile = options.envFile || ".env.production",
46
+ fullPath = (0, import_node_path.resolve)(cwd, envFile),
47
+ cleanup = () => {
48
+ console.info(`
49
+ ` + import_picocolors.default.yellow("Setup interrupted. You can resume anytime with:")), console.info(import_picocolors.default.cyan(" bun takeout env:setup")), console.info(import_picocolors.default.gray(`
50
+ Note: All environment variables are optional for local development.`)), process.exit(0);
51
+ };
52
+ process.on("SIGINT", cleanup), process.on("SIGTERM", cleanup);
53
+ try {
54
+ if (clack.intro(import_picocolors.default.bgCyan(import_picocolors.default.black(" Production Environment Setup "))), console.info(import_picocolors.default.gray("All environment variables are optional.")), console.info(import_picocolors.default.gray(`You can skip any section or re-run this setup anytime.
55
+ `)), !(0, import_env.envFileExists)(cwd, envFile)) {
56
+ const createFile = await clack.confirm({
57
+ message: `${envFile} doesn't exist. Create it from example?`,
58
+ initialValue: !0
59
+ });
60
+ if (clack.isCancel(createFile) || !createFile) return clack.cancel("Setup cancelled"), process.removeListener("SIGINT", cleanup), process.removeListener("SIGTERM", cleanup), !1;
61
+ const exampleFile = ".env.production.example";
62
+ (0, import_env.envFileExists)(cwd, exampleFile) ? ((0, import_env.copyEnvFile)(cwd, exampleFile, envFile), console.info(import_picocolors.default.green(`\u2713 Created ${envFile} from example
63
+ `))) : ((0, import_node_fs.writeFileSync)(fullPath, `# Production Environment Variables
64
+ `), console.info(import_picocolors.default.green(`\u2713 Created empty ${envFile}
65
+ `)));
66
+ }
67
+ let categoriesToSetup = options.onlyCategory ? import_env_categories.envCategories.filter(cat => cat.id === options.onlyCategory) : import_env_categories.envCategories;
68
+ if (categoriesToSetup.length === 0) return clack.cancel(`Category "${options.onlyCategory}" not found`), process.removeListener("SIGINT", cleanup), process.removeListener("SIGTERM", cleanup), !1;
69
+ if (options.interactive !== !1 && !options.onlyCategory) {
70
+ const setupProd = await clack.confirm({
71
+ message: "Do you want to set up production environment variables?",
72
+ initialValue: !1
73
+ });
74
+ if (clack.isCancel(setupProd) || !setupProd) return clack.note(`You can set up production environment later with:
75
+ ${import_picocolors.default.cyan("bun takeout env:setup")}`, import_picocolors.default.yellow("Skipping production setup")), process.removeListener("SIGINT", cleanup), process.removeListener("SIGTERM", cleanup), !0;
76
+ }
77
+ for (const category of categoriesToSetup) await setupCategory(category, envFile, cwd, options);
78
+ const configuredVars = [],
79
+ skippedVars = [];
80
+ for (const category of categoriesToSetup) for (const variable of category.variables) {
81
+ const value = (0, import_env.readEnvVariable)(cwd, variable.key, envFile);
82
+ value && value !== "" && !value.includes("your-") ? configuredVars.push(variable.key) : variable.required && skippedVars.push(variable.key);
83
+ }
84
+ return configuredVars.length > 0 ? (clack.outro(import_picocolors.default.green("\u2713 Environment setup complete!")), console.info(import_picocolors.default.gray(`
85
+ Configured ${configuredVars.length} variables in ${envFile}`)), skippedVars.length > 0 && (console.info(import_picocolors.default.yellow(`
86
+ Note: Some required variables were skipped. You'll need to configure these before deploying:`)), skippedVars.forEach(v => console.info(import_picocolors.default.gray(` - ${v}`)))), console.info(import_picocolors.default.cyan(`
87
+ You can re-run this setup anytime with:`)), console.info(import_picocolors.default.gray(" bun takeout env:setup")), console.info(import_picocolors.default.cyan(`
88
+ Or set up specific categories:`)), console.info(import_picocolors.default.gray(" bun takeout env:setup --category aws")), console.info(import_picocolors.default.gray(" bun takeout env:setup --category apple"))) : (clack.outro(import_picocolors.default.yellow("No variables configured")), console.info(import_picocolors.default.gray(`
89
+ You can re-run this setup anytime with:`)), console.info(import_picocolors.default.gray(" bun takeout env:setup"))), process.removeListener("SIGINT", cleanup), process.removeListener("SIGTERM", cleanup), !0;
90
+ } catch (error) {
91
+ if (process.removeListener("SIGINT", cleanup), process.removeListener("SIGTERM", cleanup), error instanceof Error && error.message.includes("cancelled")) return !1;
92
+ throw error;
93
+ }
94
+ }
95
+ async function setupCategory(category, envFile, cwd, options) {
96
+ const spinner = clack.spinner();
97
+ let message = `Set up ${import_picocolors.default.bold(category.name)}?`;
98
+ category.required || (message += import_picocolors.default.gray(" (optional)")), category.setupTime && (message += import_picocolors.default.yellow(` ${category.setupTime}`)), console.info("");
99
+ const setupCategory2 = await clack.confirm({
100
+ message,
101
+ initialValue: category.required
102
+ });
103
+ if (clack.isCancel(setupCategory2) || !setupCategory2) return console.info(import_picocolors.default.gray(` Skipping ${category.name}`)), !1;
104
+ console.info(import_picocolors.default.gray(`
105
+ ${category.description}
106
+ `));
107
+ for (const variable of category.variables) await setupVariable(variable, envFile, cwd);
108
+ return !0;
109
+ }
110
+ async function setupVariable(variable, envFile, cwd) {
111
+ const existingValue = (0, import_env.readEnvVariable)(cwd, variable.key, envFile),
112
+ hasValue = existingValue && existingValue !== "" && !existingValue.includes("your-");
113
+ if (console.info(""), console.info(import_picocolors.default.bold(variable.label)), console.info(import_picocolors.default.gray(variable.description)), hasValue) {
114
+ const update = await clack.confirm({
115
+ message: `${import_picocolors.default.green("\u2713")} Already configured. Update?`,
116
+ initialValue: !1
117
+ });
118
+ if (clack.isCancel(update) || !update) return;
119
+ }
120
+ console.info(""), console.info(import_picocolors.default.cyan("Instructions:")), variable.instructions.split(`
121
+ `).forEach(line => {
122
+ console.info(import_picocolors.default.gray(` ${line}`));
123
+ }), console.info("");
124
+ let value;
125
+ if (variable.generator) {
126
+ const generate = await clack.confirm({
127
+ message: `Generate ${variable.label} automatically?`,
128
+ initialValue: !0
129
+ });
130
+ !clack.isCancel(generate) && generate && (value = variable.generator(), console.info(import_picocolors.default.green(`\u2713 Generated ${variable.label}`)));
131
+ }
132
+ if (!value) if (variable.type === "multiline") console.info(import_picocolors.default.gray("Paste content (press Enter twice when done):")), value = await readMultilineInput();else if (variable.type === "secret") {
133
+ const result = await clack.password({
134
+ message: `Enter ${variable.label}:`,
135
+ mask: "*"
136
+ });
137
+ clack.isCancel(result) || (value = result);
138
+ } else {
139
+ const result = await clack.text({
140
+ message: `Enter ${variable.label}:`,
141
+ placeholder: variable.placeholder,
142
+ defaultValue: variable.default,
143
+ validate: val => {
144
+ if (variable.required && !val) return "This field is required";
145
+ }
146
+ });
147
+ clack.isCancel(result) || (value = result);
148
+ }
149
+ value && !clack.isCancel(value) ? ((0, import_env.updateEnvVariable)(cwd, variable.key, value, envFile), console.info(import_picocolors.default.green(`\u2713 Saved ${variable.key}`))) : variable.required ? console.info(import_picocolors.default.yellow(`\u26A0 Skipped required variable: ${variable.key}`)) : console.info(import_picocolors.default.gray(` Skipped ${variable.key}`));
150
+ }
151
+ async function readMultilineInput() {
152
+ return new Promise(resolve2 => {
153
+ const lines = [];
154
+ let emptyLineCount = 0;
155
+ const reader = process.stdin;
156
+ reader.setEncoding("utf8");
157
+ const onData = chunk => {
158
+ const chunkLines = chunk.split(`
159
+ `);
160
+ for (const line of chunkLines) if (line === "") {
161
+ if (emptyLineCount++, emptyLineCount >= 2) {
162
+ reader.removeListener("data", onData), resolve2(lines.join(`
163
+ `));
164
+ return;
165
+ }
166
+ } else emptyLineCount === 1 && lines.push(""), emptyLineCount = 0, lines.push(line);
167
+ };
168
+ reader.on("data", onData);
169
+ });
170
+ }
171
+ function listCategories() {
172
+ console.info(import_picocolors.default.bold(`
173
+ Available environment categories:
174
+ `));
175
+ for (const category of import_env_categories.envCategories) {
176
+ const status = category.required ? import_picocolors.default.red("required") : import_picocolors.default.gray("optional");
177
+ console.info(` ${import_picocolors.default.cyan(category.id.padEnd(12))} - ${category.name} ${status}`), console.info(` ${import_picocolors.default.gray(category.description)}`), category.setupTime && console.info(` ${import_picocolors.default.yellow(category.setupTime)}`), console.info("");
178
+ }
179
+ console.info(import_picocolors.default.gray("Run setup for a specific category:")), console.info(import_picocolors.default.cyan(` bun takeout env:setup --category <id>
180
+ `));
181
+ }
@@ -0,0 +1,190 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf, __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: !0 });
9
+ }, __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from == "object" || typeof from == "function")
11
+ for (let key of __getOwnPropNames(from))
12
+ !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
13
+ return to;
14
+ };
15
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
16
+ // If the importer is in node compatibility mode or this is not an ESM
17
+ // file that has been converted to a CommonJS file using a Babel-
18
+ // compatible transform (i.e. "__esModule" has not been set), then set
19
+ // "default" to the CommonJS "module.exports" for node compatibility.
20
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: !0 }) : target,
21
+ mod
22
+ )), __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
23
+ var env_setup_exports = {};
24
+ __export(env_setup_exports, {
25
+ listCategories: () => listCategories,
26
+ setupProductionEnv: () => setupProductionEnv
27
+ });
28
+ module.exports = __toCommonJS(env_setup_exports);
29
+ var import_node_fs = require("node:fs"), import_node_path = require("node:path"), clack = __toESM(require("@clack/prompts"), 1), import_picocolors = __toESM(require("picocolors"), 1), import_env = require("./env"), import_env_categories = require("./env-categories");
30
+ async function setupProductionEnv(cwd, options = {}) {
31
+ const envFile = options.envFile || ".env.production", fullPath = (0, import_node_path.resolve)(cwd, envFile), cleanup = () => {
32
+ console.info(`
33
+ ` + import_picocolors.default.yellow("Setup interrupted. You can resume anytime with:")), console.info(import_picocolors.default.cyan(" bun takeout env:setup")), console.info(
34
+ import_picocolors.default.gray(`
35
+ Note: All environment variables are optional for local development.`)
36
+ ), process.exit(0);
37
+ };
38
+ process.on("SIGINT", cleanup), process.on("SIGTERM", cleanup);
39
+ try {
40
+ if (clack.intro(import_picocolors.default.bgCyan(import_picocolors.default.black(" Production Environment Setup "))), console.info(import_picocolors.default.gray("All environment variables are optional.")), console.info(import_picocolors.default.gray(`You can skip any section or re-run this setup anytime.
41
+ `)), !(0, import_env.envFileExists)(cwd, envFile)) {
42
+ const createFile = await clack.confirm({
43
+ message: `${envFile} doesn't exist. Create it from example?`,
44
+ initialValue: !0
45
+ });
46
+ if (clack.isCancel(createFile) || !createFile)
47
+ return clack.cancel("Setup cancelled"), process.removeListener("SIGINT", cleanup), process.removeListener("SIGTERM", cleanup), !1;
48
+ const exampleFile = ".env.production.example";
49
+ (0, import_env.envFileExists)(cwd, exampleFile) ? ((0, import_env.copyEnvFile)(cwd, exampleFile, envFile), console.info(import_picocolors.default.green(`\u2713 Created ${envFile} from example
50
+ `))) : ((0, import_node_fs.writeFileSync)(fullPath, `# Production Environment Variables
51
+ `), console.info(import_picocolors.default.green(`\u2713 Created empty ${envFile}
52
+ `)));
53
+ }
54
+ let categoriesToSetup = options.onlyCategory ? import_env_categories.envCategories.filter((cat) => cat.id === options.onlyCategory) : import_env_categories.envCategories;
55
+ if (categoriesToSetup.length === 0)
56
+ return clack.cancel(`Category "${options.onlyCategory}" not found`), process.removeListener("SIGINT", cleanup), process.removeListener("SIGTERM", cleanup), !1;
57
+ if (options.interactive !== !1 && !options.onlyCategory) {
58
+ const setupProd = await clack.confirm({
59
+ message: "Do you want to set up production environment variables?",
60
+ initialValue: !1
61
+ });
62
+ if (clack.isCancel(setupProd) || !setupProd)
63
+ return clack.note(
64
+ `You can set up production environment later with:
65
+ ${import_picocolors.default.cyan("bun takeout env:setup")}`,
66
+ import_picocolors.default.yellow("Skipping production setup")
67
+ ), process.removeListener("SIGINT", cleanup), process.removeListener("SIGTERM", cleanup), !0;
68
+ }
69
+ for (const category of categoriesToSetup)
70
+ await setupCategory(category, envFile, cwd, options);
71
+ const configuredVars = [], skippedVars = [];
72
+ for (const category of categoriesToSetup)
73
+ for (const variable of category.variables) {
74
+ const value = (0, import_env.readEnvVariable)(cwd, variable.key, envFile);
75
+ value && value !== "" && !value.includes("your-") ? configuredVars.push(variable.key) : variable.required && skippedVars.push(variable.key);
76
+ }
77
+ return configuredVars.length > 0 ? (clack.outro(import_picocolors.default.green("\u2713 Environment setup complete!")), console.info(
78
+ import_picocolors.default.gray(`
79
+ Configured ${configuredVars.length} variables in ${envFile}`)
80
+ ), skippedVars.length > 0 && (console.info(
81
+ import_picocolors.default.yellow(
82
+ `
83
+ Note: Some required variables were skipped. You'll need to configure these before deploying:`
84
+ )
85
+ ), skippedVars.forEach((v) => console.info(import_picocolors.default.gray(` - ${v}`)))), console.info(import_picocolors.default.cyan(`
86
+ You can re-run this setup anytime with:`)), console.info(import_picocolors.default.gray(" bun takeout env:setup")), console.info(import_picocolors.default.cyan(`
87
+ Or set up specific categories:`)), console.info(import_picocolors.default.gray(" bun takeout env:setup --category aws")), console.info(import_picocolors.default.gray(" bun takeout env:setup --category apple"))) : (clack.outro(import_picocolors.default.yellow("No variables configured")), console.info(import_picocolors.default.gray(`
88
+ You can re-run this setup anytime with:`)), console.info(import_picocolors.default.gray(" bun takeout env:setup"))), process.removeListener("SIGINT", cleanup), process.removeListener("SIGTERM", cleanup), !0;
89
+ } catch (error) {
90
+ if (process.removeListener("SIGINT", cleanup), process.removeListener("SIGTERM", cleanup), error instanceof Error && error.message.includes("cancelled"))
91
+ return !1;
92
+ throw error;
93
+ }
94
+ }
95
+ async function setupCategory(category, envFile, cwd, options) {
96
+ const spinner = clack.spinner();
97
+ let message = `Set up ${import_picocolors.default.bold(category.name)}?`;
98
+ category.required || (message += import_picocolors.default.gray(" (optional)")), category.setupTime && (message += import_picocolors.default.yellow(` ${category.setupTime}`)), console.info("");
99
+ const setupCategory2 = await clack.confirm({
100
+ message,
101
+ initialValue: category.required
102
+ });
103
+ if (clack.isCancel(setupCategory2) || !setupCategory2)
104
+ return console.info(import_picocolors.default.gray(` Skipping ${category.name}`)), !1;
105
+ console.info(import_picocolors.default.gray(`
106
+ ${category.description}
107
+ `));
108
+ for (const variable of category.variables)
109
+ await setupVariable(variable, envFile, cwd);
110
+ return !0;
111
+ }
112
+ async function setupVariable(variable, envFile, cwd) {
113
+ const existingValue = (0, import_env.readEnvVariable)(cwd, variable.key, envFile), hasValue = existingValue && existingValue !== "" && !existingValue.includes("your-");
114
+ if (console.info(""), console.info(import_picocolors.default.bold(variable.label)), console.info(import_picocolors.default.gray(variable.description)), hasValue) {
115
+ const update = await clack.confirm({
116
+ message: `${import_picocolors.default.green("\u2713")} Already configured. Update?`,
117
+ initialValue: !1
118
+ });
119
+ if (clack.isCancel(update) || !update)
120
+ return;
121
+ }
122
+ console.info(""), console.info(import_picocolors.default.cyan("Instructions:")), variable.instructions.split(`
123
+ `).forEach((line) => {
124
+ console.info(import_picocolors.default.gray(` ${line}`));
125
+ }), console.info("");
126
+ let value;
127
+ if (variable.generator) {
128
+ const generate = await clack.confirm({
129
+ message: `Generate ${variable.label} automatically?`,
130
+ initialValue: !0
131
+ });
132
+ !clack.isCancel(generate) && generate && (value = variable.generator(), console.info(import_picocolors.default.green(`\u2713 Generated ${variable.label}`)));
133
+ }
134
+ if (!value)
135
+ if (variable.type === "multiline")
136
+ console.info(import_picocolors.default.gray("Paste content (press Enter twice when done):")), value = await readMultilineInput();
137
+ else if (variable.type === "secret") {
138
+ const result = await clack.password({
139
+ message: `Enter ${variable.label}:`,
140
+ mask: "*"
141
+ });
142
+ clack.isCancel(result) || (value = result);
143
+ } else {
144
+ const result = await clack.text({
145
+ message: `Enter ${variable.label}:`,
146
+ placeholder: variable.placeholder,
147
+ defaultValue: variable.default,
148
+ validate: (val) => {
149
+ if (variable.required && !val)
150
+ return "This field is required";
151
+ }
152
+ });
153
+ clack.isCancel(result) || (value = result);
154
+ }
155
+ value && !clack.isCancel(value) ? ((0, import_env.updateEnvVariable)(cwd, variable.key, value, envFile), console.info(import_picocolors.default.green(`\u2713 Saved ${variable.key}`))) : variable.required ? console.info(import_picocolors.default.yellow(`\u26A0 Skipped required variable: ${variable.key}`)) : console.info(import_picocolors.default.gray(` Skipped ${variable.key}`));
156
+ }
157
+ async function readMultilineInput() {
158
+ return new Promise((resolve2) => {
159
+ const lines = [];
160
+ let emptyLineCount = 0;
161
+ const reader = process.stdin;
162
+ reader.setEncoding("utf8");
163
+ const onData = (chunk) => {
164
+ const chunkLines = chunk.split(`
165
+ `);
166
+ for (const line of chunkLines)
167
+ if (line === "") {
168
+ if (emptyLineCount++, emptyLineCount >= 2) {
169
+ reader.removeListener("data", onData), resolve2(lines.join(`
170
+ `));
171
+ return;
172
+ }
173
+ } else
174
+ emptyLineCount === 1 && lines.push(""), emptyLineCount = 0, lines.push(line);
175
+ };
176
+ reader.on("data", onData);
177
+ });
178
+ }
179
+ function listCategories() {
180
+ console.info(import_picocolors.default.bold(`
181
+ Available environment categories:
182
+ `));
183
+ for (const category of import_env_categories.envCategories) {
184
+ const status = category.required ? import_picocolors.default.red("required") : import_picocolors.default.gray("optional");
185
+ console.info(` ${import_picocolors.default.cyan(category.id.padEnd(12))} - ${category.name} ${status}`), console.info(` ${import_picocolors.default.gray(category.description)}`), category.setupTime && console.info(` ${import_picocolors.default.yellow(category.setupTime)}`), console.info("");
186
+ }
187
+ console.info(import_picocolors.default.gray("Run setup for a specific category:")), console.info(import_picocolors.default.cyan(` bun takeout env:setup --category <id>
188
+ `));
189
+ }
190
+ //# sourceMappingURL=env-setup.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/utils/env-setup.ts"],
4
+ "mappings": "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",
5
+ "names": ["pc", "setupCategory", "resolve"]
6
+ }
@@ -0,0 +1,264 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf, __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: !0 });
10
+ }, __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from == "object" || typeof from == "function")
12
+ for (let key of __getOwnPropNames(from))
13
+ !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ return to;
15
+ };
16
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
17
+ // If the importer is in node compatibility mode or this is not an ESM
18
+ // file that has been converted to a CommonJS file using a Babel-
19
+ // compatible transform (i.e. "__esModule" has not been set), then set
20
+ // "default" to the CommonJS "module.exports" for node compatibility.
21
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: !0 }) : target,
22
+ mod
23
+ )), __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
24
+ var env_setup_exports = {};
25
+ __export(env_setup_exports, {
26
+ listCategories: () => listCategories,
27
+ setupProductionEnv: () => setupProductionEnv
28
+ });
29
+ module.exports = __toCommonJS(env_setup_exports);
30
+ var import_fs = require("fs"), import_path = require("path"), clack = __toESM(require("@clack/prompts"), 1), import_picocolors = __toESM(require("picocolors"), 1), import_env = require("./env"), import_env_categories = require("./env-categories");
31
+ function _instanceof(left, right) {
32
+ return right != null && typeof Symbol < "u" && right[Symbol.hasInstance] ? !!right[Symbol.hasInstance](left) : left instanceof right;
33
+ }
34
+ async function setupProductionEnv(cwd) {
35
+ var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, envFile = options.envFile || ".env.production", fullPath = (0, import_path.resolve)(cwd, envFile), cleanup = function() {
36
+ console.info(`
37
+ ` + import_picocolors.default.yellow("Setup interrupted. You can resume anytime with:")), console.info(import_picocolors.default.cyan(" bun takeout env:setup")), console.info(import_picocolors.default.gray(`
38
+ Note: All environment variables are optional for local development.`)), process.exit(0);
39
+ };
40
+ process.on("SIGINT", cleanup), process.on("SIGTERM", cleanup);
41
+ try {
42
+ if (clack.intro(import_picocolors.default.bgCyan(import_picocolors.default.black(" Production Environment Setup "))), console.info(import_picocolors.default.gray("All environment variables are optional.")), console.info(import_picocolors.default.gray(`You can skip any section or re-run this setup anytime.
43
+ `)), !(0, import_env.envFileExists)(cwd, envFile)) {
44
+ var createFile = await clack.confirm({
45
+ message: `${envFile} doesn't exist. Create it from example?`,
46
+ initialValue: !0
47
+ });
48
+ if (clack.isCancel(createFile) || !createFile)
49
+ return clack.cancel("Setup cancelled"), process.removeListener("SIGINT", cleanup), process.removeListener("SIGTERM", cleanup), !1;
50
+ var exampleFile = ".env.production.example";
51
+ (0, import_env.envFileExists)(cwd, exampleFile) ? ((0, import_env.copyEnvFile)(cwd, exampleFile, envFile), console.info(import_picocolors.default.green(`\u2713 Created ${envFile} from example
52
+ `))) : ((0, import_fs.writeFileSync)(fullPath, `# Production Environment Variables
53
+ `), console.info(import_picocolors.default.green(`\u2713 Created empty ${envFile}
54
+ `)));
55
+ }
56
+ var categoriesToSetup = options.onlyCategory ? import_env_categories.envCategories.filter(function(cat) {
57
+ return cat.id === options.onlyCategory;
58
+ }) : import_env_categories.envCategories;
59
+ if (categoriesToSetup.length === 0)
60
+ return clack.cancel(`Category "${options.onlyCategory}" not found`), process.removeListener("SIGINT", cleanup), process.removeListener("SIGTERM", cleanup), !1;
61
+ if (options.interactive !== !1 && !options.onlyCategory) {
62
+ var setupProd = await clack.confirm({
63
+ message: "Do you want to set up production environment variables?",
64
+ initialValue: !1
65
+ });
66
+ if (clack.isCancel(setupProd) || !setupProd)
67
+ return clack.note(`You can set up production environment later with:
68
+ ${import_picocolors.default.cyan("bun takeout env:setup")}`, import_picocolors.default.yellow("Skipping production setup")), process.removeListener("SIGINT", cleanup), process.removeListener("SIGTERM", cleanup), !0;
69
+ }
70
+ var _iteratorNormalCompletion = !0, _didIteratorError = !1, _iteratorError = void 0;
71
+ try {
72
+ for (var _iterator = categoriesToSetup[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0)
73
+ var category = _step.value, shouldSetup = await setupCategory(category, envFile, cwd, options);
74
+ } catch (err) {
75
+ _didIteratorError = !0, _iteratorError = err;
76
+ } finally {
77
+ try {
78
+ !_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
79
+ } finally {
80
+ if (_didIteratorError)
81
+ throw _iteratorError;
82
+ }
83
+ }
84
+ var configuredVars = [], skippedVars = [], _iteratorNormalCompletion1 = !0, _didIteratorError1 = !1, _iteratorError1 = void 0;
85
+ try {
86
+ for (var _iterator1 = categoriesToSetup[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = !0) {
87
+ var category1 = _step1.value, _iteratorNormalCompletion2 = !0, _didIteratorError2 = !1, _iteratorError2 = void 0;
88
+ try {
89
+ for (var _iterator2 = category1.variables[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = !0) {
90
+ var variable = _step2.value, value = (0, import_env.readEnvVariable)(cwd, variable.key, envFile);
91
+ value && value !== "" && !value.includes("your-") ? configuredVars.push(variable.key) : variable.required && skippedVars.push(variable.key);
92
+ }
93
+ } catch (err) {
94
+ _didIteratorError2 = !0, _iteratorError2 = err;
95
+ } finally {
96
+ try {
97
+ !_iteratorNormalCompletion2 && _iterator2.return != null && _iterator2.return();
98
+ } finally {
99
+ if (_didIteratorError2)
100
+ throw _iteratorError2;
101
+ }
102
+ }
103
+ }
104
+ } catch (err) {
105
+ _didIteratorError1 = !0, _iteratorError1 = err;
106
+ } finally {
107
+ try {
108
+ !_iteratorNormalCompletion1 && _iterator1.return != null && _iterator1.return();
109
+ } finally {
110
+ if (_didIteratorError1)
111
+ throw _iteratorError1;
112
+ }
113
+ }
114
+ return configuredVars.length > 0 ? (clack.outro(import_picocolors.default.green("\u2713 Environment setup complete!")), console.info(import_picocolors.default.gray(`
115
+ Configured ${configuredVars.length} variables in ${envFile}`)), skippedVars.length > 0 && (console.info(import_picocolors.default.yellow(`
116
+ Note: Some required variables were skipped. You'll need to configure these before deploying:`)), skippedVars.forEach(function(v) {
117
+ return console.info(import_picocolors.default.gray(` - ${v}`));
118
+ })), console.info(import_picocolors.default.cyan(`
119
+ You can re-run this setup anytime with:`)), console.info(import_picocolors.default.gray(" bun takeout env:setup")), console.info(import_picocolors.default.cyan(`
120
+ Or set up specific categories:`)), console.info(import_picocolors.default.gray(" bun takeout env:setup --category aws")), console.info(import_picocolors.default.gray(" bun takeout env:setup --category apple"))) : (clack.outro(import_picocolors.default.yellow("No variables configured")), console.info(import_picocolors.default.gray(`
121
+ You can re-run this setup anytime with:`)), console.info(import_picocolors.default.gray(" bun takeout env:setup"))), process.removeListener("SIGINT", cleanup), process.removeListener("SIGTERM", cleanup), !0;
122
+ } catch (error) {
123
+ if (process.removeListener("SIGINT", cleanup), process.removeListener("SIGTERM", cleanup), _instanceof(error, Error) && error.message.includes("cancelled"))
124
+ return !1;
125
+ throw error;
126
+ }
127
+ }
128
+ async function setupCategory(category, envFile, cwd, options) {
129
+ var spinner = clack.spinner(), message = `Set up ${import_picocolors.default.bold(category.name)}?`;
130
+ category.required || (message += import_picocolors.default.gray(" (optional)")), category.setupTime && (message += import_picocolors.default.yellow(` ${category.setupTime}`)), console.info("");
131
+ var setupCategory2 = await clack.confirm({
132
+ message,
133
+ initialValue: category.required
134
+ });
135
+ if (clack.isCancel(setupCategory2) || !setupCategory2)
136
+ return console.info(import_picocolors.default.gray(` Skipping ${category.name}`)), !1;
137
+ console.info(import_picocolors.default.gray(`
138
+ ${category.description}
139
+ `));
140
+ var _iteratorNormalCompletion = !0, _didIteratorError = !1, _iteratorError = void 0;
141
+ try {
142
+ for (var _iterator = category.variables[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
143
+ var variable = _step.value;
144
+ await setupVariable(variable, envFile, cwd);
145
+ }
146
+ } catch (err) {
147
+ _didIteratorError = !0, _iteratorError = err;
148
+ } finally {
149
+ try {
150
+ !_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
151
+ } finally {
152
+ if (_didIteratorError)
153
+ throw _iteratorError;
154
+ }
155
+ }
156
+ return !0;
157
+ }
158
+ async function setupVariable(variable, envFile, cwd) {
159
+ var existingValue = (0, import_env.readEnvVariable)(cwd, variable.key, envFile), hasValue = existingValue && existingValue !== "" && !existingValue.includes("your-");
160
+ if (console.info(""), console.info(import_picocolors.default.bold(variable.label)), console.info(import_picocolors.default.gray(variable.description)), hasValue) {
161
+ var update = await clack.confirm({
162
+ message: `${import_picocolors.default.green("\u2713")} Already configured. Update?`,
163
+ initialValue: !1
164
+ });
165
+ if (clack.isCancel(update) || !update)
166
+ return;
167
+ }
168
+ console.info(""), console.info(import_picocolors.default.cyan("Instructions:")), variable.instructions.split(`
169
+ `).forEach(function(line) {
170
+ console.info(import_picocolors.default.gray(` ${line}`));
171
+ }), console.info("");
172
+ var value;
173
+ if (variable.generator) {
174
+ var generate = await clack.confirm({
175
+ message: `Generate ${variable.label} automatically?`,
176
+ initialValue: !0
177
+ });
178
+ !clack.isCancel(generate) && generate && (value = variable.generator(), console.info(import_picocolors.default.green(`\u2713 Generated ${variable.label}`)));
179
+ }
180
+ if (!value)
181
+ if (variable.type === "multiline")
182
+ console.info(import_picocolors.default.gray("Paste content (press Enter twice when done):")), value = await readMultilineInput();
183
+ else if (variable.type === "secret") {
184
+ var result = await clack.password({
185
+ message: `Enter ${variable.label}:`,
186
+ mask: "*"
187
+ });
188
+ clack.isCancel(result) || (value = result);
189
+ } else {
190
+ var result1 = await clack.text({
191
+ message: `Enter ${variable.label}:`,
192
+ placeholder: variable.placeholder,
193
+ defaultValue: variable.default,
194
+ validate: function(val) {
195
+ if (variable.required && !val)
196
+ return "This field is required";
197
+ }
198
+ });
199
+ clack.isCancel(result1) || (value = result1);
200
+ }
201
+ value && !clack.isCancel(value) ? ((0, import_env.updateEnvVariable)(cwd, variable.key, value, envFile), console.info(import_picocolors.default.green(`\u2713 Saved ${variable.key}`))) : variable.required ? console.info(import_picocolors.default.yellow(`\u26A0 Skipped required variable: ${variable.key}`)) : console.info(import_picocolors.default.gray(` Skipped ${variable.key}`));
202
+ }
203
+ async function readMultilineInput() {
204
+ return new Promise(function(resolve2) {
205
+ var lines = [], emptyLineCount = 0, reader = process.stdin;
206
+ reader.setEncoding("utf8");
207
+ var onData = function(chunk) {
208
+ var chunkLines = chunk.split(`
209
+ `), _iteratorNormalCompletion = !0, _didIteratorError = !1, _iteratorError = void 0;
210
+ try {
211
+ for (var _iterator = chunkLines[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
212
+ var line = _step.value;
213
+ if (line === "") {
214
+ if (emptyLineCount++, emptyLineCount >= 2) {
215
+ reader.removeListener("data", onData), resolve2(lines.join(`
216
+ `));
217
+ return;
218
+ }
219
+ } else
220
+ emptyLineCount === 1 && lines.push(""), emptyLineCount = 0, lines.push(line);
221
+ }
222
+ } catch (err) {
223
+ _didIteratorError = !0, _iteratorError = err;
224
+ } finally {
225
+ try {
226
+ !_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
227
+ } finally {
228
+ if (_didIteratorError)
229
+ throw _iteratorError;
230
+ }
231
+ }
232
+ };
233
+ reader.on("data", onData);
234
+ });
235
+ }
236
+ function listCategories() {
237
+ console.info(import_picocolors.default.bold(`
238
+ Available environment categories:
239
+ `));
240
+ var _iteratorNormalCompletion = !0, _didIteratorError = !1, _iteratorError = void 0;
241
+ try {
242
+ for (var _iterator = import_env_categories.envCategories[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
243
+ var category = _step.value, status = category.required ? import_picocolors.default.red("required") : import_picocolors.default.gray("optional");
244
+ console.info(` ${import_picocolors.default.cyan(category.id.padEnd(12))} - ${category.name} ${status}`), console.info(` ${import_picocolors.default.gray(category.description)}`), category.setupTime && console.info(` ${import_picocolors.default.yellow(category.setupTime)}`), console.info("");
245
+ }
246
+ } catch (err) {
247
+ _didIteratorError = !0, _iteratorError = err;
248
+ } finally {
249
+ try {
250
+ !_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
251
+ } finally {
252
+ if (_didIteratorError)
253
+ throw _iteratorError;
254
+ }
255
+ }
256
+ console.info(import_picocolors.default.gray("Run setup for a specific category:")), console.info(import_picocolors.default.cyan(` bun takeout env:setup --category <id>
257
+ `));
258
+ }
259
+ // Annotate the CommonJS export names for ESM import in node:
260
+ 0 && (module.exports = {
261
+ listCategories,
262
+ setupProductionEnv
263
+ });
264
+ //# sourceMappingURL=env-setup.js.map