filedist 0.21.2

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 (154) hide show
  1. package/README.md +631 -0
  2. package/dist/cli/actions/check.d.ts +6 -0
  3. package/dist/cli/actions/check.d.ts.map +1 -0
  4. package/dist/cli/actions/check.js +36 -0
  5. package/dist/cli/actions/check.js.map +1 -0
  6. package/dist/cli/actions/extract.d.ts +7 -0
  7. package/dist/cli/actions/extract.d.ts.map +1 -0
  8. package/dist/cli/actions/extract.js +60 -0
  9. package/dist/cli/actions/extract.js.map +1 -0
  10. package/dist/cli/actions/init.d.ts +6 -0
  11. package/dist/cli/actions/init.d.ts.map +1 -0
  12. package/dist/cli/actions/init.js +30 -0
  13. package/dist/cli/actions/init.js.map +1 -0
  14. package/dist/cli/actions/list.d.ts +7 -0
  15. package/dist/cli/actions/list.d.ts.map +1 -0
  16. package/dist/cli/actions/list.js +30 -0
  17. package/dist/cli/actions/list.js.map +1 -0
  18. package/dist/cli/actions/presets.d.ts +7 -0
  19. package/dist/cli/actions/presets.d.ts.map +1 -0
  20. package/dist/cli/actions/presets.js +34 -0
  21. package/dist/cli/actions/presets.js.map +1 -0
  22. package/dist/cli/actions/purge.d.ts +6 -0
  23. package/dist/cli/actions/purge.d.ts.map +1 -0
  24. package/dist/cli/actions/purge.js +39 -0
  25. package/dist/cli/actions/purge.js.map +1 -0
  26. package/dist/cli/argv.d.ts +52 -0
  27. package/dist/cli/argv.d.ts.map +1 -0
  28. package/dist/cli/argv.js +172 -0
  29. package/dist/cli/argv.js.map +1 -0
  30. package/dist/cli/bin.d.ts +3 -0
  31. package/dist/cli/bin.d.ts.map +1 -0
  32. package/dist/cli/bin.js +10 -0
  33. package/dist/cli/bin.js.map +1 -0
  34. package/dist/cli/binpkg.d.ts +13 -0
  35. package/dist/cli/binpkg.d.ts.map +1 -0
  36. package/dist/cli/binpkg.js +38 -0
  37. package/dist/cli/binpkg.js.map +1 -0
  38. package/dist/cli/cli.d.ts +11 -0
  39. package/dist/cli/cli.d.ts.map +1 -0
  40. package/dist/cli/cli.js +118 -0
  41. package/dist/cli/cli.js.map +1 -0
  42. package/dist/cli/progress.d.ts +6 -0
  43. package/dist/cli/progress.d.ts.map +1 -0
  44. package/dist/cli/progress.js +12 -0
  45. package/dist/cli/progress.js.map +1 -0
  46. package/dist/cli/usage.d.ts +6 -0
  47. package/dist/cli/usage.d.ts.map +1 -0
  48. package/dist/cli/usage.js +151 -0
  49. package/dist/cli/usage.js.map +1 -0
  50. package/dist/fileset/check.d.ts +15 -0
  51. package/dist/fileset/check.d.ts.map +1 -0
  52. package/dist/fileset/check.js +70 -0
  53. package/dist/fileset/check.js.map +1 -0
  54. package/dist/fileset/constants.d.ts +18 -0
  55. package/dist/fileset/constants.d.ts.map +1 -0
  56. package/dist/fileset/constants.js +30 -0
  57. package/dist/fileset/constants.js.map +1 -0
  58. package/dist/fileset/diff.d.ts +16 -0
  59. package/dist/fileset/diff.d.ts.map +1 -0
  60. package/dist/fileset/diff.js +111 -0
  61. package/dist/fileset/diff.js.map +1 -0
  62. package/dist/fileset/execute.d.ts +29 -0
  63. package/dist/fileset/execute.d.ts.map +1 -0
  64. package/dist/fileset/execute.js +153 -0
  65. package/dist/fileset/execute.js.map +1 -0
  66. package/dist/fileset/gitignore.d.ts +20 -0
  67. package/dist/fileset/gitignore.d.ts.map +1 -0
  68. package/dist/fileset/gitignore.js +94 -0
  69. package/dist/fileset/gitignore.js.map +1 -0
  70. package/dist/fileset/index.d.ts +5 -0
  71. package/dist/fileset/index.d.ts.map +1 -0
  72. package/dist/fileset/index.js +22 -0
  73. package/dist/fileset/index.js.map +1 -0
  74. package/dist/fileset/markers.d.ts +22 -0
  75. package/dist/fileset/markers.d.ts.map +1 -0
  76. package/dist/fileset/markers.js +74 -0
  77. package/dist/fileset/markers.js.map +1 -0
  78. package/dist/fileset/package-files.d.ts +21 -0
  79. package/dist/fileset/package-files.d.ts.map +1 -0
  80. package/dist/fileset/package-files.js +102 -0
  81. package/dist/fileset/package-files.js.map +1 -0
  82. package/dist/fileset/purge.d.ts +18 -0
  83. package/dist/fileset/purge.d.ts.map +1 -0
  84. package/dist/fileset/purge.js +94 -0
  85. package/dist/fileset/purge.js.map +1 -0
  86. package/dist/fileset/test-utils.d.ts +21 -0
  87. package/dist/fileset/test-utils.d.ts.map +1 -0
  88. package/dist/fileset/test-utils.js +94 -0
  89. package/dist/fileset/test-utils.js.map +1 -0
  90. package/dist/index.d.ts +14 -0
  91. package/dist/index.d.ts.map +1 -0
  92. package/dist/index.js +19 -0
  93. package/dist/index.js.map +1 -0
  94. package/dist/package/action-check.d.ts +20 -0
  95. package/dist/package/action-check.d.ts.map +1 -0
  96. package/dist/package/action-check.js +65 -0
  97. package/dist/package/action-check.js.map +1 -0
  98. package/dist/package/action-extract.d.ts +20 -0
  99. package/dist/package/action-extract.d.ts.map +1 -0
  100. package/dist/package/action-extract.js +280 -0
  101. package/dist/package/action-extract.js.map +1 -0
  102. package/dist/package/action-init.d.ts +13 -0
  103. package/dist/package/action-init.d.ts.map +1 -0
  104. package/dist/package/action-init.js +83 -0
  105. package/dist/package/action-init.js.map +1 -0
  106. package/dist/package/action-list.d.ts +11 -0
  107. package/dist/package/action-list.d.ts.map +1 -0
  108. package/dist/package/action-list.js +12 -0
  109. package/dist/package/action-list.js.map +1 -0
  110. package/dist/package/action-purge.d.ts +19 -0
  111. package/dist/package/action-purge.d.ts.map +1 -0
  112. package/dist/package/action-purge.js +135 -0
  113. package/dist/package/action-purge.js.map +1 -0
  114. package/dist/package/calculate-diff.d.ts +12 -0
  115. package/dist/package/calculate-diff.d.ts.map +1 -0
  116. package/dist/package/calculate-diff.js +129 -0
  117. package/dist/package/calculate-diff.js.map +1 -0
  118. package/dist/package/config-merge.d.ts +19 -0
  119. package/dist/package/config-merge.d.ts.map +1 -0
  120. package/dist/package/config-merge.js +65 -0
  121. package/dist/package/config-merge.js.map +1 -0
  122. package/dist/package/config.d.ts +24 -0
  123. package/dist/package/config.d.ts.map +1 -0
  124. package/dist/package/config.js +86 -0
  125. package/dist/package/config.js.map +1 -0
  126. package/dist/package/content-replacements.d.ts +21 -0
  127. package/dist/package/content-replacements.d.ts.map +1 -0
  128. package/dist/package/content-replacements.js +94 -0
  129. package/dist/package/content-replacements.js.map +1 -0
  130. package/dist/package/index.d.ts +10 -0
  131. package/dist/package/index.d.ts.map +1 -0
  132. package/dist/package/index.js +16 -0
  133. package/dist/package/index.js.map +1 -0
  134. package/dist/package/resolve-files.d.ts +29 -0
  135. package/dist/package/resolve-files.d.ts.map +1 -0
  136. package/dist/package/resolve-files.js +225 -0
  137. package/dist/package/resolve-files.js.map +1 -0
  138. package/dist/package/source.d.ts +20 -0
  139. package/dist/package/source.d.ts.map +1 -0
  140. package/dist/package/source.js +193 -0
  141. package/dist/package/source.js.map +1 -0
  142. package/dist/package/symlinks.d.ts +25 -0
  143. package/dist/package/symlinks.d.ts.map +1 -0
  144. package/dist/package/symlinks.js +203 -0
  145. package/dist/package/symlinks.js.map +1 -0
  146. package/dist/types.d.ts +345 -0
  147. package/dist/types.d.ts.map +1 -0
  148. package/dist/types.js +3 -0
  149. package/dist/types.js.map +1 -0
  150. package/dist/utils.d.ts +60 -0
  151. package/dist/utils.d.ts.map +1 -0
  152. package/dist/utils.js +341 -0
  153. package/dist/utils.js.map +1 -0
  154. package/package.json +58 -0
@@ -0,0 +1,225 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.resolveFiles = resolveFiles;
7
+ exports.resolveFilesDetailed = resolveFilesDetailed;
8
+ /* eslint-disable no-console */
9
+ const node_path_1 = __importDefault(require("node:path"));
10
+ const utils_1 = require("../utils");
11
+ const package_files_1 = require("../fileset/package-files");
12
+ const config_1 = require("./config");
13
+ const config_merge_1 = require("./config-merge");
14
+ const source_1 = require("./source");
15
+ function addRelevantPackage(relevantPackagesByOutputDir, outputDir, packageName) {
16
+ const relevantPackages = relevantPackagesByOutputDir.get(outputDir) ?? new Set();
17
+ relevantPackages.add(packageName);
18
+ relevantPackagesByOutputDir.set(outputDir, relevantPackages);
19
+ }
20
+ function markNoSyncOutput(noSyncOutputDirs, outputDir, noSync) {
21
+ if (noSync) {
22
+ noSyncOutputDirs.add(outputDir);
23
+ }
24
+ }
25
+ /** Unique key for an entry used for recursion-cycle detection. */
26
+ function entryKey(entry, output, selector, currentPkgPath) {
27
+ const packageScope = entry.package ?? `__self__:${currentPkgPath ?? ''}`;
28
+ return `${packageScope}|${JSON.stringify(selector)}|${JSON.stringify(output)}`;
29
+ }
30
+ /**
31
+ * Recursively resolve all entries into a flat list of desired files.
32
+ *
33
+ * Two entry types are handled:
34
+ * - Self-package entry (no `package` field): enumerates files directly from the
35
+ * package context provided by the parent recursion level.
36
+ * - External-package entry (`package` field set): installs the package, reads its
37
+ * filedist.sets, and recurses; when the package has no sets, files are enumerated
38
+ * directly (leaf behaviour).
39
+ *
40
+ * Duplicate (outputDir, relPath) pairs are deduplicated; conflicting managed/gitignore
41
+ * settings for the same destination path throw an error.
42
+ */
43
+ async function resolveFiles(entries, options) {
44
+ const result = await resolveFilesDetailed(entries, options);
45
+ return result.files;
46
+ }
47
+ async function resolveFilesDetailed(entries, options) {
48
+ const visited = new Set();
49
+ const relevantPackagesByOutputDir = new Map();
50
+ const noSyncOutputDirs = new Set();
51
+ const sourceRuntime = options.sourceRuntime ?? (0, source_1.createSourceRuntime)(options.cwd, options.verbose);
52
+ const raw = await resolveFilesInternal(entries, { path: '.' }, {},
53
+ // eslint-disable-next-line no-undefined
54
+ undefined,
55
+ // eslint-disable-next-line no-undefined
56
+ undefined,
57
+ // eslint-disable-next-line no-undefined
58
+ undefined, { ...options, sourceRuntime }, relevantPackagesByOutputDir, noSyncOutputDirs, visited);
59
+ return {
60
+ files: deduplicateAndCheckConflicts(raw),
61
+ relevantPackagesByOutputDir,
62
+ noSyncOutputDirs,
63
+ };
64
+ }
65
+ // eslint-disable-next-line complexity
66
+ async function resolveFilesInternal(entries, inheritedOutput, inheritedSelector, currentPkgPath, currentPkgName, currentPkgVersion, options, relevantPackagesByOutputDir, noSyncOutputDirs, visited) {
67
+ const { cwd, verbose, onProgress, sourceRuntime } = options;
68
+ const resolvedEntries = entries.map((entry) => {
69
+ const mergedOutput = (0, config_merge_1.mergeOutputConfig)(inheritedOutput, entry.output ?? {});
70
+ const entrySelector = entry.selector ?? {};
71
+ const mergedSelector = (0, config_merge_1.mergeSelectorConfig)(inheritedSelector, entrySelector);
72
+ return {
73
+ entry,
74
+ mergedOutput,
75
+ mergedSelector,
76
+ key: entryKey(entry, mergedOutput, mergedSelector, currentPkgPath),
77
+ };
78
+ });
79
+ const entriesToProcess = resolvedEntries.filter(({ key }) => !visited.has(key));
80
+ for (const { key } of entriesToProcess)
81
+ visited.add(key);
82
+ if (verbose && entriesToProcess.length > 0) {
83
+ console.log(`[verbose] resolveFiles: processing ${entriesToProcess.length} entr${entriesToProcess.length === 1 ? 'y' : 'ies'}`);
84
+ }
85
+ const results = [];
86
+ for (const { entry, mergedOutput, mergedSelector } of entriesToProcess) {
87
+ if (!entry.package) {
88
+ // ── Self-package entry (no package field) ────────────────────────────
89
+ // Enumerates files directly from the current package context.
90
+ if (!currentPkgPath || !currentPkgName) {
91
+ throw new Error('A self-package entry (no "package" field) can only appear inside a ' +
92
+ "package's own filedist.sets.");
93
+ }
94
+ const outputDir = node_path_1.default.resolve(cwd, mergedOutput.path ?? '.');
95
+ addRelevantPackage(relevantPackagesByOutputDir, outputDir, currentPkgName);
96
+ markNoSyncOutput(noSyncOutputDirs, outputDir, mergedOutput.noSync === true);
97
+ const files = await (0, package_files_1.enumeratePackageFiles)(currentPkgPath, mergedSelector);
98
+ if (verbose) {
99
+ console.log(`[verbose] resolveFiles: self-package "${currentPkgName}" → ${files.length} file(s) to ${(0, utils_1.formatDisplayPath)(outputDir, cwd)}`);
100
+ }
101
+ for (const relPath of files) {
102
+ results.push(buildResolvedFile(relPath, currentPkgPath, currentPkgName, currentPkgVersion ?? '0.0.0', outputDir, mergedOutput));
103
+ }
104
+ }
105
+ else {
106
+ // ── External-package entry ────────────────────────────────────────────
107
+ const pkg = (0, source_1.parsePackageTarget)(entry.package, entry.source);
108
+ const upgrade = mergedSelector.upgrade ?? false;
109
+ onProgress?.({
110
+ type: 'package-start',
111
+ packageName: pkg.packageName,
112
+ packageVersion: pkg.requestedVersion ?? 'latest',
113
+ });
114
+ const resolvedPackage = await sourceRuntime.resolvePackage(entry, upgrade);
115
+ const pkgPath = resolvedPackage.packagePath;
116
+ const installedVersion = resolvedPackage.packageVersion;
117
+ if (verbose) {
118
+ console.log(`[verbose] resolveFiles: resolved "${resolvedPackage.packageName}@${installedVersion}" at ${(0, utils_1.formatDisplayPath)(pkgPath, cwd)}`);
119
+ }
120
+ // Check whether this package declares its own filedist.sets
121
+ const depConfig = await (0, config_1.loadFiledistConfigFromDirectory)(pkgPath);
122
+ const pkgFiledistSets = depConfig?.sets;
123
+ const outputDir = node_path_1.default.resolve(cwd, mergedOutput.path ?? '.');
124
+ addRelevantPackage(relevantPackagesByOutputDir, outputDir, resolvedPackage.packageName);
125
+ markNoSyncOutput(noSyncOutputDirs, outputDir, mergedOutput.noSync === true);
126
+ const hasSelfSet = (pkgFiledistSets ?? []).some((setEntry) => !setEntry.package);
127
+ // When a package declares self sets, those sets define how its own files are split
128
+ // across outputs and managed flags. In that case, skip the blanket own-file pass.
129
+ const ownFiles = hasSelfSet ? [] : await (0, package_files_1.enumeratePackageFiles)(pkgPath, mergedSelector);
130
+ if (verbose) {
131
+ console.log(`[verbose] resolveFiles: "${resolvedPackage.packageName}" own files → ${ownFiles.length} file(s) to ${(0, utils_1.formatDisplayPath)(outputDir, cwd)}`);
132
+ }
133
+ for (const relPath of ownFiles) {
134
+ results.push(buildResolvedFile(relPath, pkgPath, resolvedPackage.packageName, installedVersion, outputDir, mergedOutput));
135
+ }
136
+ if (pkgFiledistSets && pkgFiledistSets.length > 0) {
137
+ for (const pkgSet of pkgFiledistSets) {
138
+ const setOutput = (0, config_merge_1.mergeOutputConfig)(mergedOutput, pkgSet.output ?? {});
139
+ const setOutputDir = node_path_1.default.resolve(cwd, setOutput.path ?? '.');
140
+ markNoSyncOutput(noSyncOutputDirs, setOutputDir, setOutput.noSync === true);
141
+ if (pkgSet.package) {
142
+ addRelevantPackage(relevantPackagesByOutputDir, setOutputDir, (0, source_1.parsePackageTarget)(pkgSet.package, pkgSet.source).packageName);
143
+ }
144
+ else {
145
+ addRelevantPackage(relevantPackagesByOutputDir, setOutputDir, resolvedPackage.packageName);
146
+ }
147
+ }
148
+ // Apply preset filter
149
+ const presetFilteredSets = (0, utils_1.filterEntriesByPresets)(pkgFiledistSets, mergedSelector.presets);
150
+ if (mergedSelector.presets &&
151
+ mergedSelector.presets.length > 0 &&
152
+ pkgFiledistSets.length > 0 &&
153
+ presetFilteredSets.length === 0) {
154
+ throw new Error(`Presets (${mergedSelector.presets.join(', ')}) not found in any set of package "${resolvedPackage.packageName}"`);
155
+ }
156
+ // Preemptively mark preset-excluded sets as visited
157
+ for (const e of pkgFiledistSets) {
158
+ if (!presetFilteredSets.includes(e)) {
159
+ const presetMergedOutput = (0, config_merge_1.mergeOutputConfig)(mergedOutput, e.output ?? {});
160
+ const presetMergedSelector = (0, config_merge_1.mergeSelectorConfig)(mergedSelector, e.selector ?? {});
161
+ visited.add(entryKey(e, presetMergedOutput, presetMergedSelector, pkgPath));
162
+ }
163
+ }
164
+ // Self-package sets are followed whenever the package declares them,
165
+ // because they define the package's own extraction semantics. When a
166
+ // caller filters by selector.presets, those self sets are filtered by
167
+ // the preset selection above.
168
+ const setsToFollow = presetFilteredSets.filter((e) => typeof e.package === 'string' || hasSelfSet);
169
+ if (verbose && setsToFollow.length > 0) {
170
+ console.log(`[verbose] resolveFiles: "${resolvedPackage.packageName}" has ${pkgFiledistSets.length} set(s)` +
171
+ `, ${setsToFollow.length} to follow after preset/self-ref filter`);
172
+ }
173
+ if (setsToFollow.length > 0) {
174
+ const subResults = await resolveFilesInternal(setsToFollow, mergedOutput, mergedSelector, pkgPath, resolvedPackage.packageName, installedVersion, options, relevantPackagesByOutputDir, noSyncOutputDirs, visited);
175
+ results.push(...subResults);
176
+ }
177
+ }
178
+ onProgress?.({
179
+ type: 'package-end',
180
+ packageName: resolvedPackage.packageName,
181
+ packageVersion: installedVersion,
182
+ });
183
+ }
184
+ }
185
+ return results;
186
+ }
187
+ function buildResolvedFile(relPath, pkgPath, packageName, packageVersion, outputDir, output) {
188
+ return {
189
+ relPath,
190
+ sourcePath: node_path_1.default.join(pkgPath, relPath),
191
+ packageName,
192
+ packageVersion,
193
+ outputDir,
194
+ managed: output.managed !== false,
195
+ gitignore: output.gitignore !== false,
196
+ force: output.force ?? false,
197
+ ignoreIfExisting: output.keepExisting ?? false,
198
+ noSync: output.noSync === true,
199
+ contentReplacements: output.contentReplacements ?? [],
200
+ symlinks: output.symlinks ?? [],
201
+ };
202
+ }
203
+ /**
204
+ * Remove duplicate (outputDir, relPath) pairs, checking that duplicates have
205
+ * compatible managed and gitignore settings. Throws on conflict.
206
+ */
207
+ function deduplicateAndCheckConflicts(files) {
208
+ const byKey = new Map();
209
+ for (const file of files) {
210
+ const key = `${file.outputDir}|${file.relPath}`;
211
+ const existing = byKey.get(key);
212
+ if (!existing) {
213
+ byKey.set(key, file);
214
+ }
215
+ else if (existing.managed !== file.managed || existing.gitignore !== file.gitignore) {
216
+ throw new Error(`Conflict in resolve: file "${file.relPath}" in "${file.outputDir}" is resolved by ` +
217
+ `"${existing.packageName}" (managed=${existing.managed}, gitignore=${existing.gitignore}) ` +
218
+ `and "${file.packageName}" (managed=${file.managed}, gitignore=${file.gitignore}) ` +
219
+ `with different settings.`);
220
+ }
221
+ // Same settings — keep first occurrence (idempotent)
222
+ }
223
+ return [...byKey.values()];
224
+ }
225
+ //# sourceMappingURL=resolve-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-files.js","sourceRoot":"","sources":["../../src/package/resolve-files.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { FiledistExtractEntry, SourceKind } from '../types';
2
+ export type PackageTarget = {
3
+ source: 'npm' | 'git';
4
+ packageName: string;
5
+ requestedVersion?: string;
6
+ repository?: string;
7
+ };
8
+ export type ResolvedPackageSource = {
9
+ source: 'npm' | 'git';
10
+ packageName: string;
11
+ packageVersion: string;
12
+ packagePath: string;
13
+ };
14
+ export type SourceRuntime = {
15
+ resolvePackage: (entry: FiledistExtractEntry, upgrade: boolean) => Promise<ResolvedPackageSource>;
16
+ cleanup: () => void;
17
+ };
18
+ export declare function parsePackageTarget(spec: string, requestedSource?: SourceKind): PackageTarget;
19
+ export declare function createSourceRuntime(cwd: string, verbose?: boolean): SourceRuntime;
20
+ //# sourceMappingURL=source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../src/package/source.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAG5D,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,KAAK,GAAG,KAAK,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,KAAK,GAAG,KAAK,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,cAAc,EAAE,CAAC,KAAK,EAAE,oBAAoB,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAClG,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAIF,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,eAAe,GAAE,UAAmB,GACnC,aAAa,CAsBf;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,UAAQ,GAAG,aAAa,CAiE/E"}
@@ -0,0 +1,193 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.parsePackageTarget = parsePackageTarget;
7
+ exports.createSourceRuntime = createSourceRuntime;
8
+ /* eslint-disable no-console */
9
+ const node_crypto_1 = __importDefault(require("node:crypto"));
10
+ const node_fs_1 = __importDefault(require("node:fs"));
11
+ const node_path_1 = __importDefault(require("node:path"));
12
+ const utils_1 = require("../utils");
13
+ const GIT_SOURCE_REGEX = /^(?:https?|ssh|git|file):\/\/|^git@/i;
14
+ function parsePackageTarget(spec, requestedSource = 'auto') {
15
+ const source = resolveSourceKind(spec, requestedSource);
16
+ if (source === 'npm') {
17
+ const atIdx = spec.lastIndexOf('@');
18
+ if (atIdx > 0) {
19
+ const requestedVersion = spec.slice(atIdx + 1);
20
+ return {
21
+ source,
22
+ packageName: spec.slice(0, atIdx),
23
+ ...(requestedVersion ? { requestedVersion } : {}),
24
+ };
25
+ }
26
+ return { source, packageName: spec };
27
+ }
28
+ const { repository, ref } = splitGitSpec(spec);
29
+ return {
30
+ source,
31
+ packageName: normalizeGitRepository(repository),
32
+ ...(ref ? { requestedVersion: ref } : {}),
33
+ repository,
34
+ };
35
+ }
36
+ function createSourceRuntime(cwd, verbose = false) {
37
+ const packageCache = new Map();
38
+ const cloneDirs = new Set();
39
+ const tempRoot = node_path_1.default.join(cwd, '.filedist-tmp');
40
+ const ensureTempRoot = () => {
41
+ if (!node_fs_1.default.existsSync(tempRoot)) {
42
+ node_fs_1.default.mkdirSync(tempRoot, { recursive: true });
43
+ if (verbose) {
44
+ console.log(`[verbose] source: created temp git directory ${(0, utils_1.formatDisplayPath)(tempRoot, cwd)}`);
45
+ }
46
+ }
47
+ ensureGitignoreContains(cwd, '.filedist-tmp');
48
+ };
49
+ return {
50
+ async resolvePackage(entry, upgrade) {
51
+ if (!entry.package) {
52
+ throw new Error('resolvePackage requires an entry with a package spec');
53
+ }
54
+ const target = parsePackageTarget(entry.package, entry.source);
55
+ const cacheKey = `${target.source}|${target.packageName}|${target.requestedVersion ?? ''}`;
56
+ if (!upgrade) {
57
+ const cached = packageCache.get(cacheKey);
58
+ if (cached)
59
+ return cached;
60
+ }
61
+ const resolved = target.source === 'git'
62
+ ? resolveGitPackage(target, cwd, tempRoot, ensureTempRoot, verbose)
63
+ : resolveNpmPackage(target, upgrade, cwd, verbose);
64
+ const packageSource = await resolved;
65
+ packageCache.set(cacheKey, packageSource);
66
+ if (packageSource.source === 'git') {
67
+ cloneDirs.add(packageSource.packagePath);
68
+ }
69
+ return packageSource;
70
+ },
71
+ cleanup() {
72
+ for (const cloneDir of cloneDirs) {
73
+ if (node_fs_1.default.existsSync(cloneDir)) {
74
+ node_fs_1.default.rmSync(cloneDir, { recursive: true, force: true });
75
+ }
76
+ }
77
+ cloneDirs.clear();
78
+ if (node_fs_1.default.existsSync(tempRoot)) {
79
+ try {
80
+ if (node_fs_1.default.readdirSync(tempRoot).length === 0) {
81
+ node_fs_1.default.rmdirSync(tempRoot);
82
+ }
83
+ }
84
+ catch {
85
+ // ignore cleanup failures
86
+ }
87
+ }
88
+ },
89
+ };
90
+ }
91
+ function resolveSourceKind(spec, requestedSource) {
92
+ if (requestedSource === 'npm' || requestedSource === 'git')
93
+ return requestedSource;
94
+ return GIT_SOURCE_REGEX.test(spec) ? 'git' : 'npm';
95
+ }
96
+ function splitGitSpec(spec) {
97
+ if (spec.startsWith('git@')) {
98
+ const firstAt = spec.indexOf('@');
99
+ const lastAt = spec.lastIndexOf('@');
100
+ if (lastAt > firstAt) {
101
+ const ref = spec.slice(lastAt + 1);
102
+ return { repository: spec.slice(0, lastAt), ...(ref ? { ref } : {}) };
103
+ }
104
+ return { repository: spec };
105
+ }
106
+ const schemeEnd = spec.indexOf('://');
107
+ if (schemeEnd !== -1) {
108
+ const authStart = schemeEnd + 3;
109
+ const pathStart = spec.indexOf('/', authStart);
110
+ const authEnd = pathStart === -1 ? spec.length : pathStart;
111
+ const lastAt = spec.lastIndexOf('@');
112
+ if (lastAt >= authEnd) {
113
+ const ref = spec.slice(lastAt + 1);
114
+ return { repository: spec.slice(0, lastAt), ...(ref ? { ref } : {}) };
115
+ }
116
+ return { repository: spec };
117
+ }
118
+ throw new Error(`Git source requires a URL-like package spec. Received "${spec}". ` +
119
+ 'Use source="git" with a full repository URL such as https://host/org/repo@ref.');
120
+ }
121
+ function normalizeGitRepository(repository) {
122
+ return repository.replace(/\/+$/, '');
123
+ }
124
+ async function resolveNpmPackage(target, upgrade, cwd, verbose) {
125
+ const packagePath = await (0, utils_1.installOrUpgradePackage)(target.packageName, target.requestedVersion, upgrade, cwd, verbose);
126
+ let installedVersion = '0.0.0';
127
+ try {
128
+ const pkgJsonContent = JSON.parse(node_fs_1.default.readFileSync(node_path_1.default.join(packagePath, 'package.json')).toString());
129
+ installedVersion = pkgJsonContent.version;
130
+ }
131
+ catch {
132
+ // fallback
133
+ }
134
+ return {
135
+ source: 'npm',
136
+ packageName: target.packageName,
137
+ packageVersion: installedVersion,
138
+ packagePath,
139
+ };
140
+ }
141
+ async function resolveGitPackage(target, cwd, tempRoot, ensureTempRoot, verbose) {
142
+ ensureTempRoot();
143
+ const cloneDir = node_path_1.default.join(tempRoot, buildCloneDirName(target));
144
+ if (node_fs_1.default.existsSync(cloneDir)) {
145
+ node_fs_1.default.rmSync(cloneDir, { recursive: true, force: true });
146
+ }
147
+ if (verbose) {
148
+ console.log(`[verbose] source: cloning ${target.repository} into ${(0, utils_1.formatDisplayPath)(cloneDir, cwd)}`);
149
+ }
150
+ (0, utils_1.spawnWithLog)('git', ['clone', target.repository, cloneDir], cwd, verbose, true);
151
+ if (target.requestedVersion) {
152
+ (0, utils_1.spawnWithLog)('git', ['-C', cloneDir, 'checkout', target.requestedVersion], cwd, verbose, true);
153
+ }
154
+ const revision = (0, utils_1.spawnWithLog)('git', ['-C', cloneDir, 'rev-parse', 'HEAD'], cwd, verbose, true)
155
+ .stdout.toString()
156
+ .trim();
157
+ const gitDir = node_path_1.default.join(cloneDir, '.git');
158
+ if (node_fs_1.default.existsSync(gitDir)) {
159
+ node_fs_1.default.rmSync(gitDir, { recursive: true, force: true });
160
+ }
161
+ return {
162
+ source: 'git',
163
+ packageName: target.packageName,
164
+ packageVersion: revision || target.requestedVersion || 'HEAD',
165
+ packagePath: cloneDir,
166
+ };
167
+ }
168
+ function buildCloneDirName(target) {
169
+ const pathSegments = target.packageName.split(/[/:]/).filter(Boolean);
170
+ const lastPathSegment = pathSegments.at(-1);
171
+ const baseName = lastPathSegment?.replace(/\.git$/, '')?.replace(/[^\w.-]+/g, '-') ?? 'repo';
172
+ const digest = node_crypto_1.default
173
+ .createHash('sha1')
174
+ .update(`${target.packageName}@${target.requestedVersion ?? ''}`)
175
+ .digest('hex')
176
+ .slice(0, 12);
177
+ return `${baseName}-${digest}`;
178
+ }
179
+ function ensureGitignoreContains(cwd, entry) {
180
+ const gitignorePath = node_path_1.default.join(cwd, '.gitignore');
181
+ if (!node_fs_1.default.existsSync(gitignorePath)) {
182
+ node_fs_1.default.writeFileSync(gitignorePath, `${entry}\n`);
183
+ return;
184
+ }
185
+ const lines = node_fs_1.default
186
+ .readFileSync(gitignorePath, 'utf8')
187
+ .split(/\r?\n/)
188
+ .map((line) => line.trim());
189
+ if (!lines.includes(entry)) {
190
+ node_fs_1.default.appendFileSync(gitignorePath, `\n${entry}\n`);
191
+ }
192
+ }
193
+ //# sourceMappingURL=source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source.js","sourceRoot":"","sources":["../../src/package/source.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { ManagedFileMetadata, ResolvedFile, SymlinkConfig } from '../types';
2
+ /**
3
+ * Create symlinks for all files/dirs in outputDir matching source globs.
4
+ * Each matching source is symlinked into the target directory.
5
+ * Symlinks are created as relative paths.
6
+ */
7
+ export declare function createSymlinks(outputDir: string, configs: SymlinkConfig[]): Promise<void>;
8
+ /**
9
+ * Collect marker entries for managed symlinks created in an output directory.
10
+ *
11
+ * Symlink ownership is attributed to the package/config combination that declared
12
+ * the symlink operation. Duplicate output paths keep the first discovered owner.
13
+ */
14
+ export declare function collectManagedSymlinkEntries(outputDir: string, files: ResolvedFile[]): ManagedFileMetadata[];
15
+ /** Remove only marker-managed symlinks that are no longer desired for this run. */
16
+ export declare function removeStaleSymlinks(outputDir: string, managedEntries: ManagedFileMetadata[], desiredPaths: Set<string>): Promise<string[]>;
17
+ export declare function isManagedSymlinkEntry(entry: ManagedFileMetadata): boolean;
18
+ export declare function isManagedFileEntry(entry: ManagedFileMetadata): boolean;
19
+ export declare function findManagedSymlinkEntries(entries: ManagedFileMetadata[], relevantPackages?: Set<string>): ManagedFileMetadata[];
20
+ export declare function uniqueSymlinkConfigs(files: ResolvedFile[]): SymlinkConfig[];
21
+ /**
22
+ * Remove ALL symlinks pointing into outputDir (used during purge).
23
+ */
24
+ export declare function removeAllSymlinks(outputDir: string): Promise<number>;
25
+ //# sourceMappingURL=symlinks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symlinks.d.ts","sourceRoot":"","sources":["../../src/package/symlinks.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAG5E;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgC/F;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,YAAY,EAAE,GACpB,mBAAmB,EAAE,CAuCvB;AAED,mFAAmF;AACnF,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,mBAAmB,EAAE,EACrC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,GACxB,OAAO,CAAC,MAAM,EAAE,CAAC,CAuBnB;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAEzE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAEtE;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,mBAAmB,EAAE,EAC9B,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAC7B,mBAAmB,EAAE,CAMvB;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,aAAa,EAAE,CAc3E;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAwB1E"}