open-index/open-npm huggingface dataset:
npm package: @openally/auto-url
Description: Utility to build WHATWG URL from an object payload
Author: GENTILHOMME Thomas
Latest version: 1.0.1

<p align="center"><h1 align="center">
  Auto-URL
</h1>

<p align="center">
  Utility to quickly build WHATWG URL from an Object payload (with custom transformation supported)
</p>

## Requirements
- [Node.js](https://nodejs.org/en/) v18 or higher

## Getting Started

This package is available in the Node Package Repository and can be easily installed with [npm](https://docs.npmjs.com/getting-started/what-is-npm) or [yarn](https://yarnpkg.com).

```bash
$ npm i @openally/auto-url
# or
$ yarn add @openally/auto-url
```

## Usage example

```ts
import autoURL from "@openally/auto-url";

const myURL = autoURL(
  "https://www.google.fr",
  { foo: "bar" },
  { foo: (value) => value.toUpperCase() }
);

// https://google.fr/?foo=BAR
console.log(myURL.href);
```

## API

```ts
export type autoURLTransformCallback = (value: string) => string;
export type autoURLTransformConfig<T extends string> = Record<T, autoURLTransformCallback>;

function autoURL<T extends string>(
  source: string | URL,
  payload?: Record<T, any> | Iterable<[T, any]>,
  transformersConfig: autoURLTransformConfig<T>
): URL
```

## License
MIT
npm package: @openally/config
Description: Reactive configuration loader
Author: GENTILHOMME Thomas
Latest version: 1.2.0

<p align="center"><h1 align="center">
  Config
</h1>

<p align="center">
  Reactive configuration loader with safe hot reload configuration upon <a href="https://json-schema.org/" target="_blank">JSON Schema</a>
</p>

## Requirements
- [Node.js](https://nodejs.org/en/) v20 or higher

## Getting Started

This package is available in the Node Package Repository and can be easily installed with [npm](https://docs.npmjs.com/getting-started/what-is-npm) or [yarn](https://yarnpkg.com).

```bash
$ npm i @openally/config
# or
$ yarn add @openally/config
```

## Features

- Hot-reloading of configuration
- Reactive with observable key(s)
- Safe with [JSON Schema](https://json-schema.org/) validation
- Support [TOML](https://github.com/toml-lang/toml) as input (enable the parser when the file extension end with **.toml**)
- Read configuration with no extension that start with a dot (like `.nodesecurerc` for example).


## Usage example

Create a simple json file for your project

```json
{
  "loglevel": 5,
  "logsize": 4048,
  "login": "administrator"
}
```

Now, create a new Configuration instance and read it

```js
import { AsynchronousConfig } from "@openally/config";

const config = new AsynchronousConfig("./path/to/config.json");
await config.read();
console.log(cfg.get("loglevel")); // stdout: 5

// Observe (with an Observable Like) the update made to login property
config.observableOf("login").subscribe(console.log);
config.set("login", "admin");

// Payload getter will return a deepClone with all configuration properties
console.log(config.payload);

config.close();
```

> [!IMPORTANT]
> `config.json` should exists otherwise it will throw an Error. Look at `createOnNoEntry` option for more information !

## API

- [AsynchronousConfig](./docs/AsynchronousConfig.md)
- [SynchronousConfig](./docs/SynchronousConfig.md)

## License
MIT
npm package: @openally/config.eslint
Description: OpenAlly ESLint configuration for Node.js and TypeScript
Author: GENTILHOMME Thomas
Latest version: 2.4.2

<p align="center">
  <h1 align="center">Eslint Config</h1>
</p>

<div align="center">OpenAlly Node.js Eslint configuration (Work for both JavaScript and TypeScript projects).</div>

## Requirements
- [Node.js](https://nodejs.org/en/) v20 or higher

## Getting Started

This package is available in the Node Package Repository and can be easily installed with [npm](https://docs.npmjs.com/getting-started/what-is-npm) or [yarn](https://yarnpkg.com).

```bash
$ npm i -D @openally/config.eslint
# or
$ yarn add @openally/config.eslint -D
```

## Usage

Create a `eslint.config.mjs` file in the root of your project and extend the `@openally/eslint-config` configuration.

### TypeScript
```js
// eslint.config.mjs
import { typescriptConfig } from "@openally/config.eslint";

export default typescriptConfig({
  // Your custom configuration
});
```

### JavaScript
```js
// eslint.config.mjs
import { ESLintConfig } from "@openally/config.eslint";

export default [
  ...ESLintConfig,
  // Your custom configuration
];
```

### OpenAlly Plugin

This package also includes the OpenAlly plugin custom rules, as follows:

- [`@openally/constants`](./docs/constants.md)
- [`@openally/imports`](./docs/imports.md)
- [`@openally/no-legacy-dirname-filename`](./docs/no-legacy-dirname-filename.md)

### Globals

This package export the npm package `globals` in case you need to add global variables to your project.

For instance if you need browser globals you can add the following to your `eslint.config.mjs` file:

```js
// eslint.config.mjs
import { ESLintConfig, globals } from "@openally/config.eslint";

export default [
  ...ESLintConfig,
  {
    languageOptions: {
      globals: {
        ...globals.browser
      }
    }
  }
];
```

## License
MIT
npm package: @openally/config.typescript
Description: TypeScript configuration (TSConfig)
Author: GENTILHOMME Thomas
Latest version: 1.3.0

<p align="center">
  <h1 align="center">TypeScript Config</h1>
</p>

<div align="center">OpenAlly TypeScript CJS & ESM configurations.</div>

## Getting Started

This package is available in the Node Package Repository and can be easily installed with [npm](https://docs.npmjs.com/getting-started/what-is-npm) or [yarn](https://yarnpkg.com).

```bash
$ npm i -D @openally/config.typescript
# or
$ yarn add @openally/config.typescript -D
```

## Usage

```json
{
  "extends": "@openally/config.typescript/cjs",
  "compilerOptions": {
    "outDir": "dist",
    "rootDir": "./src"
  },
  "include": ["src"],
  "exclude": ["node_modules", "dist"]
}

```

Use either **cjs**, **esm** or **esm-ts-next**

```json
{
  "exports": {
    ".": "./esm/tsconfig.json",
    "./esm": "./esm/tsconfig.json",
    "./esm-ts-next": "./esm-ts-next/tsconfig.json",
    "./cjs": "./cjs/tsconfig.json"
  }
}
```

> [!NOTE]
> The original inspiration for those configurations is [The TSConfig Cheat Sheet
](https://www.totaltypescript.com/tsconfig-cheat-sheet) by Matt Pocock.


## License
MIT
npm package: @openally/ephemeral-map
Description: ES6 Map-Like implementation with keys that have a defined timelife
Author: GENTILHOMME Thomas
Latest version: 2.0.0

<p align="center"><h1 align="center">
  EphemeralMap
</h1>

<p align="center">
  ES6 Map-Like implementation with keys that have a defined timelife (using <a href="https://github.com/OpenAlly/npm-packages/tree/main/src/timestore">TimeStore</a> under the hood)
</p>

## Requirements
- [Node.js](https://nodejs.org/en/) v20 or higher

## Getting Started

This package is available in the Node Package Repository and can be easily installed with [npm](https://docs.npmjs.com/getting-started/what-is-npm) or [yarn](https://yarnpkg.com).

```bash
$ npm i @openally/ephemeral-map
# or
$ yarn add @openally/ephemeral-map
```

## Usage example

```ts
import EphemeralMap, { tSv } from "@openally/ephemeral-map";

const data = [
  ["hello", "world"]
];

// Note: ttl is not mandatory
const em = new EphemeralMap(data, { ttl: 500 });
em.on(EphemeralMap.Expired, (key, value) => {
  console.log(`Identifier '${key}' with value '${value}' has expired!`);
});

em.set(tSv({ ttl: 200 })("key"), "value");
```

## API
EphemeralMap extend from a normal Map. By default the inner TimeStore set his ttl to 0 (which mean that no keys expire). 

### get ttl(): number
Read-only TTL. Return `0` if the class has no ttl.

### emplace(key, handler)
Method inspired from [the TC39 proposal](https://github.com/tc39/proposal-upsert) to add an upsert method on Map.

### static set

Add a pair (key, value) to a Map or EphemeralMap.
If the first argument is a Map then the third argument is ignored.

```ts
const em = new EphemeralMap();

EphemeralMap.set(em, ["foo", "bar"], {
  ttl: 400
});
```

## Events

The EphemeralMap EventEmitter broadcast two distinct events:

- EphemeralMap.Expired (**when a given identifier expire**)
- EphemeralMap.Renewed (**when an identifier TTL is Renewed with add() method**)

> [!WARNING]
> Both value are JavaScript Symbols primitive

## License
MIT
npm package: @openally/github.sdk
Description: Opiniated Node.js Github SDK
Author: GENTILHOMME Thomas
Latest version: 1.1.1

<p align="center"><h1 align="center">
  Github.SDK
</h1></p>

<p align="center">
  Opiniated Node.js Github SDK
</p>

<p align="center">
    <a href="https://github.com/OpenAlly/github.sdk">
      <img src="https://img.shields.io/github/package-json/v/OpenAlly/github.sdk?style=for-the-badge" alt="npm version">
    </a>
    <a href="https://github.com/OpenAlly/github.sdk">
      <img src="https://img.shields.io/github/license/OpenAlly/github.sdk?style=for-the-badge" alt="license">
    </a>
    <a href="https://api.securityscorecards.dev/projects/github.com/OpenAlly/github.sdk">
      <img src="https://api.securityscorecards.dev/projects/github.com/OpenAlly/github.sdk/badge?style=for-the-badge" alt="ossf scorecard">
    </a>
    <a href="https://github.com/OpenAlly/github.sdk/actions?query=workflow%3A%22Node.js+CI%22">
      <img src="https://img.shields.io/github/actions/workflow/status/OpenAlly/github.sdk/node.js.yml?style=for-the-badge" alt="github ci workflow">
    </a>
    <a href="https://github.com/OpenAlly/github.sdk">
      <img src="https://img.shields.io/github/languages/code-size/OpenAlly/github.sdk?style=for-the-badge" alt="size">
    </a>
</p>

## 🚧 Requirements

- [Node.js](https://nodejs.org/en/) version 24 or higher

## 🚀 Getting Started

This package is available in the Node Package Repository and can be easily installed with [npm](https://doc.npmjs.com/getting-started/what-is-npm) or [yarn](https://yarnpkg.com)

```bash
$ npm i @openally/github.sdk
# or
$ yarn add @openally/github.sdk
```

## 👀 Usage

```ts
import { GithubClient } from "@openally/github.sdk";

const github = new GithubClient({
  token: process.env.GITHUB_TOKEN
});

for await (const pr of github.repos.nodejs.node.pulls()) {
  console.log(pr.title);
}

const tags = await github.repos.OpenAlly["github.sdk"].tags();

const userRepos = await github.users.torvalds.repos();
```

## 📚 API

- [ApiEndpoint](./docs/api/ApiEndpoint.md)
- [GithubClient](./docs/api/GithubClient.md)

Available GitHub APIs:

- [repos](./docs/api/repos.md)
- [users](./docs/api/users.md)
- [fetchRawFile](./docs/api/fetchRawFile.md)

---

Proxy provides access to GitHub repository endpoints.

```ts
import { repos } from "@openally/github.sdk";
```

Via GithubClient (recommended for authenticated use)

```ts
import { GithubClient } from "@openally/github.sdk";

const { repos } = new GithubClient({
  token: process.env.GITHUB_TOKEN
});
```

## Contributors ✨

<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
[![All Contributors](https://img.shields.io/badge/all_contributors-2-orange.svg?style=flat-square)](#contributors-)
<!-- ALL-CONTRIBUTORS-BADGE:END -->

Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):

<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->


<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->

<!-- ALL-CONTRIBUTORS-LIST:END -->

## License
MIT
npm package: @openameba/spindle-hooks
Description: Spindle (Ameba Design System) Hooks
Latest version: 1.10.1

# Spindle Hooks

Spindle (Ameba Design System) Hooks

<p align="center">
  <img alt="Spindle" src="./docs/images/components.png" width="400">
</p>

![MIT licence](https://img.shields.io/npm/l/@openameba/spindle-hooks) ![npm](https://img.shields.io/npm/v/@openameba/spindle-hooks)

Spindle Hooksは、Amebaのデザインシステム「Spindle」で定義されたコンポーネントの機能部分にフォーカスし、再利用可能なReact Hooksを提供するライブラリです。様々なタイプのプロジェクトに導入できるように設計されています。

## インストール

```
npm install @openameba/spindle-hooks
```

```
yarn add @openameba/spindle-hooks
```

## 利用方法

Spindle Hooksは以下のように利用できます。

```js
import { render } from 'react-dom';
import ReactDOM from 'react-dom';
import { useTimeDistance } from '@openameba/spindle-hooks';

function App() {
  const publishedAt = '2022-03-11T01:15:51.237Z';
  const [dateString] = useTimeDistance(publishedAt);
  return <time datetime={publishedAt}>{dateString}</time>;
}

ReactDOM.render(<App />, document.querySelector('#app'));
```

Spindle HooksはSpindle UIと同様にmodule版の配信もしています。利用する際には、[導入ガイド](https://github.com/openameba/spindle/pull/175)を参考にしてください(リンク先はspindle-uiなのでspindle-hooksに置き換えてください)。

## Hooks 一覧

利用可能なReact Hooksは、[Storybook](https://ameba-spindle-hooks.web.app/)で公開されています。

## ブラウザサポート

Spindle HooksはGoogle Chrome最新版で動作確認しています。それ以外のブラウザでは[Amebaの推奨環境](https://helps.ameba.jp/faq/others/5510/top_08.html)に基づき表示・動作に問題がある場合は対応していきます。

## 開発方法

```
yarn install
yarn dev # storybookが起動します
```

新規Hooksを追加する際には利用方法がイメージしやすいようにStorybookも追加します。
必要に応じてユニットテストも追加します。

ユニットテストは以下のように実行します。

```sh
yarn test:interaction
```

## ライセンス

Spindle HooksはMITライセンスで公開されています。ただし、アイコンは[Spindle Icons](../spindle-icons/)に準じて、Creative Commons BY-NC-ND 4.0ライセンスで公開されています。

## 関連ドキュメント

- [Design Doc](docs/design-doc.md)
npm package: @openameba/spindle-syntax-themes
Description: Spindle syntax themes
Latest version: 2.2.1

# Spindle Syntax Themes

Spindle Syntax Themesは、Spindleで定義された色を利用したコードシンタックステーマ(CSS)です。LightテーマとDarkテーマが用意されており、どちらも背景色とテキスト色のコントラスト比を担保するように作成されています。

実際のコードに適用されたスタイルは、[サンプルページ](https://ameba-spindle-syntax.web.app/)で閲覧できます。

## テーマ

### Light
![Lightテーマのスクリーンショット](./spindle-light.png)

### Dark
![Darkテーマのスクリーンショット](./spindle-dark.png)

# Usage
Spindle Syntax Themesを利用するには、npm経由で読み込む(推奨)もしくは、CDN経由で読み込む方法があります。現在は、Highlight.jsに対応しています。Highlight.jsの使い方は[公式サイト](https://highlightjs.org/)を参照してください。

## npm or Yarn
```
npm install @openameba/spindle-syntax-themes
```

```
yarn add @openameba/spindle-syntax-themes
```

インストールしたCSSは、SassやPostCSSなどで読み込んで利用します。

```css
@import '@openameba/spindle-syntax-themes/highlightjs-light.css'
```

```css
@import '@openameba/spindle-syntax-themes/highlightjs-dark.css'
```

## CDN
```html
<link rel="stylesheet" href="https://unpkg.com/@openameba/spindle-syntax-themes@0.1.0/highlightjs-light.min.css">
```

```html
<link rel="stylesheet" href="https://unpkg.com/@openameba/spindle-syntax-themes@0.1.0/highlightjs-dark.min.css">
```

HTMLからCDNを経由して直接読み込みます。CDNの配信のため、サイトの表示速度に影響を及ぼす可能性があります。

## バージョニング
### 0.x, 1.x
Highlight.jsのバージョン10と互換性があります。それ以外のバージョンでも利用できる可能性はありますが、動作確認していません。
npm package: @openanalystinc/openanalyst-cli
Description: OpenAnalyst CLI - The Universal AI Agent for Your Terminal. 8 providers (OpenAnalyst, Anthropic Claude, OpenAI GPT, Google Gemini, xAI Grok, OpenRouter, Amazon Bedrock, Stability AI), 65+ slash commands, 22 built-in tools, smart model routing, multi-agent
Author: OpenAnalyst Inc
Latest version: 2.0.29