open-index/open-npm huggingface dataset:
npm package: @rushstack/cpu-profile-summarizer
Description: CLI tool for running analytics on multiple V8 .cpuprofile files
Latest version: 0.2.12

# @rushstack/cpu-profile-summarizer

> 🚨 _EARLY PREVIEW RELEASE_ 🚨
>
> Not all features are implemented yet. To provide suggestions, please
> [create a GitHub issue](https://github.com/microsoft/rushstack/issues/new/choose).
> If you have questions, see the [Rush Stack Help page](https://rushstack.io/pages/help/support/)
> for support resources.

The `cpu-profile-summarizer` command line tool helps you:

- Collate self/total CPU usage statistics for an entire monorepo worth of V8 .cpuprofile files

## Usage

It's recommended to install this package globally:

```
# Install the NPM package
npm install -g @rushstack/cpu-profile-summarizer

# Process a folder of cpuprofile files into a summary tsv file
cpu-profile-summarizer --input FOLDER --output FILE.tsv
```

The output file is in the tab-separated values (tsv) format.
npm package: @rushstack/credential-cache
Description: Cross-platform functionality to manage cached credentials.
Latest version: 0.2.12

# @rushstack/credential-cache

## Installation

`npm install @rushstack/credential-cache --save-dev`

## Overview

This package manages persistent credentials on the local machine. Since these credentials are stored unencrypted, do not use for secure credentials.

## Links

- [CHANGELOG.md](
  https://github.com/microsoft/rushstack/blob/main/libraries/credential-cache/CHANGELOG.md) - Find
  out what's new in the latest version
- [API Reference](https://api.rushstack.io/pages/credential-cache/)

**@rushstack/credential-cache** is part of the [Rush Stack](https://rushstack.io/) family of projects.
npm package: @rushstack/debug-certificate-manager
Description: Cross-platform functionality to create debug ssl certificates.
Latest version: 1.7.13

# @rushstack/debug-certificate-manager

## Installation

`npm install @rushstack/debug-certificate-manager --save-dev`

## Overview

This library contains utilities for managing debug certificates in a development server environment. It provides functions to generate, self-sign, trust, and untrust .pem certificates for both Windows and Mac OS. It will also generate self-signed certificates on other OS's, but the user must manually trust and untrust them.

[![npm version](https://badge.fury.io/js/%40rushstack%2Fdebug-certificate-manager.svg)](https://badge.fury.io/js/%40rushstack%2Fdebug-certificate-manager)


## `CertificateStore`

The `CertificateStore` class provides accessors and mutators for the debug certificate data stored in `.rushstack`.

Retrive certificate data from the store:
```typescript
const certificateStore: CertificateStore = new CertificateStore();
return {
  pemCertificate: certificateStore.certificateData,
  pemKey: certificateStore.keyData
};
```
Set data using the same property names `certificateData: string | undefined` and `keyData: string | undefined`.

## `ensureCertificate`

Get a development certificate from the store, or optionally, generate a new one and trust it if one does not exist in the store. Returns a certificate object following the `ICertificate` interface.

```typescript
export interface ICertificate {
  pemCertificate: string | undefined;
  pemKey: string | undefined;
}
```

## `untrustCertificate`

Attempts to locate a previously generated debug certificate and untrust it. Returns a `boolean` value to denote success.

## Links

- [CHANGELOG.md](
  https://github.com/microsoft/rushstack/blob/main/libraries/debug-certificate-manager/CHANGELOG.md) - Find
  out what's new in the latest version
- [API Reference](https://api.rushstack.io/pages/debug-certificate-manager/)

**@rushstack/debug-certificate-manager** is part of the [Rush Stack](https://rushstack.io/) family of projects.
npm package: @rushstack/eslint-bulk
Description: Roll out new ESLint rules in a large monorepo without cluttering up your code with "eslint-ignore-next-line"
Latest version: 0.5.12

# @rushstack/eslint-bulk

This package provides the command-line interface (CLI) for the **ESLint bulk suppressions**
feature from `@rushstack/eslint-patch`.

### Setting it up

👉 Before using this tool, you will first need to install and configure the
[@rushstack/eslint-patch](https://www.npmjs.com/package/@rushstack/eslint-patch) package.

See the [eslint-bulk-suppressions documentation](https://www.npmjs.com/package/@rushstack/eslint-patch#eslint-bulk-suppressions-feature)
for details.

### Typical workflow

1. Checkout your `main` branch, which is in a clean state where ESLint reports no violations.
2. Update your configuration to enable the latest lint rules; ESLint now reports thousands of legacy violations.
3. Run `eslint-bulk suppress --all ./src` to update **.eslint-bulk-suppressions.json.**
4. ESLint now no longer reports violations, so commit the results to Git and merge your pull request.
5. Over time, engineers may improve some of the suppressed code, in which case the associated suppressions are no longer needed.
6. Run `eslint-bulk prune` periodically to find and remove unnecessary suppressions from **.eslint-bulk-suppressions.json**, ensuring that new violations will now get caught in those scopes.

### "eslint-bulk suppress" command

```bash
eslint-bulk suppress --rule NAME1 [--rule NAME2...] PATH1 [PATH2...]
eslint-bulk suppress --all PATH1 [PATH2...]
```

Use this command to automatically generate bulk suppressions for the specified lint rules and file paths.
The path argument is a [glob pattern](https://en.wikipedia.org/wiki/Glob_(programming)) with the same syntax
as path arguments for the `eslint` command.


### "eslint-bulk prune" command

Use this command to automatically delete all unnecessary suppression entries in all
**.eslint-bulk-suppressions.json** files under the current working directory.

```bash
eslint-bulk prune
```

# Links

- [CHANGELOG.md](https://github.com/microsoft/rushstack/blob/main/eslint/eslint-bulk/CHANGELOG.md) - Find
  out what's new in the latest version

- [`@rushstack/eslint-patch`](https://www.npmjs.com/package/@rushstack/eslint-patch) required companion package


`@rushstack/eslint-bulk` is part of the [Rush Stack](https://rushstack.io/) family of projects.
npm package: @rushstack/eslint-plugin-security
Description: An ESLint plugin providing rules that identify common security vulnerabilities for browser applications, Node.js tools, and Node.js services
Latest version: 0.14.2

# @rushstack/eslint-plugin-security

This plugin implements a collection of security rules for ESLint.

Our ambition is to eventually provide a comprehensive set of recommended security rules for:
- web browser applications
- Node.js tools
- Node.js services

If you would like to request or contribute a new security rule, you are encouraged to
[create a GitHub issue](https://github.com/microsoft/rushstack/issues) in the
[Rush Stack](https://rushstack.io/) monorepo where this project is developed.
Thanks!

## `@rushstack/security/no-unsafe-regexp`

Require regular expressions to be constructed from string constants rather than dynamically
building strings at runtime.

#### Rule Details

Regular expressions should be constructed from string constants. Dynamically building strings at runtime may
introduce security vulnerabilities, performance concerns, and bugs involving incorrect escaping of special characters.

#### Examples

The following patterns are considered problems when `@rushstack/security/no-unsafe-regexp` is enabled:

```ts
function parseRestResponse(request: ICatalogRequest,
  items: ICatalogItem[]): ICatalogItem[] {

  // Security vulnerability: A malicious user could invoke the REST service using a
  // "searchPattern" with a complex RegExp that causes a denial of service.
  const regexp: RegExp = new RegExp(request.searchPattern);
  return items.filter(item => regexp.test(item.title));
}
```

```ts
function hasExtension(filePath: string, extension: string): boolean {
  // Escaping mistake: If the "extension" string contains a special character such as ".",
  // it will be interpreted as a regular expression operator. Correctly escaping an arbitrary
  // string is a nontrivial problem due to RegExp implementation differences, as well as contextual
  // issues (since which characters are special changes inside RegExp nesting constructs).
  // In most cases, this problem is better solved without regular expressions.
  const regexp: RegExp = new RegExp(`\.${extension}$`);
  return regexp.test(filePath);
}
```

The following patterns are NOT considered problems:

```ts
function isInteger(s: string): boolean {
  return /[0-9]+/.test(s);
}
```

```ts
function isInteger(s: string): boolean {
  return new RegExp('[0-9]+').test(s);
}
```

## Links

- [CHANGELOG.md](
  https://github.com/microsoft/rushstack/blob/main/eslint/eslint-plugin-security/CHANGELOG.md) - Find
  out what's new in the latest version

`@rushstack/eslint-plugin-security` is part of the [Rush Stack](https://rushstack.io/) family of projects.
npm package: @rushstack/hashed-folder-copy-plugin
Description: Webpack plugin for copying a folder to the output directory with a hash in the folder name.
Latest version: 1.3.12

# @rushstack/hashed-folder-copy-plugin

## Installation

`npm install @rushstack/hashed-folder-copy-plugin --save-dev`

## Overview

This webpack plugin provides a simple method for copying a folder to the build output
and including a hash in the folder's name, accessible to the bundle's runtime.

## Usage

In your Webpack config, include the plugin in your `plugins` array:

```JavaScript
import { HashedFolderCopyPlugin } from '@rushstack/hashed-folder-copy-plugin';

{
  plugins: [
    new HashedFolderCopyPlugin()
  ]
}
```

and call the `requireFolder` function in your webpack bundle:

```JavaScript
const folderUrl = requireFolder({
  outputFolder: 'my-folder-name_[hash]',
  sources: [
    {
      globsBase: '../assets/',
      globs: ['**/*.png']
    }
  ]
})
```

TypeScript typings are provided for the `requireFolder` function:

```TypeScript
import type { IRequireFolderOptions } from '@rushstack/hashed-folder-copy-plugin';

declare function requireFolder(options: IRequireFolderOptions): string;

const folderUrl: string = requireFolder({
  outputFolder: 'my-folder-name_[hash]',
  sources: [
    {
      globsBase: '../assets/',
      globPatterns: ['**/*.png']
    }
  ]
})
```

The `requireFolder` takes an options object with two properties:

## `outputFolder`

This is the name of the folder to be created in the webpack output folder. Its
name supports a `[hash]` token, which will be replaced with a stable hash of the assets
that are copied to the folder. Note that the `[hash]` token is not required.

## `sources`

This is an array of glob base paths and glob patterns that will be copied to the
output folder. Each entry in this array takes a `globsBase` property, which is the
base path to the folder to be copied, and a `globPatterns` property, which is an array of
glob patterns to be evaluated under the `globsBase` folder. The path in `globsBase`
supports standard Node resolution.

# Example project

See the [example project](https://github.com/microsoft/rushstack/blob/master/build-tests/hashed-folder-copy-plugin-webpack4-test/).

# A note about ambient types

To get the `requireFolder` function type to work in TypeScript, include a reference to
`"@rushstack/hashed-folder-copy-plugin/ambientTypes"` in your `tsconfig.json` file's
`compilerOptions.types` property. For example:

```JSON
{
  "compilerOptions": {
    "types": [
      "webpack-env",
      "@rushstack/hashed-folder-copy-plugin/ambientTypes" // This value, specifically
    ]
  }
}

```
npm package: @rushstack/heft-api-extractor-plugin
Description: A Heft plugin for API Extractor
Latest version: 1.3.12

# @rushstack/heft-api-extractor-plugin

This is a Heft plugin for running API Extractor.

## Links

- [CHANGELOG.md](
  https://github.com/microsoft/rushstack/blob/main/heft-plugins/heft-api-extractor-plugin/CHANGELOG.md) - Find
out what's new in the latest version
- [@rushstack/heft](https://www.npmjs.com/package/@rushstack/heft) - Heft is a config-driven toolchain that invokes popular tools such as TypeScript, ESLint, Jest, Webpack, and API Extractor.

Heft is part of the [Rush Stack](https://rushstack.io/) family of projects.
npm package: @rushstack/heft-dev-cert-plugin
Description: A Heft plugin for generating and using local development certificates
Latest version: 1.1.13

# @rushstack/heft-dev-cert-plugin

This is a Heft plugin to manage development certificates for local serve.
Automatically configures webpack-dev-server to use https in serve mode.

## Links

- [CHANGELOG.md](
  https://github.com/microsoft/rushstack/blob/main/heft-plugins/heft-dev-cert-plugin/CHANGELOG.md) - Find
  out what's new in the latest version

Heft is part of the [Rush Stack](https://rushstack.io/) family of projects.
npm package: @rushstack/heft-isolated-typescript-transpile-plugin
Description: Heft plugin for transpiling TypeScript with SWC
Latest version: 1.2.12

# @rushstack/heft-isolated-typescript-transpile-plugin

This is a Heft plugin for using swc as an isolated module transpiler
during the "build" stage.

## Links

- [CHANGELOG.md](
  https://github.com/microsoft/rushstack/blob/main/heft-plugins/heft-isolated-typescript-transpile-plugin/CHANGELOG.md) - Find
  out what's new in the latest version

Heft is part of the [Rush Stack](https://rushstack.io/) family of projects.
npm package: @rushstack/heft-jest-plugin
Description: Heft plugin for Jest
Latest version: 1.2.12

# @rushstack/heft-jest-plugin

This is a Heft plugin for running Jest.

## Links

- [CHANGELOG.md](
  https://github.com/microsoft/rushstack/blob/main/heft-plugins/heft-jest-plugin/CHANGELOG.md) - Find
  out what's new in the latest version
- [@rushstack/heft](https://www.npmjs.com/package/@rushstack/heft) - Heft is a config-driven toolchain that invokes popular tools such as TypeScript, ESLint, Jest, Webpack, and API Extractor.

Heft is part of the [Rush Stack](https://rushstack.io/) family of projects.
npm package: @rushstack/heft-lint-plugin
Description: A Heft plugin for using ESLint or TSLint. Intended for use with @rushstack/heft-typescript-plugin
Latest version: 1.2.12

# @rushstack/heft-lint-plugin

This is a Heft plugin to run ESLint or TSLint. Intended for use with @rushstack/heft-typescript-plugin.

## Links

- [CHANGELOG.md](
  https://github.com/microsoft/rushstack/blob/main/heft-plugins/heft-lint-plugin/CHANGELOG.md) - Find
  out what's new in the latest version
- [@rushstack/heft](https://www.npmjs.com/package/@rushstack/heft) - Heft is a config-driven toolchain that invokes popular tools such as TypeScript, ESLint, Jest, Webpack, and API Extractor.

Heft is part of the [Rush Stack](https://rushstack.io/) family of projects.
npm package: @rushstack/heft-localization-typings-plugin
Description: Heft plugin for generating types for localization files.
Latest version: 1.1.13

# @rushstack/heft-localization-typings-plugin

Heft plugin for generating types for localization files.

## Links

- [CHANGELOG.md](
  https://github.com/microsoft/rushstack/blob/main/heft-plugins/heft-localization-typings-plugin/CHANGELOG.md) - Find
  out what's new in the latest version

Heft is part of the [Rush Stack](https://rushstack.io/) family of projects.
npm package: @rushstack/heft-node-rig
Description: A rig package for Node.js projects that build using Heft
Latest version: 2.11.32

## @rushstack/heft-node-rig

A rig package for Node.js projects that build using [Heft](https://www.npmjs.com/package/@rushstack/heft)
build system.  To learn more about rig packages, consult the
[@rushstack/rig-package](https://www.npmjs.com/package/@rushstack/rig-package) documentation.

This rig contains a single profile: `default`

To enable it, add a **rig.json** file to your project, as shown below:

**config/rig.json**
```js
{
  "$schema": "https://developer.microsoft.com/json-schemas/rig-package/rig.schema.json",

  "rigPackageName": "@rushstack/heft-node-rig"
}
```

The config files provided by this rig profile can be found in the [heft-node-rig/profiles/default](
https://github.com/microsoft/rushstack/tree/main/rigs/heft-node-rig/profiles/default) source folder.


## Links

- [CHANGELOG.md](
  https://github.com/microsoft/rushstack/blob/main/rigs/heft-node-rig/CHANGELOG.md) - Find
  out what's new in the latest version

`@rushstack/heft-node-rig` is part of the [Rush Stack](https://rushstack.io/) family of projects.
npm package: @rushstack/heft-rspack-plugin
Description: Heft plugin for Rspack
Latest version: 0.3.13

# @rushstack/heft-rspack-plugin

This is a Heft plugin for using Rspack.

## Links

- [CHANGELOG.md](
  https://github.com/microsoft/rushstack/blob/main/heft-plugins/heft-rspack-plugin/CHANGELOG.md) - Find
  out what's new in the latest version
- [@rushstack/heft](https://www.npmjs.com/package/@rushstack/heft) - Heft is a config-driven toolchain that invokes popular tools such as TypeScript, ESLint, Jest, Webpack, and API Extractor.

Heft is part of the [Rush Stack](https://rushstack.io/) family of projects.
npm package: @rushstack/heft-sass-load-themed-styles-plugin
Description: Heft plugin that connects to heft-sass-plugin and replaces load-themed-styles theme expressions with standard CSS variables
Latest version: 1.2.14

# @rushstack/heft-sass-load-themed-styles-plugin

This is a Heft plugin to augment SASS processing with functionality to replace load-themed-styles theme expressions of the form
```
[theme:<tokenName>, default:<default>]
```
e.g.
```
[theme:someColor, default:#fc0]
```

With css variable references of the form:
```css
var(--<tokenName>, <default>)
```
e.g.
```css
var(--someColor, #fc0>)
```


## Links

- [CHANGELOG.md](
  https://github.com/microsoft/rushstack/blob/main/heft-plugins/heft-sass-load-themed-styles-plugin/CHANGELOG.md) - Find
  out what's new in the latest version

Heft is part of the [Rush Stack](https://rushstack.io/) family of projects.
npm package: @rushstack/heft-serverless-stack-plugin
Description: Heft plugin for building apps using the Serverless Stack (SST) framework
Latest version: 1.2.14

# @rushstack/heft-serverless-stack-plugin

This is a Heft plugin for building apps using the [Serverless Stack (SST)](https://serverless-stack.com/) framework.
With this approach, the [SST toolchain](https://docs.serverless-stack.com/packages/cli) is only used for
synthesizing CloudFormation stacks and deploying the app, and Heft takes over the role of compiling, linting,
testing your TypeScript project.

The plugin accepts two command-line parameters:

- `--sst` can be appended to `heft build` or `heft start`, causing the corresponding SST operation to be invoked

- `--sst-stage STAGE_NAME` allows you to customize the stage.  It is equivalent to the `--stage` parameter
  for the SST command-line tool.


The plugin has no effect without the `--sst` parameter.  When the parameter is provided:

- `heft build --sst` will behave similar to `sst build`, which synthesizes CloudFormation stacks
  in the `build/cdk.out/` directory.  See [this documentation](https://docs.serverless-stack.com/packages/cli#build)
  for details.  Heft's `--watch` mode is also supported.

- `heft start --sst` will behave similar to `sst start`, which deploys a
  [stub lambda](https://docs.serverless-stack.com/live-lambda-development#sst-start) to AWS
  and then launches the WebSocket client locally for debugging.  See
  [this documentation](https://docs.serverless-stack.com/packages/cli#start) for details.


> Note that `heft build --sst` currently requires AWS credentials, which limits the ability to perform this
> validation in a monorepo environment where we can't assume that every developer works on AWS.
> Issue [serverless-stack#1537](https://github.com/serverless-stack/serverless-stack/issues/1537)
> is tracking a possible improvement.
npm package: @rushstack/heft-storybook-plugin
Description: Heft plugin for supporting UI development using Storybook
Latest version: 1.4.6

# @rushstack/heft-storybook-plugin

This is a Heft plugin for using the [Storybook](https://storybook.js.org/) tool for developing and testing
UI components.

## Links

- [CHANGELOG.md](
  https://github.com/microsoft/rushstack/blob/main/heft-plugins/heft-storybook-plugin/CHANGELOG.md) - Find
  out what's new in the latest version
- [@rushstack/heft](https://www.npmjs.com/package/@rushstack/heft) - Heft is a config-driven toolchain that invokes popular tools such as TypeScript, ESLint, Jest, Webpack, and API Extractor.

Heft is part of the [Rush Stack](https://rushstack.io/) family of projects.
npm package: @rushstack/heft-typescript-plugin
Description: Heft plugin for TypeScript
Latest version: 1.3.7

# @rushstack/heft-typescript-plugin

This is a Heft plugin for compiling TypeScript.

## Links

- [CHANGELOG.md](
  https://github.com/microsoft/rushstack/blob/main/heft-plugins/heft-typescript-plugin/CHANGELOG.md) - Find
  out what's new in the latest version
- [@rushstack/heft](https://www.npmjs.com/package/@rushstack/heft) - Heft is a config-driven toolchain that invokes popular tools such as TypeScript, ESLint, Jest, Webpack, and API Extractor.

Heft is part of the [Rush Stack](https://rushstack.io/) family of projects.
npm package: @rushstack/heft-vscode-extension-plugin
Description: Heft plugin for building vscode extensions.
Latest version: 1.1.12

# @rushstack/heft-vscode-extension-plugin

This is a Heft plugin for packaging Visual Studio Code extensions using the `vsce` tool.

## Links

- [CHANGELOG.md](
  https://github.com/microsoft/rushstack/blob/main/heft-plugins/heft-vscode-extension-plugin/CHANGELOG.md) - Find
  out what's new in the latest version
- [@rushstack/heft](https://www.npmjs.com/package/@rushstack/heft) - Heft is a config-driven toolchain that invokes popular tools such as TypeScript, ESLint, Jest, Webpack, and API Extractor.

Heft is part of the [Rush Stack](https://rushstack.io/) family of projects.
npm package: @rushstack/heft-vscode-extension-rig
Description: A rig package for VSCode Extensions that build using Heft
Latest version: 1.1.35

## @rushstack/heft-vscode-extension-rig

A rig package for Node.js projects that build using [Heft](https://www.npmjs.com/package/@rushstack/heft)
build system.  To learn more about rig packages, consult the
[@rushstack/rig-package](https://www.npmjs.com/package/@rushstack/rig-package) documentation.

This rig contains a single profile: `default`

To enable it, add a **rig.json** file to your project, as shown below:

**config/rig.json**
```js
{
  "$schema": "https://developer.microsoft.com/json-schemas/rig-package/rig.schema.json",

  "rigPackageName": "@rushstack/heft-vscode-extension-rig"
}
```

The config files provided by this rig profile can be found in the [heft-vscode-extension-rig/profiles/default](
https://github.com/microsoft/rushstack/tree/main/rigs/heft-vscode-extension-rig/profiles/default) source folder.


## Links

- [CHANGELOG.md](
  https://github.com/microsoft/rushstack/blob/main/rigs/heft-vscode-extension-rig/CHANGELOG.md) - Find
  out what's new in the latest version

`@rushstack/heft-vscode-extension-rig` is part of the [Rush Stack](https://rushstack.io/) family of projects.
npm package: @rushstack/heft-web-rig
Description: A rig package for web browser projects that build using Heft
Latest version: 1.4.11

## @rushstack/heft-web-rig

A rig package for web projects that build using [Heft](https://www.npmjs.com/package/@rushstack/heft)
build system.  To learn more about rig packages, consult the
[@rushstack/rig-package](https://www.npmjs.com/package/@rushstack/rig-package) documentation.

This rig provides the following profiles:

- [app](./profiles/app/): For applications that get bundled using Webpack.
- [library](./profiles/library/): For creating library packages to be consumed by other web projects.  ***Also use this profile for a library meant to be used by both Node.js and web apps.***


To enable it, add a **rig.json** file to your project, as shown below:

**config/rig.json**
```js
{
  "$schema": "https://developer.microsoft.com/json-schemas/rig-package/rig.schema.json",

  "rigPackageName": "@rushstack/heft-web-rig",
  "rigProfile": "library"
}
```

The config files provided by this rig profile can be found in the [heft-web-rig/profiles/library](
https://github.com/microsoft/rushstack/tree/main/rigs/heft-web-rig/profiles/library) source folder.


## Links

- [CHANGELOG.md](
  https://github.com/microsoft/rushstack/blob/main/rigs/heft-web-rig/CHANGELOG.md) - Find
  out what's new in the latest version

`@rushstack/heft-web-rig` is part of the [Rush Stack](https://rushstack.io/) family of projects.
npm package: @rushstack/heft-webpack4-plugin
Description: Heft plugin for Webpack 4
Latest version: 1.2.13

# @rushstack/heft-webpack4-plugin

This is a Heft plugin for using Webpack 4.

## Links

- [CHANGELOG.md](
  https://github.com/microsoft/rushstack/blob/main/heft-plugins/heft-webpack4-plugin/CHANGELOG.md) - Find
  out what's new in the latest version
- [@rushstack/heft](https://www.npmjs.com/package/@rushstack/heft) - Heft is a config-driven toolchain that invokes popular tools such as TypeScript, ESLint, Jest, Webpack, and API Extractor.

Heft is part of the [Rush Stack](https://rushstack.io/) family of projects.
npm package: @rushstack/heft-webpack5-plugin
Description: Heft plugin for Webpack 5
Latest version: 1.3.13

# @rushstack/heft-webpack5-plugin

This is a Heft plugin for using Webpack 5.

## Links

- [CHANGELOG.md](
  https://github.com/microsoft/rushstack/blob/main/heft-plugins/heft-webpack5-plugin/CHANGELOG.md) - Find
  out what's new in the latest version
- [@rushstack/heft](https://www.npmjs.com/package/@rushstack/heft) - Heft is a config-driven toolchain that invokes popular tools such as TypeScript, ESLint, Jest, Webpack, and API Extractor.

Heft is part of the [Rush Stack](https://rushstack.io/) family of projects.
npm package: @rushstack/loader-raw-script
Description: `npm install @rushstack/loader-raw-script --save-dev`
Latest version: 1.6.12

# @rushstack/loader-raw-script

## Installation

`npm install @rushstack/loader-raw-script --save-dev`

## Overview

This simple Webpack loader loads a script file's contents directly in a webpack bundle using an `eval(...)`.

## Usage

[Documentation: Using loaders](http://webpack.github.io/docs/using-loaders.html)

``` javascript
require("@rushstack/loader-raw-script!path/to/script.js");
```

## Links

- [CHANGELOG.md](
  https://github.com/microsoft/rushstack/blob/main/webpack/loader-raw-script/CHANGELOG.md) - Find
  out what's new in the latest version

`@rushstack/loader-raw-script` is part of the [Rush Stack](https://rushstack.io/) family of projects.
npm package: @rushstack/localization-plugin
Description: @rushstack/localization-plugin has been renamed to @rushstack/webpack4-localization-plugin.
Latest version: 0.15.0

# @rushstack/localization-plugin

> Please use [@rushstack/webpack4-localization-plugin](https://www.npmjs.com/package/@rushstack/webpack4-localization-plugin) instead of this package.

IMPORTANT: This package has been renamed to @rushstack/webpack4-localization-plugin.

> OLD NAME: @rushstack/localization-plugin (0.14.4)
>
> NEW NAME: @rushstack/webpack4-localization-plugin (0.14.5)

The new package's CHANGELOG.md preserves version history from before the rename.

The new package starts with a SemVer PATCH increment, since no code has changed.

To learn about the Rush Stack project, please visit https://rushstack.io/
npm package: @rushstack/lookup-by-path
Description: Strongly typed trie data structure for path and URL-like strings.
Latest version: 0.10.1

# @rushstack/lookup-by-path

This library contains a strongly-typed implementation of of a [Trie](https://en.wikipedia.org/wiki/Trie) (a.k.a. prefix tree) data structure optimized for file paths and URLs.

This package is used by Rush to associate Git hashes with their nearest ancestor Rush project, for example.

## Links

- [CHANGELOG.md](
  https://github.com/microsoft/rushstack/blob/main/libraries/lookup-by-path/CHANGELOG.md) - Find
  out what's new in the latest version
- [API Reference](https://api.rushstack.io/pages/lookup-by-path/)

`@rushstack/lookup-by-path` is part of the [Rush Stack](https://rushstack.io/) family of projects.
npm package: @rushstack/mcp-server
Description: A Model Context Protocol server implementation for Rush
Latest version: 0.4.12

# @rushstack/mcp-server

With the rapid advancement of LLMs, AI applications like Trae, Cursor, Cline, Windsurf, and others have been thriving. However, due to the large scale of monorepos and the context limitations of LLMs, it’s difficult for these models to fully understand your monorepo. This is where @rushstack/mcp-server comes in — by providing a suite of MCP tools, it enables LLMs to better comprehend your monorepo and assist you more effectively with daily development tasks in a Rush-based monorepo environment.

## Usage

1. To get the best results, copy the [.cursor](https://github.com/microsoft/rushstack/tree/main/.cursor) directory into the root of your project.

2. Configure `@rushstack/mcp-server` in your AI application

```
{
  "mcpServers": {
    "rush": {
      "command": "npx",
      "args": ["-y", "@rushstack/mcp-server", "your-project-path"]
    }
  }
}
```

3. Congratulations 🎉 You’ve completed the setup — Rush MCP is now ready to use!

## Available Tools

- `rush_docs`: Retrieves relevant documentation sections based on your queries
- `rush_workspace_details`: Retrieve detailed workspace information
- `rush_project_details`: Get detailed information about a specific project
- `rush_command_validator`: Validate whether commands are compliant and follow best practices
- `rush_migrate_project`: Migrate a project from one directory to another or into a different subspace
- `rush_pnpm_lock_file_conflict_resolver`: Resolve pnpm-lock.yaml conflicts

## Links

- [CHANGELOG.md](
  https://github.com/microsoft/rushstack/blob/main/apps/rush-mcp-server/CHANGELOG.md) - Find
  out what's new in the latest version
npm package: @rushstack/module-minifier
Description: Wrapper for terser to support bulk parallel minification.
Latest version: 0.9.14

# @rushstack/module-minifier

This library wraps terser in convenient handles for parallelization. It powers @rushstack/webpack4-module-minifier-plugin and @rushstack/webpack5-module-minifier-plugin but has no coupling with webpack.

## Links

- [CHANGELOG.md](
  https://github.com/microsoft/rushstack/blob/main/libraries/module-minifier/CHANGELOG.md) - Find
  out what's new in the latest version
- [API Reference](https://api.rushstack.io/pages/module-minifier/)

`@rushstack/module-minifier` is part of the [Rush Stack](https://rushstack.io/) family of projects.
npm package: @rushstack/module-minifier-plugin
Description: @rushstack/module-minifier-plugin has been renamed to @rushstack/webpack4-module-minifier-plugin.
Latest version: 0.10.0

# @rushstack/module-minifier-plugin

> Please use [@rushstack/webpack4-module-minifier-plugin](https://www.npmjs.com/package/@rushstack/webpack4-module-minifier-plugin) instead of this package.

IMPORTANT: This package has been renamed to @rushstack/webpack4-module-minifier-plugin.

>  OLD NAME: @rushstack/module-minifier-plugin (0.9.3)
>
>  NEW NAME: @rushstack/webpack4-module-minifier-plugin (0.9.4)

The new package's CHANGELOG.md preserves version history from before the rename.

The new package starts with a SemVer PATCH increment, since no code has changed.

To learn about the Rush Stack project, please visit https://rushstack.io/
npm package: @rushstack/node-core-library
Description: Core libraries that every NodeJS toolchain project should use
Latest version: 5.22.0

# @rushstack/node-core-library

This library provides a conservative set of "core" NodeJS utilities whose
purpose is to standardize how we solve common problems across our tooling
projects.  In order to be considered "core", the class must meet ALL of
these criteria:

- small and self-contained (i.e. quick to install)

- solves a ubiquitous problem (i.e. having one standardized approach is better
  than allowing each developer to use their favorite library)

- broad enough applicability to justify imposing it as a dependency for
  nearly every NodeJS project

- code is design reviewed, API approved, and documented

Examples of "core" functionality that meets this criteria:

- basic file/folder manipulation
- JSON file loader/saver/validator
- package.json parser
- build performance timers
- executing shell commands

This package is NOT intended to be a dumping ground for arbitrary utilities
that seem like they might be useful.  Code should start somewhere else, and
then graduate to **node-core-library** after its value has already been
demonstrated.  If in doubt, create your own NPM package.

## Links

- [CHANGELOG.md](
  https://github.com/microsoft/rushstack/blob/main/libraries/node-core-library/CHANGELOG.md) - Find
  out what's new in the latest version
- [API Reference](https://api.rushstack.io/pages/node-core-library/)

`@rushstack/node-core-library` is part of the [Rush Stack](https://rushstack.io/) family of projects.
npm package: @rushstack/npm-check-fork
Description: A fork of npm-check.
Latest version: 0.2.12

# @rushstack/npm-check-fork

This package is a temporary rushstack maintained fork of [`npm-check`](https://github.com/dylang/npm-check), used internally by `rush upgrade-interactive`. It exists to address security vulnerabilities and compatibility issues present in the latest upstream version.

**Origin:**
- Forked from [`npm-check`](https://github.com/dylang/npm-check)
- Original copyright:
  ```
  Copyright (c) 2015 Dylan Greene
  Licensed under the MIT license.
  ```

**Purpose:**
This fork is expected to be temporary and will be removed once upstream issues are resolved.

## Changes from Upstream

- **Removed unused state properties:**
  Properties from the state object that were never set or used have been removed (see `INpmCheckState`).
- **Removed `peerDependencies` from `INpmCheckPackageSummary`:**
  This property was deprecated in `npm-check` and was never set.
- **Removed emoji support:**
  Emoji output was never used in rushstack/rush-lib and has been stripped out.
- **Downgraded `path-exists` dependency:**
  The latest version of `path-exists` is ESM-only; this fork uses a compatible CommonJS version.
- **Removed `semverDiff` dependency:**
  This was deprecated and its functionality has been replaced by direct usage of `semver`.

## License

This fork retains the original MIT license from `npm-check`.
npm package: @rushstack/operation-graph
Description: Library for managing and executing operations in a directed acyclic graph.
Latest version: 0.6.5

# @rushstack/operation-graph

This library contains logic for managing and executing tasks in a directed acyclic graph. It supports single execution or executing in a loop.

## Links

- [CHANGELOG.md](
  https://github.com/microsoft/rushstack/blob/main/libraries/operation-graph/CHANGELOG.md) - Find
  out what's new in the latest version
- [API Reference](https://api.rushstack.io/pages/operation-graph/)

`@rushstack/operation-graph` is part of the [Rush Stack](https://rushstack.io/) family of projects.
npm package: @rushstack/package-deps-hash
Description: The `package-deps-hash` library generates a JSON object containing the git hashes of all files used to produce a given package.  This is useful for scenarios where you want to define a "change receipt" file to be published with a package.  The [Rush](http
Latest version: 4.7.12

# @rushstack/package-deps-hash

The `package-deps-hash` library generates a JSON object containing the git hashes of all files used to produce
a given package.  This is useful for scenarios where you want to define a "change receipt" file to be published
with a package.  The [Rush](https://rushjs.io/) tool uses this library to implement incremental build detection.

Only files in a git repo that are not in .gitignore will be considered in building the hash.  The file content and
the current state of the package can be compared then to determine whether the package needs to be rebuilt.

Internally it uses the GIT hashes to derive the hashes for package content. This allows the process to leverage Git's
hash optimizations, as opposed to creating a more elaborate diffing scheme.

NOTE: Git is required to be accessible in the command line path.

## Usage

```ts
let _ = require('lodash');
let { getPackageDeps } = require('@rushstack/package-deps-hash');

// Gets the current deps object for the current working directory
let deps = getPackageDeps();
let existingDeps = JSON.parse(fs.readFileSync('package-deps.json'));

if (_.isEqual(deps, existingDeps)) {
  // Skip re-building package.
} else {
  // Rebuild package.
}
```

## Links

- [CHANGELOG.md](
  https://github.com/microsoft/rushstack/blob/main/libraries/package-deps-hash/CHANGELOG.md) - Find
  out what's new in the latest version
- [API Reference](https://api.rushstack.io/pages/package-deps-hash/)

`@rushstack/package-deps-hash` is part of the [Rush Stack](https://rushstack.io/) family of projects.
npm package: @rushstack/package-extractor
Description: A library for bundling selected files and dependencies into a deployable package.
Latest version: 0.12.15

## @rushstack/package-extractor

A library used for creating an isolated copy of a package and, optionally, bundling it into an archive.

## Links

- [CHANGELOG.md](
  https://github.com/microsoft/rushstack/blob/main/libraries/deploy-manager/CHANGELOG.md) - Find
  out what's new in the latest version
- [API Reference](https://api.rushstack.io/pages/deploy-manager/)

`@rushstack/package-extractor` is part of the [Rush Stack](https://rushstack.io/) family of projects.
npm package: @rushstack/problem-matcher
Description: A library for parsing VS Code style problem matchers
Latest version: 0.2.1

# @rushstack/problem-matcher

Parse VS Code style problem matcher definitions and extract structured problem reports (errors, warnings, info) from strings.

## Links

- [CHANGELOG.md](
  https://github.com/microsoft/rushstack/blob/main/libraries/problem-matcher/CHANGELOG.md) - Find
  out what's new in the latest version
- [API Reference](https://api.rushstack.io/pages/problem-matcher/)

`@rushstack/problem-matcher` is part of the [Rush Stack](https://rushstack.io/) family of projects.
npm package: @rushstack/rush-amazon-s3-build-cache-plugin
Description: Rush plugin for Amazon S3 cloud build cache
Latest version: 5.173.0

# @rushstack/rush-amazon-s3-build-cache-plugin

This is a Rush plugin for using Amazon S3 as cloud build cache provider during the "build" and "rebuild" command.

## Links

- [CHANGELOG.md](
  https://github.com/microsoft/rushstack/blob/main/rush-plugins/rush-amazon-s3-build-cache-plugin/CHANGELOG.md) - Find
  out what's new in the latest version
npm package: @rushstack/rush-azure-storage-build-cache-plugin
Description: Rush plugin for Azure storage cloud build cache
Latest version: 5.173.0

# @rushstack/rush-azure-storage-build-cache-plugin

Rush plugin for Azure storage cloud build cache.

## Links

- [CHANGELOG.md](
  https://github.com/microsoft/rushstack/blob/main/rush-plugins/rush-azure-storage-build-cache-plugin/CHANGELOG.md) - Find
  out what's new in the latest version
npm package: @rushstack/rush-buildxl-graph-plugin
Description: Rush plugin for generating a BuildXL graph.
Latest version: 5.173.0

# @rushstack/rush-buildxl-graph-plugin

Rush plugin for generating a BuildXL graph.

## Links

- [CHANGELOG.md](
  https://github.com/microsoft/rushstack/blob/main/rush-plugins/rush-buildxl-graph-plugin/CHANGELOG.md) - Find
  out what's new in the latest version
npm package: @rushstack/rush-pnpm-kit-v10
Description: rush pnpm kit v10
Latest version: 0.2.13

## @microsoft/rush-pnpm-kit-v10

This is a companion package for the Rush tool.  See the
[@microsoft/rush](https://www.npmjs.com/package/@microsoft/rush)
package for details.

## Links

- [CHANGELOG.md](
  https://github.com/microsoft/rushstack/blob/main/libraries/rush-pnpm-kit-v10/CHANGELOG.md) - Find
  out what's new in the latest version
- [API Reference](https://api.rushstack.io/pages/rush-lib/)

Rush is part of the [Rush Stack](https://rushstack.io/) family of projects.
npm package: @rushstack/rush-pnpm-kit-v8
Description: rush pnpm kit v8
Latest version: 0.2.13

## @microsoft/rush-pnpm-kit-v8

This is a companion package for the Rush tool.  See the
[@microsoft/rush](https://www.npmjs.com/package/@microsoft/rush)
package for details.

## Links

- [CHANGELOG.md](
  https://github.com/microsoft/rushstack/blob/main/libraries/rush-pnpm-kit-v8/CHANGELOG.md) - Find
  out what's new in the latest version
- [API Reference](https://api.rushstack.io/pages/rush-lib/)

Rush is part of the [Rush Stack](https://rushstack.io/) family of projects.
npm package: @rushstack/rush-pnpm-kit-v9
Description: rush pnpm kit v9
Latest version: 0.2.13

## @microsoft/rush-pnpm-kit-v9

This is a companion package for the Rush tool.  See the
[@microsoft/rush](https://www.npmjs.com/package/@microsoft/rush)
package for details.

## Links

- [CHANGELOG.md](
  https://github.com/microsoft/rushstack/blob/main/libraries/rush-pnpm-kit-v9/CHANGELOG.md) - Find
  out what's new in the latest version
- [API Reference](https://api.rushstack.io/pages/rush-lib/)

Rush is part of the [Rush Stack](https://rushstack.io/) family of projects.
npm package: @rushstack/rush-published-versions-json-plugin
Description: A Rush plugin for generating a JSON file containing the versions of all published packages in the monorepo.
Latest version: 0.1.5

# @rushstack/rush-published-versions-json-plugin

A Rush plugin that generates a JSON file recording the version numbers of all published packages in a Rush monorepo.

## Installation

1. Add the plugin package to an autoinstaller (e.g. `common/autoinstallers/rush-plugins/package.json`):

   ```
   rush init-autoinstaller --name rush-plugins
   ```

   ```bash
   cd common/autoinstallers/rush-plugins
   pnpm add @rushstack/rush-published-versions-json-plugin
   rush update-autoinstaller --name rush-plugins
   ```

2. Register the plugin in `common/config/rush/rush-plugins.json`:

   ```json
   {
     "$schema": "https://developer.microsoft.com/json-schemas/rush/v5/rush-plugins.schema.json",
     "plugins": [
       {
         "packageName": "@rushstack/rush-published-versions-json-plugin",
         "pluginName": "rush-published-versions-json-plugin",
         "autoinstallerName": "rush-plugins"
       }
     ]
   }
   ```

3. Run `rush update` to install the plugin.

## Usage

```bash
rush record-published-versions --output-path <FILE_PATH>
```

### Parameters

| Parameter | Short | Required | Description |
| --- | --- | --- | --- |
| `--output-path` | `-o` | Yes | The path to the output JSON file. Relative paths are resolved from the repo root. |

### Example

```bash
rush record-published-versions --output-path common/config/published-versions.json
```

### Output format

The output is a JSON object mapping published package names to their current versions:

```json
{
  "@my-scope/my-library": "1.2.3",
  "@my-scope/my-app": "0.5.0"
}
```

A package is included if it has `shouldPublish` set to `true` or has a `versionPolicy` assigned in
**rush.json**.

## Links

- [CHANGELOG.md](./CHANGELOG.md)
- [Rush: Using rush plugins](https://rushjs.io/pages/maintainer/using_rush_plugins/)
npm package: @rushstack/rush-redis-cobuild-plugin
Description: Rush plugin for Redis cobuild lock
Latest version: 5.173.0

# @rushstack/rush-redis-cobuild-plugin

This is a Rush plugin for using Redis as cobuild lock provider during the "build"

## Links

- [CHANGELOG.md](
  https://github.com/microsoft/rushstack/blob/main/rush-plugins/rush-redis-cobuild-plugin/CHANGELOG.md) - Find
  out what's new in the latest version
npm package: @rushstack/rush-resolver-cache-plugin
Description: A Rush plugin that generates a resolver cache file after successful install.
Latest version: 5.173.0

# @rushstack/rush-resolver-cache-plugin

A Rush plugin that runs after successful dependency installation and generates a cache file to optimize node module resolution.

When this plugin is installed, it will produce a file called `resolver-cache.json` in the temp directory of the default subspace, e.g. `<repo>/common/temp/default/resolver-cache.json`

To use this file, load it, call JSON.parse, and pass the result as the `cacheData` property to the `WorkspaceLayoutCache` constructor from `@rushstack/webpack-workspace-resolve-plugin`.
npm package: @rushstack/rush-serve-plugin
Description: A Rush plugin that hooks into a rush action and serves output folders from all projects in the repository.
Latest version: 5.173.0

# @rushstack/rush-serve-plugin

A Rush plugin that hooks into action execution and runs an express server to serve project outputs. Meant for use with watch-mode commands.

Supports HTTP/2, compression, CORS, and the new Access-Control-Allow-Private-Network header.

```
# The user invokes this command
$ rush start
```

What happens:
- Rush scans for riggable `rush-serve.json` config files in all projects
- Rush uses the configuration in the aforementioned files to configure an Express server to serve project outputs as static (but not cached) content
- When a change happens to a source file, Rush's normal watch-mode machinery will rebuild all affected project phases, resulting in new files on disk
- The next time one of these files is requested, Rush will serve the new version. Optionally, may support signals for automatic refresh.

## Live Build Status via Web Socket

This plugin also provides a web socket server that notifies clients of the build status in real time. To use the server, configure the `buildStatusWebSocketPath` option in `common/config/rush-plugins/rush-serve-plugin.json`. Specifying `/` will make the web socket server available at `wss://localhost:<port>/`.

The recommended way to connect to the web socket is to serve a static HTML page from the serve plugin using the `globalRouting` configuration.

To use the socket:
```ts
import type {
  IWebSocketEventMessage,
  IOperationInfo,
  IRushSessionInfo,
  ReadableOperationStatus
} from '@rushstack/rush-serve-plugin/api';

const socket: WebSocket = new WebSocket(`wss://${self.location.host}${buildStatusWebSocketPath}`);

const operationsByName: Map<string, IOperationInfo> = new Map();
let buildStatus: ReadableOperationStatus = 'Ready';

function updateOperations(operations): void {
  for (const operation of operations) {
    operationsByName.set(operation.name, operation);
  }

  for (const [operationName, operation] of operationsByName) {
    // Do something with the operation
  }
}

function updateSessionInfo(sessionInfo: IRushSessionInfo): void {
  const { actionName, repositoryIdentifier } = sessionInfo;
}

function updateBuildStatus(newStatus: ReadableOperationStatus): void {
  buildStatus = newStatus;
  // Render
}

socket.addEventListener('message', (ev) => {
  const message: IWebSocketEventMessage = JSON.parse(ev.data);

  switch (message.event) {
    case 'before-execute': {
      const { operations } = message;
      updateOperations(operations);
      updateBuildStatus('Executing');
      break;
    }

    case 'status-change': {
      const { operations } = message;
      updateOperations(operations);
      break;
    }

    case 'after-execute': {
      const { status } = message;
      updateBuildStatus(status);
      break;
    }

    case 'sync': {
      operationsByName.clear();
      const { operations, status, sessionInfo } = message;
      updateOperations(operations);
      updateSessionInfo(sessionInfo);
      updateBuildStatus(status);
      break;
    }
  }
});
```