open-index/open-npm huggingface dataset:
npm package: @stremio-addon/compat
Description: Drop-in compatibility package to adopt addons built with the official Stremio Addon SDK
Latest version: 0.0.12

# @stremio-addon/compat

> This package is part of [**Stremio-Community/stremio-addon-sdk**](https://github.com/Stremio-Community/stremio-addon-sdk).

Drop-in compatibility layer for migrating from the official Stremio Addon SDK to the community Stremio Addon SDK.

## Features

- 🔄 **Easy migration** - Drop-in replacement for the official SDK
- ✅ **Compatible API** - Same interface as `stremio-addon-sdk`
- 🚀 **Modern foundation** - Powered by the new community SDK packages

## Installation

```bash
pnpm add @stremio-addon/compat
```

## Usage

Replace your import from `stremio-addon-sdk` with `@stremio-addon/compat`:

```typescript
// Before (official SDK)
import { addonBuilder, serveHTTP, getRouter } from "stremio-addon-sdk";

// After (community SDK)
import { addonBuilder, serveHTTP, getRouter } from "@stremio-addon/compat";

// The rest of your code stays the same!
const builder = new addonBuilder(manifest);

builder.defineStreamHandler(async ({ type, id }) => {
  return { streams: [...] };
});

serveHTTP(builder.getInterface(), { port: 3000 });
```

## What's Included

This package provides:

- `addonBuilder` - Compatible with the official SDK's `addonBuilder`
- `serveHTTP` - Function to serve your addon over HTTP
- `getRouter` - Express router factory
- `publishToCentral` - Function to publish to the Stremio addon catalog

## Migration Path

This compatibility package makes it easy to migrate gradually:

1. **Phase 1**: Replace `stremio-addon-sdk` with `@stremio-addon/compat`
2. **Phase 2**: Gradually adopt new features from the community SDK
3. **Phase 3**: Eventually migrate to direct usage of `@stremio-addon/sdk`

For a detailed migration guide, see [MIGRATION.md](../../../MIGRATION.md).

## Architecture

Under the hood, this package uses:

- [`@stremio-addon/sdk`](../sdk) - Core SDK
- [`@stremio-addon/linter`](../validation/linter) - Validation (same as official SDK)
- [`@stremio-addon/node-express`](../runtime/node-express) - Express integration

## Related Packages

- [`@stremio-addon/sdk`](../sdk) - Core SDK package (recommended for new projects)
- [Official Stremio Addon SDK](https://github.com/Stremio/stremio-addon-sdk) - Original SDK

## License

MIT
npm package: @stremio-addon/linter
Description: Community Stremio Addon SDK validation using stremio-addon-linter
Latest version: 0.0.5

# @stremio-addon/linter

> This package is part of [**Stremio-Community/stremio-addon-sdk**](https://github.com/Stremio-Community/stremio-addon-sdk).

Validation package for the Community Stremio Addon SDK using the official `stremio-addon-linter`.

## Features

- ✅ **Runtime validation** - Validates addon manifest using the official Stremio linter
- 🔗 **Compatible** - Uses the same validation as the official Stremio Addon SDK
- 🎯 **Type-safe** - Full TypeScript support

## Installation

```bash
pnpm add @stremio-addon/linter stremio-addon-linter
```

## Usage

```typescript
import { AddonBuilder } from "@stremio-addon/linter";

// The AddonBuilder from this package automatically validates
// your manifest using stremio-addon-linter
const builder = new AddonBuilder({
  id: "com.example.myaddon",
  version: "1.0.0",
  name: "My Addon",
  description: "My cool Stremio addon",
  resources: ["stream"],
  types: ["movie", "series"],
  catalogs: [],
});

// Define handlers as usual
builder.defineStreamHandler(async ({ type, id }) => {
  return {
    streams: [
      {
        url: "https://example.com/stream.mp4",
        title: "Example Stream",
      },
    ],
  };
});

const addonInterface = builder.getInterface();
```

## API

This package exports:

- `AddonBuilder` - Extended builder that validates manifests using `stremio-addon-linter`
- `manifestSchema` - Linter-based validation schema

## Related Packages

- [`@stremio-addon/sdk`](../../sdk) - Core SDK package
- [`@stremio-addon/zod`](../zod) - Alternative validation using Zod

## License

MIT
npm package: @stremio-addon/node
Description: Node runtime for the Community Stremio Addon SDK
Latest version: 0.0.5

# @stremio-addon/node

> This package is part of [**Stremio-Community/stremio-addon-sdk**](https://github.com/Stremio-Community/stremio-addon-sdk).

Node.js runtime adapter for the Community Stremio Addon SDK.

## Features

- 🚀 **Simple** - Minimal setup for Node.js HTTP server
- 🎯 **Type-safe** - Full TypeScript support
- 🔧 **Flexible** - Works with the built-in Node.js HTTP server

## Installation

```bash
pnpm add @stremio-addon/node
```

## Usage

```typescript
import { getRouter } from "@stremio-addon/node";
import { AddonBuilder } from "@stremio-addon/sdk";

// Create your addon
const builder = new AddonBuilder({
  id: "com.example.myaddon",
  version: "1.0.0",
  name: "My Addon",
  description: "My cool Stremio addon",
  resources: ["stream"],
  types: ["movie", "series"],
  catalogs: [],
});

builder.defineStreamHandler(async ({ type, id }) => {
  return {
    streams: [
      {
        url: "https://example.com/stream.mp4",
        title: "Example Stream",
      },
    ],
  };
});

const addonInterface = builder.getInterface();

// Create and start the server
const server = getRouter(addonInterface);
server.listen(3000, () => {
  console.log("Addon server running at http://localhost:3000");
});
```

## API

### `getRouter(addonInterface)`

Creates a Node.js HTTP server instance configured to serve your addon.

**Parameters:**

- `addonInterface` - The addon interface from `builder.getInterface()`

**Returns:** `http.Server` instance

## Examples

See the [bare-bones-js example](../../../examples/bare-bones-js/) for a complete working example.

## Related Packages

- [`@stremio-addon/sdk`](../../sdk) - Core SDK package
- [`@stremio-addon/node-express`](../node-express) - Node.js with Express runtime

## License

MIT
npm package: @stremio-addon/node-express
Description: Node runtime with Express.js for the Community Stremio Addon SDK
Latest version: 0.1.3

# @stremio-addon/node-express

> This package is part of [**Stremio-Community/stremio-addon-sdk**](https://github.com/Stremio-Community/stremio-addon-sdk).

Node.js + Express runtime adapter for the Community Stremio Addon SDK.

## Features

- 🚀 **Express integration** - Seamless integration with Express.js
- 🎯 **Type-safe** - Full TypeScript support
- 🔧 **Flexible** - Works with existing Express apps

## Installation

```bash
pnpm add @stremio-addon/node-express express
```

If using TypeScript:

```bash
pnpm add -D @types/express
```

## Usage

```typescript
import express from "express";
import { getRouter } from "@stremio-addon/node-express";
import { AddonBuilder } from "@stremio-addon/sdk";

// Create your addon
const builder = new AddonBuilder({
  id: "com.example.myaddon",
  version: "1.0.0",
  name: "My Addon",
  description: "My cool Stremio addon",
  resources: ["stream"],
  types: ["movie", "series"],
  catalogs: [],
});

builder.defineStreamHandler(async ({ type, id }) => {
  return {
    streams: [
      {
        url: "https://example.com/stream.mp4",
        title: "Example Stream",
      },
    ],
  };
});

const addonInterface = builder.getInterface();

// Create Express app
const app = express();

// Mount the addon router
app.use(getRouter(addonInterface));

// Start the server
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Addon available at http://localhost:${PORT}/manifest.json`);
});
```

## API

### `getRouter(addonInterface)`

Creates an Express router configured to serve your addon.

**Parameters:**

- `addonInterface` - The addon interface from `builder.getInterface()`

**Returns:** Express `Router` instance

## Examples

See the [hello-world example](../../../examples/hello-world/) for a complete working example.

## Related Packages

- [`@stremio-addon/sdk`](../../sdk) - Core SDK package
- [`@stremio-addon/node`](../node) - Basic Node.js runtime

## License

MIT
npm package: @stremio-addon/sdk
Description: Community Stremio Addon SDK standard schema definitions and helper functions
Latest version: 0.3.3

# @stremio-addon/sdk

> This package is part of [**Stremio-Community/stremio-addon-sdk**](https://github.com/Stremio-Community/stremio-addon-sdk).

Core SDK package for building Stremio addons with TypeScript (or JavaScript).

## Features

- 🎯 **Type-safe** - Full TypeScript support with comprehensive type definitions
- ✅ **Runtime validation** - Optional schema validation support
- 🚀 **Modern** - ESM-first, tree-shakeable
- 🧩 **Framework-agnostic** - Works with any server framework or serverless platform

## Installation

```bash
pnpm add @stremio-addon/sdk
```

## Usage

### Basic Example

```typescript
import { AddonBuilder, createRouter } from "@stremio-addon/sdk";

// Define your addon manifest
const manifest = {
  id: "com.example.myaddon",
  version: "1.0.0",
  name: "My Addon",
  description: "My cool Stremio addon",
  resources: ["stream"],
  types: ["movie", "series"],
  catalogs: [],
};

// Create the addon builder
const builder = new AddonBuilder(manifest);

// Define handlers
builder.defineStreamHandler(async ({ type, id }) => {
  return {
    streams: [
      {
        url: "https://example.com/stream.mp4",
        title: "Example Stream",
      },
    ],
  };
});

// Get the addon interface
const addonInterface = builder.getInterface();

// Create a router (returns a Web Standard Request -> Response handler)
const router = createRouter(addonInterface);
```

### Handler Methods

- `defineStreamHandler(handler)` - Handle stream requests
- `defineMetaHandler(handler)` - Handle metadata requests
- `defineCatalogHandler(handler)` - Handle catalog requests
- `defineSubtitlesHandler(handler)` - Handle subtitle requests

### Router

The `createRouter` function creates a Web Standard Request -> Response handler that can be used with any server framework or serverless platform:

```typescript
const router = createRouter(addonInterface);
const response = await router(request); // Returns Response | null
```

## Runtime Integration

This package provides the core functionality, but you'll need a runtime adapter to serve your addon.

**Server**

- Node.js: [`@stremio-addon/node`](../runtime/node)
- Node.js + Express: [`@stremio-addon/node-express`](../runtime/node-express)

**Serverless**

- See [docs/runtimes.md](../../docs/runtimes.md)

**Custom**

- See [docs/runtimes.md](../../docs/runtimes.md)

## Validation

Add runtime validation by using a validation package:

- **Zod**: [`@stremio-addon/zod`](../validation/zod)
- **Linter**: [`@stremio-addon/linter`](../validation/linter)

## Examples

See the [examples](../../examples/) directory for complete working examples.

## License

MIT
npm package: @stremio-addon/zod
Description: Community Stremio Addon SDK validation using zod
Latest version: 0.2.4

# @stremio-addon/zod

> This package is part of [**Stremio-Community/stremio-addon-sdk**](https://github.com/Stremio-Community/stremio-addon-sdk).

Validation package for the Community Stremio Addon SDK using `zod`.

## Features

- ✅ **Runtime validation** - Validates addon manifest and responses using Zod schemas
- 🎯 **Type-safe** - Full TypeScript support with inferred types from Zod schemas
- 🚀 **Modern** - Popular validation library

## Installation

```bash
pnpm add @stremio-addon/zod zod
```

## Usage

```typescript
import { AddonBuilder } from "@stremio-addon/zod";

// The AddonBuilder from this package automatically validates
// your manifest against the Zod schema
const builder = new AddonBuilder({
  id: "com.example.myaddon",
  version: "1.0.0",
  name: "My Addon",
  description: "My cool Stremio addon",
  resources: ["stream"],
  types: ["movie", "series"],
  catalogs: [],
});

// Define handlers as usual
builder.defineStreamHandler(async ({ type, id }) => {
  return {
    streams: [
      {
        url: "https://example.com/stream.mp4",
        title: "Example Stream",
      },
    ],
  };
});

const addonInterface = builder.getInterface();
```

## API

This package exports:

- `AddonBuilder` - Extended builder that validates manifests using `zod`
- `manifestSchema` - Zod schema for addon manifests

## Related Packages

- [`@stremio-addon/sdk`](../../sdk) - Core SDK package
- [`@stremio-addon/linter`](../linter) - Alternative validation using `stremio-addon-linter`

## License

MIT
npm package: @stremio/stremio-core-validator
Description: Stremio JSON Schema Validator
Author: Smart Code OOD
Latest version: 2.0.2

# Stremio Core Validator

![Build](https://github.com/stremio/stremio-core-validator/workflows/Build/badge.svg)

Stremio JSON Schema Validator for Node.js using stremio-core types

Additional properties that are not part of the schema got removed. Validation functions throws error if the argument does not match the schema.

## Build

```bash
npm run build
```

## Supported types

- Manifest
- ManifestPreview
- Descriptor
- DescriptorPreview
- MetaItem
- MetaItemPreview
- Stream
- Subtitles
- Video
- ResourceResponse

## Example

### MetaItemPreview validation

meta refers to javascript object with valid MetaItemPreview schema

```javascript
const validator = require('@stremio/stremio-core-validator');
const meta = validator.meta_item_preview({
    id: 'id',
    type: 'type',
    name: 'name'
});
```

### Cathing errors

error refers to Error object with message describing which field is invalid

```javascript
const validator = require('@stremio/stremio-core-validator');
try {
    const meta = validator.meta_item_preview({
        id: 'id',
        // type: 'type',
        name: 'name'
    });
} catch (error) {
    console.log(error.message);
}
```
npm package: @stremio/stremio-core-web
Description: Bridge between stremio-core and stremio-web
Author: Smart Code OOD
Latest version: 0.55.0

# Stremio Core Web

[![npm](https://img.shields.io/npm/v/@stremio/stremio-core-web?style=flat-square)](https://www.npmjs.com/package/@stremio/stremio-core-web)

Bridge between [stremio-core](https://github.com/stremio/stremio-core) and [stremio-web](https://github.com/stremio/stremio-web)


## Build

Builds a production wasm package and prepares the rest of the dependencies for the npm package.

```bash
npm install
npm run build
```

### Development

Building the package using [`./scripts/build.sh`](./scripts/build.sh) with `--dev` would allow you to see more logging messages being emitted, this is intended **only** for debugging as it will log messages with sensitive information!

```bash
./scripts/build.sh --dev
```

Or you can also use the development-specific Rust's `wasm-watch` alias from [`./.cargo/config.toml`](./.cargo/config.toml).
It will automatically re-compile the package when a change on the files or dependencies is detected,
including when you're using a local patch for `stremio-core`.

1. Install `cargo-watch`
   - `cargo install cargo-watch`
   - With `cargo-binstall` (prebuilt binaries): `cargo binstall cargo-watch`
2. Run `cargo wasm-watch`

## Publishing

1. Update version to the next minor/major/patch version in Cargo (`Cargo.toml` and `Cargo.lock`) and npm (`package.json` and `package-lock.json`), e.g. from `0.44.13` to `0.44.14`.
2. Commit the change with the new version as a message, e.g. `0.44.14`
3. Wait for CI to build successfully
4. Push a new tag starting with `stremio-core-web-v`, e.g. `git tag stremio-core-web-v0.47.4` `git push origin stremio-core-web-v0.47.4`
5. Create a [new Release](https://github.com/Stremio/stremio-core/releases/new) with the created tag and the tag name as a title, e.g. `stremio-core-web v0.47.4`
6. Publish the Release
7. CI will automatically build and release the `npm` package to the registry
npm package: @stremio/stremio-icons
Description: Icon set for all Stremio clients
Author: Smart Code Ltd.
Latest version: 5.9.0

# Stremio Icons

Icon set for all Stremio clients

## Preview

Icons preview can be found [here](http://stremio.github.io/stremio-icons/)

## Adding more icons
Place new icons of `512x512` in the `icons` folder, use `kebab-case` for the names.
npm package: @stremio/stremio-official-addons
Description: All of the stremio official addons
Author: Smart Code OOD
Latest version: 2.1.2

# Stremio official addons (v2) packages

## NPM `@stremio/stremio-official-addons`
[![npm version badge][version badge]][v2-npm-link] ![Downloads monthly][downloads badge]

## Crates.io `stremio-official-addons`
[![crates.io version badge][crates version]][v2-crates-io-link] ![Crates.io Downloads (latest version)][crates.io downloads badge]

All of the stremio official addons.

## Build

To re-generate `addons.json` you can run `npm run build`

## Changing the official addons collection

To change what's contained in this module, you have to change `scripts/build.js`

Besides changing this module, you have to update all it's dependant packages.

# License

This project is licensed under the [MIT license](./LICENSE.md).

[v2-npm-link]: https://www.npmjs.com/package/@stremio/stremio-official-addons
[downloads badge]: https://img.shields.io/npm/dm/%40stremio/stremio-official-addons?label=%40stremio%2Fstremio-official-addons%20downloads&link=https%3A%2F%2Fwww.npmjs.com%2Fpackage%2F%40stremio%2Fstremio-official-addons

[version badge]: https://img.shields.io/npm/v/%40stremio/stremio-official-addons?label=%40stremio%2Fstremio-official-addons&link=https%3A%2F%2Fwww.npmjs.com%2Fpackage%2F%40stremio%2Fstremio-official-addons

[v2-crates-io-link]: https://crates.io/crates/stremio-official-addons
[crates version]: https://img.shields.io/crates/v/stremio-official-addons
[crates.io downloads badge]: https://img.shields.io/crates/dv/stremio-official-addons?label=Crates.io%20downloads%20(latest%20version)