+1
-1
| MIT License | ||
| Copyright (c) 2025 Bjorn Lu and publint contributors | ||
| Copyright (c) 2026 Bjorn Lu and publint contributors | ||
@@ -5,0 +5,0 @@ Permission is hereby granted, free of charge, to any person obtaining a copy |
+3
-3
| { | ||
| "name": "publint", | ||
| "version": "0.3.16", | ||
| "version": "0.3.17", | ||
| "description": "Lint packaging errors", | ||
@@ -44,3 +44,3 @@ "type": "module", | ||
| "sade": "^1.8.1", | ||
| "@publint/pack": "^0.1.2" | ||
| "@publint/pack": "^0.1.3" | ||
| }, | ||
@@ -51,3 +51,3 @@ "devDependencies": { | ||
| "prompts": "^2.4.2", | ||
| "vitest": "^4.0.15" | ||
| "vitest": "^4.0.17" | ||
| }, | ||
@@ -54,0 +54,0 @@ "scripts": { |
@@ -18,14 +18,15 @@ import { unpack } from '@publint/pack' | ||
| let vfs | ||
| /** @type {string | undefined} */ | ||
| let overridePkgDir | ||
| /** @type {string} */ | ||
| let resolvedPkgDir | ||
| if ('tarball' in pack) { | ||
| const result = await unpack(pack.tarball) | ||
| vfs = createTarballVfs(result.files) | ||
| overridePkgDir = result.rootDir | ||
| resolvedPkgDir = options?.pkgDir ?? result.rootDir | ||
| } else { | ||
| vfs = createTarballVfs(pack.files) | ||
| resolvedPkgDir = options?.pkgDir ?? '/' | ||
| } | ||
| return await core({ | ||
| pkgDir: options.pkgDir ?? overridePkgDir ?? '/', | ||
| pkgDir: resolvedPkgDir, | ||
| vfs, | ||
@@ -32,0 +33,0 @@ level: options.level ?? 'suggestion', |
+30
-14
| import path from 'node:path' | ||
| import { packAsList, unpack } from '@publint/pack' | ||
| import { getPackDirectory, packAsList, unpack } from '@publint/pack' | ||
| import { createNodeVfs } from './node/vfs-node.js' | ||
@@ -8,2 +8,7 @@ import { core } from './shared/core.js' | ||
| /** | ||
| * @typedef {T extends string ? T : never} ExtractStringLiteral | ||
| * @template T | ||
| */ | ||
| /** | ||
| * @type {import('./index.d.ts').publint} | ||
@@ -18,4 +23,4 @@ */ | ||
| let vfs | ||
| /** @type {string | undefined} */ | ||
| let overridePkgDir | ||
| /** @type {string} */ | ||
| let resolvedPkgDir | ||
| /** @type {string[] | undefined} */ | ||
@@ -32,5 +37,6 @@ let packedFiles | ||
| vfs = createTarballVfs(result.files) | ||
| overridePkgDir = result.rootDir | ||
| resolvedPkgDir = options?.pkgDir ?? result.rootDir | ||
| } else { | ||
| vfs = createTarballVfs(pack.files) | ||
| resolvedPkgDir = options?.pkgDir ?? process.cwd() | ||
| } | ||
@@ -43,3 +49,8 @@ } | ||
| const pkgDir = options?.pkgDir ?? process.cwd() | ||
| packedFiles = await detectAndPack(pkgDir, pack, log) | ||
| const packageManager = await detectPackageManager(pkgDir, pack) | ||
| const packDir = await getPackDirectory(pkgDir, packageManager) | ||
| packedFiles = await getPackedFiles(pkgDir, packDir, packageManager, log) | ||
| resolvedPkgDir = packDir | ||
| } else { | ||
| resolvedPkgDir = options?.pkgDir ?? process.cwd() | ||
| } | ||
@@ -54,3 +65,3 @@ vfs = createNodeVfs() | ||
| return core({ | ||
| pkgDir: options?.pkgDir ?? overridePkgDir ?? process.cwd(), | ||
| pkgDir: resolvedPkgDir, | ||
| vfs, | ||
@@ -64,12 +75,7 @@ level: options?.level ?? 'suggestion', | ||
| /** | ||
| * @typedef {T extends string ? T : never} ExtractStringLiteral | ||
| * @template T | ||
| */ | ||
| /** | ||
| * @param {string} pkgDir | ||
| * @param {ExtractStringLiteral<import('./index.d.ts').Options['pack']>} pack | ||
| * @param {boolean} log | ||
| * @return {Promise<import('@publint/pack').PackageManager>} | ||
| */ | ||
| async function detectAndPack(pkgDir, pack, log) { | ||
| async function detectPackageManager(pkgDir, pack) { | ||
| let packageManager = pack | ||
@@ -87,2 +93,12 @@ | ||
| return packageManager | ||
| } | ||
| /** | ||
| * @param {string} pkgDir | ||
| * @param {string} packDir | ||
| * @param {import('@publint/pack').PackageManager} packageManager | ||
| * @param {boolean} log | ||
| */ | ||
| async function getPackedFiles(pkgDir, packDir, packageManager, log) { | ||
| // When packing, we want to ignore scripts as `publint` itself could be used in one of them and could | ||
@@ -110,3 +126,3 @@ // cause an infinite loop. Also, running scripts might be slow and unexpected. | ||
| const list = await packAsList(pkgDir, { packageManager, ignoreScripts: true }) | ||
| return list.map((file) => path.join(pkgDir, file)) | ||
| return list.map((file) => path.join(packDir, file)) | ||
| } |
@@ -377,3 +377,3 @@ import { lintableFileExtensions } from './constants.js' | ||
| if (sliceIndex === -1) return [] | ||
| if (currentPath[sliceIndex + 1][0] === '.') sliceIndex++ | ||
| if (currentPath[sliceIndex + 1]?.[0] === '.') sliceIndex++ | ||
| return currentPath.slice(sliceIndex + 1) | ||
@@ -380,0 +380,0 @@ } |
108884
0.57%2757
0.58%Updated