@hubble-ventures/infisicml 1.2.1
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/CHANGELOG.md +103 -0
- package/LICENSE +21 -0
- package/README.md +316 -0
- package/dist/aliases.d.ts +20 -0
- package/dist/aliases.d.ts.map +1 -0
- package/dist/aliases.js +35 -0
- package/dist/aliases.js.map +1 -0
- package/dist/ci-skip.d.ts +27 -0
- package/dist/ci-skip.d.ts.map +1 -0
- package/dist/ci-skip.js +82 -0
- package/dist/ci-skip.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +150 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/export-gha.d.ts +11 -0
- package/dist/commands/export-gha.d.ts.map +1 -0
- package/dist/commands/export-gha.js +79 -0
- package/dist/commands/export-gha.js.map +1 -0
- package/dist/commands/list.d.ts +2 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +35 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/paths.d.ts +8 -0
- package/dist/commands/paths.d.ts.map +1 -0
- package/dist/commands/paths.js +30 -0
- package/dist/commands/paths.js.map +1 -0
- package/dist/commands/pull.d.ts +11 -0
- package/dist/commands/pull.d.ts.map +1 -0
- package/dist/commands/pull.js +65 -0
- package/dist/commands/pull.js.map +1 -0
- package/dist/commands/run.d.ts +9 -0
- package/dist/commands/run.d.ts.map +1 -0
- package/dist/commands/run.js +30 -0
- package/dist/commands/run.js.map +1 -0
- package/dist/commands/validate.d.ts +2 -0
- package/dist/commands/validate.d.ts.map +1 -0
- package/dist/commands/validate.js +33 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/config.d.ts +58 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +68 -0
- package/dist/config.js.map +1 -0
- package/dist/dotenv.d.ts +6 -0
- package/dist/dotenv.d.ts.map +1 -0
- package/dist/dotenv.js +31 -0
- package/dist/dotenv.js.map +1 -0
- package/dist/env-slug.d.ts +3 -0
- package/dist/env-slug.d.ts.map +1 -0
- package/dist/env-slug.js +7 -0
- package/dist/env-slug.js.map +1 -0
- package/dist/github-env.d.ts +10 -0
- package/dist/github-env.d.ts.map +1 -0
- package/dist/github-env.js +37 -0
- package/dist/github-env.js.map +1 -0
- package/dist/hooks.d.ts +17 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +19 -0
- package/dist/hooks.js.map +1 -0
- package/dist/include.d.ts +46 -0
- package/dist/include.d.ts.map +1 -0
- package/dist/include.js +82 -0
- package/dist/include.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/manifest.d.ts +105 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +153 -0
- package/dist/manifest.js.map +1 -0
- package/dist/optional-keys.d.ts +4 -0
- package/dist/optional-keys.d.ts.map +1 -0
- package/dist/optional-keys.js +11 -0
- package/dist/optional-keys.js.map +1 -0
- package/dist/providers/local.d.ts +38 -0
- package/dist/providers/local.d.ts.map +1 -0
- package/dist/providers/local.js +76 -0
- package/dist/providers/local.js.map +1 -0
- package/dist/providers/remote.d.ts +52 -0
- package/dist/providers/remote.d.ts.map +1 -0
- package/dist/providers/remote.js +166 -0
- package/dist/providers/remote.js.map +1 -0
- package/dist/providers/types.d.ts +14 -0
- package/dist/providers/types.d.ts.map +1 -0
- package/dist/providers/types.js +2 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/pull.d.ts +15 -0
- package/dist/pull.d.ts.map +1 -0
- package/dist/pull.js +67 -0
- package/dist/pull.js.map +1 -0
- package/dist/registry.d.ts +14 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +35 -0
- package/dist/registry.js.map +1 -0
- package/package.json +66 -0
- package/schema/secrets.schema.json +105 -0
package/dist/cli.js
ADDED
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { parseArgs } from "node:util";
|
|
3
|
+
import { runExportGha } from "./commands/export-gha.js";
|
|
4
|
+
import { runList } from "./commands/list.js";
|
|
5
|
+
import { runPaths } from "./commands/paths.js";
|
|
6
|
+
import { runPull } from "./commands/pull.js";
|
|
7
|
+
import { runExec } from "./commands/run.js";
|
|
8
|
+
import { runValidate } from "./commands/validate.js";
|
|
9
|
+
const USAGE = `infisicml — Infisical Secret Orchestration for monorepos
|
|
10
|
+
|
|
11
|
+
Usage:
|
|
12
|
+
infisicml pull [ids...] [--env ENV] [--profile NAME] [--force] [--here] [--turbo]
|
|
13
|
+
infisicml export-gha <id> [--env ENV] [--profile NAME]
|
|
14
|
+
infisicml list
|
|
15
|
+
infisicml validate
|
|
16
|
+
infisicml paths <id> [--profile NAME] [--comma]
|
|
17
|
+
infisicml run <id> [--profile NAME] [--env ENV] -- <command...>
|
|
18
|
+
|
|
19
|
+
Config: infisicml.config.{ts,json} at the repo root. See https://github.com/hubble-ventures/infisicml
|
|
20
|
+
`;
|
|
21
|
+
async function main() {
|
|
22
|
+
const argv = process.argv.slice(2);
|
|
23
|
+
if (argv.length === 0 || argv[0] === "--help" || argv[0] === "-h") {
|
|
24
|
+
console.log(USAGE);
|
|
25
|
+
process.exit(0);
|
|
26
|
+
}
|
|
27
|
+
const subcommand = argv[0];
|
|
28
|
+
const rest = argv.slice(1);
|
|
29
|
+
try {
|
|
30
|
+
switch (subcommand) {
|
|
31
|
+
case "pull":
|
|
32
|
+
await handlePull(rest);
|
|
33
|
+
break;
|
|
34
|
+
case "export-gha":
|
|
35
|
+
await handleExportGha(rest);
|
|
36
|
+
break;
|
|
37
|
+
case "list":
|
|
38
|
+
await runList();
|
|
39
|
+
break;
|
|
40
|
+
case "validate":
|
|
41
|
+
await runValidate();
|
|
42
|
+
break;
|
|
43
|
+
case "paths":
|
|
44
|
+
await handlePaths(rest);
|
|
45
|
+
break;
|
|
46
|
+
case "run":
|
|
47
|
+
await handleRun(rest);
|
|
48
|
+
break;
|
|
49
|
+
default:
|
|
50
|
+
console.error(`Unknown subcommand: ${subcommand}\n`);
|
|
51
|
+
console.log(USAGE);
|
|
52
|
+
process.exit(1);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
console.error(err instanceof Error ? err.message : String(err));
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
async function handlePull(args) {
|
|
61
|
+
const { values, positionals } = parseArgs({
|
|
62
|
+
args,
|
|
63
|
+
allowPositionals: true,
|
|
64
|
+
options: {
|
|
65
|
+
env: { type: "string", default: "development" },
|
|
66
|
+
profile: { type: "string" },
|
|
67
|
+
force: { type: "boolean", short: "f", default: false },
|
|
68
|
+
here: { type: "boolean", default: false },
|
|
69
|
+
turbo: { type: "boolean", default: false },
|
|
70
|
+
},
|
|
71
|
+
});
|
|
72
|
+
await runPull({
|
|
73
|
+
ids: positionals,
|
|
74
|
+
env: values.env ?? "development",
|
|
75
|
+
profile: values.profile,
|
|
76
|
+
force: values.force ?? false,
|
|
77
|
+
here: values.here ?? false,
|
|
78
|
+
turbo: values.turbo ?? false,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
async function handleExportGha(args) {
|
|
82
|
+
const { values, positionals } = parseArgs({
|
|
83
|
+
args,
|
|
84
|
+
allowPositionals: true,
|
|
85
|
+
options: {
|
|
86
|
+
env: { type: "string", default: "production" },
|
|
87
|
+
profile: { type: "string" },
|
|
88
|
+
},
|
|
89
|
+
});
|
|
90
|
+
const packageId = positionals[0];
|
|
91
|
+
if (!packageId) {
|
|
92
|
+
throw new Error("export-gha requires a package id");
|
|
93
|
+
}
|
|
94
|
+
await runExportGha({
|
|
95
|
+
packageId,
|
|
96
|
+
env: values.env ?? "production",
|
|
97
|
+
profile: values.profile,
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
async function handlePaths(args) {
|
|
101
|
+
const { values, positionals } = parseArgs({
|
|
102
|
+
args,
|
|
103
|
+
allowPositionals: true,
|
|
104
|
+
options: {
|
|
105
|
+
profile: { type: "string" },
|
|
106
|
+
comma: { type: "boolean", default: false },
|
|
107
|
+
},
|
|
108
|
+
});
|
|
109
|
+
const packageId = positionals[0];
|
|
110
|
+
if (!packageId) {
|
|
111
|
+
throw new Error("paths requires a package id");
|
|
112
|
+
}
|
|
113
|
+
await runPaths({
|
|
114
|
+
packageId,
|
|
115
|
+
profile: values.profile,
|
|
116
|
+
comma: values.comma ?? false,
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
async function handleRun(args) {
|
|
120
|
+
const sep = args.indexOf("--");
|
|
121
|
+
if (sep === -1) {
|
|
122
|
+
throw new Error("run requires -- before command");
|
|
123
|
+
}
|
|
124
|
+
const before = args.slice(0, sep);
|
|
125
|
+
const command = args.slice(sep + 1);
|
|
126
|
+
if (command.length === 0) {
|
|
127
|
+
throw new Error("run requires a command after --");
|
|
128
|
+
}
|
|
129
|
+
const { values, positionals } = parseArgs({
|
|
130
|
+
args: before,
|
|
131
|
+
allowPositionals: true,
|
|
132
|
+
options: {
|
|
133
|
+
env: { type: "string", default: "development" },
|
|
134
|
+
profile: { type: "string" },
|
|
135
|
+
},
|
|
136
|
+
});
|
|
137
|
+
const packageId = positionals[0];
|
|
138
|
+
if (!packageId) {
|
|
139
|
+
throw new Error("run requires a package id");
|
|
140
|
+
}
|
|
141
|
+
const code = await runExec({
|
|
142
|
+
packageId,
|
|
143
|
+
profile: values.profile,
|
|
144
|
+
env: values.env ?? "development",
|
|
145
|
+
command,
|
|
146
|
+
});
|
|
147
|
+
process.exit(code);
|
|
148
|
+
}
|
|
149
|
+
main();
|
|
150
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type ExportGhaOptions = {
|
|
2
|
+
packageId: string;
|
|
3
|
+
env: string;
|
|
4
|
+
profile?: string;
|
|
5
|
+
cwd?: string;
|
|
6
|
+
githubEnvPath?: string;
|
|
7
|
+
projectSlug?: string;
|
|
8
|
+
identityId?: string;
|
|
9
|
+
};
|
|
10
|
+
export declare function runExportGha(options: ExportGhaOptions): Promise<void>;
|
|
11
|
+
//# sourceMappingURL=export-gha.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export-gha.d.ts","sourceRoot":"","sources":["../../src/commands/export-gha.ts"],"names":[],"mappings":"AAmBA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,wBAAsB,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoG3E"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { applyAliases } from "../aliases.js";
|
|
2
|
+
import { fetchManifestSecrets } from "../ci-skip.js";
|
|
3
|
+
import { loadConfig } from "../config.js";
|
|
4
|
+
import { normalizeEnvSlug } from "../env-slug.js";
|
|
5
|
+
import { appendSecretsToGithubEnv } from "../github-env.js";
|
|
6
|
+
import { runAdvertiseKeysHooks } from "../hooks.js";
|
|
7
|
+
import { selectEmittedSecrets } from "../include.js";
|
|
8
|
+
import { normalizeFolderPath, resolveInclude, resolvePaths, } from "../manifest.js";
|
|
9
|
+
import { logMissingOptionalKeys, resolveOptionalKeys, } from "../optional-keys.js";
|
|
10
|
+
import { RemoteProvider } from "../providers/remote.js";
|
|
11
|
+
import { discoverManifests } from "../registry.js";
|
|
12
|
+
export async function runExportGha(options) {
|
|
13
|
+
const config = await loadConfig(options.cwd);
|
|
14
|
+
const envName = normalizeEnvSlug(process.env.INFISICAL_ENV_SLUG ?? options.env);
|
|
15
|
+
const githubEnvPath = options.githubEnvPath ?? process.env.GITHUB_ENV ?? "";
|
|
16
|
+
if (!githubEnvPath) {
|
|
17
|
+
throw new Error("GITHUB_ENV is not set");
|
|
18
|
+
}
|
|
19
|
+
const projectSlug = options.projectSlug ?? process.env.INFISICAL_PROJECT_SLUG;
|
|
20
|
+
if (!projectSlug) {
|
|
21
|
+
throw new Error("INFISICAL_PROJECT_SLUG required");
|
|
22
|
+
}
|
|
23
|
+
const manifests = discoverManifests(config);
|
|
24
|
+
const manifest = manifests.find((m) => m.id === options.packageId);
|
|
25
|
+
if (!manifest) {
|
|
26
|
+
throw new Error(`Unknown package id: ${options.packageId}`);
|
|
27
|
+
}
|
|
28
|
+
// Base `paths` are the app's runtime secrets; a profile (e.g. `deploy`) may
|
|
29
|
+
// replace them with a superset that also carries deploy-time credentials.
|
|
30
|
+
// Split the two so we advertise only runtime keys for deploy forwarding.
|
|
31
|
+
const allPaths = resolvePaths(manifest.config, options.profile);
|
|
32
|
+
const basePaths = manifest.config.paths;
|
|
33
|
+
const runtimePaths = basePaths.filter((p) => allPaths.includes(p));
|
|
34
|
+
const deployOnlyPaths = allPaths.filter((p) => !runtimePaths.includes(p));
|
|
35
|
+
const identityId = options.identityId ?? process.env.INFISICAL_IDENTITY_ID;
|
|
36
|
+
if (!identityId) {
|
|
37
|
+
throw new Error("INFISICAL_IDENTITY_ID required — infisicml CI auth is GitHub OIDC only (no client-id/secret fallback). Set `permissions: id-token: write` on the job.");
|
|
38
|
+
}
|
|
39
|
+
const provider = new RemoteProvider({
|
|
40
|
+
domain: config.infisicalDomain,
|
|
41
|
+
projectSlug,
|
|
42
|
+
identityId,
|
|
43
|
+
oidcAudience: process.env.INFISICAL_OIDC_AUDIENCE ?? config.auth?.oidcAudience,
|
|
44
|
+
});
|
|
45
|
+
for (const folder of allPaths) {
|
|
46
|
+
console.log(`Loading Infisical path ${normalizeFolderPath(folder)} (${envName})`);
|
|
47
|
+
}
|
|
48
|
+
// Two calls (runtime then deploy-only), reusing the cached access token, so we
|
|
49
|
+
// know which keys are runtime without per-folder provenance through the merge.
|
|
50
|
+
const runtimeSecrets = await fetchManifestSecrets(provider, envName, runtimePaths, manifest.config, options.profile);
|
|
51
|
+
const deployOnlySecrets = deployOnlyPaths.length
|
|
52
|
+
? await fetchManifestSecrets(provider, envName, deployOnlyPaths, manifest.config, options.profile)
|
|
53
|
+
: {};
|
|
54
|
+
const optionalKeys = resolveOptionalKeys(manifest.config, envName);
|
|
55
|
+
const aliased = applyAliases({ ...runtimeSecrets, ...deployOnlySecrets }, manifest.config);
|
|
56
|
+
// Default-deny key selection: emit only the allowlisted keys when `include`
|
|
57
|
+
// is set. Absent = emit all.
|
|
58
|
+
const include = resolveInclude(manifest.config, options.profile);
|
|
59
|
+
// Notice missing optional keys against the pre-include set — a key present in
|
|
60
|
+
// the folders but filtered out by `include` isn't "missing". Skip keys the
|
|
61
|
+
// allowlist governs: those get a single notice from selectEmittedSecrets'
|
|
62
|
+
// unknown-key check, so we don't emit two notices for the same absent key.
|
|
63
|
+
const includeSet = new Set(include ?? []);
|
|
64
|
+
logMissingOptionalKeys(aliased, optionalKeys.filter((k) => !includeSet.has(k)));
|
|
65
|
+
const merged = selectEmittedSecrets(aliased, include, optionalKeys);
|
|
66
|
+
appendSecretsToGithubEnv(githubEnvPath, merged);
|
|
67
|
+
// Advertise CANONICAL (pre-alias) key names. Alias targets (e.g.
|
|
68
|
+
// NEXT_PUBLIC_*) are build-tool copies, not the names a server runtime reads,
|
|
69
|
+
// so they are intentionally not advertised — they still land in the job env
|
|
70
|
+
// via `merged` for build steps that need them. Drop any key `include`
|
|
71
|
+
// filtered out (a no-op when `include` is absent, since every fetched key is
|
|
72
|
+
// then in `merged`) so we never advertise a name not in the job env.
|
|
73
|
+
const emitted = (keys) => keys.filter((k) => merged[k] !== undefined);
|
|
74
|
+
runAdvertiseKeysHooks(githubEnvPath, config.hooks?.advertiseKeys, {
|
|
75
|
+
runtimeKeys: emitted(Object.keys(runtimeSecrets)),
|
|
76
|
+
allKeys: emitted(Object.keys({ ...runtimeSecrets, ...deployOnlySecrets })),
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=export-gha.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export-gha.js","sourceRoot":"","sources":["../../src/commands/export-gha.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAIA,wBAAsB,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BzD"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { loadConfig } from "../config.js";
|
|
2
|
+
import { normalizeFolderPath } from "../manifest.js";
|
|
3
|
+
import { discoverManifests } from "../registry.js";
|
|
4
|
+
export async function runList(cwd) {
|
|
5
|
+
const config = await loadConfig(cwd);
|
|
6
|
+
const manifests = discoverManifests(config);
|
|
7
|
+
for (const { id, config: m } of manifests) {
|
|
8
|
+
const paths = m.paths.map((p) => normalizeFolderPath(p)).join(", ");
|
|
9
|
+
console.log(` ${id}: ${paths}`);
|
|
10
|
+
if (m.include) {
|
|
11
|
+
console.log(` include: ${m.include.join(", ")}`);
|
|
12
|
+
}
|
|
13
|
+
if (m.fetch) {
|
|
14
|
+
console.log(` fetch: ${m.fetch}`);
|
|
15
|
+
}
|
|
16
|
+
if (m.profiles) {
|
|
17
|
+
for (const [name, profile] of Object.entries(m.profiles)) {
|
|
18
|
+
const profilePaths = profile.paths
|
|
19
|
+
.map((p) => normalizeFolderPath(p))
|
|
20
|
+
.join(", ");
|
|
21
|
+
console.log(` [${name}]: ${profilePaths}`);
|
|
22
|
+
// A profile include/fetch replaces the root value; show whichever applies.
|
|
23
|
+
const effectiveInclude = profile.include ?? m.include;
|
|
24
|
+
if (effectiveInclude) {
|
|
25
|
+
console.log(` include: ${effectiveInclude.join(", ")}`);
|
|
26
|
+
}
|
|
27
|
+
const effectiveFetch = profile.fetch ?? m.fetch;
|
|
28
|
+
if (effectiveFetch) {
|
|
29
|
+
console.log(` fetch: ${effectiveFetch}`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,GAAY;IACxC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAE5C,KAAK,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,SAAS,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,EAAE,CAAC,CAAC;QACjC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;YACf,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACzD,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK;qBAC/B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;qBAClC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,MAAM,YAAY,EAAE,CAAC,CAAC;gBAC9C,2EAA2E;gBAC3E,MAAM,gBAAgB,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC;gBACtD,IAAI,gBAAgB,EAAE,CAAC;oBACrB,OAAO,CAAC,GAAG,CAAC,kBAAkB,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC/D,CAAC;gBACD,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC;gBAChD,IAAI,cAAc,EAAE,CAAC;oBACnB,OAAO,CAAC,GAAG,CAAC,gBAAgB,cAAc,EAAE,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/commands/paths.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,YAAY,GAAG;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,wBAAsB,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BnE"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { loadConfig } from "../config.js";
|
|
2
|
+
import { normalizeFolderPath, resolveFetchMode, resolveInclude, resolvePaths, } from "../manifest.js";
|
|
3
|
+
import { discoverManifests } from "../registry.js";
|
|
4
|
+
export async function runPaths(options) {
|
|
5
|
+
const config = await loadConfig(options.cwd);
|
|
6
|
+
const manifests = discoverManifests(config);
|
|
7
|
+
const manifest = manifests.find((m) => m.id === options.packageId);
|
|
8
|
+
if (!manifest) {
|
|
9
|
+
throw new Error(`Unknown package id: ${options.packageId}`);
|
|
10
|
+
}
|
|
11
|
+
const paths = resolvePaths(manifest.config, options.profile);
|
|
12
|
+
const normalized = paths.map((p) => normalizeFolderPath(p));
|
|
13
|
+
// `paths` feeds the infisical CLI, which fetches whole folders — key-level
|
|
14
|
+
// `include` filtering happens later, in pull/export-gha. Warn on stderr so the
|
|
15
|
+
// filtering isn't invisible to someone reading only this folder list.
|
|
16
|
+
const include = resolveInclude(manifest.config, options.profile);
|
|
17
|
+
if (include) {
|
|
18
|
+
console.error(`# note: ${options.packageId} filters emitted keys to: ${include.join(", ")}`);
|
|
19
|
+
}
|
|
20
|
+
if (resolveFetchMode(manifest.config, options.profile) === "keys") {
|
|
21
|
+
console.error(`# note: ${options.packageId} uses fetch: "keys" — only the include keys are emitted; in CI they are read per-key from the vault (wire-level least privilege).`);
|
|
22
|
+
}
|
|
23
|
+
if (options.comma) {
|
|
24
|
+
console.log(normalized.map((p) => p.replace(/^\//, "")).join(","));
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
console.log(normalized.map((p) => `--path=${p}`).join(" "));
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/commands/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,YAAY,GACb,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AASnD,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAqB;IAClD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IACnE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,uBAAuB,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5D,2EAA2E;IAC3E,+EAA+E;IAC/E,sEAAsE;IACtE,MAAM,OAAO,GAAG,cAAc,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACjE,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CACX,WAAW,OAAO,CAAC,SAAS,6BAA6B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC9E,CAAC;IACJ,CAAC;IACD,IAAI,gBAAgB,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC;QAClE,OAAO,CAAC,KAAK,CACX,WAAW,OAAO,CAAC,SAAS,mIAAmI,CAChK,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrE,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type PullOptions = {
|
|
2
|
+
ids: string[];
|
|
3
|
+
env: string;
|
|
4
|
+
profile?: string;
|
|
5
|
+
force: boolean;
|
|
6
|
+
here: boolean;
|
|
7
|
+
turbo: boolean;
|
|
8
|
+
cwd?: string;
|
|
9
|
+
};
|
|
10
|
+
export declare function runPull(options: PullOptions): Promise<void>;
|
|
11
|
+
//# sourceMappingURL=pull.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,WAAW,GAAG;IACxB,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,wBAAsB,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAyEjE"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { resolve } from "node:path";
|
|
2
|
+
import { loadConfig } from "../config.js";
|
|
3
|
+
import { shouldSkipInfisicalPull } from "../ci-skip.js";
|
|
4
|
+
import { commandExists, LocalProvider } from "../providers/local.js";
|
|
5
|
+
import { pullManifest } from "../pull.js";
|
|
6
|
+
import { discoverManifests } from "../registry.js";
|
|
7
|
+
export async function runPull(options) {
|
|
8
|
+
const config = await loadConfig(options.cwd);
|
|
9
|
+
const repoRoot = config.repoRoot;
|
|
10
|
+
const envName = process.env.INFISICAL_ENV ?? options.env;
|
|
11
|
+
if (!config.projectId) {
|
|
12
|
+
throw new Error("INFISICAL_PROJECT_ID not resolved — set config.projectId, projectIdEnvFile, or the INFISICAL_PROJECT_ID env var");
|
|
13
|
+
}
|
|
14
|
+
let manifests = discoverManifests(config);
|
|
15
|
+
if (options.here) {
|
|
16
|
+
const cwd = process.cwd();
|
|
17
|
+
const match = manifests.find((m) => resolve(m.dir) === resolve(cwd));
|
|
18
|
+
if (!match) {
|
|
19
|
+
throw new Error(`No secrets.json in ${cwd}`);
|
|
20
|
+
}
|
|
21
|
+
manifests = [match];
|
|
22
|
+
}
|
|
23
|
+
else if (options.ids.length > 0) {
|
|
24
|
+
const allowed = new Set(options.ids);
|
|
25
|
+
manifests = manifests.filter((m) => allowed.has(m.id));
|
|
26
|
+
const missing = options.ids.filter((id) => !manifests.some((m) => m.id === id));
|
|
27
|
+
if (missing.length > 0) {
|
|
28
|
+
throw new Error(`Unknown package id(s): ${missing.join(", ")}`);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
if (manifests.length === 0) {
|
|
32
|
+
console.log("No secrets.json manifests found.");
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
// The infisical CLI is only needed for manifests that will actually pull.
|
|
36
|
+
// Mirror pullManifest's own skip decision exactly so CI stubs never demand a
|
|
37
|
+
// tool they don't use.
|
|
38
|
+
const needsInfisical = manifests.some((m) => !shouldSkipInfisicalPull(m.config, options.force));
|
|
39
|
+
if (needsInfisical && !commandExists("infisical")) {
|
|
40
|
+
throw new Error("infisical CLI not found — install and run: infisical login");
|
|
41
|
+
}
|
|
42
|
+
const provider = new LocalProvider({
|
|
43
|
+
projectId: config.projectId,
|
|
44
|
+
cwd: repoRoot,
|
|
45
|
+
});
|
|
46
|
+
let pulled = 0;
|
|
47
|
+
let skipped = 0;
|
|
48
|
+
for (const manifest of manifests) {
|
|
49
|
+
const result = await pullManifest({
|
|
50
|
+
manifest,
|
|
51
|
+
repoRoot,
|
|
52
|
+
envName,
|
|
53
|
+
profile: options.profile,
|
|
54
|
+
force: options.force,
|
|
55
|
+
turboMode: options.turbo,
|
|
56
|
+
provider,
|
|
57
|
+
});
|
|
58
|
+
if (result === "pulled")
|
|
59
|
+
pulled += 1;
|
|
60
|
+
else
|
|
61
|
+
skipped += 1;
|
|
62
|
+
}
|
|
63
|
+
console.log(`\nDone: ${pulled} pulled, ${skipped} skipped (${manifests.length} package(s)).`);
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=pull.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,wBAAsB,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAgClE"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { spawnSync } from "node:child_process";
|
|
2
|
+
import { loadConfig } from "../config.js";
|
|
3
|
+
import { normalizeEnvSlug } from "../env-slug.js";
|
|
4
|
+
import { normalizeFolderPath, resolvePaths } from "../manifest.js";
|
|
5
|
+
import { discoverManifests } from "../registry.js";
|
|
6
|
+
export async function runExec(options) {
|
|
7
|
+
const config = await loadConfig(options.cwd);
|
|
8
|
+
const repoRoot = config.repoRoot;
|
|
9
|
+
const envName = normalizeEnvSlug(process.env.INFISICAL_ENV ?? options.env);
|
|
10
|
+
const manifests = discoverManifests(config);
|
|
11
|
+
const manifest = manifests.find((m) => m.id === options.packageId);
|
|
12
|
+
if (!manifest) {
|
|
13
|
+
throw new Error(`Unknown package id: ${options.packageId}`);
|
|
14
|
+
}
|
|
15
|
+
if (process.env.INFISICAL_DISABLE === "1") {
|
|
16
|
+
const result = spawnSync(options.command[0], options.command.slice(1), {
|
|
17
|
+
stdio: "inherit",
|
|
18
|
+
cwd: repoRoot,
|
|
19
|
+
});
|
|
20
|
+
return result.status ?? 1;
|
|
21
|
+
}
|
|
22
|
+
const paths = resolvePaths(manifest.config, options.profile);
|
|
23
|
+
const pathFlags = paths.flatMap((p) => ["--path", normalizeFolderPath(p)]);
|
|
24
|
+
const result = spawnSync("infisical", ["run", `--env=${envName}`, ...pathFlags, "--", ...options.command], { stdio: "inherit", cwd: repoRoot });
|
|
25
|
+
if (result.error) {
|
|
26
|
+
throw result.error;
|
|
27
|
+
}
|
|
28
|
+
return result.status ?? 1;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAUnD,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAmB;IAC/C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IACjC,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;IAE3E,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IACnE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,uBAAuB,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,GAAG,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;YACrE,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,QAAQ;SACd,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE3E,MAAM,MAAM,GAAG,SAAS,CACtB,WAAW,EACX,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,EACnE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,CACpC,CAAC;IAEF,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,MAAM,CAAC,KAAK,CAAC;IACrB,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAOA,wBAAsB,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA+B7D"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { loadConfig } from "../config.js";
|
|
2
|
+
import { checkFetchIncludeConsistency, secretsManifestSchema, } from "../manifest.js";
|
|
3
|
+
import { discoverManifests } from "../registry.js";
|
|
4
|
+
export async function runValidate(cwd) {
|
|
5
|
+
const config = await loadConfig(cwd);
|
|
6
|
+
const manifests = discoverManifests(config);
|
|
7
|
+
let errors = 0;
|
|
8
|
+
for (const { id, dir, config: m } of manifests) {
|
|
9
|
+
const result = secretsManifestSchema.safeParse(m);
|
|
10
|
+
if (!result.success) {
|
|
11
|
+
console.error(`❌ ${id} (${dir}/secrets.json):`);
|
|
12
|
+
for (const issue of result.error.issues) {
|
|
13
|
+
console.error(` ${issue.path.join(".")}: ${issue.message}`);
|
|
14
|
+
}
|
|
15
|
+
errors += 1;
|
|
16
|
+
continue;
|
|
17
|
+
}
|
|
18
|
+
// Cross-field checks the schema can't express (depend on resolved profile).
|
|
19
|
+
const semanticIssues = checkFetchIncludeConsistency(result.data);
|
|
20
|
+
if (semanticIssues.length > 0) {
|
|
21
|
+
console.error(`❌ ${id} (${dir}/secrets.json):`);
|
|
22
|
+
for (const issue of semanticIssues) {
|
|
23
|
+
console.error(` ${issue}`);
|
|
24
|
+
}
|
|
25
|
+
errors += 1;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
if (errors > 0) {
|
|
29
|
+
throw new Error(`validate failed: ${errors} invalid manifest(s)`);
|
|
30
|
+
}
|
|
31
|
+
console.log(`✅ ${manifests.length} manifest(s) valid`);
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EACL,4BAA4B,EAC5B,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAY;IAC5C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,KAAK,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,SAAS,EAAE,CAAC;QAC/C,MAAM,MAAM,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,iBAAiB,CAAC,CAAC;YAChD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBACxC,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAChE,CAAC;YACD,MAAM,IAAI,CAAC,CAAC;YACZ,SAAS;QACX,CAAC;QACD,4EAA4E;QAC5E,MAAM,cAAc,GAAG,4BAA4B,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjE,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,iBAAiB,CAAC,CAAC;YAChD,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;gBACnC,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;YAC/B,CAAC;YACD,MAAM,IAAI,CAAC,CAAC;QACd,CAAC;IACH,CAAC;IAED,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,oBAAoB,MAAM,sBAAsB,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,MAAM,oBAAoB,CAAC,CAAC;AACzD,CAAC"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How Infisicml discovers per-package `secrets.json` manifests. Discovery is
|
|
3
|
+
* driven entirely by config, so no repo layout is baked into the tool.
|
|
4
|
+
*/
|
|
5
|
+
export type DiscoveryConfig = {
|
|
6
|
+
/**
|
|
7
|
+
* Parent directories scanned one level deep. Any immediate child directory
|
|
8
|
+
* containing a `secrets.json` becomes a package whose id is the child dir
|
|
9
|
+
* name (e.g. `roots: ["nextjs-apps", "vite-apps"]`).
|
|
10
|
+
*/
|
|
11
|
+
roots?: string[];
|
|
12
|
+
/** Explicit packages with custom ids (e.g. `{ id: "postgres", dir: "infra/postgres" }`). */
|
|
13
|
+
packages?: {
|
|
14
|
+
id: string;
|
|
15
|
+
dir: string;
|
|
16
|
+
}[];
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Advertise a subset of a package's secret KEY NAMES (never values) to
|
|
20
|
+
* GITHUB_ENV as a plain, comma-separated var. A deploy step reads it and
|
|
21
|
+
* forwards exactly those keys (e.g. `flyctl secrets import`, `gcloud`,
|
|
22
|
+
* `wrangler secret`), so `secrets.json` stays the source of truth for what a
|
|
23
|
+
* deploy forwards — no hand-maintained allowlist in the workflow.
|
|
24
|
+
*/
|
|
25
|
+
export type AdvertiseKeysHook = {
|
|
26
|
+
/** Env var name to write the comma-separated key list to. */
|
|
27
|
+
envVar: string;
|
|
28
|
+
/**
|
|
29
|
+
* `runtime` (default): only keys from the manifest's base `paths` — the app's
|
|
30
|
+
* runtime secrets, excluding profile-only deploy credentials.
|
|
31
|
+
* `all`: every canonical key across the resolved (profile) paths.
|
|
32
|
+
*/
|
|
33
|
+
scope?: "runtime" | "all";
|
|
34
|
+
};
|
|
35
|
+
export type InfisicmlConfig = {
|
|
36
|
+
/** Infisical project id for the local CLI provider. */
|
|
37
|
+
projectId?: string;
|
|
38
|
+
/** dotenv file (relative to repo root) providing INFISICAL_PROJECT_ID. */
|
|
39
|
+
projectIdEnvFile?: string;
|
|
40
|
+
/** Infisical API domain (self-hosted). Defaults to https://app.infisical.com. */
|
|
41
|
+
infisicalDomain?: string;
|
|
42
|
+
discovery: DiscoveryConfig;
|
|
43
|
+
auth?: {
|
|
44
|
+
/** OIDC audience bound to the machine identity (CI). */
|
|
45
|
+
oidcAudience?: string;
|
|
46
|
+
};
|
|
47
|
+
hooks?: {
|
|
48
|
+
advertiseKeys?: AdvertiseKeysHook[];
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
export type ResolvedConfig = InfisicmlConfig & {
|
|
52
|
+
repoRoot: string;
|
|
53
|
+
projectId: string;
|
|
54
|
+
};
|
|
55
|
+
/** Identity helper for type-safe `infisicml.config.ts` files. */
|
|
56
|
+
export declare function defineConfig(config: InfisicmlConfig): InfisicmlConfig;
|
|
57
|
+
export declare function loadConfig(cwd?: string): Promise<ResolvedConfig>;
|
|
58
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,4FAA4F;IAC5F,QAAQ,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC1C,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iFAAiF;IACjF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,eAAe,CAAC;IAC3B,IAAI,CAAC,EAAE;QACL,wDAAwD;QACxD,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,KAAK,CAAC,EAAE;QACN,aAAa,CAAC,EAAE,iBAAiB,EAAE,CAAC;KACrC,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,eAAe,GAAG;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,iEAAiE;AACjE,wBAAgB,YAAY,CAAC,MAAM,EAAE,eAAe,GAAG,eAAe,CAErE;AAqDD,wBAAsB,UAAU,CAAC,GAAG,SAAgB,GAAG,OAAO,CAAC,cAAc,CAAC,CAY7E"}
|