@udondan/avanti 0.23.1 → 0.24.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 +128 -16
- package/dist/commands/diff.d.ts.map +1 -1
- package/dist/commands/diff.js +8 -4
- package/dist/commands/diff.js.map +1 -1
- package/dist/commands/pull.d.ts.map +1 -1
- package/dist/commands/pull.js +30 -6
- package/dist/commands/pull.js.map +1 -1
- package/dist/config-writeback.d.ts.map +1 -1
- package/dist/config-writeback.js +16 -4
- package/dist/config-writeback.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +152 -7
- package/dist/config.js.map +1 -1
- package/dist/diff.d.ts +6 -1
- package/dist/diff.d.ts.map +1 -1
- package/dist/diff.js +101 -24
- package/dist/diff.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 +100 -0
- 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 +161 -0
- package/dist/sources/gitlab.js.map +1 -1
- package/dist/sources/index.d.ts.map +1 -1
- package/dist/sources/index.js +40 -14
- package/dist/sources/index.js.map +1 -1
- package/dist/types.d.ts +33 -4
- 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 +86 -6
- package/dist/variables-remote.js.map +1 -1
- package/dist/variables.d.ts.map +1 -1
- package/dist/variables.js +96 -10
- package/dist/variables.js.map +1 -1
- package/dist/writer.d.ts +1 -0
- package/dist/writer.d.ts.map +1 -1
- package/dist/writer.js +122 -7
- package/dist/writer.js.map +1 -1
- package/package.json +5 -5
package/dist/writer.js
CHANGED
|
@@ -40,19 +40,53 @@ const path = __importStar(require("path"));
|
|
|
40
40
|
function atomicWrite(targets, deletions = []) {
|
|
41
41
|
// Stage each file as a sibling temp file on the same filesystem as the
|
|
42
42
|
// destination so that renameSync (rename(2)) is atomic on POSIX.
|
|
43
|
+
const mvTargets = targets.filter((t) => !t.writeInPlace);
|
|
44
|
+
const inPlaceTargets = targets.filter((t) => t.writeInPlace);
|
|
43
45
|
const staged = [];
|
|
44
46
|
const backupTemps = [];
|
|
45
47
|
try {
|
|
46
|
-
// Phase 1: write all temp files.
|
|
47
|
-
//
|
|
48
|
-
//
|
|
49
|
-
|
|
48
|
+
// Phase 1 (mv targets): write all temp files. Backups are deferred to
|
|
49
|
+
// Phase 2 so that a staging failure here never creates an orphaned backup
|
|
50
|
+
// for a destination that hasn't been modified yet.
|
|
51
|
+
// In-place targets skip this phase (no temp file); their backups are still
|
|
52
|
+
// created in Phase 2. If Phase 4 fails after open (which truncates the
|
|
53
|
+
// file), the destination may be empty or partially written — the backup
|
|
54
|
+
// captures the pre-write content and can be used for recovery.
|
|
55
|
+
for (const t of mvTargets) {
|
|
50
56
|
const dir = path.dirname(t.targetPath);
|
|
51
57
|
if (!fs.existsSync(dir)) {
|
|
52
58
|
fs.mkdirSync(dir, { recursive: true });
|
|
53
59
|
}
|
|
54
|
-
const tmpFile = path.join(dir, '.' +
|
|
55
|
-
|
|
60
|
+
const tmpFile = path.join(dir, '.' +
|
|
61
|
+
path.basename(t.targetPath) +
|
|
62
|
+
'.' +
|
|
63
|
+
crypto.randomBytes(8).toString('hex') +
|
|
64
|
+
'.avanti-tmp');
|
|
65
|
+
// O_CREAT|O_EXCL rejects any pre-existing entry at this path (including
|
|
66
|
+
// symlinks — POSIX guarantees EEXIST when O_EXCL is set and the path
|
|
67
|
+
// resolves to a symlink). O_NOFOLLOW is belt-and-suspenders on POSIX.
|
|
68
|
+
// The random suffix makes pre-creation attacks impractical regardless.
|
|
69
|
+
const oNoFollow = fs.constants['O_NOFOLLOW'] ?? 0;
|
|
70
|
+
const tmpFd = fs.openSync(tmpFile, fs.constants.O_WRONLY |
|
|
71
|
+
fs.constants.O_CREAT |
|
|
72
|
+
fs.constants.O_EXCL |
|
|
73
|
+
oNoFollow, 0o666);
|
|
74
|
+
// Register for cleanup before the write so a writeSync failure (e.g.
|
|
75
|
+
// ENOSPC) doesn't leave an orphan .avanti-tmp in the target directory.
|
|
76
|
+
const stagingEntry = {
|
|
77
|
+
tmp: tmpFile,
|
|
78
|
+
dest: t.targetPath,
|
|
79
|
+
};
|
|
80
|
+
staged.push(stagingEntry);
|
|
81
|
+
try {
|
|
82
|
+
let written = 0;
|
|
83
|
+
while (written < t.content.length) {
|
|
84
|
+
written += fs.writeSync(tmpFd, t.content, written, t.content.length - written);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
finally {
|
|
88
|
+
fs.closeSync(tmpFd);
|
|
89
|
+
}
|
|
56
90
|
// Resolve the effective mode: explicit config value wins; otherwise
|
|
57
91
|
// preserve the existing file's full permission bits (0o7777) so rename(2)
|
|
58
92
|
// doesn't silently reset them to the umask default. New files get the
|
|
@@ -69,7 +103,7 @@ function atomicWrite(targets, deletions = []) {
|
|
|
69
103
|
// file doesn't exist yet — leave the temp file's umask permissions
|
|
70
104
|
}
|
|
71
105
|
}
|
|
72
|
-
|
|
106
|
+
stagingEntry.effectiveMode = effectiveMode;
|
|
73
107
|
}
|
|
74
108
|
// Phase 2: all staging succeeded — now create backups.
|
|
75
109
|
// Phase 2a: copy each source file to a uniquely-named temp in the backup
|
|
@@ -106,6 +140,87 @@ function atomicWrite(targets, deletions = []) {
|
|
|
106
140
|
fs.chmodSync(s.dest, s.effectiveMode);
|
|
107
141
|
}
|
|
108
142
|
}
|
|
143
|
+
// Phase 4: in-place writes — preserve inode, not atomic
|
|
144
|
+
for (const t of inPlaceTargets) {
|
|
145
|
+
const dir = path.dirname(t.targetPath);
|
|
146
|
+
if (!fs.existsSync(dir)) {
|
|
147
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
148
|
+
}
|
|
149
|
+
const existingEntry = fs.lstatSync(t.targetPath, {
|
|
150
|
+
throwIfNoEntry: false,
|
|
151
|
+
});
|
|
152
|
+
// Fast-path rejection of non-regular, non-symlink entries (FIFOs,
|
|
153
|
+
// sockets, devices): opening a FIFO with O_WRONLY blocks until a reader
|
|
154
|
+
// connects; device/socket writes have unpredictable side effects. Not
|
|
155
|
+
// relied on for correctness — the fstat check on the opened fd (below,
|
|
156
|
+
// POSIX path) closes the TOCTOU window if the path is replaced after
|
|
157
|
+
// this check.
|
|
158
|
+
if (existingEntry &&
|
|
159
|
+
!existingEntry.isFile() &&
|
|
160
|
+
!existingEntry.isSymbolicLink()) {
|
|
161
|
+
throw new Error(`writeInPlace: ${t.targetPath} is not a regular file; refusing to write`);
|
|
162
|
+
}
|
|
163
|
+
let effectiveMode;
|
|
164
|
+
if (t.mode) {
|
|
165
|
+
effectiveMode = parseInt(t.mode, 8);
|
|
166
|
+
}
|
|
167
|
+
else if (existingEntry?.isFile()) {
|
|
168
|
+
effectiveMode = existingEntry.mode & 0o7777;
|
|
169
|
+
}
|
|
170
|
+
// Refuse to follow a symlink — unlike renameSync, which replaces the
|
|
171
|
+
// symlink itself, writeFileSync would write through it to the target.
|
|
172
|
+
// On POSIX: open with O_NOFOLLOW so the kernel rejects symlinks
|
|
173
|
+
// atomically (no TOCTOU window); ELOOP means the path is a symlink.
|
|
174
|
+
// O_NONBLOCK prevents blocking at open(2) if the lstatSync pre-check
|
|
175
|
+
// lost a TOCTOU race and the path became a FIFO with no reader.
|
|
176
|
+
// fstatSync on the opened fd then closes the remaining TOCTOU window by
|
|
177
|
+
// validating the type after open, before any write.
|
|
178
|
+
// On Windows: O_NOFOLLOW is not available; fall back to an lstat check
|
|
179
|
+
// (best-effort — a narrow TOCTOU race remains).
|
|
180
|
+
const oNoFollow = fs.constants['O_NOFOLLOW'] ?? 0;
|
|
181
|
+
const oNonBlock = fs.constants['O_NONBLOCK'] ?? 0;
|
|
182
|
+
if (oNoFollow !== 0) {
|
|
183
|
+
let fd;
|
|
184
|
+
try {
|
|
185
|
+
fd = fs.openSync(t.targetPath, fs.constants.O_WRONLY |
|
|
186
|
+
fs.constants.O_CREAT |
|
|
187
|
+
fs.constants.O_TRUNC |
|
|
188
|
+
oNoFollow |
|
|
189
|
+
oNonBlock, effectiveMode ?? 0o666);
|
|
190
|
+
}
|
|
191
|
+
catch (err) {
|
|
192
|
+
if (err.code === 'ELOOP') {
|
|
193
|
+
throw new Error(`writeInPlace: ${t.targetPath} is a symlink; refusing to follow`, { cause: err });
|
|
194
|
+
}
|
|
195
|
+
throw err;
|
|
196
|
+
}
|
|
197
|
+
try {
|
|
198
|
+
// fstat validates the type on the opened fd, catching any non-regular
|
|
199
|
+
// file that slipped past the lstatSync pre-check via a TOCTOU race.
|
|
200
|
+
if (!fs.fstatSync(fd).isFile()) {
|
|
201
|
+
throw new Error(`writeInPlace: ${t.targetPath} is not a regular file; refusing to write`);
|
|
202
|
+
}
|
|
203
|
+
let written = 0;
|
|
204
|
+
while (written < t.content.length) {
|
|
205
|
+
written += fs.writeSync(fd, t.content, written, t.content.length - written);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
finally {
|
|
209
|
+
fs.closeSync(fd);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
if (existingEntry?.isSymbolicLink()) {
|
|
214
|
+
throw new Error(`writeInPlace: ${t.targetPath} is a symlink; refusing to follow`);
|
|
215
|
+
}
|
|
216
|
+
fs.writeFileSync(t.targetPath, t.content, {
|
|
217
|
+
mode: effectiveMode ?? 0o666,
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
if (effectiveMode !== undefined) {
|
|
221
|
+
fs.chmodSync(t.targetPath, effectiveMode);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
109
224
|
}
|
|
110
225
|
finally {
|
|
111
226
|
for (const tmp of backupTemps) {
|
package/dist/writer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writer.js","sourceRoot":"","sources":["../src/writer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"writer.js","sourceRoot":"","sources":["../src/writer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@udondan/avanti",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.24.0",
|
|
4
4
|
"description": "Assemble local files from any source via a declarative YAML spec",
|
|
5
5
|
"bin": {
|
|
6
6
|
"avanti": "dist/cli.js"
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"url": "https://github.com/udondan/avanti.git"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@aws-sdk/client-s3": "3.
|
|
44
|
+
"@aws-sdk/client-s3": "3.1049.0",
|
|
45
45
|
"@aws-sdk/client-secrets-manager": "3.1048.0",
|
|
46
46
|
"@aws-sdk/client-ssm": "3.1048.0",
|
|
47
47
|
"chalk": "5.6.2",
|
|
@@ -64,14 +64,14 @@
|
|
|
64
64
|
"@types/ejs": "3.1.5",
|
|
65
65
|
"@types/js-yaml": "4.0.9",
|
|
66
66
|
"@types/mustache": "4.2.6",
|
|
67
|
-
"@types/node": "25.
|
|
67
|
+
"@types/node": "25.9.0",
|
|
68
68
|
"@types/nunjucks": "3.2.6",
|
|
69
69
|
"eslint": "10.4.0",
|
|
70
70
|
"eslint-config-prettier": "10.1.8",
|
|
71
71
|
"prettier": "3.8.3",
|
|
72
|
-
"tsx": "4.22.
|
|
72
|
+
"tsx": "4.22.2",
|
|
73
73
|
"typescript": "6.0.3",
|
|
74
|
-
"typescript-eslint": "8.59.
|
|
74
|
+
"typescript-eslint": "8.59.4",
|
|
75
75
|
"vitest": "4.1.6"
|
|
76
76
|
}
|
|
77
77
|
}
|