open-index/open-npm huggingface dataset:
npm package: @revas/ts-api
Description: ## Installation
Latest version: 0.0.45-temp

# Revas Platform API Typescript Client

## Installation

```
yarn add @revas/platform-api
```

## Usage

```js
import Revas from '@revas/platform-api'

// Simple client instance with token and organizationId configured
const revas = new Revas.Client({
  accessToken: 'JWT_TOKEN_FROM_AUTHENTICATION',
  organizationId: 'REVAS_ORGANIZATION_ID'
})

// Revas can be also configured with simple getter functions
const revas = new Revas.Client({
  accessToken: () => {
    return 'JWT_TOKEN_FROM_AUTHENTICATION'
  },
  organizationId: () => {
    return 'REVAS_ORGANIZATION_ID'
  }
})

const request = ...
const response = revas.Contact.GetContact(request)

// The options are overrideable for each request but won't change client config
const response = revas.Contact.GetContact(request, {
  organizationId: 'REVAS_ORGANIZATION_ID'
})
```

## Public API

```js
// The public calls require the client with the public key
const revas = new Revas.Client({
  publicKey: 'REVAS_PUBLIC_KEY'
})
revas.Content.GetPublicDirectory(request)
revas.Content.ListPublicContents(request)
revas.Content.GetPublicContent(request)
```

## Error Management

```js
try {
  const response = revas.Contact.GetContact(request, {
    organizationId: 'REVAS_ORGANIZATION_ID'
  })
} catch (e: RevasError) {
  // for everything more than 200
}
```

## Change global options

```js
const revas = new Revas.Client({
  accessToken: 'JWT_TOKEN_FROM_AUTHENTICATION',
  organizationId: 'REVAS_ORGANIZATION_ID'
})

revas.setGlobalOptions({
  organizationId: 'ANOTHER_REVAS_ORGANIZATION_ID'
})
```

## Example in Revas app

```js
// eg. with auth0 and organization store
const auth0Client = ...
const revasClient = new Revas.Client({
  accessToken: () => {
    return auth0Client.getTokenSilently()
  }
})
const organizationStore = new ...(revasClient, ...)
revasClient.setGlobalOptions({
  organizationId: () => {
    return organizationStore.getOrganization().id
  }
})
revasClient.setGlobalOptions({
  organizationId: organizationStore.getOrganization().id
})
```
npm package: @revas/ui
Description: Libraries, tools and helpers to build Revas Vue applications.
Author: Revas
Latest version: 0.0.2

# Revas UI

[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square)](http://standardjs.com)

Libraries, tools and helpers to build Revas Vue applications.

## Authentication

You can use the ready authentication Vuex store to build your app.

```
const authStoreConfig = {
    domain: process.env.VUE_APP_OAUTH_DOMAIN,
    clientID: process.env.VUE_APP_OAUTH_CLIENT_ID,
    redirectUri: process.env.VUE_APP_OAUTH_REDIRECT_URI,
    audience: process.env.VUE_APP_OAUTH_AUDIENCE
}
```

```
import { makeAuthStore } from '@revas/ui/vue'

const authStore = makeAuthStore(authStoreConfig)
```

```
import Revas from '../../../vue'

Revas.install({}, [], {
  router: {
    default: '/'
  }
})
```
npm package: @revathskumar/morty
Description: > CLI to manage custom emulated devices on Chromium-based browser devtools.
Author: Revath S Kumar
Latest version: 0.0.8

# morty

> CLI to manage custom emulated devices on Chromium-based browser devtools.

## Demo

[![morty demo](https://asciinema.org/a/ReNxY8dpGklHm0W4t0n9jGrGu.svg)](https://asciinema.org/a/ReNxY8dpGklHm0W4t0n9jGrGu)

### Dev setup

To install dependencies:

```bash
bun install
```

To run:

Copy the preferences file to `tmp/Preferences` and then run

```bash
TEST_MODE=true bun run index.ts
```

## Supported Browsers

| -                    | Linux | Mac |
| -------------------- | ----- | --- |
| Google Chrome        | ✔️    | ✔️  |
| Google Chrome Canary | ✔️    | ✔️  |
| Chromium             | ✔️    | ✔️  |
| Vivaldi              | ✔️    | ✔️  |

## Acknowledgement

- Data from [list-of-custom-emulated-devices-in-chrome](https://github.com/alxwndr/list-of-custom-emulated-devices-in-chrome) by [@alxwndr](https://github.com/alxwndr)
- Updated Data from [list-of-custom-emulated-devices-in-chrome #1](https://github.com/alxwndr/list-of-custom-emulated-devices-in-chrome/pull/1) by [@thelegend09](https://github.com/thelegend09)

## Similar Projects

- [vibranium](https://github.com/Pittan/vibranium)

## License

MIT
npm package: @revaturexyz/forecast
Description: [![Pipeline Status](https://dev.azure.com/revaturexyz/housing/_apis/build/status/9?branchName=broker)](https://dev.azure.com/revaturexyz/housing/_build/latest?definitionId=9&branchName=broker)
Author: fred belotte
Latest version: 0.4.3

# interface-web-forecast://readme

[![Pipeline Status](https://dev.azure.com/revaturexyz/housing/_apis/build/status/9?branchName=broker)](https://dev.azure.com/revaturexyz/housing/_build/latest?definitionId=9&branchName=broker)

[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=interface%3Aweb%3Aforecast&metric=alert_status)](https://sonarcloud.io/dashboard?id=interface%3Aweb%3Aforecast)

[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=interface%3Aweb%3Aforecast&metric=reliability_rating)](https://sonarcloud.io/dashboard?id=interface%3Aweb%3Aforecast)
[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=interface%3Aweb%3Aforecast&metric=security_rating)](https://sonarcloud.io/dashboard?id=interface%3Aweb%3Aforecast)
[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=interface%3Aweb%3Aforecast&metric=sqale_rating)](https://sonarcloud.io/dashboard?id=interface%3Aweb%3Aforecast)
[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=interface%3Aweb%3Aforecast&metric=coverage)](https://sonarcloud.io/dashboard?id=interface%3Aweb%3Aforecast)
[![Duplicated Lines (%)](https://sonarcloud.io/api/project_badges/measure?project=interface%3Aweb%3Aforecast&metric=duplicated_lines_density)](https://sonarcloud.io/dashboard?id=interface%3Aweb%3Aforecast)

## instruction
1. download and install VirtualBox 5.2+.
1. download and install Vagrant 2.1+.
1. download or clone this repository.
1. open the machine shell.
1. navigate to the repository folder.
1. run command `vagrant up`.
1. run command `vagrant ssh`.

## technology
+ [Docker](https://www.docker.com/).
+ [Vagrant](https://www.vagrantup.com/).
+ [VirtualBox](https://www.virtualbox.org/).

## maintainer
+ [fred belotte](https://github.com/fredbelotte)
+ [Nicholas Escalona](https://github.com/escalonn)
+ [Pushpinder Kaur](https://github.com/kaurrevature)

## license
__interface-web-forecast__ is licensed under the terms of the [MIT License](https://github.com/revaturexyz/interface-web-forecast/blob/master/LICENSE).
npm package: @revaturexyz/profile
Description: [![Pipeline Status](https://dev.azure.com/revaturexyz/housing/_apis/build/status/12?branchName=broker)](https://dev.azure.com/revaturexyz/housing/_build/latest?definitionId=12&branchName=broker)
Author: fred belotte
Latest version: 0.2.3

# interface-web-profile://readme

[![Pipeline Status](https://dev.azure.com/revaturexyz/housing/_apis/build/status/12?branchName=broker)](https://dev.azure.com/revaturexyz/housing/_build/latest?definitionId=12&branchName=broker)

[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=interface%3Aweb%3Aprofile&metric=alert_status)](https://sonarcloud.io/dashboard?id=interface%3Aweb%3Aprofile)

[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=interface%3Aweb%3Aprofile&metric=reliability_rating)](https://sonarcloud.io/dashboard?id=interface%3Aweb%3Aprofile)
[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=interface%3Aweb%3Aprofile&metric=security_rating)](https://sonarcloud.io/dashboard?id=interface%3Aweb%3Aprofile)
[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=interface%3Aweb%3Aprofile&metric=sqale_rating)](https://sonarcloud.io/dashboard?id=interface%3Aweb%3Aprofile)
[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=interface%3Aweb%3Aprofile&metric=coverage)](https://sonarcloud.io/dashboard?id=interface%3Aweb%3Aprofile)
[![Duplicated Lines (%)](https://sonarcloud.io/api/project_badges/measure?project=interface%3Aweb%3Aprofile&metric=duplicated_lines_density)](https://sonarcloud.io/dashboard?id=interface%3Aweb%3Aprofile)

## technology
+ [Docker](https://www.docker.com/).

## maintainer
+ [fred belotte](https://github.com/fredbelotte)
+ [Nicholas Escalona](https://github.com/escalonn)
+ [Pushpinder Kaur](https://github.com/kaurrevature)

## license
__interface-web-profile__ is licensed under the terms of the [MIT License](https://github.com/revaturexyz/interface-web-profile/blob/master/LICENSE).
npm package: @revaturexyz/selection
Description: [![Pipeline Status](https://dev.azure.com/revaturexyz/housing/_apis/build/status/8?branchName=broker)](https://dev.azure.com/revaturexyz/housing/_build/latest?definitionId=8&branchName=broker)
Author: fred belotte
Latest version: 0.4.3

# interface-web-selection://readme

[![Pipeline Status](https://dev.azure.com/revaturexyz/housing/_apis/build/status/8?branchName=broker)](https://dev.azure.com/revaturexyz/housing/_build/latest?definitionId=8&branchName=broker)

[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=interface%3Aweb%3Aselection&metric=alert_status)](https://sonarcloud.io/dashboard?id=interface%3Aweb%3Aselection)

[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=interface%3Aweb%3Aselection&metric=reliability_rating)](https://sonarcloud.io/dashboard?id=interface%3Aweb%3Aselection)
[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=interface%3Aweb%3Aselection&metric=security_rating)](https://sonarcloud.io/dashboard?id=interface%3Aweb%3Aselection)
[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=interface%3Aweb%3Aselection&metric=sqale_rating)](https://sonarcloud.io/dashboard?id=interface%3Aweb%3Aselection)
[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=interface%3Aweb%3Aforecast&metric=coverage)](https://sonarcloud.io/dashboard?id=interface%3Aweb%3Aforecast)
[![Duplicated Lines (%)](https://sonarcloud.io/api/project_badges/measure?project=interface%3Aweb%3Aselection&metric=duplicated_lines_density)](https://sonarcloud.io/dashboard?id=interface%3Aweb%3Aselection)

## instruction
1. download and install VirtualBox 5.2+.
1. download and install Vagrant 2.1+.
1. download or clone this repository.
1. open the machine shell.
1. navigate to the repository folder.
1. run command `vagrant up`.
1. run command `vagrant ssh`.

## technology
+ [Docker](https://www.docker.com/).
+ [Vagrant](https://www.vagrantup.com/).
+ [VirtualBox](https://www.virtualbox.org/).

## maintainer
+ [fred belotte](https://github.com/fredbelotte)
+ [Nicholas Escalona](https://github.com/escalonn)
+ [Pushpinder Kaur](https://github.com/kaurrevature)

## testing
There are basic integration tests with Jasmine in the selection.component.spec.ts file.

## license
__interface-web-selection__ is licensed under the terms of the [MIT License](https://github.com/revaturexyz/interface-web-selection/blob/master/LICENSE).
npm package: @revbits/pam-secretman-js-plugin
Description: RevBits PAM Secret Manager JavaScript Plugin
Author: RevBits
Latest version: 1.0.7

# RevBits PAM - Secret Manager JavaScript Plugin 
[![Revits PAM](https://update.revbits.com/static/media/pam.2e3fe77e9b22ea5d60023905db59e48b.svg)](https://www.revbits.com/products/revbits-privileged-access-management)

RevBits PAM Secret Manager JavaScript Plugin allows you to connect to your RevBits PAM Server and get secret values by connecting to Secretman Service.

## Installation

It requires [Node.js](https://nodejs.org/) v16+ to run.

Install the dependencies and devDependencies and start the server.

```sh
npm i @revbits/pam-secretman-js-plugin
```

## Plugins

This NPM Package uses following packages as well.

| Package | README |
| ------ | ------ |
| CryptoJS | https://www.npmjs.com/package/crypto-js |
| Axios | https://www.npmjs.com/package/axios |

## Functions

| Function | Definition |
| ------ | ------ |
| generateSecret | generateSecret(hostName,secretKey,apiKey) |

```
const secretman = require('@revbits/pam-secretman-js-plugin');
(async function(){
    const secretKey = '<Your Secretman Secret Key here>';
    const apiKey = '<You secretman API Access Key here>';
    const secretValue = await secretman.generateSecret('https://<Your revbits base url here>',secretKey,apiKey);
})();
```

## License

MIT
npm package: @revcontent/react-native-sdk
Description: Revcontent React Native SDK
Author: John Burnette
Latest version: 1.1.1

# @revcontent/react-native-sdk

The Revcontent React Native SDK allows publishers to display widgets in their native apps.

## Installation

```sh
npm i @revcontent/react-native-sdk react-native-webview
```

## Usage

### Non TypeScript Implementations

For implementations that don't use TypeScript, you can import the component and then declare it as follows:

```jsx
import RevcontentNativeWidget from '@revcontent/react-native-sdk';

const widgetRef = useRef(null);
const onScroll = ({ nativeEvent }) => widgetRef.current?.onScroll(nativeEvent);

const mySubIds = {
  someKey: 'someValue',
  anotherKey: 'anotherValue'
};

<ScrollView
  onScroll={onScroll}
  scrollEventThrottle={100}>
  <RevcontentNativeView
    ref={widgetRef}
    widgetId={XXXXXX}
    pubId={XXXXXX}
    backgroundColor="white"
    siteUrl="https://app.yoursite.com"
    subIds={mySubIds}
  />
</ScrollView>;
```

### TypeScript Implementations

For TypeScript, the usage is very similar with the exception that you will need to also import the `RevcontentNativeWidgetForwardRefType` to properly type your ref:

```jsx
import RevcontentNativeWidget, { RevcontentNativeWidgetForwardRefType, RevcontentNativeWidgetParams } from '@revcontent/react-native-sdk';

const settings: RevcontentNativeWidgetParams = {
  widgetId: 123456,
  pubdId: 123145,
  siteUrl: 'https://xxx.com',
  subIds: {
    someKey: 'something'
  },
  backgroundColor: '#cccccc'
}

const widgetRef = useRef<RevcontentNativeWidgetForwardRefType>(null);
const onScroll = ({ nativeEvent }: NativeSyntheticEvent<NativeScrollEvent>) => widgetRef.current?.onScroll(nativeEvent);

const mySubIds = {
  someKey: 'someValue',
  anotherKey: 'anotherValue'
};

const { widgetId, pubId, } = settings;

<ScrollView
  onScroll={onScroll}
  scrollEventThrottle={100}>
  <RevcontentNativeView
    ref={widgetRef}
    widgetId={widgetId}
    pubId={pubId}
    backgroundColor={settings.backgroundColor}
    siteUrl={settings.siteUrl}
    subIds={settings.subIds}
  />
</ScrollView>;
```

## Properties

The Revcontent native sdk widget exposes 5 properties:

### `ref`

A ref passed into the component that handles consuming scroll event data for visibility related logic.

| Type       | Required |
| ---------- | -------- |
| forwardRef | Yes      |

### `widgetId`

The numerical value of the widget ID to be displayed.

| Type   | Required |
| ------ | -------- |
| number | Yes      |

### `pubId`

The numerical ID of your publisher account associated with your widget.

| Type   | Required |
| ------ | -------- |
| number | Yes      |

### `backgroundColor`

Overrides the default background color of the widget view. Background color defaults to white if not set.

| Type   | Required |
| ------ | -------- |
| string | No       |

### `siteUrl`

The base URL used to identify requests for content.

| Type   | Required |
| ------ | -------- |
| string | Yes      |

### `subIds`

Any sub ID values to be passed for additional tracking

| Type   | Required |
| ------ | -------- |
| object | No       |
npm package: @revealui/biome-tailwindcss
Description: Biome-compatible Tailwind CSS class sorting tool
Author: RevealUI Team
Latest version: 1.0.0
Deprecated: Removed — use Biome directly

# @revealui/biome-tailwindcss

Biome-compatible Tailwind CSS class sorting tool. Automatically sorts and organizes Tailwind CSS classes in your codebase to match Biome's formatting preferences.

## Installation

```bash
npm install @revealui/biome-tailwindcss
# or
pnpm add @revealui/biome-tailwindcss
# or
yarn add @revealui/biome-tailwindcss
```

## Usage

### CLI

```bash
npx biome-tailwindcss [options] [files...]
```

**Options:**
- `--write`: Write changes to files (default: dry run)
- `--check`: Check if files need formatting (exit code 1 if changes needed)
- `--help`: Show help message

**Examples:**

```bash
# Format all TypeScript/TSX files in current directory
npx biome-tailwindcss --write "**/*.{ts,tsx}"

# Check specific files
npx biome-tailwindcss --check src/components/*.tsx

# Format specific files
npx biome-tailwindcss --write src/components/Button.tsx
```

### Programmatic API

```typescript
import { sortTailwindClasses } from '@revealui/biome-tailwindcss';

const sorted = sortTailwindClasses('flex items-center justify-between p-4');
// Returns: 'flex items-center justify-between p-4' (sorted)
```

## Features

- ✅ **Biome Compatible**: Works seamlessly with Biome formatter
- ✅ **Tailwind CSS Sorting**: Sorts classes according to Tailwind best practices
- ✅ **TypeScript/TSX Support**: Handles TypeScript and JSX files
- ✅ **CLI Tool**: Easy to use from command line
- ✅ **Programmatic API**: Use in your own tools

## Integration with Biome

This tool is designed to work alongside Biome. Use it to sort Tailwind classes before or after Biome formatting:

```json
// package.json
{
  "scripts": {
    "format": "biome format --write . && biome-tailwindcss --write \"**/*.{ts,tsx}\""
  }
}
```

## License

MIT

## Repository

https://github.com/RevealUIStudio/reveal

## Support

For issues and questions, please open an issue on GitHub:
https://github.com/RevealUIStudio/reveal/issues
npm package: @revealui/cli
Description: Create RevealUI projects with a single command
Author: RevealUI Team
Latest version: 0.6.3

# @revealui/cli

The official CLI for creating RevealUI projects with a single command.

## Usage

```bash
pnpm create revealui@latest
```

or with specific options:

```bash
pnpm create revealui@latest my-project --template basic-blog
```

## Features

- Interactive project setup with guided prompts
- Multiple templates: basic-blog, e-commerce, portfolio
- Automatic environment configuration
- Database setup (NeonDB, Supabase, or local PostgreSQL)
- Storage setup (Vercel Blob or Supabase)
- Payment setup (Stripe)
- Dev Container and Devbox configuration
- Git initialization with initial commit

## Options

```
Usage: create-revealui [options] [project-name]

Options:
  -t, --template <name>   Template to use (basic-blog, e-commerce, portfolio)
  --skip-git              Skip git initialization
  --skip-install          Skip dependency installation
  -h, --help             Display help for command
```

## Requirements

- Node.js 24.13.0 or higher
- pnpm 10.28.2 or higher

## What Gets Created

```
my-project/
├── apps/
│   ├── cms/              # CMS application
│   └── mainframe/        # Frontend application
├── packages/
│   └── ...               # Shared packages
├── .devcontainer/        # Dev Container configuration
├── devbox.json           # Devbox configuration
├── .env.development.local # Environment variables
└── README.md             # Project documentation
```

## Next Steps

After creating your project:

```bash
cd my-project
pnpm dev
```

Visit http://localhost:4000 to access the CMS.

## Development Environments

### Dev Containers

Open in VS Code and select "Reopen in Container" or use GitHub Codespaces.

### Devbox

```bash
devbox shell
pnpm dev
```

## When to Use This

- You're starting a new RevealUI project from scratch and want a guided setup
- You need database, storage, and payment providers configured in one step
- You want Dev Container or Devbox configuration generated automatically
- **Not** for adding RevealUI to an existing project — install individual packages instead

## JOSHUA Alignment

- **Justifiable**: Every prompt earns its place — template, database, storage, and payment choices all map to real config decisions
- **Adaptive**: Multiple templates (blog, e-commerce, portfolio) and environment options (DevContainer, Devbox) adapt to your workflow
- **Sovereign**: Scaffolds a self-contained project you fully own — no hosted dependency or account required

## License

MIT
npm package: @revealui/openapi
Description: OpenAPI integration for Hono with Zod validation
Latest version: 0.2.2

# @revealui/openapi

OpenAPI integration for Hono with Zod validation. Generates OpenAPI 3.x specs from route definitions and provides type-safe request validation middleware.

## When to Use This

- You're building API routes in `apps/api` and need OpenAPI documentation
- You want type-safe request/response validation with Zod schemas
- You need auto-generated Swagger UI documentation

If you're building frontend components or CLI tools, you don't need this package.

## Installation

```bash
pnpm add @revealui/openapi
```

Peer dependencies: `hono` (>=4.3.6), `zod` (>=4.0.0)

## API Reference

| Export | Type | Purpose |
|--------|------|---------|
| `OpenAPIHono` | Class | Extended Hono app with OpenAPI route registration |
| `createRoute` | Function | Define a typed route with request/response schemas |
| `zValidator` | Middleware | Validate request body/query/params against Zod schemas |
| `$` | Helper | Shorthand for OpenAPI schema references |
| `extendZodWithOpenApi` | Function | Add `.openapi()` method to Zod types (re-exported from `@asteasolutions/zod-to-openapi`) |
| `z` | Re-export | Zod instance for convenience |

### Types

| Type | Purpose |
|------|---------|
| `RouteConfig` | Route definition shape (method, path, request, responses) |
| `RouteHandler` | Handler function type for a given route config |
| `RouteHook` | Hook function type for route lifecycle |
| `OpenAPIHonoOptions` | Constructor options for `OpenAPIHono` |

## Usage

```typescript
import { OpenAPIHono, createRoute, zValidator, z } from '@revealui/openapi';

const route = createRoute({
  method: 'post',
  path: '/users',
  request: {
    body: { content: { 'application/json': { schema: z.object({ name: z.string() }) } } },
  },
  responses: {
    201: { description: 'User created' },
  },
});

const app = new OpenAPIHono();
app.openapi(route, (c) => c.json({ id: '1', name: 'test' }, 201));
```

## JOSHUA Alignment

- **Unified**: Single schema definition drives validation, types, and OpenAPI spec
- **Orthogonal**: Decoupled from business logic — validates at the boundary, not inside handlers
- **Hermetic**: Request validation happens before handler execution, preventing invalid data from leaking through

## Related Packages

- `apps/api` — Primary consumer, serves Swagger UI at `/docs`
- `@revealui/contracts` — Zod schemas shared between API and clients
npm package: @revector/asciidoctor-panel
Description: UI pane for displaying ASCII Doctor formatted data.
Latest version: 0.0.1-beta.5

# AsciiDoctor Panel

An Angular2 component for displaying embedded [AsciiDoctor](http://asciidoctor.org/) content.


## Installation

```shell
> npm install --save asciidoctorjs-web-repack @revector/asciidoctor-panel
```

## Dependencies

+ [Angular2 Core](https://angular.io/) 
+ [AsciiDoctor Web Repack](https://www.npmjs.com/package/asciidoctorjs-web-repack) A web-packaged version of the [asciidoctor](https://github.com/asciidoctor/asciidoctor.js) project.


## Use

In your main app (e.g.app.module.ts):
```javascript

// import the module
import {RvAsciidoctorPanelModule} from '@revector/asciidoctor-panel';

// and register it as an import: 
@NgModule({
  declarations: [
    AppComponent,
    ...
  ],
  imports: [
    RvAsciidoctorPanelModule,
    ...
  ],
  entryComponents: [AppComponent],
  bootstrap: [AppComponent]
})

```


And reference it in your component:

```html
<md-card>
  <rv-asciidoctor-panel style="white-space:normal;overflow-wrap: normal;overflow: auto" [content]="asciidoctorContent"></rv-asciidoctor-panel>
</md-card>
```
npm package: @revector/auth-service
Description: NgRx Store + AngularFire2 based authentication Module for Angular 2
Latest version: 0.0.1-beta.5

# Auth-Service

An authentication and authorization service built on Firebase and NgStore. Provides roles, permissions and user management, with plans for future asset-level Access Control Lists (ACLs).


## About the data types

### Permissions

Permissions are simple objects, essentially just a key and an optional description. The list of all system permissions are stored in an object map, using the permission "name" as the key. This map is found at the root of the auth-system state object.

A typical system is expected to have no more than a few hundred permissions.

### Roles

A Role is also a simple 'key-description' tuple, and all system roles are stored in a single object map at the root of the auth-system state object.

Because "a role has permissions", there is also a role-permissions map. This map is stored at the root of the auth-system state object, and contains an entry for each role that has any permissions assigned to it. That entry is itself a map, keyed by a permission name. The entry's value is of type 'PermissionGrant'.

Note: Permission Grants are scheduled for refactoring. The entry mentioned above should be shortened to a simple boolean instead of an PermissionGrant data structure.


### Users






### Permissions-oriented

Role based authorization is great, but it isn't actually supported by FireBase Rules in a generalizable way. So our Auth-Service will update a 'flattened' view of a user's permissions table when a permission is granted to or revoked from a role that is already assigned to a user. From a permission and rule management perspective it's fairly transparent, while also allowing FireBase Rules to match one-to-one with  run-time permission checks.


###  Getting Started
npm package: @revector/shared
Description: Utility classes and shared functionality for the Revector components.
Latest version: 0.0.1-beta.5

# Shared

Shared code for the various @Revector components 

## Status

Beta

### Todo

+ Document class source
+ Additional unit tests

## Installation

Chances are you'll be installing this as part of the installation of other Revector components, however, for the sake of completeness:  

```shell
> npm install --save @revector/shared
```

## Dependencies

None.

## Use

Nothing special, import and consume the methods. It's just a function library.
npm package: @revector/sign-in-panel
Description: A sign-up form that works with the @revector/auth-service
Latest version: 0.0.1-beta.5

# Sign In Panel

An Angular2 component for displaying a sign-in/sign-up panel. 

## Status

Pre-Alpha - dependencies are not yet solid. This project will be split into two in order to allow the use of the UI component without requiring the dependency on the @revector/auth-service and the related Firebase dependency.


### Todo

+ Split apart into UI-only and Auth-Service-enabled components.
+ Make demo it's own module.
+ Document the use of the scss fragment(s)

## Installation

```shell
> npm install --save @revector/sign-in-panel
```

## Dependencies

+ [Angular2 Core](https://angular.io/) 
+ [Angular2 Material](https://github.com/angular/material2) 
+ [Angular2 Material](https://github.com/angular/material2) 
+ @revector/auth-service

## Use
See the sign-in-panel.demo.ts file.
```
npm package: @revelmind/snippet
Description: A library of free to use code snippets
Author: Zack Pace
Latest version: 1.0.1

## Snippet
Snippet is a croud-sourced library of code examples (snippets) for anyone to use.

It also wraps an API for easy access to the library via NodeJS.

```js
let snippet = require("snippetjs");

console.log(snippet.getSnippets());
```

## Installing
Install Snippet via NPM or Yarn:
```sh
npm install snippetjs
yarn add snippetjs
```
npm package: @revensky/primitives
Description: Enhanced primitives functionalities for NodeJS.
Author: Revensky
Latest version: 1.0.2

# @revensky/primitives

Library that provides enhanced functionalities for NodeJS' primitive types.

## JSON

Enhances the JSON library by allowing the `jsonParse()` method to remove
the `__proto__` and `constructor` properties of any JSON object,
as they can be used to inject malicious code into the resulting object.

It also exposes a `jsonStringify()` method for stability purposes.
npm package: @revenuecat/esconfig
Description: Shared ECMAScript Config (TypeScript, oxlint, oxfmt)
Author: RevenueCat, Inc.
Latest version: 0.2.0

# esconfig

Shared ECMAScript Config (TypeScript, oxlint, oxfmt)

## Usage

1. Install

   ```sh
   pnpm add -D @revenuecat/esconfig typescript oxlint oxlint-tsgolint oxfmt
   ```

2. `tsconfig.json`

   ```json
   {
     "extends": "@revenuecat/esconfig/tsconfig.shared.json",
     "compilerOptions": {
       "outDir": "./build",
       "rootDir": "./src"
     },
     "include": ["./src"]
   }
   ```

3. copy [`.oxlintrc.json`](./.oxlintrc.json)

4. `.oxlintrc.json`

   ```jsonc
   {
     "extends": [
       "node_modules/@revenuecat/esconfig/.oxlintrc.json",
       // optional:
       "node_modules/@revenuecat/esconfig/.oxlintrc.react.json",
     ],
   }
   ```

5. `package.json`

   ```json
   {
     "scripts": {
       "build": "tsc",
       "lint": "oxlint",
       "format": "oxfmt",
       "format:check": "oxfmt --check"
     }
   }
   ```

6. Done! Don't forget to run `build`, `lint` and `format:check` in your CI workflow.
npm package: @revenuegrid/churnzerojs
Description: Typescript wrapper for ChurnZero JScript API
Author: Vyacheslav Putsenko
Latest version: 1.0.0

# ChurnZeroJS

This is a wrapper for ChurnZero JS Api https://support.churnzero.net/hc/en-us/articles/360004683552-Integrate-ChurnZero-using-Javascript

# Usage
```typescript
import { Client } from '@revenuegrid/churnzerojs';

const client = await Client.connect({
		url: 'analytics.churnzero.net/churnzero.js', // or eu1analytics.churnzero.net/churnzero.js
		apiKey: '{your key}',
		accountId: '{account id}',
		contactId: '{contact id}'
});

client.trackEvent('some custom event');

```
npm package: @revenuegrid/style2dts
Description: Webpack plugin for automatic d.ts files generation for style source files.
Author: Vyacheslav Putsenko
Latest version: 1.0.0

# Welcome to Style2DTS webpack plugin!

This is a webpack plugin that generates typescript definition (.d.ts) files on fly, allowing to import less/css files into typescript code and always have up to date .d.ts content while editing style source files. Implmentation was initially inspired by two existing NPM packages
 - https://github.com/dropbox/typed-css-modules-webpack-plugin
 -  https://github.com/awexfwex/typed-less-modules

Thanks guys!  However we had to add some improvements which are necessary to track [less](https://lesscss.org/) files, which support [@import](https://lesscss.org/features/) statement.

# Features

 - Generates  .d.ts files in build and watch webpack modes.
 - Tracks dependencies so if "common.less" is modified, plugin generates .d.ts files for everything that imports "common.less". Actually this is the main purpose of the plugin.
 - Tracks file deletions - if you delete less file - plugin will delete .d.ts file

# Usage
```javascript
const { Style2DTS } = require('@revenuegrid/style2dts');

module.exports = {
  entry: './src/index.ts',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'bundle.js',
  },
  module: {
    rules: [
      {
        test: /\.tsx?$/,
        loader: 'ts-loader',
      },
      {
        test: /\.less/,
        use: [
          'style-loader',
          // Use CSS Modules
          {
            loader: 'css-loader',
            options: {
              modules: true,
            },
          },
          'less-loader'
        ],
      },
    ],
  },
  // Generate typing declarations for all CSS files under `src/` directory.
  plugins: [
    new Style2DTS ({
      globPattern: 'src/**/*.less',
    }),
  ],
};
```
# Options

The available options for the plugin are:

## `globPattern: string`

This is the glob pattern used to match Style Modules in the project. The plugin only generates `.d.ts`
for the matching Style files.  **Currently only Less and CSS files are supported.**  See [node-glob](https://github.com/isaacs/node-glob) for the pattern
syntax.

## `nameFormat?: "camel" | "kebab" | "param" | "dashes" | "none"`

Tells plugin how to generate class names exports. if not specified **camel** is used.

## `exportType?: "named" | "default"`

Tells plugin how to generate .d.ts file content. if not specified **default** is used.

 - **named** - exports several constants per each style entry. Suitable for importing explicit styles.
	Import example: `import { a, b,c } from './style.less;`
 - **default** - exports default object containing all style entries. Suitable for default import.
  	Import example: `import Styles from './style.less;`

# Requirements

 - Webpack version 5.34.0 or  higher.
npm package: @revenuejuice/api-gateway-auth
Description: A lambda function to allow passing of Api Gateway keys via a query string. Useful for avoiding CORS when making "simple" web requests cross domain. 
Author: Digital Optimization Group, LLC
Latest version: 1.0.0

### @revenuejuice/api-gateway-auth

A lambda function to allow passing of Api Gateway keys via a query string. Useful for avoiding CORS when making "simple" web requests cross domain. To meet the requirements of a "simple request" we cannot add the `x-api-key` header without triggering a CORS preflight request. With this custom authorizer (deployed as a lambda function) you can pass the query string `apikey` with your request. You must enable the authorizer in API gateway.

Alternatively you may also add a stage variable `apikey` and use that to authorize your api. This is useful if you want the fine grained rate limiting control of an apikey without needing to provide it from external requests.

### Use

`npm install --save @revenuejuice/api-gateway-auth`

Create an `index.js` file.

```js
exports.handler = require("@revenuejuice/api-gateway-auth");
```

Build with webpack

```js
var path = require("path");
var webpack = require("webpack");

module.exports = {
    entry: {
        auth: path.join(__dirname, "/index.js")
    },
    output: {
        path: path.join(__dirname, "dist"),
        filename: "auth-lambda.js",
        libraryTarget: "commonjs"
    },
    target: "node"
};
```

Deploy and configure in AWS.

#### Reference

Simple requests: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#Simple_requests

Adding custom authorizer to API gateway: https://docs.aws.amazon.com/apigateway/latest/developerguide/configure-api-gateway-lambda-authorization-with-console.html
npm package: @revenuejuice/editor-client-js
Description: For use by Revenue Juice clients. For documentation please contact info@revenuejuice.com. https://www.revenuejuice.com
Author: Digital Optimization Group LLC
Latest version: 1.0.0-alpha.3

### @revenuejuice/editor-client-js

For use by Revenue Juice clients. For documentation please contact info@revenuejuice.com. https://www.revenuejuice.com
npm package: @revenuejuice/editor-client-react
Description: For use by Revenue Juice clients. For documentation please contact info@revenuejuice.com. https://www.revenuejuice.com
Author: Digital Optimization Group LLC
Latest version: 1.0.0-alpha.10

### @revenuejuice/editor-client-react

For use by Revenue Juice clients. For documentation please contact info@revenuejuice.com. https://www.revenuejuice.com
npm package: @revenuewize/rvw-shared-ui
Description: >
Author: nave ronen
Latest version: 1.0.1

# rvw-shared-ui

> 

[![NPM](https://img.shields.io/npm/v/rvw-shared-ui.svg)](https://www.npmjs.com/package/rvw-shared-ui) [![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)

## Install

```bash
npm install --save rvw-shared-ui
```

## Usage

```jsx
import React, { Component } from 'react'

import MyComponent from 'rvw-shared-ui'

class Example extends Component {
  render () {
    return (
      <MyComponent />
    )
  }
}
```

## License

MIT © [](https://github.com/)
npm package: @reverecre/eslint-plugin-fontawesome
Description: Ensures proper usage of Font Awesome imports
Author: Ryan Delaney
Latest version: 1.3.0
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# `@reverecre/eslint-plugin-fontawesome`

Ensures proper usage of Font Awesome imports

## Installation

You'll first need to install [ESLint](https://eslint.org/):

```sh
npm i eslint --save-dev
```

Next, install `@reverecre/eslint-plugin-fontawesome`:

```sh
npm install @reverecre/eslint-plugin-fontawesome --save-dev
```

## Usage

Add `@reverecre/fontawesome` to the plugins section of your `.eslintrc`
configuration file. You can omit the `eslint-plugin-` prefix:

```json
{
  "plugins": ["@reverecre/fontawesome"]
}
```

Then configure the rules you want to use under the rules section.

```json
{
  "rules": {
    "@reverecre/fontawesome/shakeable-imports": 2
  }
}
```

## Supported Rules

### `@reverecre/fontawesome/shakeable-imports`

Ensures all Font Awesome icon imports can be tree shaken by Next.js.
npm package: @reverecre/eslint-plugin-relay
Description: ESLint plugin for Relay.
Latest version: 1.9.1
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# eslint-plugin-relay [![Build Status](https://travis-ci.org/relayjs/eslint-plugin-relay.svg?branch=master)](https://travis-ci.org/relayjs/eslint-plugin-relay) [![npm version](https://badge.fury.io/js/eslint-plugin-relay.svg)](http://badge.fury.io/js/eslint-plugin-relay)

`eslint-plugin-relay` is a plugin for [ESLint](http://eslint.org/) to catch common problems in code using [Relay](https://facebook.github.io/relay/) early.

## Install

`npm i --save-dev eslint-plugin-relay`

## How To Use

1.  Add `"relay"` to your eslint `plugins` section.
2.  Add the relay rules such as `"relay/graphql-syntax": "error"` to your eslint `rules` section, see the example for all rules.

Example .eslintrc.js:

```js
module.exports = {
  // Other eslint properties here
  rules: {
    'relay/graphql-syntax': 'error',
    'relay/compat-uses-vars': 'warn',
    'relay/graphql-naming': 'error',
    'relay/generated-flow-types': 'warn',
    'relay/must-colocate-fragment-spreads': 'warn',
    'relay/no-future-added-value': 'warn',
    'relay/unused-fields': 'warn',
    'relay/function-required-argument': 'warn',
    'relay/hook-required-argument': 'warn'
  },
  plugins: ['relay']
};
```

You can also enable all the recommended or strict rules at once.
Add `plugin:relay/recommended` or `plugin:relay/strict` in `extends`:

```js
{
  "extends": [
    "plugin:relay/recommended"
  ]
}
```

### Suppressing rules within graphql tags

The following rules support suppression within graphql tags:

- relay/unused-fields
- relay/must-colocate-fragment-spreads

Supported rules can be suppressed by adding `# eslint-disable-next-line relay/name-of-rule` to the preceding line:

```js
graphql`fragment foo on Page {
  # eslint-disable-next-line relay/must-colocate-fragment-spreads
  ...unused1
}`
```

Note that only the `eslint-disable-next-line` form of suppression works. `eslint-disable-line` doesn't currently work until graphql-js provides support for [parsing Comment nodes](https://github.com/graphql/graphql-js/issues/2241) in their AST.

## Contribute

We actively welcome pull requests, learn how to [contribute](./CONTRIBUTING.md).

## License

`eslint-plugin-relay` is [MIT licensed](./LICENSE).
npm package: @reverecre/next-query-params
Description: ## API
Author: Ryan Delaney
Latest version: 0.1.0

# `@reverecre/next-query-params`

## API

### `enum QueryParamKind`

**Members:**

- **`STRING`:** Immediately flushed single string value.
- **`STRING_DEFERRED`:** String value that uses local state updates and defers updating the URL.
- **`STRING_LIST`:** Value is set multiple times in the URL, decoded as a list.
- **`STRING_SET`:** Value is set multiple times in the URL, decoded as a set.
- **`STRING_LIST_DEFAULT_UNDEFINED`:** Value is undefined when not present, a list when it is.
- **`STRING_REQUIRED`:** String value that will throw an error if not found.
- **`NUMBER`:** Parsed and serialized as a number.
- **`NUMBER_DEFERRED`:** Number value that uses local state updates and defers updating the URL.

### `parseQuery`

Returns a normalized value of a parsed query param object.

**Example Usage**

```tsx
import { parseQuery, QueryParamKind } from "@reverecre/next-query-params";

const { sortDir } = parseQuery(req.query, {
  sortDir: QueryParamKind.STRING,
});
```

### `QueryParamsProvider`

Provides an application with the shared query parameter state. This is used to sync deferred updates across the application.

### `useQueryParams`

A hook that reads from Next.js's `useQuery` and returns read, write, and reset functions.

**Example Usage**

```tsx
import {
  QueryParamKind,
  QueryParamsProvider,
  useQueryParams,
} from "@reverecre/next-query-params";

function MyApp() {
  return (
    <QueryParamsProvider>
      <MyComponent />
    </QueryParamsProvider>
  );
}

function MyComponent() {
  const [query, setQuery, resetQuery] = useQueryParams({
    sortDir: QueryParamKind.STRING,
    sortBy: QueryParamKind.STRING,
    search: QueryParamKind.STRING_DEFERRED,
    selectedOptions: QueryParamKind.STRING_SET,
  });

  const updateSearch = useCallback(
    (next: string) => {
      setQuery({ search: next });
    },
    [setQuery]
  );

  // ...
}
```
npm package: @reverecre/promise
Description: A utility library for working with promises
Author: Ryan Delaney
Latest version: 0.1.0

# `@reverecre/promise`

## Installation

```
npm i @reverecre/promise
```

<!-- TSDOC_START -->

## :toolbox: Functions

- [chunkArray](#gear-chunkarray)
- [workerPool](#gear-workerpool)
- [chunkedWorkerPool](#gear-chunkedworkerpool)
- [sleep](#gear-sleep)
- [retry](#gear-retry)
- [retryWithDefault](#gear-retrywithdefault)

### :gear: chunkArray

Splits an array into subarray chunks.

| Function | Type |
| ---------- | ---------- |
| `chunkArray` | `<T>(arr: readonly T[], chunkSize: number) => T[][]` |

Parameters:

* `arr`: The array to be chunked.
* `chunkSize`: Size of the sub-arrays.


### :gear: workerPool

Processes an array of items using a given callback and concurrency. Best used as
an alternative to Promise.all(items.map(...)) as it limits concurrency.

| Function | Type |
| ---------- | ---------- |
| `workerPool` | `<In, Out>(tasks: readonly In[], fn: (task: In) => MaybePromise<Out>, workers?: number) => Promise<readonly Out[]>` |

Parameters:

* `tasks`: Items to be processed.
* `fn`: Callback to map each item.
* `workers`: Maximum number of promises to execute at once.


### :gear: chunkedWorkerPool

`workerPool` implementation that batches `tasks` into chunks before calling
`fn` to allow for processing in small batches.

| Function | Type |
| ---------- | ---------- |
| `chunkedWorkerPool` | `<In, Out>(tasks: readonly In[], fn: (task: In[]) => MaybePromise<Out[]>, { chunkSize, workers }?: { workers?: number; chunkSize?: number; }) => Promise<readonly Out[]>` |

Parameters:

* `tasks`: Items to be processed.
* `fn`: Callback to map each item.
* `options`: Concurrency controls.


### :gear: sleep

Waits a given number of milliseconds.

| Function | Type |
| ---------- | ---------- |
| `sleep` | `(ms: number) => Promise<unknown>` |

### :gear: retry

Wraps a function that returns a promise adding retry logic, before throwing
the last seen error.

| Function | Type |
| ---------- | ---------- |
| `retry` | `<In extends unknown[], Out>(fn: (...args: In) => Promise<Out>, { attempts, backoffDuration, backoffJitter, onError, }?: RetryOptions) => (...args: In) => Promise<Out>` |

### :gear: retryWithDefault

Wraps a function that returns a promise adding retry logic, before throwing
returning a default.

| Function | Type |
| ---------- | ---------- |
| `retryWithDefault` | `<In extends unknown[], Out>(fn: (...args: In) => Promise<Out>, defaultTo: Out, opts?: RetryOptions) => (...args: In) => Promise<Out>` |



<!-- TSDOC_END -->
npm package: @reverse-craft/smart-fs-mcp
Description: MCP server for AI-assisted code processing - provides MCP tools for smart-fs core library
Latest version: 1.0.1

# @reverse-craft/smart-fs-mcp

MCP (Model Context Protocol) server that exposes smart-fs functionality as AI-accessible tools. Enables AI assistants to read, search, and analyze code with source map support.

## Features

- **read_code_smart** - Read and beautify code files with source map coordinates
- **search_code_smart** - Search in beautified code, returns original positions
- **find_usage_smart** - Find variable/function definitions and references
- **apply_custom_transform** - Apply Babel plugins for code transformation

## Installation

```bash
npm install @reverse-craft/smart-fs-mcp
```

## Usage

### As MCP Server

Add to your MCP configuration (e.g., Claude Desktop, Kiro):

```json
{
  "mcpServers": {
    "smart-fs": {
      "command": "npx",
      "args": ["@reverse-craft/smart-fs-mcp"]
    }
  }
}
```

### Run Directly

```bash
npx @reverse-craft/smart-fs-mcp
```

## MCP Tools

### read_code_smart

Read and beautify code with optional line range and truncation.

```typescript
{
  filePath: string;      // Path to file
  startLine?: number;    // Start line (1-based)
  endLine?: number;      // End line (1-based)
  charLimit?: number;    // String truncation length (default: 300)
  maxLineChars?: number; // Max chars per line (default: 500)
}
```

### search_code_smart

Search in beautified code with context lines.

```typescript
{
  filePath: string;       // Path to file
  query: string;          // Search query
  isRegex?: boolean;      // Use regex matching
  caseSensitive?: boolean;
  contextLines?: number;  // Lines of context (default: 2)
  maxMatches?: number;    // Max results (default: 50)
}
```

### find_usage_smart

Find all definitions and references of an identifier.

```typescript
{
  filePath: string;       // Path to file
  identifier: string;     // Variable/function name
  targetLine?: number;    // Target line for precise binding
  maxReferences?: number; // Max references (default: 10)
}
```

### apply_custom_transform

Apply Babel plugin transformations.

```typescript
{
  filePath: string;       // Path to file
  pluginPath: string;     // Path to Babel plugin
  outputPath?: string;    // Output file path
}
```

## Output Format

All tools return formatted output with source map coordinates:

```
/path/to/file.js (1-20/5000)
Src=original position for breakpoints
    1 L1:0       var _0x1234 = function() {
    2 L1:25        var data = "SGVsbG8=...[TRUNCATED]...";
    3 L1:50078    return decode(data);
```

## Related Packages

- **[@reverse-craft/smart-fs](https://github.com/reverse-craft/smart-fs)** - Core library
- **[@reverse-craft/ai-tools](https://github.com/reverse-craft/ai-tools)** - AI-powered analysis tools

## License

MIT