getmyenv 0.5.2 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/README.md +57 -13
  2. package/dist/bin.js +1 -24
  3. package/dist/bin.js.map +1 -1
  4. package/dist/cli.d.ts +10 -0
  5. package/dist/cli.d.ts.map +1 -1
  6. package/dist/cli.js +179 -101
  7. package/dist/cli.js.map +1 -1
  8. package/dist/commands/backup.d.ts +2 -1
  9. package/dist/commands/backup.d.ts.map +1 -1
  10. package/dist/commands/backup.js +15 -25
  11. package/dist/commands/backup.js.map +1 -1
  12. package/dist/commands/claim.d.ts +2 -1
  13. package/dist/commands/claim.d.ts.map +1 -1
  14. package/dist/commands/claim.js +114 -82
  15. package/dist/commands/claim.js.map +1 -1
  16. package/dist/commands/context.d.ts +11 -0
  17. package/dist/commands/context.d.ts.map +1 -0
  18. package/dist/commands/context.js +53 -0
  19. package/dist/commands/context.js.map +1 -0
  20. package/dist/commands/export.d.ts +11 -0
  21. package/dist/commands/export.d.ts.map +1 -0
  22. package/dist/commands/export.js +67 -0
  23. package/dist/commands/export.js.map +1 -0
  24. package/dist/commands/guest.d.ts +9 -3
  25. package/dist/commands/guest.d.ts.map +1 -1
  26. package/dist/commands/guest.js +32 -30
  27. package/dist/commands/guest.js.map +1 -1
  28. package/dist/commands/import.d.ts +26 -0
  29. package/dist/commands/import.d.ts.map +1 -0
  30. package/dist/commands/import.js +168 -0
  31. package/dist/commands/import.js.map +1 -0
  32. package/dist/commands/lock.d.ts +5 -0
  33. package/dist/commands/lock.d.ts.map +1 -0
  34. package/dist/commands/lock.js +18 -0
  35. package/dist/commands/lock.js.map +1 -0
  36. package/dist/commands/ls.d.ts +6 -0
  37. package/dist/commands/ls.d.ts.map +1 -0
  38. package/dist/commands/ls.js +37 -0
  39. package/dist/commands/ls.js.map +1 -0
  40. package/dist/commands/restore.d.ts +7 -2
  41. package/dist/commands/restore.d.ts.map +1 -1
  42. package/dist/commands/restore.js +58 -51
  43. package/dist/commands/restore.js.map +1 -1
  44. package/dist/commands/run.d.ts +7 -5
  45. package/dist/commands/run.d.ts.map +1 -1
  46. package/dist/commands/run.js +97 -185
  47. package/dist/commands/run.js.map +1 -1
  48. package/dist/commands/set.d.ts +16 -0
  49. package/dist/commands/set.d.ts.map +1 -0
  50. package/dist/commands/set.js +111 -0
  51. package/dist/commands/set.js.map +1 -0
  52. package/dist/commands/start.d.ts +16 -0
  53. package/dist/commands/start.d.ts.map +1 -0
  54. package/dist/commands/start.js +118 -0
  55. package/dist/commands/start.js.map +1 -0
  56. package/dist/commands/status.d.ts +5 -0
  57. package/dist/commands/status.d.ts.map +1 -0
  58. package/dist/commands/status.js +40 -0
  59. package/dist/commands/status.js.map +1 -0
  60. package/dist/commands/unlink.d.ts +9 -0
  61. package/dist/commands/unlink.d.ts.map +1 -0
  62. package/dist/commands/unlink.js +70 -0
  63. package/dist/commands/unlink.js.map +1 -0
  64. package/dist/lib/api-url.d.ts +12 -0
  65. package/dist/lib/api-url.d.ts.map +1 -1
  66. package/dist/lib/api-url.js +32 -0
  67. package/dist/lib/api-url.js.map +1 -1
  68. package/dist/lib/api.d.ts +35 -23
  69. package/dist/lib/api.d.ts.map +1 -1
  70. package/dist/lib/api.js +23 -59
  71. package/dist/lib/api.js.map +1 -1
  72. package/dist/lib/authorize.d.ts +13 -6
  73. package/dist/lib/authorize.d.ts.map +1 -1
  74. package/dist/lib/authorize.js +68 -63
  75. package/dist/lib/authorize.js.map +1 -1
  76. package/dist/lib/bootstrap.d.ts +18 -15
  77. package/dist/lib/bootstrap.d.ts.map +1 -1
  78. package/dist/lib/bootstrap.js +59 -58
  79. package/dist/lib/bootstrap.js.map +1 -1
  80. package/dist/lib/confirm.js +4 -4
  81. package/dist/lib/confirm.js.map +1 -1
  82. package/dist/lib/context.d.ts +12 -0
  83. package/dist/lib/context.d.ts.map +1 -0
  84. package/dist/lib/context.js +43 -0
  85. package/dist/lib/context.js.map +1 -0
  86. package/dist/lib/credentials.d.ts +8 -9
  87. package/dist/lib/credentials.d.ts.map +1 -1
  88. package/dist/lib/credentials.js +2 -10
  89. package/dist/lib/credentials.js.map +1 -1
  90. package/dist/lib/fs.d.ts +26 -37
  91. package/dist/lib/fs.d.ts.map +1 -1
  92. package/dist/lib/fs.js +112 -327
  93. package/dist/lib/fs.js.map +1 -1
  94. package/dist/lib/guest-key.d.ts +8 -6
  95. package/dist/lib/guest-key.d.ts.map +1 -1
  96. package/dist/lib/guest-key.js +26 -3
  97. package/dist/lib/guest-key.js.map +1 -1
  98. package/dist/lib/identity.d.ts +9 -11
  99. package/dist/lib/identity.d.ts.map +1 -1
  100. package/dist/lib/identity.js +34 -24
  101. package/dist/lib/identity.js.map +1 -1
  102. package/dist/lib/keychain.d.ts +21 -0
  103. package/dist/lib/keychain.d.ts.map +1 -0
  104. package/dist/lib/keychain.js +124 -0
  105. package/dist/lib/keychain.js.map +1 -0
  106. package/dist/lib/pek.d.ts +15 -22
  107. package/dist/lib/pek.d.ts.map +1 -1
  108. package/dist/lib/pek.js +31 -51
  109. package/dist/lib/pek.js.map +1 -1
  110. package/dist/lib/run-env.d.ts +50 -0
  111. package/dist/lib/run-env.d.ts.map +1 -0
  112. package/dist/lib/run-env.js +114 -0
  113. package/dist/lib/run-env.js.map +1 -0
  114. package/dist/lib/unlock.d.ts +24 -0
  115. package/dist/lib/unlock.d.ts.map +1 -0
  116. package/dist/lib/unlock.js +87 -0
  117. package/dist/lib/unlock.js.map +1 -0
  118. package/dist/lib/update-check.d.ts +4 -2
  119. package/dist/lib/update-check.d.ts.map +1 -1
  120. package/dist/lib/update-check.js +54 -68
  121. package/dist/lib/update-check.js.map +1 -1
  122. package/dist/lib/upload.d.ts +21 -0
  123. package/dist/lib/upload.d.ts.map +1 -0
  124. package/dist/lib/upload.js +53 -0
  125. package/dist/lib/upload.js.map +1 -0
  126. package/package.json +5 -3
  127. package/dist/commands/delete.d.ts +0 -6
  128. package/dist/commands/delete.d.ts.map +0 -1
  129. package/dist/commands/delete.js +0 -55
  130. package/dist/commands/delete.js.map +0 -1
  131. package/dist/commands/link.d.ts +0 -16
  132. package/dist/commands/link.d.ts.map +0 -1
  133. package/dist/commands/link.js +0 -142
  134. package/dist/commands/link.js.map +0 -1
  135. package/dist/commands/pull.d.ts +0 -15
  136. package/dist/commands/pull.d.ts.map +0 -1
  137. package/dist/commands/pull.js +0 -159
  138. package/dist/commands/pull.js.map +0 -1
  139. package/dist/commands/push.d.ts +0 -15
  140. package/dist/commands/push.d.ts.map +0 -1
  141. package/dist/commands/push.js +0 -262
  142. package/dist/commands/push.js.map +0 -1
  143. package/dist/commands/remove.d.ts +0 -11
  144. package/dist/commands/remove.d.ts.map +0 -1
  145. package/dist/commands/remove.js +0 -39
  146. package/dist/commands/remove.js.map +0 -1
  147. package/dist/commands/token.d.ts +0 -14
  148. package/dist/commands/token.d.ts.map +0 -1
  149. package/dist/commands/token.js +0 -132
  150. package/dist/commands/token.js.map +0 -1
  151. package/dist/commands/whoami.d.ts +0 -6
  152. package/dist/commands/whoami.d.ts.map +0 -1
  153. package/dist/commands/whoami.js +0 -46
  154. package/dist/commands/whoami.js.map +0 -1
  155. package/dist/lib/env-name.d.ts +0 -3
  156. package/dist/lib/env-name.d.ts.map +0 -1
  157. package/dist/lib/env-name.js +0 -5
  158. package/dist/lib/env-name.js.map +0 -1
  159. package/dist/lib/guest-key.test.d.ts +0 -2
  160. package/dist/lib/guest-key.test.d.ts.map +0 -1
  161. package/dist/lib/guest-key.test.js.map +0 -1
package/dist/lib/fs.js CHANGED
@@ -2,12 +2,29 @@ import fs from "node:fs";
2
2
  import path from "node:path";
3
3
  import os from "node:os";
4
4
  import readline from "node:readline";
5
- import { LOCAL_DIR } from "@getmyenv/shared";
5
+ import dotenv from "dotenv";
6
+ import { CONTEXT_SLUG_RE, isValidContextSlug, isValidVariableName, LOCAL_DIR, slugify, } from "@getmyenv/shared";
7
+ const SLUG_RE = CONTEXT_SLUG_RE;
8
+ /**
9
+ * Nearest folder at or above cwd with a linked `.getmyenv/`, so commands work
10
+ * from subfolders. Stops at a git repo root. Falls back to cwd.
11
+ */
6
12
  export function getProjectRoot(cwd = process.cwd()) {
7
- return cwd;
13
+ let dir = path.resolve(cwd);
14
+ for (;;) {
15
+ const local = path.join(dir, LOCAL_DIR);
16
+ if (fs.existsSync(path.join(local, "project.json")) ||
17
+ fs.existsSync(path.join(local, "token.json"))) {
18
+ return dir;
19
+ }
20
+ const parent = path.dirname(dir);
21
+ if (parent === dir || fs.existsSync(path.join(dir, ".git")))
22
+ return path.resolve(cwd);
23
+ dir = parent;
24
+ }
8
25
  }
9
26
  export function getGetenvDir(cwd = process.cwd()) {
10
- return path.join(cwd, LOCAL_DIR);
27
+ return path.join(getProjectRoot(cwd), LOCAL_DIR);
11
28
  }
12
29
  export function readProjectMeta(cwd = process.cwd()) {
13
30
  const file = path.join(getGetenvDir(cwd), "project.json");
@@ -23,17 +40,9 @@ export function readProjectMeta(cwd = process.cwd()) {
23
40
  if (!raw || typeof raw !== "object")
24
41
  return null;
25
42
  const d = raw;
26
- // Accept legacy `defaultEnv` on disk; return only `environment`.
27
- const envRaw = typeof d.environment === "string"
28
- ? d.environment
29
- : typeof d.defaultEnv === "string"
30
- ? d.defaultEnv
31
- : undefined;
32
- const environment = envRaw === "production"
33
- ? "production"
34
- : envRaw === "development"
35
- ? "development"
36
- : undefined;
43
+ const context = typeof d.context === "string" && SLUG_RE.test(d.context.trim())
44
+ ? d.context.trim()
45
+ : undefined;
37
46
  return {
38
47
  ...(typeof d.projectId === "string" || typeof d.projectId === "number"
39
48
  ? { projectId: String(d.projectId) }
@@ -41,43 +50,23 @@ export function readProjectMeta(cwd = process.cwd()) {
41
50
  ...(typeof d.projectName === "string" && d.projectName.trim()
42
51
  ? { projectName: d.projectName.trim() }
43
52
  : {}),
44
- ...(typeof d.apiUrl === "string" && d.apiUrl.trim()
45
- ? { apiUrl: d.apiUrl.trim() }
46
- : {}),
47
- ...(environment ? { environment } : {}),
53
+ ...(context ? { context } : {}),
48
54
  };
49
55
  }
50
56
  export function writeProjectMeta(meta, cwd = process.cwd()) {
51
57
  const dir = getGetenvDir(cwd);
52
58
  fs.mkdirSync(dir, { recursive: true });
53
- // Inline omit of production default so we do not import api.ts (cycle).
54
- const rawApi = meta.apiUrl?.trim().replace(/\/$/, "");
55
- const diskApi = rawApi && rawApi !== "https://getmyenv.com" ? rawApi : undefined;
56
59
  const payload = {
57
60
  ...(meta.projectId != null ? { projectId: String(meta.projectId) } : {}),
58
61
  ...(meta.projectName?.trim()
59
62
  ? { projectName: meta.projectName.trim() }
60
63
  : {}),
61
- ...(diskApi ? { apiUrl: diskApi } : {}),
62
- ...(meta.environment ? { environment: meta.environment } : {}),
64
+ ...(meta.context && SLUG_RE.test(meta.context)
65
+ ? { context: meta.context }
66
+ : {}),
63
67
  };
64
68
  fs.writeFileSync(path.join(dir, "project.json"), JSON.stringify(payload, null, 2) + "\n", { mode: 0o600 });
65
69
  }
66
- export function writeRequirements(required, cwd = process.cwd()) {
67
- // Optional allowlist for `run` (secret names only). Never seed API URL keys.
68
- // Omit the file or use {"required":[]} to load all active secrets.
69
- const dir = getGetenvDir(cwd);
70
- fs.mkdirSync(dir, { recursive: true });
71
- const data = { required };
72
- fs.writeFileSync(path.join(dir, "requirements.json"), JSON.stringify(data, null, 2) + "\n", { mode: 0o600 });
73
- }
74
- export function readRequirements(cwd = process.cwd()) {
75
- const file = path.join(getGetenvDir(cwd), "requirements.json");
76
- if (!fs.existsSync(file))
77
- return [];
78
- const data = JSON.parse(fs.readFileSync(file, "utf8"));
79
- return data.required ?? [];
80
- }
81
70
  /** OS user config for machine identity - never in the repo. */
82
71
  export function getConfigDir() {
83
72
  const base = process.env.GETMYENV_CONFIG_DIR?.trim() ||
@@ -85,7 +74,11 @@ export function getConfigDir() {
85
74
  fs.mkdirSync(base, { recursive: true, mode: 0o700 });
86
75
  return base;
87
76
  }
88
- /** Restore stdin after raw-mode secret input so readline prompts work again. */
77
+ /**
78
+ * Leave stdin as we found it after raw-mode secret input: cooked mode, no
79
+ * listeners, paused. A flowing stdin keeps the process alive and, in `run`,
80
+ * reads keystrokes meant for the child. readline resumes it when needed.
81
+ */
89
82
  function restoreStdinAfterRaw() {
90
83
  const stdin = process.stdin;
91
84
  try {
@@ -95,8 +88,7 @@ function restoreStdinAfterRaw() {
95
88
  /* ignore */
96
89
  }
97
90
  stdin.removeAllListeners("data");
98
- if (stdin.isPaused())
99
- stdin.resume();
91
+ stdin.pause();
100
92
  }
101
93
  /**
102
94
  * Read one line from a TTY without using raw mode.
@@ -111,7 +103,7 @@ export function readLine(question) {
111
103
  restoreStdinAfterRaw();
112
104
  const rl = readline.createInterface({
113
105
  input: process.stdin,
114
- output: process.stdout,
106
+ output: process.stderr,
115
107
  terminal: true,
116
108
  });
117
109
  rl.question(question, (answer) => {
@@ -129,7 +121,7 @@ export async function promptHidden(question, opts) {
129
121
  const stdin = process.stdin;
130
122
  if (!stdin.isTTY) {
131
123
  if (!opts?.allowStdin) {
132
- throw new Error("Refusing to read a secret without a TTY. Re-run in an interactive terminal, or pipe the value with --vault-password-stdin.");
124
+ throw new Error("No terminal to ask for the Vault password. Unlock once in a terminal (open contexts stay unlocked for 8 hours), or pipe it with --vault-password-stdin. With set --stdin, send the password on the first line and the value after it.");
133
125
  }
134
126
  const chunks = [];
135
127
  for await (const chunk of stdin) {
@@ -137,27 +129,41 @@ export async function promptHidden(question, opts) {
137
129
  }
138
130
  return Buffer.concat(chunks).toString("utf8").replace(/\r?\n$/, "");
139
131
  }
132
+ // Prompts go to stderr so stdout stays clean for `export --stdout > .env` and pipes.
133
+ const out = process.stderr;
140
134
  return new Promise((resolve, reject) => {
141
- process.stdout.write(question);
135
+ out.write(question);
142
136
  let value = "";
143
- const onData = (char) => {
144
- const c = char.toString("utf8");
145
- if (c === "\n" || c === "\r" || c === "\u0004") {
146
- restoreStdinAfterRaw();
147
- process.stdout.write("\n");
148
- resolve(value);
149
- }
150
- else if (c === "\u0003") {
151
- restoreStdinAfterRaw();
152
- process.stdout.write("\n");
153
- reject(new Error("Cancelled."));
154
- }
155
- else if (c === "\u007f" || c === "\b") {
156
- value = value.slice(0, -1);
157
- }
158
- else {
137
+ // A chunk can hold many characters (paste) or one escape sequence (arrow keys).
138
+ const onData = (chunk) => {
139
+ const text = chunk.toString("utf8");
140
+ if (text.startsWith("\u001b"))
141
+ return;
142
+ for (const c of text) {
143
+ if (c === "\n" || c === "\r" || c === "\u0004") {
144
+ restoreStdinAfterRaw();
145
+ out.write("\n");
146
+ resolve(value);
147
+ return;
148
+ }
149
+ if (c === "\u0003") {
150
+ restoreStdinAfterRaw();
151
+ out.write("\n");
152
+ process.exitCode = 130;
153
+ reject(new Error("Cancelled."));
154
+ return;
155
+ }
156
+ if (c === "\u007f" || c === "\b") {
157
+ if (value.length > 0) {
158
+ value = Array.from(value).slice(0, -1).join("");
159
+ out.write("\b \b");
160
+ }
161
+ continue;
162
+ }
163
+ if (c < " ")
164
+ continue;
159
165
  value += c;
160
- process.stdout.write("*");
166
+ out.write("*");
161
167
  }
162
168
  };
163
169
  stdin.setRawMode?.(true);
@@ -165,6 +171,7 @@ export async function promptHidden(question, opts) {
165
171
  stdin.on("data", onData);
166
172
  });
167
173
  }
174
+ /** Yes/no on a TTY. Empty input picks the default, which is No unless `defaultYes`. */
168
175
  export async function promptConfirm(question, opts) {
169
176
  const defaultYes = opts?.defaultYes === true;
170
177
  const hint = defaultYes ? "[Y/n]" : "[y/N]";
@@ -185,7 +192,7 @@ export async function promptChoice(question, options, defaultIndex = 0) {
185
192
  return 0;
186
193
  const def = Math.min(Math.max(defaultIndex, 0), options.length - 1);
187
194
  for (let i = 0; i < options.length; i++) {
188
- console.log(` ${i + 1}) ${options[i]}`);
195
+ console.error(` ${i + 1}) ${options[i]}`);
189
196
  }
190
197
  const answer = await readLine(`${question} [${def + 1}]: `);
191
198
  const trimmed = answer.trim();
@@ -196,18 +203,8 @@ export async function promptChoice(question, options, defaultIndex = 0) {
196
203
  return def;
197
204
  return n - 1;
198
205
  }
199
- /** Throw with clear next steps when this folder has no linked project. */
200
- export function requireLinkedProject(meta) {
201
- if (!meta?.projectId) {
202
- throw new Error([
203
- "No project is linked to this folder.",
204
- "Run any verb (push / run) in a TTY and it will authorize on first use,",
205
- "or set GETMYENV_TOKEN for CI.",
206
- ].join("\n"));
207
- }
208
- }
209
206
  export function ensureGitignoreHasEnv(cwd = process.cwd()) {
210
- const gi = path.join(cwd, ".gitignore");
207
+ const gi = path.join(getProjectRoot(cwd), ".gitignore");
211
208
  // Ignore bearer + cached key only. project.json and claim.json are committed for handoff.
212
209
  // claim.json holds the guest wrapping passphrase until claim - prefer private repos until then.
213
210
  const entries = [
@@ -215,17 +212,10 @@ export function ensureGitignoreHasEnv(cwd = process.cwd()) {
215
212
  ".env.local",
216
213
  ".env.*.local",
217
214
  ".getmyenv/token.json",
218
- ".getmyenv/wrapped-key.json",
215
+ ".getmyenv/key.json",
219
216
  ];
220
217
  let content = fs.existsSync(gi) ? fs.readFileSync(gi, "utf8") : "";
221
218
  let changed = false;
222
- // Migrate old whole-dir ignore so claim.json / project.json can be committed.
223
- const lines = content.split(/\r?\n/);
224
- const withoutDir = lines.filter((l) => l.trim() !== ".getmyenv/");
225
- if (withoutDir.length !== lines.length) {
226
- content = withoutDir.join("\n");
227
- changed = true;
228
- }
229
219
  for (const entry of entries) {
230
220
  if (!content.split(/\r?\n/).includes(entry)) {
231
221
  content +=
@@ -237,6 +227,19 @@ export function ensureGitignoreHasEnv(cwd = process.cwd()) {
237
227
  fs.writeFileSync(gi, content);
238
228
  }
239
229
  }
230
+ /** Ignore one plaintext file written by `export -o`. Files outside the project are left alone. */
231
+ export function ensureGitignoreHas(file, cwd = process.cwd()) {
232
+ const root = getProjectRoot(cwd);
233
+ const rel = path.relative(root, path.resolve(cwd, file)).split(path.sep).join("/");
234
+ if (!rel || rel.startsWith("..") || path.isAbsolute(rel))
235
+ return;
236
+ const gi = path.join(root, ".gitignore");
237
+ const content = fs.existsSync(gi) ? fs.readFileSync(gi, "utf8") : "";
238
+ const lines = content.split(/\r?\n/);
239
+ if (lines.includes(rel) || lines.includes(`/${rel}`))
240
+ return;
241
+ fs.writeFileSync(gi, content + (content.endsWith("\n") || content === "" ? "" : "\n") + rel + "\n");
242
+ }
240
243
  export function claimFilePath(cwd = process.cwd()) {
241
244
  return path.join(getGetenvDir(cwd), "claim.json");
242
245
  }
@@ -282,234 +285,20 @@ export function clearClaimFile(cwd = process.cwd()) {
282
285
  fs.unlinkSync(file);
283
286
  return true;
284
287
  }
285
- const FRAMEWORK_MARKERS = [
286
- { language: "node", label: "Node.js", files: ["package.json"] },
287
- {
288
- language: "python",
289
- label: "Python",
290
- files: ["pyproject.toml", "requirements.txt", "Pipfile", "setup.py"],
291
- },
292
- { language: "rust", label: "Rust", files: ["Cargo.toml"] },
293
- { language: "go", label: "Go", files: ["go.mod"] },
294
- { language: "ruby", label: "Ruby", files: ["Gemfile"] },
295
- { language: "php", label: "PHP", files: ["composer.json"] },
296
- {
297
- language: "java",
298
- label: "Java",
299
- files: ["pom.xml", "build.gradle", "build.gradle.kts"],
300
- },
301
- {
302
- language: "dotnet",
303
- label: ".NET",
304
- files: [], // detected via *.csproj below
305
- },
306
- ];
307
- const SOURCE_SCANNERS = [
308
- {
309
- extensions: /\.(ts|tsx|js|jsx|mjs|cjs)$/,
310
- patterns: [
311
- /process\.env\.([A-Za-z_][A-Za-z0-9_]*)/g,
312
- /process\.env\[["'`]([A-Za-z_][A-Za-z0-9_]*)["'`]\]/g,
313
- ],
314
- },
315
- {
316
- extensions: /\.py$/,
317
- patterns: [
318
- /os\.environ\[["'`]([A-Za-z_][A-Za-z0-9_]*)["'`]\]/g,
319
- /os\.environ\.get\(["'`]([A-Za-z_][A-Za-z0-9_]*)["'`]/g,
320
- /os\.getenv\(["'`]([A-Za-z_][A-Za-z0-9_]*)["'`]\)/g,
321
- ],
322
- },
323
- {
324
- extensions: /\.rb$/,
325
- patterns: [
326
- /ENV\[["'`]([A-Za-z_][A-Za-z0-9_]*)["'`]\]/g,
327
- /ENV\.fetch\(["'`]([A-Za-z_][A-Za-z0-9_]*)["'`]/g,
328
- ],
329
- },
330
- {
331
- extensions: /\.go$/,
332
- patterns: [
333
- /os\.Getenv\(["'`]([A-Za-z_][A-Za-z0-9_]*)["'`]\)/g,
334
- /os\.LookupEnv\(["'`]([A-Za-z_][A-Za-z0-9_]*)["'`]\)/g,
335
- ],
336
- },
337
- {
338
- extensions: /\.rs$/,
339
- patterns: [
340
- /(?:std::)?env::var\(["'`]([A-Za-z_][A-Za-z0-9_]*)["'`]\)/g,
341
- /(?:std::)?env::var_os\(["'`]([A-Za-z_][A-Za-z0-9_]*)["'`]\)/g,
342
- ],
343
- },
344
- {
345
- extensions: /\.php$/,
346
- patterns: [
347
- /getenv\(["'`]([A-Za-z_][A-Za-z0-9_]*)["'`]\)/g,
348
- /\$_ENV\[["'`]([A-Za-z_][A-Za-z0-9_]*)["'`]\]/g,
349
- /\$_SERVER\[["'`]([A-Za-z_][A-Za-z0-9_]*)["'`]\]/g,
350
- ],
351
- },
352
- {
353
- extensions: /\.java$/,
354
- patterns: [/System\.getenv\(["'`]([A-Za-z_][A-Za-z0-9_]*)["'`]\)/g],
355
- },
356
- {
357
- extensions: /\.cs$/,
358
- patterns: [
359
- /Environment\.GetEnvironmentVariable\(["'`]([A-Za-z_][A-Za-z0-9_]*)["'`]\)/g,
360
- ],
361
- },
362
- ];
363
- const SKIP_DIRS = new Set([
364
- "node_modules",
365
- ".git",
366
- "dist",
367
- "build",
368
- "target",
369
- "vendor",
370
- ".venv",
371
- "venv",
372
- "__pycache__",
373
- ".next",
374
- "coverage",
375
- ]);
376
- /** Detect project languages from framework markers (names only, no values). */
377
- export function detectLanguages(cwd = process.cwd()) {
378
- const found = [];
379
- for (const marker of FRAMEWORK_MARKERS) {
380
- if (marker.language === "dotnet") {
381
- try {
382
- const hasCsproj = fs
383
- .readdirSync(cwd)
384
- .some((f) => f.endsWith(".csproj") || f.endsWith(".fsproj"));
385
- if (hasCsproj)
386
- found.push({ language: "dotnet", label: ".NET" });
387
- }
388
- catch {
389
- /* ignore */
390
- }
391
- continue;
392
- }
393
- if (marker.files.some((f) => fs.existsSync(path.join(cwd, f)))) {
394
- found.push({ language: marker.language, label: marker.label });
395
- }
396
- }
397
- return found;
398
- }
399
- /** Native env-read snippet for a language (for migrate / docs messaging). */
400
- export function envReadSnippet(language, name) {
401
- switch (language) {
402
- case "python":
403
- return `os.environ["${name}"]`;
404
- case "ruby":
405
- return `ENV["${name}"]`;
406
- case "go":
407
- return `os.Getenv("${name}")`;
408
- case "rust":
409
- return `std::env::var("${name}")`;
410
- case "php":
411
- return `getenv("${name}")`;
412
- case "java":
413
- return `System.getenv("${name}")`;
414
- case "dotnet":
415
- return `Environment.GetEnvironmentVariable("${name}")`;
416
- case "node":
417
- default:
418
- return `process.env.${name}`;
419
- }
420
- }
421
- /**
422
- * Detect env var names from .env* and common source patterns across languages.
423
- * NEVER returns or collects secret values.
424
- */
425
- export function detectEnvNames(cwd = process.cwd()) {
426
- const names = new Set();
427
- const envFiles = [
428
- ".env",
429
- ".env.example",
430
- ".env.local",
431
- ".env.development",
432
- ".env.production",
433
- ];
434
- for (const file of envFiles) {
435
- const p = path.join(cwd, file);
436
- if (!fs.existsSync(p))
437
- continue;
438
- const text = fs.readFileSync(p, "utf8");
439
- for (const line of text.split(/\r?\n/)) {
440
- const trimmed = line.trim();
441
- if (!trimmed || trimmed.startsWith("#"))
442
- continue;
443
- const match = trimmed.match(/^([A-Za-z_][A-Za-z0-9_]*)\s*=/);
444
- if (match?.[1])
445
- names.add(match[1]);
446
- }
288
+ /** dotenv rules (multiline values, inline comments, BOM), valid names only. */
289
+ export function parseEnvText(text) {
290
+ const out = {};
291
+ for (const [key, value] of Object.entries(dotenv.parse(text))) {
292
+ if (isValidVariableName(key))
293
+ out[key] = value;
447
294
  }
448
- const walk = (dir, depth = 0) => {
449
- if (depth > 3)
450
- return;
451
- let entries;
452
- try {
453
- entries = fs.readdirSync(dir, { withFileTypes: true });
454
- }
455
- catch {
456
- return;
457
- }
458
- for (const ent of entries) {
459
- if (SKIP_DIRS.has(ent.name))
460
- continue;
461
- const full = path.join(dir, ent.name);
462
- if (ent.isDirectory()) {
463
- walk(full, depth + 1);
464
- continue;
465
- }
466
- for (const scanner of SOURCE_SCANNERS) {
467
- if (!scanner.extensions.test(ent.name))
468
- continue;
469
- try {
470
- const src = fs.readFileSync(full, "utf8");
471
- for (const re of scanner.patterns) {
472
- re.lastIndex = 0;
473
- let m;
474
- while ((m = re.exec(src))) {
475
- if (m[1])
476
- names.add(m[1]);
477
- }
478
- }
479
- }
480
- catch {
481
- /* ignore unreadable */
482
- }
483
- break;
484
- }
485
- }
486
- };
487
- walk(cwd);
488
- return [...names].sort();
295
+ return out;
489
296
  }
297
+ /** `parseEnvText` for a file. A missing file reads as empty. */
490
298
  export function parseEnvFile(filePath) {
491
299
  if (!fs.existsSync(filePath))
492
300
  return {};
493
- const text = fs.readFileSync(filePath, "utf8");
494
- const out = {};
495
- for (const line of text.split(/\r?\n/)) {
496
- const trimmed = line.trim();
497
- if (!trimmed || trimmed.startsWith("#"))
498
- continue;
499
- const eq = trimmed.indexOf("=");
500
- if (eq <= 0)
501
- continue;
502
- const key = trimmed.slice(0, eq).trim();
503
- let value = trimmed.slice(eq + 1).trim();
504
- if ((value.startsWith('"') && value.endsWith('"')) ||
505
- (value.startsWith("'") && value.endsWith("'"))) {
506
- value = value.slice(1, -1);
507
- }
508
- if (/^[A-Za-z_][A-Za-z0-9_]*$/.test(key)) {
509
- out[key] = value;
510
- }
511
- }
512
- return out;
301
+ return parseEnvText(fs.readFileSync(filePath, "utf8"));
513
302
  }
514
303
  const ENV_SKIP_DIRS = new Set([
515
304
  "node_modules",
@@ -541,10 +330,9 @@ const MAX_ENV_CANDIDATES = 50;
541
330
  function isEnvCandidateName(name) {
542
331
  if (!name.startsWith(".env"))
543
332
  return false;
544
- if (name.endsWith(".migrated.local"))
545
- return false;
546
333
  return /^\.env($|\.)/.test(name);
547
334
  }
335
+ /** `.example`, `.sample` and `.template` files hold placeholders, not values. */
548
336
  export function isEnvSampleFile(filePath) {
549
337
  const base = path.basename(filePath).toLowerCase();
550
338
  return (base.endsWith(".example") ||
@@ -572,8 +360,8 @@ function compareEnvCandidates(a, b, cwd) {
572
360
  return relA.localeCompare(relB);
573
361
  }
574
362
  /**
575
- * Recursively find .env* files under cwd (including .example / .sample after a pull).
576
- * Skips common junk directories and *.migrated.local.
363
+ * Recursively find .env* files under cwd, including .example / .sample.
364
+ * Skips common junk directories.
577
365
  */
578
366
  export function listEnvFiles(cwd = process.cwd()) {
579
367
  const root = path.resolve(cwd);
@@ -609,28 +397,25 @@ export function listEnvFiles(cwd = process.cwd()) {
609
397
  found.sort((a, b) => compareEnvCandidates(a, b, root));
610
398
  return found;
611
399
  }
612
- /** First candidate from listEnvFiles, or null. */
613
- export function findEnvFile(cwd = process.cwd()) {
614
- return listEnvFiles(cwd)[0] ?? null;
615
- }
616
- /** Basename contains "production" (e.g. .env.production, .env.production.local). */
617
- export function isProductionEnvFilename(filePath) {
618
- return /production/i.test(path.basename(filePath));
400
+ /** Env files in this folder only (not subfolders). Samples skipped. */
401
+ export function rootEnvFiles(cwd = process.cwd()) {
402
+ const root = path.resolve(cwd);
403
+ return listEnvFiles(root).filter((f) => path.dirname(f) === root && !isEnvSampleFile(f));
619
404
  }
620
405
  /**
621
- * Env files safe to push: every .env* candidate except production-named files.
622
- * Production values belong in the dashboard, not in the repo.
406
+ * Context slug implied by an env file name.
407
+ * `.env.staging` and `.env.staging.local` map to `staging`.
408
+ * `.env` and `.env.local` map to null (use the default context).
409
+ * Sample files map to null too.
623
410
  */
624
- export function listPushEnvFiles(cwd = process.cwd()) {
625
- return listEnvFiles(cwd).filter((p) => !isProductionEnvFilename(p));
626
- }
627
- /** Infer CLI -e name from an env file basename. */
628
- export function inferEnvNameFromFile(filePath) {
411
+ export function contextSlugFromEnvFile(filePath) {
412
+ if (isEnvSampleFile(filePath))
413
+ return null;
629
414
  const base = path.basename(filePath).toLowerCase();
630
- if (base.includes("production"))
631
- return "production";
632
- if (base.includes("development") || base.includes("dev."))
633
- return "development";
634
- return "development";
415
+ const m = base.match(/^\.env\.(.+?)(?:\.local)?$/);
416
+ if (!m?.[1] || m[1] === "local")
417
+ return null;
418
+ const slug = slugify(m[1]);
419
+ return isValidContextSlug(slug) ? slug : null;
635
420
  }
636
421
  //# sourceMappingURL=fs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/lib/fs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/lib/fs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,SAAS,EACT,OAAO,GACR,MAAM,kBAAkB,CAAC;AAa1B,MAAM,OAAO,GAAG,eAAe,CAAC;AAEhC;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAChD,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5B,SAAS,CAAC;QACR,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACxC,IACE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;YAC/C,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,EAC7C,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,GAAG,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACtF,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IACjD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,cAAc,CAAC,CAAC;IAC1D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,IAAI,GAAY,CAAC;IACjB,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACjD,MAAM,CAAC,GAAG,GAA8B,CAAC;IACzC,MAAM,OAAO,GACX,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC7D,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE;QAClB,CAAC,CAAC,SAAS,CAAC;IAChB,OAAO;QACL,GAAG,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ;YACpE,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE;YACpC,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE;YAC3D,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE;YACvC,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAiB,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IACrE,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAC9B,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,MAAM,OAAO,GAAgB;QAC3B,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE;YAC1B,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE;YAC1C,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YAC5C,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;YAC3B,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;IACF,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,EAC9B,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EACvC,EAAE,IAAI,EAAE,KAAK,EAAE,CAChB,CAAC;AACJ,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,YAAY;IAC1B,MAAM,IAAI,GACR,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,EAAE;QACvC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IACjD,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACrD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,SAAS,oBAAoB;IAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC5B,IAAI,CAAC;QACH,KAAK,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,YAAY;IACd,CAAC;IACD,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACjC,KAAK,CAAC,KAAK,EAAE,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,QAAgB;IACvC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAC;YACvD,OAAO;QACT,CAAC;QACD,oBAAoB,EAAE,CAAC;QACvB,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;YAClC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;YAC/B,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,QAAgB,EAChB,IAA+B;IAE/B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC5B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACjB,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CACb,uOAAuO,CACxO,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACnE,CAAC;QACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,qFAAqF;IACrF,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACpB,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,gFAAgF;QAChF,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,EAAE;YAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACpC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;gBAAE,OAAO;YACtC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;gBACrB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;oBAC/C,oBAAoB,EAAE,CAAC;oBACvB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAChB,OAAO,CAAC,KAAK,CAAC,CAAC;oBACf,OAAO;gBACT,CAAC;gBACD,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;oBACnB,oBAAoB,EAAE,CAAC;oBACvB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAChB,OAAO,CAAC,QAAQ,GAAG,GAAG,CAAC;oBACvB,MAAM,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;oBAChC,OAAO;gBACT,CAAC;gBACD,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;oBACjC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACrB,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBAChD,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBACrB,CAAC;oBACD,SAAS;gBACX,CAAC;gBACD,IAAI,CAAC,GAAG,GAAG;oBAAE,SAAS;gBACtB,KAAK,IAAI,CAAC,CAAC;gBACX,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACjB,CAAC;QACH,CAAC,CAAC;QACF,KAAK,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC;QACzB,KAAK,CAAC,MAAM,EAAE,CAAC;QACf,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,uFAAuF;AACvF,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,QAAgB,EAChB,IAA+B;IAE/B,MAAM,UAAU,GAAG,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IAC7C,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAC5C,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,GAAG,QAAQ,IAAI,IAAI,GAAG,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,OAAO;QAAE,OAAO,UAAU,CAAC;IAChC,IAAI,UAAU;QAAE,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjD,OAAO,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC;AAED,2EAA2E;AAC3E,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,QAAgB,EAChB,OAAiB,EACjB,YAAY,GAAG,CAAC;IAEhB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACnC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACpE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7C,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,GAAG,QAAQ,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,OAAO;QAAE,OAAO,GAAG,CAAC;IACzB,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACvC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM;QAAE,OAAO,GAAG,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IACvD,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC;IACxD,0FAA0F;IAC1F,gGAAgG;IAChG,MAAM,OAAO,GAAG;QACd,MAAM;QACN,YAAY;QACZ,cAAc;QACd,sBAAsB;QACtB,oBAAoB;KACrB,CAAC;IACF,IAAI,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACnE,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5C,OAAO;gBACL,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC;YACxE,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC;IACD,IAAI,OAAO,EAAE,CAAC;QACZ,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC;AACH,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAClE,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnF,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO;IACjE,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACrE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC;QAAE,OAAO;IAC7D,EAAE,CAAC,aAAa,CACd,EAAE,EACF,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,IAAI,CAC9E,CAAC;AACJ,CAAC;AAYD,MAAM,UAAU,aAAa,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAC/C,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAuB,CAAC;QAC5E,IACE,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ;YACjC,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ;YAClC,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,EACjC,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO;YACL,OAAO,EAAE,CAAC;YACV,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,WAAW,EACT,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS;YACvE,cAAc,EACZ,OAAO,GAAG,CAAC,cAAc,KAAK,QAAQ;gBACpC,CAAC,CAAC,GAAG,CAAC,cAAc;gBACpB,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SAC/B,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAgC,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAClF,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAChC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACnE,MAAM,OAAO,GAAc,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC;IACnD,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE;QAC9D,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAChD,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACpB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC9D,IAAI,mBAAmB,CAAC,GAAG,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACjD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAC;IACxC,OAAO,YAAY,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;IAC5B,cAAc;IACd,MAAM;IACN,OAAO;IACP,eAAe;IACf,YAAY;IACZ,MAAM;IACN,OAAO;IACP,UAAU;IACV,QAAQ;IACR,OAAO;IACP,MAAM;IACN,aAAa;IACb,QAAQ;IACR,QAAQ;IACR,QAAQ;CACT,CAAC,CAAC;AAEH,MAAM,qBAAqB,GAAG;IAC5B,YAAY;IACZ,MAAM;IACN,wBAAwB;IACxB,kBAAkB;IAClB,uBAAuB;IACvB,iBAAiB;CAClB,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAC7B,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAE9B,SAAS,kBAAkB,CAAC,IAAY;IACtC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3C,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IACnD,OAAO,CACL,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAC3B,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY;IACpC,MAAM,GAAG,GAAG,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;AACzD,CAAC;AAED,SAAS,oBAAoB,CAAC,CAAS,EAAE,CAAS,EAAE,GAAW;IAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,MAAM,GAAG,MAAM,CAAC;IAC9C,MAAM,OAAO,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,IAAI,OAAO,KAAK,OAAO;QAAE,OAAO,OAAO,GAAG,OAAO,CAAC;IAClD,MAAM,GAAG,GACP,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1E,IAAI,GAAG,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IAC1B,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,SAAS,IAAI,CAAC,GAAW,EAAE,KAAa;QACtC,IAAI,KAAK,CAAC,MAAM,IAAI,kBAAkB;YAAE,OAAO;QAC/C,IAAI,KAAK,GAAG,kBAAkB;YAAE,OAAO;QACvC,IAAI,OAAoB,CAAC;QACzB,IAAI,CAAC;YACH,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,IAAI,KAAK,CAAC,MAAM,IAAI,kBAAkB;gBAAE,OAAO;YAC/C,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACtB,IAAI,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;gBACtB,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;oBAAE,SAAS;gBACtC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;gBACtC,SAAS;YACX,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;gBAAE,SAAS;YACzD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACd,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IACvD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,YAAY,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,MAAM,CAC9B,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CACvD,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAAgB;IACrD,IAAI,eAAe,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IACnD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;IACnD,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAChD,CAAC"}