open-index/open-npm huggingface dataset:
npm package: @oovo/launchpad
Description: All-in-One Project Init Tool for Devs
Author: oOvo Labs
Latest version: 0.0.14

![launchpad-logo](https://github.com/oovolabs/launchpad/blob/main/assets/logo.png)

# @oovo/launchpad
All-in-One Project Init Tool for Devs
  
Easily Create a Software Project using `npx @oovo/launchpad`

## Supported Fixtures
We currently support the following fixtures:
- 🟢 Next.js

## Work in Progress
We are currently working on adding the following fixtures:
- TypeScript

If you have any suggestions or want to contribute, feel free to open an issue or a pull request.

## Usage
To create a new project, run the following command:
```bash
npx @oovo/launchpad
```

After running the command, you will be prompted to select a fixture. Select the fixture you want and give optional arguments if needed. The project will be created in the current directory. 

## License
MIT
npm package: @oovui/oovui-react
Description: a pretty ui component library built on react
Author: itshizhan
Latest version: 0.1.1
Deprecated: this package has no content

# oovui-react

a pretty ui component library built on  react

### install

`npm install @oovui/oovui-react`

### Docs

[中文文档](http://react.oovui.com)
npm package: @oovui/react
Description: a pretty ui component library built on react
Author: itshizhan@163.com
Latest version: 0.1.0

# oovui-react

a pretty ui component library built on  react

# install

`npm install @oovui/react`

# usage


```js
//App.js
import React from 'react'
import {Grid } from '@oovui/react';
const { Row, Col } = Grid;
class App extends React.Component {
  render () {
    return (
      <div>
        <div className="oov-grid-box">
          <Row gutter="20">
            <Col span={24}>Col 24</Col>
          </Row>
          <Row gutter="20px">
            <Col span={8}>Col 8</Col>
            <Col span={8}>Col 8</Col>
            <Col span={8}>Col 8</Col>
          </Row>
          <Row>
            <Col span={4}>Col 4</Col>
            <Col span={4} offset={4}>Col 4, Offset 4</Col>
            <Col span={4} offset={4}>Col 4, Offset 4</Col>
          </Row>
        </div>
      </div>
    )
  }
}

// index.js
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App.js'
require("oovui/styles/index.css");

// 如果需要使用Icon图标，请单独安装 @oovui/react-feather-icons

ReactDOM.render(<App />, document.getElementById('root'))
```

# Docs

[中文文档](http://react.oovui.com)


# 相关项目

[oovui-vue](http://www.oovui.com)
npm package: @oovui/react-feather-icons
Description: feather icons as React components for react-oovui
Author: itshizhan
Latest version: 0.1.1

# react-feather-icons
feather icons as React components for react-oovui

### install
`npm install @oovui/react-feather-icons`

### Quick Start

```html
<Icon type="x"/>
<Icon type ="circle" size="30" color="red"/>
```

### API props


| props | des | type | default |
| ----- | :-: | :-:  | :-:  |
|type | icon type| String | --|
|size | font-size| String or Number | 18 |
|color | color | String | #000000|



## see all type of icons:

https://feathericons.com
npm package: @oovui/vue
Description: a UI components library based on vue
Author: itshizhan@163.com
Latest version: 0.0.4

# vueui
a UI components library based on vue

# Installation
Install the @oovui/vue package:

```sh
npm i -S @oovui/vue 
# or
yarn add  @oovui/vue 
```
Install the Vue plugin:

```javascript
import Vue from 'vue'
import oovui from '@oovui/vue'

Vue.use(oovui)
```

Import the CSS:

```javascript
import '@oovui/vue/dist/oovui.css';
```

# Warning:

This ui library is Work In Progress, just for study.  Pls do not use it in the production environment。

# Documentation is Work In Progress


# TODO
- [x] color
- [x] font
- [x] utilities
- [x] icon
- [ ] button
- [ ] grid
- [ ] input
- [ ] radio
- [ ] checkbox
- [ ] tab
- [ ] dotdotdot
- [ ] form
- [ ] alert
- [ ] message
- [ ] modal
- [ ] layout
- [ ] datepicker
- [ ] select
- [ ] switch
- [ ] list
- [ ] page
npm package: @ooxml-tools/cli
Description: Command line tools for dealing with Office Open XML files in node.js
Latest version: 0.4.1

<h1>
    <picture>
        <source media="(prefers-color-scheme: dark)" srcset="https://ooxml-tools.github.io/design/images/cli-dark.png">
        <source media="(prefers-color-scheme: light)" srcset="https://ooxml-tools.github.io/design/images/cli-light.png">
        <img alt="@ooxml-tools/cli" height="56" src="https://ooxml-tools.github.io/design/images/cli-light.png">
    </picture>
</h1>

Command line tools for dealing with Office Open XML files in nodejs.

## Usage

```bash
npx @ooxml-tools/cli --help
# ooxml <command> [args]
#
# Commands:
#   pack <ooxmlpath> <dirpath>    pack directory to docx file
#   unpack <ooxmlpath> <dirpath>  unpack docx to a directory
#   list <ooxmlpath>              list files in docx
#   read <ooxmlpath> <filepath>   read file inside docx to sdtout
#   write <ooxmlpath> <filepath>  create/override file in docx
#   init <ooxmlpath>              initializes a blank file (docx)
#   render <ooxmlpath>            render files
#   support <ooxmlpath>           list supported apps for <ooxmlpath>
#   validate <ooxmlpath>          validate docx files
#   convert <from> <to> <value>  convert between units
#
# Options:
#   --version  Show version number                                       [boolean]
#   --help     Show help                                                 [boolean]
#
# Examples:
#   ooxml init ./test.docx
#   ooxml read ./test.docx word/document.xml
#   ooxml render ./test.docx
```

## License

MIT
npm package: @ooxml-tools/file
Description: Read/write Office Open XML files in nodejs/browser
Latest version: 0.6.1

<h1>
    <picture>
        <source media="(prefers-color-scheme: dark)" srcset="https://ooxml-tools.github.io/design/images/file-dark.png">
        <source media="(prefers-color-scheme: light)" srcset="https://ooxml-tools.github.io/design/images/file-light.png">
        <img alt="@ooxml-tools/file" height="56" src="https://ooxml-tools.github.io/design/images/file-light.png">
    </picture>
</h1>

Read/write Office Open XML files in nodejs/browser.

Support for reading and writing to

- ✅ `.docx` — [WordprocessingML](http://officeopenxml.com/anatomyofOOXML.php)
- ✅ `.xlsx` — [SpreadsheetML](http://officeopenxml.com/anatomyofOOXML-xlsx.php)
- 👷 `.pptx` — [PresentationML](http://officeopenxml.com/anatomyofOOXML-pptx.php) (coming soon)

## Usage

The module accepts a [JSZip](https://github.com/Stuk/jszip) instance and adds some additional functionality

```js
import { open, openAsArrayBuffer } from "@ooxml-tools/file";

await zip.loadAsync(openAsArrayBuffer(ooxmlpath));
const doc = open("docx", zip);
console.log(await docx.list());
```

## CLI

```bash
# ooxml-file <command> [args]
#
# Commands:
#   formats                      list valid formats
#   init <ooxmlpath>              initializes a blank file (docx)
#   pack <ooxmlpath> <dirpath>    pack directory to docx file
#   unpack <ooxmlpath> <dirpath>  unpack docx to a directory
#   list <ooxmlpath>              list files in docx
#   read <ooxmlpath> <filepath>   read file inside docx to sdtout
#   write <ooxmlpath> <filepath>  create/override file in docx
#
# Options:
#   --version  Show version number                                       [boolean]
#   --help     Show help                                                 [boolean]
#
# Examples:
#   ooxml-file init ./test.docx
#   ooxml-file unpack ./test.docx test.docx.unpacked
#   ooxml-file pack ./test.docx test.docx.unpacked
#   ooxml-file list ./test.docx
#   ooxml-file read ./test.docx word/document.xml
#   ooxml-file write ./test.docx word/document.xml < input.xml
```

## CI

[![codecov](https://codecov.io/gh/ooxml-tools/file/graph/badge.svg?token=TZ6IV00CPW)](https://codecov.io/gh/ooxml-tools/file)

## License

MIT
npm package: @ooxml-tools/render
Description: Render Office Open XML files in native applications (word, pages, etc...)
Latest version: 0.5.2

<h1>
    <picture>
        <source media="(prefers-color-scheme: dark)" srcset="https://ooxml-tools.github.io/design/images/render-dark.png">
        <source media="(prefers-color-scheme: light)" srcset="https://ooxml-tools.github.io/design/images/render-light.png">
        <img alt="@ooxml-tools/render" height="56" src="https://ooxml-tools.github.io/design/images/render-light.png">
    </picture>
</h1>

Render Office Open XML files in native applications (word, pages, etc...)

Support for rendering

- `.docx` — [WordprocessingML](http://officeopenxml.com/anatomyofOOXML.php)
- `.xlsx` — [SpreadsheetML](http://officeopenxml.com/anatomyofOOXML-xlsx.php)
- `.pptx` — [PresentationML](http://officeopenxml.com/anatomyofOOXML-pptx.php)

This tool can be used as a part of visual regression for various editors

## Support

- `.docx`
  - `msword` — ✅ macos / 🔜 win
  - `pages` — ✅ macos
  - `libreoffice` — ✅ macos / 🔜 linux / 🔜 win
  - `googledocs` — 🔜
  - `onedrive` — 🔜
- `.pptx`
  - `powerpoint` — 🔜 macos / 🔜 win
  - `keynote` — ✅ macos
  - `libreoffice` — ✅ macos / 🔜 linux / 🔜 win
  - `googledocs` — 🔜
  - `onedrive` — 🔜
- `.xlsx`
  - `excel` — 🔜 macos / 🔜 win
  - `numbers` — ✅ macos
  - `libreoffice` — ✅ macos / 🔜 linux / 🔜 win
  - `googledocs` — 🔜
  - `onedrive` — 🔜

## Requirements

You must have the apps you wish to use above installed on your machine.

We use imagemagick for converting PDFs created from the various editors. So you must either have the `imagemagick` CLI installed locally or `docker`/`docker-compose` installed on your machine.

## Usage

```js
import render from "@ooxml-tools/render";

const input = await readFile("./test.docx");
const outputDir = "./output/";
await render(input, ["msword"], { outputDir });
```

## CLI

```bash
npx @ooxml-tools/render --help
# ooxml-render <command> [args]
#
# Commands:
#   render <filepath>   render files
#   support <filepath>  list supported apps for <filepath>
#
# Options:
#   --version  Show version number                                       [boolean]
#   --help     Show help                                                 [boolean]
```

## License

MIT
npm package: @ooxml-tools/units
Description: Conversion for the strange and wonderful Office Open XML units
Latest version: 0.5.0

<h1>
    <picture>
        <source media="(prefers-color-scheme: dark)" srcset="https://ooxml-tools.github.io/design/images/units-dark.png">
        <source media="(prefers-color-scheme: light)" srcset="https://ooxml-tools.github.io/design/images/units-light.png">
        <img alt="@ooxml-tools/units" height="56" src="https://ooxml-tools.github.io/design/images/units-light.png">
    </picture>
</h1>

Conversion for the strange and wonderful Office Open XML units

Supports conversion from `cm` to

- `twip`
- `dxa`
- `emu`
- `inch`

### DXA

From Ecma Office Open XML Part 1 - Fundamentals And Markup Language Reference.pdf (page 1503)

Specifies that the value for the measurement of the current table width property in the parent table shall be interpreted as twentieths of a point (1/1440 of an inch).

### Twips

From Ecma Office Open XML Part 1 - Fundamentals And Markup Language Reference.pdf (page 1587)

Units for window widths and other dimensions are expressed in twips. Twip measurements are portable between different display resolutions. The formula is (screen pixels) _ (20 _ 72) / (logical device dpi), where the logical device dpi can be different for x and y coordinates.

### EMU

From Ecma Office Open XML Part 1 - Fundamentals And Markup Language Reference.pdf (page 2728)

Throughout ECMA-376, the EMU is used as a unit of measurement for length. An EMU is defined as follows:

```
1 emu = 1/914400 US inch = 1/360000 cm
```

[Rationale: The EMU was created in order to be able to evenly divide in both English and Metric units, in order to avoid rounding errors during the calculation. The usage of EMUs also facilitates a more seamless system switch and interoperability between different locales utilizing different units of measurement. EMUs define an integer based, high precision coordinate system. end rationale]

## API

- `cmToTwip(number)`/`twipToCm(number)`
- `cmToDxa(number)`/`dxaToCm(number)`
- `cmToEmu(number)`/`emuToCm(number)`
- `cmToInch(number)`/`inchToCm(number)`
- `pointToDxa(number)`/`dxaToPoint(number)`
- `toOoDegree(number)`/`fromOoDegree(number)`
- `cartesianToExcelCoords(number,number)`/`excelToCartesianCoords(string)`
- `pxToColumnWidth(number, maximumDigitWidth)`/`columnWidthToPx(number, maximumDigitWidth)`
- `ptToHalfPt(number)`/`halfPtToPt(number)`

## CLI

```bash
npx @ooxml-tools/units --help
# ooxml-units <command> [args]
#
# Commands:
#   convert <from> <to> <value>  convert between units
#   list                         list valid formats
#
# Options:
#   --version  Show version number                                       [boolean]
#   --help     Show help                                                 [boolean]
#
# Examples:
#   ooxml-units convert <from> <to> <value>
```

## CI

[![codecov](https://codecov.io/gh/ooxml-tools/units/graph/badge.svg?token=GYOUNVV2JW)](https://codecov.io/gh/ooxml-tools/units)


## License

MIT
npm package: @ooyeku/smoothjs
Description: A minimal, lightweight JavaScript framework for building simple frontend applications. Perfect for backend developers who want to quickly build UIs without complex tooling.
Author: Ola Yeku
Latest version: 1.1.0

# SmoothJS

A tiny, batteries‑included JavaScript framework for building simple frontends quickly. Ideal for backend‑leaning developers who want components, routing, data, and SSR without heavy tooling.

- Zero deps, ESM‑first, tree‑shakeable
- Functional components with hooks and fine‑grained DOM patching and keyed lists
- Router with nested routes, params, lazy routes, and guards
- Query/cache layer (SWR, optimistic mutations, tags)
- HTTP client, store/selectors, utils
- SSR + hydration
- Optional modules: Design System (Velvet), A11y, Forms, Security, DevTools, Testing

## Install

npm
```
npm i @ooyeku/smoothjs
```

Minimal usage:
```
import SmoothJS, { defineComponent } from '@ooyeku/smoothjs';
const App = defineComponent(({ html }) => {
  const render = () => html`<h1>Hello SmoothJS</h1>`;
  return { render };
});
new App().mount('#app');
```
CDN:
```
<script type="module">
  import SmoothJS, { defineComponent } from 'https://unpkg.com/@ooyeku/smoothjs@latest/dist/smoothjs.min.js';
  const App = defineComponent(({ html }) => ({ render: () => html`<h1>Hello</h1>` }));
  new App().mount('#app');
</script>
```
CLI (optional):
```
npx smoothjs create my-app
npx smoothjs serve . --port 5173
```
## Learn the framework

Start here:
- docs/usage.md — detailed developer guide and how‑to for Components, Router, Query, SSR, Velvet, A11y, Forms, Security, Testing, and DevTools.

Then explore the runnable examples:
- examples/index.html (serve with `npm run dev`) — demos for counter, fetch, composition, design system, forms, and more.

## Links

- Roadmap: docs/roadmap.md
- Changelog: CHANGELOG.md
- License: MIT (LICENSE)

## Version

This README reflects SmoothJS v1.0.0
npm package: @ooyi/prettier-config
Description: Prettier config for liaoyi
Latest version: 1.0.2

# @ooyi/prettier-config


My personal Prettier config ( 我的 Prettier 配置 )

## Configs ( 配置 )

- No semi ( 不使用分号 )
- Use single quotes ( 使用单引号 )
- Ignore space around HTML tags ( 忽略 HTML 标签周围空格 )


## Install ( 安装 )

```bash
npm i -D prettier  @ooyi/prettier-config
```

## Usage ( 使用 )

Edit `package.json` ( 编辑 `package.json` )

```jsonc
// config
"prettier": "npm i @ooyi/prettier-config"

// script
"scripts": {
  "format": "prettier --cache --write ."
}
```
npm package: @oozcitak/dom
Description: A modern DOM implementation
Author: Ozgur Ozcitak
Latest version: 3.0.0

# DOM
A Javascript implementation of the [DOM Living Standard](https://dom.spec.whatwg.org/).

[![License](http://img.shields.io/npm/l/@oozcitak/dom.svg?style=flat-square)](http://opensource.org/licenses/MIT)
[![NPM Version](https://img.shields.io/npm/v/@oozcitak/dom?logo=npm&style=flat-square)](https://www.npmjs.com/package/@oozcitak/dom)

[![Node.js CI](https://github.com/oozcitak/dom/workflows/build/badge.svg)](https://github.com/oozcitak/dom/actions)
[![Code Coverage](https://codecov.io/gh/oozcitak/dom/branch/master/graph/badge.svg)](https://codecov.io/gh/oozcitak/dom)

# Version
Current version implements the standard as of commit [57512fa](https://dom.spec.whatwg.org/commit-snapshots/57512fac17cf2f1c4c85be4aec178c8086ee5ee4/) (Last Updated 24 September 2019).

This DOM implementation is for _XML documents only_.

# Installation
```
npm install @oozcitak/dom
```

# Usage
Create an instance of the [`DOMImplementation`](https://dom.spec.whatwg.org/#interface-domimplementation) class to construct the DOM tree.

```js
const { DOMImplementation } = require("@oozcitak/dom");

const dom = new DOMImplementation();
const doc = dom.createDocument('ns', 'root');
```

The module also exports [`DOMParser`](https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#domparser) and [`XMLSerializer`](https://w3c.github.io/DOM-Parsing/#the-xmlserializer-interface) classes as in the browser.
npm package: @oozcitak/infra
Description: An implementation of the Infra Living Standard
Author: Ozgur Ozcitak
Latest version: 3.0.0

# infra
A Javascript implementation of the [Infra Living Standard](https://infra.spec.whatwg.org/).

[![License](http://img.shields.io/npm/l/@oozcitak/infra.svg?style=flat-square)](http://opensource.org/licenses/MIT)
[![NPM Version](http://img.shields.io/npm/v/@oozcitak/infra.svg?style=flat-square)](https://www.npmjs.com/package/@oozcitak/infra)

[![Node.js CI](https://github.com/oozcitak/infra/workflows/build/badge.svg)](https://github.com/oozcitak/infra/actions)
[![Code Coverage](https://codecov.io/gh/oozcitak/infra/branch/master/graph/badge.svg)](https://codecov.io/gh/infra/xmlbuilder2)

# version
Current version implements the standard as of commit [d4a3e90](https://infra.spec.whatwg.org/commit-snapshots/d4a3e9003e6695e3e1379a8581d945759566bfac/).
npm package: @oozcitak/perf
Description: Performance testing for node.js
Author: Ozgur Ozcitak
Latest version: 0.0.7

# perf
Performance testing for node.js.

[![License](http://img.shields.io/npm/l/@oozcitak/perf.svg?style=flat-square)](http://opensource.org/licenses/MIT)
[![NPM Version](http://img.shields.io/npm/v/@oozcitak/perf.svg?style=flat-square)](https://www.npmjs.com/package/@oozcitak/perf)
npm package: @oozcitak/url
Description: An implementation of the URL Living Standard
Author: Ozgur Ozcitak
Latest version: 4.0.0

# URL
A Javascript implementation of the [URL Living Standard](https://url.spec.whatwg.org/).

[![License](http://img.shields.io/npm/l/@oozcitak/url.svg?style=flat-square)](http://opensource.org/licenses/MIT)
[![NPM Version](http://img.shields.io/npm/v/@oozcitak/url.svg?style=flat-square)](https://www.npmjs.com/package/@oozcitak/url)

[![Node.js CI](https://github.com/oozcitak/url/workflows/build/badge.svg)](https://github.com/oozcitak/url/actions)
[![Code Coverage](https://codecov.io/gh/oozcitak/url/branch/master/graph/badge.svg)](https://codecov.io/gh/oozcitak/url)

# Version
Current version implements the standard as of commit [7ae1c69](https://url.spec.whatwg.org/commit-snapshots/7ae1c691c96f0d82fafa24c33aa1e8df9ffbf2bc/).

# Installation
```
npm install @oozcitak/url
```

# Usage
Create an instance of the `URL` or `URLSearchParams` classes.

```js
const { URL } = require("@oozcitak/url");

const url = new URL("https://example.org/file.aspx")
```
npm package: @oozcitak/util
Description: Utility functions
Author: Ozgur Ozcitak
Latest version: 11.0.0

# util
Utility functions used by [@oozcitak/dom](http://github.com/oozcitak/dom) and related packages.

[![License](http://img.shields.io/npm/l/@oozcitak/util.svg?style=flat-square)](http://opensource.org/licenses/MIT)
[![NPM Version](http://img.shields.io/npm/v/@oozcitak/util.svg?style=flat-square)](https://www.npmjs.com/package/@oozcitak/util)

[![Node.js CI](https://github.com/oozcitak/util/workflows/build/badge.svg)](https://github.com/oozcitak/util/actions)
[![Code Coverage](https://codecov.io/gh/oozcitak/util/branch/master/graph/badge.svg)](https://codecov.io/gh/oozcitak/util)
npm package: @oozou/slate-drop-or-paste-images
Description: A Slate plugin that inserts images on drop or paste.
Author: Jessada Trirongkit
Latest version: 0.8.4


### `slate-drop-or-paste-images`

A Slate plugin that inserts images on drop or paste.

When trying to add support for inserting images, there are many ways that a user can do it. In total, this plugin enables six ways of inserting images. The user can choose between:

- dragging and dropping an image file from their computer.
- dragging and dropping an HTML fragment that contains an image.
- dragging and dropping a URL to an image on the web.
- pasting an HTML fragment that contains an image.
- pasting an image file from their clipboard.
- pasting a URL to an image on the web.

It does not handle dragging and dropping Slate nodes or fragments, which is handled internally by Slate by default. And it does not handle insert images via an image chooser, which you'd want to implement with your own UI components.

[View Demo ⬈](https://ianstormtaylor.github.io/slate-plugins/#/slate-drop-or-paste-images)

```js
import InsertImages from 'slate-drop-or-paste-images'
import { Editor } from 'slate-react'

// Add the plugin to your set of plugins...
const plugins = [
  InsertImages({
    extensions: ['png'],
    insertImage: (transform, file) => {
      return transform.insertBlock({
        type: 'image',
        isVoid: true,
        data: { file }
      })
    }
  })
]

// And later pass it into the Slate editor...
<Editor
  ...
  plugins={plugins}
/>
```

Option | Type | Description
--- | --- | ---
**`insertImage`** | `Function` | A transforming function that is passed a Slate `Change` and a `File` object representing an image. It should apply the proper transform that inserts the image into Slate based on your schema. It can return a promise resolved with the resulting Slate `Change`.
**`extensions`** | `Array` | An array of allowed extensions.
**`fallsThrough`** | `Boolean` | A boolean indicating whether the plugin should allow other plugins in the stack to handle the unhandled drop/paste events or not.
npm package: @op-engineering/op-ocr
Description: VisionCamera Frame Processor Plugin to detect and read MRZ data from passports using MLKit Text Recognition.
Author: Oscar Franco
Latest version: 1.0.2

# @OP-Engineering/op-ocr

VisionCamera Frame Processor Plugin to detect and read MRZ data from passports using MLKit Text Recognition.

## Installation & Configuration

### Install

```sh
yarn add @op-engineering/op-ocr
```

### Configure

### Add the following permission to the AndroidManifest.xml located at ~/android/app/src/AndroidManifest.xml

```xml
<uses-permission android:name="android.permission.CAMERA"/>
```

## Basic Usage

```tsx
import * as React from 'react';

import { StyleSheet, View } from 'react-native';
import { MRZProperties, MRZScanner } from '@op-engineering/op-ocr';

export default function App() {
  return (
    <View style={styles.container}>
      <MRZScanner
        mrzFinalResults={(mrzResults: MRZProperties) => {
          // do something with the results
          console.log('mrzResults: ', JSON.stringify(mrzResults, null, 2));
        }}
      />
    </View>
  );
}

const styles = StyleSheet.create({
  container: {
    height: '100%',
    width: '100%',
    alignItems: 'center',
    justifyContent: 'center',
  },
});
```

## Contributing

See the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the repository and the development workflow.

## License

MIT
npm package: @op-engineering/op-sqlcipher
Description: Next generation SQLite for React Native
Author: Oscar Franco
Latest version: 2.0.21

![benchmark](benchmark.png)

```sh
yarn add @op-engineering/op-sqlite && npx pod-install
```

OP-SQLite embeds the latest version of SQLite and provides a low-level API to execute SQL queries.

**Current SQLite version: 3.45.1**

Created by [@ospfranco](https://twitter.com/ospfranco). **Please consider sponsoring!**.

# Docs

[See the docs](https://ospfranco.notion.site/OP-SQLite-Documentation-a279a52102464d0cb13c3fa230d2f2dc?pvs=4)

# Contribute

You need to have clang-format installed (`brew install clang-format`)

# License

MIT License.
npm package: @op-engineering/op-sqlite
Description: Fastest SQLite for React Native (with node.js support)
Author: Oscar Franco
Latest version: 15.2.11

![benchmark](benchmark2.jpg)

Created by [@ospfranco](https://twitter.com/ospfranco). **Please consider sponsoring!**.

OP-SQLite has grown large to cover a lot of plugins, sqlite versions and APIs. Please read the full documentation before opening an issue.

[Open the docs](https://op-engineering.github.io/op-sqlite/)

Join the Discord:

https://discord.gg/W9XmqCQCKP

Some of the big supported features:

- iOS, Android, macOS and web support
- Vanilla sqlite
- Turso is supported as a compilation target
- Libsql is supported as a compilation target
- SQLCipher is supported as a compilation target
- FTS5 plugin
- Rtree plugin
- cr-sqlite plugin
- sqlite-vec plugin
- Reactive queries
- Custom tokenizers
- Load runtime extensions
- JSONB support

It also contains a simple [Key-Value store](https://op-engineering.github.io/op-sqlite/docs/key_value_storage) you can use without adding one more dependency to your app.

# License

MIT License.
npm package: @op-engineering/react-native-prisma
Description: Prisma for react-native
Author: Oscar Franco
Latest version: 0.1.18

# React Native Prisma

A Prisma engine adaptation for React Native.

## Installation

```
yarn add --exact react-native-prisma react-native-quick-base64 react-native-url-polyfill @prisma/client@5.9.0-integration-react-native.5 @op-engineering/react-native-prisma@0.1.9
npx pod-install
```

### Bare react native projects

For bare project you will need to modify the building process to run a couple of scripts that take care of bundling the migrations you generate inside the final app bundle.

#### iOS

Go into `XCode` → `Build Phases` → `Bundle React Native Code and images` and modify it so that it looks like this:

![xcode_build_phases](xcode.png)

```bash
set -e

WITH_ENVIRONMENT="../node_modules/react-native/scripts/xcode/with-environment.sh"
REACT_NATIVE_XCODE="../node_modules/react-native/scripts/react-native-xcode.sh"
PRISMA_MIGRATIONS="../node_modules/@op-engineering/react-native-prisma/copy-migrations.sh" # Add this

/bin/sh -c "$WITH_ENVIRONMENT $PRISMA_MIGRATIONS $REACT_NATIVE_XCODE" # Add it to the list of running scripts
```

#### Android

For Android you need to modify your apps `app/Build.gradle`. Add the following at the top of the file.

```groovy
apply from: "../../node_modules/@op-engineering/react-native-prisma/react-native-prisma.gradle"
```

### Expo

For expo this process is automated into prebuild. Modify your `app.json` by adding the react-native-prisma plugin.

```json
{
  "expo": {
    // ... The rest of your expo config
    "plugins": ["@op-engineering/react-native-prisma"]
  }
}
```

## Reactive queries

This packages contains an extension to the prisma client that allows you to use reactive queries. Use at your own convinience and care since it might introduce large re-renders in your app.

```ts
import { PrismaClient } from '@prisma/client/rn';
import { reactiveHooksExtension } from 'react-native-prisma';

const baseClient = new PrismaClient();

export const extendedClient = baseClient.$extends(reactiveHooksExtension);
```

Then in your React component you can use the hook:

```tsx
import {Text} from 'react-native';
import {extendedClient} from './myDbModule';

export default function App {

  // Will automatically re-render the component with new data
  const users = extendedClient.user.useFindMany();

  return (
    <Text>{users}</Text>
  )
}
```

Bare in mind, for the reactive queries to work you have to use the extended client to modify the data:

```ts
extendedClient.user.create({ ...userData });
```

There are several hooks you can use for your reactive queries:

```ts
useFindMany();
useFindFirst();
useFindUnique();
```

### Non hook reactive queries

It is also possible to use callbacks for this queries in case you are not using hooks, but you still want to get notified when data changes

```ts
import { PrismaClient } from '@prisma/client/rn';
import { reactiveQueriesExtension } from 'react-native-prisma';

const baseClient = new PrismaClient();

export const extendedClient = baseClient.$extends(reactiveQueriesExtension);
```
npm package: @op-engineering/toolkit
Description: Toolkit useful functions
Author: Oscar Franco
Latest version: 0.0.2

# OSP Toolkit

In every project I work I end up needing the same bunch of functions. This is just a repo which contains them so I can easily install them and import them.

```bash
yarn add osp-toolkit
```

## Constants

Some shorthand costants for React Native.

```ts
import { isIOS, isAndroid, ANDROID_VERSION, IOS_VERSION } from "osp-toolkit";
```

## Hooks

Although hooks are not my favorite, sometimes there are useful patterns.

```tsx
import { useBoolean } from "osp-toolkit";

function myComponent() {
  const [isFoo, fooOn, fooOff] = useBoolean();
}
```

## Invariant checks

Invariant checks allow to assure the state of your app, by default they crash on releases so you better have error tracking via Sentry or similar set up.

```ts
import { invariant, nullthrows } from "osp-toolkit";

invariant(myVar === "foo", "myVar does not match, this crashes");

nullthrows(myVar, "myVar is null, this is crashes");
```

## Sleep

A simple sleep function for async contexts

```ts
import { sleep } from "osp-toolkit";

async function foo() {
  await sleep(500);
}
```

## Debugging

I love logging to console, so there are a couple utilities inserted on the global namespace that make your logs a little easier to visually parse

```ts
marker(`1`) // Outputs 🔷🔷🔷🔷🔷🔷🔷🔷🔷🔷🔷🔷 MARK ${i} 🔷🔷🔷🔷🔷🔷🔷🔷🔷🔷🔷🔷🔷🔷 to console

const myObj = {
  ...
  // some complex obj
}
debug(myObj) // Will pretty print an object to the RN console
```
npm package: @op.c/bytes
Description: Buffer utilities
Author: root
Latest version: 0.2.0

# Bytes

A storage-agnostic implementation of Node core's buffer API.
Usable with `Buffer`, `Uint8Array`, and `Array`; or anything else that behaves like them.

## Why?

The Web APIs around working with binary data are inadequate.

Annoyance 1: `DataView` defaults to big-endian, while most platforms (and file formats) use little-endian,
  and thus basically always requires the more verbose `littleEndian` argument,
  e.g: `.getUint16( offset, true )`.

Annoyance 2: A new `DataView` needs to be constructed for every `ArrayBuffer` you want
  to operate on, needlessly thrashing the heap. Sad performance face.

Annoyance 3: `var dataView = new DataView( buffer ); dataView.getUint32( offset, true )`
  because not-invented-here and we-dont-want-to-copy-node `buffer.readUInt32LE( offset )`.

Annoyance 4: The boolean `littleEndian` argument in `DataView` methods (`.getUint16( offset, littleEndian )`)
  is limiting (middle-endian / mixed-endian anyone?), Node's Buffer API would be easily extended to cover
  that case through its use of suffixes (e.g. `.readUInt32ME()`)

## Usage

```console
$ npm install --save @op.c/bytes
```

```js
var bytes = require( '@op.c/bytes' )
```

## API

## Caveats

### Array Types

To be as unrestrictive as possible, this library does not type-guard the buffers it operates on;
its methods will work on anything that looks and behaves like an Array or TypedArray.
Be aware of what you are doing, and what your inputs are.

### Endianness / Byte-Order

Beware of (re-)using ArrayBuffers from TypedArrays that have an element size larger than a byte
(i.e. everything other than `U/Int8Array` & `U/Int8ClampedArray`);
their contents are platform byte-order dependent.
npm package: @op/api-sdk
Description: Simple SDK for accessing OP APIs
Author: OP-Developer
Latest version: 1.1.1
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# op-api-javascript-sdk

[![Build Status](https://travis-ci.org/op-developer/op-api-javascript-sdk.svg?branch=master)](https://travis-ci.org/op-developer/op-api-javascript-sdk)

## Description

    Simple universal SDK for easy consumption of OP APIs.

## Installation

    npm install @op/api-sdk

## Usage

    import SDK from "@op/api-sdk";

    const options = {
        headers: {
            'x-api-key': 'your-api-key',
        }
    }

    const client = new SDK.Client(options)

See [requests](https://op-developer.fi/docs/#user-content-requests) for required headers.

You can set request options for client instance, and also for each request function call, which is useful because you can then use global instance of SDK client, with globally defined x-api-key, but still give separate x-authorization header for each user:

    const userOptions = {
        headers: {
            'x-authorization': userSession.getAuthorizationKey({bank: "OP"})
        }
    }

    const accounts = await client.getAllAccounts(userOptions);

For further reading, please see our API [documentation](https://op-developer.fi/docs/)


## Developing

### Running tests
- register at https://op-developer.fi/developers/register
- create an app that has access to all sandbox products (Mobility, Banking, etc)
- run tests with ```X_API_KEY=<your api key> npm run test```
npm package: @op1/ast-grep
Description: AST-aware code search and replace tools for OpenCode - powered by ast-grep
Latest version: 0.5.2

# @op1/ast-grep

AST-aware code search and replace for OpenCode, powered by [ast-grep](https://ast-grep.github.io/).

## Features

- **25 Languages** - TypeScript, Python, Go, Rust, Java, and more
- **Meta-variables** - `$VAR` (single node), `$$$` (multiple nodes)
- **Auto-download** - Downloads ast-grep binary if needed
- **Dry-run Default** - Safe replacements

## Installation

```bash
bun add @op1/ast-grep
```

## Configuration

```json
{
  "plugin": ["@op1/ast-grep"]
}
```

## Tools

| Tool | Description |
|------|-------------|
| `ast_grep_search` | Search code patterns |
| `ast_grep_replace` | Replace patterns (dry-run by default) |

## Pattern Examples

| Pattern | Matches |
|---------|---------|
| `console.log($MSG)` | Any console.log call |
| `function $NAME($$$) { $$$ }` | Any function |
| `async function $NAME($$$) { $$$ }` | Async functions |

## Supported Languages

bash, c, cpp, csharp, css, go, html, java, javascript, json, kotlin, python, ruby, rust, typescript, tsx, yaml, and more.

## License

MIT
npm package: @op1/code-graph
Description: Dependency graph plugin for OpenCode - import/export analysis, call hierarchies, impact analysis
Latest version: 0.3.2

# @op1/code-graph

Dependency graph plugin for OpenCode - import/export analysis and impact assessment.

## Features

- **Dependency Tracking** - Map imports and exports across your codebase
- **Impact Analysis** - Assess change risk with transitive dependency counts
- **Auto-Refresh on Query** - Automatically detects file changes
- **Incremental Updates** - Merkle tree cache for efficiency

## Installation

```bash
bun add @op1/code-graph
```

## Configuration

```json
{
  "plugin": ["@op1/code-graph"]
}
```

## Tools

| Tool | Description |
|------|-------------|
| `find_dependencies` | Find what a file imports |
| `find_dependents` | Find what imports a file |
| `impact_analysis` | Analyze change risk |
| `graph_status` | Get graph statistics |
| `graph_rebuild` | Rebuild the graph |

## Auto-Refresh (v0.3.0+)

Graph automatically checks for file changes before each query - no manual rebuild needed after git pull.

| Option | Default | Description |
|--------|---------|-------------|
| `autoRefresh` | `true` | Enable on-query freshness check |
| `autoRefreshCooldownMs` | `30000` | 30s between checks |
| `autoRefreshMaxFiles` | `10000` | Skip for massive repos |

## Risk Levels

| Level | Dependents | Meaning |
|-------|------------|---------|
| Low | 0-3 | Safe to modify |
| Medium | 4-10 | Test affected areas |
| High | 11-25 | Significant risk |
| Critical | 25+ | Core infrastructure |

## License

MIT
npm package: @op1/fast-mode
Description: Fast mode plugin for OpenCode that enables priority service tier for approved provider/model/agent requests
Latest version: 0.5.2

# @op1/fast-mode

Fast-mode plugin for OpenCode that toggles request priority on demand and applies
it only when your runtime conditions match (provider, model, and enabled agent).

## What the plugin does

- Exposes `fast_mode` tool actions: `status`, `on`, and `off`.
- Writes/reads runtime toggles from `.opencode/fast-mode-state.json`.
- Reads guard configuration from:
  - `~/.config/opencode/fast-mode.json` (global)
  - `.opencode/fast-mode.json` (project, overrides global)
- Applies `options.serviceTier = "priority"` only when a request passes provider,
  model, and agent allowlists.

## Install

```bash
bun add @op1/fast-mode
```

If you install from source workspace, run the local build first:

```bash
bun run build --cwd packages/fast-mode
```

## Configure

Add plugin access in `~/.config/opencode/opencode.json`:

```json
{
	"plugin": ["@op1/fast-mode"]
}
```

If your `opencode.json` already has a plugin list, merge `@op1/fast-mode` into it.

### Fast-mode config file shape

Create or edit `~/.config/opencode/fast-mode.json`:

```json
{
	"enabled": true,
	"providers": {
		"openai": {
			"enabled": true,
			"agents": ["build", "coder"],
			"models": ["gpt-5.3-codex", "gpt-5.3-codex-mini"]
		}
	}
}
```

Supported fields:

- `enabled` (boolean): global feature gate for fast-mode.
- `providers` (record): provider-level config, keyed by provider ID.
- `providers.<provider>.enabled` (optional boolean): per-provider gate.
- `providers.<provider>.agents` (optional string[]): agent allowlist.
- `providers.<provider>.models` (optional string[]): model allowlist.

Project-level `/.opencode/fast-mode.json` config is merged over the global file.

You can also add a `.opencode/fast-mode.json` in a repo to tune behavior per project.

## `/fast` command shim

This plugin is tool-first; `/fast` is typically provided via a local command shim.

Example local command shim file:

`~/.config/opencode/commands/fast.md`

```md
---
description: Toggle fast mode state
agent: build
---

Use the `fast_mode` tool from this plugin.

- `/fast status [agent|all]`
- `/fast on [agent]`
- `/fast off [agent|all]`
```

The shim keeps behavior consistent with agent commands in OpenCode and lets you
type concise `/fast ...` actions during a chat session.

## Notes on behavior

- This plugin is **provider-first**: it matches provider ID first, then model and
  agent allowlists.
- It is currently **OpenAI-focused** because it writes `serviceTier` in the
  request options contract used by OpenAI-style providers.
- It is **model-guarded**: if model/agent/provider checks fail, no request
  mutation occurs.

## Publishing readiness

Build now emits declarations for npm publishing:

```bash
bun run build --cwd packages/fast-mode
```

That script writes:

- `dist/fast-mode.js`
- declaration files under `dist/` (for example `dist/index.d.ts`)

Keep `dist/` committed for package publishing.

## License

MIT
npm package: @op1/lsp
Description: LSP integration plugin for OpenCode - language server protocol tools for code navigation and refactoring
Latest version: 0.5.2

# @op1/lsp

LSP integration plugin for OpenCode - language server tools for navigation and refactoring.

## Features

- **Go to Definition** - Jump to symbol definitions
- **Find References** - Find all usages across codebase
- **Workspace Symbols** - Search symbols project-wide
- **Diagnostics** - Get errors/warnings before build
- **Rename** - Refactor symbols safely
- **50+ Language Servers** - Built-in configurations

## Installation

```bash
bun add @op1/lsp
```

## Configuration

```json
{
  "plugin": ["@op1/lsp"]
}
```

## Tools

| Tool | Description |
|------|-------------|
| `lsp_goto_definition` | Jump to symbol definition |
| `lsp_find_references` | Find all usages |
| `lsp_symbols` | Document outline or workspace search |
| `lsp_diagnostics` | Get errors/warnings |
| `lsp_prepare_rename` | Check if rename is valid |
| `lsp_rename` | Rename across codebase |

## Supported Languages

TypeScript, JavaScript, Python, Go, Rust, C/C++, Java, Ruby, PHP, and 40+ more.

## Custom Server

Add in `op1-lsp.json`:

```json
{
  "servers": {
    "my-lang": {
      "command": ["my-lang-server", "--stdio"],
      "fileExtensions": [".mylang"]
    }
  }
}
```

## License

MIT
npm package: @op1/notify
Description: Desktop notifications plugin for OpenCode - focus detection, quiet hours, sounds
Latest version: 0.3.0

# @op1/notify

Desktop notifications plugin for OpenCode - focus detection and quiet hours.

## Features

- **Desktop Notifications** - Native macOS/Linux/Windows support
- **Focus Detection** - Suppress when app is focused
- **Quiet Hours** - Schedule notification-free periods
- **Sound Alerts** - Audio cues for events

## Installation

```bash
bun add @op1/notify
```

## Configuration

```json
{
  "plugin": ["@op1/notify"],
  "notify": {
    "enabled": true,
    "sound": true,
    "quietHours": {
      "enabled": false,
      "start": "22:00",
      "end": "08:00"
    }
  }
}
```

## Platform Support

| Platform | Method |
|----------|--------|
| macOS | osascript |
| Linux | notify-send |
| Windows | PowerShell toast |

## License

MIT
npm package: @op1/reprompt
Description: Optional reprompt plugin for incoming prompt compilation, bounded evidence packing, and safe retry orchestration
Latest version: 0.5.2

# @op1/reprompt

Optional OpenCode plugin for incoming prompt compilation, bounded evidence packing, and explicit retry orchestration.

## What It Does

- pre-compiles terse incoming prompts before agent execution when `runtime.mode` is `hook-and-helper`
- leaves already-structured prompts unchanged
- exposes `reprompt` for manual bounded retries and child-session escalation
- fails closed by passing the original prompt through when compilation is suppressed or unsafe

Incoming chat prompts can opt in with either a leading marker (`opx fix auth flow`) or a trailing marker (`fix auth flow opx`). Slash commands support both forms as well (`/plan opx fix auth flow` and `/plan fix auth flow opx`).

## Config

Create either `~/.config/opencode/reprompt.json` or `.opencode/reprompt.json`.

```json
{
  "enabled": true,
  "runtime": {
    "mode": "hook-and-helper",
    "promptMode": "auto",
  }
}
```

Key options:

- `enabled`: turns the plugin on or off
- `runtime.mode`: `hook-and-helper` enables from-the-start prompt compilation; `helper-only` disables the incoming-message hook and keeps only `reprompt`

## Telemetry

When telemetry persistence is enabled, events are written to:

- `.opencode/reprompt/events.jsonl`

Useful outcomes to watch for:

- `incoming-processed` with `outcome=compiled`
- `incoming-processed` with `outcome=pass-through`
- `incoming-processed` with `outcome=suppressed`

## Operator Notes

- Start with the plugin enabled only in repos where terse prompts are common
- Use `helper-only` if automatic prompt compilation is too aggressive for a workflow
- Flip `enabled` to `false` or switch `runtime.mode` to `helper-only` for immediate rollback without uninstalling the plugin
- If prompts are unexpectedly rewritten, inspect `.opencode/reprompt/events.jsonl` before changing heuristics
npm package: @op1/semantic-search
Description: Semantic code search plugin for OpenCode - natural language to code search with embeddings
Latest version: 0.3.0

# @op1/semantic-search

Semantic code search plugin for OpenCode - natural language to code search with embeddings.

## Features

- **Natural Language Search** - Find code using plain English queries
- **Code Similarity** - Find code patterns similar to a given snippet
- **Auto-Refresh on Query** - Automatically detects and reindexes changed files
- **Local Embeddings** - Transformers.js support (no API key required)
- **Incremental Indexing** - Merkle tree cache for efficient change detection

## Installation

```bash
bun add @op1/semantic-search
```

## Configuration

```json
{
  "plugin": ["@op1/semantic-search"]
}
```

## Tools

| Tool | Description |
|------|-------------|
| `search_semantic` | Search code using natural language |
| `find_similar` | Find code similar to a snippet or location |
| `semantic_status` | Get index status |
| `semantic_reindex` | Rebuild or update the index |

## Auto-Refresh (v0.3.0+)

Index automatically checks for file changes before each query - no manual reindex needed after git pull.

| Option | Default | Description |
|--------|---------|-------------|
| `autoRefresh` | `true` | Enable on-query freshness check |
| `autoRefreshCooldownMs` | `30000` | 30s between checks |
| `autoRefreshMaxFiles` | `10000` | Skip for massive repos |

## Embedding Providers

| Provider | API Key | Notes |
|----------|---------|-------|
| Transformers.js | No | Local, preferred |
| OpenAI | Yes | Cloud fallback |

## License

MIT