open-index/open-npm huggingface dataset:
npm package: @lavamoat/aa
Description: LavaMoat's secure package naming convention
Author: kumavis
Latest version: 5.0.0

### @lavamoat/aa

LavaMoat's canonical package name convention.

Named after a type of lava: ʻAʻā https://volcanoes.usgs.gov/vsc/glossary/aa.html

#### goals

- name that does not soley rely on the package of unknown provenance's self-determined name
- consistent across platform and package manager
- consistent whether only prod dependencies or dev and prod dependencies are installed

#### scheme

The naming convention is to identify all "logical paths" from the project root to the normalized package disk location and choose the shortest logical path by string length.

For example the path: `project/node_modules/xyz`

with the logical paths:

- `abc>ijk>xyz`
- `abc>xyz`

In this case we would choose the name `abc>xyz` to represent this package.
npm package: @lavamoat/basalt-linux-x64-gnu
Description: This is the **x86_64-unknown-linux-gnu** binary for `@napi-rs/package-template`
Latest version: 0.3.3

# `@napi-rs/package-template-linux-x64-gnu`

This is the **x86_64-unknown-linux-gnu** binary for `@napi-rs/package-template`
npm package: @lavamoat/basalt-win32-x64-msvc
Description: This is the **x86_64-pc-windows-msvc** binary for `@napi-rs/package-template`
Latest version: 0.3.3

# `@napi-rs/package-template-win32-x64-msvc`

This is the **x86_64-pc-windows-msvc** binary for `@napi-rs/package-template`
npm package: @lavamoat/git-safe-dependencies
Description: Opinionated dependency linter for your git/github dependencies
Author: naugtur
Latest version: 1.0.0

# git-safe-dependencies

> WARNING: This is an alpha version. The opinions are still forming and anything can change at any time. Test coverage is incomplete. Use at your own risk.

Validate your `package.json` and lockfile (NPM, Yarn classic or Yarn Berry) and your GitHub Actions workflow files against an opinionated set of rules around using git dependencies that we at LavaMoat recommend.  
No configuration, no excuses.

## Installation

You can install `@lavamoat/git-safe-dependencies` using npm:

```sh
npm install --save-dev @lavamoat/git-safe-dependencies
```

## Usage

```
git-safe-dependencies [--type=yarn|npm] [--ignore=file.json] [--projectRoot=path]
```

- `--type=npm|yarn` - Specify the type of lockfile to lint if it's not obvious from the file name. Supported values are dictated by `lockfile-lint` package.
- `--ignore=file.json` - Specify a JSON file with a list of problem IDs to ignore (if you must). Keep the file version controlled to track who ignored what and why.
- `--projectRoot=path` - Specify the root of the project to lint. Defaults to the current working directory.

```
git-safe-actions [--workflows=path] [--ignore=file.json]
```

- `--ignore=file.json` - Specify a JSON file with a list of problem IDs to ignore (if you must). Keep the file version controlled to track who ignored what and why.
- `--workflows=path` - Specify the path to the directory with GitHub Actions workflow files. Defaults to `.github` and searches recursively.

### Programmatic usage

WIP, but do try :)

```js
const gitSafeDependencies = require('@lavamoat/git-safe-dependencies')
```

TODO: design a more granular programmatic API

## FAQ

#### Why is this not a plugin/rule for one of the many linters?

- It makes http requests and that's unlikely to vibe with any linter.
npm package: @lavamoat/laverna
Description: Publish multiple workspaces (that's all)
Author: boneskull
Latest version: 2.0.0

# Laverna

> Publish multiple workspaces (that's all)

If you're familiar with [lerna](https://lerna.js.org), **Laverna** does this: `lerna publish from-package`.

If you're unfamiliar with it: **Laverna** publishes all workspacess wherein the _current_ version hasn't yet been published.

## Features

**Laverna** is a thin wrapper around `npm publish` which:

- Invokes `npm publish` on _all_ workspaces _where the current version has not yet been published_
- Publishes new packages via flag
- Ignores private packages
- Requires confirmation (by default)
- Prints all output from `npm publish`, including the output of `npm pack`, to enable review prior to confirmation
- Provides a "dry-run" mode

**Laverna**'s scope is intentionally limited to the above use-case.

## Non-Features

Perhaps more importantly, **Laverna**:

- Builds nothing
- Bumps no versions
- Runs no user-defined scripts
- Retains no state nor cache
- Does not write to `package.json` or lockfiles
- Does not interact with `git` (no tags, no commits, no pushes)
- Does not interact with GitHub (no releases)
- Avails no whims

## Supported Environments

- Node.js v20.19.0+
- `npm` v8.19.3+

## Install

It's recommended to install as a dev dependency:

```shell
npm install @lavamoat/laverna -D
```

## Usage Summary

```plain
laverna [options..]

"Publish multiple workspaces (that's all)"

Options:

 --dryRun        - Enable dry-run mode
 --root=<path>   - Path to workspace root (default: current working dir)
 --newPkg=<name> - Workspace <name> should be treated as a new package (repeatable)
 --yes/-y        - Skip confirmation prompt (default: false; true in CI)

Problems? Visit https://github.com/LavaMoat/LavaMoat/issues
```

## Examples

### Using Release Please or Similar

For a typical release workflow, you might:

1. Bump workspace versions (e.g. via [release-please-action](https://github.com/google-github-actions/release-please-action))
2. In your updated working copy's workspace root, run `npm exec laverna` (or `npm exec laverna -- --dryRun` first)
3. Bask in glory

### Publishing a New Package

If you're publishing a package in a new workspace, you might:

1. Set the initial version of the new package (call it `foo`) in its `package.json`.
2. Run `npm exec laverna -- --newPkg=foo` (or `npm exec laverna -- --newPkg=foo --dryRun` first)
3. Profit

### Automating Publishes

If the `CI` environment variable is present, `laverna` will skip the confirmation prompt before final publish (i.e., `--yes` defaults to `true`).

> [!WARNING]
> Publishing via CI can bypass 2FA protections. Use at your own risk!

## API

**Laverna** provides a programmable JavaScript API (for what it's worth).

Refer to the TypeScript definitions for details.

## Notes

[LavaMoat](https://github.com/LavaMoat/LavaMoat) needed something that did this, but didn't need Lerna for anything else. So, here we are.

## License

Copyright © 2023 Consensys, Inc. Licensed MIT
npm package: @lavamoat/preinstall-always-fail
Description: Worried about accidentally running `yarn` or `npm` with script hooks enabled such as `preinstall` or `postinstall`?
Latest version: 3.0.0

# Pre-Install Always Fail

Worried about accidentally running `yarn` or `npm` with script hooks enabled such as `preinstall` or `postinstall`?

Adding this package to a project **mitigates** the likelihood of running any lifecycle scripts by throwing an error during the `preinstall` script execution.

## Install

```
yarn add @lavamoat/preinstall-always-fail
npm i @lavamoat/preinstall-always-fail
```

## Usage

If the `--ignore-scripts` [[1](#1)] flag is missing, running `yarn` or `npm i` will fail.
Enable the flag and use in conjunction with Lavamoat's [allow-scripts](https://github.com/LavaMoat/LavaMoat/tree/main/packages/allow-scripts) to manually whitelist packages running scripts.

## References

<a id="1">[1]</a>: https://docs.npmjs.com/cli/v7/commands/npm-install#ignore-scripts
npm package: @lavamoat/tss-snap
Description: Snap for threshold signatures.
Latest version: 0.2.0

# TSS Snap Dapp

This project is sadly using two bundlers; it was designed to use [parcel][] but creating a release build with [parcel][] yields an error - see [this bug report](https://github.com/parcel-bundler/parcel/issues/8680).

So we use [webpack][] to create a release build to workaround the parcel bug.

When the parcel bug is fixed we can remove the webpack build.

## Environment

You will need a `.env` and `.env.production` files. For the development `.env` just copy the `.env.example` file and complete the private fields.

For `.env.production` you should also set:

```
SNAP_ID=npm:@lavamoat/tss-snap
```

[parcel]: https://github.com/parcel-bundler/parcel
[webpack]: https://webpack.js.org/
npm package: @lavamoat/types
Description: Common types for LavaMoat packages
Author: boneskull
Latest version: 1.0.0

# @lavamoat/types

> Common types for LavaMoat & related packages

## Includes

- `LavaMoatPolicy`: the policy object used by LavaMoat
- `LavamoatModuleRecord`: the module record used by LavaMoat

## License

Copyright © 2024 Consensys, Inc. Licensed MIT
npm package: @lavamoat/walker
Description: walker
Latest version: 0.2.1
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# walker

walk through the proto chain

## demo

check out the [demo](https://lavamoat.github.io/walker/demo/)

## install

`yarn add @lavamoat/walker` / `npm install @lavamoat/walker`

## use

```javascript
const Walker = require('@lavamoat/walker');

new Walker(cb, opts = {}).walk(start); // example

new Walker((value, path) => {
    console.log('found value:', value);
    console.log('path to value was:', path);
    if (value === 1) {
        return true; // true means stop walker
    }
}, {maxRecursionLimit: 9}).walk(window);

// options object can be passed as second argument to Walker constructor optionally:
const opts = {
    // a function with which the visited keys during walking 
    // process can be customizd for how they appear within 
    // @path argument (useful for aggregation purposes).
    generateKey, // (k) => '__' + k + '__'
    // a function that catches errors thrown in the function that is trying to determine
    // whether a property of an object should be ignored from walking into or not.
    // since it is very delicate, the user can catch those errors and decide how to deal with them.
    // use it to return true to skip the property or false to try to walk into it.
    onShouldIgnoreError, // (prop, obj, error) => true <-- this will skip properties that failed the ignore-check
    // a boolean to indicate whether to use or avoid cache for visited values.
    // when true, walker will not skip walking into non primitive values that were already processed.
    avoidValuesCache, // true/false [default false]
    // a Set when prefered providing your own cache Set when @avoidValuesCache is set to false.
    // useful when running multiple walkers in a single execution.
    valuesCacheSet, // new Set()
    // a boolean to indicate whether to use or avoid cache for visited properties.
    // when true, walker will not avoid generating own properties of objects to walk into more than once.
    avoidPropertiesCache, // true/false [default false]
    // a Map when prefered providing your own cache Map when @avoidPropertiesCache is set to false.
    // useful when running multiple walkers in a single execution.
    propertiesCacheMap, // new Map()
    // a number to indicate the maximum recursion depth walker is allowed to walk.
    maxRecursionLimit, // 3 [default 5]
};
```
npm package: @lavandre/button
Description: Webcomponent lavandre-button following open-wc recommendations
Author: lavandre-button
Latest version: 0.0.23

# \<lavandre-button>

This webcomponent follows the [open-wc](https://github.com/open-wc/open-wc) recommendation.

## Installation

```bash
npm i lavandre-button
```

## Usage

```html
<script type="module">
  import 'lavandre-button/lavandre-button.js';
</script>

<lavandre-button></lavandre-button>
```

## Linting and formatting

To scan the project for linting and formatting errors, run

```bash
npm run lint
```

To automatically fix linting and formatting errors, run

```bash
npm run format
```

## Testing with Web Test Runner

To execute a single test run:

```bash
npm run test
```

To run the tests in interactive watch mode run:

```bash
npm run test:watch
```

## Demoing with Storybook

To run a local instance of Storybook for your component, run

```bash
npm run storybook
```

To build a production version of Storybook, run

```bash
npm run storybook:build
```


## Tooling configs

For most of the tools, the configuration is in the `package.json` to reduce the amount of files in your project.

If you customize the configuration a lot, you can consider moving them to individual files.

## Local Demo with `web-dev-server`

```bash
npm start
```

To run a local development server that serves the basic demo located in `demo/index.html`