open-index/open-npm huggingface dataset:
npm package: @omnysecurity/vite-plugin-wasm-ssr
Description: SSR ready vite plugin for ESM integration of wasm-pack generated packages
Latest version: 1.0.2
Deprecated: This package has been renamed to 'vite-plugin-wasm-esm'

# vite-plugin-wasm-ssr

Vite plugin with SSR support to use [wasm-pack][1] generated packages as regular ES
modules.

## Installation

Install using your favorite package manager

```
npm i -D @omnysecurity/vite-plugin-wasm-ssr
```

## Usage

To use this plugin, you must support [`await`][2] at module top level. This has
been [supported in all major browsers for a while][3], but if you need
backwards compatibility, you can use [`vite-plugin-top-level-await`][4].

After installation, add it to your vite config and specify all packages you
want the plugin to handle:

```javascript
// vite.config.js
import wasm from "@omnysecurity/vite-plugin-wasm-ssr";

/** @type {import('vite').UserConfig} */
const config = {
	plugins: [wasm(["@acme/wasm-calculator"])],
};

export default config;
```

You probably also need to specify custom build targets, as the default targets
provided by vite doesn't support await at the module top level:

```javascript
// vite.config.js
import wasm from "@omnysecurity/vite-plugin-wasm-ssr";

/** @type {import('vite').UserConfig} */
const config = {
	plugins: [wasm(["@acme/wasm-calculator"])],
	build: {
		target: ["chrome89", "safari15", "firefox89"],
	},
	esbuild: {
		target: ["chrome89", "safari15", "firefox89"],
	},
};

export default config;
```

All wasm packages handled by the plugin can be used as regular ES modules, both
on the server during SSR and in the browser:

```javascript
import { plus } from "@acme/wasm-calculator";

console.log(plus(1, 1)); // 3
```

[1]: https://github.com/rustwasm/wasm-pack "wasm-pack project's github page"
[2]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await "MDN documentation on the await keyword"
[3]: https://caniuse.com/mdn-javascript_operators_await_top_level "Browser support of module top level await feature"
[4]: https://github.com/Menci/vite-plugin-top-level-await "Vite plugin for polyfilling top level await"
npm package: @omodaka/pinatinodb-adapter-prisma
Description: Prisma adapter for PinatinoDB - automatic IPFS sync for Prisma
Author: Branislav Đalić
Latest version: 0.1.0

# @pinatinodb/prisma-adapter

Prisma adapter for PinatinoDB - automatically sync your Prisma data to IPFS!

## Installation

```bash
pnpm add @pinatinodb/prisma-adapter @pinatinodb/core
```

## Usage

```typescript
import { PrismaClient } from '@prisma/client';
import { withPinatino } from '@pinatinodb/prisma-adapter';
import { PinatinoDB } from '@pinatinodb/core';

// Create PinatinoDB instance
const pinatino = new PinatinoDB({
  pinata: {
    apiKey: process.env.PINATA_JWT!
  }
});

await pinatino.initialize();

// Wrap Prisma client
const prisma = withPinatino(new PrismaClient(), {
  pinatino,
  strategy: 'write-through', // or 'write-behind', 'read-through', 'none'
  logging: true
});

// Use Prisma normally - data automatically syncs to IPFS!
const user = await prisma.user.create({
  data: {
    name: 'Alice',
    email: 'alice@example.com'
  }
});
// ✅ Data is now in both Prisma DB and IPFS!
```

## Strategies

### `write-through` (default)

- Writes to both Prisma and IPFS synchronously
- Ensures data consistency
- Slower writes, but guaranteed sync

### `write-behind`

- Writes to Prisma immediately
- Queues IPFS write asynchronously
- Faster writes, eventual consistency

### `read-through`

- Reads from Prisma first
- Falls back to IPFS if not found
- Useful for hybrid storage

### `none`

- No automatic sync
- Manual control via PinatinoDB API

## Selective Sync

```typescript
// Only sync specific models
const prisma = withPinatino(new PrismaClient(), {
  pinatino,
  models: ['User', 'Post'], // Only sync these models
  logging: true
});

// Or exclude models
const prisma = withPinatino(new PrismaClient(), {
  pinatino,
  excludeModels: ['Log', 'Session'], // Don't sync these
  logging: true
});
```

## Error Handling

```typescript
const prisma = withPinatino(new PrismaClient(), {
  pinatino,
  onError: (error, operation, model) => {
    console.error(`Failed to sync ${model}.${operation}:`, error);
    // Send to error tracking service, etc.
  }
});
```

## How It Works

The adapter uses Prisma middleware to intercept database operations:

1. **Prisma operation executes** (your data goes to Prisma DB)
2. **Middleware intercepts** result
3. **PinatinoDB syncs** to IPFS via Pinata
4. **Result returned** to your code

All Prisma operations work normally - the IPFS sync is transparent!

## Supported Operations

- ✅ `create` - Synced to IPFS
- ✅ `createMany` - Batch synced to IPFS
- ✅ `update` - Updates in IPFS
- ✅ `updateMany` - Batch updates
- ✅ `delete` - Removes from IPFS
- ✅ `deleteMany` - Batch deletes

## Benefits

- 📦 **Automatic IPFS backup** of your Prisma data
- 🌍 **Decentralized storage** alongside traditional DB
- ⏱️ **Time-travel queries** (IPFS immutability)
- 🔄 **Zero code changes** to existing Prisma code
- 🎯 **Selective sync** - choose what goes to IPFS

## License

MIT
npm package: @omodaka/pinatinodb-core
Description: Core ORM wrapper for Pinata Cloud & IPFS
Author: Branislav Đalić
Latest version: 0.1.0

# @pinatinodb/core

Core ORM package for PinatinoDB - PostgreSQL/MongoDB-like API for IPFS via Pinata.

## Installation

```bash
pnpm add @pinatinodb/core
```

## Quick Start

```typescript
import { PinatinoDB } from '@pinatinodb/core';

const db = new PinatinoDB({
  pinata: {
    apiKey: process.env.PINATA_JWT
  }
});

await db.initialize();

const User = db.collection('users', {
  id: { type: 'uuid', primary: true },
  name: { type: 'string', required: true },
  email: { type: 'string', required: true }
});

const user = await User.create({
  name: 'Alice',
  email: 'alice@example.com'
});
```

See main [README](../../README.md) for full documentation.
npm package: @omokolataiwo/custom-error
Description: Node custom error with handler that does not get in your way. Pretty what you are used to. :). The idea is that it should be simple to use without complex initailization and configuration.
Author: Taiwo Kolawole
Latest version: 1.0.3

![](https://img.shields.io/npm/v/@omokolataiwo/custom-error.svg)
### Custom Error
npm package: @omooer/sauce
Description: Sauce CLI
Author: AngusYoung
Latest version: 1.5.2

# Sauce CLI

帮助你快速搭建一个基于 Vue 的管理后台前端项目，预设了很多常用组件，支持多语言。

## Template
目前提供了两套模板，分别基于 Vue2 和 Vue3，请根据需要选择。
SaUI 是一个 CSS 框架需要自己处理组件的实现（模板中提供了很多常用组件）。
VbUI 是一套 Vue3 + Bulma 的组件库，提供了非常丰富的组件系统来实现很多功能，并不断更新中。

* Vue2 + [SaUI](https://saui.omooer.com)
* Vue3 + [VbUI](https://vbui.omooer.com) (推荐)

## Install

```npm
npm i -g @omooer/sauce
```

## CLI

```shell script
create-sauce <PROJECT_DIRECTORY>
```
or
```npm
npx @omooer/sauce <PROJECT_DIRECTORY>
```
npm package: @omostan/angular-custom-bootstrap-daterangepicker
Description: A custom date range picker component used to create a drop-down menu from which a user can select a range of dates.
Author: Stanley Omoregie
Latest version: 1.1.0

# Angular Custom Bootstrap Daterangepicker
A custom date range picker component used to create a drop-down menu from which a user can select a range of dates.

This version is customised for my projects. Feel free to use it as it is or customise it as you want. Please note that all credits goes to the original developers [Dan Grossman](https://github.com/rstudio/bootstrap-daterangepicker).

Features include limiting the selectable date range, localizable strings and date formats, a single date picker mode, a time picker, and predefined date ranges.

### License
The MIT License (MIT)

Copyright (c) 2012-2019 Dan Grossman

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
npm package: @omostan/angularjs-file-upload-model
Description: AngularJS directive used for picking up file(s) on input of type file to be made available in the $scope and assigned to the binded model
Author: Stanley Omoregie
Latest version: 1.1.0

# file-upload-model
AngularJS directive used for picking up file(s) on input of type "file" to be made available in the $scope and assigned to the binded model
npm package: @omostan/angularjs-xeditable
Description: A customized version of xeditable - a bundle of AngularJS directives that allows you to create editable elements in your projects. Such technique is also known as click-to-edit or edit-in-place.
Author: Stanley Omoregie
Latest version: 0.10.8

# angularjs-xeditable
A customized version of xeditable - a bundle of AngularJS directives that allows you to create editable elements in your projects. Such technique is also known as click-to-edit or edit-in-place.
npm package: @omostan/service-proxy
Description: A generic Service Proxy that can be used to call JSON Services generically using jQuery.
Author: Stanley Omoregie
Latest version: 1.0.2

# service-proxy
A generic Service Proxy that can be used to call JSON Services generically using jQuery.

(c) 2008-2011 Rick Strahl, West Wind Technologies 
www.west-wind.com

### License
[MIT](http://en.wikipedia.org/wiki/MIT_License)