screw-up 1.18.0 → 1.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/analyzer.d.ts +2 -2
- package/dist/cli-internal.d.ts +10 -3
- package/dist/cli-internal.d.ts.map +1 -1
- package/dist/cli.d.ts +2 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/fast-tags.d.ts +2 -2
- package/dist/generated/packageMetadata.d.ts +4 -4
- package/dist/git-operations.d.ts +2 -2
- package/dist/index.cjs +17 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +17 -7
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +2 -2
- package/dist/main.cjs +168 -14
- package/dist/main.cjs.map +1 -1
- package/dist/main.d.ts +2 -2
- package/dist/main.js +170 -16
- package/dist/main.js.map +1 -1
- package/dist/metadata-file.d.ts +2 -2
- package/dist/{packageMetadata-B-eWBZ6y.cjs → packageMetadata-DXwK6bb8.cjs} +6 -5
- package/dist/{packageMetadata-B-eWBZ6y.cjs.map → packageMetadata-DXwK6bb8.cjs.map} +1 -1
- package/dist/{packageMetadata-BtM7pxOK.js → packageMetadata-DlkAQe0j.js} +6 -5
- package/dist/{packageMetadata-BtM7pxOK.js.map → packageMetadata-DlkAQe0j.js.map} +1 -1
- package/dist/types.d.ts +2 -2
- package/dist/vite-plugin.d.ts +2 -2
- package/package.json +8 -8
package/dist/main.cjs
CHANGED
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
/*!
|
|
4
4
|
* name: screw-up
|
|
5
|
-
* version: 1.
|
|
5
|
+
* version: 1.19.0
|
|
6
6
|
* description: Simply package metadata inserter on Vite plugin
|
|
7
7
|
* author: Kouji Matsui (@kekyo@mi.kekyo.net)
|
|
8
8
|
* license: MIT
|
|
9
9
|
* repository.url: https://github.com/kekyo/screw-up.git
|
|
10
|
-
* git.commit.hash:
|
|
10
|
+
* git.commit.hash: b86321865390ff8dc11c118f46a8e0ba8b67aa9c
|
|
11
11
|
*/
|
|
12
12
|
const path = require("path");
|
|
13
13
|
const fs$1 = require("fs");
|
|
@@ -17,7 +17,8 @@ const os = require("os");
|
|
|
17
17
|
const stream = require("stream");
|
|
18
18
|
const zlib = require("zlib");
|
|
19
19
|
const promises = require("stream/promises");
|
|
20
|
-
const
|
|
20
|
+
const glob = require("glob");
|
|
21
|
+
const packageMetadata = require("./packageMetadata-DXwK6bb8.cjs");
|
|
21
22
|
/*!
|
|
22
23
|
* name: tar-vern
|
|
23
24
|
* version: 1.3.0
|
|
@@ -643,6 +644,118 @@ const createTarExtractor = async function* (readable, compressionType, signal) {
|
|
|
643
644
|
}
|
|
644
645
|
}
|
|
645
646
|
};
|
|
647
|
+
const readPackageJsonFile = async (packageJsonPath) => {
|
|
648
|
+
const content = await fs.readFile(packageJsonPath, "utf-8");
|
|
649
|
+
return packageMetadata.lib.parse(content);
|
|
650
|
+
};
|
|
651
|
+
const getFilesArray = (packageJson) => {
|
|
652
|
+
if (!packageJson || !Array.isArray(packageJson.files)) {
|
|
653
|
+
return void 0;
|
|
654
|
+
}
|
|
655
|
+
const entries = packageJson.files.filter(
|
|
656
|
+
(entry) => typeof entry === "string"
|
|
657
|
+
);
|
|
658
|
+
return entries.length > 0 ? entries : void 0;
|
|
659
|
+
};
|
|
660
|
+
const isGlobPattern = (pattern) => /[*?[\]{}()]/.test(pattern);
|
|
661
|
+
const normalizeFilesPattern = (pattern, cwd) => {
|
|
662
|
+
const trimmed = pattern.trim();
|
|
663
|
+
if (!trimmed) {
|
|
664
|
+
return void 0;
|
|
665
|
+
}
|
|
666
|
+
const isNegated = trimmed.startsWith("!");
|
|
667
|
+
const raw = isNegated ? trimmed.slice(1) : trimmed;
|
|
668
|
+
if (!raw) {
|
|
669
|
+
return void 0;
|
|
670
|
+
}
|
|
671
|
+
if (isGlobPattern(raw)) {
|
|
672
|
+
return trimmed;
|
|
673
|
+
}
|
|
674
|
+
const fullPath = path.join(cwd, raw);
|
|
675
|
+
if (fs$1.existsSync(fullPath) && fs$1.statSync(fullPath).isDirectory()) {
|
|
676
|
+
const dirPattern = `${raw.replace(/\/+$/, "")}/**`;
|
|
677
|
+
return isNegated ? `!${dirPattern}` : dirPattern;
|
|
678
|
+
}
|
|
679
|
+
return trimmed;
|
|
680
|
+
};
|
|
681
|
+
const isSafeRelativePath = (value) => {
|
|
682
|
+
if (path.isAbsolute(value)) {
|
|
683
|
+
return false;
|
|
684
|
+
}
|
|
685
|
+
const segments = value.split(/[\\/]+/);
|
|
686
|
+
if (segments.some((segment) => segment === "..")) {
|
|
687
|
+
return false;
|
|
688
|
+
}
|
|
689
|
+
return true;
|
|
690
|
+
};
|
|
691
|
+
const expandFilesPatterns = async (patterns, cwd) => {
|
|
692
|
+
const includePatterns = [];
|
|
693
|
+
const excludePatterns = [];
|
|
694
|
+
for (const pattern of patterns) {
|
|
695
|
+
const normalized = normalizeFilesPattern(pattern, cwd);
|
|
696
|
+
if (!normalized) {
|
|
697
|
+
continue;
|
|
698
|
+
}
|
|
699
|
+
if (normalized.startsWith("!")) {
|
|
700
|
+
excludePatterns.push(normalized.slice(1));
|
|
701
|
+
} else {
|
|
702
|
+
includePatterns.push(normalized);
|
|
703
|
+
}
|
|
704
|
+
}
|
|
705
|
+
const result = /* @__PURE__ */ new Set();
|
|
706
|
+
for (const pattern of includePatterns) {
|
|
707
|
+
const matches = await glob.glob(pattern, { cwd, nodir: true });
|
|
708
|
+
for (const match of matches) {
|
|
709
|
+
if (isSafeRelativePath(match)) {
|
|
710
|
+
result.add(match);
|
|
711
|
+
}
|
|
712
|
+
}
|
|
713
|
+
}
|
|
714
|
+
for (const pattern of excludePatterns) {
|
|
715
|
+
const matches = await glob.glob(pattern, { cwd, nodir: true });
|
|
716
|
+
for (const match of matches) {
|
|
717
|
+
result.delete(match);
|
|
718
|
+
}
|
|
719
|
+
}
|
|
720
|
+
return result;
|
|
721
|
+
};
|
|
722
|
+
const mergeFilesPatterns = (parentFiles, childFiles) => {
|
|
723
|
+
const merged = [];
|
|
724
|
+
if (parentFiles == null ? void 0 : parentFiles.length) {
|
|
725
|
+
merged.push(...parentFiles);
|
|
726
|
+
}
|
|
727
|
+
if (childFiles == null ? void 0 : childFiles.length) {
|
|
728
|
+
merged.push(...childFiles);
|
|
729
|
+
}
|
|
730
|
+
return merged.length > 0 ? merged : void 0;
|
|
731
|
+
};
|
|
732
|
+
const resolveWorkspaceFilesMerge = async (targetDir, logger2) => {
|
|
733
|
+
const workspaceRoot = await packageMetadata.findWorkspaceRoot(targetDir, logger2);
|
|
734
|
+
if (!workspaceRoot) {
|
|
735
|
+
return void 0;
|
|
736
|
+
}
|
|
737
|
+
const rootPackagePath = path.join(workspaceRoot, "package.json");
|
|
738
|
+
const targetPackagePath = path.join(targetDir, "package.json");
|
|
739
|
+
if (path.resolve(rootPackagePath) === path.resolve(targetPackagePath)) {
|
|
740
|
+
return void 0;
|
|
741
|
+
}
|
|
742
|
+
const [rootPackageJson, childPackageJson] = await Promise.all([
|
|
743
|
+
readPackageJsonFile(rootPackagePath),
|
|
744
|
+
readPackageJsonFile(targetPackagePath)
|
|
745
|
+
]);
|
|
746
|
+
const parentFiles = getFilesArray(rootPackageJson);
|
|
747
|
+
const childFiles = getFilesArray(childPackageJson);
|
|
748
|
+
const mergedFiles = mergeFilesPatterns(parentFiles, childFiles);
|
|
749
|
+
if (!parentFiles && !childFiles) {
|
|
750
|
+
return void 0;
|
|
751
|
+
}
|
|
752
|
+
return {
|
|
753
|
+
workspaceRoot,
|
|
754
|
+
parentFiles,
|
|
755
|
+
childFiles,
|
|
756
|
+
mergedFiles
|
|
757
|
+
};
|
|
758
|
+
};
|
|
646
759
|
const runNpmPack = async (targetDir, packDestDir) => {
|
|
647
760
|
return new Promise((res, rej) => {
|
|
648
761
|
const npmProcess = child_process.spawn(
|
|
@@ -688,8 +801,8 @@ stdout: ${stdout}`));
|
|
|
688
801
|
});
|
|
689
802
|
});
|
|
690
803
|
};
|
|
691
|
-
const packAssets = async (targetDir, outputDir, checkWorkingDirectoryStatus, alwaysOverrideVersionFromGit, inheritableFields, readmeReplacementPath, replacePeerDepsWildcards, peerDepsVersionPrefix, logger2) => {
|
|
692
|
-
var _a, _b, _c;
|
|
804
|
+
const packAssets = async (targetDir, outputDir, checkWorkingDirectoryStatus, alwaysOverrideVersionFromGit, inheritableFields, readmeReplacementPath, replacePeerDepsWildcards, peerDepsVersionPrefix, logger2, mergeFiles = true) => {
|
|
805
|
+
var _a, _b, _c, _d;
|
|
693
806
|
if (!fs$1.existsSync(targetDir)) {
|
|
694
807
|
throw new Error(`Target directory is not found: ${targetDir}`);
|
|
695
808
|
}
|
|
@@ -751,6 +864,11 @@ const packAssets = async (targetDir, outputDir, checkWorkingDirectoryStatus, alw
|
|
|
751
864
|
}
|
|
752
865
|
}
|
|
753
866
|
}
|
|
867
|
+
const filesMergeEnabled = mergeFiles && inheritableFields.has("files");
|
|
868
|
+
const workspaceFilesMerge = filesMergeEnabled ? await resolveWorkspaceFilesMerge(targetDir, logger2) : void 0;
|
|
869
|
+
if (filesMergeEnabled && (workspaceFilesMerge == null ? void 0 : workspaceFilesMerge.mergedFiles)) {
|
|
870
|
+
resolvedPackageJson.files = workspaceFilesMerge.mergedFiles;
|
|
871
|
+
}
|
|
754
872
|
const baseTempDir = await fs.mkdtemp(path.join(os.tmpdir(), "screw-up-npm-pack-"));
|
|
755
873
|
await fs.mkdir(baseTempDir, { recursive: true });
|
|
756
874
|
try {
|
|
@@ -759,7 +877,25 @@ const packAssets = async (targetDir, outputDir, checkWorkingDirectoryStatus, alw
|
|
|
759
877
|
await fs.mkdir(stagingDir, { recursive: true });
|
|
760
878
|
const stream2 = fs$1.createReadStream(npmTarballPath);
|
|
761
879
|
await extractTo(createTarExtractor(stream2, "gzip"), stagingDir);
|
|
762
|
-
const
|
|
880
|
+
const packageRoot = path.join(stagingDir, "package");
|
|
881
|
+
if (filesMergeEnabled && ((_a = workspaceFilesMerge == null ? void 0 : workspaceFilesMerge.parentFiles) == null ? void 0 : _a.length)) {
|
|
882
|
+
const parentFiles = await expandFilesPatterns(
|
|
883
|
+
workspaceFilesMerge.parentFiles,
|
|
884
|
+
workspaceFilesMerge.workspaceRoot
|
|
885
|
+
);
|
|
886
|
+
for (const parentFile of parentFiles) {
|
|
887
|
+
const destPath = path.join(packageRoot, parentFile);
|
|
888
|
+
if (fs$1.existsSync(destPath)) {
|
|
889
|
+
continue;
|
|
890
|
+
}
|
|
891
|
+
await fs.mkdir(path.dirname(destPath), { recursive: true });
|
|
892
|
+
await fs.copyFile(
|
|
893
|
+
path.join(workspaceFilesMerge.workspaceRoot, parentFile),
|
|
894
|
+
destPath
|
|
895
|
+
);
|
|
896
|
+
}
|
|
897
|
+
}
|
|
898
|
+
const packageJsonPath = path.join(packageRoot, "package.json");
|
|
763
899
|
if (fs$1.existsSync(packageJsonPath)) {
|
|
764
900
|
await fs.writeFile(
|
|
765
901
|
packageJsonPath,
|
|
@@ -767,10 +903,10 @@ const packAssets = async (targetDir, outputDir, checkWorkingDirectoryStatus, alw
|
|
|
767
903
|
);
|
|
768
904
|
}
|
|
769
905
|
if (readmeReplacementCandidatePath) {
|
|
770
|
-
const readmeDestPath = path.join(
|
|
906
|
+
const readmeDestPath = path.join(packageRoot, "README.md");
|
|
771
907
|
await fs.copyFile(readmeReplacementCandidatePath, readmeDestPath);
|
|
772
908
|
}
|
|
773
|
-
const outputFileName = `${(
|
|
909
|
+
const outputFileName = `${(_c = (_b = resolvedPackageJson == null ? void 0 : resolvedPackageJson.name) == null ? void 0 : _b.replace("/", "-")) != null ? _c : "package"}-${(_d = resolvedPackageJson == null ? void 0 : resolvedPackageJson.version) != null ? _d : "0.0.0"}.tgz`;
|
|
774
910
|
await fs.mkdir(outputDir, { recursive: true });
|
|
775
911
|
const outputFile = path.join(outputDir, outputFileName);
|
|
776
912
|
const itemGenerator = createEntryItemGenerator(stagingDir);
|
|
@@ -847,7 +983,8 @@ const defaultInheritableFields = /* @__PURE__ */ new Set([
|
|
|
847
983
|
"keywords",
|
|
848
984
|
"homepage",
|
|
849
985
|
"bugs",
|
|
850
|
-
"readme"
|
|
986
|
+
"readme",
|
|
987
|
+
"files"
|
|
851
988
|
]);
|
|
852
989
|
const defaultOutputMetadataKeys = [
|
|
853
990
|
"name",
|
|
@@ -1049,6 +1186,7 @@ Options:
|
|
|
1049
1186
|
--inheritable-fields <list> Comma-separated list of fields to inherit from parent
|
|
1050
1187
|
--no-wds Do not check working directory status to increase version
|
|
1051
1188
|
--no-git-version-override Do not override version from Git (use package.json version)
|
|
1189
|
+
--no-merge-files Do not merge files from parent package.json
|
|
1052
1190
|
-f, --force Allow dumping even if package.json does not exist
|
|
1053
1191
|
-h, --help Show help for dump command
|
|
1054
1192
|
`);
|
|
@@ -1062,6 +1200,7 @@ const dumpCommand = async (args, logger2) => {
|
|
|
1062
1200
|
const inheritableFieldsOption = args.options["inheritable-fields"];
|
|
1063
1201
|
const alwaysOverrideVersionFromGit = !args.options["no-git-version-override"];
|
|
1064
1202
|
const checkWorkingDirectoryStatus = args.options["no-wds"] ? false : true;
|
|
1203
|
+
const mergeFiles = !args.options["no-merge-files"];
|
|
1065
1204
|
const ignorePackageJsonNotExist = args.options["force"] || args.options["f"] ? true : false;
|
|
1066
1205
|
const inheritableFields = parseInheritableFields(inheritableFieldsOption);
|
|
1067
1206
|
const targetDir = path.resolve(directory != null ? directory : process.cwd());
|
|
@@ -1089,6 +1228,15 @@ const dumpCommand = async (args, logger2) => {
|
|
|
1089
1228
|
ignorePackageJsonNotExist
|
|
1090
1229
|
);
|
|
1091
1230
|
if (computedPackageJson) {
|
|
1231
|
+
if (mergeFiles && inheritableFields.has("files") && fs$1.existsSync(path.join(targetDir, "package.json"))) {
|
|
1232
|
+
const workspaceFilesMerge = await resolveWorkspaceFilesMerge(
|
|
1233
|
+
targetDir,
|
|
1234
|
+
_logger
|
|
1235
|
+
);
|
|
1236
|
+
if (workspaceFilesMerge == null ? void 0 : workspaceFilesMerge.mergedFiles) {
|
|
1237
|
+
computedPackageJson.files = workspaceFilesMerge.mergedFiles;
|
|
1238
|
+
}
|
|
1239
|
+
}
|
|
1092
1240
|
console.info(JSON.stringify(computedPackageJson, null, 2));
|
|
1093
1241
|
} else {
|
|
1094
1242
|
_logger.error(`dump: Unable to read package.json from: ${targetDir}`);
|
|
@@ -1200,6 +1348,7 @@ Options:
|
|
|
1200
1348
|
--inheritable-fields <list> Comma-separated list of fields to inherit from parent
|
|
1201
1349
|
--no-wds Do not check working directory status to increase version
|
|
1202
1350
|
--no-git-version-override Do not override version from Git (use package.json version)
|
|
1351
|
+
--no-merge-files Do not merge files from parent package.json
|
|
1203
1352
|
--no-replace-peer-deps Disable replacing "*" in peerDependencies with actual versions
|
|
1204
1353
|
--peer-deps-prefix <prefix> Version prefix for replaced peerDependencies (default: "^")
|
|
1205
1354
|
--verbose Print verbose log
|
|
@@ -1218,6 +1367,7 @@ const packCommand = async (args, logger2) => {
|
|
|
1218
1367
|
const inheritableFieldsOption = args.options["inheritable-fields"];
|
|
1219
1368
|
const checkWorkingDirectoryStatus = args.options["no-wds"] ? false : true;
|
|
1220
1369
|
const alwaysOverrideVersionFromGit = !args.options["no-git-version-override"];
|
|
1370
|
+
const mergeFiles = !args.options["no-merge-files"];
|
|
1221
1371
|
const replacePeerDepsWildcards = !args.options["no-replace-peer-deps"];
|
|
1222
1372
|
const peerDepsVersionPrefix = (_a = args.options["peer-deps-prefix"]) != null ? _a : "^";
|
|
1223
1373
|
const verbose = args.options["verbose"] ? true : false;
|
|
@@ -1238,7 +1388,8 @@ const packCommand = async (args, logger2) => {
|
|
|
1238
1388
|
readmeReplacementPath,
|
|
1239
1389
|
replacePeerDepsWildcards,
|
|
1240
1390
|
peerDepsVersionPrefix,
|
|
1241
|
-
logger2
|
|
1391
|
+
logger2,
|
|
1392
|
+
mergeFiles
|
|
1242
1393
|
);
|
|
1243
1394
|
if (result) {
|
|
1244
1395
|
if (verbose) {
|
|
@@ -1320,6 +1471,7 @@ const publishCommand = async (args, logger2) => {
|
|
|
1320
1471
|
const inheritableFieldsOption = args.options["inheritable-fields"];
|
|
1321
1472
|
const checkWorkingDirectoryStatus = args.options["no-wds"] ? false : true;
|
|
1322
1473
|
const alwaysOverrideVersionFromGit = !args.options["no-git-version-override"];
|
|
1474
|
+
const mergeFiles = !args.options["no-merge-files"];
|
|
1323
1475
|
const replacePeerDepsWildcards = !args.options["no-replace-peer-deps"];
|
|
1324
1476
|
const peerDepsVersionPrefix = (_a = args.options["peer-deps-prefix"]) != null ? _a : "^";
|
|
1325
1477
|
const verbose = args.options["verbose"] ? true : false;
|
|
@@ -1329,7 +1481,7 @@ const publishCommand = async (args, logger2) => {
|
|
|
1329
1481
|
for (let i = 0; i < args.argv.length; i++) {
|
|
1330
1482
|
const arg = args.argv[i];
|
|
1331
1483
|
if (arg === "publish") ;
|
|
1332
|
-
else if (arg === "--help" || arg === "--verbose" || arg === "-h" || arg === "--no-wds" || arg === "--no-git-version-override" || arg === "--no-replace-peer-deps") ;
|
|
1484
|
+
else if (arg === "--help" || arg === "--verbose" || arg === "-h" || arg === "--no-wds" || arg === "--no-git-version-override" || arg === "--no-merge-files" || arg === "--no-replace-peer-deps") ;
|
|
1333
1485
|
else if (arg === "--readme" || arg === "--inheritable-fields" || arg === "--peer-deps-prefix") {
|
|
1334
1486
|
i++;
|
|
1335
1487
|
} else {
|
|
@@ -1353,7 +1505,8 @@ const publishCommand = async (args, logger2) => {
|
|
|
1353
1505
|
readmeReplacementPath,
|
|
1354
1506
|
replacePeerDepsWildcards,
|
|
1355
1507
|
peerDepsVersionPrefix,
|
|
1356
|
-
logger2
|
|
1508
|
+
logger2,
|
|
1509
|
+
mergeFiles
|
|
1357
1510
|
);
|
|
1358
1511
|
if (result == null ? void 0 : result.metadata) {
|
|
1359
1512
|
if (verbose) {
|
|
@@ -1392,7 +1545,8 @@ const publishCommand = async (args, logger2) => {
|
|
|
1392
1545
|
readmeReplacementPath,
|
|
1393
1546
|
replacePeerDepsWildcards,
|
|
1394
1547
|
peerDepsVersionPrefix,
|
|
1395
|
-
logger2
|
|
1548
|
+
logger2,
|
|
1549
|
+
mergeFiles
|
|
1396
1550
|
);
|
|
1397
1551
|
if (result == null ? void 0 : result.metadata) {
|
|
1398
1552
|
if (verbose) {
|
|
@@ -1432,7 +1586,7 @@ const publishCommand = async (args, logger2) => {
|
|
|
1432
1586
|
}
|
|
1433
1587
|
};
|
|
1434
1588
|
const showHelp = async () => {
|
|
1435
|
-
const { author, license, repository_url, version, git_commit_hash } = await Promise.resolve().then(() => require("./packageMetadata-
|
|
1589
|
+
const { author, license, repository_url, version, git_commit_hash } = await Promise.resolve().then(() => require("./packageMetadata-DXwK6bb8.cjs")).then((n) => n.packageMetadata);
|
|
1436
1590
|
console.info(`screw-up [${version}-${git_commit_hash}]
|
|
1437
1591
|
Easy package metadata inserter CLI
|
|
1438
1592
|
Copyright (c) ${author}
|