@udondan/avanti 0.1.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 (67) hide show
  1. package/.claude/settings.local.json +9 -0
  2. package/.prettierignore +2 -0
  3. package/LICENSE +21 -0
  4. package/README.md +169 -0
  5. package/dist/cli.d.ts +3 -0
  6. package/dist/cli.d.ts.map +1 -0
  7. package/dist/cli.js +16 -0
  8. package/dist/cli.js.map +1 -0
  9. package/dist/commands/diff.d.ts +3 -0
  10. package/dist/commands/diff.d.ts.map +1 -0
  11. package/dist/commands/diff.js +76 -0
  12. package/dist/commands/diff.js.map +1 -0
  13. package/dist/commands/pull.d.ts +3 -0
  14. package/dist/commands/pull.d.ts.map +1 -0
  15. package/dist/commands/pull.js +115 -0
  16. package/dist/commands/pull.js.map +1 -0
  17. package/dist/config.d.ts +4 -0
  18. package/dist/config.d.ts.map +1 -0
  19. package/dist/config.js +181 -0
  20. package/dist/config.js.map +1 -0
  21. package/dist/diff.d.ts +13 -0
  22. package/dist/diff.d.ts.map +1 -0
  23. package/dist/diff.js +83 -0
  24. package/dist/diff.js.map +1 -0
  25. package/dist/processors/post.d.ts +2 -0
  26. package/dist/processors/post.d.ts.map +1 -0
  27. package/dist/processors/post.js +20 -0
  28. package/dist/processors/post.js.map +1 -0
  29. package/dist/processors/replace.d.ts +3 -0
  30. package/dist/processors/replace.d.ts.map +1 -0
  31. package/dist/processors/replace.js +25 -0
  32. package/dist/processors/replace.js.map +1 -0
  33. package/dist/sources/exec.d.ts +2 -0
  34. package/dist/sources/exec.d.ts.map +1 -0
  35. package/dist/sources/exec.js +17 -0
  36. package/dist/sources/exec.js.map +1 -0
  37. package/dist/sources/github.d.ts +5 -0
  38. package/dist/sources/github.d.ts.map +1 -0
  39. package/dist/sources/github.js +90 -0
  40. package/dist/sources/github.js.map +1 -0
  41. package/dist/sources/gitlab.d.ts +6 -0
  42. package/dist/sources/gitlab.d.ts.map +1 -0
  43. package/dist/sources/gitlab.js +105 -0
  44. package/dist/sources/gitlab.js.map +1 -0
  45. package/dist/sources/http.d.ts +3 -0
  46. package/dist/sources/http.d.ts.map +1 -0
  47. package/dist/sources/http.js +66 -0
  48. package/dist/sources/http.js.map +1 -0
  49. package/dist/sources/index.d.ts +6 -0
  50. package/dist/sources/index.d.ts.map +1 -0
  51. package/dist/sources/index.js +105 -0
  52. package/dist/sources/index.js.map +1 -0
  53. package/dist/sources/local.d.ts +5 -0
  54. package/dist/sources/local.d.ts.map +1 -0
  55. package/dist/sources/local.js +64 -0
  56. package/dist/sources/local.js.map +1 -0
  57. package/dist/types.d.ts +34 -0
  58. package/dist/types.d.ts.map +1 -0
  59. package/dist/types.js +3 -0
  60. package/dist/types.js.map +1 -0
  61. package/dist/writer.d.ts +7 -0
  62. package/dist/writer.d.ts.map +1 -0
  63. package/dist/writer.js +57 -0
  64. package/dist/writer.js.map +1 -0
  65. package/eslint.config.mjs +25 -0
  66. package/package.json +45 -0
  67. package/prettier.config.mjs +5 -0
package/dist/diff.d.ts ADDED
@@ -0,0 +1,13 @@
1
+ export interface FileDiff {
2
+ targetPath: string;
3
+ isNew: boolean;
4
+ hasChanges: boolean;
5
+ patch: string;
6
+ }
7
+ export declare function computeDiff(targetPath: string, newContent: string): FileDiff;
8
+ export declare function formatDiff(diff: FileDiff): string;
9
+ export declare function printDiffs(diffs: FileDiff[]): void;
10
+ export declare function resolveTargetPath(entry: {
11
+ target?: string;
12
+ }, relPath: string, baseDir: string): string;
13
+ //# sourceMappingURL=diff.d.ts.map
@@ -0,0 +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,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,OAAO,EAAE,MAAM,GACd,MAAM,CAUR"}
package/dist/diff.js ADDED
@@ -0,0 +1,83 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.resolveTargetPath = exports.printDiffs = exports.formatDiff = exports.computeDiff = void 0;
30
+ const fs = __importStar(require("fs"));
31
+ const path = __importStar(require("path"));
32
+ const diff_1 = require("diff");
33
+ const chalk_1 = __importDefault(require("chalk"));
34
+ function computeDiff(targetPath, newContent) {
35
+ const isNew = !fs.existsSync(targetPath);
36
+ const oldContent = isNew ? "" : fs.readFileSync(targetPath, "utf8");
37
+ const hasChanges = oldContent !== newContent;
38
+ const patch = (0, diff_1.createTwoFilesPatch)(isNew ? "/dev/null" : targetPath, targetPath, oldContent, newContent, isNew ? "" : undefined, isNew ? "new file" : undefined);
39
+ return { targetPath, isNew, hasChanges, patch };
40
+ }
41
+ exports.computeDiff = computeDiff;
42
+ function formatDiff(diff) {
43
+ if (!diff.hasChanges)
44
+ return "";
45
+ const lines = diff.patch.split("\n");
46
+ const colored = lines.map((line) => {
47
+ if (line.startsWith("+++") || line.startsWith("---"))
48
+ return chalk_1.default.bold(line);
49
+ if (line.startsWith("@@"))
50
+ return chalk_1.default.cyan(line);
51
+ if (line.startsWith("+"))
52
+ return chalk_1.default.green(line);
53
+ if (line.startsWith("-"))
54
+ return chalk_1.default.red(line);
55
+ return line;
56
+ });
57
+ return colored.join("\n");
58
+ }
59
+ exports.formatDiff = formatDiff;
60
+ function printDiffs(diffs) {
61
+ const changed = diffs.filter((d) => d.hasChanges);
62
+ if (!changed.length) {
63
+ console.log("No changes.");
64
+ return;
65
+ }
66
+ for (const d of changed) {
67
+ console.log(formatDiff(d));
68
+ }
69
+ }
70
+ exports.printDiffs = printDiffs;
71
+ function resolveTargetPath(entry, relPath, baseDir) {
72
+ if (entry.target) {
73
+ // If target looks like a directory (ends with /) or the relPath has subdirs, join them
74
+ if (entry.target.endsWith("/") || entry.target.endsWith(path.sep)) {
75
+ return path.resolve(baseDir, entry.target, relPath);
76
+ }
77
+ // Single file: use target directly
78
+ return path.resolve(baseDir, entry.target);
79
+ }
80
+ return path.resolve(baseDir, relPath);
81
+ }
82
+ exports.resolveTargetPath = resolveTargetPath;
83
+ //# sourceMappingURL=diff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.js","sourceRoot":"","sources":["../src/diff.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function applyPost(content: string, script: string): string;
2
+ //# sourceMappingURL=post.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"post.d.ts","sourceRoot":"","sources":["../../src/processors/post.ts"],"names":[],"mappings":"AAEA,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAejE"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.applyPost = void 0;
4
+ const child_process_1 = require("child_process");
5
+ function applyPost(content, script) {
6
+ const result = (0, child_process_1.spawnSync)("sh", ["-c", script], {
7
+ input: content,
8
+ encoding: "utf8",
9
+ });
10
+ if (result.status !== null && result.status !== 0) {
11
+ const stderr = result.stderr?.trim() ?? "";
12
+ throw new Error(`post script exited with code ${result.status}${stderr ? ": " + stderr : ""}`);
13
+ }
14
+ if (result.error) {
15
+ throw new Error(`post script failed to spawn: ${result.error.message}`);
16
+ }
17
+ return result.stdout;
18
+ }
19
+ exports.applyPost = applyPost;
20
+ //# sourceMappingURL=post.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"post.js","sourceRoot":"","sources":["../../src/processors/post.ts"],"names":[],"mappings":";;;AAAA,iDAA0C;AAE1C,SAAgB,SAAS,CAAC,OAAe,EAAE,MAAc;IACvD,MAAM,MAAM,GAAG,IAAA,yBAAS,EAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;QAC7C,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,MAAM;KACjB,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CACb,gCAAgC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAC9E,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,gCAAgC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;AACvB,CAAC;AAfD,8BAeC"}
@@ -0,0 +1,3 @@
1
+ import { ReplaceRule } from "../types";
2
+ export declare function applyReplace(content: string, rules: ReplaceRule[]): string;
3
+ //# sourceMappingURL=replace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replace.d.ts","sourceRoot":"","sources":["../../src/processors/replace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAUvC,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,CAW1E"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.applyReplace = void 0;
4
+ function parseFrom(from) {
5
+ const match = from.match(/^\/(.+)\/([gimsuy]*)$/);
6
+ if (match) {
7
+ return new RegExp(match[1], match[2]);
8
+ }
9
+ return from;
10
+ }
11
+ function applyReplace(content, rules) {
12
+ let result = content;
13
+ for (const rule of rules) {
14
+ const pattern = parseFrom(rule.from);
15
+ if (typeof pattern === "string") {
16
+ result = result.split(pattern).join(rule.to);
17
+ }
18
+ else {
19
+ result = result.replace(pattern, rule.to);
20
+ }
21
+ }
22
+ return result;
23
+ }
24
+ exports.applyReplace = applyReplace;
25
+ //# sourceMappingURL=replace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replace.js","sourceRoot":"","sources":["../../src/processors/replace.ts"],"names":[],"mappings":";;;AAEA,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAClD,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,YAAY,CAAC,OAAe,EAAE,KAAoB;IAChE,IAAI,MAAM,GAAG,OAAO,CAAC;IACrB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAXD,oCAWC"}
@@ -0,0 +1,2 @@
1
+ export declare function fetchExec(command: string): string;
2
+ //# sourceMappingURL=exec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../src/sources/exec.ts"],"names":[],"mappings":"AAEA,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAYjD"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchExec = void 0;
4
+ const child_process_1 = require("child_process");
5
+ function fetchExec(command) {
6
+ const result = (0, child_process_1.spawnSync)("sh", ["-c", command], { encoding: "utf8" });
7
+ if (result.error) {
8
+ throw new Error(`exec failed to spawn: ${result.error.message}`);
9
+ }
10
+ if (result.status !== 0) {
11
+ const stderr = result.stderr?.trim() ?? "";
12
+ throw new Error(`exec exited with code ${result.status}${stderr ? ": " + stderr : ""}`);
13
+ }
14
+ return result.stdout;
15
+ }
16
+ exports.fetchExec = fetchExec;
17
+ //# sourceMappingURL=exec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exec.js","sourceRoot":"","sources":["../../src/sources/exec.ts"],"names":[],"mappings":";;;AAAA,iDAA0C;AAE1C,SAAgB,SAAS,CAAC,OAAe;IACvC,MAAM,MAAM,GAAG,IAAA,yBAAS,EAAC,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IACtE,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CACb,yBAAyB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACvE,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;AACvB,CAAC;AAZD,8BAYC"}
@@ -0,0 +1,5 @@
1
+ export interface GitHubResult {
2
+ files: Map<string, string>;
3
+ }
4
+ export declare function fetchGitHub(repo: string, file: string, ref: string | undefined): GitHubResult;
5
+ //# sourceMappingURL=github.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/sources/github.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5B;AAuDD,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GAAG,SAAS,GACtB,YAAY,CAsBd"}
@@ -0,0 +1,90 @@
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.fetchGitHub = void 0;
27
+ const child_process_1 = require("child_process");
28
+ const path = __importStar(require("path"));
29
+ function ghRun(args) {
30
+ const result = (0, child_process_1.spawnSync)("gh", args, { encoding: "utf8" });
31
+ if (result.error) {
32
+ const msg = result.error.message ?? "";
33
+ if (msg.includes("ENOENT")) {
34
+ throw new Error("gh CLI not found. Install it from https://cli.github.com");
35
+ }
36
+ throw new Error(`gh error: ${msg}`);
37
+ }
38
+ return {
39
+ stdout: result.stdout ?? "",
40
+ stderr: result.stderr ?? "",
41
+ status: result.status,
42
+ };
43
+ }
44
+ function fetchFile(repo, filePath, ref) {
45
+ const res = ghRun([
46
+ "api",
47
+ `repos/${repo}/contents/${filePath}?ref=${encodeURIComponent(ref)}`,
48
+ "--jq",
49
+ ".content",
50
+ ]);
51
+ if (res.status !== 0) {
52
+ throw new Error(`Failed to fetch ${filePath} from ${repo}@${ref}: ${res.stderr}`);
53
+ }
54
+ const b64 = res.stdout.trim().replace(/\\n/g, "").replace(/\n/g, "");
55
+ return Buffer.from(b64, "base64").toString("utf8");
56
+ }
57
+ function listTree(repo, dirPath, ref) {
58
+ const res = ghRun([
59
+ "api",
60
+ `repos/${repo}/git/trees/${encodeURIComponent(ref)}?recursive=1`,
61
+ "--jq",
62
+ `.tree[] | select(.type == "blob") | select(.path | startswith("${dirPath}/")) | .path`,
63
+ ]);
64
+ if (res.status !== 0) {
65
+ throw new Error(`Failed to list tree ${dirPath} in ${repo}@${ref}: ${res.stderr}`);
66
+ }
67
+ return res.stdout.trim().split("\n").filter(Boolean);
68
+ }
69
+ function fetchGitHub(repo, file, ref) {
70
+ const resolvedRef = ref ?? "HEAD";
71
+ const files = new Map();
72
+ try {
73
+ const content = fetchFile(repo, file, resolvedRef);
74
+ files.set(path.basename(file), content);
75
+ }
76
+ catch {
77
+ const paths = listTree(repo, file, resolvedRef);
78
+ if (!paths.length) {
79
+ throw new Error(`Failed to fetch ${file} from ${repo}@${resolvedRef} (not a file or empty directory)`);
80
+ }
81
+ for (const p of paths) {
82
+ const rel = path.relative(file, p);
83
+ const content = fetchFile(repo, p, resolvedRef);
84
+ files.set(rel, content);
85
+ }
86
+ }
87
+ return { files };
88
+ }
89
+ exports.fetchGitHub = fetchGitHub;
90
+ //# sourceMappingURL=github.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/sources/github.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAA0C;AAC1C,2CAA6B;AAM7B,SAAS,KAAK,CAAC,IAAc;IAK3B,MAAM,MAAM,GAAG,IAAA,yBAAS,EAAC,IAAI,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAC3D,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;QACvC,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,0DAA0D,CAC3D,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,aAAa,GAAG,EAAE,CAAC,CAAC;IACtC,CAAC;IACD,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,IAAY,EAAE,QAAgB,EAAE,GAAW;IAC5D,MAAM,GAAG,GAAG,KAAK,CAAC;QAChB,KAAK;QACL,SAAS,IAAI,aAAa,QAAQ,QAAQ,kBAAkB,CAAC,GAAG,CAAC,EAAE;QACnE,MAAM;QACN,UAAU;KACX,CAAC,CAAC;IACH,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,mBAAmB,QAAQ,SAAS,IAAI,IAAI,GAAG,KAAK,GAAG,CAAC,MAAM,EAAE,CACjE,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACrE,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY,EAAE,OAAe,EAAE,GAAW;IAC1D,MAAM,GAAG,GAAG,KAAK,CAAC;QAChB,KAAK;QACL,SAAS,IAAI,cAAc,kBAAkB,CAAC,GAAG,CAAC,cAAc;QAChE,MAAM;QACN,kEAAkE,OAAO,cAAc;KACxF,CAAC,CAAC;IACH,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,uBAAuB,OAAO,OAAO,IAAI,IAAI,GAAG,KAAK,GAAG,CAAC,MAAM,EAAE,CAClE,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACvD,CAAC;AAED,SAAgB,WAAW,CACzB,IAAY,EACZ,IAAY,EACZ,GAAuB;IAEvB,MAAM,WAAW,GAAG,GAAG,IAAI,MAAM,CAAC;IAClC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IAExC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QACnD,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QAChD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CACb,mBAAmB,IAAI,SAAS,IAAI,IAAI,WAAW,kCAAkC,CACtF,CAAC;QACJ,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACnC,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;YAChD,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC;AA1BD,kCA0BC"}
@@ -0,0 +1,6 @@
1
+ export interface GitLabResult {
2
+ /** Map of relative path → content */
3
+ files: Map<string, string>;
4
+ }
5
+ export declare function fetchGitLab(project: string, file: string, ref: string | undefined): GitLabResult;
6
+ //# sourceMappingURL=gitlab.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitlab.d.ts","sourceRoot":"","sources":["../../src/sources/gitlab.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,qCAAqC;IACrC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5B;AA0ED,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GAAG,SAAS,GACtB,YAAY,CAuBd"}
@@ -0,0 +1,105 @@
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.fetchGitLab = void 0;
27
+ const child_process_1 = require("child_process");
28
+ const path = __importStar(require("path"));
29
+ function glabRun(args) {
30
+ const result = (0, child_process_1.spawnSync)("glab", args, { encoding: "utf8" });
31
+ if (result.error) {
32
+ const msg = result.error.message ?? "";
33
+ if (msg.includes("ENOENT")) {
34
+ throw new Error("glab CLI not found. Install it from https://gitlab.com/gitlab-org/cli");
35
+ }
36
+ throw new Error(`glab error: ${msg}`);
37
+ }
38
+ return {
39
+ stdout: result.stdout ?? "",
40
+ stderr: result.stderr ?? "",
41
+ status: result.status,
42
+ };
43
+ }
44
+ function resolveRef(project, ref) {
45
+ if (!ref || ref === "$latest") {
46
+ const res = glabRun([
47
+ "api",
48
+ `projects/${encodeURIComponent(project)}/repository/tags?order_by=version&sort=desc&per_page=1`,
49
+ ]);
50
+ if (res.status !== 0) {
51
+ throw new Error(`Failed to resolve $latest for ${project}: ${res.stderr}`);
52
+ }
53
+ const tags = JSON.parse(res.stdout);
54
+ if (!tags.length) {
55
+ throw new Error(`No tags found for ${project} (needed to resolve $latest)`);
56
+ }
57
+ return tags[0].name;
58
+ }
59
+ return ref;
60
+ }
61
+ function fetchFile(project, filePath, ref) {
62
+ const encodedPath = encodeURIComponent(filePath);
63
+ const res = glabRun([
64
+ "api",
65
+ `projects/${encodeURIComponent(project)}/repository/files/${encodedPath}/raw?ref=${encodeURIComponent(ref)}`,
66
+ ]);
67
+ if (res.status !== 0) {
68
+ throw new Error(`Failed to fetch ${filePath} from ${project}@${ref}: ${res.stderr}`);
69
+ }
70
+ return res.stdout;
71
+ }
72
+ function listTree(project, dirPath, ref) {
73
+ const res = glabRun([
74
+ "api",
75
+ `projects/${encodeURIComponent(project)}/repository/tree?path=${encodeURIComponent(dirPath)}&ref=${encodeURIComponent(ref)}&recursive=true&per_page=100`,
76
+ ]);
77
+ if (res.status !== 0) {
78
+ throw new Error(`Failed to list tree ${dirPath} in ${project}@${ref}: ${res.stderr}`);
79
+ }
80
+ const items = JSON.parse(res.stdout);
81
+ return items.filter((i) => i.type === "blob").map((i) => i.path);
82
+ }
83
+ function fetchGitLab(project, file, ref) {
84
+ const resolvedRef = resolveRef(project, ref);
85
+ const files = new Map();
86
+ try {
87
+ const content = fetchFile(project, file, resolvedRef);
88
+ files.set(path.basename(file), content);
89
+ }
90
+ catch {
91
+ // Try as directory
92
+ const paths = listTree(project, file, resolvedRef);
93
+ if (!paths.length) {
94
+ throw new Error(`Failed to fetch ${file} from ${project}@${resolvedRef} (not a file or empty directory)`);
95
+ }
96
+ for (const p of paths) {
97
+ const rel = path.relative(file, p);
98
+ const content = fetchFile(project, p, resolvedRef);
99
+ files.set(rel, content);
100
+ }
101
+ }
102
+ return { files };
103
+ }
104
+ exports.fetchGitLab = fetchGitLab;
105
+ //# sourceMappingURL=gitlab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitlab.js","sourceRoot":"","sources":["../../src/sources/gitlab.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function inferFilenameFromUrl(url: string): string | undefined;
2
+ export declare function fetchHttp(url: string): Promise<string>;
3
+ //# sourceMappingURL=http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/sources/http.ts"],"names":[],"mappings":"AAIA,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQpE;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAyB5D"}
@@ -0,0 +1,66 @@
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.fetchHttp = exports.inferFilenameFromUrl = void 0;
27
+ const https = __importStar(require("https"));
28
+ const http = __importStar(require("http"));
29
+ const path = __importStar(require("path"));
30
+ function inferFilenameFromUrl(url) {
31
+ try {
32
+ const u = new URL(url);
33
+ const base = path.basename(u.pathname);
34
+ return base || undefined;
35
+ }
36
+ catch {
37
+ return undefined;
38
+ }
39
+ }
40
+ exports.inferFilenameFromUrl = inferFilenameFromUrl;
41
+ async function fetchHttp(url) {
42
+ return new Promise((resolve, reject) => {
43
+ const mod = url.startsWith("https") ? https : http;
44
+ mod
45
+ .get(url, (res) => {
46
+ if (res.statusCode &&
47
+ res.statusCode >= 300 &&
48
+ res.statusCode < 400 &&
49
+ res.headers.location) {
50
+ fetchHttp(res.headers.location).then(resolve).catch(reject);
51
+ return;
52
+ }
53
+ if (res.statusCode && res.statusCode >= 400) {
54
+ reject(new Error(`HTTP ${res.statusCode} fetching ${url}`));
55
+ return;
56
+ }
57
+ const chunks = [];
58
+ res.on("data", (chunk) => chunks.push(chunk));
59
+ res.on("end", () => resolve(Buffer.concat(chunks).toString("utf8")));
60
+ res.on("error", reject);
61
+ })
62
+ .on("error", reject);
63
+ });
64
+ }
65
+ exports.fetchHttp = fetchHttp;
66
+ //# sourceMappingURL=http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/sources/http.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA+B;AAC/B,2CAA6B;AAC7B,2CAA6B;AAE7B,SAAgB,oBAAoB,CAAC,GAAW;IAC9C,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACvC,OAAO,IAAI,IAAI,SAAS,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AARD,oDAQC;AAEM,KAAK,UAAU,SAAS,CAAC,GAAW;IACzC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QACnD,GAAG;aACA,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE;YAChB,IACE,GAAG,CAAC,UAAU;gBACd,GAAG,CAAC,UAAU,IAAI,GAAG;gBACrB,GAAG,CAAC,UAAU,GAAG,GAAG;gBACpB,GAAG,CAAC,OAAO,CAAC,QAAQ,EACpB,CAAC;gBACD,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC5D,OAAO;YACT,CAAC;YACD,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,EAAE,CAAC;gBAC5C,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,UAAU,aAAa,GAAG,EAAE,CAAC,CAAC,CAAC;gBAC5D,OAAO;YACT,CAAC;YACD,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACtD,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACrE,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1B,CAAC,CAAC;aACD,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC;AAzBD,8BAyBC"}
@@ -0,0 +1,6 @@
1
+ import { FileEntry } from "../types";
2
+ export interface FetchResult {
3
+ files: Map<string, string>;
4
+ }
5
+ export declare function fetchSource(entry: FileEntry): Promise<FetchResult>;
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sources/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAW,MAAM,UAAU,CAAC;AAO9C,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5B;AAwCD,wBAAsB,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CA2DxE"}
@@ -0,0 +1,105 @@
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.fetchSource = void 0;
27
+ const path = __importStar(require("path"));
28
+ const http_1 = require("./http");
29
+ const local_1 = require("./local");
30
+ const exec_1 = require("./exec");
31
+ const gitlab_1 = require("./gitlab");
32
+ const github_1 = require("./github");
33
+ async function fetchOneSrc(src) {
34
+ if (typeof src === "string") {
35
+ if (src.startsWith("http://") || src.startsWith("https://")) {
36
+ return (0, http_1.fetchHttp)(src);
37
+ }
38
+ const result = (0, local_1.fetchLocal)(src);
39
+ // For a single-file local result, return the first (and only) value
40
+ const values = Array.from(result.files.values());
41
+ return values.join("\n");
42
+ }
43
+ if ("exec" in src) {
44
+ return (0, exec_1.fetchExec)(src.exec);
45
+ }
46
+ if ("gitlab" in src) {
47
+ const result = (0, gitlab_1.fetchGitLab)(src.gitlab.project, src.gitlab.file, src.gitlab.ref);
48
+ const values = Array.from(result.files.values());
49
+ return values.join("\n");
50
+ }
51
+ if ("github" in src) {
52
+ const result = (0, github_1.fetchGitHub)(src.github.repo, src.github.file, src.github.ref);
53
+ const values = Array.from(result.files.values());
54
+ return values.join("\n");
55
+ }
56
+ throw new Error(`Unknown source type: ${JSON.stringify(src)}`);
57
+ }
58
+ async function fetchSource(entry) {
59
+ const { src } = entry;
60
+ // List src → fetch each, concatenate with newline
61
+ if (Array.isArray(src)) {
62
+ const parts = [];
63
+ for (let i = 0; i < src.length; i++) {
64
+ try {
65
+ parts.push(await fetchOneSrc(src[i]));
66
+ }
67
+ catch (err) {
68
+ const msg = err instanceof Error ? err.message : String(err);
69
+ throw new Error(`[source ${i}] ${msg}`, { cause: err });
70
+ }
71
+ }
72
+ const filename = path.basename(entry.target);
73
+ return { files: new Map([[filename, parts.join("\n")]]) };
74
+ }
75
+ // Single src — original behaviour
76
+ if (typeof src === "string") {
77
+ if (src.startsWith("http://") || src.startsWith("https://")) {
78
+ const content = await (0, http_1.fetchHttp)(src);
79
+ const filename = entry.target
80
+ ? path.basename(entry.target)
81
+ : ((0, http_1.inferFilenameFromUrl)(src) ?? "download");
82
+ return { files: new Map([[filename, content]]) };
83
+ }
84
+ // Local path (absolute, ~/, or relative)
85
+ const result = (0, local_1.fetchLocal)(src);
86
+ return { files: result.files };
87
+ }
88
+ // Map sources
89
+ if ("exec" in src) {
90
+ const content = (0, exec_1.fetchExec)(src.exec);
91
+ const filename = path.basename(entry.target); // target required, validated in config
92
+ return { files: new Map([[filename, content]]) };
93
+ }
94
+ if ("gitlab" in src) {
95
+ const result = (0, gitlab_1.fetchGitLab)(src.gitlab.project, src.gitlab.file, src.gitlab.ref);
96
+ return { files: result.files };
97
+ }
98
+ if ("github" in src) {
99
+ const result = (0, github_1.fetchGitHub)(src.github.repo, src.github.file, src.github.ref);
100
+ return { files: result.files };
101
+ }
102
+ throw new Error(`Unknown source type: ${JSON.stringify(src)}`);
103
+ }
104
+ exports.fetchSource = fetchSource;
105
+ //# sourceMappingURL=index.js.map