open-index/open-npm huggingface dataset:
npm package: @onlaw/ui
Description: Onlaw UI library for React
Latest version: 2.0.0

# Onlaw UI

## Goals

- Accessibility
- Allow for theming (with emotion)

## Installation

```
yarn add emotion-theming @emotion/core @onlaw/ui
```

## Use

Import components as needed from `@onlaw/ui`. With Onlaw UI you have to use emotion's `jsx` pragma:

```jsx
/** @jsx jsx */
import { jsx } from '@emotion/core'
import { Logo } from '@onlaw/ui'

const Component = () => <Logo />
```

### Note

`@onlaw/ui` uses [emotion](https://github.com/emotion-js/emotion) (v10) for styling and theming. You must set up a `<ThemeProvider />` to give the components access to the theme:

```jsx
import { ThemeProvider } from 'emotion-theming'
import { theme } from '@onlaw/ui'

const App = () => (
  <ThemeProvider theme={theme}>
    <Component />
  </ThemeProvider>
)
```
npm package: @onlib/angular
Description: Angular Core Lib
Author: duy.hoang@on.app
Latest version: 1.0.11

# OnCore

This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 14.0.0.

## Code scaffolding

Run `ng generate component component-name --project on-core` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project on-core`.
> Note: Don't forget to add `--project on-core` or else it will be added to the default project in your `angular.json` file. 

## Build

Run `ng build on-core` to build the project. The build artifacts will be stored in the `dist/` directory.

## Publishing

After building your library with `ng build on-core`, go to the dist folder `cd dist/on-core` and run `npm publish`.

## Running unit tests

Run `ng test on-core` to execute the unit tests via [Karma](https://karma-runner.github.io).

## Further help

To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
npm package: @online-sheet/core
Description: FortuneSheet is a drop-in javascript spreadsheet library that provides rich features like Excel and Google Sheets
Latest version: 1.0.5

# @online-sheet/core

FortuneSheet is a drop-in javascript spreadsheet library that provides rich features like Excel and Google Sheets

See our repo [online-sheet](https://github.com/eoncn/online-sheet) for more information.

## Install

Using npm:

```bash
$ npm install --save  @online-sheet/core
```

or using yarn:

```bash
$ yarn add @online-sheet/core
```
npm package: @online-sheet/react
Description: FortuneSheet is a drop-in javascript spreadsheet library that provides rich features like Excel and Google Sheets
Latest version: 1.0.8

# @online-sheet/react

FortuneSheet is a drop-in javascript spreadsheet library that provides rich features like Excel and Google Sheets

See our repo [online-sheet](https://github.com/eoncn/online-sheet) for more information.

## Install

Using npm:

```bash
$ npm install --save  @online-sheet/react
```

or using yarn:

```bash
$ yarn add @online-sheet/react
```
npm package: @onlineapps/conn-base-state
Description: Redis persistent state connector (no TTL) with atomic rebuild for OA Drive microservices
Author: OA Drive Team
Latest version: 1.0.1

# @onlineapps/conn-base-state

Redis **persistent state** connector for OA Drive microservices. Unlike `conn-base-cache`, state keys have **no TTL** — they persist until explicitly deleted or rebuilt from DB.

## Key differences from conn-base-cache

| Feature | conn-base-cache | conn-base-state |
|---------|----------------|-----------------|
| Key prefix | `cache:<service>:` | `state:<service>:` |
| TTL | Required (default 3600s) | Never — keys persist |
| Purpose | Temporary caching | Operational state (entitlements, credits) |
| Rebuild | No rebuild concept | `rebuildFromDB()` — atomic SCAN+DEL+repopulate |
| Retry | Hard cutoff after N attempts | Exponential backoff, never gives up |

## Quick Start

```javascript
const StateConnector = require('@onlineapps/conn-base-state');

const state = new StateConnector({
  host: '127.0.0.1',
  port: 6379,
  serviceName: 'meta'
});

await state.connect();

// Set/get state (no TTL)
await state.set('entitlement:100:1', '1');
const val = await state.get('entitlement:100:1');

// Atomic rebuild from DB
await state.rebuildFromDB(async (pipeline) => {
  pipeline.set('entitlement:100:1', '1');
  pipeline.sadd('entitlement:100:bundles', '1');
});
```

## API

See JSDoc in `src/index.js` for full documentation.

## Testing

```bash
npm run test:unit
```

Mock connector available for tests:

```javascript
const { MockStateConnector } = require('@onlineapps/conn-base-state');
const state = new MockStateConnector({ serviceName: 'test' });
```
npm package: @onlineapps/mq-client-core
Description: Core MQ client library for RabbitMQ - shared by infrastructure services and connectors
Author: OnlineApps
Latest version: 1.0.82

# @onlineapps/mq-client-core

Core MQ client library for RabbitMQ - shared by infrastructure services and connectors.

## Overview

This is the **core library** extracted from `@onlineapps/conn-infra-mq` to provide basic MQ functionality for infrastructure services (gateway, registry, validator) without business-specific features.

**Architecture Principle**: Connectors are exclusively for business services. If a connector contains functionality that should also serve infrastructure services, it must be extracted into a shared library.

## Installation

```bash
npm install @onlineapps/mq-client-core
```

## Usage

### For Infrastructure Services

```javascript
const BaseClient = require('@onlineapps/mq-client-core');

const mqClient = new BaseClient({
  type: 'rabbitmq',
  host: 'amqp://localhost:5672',
  queue: 'workflow.init' // Optional default queue
});

await mqClient.connect();
await mqClient.publish('workflow.init', { workflowId: '123', data: '...' });
await mqClient.publish('workflow.control', { workflowId: '123', data: '...' });
```

### Configuration

**Flexible Schema** - Only `type` and `host` are required:

```javascript
{
  type: 'rabbitmq',        // Required
  host: 'amqp://...',      // Required
  queue: 'optional',        // Optional default queue
  exchange: '',             // Optional exchange
  durable: true,            // Optional (default: true)
  prefetch: 1,              // Optional (default: 1)
  noAck: false,             // Optional (default: false)
  logger: null              // Optional custom logger
}
```

## API

### BaseClient

- `connect(options?)` - Connect to RabbitMQ
- `disconnect()` - Disconnect from RabbitMQ
- `publish(queue, message, options?)` - Publish message to queue
- `consume(queue, handler, options?)` - Consume messages from queue
- `ack(msg)` - Acknowledge message
- `nack(msg, options?)` - Negative acknowledge message
- `isConnected()` - Check connection status
- `onError(callback)` - Register error handler

## Architecture

```
mq-client-core (this library)
├── BaseClient - Core AMQP operations
├── RabbitMQClient - Transport implementation
└── Basic publish/consume functionality

conn-infra-mq (connector for business services)
├── Uses mq-client-core internally
├── ConnectorMQClient - Orchestrator with layers
├── WorkflowRouter - Business workflow routing
└── Additional business-specific features

Infrastructure services (gateway, registry, validator)
└── Use mq-client-core directly (not the connector)
```

## Related Packages

- `@onlineapps/conn-infra-mq` - Full connector with business-specific features (uses this library internally)

## License

MIT
npm package: @onlineapps/service-common
Description: Common utilities for both infrastructure services and business services
Author: OA Drive Team
Latest version: 1.0.18

# @onlineapps/service-common

Common utilities for both infrastructure services and business services in OA Drive.

## Purpose

This library provides shared functionality that is used across the entire system, by both infrastructure services (Gateway, Registry, Validator, etc.) and business services (hello-service, etc.).

## Installation

```bash
npm install @onlineapps/service-common
```

## Usage

### Wait for Infrastructure Ready

Wait for all infrastructure services to be ready before creating queues:

**Infrastructure Services:**
```javascript
const { waitForInfrastructureReady } = require('@onlineapps/service-common');

await waitForInfrastructureReady({
  redisUrl: 'redis://api_node_cache:6379',
  maxWait: 300000, // 5 minutes
  checkInterval: 5000, // 5 seconds
  logger: logger
});

// Now safe to create infrastructure queues
```

**Business Services:**
```javascript
const { waitForInfrastructureReady } = require('@onlineapps/service-common');

await waitForInfrastructureReady({
  redisUrl: process.env.REDIS_URL,
  maxWait: 60000, // 1 minute
  checkInterval: 5000, // 5 seconds
  logger: logger
});

// Now safe to create business queues
```

## API

### `waitForInfrastructureReady(options)`

Waits for all infrastructure services to be reported as healthy by Registry.

**Options:**
- `redisUrl` (string): Redis URL
- `maxWait` (number): Maximum wait time in ms (default: 300000 = 5 minutes)
- `checkInterval` (number): Check interval in ms (default: 5000 = 5 seconds)
- `logger` (Object|Function): **Required** logger instance (or function). No implicit console fallback.

**Returns:** `Promise<boolean>` - True if all infrastructure services are ready

**Throws:** `Error` - If timeout is reached

**Environment Variables:**
- `REDIS_URL` - Redis connection URL
- `INFRASTRUCTURE_HEALTH_WAIT_MAX_TIME` - Maximum wait time in ms
- `INFRASTRUCTURE_HEALTH_WAIT_CHECK_INTERVAL` - Check interval in ms

## Architecture

This library is used by:
- **Infrastructure services** (via `@onlineapps/infrastructure-tools` which re-exports from here)
- **Business services** (via `@onlineapps/service-wrapper` or directly)

This ensures no duplication and consistent behavior across all services.
npm package: @onlineapps/validator-client
Description: Validation client for microservices pre-validation
Author: OnlineApps
Latest version: 1.0.3
Deprecated: This package has been deprecated. ⚠️ This package has been renamed to @onlineapps/connector-registry-client. Please install @onlineapps/connector-registry-client instead. See: https://www.npmjs.com/package/@onlineapps/conn-base-schema-validator

# @onlineapps/validator-client

Validation client for microservices - handles local pre-validation as part of two-stage validation architecture.

## Installation

```bash
npm install @onlineapps/validator-client
```

## Usage

### As CLI

```bash
# Run in service directory
npx @onlineapps/validator-client validate

# With options
npx @onlineapps/validator-client validate --name my-service --version 1.0.0
```

### As Library

```javascript
const LocalValidator = require('@onlineapps/validator-client');

const validator = new LocalValidator({
  servicePath: '/path/to/service',
  configDir: 'connector-config'
});

// Run validation
const results = await validator.validate('my-service', '1.0.0');

if (results.success) {
  console.log('Pre-validation token:', results.token);
}
```

## Configuration

Create a `connector-config` directory in your service root with:

### openapi.yaml or openapi.json
Your OpenAPI 3.0 specification

### manifest.json
```json
{
  "metadata": {
    "name": "my-service",
    "version": "1.0.0",
    "connectors": {
      "connector-logger": { "version": "1.0.0", "enabled": true },
      "connector-storage": { "version": "1.0.0", "enabled": true },
      "connector-registry-client": { "version": "1.0.0", "enabled": true },
      "connector-mq-client": { "version": "1.0.0", "enabled": true },
      "connector-cookbook": { "version": "1.0.0", "enabled": true }
    }
  },
  "health": "/health",
  "endpoints": [
    { "path": "/api/test", "method": "GET" },
    { "path": "/api/data", "method": "POST" }
  ]
}
```

## Validation Process

1. Loads service configuration from files
2. Runs validation checks:
   - OpenAPI specification
   - Endpoint definitions
   - Required connectors
   - Health check endpoint
3. Generates pre-validation token if successful
4. Saves token to `.validation-token` file

## Output

The validator provides detailed output:
- ✅ Successful checks
- ❌ Failed checks
- ⚠️ Warnings
- 🎫 Pre-validation token (if successful)

## Integration with Registry

After successful pre-validation:

1. Service reads token from `.validation-token`
2. Includes token in registration request to Registry
3. Registry forwards to system validator
4. System validator verifies token and issues certificate

## License

MIT
npm package: @onlineapps/validator-core
Description: Core validation logic for microservices
Author: OnlineApps
Latest version: 1.0.2
Deprecated: This package has been deprecated. ⚠️ This package has been renamed to @onlineapps/connector-registry-client. Please install @onlineapps/connector-registry-client instead. See: https://www.npmjs.com/package/@onlineapps/schema-validator-core

# @onlineapps/validator-core

Core validation logic for microservices with two-stage validation support.

## Installation

```bash
npm install @onlineapps/validator-core
```

## Usage

```javascript
const ValidationCore = require('@onlineapps/validator-core');

const validator = new ValidationCore({
  strictMode: true,
  requiredConnectors: [
    'connector-logger',
    'connector-storage',
    'connector-registry-client',
    'connector-mq-client',
    'connector-cookbook'
  ]
});

// Validate service data
const results = await validator.validate({
  openApiSpec: { /* OpenAPI 3.0 spec */ },
  endpoints: [ /* endpoint definitions */ ],
  metadata: { /* service metadata */ },
  health: '/health'
});

// Generate pre-validation token
if (results.success) {
  const token = await validator.generatePreValidationToken(results, 'my-service');
}

// Generate certificate (system validator only)
if (results.success) {
  const certificate = await validator.generateCertificate(
    results,
    'my-service',
    '1.0.0'
  );
}
```

## Features

### Validators
- **OpenApiValidator** - Validates OpenAPI 3.0 and Swagger 2.0 specifications
- **EndpointValidator** - Validates endpoint definitions
- **ConnectorValidator** - Checks required connectors
- **HealthValidator** - Validates health check configuration

### Security
- **TokenManager** - Generates and verifies pre-validation tokens
- **CertificateManager** - Issues and verifies cryptographic certificates

## API

### ValidationCore(config)

Creates a new validation instance.

**Options:**
- `strictMode` (boolean) - Strict validation mode
- `requiredConnectors` (array) - List of required connector names
- `issuer` (string) - Certificate issuer name

### validate(serviceData)

Validates service configuration.

**Returns:** Validation results object with `success`, `errors`, `warnings`, and `checks`.

### generatePreValidationToken(results, serviceName)

Generates a pre-validation token for successful validation.

**Returns:** JWT token string (24h validity, single-use).

### generateCertificate(results, serviceName, version)

Generates a validation certificate.

**Returns:** Certificate object with cryptographic signature.

### verifyCertificate(certificate)

Verifies a validation certificate.

**Returns:** Boolean indicating certificate validity.

## License

MIT
npm package: @onlinecity/gatewayapi-node
Description: A typesafe NodeJS SDK for GatewayAPI Messaging API
Author: @onlinecity
Latest version: 0.1.1

# GatewayAPI Messaging SDK (Node.js)

Typesafe Node.js SDK for the GatewayAPI Messaging API.

## Install

```bash
npm install @onlinecity/gatewayapi-node
```

## Quickstart

```ts
import { GatewayAPIClient } from "@onlinecity/gatewayapi-node";

const gatewayapi = new GatewayAPIClient({
  token: "YOUR_TOKEN",
});

const response = await gatewayapi.submitSingle({
  sender: "ExampleSMS",
  recipient: 4512345678,
  message: "Hello world!",
});

console.log(response.msg_id);
```

## Documentation

- [Messaging API overview](https://gatewayapi.com/docs/message/overview/)
- [Authentication](https://gatewayapi.com/docs/authentication/)
- [Webhook signature verification](https://gatewayapi.com/docs/message/overview/#webhook-signature-verification)
- [Integration guide](https://gatewayapi.com/docs/guide/)
- [Error codes](https://gatewayapi.com/docs/error-codes/)

## Send multiple messages

```ts
import { GatewayAPIClient } from "@onlinecity/gatewayapi-node";

const gatewayapi = new GatewayAPIClient({
  token: "YOUR_TOKEN",
});

const response = await gatewayapi.submitMultiple({
  messages: [
    {
      sender: "ExampleSMS",
      recipient: 4512345678,
      message: "Hello world!",
    },
  ],
});

console.log(response.responses.map((item) => item.msg_id));
```

## Error handling

```ts
import { GatewayAPIClient, GatewayAPIError } from "@onlinecity/gatewayapi-node";

const gatewayapi = new GatewayAPIClient({
  token: "YOUR_TOKEN",
});

try {
  await gatewayapi.submitSingle({
    sender: "ExampleSMS",
    recipient: 4512345678,
    message: "Hello world!",
  });
} catch (error) {
  if (error instanceof GatewayAPIError) {
    console.error(error.status, error.statusText, error.body);
  }
}
```

## Webhook helpers

```ts
import {
  parsePhoneMessageWebhookEvent,
  isSMSStatusEvent,
  isRCSStatusEvent,
} from "@onlinecity/gatewayapi-node";

const payload = JSON.parse(requestBody);
const event = parsePhoneMessageWebhookEvent(payload);

if (isSMSStatusEvent(event.event)) {
  console.log("SMS status", event.event.status);
} else if (isRCSStatusEvent(event.event)) {
  console.log("RCS status", event.event.status);
}
```

## Configuration

```ts
import { GatewayAPIClient } from "@onlinecity/gatewayapi-node";

const gatewayapi = new GatewayAPIClient({
  token: "your-token",
  baseUrl: "https://messaging.gatewayapi.eu",
  fetch: customFetch,
});
```

- `token` is required.
- `baseUrl` defaults to `https://messaging.gatewayapi.com`.
- `fetch` allows custom implementations (useful for older Node versions).

## API surface

- `GatewayAPIClient`
- `GatewayAPIError`
- `parsePhoneMessageWebhookEvent`
- `isPhoneMessageWebhookEvent`
- `isSMSStatusEvent`
- `isRCSStatusEvent`
- Types: `MobileMessageRequest`, `MobileMessageResponse`, `MultiMobileMessageRequest`, `MultiMobileMessageResponse`, `PhoneMessageWebhookEvent`, `SMSStatus`, `RCSStatus`

## License

See `LICENSE`
npm package: @onlinefreecv/design-system
Description: A modular, type-safe, and themeable UI component library built with React, Formik, and Vanilla Extract. Designed to accelerate development and ensure consistency across the OnlineFreeCV platform.
Latest version: 1.1.30

# @onlinefreecv/design-system

A modular, type-safe, and themeable UI component library built with React, Formik, and Vanilla Extract. Designed to accelerate development and ensure consistency across the OnlineFreeCV platform.

![NPM Version](https://img.shields.io/npm/v/@onlinefreecv/design-system?color=blue)
![License](https://img.shields.io/npm/l/@onlinefreecv/design-system)
![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue.svg)

---

## 📦 Installation

```bash
npm install @onlinefreecv/design-system
# or
yarn add @onlinefreecv/design-system
```

---

## 🚀 Features

- **Composable UI Components**: Reusable components like `Section`, `Experience`, `Education`, `Projects`, and `Socials`.
- **Formik Integration**: Seamless form state management with validation support.
- **TypeScript Support**: Fully typed components for enhanced developer experience.
- **Vanilla Extract Styling**: Scoped, themeable, and zero-runtime CSS-in-TypeScript.
- **Storybook Documentation**: Interactive component explorer and documentation.

---

## 📚 Documentation & Live Preview

Explore the full component library and documentation:

👉 [Storybook – OnlineFreeCV Design System](http://storybook.onlinefreecv.com/)

---

## 🧱 Components Overview

- **Section**: A generic container for grouping related content.
- **ExperienceSection**: Manage and display professional experiences.
- **EducationSection**: Showcase educational background.
- **ProjectsSection**: Highlight personal or professional projects.
- **Socials**: Add and manage social media links with tag-style inputs.

Each component is designed with accessibility and customization in mind, ensuring adaptability to various use cases.

---

## 🛠️ Usage Example

Here's a basic example of how to use the `Section` component:

```tsx
import { Section } from '@onlinefreecv/design-system';

function App() {
  return (
    <Section title="My Section">
      <p>This is a customizable section.</p>
    </Section>
  );
}
```

For more detailed examples and component variations, refer to the [Storybook documentation](http://storybook.onlinefreecv.com/).

---

## 🧪 Development & Testing

To run the development server:

```bash
npm run dev
# or
yarn dev
# or
pnpm dev
```

To build the project:

```bash
npm run build
# or
yarn build
# or
pnpm build
```

To run storybook:

```bash
npm run storybook
# or
yarn storybook
# or
pnpm storybook
```

---

## 📄 License

This project is licensed under the MIT License.

---

## 👤 Author

- **Liaqat Saeed**
  - [Linkedin](https://pk.linkedin.com/in/liaqat-saeed)
  - [GitHub](https://github.com/liaqatsaeed)

---

## 🤝 Contributing

Contributions are welcome! Please open an issue or submit a pull request for any enhancements or bug fixes.
npm package: @onlinefreecv/seo
Description: SEO toolkit for OnlineFreeCV – shared utilities for titles, meta tags, canonicals, and JSON-LD across all templates.
Latest version: 0.1.3

# @onlinefreecv/seo

Shared SEO toolkit for OnlineFreeCV – helpers for titles, meta tags, canonicals, JSON-LD, and template mappers.

## Install

```bash
npm i @onlinefreecv/seo
# or
pnpm add @onlinefreecv/seo
```

## Features

- **Meta Tag Helpers**: Build SEO-friendly titles, descriptions, and keywords.
- **Canonical & Robots**: Generate canonical URLs and robots meta tags.
- **JSON-LD Structured Data**: Easily create schema.org JSON-LD for Person and WebPage.
- **React SEO Head**: Drop-in React component for meta tags and social sharing.
- **Persona Template Mapping**: Map person data to SEO properties for profile pages.

---

## API Overview

### Meta Helpers (`src/core/meta.ts`)

- `buildTitle({ primary, secondary, brand, max })`: Compose and clamp page titles.
- `buildDescription(str, max)`: Clean and clamp meta descriptions.
- `buildKeywords(list)`: Deduplicate and join keywords.

### Canonical & Robots (`src/core/canonical.ts`)

- `buildCanonical(host, path)`: Generate canonical URLs.
- `buildRobots(indexable)`: Return `"index,follow"` or `"noindex,nofollow"`.

### String Utilities (`src/core/clamp.ts`)

- `clamp(str, max)`: Clamp string to max length, add ellipsis.
- `clean(str)`: Normalize whitespace.

### JSON-LD Structured Data (`src/core/jsonld.ts`)

- `personJsonLd(props)`: Generate Person schema.org JSON-LD.
- `webPageJsonLd(props)`: Generate WebPage schema.org JSON-LD.

### React SEO Head (`src/react/Head.tsx`)

- `<SEOHead {...props} />`: React component for meta tags, OpenGraph, Twitter, canonical, robots, and JSON-LD.

  **Props:**
  - `title`, `description`, `keywords`, `canonical`, `indexable`, `imageUrl`, `jsonLd`, `generatorBrand`

### Persona Template Mapping (`src/templates/persona/map.ts`)

- `mapPersonToSEO(data, opts)`: Map person data to SEO properties for profile/persona pages.

---

## Types

See [`src/types.ts`](src/types.ts) for `PersonData` and `PersonSEOProps` definitions.

---

## Example Usage

```tsx
import { SEOHead, buildCanonical, personJsonLd } from "@onlinefreecv/seo";

<SEOHead
  title="John Doe – Resume"
  description="Experienced developer..."
  canonical={buildCanonical("example.com", "/john-doe")}
  indexable={true}
  imageUrl="https://example.com/john.jpg"
  jsonLd={[personJsonLd({ name: "John Doe", url: "https://example.com/john-doe" })]}
/>
```

---

## License

MIT © [Online Free CV](https://onlinefreecv.com)
npm package: @onlinemad/markdown-it-image-lazy-loading
Description: a markdown-it plugin supporting Chrome 75's native image lazy-loading
Author: Ian Wu
Latest version: 1.1.2

A markdown-it plugin supporting Chrome 75's [native image lazy-loading](https://addyosmani.com/blog/lazy-loading/).

## Install

```bash
$ npm install markdown-it-image-lazy-loading
```

## Usage

```javascript
const md = require('markdown-it')();
const lazy_loading = require('markdown-it-image-lazy-loading');
md.use(lazy_loading);

md.render(`![](example.png "image title")`);
// <p><img src="example.png" alt="" title="image title" loading="lazy"></p>\n
```

The plugin can also add `width` and `height` attributes to each image. This can prevent [cumulative layout shifts (CLS)](https://web.dev/cls/):

```javascript
md.use(lazy_loading, {
    image_size: true,

    // Where your images are stored
    base_path: __dirname + 'src/',
});

md.render(`![](example.png "image title")`);
// <p><img src="example.png" alt="" title="image title" loading="lazy" width="100" height="100"></p>\n
```

To keep images responsive, also include the following CSS:
```css
img{
    max-width: 100%;
    height: auto;
}
```

## License

MIT
npm package: @onlinesales-ai/osmos-react-native-sdk
Description: Modern TypeScript-first React Native SDK for the Osmos advertising platform
Author: Osmos Team
Latest version: 2.0.4

# Osmos React Native SDK

[![npm version](https://badge.fury.io/js/%40onlinesales-ai%2Fosmos-react-native-sdk.svg)](https://badge.fury.io/js/%40onlinesales-ai%2Fosmos-react-native-sdk)
[![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue.svg)](https://www.typescriptlang.org/)
[![React Native](https://img.shields.io/badge/React%20Native-0.60%2B-blue.svg)](https://reactnative.dev/)

The OSMOS React Native SDK provides powerful ad fetching and event tracking capabilities for React Native applications, enabling you to integrate targeted advertising and analytics seamlessly into your mobile apps.

## 🚀 Quick Start

### Installation

```bash
npm install @onlinesales-ai/osmos-react-native-sdk
```

## 📖 Documentation

For detailed setup instructions, configuration options, and advanced features, please refer to the official documentation:

[Initialize the React Native SDK - Documentation](https://dev-hub.onlinesales.ai/docs/initialize-the-react-native-sdk)