@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.
- package/LICENSE +21 -0
- package/README.md +274 -0
- package/cli.mjs +3 -0
- package/dist/cjs/cli.cjs +71 -0
- package/dist/cjs/cli.js +70 -0
- package/dist/cjs/cli.js.map +6 -0
- package/dist/cjs/cli.native.js +79 -0
- package/dist/cjs/cli.native.js.map +6 -0
- package/dist/cjs/commands/changed.cjs +212 -0
- package/dist/cjs/commands/changed.js +214 -0
- package/dist/cjs/commands/changed.js.map +6 -0
- package/dist/cjs/commands/changed.native.js +289 -0
- package/dist/cjs/commands/changed.native.js.map +6 -0
- package/dist/cjs/commands/docs.cjs +388 -0
- package/dist/cjs/commands/docs.js +313 -0
- package/dist/cjs/commands/docs.js.map +6 -0
- package/dist/cjs/commands/docs.native.js +476 -0
- package/dist/cjs/commands/docs.native.js.map +6 -0
- package/dist/cjs/commands/env-setup.cjs +90 -0
- package/dist/cjs/commands/env-setup.js +78 -0
- package/dist/cjs/commands/env-setup.js.map +6 -0
- package/dist/cjs/commands/env-setup.native.js +85 -0
- package/dist/cjs/commands/env-setup.native.js.map +6 -0
- package/dist/cjs/commands/onboard.cjs +479 -0
- package/dist/cjs/commands/onboard.js +631 -0
- package/dist/cjs/commands/onboard.js.map +6 -0
- package/dist/cjs/commands/onboard.native.js +608 -0
- package/dist/cjs/commands/onboard.native.js.map +6 -0
- package/dist/cjs/commands/run.cjs +148 -0
- package/dist/cjs/commands/run.js +116 -0
- package/dist/cjs/commands/run.js.map +6 -0
- package/dist/cjs/commands/run.native.js +140 -0
- package/dist/cjs/commands/run.native.js.map +6 -0
- package/dist/cjs/commands/script.cjs +379 -0
- package/dist/cjs/commands/script.js +339 -0
- package/dist/cjs/commands/script.js.map +6 -0
- package/dist/cjs/commands/script.native.js +449 -0
- package/dist/cjs/commands/script.native.js.map +6 -0
- package/dist/cjs/commands/sync.cjs +190 -0
- package/dist/cjs/commands/sync.js +168 -0
- package/dist/cjs/commands/sync.js.map +6 -0
- package/dist/cjs/commands/sync.native.js +211 -0
- package/dist/cjs/commands/sync.native.js.map +6 -0
- package/dist/cjs/constants/ascii.cjs +36 -0
- package/dist/cjs/constants/ascii.js +30 -0
- package/dist/cjs/constants/ascii.js.map +6 -0
- package/dist/cjs/constants/ascii.native.js +36 -0
- package/dist/cjs/constants/ascii.native.js.map +6 -0
- package/dist/cjs/index.cjs +64 -0
- package/dist/cjs/index.js +55 -0
- package/dist/cjs/index.js.map +6 -0
- package/dist/cjs/index.native.js +94 -0
- package/dist/cjs/index.native.js.map +6 -0
- package/dist/cjs/types.cjs +16 -0
- package/dist/cjs/types.js +14 -0
- package/dist/cjs/types.js.map +6 -0
- package/dist/cjs/types.native.js +15 -0
- package/dist/cjs/types.native.js.map +6 -0
- package/dist/cjs/utils/env-categories.cjs +272 -0
- package/dist/cjs/utils/env-categories.js +296 -0
- package/dist/cjs/utils/env-categories.js.map +6 -0
- package/dist/cjs/utils/env-categories.native.js +317 -0
- package/dist/cjs/utils/env-categories.native.js.map +6 -0
- package/dist/cjs/utils/env-setup.cjs +181 -0
- package/dist/cjs/utils/env-setup.js +190 -0
- package/dist/cjs/utils/env-setup.js.map +6 -0
- package/dist/cjs/utils/env-setup.native.js +264 -0
- package/dist/cjs/utils/env-setup.native.js.map +6 -0
- package/dist/cjs/utils/env.cjs +118 -0
- package/dist/cjs/utils/env.js +97 -0
- package/dist/cjs/utils/env.js.map +6 -0
- package/dist/cjs/utils/env.native.js +128 -0
- package/dist/cjs/utils/env.native.js.map +6 -0
- package/dist/cjs/utils/files.cjs +215 -0
- package/dist/cjs/utils/files.js +164 -0
- package/dist/cjs/utils/files.js.map +6 -0
- package/dist/cjs/utils/files.native.js +266 -0
- package/dist/cjs/utils/files.native.js.map +6 -0
- package/dist/cjs/utils/parallel-runner.cjs +99 -0
- package/dist/cjs/utils/parallel-runner.js +84 -0
- package/dist/cjs/utils/parallel-runner.js.map +6 -0
- package/dist/cjs/utils/parallel-runner.native.js +123 -0
- package/dist/cjs/utils/parallel-runner.native.js.map +6 -0
- package/dist/cjs/utils/ports.cjs +101 -0
- package/dist/cjs/utils/ports.js +81 -0
- package/dist/cjs/utils/ports.js.map +6 -0
- package/dist/cjs/utils/ports.native.js +130 -0
- package/dist/cjs/utils/ports.native.js.map +6 -0
- package/dist/cjs/utils/prerequisites.cjs +119 -0
- package/dist/cjs/utils/prerequisites.js +107 -0
- package/dist/cjs/utils/prerequisites.js.map +6 -0
- package/dist/cjs/utils/prerequisites.native.js +127 -0
- package/dist/cjs/utils/prerequisites.native.js.map +6 -0
- package/dist/cjs/utils/prompts.cjs +161 -0
- package/dist/cjs/utils/prompts.js +162 -0
- package/dist/cjs/utils/prompts.js.map +6 -0
- package/dist/cjs/utils/prompts.native.js +179 -0
- package/dist/cjs/utils/prompts.native.js.map +6 -0
- package/dist/cjs/utils/script-listing.cjs +113 -0
- package/dist/cjs/utils/script-listing.js +108 -0
- package/dist/cjs/utils/script-listing.js.map +6 -0
- package/dist/cjs/utils/script-listing.native.js +174 -0
- package/dist/cjs/utils/script-listing.native.js.map +6 -0
- package/dist/cjs/utils/sync.cjs +85 -0
- package/dist/cjs/utils/sync.js +70 -0
- package/dist/cjs/utils/sync.js.map +6 -0
- package/dist/cjs/utils/sync.native.js +84 -0
- package/dist/cjs/utils/sync.native.js.map +6 -0
- package/dist/cjs/utils/welcome.cjs +50 -0
- package/dist/cjs/utils/welcome.js +42 -0
- package/dist/cjs/utils/welcome.js.map +6 -0
- package/dist/cjs/utils/welcome.native.js +47 -0
- package/dist/cjs/utils/welcome.native.js.map +6 -0
- package/dist/esm/cli.js +79 -0
- package/dist/esm/cli.js.map +6 -0
- package/dist/esm/cli.mjs +71 -0
- package/dist/esm/cli.mjs.map +1 -0
- package/dist/esm/cli.native.js +69 -0
- package/dist/esm/cli.native.js.map +1 -0
- package/dist/esm/commands/changed.js +194 -0
- package/dist/esm/commands/changed.js.map +6 -0
- package/dist/esm/commands/changed.mjs +178 -0
- package/dist/esm/commands/changed.mjs.map +1 -0
- package/dist/esm/commands/changed.native.js +273 -0
- package/dist/esm/commands/changed.native.js.map +1 -0
- package/dist/esm/commands/docs.js +306 -0
- package/dist/esm/commands/docs.js.map +6 -0
- package/dist/esm/commands/docs.mjs +353 -0
- package/dist/esm/commands/docs.mjs.map +1 -0
- package/dist/esm/commands/docs.native.js +516 -0
- package/dist/esm/commands/docs.native.js.map +1 -0
- package/dist/esm/commands/env-setup.js +56 -0
- package/dist/esm/commands/env-setup.js.map +6 -0
- package/dist/esm/commands/env-setup.mjs +56 -0
- package/dist/esm/commands/env-setup.mjs.map +1 -0
- package/dist/esm/commands/env-setup.native.js +59 -0
- package/dist/esm/commands/env-setup.native.js.map +1 -0
- package/dist/esm/commands/onboard.js +645 -0
- package/dist/esm/commands/onboard.js.map +6 -0
- package/dist/esm/commands/onboard.mjs +445 -0
- package/dist/esm/commands/onboard.mjs.map +1 -0
- package/dist/esm/commands/onboard.native.js +584 -0
- package/dist/esm/commands/onboard.native.js.map +1 -0
- package/dist/esm/commands/run.js +95 -0
- package/dist/esm/commands/run.js.map +6 -0
- package/dist/esm/commands/run.mjs +114 -0
- package/dist/esm/commands/run.mjs.map +1 -0
- package/dist/esm/commands/run.native.js +133 -0
- package/dist/esm/commands/run.native.js.map +1 -0
- package/dist/esm/commands/script.js +338 -0
- package/dist/esm/commands/script.js.map +6 -0
- package/dist/esm/commands/script.mjs +336 -0
- package/dist/esm/commands/script.mjs.map +1 -0
- package/dist/esm/commands/script.native.js +445 -0
- package/dist/esm/commands/script.native.js.map +1 -0
- package/dist/esm/commands/sync.js +158 -0
- package/dist/esm/commands/sync.js.map +6 -0
- package/dist/esm/commands/sync.mjs +155 -0
- package/dist/esm/commands/sync.mjs.map +1 -0
- package/dist/esm/commands/sync.native.js +173 -0
- package/dist/esm/commands/sync.native.js.map +1 -0
- package/dist/esm/constants/ascii.js +14 -0
- package/dist/esm/constants/ascii.js.map +6 -0
- package/dist/esm/constants/ascii.mjs +12 -0
- package/dist/esm/constants/ascii.mjs.map +1 -0
- package/dist/esm/constants/ascii.native.js +12 -0
- package/dist/esm/constants/ascii.native.js.map +1 -0
- package/dist/esm/index.js +83 -0
- package/dist/esm/index.js.map +6 -0
- package/dist/esm/index.mjs +7 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/index.native.js +7 -0
- package/dist/esm/index.native.js.map +1 -0
- package/dist/esm/types.js +1 -0
- package/dist/esm/types.js.map +6 -0
- package/dist/esm/types.mjs +2 -0
- package/dist/esm/types.mjs.map +1 -0
- package/dist/esm/types.native.js +2 -0
- package/dist/esm/types.native.js.map +1 -0
- package/dist/esm/utils/env-categories.js +272 -0
- package/dist/esm/utils/env-categories.js.map +6 -0
- package/dist/esm/utils/env-categories.mjs +233 -0
- package/dist/esm/utils/env-categories.mjs.map +1 -0
- package/dist/esm/utils/env-categories.native.js +246 -0
- package/dist/esm/utils/env-categories.native.js.map +1 -0
- package/dist/esm/utils/env-setup.js +173 -0
- package/dist/esm/utils/env-setup.js.map +6 -0
- package/dist/esm/utils/env-setup.mjs +146 -0
- package/dist/esm/utils/env-setup.mjs.map +1 -0
- package/dist/esm/utils/env-setup.native.js +243 -0
- package/dist/esm/utils/env-setup.native.js.map +1 -0
- package/dist/esm/utils/env.js +83 -0
- package/dist/esm/utils/env.js.map +6 -0
- package/dist/esm/utils/env.mjs +90 -0
- package/dist/esm/utils/env.mjs.map +1 -0
- package/dist/esm/utils/env.native.js +99 -0
- package/dist/esm/utils/env.native.js.map +1 -0
- package/dist/esm/utils/files.js +150 -0
- package/dist/esm/utils/files.js.map +6 -0
- package/dist/esm/utils/files.mjs +187 -0
- package/dist/esm/utils/files.mjs.map +1 -0
- package/dist/esm/utils/files.native.js +247 -0
- package/dist/esm/utils/files.native.js.map +1 -0
- package/dist/esm/utils/parallel-runner.js +69 -0
- package/dist/esm/utils/parallel-runner.js.map +6 -0
- package/dist/esm/utils/parallel-runner.mjs +76 -0
- package/dist/esm/utils/parallel-runner.mjs.map +1 -0
- package/dist/esm/utils/parallel-runner.native.js +109 -0
- package/dist/esm/utils/parallel-runner.native.js.map +1 -0
- package/dist/esm/utils/ports.js +65 -0
- package/dist/esm/utils/ports.js.map +6 -0
- package/dist/esm/utils/ports.mjs +74 -0
- package/dist/esm/utils/ports.mjs.map +1 -0
- package/dist/esm/utils/ports.native.js +93 -0
- package/dist/esm/utils/ports.native.js.map +1 -0
- package/dist/esm/utils/prerequisites.js +91 -0
- package/dist/esm/utils/prerequisites.js.map +6 -0
- package/dist/esm/utils/prerequisites.mjs +91 -0
- package/dist/esm/utils/prerequisites.mjs.map +1 -0
- package/dist/esm/utils/prerequisites.native.js +97 -0
- package/dist/esm/utils/prerequisites.native.js.map +1 -0
- package/dist/esm/utils/prompts.js +139 -0
- package/dist/esm/utils/prompts.js.map +6 -0
- package/dist/esm/utils/prompts.mjs +112 -0
- package/dist/esm/utils/prompts.mjs.map +1 -0
- package/dist/esm/utils/prompts.native.js +115 -0
- package/dist/esm/utils/prompts.native.js.map +1 -0
- package/dist/esm/utils/script-listing.js +91 -0
- package/dist/esm/utils/script-listing.js.map +6 -0
- package/dist/esm/utils/script-listing.mjs +76 -0
- package/dist/esm/utils/script-listing.mjs.map +1 -0
- package/dist/esm/utils/script-listing.native.js +151 -0
- package/dist/esm/utils/script-listing.native.js.map +1 -0
- package/dist/esm/utils/sync.js +50 -0
- package/dist/esm/utils/sync.js.map +6 -0
- package/dist/esm/utils/sync.mjs +48 -0
- package/dist/esm/utils/sync.mjs.map +1 -0
- package/dist/esm/utils/sync.native.js +53 -0
- package/dist/esm/utils/sync.native.js.map +1 -0
- package/dist/esm/utils/welcome.js +21 -0
- package/dist/esm/utils/welcome.js.map +6 -0
- package/dist/esm/utils/welcome.mjs +15 -0
- package/dist/esm/utils/welcome.mjs.map +1 -0
- package/dist/esm/utils/welcome.native.js +18 -0
- package/dist/esm/utils/welcome.native.js.map +1 -0
- package/docs/aggregates.md +579 -0
- package/docs/cloudflare-dev-tunnel.md +41 -0
- package/docs/database.md +203 -0
- package/docs/docs.md +8 -0
- package/docs/emitters.md +562 -0
- package/docs/hot-updater.md +223 -0
- package/docs/native-hot-update.md +252 -0
- package/docs/one-components.md +234 -0
- package/docs/one-hooks.md +570 -0
- package/docs/one-routes.md +660 -0
- package/docs/package-json.md +115 -0
- package/docs/react-native-navigation-flow.md +184 -0
- package/docs/scripts.md +147 -0
- package/docs/sync-prompt.md +208 -0
- package/docs/tamagui.md +478 -0
- package/docs/testing-integration.md +564 -0
- package/docs/triggers.md +450 -0
- package/docs/zero.md +719 -0
- package/package.json +76 -0
- package/scripts/seed.ts +209 -0
- package/src/cli.ts +147 -0
- package/src/commands/changed.ts +313 -0
- package/src/commands/docs.ts +582 -0
- package/src/commands/env-setup.ts +69 -0
- package/src/commands/onboard.ts +1391 -0
- package/src/commands/run.ts +173 -0
- package/src/commands/script.ts +587 -0
- package/src/commands/sync.ts +305 -0
- package/src/constants/ascii.ts +17 -0
- package/src/index.ts +63 -0
- package/src/types.ts +59 -0
- package/src/utils/env-categories.ts +245 -0
- package/src/utils/env-setup.ts +338 -0
- package/src/utils/env.ts +127 -0
- package/src/utils/files.ts +302 -0
- package/src/utils/parallel-runner.ts +129 -0
- package/src/utils/ports.ts +77 -0
- package/src/utils/prerequisites.ts +137 -0
- package/src/utils/prompts.ts +197 -0
- package/src/utils/script-listing.ts +214 -0
- package/src/utils/sync.ts +101 -0
- package/src/withOpSqliteStatic.cjs +51 -0
- package/types/cli.d.ts +7 -0
- package/types/cli.d.ts.map +1 -0
- package/types/commands/changed.d.ts +14 -0
- package/types/commands/changed.d.ts.map +1 -0
- package/types/commands/docs.d.ts +5 -0
- package/types/commands/docs.d.ts.map +1 -0
- package/types/commands/env-setup.d.ts +25 -0
- package/types/commands/env-setup.d.ts.map +1 -0
- package/types/commands/onboard.d.ts +16 -0
- package/types/commands/onboard.d.ts.map +1 -0
- package/types/commands/run.d.ts +8 -0
- package/types/commands/run.d.ts.map +1 -0
- package/types/commands/script.d.ts +28 -0
- package/types/commands/script.d.ts.map +1 -0
- package/types/commands/sync.d.ts +5 -0
- package/types/commands/sync.d.ts.map +1 -0
- package/types/constants/ascii.d.ts +6 -0
- package/types/constants/ascii.d.ts.map +1 -0
- package/types/index.d.ts +12 -0
- package/types/index.d.ts.map +1 -0
- package/types/types.d.ts +54 -0
- package/types/types.d.ts.map +1 -0
- package/types/utils/env-categories.d.ts +8 -0
- package/types/utils/env-categories.d.ts.map +1 -0
- package/types/utils/env-setup.d.ts +10 -0
- package/types/utils/env-setup.d.ts.map +1 -0
- package/types/utils/env.d.ts +19 -0
- package/types/utils/env.d.ts.map +1 -0
- package/types/utils/files.d.ts +47 -0
- package/types/utils/files.d.ts.map +1 -0
- package/types/utils/parallel-runner.d.ts +15 -0
- package/types/utils/parallel-runner.d.ts.map +1 -0
- package/types/utils/ports.d.ts +16 -0
- package/types/utils/ports.d.ts.map +1 -0
- package/types/utils/prerequisites.d.ts +11 -0
- package/types/utils/prerequisites.d.ts.map +1 -0
- package/types/utils/prompts.d.ts +30 -0
- package/types/utils/prompts.d.ts.map +1 -0
- package/types/utils/script-listing.d.ts +7 -0
- package/types/utils/script-listing.d.ts.map +1 -0
- package/types/utils/sync.d.ts +16 -0
- package/types/utils/sync.d.ts.map +1 -0
- package/types/utils/welcome.d.ts +6 -0
- package/types/utils/welcome.d.ts.map +1 -0
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
import { writeFileSync } from "fs";
|
|
2
|
+
import { resolve } from "path";
|
|
3
|
+
import * as clack from "@clack/prompts";
|
|
4
|
+
import pc from "picocolors";
|
|
5
|
+
import { updateEnvVariable, readEnvVariable, envFileExists, copyEnvFile } from "./env.native.js";
|
|
6
|
+
import { envCategories } from "./env-categories.native.js";
|
|
7
|
+
function _instanceof(left, right) {
|
|
8
|
+
return right != null && typeof Symbol < "u" && right[Symbol.hasInstance] ? !!right[Symbol.hasInstance](left) : left instanceof right;
|
|
9
|
+
}
|
|
10
|
+
async function setupProductionEnv(cwd) {
|
|
11
|
+
var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {},
|
|
12
|
+
envFile = options.envFile || ".env.production",
|
|
13
|
+
fullPath = resolve(cwd, envFile),
|
|
14
|
+
cleanup = function () {
|
|
15
|
+
console.info(`
|
|
16
|
+
` + pc.yellow("Setup interrupted. You can resume anytime with:")), console.info(pc.cyan(" bun takeout env:setup")), console.info(pc.gray(`
|
|
17
|
+
Note: All environment variables are optional for local development.`)), process.exit(0);
|
|
18
|
+
};
|
|
19
|
+
process.on("SIGINT", cleanup), process.on("SIGTERM", cleanup);
|
|
20
|
+
try {
|
|
21
|
+
if (clack.intro(pc.bgCyan(pc.black(" Production Environment Setup "))), console.info(pc.gray("All environment variables are optional.")), console.info(pc.gray(`You can skip any section or re-run this setup anytime.
|
|
22
|
+
`)), !envFileExists(cwd, envFile)) {
|
|
23
|
+
var createFile = await clack.confirm({
|
|
24
|
+
message: `${envFile} doesn't exist. Create it from example?`,
|
|
25
|
+
initialValue: !0
|
|
26
|
+
});
|
|
27
|
+
if (clack.isCancel(createFile) || !createFile) return clack.cancel("Setup cancelled"), process.removeListener("SIGINT", cleanup), process.removeListener("SIGTERM", cleanup), !1;
|
|
28
|
+
var exampleFile = ".env.production.example";
|
|
29
|
+
envFileExists(cwd, exampleFile) ? (copyEnvFile(cwd, exampleFile, envFile), console.info(pc.green(`\u2713 Created ${envFile} from example
|
|
30
|
+
`))) : (writeFileSync(fullPath, `# Production Environment Variables
|
|
31
|
+
`), console.info(pc.green(`\u2713 Created empty ${envFile}
|
|
32
|
+
`)));
|
|
33
|
+
}
|
|
34
|
+
var categoriesToSetup = options.onlyCategory ? envCategories.filter(function (cat) {
|
|
35
|
+
return cat.id === options.onlyCategory;
|
|
36
|
+
}) : envCategories;
|
|
37
|
+
if (categoriesToSetup.length === 0) return clack.cancel(`Category "${options.onlyCategory}" not found`), process.removeListener("SIGINT", cleanup), process.removeListener("SIGTERM", cleanup), !1;
|
|
38
|
+
if (options.interactive !== !1 && !options.onlyCategory) {
|
|
39
|
+
var setupProd = await clack.confirm({
|
|
40
|
+
message: "Do you want to set up production environment variables?",
|
|
41
|
+
initialValue: !1
|
|
42
|
+
});
|
|
43
|
+
if (clack.isCancel(setupProd) || !setupProd) return clack.note(`You can set up production environment later with:
|
|
44
|
+
${pc.cyan("bun takeout env:setup")}`, pc.yellow("Skipping production setup")), process.removeListener("SIGINT", cleanup), process.removeListener("SIGTERM", cleanup), !0;
|
|
45
|
+
}
|
|
46
|
+
var _iteratorNormalCompletion = !0,
|
|
47
|
+
_didIteratorError = !1,
|
|
48
|
+
_iteratorError = void 0;
|
|
49
|
+
try {
|
|
50
|
+
for (var _iterator = categoriesToSetup[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) var category = _step.value, shouldSetup = await setupCategory(category, envFile, cwd, options);
|
|
51
|
+
} catch (err) {
|
|
52
|
+
_didIteratorError = !0, _iteratorError = err;
|
|
53
|
+
} finally {
|
|
54
|
+
try {
|
|
55
|
+
!_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
|
|
56
|
+
} finally {
|
|
57
|
+
if (_didIteratorError) throw _iteratorError;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
var configuredVars = [],
|
|
61
|
+
skippedVars = [],
|
|
62
|
+
_iteratorNormalCompletion1 = !0,
|
|
63
|
+
_didIteratorError1 = !1,
|
|
64
|
+
_iteratorError1 = void 0;
|
|
65
|
+
try {
|
|
66
|
+
for (var _iterator1 = categoriesToSetup[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = !0) {
|
|
67
|
+
var category1 = _step1.value,
|
|
68
|
+
_iteratorNormalCompletion2 = !0,
|
|
69
|
+
_didIteratorError2 = !1,
|
|
70
|
+
_iteratorError2 = void 0;
|
|
71
|
+
try {
|
|
72
|
+
for (var _iterator2 = category1.variables[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = !0) {
|
|
73
|
+
var variable = _step2.value,
|
|
74
|
+
value = readEnvVariable(cwd, variable.key, envFile);
|
|
75
|
+
value && value !== "" && !value.includes("your-") ? configuredVars.push(variable.key) : variable.required && skippedVars.push(variable.key);
|
|
76
|
+
}
|
|
77
|
+
} catch (err) {
|
|
78
|
+
_didIteratorError2 = !0, _iteratorError2 = err;
|
|
79
|
+
} finally {
|
|
80
|
+
try {
|
|
81
|
+
!_iteratorNormalCompletion2 && _iterator2.return != null && _iterator2.return();
|
|
82
|
+
} finally {
|
|
83
|
+
if (_didIteratorError2) throw _iteratorError2;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
} catch (err) {
|
|
88
|
+
_didIteratorError1 = !0, _iteratorError1 = err;
|
|
89
|
+
} finally {
|
|
90
|
+
try {
|
|
91
|
+
!_iteratorNormalCompletion1 && _iterator1.return != null && _iterator1.return();
|
|
92
|
+
} finally {
|
|
93
|
+
if (_didIteratorError1) throw _iteratorError1;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return configuredVars.length > 0 ? (clack.outro(pc.green("\u2713 Environment setup complete!")), console.info(pc.gray(`
|
|
97
|
+
Configured ${configuredVars.length} variables in ${envFile}`)), skippedVars.length > 0 && (console.info(pc.yellow(`
|
|
98
|
+
Note: Some required variables were skipped. You'll need to configure these before deploying:`)), skippedVars.forEach(function (v) {
|
|
99
|
+
return console.info(pc.gray(` - ${v}`));
|
|
100
|
+
})), console.info(pc.cyan(`
|
|
101
|
+
You can re-run this setup anytime with:`)), console.info(pc.gray(" bun takeout env:setup")), console.info(pc.cyan(`
|
|
102
|
+
Or set up specific categories:`)), console.info(pc.gray(" bun takeout env:setup --category aws")), console.info(pc.gray(" bun takeout env:setup --category apple"))) : (clack.outro(pc.yellow("No variables configured")), console.info(pc.gray(`
|
|
103
|
+
You can re-run this setup anytime with:`)), console.info(pc.gray(" bun takeout env:setup"))), process.removeListener("SIGINT", cleanup), process.removeListener("SIGTERM", cleanup), !0;
|
|
104
|
+
} catch (error) {
|
|
105
|
+
if (process.removeListener("SIGINT", cleanup), process.removeListener("SIGTERM", cleanup), _instanceof(error, Error) && error.message.includes("cancelled")) return !1;
|
|
106
|
+
throw error;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
async function setupCategory(category, envFile, cwd, options) {
|
|
110
|
+
var spinner = clack.spinner(),
|
|
111
|
+
message = `Set up ${pc.bold(category.name)}?`;
|
|
112
|
+
category.required || (message += pc.gray(" (optional)")), category.setupTime && (message += pc.yellow(` ${category.setupTime}`)), console.info("");
|
|
113
|
+
var setupCategory2 = await clack.confirm({
|
|
114
|
+
message,
|
|
115
|
+
initialValue: category.required
|
|
116
|
+
});
|
|
117
|
+
if (clack.isCancel(setupCategory2) || !setupCategory2) return console.info(pc.gray(` Skipping ${category.name}`)), !1;
|
|
118
|
+
console.info(pc.gray(`
|
|
119
|
+
${category.description}
|
|
120
|
+
`));
|
|
121
|
+
var _iteratorNormalCompletion = !0,
|
|
122
|
+
_didIteratorError = !1,
|
|
123
|
+
_iteratorError = void 0;
|
|
124
|
+
try {
|
|
125
|
+
for (var _iterator = category.variables[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
|
|
126
|
+
var variable = _step.value;
|
|
127
|
+
await setupVariable(variable, envFile, cwd);
|
|
128
|
+
}
|
|
129
|
+
} catch (err) {
|
|
130
|
+
_didIteratorError = !0, _iteratorError = err;
|
|
131
|
+
} finally {
|
|
132
|
+
try {
|
|
133
|
+
!_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
|
|
134
|
+
} finally {
|
|
135
|
+
if (_didIteratorError) throw _iteratorError;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return !0;
|
|
139
|
+
}
|
|
140
|
+
async function setupVariable(variable, envFile, cwd) {
|
|
141
|
+
var existingValue = readEnvVariable(cwd, variable.key, envFile),
|
|
142
|
+
hasValue = existingValue && existingValue !== "" && !existingValue.includes("your-");
|
|
143
|
+
if (console.info(""), console.info(pc.bold(variable.label)), console.info(pc.gray(variable.description)), hasValue) {
|
|
144
|
+
var update = await clack.confirm({
|
|
145
|
+
message: `${pc.green("\u2713")} Already configured. Update?`,
|
|
146
|
+
initialValue: !1
|
|
147
|
+
});
|
|
148
|
+
if (clack.isCancel(update) || !update) return;
|
|
149
|
+
}
|
|
150
|
+
console.info(""), console.info(pc.cyan("Instructions:")), variable.instructions.split(`
|
|
151
|
+
`).forEach(function (line) {
|
|
152
|
+
console.info(pc.gray(` ${line}`));
|
|
153
|
+
}), console.info("");
|
|
154
|
+
var value;
|
|
155
|
+
if (variable.generator) {
|
|
156
|
+
var generate = await clack.confirm({
|
|
157
|
+
message: `Generate ${variable.label} automatically?`,
|
|
158
|
+
initialValue: !0
|
|
159
|
+
});
|
|
160
|
+
!clack.isCancel(generate) && generate && (value = variable.generator(), console.info(pc.green(`\u2713 Generated ${variable.label}`)));
|
|
161
|
+
}
|
|
162
|
+
if (!value) if (variable.type === "multiline") console.info(pc.gray("Paste content (press Enter twice when done):")), value = await readMultilineInput();else if (variable.type === "secret") {
|
|
163
|
+
var result = await clack.password({
|
|
164
|
+
message: `Enter ${variable.label}:`,
|
|
165
|
+
mask: "*"
|
|
166
|
+
});
|
|
167
|
+
clack.isCancel(result) || (value = result);
|
|
168
|
+
} else {
|
|
169
|
+
var result1 = await clack.text({
|
|
170
|
+
message: `Enter ${variable.label}:`,
|
|
171
|
+
placeholder: variable.placeholder,
|
|
172
|
+
defaultValue: variable.default,
|
|
173
|
+
validate: function (val) {
|
|
174
|
+
if (variable.required && !val) return "This field is required";
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
clack.isCancel(result1) || (value = result1);
|
|
178
|
+
}
|
|
179
|
+
value && !clack.isCancel(value) ? (updateEnvVariable(cwd, variable.key, value, envFile), console.info(pc.green(`\u2713 Saved ${variable.key}`))) : variable.required ? console.info(pc.yellow(`\u26A0 Skipped required variable: ${variable.key}`)) : console.info(pc.gray(` Skipped ${variable.key}`));
|
|
180
|
+
}
|
|
181
|
+
async function readMultilineInput() {
|
|
182
|
+
return new Promise(function (resolve2) {
|
|
183
|
+
var lines = [],
|
|
184
|
+
emptyLineCount = 0,
|
|
185
|
+
reader = process.stdin;
|
|
186
|
+
reader.setEncoding("utf8");
|
|
187
|
+
var onData = function (chunk) {
|
|
188
|
+
var chunkLines = chunk.split(`
|
|
189
|
+
`),
|
|
190
|
+
_iteratorNormalCompletion = !0,
|
|
191
|
+
_didIteratorError = !1,
|
|
192
|
+
_iteratorError = void 0;
|
|
193
|
+
try {
|
|
194
|
+
for (var _iterator = chunkLines[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
|
|
195
|
+
var line = _step.value;
|
|
196
|
+
if (line === "") {
|
|
197
|
+
if (emptyLineCount++, emptyLineCount >= 2) {
|
|
198
|
+
reader.removeListener("data", onData), resolve2(lines.join(`
|
|
199
|
+
`));
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
} else emptyLineCount === 1 && lines.push(""), emptyLineCount = 0, lines.push(line);
|
|
203
|
+
}
|
|
204
|
+
} catch (err) {
|
|
205
|
+
_didIteratorError = !0, _iteratorError = err;
|
|
206
|
+
} finally {
|
|
207
|
+
try {
|
|
208
|
+
!_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
|
|
209
|
+
} finally {
|
|
210
|
+
if (_didIteratorError) throw _iteratorError;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
};
|
|
214
|
+
reader.on("data", onData);
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
function listCategories() {
|
|
218
|
+
console.info(pc.bold(`
|
|
219
|
+
Available environment categories:
|
|
220
|
+
`));
|
|
221
|
+
var _iteratorNormalCompletion = !0,
|
|
222
|
+
_didIteratorError = !1,
|
|
223
|
+
_iteratorError = void 0;
|
|
224
|
+
try {
|
|
225
|
+
for (var _iterator = envCategories[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
|
|
226
|
+
var category = _step.value,
|
|
227
|
+
status = category.required ? pc.red("required") : pc.gray("optional");
|
|
228
|
+
console.info(` ${pc.cyan(category.id.padEnd(12))} - ${category.name} ${status}`), console.info(` ${pc.gray(category.description)}`), category.setupTime && console.info(` ${pc.yellow(category.setupTime)}`), console.info("");
|
|
229
|
+
}
|
|
230
|
+
} catch (err) {
|
|
231
|
+
_didIteratorError = !0, _iteratorError = err;
|
|
232
|
+
} finally {
|
|
233
|
+
try {
|
|
234
|
+
!_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
|
|
235
|
+
} finally {
|
|
236
|
+
if (_didIteratorError) throw _iteratorError;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
console.info(pc.gray("Run setup for a specific category:")), console.info(pc.cyan(` bun takeout env:setup --category <id>
|
|
240
|
+
`));
|
|
241
|
+
}
|
|
242
|
+
export { listCategories, setupProductionEnv };
|
|
243
|
+
//# sourceMappingURL=env-setup.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["writeFileSync","resolve","clack","pc","updateEnvVariable","readEnvVariable","envFileExists","copyEnvFile","envCategories","_instanceof","left","right","Symbol","hasInstance","setupProductionEnv","cwd","options","arguments","length","envFile","fullPath","cleanup","console","info","yellow","cyan","gray","process","exit","on","intro","bgCyan","black","createFile","confirm","message","initialValue","isCancel","cancel","removeListener","exampleFile","green","categoriesToSetup","onlyCategory","filter","cat","id","interactive","setupProd","note","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","iterator","_step","next","done","category","value","shouldSetup","setupCategory","err","return","configuredVars","skippedVars","_iteratorNormalCompletion1","_didIteratorError1","_iteratorError1","_iterator1","_step1","category1","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_iterator2","variables","_step2","variable","key","includes","push","required","outro","forEach","v","error","Error","spinner","bold","name","setupTime","setupCategory2","description","setupVariable","existingValue","hasValue","label","update","instructions","split","line","generator","generate","type","readMultilineInput","result","password","mask","result1","text","placeholder"],"sources":["../../../src/utils/env-setup.ts"],"sourcesContent":[null],"mappings":"AAAA,SAAmCA,aAAA,QAAqB;AACxD,SAASC,OAAA,QAAe;AAExB,YAAYC,KAAA,MAAW;AACvB,OAAOC,EAAA,MAAQ;AAEf,SAASC,iBAAA,EAAmBC,eAAA,EAAiBC,aAAA,EAAeC,WAAA,QAAmB;AAC/E,SAAAC,aAAA;AAAA,SACEC,YAAAC,IAAA,EAAAC,KAAA;EAAA,OAGKA,KAAA,mBAAAC,MAAA,UAAAD,KAAA,CAAAC,MAAA,CAAAC,WAAA,MAAAF,KAAA,CAAAC,MAAA,CAAAC,WAAA,EAAAH,IAAA,IAAAA,IAAA,YAAAC,KAAA;AAWP;AAIE,eAAMG,kBAAkBA,CAAAC,GAAW;EAKjC,IAAAC,OAAQ,GAAAC,SAAK,CAAAC,MAAA,QAAAD,SAAA,iBAAAA,SAAA;IAAAE,OAAA,GAAAH,OAAA,CAAAG,OAAA;IAAAC,QAAA,GAAAnB,OAAA,CAAAc,GAAA,EAAAI,OAAA;IAAAE,OAAA,YAAAA,CAAA;MAAOC,OAAG,CAAAC,IAAO;AAEtB,IAAApB,EACN,CAAAqB,MAAG,CAAK,qDAAAF,OAAA,CAAAC,IAAA,CAAApB,EAAA,CAAAsB,IAAA,8BAAAH,OAAA,CAAAC,IAAA,CAAApB,EAAA,CAAAuB,IAAA;AAAA,oEAAuE,IAAAC,OAAA,CAAAC,IAAA;IAAA;EAGnFD,OAAA,CAAAE,EAAA,WAAAR,OAAA,GAAAM,OAAA,CAAAE,EAAA,YAAAR,OAAA;EAEA;IAGA,IAAInB,KAAA,CAAA4B,KAAA,CAAA3B,EAAA,CAAA4B,MAAA,CAAA5B,EAAA,CAAA6B,KAAA,sCAAAV,OAAA,CAAAC,IAAA,CAAApB,EAAA,CAAAuB,IAAA,8CAAAJ,OAAA,CAAAC,IAAA,CAAApB,EAAA,CAAAuB,IAAA;AAOF,MAAApB,aANM,CAAMS,GAAG,EAAAI,OAAO,CAAG;MAMpB,IAAAc,UAAc,SAAK/B,KAAO,CAAGgC,OAAA;QAChCC,OAAM,KAAAhB,OAAa,yCAAoB;QACrCiB,YAAY;MAAO,EACnB;MACF,IAAClC,KAAA,CAAAmC,QAAA,CAAAJ,UAAA,MAAAA,UAAA,EAED,OAAI/B,KAAM,CAAAoC,MAAS,kBAAgB,GAAAX,OAAA,CAAAY,cAAA,WAAAlB,OAAA,GAAAM,OAAA,CAAAY,cAAA,YAAAlB,OAAA;MACjC,IAAAmB,WAAM,4BACN;MAKFlC,aAAM,CAAAS,GAAA,EAAAyB,WAAc,KAAAjC,WAAA,CAAAQ,GAAA,EAAAyB,WAAA,EAAArB,OAAA,GAAAG,OAAA,CAAAC,IAAA,CAAApB,EAAA,CAAAsC,KAAA,mBAAAtB,OAAA;AACpB,QAAInB,aAAc,CAAAoB,QAAK;AAEqB,CAAiB,CAAC,EAAAE,OAG5D,CAAAC,IAAA,CAAApB,EAAA,CAAAsC,KAAc,yBAAUtB,OAAA;AAAA,CAAsC,GAC9D;IAAqD;IAEzD,IAAAuB,iBAAA,GAAA1B,OAAA,CAAA2B,YAAA,GAAAnC,aAAA,CAAAoC,MAAA,WAAAC,GAAA;MAGA,OAAIA,GAAA,CAAAC,EAAA,KAAA9B,OAAoB,CAAA2B,YAAQ;IAIhC,KAAInC,aAAA;IACF,IAAAkC,iBAAM,CAAOxB,MAAA,QAOf,OAAIhB,KAAQ,CAAAoC,MAAA,cAA0BtB,OAAA,CAAQ2B,YAAA,aAAc,GAAAhB,OAAA,CAAAY,cAAA,WAAAlB,OAAA,GAAAM,OAAA,CAAAY,cAAA,YAAAlB,OAAA;IAC1D,IAAAL,OAAM,CAAA+B,WAAY,KAAM,MAAM,CAAA/B,OAAQ,CAAA2B,YAAA;MAAA,IACpCK,SAAS,SAAA9C,KAAA,CAAAgC,OAAA;QACTC,OAAA,2DAAc;QACfC,YAAA;MAED;MACE,IAAAlC,KAAA,CAAAmC,QAAM,CAAAW,SAAA,MAAAA,SAAA,SACJ9C,KAAA,CAAA+C,IAAA;AAAA,EAAsD9C,EAAA,CAAGsB,IAAA,CAAK,uBAAuB,CAAC,IAAAtB,EAAA,CAAAqB,MAAA,gCAAAG,OAAA,CAAAY,cAAA,WAAAlB,OAAA,GAAAM,OAAA,CAAAY,cAAA,YAAAlB,OAAA;IAAA;IACjD,IACvC6B,yBACQ,GAAe;MAAAC,iBACvB,KAAQ;MAAAC,cAAe;IAG3B;MAGA,SAAWC,SAAA,GAAYX,iBAAA,CAAA9B,MAAA,CAAA0C,QAAA,KAAAC,KAAA,IAAAL,yBAAA,IAAAK,KAAA,GAAAF,SAAA,CAAAG,IAAA,IAAAC,IAAA,GAAAP,yBAAA,OACD,IAAMQ,QAAA,GAAAH,KAAc,CAAAI,KAAA,EAAUC,WAAS,GAAK,MAAAC,aAAO,CAAAH,QAAA,EAAAvC,OAAA,EAAAJ,GAAA,EAAAC,OAAA;IAOzE,SAAM8C,GAAA;MAGNX,iBAAW,IAAY,GAAAC,cAAA,GAAAU,GAAA;IACrB;MACE;QACI,CAAAZ,yBAA0B,IAAAG,SAAM,CAAAU,MAAS,IAAO,IAClD,IAAAV,SAAe,CAAAU,MAAK;MAIxB;QAGF,IAAIZ,iBAAe,EAGZ,MAAKC,cAAA;MAAA;IACV;IAGU,IACNY,cAAG;MAAAC,WAAA;MAAAC,0BAAA;MAAAC,kBAAA;MAAAC,eAAA;IAAA,IACD;MAAA,SAAAC,UAAA,GAAA3B,iBAAA,CAAA9B,MAAA,CAAA0C,QAAA,KAAAgB,MAAA,IAAAJ,0BAAA,IAAAI,MAAA,GAAAD,UAAA,CAAAb,IAAA,IAAAC,IAAA,GAAAS,0BAAA;QACF,IAAAK,SAAA,GAAAD,MAAA,CAAAX,KAAA;UAAAa,0BAAA;UAAAC,kBAAA;UAAAC,eAAA;QAEF;UAGmB,SAAAC,UAAA,GAAAJ,SAA4C,CAAAK,SACjE,CAAQhE,MAAK,CAAA0C,QAAQ,KAAAuB,MAAA,IAAAL,0BACR,GAAG,CAAAK,MAAK,GAAAF,UAAA,CAAAnB,IAAA,IAAAC,IAAA,GAAAe,0BAAA;YAAA,IAAAM,QAAA,GAAAD,MAAmC,CAAAlB,KACxD;cAAAA,KAAQ,GAAKtD,eAAQ,CAAAU,GAAA,EAAA+D,QAAA,CAAAC,GAAA,EAAA5D,OAAA;YAIAwC,KAAA,IAAAA,KAAA,YAAAA,KAA4C,CACjEqB,QAAQ,QAAQ,IAAAhB,cAAK,CAAAiB,IAAA,CAAAH,QAA0B,CAAAC,GAGjD,IAAAD,QAAQ,CAAAI,QAAA,IAAejB,WAAU,CAAAgB,IAAO,CACxCH,QAAQ,CAAAC,GAAA;UAEV;QACE,SAAQjB,GAAA;UAGNW,kBAAO,OAAAC,eAAA,GAAAZ,GAAA;QAET,UAAM;UACR;YACF,CAAAU,0BAAA,IAAAG,UAAA,CAAAZ,MAAA,YAAAY,UAAA,CAAAZ,MAAA;UAEA,UAAe;YAMP,IAAAU,kBAAwB,EAG1B,MAAUC,eAAkB;UAC3B;QAQC;MACJ;IACA,SAAAZ,GAAA,EAAc;MACfK,kBAAA,OAAAC,eAAA,GAAAN,GAAA;IAED,UAAU;MACR;QAIF,CAAAI,0BAAqB,IAAAG,UAAA,CAAAN,MAAA,YAAAM,UAAA,CAAAN,MAAA;MAAK,UAAS;QAAgB,IAAAI,kBAAA,EAGnD,MAAWC,eAAY;MACrB;IAGF;IACF,OAAAJ,cAAA,CAAA9C,MAAA,QAAAhB,KAAA,CAAAiF,KAAA,CAAAhF,EAAA,CAAAsC,KAAA,yCAAAnB,OAAA,CAAAC,IAAA,CAAApB,EAAA,CAAAuB,IAAA;AAEA,aAAAsC,cAAe,CAAA9C,MACb,iBAEAC,OACe,MAAA8C,WAAA,CAAA/C,MAAA,SAAAI,OAAA,CAAAC,IAAA,CAAApB,EAAA,CAAAqB,MAAA;AAEf,6FAEE,IAAiByC,WAAA,CAAAmB,OAAkB,WAAOC,CAAA;MAE5C,OAAA/D,OAAa,CAAEC,IACf,CAAApB,EAAA,CAAAuB,IAAQ,QAAQ2D,CAAA,GAAK;IAInB,KAAA/D,OAAM,CAAAC,IAAS,CAAApB,EAAA,CAAMsB,IAAA;AAAc,wCACR,IAAAH,OAAA,CAAAC,IAAA,CAAApB,EAAA,CAAAuB,IAAA,8BAAAJ,OAAA,CAAAC,IAAA,CAAApB,EAAA,CAAAsB,IAAA;AAAA,+BACX,IAAAH,OAAA,CAAAC,IAAA,CAAApB,EAAA,CAAAuB,IAAA,6CAAAJ,OAAA,CAAAC,IAAA,CAAApB,EAAA,CAAAuB,IAAA,kDAAAxB,KAAA,CAAAiF,KAAA,CAAAhF,EAAA,CAAAqB,MAAA,8BAAAF,OAAA,CAAAC,IAAA,CAAApB,EAAA,CAAAuB,IAAA;AAAA,wCACf,IAAAJ,OAAA,CAAAC,IAAA,CAAApB,EAAA,CAAAuB,IAAA,+BAAAC,OAAA,CAAAY,cAAA,WAAAlB,OAAA,GAAAM,OAAA,CAAAY,cAAA,YAAAlB,OAAA;EAED,SAAIiE,KAAM;IACR,IAAA3D,OAAA,CAAAY,cAAA,WAAAlB,OAAA,GAAAM,OAAA,CAAAY,cAAA,YAAAlB,OAAA,GAAAZ,WAAA,CAAA6E,KAAA,EAAAC,KAAA,KAAAD,KAAA,CAAAnD,OAAA,CAAA6C,QAAA,eAEJ;IAGA,MAAQM,KAAK;EAEmB;AAC9B;AAAiC,eAE3BzB,aAAOA,CAAAH,QAAA,EAAAvC,OAAA,EAAAJ,GAAA,EAAAC,OAAA;EAGf,IAAIwE,OAAA,GAAAtF,KAAA,CAAAsF,OAAA;IAAArD,OAAA,aAAAhC,EAAA,CAAAsF,IAAA,CAAA/B,QAAA,CAAAgC,IAAA;EAEJhC,QAAI,CAAAwB,QAAS,KAAA/C,OAAW,IAAAhC,EAAA,CAAAuB,IAAA,kBAAAgC,QAAA,CAAAiC,SAAA,KAAAxD,OAAA,IAAAhC,EAAA,CAAAqB,MAAA,KAAAkC,QAAA,CAAAiC,SAAA,MAAArE,OAAA,CAAAC,IAAA;EACtB,IAAAqE,cAAM,GAAW,MAAM1F,KAAM,CAAAgC,OAAQ;IAAAC,OACnC;IAAmCC,YACnC,EAAAsB,QAAc,CAAAwB;EAAA,EAChB;EAEA,IAAKhF,KAAM,CAAAmC,QAAS,CAAAuD,cAAa,MAAAA,cACvB,EAGZ,OAAAtE,OAAA,CAAAC,IAAA,CAAApB,EAAA,CAAAuB,IAAA,eAAAgC,QAAA,CAAAgC,IAAA;EAEApE,OAAK,CAAAC,IAAA,CAAApB,EAAA,CAAAuB,IAAA;AACH,EAAAgC,QAAI,CAAAmC,WAAS;AACX;EACiC,IAAA3C,yBACN;IAAAC,iBAAU;IAAAC,cAAA;EACrC;IAAoC,KAClC,IAAAC,SAAS,GAAAK,QAAS,CAAAkB,SAAc,CAAAhE,MAAA,CAAA0C,QAAA,KAAAC,KAAA,IAAAL,yBAAA,IAAAK,KAAA,GAAAF,SAAA,CAAAG,IAAA,IAAAC,IAAA,GAAAP,yBAAA;MAAA,IAChC4B,QAAM,GAAAvB,KAAA,CAAAI,KAAA;MACR,MAACmC,aAAA,CAAAhB,QAAA,EAAA3D,OAAA,EAAAJ,GAAA;IACD;EACU,EAEZ,OAAO+C,GAAA;IACLX,iBAAe,OAAMC,cAAW,GAAAU,GAAA;EAAA,UAC9B;IAAgC,IAChC;MAAsB,CAAAZ,yBACC,IAAAG,SAAA,CAAAU,MAAA,YAAAV,SAAA,CAAAU,MAAA;IAAA,UACvB;MACE,IAAAZ,iBAAa,EACX,MAAAC,cAAO;IAAA;EAEX;EAEF,OAAK;AACK;AAKd,eAAc0C,aAAeA,CAAAhB,QAC3B,EAAA3D,OAAA,EAAAJ,GAAA;EAOJ,IAAAgF,aAAA,GAAA1F,eAAA,CAAAU,GAAA,EAAA+D,QAAA,CAAAC,GAAA,EAAA5D,OAAA;IAAA6E,QAAA,GAAAD,aAAA,IAAAA,aAAA,YAAAA,aAAA,CAAAf,QAAA;EAEA,IAAA1D,OAAA,CAAAC,IAAe,MAAAD,OAAA,CAAAC,IAAsC,CAAApB,EAAA,CAAAsF,IAAA,CAAAX,QAAA,CAAAmB,KAAA,IAAA3E,OAAA,CAAAC,IAAA,CAAApB,EAAA,CAAAuB,IAAA,CAAAoD,QAAA,CAAAe,WAAA,IAAAG,QAAA;IACnD,IAAAE,MAAW,SAAShG,KAAA,CAAAgC,OAAY;MAC9BC,OAAM,KAAkBhC,EAAC,CAAAsC,KAAA;MACzBL,YAAI;IAEJ;IACA,IAAAlC,KAAO,CAAAmC,QAAA,CAAY6D,MAAM,MAAAA,MAAA,EAEzB;EACE;EAAmC5E,OAAA,CAAAC,IAAA,MAAAD,OAAA,CAAAC,IAAA,CAAApB,EAAA,CAAAsB,IAAA,oBAAAqD,QAAA,CAAAqB,YAAA,CAAAC,KAAA;AACnC,GAAAhB,OAAA,WAAWiB,IAAA,EAAQ;IACjB/E,OAAA,CAAIC,IAAA,CAAApB,EAAA,CAAAuB,IAAS,MAAA2E,IAAA;EAEX,IAAA/E,OAAA,CADAC,IAAA;EAEE,IAAAoC,KAAA;EACwB,IAAAmB,QAAA,CAAAwB,SAAA;IACxB,IAAAC,QAAA,SAAArG,KAAA,CAAAgC,OAAA;MAAAC,OACF,cAAA2C,QAAA,CAAAmB,KAAA;MAAA7D,YAAA;IAEA;IAON,CAAAlC,KAAA,CAAAmC,QAAA,CAAAkE,QAAA,KAAAA,QAAA,KAAA5C,KAAA,GAAAmB,QAAA,CAAAwB,SAAA,IAAAhF,OAAA,CAAAC,IAAA,CAAApB,EAAA,CAAAsC,KAAA,qBAAAqC,QAAA,CAAAmB,KAAA;EAEA;EACF,IAAC,CAAAtC,KAAA,EACH,IAAAmB,QAAA,CAAA0B,IAAA,kBAEOlF,OAAS,CAAAC,IAAA,CAAApB,EAAA,CAAAuB,IAAuB,mDAAAiC,KAAA,SAAA8C,kBAAA,QACrC,IAAQ3B,QAAQ,CAAA0B,IAAK;IAAA,IAAAE,MAAA,SAAAxG,KAAA,CAAAyG,QAAA;MAAwCxE,OAAA,WAAA2C,QAAA,CAAAmB,KAAA;MAE7DW,IAAA,EAAW;IACT;IACA1G,KAAA,CAAQmC,QAAK,CAAAqE,MAAQ,MAAK/C,KAAA,GAAS+C,MAAG;EAMxC;IAEA,IAAQG,OAAK,GAAG,MAAK3G,KAAA,CAAA4G,IAAA;MAC4C3E,OAAA,WAAA2C,QAAA,CAAAmB,KAAA;MACnEc,WAAA,EAAAjC,QAAA,CAAAiC,WAAA","ignoreList":[]}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { randomBytes } from "node:crypto";
|
|
2
|
+
import { copyFileSync, existsSync, readFileSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
function generateSecret(length = 32) {
|
|
5
|
+
return randomBytes(length).toString("hex");
|
|
6
|
+
}
|
|
7
|
+
function envFileExists(cwd, filename = ".env") {
|
|
8
|
+
return existsSync(join(cwd, filename));
|
|
9
|
+
}
|
|
10
|
+
function copyEnvFile(cwd, source, target) {
|
|
11
|
+
const sourcePath = join(cwd, source), targetPath = join(cwd, target);
|
|
12
|
+
if (!existsSync(sourcePath))
|
|
13
|
+
return { success: !1, error: `Source file ${source} not found` };
|
|
14
|
+
if (existsSync(targetPath))
|
|
15
|
+
return { success: !1, error: `Target file ${target} already exists` };
|
|
16
|
+
try {
|
|
17
|
+
return copyFileSync(sourcePath, targetPath), { success: !0 };
|
|
18
|
+
} catch (error) {
|
|
19
|
+
return {
|
|
20
|
+
success: !1,
|
|
21
|
+
error: error instanceof Error ? error.message : "Unknown error"
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
function updateEnvVariable(cwd, key, value, filename = ".env") {
|
|
26
|
+
const envPath = join(cwd, filename);
|
|
27
|
+
if (!existsSync(envPath))
|
|
28
|
+
return { success: !1, error: `${filename} not found` };
|
|
29
|
+
try {
|
|
30
|
+
let content = readFileSync(envPath, "utf-8");
|
|
31
|
+
const keyRegex = new RegExp(`^${key}=.*$`, "m");
|
|
32
|
+
return keyRegex.test(content) ? content = content.replace(keyRegex, `${key}=${value}`) : content = content.trimEnd() + `
|
|
33
|
+
${key}=${value}
|
|
34
|
+
`, writeFileSync(envPath, content, "utf-8"), { success: !0 };
|
|
35
|
+
} catch (error) {
|
|
36
|
+
return {
|
|
37
|
+
success: !1,
|
|
38
|
+
error: error instanceof Error ? error.message : "Unknown error"
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
function createEnvLocal(cwd) {
|
|
43
|
+
const envLocalPath = join(cwd, ".env.local");
|
|
44
|
+
if (existsSync(envLocalPath))
|
|
45
|
+
return { success: !0 };
|
|
46
|
+
const template = `# Local environment overrides
|
|
47
|
+
# This file is gitignored and never committed
|
|
48
|
+
# Add your personal secrets and local configuration here
|
|
49
|
+
# These values override .env
|
|
50
|
+
|
|
51
|
+
# Example:
|
|
52
|
+
# BETTER_AUTH_SECRET=your-secret-here
|
|
53
|
+
# AWS_ACCESS_KEY_ID=your-key-here
|
|
54
|
+
`;
|
|
55
|
+
try {
|
|
56
|
+
return writeFileSync(envLocalPath, template, "utf-8"), { success: !0 };
|
|
57
|
+
} catch (error) {
|
|
58
|
+
return {
|
|
59
|
+
success: !1,
|
|
60
|
+
error: error instanceof Error ? error.message : "Unknown error"
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
function readEnvVariable(cwd, key, filename = ".env") {
|
|
65
|
+
const envPath = join(cwd, filename);
|
|
66
|
+
if (!existsSync(envPath))
|
|
67
|
+
return null;
|
|
68
|
+
try {
|
|
69
|
+
const content = readFileSync(envPath, "utf-8"), keyRegex = new RegExp(`^${key}=(.*)$`, "m");
|
|
70
|
+
return content.match(keyRegex)?.[1]?.trim().replace(/^["']|["']$/g, "") || null;
|
|
71
|
+
} catch {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
export {
|
|
76
|
+
copyEnvFile,
|
|
77
|
+
createEnvLocal,
|
|
78
|
+
envFileExists,
|
|
79
|
+
generateSecret,
|
|
80
|
+
readEnvVariable,
|
|
81
|
+
updateEnvVariable
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=env.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/utils/env.ts"],
|
|
4
|
+
"mappings": "AAIA,SAAS,mBAAmB;AAC5B,SAAS,cAAc,YAAY,cAAc,qBAAqB;AACtE,SAAS,YAAY;AAEd,SAAS,eAAe,SAAS,IAAY;AAClD,SAAO,YAAY,MAAM,EAAE,SAAS,KAAK;AAC3C;AAEO,SAAS,cAAc,KAAa,WAAW,QAAiB;AACrE,SAAO,WAAW,KAAK,KAAK,QAAQ,CAAC;AACvC;AAEO,SAAS,YACd,KACA,QACA,QACsC;AACtC,QAAM,aAAa,KAAK,KAAK,MAAM,GAC7B,aAAa,KAAK,KAAK,MAAM;AAEnC,MAAI,CAAC,WAAW,UAAU;AACxB,WAAO,EAAE,SAAS,IAAO,OAAO,eAAe,MAAM,aAAa;AAGpE,MAAI,WAAW,UAAU;AACvB,WAAO,EAAE,SAAS,IAAO,OAAO,eAAe,MAAM,kBAAkB;AAGzE,MAAI;AACF,wBAAa,YAAY,UAAU,GAC5B,EAAE,SAAS,GAAK;AAAA,EACzB,SAAS,OAAO;AACd,WAAO;AAAA,MACL,SAAS;AAAA,MACT,OAAO,iBAAiB,QAAQ,MAAM,UAAU;AAAA,IAClD;AAAA,EACF;AACF;AAEO,SAAS,kBACd,KACA,KACA,OACA,WAAW,QAC2B;AACtC,QAAM,UAAU,KAAK,KAAK,QAAQ;AAElC,MAAI,CAAC,WAAW,OAAO;AACrB,WAAO,EAAE,SAAS,IAAO,OAAO,GAAG,QAAQ,aAAa;AAG1D,MAAI;AACF,QAAI,UAAU,aAAa,SAAS,OAAO;AAG3C,UAAM,WAAW,IAAI,OAAO,IAAI,GAAG,QAAQ,GAAG;AAE9C,WAAI,SAAS,KAAK,OAAO,IAEvB,UAAU,QAAQ,QAAQ,UAAU,GAAG,GAAG,IAAI,KAAK,EAAE,IAGrD,UAAU,QAAQ,QAAQ,IAAI;AAAA,EAAK,GAAG,IAAI,KAAK;AAAA,GAGjD,cAAc,SAAS,SAAS,OAAO,GAChC,EAAE,SAAS,GAAK;AAAA,EACzB,SAAS,OAAO;AACd,WAAO;AAAA,MACL,SAAS;AAAA,MACT,OAAO,iBAAiB,QAAQ,MAAM,UAAU;AAAA,IAClD;AAAA,EACF;AACF;AAEO,SAAS,eAAe,KAAmD;AAChF,QAAM,eAAe,KAAK,KAAK,YAAY;AAE3C,MAAI,WAAW,YAAY;AACzB,WAAO,EAAE,SAAS,GAAK;AAGzB,QAAM,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUjB,MAAI;AACF,yBAAc,cAAc,UAAU,OAAO,GACtC,EAAE,SAAS,GAAK;AAAA,EACzB,SAAS,OAAO;AACd,WAAO;AAAA,MACL,SAAS;AAAA,MACT,OAAO,iBAAiB,QAAQ,MAAM,UAAU;AAAA,IAClD;AAAA,EACF;AACF;AAEO,SAAS,gBACd,KACA,KACA,WAAW,QACI;AACf,QAAM,UAAU,KAAK,KAAK,QAAQ;AAElC,MAAI,CAAC,WAAW,OAAO;AACrB,WAAO;AAGT,MAAI;AACF,UAAM,UAAU,aAAa,SAAS,OAAO,GACvC,WAAW,IAAI,OAAO,IAAI,GAAG,UAAU,GAAG;AAEhD,WADc,QAAQ,MAAM,QAAQ,IACrB,CAAC,GAAG,KAAK,EAAE,QAAQ,gBAAgB,EAAE,KAAK;AAAA,EAC3D,QAAQ;AACN,WAAO;AAAA,EACT;AACF;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { randomBytes } from "node:crypto";
|
|
2
|
+
import { copyFileSync, existsSync, readFileSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
function generateSecret(length = 32) {
|
|
5
|
+
return randomBytes(length).toString("hex");
|
|
6
|
+
}
|
|
7
|
+
function envFileExists(cwd, filename = ".env") {
|
|
8
|
+
return existsSync(join(cwd, filename));
|
|
9
|
+
}
|
|
10
|
+
function copyEnvFile(cwd, source, target) {
|
|
11
|
+
const sourcePath = join(cwd, source),
|
|
12
|
+
targetPath = join(cwd, target);
|
|
13
|
+
if (!existsSync(sourcePath)) return {
|
|
14
|
+
success: !1,
|
|
15
|
+
error: `Source file ${source} not found`
|
|
16
|
+
};
|
|
17
|
+
if (existsSync(targetPath)) return {
|
|
18
|
+
success: !1,
|
|
19
|
+
error: `Target file ${target} already exists`
|
|
20
|
+
};
|
|
21
|
+
try {
|
|
22
|
+
return copyFileSync(sourcePath, targetPath), {
|
|
23
|
+
success: !0
|
|
24
|
+
};
|
|
25
|
+
} catch (error) {
|
|
26
|
+
return {
|
|
27
|
+
success: !1,
|
|
28
|
+
error: error instanceof Error ? error.message : "Unknown error"
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
function updateEnvVariable(cwd, key, value, filename = ".env") {
|
|
33
|
+
const envPath = join(cwd, filename);
|
|
34
|
+
if (!existsSync(envPath)) return {
|
|
35
|
+
success: !1,
|
|
36
|
+
error: `${filename} not found`
|
|
37
|
+
};
|
|
38
|
+
try {
|
|
39
|
+
let content = readFileSync(envPath, "utf-8");
|
|
40
|
+
const keyRegex = new RegExp(`^${key}=.*$`, "m");
|
|
41
|
+
return keyRegex.test(content) ? content = content.replace(keyRegex, `${key}=${value}`) : content = content.trimEnd() + `
|
|
42
|
+
${key}=${value}
|
|
43
|
+
`, writeFileSync(envPath, content, "utf-8"), {
|
|
44
|
+
success: !0
|
|
45
|
+
};
|
|
46
|
+
} catch (error) {
|
|
47
|
+
return {
|
|
48
|
+
success: !1,
|
|
49
|
+
error: error instanceof Error ? error.message : "Unknown error"
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
function createEnvLocal(cwd) {
|
|
54
|
+
const envLocalPath = join(cwd, ".env.local");
|
|
55
|
+
if (existsSync(envLocalPath)) return {
|
|
56
|
+
success: !0
|
|
57
|
+
};
|
|
58
|
+
const template = `# Local environment overrides
|
|
59
|
+
# This file is gitignored and never committed
|
|
60
|
+
# Add your personal secrets and local configuration here
|
|
61
|
+
# These values override .env
|
|
62
|
+
|
|
63
|
+
# Example:
|
|
64
|
+
# BETTER_AUTH_SECRET=your-secret-here
|
|
65
|
+
# AWS_ACCESS_KEY_ID=your-key-here
|
|
66
|
+
`;
|
|
67
|
+
try {
|
|
68
|
+
return writeFileSync(envLocalPath, template, "utf-8"), {
|
|
69
|
+
success: !0
|
|
70
|
+
};
|
|
71
|
+
} catch (error) {
|
|
72
|
+
return {
|
|
73
|
+
success: !1,
|
|
74
|
+
error: error instanceof Error ? error.message : "Unknown error"
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
function readEnvVariable(cwd, key, filename = ".env") {
|
|
79
|
+
const envPath = join(cwd, filename);
|
|
80
|
+
if (!existsSync(envPath)) return null;
|
|
81
|
+
try {
|
|
82
|
+
const content = readFileSync(envPath, "utf-8"),
|
|
83
|
+
keyRegex = new RegExp(`^${key}=(.*)$`, "m");
|
|
84
|
+
return content.match(keyRegex)?.[1]?.trim().replace(/^["']|["']$/g, "") || null;
|
|
85
|
+
} catch {
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
export { copyEnvFile, createEnvLocal, envFileExists, generateSecret, readEnvVariable, updateEnvVariable };
|
|
90
|
+
//# sourceMappingURL=env.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["randomBytes","copyFileSync","existsSync","readFileSync","writeFileSync","join","generateSecret","length","toString","envFileExists","cwd","filename","copyEnvFile","source","target","sourcePath","targetPath","success","error","Error","message","updateEnvVariable","key","value","envPath","content","keyRegex","RegExp","test","replace","trimEnd","createEnvLocal","envLocalPath","template","readEnvVariable","match","trim"],"sources":["../../../src/utils/env.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { randomBytes } from "crypto";
|
|
2
|
+
import { copyFileSync, existsSync, readFileSync, writeFileSync } from "fs";
|
|
3
|
+
import { join } from "path";
|
|
4
|
+
function _instanceof(left, right) {
|
|
5
|
+
return right != null && typeof Symbol < "u" && right[Symbol.hasInstance] ? !!right[Symbol.hasInstance](left) : left instanceof right;
|
|
6
|
+
}
|
|
7
|
+
function generateSecret() {
|
|
8
|
+
var length = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 32;
|
|
9
|
+
return randomBytes(length).toString("hex");
|
|
10
|
+
}
|
|
11
|
+
function envFileExists(cwd) {
|
|
12
|
+
var filename = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : ".env";
|
|
13
|
+
return existsSync(join(cwd, filename));
|
|
14
|
+
}
|
|
15
|
+
function copyEnvFile(cwd, source, target) {
|
|
16
|
+
var sourcePath = join(cwd, source),
|
|
17
|
+
targetPath = join(cwd, target);
|
|
18
|
+
if (!existsSync(sourcePath)) return {
|
|
19
|
+
success: !1,
|
|
20
|
+
error: `Source file ${source} not found`
|
|
21
|
+
};
|
|
22
|
+
if (existsSync(targetPath)) return {
|
|
23
|
+
success: !1,
|
|
24
|
+
error: `Target file ${target} already exists`
|
|
25
|
+
};
|
|
26
|
+
try {
|
|
27
|
+
return copyFileSync(sourcePath, targetPath), {
|
|
28
|
+
success: !0
|
|
29
|
+
};
|
|
30
|
+
} catch (error) {
|
|
31
|
+
return {
|
|
32
|
+
success: !1,
|
|
33
|
+
error: _instanceof(error, Error) ? error.message : "Unknown error"
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function updateEnvVariable(cwd, key, value) {
|
|
38
|
+
var filename = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : ".env",
|
|
39
|
+
envPath = join(cwd, filename);
|
|
40
|
+
if (!existsSync(envPath)) return {
|
|
41
|
+
success: !1,
|
|
42
|
+
error: `${filename} not found`
|
|
43
|
+
};
|
|
44
|
+
try {
|
|
45
|
+
var content = readFileSync(envPath, "utf-8"),
|
|
46
|
+
keyRegex = new RegExp(`^${key}=.*$`, "m");
|
|
47
|
+
return keyRegex.test(content) ? content = content.replace(keyRegex, `${key}=${value}`) : content = content.trimEnd() + `
|
|
48
|
+
${key}=${value}
|
|
49
|
+
`, writeFileSync(envPath, content, "utf-8"), {
|
|
50
|
+
success: !0
|
|
51
|
+
};
|
|
52
|
+
} catch (error) {
|
|
53
|
+
return {
|
|
54
|
+
success: !1,
|
|
55
|
+
error: _instanceof(error, Error) ? error.message : "Unknown error"
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
function createEnvLocal(cwd) {
|
|
60
|
+
var envLocalPath = join(cwd, ".env.local");
|
|
61
|
+
if (existsSync(envLocalPath)) return {
|
|
62
|
+
success: !0
|
|
63
|
+
};
|
|
64
|
+
var template = `# Local environment overrides
|
|
65
|
+
# This file is gitignored and never committed
|
|
66
|
+
# Add your personal secrets and local configuration here
|
|
67
|
+
# These values override .env
|
|
68
|
+
|
|
69
|
+
# Example:
|
|
70
|
+
# BETTER_AUTH_SECRET=your-secret-here
|
|
71
|
+
# AWS_ACCESS_KEY_ID=your-key-here
|
|
72
|
+
`;
|
|
73
|
+
try {
|
|
74
|
+
return writeFileSync(envLocalPath, template, "utf-8"), {
|
|
75
|
+
success: !0
|
|
76
|
+
};
|
|
77
|
+
} catch (error) {
|
|
78
|
+
return {
|
|
79
|
+
success: !1,
|
|
80
|
+
error: _instanceof(error, Error) ? error.message : "Unknown error"
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
function readEnvVariable(cwd, key) {
|
|
85
|
+
var filename = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : ".env",
|
|
86
|
+
envPath = join(cwd, filename);
|
|
87
|
+
if (!existsSync(envPath)) return null;
|
|
88
|
+
try {
|
|
89
|
+
var _match_,
|
|
90
|
+
content = readFileSync(envPath, "utf-8"),
|
|
91
|
+
keyRegex = new RegExp(`^${key}=(.*)$`, "m"),
|
|
92
|
+
match = content.match(keyRegex);
|
|
93
|
+
return (match == null || (_match_ = match[1]) === null || _match_ === void 0 ? void 0 : _match_.trim().replace(/^["']|["']$/g, "")) || null;
|
|
94
|
+
} catch {
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
export { copyEnvFile, createEnvLocal, envFileExists, generateSecret, readEnvVariable, updateEnvVariable };
|
|
99
|
+
//# sourceMappingURL=env.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["randomBytes","copyFileSync","existsSync","readFileSync","writeFileSync","join","_instanceof","left","right","Symbol","hasInstance","generateSecret","length","arguments","toString","envFileExists","cwd","filename","copyEnvFile","source","target","sourcePath","targetPath","success","error","Error","message","updateEnvVariable","key","value","envPath","content","keyRegex","RegExp","test","replace","trimEnd","createEnvLocal","envLocalPath","template"],"sources":["../../../src/utils/env.ts"],"sourcesContent":[null],"mappings":"AAIA,SAASA,WAAA,QAAmB;AAC5B,SAASC,YAAA,EAAcC,UAAA,EAAYC,YAAA,EAAcC,aAAA,QAAqB;AACtE,SAASC,IAAA,QAAY;AAEd,SAASC,YAAAC,IAAe,EAAAC,KAAA,EAAS;EACtC,OAAOA,KAAA,QAAY,WAAQC,MAAS,MAAK,IAAAD,KAAA,CAAAC,MAAA,CAAAC,WAAA,MAAAF,KAAA,CAAAC,MAAA,CAAAC,WAAA,EAAAH,IAAA,IAAAA,IAAA,YAAAC,KAAA;AAC3C;AAEO,SAASG,cAAcA,CAAA;EAC5B,IAAAC,MAAO,GAAAC,SAAW,CAAKD,MAAK,QAASC,SAAA,iBAAAA,SAAA;EACvC,OAAAb,WAAA,CAAAY,MAAA,EAAAE,QAAA;AAEO;AAKL,SAAMC,aAAaA,CAAAC,GAAK;EAGxB,IAAIC,QAAC,GAAAJ,SAAW,CAAAD,MAAU,QAAAC,SAAA,iBAAAA,SAAA;EACxB,OAAAX,UAAS,CAAAG,IAAS,CAAAW,GAAO,EAAAC,QAAO;AAGlC;AACE,SAAAC,WAASA,CAAAF,GAAS,EAAOG,MAAA,EAAOC,MAAA;EAGlC,IAAIC,UAAA,GAAAhB,IAAA,CAAAW,GAAA,EAAAG,MAAA;IAAAG,UAAA,GAAAjB,IAAA,CAAAW,GAAA,EAAAI,MAAA;EACF,KAAAlB,UAAA,CAAAmB,UAAa,GAEf,OAAS;IACPE,OAAO;IACLC,KAAA,iBAASL,MAAA;EAAA;EACuC,IAClDjB,UAAA,CAAAoB,UAAA,GACF;IACFC,OAAA;IAEOC,KAAS,iBACdJ,MACA;EAIA;EAEA,IAAI;IACF,OAAOnB,YAAW,CAAAoB,UAAc,EAAGC,UAAQ;MAGzCC,OAAA;IACF;EAGA,SAAMC,KAAA;IAEN,OAAI;MAKoCD,OAAI,EAAK;MAGjDC,KAAA,EAAAlB,WAAc,CAAAkB,KAAS,EAAAC,KAAS,IAAAD,KACzB,CAAEE,OAAA,GAAS;IACpB;EACE;AAAO;AACI,SACTC,iBAAOA,CAAAX,GAAiB,EAAAY,GAAA,EAAAC,KAAQ,EAAM;EAAU,IAClDZ,QAAA,GAAAJ,SAAA,CAAAD,MAAA,QAAAC,SAAA,iBAAAA,SAAA;IAAAiB,OAAA,GAAAzB,IAAA,CAAAW,GAAA,EAAAC,QAAA;EACF,KAAAf,UAAA,CAAA4B,OAAA,GACF;IAEOP,OAAS;IACdC,KAAM,KAAAP,QAAe;EAErB;EACE;IAGF,IAAMc,OAAA,GAAA5B,YAAW,CAAA2B,OAAA;MAAAE,QAAA,OAAAC,MAAA,KAAAL,GAAA;IAAA,OAAAI,QAAA,CAAAE,IAAA,CAAAH,OAAA,IAAAA,OAAA,GAAAA,OAAA,CAAAI,OAAA,CAAAH,QAAA,KAAAJ,GAAA,IAAAC,KAAA,MAAAE,OAAA,GAAAA,OAAA,CAAAK,OAAA;AAAA,EAAAR,GAAA,IAAAC,KAAA;AAAA,GAAAzB,aAAA,CAAA0B,OAAA,EAAAC,OAAA;MAAAR,OAAA;IAAA;EAAA,SAAAC,KAAA;IAAA;MAAAD,OAAA;MAUbC,KAAA,EAAAlB,WAAA,CAAAkB,KAAA,EAAAC,KAAA,IAAAD,KAAA,CAAAE,OAAA;IACF;EAEF;AACE;AAAO,SACLW,cAASA,CAAArB,GAAA;EAAA,IACTsB,YAAO,GAAAjC,IAAA,CAAAW,GAAA,EAAiB,YAAQ,CAAM;EAAU,IAClDd,UAAA,CAAAoC,YAAA,GACF;IACFf,OAAA;EAEO;EAKL,IAAAgB,QAAM;AAEN;AACE;AAGF;AACE;AAGA;AAAyD;AAEzD;AAAO;EAEX","ignoreList":[]}
|