open-index/open-npm huggingface dataset:
npm package: @joinsrl/samba-client
Description: wrapper for smbclient
Author: eFlex Systems
Latest version: 2.1.5

node-samba-client
=================

Node.js wrapper for smbclient


Requirements
------------
Smbclient must be installed. This can be installed on OSX with Homebrew [using this script](https://raw.githubusercontent.com/Homebrew/homebrew-core/1fd22fea2426e1ae34e85177234c6e59f63add58/Formula/samba.rb) and on Ubuntu with `sudo apt-get install smbclient`.

API
-------------

	var SambaClient = require('samba-client');

	var client = new SambaClient({
	  address: '//server/folder', // required
	  username: 'test', // not required, defaults to guest
	  password: 'test', // not required
	  domain: 'WORKGROUP' // not required
	});

	// send a file
	client.sendFile('somePath/file', 'destinationFolder/name', function(err) {});

	// get a file
	client.getFile('someRemotePath/file', 'destinationFolder/name', function(err) {})
npm package: @joint-ops/hitlimit-types
Description: Type definitions for hitlimit rate limiting library
Author: Shayan M Hussain
Latest version: 1.4.0

# @joint-ops/hitlimit-types

[![npm version](https://img.shields.io/npm/v/@joint-ops/hitlimit-types.svg)](https://www.npmjs.com/package/@joint-ops/hitlimit-types)
[![GitHub](https://img.shields.io/github/license/JointOps/hitlimit-monorepo)](https://github.com/JointOps/hitlimit-monorepo)
[![TypeScript](https://img.shields.io/badge/TypeScript-5.0+-blue.svg)](https://www.typescriptlang.org/)

> TypeScript type definitions for hitlimit rate limiting libraries

This package contains shared TypeScript interfaces and types used by [@joint-ops/hitlimit](https://www.npmjs.com/package/@joint-ops/hitlimit) and [@joint-ops/hitlimit-bun](https://www.npmjs.com/package/@joint-ops/hitlimit-bun).

## Installation

This package is automatically installed as a dependency of `hitlimit` and `hitlimit-bun`. You don't need to install it directly.

```bash
# Install hitlimit (includes types automatically)
npm install @joint-ops/hitlimit

# Or for Bun
bun add @joint-ops/hitlimit-bun
```

## Usage

Types are re-exported from the main packages:

```typescript
import type {
  HitLimitConfig,
  RateLimitResult,
  Store,
  TierConfig
} from '@joint-ops/hitlimit'

// Or from hitlimit-bun
import type { HitLimitConfig, Store } from '@joint-ops/hitlimit-bun'
```

## Available Types

### Core Types

```typescript
// Main configuration
interface HitLimitConfig {
  limit?: number
  window?: string | number
  key?: (req: Request) => string | Promise<string>
  tiers?: Record<string, TierConfig>
  tier?: (req: Request) => string | Promise<string>
  response?: RateLimitResponse | ((info: RateLimitInfo) => RateLimitResponse)
  headers?: HeadersConfig
  store?: Store
  skip?: (req: Request) => boolean | Promise<boolean>
  onStoreError?: (error: Error, req: Request) => 'allow' | 'deny'
}

// Store interface for custom backends
interface Store {
  increment(key: string, window: number): Promise<RateLimitResult>
  decrement?(key: string): Promise<void>
  reset?(key: string): Promise<void>
  close?(): Promise<void>
}

// Rate limit result
interface RateLimitResult {
  allowed: boolean
  limit: number
  remaining: number
  resetAt: number
}

// Tier configuration
interface TierConfig {
  limit: number
  window?: string | number
}
```

### Logger Types

```typescript
interface Logger {
  debug(message: string, meta?: Record<string, unknown>): void
  info(message: string, meta?: Record<string, unknown>): void
  warn(message: string, meta?: Record<string, unknown>): void
  error(message: string, meta?: Record<string, unknown>): void
}
```

## Related Packages

- [@joint-ops/hitlimit](https://www.npmjs.com/package/@joint-ops/hitlimit) - Rate limiting for Node.js (Express, NestJS)
- [@joint-ops/hitlimit-bun](https://www.npmjs.com/package/@joint-ops/hitlimit-bun) - Rate limiting for Bun (Bun.serve, Elysia)

## License

MIT

## Keywords

rate limit types, typescript rate limit, rate limiter types, hitlimit, api types, middleware types, typescript definitions
npm package: @jointlabs/miner-cli
Description: The official miner client for the Joint Protocol
Author: Kennedy Idialu
Latest version: 0.0.10

# Miner CLI

The Miner CLI is a command line application that allows the user to perform
Joint Protocol "mining" operations. It allows the user to pull mining tasks from
the indexer service and automate the execution of tasks on the relevant network.

## Tasks

An active miner will receive the following tasks from the indexer service:

- **Draft**: Draft mediators into a pending dispute.
- **Undraft**: Undraft mediators from an executed dispute.
- **Execute**: Execute the verdict of a dispute.

## Install

```bash
npm install @jointlabs/miner-cli -g
```

## Usage

```bash
npx miner --key=0xYourPrivateKey --net=ethereum
```

## Options

The following command line options or environment variables can be used to configure the miner:

- `--key`, `KEY`: The private key that will be used to sign transactions.
- `--net`, `NETWORK`: The network to connect to (ex: sepolia, ethereum, base, localhost)
- `--gas`, `GAS`: The gas price to use for the transaction (default: 20).
- `--indexer`, `INDEXER`: An alternative indexer address (optional)

Others:

- `--port`, `PORT`: The port the HTTP server is listen on (default: 3333).
- `-v --version`: Print the version number.

## License

MIT
npm package: @jointly/cache-candidate-plugin-dependency-keys
Description: This is a cache-candidate plugin providing a dependency-keys mechanism.
Author: Michael Di Prisco
Latest version: 3.1.1

# What is this?

This is a plugin for [@jointly/cache-candidate](https://github.com/JointlyTech/cache-candidate) that allows you to use a dependency keys mechanism to invalidate the cache records.


## How To Install?

```bash
$ npm install @jointly/cache-candidate-plugin-dependency-keys
```

## How To Use It?

The library exposes a `PluginDependencyKeys` object that can be used as a plugin for the `cacheCandidate` library and a `cacheCandidateDependencyManager` object that can be used to invalidate the cache records.


```typescript
import { cacheCandidate } from '@jointly/cache-candidate';
import { PluginDependencyKeys, cacheCandidateDependencyManager } from '@jointly/cache-candidate-plugin-dependency-keys';

async function getUsers() {
  // Do something
  return users;
}

async function updateUser(user) {
  // Do something
  cacheCandidateDependencyManager.invalidate(`users-${user.id}`); // <-- This is responsible for invalidating the cache records that depend on the key 'users-1'
  return user;
}

const cachedGetUsers = cacheCandidate(getUsers, {
  requestsThreshold: 1,
  plugins: [
      {
        name: PluginDependencyKeys.name,
        hooks: PluginDependencyKeys.hooks,
        // ...PluginDependencyKeys would to the same
        additionalParameters: { dependencyKeys: (users) => users.map((user) => `users-${user.id}`) }
      }
    ]
});

let users;
users = await cachedGetUsers(); // <-- This will be executed and cached
users = await cachedGetUsers(); // <-- This will be retrieved from the cache
await updateUser({ id: 1, name: 'John' }); // <-- This will invalidate the dependency key 'users-1' and the cache record will be removed consequently
users = await cachedGetUsers(); // <-- This will be executed and cached
```

You can pass an additional parameter `dependencyKeys` property which instructs the plugin about which keys to use to invalidate the cache records if necessary.  
This property can be either a number, a string, an array of strings, a function that returns an array of strings or a function that returns a Promise fulfilled with an array of strings.  
Both the function and the Promise will receive the result of the method on which the `cacheCandidate` operates as the first argument and the function arguments as the second argument (`fnArgs`).   
In case of an async method, the promise will be fulfilled before passing the result to the `dependencyKeys` function.  
The `dependencyKeys` function will be called only if the cache adapter correctly sets the value in the cache (i.e. the `.set` method is fulfilled).

## Gotchas

If you configured cache-candidate in `stale-while-revalidate` mode, this plugin won't work as currently we do not support such feature as this would conflict with the behaviour of this plugin.
npm package: @jointly/cache-candidate-plugin-invalidate-function
Description: This is a cache-candidate plugin providing an invalidation mechanism under specific conditions.
Author: Jointly
Latest version: 3.0.0

# What is this?

This is a plugin for [@jointly/cache-candidate](https://github.com/JointlyTech/cache-candidate) providing an invalidation mechanism under specific conditions.

## How To Install?

```bash
$ npm install @jointly/cache-candidate-plugin-invalidate-function
```

## How To Use It?

The library exposes a `PluginInvalidateFunction` object that can be used as a plugin for the `cacheCandidate` library.


```typescript
import { cacheCandidate } from '@jointly/cache-candidate';
import { PluginInvalidateFunction } from '@jointly/cache-candidate-plugin-invalidate-function';

async function getUsers(filters) {
  // Do something
  return users;
}

const cachedGetUsers = cacheCandidate(getUsers, {
  requestsThreshold: 1,
  plugins: [
      {
        name: PluginInvalidateFunction.name,
        hooks: PluginInvalidateFunction.hooks,
        // ...PluginInvalidateFunction would do the same
        additionalParameters: { invalidateFunction: (fnArgs) => {
          let shouldInvalidate = executeQueryToDetermineIfCacheShouldBeInvalidated();
          return shouldInvalidate;
        } } // <-- This will invalidate the cache record if the amount of filters passed to the method is greater than 1
      }
    ]
});

let users;
users = await cachedGetUsers(); // <-- This will be executed and cached.
// Here something happens so that executeQueryToDetermineIfCacheShouldBeInvalidated returns true
users = await cachedGetUsers(); // <-- This will be firstly invalidated, then executed and cached again.
```

You must pass an additional parameter `invalidateFunction` property which instructs the plugin about when to invalidate the cache record.
This property must be a synchronous function that receives the arguments passed to the method on which the `cacheCandidate` operates and returns a boolean value.  
If the function returns `true`, the cache record will be invalidated and the cacheCandidate will continue its normal execution.
npm package: @jointly/event-versionator
Description: This is a library for versioning given events. It's used to ensure that we are able to monitor the number of iterations of a given event and to ensure that we can re-build the original order.
Author: Jointly
Latest version: 1.0.3

# What is it?

This is a library for versioning given events. It's used to
ensure that we are able to monitor the number of iterations of a given event and to
ensure that we can re-build the original order.

# How do I install it?

You can install it by using the following command:

```bash
npm install @jointly/event-versionator
```

# Tests

You can run the tests by using the following command:

```bash
npm test
```

# How does it work?

Just call the `getVersionedEvent` function with the event you want to version and it will return a new event with the versioning information.  
the function expects to receive an object with the following properties:

- `event` - the event you want to version
- `payload` - the payload of the event

The return value is an object with the following properties:

- `event` - the given event
- `version` - the version of the event
- `payload` - the payload of the event
- `createdAt` - the date when the specific event version was created

```js
const { getVersionedEvent } = require('@jointly/event-versionator');
getVersionedEvent({ event: 'ev1', payload: 'ev1-1' }); // { event: 'ev1', version: 1, payload: 'ev1-1', createdAt: '1970-01-01T14:00:00.000Z' }
getVersionedEvent({ event: 'ev1', payload: 'ev1-2' }); // { event: 'ev1', version: 2, payload: 'ev1-2', createdAt: '1970-01-01T14:00:03.123Z' }
getVersionedEvent({ event: 'ev1', payload: 'ev1-3' }); // { event: 'ev1', version: 3, payload: 'ev1-3', createdAt: '1970-01-01T14:00:06.246Z' }
getVersionedEvent({ event: 'ev2', payload: 'ev2-1' }); // { event: 'ev2', version: 1, payload: 'ev2-1', createdAt: '1970-01-01T14:00:09.369Z' }
getVersionedEvent({ event: 'ev2', payload: 'ev2-2' }); // { event: 'ev2', version: 2, payload: 'ev2-2', createdAt: '1970-01-01T14:00:12.492Z' }
```

# Other Info

You can also call the `getNextEventVersion` function to get the next version of a given event.  
By passing a `false` as the second argument, you can get the next version of the event without committing (saving it) in the function internal state.  
You can also call the `getNextEventVersion` passing the `EVENT_VERSIONING_RESET_STRING` exported constant as the first argument to reset the internal state of the function and consequently resetting all saved version values.
npm package: @jointly/spyone
Description: A simple script able to download any Git repository and extracts statistics from its commits, showing most touched files.
Author: Jointly
Latest version: 0.3.1

_spyone_ is a tool that generates a JSON heatmap of any Git repository's commits showing most edited files.  
It comes from the italian word _spione_, which means _spy_.

Please, keep in mind this project is not perfect. It was made to analyze our most edited files to create some sort of `heatmap` of the technical debt of our internal projects.

## What does it do?

This script downloads any Git repository and extracts statistics from its commits. The resulting data is then sorted by commit count, and if there is a tie, by the sum of additions and deletions in descending order. The result is opened in your default browser and you're able to save it in any location on your computer.

## Usage

To use it, run the following command:

```bash
npx @jointly/spyone
```

You will be prompted to enter the URL of the repository you want to analyze, the number of days to consider when extracting data from commits, the name of the branch to consider and the output format.

You can provide all the parameters in the command line, like this:

```bash
npx @jointly/spyone --repoUrl=<repo-url> --days=30 --branch=main --output=html
```

and you don't need to provide any input.

You will be able to save the resulting heatmap in any location on your computer just with --save flag:

```bash
npx @jointly/spyone --repoUrl=<repo-url> --days=30 --branch=main --output=html --save
```

### Parameters

- `repoUrl`: the URL of the GitHub repository to extract statistics from. This can be either an https or ssh URL.
- `days`: the number of days before today to consider when extracting data from commits. We suggest 30 for highly updated projects and 90 days for common day-to-day work projects.
- `branch` (optional): the name of the branch to consider. Defaults to `main`.
- `output` (optional): Accepts {html|json}. Defaults to `json`.
- `save` (optional): If provided, the resulting heatmap will be saved in a file in the current directory or in the directory specified inside the `save` parameter.
npm package: @jointm/qw
Description: node_modules ls tools
Author: 285861181@qq.com
Latest version: 1.0.1

### 此项是封装的全局的工具类

### 使用方法
全局安装：npm link
执行结果：
/Users/sky/.npm-global/bin/qw -> /Users/sky/.npm-global/lib/node_modules/qw/index.js
/Users/sky/.npm-global/lib/node_modules/qw -> /Users/sky/code3/qw

执行之后，就可以用 qw 命令了

### 删除软连接
npm rm --global qw
npm uninstall --global my-script

### 所使用的package
* chalk  —  美化终端字符显示
* figlet  —  在终端输出大型字符
* inquirer  —  命令行参数输入交互
* shelljs  —  平台相关命令

### 变更记录
* 20200429 将lsFile的相对路径改为绝对路径
* 20200429 加入自动执行chmod权限的功能；
* 20200429 优化了node_modules路径中//的问题
* 20200408 增加同项目下面不同组件的依赖；
* 20200407 增加startWith函数；
* 20200404 抽象为不同的方法；

### 存在缺陷
	child_process执行shell命令，无法做到跨平台，例如chmod 777；

```
在qw项目的package.json中加入：

{
    ...
    "bin": {
        "qw": "./index.js"
    }
    ...
}
这样当其他同学全局安装时，就能直接使用qw指令执行index.js这个脚本了。
```
npm package: @jointswap/core
Description: Core contracts for Jointswap with help from SushiSwap protocol
Latest version: 1.0.0

# SushiSwap

https://sushi.com/

## Deployed Contracts

https://dev.sushi.com/sushiswap/contracts

## Docs

[Development](docs/DEVELOPMENT.md)

[Deployment](docs/DEPLOYMENT.md)

[History](docs/HISTORY.md)

## Security

[Security Policy](SECURITY.md)

## License

[MIT](LICENSE.txt)
npm package: @jointswap/jointswap-sdk
Description: 🛠 An SDK for building applications on top of Sushiswap.
Latest version: 1.0.9

# Sushiswap SDK

In-depth documentation on this SDK is available at [uniswap.org](https://uniswap.org/docs/v2/SDK/getting-started/).

This modifies uniswap-sdk's UniswapV2Factory address. The new address for sushiswap is  `0xC0AEe478e3658e2610c5F7A4A2E1777cE9e4f2Ac`.

## Running tests

To run the tests, follow these steps. You must have at least node v10 and [yarn](https://yarnpkg.com/) installed.

First clone the repository:

```sh
git clone https://github.com/sushiswap/sushiswap-sdk.git
```

Move into the sushiswap-sdk working directory

```sh
cd sushiswap-sdk/
```

Install dependencies

```sh
yarn install
```

Run tests

```sh
yarn test
```

You should see output like the following:

```sh
yarn run v1.22.4
$ tsdx test
 PASS  test/constants.test.ts
 PASS  test/pair.test.ts
 PASS  test/fraction.test.ts
 PASS  test/miscellaneous.test.ts
 PASS  test/entities.test.ts
 PASS  test/trade.test.ts

Test Suites: 1 skipped, 6 passed, 6 of 7 total
Tests:       3 skipped, 82 passed, 85 total
Snapshots:   0 total
Time:        5.091s
Ran all test suites.
✨  Done in 6.61s.
```
npm package: @jointswap/sdk
Description: 🛠 An SDK for building applications on top of Sushiswap.
Latest version: 6.0.0

# Sushiswap SDK

In-depth documentation on this SDK is available at [uniswap.org](https://uniswap.org/docs/v2/SDK/getting-started/).

This modifies uniswap-sdk's UniswapV2Factory address. The new address for sushiswap is  `0xC0AEe478e3658e2610c5F7A4A2E1777cE9e4f2Ac`.

## Running tests

To run the tests, follow these steps. You must have at least node v10 and [yarn](https://yarnpkg.com/) installed.

First clone the repository:

```sh
git clone https://github.com/sushiswap/sushiswap-sdk.git
```

Move into the sushiswap-sdk working directory

```sh
cd sushiswap-sdk/
```

Install dependencies

```sh
yarn install
```

Run tests

```sh
yarn test
```

You should see output like the following:

```sh
yarn run v1.22.4
$ tsdx test
 PASS  test/constants.test.ts
 PASS  test/pair.test.ts
 PASS  test/fraction.test.ts
 PASS  test/miscellaneous.test.ts
 PASS  test/entities.test.ts
 PASS  test/trade.test.ts

Test Suites: 1 skipped, 6 passed, 6 of 7 total
Tests:       3 skipped, 82 passed, 85 total
Snapshots:   0 total
Time:        5.091s
Ran all test suites.
✨  Done in 6.61s.
```
npm package: @jointswap/v2-sdk
Description: 🛠 An SDK for building applications on top of Uniswap V2
Latest version: 3.0.0

# Uniswap V2 SDK

[![Unit Tests](https://github.com/Uniswap/uniswap-v2-sdk/workflows/Unit%20Tests/badge.svg)](https://github.com/Uniswap/uniswap-v2-sdk/actions?query=workflow%3A%22Unit+Tests%22)
[![Lint](https://github.com/Uniswap/uniswap-v2-sdk/workflows/Lint/badge.svg)](https://github.com/Uniswap/uniswap-v2-sdk/actions?query=workflow%3ALint)
[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)
[![npm version](https://img.shields.io/npm/v/@uniswap/v2-sdk/latest.svg)](https://www.npmjs.com/package/@uniswap/v2-sdk/v/latest)
[![npm bundle size (scoped version)](https://img.shields.io/bundlephobia/minzip/@uniswap/v2-sdk/latest.svg)](https://bundlephobia.com/result?p=@uniswap/v2-sdk@latest)

In-depth documentation on this SDK is available at [uniswap.org](https://uniswap.org/docs/v2/SDK/getting-started/).
npm package: @joist/observable
Description: Monitor and respond to object changes
Author: deebloo
Latest version: 4.6.0

# Observable

Adds the ability to monitor class properties (static and instance) for changes

#### Installation:

```BASH
npm i @joist/observable
```

```TS
import { observe, effect } from '@joist/observable';

class AppState {
  @observe()
  accessor todos: string[] = [];

  @observe()
  accessor userName?: string;

  @effect()
  onChange(changes: Changes) {
    console.log(changes);
  }
}

const state = new AppState();

state.todos = [...state.todos, 'Build Shit'];
state.userName = 'Danny Blue'
```

## Computed Properties

The `@observe()` decorator can also be used to create computed properties that automatically update when their dependencies change. This is done by passing an options object with a `compute` function to the decorator:

```TS
import { observe } from '@joist/observable';

class UserProfile {
  @observe()
  accessor firstName = "John";

  @observe()
  accessor lastName = "Doe";

  @observe({
    compute: (i) => `${i.firstName} ${i.lastName}`
  })
  accessor fullName = "";
}

const profile = new UserProfile();
console.log(profile.fullName); // "John Doe"

// When dependencies change, computed properties update automatically
profile.firstName = "Jane";
console.log(profile.fullName); // "Jane Doe"
```

The compute function receives the instance as its parameter and should return the computed value. The computed property will automatically update whenever any of its dependencies (properties accessed within the compute function) change.
npm package: @joist/schematics
Description: A blank schematics
Latest version: 1.0.0-alpha.17

# schematics

A collection of schematics for generating components and applications

```BASH
npm i -g @angular-devkit/schematics-cli @joist/schematics
```

### Generate App

```bash
schematics @joist/schematics:application
```

### Generate Component

```bash
schematics @joist/schematics:component
```

### Generate Service

```bash
schematics @joist/schematics:service
```
npm package: @joist/slotted
Description: Dependency Injection in ~800 bytes
Author: deebloo
Latest version: 2.0.0-canary.1638974036.0

# Observable

Observable in Joist means something slightly different then in something like RxJs.
Decorating a class with `@observable` means that instances of that class will BE observable. This means you can watch for changes on select properties.s

#### Installation:

```BASH
npm i @joist/observable@alpha
```

#### Example:

```TS
import { observable, observer, OnChange, Changes } from '@joist/observable';

@observable
class State implements OnChange {
  // Changes to these will trigger callback
  @observe todos: string[] = [];
  @observe userName?: string;

  // changes to this will not
  someValue: boolean = false;

  onChange(changes: Changes) {
    console.log(changes);
    // { todos: { value: ['Build Shit'], previousValue: [] }, userName: { value: 'Danny Blue', previousValue: undefined } }
  }
}

const state = new State();

state.todos = [...state.todos, 'Build Shit'];
state.userName = 'Danny Blue'
```

#### Event target example:

If you want to externally monitor your class for changes you can extend event target and dispatch events. (available in both node and the browser)

```TS
import { observable, observer, OnChange, Changes } from '@joist/observable';

class StateChangeEvent extends Event {
  consetructor(public changes: Changes) {
    super('statechange')
  }
}

@observable
class State extends EventTarget implements OnChange {
  // Changes to these will trigger callback
  @observe todos: string[] = [];
  @observe userName?: string;

  // changes to this will not
  someValue: boolean = false;

  onChange(changes: Changes) {
    this.dispatchEvent(new StateChangeEvent());
  }
}

const state = new State();

state.addEventListener('statechange', (e) => {
  console.log(e.changes);
});

state.todos = [...state.todos, 'Build Shit'];
state.userName = 'Danny Blue'
```
npm package: @joist/ssr
Description: server side render shadow dom (Declarative Shadow DOM)
Author: deebloo
Latest version: 4.6.0

# SSR (Experimental)

Render ShadowDOM on thee server with Declarative Shadow DOM. Parses HTML and recursively inserts user defined templates. The most important part of this would be the template loader. A template loader is an object that defines how the applicator will get the string values for both the html and the css. (css is optional).

```TS
import { Applicator. NoopTemplateCache, FileSysTemplateLoader } from '@joist/ssr';

// Define a template caching strategy and a template loader
const applicator = new Applicator(
  new NoopTemplateCache(),
  new FileSysTemplateLoader(
    (tag) => `elements/${tag}/${tag}.html`,
    (tag) => `elements/${tag}/${tag}.css`
  )
);

// Apply to a document and provide a list of elements to search for
applicator.apply(document, [])
```

## Vite

```TS
import { Applicator. NoopTemplateCache, FileSysTemplateLoader } from '@joist/ssr';
import { defineConfig } from 'vite';

const applicator = new Applicator(
  new NoopTemplateCache(),
  new FileSysTemplateLoader(
    (tag) => `elements/${tag}/${tag}.html`,
    (tag) => `elements/${tag}/${tag}.css`
  )
);

export default defineConfig({
  plugins: [
    {
      transformIndexHtml: {
        enforce: "pre",
        transform(html) {
          return applicator.apply(html, ['my-element', 'my-dropdown']);
        }
      }
    }
  ],
});
```
npm package: @joist/starter-snowpack
Description: > ✨ Bootstrapped with Create Snowpack App (CSA).
Author: deebloo
Latest version: 1.5.0

# New Project

> ✨ Bootstrapped with Create Snowpack App (CSA).

## Available Scripts

### npm start

Runs the app in the development mode.
Open http://localhost:8080 to view it in the browser.

The page will reload if you make edits.
You will also see any lint errors in the console.

### npm run build

Builds a static copy of your site to the `build/` folder.
Your app is ready to be deployed!

## npm test

Runs unit tests in browser with `@web/test-runner`.
Run `npm run test:watch` to run in watch mode;

### Q: What about Eject?

No eject needed! Snowpack guarantees zero lock-in, and CSA strives for the same.
npm package: @jojihere/react-server-dom-esm
Description: React Server Components bindings for DOM using ESM. This is intended to be integrated into meta-frameworks. It is not intended to be imported directly.
Latest version: 19.0.0-rc-3563387fe3-20240621-2

# react-server-dom-esm

Experimental React Flight bindings for DOM using ESM.

**Use it at your own risk.**
npm package: @jojoblackfr/discord-rpc
Description: A simple fork of discord-rpc
Author: snek
Latest version: 4.1.0

<div align="center">
  <br />
  <p>
    <a href="https://discord.gg/bRCvFy9"><img src="https://discordapp.com/api/guilds/222078108977594368/embed.png" alt="Discord server" /></a>
    <a href="https://www.npmjs.com/package/discord-rpc"><img src="https://img.shields.io/npm/v/discord-rpc.svg?maxAge=3600" alt="NPM version" /></a>
    <a href="https://www.npmjs.com/package/discord-rpc"><img src="https://img.shields.io/npm/dt/discord-rpc.svg?maxAge=3600" alt="NPM downloads" /></a>
    <a href="https://david-dm.org/discordjs/RPC"><img src="https://img.shields.io/david/discordjs/RPC.svg?maxAge=3600" alt="Dependencies" /></a>
  </p>
  <p>
    <a href="https://nodei.co/npm/discord-rpc/"><img src="https://nodei.co/npm/discord-rpc.png?downloads=true&stars=true" alt="NPM info" /></a>
  </p>
</div>

# Discord.js RPC Extension

### [Documentation](https://discord.js.org/#/docs/rpc/)

### [Rich Presence Example](https://github.com/discordjs/RPC/blob/master/example)

### __Browser__ Example

```javascript
const clientId = '287406016902594560';
const scopes = ['rpc', 'rpc.api', 'messages.read'];

const client = new RPC.Client({ transport: 'websocket' });

client.on('ready', () => {
  console.log('Logged in as', client.application.name);
  console.log('Authed for user', client.user.username);

  client.selectVoiceChannel('81384788862181376');
});

// Log in to RPC with client id
client.login({ clientId, scopes });
```
npm package: @jojobo/jing-ui
Description: ## 先打包
Author: jojobo
Latest version: 0.0.70

# 如何发布

## 先打包

`npm run build`

### 发布文档

`pnpm run deploy`

## 再 publish

`npm publish`

## 发网站包

`npm run deploy`

发网站包的时候需要去掉 sideEffect