open-index/open-npm huggingface dataset:
npm package: @loccnp/dnd-multi-view
Description: Display drag-n-drop dataset in multiple views
Author: Loc Nguyen
Latest version: 0.0.17

<h1 align="center">dnd-multi-view <small><sup>(dmv)</sup></small></h1>

<div align="center">

**Strongly customization** and **Beautiful** drag and drop context auto-generated into `KANBAN` or `List` view

</div>

# Guides

**Basic Drag-and-Drop Context**

![diagram](https://user-images.githubusercontent.com/2182637/53607406-c8f3a780-3c12-11e9-979c-7f3b5bd1bfbd.gif)

## Usage

---

This is the minimal/default configuration, with the only-required prop is `list` data. Checkout out the API below for more configuration.

```
import { DndMultiView } from '...dnd-multi-view';

const App = () => {
    return (
        <DndMultiView
            list={data}
            kanbanBoardProps={}
            listViewProps={}
            defaultView="kanban"
            grid={8}
        />
    );
}
```

## API

---

## `<DndMultiView>`

---

### Interface: `DndMultiViewProps`

-   `list` **(required)**: (Array) data is: array of list data, each list have props (required `id`, `title`) and list of items as prop `items` (also required `id`). Here is an example:

```
const data = [
    {
        id: 'column-1',
        title: 'To do',
        items: [
            {
                id: 'task-1',
                content: 'Take out the gabrgabe',
                ...
            },
            ...
        ],
        ...
    },
    ...
]

```

-   `grid` **(optional)**: (Number) basic spacing unit in `padding` or `margin` between lists and items

-   `defaultView` **(optional)**: (`'kanban' | 'list'`) default view type in first render

-   `Toolbar` **(optional)**: (Function) custom Toolbar, props contain
    `setViewType(type)`

-   `kanbanBoarProps` **(optional)**:

    -   Customize style of `column`, `title`, `title-container`, `item-container`, `dragging/draggingOver` states
    -   `draggableColumn`: enable/disable draggable columns
    -   `CustomToggleButton`: custom toggle button with props: list `index`, `collapse` - current collapse state, `toggleCollapse(listIndex)`
    -   `CustomItem`: custom item component with props: `item` data, item `index`, `snapshot` state
    -   `CustomAddItem`: custom add-item component with props: `item` data, item `index`, `snapshot` state

-   `listViewProps` **(optional)**:
    -   Customize style of `list`, `title`, `title-container`, `item-container`, `dragging/draggingOver` states, we don't allow custom item style because item is complex, depend on user requirement, so you should use a `CustomRowItem` component along with your styling
    -   `disableToggle`: disable toggle item list view function
    -   `CustomToggleButton`: custom toggle button with props: list `index`, `collapse` - current collapse state, `toggleCollapse(listIndex)`
    -   `CustomRowItem`: custom item component with props: `lane` - whole list data, `laneIndex`, `item` data, item `index`, `snapshot` state, `dragHandleProps` - pass all props to make an element can handle drag event
    -   `CustomHeadingRowItem`: custom heading-item component with props: `lane` - list data and `laneIndex`
npm package: @loci-vault/sdk
Description: Official TypeScript SDK for the Loci API
Latest version: 1.0.1

# @loci-vault/sdk

Official TypeScript/JavaScript SDK for the Loci API.

## Installation

```bash
npm install @loci-vault/sdk
```

## Quick Start

```typescript
import { LociClient } from "@loci-vault/sdk";

const loci = new LociClient({ apiKey: "your-api-key" });

// List documents
const docs = await loci.documents.list({ limit: 20, tags: ["contract"] });
console.log(docs.documents);

// RAG query
const answer = await loci.query.ask("When does my lease expire?");
console.log(answer.answer);
console.log(answer.sources);

// Account info
const account = await loci.account.get();
console.log(`Plan: ${account.plan_tier}`);
```

## Configuration

```typescript
const loci = new LociClient({
  apiKey: "your-api-key",
  baseUrl: "https://api.locivault.com", // optional, this is the default
});
```

## Documents

```typescript
// List with filters
const result = await loci.documents.list({
  q: "lease agreement",
  fileType: "pdf",
  dateFrom: "2026-01-01",
  dateTo: "2026-12-31",
  tags: ["legal"],
  limit: 10,
  offset: 0,
});
```

## Query

```typescript
// Simple query
const answer = await loci.query.ask("What are the payment terms?");

// Team-scoped query
const teamAnswer = await loci.query.ask("Q4 revenue projections", {
  teamId: "team-uuid",
});

// Continue a conversation thread
const followUp = await loci.query.ask("Can you elaborate?", {
  threadId: "thread-uuid",
});
```

## Webhooks

```typescript
// List webhooks
const hooks = await loci.webhooks.list();

// Create a webhook
const created = await loci.webhooks.create({
  url: "https://example.com/webhook",
  events: ["document.processed", "query.completed"],
});

// Test a webhook
const test = await loci.webhooks.test(created.webhook.id);
console.log(`Status: ${test.responseCode}, Latency: ${test.latencyMs}ms`);

// Delete a webhook
await loci.webhooks.delete(created.webhook.id);
```

## Error Handling

```typescript
import { LociClient, LociApiError } from "@loci-vault/sdk";

try {
  const docs = await loci.documents.list();
} catch (err) {
  if (err instanceof LociApiError) {
    console.error(`API error ${err.statusCode}: ${err.message}`);
    console.error("Response body:", err.body);
  }
}
```

## Type Regeneration

Types are generated from the OpenAPI spec. To regenerate after spec changes:

```bash
npm run generate
```
npm package: @locimation/mtool
Description: Multicast debugging tool
Author: Michael Goodyear
Latest version: 1.0.0

# MTool

Very simple command-line utility for debugging multicast protocols.

**Installation**

```npm i -g @locimation/mtool```

**Example usage:**

```mtool -a 192.168.0.40 -m 224.0.1.129 -p 319 -h```

**Arguments:**
 - **-a** or **--ip** - the IP address of the local computer on the relevant network interface
 - **-m** or **--maddr** - the multicast address of the traffic you wish to receive
 - **-p** or **--port** - the UDP port number of the traffic you wish to receive
 - **-h** or **--hex** (optional) - print received packets in hexadecimal
npm package: @lock-in-lab/walnut-mcp
Description: MCP server for walnut structured context — read, save, and manage walnuts from any MCP client
Author: Lock-in Lab
Latest version: 0.1.1

# walnut-mcp

MCP server for walnut structured context. Read, save, and manage project context from any MCP-compatible AI agent.

## Install

```
npx @lock-in-lab/walnut-mcp ~/world
```

Pass your world directory as the first argument. Defaults to `~/world` if omitted. Can also be set via `WALNUT_WORLD_PATH` env var.

## Tools

| Tool | Description |
|------|-------------|
| `walnut_read` | Read a walnut's brief pack (key, now, tasks, insights, log, capsules) |
| `walnut_list` | List all walnuts in the world with domain, goal, phase, and health |
| `walnut_save` | Save progress: prepend log entry, update state, manage tasks |
| `walnut_capture` | Capture content into a capsule or the world's Inputs folder |
| `walnut_create` | Create a new walnut with full directory structure and core files |

## Configuration

### Hermes Agent

Add to `~/.hermes/config.yaml`:

```yaml
mcp_servers:
  walnut:
    command: npx
    args:
      - -y
      - "@lock-in-lab/walnut-mcp"
      - ~/world
```

### Claude Desktop

Add to `~/.config/Claude/claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "walnut": {
      "command": "npx",
      "args": ["-y", "@lock-in-lab/walnut-mcp", "~/world"]
    }
  }
}
```

### Cursor / Windsurf

Add `@lock-in-lab/walnut-mcp` to your MCP server settings with `~/world` as the argument.

## What is a walnut?

A walnut is a self-contained unit of context — a project, person, or life area — with identity, state, history, tasks, and knowledge. Plain markdown files on your machine. Any AI model can read them.

Learn more at [walnut.world](https://walnut.world).

## License

MIT

## Hermes Skill (behavioral layer)

The MCP tools give your agent the ability to manage walnuts. The skill tells it when and how.

Copy to your Hermes skills directory:

```bash
cp -r node_modules/@lock-in-lab/walnut-mcp/skills/walnuts ~/.hermes/skills/
```

Or clone directly:

```bash
git clone https://github.com/stackwalnuts/walnut-mcp.git /tmp/walnut-mcp
cp -r /tmp/walnut-mcp/skills/walnuts ~/.hermes/skills/
```

The skill covers: read-before-speaking, decision stashing, save protocol, cron integration, capture routing, and visual conventions.

---

Built by [Lock-in Lab](https://nslockin.com).
npm package: @lock-sdk/main
Description: Complete security framework for Lock with all modules
Author: Lock team
Latest version: 1.3.0

# 🔒 Lock Middleware

The entry point of the **Lock Security Framework**. The `secure()` function is a flexible middleware initializer that allows you to combine and orchestrate multiple security modules in one unified pipeline.

## 🚀 Features

- 🔌 Plug and play any Lock modules: Rate limiters, IP filters, CSRF, bot detectors, etc.
- 🧩 Composable: Add multiple layered protections in one line
- ✅ Compatible with Express, Next.js framework
- 📦 Zero-config defaults for rapid prototyping

## 🛠 Usage

### Basic Setup with a Single Module

```typescript
import { secure, ipFilter } from '@lock-sdk/main';

const lockMiddleware = secure()(
  ipFilter({
    ipAddresses: ['178.238.11.6'],
    storage: 'redis',
    redis: {
      host: 'your-redis-host',
      port: 6379,
      username: 'default',
      password: 'your-password',
      keyPrefix: 'ipfilter:',
    },
  })
);
```

### Example with Multiple Modules

```typescript
import { secure, csrfProtection, rateLimit, geoBlock, botDetector } from '@lock-sdk/main';

const lockMiddleware = secure()(
  rateLimit({
    limit: 100,
    windowMs: 60000,
  }),
  csrfProtection({
    tokenLocation: 'cookie-header',
    doubleSubmit: true,
  }),
  geoBlock({
    mode: 'blacklist',
    countries: ['RU', 'CN'],
  }),
  botDetector({
    captchaRedirectUrl: '/verify-human',
  })
);
```

## 🔃 Composition Pattern

The `secure()` function returns a **curried middleware combinator**:

```typescript
secure()(module1, module2, module3, ...)
```

Each module runs **in sequence**, and the request halts immediately on the first failure (e.g. CSRF fail, IP block, DDoS spike, etc.).

## 🛡 Maintained By

**Lock Team**
npm package: @lock-sdk/next-adapter
Description: Nextjs adapter module for lock.dev security framework
Author: Lock team
Latest version: 1.0.0

# ⚙️ Lock Next.js Adapter

A powerful integration layer that brings **Lock security modules** to **Next.js** — including API routes, App Router handlers, and Server Actions. Protect your endpoints with rate limiting, CSRF, IP filtering, and more — all seamlessly integrated into your Next.js app.

## 📦 Installation

```bash
npm install @lock-sdk/next-adapter # or yarn add @lock-sdk/next-adapter
```

## 🚀 Features

- ✅ Works with **Pages Router** and **App Router**
- 🔐 Supports **Server Actions** with automatic token/header propagation
- 🧩 Full compatibility with any `secure()`-compliant Lock modules
- 📦 Tiny, framework-native, zero-dependency layer

## 🧠 Usage

### 🗂 Pages Router API Example

```typescript
// pages/api/secure.ts
import { securePageRoute } from '@lock-sdk/next-adapter';
import { csrfProtection, rateLimit } from '@lock-sdk/main';

const handler = (req, res) => {
  res.status(200).json({ message: 'Secure API route' });
};

export default securePageRoute(handler)(
  rateLimit({ limit: 50, windowMs: 60000 }),
  csrfProtection()
);
```

### 📦 App Router API Example

```typescript
// app/api/secure/route.ts
import { NextResponse } from 'next/server';
import { secureAppRoute } from '@lock-sdk/next-adapter';
import { botDetector } from '@lock-sdk/main';

const handler = async (req: Request) => {
  return NextResponse.json({ message: 'Secure App Router' });
};

export const GET = secureAppRoute(handler)(botDetector());
```

### 🧬 Server Action Example

```typescript
'use server';

import { secureServerAction } from '@lock-sdk/next-adapter';
import { csrfProtection } from '@lock-sdk/main';

const submitForm = async (formData: FormData) => {
  // Handle your form logic here
  return { success: true };
};

export const protectedSubmit = secureServerAction(submitForm)(csrfProtection());
```

🧠 **Note:** CSRF tokens must be injected in your form as `csrf-token` or `csrfToken` and `$REQUEST_HEADERS` (stringified `headers`) must also be included for secure server actions.

## 🔌 API Reference

`securePageRoute(handler)(...modules)`  
Wraps a `NextApiHandler` (Pages Router) with Lock security modules.

`secureAppRoute(handler)(...modules)`  
Wraps an `App Router` request handler with Lock security modules.

`secureServerAction(fn)(...modules)`  
Wraps a Server Action (`'use server'` function) and protects it using Lock modules.

## 🔁 Failure Behavior

If a security check fails:

- ✅ `securePageRoute` sends JSON error response.
- ✅ `secureAppRoute` returns a `Response` object with error and appropriate status.
- ✅ `secureServerAction` throws an `Error` that can be caught by the frontend.

## 🛡 Maintained By

**Lock Team**
npm package: @locka/components
Description: Web component library for locka.com
Latest version: 0.3.0

# Locka Web Components

Extend Lockas platform with better interaction models for embed.

## Mobile Embed

This webcomponent will expand to fit its parent container but if the container is to small, it will use a custom implemented dialog to take over the full screen.

```html
<html>
  <head>
    <!-- Loads lockas minimal web components so you can use them in your code -->
    <script type="module" src="https://cdn.jsdelivr.net/npm/@locka/components@latest/+esm"></script>
  </head>

  <locka-mobile-embed src="https://embed.locka.com/demo/demo/image"></locka-mobile-embed>
</html>
```
npm package: @locker-money/sdk
Description: A utility library for enhancing your ERC-4337 experience
Author: Locker
Latest version: 0.0.1-alpha.2

## Getting Started
```zsh
pnpm add @locker-money/sdk
```

## Usage
```ts
import { createLockerClient } from "@locker-money/sdk";

const message = createLockerClient()
console.log(message)
```

## Development
```zsh
# Install dependencies  
pnpm install

# Build the package
pnpm build

# Publish the package
pnpm publish --access public
```
npm package: @locker/near-membrane-dom
Description: DOM membrane library to create sandboxed environments in the browser
Author: Caridy Patiño
Latest version: 0.15.0

# JavaScript DOM Membrane Library

JavaScript DOM Membrane Library to create a sandboxed environment in the browser.

## Warning

This library does not provide inherent security mechanisms because its primary design goal is to facilitate communication between two JavaScript realms (Incubator and Child) within the same process, rather than to enforce security policies.

1. **Design Intent:** The library implements a "near membrane" to connect two realms, allowing code in the Child Realm to emulate the capabilities of the Incubator Realm. This setup aims to preserve the integrity of the Incubator Realm by limiting side effects from the Child Realm, but it does not inherently enforce security constraints.
2. **Explicit Non-Goal:** In the project's documentation, it is explicitly stated that the library does not provide security guarantees. Developers are advised to implement their own security mechanisms on top of the provided distortion mechanism.
3. **Security Considerations:** While the library limits its runtime dependencies to reduce the total cost of ownership, it does not include built-in security features. Users are encouraged to remain vigilant and have their security stakeholders review all third-party products and their dependencies.

In summary, the Near Membrane library is designed to enable realm communication with controlled side effects, but it does not include built-in security mechanisms. Developers must implement their own security measures when using this library.
npm package: @locker/near-membrane-node
Description: Node membrane library to create sandboxed environments in Node
Author: Caridy Patiño
Latest version: 0.15.0

# JavaScript Node Membrane Library

JavaScript Node Membrane Library to create a sandboxed environment in Node.

## Warning

This library does not provide inherent security mechanisms because its primary design goal is to facilitate communication between two JavaScript realms (Incubator and Child) within the same process, rather than to enforce security policies.

1. **Design Intent:** The library implements a "near membrane" to connect two realms, allowing code in the Child Realm to emulate the capabilities of the Incubator Realm. This setup aims to preserve the integrity of the Incubator Realm by limiting side effects from the Child Realm, but it does not inherently enforce security constraints.
2. **Explicit Non-Goal:** In the project's documentation, it is explicitly stated that the library does not provide security guarantees. Developers are advised to implement their own security mechanisms on top of the provided distortion mechanism.
3. **Security Considerations:** While the library limits its runtime dependencies to reduce the total cost of ownership, it does not include built-in security features. Users are encouraged to remain vigilant and have their security stakeholders review all third-party products and their dependencies.

In summary, the Near Membrane library is designed to enable realm communication with controlled side effects, but it does not include built-in security mechanisms. Developers must implement their own security measures when using this library.
npm package: @lockerstock/firebase-redux-provider
Description: Wrapper for react-redux-firebase among other tools to act as a provider for the LockerStock application.
Author: Adam Lehechka
Latest version: 1.1.1

# @lockerstock/firebase-redux-provider

Wrapper around the common react, redux, and firebase components and fleshed out to include custom hooks for all data types used within the LockerStock application.

[![npm version](https://img.shields.io/npm/v/@lockerstock/firebase-redux-provider.svg?style=flat-square)](https://www.npmjs.com/package/@lockerstock/firebase-redux-provider)
[![build](https://github.com/lockerstock/firebase-redux-provider/workflows/CI%20Build/badge.svg)](https://github.com/lockerstock/firebase-redux-provider/actions)
[![npm downloads](https://img.shields.io/npm/dm/@lockerstock/firebase-redux-provider.svg?style=flat-square)](https://www.npmjs.com/package/@lockerstock/firebase-redux-provider)

## Installation

To install @lockerstock/firebase-redux-provider with `yarn`:

    yarn add @lockerstock/firebase-redux-provider

## Setup

As of version `0.2.0`, the Firebase API keys will have to be supplied from environment variables as follows:
  
 REACT_APP_FIREBASE_API_KEY=""
REACT_APP_FIREBASE_AUTH_DOMAIN=""
REACT_APP_FIREBASE_DATABASE_URL=""
REACT_APP_FIREBASE_PROJECT_ID=""
REACT_APP_FIREBASE_STORAGE_BUCKET=""
REACT_APP_FIREBASE_MESSAGING_SENDER_ID=""
REACT_APP_FIREBASE_APP_ID=""
REACT_APP_FIREBASE_MEASUREMENT_ID=""
  
It is recommended to supply these in the CRA as `.env.{NODE_ENV}.local`. Then in CI builds, supply these keys with secrets.
npm package: @lockerstock/react-tsconfig
Description: A TypeScript config basis. Includes, tsconfig, tslint, tslint.commit, and prettier configurations.
Author: Adam Lehechka
Latest version: 1.0.5

# @lockerstock/react-tsconfig

A TypeScript config basis. Includes, tsconfig, tslint, tslint.commit, and prettier configurations.

## Installation

```
npm install --save-dev @lockerstock/react-tsconfig
```

```
yarn add @lockerstock/react-tsconfig --dev
```

_This tool has peer dependencies and will download them as needed._

## Usage

Reference it in `package.json` using the `prettier` property:

```json
{
	"name": "my-projects-name",
	"prettier": "@lockerstock/react-tsconfig",
	"devDependencies": {
		"@lockerstock/react-tsconfig": "^1.0.0",
		"husky": "^4.3.0",
		"lint-staged": "^10.3.0",
		"prettier": "^2.1.1"
	},
	"scripts": {
		"lint": "tslint --project tsconfig.json -c tslint.commit.json --fix"
	},
	"lint-staged": {
		"src/**/*.{ts,tsx}": ["yarn lint", "prettier --write"]
	},
	"husky": {
		"hooks": {
			"pre-commit": "lint-staged"
		}
	}
}
```

Extend the config in `tsconfig.json`

```json
{
	"extends": "@lockerstock/react-tsconfig/tslint.json"
}
```

Extend the config in `tslint.json`

```json
{
	"extends": "@alehechlockerstockka/react-tsconfig/tslint.json"
}
```

Extend the config in `tslint.commit.json`

```json
{
	"extends": ["@lockerstock/react-tsconfig/tslint.commit.json"]
}
```

If you're using [VS Code](https://code.visualstudio.com/), turn on the `formatOnSave` feature by adding `.vscode/settings.json`:

```json
{
	"editor.formatOnSave": true
}
```
npm package: @lockex1987/bootstrap-extended
Description: Add utility classes, support Vue, borderless, dark-theme
Author: lockex1987
Latest version: 1.2.1

# bootstrap-extended

Add utility classes, support Vue, borderless, dark-theme.

Releases:

- 1.0.0: Init
- 1.1.0: Thêm các file scss
- 1.1.1: Tạm thời chưa có mixin mq, ẩn đi
- 1.1.2: Cập nhật màu sắc theo các biến của Bootstrap
- 1.1.3: Chỉnh lại màu của page-link disabled
- 1.1.4: Không compile bootstrap-extended
- 1.1.5: Chỉnh màu của dropdown-item
- 1.1.6: Ít màu sắc thôi, màu dịu
- 1.1.7: Sử dụng Bootstrap 5
- 1.1.8: Responsive border, shadow; thêm skew; enable lại margin âm
- 1.1.9: Hệ thống lại màu sắc
- 1.2.0: Quay lại light-theme
- 1.2.1: Sửa transparent cho custom-scrollbar, thêm shadow-up-sm

[Link npm](https://www.npmjs.com/package/@lockex1987/bootstrap-extended)
npm package: @lockfile-affected/lockfile-bun
Description: bun.lock adapter for lockfile-affected
Latest version: 3.1.0

# @lockfile-affected/lockfile-bun

> **Warning:** This tool is still in early development. The API may change, and some features are incomplete or not yet fully tested. Use in production at your own risk.

bun.lock adapter for [`lockfile-affected`](https://www.npmjs.com/package/lockfile-affected).

Parses `bun.lock` content into a normalized `name -> version` snapshot
consumed by `@lockfile-affected/core`.

## Installation

```sh
npm install @lockfile-affected/lockfile-bun
```

## Usage

```ts
import { bunLockfileParser } from '@lockfile-affected/lockfile-bun';

const snapshot = await bunLockfileParser.parse(lockfileContent);
// ReadonlyMap<string, string> (name -> resolved version)
```

The parser implements the `LockfileParser` interface from `@lockfile-affected/core`:

```ts
bunLockfileParser.format; // "bun"
bunLockfileParser.lockfileNames; // ["bun.lock"]
```

## Related packages

- [`lockfile-affected`](https://www.npmjs.com/package/lockfile-affected) - CLI
- [`@lockfile-affected/core`](https://www.npmjs.com/package/@lockfile-affected/core) - diff engine and types
- [`@lockfile-affected/lockfile-pnpm`](https://www.npmjs.com/package/@lockfile-affected/lockfile-pnpm) - pnpm adapter
- [`@lockfile-affected/lockfile-npm`](https://www.npmjs.com/package/@lockfile-affected/lockfile-npm) - npm adapter
- [`@lockfile-affected/lockfile-yarn`](https://www.npmjs.com/package/@lockfile-affected/lockfile-yarn) - yarn adapter

## Publishing

This package is automatically published to npm via GitHub Actions with provenance attestation.
npm package: @lockfile-affected/lockfile-npm
Description: package-lock.json adapter for lockfile-affected
Latest version: 2.1.0

# @lockfile-affected/lockfile-npm

> **Warning:** This tool is still in early development. The API may change, and some features are incomplete or not yet fully tested. Use in production at your own risk.

`package-lock.json` adapter for [`lockfile-affected`](https://www.npmjs.com/package/lockfile-affected).

## Minimal usage

Parse lockfile content into a normalized `name -> version` snapshot.

```ts
import { npmLockfileParser } from '@lockfile-affected/lockfile-npm';

const snapshot = await npmLockfileParser.parse(lockfileContent);
```

The parser implements the `LockfileParser` interface from `@lockfile-affected/core`.

## Installation

```sh
npm install @lockfile-affected/lockfile-npm
```

For Git-based and CI usage patterns, see
[`lockfile-affected`](https://www.npmjs.com/package/lockfile-affected)
or the [CLI README](https://github.com/split/lockfile-affected/tree/main/packages/cli#readme).

## Publishing

This package is automatically published to npm via GitHub Actions with provenance attestation.
npm package: @lockfile-affected/lockfile-pnpm
Description: pnpm-lock.yaml adapter for lockfile-affected
Latest version: 2.1.0

# @lockfile-affected/lockfile-pnpm

> **Warning:** This tool is still in early development. The API may change, and some features are incomplete or not yet fully tested. Use in production at your own risk.

`pnpm-lock.yaml` adapter for [`lockfile-affected`](https://www.npmjs.com/package/lockfile-affected).

## Minimal usage

Parse lockfile content into a normalized `name -> version` snapshot.

```ts
import { pnpmLockfileParser } from '@lockfile-affected/lockfile-pnpm';

const snapshot = await pnpmLockfileParser.parse(lockfileContent);
```

The parser implements the `LockfileParser` interface from `@lockfile-affected/core`.

## Installation

```sh
npm install @lockfile-affected/lockfile-pnpm
```

For Git-based and CI usage patterns, see
[`lockfile-affected`](https://www.npmjs.com/package/lockfile-affected)
or the [CLI README](https://github.com/split/lockfile-affected/tree/main/packages/cli#readme).
npm package: @lockfile-affected/lockfile-yarn
Description: yarn.lock adapter for lockfile-affected
Latest version: 2.1.0

# @lockfile-affected/lockfile-yarn

> **Warning:** This tool is still in early development. The API may change, and some features are incomplete or not yet fully tested. Use in production at your own risk.

`yarn.lock` adapter for [`lockfile-affected`](https://www.npmjs.com/package/lockfile-affected).

Supports both classic (v1) and berry (v2+) lockfile formats.

## Minimal usage

Parse lockfile content into a normalized `name -> version` snapshot.

```ts
import { yarnLockfileParser } from '@lockfile-affected/lockfile-yarn';

const snapshot = await yarnLockfileParser.parse(lockfileContent);
```

The parser implements the `LockfileParser` interface from `@lockfile-affected/core`.

## Installation

```sh
npm install @lockfile-affected/lockfile-yarn
```

For Git-based and CI usage patterns, see
[`lockfile-affected`](https://www.npmjs.com/package/lockfile-affected)
or the [CLI README](https://github.com/split/lockfile-affected/tree/main/packages/cli#readme).

## Publishing

This package is automatically published to npm via GitHub Actions with provenance attestation.