open-index/open-npm huggingface dataset:
npm package: @rethunk/mcp-multi-root-git
Description: MCP stdio server: multi-root git status, inventory, and HEAD parity checks. Generic tools usable by any workspace.
Author: Rethunk-AI
Latest version: 1.0.0

# @rethunk/mcp-multi-root-git

[![CI](https://github.com/Rethunk-AI/mcp-multi-root-git/actions/workflows/ci.yml/badge.svg)](https://github.com/Rethunk-AI/mcp-multi-root-git/actions/workflows/ci.yml)
[![Release](https://github.com/Rethunk-AI/mcp-multi-root-git/actions/workflows/release.yml/badge.svg)](https://github.com/Rethunk-AI/mcp-multi-root-git/actions/workflows/release.yml)
[![GitHub release](https://img.shields.io/github/v/release/Rethunk-AI/mcp-multi-root-git?logo=github&label=release)](https://github.com/Rethunk-AI/mcp-multi-root-git/releases/latest)
[![npm version](https://img.shields.io/npm/v/%40rethunk%2Fmcp-multi-root-git.svg)](https://www.npmjs.com/package/@rethunk/mcp-multi-root-git)
[![npm downloads](https://img.shields.io/npm/dm/%40rethunk%2Fmcp-multi-root-git.svg?label=npm%20downloads)](https://www.npmjs.com/package/@rethunk/mcp-multi-root-git)
[![GitHub Packages](https://img.shields.io/badge/github%20packages-%40rethunk--ai%2Fmcp--multi--root--git-24292f?logo=github)](https://github.com/Rethunk-AI/mcp-multi-root-git/pkgs/npm/mcp-multi-root-git)
[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
[![Node.js](https://img.shields.io/badge/node-%3E%3D22-339933.svg)](https://github.com/Rethunk-AI/mcp-multi-root-git/blob/main/package.json)

Read-only **git** tools over MCP (status, multi-root inventory, `HEAD` parity, presets). **Install and MCP client wiring:** **[docs/install.md](docs/install.md)** only — do not duplicate those steps elsewhere.

**Repository:** [github.com/Rethunk-AI/mcp-multi-root-git](https://github.com/Rethunk-AI/mcp-multi-root-git) · **npmjs (manual releases):** [`@rethunk/mcp-multi-root-git`](https://www.npmjs.com/package/@rethunk/mcp-multi-root-git) · **GitHub Packages (CI on each tag):** [`@rethunk-ai/mcp-multi-root-git`](https://github.com/Rethunk-AI/mcp-multi-root-git/pkgs/npm/mcp-multi-root-git) — see [docs/install.md](docs/install.md) and [HUMANS.md](HUMANS.md) Publishing.

## Documentation

| Doc | Audience |
|-----|----------|
| **[docs/install.md](docs/install.md)** | Single source for prerequisites, running the package, and every supported MCP client (plus from-source and troubleshooting) |
| **[docs/mcp-tools.md](docs/mcp-tools.md)** | Tool ids, client naming, `format` / JSON, resource URI, workspace root resolution (canonical reference) |
| **[HUMANS.md](HUMANS.md)** | Preset file, dev commands, CI, publishing |
| **[AGENTS.md](AGENTS.md)** | Contributors: implementation map ([`src/server/`](src/server/) + entry [`src/server.ts`](src/server.ts)), contract bumps, CI (IDEs that inject this file as project context should not re-link it from rules) |

**Tools at a glance:** see the table in **[docs/mcp-tools.md](docs/mcp-tools.md)**.
npm package: @retil/source
Description: A reactive source
Author: James K Nelson
Latest version: 0.5.7

# `@retil/source`

Create and combine asynchronous data sources that work great with React Concurrent Mode.

```bash
npm install --save @retil/source
```

## Sources don't always have values

Why should a data source return a value before it has one?

```tsx
import { createStateService, hasSnapshot } from 'retil'

const [stateSource, setState] = createStateService()
const [getState, subscribe] = stateSource

getState() // throws a promise that resolves to the first value.

setState('yo!')

getState() // now it returns 'yo!'
```

## Examples

Say you have a source that switches between having a value, and *not* having a value -- e.g. because it maps an id to data on a remote server. But you still want to display the latest value.

```ts
import { Source, fuse } from 'retil'

export const fallbackToMostRecent = <T>(source: Source<T>): Source<T> => {
  let fallback: [T] | [] = []
  return fuse(use => {
    const value = use(source, ...fallback)
    fallback = [value]
    return value
  })
}
```

Maybe as well as remembering the most recent value, you'd also like to set a flag indicating whether the source is missing a current value. To do this, you can `use` your source *twice*, with different fallback values. Don't worry, `fuse` will only subscribe to the source once!

```ts
const missingFlag = Symbol('missing')

export function addBusyFlag<T, U>(
  source: Source<T>,
  build: (snapshot: T, flag: boolean) => U,
): Source<U> {
  let fallback: [T] | [] = []
  return fuse((use) => {
    const value = use(source, ...fallback)
    const valueOrFlag = use(source, missingFlag)
    fallback = [value]
    return build(value, valueOrFlag === missingFlag)
  })
}
```
npm package: @retil/tool-vite-plugin-code-as-content
Description: Write your doc with the code-as-content paradigm – using React and MDX
Author: James K Nelson
Latest version: 0.28.4

## Overview

This Vite config helps you create React websites which that follow a Code As Content paradigm. To facilitate this, it gives you:

- Basic MDX support
- Improved typography
- Syntax highlighting
- Front matter support
- Support for glob-importing front matter or syntax-highlighted versions of your source files


## For contributors

At the time of writing, this package structures its distributables and build system differently to most other packages in this repository. While other packages build both CommonJS and ES Modules distributables, this package builds only ESM, and provides a pre-made CommonJS wrapper to load the ESM build output when CommonJS is required.

This structure is due to the fact that many content processing modules do not provide CommonJS outputs, which means they cannot be imported directly in CommonJS-based vite servers.
npm package: @retiolum/football-data
Description: Collection of data about football as JSON files for use in other JavaScript projects
Author: Thomas Off
Latest version: 1.1.0
Deprecated: Package has been renamed to @ntzrbtr/football-data

# Football data

This repository assembles footbal data as JSON files suitable for use within JavaScript projects (though as it is JSON, the data is generally usable with any programming language offering JSON support, e.g. PHP).

The data is grouped into topics and contains the data in different languages (currently only German is available).


## Data sets

The following data sets are currently available:

- List of finals in European cups


## Installation

`npm install @retiolum/football-data`


## Usage


### Node

```javascript
const footballData = require('@retiolum/football-data');

console.log(footballData.uefaCup);
```


### Web/ES6

Import everything:

```javascript
import * as footballData from '@retiolum/football-data';

console.log(footballData.uefaCup);
```

Or import only the things you need:

```javascript
import { uefaCup } from '@retiolum/football-data';

console.log(uefaCup);
```


## Raw data

The repository also contains the raw data used to create the JSON data; each raw data set includes a description where the data is from and how the conversion to JSON was done.
npm package: @retirable/component-library
Description: This package represents Retirable's component library [npm package](https://www.npmjs.com/package/@retirable/component-library). Download instructions:
Latest version: 1.12.2

# @retirable/component-library

This package represents Retirable's component library [npm package](https://www.npmjs.com/package/@retirable/component-library).
Download instructions:

```
yarn add @retirable/component-library
```

## Contributing:

If interested in contributing, please email ian@retirable.com.

File structure rules:

- Components are consolidated into folders with similar components - for example all buttons live within the `buttons` folder.
- The styles associated with a particular component are defined in the same file that the component is defined within.
- If a style is used in all the components within a particular folder, but does not itself have its own component, that style is defined within a `styles` folder and the file is named `base[CategoryOfComponent]Styles`.

## Versioning:

Our component library uses semantic versioning conventions. The following provides a summary of this pattern.

[MAJOR].[MINOR].[PATCH]

- The major version should be updated when a change breaks services that currently use the library. As an example, if a required prop is added to an existing component, updating to the latest version of the package will cause the existing components to break.
- Minor versions should be updated when additional functionality, albeit non-breaking, is introduced. As an example, if a new variant is added to a component, the minor version should be updated.
- Patch versions should be updated when backwards-compatible bugs are fixed.

Additional resources:

- https://semver.org/
- https://docs.npmjs.com/about-semantic-versioning
npm package: @retirable/eslint-config
Description: Shared eslint config
Latest version: 1.0.1

# @retirable/eslint-config

This repository houses Retirable's eslint configurations for use across Retirable's various codebases.

Download instructions:

```
yarn add @retirable/eslint-config
```

Contributing:
If interested in contributing, please email ian@retirable.com.

# Making contributions

All code changes should be submitted as a PR for peer review before being merged.

To keep a clean git history, we use the [Squash-and-Merge](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/about-pull-request-merges) workflow. Please follow [Chris Beam's](https://chris.beams.io/posts/git-commit/) guidelines for good git-commit messages when merging your branch.
npm package: @retn0/eslint-config
Description: 🧹 My custom ESLint configuration
Author: nbsp1221
Latest version: 1.1.0

# @retn0/eslint-config

[![npm version](https://img.shields.io/npm/v/@retn0/eslint-config)](https://www.npmjs.com/package/@retn0/eslint-config)
[![npm downloads](https://img.shields.io/npm/dm/@retn0/eslint-config)](https://www.npmjs.com/package/@retn0/eslint-config)

Comprehensive ESLint configuration with code quality and style enforcement.

## Requirements

- [Node.js](https://nodejs.org) 22.0.0 or higher
- [ESLint](https://eslint.org) 9.29.0 or higher
- [TypeScript](https://www.typescriptlang.org) 5.0.0 or higher (if using TypeScript)
- [React](https://react.dev) 19.0.0 or higher (if using React)

## Installation

```sh
# npm
npm install -D eslint @retn0/eslint-config

# pnpm
pnpm add -D eslint @retn0/eslint-config

# yarn
yarn add -D eslint @retn0/eslint-config
```

## Usage

Create an `eslint.config.js` file in the root of your project:

```js
import { createConfigs } from '@retn0/eslint-config';
import { defineConfig } from 'eslint/config';

export default defineConfig([
  ...createConfigs(),

  // Add your custom configurations here
]);
```

You can customize the configuration by passing options to `createConfigs()`. Here are the default values:

```js
...createConfigs({
  js: true,
  ts: true,
  stylistic: true,
  perfectionist: {
    internalPattern: ['^@/.*', '^~/.*'],
  },
  react: true,
  oxlint: false,
})
```

## License

MIT © [nbsp1221](https://github.com/nbsp1221)
npm package: @retn0/oxlint-config
Description: 🧹 My custom Oxlint configuration
Author: nbsp1221
Latest version: 1.1.0

# @retn0/oxlint-config

[![npm version](https://img.shields.io/npm/v/@retn0/oxlint-config)](https://www.npmjs.com/package/@retn0/oxlint-config)
[![npm downloads](https://img.shields.io/npm/dm/@retn0/oxlint-config)](https://www.npmjs.com/package/@retn0/oxlint-config)

High-performance Oxlint configuration for fast linting.

## Requirements

- [Node.js](https://nodejs.org) 22.0.0 or higher
- [Oxlint](https://oxc.rs) 1.3.0 or higher

## Installation

```sh
# npm
npm install -D oxlint @retn0/oxlint-config

# pnpm
pnpm add -D oxlint @retn0/oxlint-config

# yarn
yarn add -D oxlint @retn0/oxlint-config
```

## Usage

Create a `.oxlintrc.json` file in the root of your project:

```json
{
  "extends": ["./node_modules/@retn0/oxlint-config/index.jsonc"]
}
```

## License

MIT © [nbsp1221](https://github.com/nbsp1221)
npm package: @retoken/crypter
Description: Crypto-vector encryptor & decryptor
Author: Danil Shaymurzin
Latest version: 0.0.11

# @retoken/crypter

Thanks to __[Gauthier](https://github.com/GauthierD-)__ for the __[@rlvt/crypt](https://www.npmjs.com/package/@rlvt/crypt)__ package, on the basis of which this package was created

## Install

```sh
$ npm i @retoken/crypter
```

## Tests

```sh
$ npm test
```

## Example
```javascript
const crypter = require('@retoken/crypter')

const [TEXT, PASSWORD] = ['Aliase Network', 'Open Source Initiative <3 for everyone']

const encrypt = async (resolver) => {
    await 
        crypter
        .encrypt(TEXT, PASSWORD)
            .then(resolver)
            .catch(console.error)
}
const decrypt = async (resolver, KEY) => {
    await 
        crypter
        .decrypt(KEY, PASSWORD)
            .then(resolver)
            .catch(console.error)
}

encrypt(console.log) // ZmYyM2QwZWUwNDgyYzMzM2IzMTJhODFlNTVkMGM1MTA=

encrypt(key => {
    decrypt(console.log, key) // Aliase Network
})
```

#### crypter.encrypt(TEXT, PASSWORD)

- `encrypt` <[Function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function)>
  - `TEXT` <[String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)> Text for encryption
  - `PASSWORD` <[String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)>

- returns: <[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)<[String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)>>

#### crypter.decrypt(TEXT, PASSWORD)

- `decrypt` <[Function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function)>
  - `TEXT` <[String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)> Сipher text
  - `PASSWORD` <[String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)>

- returns: <[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)<[String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)>>
npm package: @retoken/salter
Description: Crypto-vector-salt encryptor & decryptor
Author: Danil Shaymurzin
Latest version: 0.0.2

# @retoken/salter


## Install

```sh
$ npm i @retoken/salter
```

## Tests

```sh
$ npm test
```

## Example
```javascript
const salter = require('@retoken/salter')

const [
        TEXT, 
        PASSWORD,
        SALTDEEP,
    ] = [
        'Aliase Network', 
        'Open Source Initiative <3 for everyone',
        4 // 1 === @retoken/crypter mode
    ]

const encrypt = async (resolver) => {
    await 
        salter
        .encrypt(TEXT, PASSWORD, SALTDEEP)
            .then(resolver)
            .catch(console.error)
}
const decrypt = async (resolver, KEY) => {
    await 
        salter
        .decrypt(KEY, PASSWORD)
            .then(resolver)
            .catch(console.error)
}

encrypt(console.log) // Encoded

encrypt(key => {
    decrypt(console.log, key) // Aliase Network
})
```

#### crypter.encrypt(TEXT, PASSWORD)

- `encrypt` <[Function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function)>
  - `TEXT` <[String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)> Text for encryption
  - `PASSWORD` <[String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)>
  - `SALTDEEP` <[Number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)> Deep encryption level
- returns: <[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)<[String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)>>

#### crypter.decrypt(TEXT, PASSWORD)

- `decrypt` <[Function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function)>
  - `TEXT` <[String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)> Сipher text
  - `PASSWORD` <[String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)>

- returns: <[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)<[String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)>>
npm package: @retoken/shash
Description: Hashing made Fast & Simple. Get hash of a Object & String
Author: Danil Shaymurzin
Latest version: 0.0.1

# @retoken/shash

## Install

```sh
$ npm i @retoken/shash
```

## Tests

```sh
$ npm test
```

## Example
```javascript
const shash = require('@retoken/shash')

const options = {
    key: 3301,
    salt: 33
}

const TEXT = 'Aliase Network'

shash(TEXT, options)
    .then(r => console.log('With options:', r))

shash(TEXT)
    .then(r => console.log('Without options:', r))

const object = {
    firstname: 'Danil',
    lastname: 'Shaymurzin'
}

shash(object)
    .then(r => console.log('Object:', r))
```

#### shash(TEXT, OPTIONS)

- `shash` <[Function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function)>
  - `TEXT` <[String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)> Text for hashing
  - `OPTIONS` <[?Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)>
    - `key` <[?Number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type)> 
    - `salt` <[?Number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Number_type)>
    
- returns: <[Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)<[String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)>>
npm package: @retools/retools-linux-arm-gnueabihf
Description: This is the **armv7-unknown-linux-gnueabihf** binary for `@retools/retools`
Latest version: 0.1.11

# `@retools/retools-linux-arm-gnueabihf`

This is the **armv7-unknown-linux-gnueabihf** binary for `@retools/retools`
npm package: @retools/retools-linux-x64-musl
Description: This is the **x86_64-unknown-linux-musl** binary for `@retools/retools`
Latest version: 0.1.11

# `@retools/retools-linux-x64-musl`

This is the **x86_64-unknown-linux-musl** binary for `@retools/retools`
npm package: @retools/retools-win32-arm64-msvc
Description: This is the **aarch64-pc-windows-msvc** binary for `@retools/retools`
Latest version: 0.1.11

# `@retools/retools-win32-arm64-msvc`

This is the **aarch64-pc-windows-msvc** binary for `@retools/retools`
npm package: @retools/retools-win32-x64-msvc
Description: This is the **x86_64-pc-windows-msvc** binary for `@retools/retools`
Latest version: 0.1.11

# `@retools/retools-win32-x64-msvc`

This is the **x86_64-pc-windows-msvc** binary for `@retools/retools`
npm package: @retorquere/humanparser
Description: Parse a human name string into salutation, first name, middle name, last name, suffix. Parse an address into address, city, state, zip
Author: Anthony Ettinger
Latest version: 1.11.4

humanparser
=========

[![NPM](https://nodei.co/npm/humanparser.png)](https://nodei.co/npm/humanparser/)

[![Build Status](https://travis-ci.org/chovy/humanparser.svg?branch=master)](https://travis-ci.org/chovy/humanparser) [![Requirements Status](https://requires.io/github/chovy/humanparser/requirements.png?branch=master)](https://requires.io/github/chovy/humanparser/requirements/?branch=master)

Parse a human name string into salutation, first name, middle name, last name, suffix.

## Install

    npm install humanparser

## Usage

    const human = require('humanparser');
    
### parse human name    

    const fullName = 'Mr. William R. Hearst, III';
	const attrs = human.parseName(fullName);

    console.log(attrs);

    //produces the following output
    
    { 
        saluation: 'Mr.',
        firstName: 'William',
        suffix: 'III',
        lastName: 'Hearst',
        middleName: 'R.',
        fullName: 'Mr. William R. Hearst, III'
    }
      
### get fullest name in string

    const name = 'John & Peggy Sue';
    const fullName = human.getFullestName(name);

    //produces the following output
    {
        fullName: 'Peggy Sue'
    }
      
### parse address

    const address = '123 Happy Street, Honolulu, HI  65780';
    const parsed = human.parseAddress(address);
    
    //produces the following output    
    {
        address: '123 Happy Street',
        city: 'Honolulu',
        state: 'HI',
        zip: '65780',
        fullAddress: '123 Happy Street, Honolulu, HI  65780'
    }
npm package: @retorquere/jasmine-fail-fast
Description: Allow Jasmine tests to "fail-fast", exiting on the first failure instead of running all tests no matter what. 
Author: patrick@updater.com
Latest version: 2.0.4

# jasmine-fail-fast [![build status](https://travis-ci.org/Updater/jasmine-fail-fast.svg?branch=master)](https://travis-ci.org/Updater/jasmine-fail-fast)

Allow Jasmine tests to "fail-fast", exiting on the first failure instead of running all tests no matter what. This can save a great deal of time running slow, expensive tests, such as Protractor e2e tests.

This module is a workaround to address the need for a fail-fast option in Jasmine, a feature that has been requested for years:

* https://github.com/jasmine/jasmine/issues/414
* https://github.com/juliemr/minijasminenode/issues/20

Inspired by https://github.com/goodeggs/jasmine-bail-fast, which doesn't seem to be working with Jasmine 2.x.

## Usage
This module is implemented as a Jasmine reporter.

### Jasmine as browser global
```javascript
var failFast = require('jasmine-fail-fast');
jasmine.getEnv().addReporter(failFast.init());
```

### Jasmine Node API
```javascript
var Jasmine = require('jasmine');
var jasmine = new Jasmine();
var failFast = require('jasmine-fail-fast');
jasmine.addReporter(failFast.init());
```

## Examples

### [karma-jasmine](https://github.com/karma-runner/karma-jasmine)
In the Karma configuration file:

```javascript
module.exports = function(config) {
  var failFast = require('jasmine-fail-fast');
  window.jasmine.getEnv().addReporter(failFast.init());
}
```

### [Protractor](https://github.com/angular/protractor)
In the Protractor configuration file:

```javascript
onPrepare: function() {
  var failFast = require('jasmine-fail-fast');
  jasmine.getEnv().addReporter(failFast.init());
}
```

### As a Jasmine helper
Create a new .js file within the [helpers](http://jasmine.github.io/2.3/node.html#section-9) [folder](http://jasmine.github.io/2.3/node.html#section-Load_configuration_from_a_file_or_from_an_object.):

```javascript
//<path-to-helpers>/fail-fast.js
var failFast = require('jasmine-fail-fast');
jasmine.getEnv().addReporter(failFast.init());
```
### grunt-contrib-jasmine
Set up as a helper, [optionally overriding the default helpers path](https://github.com/gruntjs/grunt-contrib-jasmine#optionshelpers).
npm package: @retouche/adapter-github
Description: Adapter to publish changes to GitHub
Author: Luca Goslar
Latest version: 0.0.2

# @retouche/adapter-github

Please see https://retouche.zugriff.eu for more information.

## Usage

Call the Retouche initialisation function within a shared client layout file (e.g. `+layout.svelte`) if possible.  
The editor will only mount if the `edit` key is in the query string.

```ts
// main.ts

import { init } from 'retouche';
import { github } from '@retouche/adapter-github';

init({
  adapter: github({
    owner: 'example',
    repo: 'retouche',
    commit: {
      message: 'retouche: content update',
      committer: {
        name: 'Unknown',
        email: 'retouche@example.com',
      },
    },
  }),
});
```
npm package: @retouche/adapter-gitlab
Description: Adapter to publish changes to GitLab
Author: Luca Goslar
Latest version: 0.0.2

# @retouche/adapter-gitlab

Please see https://retouche.zugriff.eu for more information.

## Usage

Call the Retouche initialisation function within a shared client layout file (e.g. `+layout.svelte`) if possible.  
The editor will only mount if the `edit` key is in the query string.

```ts
// main.ts

import { init } from 'retouche';
import { gitlab } from '@retouche/adapter-gitlab';

init({
  adapter: gitlab({
    project: 1,
    commit: {
      message: 'retouche: content update',
    },
  }),
});
```