@udondan/avanti 0.24.0 → 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.
Files changed (98) hide show
  1. package/README.md +467 -66
  2. package/dist/commands/diff.d.ts.map +1 -1
  3. package/dist/commands/diff.js +75 -12
  4. package/dist/commands/diff.js.map +1 -1
  5. package/dist/commands/lock.d.ts.map +1 -1
  6. package/dist/commands/lock.js +3 -2
  7. package/dist/commands/lock.js.map +1 -1
  8. package/dist/commands/log.d.ts.map +1 -1
  9. package/dist/commands/log.js +7 -5
  10. package/dist/commands/log.js.map +1 -1
  11. package/dist/commands/pull.d.ts.map +1 -1
  12. package/dist/commands/pull.js +675 -36
  13. package/dist/commands/pull.js.map +1 -1
  14. package/dist/commands/reset.d.ts.map +1 -1
  15. package/dist/commands/reset.js +43 -11
  16. package/dist/commands/reset.js.map +1 -1
  17. package/dist/commands/revert.d.ts.map +1 -1
  18. package/dist/commands/revert.js +68 -14
  19. package/dist/commands/revert.js.map +1 -1
  20. package/dist/condition.d.ts.map +1 -1
  21. package/dist/condition.js +9 -6
  22. package/dist/condition.js.map +1 -1
  23. package/dist/config-writeback.d.ts.map +1 -1
  24. package/dist/config-writeback.js +17 -0
  25. package/dist/config-writeback.js.map +1 -1
  26. package/dist/config.d.ts.map +1 -1
  27. package/dist/config.js +244 -3
  28. package/dist/config.js.map +1 -1
  29. package/dist/diff.d.ts +19 -0
  30. package/dist/diff.d.ts.map +1 -1
  31. package/dist/diff.js +317 -12
  32. package/dist/diff.js.map +1 -1
  33. package/dist/extract.d.ts +4 -0
  34. package/dist/extract.d.ts.map +1 -0
  35. package/dist/extract.js +142 -0
  36. package/dist/extract.js.map +1 -0
  37. package/dist/filter.d.ts +3 -0
  38. package/dist/filter.d.ts.map +1 -0
  39. package/dist/filter.js +126 -0
  40. package/dist/filter.js.map +1 -0
  41. package/dist/history.d.ts +7 -1
  42. package/dist/history.d.ts.map +1 -1
  43. package/dist/history.js +89 -9
  44. package/dist/history.js.map +1 -1
  45. package/dist/paths.d.ts +4 -0
  46. package/dist/paths.d.ts.map +1 -1
  47. package/dist/paths.js +97 -0
  48. package/dist/paths.js.map +1 -1
  49. package/dist/processors/ini.d.ts +33 -0
  50. package/dist/processors/ini.d.ts.map +1 -0
  51. package/dist/processors/ini.js +500 -0
  52. package/dist/processors/ini.js.map +1 -0
  53. package/dist/processors/insert.d.ts.map +1 -1
  54. package/dist/processors/insert.js +338 -15
  55. package/dist/processors/insert.js.map +1 -1
  56. package/dist/processors/on.d.ts +4 -0
  57. package/dist/processors/on.d.ts.map +1 -0
  58. package/dist/processors/on.js +54 -0
  59. package/dist/processors/on.js.map +1 -0
  60. package/dist/ref.d.ts +21 -0
  61. package/dist/ref.d.ts.map +1 -0
  62. package/dist/ref.js +65 -0
  63. package/dist/ref.js.map +1 -0
  64. package/dist/sources/bitbucket.d.ts.map +1 -1
  65. package/dist/sources/bitbucket.js +51 -12
  66. package/dist/sources/bitbucket.js.map +1 -1
  67. package/dist/sources/git.d.ts.map +1 -1
  68. package/dist/sources/git.js +54 -6
  69. package/dist/sources/git.js.map +1 -1
  70. package/dist/sources/github.d.ts.map +1 -1
  71. package/dist/sources/github.js +188 -51
  72. package/dist/sources/github.js.map +1 -1
  73. package/dist/sources/gitlab.d.ts.map +1 -1
  74. package/dist/sources/gitlab.js +242 -44
  75. package/dist/sources/gitlab.js.map +1 -1
  76. package/dist/sources/index.d.ts +3 -1
  77. package/dist/sources/index.d.ts.map +1 -1
  78. package/dist/sources/index.js +170 -34
  79. package/dist/sources/index.js.map +1 -1
  80. package/dist/sources/local.d.ts +3 -0
  81. package/dist/sources/local.d.ts.map +1 -1
  82. package/dist/sources/local.js +44 -0
  83. package/dist/sources/local.js.map +1 -1
  84. package/dist/types.d.ts +38 -2
  85. package/dist/types.d.ts.map +1 -1
  86. package/dist/types.js.map +1 -1
  87. package/dist/variables-remote.d.ts.map +1 -1
  88. package/dist/variables-remote.js +2 -1
  89. package/dist/variables-remote.js.map +1 -1
  90. package/dist/variables.d.ts +1 -0
  91. package/dist/variables.d.ts.map +1 -1
  92. package/dist/variables.js +37 -2
  93. package/dist/variables.js.map +1 -1
  94. package/dist/writer.d.ts +17 -0
  95. package/dist/writer.d.ts.map +1 -1
  96. package/dist/writer.js +848 -20
  97. package/dist/writer.js.map +1 -1
  98. package/package.json +11 -7
@@ -1 +1 @@
1
- {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../src/diff.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,CAsC9D;AAED,wBAAgB,WAAW,CACzB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,GACnB,QAAQ,CAmDV;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAyEjD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CASlD"}
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../src/diff.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;8EAC0E;IAC1E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;2EACuE;IACvE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,CAyG9D;AAED,wBAAgB,WAAW,CACzB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,GACnB,QAAQ,CAmHV;AAED;2EAC2E;AAC3E,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GACxC,QAAQ,CA6BV;AAED;;2EAE2E;AAC3E,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACpB,QAAQ,CAiBV;AAED,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACpB,QAAQ,CAoHV;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAmHjD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CASlD"}
package/dist/diff.js CHANGED
@@ -38,6 +38,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.computeDeleteDiff = computeDeleteDiff;
40
40
  exports.computeDiff = computeDiff;
41
+ exports.buildNewFileDiff = buildNewFileDiff;
42
+ exports.buildNewSymlinkDiff = buildNewSymlinkDiff;
43
+ exports.computeSymlinkDiff = computeSymlinkDiff;
41
44
  exports.formatDiff = formatDiff;
42
45
  exports.printDiffs = printDiffs;
43
46
  const fs = __importStar(require("fs"));
@@ -45,16 +48,80 @@ const diff_1 = require("diff");
45
48
  const chalk_1 = __importDefault(require("chalk"));
46
49
  const binary_1 = require("./binary");
47
50
  function computeDeleteDiff(targetPath) {
48
- if (!fs.existsSync(targetPath)) {
51
+ let oldBuf;
52
+ try {
53
+ const stat = fs.lstatSync(targetPath, { throwIfNoEntry: false });
54
+ if (stat === undefined) {
55
+ return {
56
+ targetPath,
57
+ isNew: false,
58
+ hasChanges: false,
59
+ contentChanged: false,
60
+ patch: '',
61
+ };
62
+ }
63
+ if (stat.isSymbolicLink()) {
64
+ let linkTarget;
65
+ try {
66
+ linkTarget = fs.readlinkSync(targetPath);
67
+ }
68
+ catch (err) {
69
+ const code = err.code;
70
+ if (code !== 'EACCES' && code !== 'EPERM')
71
+ throw err;
72
+ // Symlink exists but reading its target requires elevated privileges.
73
+ return {
74
+ targetPath,
75
+ isNew: false,
76
+ isDelete: true,
77
+ hasChanges: true,
78
+ contentChanged: true,
79
+ patch: '',
80
+ isUnreadable: true,
81
+ isSymlink: true,
82
+ };
83
+ }
84
+ const patch = (0, diff_1.createTwoFilesPatch)(targetPath, '/dev/null', `-> ${linkTarget}\n`, '', undefined, 'deleted');
85
+ return {
86
+ targetPath,
87
+ isNew: false,
88
+ isDelete: true,
89
+ hasChanges: true,
90
+ contentChanged: true,
91
+ patch,
92
+ isSymlink: true,
93
+ };
94
+ }
95
+ oldBuf = fs.readFileSync(targetPath);
96
+ }
97
+ catch (err) {
98
+ const code = err.code;
99
+ if (code === 'ENOENT') {
100
+ // Dangling symlink — lstatSync saw the symlink but readFileSync followed
101
+ // it to a non-existent target. Treat as a binary delete (no diff available).
102
+ return {
103
+ targetPath,
104
+ isNew: false,
105
+ isDelete: true,
106
+ hasChanges: true,
107
+ contentChanged: true,
108
+ patch: '',
109
+ isBinary: true,
110
+ };
111
+ }
112
+ if (code !== 'EACCES' && code !== 'EPERM')
113
+ throw err;
114
+ // File exists but is unreadable (e.g. root-owned 0600).
49
115
  return {
50
116
  targetPath,
51
117
  isNew: false,
52
- hasChanges: false,
53
- contentChanged: false,
118
+ isDelete: true,
119
+ hasChanges: true,
120
+ contentChanged: true,
54
121
  patch: '',
122
+ isUnreadable: true,
55
123
  };
56
124
  }
57
- const oldBuf = fs.readFileSync(targetPath);
58
125
  if ((0, binary_1.isBinary)(oldBuf)) {
59
126
  return {
60
127
  targetPath,
@@ -77,21 +144,82 @@ function computeDeleteDiff(targetPath) {
77
144
  };
78
145
  }
79
146
  function computeDiff(targetPath, newContent, desiredMode) {
80
- const isNew = !fs.existsSync(targetPath);
81
- const oldBuf = isNew ? Buffer.alloc(0) : fs.readFileSync(targetPath);
147
+ let isNew = false;
148
+ let oldBuf = Buffer.alloc(0);
149
+ let isUnreadable = false;
150
+ let lstatFailed = false;
151
+ let stat;
152
+ try {
153
+ stat = fs.lstatSync(targetPath, { throwIfNoEntry: false });
154
+ }
155
+ catch (err) {
156
+ const code = err.code;
157
+ if (code !== 'EACCES' && code !== 'EPERM')
158
+ throw err;
159
+ // lstatSync failed — parent directory not searchable. Existence is unknown;
160
+ // treat as existing (conservative). pull.ts uses sudoFileExists to verify
161
+ // the true state after authenticating.
162
+ lstatFailed = true;
163
+ isUnreadable = true;
164
+ isNew = false;
165
+ }
166
+ if (!lstatFailed) {
167
+ isNew = stat === undefined;
168
+ if (!isNew) {
169
+ try {
170
+ oldBuf = fs.readFileSync(targetPath);
171
+ }
172
+ catch (err) {
173
+ const code = err.code;
174
+ if (code === 'ENOENT') {
175
+ // Dangling symlink — lstatSync saw the symlink but readFileSync
176
+ // followed it to a non-existent target. Treat as empty content:
177
+ // the diff will show the full new content being written.
178
+ // isUnreadable stays false; oldBuf stays empty Buffer.
179
+ }
180
+ else if (code === 'EACCES' || code === 'EPERM') {
181
+ // File exists but is unreadable (e.g. root-owned 0600).
182
+ isUnreadable = true;
183
+ }
184
+ else {
185
+ throw err;
186
+ }
187
+ }
188
+ }
189
+ }
82
190
  let modeChange;
83
191
  if (!isNew && desiredMode && process.platform !== 'win32') {
84
192
  const desired = parseInt(desiredMode, 8);
85
193
  if (!isNaN(desired)) {
86
- const stat = fs.lstatSync(targetPath, { throwIfNoEntry: false });
87
- if (stat !== undefined && !stat.isSymbolicLink()) {
88
- const current = stat.mode & 0o7777;
89
- if (desired !== current) {
90
- modeChange = { from: current, to: desired };
194
+ try {
195
+ const stat = fs.lstatSync(targetPath, { throwIfNoEntry: false });
196
+ if (stat !== undefined && !stat.isSymbolicLink()) {
197
+ const current = stat.mode & 0o7777;
198
+ if (desired !== current) {
199
+ modeChange = { from: current, to: desired };
200
+ }
91
201
  }
92
202
  }
203
+ catch (err) {
204
+ const code = err.code;
205
+ if (code !== 'EACCES' && code !== 'EPERM')
206
+ throw err;
207
+ // Cannot stat unreadable file — skip mode detection.
208
+ }
93
209
  }
94
210
  }
211
+ if (isUnreadable) {
212
+ return {
213
+ targetPath,
214
+ isNew: false,
215
+ hasChanges: true,
216
+ contentChanged: true,
217
+ patch: '',
218
+ isUnreadable: true,
219
+ ...(lstatFailed && { lstatFailed: true }),
220
+ modeChange,
221
+ };
222
+ }
95
223
  const binary = (0, binary_1.isBinary)(newContent) || (0, binary_1.isBinary)(oldBuf);
96
224
  if (binary) {
97
225
  const contentChanged = isNew || !newContent.equals(oldBuf);
@@ -113,7 +241,148 @@ function computeDiff(targetPath, newContent, desiredMode) {
113
241
  const patch = contentChanged
114
242
  ? (0, diff_1.createTwoFilesPatch)(isNew ? '/dev/null' : targetPath, targetPath, oldContent, newText, isNew ? '' : undefined, isNew ? 'new file' : undefined)
115
243
  : '';
116
- return { targetPath, isNew, hasChanges, contentChanged, patch, modeChange };
244
+ return {
245
+ targetPath,
246
+ isNew,
247
+ hasChanges,
248
+ contentChanged,
249
+ patch,
250
+ modeChange,
251
+ };
252
+ }
253
+ /** Build a new-file FileDiff from content without reading disk. Used when
254
+ * lstatFailed initially but sudo confirms the file does not yet exist. */
255
+ function buildNewFileDiff(targetPath, newContent, modeChange) {
256
+ if ((0, binary_1.isBinary)(newContent)) {
257
+ return {
258
+ targetPath,
259
+ isNew: true,
260
+ hasChanges: true,
261
+ contentChanged: true,
262
+ patch: '',
263
+ isBinary: true,
264
+ modeChange,
265
+ };
266
+ }
267
+ const newText = newContent.toString('utf8');
268
+ const patch = (0, diff_1.createTwoFilesPatch)('/dev/null', targetPath, '', newText, '', 'new file');
269
+ return {
270
+ targetPath,
271
+ isNew: true,
272
+ hasChanges: true,
273
+ contentChanged: true,
274
+ patch,
275
+ modeChange,
276
+ };
277
+ }
278
+ /** Build a new-symlink FileDiff without reading disk. Used when lstatFailed
279
+ * initially but sudo confirms the path does not yet exist — calling
280
+ * computeSymlinkDiff again would still EACCES on the parent directory. */
281
+ function buildNewSymlinkDiff(targetPath, symlinkTarget) {
282
+ const patch = (0, diff_1.createTwoFilesPatch)('/dev/null', targetPath, '', `-> ${symlinkTarget}\n`, '', 'new symlink');
283
+ return {
284
+ targetPath,
285
+ isNew: true,
286
+ hasChanges: true,
287
+ contentChanged: true,
288
+ patch,
289
+ isSymlink: true,
290
+ };
291
+ }
292
+ function computeSymlinkDiff(targetPath, symlinkTarget) {
293
+ let stat;
294
+ try {
295
+ stat = fs.lstatSync(targetPath, { throwIfNoEntry: false });
296
+ }
297
+ catch (err) {
298
+ const code = err.code;
299
+ if (code !== 'EACCES' && code !== 'EPERM')
300
+ throw err;
301
+ return {
302
+ targetPath,
303
+ isNew: false,
304
+ hasChanges: true,
305
+ contentChanged: true,
306
+ patch: '',
307
+ isUnreadable: true,
308
+ lstatFailed: true,
309
+ isSymlink: true,
310
+ };
311
+ }
312
+ if (stat === undefined) {
313
+ const patch = (0, diff_1.createTwoFilesPatch)('/dev/null', targetPath, '', `-> ${symlinkTarget}\n`, '', 'new symlink');
314
+ return {
315
+ targetPath,
316
+ isNew: true,
317
+ hasChanges: true,
318
+ contentChanged: true,
319
+ patch,
320
+ isSymlink: true,
321
+ };
322
+ }
323
+ if (!stat.isSymbolicLink()) {
324
+ if (stat.isDirectory()) {
325
+ // Symlinks cannot replace existing directories — write will fail.
326
+ // Return a diff marked isDirectory so callers can surface an error
327
+ // rather than attempting a write that will fail with EISDIR.
328
+ return {
329
+ targetPath,
330
+ isNew: false,
331
+ hasChanges: true,
332
+ contentChanged: true,
333
+ patch: '',
334
+ isSymlink: true,
335
+ isDirectory: true,
336
+ };
337
+ }
338
+ const existingLabel = stat.isFile() ? 'regular file' : 'special file';
339
+ const patch = (0, diff_1.createTwoFilesPatch)(targetPath, targetPath, `[${existingLabel}]\n`, `-> ${symlinkTarget}\n`, `was ${existingLabel}`, 'replaced by symlink');
340
+ return {
341
+ targetPath,
342
+ isNew: false,
343
+ hasChanges: true,
344
+ contentChanged: true,
345
+ patch,
346
+ isSymlink: true,
347
+ };
348
+ }
349
+ let currentTarget;
350
+ try {
351
+ currentTarget = fs.readlinkSync(targetPath);
352
+ }
353
+ catch (err) {
354
+ const code = err.code;
355
+ if (code !== 'EACCES' && code !== 'EPERM')
356
+ throw err;
357
+ return {
358
+ targetPath,
359
+ isNew: false,
360
+ hasChanges: true,
361
+ contentChanged: true,
362
+ patch: '',
363
+ isUnreadable: true,
364
+ isSymlink: true,
365
+ };
366
+ }
367
+ if (currentTarget === symlinkTarget) {
368
+ return {
369
+ targetPath,
370
+ isNew: false,
371
+ hasChanges: false,
372
+ contentChanged: false,
373
+ patch: '',
374
+ isSymlink: true,
375
+ };
376
+ }
377
+ const patch = (0, diff_1.createTwoFilesPatch)(targetPath, targetPath, `-> ${currentTarget}\n`, `-> ${symlinkTarget}\n`, 'symlink target changed', 'symlink target changed');
378
+ return {
379
+ targetPath,
380
+ isNew: false,
381
+ hasChanges: true,
382
+ contentChanged: true,
383
+ patch,
384
+ isSymlink: true,
385
+ };
117
386
  }
118
387
  function formatDiff(diff) {
119
388
  if (!diff.hasChanges)
@@ -129,12 +398,48 @@ function formatDiff(diff) {
129
398
  return chalk_1.default.red(line);
130
399
  return line;
131
400
  };
401
+ if (diff.isSymlink) {
402
+ if (diff.isDirectory) {
403
+ return (chalk_1.default.bold(`--- ${diff.targetPath}\n+++ ${diff.targetPath}`) +
404
+ '\n' +
405
+ chalk_1.default.red('@@ ERROR: target is an existing directory; symlinks cannot replace directories @@'));
406
+ }
407
+ if (diff.isUnreadable) {
408
+ const newPath = diff.isDelete ? '/dev/null' : diff.targetPath;
409
+ const label = diff.isDelete
410
+ ? 'symlink deleted (existing target unreadable — diff unavailable)'
411
+ : 'symlink (existing state unreadable)';
412
+ return (chalk_1.default.bold(`--- ${diff.targetPath}\n+++ ${newPath}`) +
413
+ '\n' +
414
+ chalk_1.default.cyan(`@@ ${label} @@`));
415
+ }
416
+ return diff.patch.split('\n').map(colorLine).join('\n');
417
+ }
132
418
  let modeFrom = '';
133
419
  let modeTo = '';
134
420
  if (diff.modeChange) {
135
421
  modeFrom = chalk_1.default.red(`-old mode ${diff.modeChange.from.toString(8).padStart(6, '0')}`);
136
422
  modeTo = chalk_1.default.green(`+new mode ${diff.modeChange.to.toString(8).padStart(6, '0')}`);
137
423
  }
424
+ if (diff.isUnreadable) {
425
+ // If content was confirmed unchanged via sudo re-read (contentChanged=false),
426
+ // fall through to mode-only rendering so the diff accurately shows only
427
+ // the permission change rather than the "unreadable content" placeholder.
428
+ if (!diff.contentChanged && diff.modeChange) {
429
+ // intentional fall-through to mode-only block below
430
+ }
431
+ else {
432
+ const newPath = diff.isDelete ? '/dev/null' : diff.targetPath;
433
+ const label = diff.isDelete
434
+ ? 'file deleted (unreadable — no diff available)'
435
+ : 'file updated (existing content unreadable — diff unavailable)';
436
+ let out = chalk_1.default.bold(`--- ${diff.targetPath}\n+++ ${newPath}`) + '\n';
437
+ if (diff.modeChange)
438
+ out += modeFrom + '\n' + modeTo + '\n';
439
+ out += chalk_1.default.cyan(`@@ ${label} @@`);
440
+ return out;
441
+ }
442
+ }
138
443
  if (diff.isBinary) {
139
444
  let out = '';
140
445
  if (diff.contentChanged) {
package/dist/diff.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"diff.js","sourceRoot":"","sources":["../src/diff.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diff.js","sourceRoot":"","sources":["../src/diff.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export type ArchiveFormat = 'zip' | 'tar' | 'tar.gz' | 'tar.bz2' | 'tar.xz';
2
+ export declare function detectArchiveFormat(filename: string): ArchiveFormat | null;
3
+ export declare function extractArchive(buffer: Buffer, filename: string): Promise<Map<string, Buffer>>;
4
+ //# sourceMappingURL=extract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../src/extract.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE5E,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAQ1E;AAoFD,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAc9B"}
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.detectArchiveFormat = detectArchiveFormat;
40
+ exports.extractArchive = extractArchive;
41
+ const path = __importStar(require("path"));
42
+ const stream_1 = require("stream");
43
+ const tar_1 = require("tar");
44
+ const unzipper_1 = __importDefault(require("unzipper"));
45
+ function detectArchiveFormat(filename) {
46
+ const lower = filename.toLowerCase();
47
+ if (lower.endsWith('.zip'))
48
+ return 'zip';
49
+ if (lower.endsWith('.tar.gz') || lower.endsWith('.tgz'))
50
+ return 'tar.gz';
51
+ if (lower.endsWith('.tar.bz2'))
52
+ return 'tar.bz2';
53
+ if (lower.endsWith('.tar.xz'))
54
+ return 'tar.xz';
55
+ if (lower.endsWith('.tar'))
56
+ return 'tar';
57
+ return null;
58
+ }
59
+ function normalizePath(p) {
60
+ const normalized = path.posix.normalize(p.replace(/\\/g, '/'));
61
+ if (!normalized || normalized === '.')
62
+ return null;
63
+ if (normalized.startsWith('/') ||
64
+ /^[A-Za-z]:/.test(normalized) ||
65
+ normalized.split('/').includes('..')) {
66
+ throw new Error(`Archive contains unsafe entry path "${p}" — rejecting to prevent path traversal`);
67
+ }
68
+ return normalized;
69
+ }
70
+ async function extractZip(buffer) {
71
+ const directory = await unzipper_1.default.Open.buffer(buffer);
72
+ const files = new Map();
73
+ for (const entry of directory.files) {
74
+ if (entry.type === 'Directory')
75
+ continue;
76
+ const normalized = normalizePath(entry.path);
77
+ if (normalized === null)
78
+ continue;
79
+ if (files.has(normalized)) {
80
+ throw new Error(`Archive contains duplicate path "${normalized}" (original entry: "${entry.path}")`);
81
+ }
82
+ files.set(normalized, await entry.buffer());
83
+ }
84
+ return files;
85
+ }
86
+ async function extractTar(buffer) {
87
+ const files = new Map();
88
+ await new Promise((resolve, reject) => {
89
+ const parser = new tar_1.Parser();
90
+ parser.on('entry', (entry) => {
91
+ if (entry.type !== 'File' &&
92
+ entry.type !== 'OldFile' &&
93
+ entry.type !== 'ContiguousFile') {
94
+ entry.resume();
95
+ return;
96
+ }
97
+ let normalized;
98
+ try {
99
+ normalized = normalizePath(entry.path);
100
+ }
101
+ catch (err) {
102
+ const error = err instanceof Error ? err : new Error(String(err));
103
+ reject(error);
104
+ entry.resume();
105
+ return;
106
+ }
107
+ if (normalized === null) {
108
+ entry.resume();
109
+ return;
110
+ }
111
+ const key = normalized;
112
+ const originalPath = entry.path;
113
+ const chunks = [];
114
+ entry.on('data', (chunk) => chunks.push(chunk));
115
+ entry.on('end', () => {
116
+ if (files.has(key)) {
117
+ reject(new Error(`Archive contains duplicate path "${key}" (original entry: "${originalPath}")`));
118
+ return;
119
+ }
120
+ files.set(key, Buffer.concat(chunks));
121
+ });
122
+ entry.on('error', reject);
123
+ });
124
+ parser.on('finish', resolve);
125
+ parser.on('error', reject);
126
+ stream_1.Readable.from([buffer]).pipe(parser);
127
+ });
128
+ return files;
129
+ }
130
+ async function extractArchive(buffer, filename) {
131
+ const format = detectArchiveFormat(filename);
132
+ if (format === null) {
133
+ throw new Error(`Cannot extract "${filename}": unrecognised archive format (.zip, .tar, .tar.gz, .tgz, .tar.bz2, .tar.xz)`);
134
+ }
135
+ if (format === 'zip')
136
+ return extractZip(buffer);
137
+ if (format === 'tar.bz2' || format === 'tar.xz') {
138
+ throw new Error(`Cannot extract "${filename}": ${format} is not yet supported; decompress the file first with bzip2/xz`);
139
+ }
140
+ return extractTar(buffer);
141
+ }
142
+ //# sourceMappingURL=extract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract.js","sourceRoot":"","sources":["../src/extract.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,kDAQC;AAoFD,wCAiBC;AApHD,2CAA6B;AAC7B,mCAAkC;AAClC,6BAAwC;AACxC,wDAAgC;AAIhC,SAAgB,mBAAmB,CAAC,QAAgB;IAClD,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IACrC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IACzC,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,QAAQ,CAAC;IACzE,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,OAAO,SAAS,CAAC;IACjD,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC/C,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IACzC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,aAAa,CAAC,CAAS;IAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IAC/D,IAAI,CAAC,UAAU,IAAI,UAAU,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IACnD,IACE,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC;QAC1B,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;QAC7B,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EACpC,CAAC;QACD,MAAM,IAAI,KAAK,CACb,uCAAuC,CAAC,yCAAyC,CAClF,CAAC;IACJ,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,MAAc;IACtC,MAAM,SAAS,GAAG,MAAM,kBAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW;YAAE,SAAS;QACzC,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,UAAU,KAAK,IAAI;YAAE,SAAS;QAClC,IAAI,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CACb,oCAAoC,UAAU,uBAAuB,KAAK,CAAC,IAAI,IAAI,CACpF,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,MAAc;IACtC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,MAAM,MAAM,GAAG,IAAI,YAAM,EAAE,CAAC;QAC5B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAgB,EAAE,EAAE;YACtC,IACE,KAAK,CAAC,IAAI,KAAK,MAAM;gBACrB,KAAK,CAAC,IAAI,KAAK,SAAS;gBACxB,KAAK,CAAC,IAAI,KAAK,gBAAgB,EAC/B,CAAC;gBACD,KAAK,CAAC,MAAM,EAAE,CAAC;gBACf,OAAO;YACT,CAAC;YACD,IAAI,UAAyB,CAAC;YAC9B,IAAI,CAAC;gBACH,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACzC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gBAClE,MAAM,CAAC,KAAK,CAAC,CAAC;gBACd,KAAK,CAAC,MAAM,EAAE,CAAC;gBACf,OAAO;YACT,CAAC;YACD,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;gBACxB,KAAK,CAAC,MAAM,EAAE,CAAC;gBACf,OAAO;YACT,CAAC;YACD,MAAM,GAAG,GAAG,UAAU,CAAC;YACvB,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC;YAChC,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACxD,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACnB,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBACnB,MAAM,CACJ,IAAI,KAAK,CACP,oCAAoC,GAAG,uBAAuB,YAAY,IAAI,CAC/E,CACF,CAAC;oBACF,OAAO;gBACT,CAAC;gBACD,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YACxC,CAAC,CAAC,CAAC;YACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC7B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC3B,iBAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC;AAEM,KAAK,UAAU,cAAc,CAClC,MAAc,EACd,QAAgB;IAEhB,MAAM,MAAM,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC7C,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACb,mBAAmB,QAAQ,+EAA+E,CAC3G,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,KAAK,KAAK;QAAE,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;IAChD,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CACb,mBAAmB,QAAQ,MAAM,MAAM,gEAAgE,CACxG,CAAC;IACJ,CAAC;IACD,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function applyFilter(files: Map<string, Buffer>, patterns: string[]): Map<string, Buffer>;
2
+ export declare function expandBraces(pattern: string, limit?: number): string[];
3
+ //# sourceMappingURL=filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../src/filter.ts"],"names":[],"mappings":"AA8CA,wBAAgB,WAAW,CACzB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC1B,QAAQ,EAAE,MAAM,EAAE,GACjB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAerB;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,SAAM,GAAG,MAAM,EAAE,CAGnE"}