@uns-kit/core 0.0.39 → 0.0.41

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/README.md CHANGED
@@ -40,6 +40,13 @@ pnpm run refresh-uns
40
40
 
41
41
  When configured via `uns-kit configure-codegen`, this script lives in your project `package.json` and writes into `src/uns/`.
42
42
 
43
+ ### Infisical secret resolution in development
44
+
45
+ - The resolver looks for `SecretResolverOptions.infisical.fetchSecret`, then `INFISICAL_TOKEN`/`INFISICAL_PERSONAL_TOKEN`, then `/run/secrets/infisical_token` (or `/var/lib/uns/secrets/infisical_token`).
46
+ - If no fetcher/token is available, the resolver now logs a warning and returns the placeholder `default`, or `undefined` when `optional: true`; required secrets still trigger `onMissingSecret` before throwing.
47
+ - If Infisical is configured but the host is unreachable (e.g., DNS/network failure), the resolver warns and falls back to the same `default`/`optional` handling, reusing a cached value when present; required secrets throw with the original error message.
48
+ - Use this to run locally without Infisical: mark dev-only secrets as `optional` or give `default` values, and provide real tokens only in production.
49
+
43
50
  ## Development
44
51
 
45
52
  ```bash
@@ -1 +1 @@
1
- {"version":3,"file":"initialize.js","sourceRoot":"","sources":["../../src/tools/initialize.ts"],"names":[],"mappings":"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","sourcesContent":["import * as azdev from \"azure-devops-node-api\";\nimport * as ga from \"azure-devops-node-api/GitApi\";\nimport { GitRepository } from \"azure-devops-node-api/interfaces/TfvcInterfaces\";\nimport chalk from \"chalk\";\nimport { readFile } from \"fs/promises\";\nimport readline from \"node:readline\";\nimport * as path from \"path\";\nimport { CleanOptions, SimpleGit, simpleGit } from \"simple-git\";\nimport fs from \"fs-extra\";\nimport { basePath } from \"./base-path.js\";\n\n\nconst git: SimpleGit = simpleGit(\"./\").clean(CleanOptions.FORCE);\n\nexport const packageJsonPath = path.join(basePath, \"package.json\");\nconst orgUrl = \"https://sijit@dev.azure.com/sijit\";\n\nconst rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n});\n\nlet token: string = \"\";\nconst packageJson = JSON.parse(await readFile(packageJsonPath, \"utf8\"));\nconst repoName: string = packageJson.name;\n\nasync function run() {\n let repos: GitRepository[];\n let gitApi: ga.IGitApi;\n const project = \"industry40\";\n try {\n const authHandler = azdev.getPersonalAccessTokenHandler(token);\n const connection = new azdev.WebApi(orgUrl, authHandler);\n gitApi = await connection.getGitApi();\n repos = await gitApi.getRepositories(project); \n } catch (error) {\n console.error(\"Your AZURE_PAT environment variable has probably expired.\");\n console.log(\"Please update your AZURE_PAT environment with a new one on.\");\n console.log(\"You can create a new one at[https://dev.azure.com/sijit/_usersSettings/tokens]\");\n }\n\n if (repos.filter((x) => x.name == repoName).length > 0) {\n console.log(\n chalk.red.bold(\n `Error: Repository ${repoName} in project ${project} already exists.`,\n ),\n );\n } else {\n process.stdout.write(`Create ${repoName} in project ${project}`);\n try {\n await gitApi.createRepository({ name: repoName }, project);\n console.log(chalk.green.bold(` ... OK`));\n } catch (error) {\n console.error(chalk.red.bold(`\\n${error}`));\n }\n\n process.stdout.write(`Initialize local git repository on branch master`);\n try {\n await git.init();\n await git.checkoutLocalBranch(\"master\");\n await git.add(\".\");\n await git.commit(\"Initial commit\");\n console.log(chalk.green.bold(` ... OK`));\n } catch (error) {\n console.error(chalk.red.bold(`\\n${error}`));\n }\n\n process.stdout.write(`Add remote origin.`);\n try {\n await git.remote([\n \"add\",\n \"origin\",\n `git@ssh.dev.azure.com:v3/sijit/industry40/${repoName}`,\n ]);\n console.log(chalk.green.bold(` ... OK`));\n } catch (error) {\n console.error(chalk.red.bold(`\\n${error}`));\n }\n\n process.stdout.write(`Push master to remote`);\n try {\n await git.push(\"origin\", \"master\");\n console.log(chalk.green.bold(` ... OK`));\n } catch (error) {\n console.error(chalk.red.bold(`\\n${error}`));\n }\n\n process.stdout.write(`Create default config.json from config-template.json`);\n try {\n fs.copyFileSync(path.join(basePath,'config-template.json'), path.join(basePath,'config.json'));\n console.log(chalk.green.bold(` ... OK`));\n } catch (error) {\n console.error(chalk.red.bold(`\\n${error}`));\n }\n\n console.log(\n chalk.green.bold(\n `\\nNow you can add pipeline for ${repoName} in Azure DevOps pipelines for the project ${project}.`,\n ),\n );\n }\n}\n\nconsole.log(chalk.green.bold(`Create new RTT: ${repoName}\\n`));\n\nconst envPat = process.env.AZURE_PAT;\nif (envPat && envPat.length > 10) {\n rl.close();\n console.log(\"Using PAT from your AZURE_PAT environment\");\n token = envPat;\n run();\n} else {\n console.log(\"Could not find AZURE_PAT environment.\");\n rl.question(\n `Please enter your PAT, you can create one at [https://dev.azure.com/sijit/_usersSettings/tokens]: `,\n (newToken) => {\n rl.close();\n token = newToken;\n run();\n },\n ); \n}\n"]}
1
+ {"version":3,"file":"initialize.js","sourceRoot":"","sources":["../../src/tools/initialize.ts"],"names":[],"mappings":"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","sourcesContent":["import * as azdev from \"azure-devops-node-api\";\nimport * as ga from \"azure-devops-node-api/GitApi\";\nimport { GitRepository } from \"azure-devops-node-api/interfaces/TfvcInterfaces\";\nimport chalk from \"chalk\";\nimport { readFile } from \"fs/promises\";\nimport readline from \"node:readline\";\nimport * as path from \"path\";\nimport { CleanOptions, SimpleGit, simpleGit } from \"simple-git\";\nimport fs from \"fs-extra\";\nimport { basePath } from \"./base-path.js\";\n\n\nconst git: SimpleGit = simpleGit(\"./\").clean(CleanOptions.FORCE);\n\nexport const packageJsonPath = path.join(basePath, \"package.json\");\nconst orgUrl = \"https://example-org@dev.azure.com/example-org\";\n\nconst rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n});\n\nlet token: string = \"\";\nconst packageJson = JSON.parse(await readFile(packageJsonPath, \"utf8\"));\nconst repoName: string = packageJson.name;\n\nasync function run() {\n let repos: GitRepository[];\n let gitApi: ga.IGitApi;\n const project = \"example-project\";\n try {\n const authHandler = azdev.getPersonalAccessTokenHandler(token);\n const connection = new azdev.WebApi(orgUrl, authHandler);\n gitApi = await connection.getGitApi();\n repos = await gitApi.getRepositories(project); \n } catch (error) {\n console.error(\"Your AZURE_PAT environment variable has probably expired.\");\n console.log(\"Please update your AZURE_PAT environment with a new one on.\");\n console.log(\"You can create a new one at[https://dev.azure.com/example-org/_usersSettings/tokens]\");\n }\n\n if (repos.filter((x) => x.name == repoName).length > 0) {\n console.log(\n chalk.red.bold(\n `Error: Repository ${repoName} in project ${project} already exists.`,\n ),\n );\n } else {\n process.stdout.write(`Create ${repoName} in project ${project}`);\n try {\n await gitApi.createRepository({ name: repoName }, project);\n console.log(chalk.green.bold(` ... OK`));\n } catch (error) {\n console.error(chalk.red.bold(`\\n${error}`));\n }\n\n process.stdout.write(`Initialize local git repository on branch master`);\n try {\n await git.init();\n await git.checkoutLocalBranch(\"master\");\n await git.add(\".\");\n await git.commit(\"Initial commit\");\n console.log(chalk.green.bold(` ... OK`));\n } catch (error) {\n console.error(chalk.red.bold(`\\n${error}`));\n }\n\n process.stdout.write(`Add remote origin.`);\n try {\n await git.remote([\n \"add\",\n \"origin\",\n `git@ssh.dev.azure.com:v3/example-org/example-project/${repoName}`,\n ]);\n console.log(chalk.green.bold(` ... OK`));\n } catch (error) {\n console.error(chalk.red.bold(`\\n${error}`));\n }\n\n process.stdout.write(`Push master to remote`);\n try {\n await git.push(\"origin\", \"master\");\n console.log(chalk.green.bold(` ... OK`));\n } catch (error) {\n console.error(chalk.red.bold(`\\n${error}`));\n }\n\n process.stdout.write(`Create default config.json from config-template.json`);\n try {\n fs.copyFileSync(path.join(basePath,'config-template.json'), path.join(basePath,'config.json'));\n console.log(chalk.green.bold(` ... OK`));\n } catch (error) {\n console.error(chalk.red.bold(`\\n${error}`));\n }\n\n console.log(\n chalk.green.bold(\n `\\nNow you can add pipeline for ${repoName} in Azure DevOps pipelines for the project ${project}.`,\n ),\n );\n }\n}\n\nconsole.log(chalk.green.bold(`Create new RTT: ${repoName}\\n`));\n\nconst envPat = process.env.AZURE_PAT;\nif (envPat && envPat.length > 10) {\n rl.close();\n console.log(\"Using PAT from your AZURE_PAT environment\");\n token = envPat;\n run();\n} else {\n console.log(\"Could not find AZURE_PAT environment.\");\n rl.question(\n `Please enter your PAT, you can create one at [https://dev.azure.com/example-org/_usersSettings/tokens]: `,\n (newToken) => {\n rl.close();\n token = newToken;\n run();\n },\n ); \n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"update-tools.js","sourceRoot":"","sources":["../../src/tools/update-tools.ts"],"names":[],"mappings":"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","sourcesContent":["import { CleanOptions, SimpleGit, simpleGit } from \"simple-git\";\nimport { basePath } from \"./base-path.js\";\nimport readline from \"node:readline\";\nimport * as path from \"path\";\nimport chalk from \"chalk\";\nimport fs from \"fs-extra\";\nimport { execSync } from \"child_process\";\n\n\nconst rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n});\n\nconst git: SimpleGit = simpleGit(\"./\").clean(CleanOptions.FORCE);\n\ntry {\n await main();\n rl.close();\n} catch (error) {\n console.log(chalk.red.bold(`\\n${error}`));\n rl.close();\n}\n\nasync function main() {\n const tmpRtt = path.join(basePath, \"/tmp-rtt\");\n try {\n console.log(`Pull template-ts-nodejs into tmp-rtt`);\n await git.clone(\"git@ssh.dev.azure.com:v3/sijit/industry40/template-uns-rtt\", tmpRtt);\n } catch (error) {\n console.error(chalk.red.bold(`exec error: ${error}`)); \n return;\n }\n\n try {\n console.log(`Overwrite tools`);\n fs.copySync(path.join(tmpRtt, \"/src/tools\"), path.join(basePath, \"/src/tools\"), {overwrite: true});\n } catch (error) {\n console.error(chalk.red.bold(`exec error: ${error}`)); \n return;\n }\n\n // Update library version JSON at repo root from template\n try {\n const srcJson = path.join(tmpRtt, 'uns-library.json');\n const dstJson = path.join(basePath, 'uns-library.json');\n if (fs.existsSync(srcJson)) {\n fs.copyFileSync(srcJson, dstJson);\n const ver = JSON.parse(fs.readFileSync(srcJson, 'utf8')).version;\n console.log(`Updated uns-library.json -> ${ver}`);\n } else {\n // Fallback for older templates: synthesize from package.json\n const tmpPackageJsonPath = path.join(tmpRtt, 'package.json');\n const tmpPackageJson = JSON.parse(fs.readFileSync(tmpPackageJsonPath, 'utf8'));\n const payload = JSON.stringify({ name: tmpPackageJson.name, version: tmpPackageJson.version }, null, 2);\n fs.writeFileSync(dstJson, payload + \"\\n\", 'utf8');\n console.log(`Updated uns-library.json -> ${tmpPackageJson.version}`);\n }\n } catch (error) {\n console.error(chalk.red.bold(`exec error: ${error}`));\n return;\n }\n\n try {\n console.log(`Running update-rtt from tools`);\n // Propagate any CLI args to update-rtt (e.g., --dry-run)\n const args = process.argv.slice(2).join(\" \");\n // Run the TypeScript tool directly to avoid relying on a successful build\n execSync(`tsx ./src/tools/update-rtt.ts ${args}`.trim(), { stdio: 'inherit' });\n } catch (error) {\n console.error(chalk.red.bold(`exec error: ${error}`)); \n return; \n }\n}\n"]}
1
+ {"version":3,"file":"update-tools.js","sourceRoot":"","sources":["../../src/tools/update-tools.ts"],"names":[],"mappings":"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","sourcesContent":["import { CleanOptions, SimpleGit, simpleGit } from \"simple-git\";\nimport { basePath } from \"./base-path.js\";\nimport readline from \"node:readline\";\nimport * as path from \"path\";\nimport chalk from \"chalk\";\nimport fs from \"fs-extra\";\nimport { execSync } from \"child_process\";\n\n\nconst rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n});\n\nconst git: SimpleGit = simpleGit(\"./\").clean(CleanOptions.FORCE);\n\ntry {\n await main();\n rl.close();\n} catch (error) {\n console.log(chalk.red.bold(`\\n${error}`));\n rl.close();\n}\n\nasync function main() {\n const tmpRtt = path.join(basePath, \"/tmp-rtt\");\n try {\n console.log(`Pull template-ts-nodejs into tmp-rtt`);\n await git.clone(\"git@ssh.dev.azure.com:v3/example-org/example-project/template-uns-rtt\", tmpRtt);\n } catch (error) {\n console.error(chalk.red.bold(`exec error: ${error}`)); \n return;\n }\n\n try {\n console.log(`Overwrite tools`);\n fs.copySync(path.join(tmpRtt, \"/src/tools\"), path.join(basePath, \"/src/tools\"), {overwrite: true});\n } catch (error) {\n console.error(chalk.red.bold(`exec error: ${error}`)); \n return;\n }\n\n // Update library version JSON at repo root from template\n try {\n const srcJson = path.join(tmpRtt, 'uns-library.json');\n const dstJson = path.join(basePath, 'uns-library.json');\n if (fs.existsSync(srcJson)) {\n fs.copyFileSync(srcJson, dstJson);\n const ver = JSON.parse(fs.readFileSync(srcJson, 'utf8')).version;\n console.log(`Updated uns-library.json -> ${ver}`);\n } else {\n // Fallback for older templates: synthesize from package.json\n const tmpPackageJsonPath = path.join(tmpRtt, 'package.json');\n const tmpPackageJson = JSON.parse(fs.readFileSync(tmpPackageJsonPath, 'utf8'));\n const payload = JSON.stringify({ name: tmpPackageJson.name, version: tmpPackageJson.version }, null, 2);\n fs.writeFileSync(dstJson, payload + \"\\n\", 'utf8');\n console.log(`Updated uns-library.json -> ${tmpPackageJson.version}`);\n }\n } catch (error) {\n console.error(chalk.red.bold(`exec error: ${error}`));\n return;\n }\n\n try {\n console.log(`Running update-rtt from tools`);\n // Propagate any CLI args to update-rtt (e.g., --dry-run)\n const args = process.argv.slice(2).join(\" \");\n // Run the TypeScript tool directly to avoid relying on a successful build\n execSync(`tsx ./src/tools/update-rtt.ts ${args}`.trim(), { stdio: 'inherit' });\n } catch (error) {\n console.error(chalk.red.bold(`exec error: ${error}`)); \n return; \n }\n}\n"]}
@@ -220,14 +220,34 @@ function resolveEnvSecret(placeholder, options) {
220
220
  async function resolveInfisicalSecret(placeholder, options) {
221
221
  const infisicalOptions = options.infisical;
222
222
  const fetcher = await getInfisicalFetcher(infisicalOptions);
223
- if (!fetcher) {
224
- options.onMissingSecret?.(placeholder, "infisical");
225
- throw new Error("Infisical secret requested but no resolver is configured. Provide SecretResolverOptions.infisical, " +
226
- "set INFISICAL_TOKEN/INFISICAL_PERSONAL_TOKEN, or supply /run/secrets/infisical_token (/var/lib/uns/secrets/infisical_token also supported).");
227
- }
228
223
  const environment = placeholder.environment ?? infisicalOptions?.environment ?? process.env["INFISICAL_ENVIRONMENT"];
229
224
  const projectId = placeholder.projectId ?? (await resolveInfisicalProjectId(infisicalOptions));
230
225
  const type = infisicalOptions?.type ?? "shared";
226
+ const cacheKey = JSON.stringify({
227
+ path: placeholder.path,
228
+ key: placeholder.key,
229
+ environment,
230
+ projectId,
231
+ type,
232
+ });
233
+ const useCache = infisicalOptions?.cache !== false;
234
+ const cached = useCache ? infisicalCache.get(cacheKey) : undefined;
235
+ if (!fetcher) {
236
+ if (cached) {
237
+ console.warn(`Infisical fetcher unavailable; using cached secret for ${placeholder.path}:${placeholder.key}.`);
238
+ return cached;
239
+ }
240
+ const fallback = placeholder.default !== undefined
241
+ ? placeholder.default
242
+ : placeholder.optional
243
+ ? undefined
244
+ : undefined;
245
+ console.warn(`Infisical fetcher unavailable; returning ${fallback === undefined ? "undefined" : "default"} for ${placeholder.path}:${placeholder.key}.`);
246
+ if (fallback === undefined && !placeholder.optional) {
247
+ options.onMissingSecret?.(placeholder, "infisical");
248
+ }
249
+ return fallback;
250
+ }
231
251
  if (!environment) {
232
252
  throw new Error(`Infisical secret '${placeholder.path}:${placeholder.key}' is missing an environment. ` +
233
253
  "Set it on the placeholder, pass SecretResolverOptions.infisical.environment, or define INFISICAL_ENVIRONMENT.");
@@ -237,15 +257,8 @@ async function resolveInfisicalSecret(placeholder, options) {
237
257
  "Set it on the placeholder, pass SecretResolverOptions.infisical.projectId, define INFISICAL_PROJECT_ID, " +
238
258
  "or provide /run/secrets/infisical_project_id (also /var/lib/uns/secrets/infisical_project_id).");
239
259
  }
240
- const cacheKey = JSON.stringify({
241
- path: placeholder.path,
242
- key: placeholder.key,
243
- environment,
244
- projectId,
245
- type,
246
- });
247
- if (infisicalOptions?.cache !== false && infisicalCache.has(cacheKey)) {
248
- return infisicalCache.get(cacheKey) ?? undefined;
260
+ if (cached) {
261
+ return cached ?? undefined;
249
262
  }
250
263
  const fetchPromise = fetcher({
251
264
  path: placeholder.path,
@@ -265,11 +278,33 @@ async function resolveInfisicalSecret(placeholder, options) {
265
278
  throw new Error(`Secret '${placeholder.path}:${placeholder.key}' not found in Infisical.`);
266
279
  }
267
280
  return secret;
281
+ }).catch(error => {
282
+ if (cached) {
283
+ console.warn(`Infisical fetch failed (${error instanceof Error ? error.message : String(error)}); using cached secret for ${placeholder.path}:${placeholder.key}.`);
284
+ return cached;
285
+ }
286
+ const fallback = placeholder.default !== undefined
287
+ ? placeholder.default
288
+ : placeholder.optional
289
+ ? undefined
290
+ : undefined;
291
+ console.warn(`Infisical fetch failed (${error instanceof Error ? error.message : String(error)}); returning ${fallback === undefined ? "undefined" : "default"} for ${placeholder.path}:${placeholder.key}.`);
292
+ if (fallback === undefined && !placeholder.optional) {
293
+ options.onMissingSecret?.(placeholder, "infisical");
294
+ throw new Error(`Failed to fetch Infisical secret ${placeholder.path}:${placeholder.key}: ${error instanceof Error ? error.message : String(error)}`);
295
+ }
296
+ return fallback;
297
+ });
298
+ const guardedPromise = fetchPromise.then(value => value, error => {
299
+ if (useCache) {
300
+ infisicalCache.delete(cacheKey);
301
+ }
302
+ throw error;
268
303
  });
269
- if (infisicalOptions?.cache !== false) {
270
- infisicalCache.set(cacheKey, fetchPromise);
304
+ if (useCache) {
305
+ infisicalCache.set(cacheKey, guardedPromise);
271
306
  }
272
- return fetchPromise;
307
+ return guardedPromise;
273
308
  }
274
309
  async function getInfisicalFetcher(options) {
275
310
  const effectiveOptions = options ?? {};
@@ -1 +1 @@
1
- {"version":3,"file":"secret-resolver.js","sourceRoot":"","sources":["../../src/uns-config/secret-resolver.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from \"node:fs/promises\";\nimport os from \"node:os\";\nimport type { NetworkInterfaceInfo } from \"node:os\";\nimport type { AppConfig } from \"../config/app-config.js\";\nimport {\n isSecretPlaceholder,\n type EnvSecretPlaceholder,\n type InfisicalSecretPlaceholder,\n type SecretPlaceholder,\n} from \"./secret-placeholders.js\";\nimport {\n isHostPlaceholder,\n type HostPlaceholder,\n type SystemHostPlaceholder,\n} from \"./host-placeholders.js\";\n\nexport type SecretValueResolved = string | undefined;\nexport type HostValueResolved = string | undefined;\n\ntype SecretPlaceholderCandidate =\n | { provider: \"env\"; key: string }\n | { provider: \"infisical\"; key: string; path: string };\n\ntype HostPlaceholderCandidate = HostPlaceholder;\n\nexport type ResolvedConfig<T> = T extends SecretPlaceholderCandidate\n ? SecretValueResolved\n : T extends HostPlaceholderCandidate\n ? HostValueResolved\n : T extends (infer U)[]\n ? ResolvedConfig<U>[]\n : T extends Record<string, unknown>\n ? { [K in keyof T]: ResolvedConfig<T[K]> }\n : T;\n\nexport type ResolvedAppConfig = ResolvedConfig<AppConfig>;\n\nexport interface InfisicalFetchRequest {\n path: string;\n key: string;\n environment?: string;\n projectId?: string;\n type?: \"shared\" | \"personal\";\n}\n\nexport type InfisicalFetcher = (\n request: InfisicalFetchRequest\n) => Promise<string | undefined>;\n\nexport interface InfisicalResolverOptions {\n /**\n * Provide a custom fetcher. If omitted, the resolver tries to lazily instantiate\n * an Infisical client using @infisical/sdk based on the supplied token/siteUrl/options.\n */\n fetchSecret?: InfisicalFetcher;\n /**\n * Machine token or personal token used when creating the default Infisical client.\n * Falls back to the INFISICAL_TOKEN or INFISICAL_PERSONAL_TOKEN environment variables.\n */\n token?: string;\n /** Optional Infisical site URL override. Defaults to INFISICAL_SITE_URL when present. */\n siteUrl?: string;\n /** Default environment used when a placeholder does not specify one explicitly. */\n environment?: string;\n /** Default project id used when a placeholder does not provide one. */\n projectId?: string;\n /** Default secret type. Shared secrets are used by default. */\n type?: \"shared\" | \"personal\";\n /** Disable in-memory caching when set to false. Enabled by default. */\n cache?: boolean;\n}\n\nexport interface SecretResolverOptions {\n /** Environment map used for `env` placeholders. Defaults to process.env. */\n env?: NodeJS.ProcessEnv;\n /** Configuration for resolving Infisical placeholders. */\n infisical?: InfisicalResolverOptions;\n /** Callback invoked before throwing when a required secret cannot be resolved. */\n onMissingSecret?: (placeholder: SecretPlaceholder, source: \"env\" | \"infisical\") => void;\n /** Configuration for resolving host placeholders. */\n hosts?: HostResolverOptions;\n}\n\nexport interface HostResolverOptions {\n /** Optional environment map used when falling back to process.env lookups. */\n env?: NodeJS.ProcessEnv;\n /** Static mapping of external host keys to concrete host strings. */\n externalHosts?: Record<string, string | undefined>;\n /**\n * Custom resolver invoked when an external host needs to be resolved.\n * It can return synchronously or asynchronously.\n */\n resolveExternal?: (key: string) => string | undefined | Promise<string | undefined>;\n /** Override for os.networkInterfaces (handy for tests). */\n networkInterfaces?: () => Record<string, NetworkInterfaceInfo[] | undefined>;\n /** Callback invoked before throwing when a required host cannot be resolved. */\n onMissingHost?: (placeholder: HostPlaceholder) => void;\n}\n\nconst INFISICAL_TOKEN_FILE = \"/run/secrets/infisical_token\";\nconst INFISICAL_PROJECT_ID_FILE = \"/run/secrets/infisical_project_id\";\nconst INFISICAL_SITE_URL_FILE = \"/run/secrets/infisical_site_url\";\nconst INFISICAL_TOKEN_FILE_ALT = \"/var/lib/uns/secrets/infisical_token\";\nconst INFISICAL_PROJECT_ID_FILE_ALT = \"/var/lib/uns/secrets/infisical_project_id\";\nconst INFISICAL_SITE_URL_FILE_ALT = \"/var/lib/uns/secrets/infisical_site_url\";\n\nconst envCache = new Map<string, string | undefined>();\nconst infisicalCache = new Map<string, Promise<string | undefined>>();\n\nasync function readSecretFile(filePath: string): Promise<string | undefined> {\n try {\n const content = await fs.readFile(filePath, \"utf8\");\n const trimmed = content.trim();\n return trimmed.length > 0 ? trimmed : undefined;\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\") {\n return undefined;\n }\n throw new Error(\n `Failed to read Infisical secret file '${filePath}': ${\n error instanceof Error ? error.message : String(error)\n }`,\n { cause: error as Error }\n );\n }\n}\n\nasync function resolveInfisicalToken(\n options?: InfisicalResolverOptions\n): Promise<string | undefined> {\n const candidate =\n options?.token ??\n process.env[\"INFISICAL_TOKEN\"] ??\n process.env[\"INFISICAL_PERSONAL_TOKEN\"] ??\n (await readSecretFile(INFISICAL_TOKEN_FILE)) ??\n (await readSecretFile(INFISICAL_TOKEN_FILE_ALT));\n\n return candidate?.trim() || undefined;\n}\n\nasync function resolveInfisicalSiteUrl(\n options?: InfisicalResolverOptions\n): Promise<string | undefined> {\n const candidate =\n options?.siteUrl ??\n process.env[\"INFISICAL_SITE_URL\"] ??\n (await readSecretFile(INFISICAL_SITE_URL_FILE)) ??\n (await readSecretFile(INFISICAL_SITE_URL_FILE_ALT));\n\n return candidate?.trim() || undefined;\n}\n\nasync function resolveInfisicalProjectId(\n options?: InfisicalResolverOptions\n): Promise<string | undefined> {\n const candidate =\n options?.projectId ??\n process.env[\"INFISICAL_PROJECT_ID\"] ??\n (await readSecretFile(INFISICAL_PROJECT_ID_FILE)) ??\n (await readSecretFile(INFISICAL_PROJECT_ID_FILE_ALT));\n\n return candidate?.trim() || undefined;\n}\n\nconst structuredCloneFallback = <T>(value: T): T =>\n typeof structuredClone === \"function\"\n ? structuredClone(value)\n : (JSON.parse(JSON.stringify(value)) as T);\n\nexport async function resolveConfigSecrets(\n config: AppConfig,\n options: SecretResolverOptions = {}\n): Promise<ResolvedAppConfig> {\n const working = structuredCloneFallback(config);\n await resolveNode(working, options);\n return working;\n}\n\nexport function clearSecretResolverCaches(): void {\n envCache.clear();\n infisicalCache.clear();\n defaultInfisicalFetcherCache.clear();\n}\n\nasync function resolveNode(node: unknown, options: SecretResolverOptions): Promise<unknown> {\n if (isSecretPlaceholder(node)) {\n return resolveSecretValue(node, options);\n }\n\n if (isHostPlaceholder(node)) {\n return resolveHostValue(node, options.hosts);\n }\n\n if (Array.isArray(node)) {\n const resolvedArray = await Promise.all(node.map(item => resolveNode(item, options)));\n return resolvedArray;\n }\n\n if (node && typeof node === \"object\") {\n const obj = node as Record<string, unknown>;\n\n for (const key of Object.keys(obj)) {\n const current = obj[key];\n\n if (isSecretPlaceholder(current)) {\n const resolved = await resolveSecretValue(current, options);\n if (resolved === undefined) {\n delete obj[key];\n } else {\n obj[key] = resolved;\n }\n continue;\n }\n\n if (isHostPlaceholder(current)) {\n const resolved = await resolveHostValue(current, options.hosts);\n if (resolved === undefined) {\n delete obj[key];\n } else {\n obj[key] = resolved;\n }\n continue;\n }\n\n const resolvedChild = await resolveNode(current, options);\n obj[key] = resolvedChild;\n }\n\n return obj;\n }\n\n return node;\n}\n\nasync function resolveSecretValue(\n placeholder: SecretPlaceholder,\n options: SecretResolverOptions\n): Promise<SecretValueResolved> {\n switch (placeholder.provider) {\n case \"env\":\n return resolveEnvSecret(placeholder, options);\n case \"infisical\":\n return resolveInfisicalSecret(placeholder, options);\n default:\n // Exhaustive check to guard future provider additions.\n return assertNeverProvider(placeholder);\n }\n}\n\nfunction assertNeverProvider(x: never): never {\n throw new Error(`Unsupported secret provider: ${JSON.stringify(x)}`);\n}\n\nasync function resolveHostValue(\n placeholder: HostPlaceholder,\n options?: HostResolverOptions\n): Promise<HostValueResolved> {\n const effectiveOptions = options ?? {};\n\n switch (placeholder.provider) {\n case \"inline\":\n return placeholder.value;\n case \"external\": {\n const envMap = effectiveOptions.env ?? process.env;\n\n let resolved = await maybeResolveExternal(\n placeholder.key,\n effectiveOptions.resolveExternal\n );\n\n if (resolved === undefined) {\n resolved = effectiveOptions.externalHosts?.[placeholder.key];\n }\n\n if (resolved === undefined) {\n resolved = envMap?.[placeholder.key];\n }\n\n if (resolved === undefined) {\n if (placeholder.default !== undefined) {\n return placeholder.default;\n }\n if (placeholder.optional) {\n return undefined;\n }\n\n effectiveOptions.onMissingHost?.(placeholder);\n throw new Error(`External host '${placeholder.key}' could not be resolved.`);\n }\n\n return resolved;\n }\n case \"system\":\n return resolveSystemHost(placeholder, effectiveOptions);\n default:\n return assertNeverHostProvider(placeholder);\n }\n}\n\nasync function maybeResolveExternal(\n key: string,\n resolver?: (key: string) => string | undefined | Promise<string | undefined>\n): Promise<string | undefined> {\n if (!resolver) {\n return undefined;\n }\n\n try {\n return await resolver(key);\n } catch (error) {\n throw new Error(\n `Failed to resolve external host '${key}' via custom resolver: ${\n error instanceof Error ? error.message : String(error)\n }`,\n { cause: error }\n );\n }\n}\n\nfunction assertNeverHostProvider(x: never): never {\n throw new Error(`Unsupported host provider: ${JSON.stringify(x)}`);\n}\n\nfunction resolveSystemHost(\n placeholder: SystemHostPlaceholder,\n options: HostResolverOptions\n): HostValueResolved {\n const getInterfaces = options.networkInterfaces ?? os.networkInterfaces;\n const interfaces = getInterfaces();\n const family = placeholder.family ?? \"IPv4\";\n const targetName = placeholder.interfaceName;\n\n const interfaceEntries: Array<readonly [string, NetworkInterfaceInfo[] | undefined]> = targetName\n ? [[targetName, interfaces[targetName]]]\n : Object.entries(interfaces);\n\n for (const [, ifaceList] of interfaceEntries) {\n if (!ifaceList) {\n continue;\n }\n for (const iface of ifaceList) {\n if (\n iface &&\n iface.family === family &&\n iface.internal !== true &&\n typeof iface.address === \"string\" &&\n iface.address.length > 0\n ) {\n return iface.address;\n }\n }\n\n if (targetName) {\n break;\n }\n }\n\n if (placeholder.default !== undefined) {\n return placeholder.default;\n }\n\n if (placeholder.optional) {\n return undefined;\n }\n\n options.onMissingHost?.(placeholder);\n const targetDescription = targetName ? `interface '${targetName}'` : \"available interfaces\";\n throw new Error(\n `System host lookup failed for ${targetDescription} (family ${family}).`\n );\n}\n\nfunction resolveEnvSecret(\n placeholder: EnvSecretPlaceholder,\n options: SecretResolverOptions\n): SecretValueResolved {\n const envMap = options.env ?? process.env;\n const cacheKey = placeholder.key;\n\n if (envCache.has(cacheKey)) {\n return envCache.get(cacheKey) ?? undefined;\n }\n\n const value = envMap[cacheKey];\n\n if (value === undefined || value === null) {\n if (placeholder.default !== undefined) {\n envCache.set(cacheKey, placeholder.default);\n return placeholder.default;\n }\n if (placeholder.optional) {\n envCache.set(cacheKey, undefined);\n return undefined;\n }\n\n options.onMissingSecret?.(placeholder, \"env\");\n throw new Error(`Required environment variable '${cacheKey}' is not set.`);\n }\n\n envCache.set(cacheKey, value);\n return value;\n}\n\nasync function resolveInfisicalSecret(\n placeholder: InfisicalSecretPlaceholder,\n options: SecretResolverOptions\n): Promise<SecretValueResolved> {\n const infisicalOptions = options.infisical;\n const fetcher = await getInfisicalFetcher(infisicalOptions);\n\n if (!fetcher) {\n options.onMissingSecret?.(placeholder, \"infisical\");\n throw new Error(\n \"Infisical secret requested but no resolver is configured. Provide SecretResolverOptions.infisical, \" +\n \"set INFISICAL_TOKEN/INFISICAL_PERSONAL_TOKEN, or supply /run/secrets/infisical_token (/var/lib/uns/secrets/infisical_token also supported).\"\n );\n }\n\n const environment = placeholder.environment ?? infisicalOptions?.environment ?? process.env[\"INFISICAL_ENVIRONMENT\"];\n const projectId = placeholder.projectId ?? (await resolveInfisicalProjectId(infisicalOptions));\n const type = infisicalOptions?.type ?? \"shared\";\n\n if (!environment) {\n throw new Error(\n `Infisical secret '${placeholder.path}:${placeholder.key}' is missing an environment. ` +\n \"Set it on the placeholder, pass SecretResolverOptions.infisical.environment, or define INFISICAL_ENVIRONMENT.\"\n );\n }\n\n if (!projectId) {\n throw new Error(\n `Infisical secret '${placeholder.path}:${placeholder.key}' is missing a project id. ` +\n \"Set it on the placeholder, pass SecretResolverOptions.infisical.projectId, define INFISICAL_PROJECT_ID, \" +\n \"or provide /run/secrets/infisical_project_id (also /var/lib/uns/secrets/infisical_project_id).\"\n );\n }\n\n const cacheKey = JSON.stringify({\n path: placeholder.path,\n key: placeholder.key,\n environment,\n projectId,\n type,\n });\n\n if (infisicalOptions?.cache !== false && infisicalCache.has(cacheKey)) {\n return infisicalCache.get(cacheKey) ?? undefined;\n }\n\n const fetchPromise = fetcher({\n path: placeholder.path,\n key: placeholder.key,\n environment,\n projectId,\n type,\n }).then(secret => {\n if (secret === undefined || secret === null) {\n if (placeholder.default !== undefined) {\n return placeholder.default;\n }\n if (placeholder.optional) {\n return undefined;\n }\n options.onMissingSecret?.(placeholder, \"infisical\");\n throw new Error(\n `Secret '${placeholder.path}:${placeholder.key}' not found in Infisical.`\n );\n }\n return secret;\n });\n\n if (infisicalOptions?.cache !== false) {\n infisicalCache.set(cacheKey, fetchPromise);\n }\n\n return fetchPromise;\n}\n\nasync function getInfisicalFetcher(\n options?: InfisicalResolverOptions\n): Promise<InfisicalFetcher | undefined> {\n const effectiveOptions = options ?? {};\n\n if (effectiveOptions.fetchSecret) {\n return effectiveOptions.fetchSecret;\n }\n\n const token = await resolveInfisicalToken(effectiveOptions);\n\n if (!token) {\n return undefined;\n }\n\n const siteUrl = await resolveInfisicalSiteUrl(effectiveOptions);\n const cacheKey = `${token}::${siteUrl ?? \"\"}`;\n\n if (!defaultInfisicalFetcherCache.has(cacheKey)) {\n defaultInfisicalFetcherCache.set(\n cacheKey,\n createDefaultInfisicalFetcher(token, siteUrl)\n );\n }\n\n const baseFetcher = await defaultInfisicalFetcherCache.get(cacheKey)!;\n return baseFetcher;\n}\n\nconst defaultInfisicalFetcherCache = new Map<string, Promise<InfisicalFetcher>>();\n\nasync function createDefaultInfisicalFetcher(\n token: string,\n siteUrl?: string\n): Promise<InfisicalFetcher> {\n try {\n const sdkModule = await import(\"@infisical/sdk\");\n const { InfisicalSDK, SecretType } = sdkModule;\n if (!InfisicalSDK) {\n throw new Error(\"@infisical/sdk does not export InfisicalSDK\");\n }\n\n const sdkInstance = new InfisicalSDK({ siteUrl: siteUrl ?? \"\" });\n const authenticatedSdk = sdkInstance.auth().accessToken(token);\n\n return async ({ path, key, environment, projectId, type = \"shared\" }: InfisicalFetchRequest) => {\n if (!environment) {\n throw new Error(\n `Infisical secret '${path}:${key}' is missing an environment.`\n );\n }\n if (!projectId) {\n throw new Error(\n `Infisical secret '${path}:${key}' is missing a project id.`\n );\n }\n\n const secret = await authenticatedSdk\n .secrets()\n .getSecret({\n secretName: key,\n secretPath: path,\n environment,\n projectId,\n viewSecretValue: true,\n type: type === \"personal\" ? SecretType.Personal : SecretType.Shared,\n });\n\n return secret?.secretValue ?? undefined;\n };\n } catch (error) {\n throw new Error(\n \"Failed to initialize @infisical/sdk. Install the package or provide SecretResolverOptions.infisical.fetchSecret.\",\n { cause: error as Error }\n );\n }\n}\n"]}
1
+ {"version":3,"file":"secret-resolver.js","sourceRoot":"","sources":["../../src/uns-config/secret-resolver.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from \"node:fs/promises\";\nimport os from \"node:os\";\nimport type { NetworkInterfaceInfo } from \"node:os\";\nimport type { AppConfig } from \"../config/app-config.js\";\nimport {\n isSecretPlaceholder,\n type EnvSecretPlaceholder,\n type InfisicalSecretPlaceholder,\n type SecretPlaceholder,\n} from \"./secret-placeholders.js\";\nimport {\n isHostPlaceholder,\n type HostPlaceholder,\n type SystemHostPlaceholder,\n} from \"./host-placeholders.js\";\n\nexport type SecretValueResolved = string | undefined;\nexport type HostValueResolved = string | undefined;\n\ntype SecretPlaceholderCandidate =\n | { provider: \"env\"; key: string }\n | { provider: \"infisical\"; key: string; path: string };\n\ntype HostPlaceholderCandidate = HostPlaceholder;\n\nexport type ResolvedConfig<T> = T extends SecretPlaceholderCandidate\n ? SecretValueResolved\n : T extends HostPlaceholderCandidate\n ? HostValueResolved\n : T extends (infer U)[]\n ? ResolvedConfig<U>[]\n : T extends Record<string, unknown>\n ? { [K in keyof T]: ResolvedConfig<T[K]> }\n : T;\n\nexport type ResolvedAppConfig = ResolvedConfig<AppConfig>;\n\nexport interface InfisicalFetchRequest {\n path: string;\n key: string;\n environment?: string;\n projectId?: string;\n type?: \"shared\" | \"personal\";\n}\n\nexport type InfisicalFetcher = (\n request: InfisicalFetchRequest\n) => Promise<string | undefined>;\n\nexport interface InfisicalResolverOptions {\n /**\n * Provide a custom fetcher. If omitted, the resolver tries to lazily instantiate\n * an Infisical client using @infisical/sdk based on the supplied token/siteUrl/options.\n */\n fetchSecret?: InfisicalFetcher;\n /**\n * Machine token or personal token used when creating the default Infisical client.\n * Falls back to the INFISICAL_TOKEN or INFISICAL_PERSONAL_TOKEN environment variables.\n */\n token?: string;\n /** Optional Infisical site URL override. Defaults to INFISICAL_SITE_URL when present. */\n siteUrl?: string;\n /** Default environment used when a placeholder does not specify one explicitly. */\n environment?: string;\n /** Default project id used when a placeholder does not provide one. */\n projectId?: string;\n /** Default secret type. Shared secrets are used by default. */\n type?: \"shared\" | \"personal\";\n /** Disable in-memory caching when set to false. Enabled by default. */\n cache?: boolean;\n}\n\nexport interface SecretResolverOptions {\n /** Environment map used for `env` placeholders. Defaults to process.env. */\n env?: NodeJS.ProcessEnv;\n /** Configuration for resolving Infisical placeholders. */\n infisical?: InfisicalResolverOptions;\n /** Callback invoked before throwing when a required secret cannot be resolved. */\n onMissingSecret?: (placeholder: SecretPlaceholder, source: \"env\" | \"infisical\") => void;\n /** Configuration for resolving host placeholders. */\n hosts?: HostResolverOptions;\n}\n\nexport interface HostResolverOptions {\n /** Optional environment map used when falling back to process.env lookups. */\n env?: NodeJS.ProcessEnv;\n /** Static mapping of external host keys to concrete host strings. */\n externalHosts?: Record<string, string | undefined>;\n /**\n * Custom resolver invoked when an external host needs to be resolved.\n * It can return synchronously or asynchronously.\n */\n resolveExternal?: (key: string) => string | undefined | Promise<string | undefined>;\n /** Override for os.networkInterfaces (handy for tests). */\n networkInterfaces?: () => Record<string, NetworkInterfaceInfo[] | undefined>;\n /** Callback invoked before throwing when a required host cannot be resolved. */\n onMissingHost?: (placeholder: HostPlaceholder) => void;\n}\n\nconst INFISICAL_TOKEN_FILE = \"/run/secrets/infisical_token\";\nconst INFISICAL_PROJECT_ID_FILE = \"/run/secrets/infisical_project_id\";\nconst INFISICAL_SITE_URL_FILE = \"/run/secrets/infisical_site_url\";\nconst INFISICAL_TOKEN_FILE_ALT = \"/var/lib/uns/secrets/infisical_token\";\nconst INFISICAL_PROJECT_ID_FILE_ALT = \"/var/lib/uns/secrets/infisical_project_id\";\nconst INFISICAL_SITE_URL_FILE_ALT = \"/var/lib/uns/secrets/infisical_site_url\";\n\nconst envCache = new Map<string, string | undefined>();\nconst infisicalCache = new Map<string, Promise<string | undefined>>();\n\nasync function readSecretFile(filePath: string): Promise<string | undefined> {\n try {\n const content = await fs.readFile(filePath, \"utf8\");\n const trimmed = content.trim();\n return trimmed.length > 0 ? trimmed : undefined;\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\") {\n return undefined;\n }\n throw new Error(\n `Failed to read Infisical secret file '${filePath}': ${\n error instanceof Error ? error.message : String(error)\n }`,\n { cause: error as Error }\n );\n }\n}\n\nasync function resolveInfisicalToken(\n options?: InfisicalResolverOptions\n): Promise<string | undefined> {\n const candidate =\n options?.token ??\n process.env[\"INFISICAL_TOKEN\"] ??\n process.env[\"INFISICAL_PERSONAL_TOKEN\"] ??\n (await readSecretFile(INFISICAL_TOKEN_FILE)) ??\n (await readSecretFile(INFISICAL_TOKEN_FILE_ALT));\n\n return candidate?.trim() || undefined;\n}\n\nasync function resolveInfisicalSiteUrl(\n options?: InfisicalResolverOptions\n): Promise<string | undefined> {\n const candidate =\n options?.siteUrl ??\n process.env[\"INFISICAL_SITE_URL\"] ??\n (await readSecretFile(INFISICAL_SITE_URL_FILE)) ??\n (await readSecretFile(INFISICAL_SITE_URL_FILE_ALT));\n\n return candidate?.trim() || undefined;\n}\n\nasync function resolveInfisicalProjectId(\n options?: InfisicalResolverOptions\n): Promise<string | undefined> {\n const candidate =\n options?.projectId ??\n process.env[\"INFISICAL_PROJECT_ID\"] ??\n (await readSecretFile(INFISICAL_PROJECT_ID_FILE)) ??\n (await readSecretFile(INFISICAL_PROJECT_ID_FILE_ALT));\n\n return candidate?.trim() || undefined;\n}\n\nconst structuredCloneFallback = <T>(value: T): T =>\n typeof structuredClone === \"function\"\n ? structuredClone(value)\n : (JSON.parse(JSON.stringify(value)) as T);\n\nexport async function resolveConfigSecrets(\n config: AppConfig,\n options: SecretResolverOptions = {}\n): Promise<ResolvedAppConfig> {\n const working = structuredCloneFallback(config);\n await resolveNode(working, options);\n return working;\n}\n\nexport function clearSecretResolverCaches(): void {\n envCache.clear();\n infisicalCache.clear();\n defaultInfisicalFetcherCache.clear();\n}\n\nasync function resolveNode(node: unknown, options: SecretResolverOptions): Promise<unknown> {\n if (isSecretPlaceholder(node)) {\n return resolveSecretValue(node, options);\n }\n\n if (isHostPlaceholder(node)) {\n return resolveHostValue(node, options.hosts);\n }\n\n if (Array.isArray(node)) {\n const resolvedArray = await Promise.all(node.map(item => resolveNode(item, options)));\n return resolvedArray;\n }\n\n if (node && typeof node === \"object\") {\n const obj = node as Record<string, unknown>;\n\n for (const key of Object.keys(obj)) {\n const current = obj[key];\n\n if (isSecretPlaceholder(current)) {\n const resolved = await resolveSecretValue(current, options);\n if (resolved === undefined) {\n delete obj[key];\n } else {\n obj[key] = resolved;\n }\n continue;\n }\n\n if (isHostPlaceholder(current)) {\n const resolved = await resolveHostValue(current, options.hosts);\n if (resolved === undefined) {\n delete obj[key];\n } else {\n obj[key] = resolved;\n }\n continue;\n }\n\n const resolvedChild = await resolveNode(current, options);\n obj[key] = resolvedChild;\n }\n\n return obj;\n }\n\n return node;\n}\n\nasync function resolveSecretValue(\n placeholder: SecretPlaceholder,\n options: SecretResolverOptions\n): Promise<SecretValueResolved> {\n switch (placeholder.provider) {\n case \"env\":\n return resolveEnvSecret(placeholder, options);\n case \"infisical\":\n return resolveInfisicalSecret(placeholder, options);\n default:\n // Exhaustive check to guard future provider additions.\n return assertNeverProvider(placeholder);\n }\n}\n\nfunction assertNeverProvider(x: never): never {\n throw new Error(`Unsupported secret provider: ${JSON.stringify(x)}`);\n}\n\nasync function resolveHostValue(\n placeholder: HostPlaceholder,\n options?: HostResolverOptions\n): Promise<HostValueResolved> {\n const effectiveOptions = options ?? {};\n\n switch (placeholder.provider) {\n case \"inline\":\n return placeholder.value;\n case \"external\": {\n const envMap = effectiveOptions.env ?? process.env;\n\n let resolved = await maybeResolveExternal(\n placeholder.key,\n effectiveOptions.resolveExternal\n );\n\n if (resolved === undefined) {\n resolved = effectiveOptions.externalHosts?.[placeholder.key];\n }\n\n if (resolved === undefined) {\n resolved = envMap?.[placeholder.key];\n }\n\n if (resolved === undefined) {\n if (placeholder.default !== undefined) {\n return placeholder.default;\n }\n if (placeholder.optional) {\n return undefined;\n }\n\n effectiveOptions.onMissingHost?.(placeholder);\n throw new Error(`External host '${placeholder.key}' could not be resolved.`);\n }\n\n return resolved;\n }\n case \"system\":\n return resolveSystemHost(placeholder, effectiveOptions);\n default:\n return assertNeverHostProvider(placeholder);\n }\n}\n\nasync function maybeResolveExternal(\n key: string,\n resolver?: (key: string) => string | undefined | Promise<string | undefined>\n): Promise<string | undefined> {\n if (!resolver) {\n return undefined;\n }\n\n try {\n return await resolver(key);\n } catch (error) {\n throw new Error(\n `Failed to resolve external host '${key}' via custom resolver: ${\n error instanceof Error ? error.message : String(error)\n }`,\n { cause: error }\n );\n }\n}\n\nfunction assertNeverHostProvider(x: never): never {\n throw new Error(`Unsupported host provider: ${JSON.stringify(x)}`);\n}\n\nfunction resolveSystemHost(\n placeholder: SystemHostPlaceholder,\n options: HostResolverOptions\n): HostValueResolved {\n const getInterfaces = options.networkInterfaces ?? os.networkInterfaces;\n const interfaces = getInterfaces();\n const family = placeholder.family ?? \"IPv4\";\n const targetName = placeholder.interfaceName;\n\n const interfaceEntries: Array<readonly [string, NetworkInterfaceInfo[] | undefined]> = targetName\n ? [[targetName, interfaces[targetName]]]\n : Object.entries(interfaces);\n\n for (const [, ifaceList] of interfaceEntries) {\n if (!ifaceList) {\n continue;\n }\n for (const iface of ifaceList) {\n if (\n iface &&\n iface.family === family &&\n iface.internal !== true &&\n typeof iface.address === \"string\" &&\n iface.address.length > 0\n ) {\n return iface.address;\n }\n }\n\n if (targetName) {\n break;\n }\n }\n\n if (placeholder.default !== undefined) {\n return placeholder.default;\n }\n\n if (placeholder.optional) {\n return undefined;\n }\n\n options.onMissingHost?.(placeholder);\n const targetDescription = targetName ? `interface '${targetName}'` : \"available interfaces\";\n throw new Error(\n `System host lookup failed for ${targetDescription} (family ${family}).`\n );\n}\n\nfunction resolveEnvSecret(\n placeholder: EnvSecretPlaceholder,\n options: SecretResolverOptions\n): SecretValueResolved {\n const envMap = options.env ?? process.env;\n const cacheKey = placeholder.key;\n\n if (envCache.has(cacheKey)) {\n return envCache.get(cacheKey) ?? undefined;\n }\n\n const value = envMap[cacheKey];\n\n if (value === undefined || value === null) {\n if (placeholder.default !== undefined) {\n envCache.set(cacheKey, placeholder.default);\n return placeholder.default;\n }\n if (placeholder.optional) {\n envCache.set(cacheKey, undefined);\n return undefined;\n }\n\n options.onMissingSecret?.(placeholder, \"env\");\n throw new Error(`Required environment variable '${cacheKey}' is not set.`);\n }\n\n envCache.set(cacheKey, value);\n return value;\n}\n\nasync function resolveInfisicalSecret(\n placeholder: InfisicalSecretPlaceholder,\n options: SecretResolverOptions\n): Promise<SecretValueResolved> {\n const infisicalOptions = options.infisical;\n const fetcher = await getInfisicalFetcher(infisicalOptions);\n\n const environment = placeholder.environment ?? infisicalOptions?.environment ?? process.env[\"INFISICAL_ENVIRONMENT\"];\n const projectId = placeholder.projectId ?? (await resolveInfisicalProjectId(infisicalOptions));\n const type = infisicalOptions?.type ?? \"shared\";\n\n const cacheKey = JSON.stringify({\n path: placeholder.path,\n key: placeholder.key,\n environment,\n projectId,\n type,\n });\n\n const useCache = infisicalOptions?.cache !== false;\n const cached = useCache ? infisicalCache.get(cacheKey) : undefined;\n\n if (!fetcher) {\n if (cached) {\n console.warn(\n `Infisical fetcher unavailable; using cached secret for ${placeholder.path}:${placeholder.key}.`\n );\n return cached;\n }\n\n const fallback =\n placeholder.default !== undefined\n ? placeholder.default\n : placeholder.optional\n ? undefined\n : undefined;\n\n console.warn(\n `Infisical fetcher unavailable; returning ${fallback === undefined ? \"undefined\" : \"default\"} for ${placeholder.path}:${placeholder.key}.`\n );\n if (fallback === undefined && !placeholder.optional) {\n options.onMissingSecret?.(placeholder, \"infisical\");\n }\n\n return fallback;\n }\n\n if (!environment) {\n throw new Error(\n `Infisical secret '${placeholder.path}:${placeholder.key}' is missing an environment. ` +\n \"Set it on the placeholder, pass SecretResolverOptions.infisical.environment, or define INFISICAL_ENVIRONMENT.\"\n );\n }\n\n if (!projectId) {\n throw new Error(\n `Infisical secret '${placeholder.path}:${placeholder.key}' is missing a project id. ` +\n \"Set it on the placeholder, pass SecretResolverOptions.infisical.projectId, define INFISICAL_PROJECT_ID, \" +\n \"or provide /run/secrets/infisical_project_id (also /var/lib/uns/secrets/infisical_project_id).\"\n );\n }\n\n if (cached) {\n return cached ?? undefined;\n }\n\n const fetchPromise = fetcher({\n path: placeholder.path,\n key: placeholder.key,\n environment,\n projectId,\n type,\n }).then(secret => {\n if (secret === undefined || secret === null) {\n if (placeholder.default !== undefined) {\n return placeholder.default;\n }\n if (placeholder.optional) {\n return undefined;\n }\n options.onMissingSecret?.(placeholder, \"infisical\");\n throw new Error(\n `Secret '${placeholder.path}:${placeholder.key}' not found in Infisical.`\n );\n }\n return secret;\n }).catch(error => {\n if (cached) {\n console.warn(\n `Infisical fetch failed (${error instanceof Error ? error.message : String(error)}); using cached secret for ${placeholder.path}:${placeholder.key}.`\n );\n return cached;\n }\n\n const fallback =\n placeholder.default !== undefined\n ? placeholder.default\n : placeholder.optional\n ? undefined\n : undefined;\n\n console.warn(\n `Infisical fetch failed (${error instanceof Error ? error.message : String(error)}); returning ${fallback === undefined ? \"undefined\" : \"default\"} for ${placeholder.path}:${placeholder.key}.`\n );\n\n if (fallback === undefined && !placeholder.optional) {\n options.onMissingSecret?.(placeholder, \"infisical\");\n throw new Error(\n `Failed to fetch Infisical secret ${placeholder.path}:${placeholder.key}: ${\n error instanceof Error ? error.message : String(error)\n }`\n );\n }\n\n return fallback;\n });\n\n const guardedPromise = fetchPromise.then(\n value => value,\n error => {\n if (useCache) {\n infisicalCache.delete(cacheKey);\n }\n throw error;\n }\n );\n\n if (useCache) {\n infisicalCache.set(cacheKey, guardedPromise);\n }\n\n return guardedPromise;\n}\n\nasync function getInfisicalFetcher(\n options?: InfisicalResolverOptions\n): Promise<InfisicalFetcher | undefined> {\n const effectiveOptions = options ?? {};\n\n if (effectiveOptions.fetchSecret) {\n return effectiveOptions.fetchSecret;\n }\n\n const token = await resolveInfisicalToken(effectiveOptions);\n\n if (!token) {\n return undefined;\n }\n\n const siteUrl = await resolveInfisicalSiteUrl(effectiveOptions);\n const cacheKey = `${token}::${siteUrl ?? \"\"}`;\n\n if (!defaultInfisicalFetcherCache.has(cacheKey)) {\n defaultInfisicalFetcherCache.set(\n cacheKey,\n createDefaultInfisicalFetcher(token, siteUrl)\n );\n }\n\n const baseFetcher = await defaultInfisicalFetcherCache.get(cacheKey)!;\n return baseFetcher;\n}\n\nconst defaultInfisicalFetcherCache = new Map<string, Promise<InfisicalFetcher>>();\n\nasync function createDefaultInfisicalFetcher(\n token: string,\n siteUrl?: string\n): Promise<InfisicalFetcher> {\n try {\n const sdkModule = await import(\"@infisical/sdk\");\n const { InfisicalSDK, SecretType } = sdkModule;\n if (!InfisicalSDK) {\n throw new Error(\"@infisical/sdk does not export InfisicalSDK\");\n }\n\n const sdkInstance = new InfisicalSDK({ siteUrl: siteUrl ?? \"\" });\n const authenticatedSdk = sdkInstance.auth().accessToken(token);\n\n return async ({ path, key, environment, projectId, type = \"shared\" }: InfisicalFetchRequest) => {\n if (!environment) {\n throw new Error(\n `Infisical secret '${path}:${key}' is missing an environment.`\n );\n }\n if (!projectId) {\n throw new Error(\n `Infisical secret '${path}:${key}' is missing a project id.`\n );\n }\n\n const secret = await authenticatedSdk\n .secrets()\n .getSecret({\n secretName: key,\n secretPath: path,\n environment,\n projectId,\n viewSecretValue: true,\n type: type === \"personal\" ? SecretType.Personal : SecretType.Shared,\n });\n\n return secret?.secretValue ?? undefined;\n };\n } catch (error) {\n throw new Error(\n \"Failed to initialize @infisical/sdk. Install the package or provide SecretResolverOptions.infisical.fetchSecret.\",\n { cause: error as Error }\n );\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uns-kit/core",
3
- "version": "0.0.39",
3
+ "version": "0.0.41",
4
4
  "description": "Core utilities and runtime building blocks for UNS-based realtime transformers.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -1 +0,0 @@
1
- {"version":3,"file":"app-config.d.ts","sourceRoot":"","sources":["../src/app-config.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"app-config.js","sourceRoot":"","sources":["../src/app-config.ts"],"names":[],"mappings":"","sourcesContent":["/* Auto-generated. Do not edit by hand. */\nexport type AppConfig = {\n uns: {\n graphql: string;\n rest: string;\n instanceMode?: \"wait\" | \"force\" | \"handover\";\n processName?: string | undefined;\n handover?: boolean;\n jwksWellKnownUrl?: string | undefined;\n kidWellKnownUrl?: string | undefined;\n env?: \"dev\" | \"staging\" | \"test\" | \"prod\";\n };\n input?: {\n host: string | ({\n /** Use the supplied host or IP address. */\n provider: \"inline\";\n /** Host or IP address that should be used directly. */\n value: string;\n } | {\n /** Resolve the host from an external mapping. */\n provider: \"external\";\n /** Identifier used when resolving the host from HostResolverOptions. */\n key: string;\n /** Allow the external host to be missing without throwing during resolution. */\n optional?: boolean | undefined;\n /** Fallback host when optional is true and the external entry is missing. */\n default?: string | undefined;\n } | {\n /** Resolve the host from local network interfaces. */\n provider: \"system\";\n /** Address family to return when scanning interfaces. */\n family?: \"IPv4\" | \"IPv6\";\n /** Specific interface to read (falls back to the first match when omitted). */\n interfaceName?: string | undefined;\n /** Allow the interface lookup to fail without throwing during resolution. */\n optional?: boolean | undefined;\n /** Fallback host/IP when optional is true and no interface matches. */\n default?: string | undefined;\n });\n username?: string | undefined;\n password?: (string | ({\n /** Load the secret from an environment variable. */\n provider: \"env\";\n /** Name of the environment variable to read. */\n key: string;\n /** Allow the variable to be absent without throwing during resolution. */\n optional?: boolean | undefined;\n /** Fallback value when optional is true and the variable is missing. */\n default?: string | undefined;\n } | {\n /** Load the secret from Infisical. */\n provider: \"infisical\";\n /** Secret folder path in Infisical, e.g. '/app/database'. */\n path: string;\n /** Secret key/name inside the given path. */\n key: string;\n /** Allow the secret to be absent without throwing during resolution. */\n optional?: boolean | undefined;\n /** Infisical environment override (defaults to current mode if omitted). */\n environment?: string | undefined;\n /** Optional Infisical project identifier when not using the default. */\n projectId?: string | undefined;\n /** Fallback value when the secret is missing and optional resolution is allowed. */\n default?: string | undefined;\n })) | undefined;\n clientId?: string | undefined;\n } | undefined;\n output?: {\n host: string | ({\n /** Use the supplied host or IP address. */\n provider: \"inline\";\n /** Host or IP address that should be used directly. */\n value: string;\n } | {\n /** Resolve the host from an external mapping. */\n provider: \"external\";\n /** Identifier used when resolving the host from HostResolverOptions. */\n key: string;\n /** Allow the external host to be missing without throwing during resolution. */\n optional?: boolean | undefined;\n /** Fallback host when optional is true and the external entry is missing. */\n default?: string | undefined;\n } | {\n /** Resolve the host from local network interfaces. */\n provider: \"system\";\n /** Address family to return when scanning interfaces. */\n family?: \"IPv4\" | \"IPv6\";\n /** Specific interface to read (falls back to the first match when omitted). */\n interfaceName?: string | undefined;\n /** Allow the interface lookup to fail without throwing during resolution. */\n optional?: boolean | undefined;\n /** Fallback host/IP when optional is true and no interface matches. */\n default?: string | undefined;\n });\n username?: string | undefined;\n password?: (string | ({\n /** Load the secret from an environment variable. */\n provider: \"env\";\n /** Name of the environment variable to read. */\n key: string;\n /** Allow the variable to be absent without throwing during resolution. */\n optional?: boolean | undefined;\n /** Fallback value when optional is true and the variable is missing. */\n default?: string | undefined;\n } | {\n /** Load the secret from Infisical. */\n provider: \"infisical\";\n /** Secret folder path in Infisical, e.g. '/app/database'. */\n path: string;\n /** Secret key/name inside the given path. */\n key: string;\n /** Allow the secret to be absent without throwing during resolution. */\n optional?: boolean | undefined;\n /** Infisical environment override (defaults to current mode if omitted). */\n environment?: string | undefined;\n /** Optional Infisical project identifier when not using the default. */\n projectId?: string | undefined;\n /** Fallback value when the secret is missing and optional resolution is allowed. */\n default?: string | undefined;\n })) | undefined;\n clientId?: string | undefined;\n } | undefined;\n infra: {\n host: string | ({\n /** Use the supplied host or IP address. */\n provider: \"inline\";\n /** Host or IP address that should be used directly. */\n value: string;\n } | {\n /** Resolve the host from an external mapping. */\n provider: \"external\";\n /** Identifier used when resolving the host from HostResolverOptions. */\n key: string;\n /** Allow the external host to be missing without throwing during resolution. */\n optional?: boolean | undefined;\n /** Fallback host when optional is true and the external entry is missing. */\n default?: string | undefined;\n } | {\n /** Resolve the host from local network interfaces. */\n provider: \"system\";\n /** Address family to return when scanning interfaces. */\n family?: \"IPv4\" | \"IPv6\";\n /** Specific interface to read (falls back to the first match when omitted). */\n interfaceName?: string | undefined;\n /** Allow the interface lookup to fail without throwing during resolution. */\n optional?: boolean | undefined;\n /** Fallback host/IP when optional is true and no interface matches. */\n default?: string | undefined;\n });\n username?: string | undefined;\n password?: (string | ({\n /** Load the secret from an environment variable. */\n provider: \"env\";\n /** Name of the environment variable to read. */\n key: string;\n /** Allow the variable to be absent without throwing during resolution. */\n optional?: boolean | undefined;\n /** Fallback value when optional is true and the variable is missing. */\n default?: string | undefined;\n } | {\n /** Load the secret from Infisical. */\n provider: \"infisical\";\n /** Secret folder path in Infisical, e.g. '/app/database'. */\n path: string;\n /** Secret key/name inside the given path. */\n key: string;\n /** Allow the secret to be absent without throwing during resolution. */\n optional?: boolean | undefined;\n /** Infisical environment override (defaults to current mode if omitted). */\n environment?: string | undefined;\n /** Optional Infisical project identifier when not using the default. */\n projectId?: string | undefined;\n /** Fallback value when the secret is missing and optional resolution is allowed. */\n default?: string | undefined;\n })) | undefined;\n clientId?: string | undefined;\n };\n devops?: {\n provider?: string | undefined;\n organization: string;\n project?: string | undefined;\n } | undefined;\n}\n"]}