open-index/open-npm huggingface dataset:
npm package: @sentiosurge/agent-creator
Description: Scaffold AI agent definition files from a name and natural language prompt
Latest version: 1.0.1

# @sentiosurge/agent-creator

Scaffold AI agent definition files from a name and natural language prompt. Compatible with Claude Code, OpenClaw, and the open AGENTS.md standard.

## Install

```bash
npm install -g @sentiosurge/agent-creator
```

## Usage

```bash
# Short prompt — inline
agent-creator -n "news-briefer" -p "Daily morning tech news briefing via Telegram"

# Long prompt — from file
agent-creator -n "news-briefer" --prompt-file ./my-idea.txt

# Long prompt — piped via stdin
cat my-idea.txt | agent-creator -n "news-briefer"

# Custom output directory
agent-creator -n "news-briefer" -p "..." -o ./my-agents

# Split format (SOUL.md + IDENTITY.md + AGENTS.md)
agent-creator -n "news-briefer" -p "..." -f split
```

## Options

| Flag | Short | Description | Default |
|------|-------|-------------|---------|
| `--name <name>` | `-n` | Agent name (slug or display name) | **required** |
| `--prompt <text>` | `-p` | Short inline prompt | — |
| `--prompt-file <path>` | | Read prompt from a file | — |
| `--output-dir <dir>` | `-o` | Parent directory for agent folders | `./agents` |
| `--format <fmt>` | `-f` | `unified` or `split` | `unified` |
| `--help` | `-h` | Show help | — |

## Output Formats

### Unified (default)

Creates a single `agent.md` with YAML frontmatter + Markdown body:

```
agents/news-briefer/
  agent.md
```

```markdown
---
name: news-briefer
display_name: "News Briefer"
description: "AI agent: News Briefer"
emoji: "🤖"
model: gpt-5-mini
skills: []
---

# Soul

## Role
...

## Personality
...

## Principles
...

## Boundaries
...

# Instructions
...
```

### Split (OpenClaw-compatible)

Creates three separate files:

```
agents/news-briefer/
  SOUL.md        # Personality, principles, boundaries
  IDENTITY.md    # Name, emoji, vibe
  AGENTS.md      # Operational instructions, model, skills
```

## JSON Output

The CLI outputs structured JSON for programmatic use:

```json
{
  "status": "ok",
  "agent_name": "news-briefer",
  "display_name": "News Briefer",
  "format": "unified",
  "directory": "/path/to/agents/news-briefer",
  "files": ["/path/to/agents/news-briefer/agent.md"],
  "prompt": "Daily morning tech news briefing via Telegram",
  "next_step": "Edit agent.md to fill in soul, skills, and instructions."
}
```

## As a Skill

This package also works as a skill for AI coding assistants. The `SKILL.md` file provides a 5-step workflow for AI agents to decompose natural language descriptions into complete agent definitions:

1. **Understand** the request
2. **Decompose** into identity, soul, capabilities, operations
3. **Scaffold** directory structure
4. **Generate** file contents
5. **Review** with user

## Cross-Platform Compatibility

| Platform | How to use |
|----------|-----------|
| **Claude Code** | Copy frontmatter fields to `.claude/agents/name.md` |
| **OpenClaw** | Use `--format split` for SOUL.md + IDENTITY.md + AGENTS.md |
| **Generic** | Frontmatter is valid YAML; body is standard Markdown |

## License

MIT
npm package: @sentisis/redis-wrapper
Description: Redis wrapper for common case functions
Author: Pablo Gomez
Latest version: 1.0.2

# Redis wrapper

Redis wrapper using *bluebird* promises. It is extendable by modules.

## Requirements
Redis server should be running and a client should be already created.

## Usage
```
npm i @sentisis/redis-wrapper
```


```javascript
const redis = require('redis');
const Promise = require('bluebird');

const redisWrapper = require('@sentisis/redis-wrapper');
// enable promises for redis https://github.com/NodeRedis/node_redis#promises
Promise.promisifyAll(redis.RedisClient.prototype);
Promise.promisifyAll(redis.Multi.prototype);

const client = redis.createClient();
const key = 'a';
const value = 'b';
client.set(key, value);

redisWrapper.getter(client, key)
.then((res) => {
  // res = { value: 'b'}
});
```
---
## Current Modules

### Counter

Increments a given key, for a INCR_BY parameter (or 1 if not defined)

Params:

* client: created redis client.
* data: `{'key': <key>, 'incr_by': <value>}, 'ttl': <ttl>}`

Where:

* `key`: must be defined
* `ttl`: if not supplied, the key is persisted forever
* `incr_by` [optional]: If it is not defined, it defaults to 1 (so it sums 1 to the current value, or puts 1 if the key does not exist)

Sample response:

`{'new_value': <new_value>}`

Where:

* `new_value`: is the actual value AFTER being updated

### Getter

Gets the value of a given key.

Params:

* client: created redis client.
* key

Where:

* `key`: must be defined

Response:

`{'value':<value>}`

Where:

* `value` is an empty string (`''` if the key does not exist) or the value

### Remember

Remembers a given key, for a specified ttl and value into redis

Params:

* client: created redis client.
* data: `{'key': <key>, 'ttl': <ttl>, 'value': <value>}`

Where:

* `ttl` [optional]: Time to leave (expiration from now in seconds). If the value is not given, `0` or `-1`, it does persist forever.
* `value` [optional]: Value for the key. If not given, it is set to true.

Response

`{'new': <true|false>}`

That indicates if the just inserted key is new to the system or not.

### Delete

Deletes a given key.

Params:

* client: created redis client.
* key

Where:

* `key`: must be defined

Response:

`{'deleted':<true|false>}`

Where:

* `deleted` is `true` if the key has been deleted, `false` otherwise (the key did not exist).


### Healthchecker

Checks if the system is running correctly, or not.

Params:

* client: created redis client.

Response:

`{'status': 'ok'}`

### Flusher

Flush the DB.

Params:

* client: created redis client.

Where:

* `client`: must be a redis client.

Response:

`{'flushed': <true|false>}`
npm package: @sentisis/url-filters
Description: Encoding/Decoding function for the filters
Author: Séntisis
Latest version: 1.5.3

# url-filters

## Usage

```js
import { encode, decode } from '@sentisis/url-filters';

const encoded = encode({
  source: 'TWITTER',
  sentiment: { or: ['POSITIVE'] },
});

const filters = decode(encoded);
```
npm package: @sentium/injectable
Description: Modern Dependency Injection library for TypeScript using the new [TC39 Decorators](https://github.com/tc39/proposal-decorators).
Author: Lukas Heizmann
Latest version: 0.4.2

# @sentium/injectable

Modern Dependency Injection library for TypeScript using the new
[TC39 Decorators](https://github.com/tc39/proposal-decorators).

## Features

- Ultrafast & **Lightweight**
- **Multi-runtime**
  - Works on Node.js, Deno, Bun or Cloudflare.
- Sync or **Async**
  - Inject classes that are resolved asynchronously.
- **Type**-safety
- Injection **scopes**

## Installation

### Using `npm`, `yarn`, `pnpm`, `bun`

```bash
   # npm
   npm install @sentium/injectable

   # yarn
   yarn add @sentium/injectable

   # pnpm
   pnpm add @sentium/injectable

   # bun
   bun add @sentium/injectable
```

### Using `deno`

```typescript
import { ... } from "https://deno.land/x/sentium/injectable/mod.ts";
```

## Usage

```typescript
import { injectable, resolve } from "@sentium/injectable";

@injectable()
class MyClass {
  ...
}

const myInstance = resolve(MyClass);
```

## Documentation

_TODO_
npm package: @sentool/fetch-event-source
Description: Using the Fetch API to request an SSE endpoint.
Latest version: 0.6.0

[English](./README.md) · 中文

[npm]: https://img.shields.io/npm/v/@sentool/fetch-event-source
[npm-url]: https://www.npmjs.com/package/@sentool/fetch-event-source
[size]: https://packagephobia.now.sh/badge?p=@sentool/fetch-event-source
[size-url]: https://packagephobia.now.sh/result?p=@sentool/fetch-event-source

[![npm][npm]][npm-url] [![size][size]][size-url]

# @sentool/fetch-event-source

使用 [Fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) 请求 SSE（Server-Sent Events）端点。它是对 `@microsoft/fetch-event-source` 项目的重构，代码实现得更为简练，支持在 Node.js 和浏览器中使用。

## 安装

```bash
npm install @sentool/fetch-event-source
```

## 使用

```js
import { fetchEventSource } from '@sentool/fetch-event-source';

await fetchEventSource('/api/sse', {
  method: 'POST',
  headers: {
    "Content-Type": "application/json",
    "Authorization": "Bearer <token>",
  },
  body: JSON.stringify({
    input: ""
  }),
  onopen(response) {
    console.log('Request has been opened.');
  },
  onmessage(event) {
    console.log(event);
  },
  onerror(error) {
    console.error(error);
  },
  done() {
    console.log('Stream has completed.');
  },
});
```

或在浏览器中通过 CDN 的方式引入

```js
<script src="https://unpkg.com/@sentool/fetch-event-source/dist/index.min.js"></script>
<script type="module">
  const { fetchEventSource } = FetchEventSource;
  fetchEventSource(url, options);
</script>
```

你可以在任意事件中随时中止请求，如:

```js
const eventSource = await fetchEventSource(url, options);

// 这里假设在 3 秒后中止
setTimeout(() => {
  eventSource.abort();
}, 3000);
```

### Options

除了支持 Fetch API 自带的 [RequestInit](https://developer.mozilla.org/en-US/docs/Web/API/RequestInit) 选项外，我们还添加了以下选项：


| 选项 | 类型 | 说明 |
| --- | --- | --- |
| `onopen` | function | 请求成功打开后触发 |
| `onmessage` | function | 接受到事件流数据时触发。 |
| `onerror` | function | 出错时触发 |
| `done` | function | 事件流完成后触发 |
| `parseJson` | boolean | 是否自动解析响应数据中的 JSON 字符。默认 `true` |

## License

MIT © [sentool](https://github.com/sentool)
npm package: @sentre/antd-iconsax
Description: Iconsax for Ant Design
Author: Tu Phan
Latest version: 2.0.4

# Antd Iconsax

This package wraps [iconsax-react](https://www.npmjs.com/package/iconsax-react) to let it work with Ant Design and ReactJS.

## Installation

```bash
npm i @sentre/antd-iconsax
```

## Usage

```ts
import IconSax from '@sentre/antd-iconsax'

const YourReactComponent = () => {
  return <IconSax name="Activity" variant="Bulk" style={{ color: '#FF8A65' }} />
}
```

You can find details for props in [https://iconsax-react.pages.dev/](https://iconsax-react.pages.dev/).
npm package: @sentre/antd-ionicon
Description: IonIcon for Ant Design
Author: Tu Phan
Latest version: 2.0.4

# Antd Iconsax

This package wraps [ionicons](https://ionic.io/ionicons) to let it work with Ant Design and ReactJS.

## Installation

```bash
npm i @sentre/antd-ionicon
```

## Usage

```ts
import IonIcon from '@sentre/antd-ionicon'

const YourReactComponent = () => {
  return <IonIcon name="flask-outline" />
}
```

You can find details for props in [https://ionic.io/ionicons/usage](https://ionic.io/ionicons/usage).

## Addtional Icons

```
logo-telegram
logo-sentre
logo-solana
```
npm package: @sentre/antd-numeric-input
Description: Numeric Input for Ant Design
Author: Tu Phan
Latest version: 1.0.25

# Antd Numeric Input

This package wraps [InputNumber](https://ant.design/components/input-number/) in Ant Design.

## Installation

```bash
npm i antd @sentre/antd-numeric-input
```

## Usage

```ts
import { useState } from 'react'
import NumericInput from '@sentre/antd-numeric-input'

const YourReactComponent = () => {
  const [value, setValue] = useState('')
  const max = '1000000000000'

  return <NumericInput value={value} onChange={setValue} ceiling={max} />
}
```

You can find details for props in [https://ant.design/components/input-number/#API](https://ant.design/components/input-number/#API).
npm package: @sentre/craco-plugins
Description: Craco plugins for CRA
Author: Tu Phan
Latest version: 2.0.4

# CRACO Pluigns

This package offers several fancy [CRACO](https://github.com/gsoft-inc/craco) plugins that work/patch [Webpack 5](https://webpack.js.org/guides/getting-started).

## Installation

```bash
npm i @craco/craco @sentre/craco-plugins
```
npm package: @sentre/embeded-view
Description: Embeded View for Sentre Hub
Author: Tu Phan
Latest version: 2.0.4

# Embeded View

With regard to projects that has built by themselves on seperate domains, they can be integrated onto Sentre Hub by Embeded View. To fully work on Sentre Hub, the application also needs to natively support [@sentre/connector](https://www.npmjs.com/package/@sentre/connector).

## Installation

```bash
npm i @sentre/embeded-view
```

## Usage

```ts
import EmbededView from '@sentre/embeded-view'

const YourSenhubDApp = () => {
  return (
    <EmbededView
      appId="<your-app-id>"
      src="<your-app-original-url>"
      title="<your-app-description>"
    />
  )
}
```

You can find an example for the integration in [https://github.com/DescartesNetwork/miniroyale-iframe](https://github.com/DescartesNetwork/miniroyale-iframe).
npm package: @sentre/otc
Description: ## IMPORTANT!
Author: Tu Phan
Latest version: 1.0.5

# OTC

## IMPORTANT!

In this program, we will use strict conventions that

- `a` is the amount of token `A` that the MAKER wants to sell.
- `b` is the amount of token `B` that the MAKER wants to buy.
- `x` is the amount of token `A` that a TAKER takes out of the treasury.
- `y` is the amount of token `B` that a TAKER puts in of the treasury.
- `maker_fee` is always about the token `B`.
- `taker_fee` is always about the token `A`.

## Installation

```bash
npm i @sentre/otc
```

or,

```bash
yarn add @sentre/otc
```

## Usage

```js
import Otc, { DEFAULT_OTC_PROGRAM_ID, DEFAULT_RPC_ENDPOINT } from '@sentre/otc'
import { Wallet, web3 } from '@project-serum/anchor'

const wallet = new Wallet(web3.Keypair.generate())
const otc = new Otc(wallet, DEFAULT_RPC_ENDPOINT, DEFAULT_OTC_PROGRAM_ID)

const order = await otc.getOrderData(
  '9EKdURf9kaR8yeu9sWSiGQaeMz59zfigQe4mcfsGnLW8',
)
```
npm package: @sentre/react-dynamic-remote-component
Description: Allows you to dynamically load a component from a remote using webpack 5's module federation.
Author: hasanayan
Latest version: 0.0.8

# react-dynamic-remote-component

Allows you to dynamically load a component from a remote using webpack 5's module federation.
Created based on @ScripteAlchemy's (Module Federation's creator, Zack Jackson) [dynamic-system-host](https://github.com/module-federation/module-federation-examples/tree/master/dynamic-system-host) example

![](https://img.shields.io/npm/v/react-dynamic-remote-component.svg?style=flat)
![](https://img.shields.io/npm/dt/react-dynamic-remote-component.svg?style=flat)

# Motivation

With basic settings of module federation, url for a remote module needs to be specified during build-time. However, in some cases, it might be necessary to be able to specify remote module urls during runtime. This package allows you to load remote modules in general and React components from remotes that are specified during runtime.

# Installation

```
npm install react-dynamic-remote-component --save
```

or

```
yarn add react-dynamic-remote-component
```


# RemoteComponent Usage

![remote component usage](https://i.imgur.com/ArgZ7fH.png)

# useRemoteModule Usage

![remote module usage](https://i.imgur.com/nT5yID0.png)

Please keep in mind, any component taking advantage of useRemoteModule should be wrapped with React.Suspense
npm package: @sentre/utility
Description: [![https://img.shields.io/npm/v/@sentre/utility](https://img.shields.io/npm/v/@sentre/utility)](https://www.npmjs.com/package/@sentre/utility) [![https://img.shields.io/npm/dw/@sentre/utility](https://img.shields.io/npm/dm/@sentre/utility)](https://www.np
Author: Tu Phan
Latest version: 1.0.3

# Sen Utility

[![https://img.shields.io/npm/v/@sentre/utility](https://img.shields.io/npm/v/@sentre/utility)](https://www.npmjs.com/package/@sentre/utility)
[![https://img.shields.io/npm/dw/@sentre/utility](https://img.shields.io/npm/dm/@sentre/utility)](https://www.npmjs.com/package/@sentre/utility)
[![https://img.shields.io/bundlephobia/min/@sentre/utility](https://img.shields.io/bundlephobia/min/@sentre/utility)](https://www.npmjs.com/package/@sentre/utility)
[![https://img.shields.io/github/issues-raw/descartesnetwork/sen-utility](https://img.shields.io/github/issues-raw/descartesnetwork/sen-utility)](https://github.com/DescartesNetwork/sen-utility)
[![https://img.shields.io/github/license/descartesnetwork/sen-utility](https://img.shields.io/github/license/descartesnetwork/sen-utility)](https://github.com/DescartesNetwork/sen-utility)

[![https://img.shields.io/twitter/follow/SentreProtocol?style=social](https://img.shields.io/twitter/follow/SentreProtocol?style=social)](https://twitter.com/SentreProtocol)

🛠 Sentre Utility Program that helps to compact several common Solana procedures.

## Features

- Transfer tokens without account initialization in advance.
- Mint tokens without account initialization in advance.
- Tokens airdrop. Try it: [Lightning Tunnel](https://hub.sentre.io/app/lightning_tunnel?autoInstall=true).
- Tokens vesting. Try it: [Lightning Tunnel](https://hub.sentre.io/app/lightning_tunnel?autoInstall=true).

## Installation

```bash
npm i @sentre/utility
```

or

```bash
yarn add @sentre/utility
```

## Smartcontract

```
7oyG4wSf2kz2CxTqKTf1uhpPqrw9a8Av1w5t8Uj5PfXb
```

## Documents

Utility Document: [https://utility.sentre.io](https://utility.sentre.io)
npm package: @sentrei/mobile
Description: A new Flutter project.
Author: Shun Kakinoki
Latest version: 1.3.0

# sentrei

A new Flutter project.

## Getting Started

This project is a starting point for a Flutter application.

A few resources to get you started if this is your first Flutter project:

- [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab)
- [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook)

For help getting started with Flutter, view our
[online documentation](https://flutter.dev/docs), which offers tutorials,
samples, guidance on mobile development, and a full API reference.
npm package: @sentrei/www-mosh-lol
Description: This project is a fork of [nouns.wtf](https://nouns.wtf), but aims to position itself a cross-blockchain experiment. We will utilize the Moshes as a symbol for a parachain future.
Author: Sentrei, Inc.
Latest version: 1.6.1

# Mosh DAO

This project is a fork of [nouns.wtf](https://nouns.wtf), but aims to position itself a cross-blockchain experiment. We will utilize the Moshes as a symbol for a parachain future.

## Summary

### 1. 1 Mosh per day, 6 Different networks

#### A. Daily auctionns

This will be trustly auctioned on the official [app.mosh.lol](https://app.mosh.lol) website. All proceedes go the Mosh DAO treasury.

#### B. Each day, different network

- Monday: $ETH
- Tuesday $MATIC
- Wednesday: $FTM
- Thursday: $ARB
- Friday: $AVA
- Saturday: $ONE

#### C. DAO Mosh on Sunday

Every Sunday a Mosh will be randomly distributed to one of the holders of existing Mosh owners, or $MOSH holders. See code below.

### 2. $MOSH Token Launch (2022/01/01)

We will issue an official $MOSH token on the 90th day of the product launch.
This will be used to provide liquidity to the Mosh DAO, but also used as a participating right to the Mosh ecosystem.
In order to favor existing Mosh owners, we will airdrop $MOSH token at the time of ICO.

### 3. Incentivized community creation.

Every Mosh is copyright-free to be utilized under public domain.

## Main points

- The mosh artwork is public domain
- 1 mosh trustlessly auctioned every 24 hours forever, spanning 6 different networks.
- 100% of noun auction proceeds are trustlessly sent to Mosh DAO treasury
- Mosh treasury will be controlled by governance in the Mosh DAO
- 'Moshists' receive rewards in the form of nouns (33% of supply for first 30 days)

## Daily Mosh Auctions

We will generate one mosh, every day, forever on multi-chain
All proceedes will directly go the Mosh DAO Treasury.
Every 7th Mosh will go directly to the Moshist founder's wallet. (for the first 3 years)

## Mosh DAO

Mosh DAO will utilize a fork of the Compound Governance. The Mosh DAO treasury receives 100% of ETH proceeds from daily Mosh auctions. Until the $MOSH token launch, all moshes are equal in terms of voting rights.

## Mosh Traits

The rarity of the Moshes are stated below.

## Moshists Rewards

'Moshists' are the group of 3 builders that initiated Moshists. Here are the Moshists:

- @shunkakinoki
- @littlemonastar
- @sh_tsj07

Since 100% of the proceedes will go to the Mosh DAO Treasury, every 3rd Mosh will be randomly airdropped to one of the Mosh DAO members (only the Moshists exists at the time of the launch)
npm package: @sentrial/mastra
Description: Sentrial integration for Mastra AI agents — automatic session, step, and tool call tracking
Author: Sentrial
Latest version: 0.1.2

# @sentrial/mastra

Automatic instrumentation for [Mastra](https://mastra.ai) AI agents. One function call tracks sessions, LLM steps, tool calls, tokens, cost, and latency.

## Install

```bash
npm install @sentrial/mastra @sentrial/sdk
# or
pnpm add @sentrial/mastra @sentrial/sdk
```

## Quick Start

```typescript
import { instrumentAgent } from '@sentrial/mastra';
import { myAgent } from './mastra/agents/my-agent';

const agent = instrumentAgent(myAgent, {
  apiKey: process.env.SENTRIAL_API_KEY,
});

// Every generate() and stream() call is now tracked
const result = await agent.generate('What is the weather in NYC?');
```

## Multi-Turn Conversations

Mastra's memory options are automatically mapped:

- `memory.resource` → Sentrial `userId`
- `memory.thread` → Sentrial `convoId`

```typescript
const result = await agent.generate('Remember my name is Alice', {
  memory: { resource: 'user-123', thread: 'convo-456' },
});
```

## What Gets Tracked

| Mastra Event | Sentrial Tracking |
|---|---|
| Each `generate()`/`stream()` call | Session with duration, cost, tokens |
| Each LLM step (onStepFinish) | Tool call event: `llm:{provider}:{model}` |
| Each tool call within a step | Tool call event with input/output |
| Errors | Error event + failed session |
| Final output text | Session `assistantOutput` |

## Per-Call Overrides

```typescript
const result = await agent.generate('Hello', {
  sentrial: {
    userId: 'custom-user',
    convoId: 'custom-convo',
    metadata: { experiment: 'v2' },
  },
});
```

## Options

```typescript
instrumentAgent(agent, {
  apiKey: 'sentrial_live_...',   // or SENTRIAL_API_KEY env var
  apiUrl: 'https://...',         // custom API URL
  agentName: 'my-agent',        // defaults to agent.name or agent.id
  failSilently: true,           // default: true
  pii: true,                    // auto-fetch PII redaction config
});
```
npm package: @sentry-internal/browser-utils
Description: Browser Utilities for all Sentry JavaScript SDKs
Author: Sentry
Latest version: 10.48.0

<p align="center">
  <a href="https://sentry.io/?utm_source=github&utm_medium=logo" target="_blank">
    <img src="https://sentry-brand.storage.googleapis.com/sentry-wordmark-dark-280x84.png" alt="Sentry" width="280" height="84">
  </a>
</p>

# Sentry JavaScript SDK Browser Utilities

[![npm version](https://img.shields.io/npm/v/@sentry-internal/browser-utils.svg)](https://www.npmjs.com/package/@sentry-internal/browser-utils)
[![npm dm](https://img.shields.io/npm/dm/@sentry-internal/browser-utils.svg)](https://www.npmjs.com/package/@sentry-internal/browser-utils)
[![npm dt](https://img.shields.io/npm/dt/@sentry-internal/browser-utils.svg)](https://www.npmjs.com/package/@sentry-internal/browser-utils)

## Links

- [Official SDK Docs](https://docs.sentry.io/quickstart/)

## General

Common utilities used by the Sentry JavaScript SDKs.

Note: This package is only meant to be used internally, and as such is not part of our public API contract and does not
follow semver.
npm package: @sentry-internal/eslint-config-sdk
Description: Official Sentry SDK eslint config
Author: Sentry
Latest version: 10.48.0

<p align="center">
  <a href="https://sentry.io/?utm_source=github&utm_medium=logo" target="_blank">
    <img src="https://sentry-brand.storage.googleapis.com/sentry-wordmark-dark-280x84.png" alt="Sentry" width="280" height="84">
  </a>
</p>

# Official Sentry SDK eslint config

[![npm version](https://img.shields.io/npm/v/@sentry-internal/eslint-config-sdk.svg)](https://www.npmjs.com/package/@sentry-internal/eslint-config-sdk)
[![npm dm](https://img.shields.io/npm/dm/@sentry-internal/eslint-config-sdk.svg)](https://www.npmjs.com/package/@sentry-internal/eslint-config-sdk)
[![npm dt](https://img.shields.io/npm/dt/@sentry-internal/eslint-config-sdk.svg)](https://www.npmjs.com/package/@sentry-internal/eslint-config-sdk)

## Links

- [Official SDK Docs](https://docs.sentry.io/quickstart/)

## General

Install with `yarn add -D @sentry-internal/eslint-config-sdk`

## Configuration

Use `@sentry-internal` for base rules. Make sure to specify your tsconfig under `parserOptions.project` so that you can
correctly use the typescript rules. This configuration comes with

```json
{
  "extends": ["@sentry-internal/sdk"],
  "overrides": [
    {
      "files": ["*.ts", "*.tsx", "*.d.ts"],
      "parserOptions": {
        "project": "./tsconfig.json"
      }
    }
  ]
}
```
npm package: @sentry-internal/feedback
Description: Sentry SDK integration for user feedback
Author: Sentry
Latest version: 10.48.0

<p align="center">
  <a href="https://sentry.io/?utm_source=github&utm_medium=logo" target="_blank">
    <img src="https://sentry-brand.storage.googleapis.com/sentry-wordmark-dark-280x84.png" alt="Sentry" width="280" height="84">
  </a>
</p>

# Sentry Integration for Feedback

This SDK is **considered experimental and in a beta state**. It may experience breaking changes, and may be discontinued
at any time. Please reach out on [GitHub](https://github.com/getsentry/sentry-javascript/issues/new/choose) if you have
any feedback/concerns.

To view Feedback in Sentry, your
[Sentry organization must be an early adopter](https://docs.sentry.io/product/accounts/early-adopter-features/).

## Installation

Please read the [official integration documentation](https://docs.sentry.io/platforms/javascript/user-feedback/) for
installation instructions.

## Configuration

The Feedback integration is highly customizable, please read the
[official integration documentation](https://docs.sentry.io/platforms/javascript/user-feedback/configuration/) for the
most up-to-date configuration options.
npm package: @sentry-internal/node-cpu-profiler
Description: Binaries for Sentry Node Profiling
Author: Sentry
Latest version: 2.2.0

<p align="center">
  <a href="https://sentry.io/?utm_source=github&utm_medium=logo" target="_blank">
    <img src="https://sentry-brand.storage.googleapis.com/sentry-wordmark-dark-280x84.png" alt="Sentry" width="280" height="84">
  </a>
</p>

# Sentry JavaScript Node CPU Profiler

This is an internal package that contains the CPU profiler and native binaries
used by `@sentry/profiling-node`.
npm package: @sentry-internal/replay-canvas
Description: Replay canvas integration
Author: Sentry
Latest version: 10.48.0

<p align="center">
  <a href="https://sentry.io/?utm_source=github&utm_medium=logo" target="_blank">
    <img src="https://sentry-brand.storage.googleapis.com/sentry-wordmark-dark-280x84.png" alt="Sentry" width="280" height="84">
  </a>
</p>

# Sentry Session Replay with Canvas

## Pre-requisites

Replay with canvas requires Node 14+, and browsers newer than IE11.

## Installation

Replay and ReplayCanvas can be imported from `@sentry/browser`, or a respective SDK package like `@sentry/react` or
`@sentry/vue`. You don't need to install anything in order to use Session Replay. The minimum version that includes
Replay is 7.27.0.

For details on using Replay when using Sentry via the CDN bundles, see [CDN bundle](#loading-replay-as-a-cdn-bundle).

## Setup

To set up the canvas integration, add the following to your Sentry integrations:

```javascript
Sentry.replayCanvasIntegration(),
```

### Full Example

```javascript
import * as Sentry from '@sentry/browser';
// or e.g. import * as Sentry from '@sentry/react';

Sentry.init({
  dsn: '__DSN__',

  // This sets the sample rate to be 10%. You may want this to be 100% while
  // in development and sample at a lower rate in production
  replaysSessionSampleRate: 0.1,

  // If the entire session is not sampled, use the below sample rate to sample
  // sessions when an error occurs.
  replaysOnErrorSampleRate: 1.0,

  integrations: [Sentry.replayIntegration(), Sentry.replayCanvasIntegration()],
  // ...
});
```
npm package: @sentry-internal/rrvideo
Description: transform rrweb session into video
Author: yanzhen@smartx.com
Latest version: 2.31.0

# rrvideo

rrvideo 是用于将 [rrweb](https://github.com/rrweb-io/rrweb) 录制的数据转为视频格式的工具。

![Demo Video](./demo/demo.gif)

## 安装 rrvideo

1. 安装 [Node.JS](https://nodejs.org/en/download/)。
2. 执行 `npm i -g rrvideo` 以安装 rrvideo CLI。

## 使用 rrvideo

### 将一份 rrweb 录制的数据（JSON 格式）转换为视频。

```shell
rrvideo --input PATH_TO_YOUR_RRWEB_EVENTS_FILE
```

运行以上命令会在执行文件夹中生成一个 `rrvideo-output.webm` 文件。

### 指定输出路径

```shell
rrvideo --input PATH_TO_YOUR_RRWEB_EVENTS_FILE --output OUTPUT_PATH
```

### 对回放进行配置

通过编写一个 rrvideo 配置文件再传入 rrvideo CLI 的方式可以对回放进行一定的配置。

```shell
rrvideo --input PATH_TO_YOUR_RRWEB_EVENTS_JSON_FILE --config PATH_TO_YOUR_RRVIDEO_CONFIG_FILE
```

rrvideo 配置文件可参考[示例](./rrvideo.config.example.json)。
npm package: @sentry-internal/typescript
Description: Typescript configuration used at Sentry
Author: Sentry
Latest version: 10.48.0

<p align="center">
  <a href="https://sentry.io/?utm_source=github&utm_medium=logo" target="_blank">
    <img src="https://sentry-brand.storage.googleapis.com/sentry-wordmark-dark-280x84.png" alt="Sentry" width="280" height="84">
  </a>
</p>

# Sentry TypeScript Configuration

[![npm version](https://img.shields.io/npm/v/@sentry-internal/typescript.svg)](https://www.npmjs.com/package/@sentry-internal/typescript)
[![npm dm](https://img.shields.io/npm/dm/@sentry-internal/typescript.svg)](https://www.npmjs.com/package/@sentry-internal/typescript)
[![npm dt](https://img.shields.io/npm/dt/@sentry-internal/typescript.svg)](https://www.npmjs.com/package/@sentry-internal/typescript)

## Links

- [Official SDK Docs](https://docs.sentry.io/quickstart/)

## General

Shared typescript configuration used at Sentry.

## Installation

```sh
# With Yarn:
yarn add --dev @sentry-internal/typescript

# With NPM:
npm install --save-dev @sentry-internal/typescript
```

## Usage

Add the following config files to your project's root directory:

**tsconfig.json**:

```json
{
  "extends": "./node_modules/@sentry-internal/typescript/tsconfig.json",
  "compilerOptions": {
    "baseUrl": ".",
    "rootDir": "src",
    "outDir": "dist"
  }
}
```

For an example of how to use this package in a monorepo, check out this package's own parent repo,
https://github.com/getsentry/sentry-javascript.
npm package: @sentry-internal/web-benchmark
Description: Evaluates Sentry & Replay impact on website performance by running a web app in Chromium via Playwright and collecting various metrics.
Author: Sentry
Latest version: 1.0.2

# web-benchmark

Evaluates Sentry & Replay impact on website performance by running a web app in Chromium via Playwright and collecting various metrics.

The general idea is to run a web app without Sentry, and then run the same app again with Sentry and another one with Sentry+Replay included.
For the three scenarios, we collect some metrics (CPU, memory, vitals) and later compare them and post as a comment in a PR.
Changes in the metrics, compared to previous runs from the main branch, should be evaluated on case-by-case basis when preparing and reviewing the PR.


## Getting Started

WIP

`npx @sentry-internal/web-benchmark -f myScenario.js`

## Resources

* https://github.com/addyosmani/puppeteer-webperf
* https://web.dev/
npm package: @sentry-tools/blank-screen
Description: 白屏检测工具，用于自动检测网页中白屏和骨架屏长时间显示问题。
Author: rantaiyi
Latest version: 0.0.3

# @sentry-tools/blank-screen

白屏检测工具，用于自动检测网页中白屏和骨架屏长时间显示问题。

## 功能特性

### 1. 白屏检测（Fatal）

检测页面是否出现白屏问题。当检测到指定元素（默认 `body`）在超过配置的超时时间后仍然为空时，会触发错误回调。

### 2. 骨架屏检测（Skeleton）

检测骨架屏是否长时间显示。当检测到骨架屏元素（如 `[class*=skeleton]`、`[class*=loading]` 等）在超过配置的超时时间后仍然可见时，会触发错误回调。

### 3. 检测时机

- **页面加载时**（`OnLoad`）：在 DOM 内容加载完成后自动检测
- **路由导航时**（`OnNavigate`）：监听 `pushState`、`replaceState` 和 `popstate` 事件，在路由切换时自动检测。

### 4. 检测方法

#### 像素分析

使用 WebGL 进行像素分析，通过对比像素颜色差异来判断元素是否为空。支持在 Web Worker 中异步执行，避免阻塞主线程。

#### 子节点检测

使用米字形采样方法，在元素的多个关键位置检测是否存在有效的子节点。

#### 可见性检测

检查元素的 CSS 属性（`display`、`visibility`、`opacity`、`zIndex`）和尺寸，确保元素真正可见。

## 使用场景

- **监控页面加载异常**：及时发现页面加载失败导致的白屏问题。
- **监控路由切换异常**：检测SPA应用路由切换时的渲染问题。
- **监控骨架屏异常**：发现骨架屏长时间显示的问题，可能是接口请求失败或渲染逻辑错误。
- **性能监控**：结合Sentry等监控工具，收集白屏相关的错误信息。

## 配置选项

```typescript
interface BlankScreenOptions {
  // 白屏检测延时（毫秒），默认 5000
  checkTimeout?: number;
  // 白屏检测间隔（毫秒），默认 1000
  checkInterval?: number;
  // 白屏元素选择器，默认 ['body']
  blankScreenSelectors?: string[];
  // 骨架元素选择器，默认 ['[class*=skeleton]', '[class*=loading]', '[class*=spinning]']
  skeletonSelectors?: string[];
  // 错误回调
  onError?: (info: {
    type: BlankScreenType; // 'fatal' | 'skeleton'
    timing: BlankScreenTiming; // 'onLoad' | 'onNavigate' | 'onError'
    startTime: number; // 开始检测时间
    endTime: number; // 检测到错误时间
  }) => void;
}
```

## 跳过检测

如果某些元素需要跳过白屏检测，可以在元素上添加 `data-blank-screen-ignore` 属性：

- `data-blank-screen-ignore="fatal"`：跳过视图崩溃检测。
- `data-blank-screen-ignore="skeleton"`：跳过骨架遮罩检测。
- `data-blank-screen-ignore="all"`：跳过全部检测。

## 技术实现

- 使用 `requestIdleCallback` 在浏览器空闲时执行检测，避免影响页面性能。
- 使用WebWorker进行像素分析，避免阻塞主线程。
- 使用WebGL进行高效的像素颜色对比计算。
- 支持动态查找元素，对于延迟渲染的元素会自动重试。

## 注意事项

- 元素尺寸小于200x200像素时不会进行像素检测。
- 需要浏览器支持WebWorker和WebGL。
- 像素分析采样点数量默认为10000（100x100）。
npm package: @sentry-tools/browser
Description: Sentry工具库，基于 `@sentry-tools/core` 和 `@sentry/browser`，提供浏览器环境的错误监控能力。
Author: rantaiyi
Latest version: 0.0.2

# @sentry-tools/browser

Sentry工具库，基于 `@sentry-tools/core` 和 `@sentry/browser`，提供浏览器环境的错误监控能力。

## 安装

```bash
npm install @sentry-tools/browser
# 或
yarn add @sentry-tools/browser
# 或
pnpm add @sentry-tools/browser
```

## 基础配置

```typescript
import SentryTools from '@sentry-tools/browser';

SentryTools.init({
  browser: {
    dsn: 'your-sentry-dsn',
  },
});
```

## 更多配置

```typescript
import SentryTools from '@sentry-tools/browser';

SentryTools.init({
  // Sentry浏览器配置
  browser: {
    dsn: 'your-sentry-dsn',
    environment: 'production',
    tracesSampleRate: 1.0,
  },
  // 传输管理器配置（微前端场景）
  transport: {
    transportOptions: [
      {
        dsn: 'dsn-1',
        rule: (event) => event.tags?.category === 'api',
      },
    ],
  },
  // 错误分类配置
  category: {
    defaultCategory: 'js',
    categories: {
      api: {
        priority: -3,
        rules: [{ path: 'errorName', match: 'ApiError', mode: 'inclusion' }],
      },
    },
  },
  // 白屏检测配置
  blankScreen: {
    enabled: true,
    checkInterval: 3000,
  },
});
```

## 导出

- `@sentry-tools/core`
- `@sentry/browser`
npm package: @sentry-tools/core
Description: Sentry工具库核心模块，提供统一的错误监控和上报管理能力。
Author: rantaiyi
Latest version: 0.0.1

# @sentry-tools/core

Sentry工具库核心模块，提供统一的错误监控和上报管理能力。

## 功能特性

### SentryTools

核心控制器类，整合了所有监控功能，提供统一的初始化和管理接口。

**主要功能：**

- **远程配置加载**：支持从远程地址动态加载配置，方便动态更新监控规则。
- **Sentry集成**：封装Sentry初始化，集成浏览器追踪、HTTP客户端监控等能力。
- **白屏检测集成**：自动集成白屏检测工具，在检测到白屏问题时自动上报。
- **错误事件处理**：统一处理所有错误事件，自动分类和分发。
- **预加载错误处理**：处理页面加载前发生的错误，从localStorage恢复并上报。

### TransportManager

上报分发管理器，主要用于微前端场景下的错误上报分发。

**功能特性：**

- **多DSN支持**：支持配置多个Sentry DSN，根据规则将错误分发到不同的项目。
- **智能分发规则**：支持基于以下信息进行分发：
  - API接口地址（`api`）
  - 当前访问地址（`location`）
  - 错误栈中的源文件地址（`fileAddresses`）
  - 模块元数据（`module_metadata`）
- **默认传输**：支持设置默认的DSN，当没有规则匹配时使用默认DSN。
- **自定义规则**：支持通过函数自定义分发规则。

**使用场景：**

- 微前端架构中，不同子应用需要上报到不同的Sentry项目。
- 根据错误来源（API错误、资源错误、JS错误）分发到不同的监控项目。
- 根据代码模块来源进行错误分发。

### CategoryManager

错误分类管理器，用于自动识别和标记错误的类型。

**功能特性：**

- **预定义分类**：内置多种错误分类，按优先级排序：
  - `blankScreen`（优先级-5）：白屏相关错误
  - `resource`（优先级-4）：资源加载错误（ChunkLoadError、NetworkError等）
  - `api`（优先级-3）：API接口错误（HTTP客户端错误、接口超时等）
  - `js`（优先级-2）：JavaScript运行时错误（Error、TypeError、ReferenceError等）
  - `biz`（优先级-1）：业务逻辑错误
- **多种匹配模式**：
  - `inclusion`：包含匹配
  - `equal`：完全相等匹配
  - `regex`：正则表达式匹配
- **布尔表达式匹配**：支持复杂的布尔表达式规则，如 `$value0 && $value1 || $value2`。
- **自定义匹配器**：支持通过函数自定义匹配逻辑。

**匹配路径示例：**

- `errorName`：错误名称
- `exception.matchPath`：异常信息路径
- `exception.mechanism.type`：错误机制类型
- `event.tags.category`：事件标签分类

## 配置选项

```typescript
interface SentryConfig {
  // Sentry浏览器配置
  browser?: BrowserOptions;
  // Sentry集成配置
  integrations?: Record<string, any>;
  // 传输管理器配置
  transport?: {
    transportOptions: TransportOption[];
    transportKey?: string;
  };
  // 分类管理器配置
  category?: {
    defaultCategory?: string;
    categories?: Record<
      string,
      {
        priority?: number;
        rules?: (CategoryItem | CategoryExpression)[];
      }
    >;
  };
  // 白屏检测配置
  blankScreen?: BlankScreenOptions;
}
```

## 使用场景

- **统一错误监控**：为应用提供统一的错误监控入口，自动处理错误分类和上报。
- **微前端架构**：在微前端场景下，根据错误来源自动分发到对应的Sentry项目。
- **错误分类统计**：通过自动分类，方便在Sentry中按错误类型进行统计和分析。
- **动态配置更新**：通过远程配置，无需发版即可更新监控规则和分类规则。
- **白屏监控**：自动集成白屏检测，及时发现页面渲染问题。

## 技术实现

- 使用 `defu` 进行配置合并，支持深度合并和默认值。
- 使用 `makeMultiplexedTransport` 实现多DSN上报。
- 使用事件处理器（Event Processor）统一处理所有错误事件。
- 支持从localStorage恢复预加载错误，确保不遗漏任何错误。
- 通过自定义事件通知配置加载完成，方便其他模块监听。
npm package: @sentry-tools/react
Description: 适用于React项目的Sentry检测工具。
Author: rantaiyi
Latest version: 0.0.1

# @sentry-tools/react

适用于React项目的Sentry检测工具。

## 安装

```bash
npm install @sentry-tools/react
# 或
yarn add @sentry-tools/react
# 或
pnpm add @sentry-tools/react
```

## 配置

可参考 `@sentry-tools/browser`

## 导出

- `@sentry-tools/core`
- `@sentry/react`
npm package: @sentry-tools/shared
Description: Sentry工具库基础，包含通用的函数、类型等代码。
Author: rantaiyi
Latest version: 0.0.4

# @sentry-tools/shared

Sentry工具库基础，包含通用的函数、类型等代码。

### BooleanCalculator

布尔表达式计算器，用于解析配置。

不同于eval，BooleanCalculator可安全计算布尔表达式字符串。

**特性：**

- 支持 `&&`、`||`、`!` 运算符
- 支持括号表达式
- 支持运算符优先级（`&&` 优先级高于 `||`）
- 表达式结果缓存，提升重复计算性能
- 完整的错误处理和验证

**支持的表达式格式：**

- `true && false`
- `true || false`
- `!true`
- `(true && false) || true`
- 支持嵌套括号和复杂表达式

### Console

可控制的日志输出工具，提供统一的日志格式和级别控制。

**特性：**

- 统一的日志前缀 `[sentry tools]`
- 支持三种日志级别：`log`、`warn`、`error`
- 可通过 `level` 属性控制输出：
  - `false`：关闭所有日志
  - `true`：开启所有日志
  - 数组：仅开启指定的日志级别，如 `['log', 'warn']`

### lodash

提供常用的lodash方法的轻量级实现，避免引入完整的lodash，导致产物膨胀。

- kebabCase
- lowerFirst
- upperFirst
- omit
- pick
- get
- uniqWith

### utils

- `sleep`：延迟执行，返回Promise
- `defer`：生成延迟事件，用于取出Promise的控制权，支持超时处理
- `loadScript`：动态加载脚本文件，返回Promise
- `objectToJson`：将对象转换为JSON格式，自动过滤函数和Symbol等不可序列化的值
npm package: @sentry-tools/vue
Description: 适用于Vue项目的Sentry检测工具。
Author: rantaiyi
Latest version: 0.0.1

# @sentry-tools/vue

适用于Vue项目的Sentry检测工具。

## 安装

```bash
npm install @sentry-tools/vue
# 或
yarn add @sentry-tools/vue
# 或
pnpm add @sentry-tools/vue
```

## 配置

可参考 `@sentry-tools/browser`

## 导出

- `@sentry-tools/core`
- `@sentry/vue`
npm package: @sentry/browser
Description: Official Sentry SDK for browsers
Author: Sentry
Latest version: 10.48.0

<p align="center">
  <a href="https://sentry.io/?utm_source=github&utm_medium=logo" target="_blank">
    <img src="https://sentry-brand.storage.googleapis.com/sentry-wordmark-dark-280x84.png" alt="Sentry" width="280" height="84">
  </a>
</p>

# Official Sentry SDK for Browsers

[![Sauce Test Status](https://saucelabs.com/buildstatus/sentryio)](https://saucelabs.com/u/sentryio)
[![npm version](https://img.shields.io/npm/v/@sentry/browser.svg)](https://www.npmjs.com/package/@sentry/browser)
[![npm dm](https://img.shields.io/npm/dm/@sentry/browser.svg)](https://www.npmjs.com/package/@sentry/browser)
[![npm dt](https://img.shields.io/npm/dt/@sentry/browser.svg)](https://www.npmjs.com/package/@sentry/browser)

## Links

- [Official SDK Docs](https://docs.sentry.io/quickstart/)

## Usage

To use this SDK, call `Sentry.init(options)` as early as possible after loading the page. This will initialize the SDK
and hook into the environment. Note that you can turn off almost all side effects using the respective options.

```javascript
import * as Sentry from '@sentry/browser';

Sentry.init({
  dsn: '__DSN__',
  // ...
});
```

To set context information or send manual events, use the exported functions of `@sentry/browser`. Note that these
functions will not perform any action before you have called `Sentry.init()`:

```javascript
import * as Sentry from '@sentry/browser';

// Set user information, as well as tags and further extras
Sentry.setExtra('battery', 0.7);
Sentry.setTag('user_mode', 'admin');
Sentry.setUser({ id: '4711' });

// Add a breadcrumb for future events
Sentry.addBreadcrumb({
  message: 'My Breadcrumb',
  // ...
});

// Capture exceptions, messages or manual events
Sentry.captureMessage('Hello, world!');
Sentry.captureException(new Error('Good bye'));
Sentry.captureEvent({
  message: 'Manual',
  stacktrace: [
    // ...
  ],
});
```
npm package: @sentry/bun
Description: Official Sentry SDK for bun
Author: Sentry
Latest version: 10.48.0

<p align="center">
  <a href="https://sentry.io/?utm_source=github&utm_medium=logo" target="_blank">
    <img src="https://sentry-brand.storage.googleapis.com/sentry-wordmark-dark-280x84.png" alt="Sentry" width="280" height="84">
  </a>
</p>

# Official Sentry SDK for Bun (Beta)

[![npm version](https://img.shields.io/npm/v/@sentry/bun.svg)](https://www.npmjs.com/package/@sentry/bun)
[![npm dm](https://img.shields.io/npm/dm/@sentry/bun.svg)](https://www.npmjs.com/package/@sentry/bun)
[![npm dt](https://img.shields.io/npm/dt/@sentry/bun.svg)](https://www.npmjs.com/package/@sentry/bun)

## Links

- [Official SDK Docs](https://docs.sentry.io/quickstart/)

The Sentry Bun SDK is in beta. Please help us improve the SDK by
[reporting any issues or giving us feedback](https://github.com/getsentry/sentry-javascript/issues).

## Usage

To use this SDK, call `init(options)` as early as possible in the main entry module. This will initialize the SDK and
hook into the environment. Note that you can turn off almost all side effects using the respective options.

```javascript
// CJS Syntax
const Sentry = require('@sentry/bun');
// ESM Syntax
import * as Sentry from '@sentry/bun';

Sentry.init({
  dsn: '__DSN__',
  // ...
});
```

To set context information or send manual events, use the exported functions of `@sentry/bun`. Note that these functions
will not perform any action before you have called `init()`:

```javascript
// Set user information, as well as tags and further extras
Sentry.setExtra('battery', 0.7);
Sentry.setTag('user_mode', 'admin');
Sentry.setUser({ id: '4711' });

// Add a breadcrumb for future events
Sentry.addBreadcrumb({
  message: 'My Breadcrumb',
  // ...
});

// Capture exceptions, messages or manual events
Sentry.captureMessage('Hello, world!');
Sentry.captureException(new Error('Good bye'));
Sentry.captureEvent({
  message: 'Manual',
  stacktrace: [
    // ...
  ],
});
```
npm package: @sentry/bundler-plugin-core
Description: Sentry Bundler Plugin Core
Author: Sentry
Latest version: 5.2.0

<p align="center">
  <a href="https://sentry.io/?utm_source=github&utm_medium=logo" target="_blank">
    <img src="https://sentry-brand.storage.googleapis.com/sentry-wordmark-dark-280x84.png" alt="Sentry" width="280" height="84">
  </a>
</p>

# Sentry Bundler Plugin Core

Core package containing the bundler-agnostic functionality used by the bundler plugins.

Check out the individual packages for more information and examples:

- [Rollup](https://www.npmjs.com/package/@sentry/rollup-plugin)
- [Vite](https://www.npmjs.com/package/@sentry/vite-plugin)
- [esbuild](https://www.npmjs.com/package/@sentry/esbuild-plugin)
- [Webpack](https://www.npmjs.com/package/@sentry/webpack-plugin)

### Features

The Sentry bundler plugin core package contains the following functionality:

- Sourcemap upload
- Release creation in Sentry
- Automatic release name discovery (based on CI environment - Vercel, AWS, Heroku, CircleCI, or current Git SHA)
- Automatically associate errors with releases (Release injection)

### More information

- [Sentry Documentation](https://docs.sentry.io/quickstart/)
- [Sentry Discord](https://discord.gg/Ww9hbqr)
- [Sentry Stackoverflow](http://stackoverflow.com/questions/tagged/sentry)
npm package: @sentry/conventions
Description: <p align="center">   <a href="https://sentry.io/?utm_source=github&utm_medium=logo" target="_blank">     <picture>       <source srcset="https://sentry-brand.storage.googleapis.com/sentry-logo-white.png" media="(prefers-color-scheme: dark)" />       <sour
Latest version: 0.4.0

<p align="center">
  <a href="https://sentry.io/?utm_source=github&utm_medium=logo" target="_blank">
    <picture>
      <source srcset="https://sentry-brand.storage.googleapis.com/sentry-logo-white.png" media="(prefers-color-scheme: dark)" />
      <source srcset="https://sentry-brand.storage.googleapis.com/sentry-logo-black.png" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" />
      <img src="https://sentry-brand.storage.googleapis.com/sentry-logo-black.png" alt="Sentry" width="280">
    </picture>
  </a>
</p>

<h1>Sentry Conventions</h1>

<h4>The Sentry Conventions are a set of semantic conventions for naming and describing events in Sentry.</h4>

[![npm version](https://img.shields.io/npm/v/@sentry/conventions.svg)](https://www.npmjs.com/package/@sentry/conventions)
[![npm dm](https://img.shields.io/npm/dm/@sentry/conventions.svg)](https://www.npmjs.com/package/@sentry/conventions)
[![npm dt](https://img.shields.io/npm/dt/@sentry/conventions.svg)](https://www.npmjs.com/package/@sentry/conventions)
[![Discord Chat](https://img.shields.io/discord/621778831602221064.svg)](https://discord.gg/sentry)

![GitHub Actions](https://github.com/getsentry/sentry-conventions/actions/workflows/build.yml/badge.svg)
[![Codecov](https://codecov.io/gh/getsentry/sentry-conventions/graph/badge.svg?token=fQNlGihNOf)](https://codecov.io/gh/getsentry/sentry-conventions)

The package exports:

- `attributes`: contains constants for all attribute names and their types, as defined in the Sentry semantic conventions
- `attributes.Attributes`: represents a bag of typed attributes
- `op`: contains constants for span operations used in Sentry
npm package: @sentry/cordova
Description: Official Sentry SDK for Cordova
Latest version: 0.7.0
Deprecated: Please use sentry-cordova instead

<p align="center">
    <a href="https://sentry.io" target="_blank" align="center">
        <img src="https://sentry-brand.storage.googleapis.com/sentry-logo-black.png" width="280">
    </a>
<br/>
    <h1>Official Sentry SDK for Cordova (Ionic, ...)</h1>
</p>

[![Travis](https://img.shields.io/travis/getsentry/sentry-cordova.svg?maxAge=2592000)](https://travis-ci.org/getsentry/sentry-cordova)
[![codecov](https://codecov.io/gh/getsentry/sentry-cordova/branch/master/graph/badge.svg)](https://codecov.io/gh/getsentry/sentry-cordova)
[![npm version](https://img.shields.io/npm/v/@sentry/cordova.svg)](https://www.npmjs.com/package/@sentry/cordova)
[![npm dm](https://img.shields.io/npm/dm/@sentry/cordova.svg)](https://www.npmjs.com/package/@sentry/cordova)
[![npm dt](https://img.shields.io/npm/dt/@sentry/cordova.svg)](https://www.npmjs.com/package/@sentry/cordova)

[![deps](https://david-dm.org/getsentry/sentry-cordova/status.svg)](https://david-dm.org/getsentry/sentry-cordova?view=list)
[![deps dev](https://david-dm.org/getsentry/sentry-cordova/dev-status.svg)](https://david-dm.org/getsentry/sentry-cordova?type=dev&view=list)
[![deps peer](https://david-dm.org/getsentry/sentry-cordova/peer-status.svg)](https://david-dm.org/getsentry/sentry-cordova?type=peer&view=list)

## Usage
```javascript
Sentry.create('___DSN___')
    .use(SentryCordova, {sentryBrowser: SentryBrowser})
    .install();
```

## Documentation
- [Installation](https://docs.sentry.io/clients/cordova/#installation)
- [Using Sentry with Ionic](https://docs.sentry.io/clients/cordova/ionic/)
- [Documentation](https://docs.sentry.io/clients/cordova/)