open-index/open-npm huggingface dataset:
npm package: @moventes/ng-schematics
Description: Angular schematics for the Moventes team
Author: moventes
Latest version: 12.0.0

# Moventes NgSchematics

This repository contains the schematics for the Moventes team.

It was created from the Angular basic Schematic implementation that serves as a starting point to create and publish Schematics to NPM.

## Our schematics

### vscode-setup

This schematic copies configuration files into your VSCode project.

It contains :

- VSCode: extensions, settings and lauch configurations
- Prettier config
- EditorConfig (with a fix for Windows and Linux compatibility)
- ESLint config (only the root `.eslintrc.json` file)
- Husky pre-commit hook to run prettier + eslint on staged files

## How to use it

To use a schematic in your project :

- install this project as a dev-dependency :

```bash
npm i --save-dev @moventes/ng-schematics@latest
```

- run the schematic with the Angular CLI `generate` command.\
  For example, if you want to run the `vscode-setup` schematic :

```bash
ng generate @moventes/ng-schematics:vscode-setup
```

## Development process

### Testing

To test locally, install `@angular-devkit/schematics-cli` globally and use the `schematics` command line tool. That tool acts the same as the `generate` command of the Angular CLI, but also has a debug mode.

Check the documentation with

```bash
schematics --help
```

### Unit Testing

`npm run test` will run the unit tests, using Jasmine as a runner and test framework.

### Publishing

To publish, simply do:

```bash
npm run build
npm publish --access public
```
npm package: @moveo-ai/web-widget
Description: Client side library to load the moveo chat widget and connect it with your agent
Author: Moveo.AI
Latest version: 1.14.0

## Web Widget ![Node.js CI](https://github.com/moveo-ai/web-widget/workflows/Node.js%20CI/badge.svg)

<blockquote>Moveo web widget integration</blockquote>

![](./widget.png)

## ⭐️ Features

- Webpack 5
- Babel 7
- UMD exports
- Jest unit testing

## 📦 Getting Started

Clone the repo

```
git clone git@github.com:moveo-ai/web-widget.git
```

Install the dependencies

```
npm install
```

Run the application locally

```
npm start
```

A browser tab will open and changes to the code will refresh the tab.
If your browser doen't open a tab automatically, you can manually go to: http://localhost:5000/

## 🚀 Deployment

1. Automatic Releases thanks to Semantic Release.

> **Note:** In this minimal version, any images and css files you import will be added to the js bundle.
npm package: @moveris/react-native
Description: React Native SDK for Moveris Live API
Author: Jeyson Palacio
Latest version: 3.6.2

# @moveris/react-native

React Native SDK for Moveris Live API - Mobile implementation.

## Installation

```bash
pnpm add @moveris/react-native
# or
npm install @moveris/react-native
# or
yarn add @moveris/react-native
```

### Additional Setup

#### iOS

Add to `ios/Podfile`:

```ruby
pod 'react-native-vision-camera', :path => '../node_modules/react-native-vision-camera'
```

Then:

```bash
cd ios && pod install
```

#### Android

Add to `android/app/src/main/AndroidManifest.xml`:

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

## Usage

```tsx
import { MoverisProvider, useLiveness } from '@moveris/react-native';

function App() {
  return (
    <MoverisProvider apiKey="mv_your_api_key_here" model="mixed-30-v2">
      <LivenessCheck />
    </MoverisProvider>
  );
}

function LivenessCheck() {
  const { start, stop, result, state } = useLiveness({
    sessionId: 'optional-fixed-id', // auto-generated if omitted
    onResult: (result) => {
      console.log('Result:', result);
    },
  });

  return (
    <View>
      <Button title="Start" onPress={start} />
      <Button title="Stop" onPress={stop} />
      {result && <Text>Result: {result.prediction}</Text>}
    </View>
  );
}
```

## Eye Region Quality Analysis

The package re-exports eye region quality utilities from `@moveris/shared` for use in custom frame processors (e.g. with Vision Camera frame processor plugins):

```typescript
import {
  checkEyeRegionQuality,
  getEyeRegionBounds,
  EYE_QUALITY_THRESHOLDS,
  EYE_LANDMARK_INDICES,
} from '@moveris/react-native';

// With face landmarks from ML Kit / Expo Face Detection:
const bounds = getEyeRegionBounds(landmarks);
if (bounds) {
  const quality = checkEyeRegionQuality(eyePixels);
  if (!quality.passed) {
    console.log(quality.message); // e.g. "Eyes are in shadow - improve lighting"
  }
}
```

These functions operate on raw RGBA pixel arrays and are platform-agnostic, so they can be used with any face landmark provider.

## API

See [API Documentation](../../docs/api-reference.md#react-native-package) for complete API reference.
npm package: @movetodigital/cookie-bar
Description: Cookie Bar
Author: MoveToDigital
Latest version: 0.0.8

## ⭐️ Cookie bar 

- Add insert script from cdn.jsdelivr.net: 
```javascript 1.8
<script src="https://cdn.jsdelivr.net/npm/@movetodigital/cookie-bar@latest/build/index.min.js"/>
```

- [Optional] Declare config object:
```javascript 1.8
<script>
    window.cookieBarConfig = {
        background: 'rgba(0, 0, 0, 0.74)',
        color: '#c8c8c8',
        bottom: 0,
        width: '100%',
        fontFamily: 'system-ui',
        fontSize: '14px',
        text: 'This website uses cookies, to provide the necessary website functionality and improve your experience. By using this website, you agree to our <a target="_blank" href="/cookie-police" style="border-bottom: 1px solid #c8c8c8; color: #c8c8c8; text-decoration: none; cursor: pointer;">cookie policy.</a>',
        agreeText: 'ACCEPT',
        buttonColor: 'white',
        buttonBackground: 'black',
        disableText: 'Disable cookies',
        onDisableButtonClick: () => {
        },
    }
</script>
```

- Add initialization script:
```javascript 1.8
<script>
   let CookieBar = window.CookieBar.default;
   let libraryInstance = new CookieBar();
</script>
```
npm package: @movetodigital/react-gallery
Description: React gallery
Author: MoveToDigital
Latest version: 1.0.0

# React gallery 

```javascript 1.8
// todo
```

# Library development: 
## `yarn` Scripts
- `test` - _run unit tests_
- `test:cover` - _run unit tests with test coverage_
- `lint` - _check `eslint` and `prettier` rules_
- `lint:fix` - _autofix unmet `eslint` and `prettier` rules_
- `local-pack` - _create the `tgz` package locally to test consumers without publishing_
- `start` - _start the storybook server and automatically open in browser_
- `compile` - _standard typescript compile `tsc`_

Before each commit, `husky` and `lint-staged` will automatically lint your staged `ts, tsx, js, jsx` files.

# Configuration

## Circle CI
You need to configure one [environment variable](https://circleci.com/docs/2.0/env-vars/) in CircleCI, for publishing to NPM.
- `NPM_TOKEN`

## Zeit
You need to authorize [Zeit](https://zeit.co/github-setup) with your GitHub account to enable automatic deployments. Once configured, you can enable Zeit to deploy any repository that contains a `now.json` file.

## Dependabot (optional)
I recommend enabling [Dependabot](https://dependabot.com/) on this repository to keep your dependencies up to date. Each dependency update will be created as a PR, which will automatically validate via Circle CI and you can manually validate via Zeit.
npm package: @movevom/ai-api-catalog
Description: 静态 Catalog：提供默认的 provider/model 列表，供策略与 UI 使用。
Latest version: 2.0.0

# @movevom/ai-api-catalog

静态 Catalog：提供默认的 provider/model 列表，供策略与 UI 使用。

## 安装

```bash
npm i @movevom/ai-api-catalog
```

## 用法

```ts
import { getCatalog } from '@movevom/ai-api-catalog'

const catalog = getCatalog()
```

## 更新说明

模型列表、价格等更新通常直接修改 `src/index.ts` 并发布新版本。

## 文档

- 更新与发版指南：https://github.com/zuoguyoupan/ai-api-manager/blob/main/publish-update-guide.md
npm package: @movevom/ai-api-manager
Description: 一个 “全量聚合包”：把 `@movevom/ai-api-manager-*` 相关能力统一 re-export，方便一条依赖直接上手。
Latest version: 2.0.0

# @movevom/ai-api-manager

一个 “全量聚合包”：把 `@movevom/ai-api-manager-*` 相关能力统一 re-export，方便一条依赖直接上手。

## 安装

```bash
npm i @movevom/ai-api-manager
```

## 最小示例（Router）

```ts
import {
  createAdapterRegistry,
  createAgfModePolicyEngine,
  createAiRouter,
  createFetchHttpClient,
  createLocalStorageKeyProvider,
  createLocalStorageMetricStore,
  createOpenAIAdapter,
  createAnthropicAdapter,
  createGeminiNativeAdapter,
  getCatalog,
} from '@movevom/ai-api-manager'

const adapters = createAdapterRegistry([
  createOpenAIAdapter({ providerId: 'chatgpt' }),
  createAnthropicAdapter({ providerId: 'claude' }),
  createGeminiNativeAdapter({ providerId: 'gemini' }),
])

const keys = createLocalStorageKeyProvider({ prefix: 'ai-api-manager:key:' })
const metrics = createLocalStorageMetricStore({ prefix: 'ai-api-manager:metrics:' })

const policy = createAgfModePolicyEngine({
  keys,
  officialCn: { providerId: 'deepseek', modelId: 'deepseek-chat' },
  officialIntl: { providerId: 'chatgpt', modelId: 'gpt-4o-mini' },
  defaultUser: { providerId: 'chatgpt', modelId: 'gpt-4o-mini' },
})

const router = createAiRouter({
  catalog: { getCatalog },
  adapters,
  keys,
  metrics,
  policy,
  http: createFetchHttpClient(),
  defaultStrategy: 'fixed',
})

const res = await router.chat({
  messages: [{ role: 'user', content: 'hello' }],
  pick: { mode: 'official', countryCode: 'CN' },
})

console.log(res.text)
```

注意：`providerId` 必须与 catalog 里的 `provider.id` 一致（`getCatalog()` 的默认 provider id 包含 `chatgpt/claude/gemini/deepseek/...`）。

## 文档

- 仓库与总览：https://github.com/zuoguyoupan/ai-api-manager
npm package: @movevom/ai-api-manager-adapters-web
Description: 浏览器侧适配：提供 `fetch` HttpClient、localStorage KeyProvider、localStorage MetricStore，以及基于 WebCrypto 的加密 KeyProvider。
Latest version: 2.0.0

# @movevom/ai-api-manager-adapters-web

浏览器侧适配：提供 `fetch` HttpClient、localStorage KeyProvider、localStorage MetricStore，以及基于 WebCrypto 的加密 KeyProvider。

## 安装

```bash
npm i @movevom/ai-api-manager-adapters-web
```

## 导出

- `createFetchHttpClient()`
- `createLocalStorageKeyProvider()`
- `createLocalStorageMetricStore()`
- `createWebCryptoPassphraseKeyProvider()`

## 最小示例

```ts
import {
  createFetchHttpClient,
  createLocalStorageKeyProvider,
  createLocalStorageMetricStore,
} from '@movevom/ai-api-manager-adapters-web'

const http = createFetchHttpClient()
const keys = createLocalStorageKeyProvider({ prefix: 'ai-api-manager:key:' })
const metrics = createLocalStorageMetricStore({ prefix: 'ai-api-manager:metrics:' })
```

## 文档

- 仓库与总览：https://github.com/zuoguyoupan/ai-api-manager
npm package: @movevom/ai-api-manager-agent-kit
Description: 最小 Agent 编排：循环调用模型 → 解析 toolCalls → 执行工具 → 回填 messages → 下一步。
Latest version: 2.0.0

# @movevom/ai-api-manager-agent-kit

最小 Agent 编排：循环调用模型 → 解析 toolCalls → 执行工具 → 回填 messages → 下一步。

## 安装

```bash
npm i @movevom/ai-api-manager-agent-kit
```

## 最小示例

```ts
import { createAiAgent } from '@movevom/ai-api-manager-agent-kit'

const agent = createAiAgent({
  router,
  tools: {
    my_tool: {
      definition: {
        name: 'my_tool',
        description: 'demo tool',
        parameters: {
          type: 'object',
          properties: { x: { type: 'number' } },
          required: ['x'],
        },
      },
      handler: async (args) => {
        const x = (args as { x?: number }).x ?? 0
        return { ok: true, x2: x * 2 }
      },
    },
  },
  maxSteps: 6,
})

const out = await agent.run({
  messages: [{ role: 'user', content: 'call my_tool with x=21, then explain result' }],
  pick: { mode: 'user', strategy: 'fixed' },
})

console.log(out.text)
```

## 文档

- 仓库与总览：https://github.com/zuoguyoupan/ai-api-manager
npm package: @movevom/ai-api-manager-core
Description: 核心 SDK：定义统一的消息/请求/响应类型，提供路由器 `createAiRouter()`、策略引擎（PolicyEngine）与通用工具（SSE 解析、错误规范等）。
Latest version: 2.0.0

# @movevom/ai-api-manager-core

核心 SDK：定义统一的消息/请求/响应类型，提供路由器 `createAiRouter()`、策略引擎（PolicyEngine）与通用工具（SSE 解析、错误规范等）。

## 安装

```bash
npm i @movevom/ai-api-manager-core
```

## 核心概念

- `AiRouter`：统一调用入口，暴露 `chat()` / `chatStream()`
- `PolicyEngine`：根据输入（策略/意图/约束/地区）生成 `PickPlan`（主模型 + 回退链）
- `ProviderAdapter`：把通用 `ChatRequest` 适配到具体供应商协议

## 最小示例

通常会与 adapter / catalog / key / metrics 一起使用：

```ts
import {
  createAdapterRegistry,
  createAiRouter,
  createAgfModePolicyEngine,
  InMemoryMetricStore,
} from '@movevom/ai-api-manager-core'
import { createOpenAIAdapter } from '@movevom/ai-api-manager-providers-openai'
import { getCatalog } from '@movevom/ai-api-catalog'

const adapters = createAdapterRegistry([createOpenAIAdapter({ providerId: 'chatgpt' })])

const keys = {
  async getKey() {
    return process.env.OPENAI_API_KEY || null
  },
  async setKey() {},
  async deleteKey() {},
}

const policy = createAgfModePolicyEngine({
  keys,
  officialCn: { providerId: 'deepseek', modelId: 'deepseek-chat' },
  officialIntl: { providerId: 'chatgpt', modelId: 'gpt-4o-mini' },
})

const router = createAiRouter({
  catalog: { getCatalog },
  adapters,
  keys,
  metrics: new InMemoryMetricStore(),
  policy,
  http: { fetch: (...args) => fetch(...args) },
  defaultStrategy: 'fixed',
})
```

## 文档

- 仓库与总览：https://github.com/zuoguyoupan/ai-api-manager
npm package: @movevom/ai-api-manager-providers-anthropic
Description: Anthropic 协议 ProviderAdapter（支持 chat + SSE streaming）。
Latest version: 2.0.0

# @movevom/ai-api-manager-providers-anthropic

Anthropic 协议 ProviderAdapter（支持 chat + SSE streaming）。

## 安装

```bash
npm i @movevom/ai-api-manager-providers-anthropic
```

## 用法

```ts
import { createAnthropicAdapter } from '@movevom/ai-api-manager-providers-anthropic'

const adapter = createAnthropicAdapter({ providerId: 'claude' })
```

`providerId` 需要与你的 catalog（`provider.id`）一致。

## 文档

- 仓库与总览：https://github.com/zuoguyoupan/ai-api-manager
npm package: @movevom/ai-api-manager-providers-gemini-native
Description: Gemini 原生协议 ProviderAdapter（`generateContent` / `streamGenerateContent`）。
Latest version: 2.0.0

# @movevom/ai-api-manager-providers-gemini-native

Gemini 原生协议 ProviderAdapter（`generateContent` / `streamGenerateContent`）。

## 安装

```bash
npm i @movevom/ai-api-manager-providers-gemini-native
```

## 用法

```ts
import { createGeminiNativeAdapter } from '@movevom/ai-api-manager-providers-gemini-native'

const adapter = createGeminiNativeAdapter({ providerId: 'gemini' })
```

`providerId` 需要与你的 catalog（`provider.id`）一致。

## 文档

- 仓库与总览：https://github.com/zuoguyoupan/ai-api-manager
npm package: @movevom/ai-api-manager-providers-openai
Description: OpenAI-compatible 协议 ProviderAdapter（支持 chat + SSE streaming + tool-calling + structured output）。
Latest version: 2.0.0

# @movevom/ai-api-manager-providers-openai

OpenAI-compatible 协议 ProviderAdapter（支持 chat + SSE streaming + tool-calling + structured output）。

## 安装

```bash
npm i @movevom/ai-api-manager-providers-openai
```

## 用法

```ts
import { createOpenAIAdapter } from '@movevom/ai-api-manager-providers-openai'

const adapter = createOpenAIAdapter({ providerId: 'chatgpt' })
```

`providerId` 需要与你的 catalog（`provider.id`）一致；该 adapter 可用于任何 OpenAI-compatible provider。

## 文档

- 仓库与总览：https://github.com/zuoguyoupan/ai-api-manager
npm package: @movevom/create-ai-api-manager
Description: 脚手架：创建一个用于演示 `ai-api-manager` 的项目模板（默认：vue + tauri）。
Latest version: 2.0.0

# @movevom/create-ai-api-manager

脚手架：创建一个用于演示 `ai-api-manager` 的项目模板（默认：vue + tauri）。

## 使用

```bash
npm create ai-api-manager@latest my-app
```

常用参数：

```bash
npm create ai-api-manager@latest my-app -- --no-install
npm create ai-api-manager@latest my-app -- --dep-version latest
```

## 文档

- 仓库与总览：https://github.com/zuoguyoupan/ai-api-manager
npm package: @moveyourdigital/router
Description: Allows to match any part of the HTTP request message
Author: Vitor Carvalho
Latest version: 0.2.0

# RegexRouter

Unlike traditional routers that only match the path and method, RegexRouter allows to match any part of the HTTP request message, which includes headers, method, path, URL and query parameters, enabling customized and dynamic routing logic.

**Notice:** currently available in beta; avoid using in production.

## Key Features
- **Match Any Part of the Request**: Goes beyond the basics of path and method matching: routes can be regex-based on headers, query strings, cookies, and more.

- **Flexible**: Provides and allows extension with middlewares and uses standard Web API syntax.

- **Easy to Use**: Plugin to any environment. It support's node.js, browser, edge, workers, etc.

- **High Performance**: Being small and straighforward, it is optimized for speed and efficiency to handle high traffic loads without compromising on routing capabilities.

## Getting Started
### Installation
Install RegexRouter via npm:
```
npm install @moveyourdigital/router
```

### Basic Usage

```ts
import { createServer } from "http"
import { bind } from "@moveyourdigital/router/node"
import { Router } from "@moveyourdigital/router"
import { auth, logger, notFound, throwable } from "@moveyourdigital/router"

const router = new Router()
  .add(/.*/, logger(), throwable(), notFound())
  .add(/^POST/, () => new Response())
  .add(/^GET \/private\s/, auth({ secret: 'test' }), () => new Response())
  .add(/^GET \/(.*\n)+user-agent: (?<agent>.*)/i, (req, ctx) => {
    return Response.json(`Hello ${ctx.params?.get('agent')}`, {
      status: 201
    })
  })

bind(createServer, router).listen(3001) // bind for Node JS createServer
```

### Development
To watch for changes in `src` directory.
```bash
npm start
```
To bundle for production
```bash
npm run build
```
Unit tests are located in
```bash
npm t
```

### Contributions
This project is open to contributions. Feel free to discuss in Issues any implementation details first.
npm package: @movidesk/amplitude
Description: ``` yarn add @movidesk/amplitude ```
Latest version: 1.0.0

# Amplitude

## Essa lib depende da global da movidesk `window.eventTracker` e de informações do usuário encontradas nos cookies

## Instalando
```
yarn add @movidesk/amplitude
```

## Usando a lib

```javascript
// No entry point da sua aplicação
import { AmplitudeProvider } from "@movidesk/amplitude"

render(
    <AmplitudeProvider>
        <MyApp>
    </AmplitudeProvder>
)

```

```javascript
// Dentro de MyApp.js
import { useAmplitude } from "@movidesk/amplitude"
function MyApp() {
    const track = useAmplitude()
    return  (
        <Button onClick={() => track("MyProduct.MyScreenOrFeature.ClickedButton")}>
            Click me
        </Button>
    )
}
```

### Testando
```javascript
import { render, fireEvent } from "@testing-library/react"
import { AmplitudeProvider } from "@movidesk/amplitude"

import { MyApp } from "./myapp.js"

test("calls the track function when the user clicks the button", () => {
    const spy = jest.fn()
    const { queryByText } = render(
        <AmplitudeProvider tracker={{ trackEvent: spy }}>
            <MyApp/>
        </AmplitudeProvider>
    )
    fireEvent.click(queryByText("Click me"))

    expect(spy).toHaveBeenCalledWith("MyProduct.MyScreenOrFeature.ClickedButton")
})

```
npm package: @movidesk/ampltiude
Description: ``` yarn add @movidesk/amplitude ```
Latest version: 1.0.0

# Amplitude

## Essa lib depende da global da movidesk `window.eventTracker` e de informações do usuário encontradas nos cookies

## Instalando
```
yarn add @movidesk/amplitude
```

## Usando a lib

```javascript
// No entry point da sua aplicação
import { AmplitudeProvider } from "@movidesk/amplitude"

render(
    <AmplitudeProvider>
        <MyApp>
    </AmplitudeProvder>
)

```

```javascript
// Dentro de MyApp.js
import { useAmplitude } from "@movidesk/amplitude"
function MyApp() {
    const track = useAmplitude()
    return  (
        <Button onClick={() => track("MyProduct.MyScreenOrFeature.ClickedButton")}>
            Click me
        </Button>
    )
}
```

### Testando
```javascript
import { render, fireEvent } from "@testing-library/react"
import { AmplitudeProvider } from "@movidesk/amplitude"

import { MyApp } from "./myapp.js"

test("calls the track function when the user clicks the button", () => {
    const spy = jest.fn()
    const { queryByText } = render(
        <AmplitudeProvider tracker={{ trackEvent: spy }}>
            <MyApp/>
        </AmplitudeProvider>
    )
    fireEvent.click(queryByText("Click me"))

    expect(spy).toHaveBeenCalledWith("MyProduct.MyScreenOrFeature.ClickedButton")
})

```
npm package: @movidesk/eslint-plugin-movirules
Description: ESLint Plugin with movidesk's rules
Latest version: 0.0.3

# Eslint plugin movirules

## Table of Contents

- [Getting start](#getting-start)
  - [Install](#install)
  - [Usage](#usage)
  - [Running local lint](#running-local-lint)
  - [Running local test](#running-local-test)

This package provides Movidesk's .eslintrc for JS libs as an shareable config.
Inspired by [QuintoAndar's ESLint](https://github.com/quintoandar/eslint-config-quintoandar) shared config.

## Getting start

### Install

```shell
yarn add -D @movidesk/eslint-plugin-movirules
```

### Usage

In your project, create a file `.eslintrc.json` and extends this project:

```es6
{
  "extends": "@movidesk/eslint-plugin-movirules"
}
```

After this, only if you are using Typescript, you have to generate your `tsconfig.json` with the following command:

```shell
tsc --init
```

On `package.json`, add the folowing script on `scripts` section:

```es6
"lint": "eslint --ignore-path .gitignore . --ext .js --ext .ts --ext .tsx"
```

If you are not using Typescript, remove the part when starts `--ext`.

Why `--ext`? Because when you run in the shell, eslint doesn't recognize .ts and .tsx extensions, even though VSCode does. To see more information, see the end of the [README.md](https://github.com/standard/eslint-config-standard-with-typescript#usage) from `standard-with-typescript` and [this](https://github.com/eslint/eslint/issues/10828) discussion.

### Running local lint

Just run:

```shell
yarn lint
```

### Running local test

Just run:

```shell
yarn test
```
npm package: @movidesk/frontend-event-tracker
Description: O `movidesk-tracker` é uma abstração para trackear eventos em provedores diferentes.
Latest version: 1.4.1

# Movidesk Event Tracker

## O que é?

O `movidesk-tracker` é uma abstração para trackear eventos em provedores diferentes.

**Provedores disponíveis:**

* Console (`console.log()`)
* [Amplitude](https://amplitude.com/)

## Como utilizar?

É necessário criar uma instância do `movidesk-tracker` passando os parâmetros corretos.

```javascript
var tracker = new MovideskTracker({ amplitudeToken: "token" });
```

Em seguida, basta chamar a função de track informando quais provedores devem ser trackeados.

```javascript
tracker.trackEvent({
  name: "my-event",
  trackers: ["amplitude", "console"]
});
```

Neste exemplo, o evento será trackeado no amplitude e também no console.
npm package: @movidesk/sentry
Description: Projeto pra ajudar no controle de usuário e ambiente em novos projetos.
Latest version: 0.0.12

# Sentry

Projeto pra ajudar no controle de usuário e ambiente em novos projetos.

A forma de controlar ambiente ainda esta bem questionável, mas funciona na maioria dos casos, pode ser visto [aqui](/lib/env/current.js)

## Essa lib depende do cookie com o jwt do usuário, essa é uma informação obrigatória tendo rastreabilidade é uma das principais funções da lib.

Pode ser visto o nome do token [aqui](/lib/sentry/provider.js#L22).

## Instalando
```
yarn add @movidesk/sentry
```

## Usando o projeto

### Apenas com hook

```javascript
import { SentryProvider } from '@movidesk/sentry'


function MyComponent() {
    return (
        <SentryProvider projectKey={PROJECT_KEY} project={PROJECT}>
            <App />
        </SentryProvider>
    )
}

// ... dentro de App.js

import { useSentry } from '@movidesk/sentry'

function App() {
    const sentry = useSentry()

    useMount(async () => {
        try {
            await someOperationThatMayExplode()
        } catch (err) {
            showToTheUser(err)
            sentry.captureException(err)
        }
    })

}

```
### ErrorBoundary

Esse componente foi feito pra evitar duplicar código pra pegar erros em aplicações usando react

```javascript
function App({ propThatDoesntExist }) {
    return (
        <div>
        {propThatDoesntExist.anotherProp}
        </div>
    )
}

function MyComponent() {
    return (
        <SentryProvider projectKey={PROJECT_KEY} project={PROJECT}>
            {({ sentry }) => (
                <ErrorBoundary sentry={sentry}>
                    <App />
                </ErrorBoundary>
            )}
        </SentryProvider>
    )
}
```
npm package: @movidesk/ui-test-utils
Description: ``` yarn add --dev @movidesk/ui-test-utils ``` ## Select Pode ser visto nos [testes](/lib/antd/select/select.test.js)
Latest version: 1.2.1

# UI test utils

# Apenas pra V3 do antd

## Instalando 
```
yarn add --dev @movidesk/ui-test-utils
```
## Select
Pode ser visto nos [testes](/lib/antd/select/select.test.js)
npm package: @movidesk/user-data-api
Description: Lib para recuperar informações do usuário que estão codificadas no cookie. Caso **NÃO** houver **cookie** do usuário no navegador, a lib retornará **null**. Veja [aqui](https://github.com/movidesk/user-data-api) as informações que o objeto do usuário ir
Latest version: 1.1.2

# User data api

Lib para recuperar informações do usuário que estão codificadas no cookie.
Caso **NÃO** houver **cookie** do usuário no navegador, a lib retornará **null**.
Veja [aqui](https://github.com/movidesk/user-data-api) as informações que o objeto do usuário irá retornar.

## Como usar

````.js
import { getUser } from '@movidesk/user-data-api'

const user = getUser()
console.log('user locale', user?.Locale)
````
npm package: @movie-effect/core
Description: Shared utilities for movie API Effect SDKs
Latest version: 0.1.0

# @movie-effect/core

Shared utilities and types for movie API Effect SDKs.

## Installation

```bash
npm install @movie-effect/core
# or
pnpm add @movie-effect/core
```

## Overview

This package provides common utilities used across the movie-effect SDK
packages:

- Shared error types
- Common HTTP client utilities
- Rate limiting helpers
- Type definitions

## Usage

This package is primarily used internally by other `@movie-effect/*` packages.
You typically won't need to install it directly unless you're building custom
integrations.

```typescript
import { ... } from '@movie-effect/core'
```

## Related Packages

- [@movie-effect/tmdb][tmdb] - TMDB API client
- [@movie-effect/omdb][omdb] - OMDB API client
- [@movie-effect/trakt][trakt] - Trakt API client
- [@movie-effect/watchmode][watchmode] - Watchmode API client
- [@movie-effect/letterboxd][letterboxd] - Letterboxd API client

## License

[MIT][license]

[tmdb]: https://www.npmjs.com/package/@movie-effect/tmdb
[omdb]: https://www.npmjs.com/package/@movie-effect/omdb
[trakt]: https://www.npmjs.com/package/@movie-effect/trakt
[watchmode]: https://www.npmjs.com/package/@movie-effect/watchmode
[letterboxd]: https://www.npmjs.com/package/@movie-effect/letterboxd
[license]:
  https://github.com/kevinmichaelchen/moviedb-effect/blob/main/LICENSE.md
npm package: @movie-effect/omdb
Description: An Effect-based client for the OMDb API
Latest version: 0.1.0

# @movie-effect/omdb

[![npm version][npm-badge]][npm-url]
[![License: MIT][license-badge]][license-url]

An [Effect][effect]-based client for the [OMDb API][omdb-api].

## Installation

```bash
npm install @movie-effect/omdb effect @effect/platform @effect/platform-node
# or
pnpm add @movie-effect/omdb effect @effect/platform @effect/platform-node
```

## Features

- Full TypeScript support with Effect
- Type-safe API responses with Schema validation
- Built-in rate limiting
- Observability with Effect tracing

## Authentication

This library requires an OMDb API key.

1. Go to [omdbapi.com/apikey.aspx](http://www.omdbapi.com/apikey.aspx)
2. Choose a plan (free tier: 1,000 requests/day)
3. Enter your email and submit
4. Check your email and activate your API key

For local development, set the `OMDB_API_KEY` environment variable:

```bash
export OMDB_API_KEY="your-api-key"
```

The key should be appended as a URL param to all requests, e.g.,

```
http://www.omdbapi.com/?i=tt3896198&apikey=MY_API_KEY
```

## Quick Start

```typescript
import { NodeHttpClient } from "@effect/platform-node";
import { OmdbClient, OmdbConfig } from "@movie-effect/omdb";
import { Console, Effect } from "effect";

const program = Effect.gen(function* () {
  const client = yield* OmdbClient;
  const movie = yield* client.getByTitle("Inception");
  yield* Console.log(movie.Title, movie.Year);
});

const runnable = program.pipe(
  Effect.provide(OmdbClient.Default),
  Effect.provide(OmdbConfig.layer({ apiKey: "your-api-key" })),
  Effect.provide(NodeHttpClient.layer),
);

Effect.runPromise(runnable);
```

## API Coverage

- Search by title or IMDb ID
- Detailed movie/series information
- Season and episode details

## Related Packages

- [@movie-effect/omdb-cli][cli] - CLI for OMDb
- [@movie-effect/core][core] - Shared utilities

## License

[MIT][license-url]

[npm-badge]: https://img.shields.io/npm/v/@movie-effect/omdb.svg
[npm-url]: https://www.npmjs.com/package/@movie-effect/omdb
[license-badge]: https://img.shields.io/badge/License-MIT-yellow.svg
[license-url]:
  https://github.com/kevinmichaelchen/moviedb-effect/blob/main/LICENSE.md
[effect]: https://effect.website/
[omdb-api]: https://www.omdbapi.com/
[cli]:
  https://github.com/kevinmichaelchen/moviedb-effect/tree/main/packages/omdb-cli
[core]: https://www.npmjs.com/package/@movie-effect/core
npm package: @movie-effect/tmdb
Description: A library for interacting with themoviedb.org API using Effect
Latest version: 0.1.0

# @movie-effect/tmdb

[![npm version][npm-badge]][npm-url]
[![License: MIT][license-badge]][license-url]

An [Effect][effect]-based client for [The Movie Database (TMDB) API][tmdb-api].

## Installation

```bash
npm install @movie-effect/tmdb effect @effect/platform @effect/platform-node
# or
pnpm add @movie-effect/tmdb effect @effect/platform @effect/platform-node
```

## Features

- Full TypeScript support with Effect
- Type-safe API responses with Schema validation
- Built-in rate limiting
- Streaming support for paginated results
- Observability with Effect tracing

## Authentication

This library requires a TMDB API Bearer token (v4 API).

1. Create a free account at [themoviedb.org](https://www.themoviedb.org/signup)
2. Go to [Settings > API](https://www.themoviedb.org/settings/api)
3. Request an API key (choose "Developer" for personal use)
4. Copy the **API Read Access Token** (Bearer token)

For local development, set the `TMDB_API_KEY` environment variable:

```bash
export TMDB_API_KEY="your-bearer-token"
```

## Quick Start

```typescript
import { NodeHttpClient } from "@effect/platform-node";
import { TmdbClient, TmdbConfig } from "@movie-effect/tmdb";
import { Console, Effect } from "effect";

const program = Effect.gen(function* () {
  const client = yield* TmdbClient;
  const movie = yield* client.movie.getDetails(550); // Fight Club
  yield* Console.log(movie.title);
});

const runnable = program.pipe(
  Effect.provide(TmdbClient.Default),
  Effect.provide(TmdbConfig.layer({ apiKey: "your-api-key" })),
  Effect.provide(NodeHttpClient.layer),
);

Effect.runPromise(runnable);
```

## API Coverage

- Movies (search, details, credits, recommendations)
- TV Shows (search, details, seasons, episodes)
- People (search, details, credits)
- Search (multi-search across all types)

## Related Packages

- [@movie-effect/tmdb-cli][cli] - CLI for TMDB
- [@movie-effect/core][core] - Shared utilities

## License

[MIT][license-url]

[npm-badge]: https://img.shields.io/npm/v/@movie-effect/tmdb.svg
[npm-url]: https://www.npmjs.com/package/@movie-effect/tmdb
[license-badge]: https://img.shields.io/badge/License-MIT-yellow.svg
[license-url]:
  https://github.com/kevinmichaelchen/moviedb-effect/blob/main/LICENSE.md
[effect]: https://effect.website/
[tmdb-api]: https://developer.themoviedb.org/
[cli]:
  https://github.com/kevinmichaelchen/moviedb-effect/tree/main/packages/tmdb-cli
[core]: https://www.npmjs.com/package/@movie-effect/core
npm package: @movie-effect/watchmode
Description: An Effect-based client for the Watchmode API
Latest version: 0.1.0

# @movie-effect/watchmode

[![npm version][npm-badge]][npm-url]
[![License: MIT][license-badge]][license-url]

An [Effect][effect]-based client for the [Watchmode API][watchmode-api].

## Installation

```bash
npm install @movie-effect/watchmode effect @effect/platform @effect/platform-node
# or
pnpm add @movie-effect/watchmode effect @effect/platform @effect/platform-node
```

## Features

- Full TypeScript support with Effect
- Type-safe API responses with Schema validation
- Built-in rate limiting
- Streaming availability data
- Observability with Effect tracing

## Authentication

This library requires a Watchmode API key.

1. Create an account at [api.watchmode.com](https://api.watchmode.com/)
2. Subscribe to a plan (free tier available with limited requests)
3. Copy your API key from the dashboard

For local development, set the `WATCHMODE_API_KEY` environment variable:

```bash
export WATCHMODE_API_KEY="your-api-key"
```

## Quick Start

```typescript
import { NodeHttpClient } from "@effect/platform-node";
import { WatchmodeClient, WatchmodeConfig } from "@movie-effect/watchmode";
import { Console, Effect } from "effect";

const program = Effect.gen(function* () {
  const client = yield* WatchmodeClient;
  const sources = yield* client.getSources();
  yield* Console.log(sources);
});

const runnable = program.pipe(
  Effect.provide(WatchmodeClient.Default),
  Effect.provide(WatchmodeConfig.layer({ apiKey: "your-api-key" })),
  Effect.provide(NodeHttpClient.layer),
);

Effect.runPromise(runnable);
```

## API Coverage

- Streaming sources and availability
- Title search and details
- Release information

## Related Packages

- [@movie-effect/watchmode-cli][cli] - CLI for Watchmode
- [@movie-effect/core][core] - Shared utilities

## License

[MIT][license-url]

[npm-badge]: https://img.shields.io/npm/v/@movie-effect/watchmode.svg
[npm-url]: https://www.npmjs.com/package/@movie-effect/watchmode
[license-badge]: https://img.shields.io/badge/License-MIT-yellow.svg
[license-url]:
  https://github.com/kevinmichaelchen/moviedb-effect/blob/main/LICENSE.md
[effect]: https://effect.website/
[watchmode-api]: https://api.watchmode.com/
[cli]:
  https://github.com/kevinmichaelchen/moviedb-effect/tree/main/packages/watchmode-cli
[core]: https://www.npmjs.com/package/@movie-effect/core
npm package: @moviecast/eztv-api
Description: A wrapper for EZTV used by our scraper
Author: VVLNT
Latest version: 0.0.1

# EZTV API Wrapper
[![Current Version](https://img.shields.io/npm/v/@moviecast/eztv-api.svg)](https://www.npmjs.com/package/@moviecast/eztv-api)
[![Build Status](https://img.shields.io/travis/MovieCast/eztv-api/master.svg?branch=master)](https://travis-ci.org/MovieCast/eztv-api)
[![Dependency Status](https://img.shields.io/david/MovieCast/eztv-api.svg)](https://david-dm.org/MovieCast/eztv-api)
[![devDependency Status](https://img.shields.io/david/dev/MovieCast/eztv-api.svg)](https://david-dm.org/MovieCast/eztv-api?type=dev)

Wrapper for eztv's API for use in MovieCast scraper
npm package: @moviecast/yts-api
Description: A wrapper for yts.am used by our scraper
Author: Dizzy
Latest version: 0.1.0

# YTS API Wrapper

[![Build Status](https://img.shields.io/travis/MovieCast/yts-api/master.svg?branch=master)](https://travis-ci.org/MovieCast/yts-api)
[![Current Version](https://img.shields.io/npm/v/@moviecast/yts-api.svg)](https://www.npmjs.com/package/@moviecast/yts-api)
[![Coverage Status](https://coveralls.io/repos/github/MovieCast/yts-api/badge.svg?branch=master)](https://coveralls.io/github/MovieCast/yts-api?branch=master)
[![Greenkeeper badge](https://badges.greenkeeper.io/MovieCast/yts-api.svg)](https://greenkeeper.io/)
[![Dependency Status](https://img.shields.io/david/MovieCast/yts-api.svg)](https://david-dm.org/MovieCast/yts-api)
[![devDependency Status](https://img.shields.io/david/dev/MovieCast/yts-api.svg)](https://david-dm.org/MovieCast/yts-api?type=dev)

YTS API which is used in our scraper
npm package: @movilizame/mobile-icon-generator
Description: Generate icon / screen files for a mobile app
Author: Movilizame
Latest version: 0.0.3

# Mobile Icon GENerator (migen)
A node.js command line to generate icon files for a mobile app 

# Install

````
npm install -g @movilizame/mobile-icon-generator
````

# Usage

For icon use the following commands with an image 1024x1024.

````
migen -s ios ../mobile-icon-generator/icon.png
````

or


````
migen -s android ../mobile-icon-generator/icon.png
````


For splash-screen use the following commands with an image 5000x5000 with the app logo center. 

````
migen -s ios-screen ../mobile-icon-generator/icon.png
````

or


````
migen -s android-screen ../mobile-icon-generator/icon.png
````
npm package: @movilizame/noderavel
Description: Laravel-NodeJs Queue Sync
Author: Movilizame
Latest version: 0.5.2

## Noderavel

Queue sync between NodeJS and Laravel using Redis driver. You can process Jobs dispatched from Laravel in NodeJS or biceversa. 

### Install

```bash
npm install @movilizame/noderavel --save
```

### Usage

* Listen for jobs on NodeJS:

```javascript
const Noderavel = require('@movilizame/noderavel');
const redis = require('redis');

redisCliente = redis.createClient(6379, 'localhost'); 

class TestJob {
    constructor(a, b) {
        this.a = a;
        this.b = b;
    }
}

let queueWorker = new Noderavel({
    client: redisCliente,
    driver: 'redis',
    scope: {
        'App\\Jobs\\TestJob': TestJob
    }
});

queueWorker.on('job', ({name, data}) => {
    console.log(name, data);
    // Proccess your jobs here.
});

queueWorker.listen();
```


* Schedule a job to be run in Laravel from NodeJS:

```javascript
const Noderavel = require ('@movilizame/noderavel');
const redis = require('redis');

const redisHost = 'localhost';
const redisPort = 6379;
redisCliente = redis.createClient(redisPort, redisHost); 

class TestJob {
    constructor(a, b) {
        this.a = a;
        this.b = b;
    }
}

let queueWorker = new Noderavel({
    client: redisCliente,
    driver: 'redis',
    scope: {
        'App\\Jobs\\TestJob': TestJob
    }
}); 

for (let i = 0; i < 10; i++) {
    let job = new TestJob('param1', i);
    queueWorker.redisPush('App\\Jobs\\TestJob', job);
}
```

__TestJob__ in Laravel: 

```php
<?php

namespace App\Jobs; 
use Illuminate\Contracts\Queue\ShouldQueue;

class TestJob extends Job implements ShouldQueue
{
    public $a, $b;
    public function __construct ($a, $b) {
        $this->a = $a;
        $this->b = $b;
    }

    function handle () {
        \Log::info('TestJob ' . $this->a . ' '. $this->b);
    }
}

```
npm package: @movingbrands/svelte-portable-text
Description: Svelte component for rendering sanity.io style Portable Text
Author: Toby Milner-Gulland
Latest version: 0.0.11

# svelte-portable-text

Note: this package is in active development, will likely change and may contain errors.

## Install
At the moment, it seems the best approach is to install [@sanity/block-content-to-hyperscript](https://github.com/sanity-io/block-content-to-hyperscript/) alongside this component. 

Installing Svelte components as a `devDependency` seems to address [this issue](https://github.com/sveltejs/sapper/issues/774).

```bash
npm install @movingbrands/svelte-portable-text @sanity/block-content-to-hyperscript --save-dev
```

### Usage example

```svelte
<script>
  import BlockContent from "@movingbrands/svelte-portable-text";
  
  import Image from "./Image";
  import Link from "./Link";

  export let content;
  export const customSerializers = {
    types: {
      image: props => {
        return {
          component: Image,
          childNodes: props.children,
          props: {
            url: props.node.url
          }
        };
      }
    },
    marks: {
      link: props => {
        return {
          component: Link,
          childNodes: props.children,
          props: props.mark
        };
      }
    }
  };
  </script>

  <BlockContent blocks={content} serializers={customSerializers} />
```

## Consuming components

### With Svelte apps (recommended approach)
This package.json has a `"svelte"` field pointing to `src/index.svelte`, which allows Svelte apps to import the source code directly, if they are using a bundler plugin like [rollup-plugin-svelte](https://github.com/rollup/rollup-plugin-svelte) or [svelte-loader](https://github.com/sveltejs/svelte-loader) (where [`resolve.mainFields`](https://webpack.js.org/configuration/resolve/#resolve-mainfields) in your webpack config includes `"svelte"`). 

### Apps which aren't using Svelte elsewhere
`npm run build` will bundle your component's source code into a plain JavaScript module (`index.mjs`) and a UMD script (`index.js`).
npm package: @movingcastle/dbhub
Description: Use Github as a mini-database
Author: kaxifakl
Latest version: 1.0.1

# DBhub
Use Github as a mini-database

# start

```js
npm i @movingcastle/dbhub
```

```typescript
test.ts
import { DBhub } from "@movingcastle/dbhub";

let db = new DBhub({
    authToken: 'xxxxxx',  //your github token
    dbs: [                //dbbase name or path
        "test"
    ],
    owner: "xxx",         //your github name
    repo: "xxx"           //your github repo name
})

db.connect(() => {
    //change some data
    db.setData('test', 'testabc', { num: 123456 })
    //sync this github db
    db.sync(()=>{
        console.log('finish')
    });
})
```

# create or delete

just create a file named `xxx.raw`

delete the file on github.com

# notice
Dont make the file too large, it will cause some problems