@udondan/avanti 0.4.0 → 0.6.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 (62) hide show
  1. package/README.md +130 -5
  2. package/dist/cli.js +6 -0
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/diff.d.ts.map +1 -1
  5. package/dist/commands/diff.js +45 -2
  6. package/dist/commands/diff.js.map +1 -1
  7. package/dist/commands/log.d.ts +3 -0
  8. package/dist/commands/log.d.ts.map +1 -0
  9. package/dist/commands/log.js +100 -0
  10. package/dist/commands/log.js.map +1 -0
  11. package/dist/commands/pull.d.ts.map +1 -1
  12. package/dist/commands/pull.js +67 -19
  13. package/dist/commands/pull.js.map +1 -1
  14. package/dist/commands/reset.d.ts +3 -0
  15. package/dist/commands/reset.d.ts.map +1 -0
  16. package/dist/commands/reset.js +106 -0
  17. package/dist/commands/reset.js.map +1 -0
  18. package/dist/commands/revert.d.ts +3 -0
  19. package/dist/commands/revert.d.ts.map +1 -0
  20. package/dist/commands/revert.js +153 -0
  21. package/dist/commands/revert.js.map +1 -0
  22. package/dist/diff.d.ts +1 -0
  23. package/dist/diff.d.ts.map +1 -1
  24. package/dist/diff.js +10 -1
  25. package/dist/diff.js.map +1 -1
  26. package/dist/fetch.d.ts +3 -0
  27. package/dist/fetch.d.ts.map +1 -0
  28. package/dist/fetch.js +37 -0
  29. package/dist/fetch.js.map +1 -0
  30. package/dist/history.d.ts +64 -0
  31. package/dist/history.d.ts.map +1 -0
  32. package/dist/history.js +316 -0
  33. package/dist/history.js.map +1 -0
  34. package/dist/processors/json.d.ts.map +1 -1
  35. package/dist/processors/json.js +8 -5
  36. package/dist/processors/json.js.map +1 -1
  37. package/dist/prompt.d.ts +2 -0
  38. package/dist/prompt.d.ts.map +1 -0
  39. package/dist/prompt.js +42 -0
  40. package/dist/prompt.js.map +1 -0
  41. package/dist/sources/github.d.ts +1 -1
  42. package/dist/sources/github.d.ts.map +1 -1
  43. package/dist/sources/github.js +124 -20
  44. package/dist/sources/github.js.map +1 -1
  45. package/dist/sources/gitlab.d.ts +1 -1
  46. package/dist/sources/gitlab.d.ts.map +1 -1
  47. package/dist/sources/gitlab.js +136 -48
  48. package/dist/sources/gitlab.js.map +1 -1
  49. package/dist/sources/http.d.ts.map +1 -1
  50. package/dist/sources/http.js +5 -24
  51. package/dist/sources/http.js.map +1 -1
  52. package/dist/sources/index.js +4 -4
  53. package/dist/sources/index.js.map +1 -1
  54. package/dist/writer.d.ts +1 -1
  55. package/dist/writer.d.ts.map +1 -1
  56. package/dist/writer.js +10 -1
  57. package/dist/writer.js.map +1 -1
  58. package/package.json +6 -1
  59. package/.prettierignore +0 -2
  60. package/CHANGELOG.md +0 -46
  61. package/eslint.config.mjs +0 -25
  62. package/prettier.config.mjs +0 -5
@@ -0,0 +1,106 @@
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 (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.resetCommand = void 0;
27
+ const commander_1 = require("commander");
28
+ const path = __importStar(require("path"));
29
+ const config_1 = require("../config");
30
+ const history_1 = require("../history");
31
+ const diff_1 = require("../diff");
32
+ const writer_1 = require("../writer");
33
+ const prompt_1 = require("../prompt");
34
+ function resetCommand() {
35
+ return new commander_1.Command('reset')
36
+ .description('Restore all tracked files to their pre-avanti state, deleting files avanti created')
37
+ .option('-y, --yes', 'skip confirmation prompt')
38
+ .action(async (options, cmd) => {
39
+ const opts = options;
40
+ const configPath = (0, config_1.resolveConfigPath)(cmd.parent?.opts().config);
41
+ const rawWorkingDir = cmd.parent?.opts().workingDir;
42
+ const workingDir = rawWorkingDir
43
+ ? path.resolve(rawWorkingDir)
44
+ : process.cwd();
45
+ const history = new history_1.HistoryManager(configPath, workingDir);
46
+ if (!history.hasHistory()) {
47
+ console.log('No avanti history found. Nothing to reset.');
48
+ process.exit(0);
49
+ }
50
+ const tracked = history.listTrackedFiles();
51
+ if (tracked.length === 0) {
52
+ console.log('No tracked files. Nothing to reset.');
53
+ process.exit(0);
54
+ }
55
+ const writeTargets = [];
56
+ const deletions = [];
57
+ const diffs = [];
58
+ for (const meta of tracked) {
59
+ if (meta.existedBeforeAvanti) {
60
+ const original = history.readVersion(meta.absolutePath, 0);
61
+ if (original === null)
62
+ continue;
63
+ const d = (0, diff_1.computeDiff)(meta.absolutePath, original);
64
+ if (d.hasChanges) {
65
+ writeTargets.push({
66
+ targetPath: meta.absolutePath,
67
+ content: original,
68
+ });
69
+ diffs.push(d);
70
+ }
71
+ }
72
+ else {
73
+ const d = (0, diff_1.computeDeleteDiff)(meta.absolutePath);
74
+ if (d.hasChanges) {
75
+ deletions.push(meta.absolutePath);
76
+ diffs.push(d);
77
+ }
78
+ }
79
+ }
80
+ if (diffs.length === 0) {
81
+ console.log('Files are already at their pre-avanti state. Nothing to reset.');
82
+ process.exit(0);
83
+ }
84
+ const total = writeTargets.length + deletions.length;
85
+ console.log(`This will restore ${total} tracked file(s) to their pre-avanti state:\n`);
86
+ (0, diff_1.printDiffs)(diffs);
87
+ const yes = opts.yes ?? false;
88
+ if (!yes) {
89
+ const ok = await (0, prompt_1.confirm)('Apply? [y/N] ');
90
+ if (!ok) {
91
+ console.log('Aborted.');
92
+ process.exit(0);
93
+ }
94
+ }
95
+ try {
96
+ (0, writer_1.atomicWrite)(writeTargets, deletions);
97
+ console.log(`Restored ${writeTargets.length} file(s), deleted ${deletions.length} file(s).`);
98
+ }
99
+ catch (err) {
100
+ console.error(`Reset failed: ${err.message}`);
101
+ process.exit(2);
102
+ }
103
+ });
104
+ }
105
+ exports.resetCommand = resetCommand;
106
+ //# sourceMappingURL=reset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reset.js","sourceRoot":"","sources":["../../src/commands/reset.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAoC;AACpC,2CAA6B;AAC7B,sCAA8C;AAC9C,wCAA4C;AAC5C,kCAAqE;AACrE,sCAAqD;AACrD,sCAAoC;AAGpC,SAAgB,YAAY;IAC1B,OAAO,IAAI,mBAAO,CAAC,OAAO,CAAC;SACxB,WAAW,CACV,oFAAoF,CACrF;SACA,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC;SAC/C,MAAM,CAAC,KAAK,EAAE,OAAgB,EAAE,GAAY,EAAE,EAAE;QAC/C,MAAM,IAAI,GAAG,OAA4B,CAAC;QAC1C,MAAM,UAAU,GAAG,IAAA,0BAAiB,EAClC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,MAA4B,CAChD,CAAC;QACF,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,UAAgC,CAAC;QAC1E,MAAM,UAAU,GAAG,aAAa;YAC9B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;YAC7B,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QAElB,MAAM,OAAO,GAAG,IAAI,wBAAc,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAC3D,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;YAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,OAAO,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAC3C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;YACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,YAAY,GAAkB,EAAE,CAAC;QACvC,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAe,EAAE,CAAC;QAE7B,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC7B,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;gBAC3D,IAAI,QAAQ,KAAK,IAAI;oBAAE,SAAS;gBAChC,MAAM,CAAC,GAAG,IAAA,kBAAW,EAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;gBACnD,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;oBACjB,YAAY,CAAC,IAAI,CAAC;wBAChB,UAAU,EAAE,IAAI,CAAC,YAAY;wBAC7B,OAAO,EAAE,QAAQ;qBAClB,CAAC,CAAC;oBACH,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,GAAG,IAAA,wBAAiB,EAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC/C,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;oBACjB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBAClC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CACT,gEAAgE,CACjE,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QACrD,OAAO,CAAC,GAAG,CACT,qBAAqB,KAAK,+CAA+C,CAC1E,CAAC;QACF,IAAA,iBAAU,EAAC,KAAK,CAAC,CAAC;QAElB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC;QAC9B,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,EAAE,GAAG,MAAM,IAAA,gBAAO,EAAC,eAAe,CAAC,CAAC;YAC1C,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBACxB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YACH,IAAA,oBAAW,EAAC,YAAY,EAAE,SAAS,CAAC,CAAC;YACrC,OAAO,CAAC,GAAG,CACT,YAAY,YAAY,CAAC,MAAM,qBAAqB,SAAS,CAAC,MAAM,WAAW,CAChF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,CAAC,iBAAkB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC;AArFD,oCAqFC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function revertCommand(): Command;
3
+ //# sourceMappingURL=revert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revert.d.ts","sourceRoot":"","sources":["../../src/commands/revert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,aAAa,IAAI,OAAO,CAsJvC"}
@@ -0,0 +1,153 @@
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 (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.revertCommand = void 0;
27
+ const commander_1 = require("commander");
28
+ const path = __importStar(require("path"));
29
+ const config_1 = require("../config");
30
+ const history_1 = require("../history");
31
+ const diff_1 = require("../diff");
32
+ const writer_1 = require("../writer");
33
+ const prompt_1 = require("../prompt");
34
+ function revertCommand() {
35
+ return new commander_1.Command('revert')
36
+ .description('Atomically revert all project files to a past pull state (defaults to undoing the last pull)')
37
+ .argument('[pullId]', 'short or full pull ID to revert to (from avanti log)')
38
+ .option('-y, --yes', 'skip confirmation prompt')
39
+ .action(async (pullId, options, cmd) => {
40
+ const opts = options;
41
+ const configPath = (0, config_1.resolveConfigPath)(cmd.parent?.opts().config);
42
+ const rawWorkingDir = cmd.parent?.opts().workingDir;
43
+ const workingDir = rawWorkingDir
44
+ ? path.resolve(rawWorkingDir)
45
+ : process.cwd();
46
+ const history = new history_1.HistoryManager(configPath, workingDir);
47
+ if (!history.hasHistory()) {
48
+ console.error('No history found. Run avanti pull first.');
49
+ process.exit(2);
50
+ }
51
+ const pulls = history.listPulls(); // newest first
52
+ if (pulls.length === 0) {
53
+ console.log('No pull history recorded yet.');
54
+ process.exit(0);
55
+ }
56
+ let targetPullId;
57
+ if (pullId === undefined) {
58
+ // Undo the last pull: restore state from before it (second entry, or pre-avanti)
59
+ targetPullId = pulls[0].pullId;
60
+ }
61
+ else {
62
+ const matched = pulls.find((p) => p.pullId === pullId || p.pullId.startsWith(pullId));
63
+ if (!matched) {
64
+ console.error(`No pull found matching ID "${pullId}".`);
65
+ process.exit(2);
66
+ }
67
+ targetPullId = matched.pullId;
68
+ }
69
+ // When undoing the last pull, we want the state BEFORE it — i.e. the second pull's state
70
+ // When reverting TO a specific pull, we want the state AFTER that pull
71
+ let snapshot;
72
+ if (pullId === undefined) {
73
+ // Undo last pull: use the second-most-recent pull as target, or if none, pre-avanti
74
+ snapshot =
75
+ pulls.length > 1
76
+ ? history.getFilesAtPull(pulls[1].pullId)
77
+ : new Map(); // no prior pull → everything goes to pre-avanti state
78
+ }
79
+ else {
80
+ snapshot = history.getFilesAtPull(targetPullId);
81
+ }
82
+ // Build restore plan
83
+ const writeTargets = [];
84
+ const deletions = [];
85
+ const diffs = [];
86
+ const allTracked = history.listTrackedFiles();
87
+ for (const meta of allTracked) {
88
+ const entry = snapshot.get(meta.absolutePath);
89
+ if (entry !== undefined) {
90
+ // File existed at target pull — restore that version
91
+ const content = history.readVersion(meta.absolutePath, entry.version);
92
+ if (content === null)
93
+ continue;
94
+ const d = (0, diff_1.computeDiff)(meta.absolutePath, content);
95
+ if (d.hasChanges) {
96
+ writeTargets.push({ targetPath: meta.absolutePath, content });
97
+ diffs.push(d);
98
+ }
99
+ }
100
+ else {
101
+ // File was not present at target pull — go to pre-avanti state
102
+ if (meta.existedBeforeAvanti) {
103
+ const original = history.readVersion(meta.absolutePath, 0);
104
+ if (original !== null) {
105
+ const d = (0, diff_1.computeDiff)(meta.absolutePath, original);
106
+ if (d.hasChanges) {
107
+ writeTargets.push({
108
+ targetPath: meta.absolutePath,
109
+ content: original,
110
+ });
111
+ diffs.push(d);
112
+ }
113
+ }
114
+ }
115
+ else {
116
+ const d = (0, diff_1.computeDeleteDiff)(meta.absolutePath);
117
+ if (d.hasChanges) {
118
+ deletions.push(meta.absolutePath);
119
+ diffs.push(d);
120
+ }
121
+ }
122
+ }
123
+ }
124
+ if (diffs.length === 0) {
125
+ console.log('Nothing to revert — files already match the target state.');
126
+ process.exit(0);
127
+ }
128
+ const shortId = targetPullId.slice(0, 8);
129
+ const label = pullId === undefined
130
+ ? `Undoing last pull (${shortId})`
131
+ : `Reverting to state after pull ${shortId}`;
132
+ console.log(`${label}:\n`);
133
+ (0, diff_1.printDiffs)(diffs);
134
+ const yes = opts.yes ?? false;
135
+ if (!yes) {
136
+ const ok = await (0, prompt_1.confirm)('Apply? [y/N] ');
137
+ if (!ok) {
138
+ console.log('Aborted.');
139
+ process.exit(0);
140
+ }
141
+ }
142
+ try {
143
+ (0, writer_1.atomicWrite)(writeTargets, deletions);
144
+ console.log(`Reverted ${writeTargets.length + deletions.length} file(s).`);
145
+ }
146
+ catch (err) {
147
+ console.error(`Revert failed: ${err.message}`);
148
+ process.exit(2);
149
+ }
150
+ });
151
+ }
152
+ exports.revertCommand = revertCommand;
153
+ //# sourceMappingURL=revert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revert.js","sourceRoot":"","sources":["../../src/commands/revert.ts"],"names":[],"mappings":"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"}
package/dist/diff.d.ts CHANGED
@@ -5,6 +5,7 @@ export interface FileDiff {
5
5
  hasChanges: boolean;
6
6
  patch: string;
7
7
  }
8
+ export declare function computeDeleteDiff(targetPath: string): FileDiff;
8
9
  export declare function computeDiff(targetPath: string, newContent: string): FileDiff;
9
10
  export declare function formatDiff(diff: FileDiff): string;
10
11
  export declare function printDiffs(diffs: FileDiff[]): void;
@@ -1 +1 @@
1
- {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../src/diff.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGpC,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,QAAQ,CAgB5E;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAajD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CASlD;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAC1B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,IAAI,GAAE,SAAc,GACnB,MAAM,CA2BR"}
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../src/diff.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGpC,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,CAc9D;AAED,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,QAAQ,CAgB5E;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAajD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CASlD;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAC1B,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,IAAI,GAAE,SAAc,GACnB,MAAM,CA2BR"}
package/dist/diff.js CHANGED
@@ -26,12 +26,21 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.resolveTargetPath = exports.printDiffs = exports.formatDiff = exports.computeDiff = void 0;
29
+ exports.resolveTargetPath = exports.printDiffs = exports.formatDiff = exports.computeDiff = exports.computeDeleteDiff = void 0;
30
30
  const fs = __importStar(require("fs"));
31
31
  const path = __importStar(require("path"));
32
32
  const diff_1 = require("diff");
33
33
  const chalk_1 = __importDefault(require("chalk"));
34
34
  const variables_1 = require("./variables");
35
+ function computeDeleteDiff(targetPath) {
36
+ if (!fs.existsSync(targetPath)) {
37
+ return { targetPath, isNew: false, hasChanges: false, patch: '' };
38
+ }
39
+ const oldContent = fs.readFileSync(targetPath, 'utf8');
40
+ const patch = (0, diff_1.createTwoFilesPatch)(targetPath, '/dev/null', oldContent, '', undefined, 'deleted');
41
+ return { targetPath, isNew: false, hasChanges: true, patch };
42
+ }
43
+ exports.computeDeleteDiff = computeDeleteDiff;
35
44
  function computeDiff(targetPath, newContent) {
36
45
  const isNew = !fs.existsSync(targetPath);
37
46
  const oldContent = isNew ? '' : fs.readFileSync(targetPath, 'utf8');
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,3 @@
1
+ /// <reference types="node" />
2
+ export declare function fetchWithRetry(url: string, options?: RequestInit): Promise<Response>;
3
+ //# sourceMappingURL=fetch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":";AA0BA,wBAAsB,cAAc,CAClC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,QAAQ,CAAC,CAQnB"}
package/dist/fetch.js ADDED
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchWithRetry = void 0;
4
+ const MAX_RETRIES = 5;
5
+ const BASE_DELAY_MS = 1_000;
6
+ const MAX_DELAY_MS = 60_000;
7
+ function sleep(ms) {
8
+ return new Promise((resolve) => setTimeout(resolve, ms));
9
+ }
10
+ function retryDelayMs(attempt, headers) {
11
+ // Retry-After: seconds to wait (GitHub secondary rate limit, GitLab)
12
+ const retryAfter = headers.get('Retry-After');
13
+ if (retryAfter) {
14
+ const secs = parseInt(retryAfter, 10);
15
+ if (!isNaN(secs) && secs > 0)
16
+ return Math.min(secs * 1_000, MAX_DELAY_MS);
17
+ }
18
+ // X-RateLimit-Reset: Unix timestamp when the limit resets (GitHub primary rate limit)
19
+ const resetAt = headers.get('X-RateLimit-Reset');
20
+ if (resetAt) {
21
+ const waitMs = parseInt(resetAt, 10) * 1_000 - Date.now();
22
+ if (waitMs > 0)
23
+ return Math.min(waitMs, MAX_DELAY_MS);
24
+ }
25
+ return Math.min(BASE_DELAY_MS * 2 ** attempt, MAX_DELAY_MS);
26
+ }
27
+ async function fetchWithRetry(url, options = {}) {
28
+ for (let attempt = 0;; attempt++) {
29
+ const res = await fetch(url, options);
30
+ const shouldRetry = res.status === 429 || (res.status >= 500 && res.status <= 599);
31
+ if (!shouldRetry || attempt >= MAX_RETRIES)
32
+ return res;
33
+ await sleep(retryDelayMs(attempt, res.headers));
34
+ }
35
+ }
36
+ exports.fetchWithRetry = fetchWithRetry;
37
+ //# sourceMappingURL=fetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":";;;AAAA,MAAM,WAAW,GAAG,CAAC,CAAC;AACtB,MAAM,aAAa,GAAG,KAAK,CAAC;AAC5B,MAAM,YAAY,GAAG,MAAM,CAAC;AAE5B,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,YAAY,CAAC,OAAe,EAAE,OAAgB;IACrD,qEAAqE;IACrE,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC9C,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,EAAE,YAAY,CAAC,CAAC;IAC5E,CAAC;IAED,sFAAsF;IACtF,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACjD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC1D,IAAI,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,CAAC,IAAI,OAAO,EAAE,YAAY,CAAC,CAAC;AAC9D,CAAC;AAEM,KAAK,UAAU,cAAc,CAClC,GAAW,EACX,UAAuB,EAAE;IAEzB,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,EAAE,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACtC,MAAM,WAAW,GACf,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC;QACjE,IAAI,CAAC,WAAW,IAAI,OAAO,IAAI,WAAW;YAAE,OAAO,GAAG,CAAC;QACvD,MAAM,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AAXD,wCAWC"}
@@ -0,0 +1,64 @@
1
+ export interface FileHistoryMeta {
2
+ absolutePath: string;
3
+ slug: string;
4
+ firstSeenAt: string;
5
+ existedBeforeAvanti: boolean;
6
+ currentVersion: number;
7
+ }
8
+ export interface PullLogEntry {
9
+ pullId: string;
10
+ timestamp: string;
11
+ configFile: string;
12
+ files: PullLogFileRef[];
13
+ }
14
+ export interface PullLogFileRef {
15
+ absolutePath: string;
16
+ slug: string;
17
+ version: number;
18
+ wasNew: boolean;
19
+ }
20
+ export interface FileVersionInfo {
21
+ version: number;
22
+ isOriginal: boolean;
23
+ pulledAt: string | null;
24
+ pullId: string | null;
25
+ }
26
+ export interface FileHistory {
27
+ absolutePath: string;
28
+ existedBeforeAvanti: boolean;
29
+ currentVersion: number;
30
+ versions: FileVersionInfo[];
31
+ }
32
+ export declare class HistoryManager {
33
+ private readonly baseDir;
34
+ private readonly projectSlug;
35
+ private readonly projectDir;
36
+ private readonly filesDir;
37
+ private readonly indexPath;
38
+ private readonly pullsLogPath;
39
+ private readonly configFile;
40
+ private readonly workingDir;
41
+ constructor(configFile: string, workingDir: string);
42
+ ensureStorageDir(): boolean;
43
+ openPullSession(): string;
44
+ stageFileVersion(pullId: string, targetPath: string, newContent: string, isNew: boolean): {
45
+ version: number;
46
+ fileRef: PullLogFileRef;
47
+ };
48
+ closePullSession(pullId: string, configFile: string, fileRefs: PullLogFileRef[]): void;
49
+ listPulls(): PullLogEntry[];
50
+ getFileHistory(absolutePath: string): FileHistory | null;
51
+ readVersion(absolutePath: string, version: number): string | null;
52
+ getFileMeta(absolutePath: string): FileHistoryMeta | null;
53
+ getFilesAtPull(pullId: string): Map<string, {
54
+ version: number;
55
+ existedBeforeAvanti: boolean;
56
+ }>;
57
+ listTrackedFiles(): FileHistoryMeta[];
58
+ getLastPullFiles(): PullLogFileRef[];
59
+ hasHistory(): boolean;
60
+ private readIndex;
61
+ private writeIndex;
62
+ private readMeta;
63
+ }
64
+ //# sourceMappingURL=history.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../src/history.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAiBD,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAWlD,gBAAgB,IAAI,OAAO;IAwB3B,eAAe,IAAI,MAAM;IAIzB,gBAAgB,CACd,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,OAAO,GACb;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,cAAc,CAAA;KAAE;IA2C/C,gBAAgB,CACd,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,cAAc,EAAE,GACzB,IAAI;IAqBP,SAAS,IAAI,YAAY,EAAE;IAqB3B,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAuDxD,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAajE,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAWzD,cAAc,CACZ,MAAM,EAAE,MAAM,GACb,GAAG,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,OAAO,CAAA;KAAE,CAAC;IA2CjE,gBAAgB,IAAI,eAAe,EAAE;IAcrC,gBAAgB,IAAI,cAAc,EAAE;IAMpC,UAAU,IAAI,OAAO;IAIrB,OAAO,CAAC,SAAS;IAYjB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,QAAQ;CASjB"}