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.
- package/README.md +631 -0
- package/dist/cli/actions/check.d.ts +6 -0
- package/dist/cli/actions/check.d.ts.map +1 -0
- package/dist/cli/actions/check.js +36 -0
- package/dist/cli/actions/check.js.map +1 -0
- package/dist/cli/actions/extract.d.ts +7 -0
- package/dist/cli/actions/extract.d.ts.map +1 -0
- package/dist/cli/actions/extract.js +60 -0
- package/dist/cli/actions/extract.js.map +1 -0
- package/dist/cli/actions/init.d.ts +6 -0
- package/dist/cli/actions/init.d.ts.map +1 -0
- package/dist/cli/actions/init.js +30 -0
- package/dist/cli/actions/init.js.map +1 -0
- package/dist/cli/actions/list.d.ts +7 -0
- package/dist/cli/actions/list.d.ts.map +1 -0
- package/dist/cli/actions/list.js +30 -0
- package/dist/cli/actions/list.js.map +1 -0
- package/dist/cli/actions/presets.d.ts +7 -0
- package/dist/cli/actions/presets.d.ts.map +1 -0
- package/dist/cli/actions/presets.js +34 -0
- package/dist/cli/actions/presets.js.map +1 -0
- package/dist/cli/actions/purge.d.ts +6 -0
- package/dist/cli/actions/purge.d.ts.map +1 -0
- package/dist/cli/actions/purge.js +39 -0
- package/dist/cli/actions/purge.js.map +1 -0
- package/dist/cli/argv.d.ts +52 -0
- package/dist/cli/argv.d.ts.map +1 -0
- package/dist/cli/argv.js +172 -0
- package/dist/cli/argv.js.map +1 -0
- package/dist/cli/bin.d.ts +3 -0
- package/dist/cli/bin.d.ts.map +1 -0
- package/dist/cli/bin.js +10 -0
- package/dist/cli/bin.js.map +1 -0
- package/dist/cli/binpkg.d.ts +13 -0
- package/dist/cli/binpkg.d.ts.map +1 -0
- package/dist/cli/binpkg.js +38 -0
- package/dist/cli/binpkg.js.map +1 -0
- package/dist/cli/cli.d.ts +11 -0
- package/dist/cli/cli.d.ts.map +1 -0
- package/dist/cli/cli.js +118 -0
- package/dist/cli/cli.js.map +1 -0
- package/dist/cli/progress.d.ts +6 -0
- package/dist/cli/progress.d.ts.map +1 -0
- package/dist/cli/progress.js +12 -0
- package/dist/cli/progress.js.map +1 -0
- package/dist/cli/usage.d.ts +6 -0
- package/dist/cli/usage.d.ts.map +1 -0
- package/dist/cli/usage.js +151 -0
- package/dist/cli/usage.js.map +1 -0
- package/dist/fileset/check.d.ts +15 -0
- package/dist/fileset/check.d.ts.map +1 -0
- package/dist/fileset/check.js +70 -0
- package/dist/fileset/check.js.map +1 -0
- package/dist/fileset/constants.d.ts +18 -0
- package/dist/fileset/constants.d.ts.map +1 -0
- package/dist/fileset/constants.js +30 -0
- package/dist/fileset/constants.js.map +1 -0
- package/dist/fileset/diff.d.ts +16 -0
- package/dist/fileset/diff.d.ts.map +1 -0
- package/dist/fileset/diff.js +111 -0
- package/dist/fileset/diff.js.map +1 -0
- package/dist/fileset/execute.d.ts +29 -0
- package/dist/fileset/execute.d.ts.map +1 -0
- package/dist/fileset/execute.js +153 -0
- package/dist/fileset/execute.js.map +1 -0
- package/dist/fileset/gitignore.d.ts +20 -0
- package/dist/fileset/gitignore.d.ts.map +1 -0
- package/dist/fileset/gitignore.js +94 -0
- package/dist/fileset/gitignore.js.map +1 -0
- package/dist/fileset/index.d.ts +5 -0
- package/dist/fileset/index.d.ts.map +1 -0
- package/dist/fileset/index.js +22 -0
- package/dist/fileset/index.js.map +1 -0
- package/dist/fileset/markers.d.ts +22 -0
- package/dist/fileset/markers.d.ts.map +1 -0
- package/dist/fileset/markers.js +74 -0
- package/dist/fileset/markers.js.map +1 -0
- package/dist/fileset/package-files.d.ts +21 -0
- package/dist/fileset/package-files.d.ts.map +1 -0
- package/dist/fileset/package-files.js +102 -0
- package/dist/fileset/package-files.js.map +1 -0
- package/dist/fileset/purge.d.ts +18 -0
- package/dist/fileset/purge.d.ts.map +1 -0
- package/dist/fileset/purge.js +94 -0
- package/dist/fileset/purge.js.map +1 -0
- package/dist/fileset/test-utils.d.ts +21 -0
- package/dist/fileset/test-utils.d.ts.map +1 -0
- package/dist/fileset/test-utils.js +94 -0
- package/dist/fileset/test-utils.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/package/action-check.d.ts +20 -0
- package/dist/package/action-check.d.ts.map +1 -0
- package/dist/package/action-check.js +65 -0
- package/dist/package/action-check.js.map +1 -0
- package/dist/package/action-extract.d.ts +20 -0
- package/dist/package/action-extract.d.ts.map +1 -0
- package/dist/package/action-extract.js +280 -0
- package/dist/package/action-extract.js.map +1 -0
- package/dist/package/action-init.d.ts +13 -0
- package/dist/package/action-init.d.ts.map +1 -0
- package/dist/package/action-init.js +83 -0
- package/dist/package/action-init.js.map +1 -0
- package/dist/package/action-list.d.ts +11 -0
- package/dist/package/action-list.d.ts.map +1 -0
- package/dist/package/action-list.js +12 -0
- package/dist/package/action-list.js.map +1 -0
- package/dist/package/action-purge.d.ts +19 -0
- package/dist/package/action-purge.d.ts.map +1 -0
- package/dist/package/action-purge.js +135 -0
- package/dist/package/action-purge.js.map +1 -0
- package/dist/package/calculate-diff.d.ts +12 -0
- package/dist/package/calculate-diff.d.ts.map +1 -0
- package/dist/package/calculate-diff.js +129 -0
- package/dist/package/calculate-diff.js.map +1 -0
- package/dist/package/config-merge.d.ts +19 -0
- package/dist/package/config-merge.d.ts.map +1 -0
- package/dist/package/config-merge.js +65 -0
- package/dist/package/config-merge.js.map +1 -0
- package/dist/package/config.d.ts +24 -0
- package/dist/package/config.d.ts.map +1 -0
- package/dist/package/config.js +86 -0
- package/dist/package/config.js.map +1 -0
- package/dist/package/content-replacements.d.ts +21 -0
- package/dist/package/content-replacements.d.ts.map +1 -0
- package/dist/package/content-replacements.js +94 -0
- package/dist/package/content-replacements.js.map +1 -0
- package/dist/package/index.d.ts +10 -0
- package/dist/package/index.d.ts.map +1 -0
- package/dist/package/index.js +16 -0
- package/dist/package/index.js.map +1 -0
- package/dist/package/resolve-files.d.ts +29 -0
- package/dist/package/resolve-files.d.ts.map +1 -0
- package/dist/package/resolve-files.js +225 -0
- package/dist/package/resolve-files.js.map +1 -0
- package/dist/package/source.d.ts +20 -0
- package/dist/package/source.d.ts.map +1 -0
- package/dist/package/source.js +193 -0
- package/dist/package/source.js.map +1 -0
- package/dist/package/symlinks.d.ts +25 -0
- package/dist/package/symlinks.d.ts.map +1 -0
- package/dist/package/symlinks.js +203 -0
- package/dist/package/symlinks.js.map +1 -0
- package/dist/types.d.ts +345 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +60 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +341 -0
- package/dist/utils.js.map +1 -0
- 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"}
|