screw-up 0.10.0 → 0.12.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.map +1 -1
- package/dist/cli-internal.d.ts +3 -1
- package/dist/cli-internal.d.ts.map +1 -1
- package/dist/cli.cjs +36 -7
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +36 -7
- package/dist/cli.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/dist/{internal-CzKyZ9wb.js → internal-BaMzTKS2.js} +92 -20
- package/dist/internal-BaMzTKS2.js.map +1 -0
- package/dist/{internal-Dli6fSLz.cjs → internal-Di0s8LQa.cjs} +91 -19
- package/dist/internal-Di0s8LQa.cjs.map +1 -0
- package/dist/internal.d.ts +22 -0
- package/dist/internal.d.ts.map +1 -1
- package/package.json +6 -6
- package/dist/internal-CzKyZ9wb.js.map +0 -1
- package/dist/internal-Dli6fSLz.cjs.map +0 -1
package/dist/analyzer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"AA6fA;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAU,gBAAgB,MAAM,EAAE,6BAA6B,OAAO,iBA8DhG,CAAC"}
|
package/dist/cli-internal.d.ts
CHANGED
|
@@ -5,9 +5,11 @@
|
|
|
5
5
|
* @param checkWorkingDirectoryStatus - Check working directory status
|
|
6
6
|
* @param inheritableFields - Package metadata fields that should be inherited from parent
|
|
7
7
|
* @param readmeReplacementPath - Optional path to replacement README file
|
|
8
|
+
* @param replacePeerDepsWildcards - Replace "*" in peerDependencies with actual versions
|
|
9
|
+
* @param peerDepsVersionPrefix - Version prefix for replaced peerDependencies
|
|
8
10
|
* @returns Package metadata (package.json) or undefined if failed
|
|
9
11
|
*/
|
|
10
|
-
export declare const packAssets: (targetDir: string, outputDir: string, checkWorkingDirectoryStatus: boolean, inheritableFields: Set<string>, readmeReplacementPath: string | undefined) => Promise<any>;
|
|
12
|
+
export declare const packAssets: (targetDir: string, outputDir: string, checkWorkingDirectoryStatus: boolean, inheritableFields: Set<string>, readmeReplacementPath: string | undefined, replacePeerDepsWildcards?: boolean, peerDepsVersionPrefix?: string) => Promise<any>;
|
|
11
13
|
/**
|
|
12
14
|
* Get computed package.json object
|
|
13
15
|
* @param targetDir - Target directory to resolve package metadata
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-internal.d.ts","sourceRoot":"","sources":["../src/cli-internal.ts"],"names":[],"mappings":"AAwEA
|
|
1
|
+
{"version":3,"file":"cli-internal.d.ts","sourceRoot":"","sources":["../src/cli-internal.ts"],"names":[],"mappings":"AAwEA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,UAAU,GACrB,WAAW,MAAM,EACjB,WAAW,MAAM,EACjB,6BAA6B,OAAO,EACpC,mBAAmB,GAAG,CAAC,MAAM,CAAC,EAC9B,uBAAuB,MAAM,GAAG,SAAS,EACzC,2BAA0B,OAAc,EACxC,wBAAuB,MAAY,KAAI,OAAO,CAAC,GAAG,CA2EnD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,4BAA4B,GACvC,WAAW,MAAM,EACjB,6BAA6B,OAAO,EACpC,mBAAmB,GAAG,CAAC,MAAM,CAAC,KAAI,OAAO,CAAC,GAAG,CAW9C,CAAC;AAIF,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;CAC3C;AAED,eAAO,MAAM,SAAS,GAAI,MAAM,MAAM,EAAE,KAAG,UAoE1C,CAAC"}
|
package/dist/cli.cjs
CHANGED
|
@@ -7,7 +7,7 @@ const child_process = require("child_process");
|
|
|
7
7
|
const glob = require("glob");
|
|
8
8
|
const stream = require("stream");
|
|
9
9
|
const zlib = require("zlib");
|
|
10
|
-
const internal = require("./internal-
|
|
10
|
+
const internal = require("./internal-Di0s8LQa.cjs");
|
|
11
11
|
/*!
|
|
12
12
|
* name: tar-vern
|
|
13
13
|
* version: 0.3.0
|
|
@@ -320,7 +320,7 @@ const createPackEntryGenerator = async function* (targetDir, resolvedPackageJson
|
|
|
320
320
|
yield await createReadFileItem("package/README.md", readmeReplacementPath);
|
|
321
321
|
}
|
|
322
322
|
};
|
|
323
|
-
const packAssets = async (targetDir, outputDir, checkWorkingDirectoryStatus, inheritableFields, readmeReplacementPath) => {
|
|
323
|
+
const packAssets = async (targetDir, outputDir, checkWorkingDirectoryStatus, inheritableFields, readmeReplacementPath, replacePeerDepsWildcards = true, peerDepsVersionPrefix = "^") => {
|
|
324
324
|
var _a, _b, _c, _d;
|
|
325
325
|
if (!fs.existsSync(targetDir)) {
|
|
326
326
|
return void 0;
|
|
@@ -335,10 +335,23 @@ const packAssets = async (targetDir, outputDir, checkWorkingDirectoryStatus, inh
|
|
|
335
335
|
} catch (error) {
|
|
336
336
|
return void 0;
|
|
337
337
|
}
|
|
338
|
-
|
|
338
|
+
let { packageJson: resolvedPackageJson, sourceMap } = result;
|
|
339
339
|
if (resolvedPackageJson == null ? void 0 : resolvedPackageJson.private) {
|
|
340
340
|
return void 0;
|
|
341
341
|
}
|
|
342
|
+
if (replacePeerDepsWildcards) {
|
|
343
|
+
const workspaceRoot = await internal.findWorkspaceRoot(targetDir);
|
|
344
|
+
if (workspaceRoot) {
|
|
345
|
+
const siblings = await internal.collectWorkspaceSiblings(workspaceRoot);
|
|
346
|
+
if (siblings.size > 0) {
|
|
347
|
+
resolvedPackageJson = internal.replacePeerDependenciesWildcards(
|
|
348
|
+
resolvedPackageJson,
|
|
349
|
+
siblings,
|
|
350
|
+
peerDepsVersionPrefix
|
|
351
|
+
);
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
}
|
|
342
355
|
let finalReadmeReplacementPath = readmeReplacementPath;
|
|
343
356
|
if (!finalReadmeReplacementPath && (resolvedPackageJson == null ? void 0 : resolvedPackageJson.readme)) {
|
|
344
357
|
const readmeSourceDir = (_a = sourceMap.get("readme")) != null ? _a : targetDir;
|
|
@@ -473,6 +486,8 @@ Pack Options:
|
|
|
473
486
|
--readme <path> Replace README.md with specified file
|
|
474
487
|
--inheritable-fields <list> Comma-separated list of fields to inherit from parent (default: version,description,author,license,repository,keywords,homepage,bugs,readme)
|
|
475
488
|
--no-wds Do not check working directory status to increase version
|
|
489
|
+
--no-replace-peer-deps Disable replacing "*" in peerDependencies with actual versions
|
|
490
|
+
--peer-deps-prefix <prefix> Version prefix for replaced peerDependencies (default: "^")
|
|
476
491
|
|
|
477
492
|
Publish Options:
|
|
478
493
|
All npm publish options are supported (e.g., --dry-run, --tag, --access, --registry)
|
|
@@ -501,6 +516,8 @@ Options:
|
|
|
501
516
|
--readme <path> Replace README.md with specified file
|
|
502
517
|
--inheritable-fields <list> Comma-separated list of fields to inherit from parent
|
|
503
518
|
--no-wds Do not check working directory status to increase version
|
|
519
|
+
--no-replace-peer-deps Disable replacing "*" in peerDependencies with actual versions
|
|
520
|
+
--peer-deps-prefix <prefix> Version prefix for replaced peerDependencies (default: "^")
|
|
504
521
|
-h, --help Show help for pack command
|
|
505
522
|
`);
|
|
506
523
|
};
|
|
@@ -528,6 +545,7 @@ Examples:
|
|
|
528
545
|
`);
|
|
529
546
|
};
|
|
530
547
|
const packCommand = async (args) => {
|
|
548
|
+
var _a;
|
|
531
549
|
if (args.options.help || args.options.h) {
|
|
532
550
|
showPackHelp();
|
|
533
551
|
return;
|
|
@@ -537,6 +555,8 @@ const packCommand = async (args) => {
|
|
|
537
555
|
const readmeOption = args.options["readme"];
|
|
538
556
|
const inheritableFieldsOption = args.options["inheritable-fields"];
|
|
539
557
|
const checkWorkingDirectoryStatus = args.options["no-wds"] ? false : true;
|
|
558
|
+
const replacePeerDepsWildcards = !args.options["no-replace-peer-deps"];
|
|
559
|
+
const peerDepsVersionPrefix = (_a = args.options["peer-deps-prefix"]) != null ? _a : "^";
|
|
540
560
|
const targetDir = path.resolve(directory != null ? directory : process.cwd());
|
|
541
561
|
const outputDir = packDestination ? path.resolve(packDestination) : process.cwd();
|
|
542
562
|
const readmeReplacementPath = readmeOption ? path.resolve(readmeOption) : void 0;
|
|
@@ -548,7 +568,9 @@ const packCommand = async (args) => {
|
|
|
548
568
|
outputDir,
|
|
549
569
|
checkWorkingDirectoryStatus,
|
|
550
570
|
inheritableFields,
|
|
551
|
-
readmeReplacementPath
|
|
571
|
+
readmeReplacementPath,
|
|
572
|
+
replacePeerDepsWildcards,
|
|
573
|
+
peerDepsVersionPrefix
|
|
552
574
|
);
|
|
553
575
|
if (metadata) {
|
|
554
576
|
console.log(`[screw-up/cli]: pack: Archive created successfully: ${outputDir}`);
|
|
@@ -562,6 +584,7 @@ const packCommand = async (args) => {
|
|
|
562
584
|
}
|
|
563
585
|
};
|
|
564
586
|
const publishCommand = async (args) => {
|
|
587
|
+
var _a;
|
|
565
588
|
if (args.options.help || args.options.h) {
|
|
566
589
|
showPublishHelp();
|
|
567
590
|
return;
|
|
@@ -592,10 +615,12 @@ const publishCommand = async (args) => {
|
|
|
592
615
|
const path$1 = args.positional[0];
|
|
593
616
|
const inheritableFieldsOption = args.options["inheritable-fields"];
|
|
594
617
|
const checkWorkingDirectoryStatus = args.options["no-wds"] ? false : true;
|
|
618
|
+
const replacePeerDepsWildcards = !args.options["no-replace-peer-deps"];
|
|
619
|
+
const peerDepsVersionPrefix = (_a = args.options["peer-deps-prefix"]) != null ? _a : "^";
|
|
595
620
|
const inheritableFields = parseInheritableFields(inheritableFieldsOption);
|
|
596
621
|
const npmOptions = [];
|
|
597
622
|
Object.entries(args.options).forEach(([key, value]) => {
|
|
598
|
-
if (key === "help" || key === "h" || key === "no-wds" || key === "inheritable-fields") return;
|
|
623
|
+
if (key === "help" || key === "h" || key === "no-wds" || key === "inheritable-fields" || key === "no-replace-peer-deps" || key === "peer-deps-prefix") return;
|
|
599
624
|
if (value === true) {
|
|
600
625
|
npmOptions.push(`--${key}`);
|
|
601
626
|
} else {
|
|
@@ -613,7 +638,9 @@ const publishCommand = async (args) => {
|
|
|
613
638
|
outputDir,
|
|
614
639
|
checkWorkingDirectoryStatus,
|
|
615
640
|
inheritableFields,
|
|
616
|
-
void 0
|
|
641
|
+
void 0,
|
|
642
|
+
replacePeerDepsWildcards,
|
|
643
|
+
peerDepsVersionPrefix
|
|
617
644
|
);
|
|
618
645
|
if (metadata) {
|
|
619
646
|
const archiveName = `${metadata.name}-${metadata.version}.tgz`;
|
|
@@ -640,7 +667,9 @@ const publishCommand = async (args) => {
|
|
|
640
667
|
outputDir,
|
|
641
668
|
checkWorkingDirectoryStatus,
|
|
642
669
|
inheritableFields,
|
|
643
|
-
void 0
|
|
670
|
+
void 0,
|
|
671
|
+
replacePeerDepsWildcards,
|
|
672
|
+
peerDepsVersionPrefix
|
|
644
673
|
);
|
|
645
674
|
if (metadata) {
|
|
646
675
|
const archiveName = `${metadata.name}-${metadata.version}.tgz`;
|
package/dist/cli.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.cjs","sources":["../node_modules/tar-vern/dist/index.js","../src/cli-internal.ts","../src/cli.ts"],"sourcesContent":["/*!\n * name: tar-vern\n * version: 0.3.0\n * description: Tape archiver library for Typescript\n * author: Kouji Matsui (@kekyo@mi.kekyo.net)\n * license: MIT\n * repository.url: https://github.com/kekyo/tar-vern.git\n */\nimport { Readable } from \"stream\";\nimport { createGzip } from \"zlib\";\nimport { createReadStream, createWriteStream } from \"fs\";\nimport { stat } from \"fs/promises\";\nconst getUName = (candidateName, candidateId, reflectStat) => {\n return candidateName ?? (reflectStat === \"all\" ? candidateId.toString() : \"root\");\n};\nconst getBuffer = (data) => {\n return Buffer.isBuffer(data) ? data : Buffer.from(data, \"utf8\");\n};\nconst createDirectoryItem = async (path, reflectStat, options) => {\n const rs = reflectStat ?? \"none\";\n if (rs !== \"none\" && options?.directoryPath) {\n const stats = await stat(options.directoryPath);\n const mode = options?.mode ?? stats.mode;\n const uid = options?.uid ?? stats.uid;\n const gid = options?.gid ?? stats.gid;\n const date = options?.date ?? stats.mtime;\n const uname = getUName(options?.uname, stats.uid, rs);\n const gname = getUName(options?.gname, stats.gid, rs);\n return {\n kind: \"directory\",\n path,\n mode,\n uname,\n gname,\n uid,\n gid,\n date\n };\n } else {\n const mode = options?.mode ?? 493;\n const uid = options?.uid ?? 0;\n const gid = options?.gid ?? 0;\n const date = options?.date ?? /* @__PURE__ */ new Date();\n const uname = getUName(options?.uname, void 0, rs);\n const gname = getUName(options?.gname, void 0, rs);\n return {\n kind: \"directory\",\n path,\n mode,\n uname,\n gname,\n uid,\n gid,\n date\n };\n }\n};\nconst createFileItem = async (path, content, options) => {\n const mode = options?.mode ?? 420;\n const uid = options?.uid ?? 0;\n const gid = options?.gid ?? 0;\n const date = options?.date ?? /* @__PURE__ */ new Date();\n const uname = options?.uname ?? \"root\";\n const gname = options?.gname ?? \"root\";\n return {\n kind: \"file\",\n path,\n mode,\n uname,\n gname,\n uid,\n gid,\n date,\n content\n };\n};\nconst createReadableFileItem = async (path, readable, options) => {\n const mode = options?.mode ?? 420;\n const uid = options?.uid ?? 0;\n const gid = options?.gid ?? 0;\n const date = options?.date ?? /* @__PURE__ */ new Date();\n const uname = options?.uname ?? \"root\";\n const gname = options?.gname ?? \"root\";\n let length = options?.length;\n if (!length) {\n const chunks = [];\n length = 0;\n for await (const chunk of readable) {\n const buffer = getBuffer(chunk);\n chunks.push(buffer);\n length += buffer.length;\n }\n return {\n kind: \"file\",\n path,\n mode,\n uname,\n gname,\n uid,\n gid,\n date,\n content: {\n kind: \"readable\",\n length,\n readable: Readable.from(chunks)\n }\n };\n } else {\n return {\n kind: \"file\",\n path,\n mode,\n uname,\n gname,\n uid,\n gid,\n date,\n content: {\n kind: \"readable\",\n length,\n readable\n }\n };\n }\n};\nconst createGeneratorFileItem = async (path, generator, options) => {\n const mode = options?.mode ?? 420;\n const uid = options?.uid ?? 0;\n const gid = options?.gid ?? 0;\n const date = options?.date ?? /* @__PURE__ */ new Date();\n const uname = options?.uname ?? \"root\";\n const gname = options?.gname ?? \"root\";\n let length = options?.length;\n if (!length) {\n const chunks = [];\n length = 0;\n for await (const chunk of generator) {\n const buffer = getBuffer(chunk);\n chunks.push(buffer);\n length += buffer.length;\n }\n return {\n kind: \"file\",\n path,\n mode,\n uname,\n gname,\n uid,\n gid,\n date,\n content: {\n kind: \"readable\",\n length,\n readable: Readable.from(chunks)\n }\n };\n } else {\n return {\n kind: \"file\",\n path,\n mode,\n uname,\n gname,\n uid,\n gid,\n date,\n content: {\n kind: \"generator\",\n length,\n generator\n }\n };\n }\n};\nconst createReadFileItem = async (path, filePath, reflectStat, options) => {\n const rs = reflectStat ?? \"exceptName\";\n const stats = await stat(filePath);\n const reader = createReadStream(filePath);\n const mode = options?.mode ?? (rs !== \"none\" ? stats.mode : void 0);\n const uid = options?.uid ?? (rs !== \"none\" ? stats.uid : void 0);\n const gid = options?.gid ?? (rs !== \"none\" ? stats.gid : void 0);\n const date = options?.date ?? (rs !== \"none\" ? stats.mtime : void 0);\n const uname = getUName(options?.uname, stats.uid, rs);\n const gname = getUName(options?.gname, stats.gid, rs);\n return await createReadableFileItem(path, reader, {\n length: stats.size,\n mode,\n uname,\n gname,\n uid,\n gid,\n date\n });\n};\nconst storeReaderToFile = (reader, path) => {\n const writer = createWriteStream(path);\n reader.pipe(writer);\n return new Promise((res, rej) => {\n writer.on(\"finish\", res);\n writer.on(\"error\", rej);\n reader.on(\"error\", rej);\n });\n};\nconst utf8ByteLength = (str) => {\n return Buffer.byteLength(str, \"utf8\");\n};\nconst truncateUtf8Safe = (str, maxBytes) => {\n let total = 0;\n let i = 0;\n while (i < str.length) {\n const codePoint = str.codePointAt(i);\n const char = String.fromCodePoint(codePoint);\n const charBytes = Buffer.byteLength(char, \"utf8\");\n if (total + charBytes > maxBytes) break;\n total += charBytes;\n i += char.length;\n }\n return str.slice(0, i);\n};\nconst MAX_NAME = 100;\nconst MAX_PREFIX = 155;\nconst splitPath = (path) => {\n if (utf8ByteLength(path) <= MAX_NAME) {\n return { prefix: \"\", name: path };\n }\n const parts = path.split(\"/\");\n let name = parts.pop() ?? \"\";\n let prefix = parts.join(\"/\");\n if (utf8ByteLength(name) > MAX_NAME) {\n name = truncateUtf8Safe(name, MAX_NAME);\n }\n while (utf8ByteLength(prefix) > MAX_PREFIX) {\n prefix = truncateUtf8Safe(prefix, MAX_PREFIX);\n }\n return { prefix, name };\n};\nconst getOctalBytes = (value, length) => {\n const str = value.toString(8).padStart(length - 1, \"0\") + \"\\0\";\n return Buffer.from(str, \"ascii\");\n};\nconst getPaddedBytes = (buffer) => {\n const extra = buffer.length % 512;\n if (extra === 0) {\n return buffer;\n } else {\n return Buffer.concat([buffer, Buffer.alloc(512 - extra, 0)]);\n }\n};\nconst terminatorBytes = Buffer.alloc(1024, 0);\nconst createTarHeader = (type, path, size, mode, uname, gname, uid, gid, date) => {\n const buffer = Buffer.alloc(512, 0);\n const { name, prefix } = splitPath(path);\n buffer.write(name, 0, 100, \"utf8\");\n getOctalBytes(mode & 4095, 8).copy(buffer, 100);\n getOctalBytes(uid, 8).copy(buffer, 108);\n getOctalBytes(gid, 8).copy(buffer, 116);\n getOctalBytes(size, 12).copy(buffer, 124);\n getOctalBytes(Math.floor(date.getTime() / 1e3), 12).copy(buffer, 136);\n Buffer.from(\" \", \"ascii\").copy(buffer, 148);\n if (type === \"file\") {\n buffer.write(\"0\", 156, 1, \"ascii\");\n } else {\n buffer.write(\"5\", 156, 1, \"ascii\");\n }\n buffer.write(\"ustar\\0\", 257, 6, \"ascii\");\n buffer.write(\"00\", 263, 2, \"ascii\");\n buffer.write(uname, 265, 32, \"utf8\");\n buffer.write(gname, 297, 32, \"utf8\");\n buffer.write(prefix, 345, 155, \"utf8\");\n let sum = 0;\n for (let i = 0; i < 512; i++) {\n sum += buffer[i];\n }\n getOctalBytes(sum, 8).copy(buffer, 148);\n return buffer;\n};\nconst createTarPacker = (entryItemGenerator, compressionType, signal) => {\n const entryItemIterator = async function* () {\n for await (const entryItem of entryItemGenerator) {\n signal?.throwIfAborted();\n switch (entryItem.kind) {\n // Entry is a file\n case \"file\": {\n const entryItemContent = entryItem.content;\n if (typeof entryItemContent === \"string\" || Buffer.isBuffer(entryItemContent)) {\n const contentBytes = getBuffer(entryItemContent);\n const tarHeaderBytes = createTarHeader(\n \"file\",\n entryItem.path,\n contentBytes.length,\n entryItem.mode,\n entryItem.uname,\n entryItem.gname,\n entryItem.uid,\n entryItem.gid,\n entryItem.date\n );\n yield tarHeaderBytes;\n const totalPaddedContentBytes = getPaddedBytes(contentBytes);\n yield totalPaddedContentBytes;\n } else {\n const tarHeaderBytes = createTarHeader(\n \"file\",\n entryItem.path,\n entryItemContent.length,\n entryItem.mode,\n entryItem.uname,\n entryItem.gname,\n entryItem.uid,\n entryItem.gid,\n entryItem.date\n );\n yield tarHeaderBytes;\n let position = 0;\n switch (entryItemContent.kind) {\n // Content is a generator\n case \"generator\": {\n for await (const contentBytes of entryItemContent.generator) {\n signal?.throwIfAborted();\n yield contentBytes;\n position += contentBytes.length;\n }\n break;\n }\n // Content is a readable stream\n case \"readable\": {\n for await (const content of entryItemContent.readable) {\n signal?.throwIfAborted();\n const contentBytes = getBuffer(content);\n yield contentBytes;\n position += contentBytes.length;\n }\n break;\n }\n }\n if (position % 512 !== 0) {\n signal?.throwIfAborted();\n yield Buffer.alloc(512 - position % 512, 0);\n }\n }\n break;\n }\n // Entry is a directory\n case \"directory\": {\n const tarHeaderBytes = createTarHeader(\n \"directory\",\n entryItem.path,\n 0,\n entryItem.mode,\n entryItem.uname,\n entryItem.gname,\n entryItem.uid,\n entryItem.gid,\n entryItem.date\n );\n yield tarHeaderBytes;\n break;\n }\n }\n }\n yield terminatorBytes;\n };\n const ct = compressionType ?? \"none\";\n switch (ct) {\n // No compression\n case \"none\": {\n return Readable.from(entryItemIterator());\n }\n // Gzip compression\n case \"gzip\": {\n const gzipStream = createGzip({ level: 9 });\n const entryItemStream = Readable.from(entryItemIterator());\n entryItemStream.pipe(gzipStream);\n return gzipStream;\n }\n }\n};\nexport {\n createDirectoryItem,\n createFileItem,\n createGeneratorFileItem,\n createReadFileItem,\n createReadableFileItem,\n createTarPacker,\n getBuffer,\n storeReaderToFile\n};\n//# sourceMappingURL=index.js.map\n","// screw-up - Easy package metadata inserter on Vite plugin\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT.\n// https://github.com/kekyo/screw-up/\n\nimport { resolve } from 'path';\nimport { glob } from 'glob';\nimport { existsSync } from 'fs';\nimport { mkdir, lstat } from 'fs/promises';\nimport { createTarPacker, createReadFileItem, createFileItem, storeReaderToFile } from 'tar-vern';\nimport { resolveRawPackageJsonObject, PackageResolutionResult } from './internal.js';\n\n//////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create pack entry generator that collects and yields entries on-demand\n * @param targetDir - Target directory to pack\n * @param resolvedPackageJson - Resolved package.json object\n * @param readmeReplacementPath - Optional path to replacement README file\n * @returns Pack entry generator\n */\nconst createPackEntryGenerator = async function* (targetDir: string, resolvedPackageJson: any, readmeReplacementPath: string | undefined) {\n // First yield package.json content\n const packageJsonContent = JSON.stringify(resolvedPackageJson, null, 2);\n yield await createFileItem('package/package.json', packageJsonContent);\n\n // Get distribution files in package.json\n const distributionFileGlobs = resolvedPackageJson?.files as string[] ?? ['**/*'];\n \n // Convert directory patterns to recursive patterns (like npm pack does)\n const packingFilePaths = (await Promise.all(\n distributionFileGlobs.map(async (pattern) => {\n const fullPath = resolve(targetDir, pattern);\n try {\n if (existsSync(fullPath) && (await lstat(fullPath)).isDirectory()) {\n return await glob(`${pattern}/**/*`, { cwd: targetDir });\n }\n return await glob(pattern, { cwd: targetDir });\n } catch (error) {\n // If there's an error accessing the path, treat as glob pattern\n return await glob(pattern, { cwd: targetDir });\n }\n }))).flat();\n\n // Yield target packing files\n for (const packingFilePath of packingFilePaths) {\n // Except package.json (already yielded)\n if (packingFilePath !== 'package.json') {\n // Is file regular?\n const fullPath = resolve(targetDir, packingFilePath);\n const stat = await lstat(fullPath);\n if (stat.isFile()) {\n // Handle README.md replacement\n if (packingFilePath === 'README.md' && readmeReplacementPath) {\n // Use replacement file but keep README.md as the archive entry name\n yield await createReadFileItem('package/README.md', readmeReplacementPath);\n } else {\n // Yield regular file\n yield await createReadFileItem(`package/${packingFilePath}`, fullPath);\n }\n }\n }\n }\n\n // Handle case where README.md doesn't exist in files but we have a replacement\n if (readmeReplacementPath && !packingFilePaths.includes('README.md')) {\n // Add README.md to the archive using replacement file\n yield await createReadFileItem('package/README.md', readmeReplacementPath);\n }\n};\n\n\n/**\n * Pack assets into a tar archive\n * @param targetDir - Target directory to pack\n * @param outputDir - Output directory to write the tarball\n * @param checkWorkingDirectoryStatus - Check working directory status\n * @param inheritableFields - Package metadata fields that should be inherited from parent\n * @param readmeReplacementPath - Optional path to replacement README file\n * @returns Package metadata (package.json) or undefined if failed\n */\nexport const packAssets = async (\n targetDir: string,\n outputDir: string,\n checkWorkingDirectoryStatus: boolean,\n inheritableFields: Set<string>,\n readmeReplacementPath: string | undefined) : Promise<any> => {\n // Check if target directory exists\n if (!existsSync(targetDir)) {\n return undefined;\n }\n\n // Resolve package metadata with source tracking\n let result: PackageResolutionResult;\n try {\n result = await resolveRawPackageJsonObject(\n targetDir, checkWorkingDirectoryStatus,\n inheritableFields);\n } catch (error) {\n // If package.json cannot be read (e.g., file doesn't exist), return undefined\n // This matches npm pack behavior which requires package.json\n return undefined;\n }\n\n const { packageJson: resolvedPackageJson, sourceMap } = result;\n\n // Check if package is private\n if (resolvedPackageJson?.private) {\n return undefined;\n }\n\n // Determine README replacement path\n // Priority: CLI option > package.json.readme > none\n let finalReadmeReplacementPath = readmeReplacementPath;\n if (!finalReadmeReplacementPath && resolvedPackageJson?.readme) {\n // Get the correct base directory for readme field\n const readmeSourceDir = sourceMap.get('readme') ?? targetDir;\n const packageReadmePath = resolve(readmeSourceDir, resolvedPackageJson.readme);\n if (existsSync(packageReadmePath)) {\n finalReadmeReplacementPath = packageReadmePath;\n }\n }\n\n // Validate README replacement path before creating generator\n if (finalReadmeReplacementPath && !existsSync(finalReadmeReplacementPath)) {\n throw new Error(`README replacement file not found: ${finalReadmeReplacementPath}`);\n }\n\n // Get package name\n const outputFileName = `${resolvedPackageJson?.name?.replace('/', '-') ?? \"package\"}-${resolvedPackageJson?.version ?? \"0.0.0\"}.tgz`;\n\n // Ensure output directory exists\n if (!existsSync(outputDir)) {\n await mkdir(outputDir, { recursive: true });\n }\n\n // Create tar packer with generator and gzip compression\n const packer = createTarPacker(\n createPackEntryGenerator(targetDir, resolvedPackageJson, finalReadmeReplacementPath),\n 'gzip');\n\n // Write compressed tar archive to file\n const outputFile = resolve(outputDir, outputFileName);\n await storeReaderToFile(packer, outputFile);\n\n return resolvedPackageJson;\n};\n\n/**\n * Get computed package.json object\n * @param targetDir - Target directory to resolve package metadata\n * @param checkWorkingDirectoryStatus - Check working directory status\n * @param inheritableFields - Package metadata fields that should be inherited from parent\n * @returns Computed package.json object or undefined if failed\n */\nexport const getComputedPackageJsonObject = async (\n targetDir: string,\n checkWorkingDirectoryStatus: boolean,\n inheritableFields: Set<string>) : Promise<any> => {\n // Check if target directory exists\n if (!existsSync(targetDir)) {\n return undefined;\n }\n\n // Resolve package metadata\n const result = await resolveRawPackageJsonObject(\n targetDir, checkWorkingDirectoryStatus,\n inheritableFields);\n return result.packageJson;\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\nexport interface ParsedArgs {\n command?: string;\n positional: string[];\n options: Record<string, string | boolean>;\n}\n\nexport const parseArgs = (argv: string[]): ParsedArgs => {\n const args = argv.slice(2); // Remove 'node' and script path\n const result: ParsedArgs = {\n positional: [],\n options: {}\n };\n\n if (args.length === 0) {\n return result;\n }\n\n // Don't treat options as command\n if (args[0].startsWith('-')) {\n let i = 0;\n while (i < args.length) {\n const arg = args[i];\n\n if (arg.startsWith('--')) {\n const optionName = arg.slice(2);\n const nextArg = args[i + 1];\n\n if (nextArg !== undefined && !nextArg.startsWith('-')) {\n result.options[optionName] = nextArg;\n i += 2;\n } else {\n result.options[optionName] = true;\n i += 1;\n }\n } else if (arg.startsWith('-')) {\n const optionName = arg.slice(1);\n result.options[optionName] = true;\n i += 1;\n } else {\n result.positional.push(arg);\n i += 1;\n }\n }\n return result;\n }\n\n result.command = args[0];\n let i = 1;\n\n while (i < args.length) {\n const arg = args[i];\n\n if (arg.startsWith('--')) {\n const optionName = arg.slice(2);\n const nextArg = args[i + 1];\n\n if (nextArg !== undefined && !nextArg.startsWith('-')) {\n result.options[optionName] = nextArg;\n i += 2;\n } else {\n result.options[optionName] = true;\n i += 1;\n }\n } else if (arg.startsWith('-')) {\n const optionName = arg.slice(1);\n result.options[optionName] = true;\n i += 1;\n } else {\n result.positional.push(arg);\n i += 1;\n }\n }\n\n return result;\n};\n","#!/usr/bin/env node\n\n// screw-up - Easy package metadata inserter on Vite plugin\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT.\n// https://github.com/kekyo/screw-up/\n\nimport { join, resolve } from 'path';\nimport { existsSync } from 'fs';\nimport { mkdtemp, rm, stat } from 'fs/promises';\nimport { spawn } from 'child_process';\nimport { packAssets, parseArgs, ParsedArgs, getComputedPackageJsonObject } from './cli-internal.js';\n\ndeclare const __VERSION__: string;\ndeclare const __AUTHOR__: string;\ndeclare const __REPOSITORY_URL__: string;\ndeclare const __LICENSE__: string;\n\n// Package metadata fields that should be inherited from parent\nconst defaultInheritableFields = new Set([\n 'version',\n 'description', \n 'author',\n 'license',\n 'repository',\n 'keywords',\n 'homepage',\n 'bugs',\n 'readme'\n]);\n\n// Parse inheritable fields from CLI option string\nconst parseInheritableFields = (inheritableFieldsOption: string | boolean | undefined): Set<string> => {\n if (typeof inheritableFieldsOption !== 'string') {\n return defaultInheritableFields;\n }\n if (!inheritableFieldsOption.trim()) {\n return new Set(); // Empty set for empty string (no inheritance)\n }\n return new Set(inheritableFieldsOption.split(',').map(field => field.trim()).filter(field => field.length > 0));\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\nconst showHelp = () => {\n console.log(`screw-up - Easy package metadata inserter CLI [${__VERSION__}]\nCopyright (c) ${__AUTHOR__}\nRepository: ${__REPOSITORY_URL__}\nLicense: ${__LICENSE__}\n\nUsage: screw-up <command> [options]\n\nCommands:\n pack [directory] Pack the project into a tar archive\n publish [directory|package.tgz] Publish the project\n dump [directory] Dump computed package.json as JSON\n\nOptions:\n -h, --help Show help\n\nPack Options:\n --pack-destination <path> Directory to write the tarball\n --readme <path> Replace README.md with specified file\n --inheritable-fields <list> Comma-separated list of fields to inherit from parent (default: version,description,author,license,repository,keywords,homepage,bugs,readme)\n --no-wds Do not check working directory status to increase version\n\nPublish Options:\n All npm publish options are supported (e.g., --dry-run, --tag, --access, --registry)\n\nExamples:\n screw-up pack # Pack current directory\n screw-up pack ./my-project # Pack specific directory\n screw-up pack --pack-destination ./dist # Pack to specific output directory\n screw-up pack --readme ./README_pack.md # Pack with custom README\n screw-up publish # Publish current directory\n screw-up publish ./my-project # Publish specific directory\n screw-up publish package.tgz # Publish existing tarball\n screw-up publish --dry-run --tag beta # Publish with npm options\n`);\n};\n\nconst showPackHelp = () => {\n console.log(`Usage: screw-up pack [options] [directory]\n\nPack the project into a tar archive\n\nArguments:\n directory Directory to pack (default: current directory)\n\nOptions:\n --pack-destination <path> Directory to write the tarball\n --readme <path> Replace README.md with specified file\n --inheritable-fields <list> Comma-separated list of fields to inherit from parent\n --no-wds Do not check working directory status to increase version\n -h, --help Show help for pack command\n`);\n};\n\nconst showPublishHelp = () => {\n console.log(`Usage: screw-up publish [options] [directory|package.tgz]\n\nPublish the project\n\nArguments:\n directory|package.tgz Directory to pack and publish, or existing tarball to publish\n\nOptions:\n All npm publish options are supported, including:\n --dry-run Perform a dry run\n --tag <tag> Tag for the published version\n --access <access> Access level (public or restricted)\n --registry <registry> Registry URL\n -h, --help Show help for publish command\n\nExamples:\n screw-up publish # Publish current directory\n screw-up publish ./my-project # Publish specific directory\n screw-up publish package.tgz # Publish existing tarball\n screw-up publish --dry-run --tag beta # Publish with options\n`);\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\nconst packCommand = async (args: ParsedArgs) => {\n if (args.options.help || args.options.h) {\n showPackHelp();\n return;\n }\n\n const directory = args.positional[0];\n const packDestination = args.options['pack-destination'] as string;\n const readmeOption = args.options['readme'] as string;\n const inheritableFieldsOption = args.options['inheritable-fields'] as string;\n const checkWorkingDirectoryStatus = args.options['no-wds'] ? false : true;\n\n const targetDir = resolve(directory ?? process.cwd());\n const outputDir = packDestination ? resolve(packDestination) : process.cwd();\n const readmeReplacementPath = readmeOption ? resolve(readmeOption) : undefined;\n \n // Parse inheritable fields from CLI option or use defaults\n const inheritableFields = parseInheritableFields(inheritableFieldsOption);\n\n console.log(`[screw-up/cli]: pack: Creating archive of ${targetDir}...`);\n\n try {\n const metadata = await packAssets(\n targetDir, outputDir, checkWorkingDirectoryStatus, inheritableFields, readmeReplacementPath);\n if (metadata) {\n console.log(`[screw-up/cli]: pack: Archive created successfully: ${outputDir}`);\n } else {\n console.error(`[screw-up/cli]: pack: Unable to find any files to pack: ${targetDir}`);\n process.exit(1);\n }\n } catch (error) {\n console.error('[screw-up/cli]: pack: Failed to create archive:', error);\n process.exit(1);\n }\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\nconst publishCommand = async (args: ParsedArgs) => {\n if (args.options.help || args.options.h) {\n showPublishHelp();\n return;\n }\n\n const runNpmPublish = async (tarballPath: string, npmOptions: string[]) => {\n console.log(`[screw-up/cli]: publish: Publishing ${tarballPath} to npm...`);\n \n const publishArgs = ['publish', tarballPath, ...npmOptions];\n \n // For testing: log the command that would be executed\n if (process.env.SCREW_UP_TEST_MODE === 'true') {\n console.log(`[screw-up/cli]: TEST_MODE: Would execute: npm ${publishArgs.join(' ')}`);\n console.log(`[screw-up/cli]: TEST_MODE: Tarball path: ${tarballPath}`);\n console.log(`[screw-up/cli]: TEST_MODE: Options: ${npmOptions.join(' ')}`);\n console.log(`[screw-up/cli]: publish: Successfully published ${tarballPath}`);\n return;\n }\n \n const npmProcess = spawn('npm', publishArgs, { stdio: 'inherit' });\n \n return new Promise<void>((resolve, reject) => {\n npmProcess.on('close', (code) => {\n if (code === 0) {\n console.log(`[screw-up/cli]: publish: Successfully published ${tarballPath}`);\n resolve();\n } else {\n reject(new Error(`npm publish failed with exit code ${code}`));\n }\n });\n npmProcess.on('error', reject);\n });\n };\n\n const path = args.positional[0];\n const inheritableFieldsOption = args.options['inheritable-fields'] as string;\n const checkWorkingDirectoryStatus = args.options['no-wds'] ? false : true;\n\n // Parse inheritable fields from CLI option or use defaults\n const inheritableFields = parseInheritableFields(inheritableFieldsOption);\n\n // Convert parsed options to npm options\n const npmOptions: string[] = [];\n Object.entries(args.options).forEach(([key, value]) => {\n if (key === 'help' || key === 'h' || key === 'no-wds' || key === 'inheritable-fields') return; // Skip help, no-wds, and inheritable-fields options\n\n if (value === true) {\n npmOptions.push(`--${key}`);\n } else {\n npmOptions.push(`--${key}`, value as string);\n }\n });\n\n try {\n if (!path) {\n // No argument provided - generate tarball from current directory and publish\n const targetDir = process.cwd();\n const outputDir = await mkdtemp('screw-up-publish-');\n\n console.log(`[screw-up/cli]: publish: Creating archive of ${targetDir}...`);\n\n try {\n const metadata = await packAssets(\n targetDir, outputDir, checkWorkingDirectoryStatus, inheritableFields, undefined);\n if (metadata) {\n const archiveName = `${metadata.name}-${metadata.version}.tgz`;\n const archivePath = join(outputDir, archiveName);\n await runNpmPublish(archivePath, npmOptions);\n } else {\n console.error(`[screw-up/cli]: publish: Unable to find any files to pack: ${targetDir}`);\n process.exit(1);\n }\n } finally {\n await rm(outputDir, { recursive: true, force: true });\n }\n } else if (existsSync(path)) {\n const pathStat = await stat(path);\n \n if (pathStat.isFile() && (path.endsWith('.tgz') || path.endsWith('.tar.gz'))) {\n // Argument is a tarball file - publish directly\n await runNpmPublish(resolve(path), npmOptions);\n } else if (pathStat.isDirectory()) {\n // Argument is a directory - generate tarball from directory and publish\n const targetDir = resolve(path);\n const outputDir = await mkdtemp('screw-up-publish-');\n\n console.log(`[screw-up/cli]: publish: Creating archive of ${targetDir}...`);\n\n try {\n const metadata = await packAssets(\n targetDir, outputDir, checkWorkingDirectoryStatus, inheritableFields, undefined);\n if (metadata) {\n const archiveName = `${metadata.name}-${metadata.version}.tgz`;\n const archivePath = join(outputDir, archiveName);\n await runNpmPublish(archivePath, npmOptions);\n } else {\n console.error(`[screw-up/cli]: publish: Unable to find any files to pack: ${targetDir}`);\n process.exit(1);\n }\n } finally {\n await rm(outputDir, { recursive: true, force: true });\n }\n } else {\n console.error(`[screw-up/cli]: publish: Invalid path - must be a directory or .tgz/.tar.gz file: ${path}`);\n process.exit(1);\n }\n } else {\n console.error(`[screw-up/cli]: publish: Path does not exist: ${path}`);\n process.exit(1);\n }\n } catch (error) {\n console.error('[screw-up/cli]: publish: Failed to publish:', error);\n process.exit(1);\n }\n};\n\nconst showDumpHelp = () => {\n console.log(`Usage: screw-up dump [options] [directory]\n\nDump computed package.json as JSON\n\nArguments:\n directory Directory to dump package.json from (default: current directory)\n\nOptions:\n --inheritable-fields <list> Comma-separated list of fields to inherit from parent\n --no-wds Do not check working directory status to increase version\n -h, --help Show help for dump command\n`);\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\nconst dumpCommand = async (args: ParsedArgs) => {\n if (args.options.help || args.options.h) {\n showDumpHelp();\n return;\n }\n\n const directory = args.positional[0];\n const inheritableFieldsOption = args.options['inheritable-fields'] as string;\n const checkWorkingDirectoryStatus = args.options['no-wds'] ? false : true;\n\n // Parse inheritable fields from CLI option or use defaults\n const inheritableFields = parseInheritableFields(inheritableFieldsOption);\n\n const targetDir = resolve(directory ?? process.cwd());\n\n try {\n const computedPackageJson = await getComputedPackageJsonObject(\n targetDir, checkWorkingDirectoryStatus, inheritableFields);\n if (computedPackageJson) {\n console.log(JSON.stringify(computedPackageJson, null, 2));\n } else {\n console.error(`[screw-up/cli]: dump: Unable to read package.json from: ${targetDir}`);\n process.exit(1);\n }\n } catch (error) {\n console.error('[screw-up/cli]: dump: Failed to dump package.json:', error);\n process.exit(1);\n }\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\nconst main = async () => {\n const args = parseArgs(process.argv);\n\n // Handle global help or when no command is provided\n if (args.options.help || args.options.h || !args.command || \n args.command === 'help' || args.command === '--help') {\n showHelp();\n return;\n }\n\n switch (args.command) {\n case 'pack':\n await packCommand(args);\n break;\n case 'publish':\n await publishCommand(args);\n break;\n case 'dump':\n await dumpCommand(args);\n break;\n default:\n console.error(`Unknown command: ${args.command}`);\n console.error('Run \"screw-up --help\" for usage information.');\n process.exit(1);\n }\n};\n\nmain().catch((error) => {\n console.error('CLI error:', error);\n process.exit(1);\n});\n"],"names":["path","Readable","stat","createReadStream","createWriteStream","createGzip","resolve","existsSync","lstat","glob","resolveRawPackageJsonObject","mkdir","i","npmOptions","spawn","mkdtemp","join","rm"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"cli.cjs","sources":["../node_modules/tar-vern/dist/index.js","../src/cli-internal.ts","../src/cli.ts"],"sourcesContent":["/*!\n * name: tar-vern\n * version: 0.3.0\n * description: Tape archiver library for Typescript\n * author: Kouji Matsui (@kekyo@mi.kekyo.net)\n * license: MIT\n * repository.url: https://github.com/kekyo/tar-vern.git\n */\nimport { Readable } from \"stream\";\nimport { createGzip } from \"zlib\";\nimport { createReadStream, createWriteStream } from \"fs\";\nimport { stat } from \"fs/promises\";\nconst getUName = (candidateName, candidateId, reflectStat) => {\n return candidateName ?? (reflectStat === \"all\" ? candidateId.toString() : \"root\");\n};\nconst getBuffer = (data) => {\n return Buffer.isBuffer(data) ? data : Buffer.from(data, \"utf8\");\n};\nconst createDirectoryItem = async (path, reflectStat, options) => {\n const rs = reflectStat ?? \"none\";\n if (rs !== \"none\" && options?.directoryPath) {\n const stats = await stat(options.directoryPath);\n const mode = options?.mode ?? stats.mode;\n const uid = options?.uid ?? stats.uid;\n const gid = options?.gid ?? stats.gid;\n const date = options?.date ?? stats.mtime;\n const uname = getUName(options?.uname, stats.uid, rs);\n const gname = getUName(options?.gname, stats.gid, rs);\n return {\n kind: \"directory\",\n path,\n mode,\n uname,\n gname,\n uid,\n gid,\n date\n };\n } else {\n const mode = options?.mode ?? 493;\n const uid = options?.uid ?? 0;\n const gid = options?.gid ?? 0;\n const date = options?.date ?? /* @__PURE__ */ new Date();\n const uname = getUName(options?.uname, void 0, rs);\n const gname = getUName(options?.gname, void 0, rs);\n return {\n kind: \"directory\",\n path,\n mode,\n uname,\n gname,\n uid,\n gid,\n date\n };\n }\n};\nconst createFileItem = async (path, content, options) => {\n const mode = options?.mode ?? 420;\n const uid = options?.uid ?? 0;\n const gid = options?.gid ?? 0;\n const date = options?.date ?? /* @__PURE__ */ new Date();\n const uname = options?.uname ?? \"root\";\n const gname = options?.gname ?? \"root\";\n return {\n kind: \"file\",\n path,\n mode,\n uname,\n gname,\n uid,\n gid,\n date,\n content\n };\n};\nconst createReadableFileItem = async (path, readable, options) => {\n const mode = options?.mode ?? 420;\n const uid = options?.uid ?? 0;\n const gid = options?.gid ?? 0;\n const date = options?.date ?? /* @__PURE__ */ new Date();\n const uname = options?.uname ?? \"root\";\n const gname = options?.gname ?? \"root\";\n let length = options?.length;\n if (!length) {\n const chunks = [];\n length = 0;\n for await (const chunk of readable) {\n const buffer = getBuffer(chunk);\n chunks.push(buffer);\n length += buffer.length;\n }\n return {\n kind: \"file\",\n path,\n mode,\n uname,\n gname,\n uid,\n gid,\n date,\n content: {\n kind: \"readable\",\n length,\n readable: Readable.from(chunks)\n }\n };\n } else {\n return {\n kind: \"file\",\n path,\n mode,\n uname,\n gname,\n uid,\n gid,\n date,\n content: {\n kind: \"readable\",\n length,\n readable\n }\n };\n }\n};\nconst createGeneratorFileItem = async (path, generator, options) => {\n const mode = options?.mode ?? 420;\n const uid = options?.uid ?? 0;\n const gid = options?.gid ?? 0;\n const date = options?.date ?? /* @__PURE__ */ new Date();\n const uname = options?.uname ?? \"root\";\n const gname = options?.gname ?? \"root\";\n let length = options?.length;\n if (!length) {\n const chunks = [];\n length = 0;\n for await (const chunk of generator) {\n const buffer = getBuffer(chunk);\n chunks.push(buffer);\n length += buffer.length;\n }\n return {\n kind: \"file\",\n path,\n mode,\n uname,\n gname,\n uid,\n gid,\n date,\n content: {\n kind: \"readable\",\n length,\n readable: Readable.from(chunks)\n }\n };\n } else {\n return {\n kind: \"file\",\n path,\n mode,\n uname,\n gname,\n uid,\n gid,\n date,\n content: {\n kind: \"generator\",\n length,\n generator\n }\n };\n }\n};\nconst createReadFileItem = async (path, filePath, reflectStat, options) => {\n const rs = reflectStat ?? \"exceptName\";\n const stats = await stat(filePath);\n const reader = createReadStream(filePath);\n const mode = options?.mode ?? (rs !== \"none\" ? stats.mode : void 0);\n const uid = options?.uid ?? (rs !== \"none\" ? stats.uid : void 0);\n const gid = options?.gid ?? (rs !== \"none\" ? stats.gid : void 0);\n const date = options?.date ?? (rs !== \"none\" ? stats.mtime : void 0);\n const uname = getUName(options?.uname, stats.uid, rs);\n const gname = getUName(options?.gname, stats.gid, rs);\n return await createReadableFileItem(path, reader, {\n length: stats.size,\n mode,\n uname,\n gname,\n uid,\n gid,\n date\n });\n};\nconst storeReaderToFile = (reader, path) => {\n const writer = createWriteStream(path);\n reader.pipe(writer);\n return new Promise((res, rej) => {\n writer.on(\"finish\", res);\n writer.on(\"error\", rej);\n reader.on(\"error\", rej);\n });\n};\nconst utf8ByteLength = (str) => {\n return Buffer.byteLength(str, \"utf8\");\n};\nconst truncateUtf8Safe = (str, maxBytes) => {\n let total = 0;\n let i = 0;\n while (i < str.length) {\n const codePoint = str.codePointAt(i);\n const char = String.fromCodePoint(codePoint);\n const charBytes = Buffer.byteLength(char, \"utf8\");\n if (total + charBytes > maxBytes) break;\n total += charBytes;\n i += char.length;\n }\n return str.slice(0, i);\n};\nconst MAX_NAME = 100;\nconst MAX_PREFIX = 155;\nconst splitPath = (path) => {\n if (utf8ByteLength(path) <= MAX_NAME) {\n return { prefix: \"\", name: path };\n }\n const parts = path.split(\"/\");\n let name = parts.pop() ?? \"\";\n let prefix = parts.join(\"/\");\n if (utf8ByteLength(name) > MAX_NAME) {\n name = truncateUtf8Safe(name, MAX_NAME);\n }\n while (utf8ByteLength(prefix) > MAX_PREFIX) {\n prefix = truncateUtf8Safe(prefix, MAX_PREFIX);\n }\n return { prefix, name };\n};\nconst getOctalBytes = (value, length) => {\n const str = value.toString(8).padStart(length - 1, \"0\") + \"\\0\";\n return Buffer.from(str, \"ascii\");\n};\nconst getPaddedBytes = (buffer) => {\n const extra = buffer.length % 512;\n if (extra === 0) {\n return buffer;\n } else {\n return Buffer.concat([buffer, Buffer.alloc(512 - extra, 0)]);\n }\n};\nconst terminatorBytes = Buffer.alloc(1024, 0);\nconst createTarHeader = (type, path, size, mode, uname, gname, uid, gid, date) => {\n const buffer = Buffer.alloc(512, 0);\n const { name, prefix } = splitPath(path);\n buffer.write(name, 0, 100, \"utf8\");\n getOctalBytes(mode & 4095, 8).copy(buffer, 100);\n getOctalBytes(uid, 8).copy(buffer, 108);\n getOctalBytes(gid, 8).copy(buffer, 116);\n getOctalBytes(size, 12).copy(buffer, 124);\n getOctalBytes(Math.floor(date.getTime() / 1e3), 12).copy(buffer, 136);\n Buffer.from(\" \", \"ascii\").copy(buffer, 148);\n if (type === \"file\") {\n buffer.write(\"0\", 156, 1, \"ascii\");\n } else {\n buffer.write(\"5\", 156, 1, \"ascii\");\n }\n buffer.write(\"ustar\\0\", 257, 6, \"ascii\");\n buffer.write(\"00\", 263, 2, \"ascii\");\n buffer.write(uname, 265, 32, \"utf8\");\n buffer.write(gname, 297, 32, \"utf8\");\n buffer.write(prefix, 345, 155, \"utf8\");\n let sum = 0;\n for (let i = 0; i < 512; i++) {\n sum += buffer[i];\n }\n getOctalBytes(sum, 8).copy(buffer, 148);\n return buffer;\n};\nconst createTarPacker = (entryItemGenerator, compressionType, signal) => {\n const entryItemIterator = async function* () {\n for await (const entryItem of entryItemGenerator) {\n signal?.throwIfAborted();\n switch (entryItem.kind) {\n // Entry is a file\n case \"file\": {\n const entryItemContent = entryItem.content;\n if (typeof entryItemContent === \"string\" || Buffer.isBuffer(entryItemContent)) {\n const contentBytes = getBuffer(entryItemContent);\n const tarHeaderBytes = createTarHeader(\n \"file\",\n entryItem.path,\n contentBytes.length,\n entryItem.mode,\n entryItem.uname,\n entryItem.gname,\n entryItem.uid,\n entryItem.gid,\n entryItem.date\n );\n yield tarHeaderBytes;\n const totalPaddedContentBytes = getPaddedBytes(contentBytes);\n yield totalPaddedContentBytes;\n } else {\n const tarHeaderBytes = createTarHeader(\n \"file\",\n entryItem.path,\n entryItemContent.length,\n entryItem.mode,\n entryItem.uname,\n entryItem.gname,\n entryItem.uid,\n entryItem.gid,\n entryItem.date\n );\n yield tarHeaderBytes;\n let position = 0;\n switch (entryItemContent.kind) {\n // Content is a generator\n case \"generator\": {\n for await (const contentBytes of entryItemContent.generator) {\n signal?.throwIfAborted();\n yield contentBytes;\n position += contentBytes.length;\n }\n break;\n }\n // Content is a readable stream\n case \"readable\": {\n for await (const content of entryItemContent.readable) {\n signal?.throwIfAborted();\n const contentBytes = getBuffer(content);\n yield contentBytes;\n position += contentBytes.length;\n }\n break;\n }\n }\n if (position % 512 !== 0) {\n signal?.throwIfAborted();\n yield Buffer.alloc(512 - position % 512, 0);\n }\n }\n break;\n }\n // Entry is a directory\n case \"directory\": {\n const tarHeaderBytes = createTarHeader(\n \"directory\",\n entryItem.path,\n 0,\n entryItem.mode,\n entryItem.uname,\n entryItem.gname,\n entryItem.uid,\n entryItem.gid,\n entryItem.date\n );\n yield tarHeaderBytes;\n break;\n }\n }\n }\n yield terminatorBytes;\n };\n const ct = compressionType ?? \"none\";\n switch (ct) {\n // No compression\n case \"none\": {\n return Readable.from(entryItemIterator());\n }\n // Gzip compression\n case \"gzip\": {\n const gzipStream = createGzip({ level: 9 });\n const entryItemStream = Readable.from(entryItemIterator());\n entryItemStream.pipe(gzipStream);\n return gzipStream;\n }\n }\n};\nexport {\n createDirectoryItem,\n createFileItem,\n createGeneratorFileItem,\n createReadFileItem,\n createReadableFileItem,\n createTarPacker,\n getBuffer,\n storeReaderToFile\n};\n//# sourceMappingURL=index.js.map\n","// screw-up - Easy package metadata inserter on Vite plugin\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT.\n// https://github.com/kekyo/screw-up/\n\nimport { resolve } from 'path';\nimport { glob } from 'glob';\nimport { existsSync } from 'fs';\nimport { mkdir, lstat } from 'fs/promises';\nimport { createTarPacker, createReadFileItem, createFileItem, storeReaderToFile } from 'tar-vern';\nimport { resolveRawPackageJsonObject, PackageResolutionResult, findWorkspaceRoot, collectWorkspaceSiblings, replacePeerDependenciesWildcards } from './internal.js';\n\n//////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create pack entry generator that collects and yields entries on-demand\n * @param targetDir - Target directory to pack\n * @param resolvedPackageJson - Resolved package.json object\n * @param readmeReplacementPath - Optional path to replacement README file\n * @returns Pack entry generator\n */\nconst createPackEntryGenerator = async function* (targetDir: string, resolvedPackageJson: any, readmeReplacementPath: string | undefined) {\n // First yield package.json content\n const packageJsonContent = JSON.stringify(resolvedPackageJson, null, 2);\n yield await createFileItem('package/package.json', packageJsonContent);\n\n // Get distribution files in package.json\n const distributionFileGlobs = resolvedPackageJson?.files as string[] ?? ['**/*'];\n \n // Convert directory patterns to recursive patterns (like npm pack does)\n const packingFilePaths = (await Promise.all(\n distributionFileGlobs.map(async (pattern) => {\n const fullPath = resolve(targetDir, pattern);\n try {\n if (existsSync(fullPath) && (await lstat(fullPath)).isDirectory()) {\n return await glob(`${pattern}/**/*`, { cwd: targetDir });\n }\n return await glob(pattern, { cwd: targetDir });\n } catch (error) {\n // If there's an error accessing the path, treat as glob pattern\n return await glob(pattern, { cwd: targetDir });\n }\n }))).flat();\n\n // Yield target packing files\n for (const packingFilePath of packingFilePaths) {\n // Except package.json (already yielded)\n if (packingFilePath !== 'package.json') {\n // Is file regular?\n const fullPath = resolve(targetDir, packingFilePath);\n const stat = await lstat(fullPath);\n if (stat.isFile()) {\n // Handle README.md replacement\n if (packingFilePath === 'README.md' && readmeReplacementPath) {\n // Use replacement file but keep README.md as the archive entry name\n yield await createReadFileItem('package/README.md', readmeReplacementPath);\n } else {\n // Yield regular file\n yield await createReadFileItem(`package/${packingFilePath}`, fullPath);\n }\n }\n }\n }\n\n // Handle case where README.md doesn't exist in files but we have a replacement\n if (readmeReplacementPath && !packingFilePaths.includes('README.md')) {\n // Add README.md to the archive using replacement file\n yield await createReadFileItem('package/README.md', readmeReplacementPath);\n }\n};\n\n\n/**\n * Pack assets into a tar archive\n * @param targetDir - Target directory to pack\n * @param outputDir - Output directory to write the tarball\n * @param checkWorkingDirectoryStatus - Check working directory status\n * @param inheritableFields - Package metadata fields that should be inherited from parent\n * @param readmeReplacementPath - Optional path to replacement README file\n * @param replacePeerDepsWildcards - Replace \"*\" in peerDependencies with actual versions\n * @param peerDepsVersionPrefix - Version prefix for replaced peerDependencies\n * @returns Package metadata (package.json) or undefined if failed\n */\nexport const packAssets = async (\n targetDir: string,\n outputDir: string,\n checkWorkingDirectoryStatus: boolean,\n inheritableFields: Set<string>,\n readmeReplacementPath: string | undefined,\n replacePeerDepsWildcards: boolean = true,\n peerDepsVersionPrefix: string = \"^\") : Promise<any> => {\n // Check if target directory exists\n if (!existsSync(targetDir)) {\n return undefined;\n }\n\n // Resolve package metadata with source tracking\n let result: PackageResolutionResult;\n try {\n result = await resolveRawPackageJsonObject(\n targetDir, checkWorkingDirectoryStatus,\n inheritableFields);\n } catch (error) {\n // If package.json cannot be read (e.g., file doesn't exist), return undefined\n // This matches npm pack behavior which requires package.json\n return undefined;\n }\n\n let { packageJson: resolvedPackageJson, sourceMap } = result;\n\n // Check if package is private\n if (resolvedPackageJson?.private) {\n return undefined;\n }\n\n // Replace peerDependencies wildcards if enabled and in workspace\n if (replacePeerDepsWildcards) {\n const workspaceRoot = await findWorkspaceRoot(targetDir);\n if (workspaceRoot) {\n const siblings = await collectWorkspaceSiblings(workspaceRoot);\n if (siblings.size > 0) {\n resolvedPackageJson = replacePeerDependenciesWildcards(\n resolvedPackageJson,\n siblings,\n peerDepsVersionPrefix\n );\n }\n }\n }\n\n // Determine README replacement path\n // Priority: CLI option > package.json.readme > none\n let finalReadmeReplacementPath = readmeReplacementPath;\n if (!finalReadmeReplacementPath && resolvedPackageJson?.readme) {\n // Get the correct base directory for readme field\n const readmeSourceDir = sourceMap.get('readme') ?? targetDir;\n const packageReadmePath = resolve(readmeSourceDir, resolvedPackageJson.readme);\n if (existsSync(packageReadmePath)) {\n finalReadmeReplacementPath = packageReadmePath;\n }\n }\n\n // Validate README replacement path before creating generator\n if (finalReadmeReplacementPath && !existsSync(finalReadmeReplacementPath)) {\n throw new Error(`README replacement file not found: ${finalReadmeReplacementPath}`);\n }\n\n // Get package name\n const outputFileName = `${resolvedPackageJson?.name?.replace('/', '-') ?? \"package\"}-${resolvedPackageJson?.version ?? \"0.0.0\"}.tgz`;\n\n // Ensure output directory exists\n if (!existsSync(outputDir)) {\n await mkdir(outputDir, { recursive: true });\n }\n\n // Create tar packer with generator and gzip compression\n const packer = createTarPacker(\n createPackEntryGenerator(targetDir, resolvedPackageJson, finalReadmeReplacementPath),\n 'gzip');\n\n // Write compressed tar archive to file\n const outputFile = resolve(outputDir, outputFileName);\n await storeReaderToFile(packer, outputFile);\n\n return resolvedPackageJson;\n};\n\n/**\n * Get computed package.json object\n * @param targetDir - Target directory to resolve package metadata\n * @param checkWorkingDirectoryStatus - Check working directory status\n * @param inheritableFields - Package metadata fields that should be inherited from parent\n * @returns Computed package.json object or undefined if failed\n */\nexport const getComputedPackageJsonObject = async (\n targetDir: string,\n checkWorkingDirectoryStatus: boolean,\n inheritableFields: Set<string>) : Promise<any> => {\n // Check if target directory exists\n if (!existsSync(targetDir)) {\n return undefined;\n }\n\n // Resolve package metadata\n const result = await resolveRawPackageJsonObject(\n targetDir, checkWorkingDirectoryStatus,\n inheritableFields);\n return result.packageJson;\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\nexport interface ParsedArgs {\n command?: string;\n positional: string[];\n options: Record<string, string | boolean>;\n}\n\nexport const parseArgs = (argv: string[]): ParsedArgs => {\n const args = argv.slice(2); // Remove 'node' and script path\n const result: ParsedArgs = {\n positional: [],\n options: {}\n };\n\n if (args.length === 0) {\n return result;\n }\n\n // Don't treat options as command\n if (args[0].startsWith('-')) {\n let i = 0;\n while (i < args.length) {\n const arg = args[i];\n\n if (arg.startsWith('--')) {\n const optionName = arg.slice(2);\n const nextArg = args[i + 1];\n\n if (nextArg !== undefined && !nextArg.startsWith('-')) {\n result.options[optionName] = nextArg;\n i += 2;\n } else {\n result.options[optionName] = true;\n i += 1;\n }\n } else if (arg.startsWith('-')) {\n const optionName = arg.slice(1);\n result.options[optionName] = true;\n i += 1;\n } else {\n result.positional.push(arg);\n i += 1;\n }\n }\n return result;\n }\n\n result.command = args[0];\n let i = 1;\n\n while (i < args.length) {\n const arg = args[i];\n\n if (arg.startsWith('--')) {\n const optionName = arg.slice(2);\n const nextArg = args[i + 1];\n\n if (nextArg !== undefined && !nextArg.startsWith('-')) {\n result.options[optionName] = nextArg;\n i += 2;\n } else {\n result.options[optionName] = true;\n i += 1;\n }\n } else if (arg.startsWith('-')) {\n const optionName = arg.slice(1);\n result.options[optionName] = true;\n i += 1;\n } else {\n result.positional.push(arg);\n i += 1;\n }\n }\n\n return result;\n};\n","#!/usr/bin/env node\n\n// screw-up - Easy package metadata inserter on Vite plugin\n// Copyright (c) Kouji Matsui (@kekyo@mi.kekyo.net)\n// Under MIT.\n// https://github.com/kekyo/screw-up/\n\nimport { join, resolve } from 'path';\nimport { existsSync } from 'fs';\nimport { mkdtemp, rm, stat } from 'fs/promises';\nimport { spawn } from 'child_process';\nimport { packAssets, parseArgs, ParsedArgs, getComputedPackageJsonObject } from './cli-internal.js';\n\ndeclare const __VERSION__: string;\ndeclare const __AUTHOR__: string;\ndeclare const __REPOSITORY_URL__: string;\ndeclare const __LICENSE__: string;\n\n// Package metadata fields that should be inherited from parent\nconst defaultInheritableFields = new Set([\n 'version',\n 'description', \n 'author',\n 'license',\n 'repository',\n 'keywords',\n 'homepage',\n 'bugs',\n 'readme'\n]);\n\n// Parse inheritable fields from CLI option string\nconst parseInheritableFields = (inheritableFieldsOption: string | boolean | undefined): Set<string> => {\n if (typeof inheritableFieldsOption !== 'string') {\n return defaultInheritableFields;\n }\n if (!inheritableFieldsOption.trim()) {\n return new Set(); // Empty set for empty string (no inheritance)\n }\n return new Set(inheritableFieldsOption.split(',').map(field => field.trim()).filter(field => field.length > 0));\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\nconst showHelp = () => {\n console.log(`screw-up - Easy package metadata inserter CLI [${__VERSION__}]\nCopyright (c) ${__AUTHOR__}\nRepository: ${__REPOSITORY_URL__}\nLicense: ${__LICENSE__}\n\nUsage: screw-up <command> [options]\n\nCommands:\n pack [directory] Pack the project into a tar archive\n publish [directory|package.tgz] Publish the project\n dump [directory] Dump computed package.json as JSON\n\nOptions:\n -h, --help Show help\n\nPack Options:\n --pack-destination <path> Directory to write the tarball\n --readme <path> Replace README.md with specified file\n --inheritable-fields <list> Comma-separated list of fields to inherit from parent (default: version,description,author,license,repository,keywords,homepage,bugs,readme)\n --no-wds Do not check working directory status to increase version\n --no-replace-peer-deps Disable replacing \"*\" in peerDependencies with actual versions\n --peer-deps-prefix <prefix> Version prefix for replaced peerDependencies (default: \"^\")\n\nPublish Options:\n All npm publish options are supported (e.g., --dry-run, --tag, --access, --registry)\n\nExamples:\n screw-up pack # Pack current directory\n screw-up pack ./my-project # Pack specific directory\n screw-up pack --pack-destination ./dist # Pack to specific output directory\n screw-up pack --readme ./README_pack.md # Pack with custom README\n screw-up publish # Publish current directory\n screw-up publish ./my-project # Publish specific directory\n screw-up publish package.tgz # Publish existing tarball\n screw-up publish --dry-run --tag beta # Publish with npm options\n`);\n};\n\nconst showPackHelp = () => {\n console.log(`Usage: screw-up pack [options] [directory]\n\nPack the project into a tar archive\n\nArguments:\n directory Directory to pack (default: current directory)\n\nOptions:\n --pack-destination <path> Directory to write the tarball\n --readme <path> Replace README.md with specified file\n --inheritable-fields <list> Comma-separated list of fields to inherit from parent\n --no-wds Do not check working directory status to increase version\n --no-replace-peer-deps Disable replacing \"*\" in peerDependencies with actual versions\n --peer-deps-prefix <prefix> Version prefix for replaced peerDependencies (default: \"^\")\n -h, --help Show help for pack command\n`);\n};\n\nconst showPublishHelp = () => {\n console.log(`Usage: screw-up publish [options] [directory|package.tgz]\n\nPublish the project\n\nArguments:\n directory|package.tgz Directory to pack and publish, or existing tarball to publish\n\nOptions:\n All npm publish options are supported, including:\n --dry-run Perform a dry run\n --tag <tag> Tag for the published version\n --access <access> Access level (public or restricted)\n --registry <registry> Registry URL\n -h, --help Show help for publish command\n\nExamples:\n screw-up publish # Publish current directory\n screw-up publish ./my-project # Publish specific directory\n screw-up publish package.tgz # Publish existing tarball\n screw-up publish --dry-run --tag beta # Publish with options\n`);\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\nconst packCommand = async (args: ParsedArgs) => {\n if (args.options.help || args.options.h) {\n showPackHelp();\n return;\n }\n\n const directory = args.positional[0];\n const packDestination = args.options['pack-destination'] as string;\n const readmeOption = args.options['readme'] as string;\n const inheritableFieldsOption = args.options['inheritable-fields'] as string;\n const checkWorkingDirectoryStatus = args.options['no-wds'] ? false : true;\n const replacePeerDepsWildcards = !args.options['no-replace-peer-deps'];\n const peerDepsVersionPrefix = args.options['peer-deps-prefix'] as string ?? \"^\";\n\n const targetDir = resolve(directory ?? process.cwd());\n const outputDir = packDestination ? resolve(packDestination) : process.cwd();\n const readmeReplacementPath = readmeOption ? resolve(readmeOption) : undefined;\n \n // Parse inheritable fields from CLI option or use defaults\n const inheritableFields = parseInheritableFields(inheritableFieldsOption);\n\n console.log(`[screw-up/cli]: pack: Creating archive of ${targetDir}...`);\n\n try {\n const metadata = await packAssets(\n targetDir, outputDir, checkWorkingDirectoryStatus, inheritableFields, readmeReplacementPath, replacePeerDepsWildcards, peerDepsVersionPrefix);\n if (metadata) {\n console.log(`[screw-up/cli]: pack: Archive created successfully: ${outputDir}`);\n } else {\n console.error(`[screw-up/cli]: pack: Unable to find any files to pack: ${targetDir}`);\n process.exit(1);\n }\n } catch (error) {\n console.error('[screw-up/cli]: pack: Failed to create archive:', error);\n process.exit(1);\n }\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\nconst publishCommand = async (args: ParsedArgs) => {\n if (args.options.help || args.options.h) {\n showPublishHelp();\n return;\n }\n\n const runNpmPublish = async (tarballPath: string, npmOptions: string[]) => {\n console.log(`[screw-up/cli]: publish: Publishing ${tarballPath} to npm...`);\n \n const publishArgs = ['publish', tarballPath, ...npmOptions];\n \n // For testing: log the command that would be executed\n if (process.env.SCREW_UP_TEST_MODE === 'true') {\n console.log(`[screw-up/cli]: TEST_MODE: Would execute: npm ${publishArgs.join(' ')}`);\n console.log(`[screw-up/cli]: TEST_MODE: Tarball path: ${tarballPath}`);\n console.log(`[screw-up/cli]: TEST_MODE: Options: ${npmOptions.join(' ')}`);\n console.log(`[screw-up/cli]: publish: Successfully published ${tarballPath}`);\n return;\n }\n \n const npmProcess = spawn('npm', publishArgs, { stdio: 'inherit' });\n \n return new Promise<void>((resolve, reject) => {\n npmProcess.on('close', (code) => {\n if (code === 0) {\n console.log(`[screw-up/cli]: publish: Successfully published ${tarballPath}`);\n resolve();\n } else {\n reject(new Error(`npm publish failed with exit code ${code}`));\n }\n });\n npmProcess.on('error', reject);\n });\n };\n\n const path = args.positional[0];\n const inheritableFieldsOption = args.options['inheritable-fields'] as string;\n const checkWorkingDirectoryStatus = args.options['no-wds'] ? false : true;\n const replacePeerDepsWildcards = !args.options['no-replace-peer-deps'];\n const peerDepsVersionPrefix = args.options['peer-deps-prefix'] as string ?? \"^\";\n\n // Parse inheritable fields from CLI option or use defaults\n const inheritableFields = parseInheritableFields(inheritableFieldsOption);\n\n // Convert parsed options to npm options\n const npmOptions: string[] = [];\n Object.entries(args.options).forEach(([key, value]) => {\n if (key === 'help' || key === 'h' || key === 'no-wds' || key === 'inheritable-fields' || key === 'no-replace-peer-deps' || key === 'peer-deps-prefix') return; // Skip screw-up specific options\n\n if (value === true) {\n npmOptions.push(`--${key}`);\n } else {\n npmOptions.push(`--${key}`, value as string);\n }\n });\n\n try {\n if (!path) {\n // No argument provided - generate tarball from current directory and publish\n const targetDir = process.cwd();\n const outputDir = await mkdtemp('screw-up-publish-');\n\n console.log(`[screw-up/cli]: publish: Creating archive of ${targetDir}...`);\n\n try {\n const metadata = await packAssets(\n targetDir, outputDir, checkWorkingDirectoryStatus, inheritableFields, undefined, replacePeerDepsWildcards, peerDepsVersionPrefix);\n if (metadata) {\n const archiveName = `${metadata.name}-${metadata.version}.tgz`;\n const archivePath = join(outputDir, archiveName);\n await runNpmPublish(archivePath, npmOptions);\n } else {\n console.error(`[screw-up/cli]: publish: Unable to find any files to pack: ${targetDir}`);\n process.exit(1);\n }\n } finally {\n await rm(outputDir, { recursive: true, force: true });\n }\n } else if (existsSync(path)) {\n const pathStat = await stat(path);\n \n if (pathStat.isFile() && (path.endsWith('.tgz') || path.endsWith('.tar.gz'))) {\n // Argument is a tarball file - publish directly\n await runNpmPublish(resolve(path), npmOptions);\n } else if (pathStat.isDirectory()) {\n // Argument is a directory - generate tarball from directory and publish\n const targetDir = resolve(path);\n const outputDir = await mkdtemp('screw-up-publish-');\n\n console.log(`[screw-up/cli]: publish: Creating archive of ${targetDir}...`);\n\n try {\n const metadata = await packAssets(\n targetDir, outputDir, checkWorkingDirectoryStatus, inheritableFields, undefined, replacePeerDepsWildcards, peerDepsVersionPrefix);\n if (metadata) {\n const archiveName = `${metadata.name}-${metadata.version}.tgz`;\n const archivePath = join(outputDir, archiveName);\n await runNpmPublish(archivePath, npmOptions);\n } else {\n console.error(`[screw-up/cli]: publish: Unable to find any files to pack: ${targetDir}`);\n process.exit(1);\n }\n } finally {\n await rm(outputDir, { recursive: true, force: true });\n }\n } else {\n console.error(`[screw-up/cli]: publish: Invalid path - must be a directory or .tgz/.tar.gz file: ${path}`);\n process.exit(1);\n }\n } else {\n console.error(`[screw-up/cli]: publish: Path does not exist: ${path}`);\n process.exit(1);\n }\n } catch (error) {\n console.error('[screw-up/cli]: publish: Failed to publish:', error);\n process.exit(1);\n }\n};\n\nconst showDumpHelp = () => {\n console.log(`Usage: screw-up dump [options] [directory]\n\nDump computed package.json as JSON\n\nArguments:\n directory Directory to dump package.json from (default: current directory)\n\nOptions:\n --inheritable-fields <list> Comma-separated list of fields to inherit from parent\n --no-wds Do not check working directory status to increase version\n -h, --help Show help for dump command\n`);\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\nconst dumpCommand = async (args: ParsedArgs) => {\n if (args.options.help || args.options.h) {\n showDumpHelp();\n return;\n }\n\n const directory = args.positional[0];\n const inheritableFieldsOption = args.options['inheritable-fields'] as string;\n const checkWorkingDirectoryStatus = args.options['no-wds'] ? false : true;\n\n // Parse inheritable fields from CLI option or use defaults\n const inheritableFields = parseInheritableFields(inheritableFieldsOption);\n\n const targetDir = resolve(directory ?? process.cwd());\n\n try {\n const computedPackageJson = await getComputedPackageJsonObject(\n targetDir, checkWorkingDirectoryStatus, inheritableFields);\n if (computedPackageJson) {\n console.log(JSON.stringify(computedPackageJson, null, 2));\n } else {\n console.error(`[screw-up/cli]: dump: Unable to read package.json from: ${targetDir}`);\n process.exit(1);\n }\n } catch (error) {\n console.error('[screw-up/cli]: dump: Failed to dump package.json:', error);\n process.exit(1);\n }\n};\n\n//////////////////////////////////////////////////////////////////////////////////\n\nconst main = async () => {\n const args = parseArgs(process.argv);\n\n // Handle global help or when no command is provided\n if (args.options.help || args.options.h || !args.command || \n args.command === 'help' || args.command === '--help') {\n showHelp();\n return;\n }\n\n switch (args.command) {\n case 'pack':\n await packCommand(args);\n break;\n case 'publish':\n await publishCommand(args);\n break;\n case 'dump':\n await dumpCommand(args);\n break;\n default:\n console.error(`Unknown command: ${args.command}`);\n console.error('Run \"screw-up --help\" for usage information.');\n process.exit(1);\n }\n};\n\nmain().catch((error) => {\n console.error('CLI error:', error);\n process.exit(1);\n});\n"],"names":["path","Readable","stat","createReadStream","createWriteStream","createGzip","resolve","existsSync","lstat","glob","resolveRawPackageJsonObject","findWorkspaceRoot","collectWorkspaceSiblings","replacePeerDependenciesWildcards","mkdir","i","npmOptions","spawn","mkdtemp","join","rm"],"mappings":";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYA,MAAM,WAAW,CAAC,eAAe,aAAa,gBAAgB;AAC5D,SAA0E;AAC5E;AACA,MAAM,YAAY,CAAC,SAAS;AAC1B,SAAO,OAAO,SAAS,IAAI,IAAI,OAAO,OAAO,KAAK,MAAM,MAAM;AAChE;AAwCA,MAAM,iBAAiB,OAAOA,OAAM,SAAS,YAAY;;AACvD,QAAM,QAAO,wCAAS,SAAT,YAAiB;AAC9B,QAAM,OAAM,wCAAS,QAAT,YAAgB;AAC5B,QAAM,OAAM,wCAAS,QAAT,YAAgB;AAC5B,QAAM,QAAO,wCAAS,SAAT,YAAiC,oBAAI,KAAI;AACtD,QAAM,SAAQ,wCAAS,UAAT,YAAkB;AAChC,QAAM,SAAQ,wCAAS,UAAT,YAAkB;AAChC,SAAO;AAAA,IACL,MAAM;AAAA,IACN,MAAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACA;AACA,MAAM,yBAAyB,OAAOA,OAAM,UAAU,YAAY;;AAChE,QAAM,QAAO,wCAAS,SAAT,YAAiB;AAC9B,QAAM,OAAM,wCAAS,QAAT,YAAgB;AAC5B,QAAM,OAAM,wCAAS,QAAT,YAAgB;AAC5B,QAAM,QAAO,wCAAS,SAAT,YAAiC,oBAAI,KAAI;AACtD,QAAM,SAAQ,wCAAS,UAAT,YAAkB;AAChC,QAAM,SAAQ,wCAAS,UAAT,YAAkB;AAChC,MAAI,SAAS,mCAAS;AACtB,MAAI,CAAC,QAAQ;AACX,UAAM,SAAS,CAAA;AACf,aAAS;AACT,qBAAiB,SAAS,UAAU;AAClC,YAAM,SAAS,UAAU,KAAK;AAC9B,aAAO,KAAK,MAAM;AAClB,gBAAU,OAAO;AAAA,IACnB;AACA,WAAO;AAAA,MACL,MAAM;AAAA,MACN,MAAAA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,SAAS;AAAA,QACP,MAAM;AAAA,QACN;AAAA,QACA,UAAUC,OAAAA,SAAS,KAAK,MAAM;AAAA,MACtC;AAAA,IACA;AAAA,EACE,OAAO;AACL,WAAO;AAAA,MACL,MAAM;AAAA,MACN,MAAAD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,SAAS;AAAA,QACP,MAAM;AAAA,QACN;AAAA,QACA;AAAA,MACR;AAAA,IACA;AAAA,EACE;AACF;AAkDA,MAAM,qBAAqB,OAAOA,OAAM,UAAU,aAAa,YAAY;AAEzE,QAAM,QAAQ,MAAME,SAAAA,KAAK,QAAQ;AACjC,QAAM,SAASC,GAAAA,iBAAiB,QAAQ;AACxC,QAAM,OAAyC,MAAM;AACrD,QAAM,MAAuC,MAAM;AACnD,QAAM,MAAuC,MAAM;AACnD,QAAM,OAAyC,MAAM;AACrD,QAAM,QAAQ,SAAS,mCAAS,OAAO,MAAM,GAAO;AACpD,QAAM,QAAQ,SAAS,mCAAS,OAAO,MAAM,GAAO;AACpD,SAAO,MAAM,uBAAuBH,OAAM,QAAQ;AAAA,IAChD,QAAQ,MAAM;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,CAAG;AACH;AACA,MAAM,oBAAoB,CAAC,QAAQA,UAAS;AAC1C,QAAM,SAASI,GAAAA,kBAAkBJ,KAAI;AACrC,SAAO,KAAK,MAAM;AAClB,SAAO,IAAI,QAAQ,CAAC,KAAK,QAAQ;AAC/B,WAAO,GAAG,UAAU,GAAG;AACvB,WAAO,GAAG,SAAS,GAAG;AACtB,WAAO,GAAG,SAAS,GAAG;AAAA,EACxB,CAAC;AACH;AACA,MAAM,iBAAiB,CAAC,QAAQ;AAC9B,SAAO,OAAO,WAAW,KAAK,MAAM;AACtC;AACA,MAAM,mBAAmB,CAAC,KAAK,aAAa;AAC1C,MAAI,QAAQ;AACZ,MAAI,IAAI;AACR,SAAO,IAAI,IAAI,QAAQ;AACrB,UAAM,YAAY,IAAI,YAAY,CAAC;AACnC,UAAM,OAAO,OAAO,cAAc,SAAS;AAC3C,UAAM,YAAY,OAAO,WAAW,MAAM,MAAM;AAChD,QAAI,QAAQ,YAAY,SAAU;AAClC,aAAS;AACT,SAAK,KAAK;AAAA,EACZ;AACA,SAAO,IAAI,MAAM,GAAG,CAAC;AACvB;AACA,MAAM,WAAW;AACjB,MAAM,aAAa;AACnB,MAAM,YAAY,CAACA,UAAS;;AAC1B,MAAI,eAAeA,KAAI,KAAK,UAAU;AACpC,WAAO,EAAE,QAAQ,IAAI,MAAMA,MAAI;AAAA,EACjC;AACA,QAAM,QAAQA,MAAK,MAAM,GAAG;AAC5B,MAAI,QAAO,WAAM,IAAG,MAAT,YAAe;AAC1B,MAAI,SAAS,MAAM,KAAK,GAAG;AAC3B,MAAI,eAAe,IAAI,IAAI,UAAU;AACnC,WAAO,iBAAiB,MAAM,QAAQ;AAAA,EACxC;AACA,SAAO,eAAe,MAAM,IAAI,YAAY;AAC1C,aAAS,iBAAiB,QAAQ,UAAU;AAAA,EAC9C;AACA,SAAO,EAAE,QAAQ,KAAI;AACvB;AACA,MAAM,gBAAgB,CAAC,OAAO,WAAW;AACvC,QAAM,MAAM,MAAM,SAAS,CAAC,EAAE,SAAS,SAAS,GAAG,GAAG,IAAI;AAC1D,SAAO,OAAO,KAAK,KAAK,OAAO;AACjC;AACA,MAAM,iBAAiB,CAAC,WAAW;AACjC,QAAM,QAAQ,OAAO,SAAS;AAC9B,MAAI,UAAU,GAAG;AACf,WAAO;AAAA,EACT,OAAO;AACL,WAAO,OAAO,OAAO,CAAC,QAAQ,OAAO,MAAM,MAAM,OAAO,CAAC,CAAC,CAAC;AAAA,EAC7D;AACF;AACA,MAAM,kBAAkB,OAAO,MAAM,MAAM,CAAC;AAC5C,MAAM,kBAAkB,CAAC,MAAMA,OAAM,MAAM,MAAM,OAAO,OAAO,KAAK,KAAK,SAAS;AAChF,QAAM,SAAS,OAAO,MAAM,KAAK,CAAC;AAClC,QAAM,EAAE,MAAM,WAAW,UAAUA,KAAI;AACvC,SAAO,MAAM,MAAM,GAAG,KAAK,MAAM;AACjC,gBAAc,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ,GAAG;AAC9C,gBAAc,KAAK,CAAC,EAAE,KAAK,QAAQ,GAAG;AACtC,gBAAc,KAAK,CAAC,EAAE,KAAK,QAAQ,GAAG;AACtC,gBAAc,MAAM,EAAE,EAAE,KAAK,QAAQ,GAAG;AACxC,gBAAc,KAAK,MAAM,KAAK,QAAO,IAAK,GAAG,GAAG,EAAE,EAAE,KAAK,QAAQ,GAAG;AACpE,SAAO,KAAK,YAAY,OAAO,EAAE,KAAK,QAAQ,GAAG;AACjD,MAAI,SAAS,QAAQ;AACnB,WAAO,MAAM,KAAK,KAAK,GAAG,OAAO;AAAA,EACnC,OAAO;AACL,WAAO,MAAM,KAAK,KAAK,GAAG,OAAO;AAAA,EACnC;AACA,SAAO,MAAM,WAAW,KAAK,GAAG,OAAO;AACvC,SAAO,MAAM,MAAM,KAAK,GAAG,OAAO;AAClC,SAAO,MAAM,OAAO,KAAK,IAAI,MAAM;AACnC,SAAO,MAAM,OAAO,KAAK,IAAI,MAAM;AACnC,SAAO,MAAM,QAAQ,KAAK,KAAK,MAAM;AACrC,MAAI,MAAM;AACV,WAAS,IAAI,GAAG,IAAI,KAAK,KAAK;AAC5B,WAAO,OAAO,CAAC;AAAA,EACjB;AACA,gBAAc,KAAK,CAAC,EAAE,KAAK,QAAQ,GAAG;AACtC,SAAO;AACT;AACA,MAAM,kBAAkB,CAAC,oBAAoB,iBAAiB,WAAW;AACvE,QAAM,oBAAoB,mBAAmB;AAC3C,qBAAiB,aAAa,oBAAoB;AAEhD,cAAQ,UAAU,MAAI;AAAA,QAEpB,KAAK,QAAQ;AACX,gBAAM,mBAAmB,UAAU;AACnC,cAAI,OAAO,qBAAqB,YAAY,OAAO,SAAS,gBAAgB,GAAG;AAC7E,kBAAM,eAAe,UAAU,gBAAgB;AAC/C,kBAAM,iBAAiB;AAAA,cACrB;AAAA,cACA,UAAU;AAAA,cACV,aAAa;AAAA,cACb,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,YACxB;AACY,kBAAM;AACN,kBAAM,0BAA0B,eAAe,YAAY;AAC3D,kBAAM;AAAA,UACR,OAAO;AACL,kBAAM,iBAAiB;AAAA,cACrB;AAAA,cACA,UAAU;AAAA,cACV,iBAAiB;AAAA,cACjB,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU;AAAA,YACxB;AACY,kBAAM;AACN,gBAAI,WAAW;AACf,oBAAQ,iBAAiB,MAAI;AAAA,cAE3B,KAAK,aAAa;AAChB,iCAAiB,gBAAgB,iBAAiB,WAAW;AAE3D,wBAAM;AACN,8BAAY,aAAa;AAAA,gBAC3B;AACA;AAAA,cACF;AAAA,cAEA,KAAK,YAAY;AACf,iCAAiB,WAAW,iBAAiB,UAAU;AAErD,wBAAM,eAAe,UAAU,OAAO;AACtC,wBAAM;AACN,8BAAY,aAAa;AAAA,gBAC3B;AACA;AAAA,cACF;AAAA,YACd;AACY,gBAAI,WAAW,QAAQ,GAAG;AAExB,oBAAM,OAAO,MAAM,MAAM,WAAW,KAAK,CAAC;AAAA,YAC5C;AAAA,UACF;AACA;AAAA,QACF;AAAA,QAEA,KAAK,aAAa;AAChB,gBAAM,iBAAiB;AAAA,YACrB;AAAA,YACA,UAAU;AAAA,YACV;AAAA,YACA,UAAU;AAAA,YACV,UAAU;AAAA,YACV,UAAU;AAAA,YACV,UAAU;AAAA,YACV,UAAU;AAAA,YACV,UAAU;AAAA,UACtB;AACU,gBAAM;AACN;AAAA,QACF;AAAA,MACR;AAAA,IACI;AACA,UAAM;AAAA,EACR;AACA,QAAM,KAAK;AACX,UAAQ,IAAE;AAAA,IAER,KAAK,QAAQ;AACX,aAAOC,OAAAA,SAAS,KAAK,mBAAmB;AAAA,IAC1C;AAAA,IAEA,KAAK,QAAQ;AACX,YAAM,aAAaI,KAAAA,WAAW,EAAE,OAAO,EAAC,CAAE;AAC1C,YAAM,kBAAkBJ,OAAAA,SAAS,KAAK,kBAAiB,CAAE;AACzD,sBAAgB,KAAK,UAAU;AAC/B,aAAO;AAAA,IACT;AAAA,EACJ;AACA;ACnWA,MAAM,2BAA2B,iBAAiB,WAAmB,qBAA0B,uBAA2C;;AAExI,QAAM,qBAAqB,KAAK,UAAU,qBAAqB,MAAM,CAAC;AACtE,QAAM,MAAM,eAAe,wBAAwB,kBAAkB;AAGrE,QAAM,yBAAwB,gEAAqB,UAArB,YAA0C,CAAC,MAAM;AAG/E,QAAM,oBAAoB,MAAM,QAAQ;AAAA,IACtC,sBAAsB,IAAI,OAAO,YAAY;AAC3C,YAAM,WAAWK,KAAAA,QAAQ,WAAW,OAAO;AAC3C,UAAI;AACF,YAAIC,GAAAA,WAAW,QAAQ,MAAM,MAAMC,SAAAA,MAAM,QAAQ,GAAG,eAAe;AACjE,iBAAO,MAAMC,KAAAA,KAAK,GAAG,OAAO,SAAS,EAAE,KAAK,WAAW;AAAA,QACzD;AACA,eAAO,MAAMA,KAAAA,KAAK,SAAS,EAAE,KAAK,WAAW;AAAA,MAC/C,SAAS,OAAO;AAEd,eAAO,MAAMA,KAAAA,KAAK,SAAS,EAAE,KAAK,WAAW;AAAA,MAC/C;AAAA,IACF,CAAC;AAAA,EAAA,GAAI,KAAA;AAGP,aAAW,mBAAmB,kBAAkB;AAE9C,QAAI,oBAAoB,gBAAgB;AAEtC,YAAM,WAAWH,KAAAA,QAAQ,WAAW,eAAe;AACnD,YAAM,OAAO,MAAME,SAAAA,MAAM,QAAQ;AACjC,UAAI,KAAK,UAAU;AAEjB,YAAI,oBAAoB,eAAe,uBAAuB;AAE5D,gBAAM,MAAM,mBAAmB,qBAAqB,qBAAqB;AAAA,QAC3E,OAAO;AAEL,gBAAM,MAAM,mBAAmB,WAAW,eAAe,IAAI,QAAQ;AAAA,QACvE;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAGA,MAAI,yBAAyB,CAAC,iBAAiB,SAAS,WAAW,GAAG;AAEpE,UAAM,MAAM,mBAAmB,qBAAqB,qBAAqB;AAAA,EAC3E;AACF;AAcO,MAAM,aAAa,OACxB,WACA,WACA,6BACA,mBACA,uBACA,2BAAoC,MACpC,wBAAgC,QAAuB;;AAEvD,MAAI,CAACD,GAAAA,WAAW,SAAS,GAAG;AAC1B,WAAO;AAAA,EACT;AAGA,MAAI;AACJ,MAAI;AACF,aAAS,MAAMG,SAAAA;AAAAA,MACb;AAAA,MAAW;AAAA,MACX;AAAA,IAAA;AAAA,EACJ,SAAS,OAAO;AAGd,WAAO;AAAA,EACT;AAEA,MAAI,EAAE,aAAa,qBAAqB,UAAA,IAAc;AAGtD,MAAI,2DAAqB,SAAS;AAChC,WAAO;AAAA,EACT;AAGA,MAAI,0BAA0B;AAC5B,UAAM,gBAAgB,MAAMC,SAAAA,kBAAkB,SAAS;AACvD,QAAI,eAAe;AACjB,YAAM,WAAW,MAAMC,SAAAA,yBAAyB,aAAa;AAC7D,UAAI,SAAS,OAAO,GAAG;AACrB,8BAAsBC,SAAAA;AAAAA,UACpB;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,MAEJ;AAAA,IACF;AAAA,EACF;AAIA,MAAI,6BAA6B;AACjC,MAAI,CAAC,+BAA8B,2DAAqB,SAAQ;AAE9D,UAAM,mBAAkB,eAAU,IAAI,QAAQ,MAAtB,YAA2B;AACnD,UAAM,oBAAoBP,KAAAA,QAAQ,iBAAiB,oBAAoB,MAAM;AAC7E,QAAIC,GAAAA,WAAW,iBAAiB,GAAG;AACjC,mCAA6B;AAAA,IAC/B;AAAA,EACF;AAGA,MAAI,8BAA8B,CAACA,cAAW,0BAA0B,GAAG;AACzE,UAAM,IAAI,MAAM,sCAAsC,0BAA0B,EAAE;AAAA,EACpF;AAGA,QAAM,iBAAiB,IAAG,sEAAqB,SAArB,mBAA2B,QAAQ,KAAK,SAAxC,YAAgD,SAAS,KAAI,gEAAqB,YAArB,YAAgC,OAAO;AAG9H,MAAI,CAACA,GAAAA,WAAW,SAAS,GAAG;AAC1B,UAAMO,SAAAA,MAAM,WAAW,EAAE,WAAW,MAAM;AAAA,EAC5C;AAGA,QAAM,SAAS;AAAA,IACb,yBAAyB,WAAW,qBAAqB,0BAA0B;AAAA,IACnF;AAAA,EAAA;AAGF,QAAM,aAAaR,KAAAA,QAAQ,WAAW,cAAc;AACpD,QAAM,kBAAkB,QAAQ,UAAU;AAE1C,SAAO;AACT;AASO,MAAM,+BAA+B,OAC1C,WACA,6BACA,sBAAkD;AAElD,MAAI,CAACC,GAAAA,WAAW,SAAS,GAAG;AAC1B,WAAO;AAAA,EACT;AAGA,QAAM,SAAS,MAAMG,SAAAA;AAAAA,IACnB;AAAA,IAAW;AAAA,IACX;AAAA,EAAA;AACF,SAAO,OAAO;AAChB;AAUO,MAAM,YAAY,CAAC,SAA+B;AACvD,QAAM,OAAO,KAAK,MAAM,CAAC;AACzB,QAAM,SAAqB;AAAA,IACzB,YAAY,CAAA;AAAA,IACZ,SAAS,CAAA;AAAA,EAAC;AAGZ,MAAI,KAAK,WAAW,GAAG;AACrB,WAAO;AAAA,EACT;AAGA,MAAI,KAAK,CAAC,EAAE,WAAW,GAAG,GAAG;AAC3B,QAAIK,KAAI;AACR,WAAOA,KAAI,KAAK,QAAQ;AACtB,YAAM,MAAM,KAAKA,EAAC;AAElB,UAAI,IAAI,WAAW,IAAI,GAAG;AACxB,cAAM,aAAa,IAAI,MAAM,CAAC;AAC9B,cAAM,UAAU,KAAKA,KAAI,CAAC;AAE1B,YAAI,YAAY,UAAa,CAAC,QAAQ,WAAW,GAAG,GAAG;AACrD,iBAAO,QAAQ,UAAU,IAAI;AAC7BA,gBAAK;AAAA,QACP,OAAO;AACL,iBAAO,QAAQ,UAAU,IAAI;AAC7BA,gBAAK;AAAA,QACP;AAAA,MACF,WAAW,IAAI,WAAW,GAAG,GAAG;AAC9B,cAAM,aAAa,IAAI,MAAM,CAAC;AAC9B,eAAO,QAAQ,UAAU,IAAI;AAC7BA,cAAK;AAAA,MACP,OAAO;AACL,eAAO,WAAW,KAAK,GAAG;AAC1BA,cAAK;AAAA,MACP;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,SAAO,UAAU,KAAK,CAAC;AACvB,MAAI,IAAI;AAER,SAAO,IAAI,KAAK,QAAQ;AACtB,UAAM,MAAM,KAAK,CAAC;AAElB,QAAI,IAAI,WAAW,IAAI,GAAG;AACxB,YAAM,aAAa,IAAI,MAAM,CAAC;AAC9B,YAAM,UAAU,KAAK,IAAI,CAAC;AAE1B,UAAI,YAAY,UAAa,CAAC,QAAQ,WAAW,GAAG,GAAG;AACrD,eAAO,QAAQ,UAAU,IAAI;AAC7B,aAAK;AAAA,MACP,OAAO;AACL,eAAO,QAAQ,UAAU,IAAI;AAC7B,aAAK;AAAA,MACP;AAAA,IACF,WAAW,IAAI,WAAW,GAAG,GAAG;AAC9B,YAAM,aAAa,IAAI,MAAM,CAAC;AAC9B,aAAO,QAAQ,UAAU,IAAI;AAC7B,WAAK;AAAA,IACP,OAAO;AACL,aAAO,WAAW,KAAK,GAAG;AAC1B,WAAK;AAAA,IACP;AAAA,EACF;AAEA,SAAO;AACT;ACvPA,MAAM,+CAA+B,IAAI;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAGD,MAAM,yBAAyB,CAAC,4BAAuE;AACrG,MAAI,OAAO,4BAA4B,UAAU;AAC/C,WAAO;AAAA,EACT;AACA,MAAI,CAAC,wBAAwB,QAAQ;AACnC,+BAAW,IAAA;AAAA,EACb;AACA,SAAO,IAAI,IAAI,wBAAwB,MAAM,GAAG,EAAE,IAAI,CAAA,UAAS,MAAM,KAAA,CAAM,EAAE,OAAO,WAAS,MAAM,SAAS,CAAC,CAAC;AAChH;AAIA,MAAM,WAAW,MAAM;AACrB,UAAQ,IAAI,wDAA6D;AAAA,gBAC3D,oCAAU;AAAA,cACZ,uCAAkB;AAAA,WACrB,KAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAgCrB;AACD;AAEA,MAAM,eAAe,MAAM;AACzB,UAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAeb;AACD;AAEA,MAAM,kBAAkB,MAAM;AAC5B,UAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAoBb;AACD;AAIA,MAAM,cAAc,OAAO,SAAqB;;AAC9C,MAAI,KAAK,QAAQ,QAAQ,KAAK,QAAQ,GAAG;AACvC,iBAAA;AACA;AAAA,EACF;AAEA,QAAM,YAAY,KAAK,WAAW,CAAC;AACnC,QAAM,kBAAkB,KAAK,QAAQ,kBAAkB;AACvD,QAAM,eAAe,KAAK,QAAQ,QAAQ;AAC1C,QAAM,0BAA0B,KAAK,QAAQ,oBAAoB;AACjE,QAAM,8BAA8B,KAAK,QAAQ,QAAQ,IAAI,QAAQ;AACrE,QAAM,2BAA2B,CAAC,KAAK,QAAQ,sBAAsB;AACrE,QAAM,yBAAwB,UAAK,QAAQ,kBAAkB,MAA/B,YAA8C;AAE5E,QAAM,YAAYT,KAAAA,QAAQ,gCAAa,QAAQ,KAAK;AACpD,QAAM,YAAY,kBAAkBA,KAAAA,QAAQ,eAAe,IAAI,QAAQ,IAAA;AACvE,QAAM,wBAAwB,eAAeA,aAAQ,YAAY,IAAI;AAGrE,QAAM,oBAAoB,uBAAuB,uBAAuB;AAExE,UAAQ,IAAI,6CAA6C,SAAS,KAAK;AAEvE,MAAI;AACF,UAAM,WAAW,MAAM;AAAA,MACrB;AAAA,MAAW;AAAA,MAAW;AAAA,MAA6B;AAAA,MAAmB;AAAA,MAAuB;AAAA,MAA0B;AAAA,IAAA;AACzH,QAAI,UAAU;AACZ,cAAQ,IAAI,uDAAuD,SAAS,EAAE;AAAA,IAChF,OAAO;AACL,cAAQ,MAAM,2DAA2D,SAAS,EAAE;AACpF,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF,SAAS,OAAO;AACd,YAAQ,MAAM,mDAAmD,KAAK;AACtE,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF;AAIA,MAAM,iBAAiB,OAAO,SAAqB;;AACjD,MAAI,KAAK,QAAQ,QAAQ,KAAK,QAAQ,GAAG;AACvC,oBAAA;AACA;AAAA,EACF;AAEA,QAAM,gBAAgB,OAAO,aAAqBU,gBAAyB;AACzE,YAAQ,IAAI,uCAAuC,WAAW,YAAY;AAE1E,UAAM,cAAc,CAAC,WAAW,aAAa,GAAGA,WAAU;AAG1D,QAAI,QAAQ,IAAI,uBAAuB,QAAQ;AAC7C,cAAQ,IAAI,iDAAiD,YAAY,KAAK,GAAG,CAAC,EAAE;AACpF,cAAQ,IAAI,4CAA4C,WAAW,EAAE;AACrE,cAAQ,IAAI,uCAAuCA,YAAW,KAAK,GAAG,CAAC,EAAE;AACzE,cAAQ,IAAI,mDAAmD,WAAW,EAAE;AAC5E;AAAA,IACF;AAEA,UAAM,aAAaC,cAAAA,MAAM,OAAO,aAAa,EAAE,OAAO,WAAW;AAEjE,WAAO,IAAI,QAAc,CAACX,UAAS,WAAW;AAC5C,iBAAW,GAAG,SAAS,CAAC,SAAS;AAC/B,YAAI,SAAS,GAAG;AACd,kBAAQ,IAAI,mDAAmD,WAAW,EAAE;AAC5EA,mBAAAA;AAAAA,QACF,OAAO;AACL,iBAAO,IAAI,MAAM,qCAAqC,IAAI,EAAE,CAAC;AAAA,QAC/D;AAAA,MACF,CAAC;AACD,iBAAW,GAAG,SAAS,MAAM;AAAA,IAC/B,CAAC;AAAA,EACH;AAEA,QAAMN,SAAO,KAAK,WAAW,CAAC;AAC9B,QAAM,0BAA0B,KAAK,QAAQ,oBAAoB;AACjE,QAAM,8BAA8B,KAAK,QAAQ,QAAQ,IAAI,QAAQ;AACrE,QAAM,2BAA2B,CAAC,KAAK,QAAQ,sBAAsB;AACrE,QAAM,yBAAwB,UAAK,QAAQ,kBAAkB,MAA/B,YAA8C;AAG5E,QAAM,oBAAoB,uBAAuB,uBAAuB;AAGxE,QAAM,aAAuB,CAAA;AAC7B,SAAO,QAAQ,KAAK,OAAO,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AACrD,QAAI,QAAQ,UAAU,QAAQ,OAAO,QAAQ,YAAY,QAAQ,wBAAwB,QAAQ,0BAA0B,QAAQ,mBAAoB;AAEvJ,QAAI,UAAU,MAAM;AAClB,iBAAW,KAAK,KAAK,GAAG,EAAE;AAAA,IAC5B,OAAO;AACL,iBAAW,KAAK,KAAK,GAAG,IAAI,KAAe;AAAA,IAC7C;AAAA,EACF,CAAC;AAED,MAAI;AACF,QAAI,CAACA,QAAM;AAET,YAAM,YAAY,QAAQ,IAAA;AAC1B,YAAM,YAAY,MAAMkB,SAAAA,QAAQ,mBAAmB;AAEnD,cAAQ,IAAI,gDAAgD,SAAS,KAAK;AAE1E,UAAI;AACF,cAAM,WAAW,MAAM;AAAA,UACrB;AAAA,UAAW;AAAA,UAAW;AAAA,UAA6B;AAAA,UAAmB;AAAA,UAAW;AAAA,UAA0B;AAAA,QAAA;AAC7G,YAAI,UAAU;AACZ,gBAAM,cAAc,GAAG,SAAS,IAAI,IAAI,SAAS,OAAO;AACxD,gBAAM,cAAcC,KAAAA,KAAK,WAAW,WAAW;AAC/C,gBAAM,cAAc,aAAa,UAAU;AAAA,QAC7C,OAAO;AACL,kBAAQ,MAAM,8DAA8D,SAAS,EAAE;AACvF,kBAAQ,KAAK,CAAC;AAAA,QAChB;AAAA,MACF,UAAA;AACE,cAAMC,SAAAA,GAAG,WAAW,EAAE,WAAW,MAAM,OAAO,MAAM;AAAA,MACtD;AAAA,IACF,WAAWb,cAAWP,MAAI,GAAG;AAC3B,YAAM,WAAW,MAAME,SAAAA,KAAKF,MAAI;AAEhC,UAAI,SAAS,aAAaA,OAAK,SAAS,MAAM,KAAKA,OAAK,SAAS,SAAS,IAAI;AAE5E,cAAM,cAAcM,KAAAA,QAAQN,MAAI,GAAG,UAAU;AAAA,MAC/C,WAAW,SAAS,eAAe;AAEjC,cAAM,YAAYM,KAAAA,QAAQN,MAAI;AAC9B,cAAM,YAAY,MAAMkB,SAAAA,QAAQ,mBAAmB;AAEnD,gBAAQ,IAAI,gDAAgD,SAAS,KAAK;AAE1E,YAAI;AACF,gBAAM,WAAW,MAAM;AAAA,YACrB;AAAA,YAAW;AAAA,YAAW;AAAA,YAA6B;AAAA,YAAmB;AAAA,YAAW;AAAA,YAA0B;AAAA,UAAA;AAC7G,cAAI,UAAU;AACZ,kBAAM,cAAc,GAAG,SAAS,IAAI,IAAI,SAAS,OAAO;AACxD,kBAAM,cAAcC,KAAAA,KAAK,WAAW,WAAW;AAC/C,kBAAM,cAAc,aAAa,UAAU;AAAA,UAC7C,OAAO;AACL,oBAAQ,MAAM,8DAA8D,SAAS,EAAE;AACvF,oBAAQ,KAAK,CAAC;AAAA,UAChB;AAAA,QACF,UAAA;AACE,gBAAMC,SAAAA,GAAG,WAAW,EAAE,WAAW,MAAM,OAAO,MAAM;AAAA,QACtD;AAAA,MACF,OAAO;AACL,gBAAQ,MAAM,qFAAqFpB,MAAI,EAAE;AACzG,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAAA,IACF,OAAO;AACL,cAAQ,MAAM,iDAAiDA,MAAI,EAAE;AACrE,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF,SAAS,OAAO;AACd,YAAQ,MAAM,+CAA+C,KAAK;AAClE,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF;AAEA,MAAM,eAAe,MAAM;AACzB,UAAQ,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAWb;AACD;AAIA,MAAM,cAAc,OAAO,SAAqB;AAC9C,MAAI,KAAK,QAAQ,QAAQ,KAAK,QAAQ,GAAG;AACvC,iBAAA;AACA;AAAA,EACF;AAEA,QAAM,YAAY,KAAK,WAAW,CAAC;AACnC,QAAM,0BAA0B,KAAK,QAAQ,oBAAoB;AACjE,QAAM,8BAA8B,KAAK,QAAQ,QAAQ,IAAI,QAAQ;AAGrE,QAAM,oBAAoB,uBAAuB,uBAAuB;AAExE,QAAM,YAAYM,KAAAA,QAAQ,gCAAa,QAAQ,KAAK;AAEpD,MAAI;AACF,UAAM,sBAAsB,MAAM;AAAA,MAChC;AAAA,MAAW;AAAA,MAA6B;AAAA,IAAA;AAC1C,QAAI,qBAAqB;AACvB,cAAQ,IAAI,KAAK,UAAU,qBAAqB,MAAM,CAAC,CAAC;AAAA,IAC1D,OAAO;AACL,cAAQ,MAAM,2DAA2D,SAAS,EAAE;AACpF,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF,SAAS,OAAO;AACd,YAAQ,MAAM,sDAAsD,KAAK;AACzE,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF;AAIA,MAAM,OAAO,YAAY;AACvB,QAAM,OAAO,UAAU,QAAQ,IAAI;AAGnC,MAAI,KAAK,QAAQ,QAAQ,KAAK,QAAQ,KAAK,CAAC,KAAK,WAC7C,KAAK,YAAY,UAAU,KAAK,YAAY,UAAU;AACxD,aAAA;AACA;AAAA,EACF;AAEA,UAAQ,KAAK,SAAA;AAAA,IACX,KAAK;AACH,YAAM,YAAY,IAAI;AACtB;AAAA,IACF,KAAK;AACH,YAAM,eAAe,IAAI;AACzB;AAAA,IACF,KAAK;AACH,YAAM,YAAY,IAAI;AACtB;AAAA,IACF;AACE,cAAQ,MAAM,oBAAoB,KAAK,OAAO,EAAE;AAChD,cAAQ,MAAM,8CAA8C;AAC5D,cAAQ,KAAK,CAAC;AAAA,EAAA;AAEpB;AAEA,OAAO,MAAM,CAAC,UAAU;AACtB,UAAQ,MAAM,cAAc,KAAK;AACjC,UAAQ,KAAK,CAAC;AAChB,CAAC;","x_google_ignoreList":[0]}
|
package/dist/cli.js
CHANGED
|
@@ -6,7 +6,7 @@ import { spawn } from "child_process";
|
|
|
6
6
|
import { glob } from "glob";
|
|
7
7
|
import { Readable } from "stream";
|
|
8
8
|
import { createGzip } from "zlib";
|
|
9
|
-
import { a as resolveRawPackageJsonObject } from "./internal-
|
|
9
|
+
import { a as resolveRawPackageJsonObject, f as findWorkspaceRoot, c as collectWorkspaceSiblings, b as replacePeerDependenciesWildcards } from "./internal-BaMzTKS2.js";
|
|
10
10
|
/*!
|
|
11
11
|
* name: tar-vern
|
|
12
12
|
* version: 0.3.0
|
|
@@ -319,7 +319,7 @@ const createPackEntryGenerator = async function* (targetDir, resolvedPackageJson
|
|
|
319
319
|
yield await createReadFileItem("package/README.md", readmeReplacementPath);
|
|
320
320
|
}
|
|
321
321
|
};
|
|
322
|
-
const packAssets = async (targetDir, outputDir, checkWorkingDirectoryStatus, inheritableFields, readmeReplacementPath) => {
|
|
322
|
+
const packAssets = async (targetDir, outputDir, checkWorkingDirectoryStatus, inheritableFields, readmeReplacementPath, replacePeerDepsWildcards = true, peerDepsVersionPrefix = "^") => {
|
|
323
323
|
var _a, _b, _c, _d;
|
|
324
324
|
if (!existsSync(targetDir)) {
|
|
325
325
|
return void 0;
|
|
@@ -334,10 +334,23 @@ const packAssets = async (targetDir, outputDir, checkWorkingDirectoryStatus, inh
|
|
|
334
334
|
} catch (error) {
|
|
335
335
|
return void 0;
|
|
336
336
|
}
|
|
337
|
-
|
|
337
|
+
let { packageJson: resolvedPackageJson, sourceMap } = result;
|
|
338
338
|
if (resolvedPackageJson == null ? void 0 : resolvedPackageJson.private) {
|
|
339
339
|
return void 0;
|
|
340
340
|
}
|
|
341
|
+
if (replacePeerDepsWildcards) {
|
|
342
|
+
const workspaceRoot = await findWorkspaceRoot(targetDir);
|
|
343
|
+
if (workspaceRoot) {
|
|
344
|
+
const siblings = await collectWorkspaceSiblings(workspaceRoot);
|
|
345
|
+
if (siblings.size > 0) {
|
|
346
|
+
resolvedPackageJson = replacePeerDependenciesWildcards(
|
|
347
|
+
resolvedPackageJson,
|
|
348
|
+
siblings,
|
|
349
|
+
peerDepsVersionPrefix
|
|
350
|
+
);
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
}
|
|
341
354
|
let finalReadmeReplacementPath = readmeReplacementPath;
|
|
342
355
|
if (!finalReadmeReplacementPath && (resolvedPackageJson == null ? void 0 : resolvedPackageJson.readme)) {
|
|
343
356
|
const readmeSourceDir = (_a = sourceMap.get("readme")) != null ? _a : targetDir;
|
|
@@ -472,6 +485,8 @@ Pack Options:
|
|
|
472
485
|
--readme <path> Replace README.md with specified file
|
|
473
486
|
--inheritable-fields <list> Comma-separated list of fields to inherit from parent (default: version,description,author,license,repository,keywords,homepage,bugs,readme)
|
|
474
487
|
--no-wds Do not check working directory status to increase version
|
|
488
|
+
--no-replace-peer-deps Disable replacing "*" in peerDependencies with actual versions
|
|
489
|
+
--peer-deps-prefix <prefix> Version prefix for replaced peerDependencies (default: "^")
|
|
475
490
|
|
|
476
491
|
Publish Options:
|
|
477
492
|
All npm publish options are supported (e.g., --dry-run, --tag, --access, --registry)
|
|
@@ -500,6 +515,8 @@ Options:
|
|
|
500
515
|
--readme <path> Replace README.md with specified file
|
|
501
516
|
--inheritable-fields <list> Comma-separated list of fields to inherit from parent
|
|
502
517
|
--no-wds Do not check working directory status to increase version
|
|
518
|
+
--no-replace-peer-deps Disable replacing "*" in peerDependencies with actual versions
|
|
519
|
+
--peer-deps-prefix <prefix> Version prefix for replaced peerDependencies (default: "^")
|
|
503
520
|
-h, --help Show help for pack command
|
|
504
521
|
`);
|
|
505
522
|
};
|
|
@@ -527,6 +544,7 @@ Examples:
|
|
|
527
544
|
`);
|
|
528
545
|
};
|
|
529
546
|
const packCommand = async (args) => {
|
|
547
|
+
var _a;
|
|
530
548
|
if (args.options.help || args.options.h) {
|
|
531
549
|
showPackHelp();
|
|
532
550
|
return;
|
|
@@ -536,6 +554,8 @@ const packCommand = async (args) => {
|
|
|
536
554
|
const readmeOption = args.options["readme"];
|
|
537
555
|
const inheritableFieldsOption = args.options["inheritable-fields"];
|
|
538
556
|
const checkWorkingDirectoryStatus = args.options["no-wds"] ? false : true;
|
|
557
|
+
const replacePeerDepsWildcards = !args.options["no-replace-peer-deps"];
|
|
558
|
+
const peerDepsVersionPrefix = (_a = args.options["peer-deps-prefix"]) != null ? _a : "^";
|
|
539
559
|
const targetDir = resolve(directory != null ? directory : process.cwd());
|
|
540
560
|
const outputDir = packDestination ? resolve(packDestination) : process.cwd();
|
|
541
561
|
const readmeReplacementPath = readmeOption ? resolve(readmeOption) : void 0;
|
|
@@ -547,7 +567,9 @@ const packCommand = async (args) => {
|
|
|
547
567
|
outputDir,
|
|
548
568
|
checkWorkingDirectoryStatus,
|
|
549
569
|
inheritableFields,
|
|
550
|
-
readmeReplacementPath
|
|
570
|
+
readmeReplacementPath,
|
|
571
|
+
replacePeerDepsWildcards,
|
|
572
|
+
peerDepsVersionPrefix
|
|
551
573
|
);
|
|
552
574
|
if (metadata) {
|
|
553
575
|
console.log(`[screw-up/cli]: pack: Archive created successfully: ${outputDir}`);
|
|
@@ -561,6 +583,7 @@ const packCommand = async (args) => {
|
|
|
561
583
|
}
|
|
562
584
|
};
|
|
563
585
|
const publishCommand = async (args) => {
|
|
586
|
+
var _a;
|
|
564
587
|
if (args.options.help || args.options.h) {
|
|
565
588
|
showPublishHelp();
|
|
566
589
|
return;
|
|
@@ -591,10 +614,12 @@ const publishCommand = async (args) => {
|
|
|
591
614
|
const path = args.positional[0];
|
|
592
615
|
const inheritableFieldsOption = args.options["inheritable-fields"];
|
|
593
616
|
const checkWorkingDirectoryStatus = args.options["no-wds"] ? false : true;
|
|
617
|
+
const replacePeerDepsWildcards = !args.options["no-replace-peer-deps"];
|
|
618
|
+
const peerDepsVersionPrefix = (_a = args.options["peer-deps-prefix"]) != null ? _a : "^";
|
|
594
619
|
const inheritableFields = parseInheritableFields(inheritableFieldsOption);
|
|
595
620
|
const npmOptions = [];
|
|
596
621
|
Object.entries(args.options).forEach(([key, value]) => {
|
|
597
|
-
if (key === "help" || key === "h" || key === "no-wds" || key === "inheritable-fields") return;
|
|
622
|
+
if (key === "help" || key === "h" || key === "no-wds" || key === "inheritable-fields" || key === "no-replace-peer-deps" || key === "peer-deps-prefix") return;
|
|
598
623
|
if (value === true) {
|
|
599
624
|
npmOptions.push(`--${key}`);
|
|
600
625
|
} else {
|
|
@@ -612,7 +637,9 @@ const publishCommand = async (args) => {
|
|
|
612
637
|
outputDir,
|
|
613
638
|
checkWorkingDirectoryStatus,
|
|
614
639
|
inheritableFields,
|
|
615
|
-
void 0
|
|
640
|
+
void 0,
|
|
641
|
+
replacePeerDepsWildcards,
|
|
642
|
+
peerDepsVersionPrefix
|
|
616
643
|
);
|
|
617
644
|
if (metadata) {
|
|
618
645
|
const archiveName = `${metadata.name}-${metadata.version}.tgz`;
|
|
@@ -639,7 +666,9 @@ const publishCommand = async (args) => {
|
|
|
639
666
|
outputDir,
|
|
640
667
|
checkWorkingDirectoryStatus,
|
|
641
668
|
inheritableFields,
|
|
642
|
-
void 0
|
|
669
|
+
void 0,
|
|
670
|
+
replacePeerDepsWildcards,
|
|
671
|
+
peerDepsVersionPrefix
|
|
643
672
|
);
|
|
644
673
|
if (metadata) {
|
|
645
674
|
const archiveName = `${metadata.name}-${metadata.version}.tgz`;
|