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,94 @@
|
|
|
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.purgeFileset = purgeFileset;
|
|
7
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
8
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
+
const symlinks_1 = require("../package/symlinks");
|
|
10
|
+
const markers_1 = require("./markers");
|
|
11
|
+
const gitignore_1 = require("./gitignore");
|
|
12
|
+
const constants_1 = require("./constants");
|
|
13
|
+
/**
|
|
14
|
+
* Purge all managed files in entries from the output directory.
|
|
15
|
+
* Also removes symlinks, empty directories, and cleans up marker / gitignore entries.
|
|
16
|
+
*
|
|
17
|
+
* Marker update: only the paths listed in `entries` are removed from the marker.
|
|
18
|
+
* Entries belonging to other packages that share the same output directory are
|
|
19
|
+
* preserved. The marker file is deleted only when it becomes empty.
|
|
20
|
+
*
|
|
21
|
+
* Gitignore update: only entries for the purged paths are removed.
|
|
22
|
+
*
|
|
23
|
+
* @param outputDir Absolute path to the output directory.
|
|
24
|
+
* @param entries List of managed file entries to remove.
|
|
25
|
+
* @param dryRun If true, only report what would be removed without deleting.
|
|
26
|
+
* @returns PurgeResult with counts of deleted, symlinks removed, and dirs removed.
|
|
27
|
+
*/
|
|
28
|
+
async function purgeFileset(outputDir, entries, dryRun) {
|
|
29
|
+
const result = { deleted: 0, symlinksRemoved: 0, dirsRemoved: 0 };
|
|
30
|
+
if (!node_fs_1.default.existsSync(outputDir))
|
|
31
|
+
return result;
|
|
32
|
+
// 1. Delete managed files from disk
|
|
33
|
+
for (const entry of entries) {
|
|
34
|
+
const fullPath = node_path_1.default.join(outputDir, entry.path);
|
|
35
|
+
if (node_fs_1.default.existsSync(fullPath)) {
|
|
36
|
+
if (!dryRun) {
|
|
37
|
+
try {
|
|
38
|
+
node_fs_1.default.chmodSync(fullPath, 0o644);
|
|
39
|
+
node_fs_1.default.unlinkSync(fullPath);
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
// ignore
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
result.deleted += 1;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
if (!dryRun) {
|
|
49
|
+
// 2. Remove all symlinks pointing into outputDir
|
|
50
|
+
result.symlinksRemoved = await (0, symlinks_1.removeAllSymlinks)(outputDir);
|
|
51
|
+
// 3. Remove empty directories bottom-up
|
|
52
|
+
result.dirsRemoved = removeEmptyDirs(outputDir);
|
|
53
|
+
// 4. Update marker: remove only the paths that were part of this purge operation.
|
|
54
|
+
// Entries from other packages sharing this output directory are preserved.
|
|
55
|
+
// The marker file is deleted automatically by writeMarker when it becomes empty.
|
|
56
|
+
const purgedPaths = new Set(entries.map((e) => e.path));
|
|
57
|
+
const currentMarkerEntries = await (0, markers_1.readMarker)((0, markers_1.markerPath)(outputDir));
|
|
58
|
+
const updatedMarkerEntries = currentMarkerEntries.filter((e) => !purgedPaths.has(e.path));
|
|
59
|
+
await (0, markers_1.writeMarker)((0, markers_1.markerPath)(outputDir), updatedMarkerEntries);
|
|
60
|
+
// 5. Remove gitignore entries only for the purged paths
|
|
61
|
+
await (0, gitignore_1.removeFromGitignore)(outputDir, [...purgedPaths]);
|
|
62
|
+
}
|
|
63
|
+
return result;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Remove empty directories bottom-up within the given directory.
|
|
67
|
+
* Returns count of directories removed.
|
|
68
|
+
*/
|
|
69
|
+
function removeEmptyDirs(dir) {
|
|
70
|
+
let count = 0;
|
|
71
|
+
if (!node_fs_1.default.existsSync(dir))
|
|
72
|
+
return count;
|
|
73
|
+
for (const entry of node_fs_1.default.readdirSync(dir)) {
|
|
74
|
+
const fullPath = node_path_1.default.join(dir, entry);
|
|
75
|
+
const stat = node_fs_1.default.lstatSync(fullPath);
|
|
76
|
+
if (stat.isSymbolicLink() || entry === constants_1.MARKER_FILE)
|
|
77
|
+
continue;
|
|
78
|
+
if (stat.isDirectory()) {
|
|
79
|
+
count += removeEmptyDirs(fullPath);
|
|
80
|
+
// Try to remove dir if now empty
|
|
81
|
+
try {
|
|
82
|
+
if (node_fs_1.default.readdirSync(fullPath).length === 0) {
|
|
83
|
+
node_fs_1.default.rmdirSync(fullPath);
|
|
84
|
+
count += 1;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
// ignore
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return count;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=purge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"purge.js","sourceRoot":"","sources":["../../src/fileset/purge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creates a mock npm package with the given files, packages it as a tar.gz,
|
|
3
|
+
* and installs it into tmpDir/node_modules using pnpm.
|
|
4
|
+
*
|
|
5
|
+
* @param name - Name of the package to create.
|
|
6
|
+
* @param version - Version of the package.
|
|
7
|
+
* @param files - Map of relative file paths to file contents.
|
|
8
|
+
* @param tmpDir - Temporary directory to use as the project root.
|
|
9
|
+
* @returns The path to the installed package in node_modules.
|
|
10
|
+
*/
|
|
11
|
+
export declare const installMockPackage: (name: string, version: string, files: Record<string, string>, tmpDir: string) => Promise<string>;
|
|
12
|
+
export declare const createMockGitRepo: (name: string, files: Record<string, string>, tmpDir: string, options?: {
|
|
13
|
+
filedistConfig?: Record<string, unknown>;
|
|
14
|
+
tag?: string;
|
|
15
|
+
}) => Promise<{
|
|
16
|
+
repoDir: string;
|
|
17
|
+
repoUrl: string;
|
|
18
|
+
head: string;
|
|
19
|
+
tag?: string;
|
|
20
|
+
}>;
|
|
21
|
+
//# sourceMappingURL=test-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../src/fileset/test-utils.ts"],"names":[],"mappings":"AAMA;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,GAC7B,MAAM,MAAM,EACZ,SAAS,MAAM,EACf,OAAO,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,QAAQ,MAAM,KACb,OAAO,CAAC,MAAM,CAgDhB,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,MAAM,MAAM,EACZ,OAAO,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,QAAQ,MAAM,EACd,UAAU;IACR,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,KACA,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAqC1E,CAAC"}
|
|
@@ -0,0 +1,94 @@
|
|
|
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.createMockGitRepo = exports.installMockPackage = void 0;
|
|
7
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
8
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
+
const node_child_process_1 = require("node:child_process");
|
|
10
|
+
const archiver_1 = __importDefault(require("archiver"));
|
|
11
|
+
/**
|
|
12
|
+
* Creates a mock npm package with the given files, packages it as a tar.gz,
|
|
13
|
+
* and installs it into tmpDir/node_modules using pnpm.
|
|
14
|
+
*
|
|
15
|
+
* @param name - Name of the package to create.
|
|
16
|
+
* @param version - Version of the package.
|
|
17
|
+
* @param files - Map of relative file paths to file contents.
|
|
18
|
+
* @param tmpDir - Temporary directory to use as the project root.
|
|
19
|
+
* @returns The path to the installed package in node_modules.
|
|
20
|
+
*/
|
|
21
|
+
const installMockPackage = async (name, version, files, tmpDir) => {
|
|
22
|
+
const packageDir = node_path_1.default.join(tmpDir, `${name}-source`);
|
|
23
|
+
if (node_fs_1.default.existsSync(packageDir)) {
|
|
24
|
+
node_fs_1.default.rmSync(packageDir, { recursive: true });
|
|
25
|
+
}
|
|
26
|
+
node_fs_1.default.mkdirSync(packageDir, { recursive: true });
|
|
27
|
+
// Create package.json
|
|
28
|
+
const packageJson = { name, version };
|
|
29
|
+
node_fs_1.default.writeFileSync(node_path_1.default.join(packageDir, 'package.json'), JSON.stringify(packageJson));
|
|
30
|
+
// Create other files
|
|
31
|
+
for (const [filePath, content] of Object.entries(files)) {
|
|
32
|
+
const fullPath = node_path_1.default.join(packageDir, filePath);
|
|
33
|
+
const dir = node_path_1.default.dirname(fullPath);
|
|
34
|
+
node_fs_1.default.mkdirSync(dir, { recursive: true });
|
|
35
|
+
node_fs_1.default.writeFileSync(fullPath, content);
|
|
36
|
+
}
|
|
37
|
+
// Create tar.gz file
|
|
38
|
+
const tarGzPath = node_path_1.default.join(tmpDir, `${name.replaceAll('/', '-')}-${version}.tar.gz`);
|
|
39
|
+
await new Promise((resolve, reject) => {
|
|
40
|
+
const output = node_fs_1.default.createWriteStream(tarGzPath);
|
|
41
|
+
const archive = (0, archiver_1.default)('tar', { gzip: true });
|
|
42
|
+
output.on('close', () => resolve());
|
|
43
|
+
output.on('error', reject);
|
|
44
|
+
archive.on('error', reject);
|
|
45
|
+
archive.pipe(output);
|
|
46
|
+
archive.directory(packageDir, 'package');
|
|
47
|
+
archive.finalize().catch(reject);
|
|
48
|
+
});
|
|
49
|
+
// Create package.json in tmpDir if it doesn't exist so pnpm recognizes it as a project
|
|
50
|
+
const tmpDirPkgJson = node_path_1.default.join(tmpDir, 'package.json');
|
|
51
|
+
if (!node_fs_1.default.existsSync(tmpDirPkgJson)) {
|
|
52
|
+
node_fs_1.default.writeFileSync(tmpDirPkgJson, JSON.stringify({ name: 'tmp-test-project', version: '1.0.0' }));
|
|
53
|
+
}
|
|
54
|
+
// Install the tar.gz package into tmpDir/node_modules
|
|
55
|
+
(0, node_child_process_1.execSync)(`pnpm add ${tarGzPath}`, {
|
|
56
|
+
cwd: tmpDir,
|
|
57
|
+
stdio: 'pipe',
|
|
58
|
+
});
|
|
59
|
+
// Return the installed package path in node_modules
|
|
60
|
+
return node_path_1.default.join(tmpDir, 'node_modules', name);
|
|
61
|
+
};
|
|
62
|
+
exports.installMockPackage = installMockPackage;
|
|
63
|
+
const createMockGitRepo = async (name, files, tmpDir, options) => {
|
|
64
|
+
const repoDir = node_path_1.default.join(tmpDir, `${name}-git-source`);
|
|
65
|
+
if (node_fs_1.default.existsSync(repoDir)) {
|
|
66
|
+
node_fs_1.default.rmSync(repoDir, { recursive: true, force: true });
|
|
67
|
+
}
|
|
68
|
+
node_fs_1.default.mkdirSync(repoDir, { recursive: true });
|
|
69
|
+
for (const [filePath, content] of Object.entries(files)) {
|
|
70
|
+
const fullPath = node_path_1.default.join(repoDir, filePath);
|
|
71
|
+
node_fs_1.default.mkdirSync(node_path_1.default.dirname(fullPath), { recursive: true });
|
|
72
|
+
node_fs_1.default.writeFileSync(fullPath, content);
|
|
73
|
+
}
|
|
74
|
+
if (options?.filedistConfig) {
|
|
75
|
+
node_fs_1.default.writeFileSync(node_path_1.default.join(repoDir, '.filedistrc.json'), JSON.stringify(options.filedistConfig));
|
|
76
|
+
}
|
|
77
|
+
(0, node_child_process_1.execSync)('git init', { cwd: repoDir, stdio: 'pipe' });
|
|
78
|
+
(0, node_child_process_1.execSync)('git config user.email "filedist-tests@example.com"', { cwd: repoDir, stdio: 'pipe' });
|
|
79
|
+
(0, node_child_process_1.execSync)('git config user.name "filedist tests"', { cwd: repoDir, stdio: 'pipe' });
|
|
80
|
+
(0, node_child_process_1.execSync)('git add .', { cwd: repoDir, stdio: 'pipe' });
|
|
81
|
+
(0, node_child_process_1.execSync)('git commit -m "initial"', { cwd: repoDir, stdio: 'pipe' });
|
|
82
|
+
if (options?.tag) {
|
|
83
|
+
(0, node_child_process_1.execSync)(`git tag ${options.tag}`, { cwd: repoDir, stdio: 'pipe' });
|
|
84
|
+
}
|
|
85
|
+
const head = (0, node_child_process_1.execSync)('git rev-parse HEAD', { cwd: repoDir, stdio: 'pipe' }).toString().trim();
|
|
86
|
+
return {
|
|
87
|
+
repoDir,
|
|
88
|
+
repoUrl: `file://${repoDir}`,
|
|
89
|
+
head,
|
|
90
|
+
tag: options?.tag,
|
|
91
|
+
};
|
|
92
|
+
};
|
|
93
|
+
exports.createMockGitRepo = createMockGitRepo;
|
|
94
|
+
//# sourceMappingURL=test-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-utils.js","sourceRoot":"","sources":["../../src/fileset/test-utils.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export { actionExtract } from './package/action-extract';
|
|
2
|
+
export type { ExtractOptions, ExtractResult } from './package/action-extract';
|
|
3
|
+
export { actionCheck } from './package/action-check';
|
|
4
|
+
export type { CheckOptions, CheckSummary } from './package/action-check';
|
|
5
|
+
export { actionList } from './package/action-list';
|
|
6
|
+
export type { ListOptions } from './package/action-list';
|
|
7
|
+
export { actionPurge } from './package/action-purge';
|
|
8
|
+
export type { PurgeOptions, PurgeSummary } from './package/action-purge';
|
|
9
|
+
export { resolveFiles } from './package/resolve-files';
|
|
10
|
+
export type { ResolveOptions } from './package/resolve-files';
|
|
11
|
+
export { calculateDiff } from './package/calculate-diff';
|
|
12
|
+
export { binpkg } from './cli/binpkg';
|
|
13
|
+
export type { FiledistConfig, FiledistExtractEntry, PackageConfig, SelectorConfig, OutputConfig, SymlinkConfig, ContentReplacementConfig, ManagedFileMetadata, ProgressEvent, ExtractionMap, CheckResult, PurgeResult, ExecuteResult, ResolvedFile, DiffStatus, DiffEntry, DiffResult, } from './types';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9E,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEzE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEzE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,YAAY,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,aAAa,EACb,cAAc,EACd,YAAY,EACZ,aAAa,EACb,wBAAwB,EACxB,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,WAAW,EACX,WAAW,EACX,aAAa,EACb,YAAY,EACZ,UAAU,EACV,SAAS,EACT,UAAU,GACX,MAAM,SAAS,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Public library exports for filedist v2
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.binpkg = exports.calculateDiff = exports.resolveFiles = exports.actionPurge = exports.actionList = exports.actionCheck = exports.actionExtract = void 0;
|
|
5
|
+
var action_extract_1 = require("./package/action-extract");
|
|
6
|
+
Object.defineProperty(exports, "actionExtract", { enumerable: true, get: function () { return action_extract_1.actionExtract; } });
|
|
7
|
+
var action_check_1 = require("./package/action-check");
|
|
8
|
+
Object.defineProperty(exports, "actionCheck", { enumerable: true, get: function () { return action_check_1.actionCheck; } });
|
|
9
|
+
var action_list_1 = require("./package/action-list");
|
|
10
|
+
Object.defineProperty(exports, "actionList", { enumerable: true, get: function () { return action_list_1.actionList; } });
|
|
11
|
+
var action_purge_1 = require("./package/action-purge");
|
|
12
|
+
Object.defineProperty(exports, "actionPurge", { enumerable: true, get: function () { return action_purge_1.actionPurge; } });
|
|
13
|
+
var resolve_files_1 = require("./package/resolve-files");
|
|
14
|
+
Object.defineProperty(exports, "resolveFiles", { enumerable: true, get: function () { return resolve_files_1.resolveFiles; } });
|
|
15
|
+
var calculate_diff_1 = require("./package/calculate-diff");
|
|
16
|
+
Object.defineProperty(exports, "calculateDiff", { enumerable: true, get: function () { return calculate_diff_1.calculateDiff; } });
|
|
17
|
+
var binpkg_1 = require("./cli/binpkg");
|
|
18
|
+
Object.defineProperty(exports, "binpkg", { enumerable: true, get: function () { return binpkg_1.binpkg; } });
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,yCAAyC;;;AAEzC,2DAAyD;AAAhD,+GAAA,aAAa,OAAA;AAGtB,uDAAqD;AAA5C,2GAAA,WAAW,OAAA;AAGpB,qDAAmD;AAA1C,yGAAA,UAAU,OAAA;AAGnB,uDAAqD;AAA5C,2GAAA,WAAW,OAAA;AAGpB,yDAAuD;AAA9C,6GAAA,YAAY,OAAA;AAGrB,2DAAyD;AAAhD,+GAAA,aAAa,OAAA;AAEtB,uCAAsC;AAA7B,gGAAA,MAAM,OAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ProgressEvent, BasicPackageOptions } from '../types';
|
|
2
|
+
export type CheckOptions = BasicPackageOptions & {
|
|
3
|
+
onProgress?: (event: ProgressEvent) => void;
|
|
4
|
+
};
|
|
5
|
+
export type CheckSummary = {
|
|
6
|
+
missing: string[];
|
|
7
|
+
conflict: string[];
|
|
8
|
+
extra: string[];
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Check whether the output directories are in sync with the desired file state.
|
|
12
|
+
*
|
|
13
|
+
* Uses resolveFiles() to build the desired file list (installing packages as needed),
|
|
14
|
+
* then calculateDiff() to find files that are missing, conflicting, or extra.
|
|
15
|
+
* Conflict detection reports content/managed mismatches only — gitignore-only
|
|
16
|
+
* conflicts are excluded since gitignore state is managed by extract, not a data
|
|
17
|
+
* integrity issue.
|
|
18
|
+
*/
|
|
19
|
+
export declare function actionCheck(options: CheckOptions): Promise<CheckSummary>;
|
|
20
|
+
//# sourceMappingURL=action-check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-check.d.ts","sourceRoot":"","sources":["../../src/package/action-check.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAQ9D,MAAM,MAAM,YAAY,GAAG,mBAAmB,GAAG;IAC/C,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CA8D9E"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.actionCheck = actionCheck;
|
|
4
|
+
const utils_1 = require("../utils");
|
|
5
|
+
const resolve_files_1 = require("./resolve-files");
|
|
6
|
+
const calculate_diff_1 = require("./calculate-diff");
|
|
7
|
+
const symlinks_1 = require("./symlinks");
|
|
8
|
+
const source_1 = require("./source");
|
|
9
|
+
/**
|
|
10
|
+
* Check whether the output directories are in sync with the desired file state.
|
|
11
|
+
*
|
|
12
|
+
* Uses resolveFiles() to build the desired file list (installing packages as needed),
|
|
13
|
+
* then calculateDiff() to find files that are missing, conflicting, or extra.
|
|
14
|
+
* Conflict detection reports content/managed mismatches only — gitignore-only
|
|
15
|
+
* conflicts are excluded since gitignore state is managed by extract, not a data
|
|
16
|
+
* integrity issue.
|
|
17
|
+
*/
|
|
18
|
+
async function actionCheck(options) {
|
|
19
|
+
const { entries, cwd, verbose = false, onProgress } = options;
|
|
20
|
+
const summary = { missing: [], conflict: [], extra: [] };
|
|
21
|
+
const sourceRuntime = (0, source_1.createSourceRuntime)(cwd, verbose);
|
|
22
|
+
if (verbose) {
|
|
23
|
+
console.log(`[verbose] actionCheck: resolving files (cwd: ${(0, utils_1.formatDisplayPath)(cwd, cwd)})`);
|
|
24
|
+
}
|
|
25
|
+
// Skip entries with managed=false — they write no marker so there is nothing to check.
|
|
26
|
+
const managedEntries = entries.filter((e) => e.output?.managed !== false);
|
|
27
|
+
if (managedEntries.length === 0)
|
|
28
|
+
return summary;
|
|
29
|
+
try {
|
|
30
|
+
const resolved = await (0, resolve_files_1.resolveFilesDetailed)(managedEntries, {
|
|
31
|
+
cwd,
|
|
32
|
+
verbose,
|
|
33
|
+
sourceRuntime,
|
|
34
|
+
onProgress: (e) => {
|
|
35
|
+
if (e.type === 'package-start' || e.type === 'package-end')
|
|
36
|
+
onProgress?.(e);
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
const resolvedFiles = resolved.files;
|
|
40
|
+
if (verbose) {
|
|
41
|
+
console.log(`[verbose] actionCheck: resolved ${resolvedFiles.length} desired file(s)`);
|
|
42
|
+
}
|
|
43
|
+
const managedResolvedFiles = resolvedFiles.filter((f) => f.managed);
|
|
44
|
+
const diff = await (0, calculate_diff_1.calculateDiff)(managedResolvedFiles, verbose, cwd, resolved.relevantPackagesByOutputDir);
|
|
45
|
+
summary.missing.push(...diff.missing.map((e) => e.relPath));
|
|
46
|
+
summary.extra.push(...diff.extra
|
|
47
|
+
.filter((e) => !e.existing || !(0, symlinks_1.isManagedSymlinkEntry)(e.existing))
|
|
48
|
+
.map((e) => e.relPath));
|
|
49
|
+
// Only report conflicts where content or managed-state differ; gitignore-only
|
|
50
|
+
// mismatches are not a data integrity issue.
|
|
51
|
+
summary.conflict.push(...diff.conflict
|
|
52
|
+
.filter((e) => (e.conflictReasons ?? []).some((r) => r !== 'gitignore'))
|
|
53
|
+
.map((e) => e.relPath));
|
|
54
|
+
if (verbose) {
|
|
55
|
+
console.log(`[verbose] actionCheck: missing=${summary.missing.length}` +
|
|
56
|
+
` conflict=${summary.conflict.length} extra=${summary.extra.length}`);
|
|
57
|
+
}
|
|
58
|
+
return summary;
|
|
59
|
+
}
|
|
60
|
+
finally {
|
|
61
|
+
sourceRuntime.cleanup();
|
|
62
|
+
(0, utils_1.cleanupTempPackageJson)(cwd, verbose);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=action-check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-check.js","sourceRoot":"","sources":["../../src/package/action-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ProgressEvent, BasicPackageOptions } from '../types';
|
|
2
|
+
export type ExtractOptions = BasicPackageOptions & {
|
|
3
|
+
onProgress?: (event: ProgressEvent) => void;
|
|
4
|
+
};
|
|
5
|
+
export type ExtractResult = {
|
|
6
|
+
added: number;
|
|
7
|
+
modified: number;
|
|
8
|
+
deleted: number;
|
|
9
|
+
skipped: number;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Extract managed files into the output directories.
|
|
13
|
+
*
|
|
14
|
+
* Two-phase approach:
|
|
15
|
+
* 1. resolveFiles — installs packages and builds the complete desired file list.
|
|
16
|
+
* 2. calculateDiff — compares desired files against each output directory.
|
|
17
|
+
* 3. Apply disk changes: delete extra, add missing, resolve conflicts.
|
|
18
|
+
*/
|
|
19
|
+
export declare function actionExtract(options: ExtractOptions): Promise<ExtractResult>;
|
|
20
|
+
//# sourceMappingURL=action-extract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"action-extract.d.ts","sourceRoot":"","sources":["../../src/package/action-extract.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,aAAa,EACb,mBAAmB,EAEpB,MAAM,UAAU,CAAC;AAkBlB,MAAM,MAAM,cAAc,GAAG,mBAAmB,GAAG;IACjD,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;;;;;GAOG;AAEH,wBAAsB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAgOnF"}
|