Files
pnpm/store/commands/test/inspecting/catFile.ts
Zoltan Kochan 4a36b9a110 refactor: rename internal packages to @pnpm/<domain>.<leaf> convention (#10997)
## Summary

Rename all internal packages so their npm names follow the `@pnpm/<domain>.<leaf>` convention, matching their directory structure. Also rename directories to remove redundancy and improve clarity.

### Bulk rename (94 packages)

All `@pnpm/` packages now derive their name from their directory path using dot-separated segments. Exceptions: `packages/`, `__utils__/`, and `pnpm/artifacts/` keep leaf names only.

### Directory renames (removing redundant prefixes)

- `cli/cli-meta` → `cli/meta`, `cli/cli-utils` → `cli/utils`
- `config/config` → `config/reader`, `config/config-writer` → `config/writer`
- `fetching/fetching-types` → `fetching/types`
- `lockfile/lockfile-to-pnp` → `lockfile/to-pnp`
- `store/store-connection-manager` → `store/connection-manager`
- `store/store-controller-types` → `store/controller-types`
- `store/store-path` → `store/path`

### Targeted renames (clarity improvements)

- `deps/dependency-path` → `deps/path` (`@pnpm/deps.path`)
- `deps/calc-dep-state` → `deps/graph-hasher` (`@pnpm/deps.graph-hasher`)
- `deps/inspection/dependencies-hierarchy` → `deps/inspection/tree-builder` (`@pnpm/deps.inspection.tree-builder`)
- `bins/link-bins` → `bins/linker`, `bins/remove-bins` → `bins/remover`, `bins/package-bins` → `bins/resolver`
- `installing/get-context` → `installing/context`
- `store/package-store` → `store/controller`
- `pkg-manifest/manifest-utils` → `pkg-manifest/utils`

### Manifest reader/writer renames

- `workspace/read-project-manifest` → `workspace/project-manifest-reader` (`@pnpm/workspace.project-manifest-reader`)
- `workspace/write-project-manifest` → `workspace/project-manifest-writer` (`@pnpm/workspace.project-manifest-writer`)
- `workspace/read-manifest` → `workspace/workspace-manifest-reader` (`@pnpm/workspace.workspace-manifest-reader`)
- `workspace/manifest-writer` → `workspace/workspace-manifest-writer` (`@pnpm/workspace.workspace-manifest-writer`)

### Workspace package renames

- `workspace/find-packages` → `workspace/projects-reader`
- `workspace/find-workspace-dir` → `workspace/root-finder`
- `workspace/resolve-workspace-range` → `workspace/range-resolver`
- `workspace/filter-packages-from-dir` merged into `workspace/filter-workspace-packages` → `workspace/projects-filter`

### Domain moves

- `pkg-manifest/read-project-manifest` → `workspace/project-manifest-reader`
- `pkg-manifest/write-project-manifest` → `workspace/project-manifest-writer`
- `pkg-manifest/exportable-manifest` → `releasing/exportable-manifest`

### Scope

- 1206 files changed
- Updated: package.json names/deps, TypeScript imports, tsconfig references, changeset files, renovate.json, test fixtures, import ordering
2026-03-17 21:50:40 +01:00

206 lines
6.2 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/// <reference path="../../../../__typings__/index.d.ts" />
import path from 'node:path'
import { getConfig } from '@pnpm/config.reader'
import type { PnpmError } from '@pnpm/error'
import { prepare } from '@pnpm/prepare'
import { catFile } from '@pnpm/store.commands'
import { safeExeca as execa } from 'execa'
const pnpmBin = path.join(import.meta.dirname, '../../../../pnpm/bin/pnpm.mjs')
// cat-file
test('print hash file content', async () => {
prepare({
dependencies: {
bytes: '3.1.2',
},
})
await execa('node', [pnpmBin, 'install'])
{
const { config } = await getConfig({
cliOptions: {},
packageManager: {
name: 'pnpm',
version: '8.12.1',
},
})
const output = await catFile.handler(config as catFile.CatFileCommandOptions, ['sha512-ZF9Q82J2KaXGIXWxGC0iecrQmfa08Cs/D+e2BPzGSnOn5aCyWiJbwlMm3HqKMK6qKrBg+/u6LduS/a1mc8IsNQ=='])
expect(output).toBe(`# Bytes utility
[![NPM Version][npm-image]][npm-url]
[![NPM Downloads][downloads-image]][downloads-url]
[![Build Status][ci-image]][ci-url]
[![Test Coverage][coveralls-image]][coveralls-url]
Utility to parse a string bytes (ex: \`1TB\`) to bytes (\`1099511627776\`) and vice-versa.
## Installation
This is a [Node.js](https://nodejs.org/en/) module available through the
[npm registry](https://www.npmjs.com/). Installation is done using the
[\`npm install\` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally):
\`\`\`bash
$ npm install bytes
\`\`\`
## Usage
\`\`\`js
var bytes = require('bytes');
\`\`\`
#### bytes(numberstring value, [options]): numberstringnull
Default export function. Delegates to either \`bytes.format\` or \`bytes.parse\` based on the type of \`value\`.
**Arguments**
| Name | Type | Description |
|---------|----------|--------------------|
| value | \`number\`\`string\` | Number value to format or string value to parse |
| options | \`Object\` | Conversion options for \`format\` |
**Returns**
| Name | Type | Description |
|---------|------------------|-------------------------------------------------|
| results | \`string\`\`number\`\`null\` | Return null upon error. Numeric value in bytes, or string value otherwise. |
**Example**
\`\`\`js
bytes(1024);
// output: '1KB'
bytes('1KB');
// output: 1024
\`\`\`
#### bytes.format(number value, [options]): stringnull
Format the given value in bytes into a string. If the value is negative, it is kept as such. If it is a float, it is
rounded.
**Arguments**
| Name | Type | Description |
|---------|----------|--------------------|
| value | \`number\` | Value in bytes |
| options | \`Object\` | Conversion options |
**Options**
| Property | Type | Description |
|-------------------|--------|-----------------------------------------------------------------------------------------|
| decimalPlaces | \`number\`\`null\` | Maximum number of decimal places to include in output. Default value to \`2\`. |
| fixedDecimals | \`boolean\`\`null\` | Whether to always display the maximum number of decimal places. Default value to \`false\` |
| thousandsSeparator | \`string\`\`null\` | Example of values: \`' '\`, \`','\` and \`'.'\`... Default value to \`''\`. |
| unit | \`string\`\`null\` | The unit in which the result will be returned (B/KB/MB/GB/TB). Default value to \`''\` (which means auto detect). |
| unitSeparator | \`string\`\`null\` | Separator to use between number and unit. Default value to \`''\`. |
**Returns**
| Name | Type | Description |
|---------|------------------|-------------------------------------------------|
| results | \`string\`\`null\` | Return null upon error. String value otherwise. |
**Example**
\`\`\`js
bytes.format(1024);
// output: '1KB'
bytes.format(1000);
// output: '1000B'
bytes.format(1000, {thousandsSeparator: ' '});
// output: '1 000B'
bytes.format(1024 * 1.7, {decimalPlaces: 0});
// output: '2KB'
bytes.format(1024, {unitSeparator: ' '});
// output: '1 KB'
\`\`\`
#### bytes.parse(stringnumber value): numbernull
Parse the string value into an integer in bytes. If no unit is given, or \`value\`
is a number, it is assumed the value is in bytes.
Supported units and abbreviations are as follows and are case-insensitive:
* \`b\` for bytes
* \`kb\` for kilobytes
* \`mb\` for megabytes
* \`gb\` for gigabytes
* \`tb\` for terabytes
* \`pb\` for petabytes
The units are in powers of two, not ten. This means 1kb = 1024b according to this parser.
**Arguments**
| Name | Type | Description |
|---------------|--------|--------------------|
| value | \`string\`\`number\` | String to parse, or number in bytes. |
**Returns**
| Name | Type | Description |
|---------|-------------|-------------------------|
| results | \`number\`\`null\` | Return null upon error. Value in bytes otherwise. |
**Example**
\`\`\`js
bytes.parse('1KB');
// output: 1024
bytes.parse('1024');
// output: 1024
bytes.parse(1024);
// output: 1024
\`\`\`
## License
[MIT](LICENSE)
[ci-image]: https://badgen.net/github/checks/visionmedia/bytes.js/master?label=ci
[ci-url]: https://github.com/visionmedia/bytes.js/actions?query=workflow%3Aci
[coveralls-image]: https://badgen.net/coveralls/c/github/visionmedia/bytes.js/master
[coveralls-url]: https://coveralls.io/r/visionmedia/bytes.js?branch=master
[downloads-image]: https://badgen.net/npm/dm/bytes
[downloads-url]: https://npmjs.org/package/bytes
[npm-image]: https://badgen.net/npm/v/bytes
[npm-url]: https://npmjs.org/package/bytes
`)
}
})
test('print hash file content error', async () => {
let err!: PnpmError
try {
const { config } = await getConfig({
cliOptions: {},
packageManager: {
name: 'pnpm',
version: '8.12.1',
},
})
await catFile.handler(config as catFile.CatFileCommandOptions, ['sha512-ZF9Q82J2KaXGIXWxGC0iecrQmfa08'])
} catch (_err: any) { // eslint-disable-line
err = _err
}
expect(err.code).toBe('ERR_PNPM_INVALID_HASH')
expect(err.message).toBe('Corresponding hash file not found')
})