@udondan/avanti 0.23.1 → 0.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +578 -65
- package/dist/commands/diff.d.ts.map +1 -1
- package/dist/commands/diff.js +82 -15
- package/dist/commands/diff.js.map +1 -1
- package/dist/commands/lock.d.ts.map +1 -1
- package/dist/commands/lock.js +3 -2
- package/dist/commands/lock.js.map +1 -1
- package/dist/commands/log.d.ts.map +1 -1
- package/dist/commands/log.js +7 -5
- package/dist/commands/log.js.map +1 -1
- package/dist/commands/pull.d.ts.map +1 -1
- package/dist/commands/pull.js +695 -32
- package/dist/commands/pull.js.map +1 -1
- package/dist/commands/reset.d.ts.map +1 -1
- package/dist/commands/reset.js +43 -11
- package/dist/commands/reset.js.map +1 -1
- package/dist/commands/revert.d.ts.map +1 -1
- package/dist/commands/revert.js +68 -14
- package/dist/commands/revert.js.map +1 -1
- package/dist/condition.d.ts.map +1 -1
- package/dist/condition.js +9 -6
- package/dist/condition.js.map +1 -1
- package/dist/config-writeback.d.ts.map +1 -1
- package/dist/config-writeback.js +33 -4
- package/dist/config-writeback.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +396 -10
- package/dist/config.js.map +1 -1
- package/dist/diff.d.ts +25 -1
- package/dist/diff.d.ts.map +1 -1
- package/dist/diff.js +410 -28
- package/dist/diff.js.map +1 -1
- package/dist/extract.d.ts +4 -0
- package/dist/extract.d.ts.map +1 -0
- package/dist/extract.js +142 -0
- package/dist/extract.js.map +1 -0
- package/dist/filter.d.ts +3 -0
- package/dist/filter.d.ts.map +1 -0
- package/dist/filter.js +126 -0
- package/dist/filter.js.map +1 -0
- package/dist/history.d.ts +7 -1
- package/dist/history.d.ts.map +1 -1
- package/dist/history.js +89 -9
- package/dist/history.js.map +1 -1
- package/dist/paths.d.ts +4 -0
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +97 -0
- package/dist/paths.js.map +1 -1
- package/dist/processors/ini.d.ts +33 -0
- package/dist/processors/ini.d.ts.map +1 -0
- package/dist/processors/ini.js +500 -0
- package/dist/processors/ini.js.map +1 -0
- package/dist/processors/insert.d.ts.map +1 -1
- package/dist/processors/insert.js +338 -15
- package/dist/processors/insert.js.map +1 -1
- package/dist/processors/on.d.ts +4 -0
- package/dist/processors/on.d.ts.map +1 -0
- package/dist/processors/on.js +54 -0
- package/dist/processors/on.js.map +1 -0
- package/dist/ref.d.ts +21 -0
- package/dist/ref.d.ts.map +1 -0
- package/dist/ref.js +65 -0
- package/dist/ref.js.map +1 -0
- package/dist/sources/bitbucket.d.ts.map +1 -1
- package/dist/sources/bitbucket.js +51 -12
- package/dist/sources/bitbucket.js.map +1 -1
- package/dist/sources/git.d.ts.map +1 -1
- package/dist/sources/git.js +54 -6
- package/dist/sources/git.js.map +1 -1
- package/dist/sources/github.d.ts +1 -0
- package/dist/sources/github.d.ts.map +1 -1
- package/dist/sources/github.js +287 -50
- package/dist/sources/github.js.map +1 -1
- package/dist/sources/gitlab.d.ts +1 -0
- package/dist/sources/gitlab.d.ts.map +1 -1
- package/dist/sources/gitlab.js +387 -28
- package/dist/sources/gitlab.js.map +1 -1
- package/dist/sources/index.d.ts +3 -1
- package/dist/sources/index.d.ts.map +1 -1
- package/dist/sources/index.js +206 -44
- package/dist/sources/index.js.map +1 -1
- package/dist/sources/local.d.ts +3 -0
- package/dist/sources/local.d.ts.map +1 -1
- package/dist/sources/local.js +44 -0
- package/dist/sources/local.js.map +1 -1
- package/dist/types.d.ts +71 -6
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/variables-remote.d.ts.map +1 -1
- package/dist/variables-remote.js +88 -7
- package/dist/variables-remote.js.map +1 -1
- package/dist/variables.d.ts +1 -0
- package/dist/variables.d.ts.map +1 -1
- package/dist/variables.js +133 -12
- package/dist/variables.js.map +1 -1
- package/dist/writer.d.ts +18 -0
- package/dist/writer.d.ts.map +1 -1
- package/dist/writer.js +968 -25
- package/dist/writer.js.map +1 -1
- package/package.json +12 -8
package/dist/sources/local.js
CHANGED
|
@@ -34,10 +34,16 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.fetchLocal = fetchLocal;
|
|
37
|
+
exports.isNonLocalSrcString = isNonLocalSrcString;
|
|
38
|
+
exports.resolveSymlinkSrcPath = resolveSymlinkSrcPath;
|
|
37
39
|
const fs = __importStar(require("fs"));
|
|
38
40
|
const os = __importStar(require("os"));
|
|
39
41
|
const path = __importStar(require("path"));
|
|
42
|
+
const fetch_1 = require("../fetch");
|
|
43
|
+
const git_1 = require("./git");
|
|
40
44
|
const logger_1 = require("../logger");
|
|
45
|
+
const paths_1 = require("../paths");
|
|
46
|
+
const variables_1 = require("../variables");
|
|
41
47
|
function fetchLocal(src, workingDir, optional = false) {
|
|
42
48
|
let resolved;
|
|
43
49
|
if (src.startsWith('~/')) {
|
|
@@ -78,4 +84,42 @@ function readDirRecursive(base, current, out) {
|
|
|
78
84
|
}
|
|
79
85
|
}
|
|
80
86
|
}
|
|
87
|
+
function isNonLocalSrcString(s) {
|
|
88
|
+
return (s.startsWith('http://') ||
|
|
89
|
+
s.startsWith('https://') ||
|
|
90
|
+
s.startsWith('file://') ||
|
|
91
|
+
s.startsWith('exec:') ||
|
|
92
|
+
(0, git_1.isGitRemoteUrl)(s) ||
|
|
93
|
+
s.startsWith('git+') ||
|
|
94
|
+
s.startsWith('ssh://') ||
|
|
95
|
+
s.startsWith('s3://') ||
|
|
96
|
+
s.startsWith('github:') ||
|
|
97
|
+
s.startsWith('gitlab:') ||
|
|
98
|
+
s.startsWith('bitbucket:') ||
|
|
99
|
+
s.startsWith('raw:') ||
|
|
100
|
+
s.startsWith('vault:') ||
|
|
101
|
+
s.startsWith('aws_secrets_manager:') ||
|
|
102
|
+
s.startsWith('aws_systems_manager_parameter:'));
|
|
103
|
+
}
|
|
104
|
+
function resolveSymlinkSrcPath(src, workingDir, vars, mode, linkPath) {
|
|
105
|
+
const expanded = (0, variables_1.resolveVars)(src, vars);
|
|
106
|
+
// Guard against a variable that resolves to a remote URL or exec: expression.
|
|
107
|
+
// Config-level validation (isLocalFileSrc) checks the raw src before variable
|
|
108
|
+
// substitution; a variable value could still expand to a remote spec.
|
|
109
|
+
if (isNonLocalSrcString(expanded)) {
|
|
110
|
+
throw new Error(`symlink src resolved to a non-local value "${(0, fetch_1.redactUrl)(expanded)}"; symlink src must be a local filesystem path`);
|
|
111
|
+
}
|
|
112
|
+
const tildeExpanded = (0, paths_1.expandTilde)(expanded);
|
|
113
|
+
const abs = path.isAbsolute(tildeExpanded)
|
|
114
|
+
? tildeExpanded
|
|
115
|
+
: path.resolve(workingDir, tildeExpanded);
|
|
116
|
+
if (mode === 'relative') {
|
|
117
|
+
const rel = path.relative(path.dirname(linkPath), abs);
|
|
118
|
+
// path.relative returns "" when both paths are identical (src is the
|
|
119
|
+
// symlink's parent directory). Normalize to "." so the symlink target is
|
|
120
|
+
// valid — a symlink with an empty target string is broken on all platforms.
|
|
121
|
+
return rel === '' ? '.' : rel;
|
|
122
|
+
}
|
|
123
|
+
return abs;
|
|
124
|
+
}
|
|
81
125
|
//# sourceMappingURL=local.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/sources/local.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/sources/local.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
|
-
export type
|
|
1
|
+
export type JsonValue = string | number | boolean | null | JsonValue[] | {
|
|
2
|
+
[key: string]: JsonValue;
|
|
3
|
+
};
|
|
4
|
+
export type VariableValue = Exclude<JsonValue, null>;
|
|
5
|
+
export type Variables = Record<string, VariableValue>;
|
|
2
6
|
export type Via = 'api' | 'cli';
|
|
3
|
-
export type OsPlatform = 'linux' | 'mac' | 'windows';
|
|
7
|
+
export type OsPlatform = 'linux' | 'mac' | 'windows' | 'darwin' | 'win32';
|
|
4
8
|
export interface Condition {
|
|
5
9
|
os?: OsPlatform | OsPlatform[];
|
|
6
10
|
exists?: string;
|
|
@@ -12,30 +16,62 @@ export interface ReplaceRule {
|
|
|
12
16
|
from: string;
|
|
13
17
|
to: string;
|
|
14
18
|
}
|
|
15
|
-
export interface
|
|
19
|
+
export interface GitLabFileSrc {
|
|
16
20
|
gitlab: {
|
|
17
21
|
project: string;
|
|
18
22
|
file: string;
|
|
23
|
+
/** Branch, tag, commit, `$latest` (newest semver tag), `$recent` (newest tag), or `/pattern/[flags]`. */
|
|
19
24
|
ref?: string;
|
|
20
25
|
sha?: string;
|
|
21
26
|
host?: string;
|
|
22
27
|
via?: Via | Via[];
|
|
23
28
|
};
|
|
29
|
+
filter?: string[];
|
|
24
30
|
if?: Condition | Condition[];
|
|
25
31
|
ifAny?: Condition[];
|
|
26
32
|
}
|
|
27
|
-
export interface
|
|
33
|
+
export interface GitLabReleaseSrc {
|
|
34
|
+
gitlab: {
|
|
35
|
+
project: string;
|
|
36
|
+
/** Tag name, `$latest` (newest semver release; falls back to semver tag scan if releases/latest is non-semver), `$recent` (newest by date), or `/pattern/[flags]`. */
|
|
37
|
+
release: string;
|
|
38
|
+
sha?: string;
|
|
39
|
+
host?: string;
|
|
40
|
+
via?: Via | Via[];
|
|
41
|
+
};
|
|
42
|
+
filter?: string[];
|
|
43
|
+
if?: Condition | Condition[];
|
|
44
|
+
ifAny?: Condition[];
|
|
45
|
+
}
|
|
46
|
+
export type GitLabSrc = GitLabFileSrc | GitLabReleaseSrc;
|
|
47
|
+
export interface GitHubFileSrc {
|
|
28
48
|
github: {
|
|
29
49
|
repo: string;
|
|
30
50
|
file: string;
|
|
51
|
+
/** Branch, tag, commit, `$latest` (newest semver tag), `$recent` (newest tag), or `/pattern/[flags]`. */
|
|
31
52
|
ref?: string;
|
|
32
53
|
sha?: string;
|
|
33
54
|
host?: string;
|
|
34
55
|
via?: Via | Via[];
|
|
35
56
|
};
|
|
57
|
+
filter?: string[];
|
|
58
|
+
if?: Condition | Condition[];
|
|
59
|
+
ifAny?: Condition[];
|
|
60
|
+
}
|
|
61
|
+
export interface GitHubReleaseSrc {
|
|
62
|
+
github: {
|
|
63
|
+
repo: string;
|
|
64
|
+
/** Tag name, `$latest` (newest stable semver tag), `$recent` (most recently created tag), or `/pattern/[flags]`. */
|
|
65
|
+
release: string;
|
|
66
|
+
sha?: string;
|
|
67
|
+
host?: string;
|
|
68
|
+
via?: Via | Via[];
|
|
69
|
+
};
|
|
70
|
+
filter?: string[];
|
|
36
71
|
if?: Condition | Condition[];
|
|
37
72
|
ifAny?: Condition[];
|
|
38
73
|
}
|
|
74
|
+
export type GitHubSrc = GitHubFileSrc | GitHubReleaseSrc;
|
|
39
75
|
export interface ExecSrc {
|
|
40
76
|
exec: string;
|
|
41
77
|
sha?: string;
|
|
@@ -52,10 +88,12 @@ export interface BitbucketSrc {
|
|
|
52
88
|
workspace: string;
|
|
53
89
|
repo: string;
|
|
54
90
|
file: string;
|
|
91
|
+
/** Branch, tag, `$latest` (newest semver tag), `$recent` (newest tag), or `/pattern/[flags]`. */
|
|
55
92
|
ref?: string;
|
|
56
93
|
sha?: string;
|
|
57
94
|
host?: string;
|
|
58
95
|
};
|
|
96
|
+
filter?: string[];
|
|
59
97
|
if?: Condition | Condition[];
|
|
60
98
|
ifAny?: Condition[];
|
|
61
99
|
}
|
|
@@ -63,14 +101,17 @@ export interface GitSrc {
|
|
|
63
101
|
git: {
|
|
64
102
|
repo: string;
|
|
65
103
|
file: string;
|
|
104
|
+
/** Branch, tag, commit, `$latest` (newest semver tag), `$recent` (first tag in `git ls-remote` output order — not date-ordered), or `/pattern/[flags]` (first match in `git ls-remote` output order). */
|
|
66
105
|
ref?: string;
|
|
67
106
|
sha?: string;
|
|
68
107
|
};
|
|
108
|
+
filter?: string[];
|
|
69
109
|
if?: Condition | Condition[];
|
|
70
110
|
ifAny?: Condition[];
|
|
71
111
|
}
|
|
72
112
|
export interface AwsS3Src {
|
|
73
113
|
aws_s3: string;
|
|
114
|
+
filter?: string[];
|
|
74
115
|
sha?: string;
|
|
75
116
|
if?: Condition | Condition[];
|
|
76
117
|
ifAny?: Condition[];
|
|
@@ -114,6 +155,7 @@ export interface HttpSrc {
|
|
|
114
155
|
export interface LocalSrc {
|
|
115
156
|
path: string;
|
|
116
157
|
optional?: boolean;
|
|
158
|
+
filter?: string[];
|
|
117
159
|
sha?: string;
|
|
118
160
|
if?: Condition | Condition[];
|
|
119
161
|
ifAny?: Condition[];
|
|
@@ -157,8 +199,24 @@ export interface TomlMergeOptions {
|
|
|
157
199
|
arrays?: TomlArrayStrategy;
|
|
158
200
|
objects?: TomlObjectStrategy;
|
|
159
201
|
}
|
|
202
|
+
export type IniConflictStrategy = 'abort' | 'first_wins' | 'last_wins';
|
|
203
|
+
export type IniArrayStrategy = 'replace' | 'concat' | 'dedupe';
|
|
204
|
+
export type IniObjectStrategy = 'replace' | 'merge';
|
|
205
|
+
export interface IniMergeOptions {
|
|
206
|
+
conflicts?: IniConflictStrategy;
|
|
207
|
+
arrays?: IniArrayStrategy;
|
|
208
|
+
objects?: IniObjectStrategy;
|
|
209
|
+
}
|
|
160
210
|
export type TemplateEngine = 'handlebars' | 'nunjucks' | 'jinja2' | 'liquidjs' | 'ejs' | 'mustache' | 'eta';
|
|
161
211
|
export declare const VALID_TEMPLATE_ENGINES: TemplateEngine[];
|
|
212
|
+
export interface OnHooks {
|
|
213
|
+
write?: string;
|
|
214
|
+
beforeWrite?: string;
|
|
215
|
+
beforeCreate?: string;
|
|
216
|
+
beforeUpdate?: string;
|
|
217
|
+
create?: string;
|
|
218
|
+
update?: string;
|
|
219
|
+
}
|
|
162
220
|
export interface FileEntry {
|
|
163
221
|
src: FileSrc | FileSrc[];
|
|
164
222
|
target: string;
|
|
@@ -167,21 +225,28 @@ export interface FileEntry {
|
|
|
167
225
|
mode?: string;
|
|
168
226
|
backup?: string;
|
|
169
227
|
replace?: ReplaceRule[];
|
|
170
|
-
|
|
228
|
+
on?: OnHooks;
|
|
171
229
|
template?: TemplateEngine | true;
|
|
172
230
|
json?: JsonMergeOptions | boolean;
|
|
173
231
|
yaml?: YamlMergeOptions | boolean;
|
|
174
232
|
toml?: TomlMergeOptions | boolean;
|
|
233
|
+
ini?: IniMergeOptions | boolean;
|
|
175
234
|
strategy?: 'replace' | 'insert';
|
|
235
|
+
writeInPlace?: boolean;
|
|
236
|
+
followSymlink?: boolean;
|
|
237
|
+
symlink?: true | 'absolute' | 'relative';
|
|
238
|
+
extract?: true | string[];
|
|
239
|
+
sudo?: true | string;
|
|
176
240
|
}
|
|
177
241
|
export interface VariableEntry {
|
|
178
242
|
src: FileSrc | FileSrc[];
|
|
179
243
|
json?: JsonMergeOptions | boolean;
|
|
180
244
|
yaml?: YamlMergeOptions | boolean;
|
|
181
245
|
toml?: TomlMergeOptions | boolean;
|
|
246
|
+
ini?: IniMergeOptions | boolean;
|
|
182
247
|
template?: TemplateEngine | true;
|
|
183
248
|
}
|
|
184
|
-
export type VariableSpec = Record<string,
|
|
249
|
+
export type VariableSpec = Record<string, VariableValue | VariableEntry>;
|
|
185
250
|
export interface AvantiConfig {
|
|
186
251
|
variables?: VariableSpec;
|
|
187
252
|
backup_roots?: string[];
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AA+
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AA+Qa,QAAA,sBAAsB,GAAqB;IACtD,YAAY;IACZ,UAAU;IACV,QAAQ;IACR,UAAU;IACV,KAAK;IACL,UAAU;IACV,KAAK;CACN,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variables-remote.d.ts","sourceRoot":"","sources":["../src/variables-remote.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"variables-remote.d.ts","sourceRoot":"","sources":["../src/variables-remote.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,SAAS,EAET,YAAY,EAEb,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAe,UAAU,EAAe,MAAM,WAAW,CAAC;AAuEjE,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,YAAY,EAClB,UAAU,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,UAAU,GACjB,OAAO,CAAC,SAAS,CAAC,CAyGpB"}
|
package/dist/variables-remote.js
CHANGED
|
@@ -37,6 +37,56 @@ exports.resolveVariableSpec = resolveVariableSpec;
|
|
|
37
37
|
const variables_1 = require("./variables");
|
|
38
38
|
const sources_1 = require("./sources");
|
|
39
39
|
const binary_1 = require("./binary");
|
|
40
|
+
// Recursively resolve $var references in all string leaves of a JsonValue.
|
|
41
|
+
// `seen` tracks the current DFS path for cycle detection; it is backtracked
|
|
42
|
+
// after each object/array so shared (non-circular) references are not flagged.
|
|
43
|
+
function deepResolveVars(value, vars, path = '', seen = new WeakSet()) {
|
|
44
|
+
if (typeof value === 'string')
|
|
45
|
+
return (0, variables_1.resolveVars)(value, vars);
|
|
46
|
+
// Reject non-JSON-compatible primitives that can reach here from programmatic
|
|
47
|
+
// callers who bypass TypeScript (e.g. via `as any`).
|
|
48
|
+
if (typeof value === 'undefined' ||
|
|
49
|
+
typeof value === 'bigint' ||
|
|
50
|
+
typeof value === 'symbol' ||
|
|
51
|
+
typeof value === 'function') {
|
|
52
|
+
const at = path ? ` at ${path}` : '';
|
|
53
|
+
throw new Error(`Variable value has unsupported type "${typeof value}"${at} — only string, number, boolean, null, array, and plain object are allowed`);
|
|
54
|
+
}
|
|
55
|
+
if (Array.isArray(value)) {
|
|
56
|
+
if (seen.has(value)) {
|
|
57
|
+
const at = path ? ` at ${path}` : '';
|
|
58
|
+
throw new Error(`Variable value contains a circular reference${at}`);
|
|
59
|
+
}
|
|
60
|
+
seen.add(value);
|
|
61
|
+
const result = value.map((v, i) => deepResolveVars(v, vars, `${path}[${i}]`, seen));
|
|
62
|
+
seen.delete(value);
|
|
63
|
+
return result;
|
|
64
|
+
}
|
|
65
|
+
if (typeof value === 'object' && value !== null) {
|
|
66
|
+
if (seen.has(value)) {
|
|
67
|
+
const at = path ? ` at ${path}` : '';
|
|
68
|
+
throw new Error(`Variable value contains a circular reference${at}`);
|
|
69
|
+
}
|
|
70
|
+
const proto = Object.getPrototypeOf(value);
|
|
71
|
+
if (proto !== Object.prototype && proto !== null) {
|
|
72
|
+
const typeName = value.constructor?.name ??
|
|
73
|
+
'unknown';
|
|
74
|
+
const at = path ? ` at ${path}` : '';
|
|
75
|
+
throw new Error(`Variable value contains a non-plain object (${typeName})${at} — only plain objects and arrays are supported as variable values. If loading from YAML, quote timestamps and other auto-typed values.`);
|
|
76
|
+
}
|
|
77
|
+
seen.add(value);
|
|
78
|
+
const out = Object.create(null);
|
|
79
|
+
for (const [k, v] of Object.entries(value)) {
|
|
80
|
+
const keyPart = /[.[\]"']/.test(k)
|
|
81
|
+
? `["${k.replace(/\\/g, '\\\\').replace(/"/g, '\\"')}"]`
|
|
82
|
+
: `.${k}`;
|
|
83
|
+
out[k] = deepResolveVars(v, vars, `${path}${keyPart}`, seen);
|
|
84
|
+
}
|
|
85
|
+
seen.delete(value);
|
|
86
|
+
return out;
|
|
87
|
+
}
|
|
88
|
+
return value;
|
|
89
|
+
}
|
|
40
90
|
async function resolveVariableSpec(spec, workingDir, cache) {
|
|
41
91
|
const resolved = Object.create(null);
|
|
42
92
|
let applyTemplate;
|
|
@@ -50,13 +100,44 @@ async function resolveVariableSpec(spec, workingDir, cache) {
|
|
|
50
100
|
throw new Error(`variables.${name}: ${msg}`, { cause: err });
|
|
51
101
|
}
|
|
52
102
|
}
|
|
103
|
+
else if (value === null) {
|
|
104
|
+
throw new Error(`variables.${name}: value must not be null`);
|
|
105
|
+
}
|
|
106
|
+
else if (typeof value === 'undefined' ||
|
|
107
|
+
typeof value === 'bigint' ||
|
|
108
|
+
typeof value === 'symbol' ||
|
|
109
|
+
typeof value === 'function') {
|
|
110
|
+
throw new Error(`variables.${name}: unsupported value type "${typeof value}" — value must be a string, number, boolean, list, or plain object`);
|
|
111
|
+
}
|
|
112
|
+
else if (typeof value !== 'object' ||
|
|
113
|
+
Array.isArray(value) ||
|
|
114
|
+
// Use `in` for TypeScript narrowing; Object.hasOwn guards against
|
|
115
|
+
// inherited `src` properties from programmatic callers.
|
|
116
|
+
!('src' in value) ||
|
|
117
|
+
!Object.hasOwn(value, 'src')) {
|
|
118
|
+
// Non-string, non-VariableEntry value (number, boolean, list, or plain
|
|
119
|
+
// object) — resolve $vars in any string leaves.
|
|
120
|
+
try {
|
|
121
|
+
// deepResolveVars returns JsonValue (handles nested nulls), but null
|
|
122
|
+
// is rejected above so the cast to VariableValue is sound.
|
|
123
|
+
// TS can't narrow VariableEntry away via Object.hasOwn; the cast is
|
|
124
|
+
// safe — only values without an own `src` reach this branch.
|
|
125
|
+
resolved[name] = deepResolveVars(value, resolved);
|
|
126
|
+
}
|
|
127
|
+
catch (err) {
|
|
128
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
129
|
+
throw new Error(`variables.${name}: ${msg}`, { cause: err });
|
|
130
|
+
}
|
|
131
|
+
}
|
|
53
132
|
else {
|
|
133
|
+
const entry = value;
|
|
54
134
|
const synthetic = {
|
|
55
|
-
src:
|
|
135
|
+
src: entry.src,
|
|
56
136
|
target: name,
|
|
57
|
-
json:
|
|
58
|
-
yaml:
|
|
59
|
-
toml:
|
|
137
|
+
json: entry.json,
|
|
138
|
+
yaml: entry.yaml,
|
|
139
|
+
toml: entry.toml,
|
|
140
|
+
ini: entry.ini,
|
|
60
141
|
};
|
|
61
142
|
let result;
|
|
62
143
|
try {
|
|
@@ -72,17 +153,17 @@ async function resolveVariableSpec(spec, workingDir, cache) {
|
|
|
72
153
|
throw new Error(`variables.${name}: source resolved to no content`);
|
|
73
154
|
}
|
|
74
155
|
if (result.files.size > 1) {
|
|
75
|
-
throw new Error(`variables.${name}: source resolved to multiple files; set json/yaml/toml to merge them into one`);
|
|
156
|
+
throw new Error(`variables.${name}: source resolved to multiple files; set json/yaml/toml/ini to merge them into one`);
|
|
76
157
|
}
|
|
77
158
|
const [srcPath, buf] = result.files.entries().next().value;
|
|
78
159
|
if ((0, binary_1.isBinary)(buf)) {
|
|
79
160
|
throw new Error(`variables.${name}: source resolved to binary content, which cannot be used as a variable value`);
|
|
80
161
|
}
|
|
81
162
|
let text = buf.toString('utf8');
|
|
82
|
-
if (
|
|
163
|
+
if (entry.template !== undefined) {
|
|
83
164
|
applyTemplate ??= (await Promise.resolve().then(() => __importStar(require('./processors/template')))).applyTemplate;
|
|
84
165
|
try {
|
|
85
|
-
text = await applyTemplate(text,
|
|
166
|
+
text = await applyTemplate(text, entry.template, resolved, srcPath || undefined);
|
|
86
167
|
}
|
|
87
168
|
catch (err) {
|
|
88
169
|
const msg = err instanceof Error ? err.message : String(err);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variables-remote.js","sourceRoot":"","sources":["../src/variables-remote.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"variables-remote.js","sourceRoot":"","sources":["../src/variables-remote.ts"],"names":[],"mappings":"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"}
|
package/dist/variables.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export declare function resolveVars(value: string, vars: Variables): string;
|
|
|
6
6
|
export declare function resolveVarsShellSafe(value: string, vars: Variables): string;
|
|
7
7
|
export declare function buildFileVars(targetPath: string): Variables;
|
|
8
8
|
export declare function buildDateVars(now?: Date): Variables;
|
|
9
|
+
export declare function buildSystemVars(): Variables;
|
|
9
10
|
export declare function resolveBackupCounter(pattern: string): string;
|
|
10
11
|
export declare function assertBackupPathAllowed(backupPath: string, workingDir: string, backupRoots: string[]): void;
|
|
11
12
|
export declare function resolveBackupPath(pattern: string, targetPath: string, workingDir: string, vars: Variables, backupRoots: string[]): string;
|
package/dist/variables.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variables.d.ts","sourceRoot":"","sources":["../src/variables.ts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"variables.d.ts","sourceRoot":"","sources":["../src/variables.ts"],"names":[],"mappings":"AAGA,OAAO,EAAa,SAAS,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG7D,eAAO,MAAM,aAAa,aAAgC,CAAC;AAG3D,eAAO,MAAM,kBAAkB,aAc7B,CAAC;AAEH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,YAAY,GAAG,IAAI,CAMtE;AAqGD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,MAAM,CA4BlE;AAgBD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,MAAM,CA4B3E;AAGD,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAa3D;AAGD,wBAAgB,aAAa,CAAC,GAAG,GAAE,IAAiB,GAAG,SAAS,CAc/D;AAOD,wBAAgB,eAAe,IAAI,SAAS,CAyB3C;AAYD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA2B5D;AA6BD,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EAAE,GACpB,IAAI,CAkBN;AASD,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,SAAS,EACf,WAAW,EAAE,MAAM,EAAE,GACpB,MAAM,CAmCR"}
|