open-index/open-npm huggingface dataset:
npm package: @tagoro9/eslint-config-typescript
Description: Tagoro9 eslint configuration for TS projects
Author: Victor Mora
Latest version: 1.2.0

# `@tagoro9/eslint-config-typescript`

Tagoro9 configuration for typescript projects

## Usage

- Install peer dependencies

```
npx install-peerdeps --dev @tagoro9/eslint-config-typescript
```

- Extend your eslint configuration:

```
"extends": "@tagoro9/eslint-config-typescript"
```
npm package: @tagoro9/promise-utils
Description: Set of utility functions to use when working with promises
Author: Victor Mora
Latest version: 1.1.0

# `@tagoro9/promise-utils`

Set of utility functions to use when working with promises

## Installation

```bash
yarn add @tagoro9/promise-utils
```

Or with npm

```
npm install @tagoro9/promise-utils
```

## Usage

Import the functions that you want to use from the module

## Functions

* `series`. Execute an array of promise providers in series and return an array with the result of all promises

```js
import {series} from '@tagoro9/promise-utils';
async function main() {
  const data = await series([
    () => Promise.resolve(1),
    () => Promise.resolve(2)
  ]); // [1, 2]
}
```
npm package: @tagplus/playwright-api-client
Description: Fixture de API para Playwright, pronta para reuso
Author: Lucas Donato
Latest version: 3.2.0

# 🎭 Playwright API Client

Um plugin para **Playwright** que facilita chamadas de **APIs** nos testes automatizados, fornecendo um **cliente HTTP simples e tipado**, além de um `expect` customizado para asserções mais flexíveis.

---

## 🚀 Instalação

```bash
npm install playwright-api-client
# ou
yarn add playwright-api-client
```

---

## 📦 O que esse plugin faz?

- Fornece um **cliente de API** pronto para usar em testes Playwright.
- Suporte aos métodos: `GET`, `POST`, `PUT`, `PATCH`, `DELETE`.
- Retorno padronizado: `{ status, body }`.
- Integração automática com variáveis de ambiente (`API_BASE_URL`, `TOKEN`).
- `expect` customizado com matcher para ignorar chaves no `toMatchObject`.

---

## 🧑‍💻 Uso

### 1. Importando o `test` e `expect`

```ts
import { test, expect, apiClient } from 'playwright-api-client'
```

### 2. Criando um cliente de API

```ts
test('exemplo de chamada de API', async () => {
  const api = await apiClient()

  const { status, body } = await api.get('/users')

  expect(status).toBe(200)
  expect(body).toMatchObject([{ id: expect.any(Number), name: expect.any(String) }])
})
```

### 3. Usando `failOnStatusCode`

Se quiser que a request falhe automaticamente em status diferente de `2xx`, ative a opção:

```ts
const api = await apiClient({ failOnStatusCode: true })

await api.get('/rota-invalida') 
// ❌ Lança erro automaticamente se não for 200-299
```

### 4. Expect customizado (`toMatchObjectIgnoringKeys`)

Permite comparar objetos **ignorando chaves específicas**:

```ts
test('comparando objetos ignorando chave', () => {
  const received = { id: 123, nome: 'ldonato', criadoEm: '2025-08-25' }
  const expected = { id: expect.any(Number), nome: 'ldonato' }

  expect(received).toMatchObjectIgnoringKeys(expected, ['criadoEm'])
})
```

---

## 🛠 API

### `apiClient(options?)`

Cria um cliente de API.

- **Parâmetros**
  - `failOnStatusCode?: boolean` → (default: `false`) Se `true`, lança erro em respostas não-2xx.
- **Retorno**
  - `ApiClient` com métodos: `get`, `post`, `put`, `patch`, `delete`.

---

## 📖 Exemplo Completo

```ts
import { test, expect, apiClient } from 'playwright-api-client'

test.describe('API Users', () => {
  test('deve listar usuários', async () => {
    const api = await apiClient()

    const { status, body } = await api.get('/users')

    expect(status).toBe(200)
    expect(body.length).toBeGreaterThan(0)
  })

  test('deve criar usuário', async () => {
    const api = await apiClient()

    const { status, body } = await api.post('/users', {
      data: { name: 'ldonato', email: 'ldonato@test.com' }
    })

    expect(status).toBe(201)
    expect(body).toMatchObject({ name: 'ldonato', email: 'ldonato@test.com' })
  })
})
```
npm package: @tagproject/base-shared-config
Description: Base shared config for tagproject packages
Author: Daniil Ryazanov
Latest version: 4.0.6

<p align="center"><img src="https://cdn.jsdelivr.net/gh/tagproject/art/packages/base-shared-config/banner.svg" alt="Package logo"></p>

<p align="center">
    <a href="https://github.com/tagproject/base-shared-config/actions"><img src="https://github.com/tagproject/base-shared-config/actions/workflows/build.yml/badge.svg" alt="Build Status"></a>
    <a href="https://www.npmjs.com/package/@tagproject/base-shared-config"><img alt="npm" src="https://img.shields.io/npm/v/@tagproject/base-shared-config.svg"></a>
    <a href="https://github.com/keindev/standard-shared-config"><img src="https://img.shields.io/badge/standard--shared--config-config-green?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAfCAYAAACh+E5kAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJQSURBVHgB1VftUcMwDFU4/tMNyAZ0A7IBbBA2CExAmIBjApcJChO0TFA2SJkgMIGRyDNV3TSt26RN353OX/LHUyTZIdoB1tqMZcaS0imBDzxkeWaJWR51SX0HrJ6pdsJyifpdb4loq3v9A+1CaBuWMR0Q502DzuJRFD34Y9z3DXIRNy/QPWKZY27COlM6BtZZHWMJ3CkVa28KZMTJkDpCVLOhs/oL2gMuEhYpxeenPPah9EdczLkvpwZgnQHWnlNLiNQGYiWx5gu6Ehz4m+WNN/2i9Yd75CJmeRDXogbIFxECrqQ2wIvlLBOXaViuYbGQNSQLFSGZyOnulb2wadaGnyoSSeC8GBJkNDf5kloESAhy2gFIIPG2+ufUMtivn/gAEi+Gy4u6FLxh/qer8/xbLq7QlNh6X4mbtr+A3pylDI0Lb43YrmLmXP5v3a4I4ABDRSI4xjB/ghveoj4BCVm37JQADhGDgOA+YJ48TSaoOwKpt27aOQG1WRES3La65WPU3dysTjE8de0Aj8SsKS5sdS9lqCeYI08bU6d8EALYS5OoDW4c3qi2gf7f+4yODfj2DIcqdVzYKnMtEUO7RP2gT/W1AImxXSC3i7R7rfRuMT5G2xzSYzaCDzOyyzDeuNHZx1a3fOdJJwh28fRwwT1QY6Xzf7TvWG6ob/BIGPQ59ymUngRyRn2El6Fy5T7G0zl+JmoC3KRQXyT1xpfiJKIeAemzqBl6U3V5ocZNf4hHg61u223wn4nOqF8IzvF9IxCMkyfQ+i/lnnhlmW6h9+Mqv1SmQhehji4JAAAAAElFTkSuQmCC" alt="Standard Shared Config"></a>
</p>

[Standard Shared Config](https://github.com/keindev/standard-shared-config) for `tagproject` packages with **shared configs**

## Install

```console
npm install @tagproject/base-shared-config --save-dev
```

## Usage

- Add `"prepare:config": "base-shared-config"` to `scripts` property in your `package.json`
- Rename your `prepare` scripts to `prepare:[NAME]`
- Add `"prepare": "run-s prepare:*"`
- Run `npm run prepare`

## Configs

### extract actions and hooks:

- `.github`
- `.husky`

### merge files:

- `.husky/commit-msg`
- `.gitignore`
- `.npmignore`

### append to `package.json`:

#### scripts:

- `build` - build shared config
- `generate` - run all `generate:*`
- `generate:changelog` - generate changelog
- `prepare` - run all `prepare:*`
- `prepare:config` - rebuild local configs
- `prepare:husky` - install husky hooks
- `release` - lint, build config, generate changelog and bump package version

#### dependencies:

- [changelog-guru](https://www.npmjs.com/package/changelog-guru): `4.x`
- [husky](https://www.npmjs.com/package/husky): `9.x`
- [npm-run-all](https://www.npmjs.com/package/npm-run-all): `4.x`

#### configure:

```json
{
  "exports": "./lib/index.js",
  "manager": "npm",
  "type": "module",
  "types": "./lib/index.d.ts"
}
```
npm package: @tagproject/vscode-shared-config
Description: Standard shared config for tagproject packages with Node.js and TypeScript
Author: Daniil Ryazanov
Latest version: 4.0.4

<p align="center"><img src="https://cdn.jsdelivr.net/gh/tagproject/art/packages/vscode-shared-config/banner.svg" alt="Package logo"></p>

<p align="center">
    <a href="https://github.com/tagproject/vscode-shared-config/actions"><img src="https://github.com/tagproject/vscode-shared-config/actions/workflows/build.yml/badge.svg" alt="Build Status"></a>
    <a href="https://www.npmjs.com/package/@tagproject/vscode-shared-config"><img alt="npm" src="https://img.shields.io/npm/v/@tagproject/vscode-shared-config.svg"></a>
    <a href="https://github.com/keindev/standard-shared-config"><img src="https://img.shields.io/badge/standard--shared--config-nodejs%2Bts-green?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAfCAYAAACh+E5kAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJQSURBVHgB1VftUcMwDFU4/tMNyAZ0A7IBbBA2CExAmIBjApcJChO0TFA2SJkgMIGRyDNV3TSt26RN353OX/LHUyTZIdoB1tqMZcaS0imBDzxkeWaJWR51SX0HrJ6pdsJyifpdb4loq3v9A+1CaBuWMR0Q502DzuJRFD34Y9z3DXIRNy/QPWKZY27COlM6BtZZHWMJ3CkVa28KZMTJkDpCVLOhs/oL2gMuEhYpxeenPPah9EdczLkvpwZgnQHWnlNLiNQGYiWx5gu6Ehz4m+WNN/2i9Yd75CJmeRDXogbIFxECrqQ2wIvlLBOXaViuYbGQNSQLFSGZyOnulb2wadaGnyoSSeC8GBJkNDf5kloESAhy2gFIIPG2+ufUMtivn/gAEi+Gy4u6FLxh/qer8/xbLq7QlNh6X4mbtr+A3pylDI0Lb43YrmLmXP5v3a4I4ABDRSI4xjB/ghveoj4BCVm37JQADhGDgOA+YJ48TSaoOwKpt27aOQG1WRES3La65WPU3dysTjE8de0Aj8SsKS5sdS9lqCeYI08bU6d8EALYS5OoDW4c3qi2gf7f+4yODfj2DIcqdVzYKnMtEUO7RP2gT/W1AImxXSC3i7R7rfRuMT5G2xzSYzaCDzOyyzDeuNHZx1a3fOdJJwh28fRwwT1QY6Xzf7TvWG6ob/BIGPQ59ymUngRyRn2El6Fy5T7G0zl+JmoC3KRQXyT1xpfiJKIeAemzqBl6U3V5ocZNf4hHg61u223wn4nOqF8IzvF9IxCMkyfQ+i/lnnhlmW6h9+Mqv1SmQhehji4JAAAAAElFTkSuQmCC" alt="Standard Shared Config"></a>
</p>

[Standard Shared Config](https://github.com/keindev/standard-shared-config) for `vscode`

## Install

```console
npm install @tagproject/vscode-shared-config --save-dev
```

## Usage

- Add `"prepare:vscode": "vscode-shared-config"` to `scripts` property in your `package.json`
- Rename your `prepare` scripts to `prepare:[NAME]`
- Add `"prepare": "run-s prepare:*"`
- Run `npm run prepare`

## Configs

### extract configs:

- `.editorconfig`
- `.prettierrc`

### merge files:

- `.gitignore`
- `.npmignore`
- `.prettierignore`
- `.vscode/cspell.json`
- `.vscode/launch.json`
- `.vscode/settings.json`

### append to `package.json`:

#### scripts:

- `prepare` - run all `prepare:*`
- `prepare:vscode` - extract and merge vscode configs
- `lint` - run linting
- `lint:spell` - run spell check

#### dependencies:

- [prettier](https://www.npmjs.com/package/prettier): `3.x`
- [cspell](https://www.npmjs.com/package/cspell): `8.x`
- [npm-run-all](https://www.npmjs.com/package/npm-run-all): `4.x`
npm package: @tagspaces/extensions
Description: Providing support for legacy TagSpaces extensions
Author: TagSpaces GmbH
Latest version: 1.0.237

# Overview

This repository contains the viewer and editor extensions delivered by default with TagSpaces products.

## Publishing new version

Update the version in the main package.json

Update the version in package.json of the updated extension if available (e.g. md-editor/package.json)

Run the publishing script

    npm run pkg-publish
npm package: @taharactrl/utils
Description: nodejs custom utility library
Author: Kohei Tahara
Latest version: 0.3.1

# node-utils

This node library is utility function package, especially JSON object access.

## Install

```
$ npm install --save @taharactrl/utils
```

## Usage

## Subtract JSON (`subtractJSON`)

```
const _utils = require('@taharactrl/utils');

const jsonA = {
  a1: "hoge",
  a2: "foo",
  a3: [123],
};

const jsonB = {
  a1: "hoge",
  a2: "foo",
};

const ret1 = _utils.subtractJSON(jsonA, jsonB)
console.log(ret1)
// => ['a3']

const ret2 = _utils.subtractJSON(jsonB, jsonA)
console.log(ret2)
// => []

```

## Difference JSON (`differenceJSON`)

```
const _utils = require('@taharactrl/utils');

const jsonA = {
  a1: "hoge",
  a2: "foo",
  a3: [123],
  a5: [1]
};

const jsonB = {
  a1: "hoge",
  a2: "foo",
  a4: [234],
  a5: [2]
};

const ret = _utils.differenceJSON(jsonA, jsonB)
console.log(ret1)
// => ["a3", "a5.0", "a4"]
```

## Detect recursive object (`detectRecursiveObject`)

```
const _utils = require('@taharactrl/utils');

class A {
  constructor(){
    this.a = {b: this}
    this.c = this;
    this.d = [this];
  }
}

const a = new A();

const ret = _utils.detectRecursiveObject(a);
console.log(ret)
// => ['a.b', 'c', 'd.0']

```

## Include JSON (`includeJSON`)

```
const _utils = require('@taharactrl/utils');

const jsonA = {
  a1: "hoge",
  a2: "foo",
  a3: [123],
};

const jsonB = {
  a1: "hoge",
  a2: "foo",
};

const ret1 = _utils.includeJSON(jsonA, jsonB)
console.log(ret1)
// => true

const ret2 = _utils.includeJSON(jsonB, jsonA)
console.log(ret2)
// => false
```

## Equal JSON (`equalJSON`)

```
const _utils = require('@taharactrl/utils');

const jsonA = {
  a1: "hoge",
  a2: "foo",
  a3: [123],
};

const jsonB = {
  a1: "hoge",
  a2: "foo",
};

const jsonC = {
  a1: "hoge",
  a2: "foo",
  a3: [123],
};

const ret1 = _utils.equalJSON(jsonA, jsonB)
console.log(ret1)
// => false

const ret2 = _utils.equalJSON(jsonA, jsonC)
console.log(ret2)
// => true
```

## Merge objects (`mergeObjects`)

```
const _utils = require('@taharactrl/utils');

let jsonA = {
  a1: "hoge",
  a2: "foo",
  a3: [123],
};

const jsonB = {
  a1: "hoge",
  a2: "hei",
  a4: [234],
};

const mergedObject = _utils.equalJSON(jsonA, jsonB)
console.log(mergedObject);
// => { "a1": "hoge", "a2": "hei", "a3": [123], "a4": [234]}

// if you want to apply the results to the original object.
jsonA = _utils.equalJSON(jsonA, jsonB)
```