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.
@@ -1 +1 @@
1
- {"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"AAkeA;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAU,gBAAgB,MAAM,EAAE,6BAA6B,OAAO,iBAyDhG,CAAC"}
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"}
@@ -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;;;;;;;;GAQG;AACH,eAAO,MAAM,UAAU,GACrB,WAAW,MAAM,EACjB,WAAW,MAAM,EACjB,6BAA6B,OAAO,EACpC,mBAAmB,GAAG,CAAC,MAAM,CAAC,EAC9B,uBAAuB,MAAM,GAAG,SAAS,KAAI,OAAO,CAAC,GAAG,CA4DzD,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"}
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-Dli6fSLz.cjs");
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
- const { packageJson: resolvedPackageJson, sourceMap } = result;
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":"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","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-CzKyZ9wb.js";
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
- const { packageJson: resolvedPackageJson, sourceMap } = result;
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`;