@vltpkg/cli-sdk 0.0.0-17 → 0.0.0-19

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":"pack-tarball.js","sourceRoot":"","sources":["../../src/pack-tarball.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE,IAAI,IAAI,OAAO,EAAE,MAAM,KAAK,CAAA;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAC3C,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,MAAM,MAAM,aAAa,CAAA;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAcnC;;;;;GAKG;AACH,MAAM,+BAA+B,GAAG,CACtC,SAAmB,EACnB,MAAoB,EACV,EAAE;IACZ,qEAAqE;IACrE,MAAM,QAAQ,GAAG,eAAe,CAAC,SAAS,CAAC,CAAA;IAE3C,sDAAsD;IACtD,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC,OAAO,CAAA;IAEhE,2BAA2B;IAC3B,MAAM,QAAQ,GAAG;QACf,cAAc;QACd,iBAAiB;QACjB,sBAAsB;QACtB,kBAAkB;KACV,CAAA;IAEV,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAA;QAC9B,oBAAoB;QACpB,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,SAAQ;QAE/C,MAAM,OAAO,GAAG,IAA+B,CAAA;QAC/C,KAAK,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACzD,oBAAoB;YACpB,IAAI,OAAO,OAAO,KAAK,QAAQ;gBAAE,SAAQ;YAEzC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,OAAO,EAAE,EAAE;gBAC/C,OAAO;gBACP,QAAQ;aACT,CAAC,CAAA;YAEF,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;gBAClB,KAAK,WAAW,CAAC,CAAC,CAAC;oBACjB,MAAM,CACJ,QAAQ,EACR,KAAK,CAAC,wCAAwC,OAAO,EAAE,EAAE;wBACvD,KAAK,EAAE,OAAO;qBACf,CAAC,CACH,CAAA;oBAED,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAA;oBACpC,MAAM,CACJ,aAAa,EACb,KAAK,CAAC,+BAA+B,OAAO,EAAE,EAAE;wBAC9C,KAAK,EAAE,OAAO;qBACf,CAAC,CACH,CAAA;oBAED,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;oBAC7C,MAAM,CACJ,SAAS,EACT,KAAK,CAAC,cAAc,aAAa,aAAa,EAAE;wBAC9C,KAAK,EAAE,aAAa;wBACpB,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;qBAC1C,CAAC,CACH,CAAA;oBAED,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAA;oBAChD,MAAM,CACJ,aAAa,EACb,KAAK,CACH,mCAAmC,aAAa,GAAG,EACnD;wBACE,KAAK,EAAE,aAAa;wBACpB,MAAM,EAAE,iBAAiB;qBAC1B,CACF,CACF,CAAA;oBAED,OAAO,CAAC,OAAO,CAAC,GAAG,aAAa,CAAA;oBAEhC,MAAK;gBACP,CAAC;gBAED,KAAK,SAAS,CAAC,CAAC,CAAC;oBACf,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAA;oBACtC,MAAM,aAAa,GACjB,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;oBAC/C,MAAM,CACJ,aAAa,EACb,KAAK,CAAC,YAAY,WAAW,aAAa,EAAE;wBAC1C,KAAK,EAAE,WAAW;wBAClB,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;qBACpC,CAAC,CACH,CAAA;oBAED,MAAM,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;oBAC5C,MAAM,CACJ,aAAa,EACb,KAAK,CACH,YAAY,OAAO,2BAA2B,WAAW,IAAI,SAAS,GAAG,EACzE;wBACE,KAAK,EAAE,OAAO;wBACd,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;qBACzC,CACF,CACF,CAAA;oBAED,OAAO,CAAC,OAAO,CAAC,GAAG,aAAa,CAAA;oBAEhC,MAAK;gBACP,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAC9B,QAAkB,EAClB,GAAW,EACX,MAAoB,EACQ,EAAE;IAC9B,MAAM,CACJ,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,OAAO,EACjC,KAAK,CAAC,sCAAsC,CAAC,CAC9C,CAAA;IAED,MAAM,iBAAiB,GAAG,+BAA+B,CACvD,QAAQ,EACR,MAAM,CACP,CAAA;IAED,MAAM,QAAQ,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,QAAQ,CAAC,OAAO,MAAM,CAAA;IAE9F,IAAI,CAAC;QACH,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAA;QAExD,MAAM,WAAW,GAAG,MAAM,SAAS,CACjC;YACE,GAAG,EAAE,GAAG;YACR,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,UAAU;YAClB,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;gBACvB,uCAAuC;gBACvC,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;gBAEhD,gCAAgC;gBAChC,IAAI,IAAI,KAAK,GAAG,IAAI,cAAc,KAAK,EAAE,EAAE,CAAC;oBAC1C,OAAO,IAAI,CAAA;gBACb,CAAC;gBAED,2CAA2C;gBAC3C,MAAM,qBAAqB,GAAG;oBAC5B,oBAAoB;oBACpB,2BAA2B;oBAC3B,2BAA2B;oBAC3B,uBAAuB;oBACvB,oBAAoB;oBACpB,iBAAiB;oBACjB,4BAA4B;oBAC5B,oBAAoB;oBACpB,yBAAyB;oBACzB,oBAAoB;oBACpB,mBAAmB;oBACnB,wBAAwB;oBACxB,IAAI;oBACJ,QAAQ;iBACT,CAAA;gBAED,IACE,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CACnC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAC7B,EACD,CAAC;oBACD,OAAO,KAAK,CAAA;gBACd,CAAC;gBAED,+BAA+B;gBAC/B,MAAM,qBAAqB,GAAG;oBAC5B,kBAAkB;oBAClB,qBAAqB;oBACrB,mBAAmB;oBACnB,mBAAmB;oBACnB,mBAAmB;iBACpB,CAAA;gBAED,IACE,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CACnC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAC7B,EACD,CAAC;oBACD,OAAO,IAAI,CAAA;gBACb,CAAC;gBAED,8BAA8B;gBAC9B,IAAI,cAAc,KAAK,cAAc,EAAE,CAAC;oBACtC,OAAO,IAAI,CAAA;gBACb,CAAC;gBAED,oEAAoE;gBACpE,MAAM,iBAAiB,GAAG,QAEzB,CAAA;gBACD,IACE,iBAAiB,CAAC,KAAK;oBACvB,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,EACtC,CAAC;oBACD,0EAA0E;oBAC1E,IAAI,iBAAiB,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACzC,OAAO,KAAK,CAAA;oBACd,CAAC;oBACD,OAAO,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAe,EAAE,EAAE;wBACtD,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;4BAC1B,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;4BACpC,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;4BACjD,MAAM,UAAU,GAAG,cAAc,KAAK,OAAO,CAAA;4BAC7C,MAAM,eAAe,GAAG,SAAS,CAC/B,cAAc,EACd,WAAW,EACX;gCACE,GAAG,EAAE,IAAI;6BACV,CACF,CAAA;4BACD,OAAO,UAAU,IAAI,eAAe,CAAA;wBACtC,CAAC;wBAED,kGAAkG;wBAClG,MAAM,WAAW,GAAG,SAAS,CAAC,cAAc,EAAE,OAAO,EAAE;4BACrD,GAAG,EAAE,IAAI;yBACV,CAAC,CAAA;wBACF,mEAAmE;wBACnE,MAAM,WAAW,GACf,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;4BACrB,OAAO,CAAC,UAAU,CAAC,cAAc,GAAG,GAAG,CAAC,CAAA;wBAC1C,OAAO,WAAW,IAAI,WAAW,CAAA;oBACnC,CAAC,CAAC,CAAA;gBACJ,CAAC;gBAED,0EAA0E;gBAC1E,MAAM,sBAAsB,GAAG;oBAC7B,uBAAuB;oBACvB,qBAAqB;oBACrB,qBAAqB;oBACrB,qBAAqB;oBACrB,wBAAwB;iBACzB,CAAA;gBAED,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAC5C,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAC7B,CAAA;YACH,CAAC;SACF,EACD,CAAC,GAAG,CAAC,CACN,CAAC,MAAM,EAAE,CAAA;QAEV,IAAI,YAAY,GAAG,CAAC,CAAA;QACpB,MAAM,KAAK,GAAa,EAAE,CAAA;QAC1B,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,MAAM,MAAM,GAAG,OAAO,CAAC;gBACrB,OAAO,EAAE,KAAK,CAAC,EAAE;oBACf,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;wBAC1B,YAAY,IAAI,KAAK,CAAC,IAAI,CAAA;wBAC1B,sDAAsD;wBACtD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;wBACpD,IAAI,SAAS,EAAE,CAAC;4BACd,mBAAmB;4BACnB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;wBACvB,CAAC;oBACH,CAAC;gBACH,CAAC;aACF,CAAC,CAAA;YACF,MAAM;iBACH,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;iBAC1B,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;iBACnB,KAAK,CAAC,WAAW,CAAC,CAAA;YACrB,MAAM,CAAC,GAAG,EAAE,CAAA;QACd,CAAC,CAAC,CAAA;QAEF,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;YAC9C,UAAU,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;SAC7C,CAAC,CAAA;QAEF,gEAAgE;QAChE,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAA;QACtD,0DAA0D;QAC1D,6DAA6D;QAC7D,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAEnC,CAAA;QAEb,OAAO;YACL,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,QAAQ;YACR,WAAW;YACX,YAAY;YACZ,KAAK;YACL,SAAS;YACT,MAAM;SACP,CAAA;IACH,CAAC;YAAS,CAAC;QACT,oCAAoC;QACpC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;IACjD,CAAC;AACH,CAAC,CAAA","sourcesContent":["import type { Manifest } from '@vltpkg/types'\nimport { create as tarCreate, list as tarList } from 'tar'\nimport { minimatch } from 'minimatch'\nimport { error } from '@vltpkg/error-cause'\nimport * as ssri from 'ssri'\nimport assert from 'node:assert'\nimport { Spec } from '@vltpkg/spec'\nimport type { LoadedConfig } from './config/index.ts'\n\nexport type PackTarballResult = {\n name: string\n version: string\n filename: string\n tarballData: Buffer\n unpackedSize: number\n files: string[]\n integrity?: string\n shasum?: string\n}\n\n/**\n * Replace workspace: and catalog: specs with actual versions\n * @param {Manifest} manifest_ - The manifest to process\n * @param {LoadedConfig} config - The loaded configuration containing project root, monorepo, and catalog data\n * @returns {Manifest} The manifest with replaced specs\n */\nconst replaceWorkspaceAndCatalogSpecs = (\n manifest_: Manifest,\n config: LoadedConfig,\n): Manifest => {\n // Create a deep copy of the manifest to avoid modifying the original\n const manifest = structuredClone(manifest_)\n\n // Get workspace and catalog configuration from config\n const { monorepo, catalog = {}, catalogs = {} } = config.options\n\n // Process dependency types\n const depTypes = [\n 'dependencies',\n 'devDependencies',\n 'optionalDependencies',\n 'peerDependencies',\n ] as const\n\n for (const depType of depTypes) {\n const deps = manifest[depType]\n /* c8 ignore next */\n if (!deps || typeof deps !== 'object') continue\n\n const depsObj = deps as Record<string, unknown>\n for (const [depName, depSpec] of Object.entries(depsObj)) {\n /* c8 ignore next */\n if (typeof depSpec !== 'string') continue\n\n const spec = Spec.parse(`${depName}@${depSpec}`, {\n catalog,\n catalogs,\n })\n\n switch (spec.type) {\n case 'workspace': {\n assert(\n monorepo,\n error(`No workspace configuration found for ${depName}`, {\n found: depName,\n }),\n )\n\n const workspaceName = spec.workspace\n assert(\n workspaceName,\n error(`No workspace name found for ${depName}`, {\n found: depName,\n }),\n )\n\n const workspace = monorepo.get(workspaceName)\n assert(\n workspace,\n error(`Workspace '${workspaceName}' not found`, {\n found: workspaceName,\n validOptions: Array.from(monorepo.keys()),\n }),\n )\n\n const actualVersion = workspace.manifest.version\n assert(\n actualVersion,\n error(\n `No version found for workspace '${workspaceName}'`,\n {\n found: workspaceName,\n wanted: 'package version',\n },\n ),\n )\n\n depsObj[depName] = actualVersion\n\n break\n }\n\n case 'catalog': {\n const catalogName = spec.catalog || ''\n const targetCatalog =\n catalogName ? catalogs[catalogName] : catalog\n assert(\n targetCatalog,\n error(`Catalog '${catalogName}' not found`, {\n found: catalogName,\n validOptions: Object.keys(catalogs),\n }),\n )\n\n const actualVersion = targetCatalog[depName]\n assert(\n actualVersion,\n error(\n `Package '${depName}' not found in catalog '${catalogName || 'default'}'`,\n {\n found: depName,\n validOptions: Object.keys(targetCatalog),\n },\n ),\n )\n\n depsObj[depName] = actualVersion\n\n break\n }\n }\n }\n }\n\n return manifest\n}\n\n/**\n * Create a tarball from a package directory\n * @param {Manifest} manifest - The manifest of the package to pack\n * @param {string} dir - The directory containing the package to pack\n * @param {LoadedConfig} [config] - The loaded configuration (for workspace/catalog resolution)\n * @returns {Promise<PackTarballResult>} The manifest, filename, and tarball data (unless dry run)\n */\nexport const packTarball = async (\n manifest: Manifest,\n dir: string,\n config: LoadedConfig,\n): Promise<PackTarballResult> => {\n assert(\n manifest.name && manifest.version,\n error('Package must have a name and version'),\n )\n\n const processedManifest = replaceWorkspaceAndCatalogSpecs(\n manifest,\n config,\n )\n\n const filename = `${manifest.name.replace('@', '').replace('/', '-')}-${manifest.version}.tgz`\n\n try {\n config.options.packageJson.write(dir, processedManifest)\n\n const tarballData = await tarCreate(\n {\n cwd: dir,\n gzip: true,\n portable: true,\n prefix: 'package/',\n filter: (path: string) => {\n // Normalize path - remove leading './'\n const normalizedPath = path.replace(/^\\.\\//, '')\n\n // Always include root directory\n if (path === '.' || normalizedPath === '') {\n return true\n }\n\n // Always exclude certain files/directories\n const alwaysExcludePatterns = [\n /^\\.?\\/?\\.git(\\/|$)/,\n /^\\.?\\/?node_modules(\\/|$)/,\n /^\\.?\\/?\\.nyc_output(\\/|$)/,\n /^\\.?\\/?coverage(\\/|$)/,\n /^\\.?\\/?\\.DS_Store$/,\n /^\\.?\\/?\\.npmrc$/,\n /^\\.?\\/?package-lock\\.json$/,\n /^\\.?\\/?yarn\\.lock$/,\n /^\\.?\\/?pnpm-lock\\.yaml$/,\n /^\\.?\\/?bun\\.lockb$/,\n /^\\.?\\/?bun\\.lock$/,\n /^\\.?\\/?vlt-lock\\.json$/,\n /~$/,\n /\\.swp$/,\n ]\n\n if (\n alwaysExcludePatterns.some(pattern =>\n pattern.test(normalizedPath),\n )\n ) {\n return false\n }\n\n // Always include certain files\n const alwaysIncludePatterns = [\n /^README(\\..*)?$/i,\n /^CHANGELOG(\\..*)?$/i,\n /^HISTORY(\\..*)?$/i,\n /^LICENSE(\\..*)?$/i,\n /^LICENCE(\\..*)?$/i,\n ]\n\n if (\n alwaysIncludePatterns.some(pattern =>\n pattern.test(normalizedPath),\n )\n ) {\n return true\n }\n\n // Always include package.json\n if (normalizedPath === 'package.json') {\n return true\n }\n\n // If files field is specified in package.json, use it for inclusion\n const manifestWithFiles = manifest as Manifest & {\n files?: string[]\n }\n if (\n manifestWithFiles.files &&\n Array.isArray(manifestWithFiles.files)\n ) {\n // Empty files array means exclude everything except always-included files\n if (manifestWithFiles.files.length === 0) {\n return false\n }\n return manifestWithFiles.files.some((pattern: string) => {\n if (pattern.endsWith('/')) {\n const dirName = pattern.slice(0, -1)\n const globPattern = pattern.replace(/\\/$/, '/**')\n const matchesDir = normalizedPath === dirName\n const matchesContents = minimatch(\n normalizedPath,\n globPattern,\n {\n dot: true,\n },\n )\n return matchesDir || matchesContents\n }\n\n // File pattern: check direct match and if this path is a directory that could contain the pattern\n const directMatch = minimatch(normalizedPath, pattern, {\n dot: true,\n })\n // Check if this path is a directory that could contain the pattern\n const isParentDir =\n pattern.includes('/') &&\n pattern.startsWith(normalizedPath + '/')\n return directMatch || isParentDir\n })\n }\n\n // Default behavior when no files field - exclude common development files\n const defaultExcludePatterns = [\n /^\\.?\\/?\\.vscode(\\/|$)/,\n /^\\.?\\/?\\.idea(\\/|$)/,\n /^\\.?\\/?\\.gitignore$/,\n /^\\.?\\/?\\.npmignore$/,\n /^\\.?\\/?\\.editorconfig$/,\n ]\n\n return !defaultExcludePatterns.some(pattern =>\n pattern.test(normalizedPath),\n )\n },\n },\n ['.'],\n ).concat()\n\n let unpackedSize = 0\n const files: string[] = []\n await new Promise<void>((resolve, reject) => {\n const stream = tarList({\n onentry: entry => {\n if (entry.type === 'File') {\n unpackedSize += entry.size\n // Remove the package/ prefix for cleaner file listing\n const cleanPath = entry.path.replace(/^[^/]+\\//, '')\n if (cleanPath) {\n // Skip empty paths\n files.push(cleanPath)\n }\n }\n },\n })\n stream\n .on('end', () => resolve())\n .on('error', reject)\n .write(tarballData)\n stream.end()\n })\n\n const integrityMap = ssri.fromData(tarballData, {\n algorithms: [...new Set(['sha1', 'sha512'])],\n })\n\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n const integrity = integrityMap.sha512?.[0]?.toString()\n // @ts-expect-error -- types from DT are missing hexDigest\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n const shasum = integrityMap.sha1?.[0]?.hexDigest() as\n | string\n | undefined\n\n return {\n name: manifest.name,\n version: manifest.version,\n filename,\n tarballData,\n unpackedSize,\n files,\n integrity,\n shasum,\n }\n } finally {\n // Restore the original package.json\n config.options.packageJson.write(dir, manifest)\n }\n}\n"]}
1
+ {"version":3,"file":"pack-tarball.js","sourceRoot":"","sources":["../../src/pack-tarball.ts"],"names":[],"mappings":"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","sourcesContent":["import type { NormalizedManifest } from '@vltpkg/types'\nimport { create as tarCreate, list as tarList } from 'tar'\nimport { minimatch } from 'minimatch'\nimport { error } from '@vltpkg/error-cause'\nimport * as ssri from 'ssri'\nimport assert from 'node:assert'\nimport { existsSync, statSync } from 'node:fs'\nimport { Spec } from '@vltpkg/spec'\nimport type { LoadedConfig } from './config/index.ts'\nimport { join } from 'node:path'\n\nexport type PackTarballResult = {\n name: string\n version: string\n filename: string\n tarballName: string\n tarballData: Buffer\n unpackedSize: number\n files: string[]\n integrity?: string\n shasum?: string\n}\n\n/**\n * Replace workspace: and catalog: specs with actual versions\n * @param {NormalizedManifest} manifest_ - The manifest to process\n * @param {LoadedConfig} config - The loaded configuration containing project root, monorepo, and catalog data\n * @returns {NormalizedManifest} The manifest with replaced specs\n */\nconst replaceWorkspaceAndCatalogSpecs = (\n manifest_: NormalizedManifest,\n config: LoadedConfig,\n): NormalizedManifest => {\n // Create a deep copy of the manifest to avoid modifying the original\n const manifest = structuredClone(manifest_)\n\n // Get workspace and catalog configuration from config\n const { monorepo, catalog = {}, catalogs = {} } = config.options\n\n // Process dependency types\n const depTypes = [\n 'dependencies',\n 'devDependencies',\n 'optionalDependencies',\n 'peerDependencies',\n ] as const\n\n for (const depType of depTypes) {\n const deps = manifest[depType]\n /* c8 ignore next */\n if (!deps || typeof deps !== 'object') continue\n\n const depsObj = deps as Record<string, unknown>\n for (const [depName, depSpec] of Object.entries(depsObj)) {\n /* c8 ignore next */\n if (typeof depSpec !== 'string') continue\n\n const spec = Spec.parse(`${depName}@${depSpec}`, {\n catalog,\n catalogs,\n })\n\n switch (spec.type) {\n case 'workspace': {\n assert(\n monorepo,\n error(`No workspace configuration found for ${depName}`, {\n found: depName,\n }),\n )\n\n const workspaceName = spec.workspace\n assert(\n workspaceName,\n error(`No workspace name found for ${depName}`, {\n found: depName,\n }),\n )\n\n const workspace = monorepo.get(workspaceName)\n assert(\n workspace,\n error(`Workspace '${workspaceName}' not found`, {\n found: workspaceName,\n validOptions: Array.from(monorepo.keys()),\n }),\n )\n\n const actualVersion = workspace.manifest.version\n assert(\n actualVersion,\n error(\n `No version found for workspace '${workspaceName}'`,\n {\n found: workspaceName,\n wanted: 'package version',\n },\n ),\n )\n\n depsObj[depName] = actualVersion\n\n break\n }\n\n case 'catalog': {\n const catalogName = spec.catalog || ''\n const targetCatalog =\n catalogName ? catalogs[catalogName] : catalog\n assert(\n targetCatalog,\n error(`Catalog '${catalogName}' not found`, {\n found: catalogName,\n validOptions: Object.keys(catalogs),\n }),\n )\n\n const actualVersion = targetCatalog[depName]\n assert(\n actualVersion,\n error(\n `Package '${depName}' not found in catalog '${catalogName || 'default'}'`,\n {\n found: depName,\n validOptions: Object.keys(targetCatalog),\n },\n ),\n )\n\n depsObj[depName] = actualVersion\n\n break\n }\n }\n }\n }\n\n return manifest\n}\n\n/**\n * Create a tarball from a package directory\n * @param {NormalizedManifest} manifest - The manifest of the package to pack\n * @param {string} dir - The directory containing the package to pack\n * @param {LoadedConfig} [config] - The loaded configuration (for workspace/catalog resolution)\n * @returns {Promise<PackTarballResult>} The manifest, filename, and tarball data (unless dry run)\n */\nexport const packTarball = async (\n manifest: NormalizedManifest,\n dir: string,\n config: LoadedConfig,\n): Promise<PackTarballResult> => {\n let packDir = dir\n\n // Check if publishDirectory is configured\n const publishDirectory = config.get('publish-directory')\n if (publishDirectory) {\n // Validate that the publish directory exists and is a directory\n assert(\n existsSync(publishDirectory),\n error(`Publish directory does not exist: ${publishDirectory}`, {\n found: publishDirectory,\n }),\n )\n assert(\n statSync(publishDirectory).isDirectory(),\n error(\n `Publish directory is not a directory: ${publishDirectory}`,\n {\n found: publishDirectory,\n wanted: 'directory',\n },\n ),\n )\n if (existsSync(join(publishDirectory, 'package.json'))) {\n manifest = config.options.packageJson.read(publishDirectory)\n }\n packDir = publishDirectory\n }\n\n assert(\n manifest.name && manifest.version,\n error('Package must have a name and version'),\n )\n\n const processedManifest = replaceWorkspaceAndCatalogSpecs(\n manifest,\n config,\n )\n\n const filename = `${manifest.name.replace('@', '').replace('/', '-')}-${manifest.version}.tgz`\n const tarballName = `${manifest.name}-${manifest.version}.tgz`\n\n try {\n config.options.packageJson.write(packDir, processedManifest)\n\n const tarballData = await tarCreate(\n {\n cwd: packDir,\n gzip: true,\n portable: true,\n prefix: 'package/',\n filter: (path: string) => {\n // Normalize path - remove leading './'\n const normalizedPath = path.replace(/^\\.\\//, '')\n\n // Always include root directory\n if (path === '.' || normalizedPath === '') {\n return true\n }\n\n // Always exclude certain files/directories\n const alwaysExcludePatterns = [\n /^\\.?\\/?\\.git(\\/|$)/,\n /^\\.?\\/?node_modules(\\/|$)/,\n /^\\.?\\/?\\.nyc_output(\\/|$)/,\n /^\\.?\\/?coverage(\\/|$)/,\n /^\\.?\\/?\\.DS_Store$/,\n /^\\.?\\/?\\.npmrc$/,\n /^\\.?\\/?package-lock\\.json$/,\n /^\\.?\\/?yarn\\.lock$/,\n /^\\.?\\/?pnpm-lock\\.yaml$/,\n /^\\.?\\/?bun\\.lockb$/,\n /^\\.?\\/?bun\\.lock$/,\n /^\\.?\\/?vlt-lock\\.json$/,\n /~$/,\n /\\.swp$/,\n ]\n\n if (\n alwaysExcludePatterns.some(pattern =>\n pattern.test(normalizedPath),\n )\n ) {\n return false\n }\n\n // Always include certain files\n const alwaysIncludePatterns = [\n /^README(\\..*)?$/i,\n /^CHANGELOG(\\..*)?$/i,\n /^HISTORY(\\..*)?$/i,\n /^LICENSE(\\..*)?$/i,\n /^LICENCE(\\..*)?$/i,\n ]\n\n if (\n alwaysIncludePatterns.some(pattern =>\n pattern.test(normalizedPath),\n )\n ) {\n return true\n }\n\n // Always include package.json\n if (normalizedPath === 'package.json') {\n return true\n }\n\n // If files field is specified in package.json, use it for inclusion\n const manifestWithFiles = manifest as NormalizedManifest & {\n files?: string[]\n }\n if (\n manifestWithFiles.files &&\n Array.isArray(manifestWithFiles.files)\n ) {\n // Empty files array means exclude everything except always-included files\n if (manifestWithFiles.files.length === 0) {\n return false\n }\n return manifestWithFiles.files.some((pattern: string) => {\n if (pattern.endsWith('/')) {\n const dirName = pattern.slice(0, -1)\n const globPattern = pattern.replace(/\\/$/, '/**')\n const matchesDir = normalizedPath === dirName\n const matchesContents = minimatch(\n normalizedPath,\n globPattern,\n {\n dot: true,\n },\n )\n return matchesDir || matchesContents\n }\n\n // File pattern: check direct match and if this path is a directory that could contain the pattern\n const directMatch = minimatch(normalizedPath, pattern, {\n dot: true,\n })\n // Check if this path is a directory that could contain the pattern\n const isParentDir =\n pattern.includes('/') &&\n pattern.startsWith(normalizedPath + '/')\n return directMatch || isParentDir\n })\n }\n\n // Default behavior when no files field - exclude common development files\n const defaultExcludePatterns = [\n /^\\.?\\/?\\.vscode(\\/|$)/,\n /^\\.?\\/?\\.idea(\\/|$)/,\n /^\\.?\\/?\\.gitignore$/,\n /^\\.?\\/?\\.npmignore$/,\n /^\\.?\\/?\\.editorconfig$/,\n ]\n\n return !defaultExcludePatterns.some(pattern =>\n pattern.test(normalizedPath),\n )\n },\n },\n ['.'],\n ).concat()\n\n let unpackedSize = 0\n const files: string[] = []\n await new Promise<void>((resolve, reject) => {\n const stream = tarList({\n onentry: entry => {\n if (entry.type === 'File') {\n unpackedSize += entry.size\n // Remove the package/ prefix for cleaner file listing\n const cleanPath = entry.path.replace(/^[^/]+\\//, '')\n if (cleanPath) {\n // Skip empty paths\n files.push(cleanPath)\n }\n }\n },\n })\n stream\n .on('end', () => resolve())\n .on('error', reject)\n .write(tarballData)\n stream.end()\n })\n\n const integrityMap = ssri.fromData(tarballData, {\n algorithms: [...new Set(['sha1', 'sha512'])],\n })\n\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n const integrity = integrityMap.sha512?.[0]?.toString()\n // @ts-expect-error -- types from DT are missing hexDigest\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n const shasum = integrityMap.sha1?.[0]?.hexDigest() as\n | string\n | undefined\n\n return {\n name: manifest.name,\n version: manifest.version,\n filename,\n tarballName,\n tarballData,\n unpackedSize,\n files,\n integrity,\n shasum,\n }\n } finally {\n // Restore the original package.json to the pack directory\n config.options.packageJson.write(packDir, manifest)\n }\n}\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@vltpkg/cli-sdk",
3
3
  "description": "The source for the vlt CLI",
4
- "version": "0.0.0-17",
4
+ "version": "0.0.0-19",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "git+https://github.com/vltpkg/vltpkg.git",
@@ -37,28 +37,29 @@
37
37
  "ssri": "^12.0.0",
38
38
  "supports-color": "^10.0.0",
39
39
  "tar": "^7.4.3",
40
- "@vltpkg/dep-id": "0.0.0-17",
41
- "@vltpkg/dot-prop": "0.0.0-17",
42
- "@vltpkg/git": "0.0.0-17",
43
- "@vltpkg/graph": "0.0.0-17",
44
- "@vltpkg/error-cause": "0.0.0-17",
45
- "@vltpkg/package-info": "0.0.0-17",
46
- "@vltpkg/output": "0.0.0-17",
47
- "@vltpkg/package-json": "0.0.0-17",
48
- "@vltpkg/registry-client": "0.0.0-17",
49
- "@vltpkg/query": "0.0.0-17",
50
- "@vltpkg/rollback-remove": "0.0.0-17",
51
- "@vltpkg/init": "0.0.0-17",
52
- "@vltpkg/run": "0.0.0-17",
53
- "@vltpkg/security-archive": "0.0.0-17",
54
- "@vltpkg/server": "0.0.0-17",
55
- "@vltpkg/spec": "0.0.0-17",
56
- "@vltpkg/types": "0.0.0-17",
57
- "@vltpkg/url-open": "0.0.0-17",
58
- "@vltpkg/workspaces": "0.0.0-17",
59
- "@vltpkg/xdg": "0.0.0-17",
60
- "@vltpkg/vlt-json": "0.0.0-17",
61
- "@vltpkg/vlx": "0.0.0-17"
40
+ "@vltpkg/dot-prop": "0.0.0-19",
41
+ "@vltpkg/config": "0.0.0-19",
42
+ "@vltpkg/dep-id": "0.0.0-19",
43
+ "@vltpkg/git": "0.0.0-19",
44
+ "@vltpkg/error-cause": "0.0.0-19",
45
+ "@vltpkg/graph": "0.0.0-19",
46
+ "@vltpkg/init": "0.0.0-19",
47
+ "@vltpkg/output": "0.0.0-19",
48
+ "@vltpkg/package-info": "0.0.0-19",
49
+ "@vltpkg/package-json": "0.0.0-19",
50
+ "@vltpkg/query": "0.0.0-19",
51
+ "@vltpkg/registry-client": "0.0.0-19",
52
+ "@vltpkg/rollback-remove": "0.0.0-19",
53
+ "@vltpkg/run": "0.0.0-19",
54
+ "@vltpkg/server": "0.0.0-19",
55
+ "@vltpkg/security-archive": "0.0.0-19",
56
+ "@vltpkg/spec": "0.0.0-19",
57
+ "@vltpkg/types": "0.0.0-19",
58
+ "@vltpkg/vlx": "0.0.0-19",
59
+ "@vltpkg/url-open": "0.0.0-19",
60
+ "@vltpkg/vlt-json": "0.0.0-19",
61
+ "@vltpkg/workspaces": "0.0.0-19",
62
+ "@vltpkg/xdg": "0.0.0-19"
62
63
  },
63
64
  "devDependencies": {
64
65
  "@eslint/js": "^9.28.0",