open-index/open-npm huggingface dataset:
npm package: @pyncho-wc/p-trim-text
Description: Component that allows to trim text with replacer. And show full text native description on hover
Author: hi-pyncho
Latest version: 1.0.7

# \<p-trim-text>
Component that allows to trim text with replacer. And show full text with native description (title and aria-label) on hover

[![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://www.webcomponents.org/element/@pyncho-wc/p-trim-text)
[![npm (scoped)](https://img.shields.io/npm/v/%40pyncho-wc/p-trim-text?logo=npm&color=green)](https://www.npmjs.com/package/@pyncho-wc/p-trim-text)
![NPM](https://img.shields.io/npm/l/%40pyncho-wc%2Fp-trim-text?color=blue)
![npm package minimized gzipped size (select exports)](https://img.shields.io/bundlejs/size/%40pyncho-wc%2Fp-trim-text)
[![skypack cdn download link](https://img.shields.io/badge/download%20link-cdn?logo=skypack&label=skypack.dev&link=https%3A%2F%2Fcdn.skypack.dev%2F%40pyncho-wc%2Fp-trim-text)](https://cdn.skypack.dev/@pyncho-wc/p-trim-text)

This webcomponent follows the [open-wc](https://github.com/open-wc/open-wc) recommendation.

<!--
```
<custom-element-demo>
  <template>
    <script src="./p-trim-text.js"></script>
    <link rel="import" href="./demo/index.html">
    <next-code-block></next-code-block>
  </template>
</custom-element-demo>
```
-->
```html
<p-trim-text></p-trim-text>
```

## Installation
### CDN
#### Inside script:
```js
import 'https://cdn.skypack.dev/@pyncho-wc/p-trim-text';
```
#### Or in html:

```html
<script
  type="module"
  src="https://cdn.skypack.dev/@pyncho-wc/p-trim-text">
</script>
```

#### With builders like webpack, vite etc:
```bash
npm i @pyncho-wc/p-trim-text
```

#### If you need to change tag name:
```js
import PTrimText from '@pyncho-wc/p-trim-text/index.js';
customElements.define('custom-trim-text', PTrimText);
```

---

## Usage

```html
<p-trim-text
  letters-to-trim="5"
  replacer='---'>
  Lorem ipsum dolor sit amet consectetur adipisicing elit.
</p-trim-text>

<!-- RESULT: -->
<!-- Lorem--- -->
```
---

## Linting and formatting

To scan the project for linting and formatting errors, run

```bash
npm run lint
```

To automatically fix linting and formatting errors, run

```bash
npm run format
```

---

## Testing with Web Test Runner

To execute a single test run:

```bash
npm run test
```

To run the tests in interactive watch mode run:

```bash
npm run test:watch
```

---

## Tooling configs

For most of the tools, the configuration is in the `package.json` to minimize the amount of files in your project.

If you customize the configuration a lot, you can consider moving them to individual files.

---

## Local Demo with `web-dev-server`

```bash
npm start
```

To run a local development server that serves the basic demo located in `demo/index.html`
npm package: @pyncz/trpc-refresh-token-link
Description: 🔃 Refresh token link for tRPC client
Author: Pau Yankovski
Latest version: 1.0.2

# @pyncz/trpc-refresh-token-link

🔃 Refresh token link for [tRPC](https://trpc.io/) client.

Inspired by the tRPC's built-in [`retryLink`](https://github.com/trpc/trpc/blob/1f4a2ead34ba0d1054dd47bfd66d082dc57a04bd/packages/client/src/links/retryLink.ts).

## Install
Just install `@pyncz/trpc-refresh-token-link` with your favorite package manager.
```bash
pnpm install @pyncz/trpc-refresh-token-link
```

## Usage
With the setup below your `trpc` client will try to get a new JWT pair (access and refresh tokens) from your API should it get `401 UNAUTHORIZED`.

```ts
import { createTRPCProxyClient, httpBatchLink } from '@trpc/client'
import { refreshTokenLink } from '@pyncz/trpc-refresh-token-link'

/**
 * A helper client to use in `refreshTokenLink` to fetch a new jwt pair
 * Or you can use a regular http `fetch` if your API supports it
 */
const trpcClient = createTRPCProxyClient<YourAppRouter>({
  transformer,
  links: [
    httpBatchLink({ /* ... */ }),
  ],
})

/**
 * Your actual tRPC client
 */
export const trpc = createTRPCProxyClient<YourAppRouter>({
  transformer: yourTransformer,
  links: [
    refreshTokenLink({
      // Get locally stored refresh token
      getRefreshToken: () => {
        return storage.get('jwt')?.refresh
      },

      // Fetch a new JWT pair by refresh token from your API
      fetchJwtPairByRefreshToken: (refreshToken) => {
        return trpcClient.auth.refreshToken.query({ refreshToken })
      },

      // Callback on JWT pair is successfully fetched with `fetchJwtPairByRefreshToken`
      onJwtPairFetched: (payload) => {
        storage.set('jwt', payload)
      },

      // optional: Callback on JWT refresh request is failed
      onRefreshFailed: () => {
        // Probably you would like to remove stored jwt and log out the user here
        storage.remove('jwt')
      },

      // optional: Callback on a request is failed with UNAUTHORIZED code,
      // before the refresh flow is started
      onUnauthorized: () => {
        // Uh oh, just got 401!
      },
    }),

    httpBatchLink({ /* ... */ }),
  ],
})
```

> **Note**
> While the refresh flow is running, the outgoing requests will be paused until we get a new jwt pair (or get an error).
> 
> We can't hold back *only procedures that require authentication* because we don't know which procedures are protected **beforehand** without additional meta.
npm package: @pyncz/zod-key-mapper
Description: Transform keys of zod object schemas
Author: Pavel Yankovski
Latest version: 1.0.1

# @pyncz/zod-key-mapper

🗝️ Transform keys of [zod](https://github.com/colinhacks/zod) object schemas

---

## Installation

Just install it with your favourite package manager:
```sh
pnpm install @pyncz/zod-key-mapper
```

## Usage

Let's say, you use a 3rd party API to fetch some data. You want to parse and transform it with zod for further usage, including some operations with keys, e.g. mapping keys from *snake_case* to *camelCase*, or even change some confusing field names into something more convenient.

`@pyncz/zod-key-mapper` provides a convenient way to transform keys:

```ts
import { z } from 'zod'
import { mapped } from '@pyncz/zod-key-mapper'

const schema = mapped(z.object({
  snake_case_field: z.string(),
  foo: z.number(),
  bar: z.number(),
}), { snake_case_field: 'weRespectCamelsHere' })

console.log(schema.parse({ snake_case_field: 'hey', foo: 69, bar: 420 }))
// > { weRespectCamelsHere: 'hey', foo: 69, bar: 420 }
```

You can map multiple keys:
```ts
const schema = mapped(z.object({
  key1: z.string(),
  key2: z.number(),
  key3: z.number(),
}), { key1: 'key1mod', key2: 'key2mod' })

console.log(schema.parse({ key1: 'hey', key2: 69, key3: 420 }))
// > { key1mod: 'hey', key2mod: 69, key3: 420 }
```

Or you can map the schema key by key:
```ts
const schema = mapped(mapped(z.object({
  key1: z.string(),
  key2: z.number(),
  key3: z.number(),
}), { key1: 'key1mod' }), { key2: 'key2mod' })

console.log(schema.parse({ key1: 'hey', key2: 69, key3: 420 }))
// > { key1mod: 'hey', key2mod: 69, key3: 420 }
```

#### Arguments
- `schema` - your Zod type
- `keysMap` - a readonly object with **keys you want to rename** as keys, and **corresponding new keys** as values.

## What's up with other keys operations?

> "What if I want to add or remove keys, not just transform them?"

Well, you should use [prick / omit](https://zod.dev/?id=pickomit) methods zod provides out of the box, before mapping:

```ts
const schema = mapped(z.object({
  key1: z.string(),
  key2: z.number(),
  key3: z.number(),
}).pick({ key1: true }), { key1: 'key1mod' })

console.log(schema.parse({ key1: 'hey', key2: 69, key3: 420 }))
// > { key1mod: 'hey' }
```
npm package: @pynickle/koishi-plugin-chat-summarizer
Description: Koishi 聊天记录收集和上传插件
Latest version: 1.26.1

# koishi-plugin-chat-summarizer

[![npm version](https://badge.fury.io/js/koishi-plugin-chat-summarizer.svg)](https://badge.fury.io/js/koishi-plugin-chat-summarizer)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

> Koishi 聊天记录收集和上传插件

## 主要功能

- 自动收集群聊消息并保存到本地
- 自动上传图片、文件到 S3 存储
- 支持按配置自动清理过期媒体文件（图片 / 文件 / 视频）
- 支持多种格式和时间范围的聊天记录导出
- 支持 AI 总结功能（文本/图片格式）
- 定时任务和数据库缓存管理
- 支持 AWS S3、MinIO 等 S3 兼容存储

## 📚 API

### 命令

- `cs.status`: 查看插件状态
- `cs.geturl`: 获取回复消息中图片/文件的 S3 链接（仅管理员可用）
  - 使用方法：回复包含图片或文件的消息，然后发送 `cs.geturl` 命令
  - 权限要求：需要在配置中的 `admin.adminIds` 列表中
  - ⚠️ 限制：只能查询最近 24 小时内的消息（数据库缓存期限）
- `cs.export [群组] [时间范围] [格式] [-t 消息类型] [-s]`: 导出指定时间范围的聊天记录（仅管理员可用）
  - 时间范围：预设（today/yesterday/last7days 等）或具体日期（2024-01-01）
  - 格式：json（默认）、txt、csv
  - 可选参数：-t 过滤消息类型，-s 生成 AI 总结
- `cs.summary.check [天数]`: 检查缺失的 AI 总结（仅管理员可用）
  - 默认检查最近 7 天，可指定 1-365 天
  - 显示哪些日期的群组缺失 AI 总结
- `cs.summary.retry <日期> [群组ID]`: 重新生成指定日期的 AI 总结（仅管理员可用）
  - 支持重新生成单个群组或该日期所有群组的总结
  - 自动清除旧的总结记录并重新生成
- `cs.summary.get <日期> [群组ID]`: 获取指定日期的 AI 总结图片（仅管理员可用）
  - 支持预设日期（today、yesterday 等）和具体日期格式
  - 在群聊中可省略群组参数，自动使用当前群组
  - 群组参数：
    - `current` - 当前群（仅在群聊中有效）
    - `123456789` - 具体群号
- `cs.analysis <自然语言查询>`: AI 分析聊天记录（仅管理员可用）
  - 自动识别时间范围并转换为具体日期（如：昨天 → 2025-01-07，最近 3 天 → 2025-01-05, 2025-01-06, 2025-01-07）
  - 根据问题生成针对性分析结果（限制 100 字以内）
  - 支持各种类型的查询（事件总结、话题分析、金句提取等）
  - 输出纯文本格式，简洁直接
npm package: @pynk/pynk-linux-arm64-gnu
Description: This is the **aarch64-unknown-linux-gnu** binary for `@pynk/pynk`
Latest version: 0.3.11

# `@pynk/pynk-linux-arm64-gnu`

This is the **aarch64-unknown-linux-gnu** binary for `@pynk/pynk`
npm package: @pynk/pynk-linux-x64-gnu
Description: This is the **x86_64-unknown-linux-gnu** binary for `@pynk/pynk`
Latest version: 0.3.11

# `@pynk/pynk-linux-x64-gnu`

This is the **x86_64-unknown-linux-gnu** binary for `@pynk/pynk`
npm package: @pynk/pynk-win32-arm64-msvc
Description: This is the **aarch64-pc-windows-msvc** binary for `@pynk/pynk`
Latest version: 0.3.11

# `@pynk/pynk-win32-arm64-msvc`

This is the **aarch64-pc-windows-msvc** binary for `@pynk/pynk`
npm package: @pynk/pynk-win32-x64-msvc
Description: This is the **x86_64-pc-windows-msvc** binary for `@pynk/pynk`
Latest version: 0.3.11

# `@pynk/pynk-win32-x64-msvc`

This is the **x86_64-pc-windows-msvc** binary for `@pynk/pynk`
npm package: @pynner/jquery-minicolors
Description: jQuery MiniColors Plugin
Author: Cory LaViska
Latest version: 2.2.6

# jQuery MiniColors: A tiny color picker built on jQuery

Developed by Cory LaViska for A Beautiful Site, LLC

Licensed under the MIT license: http://opensource.org/licenses/MIT

## Demo & Documentation

http://labs.abeautifulsite.net/jquery-minicolors/

## Install via NPM

This is the official NPM version of MiniColors:

```
npm install --save @claviska/jquery-minicolors
```

**Note:** There is another version on NPM without the namespace that is out of date and not supported. I did not create it nor do I have control of it. Please use the official NPM version to ensure you have the latest updates.
npm package: @pyodide/pyodide
Description: The awesome [Pyodide](https://pyodide.org/) as an npm package.
Author: pyodude
Latest version: 0.17.1

# pyodide

The awesome [Pyodide](https://pyodide.org/) as an npm package.

This is a **temporary** package, until [Pyodide](https://github.com/pyodide/pyodide/) releases an official npm package. 

This package is **NOT** maintained by the [Pyodide](https://github.com/pyodide/pyodide/) team.

## Changelog

### 0.17.0

*April 22, 2021*

**Initial version**

- Based on pyodide [0.17.0](https://github.com/pyodide/pyodide/releases/tag/0.17.0)
npm package: @pyoner/svelte-form
Description: A library that helps you build a HTML form from a JSON Schema
Author: Jungle
Latest version: 1.0.2

# Svelte JSON Schema Form library

A library that helps you build a HTML form from a JSON Schema

## Note

**(WIP) This library is currently under heavy development and isn't ready for production**

### Usage

Install the library:

```bash
npm install @pyoner/svelte-form
```

Install a validator:

```bash
npm install @pyoner/svelte-form-ajv
```

Create App component:

```svelte
<script lang="ts">
  import Ajv from "ajv";
  import { Form, components } from "@pyoner/svelte-form";
  import { createAjvValidator } from "@pyoner/svelte-form-ajv";
  import jsonSchemaDraft4 from "ajv/lib/refs/json-schema-draft-04.json";
  import schema from "./schema.json";

  const ajv = new Ajv({
    schemaId: "auto",
    jsonPointers: true,
    allErrors: true,
    coerceTypes: true
  });
  ajv.addMetaSchema(jsonSchemaDraft4);
  const validator = createAjvValidator(ajv);
  let value;
</script>

{#if schema}
  <Form
    {schema}
    {components}
    {value}
    {validator}
    on:submit={e => {
      console.log('submit', e);
    }}
    on:reset={e => {
      console.log('reset', e);
    }}>
    <button type="reset">Reset</button>
    <button type="submit">Submit</button>
  </Form>
{/if}
```
npm package: @pyoner/svelte-form-ajv
Description: Ajv validator for @pyoner/svelte-form
Author: Jungle
Latest version: 0.1.3

# Ajv Validator

### Install

```bash
npm install @pyoner/svelte-form-ajv
```

### Usage

```svelte
<script lang="ts">
  import Ajv from "ajv";
  import { Form, components } from "@pyoner/svelte-form";
  import { createAjvValidator } from "@pyoner/svelte-form-ajv";
  import jsonSchemaDraft4 from "ajv/lib/refs/json-schema-draft-04.json";
  import schema from "./schema.json";
  
  const ajv = new Ajv({
    schemaId: "auto",
    jsonPointers: true,
    allErrors: true,
    coerceTypes: true
  });
  ajv.addMetaSchema(jsonSchemaDraft4);
  const validator = createAjvValidator(ajv);
  let value;
</script>

{#if schema}
  <Form
    {schema}
    {components}
    {value}
    {validator}
    on:submit={e => {
      console.log('submit', e);
    }}
    on:reset={e => {
      console.log('reset', e);
    }}>
    <button type="reset">Reset</button>
    <button type="submit">Submit</button>
  </Form>
{/if}
```
npm package: @pyoner/svelte-types
Description: Typescript definitions for Svelte v3 (*.d.ts)
Author: Jungle
Latest version: 3.4.4-2

# Typescript definitions for Svelte v3

## Install
```bash
npm i -D @pyoner/svelte-types
```

## How to use?

Add to your `tsconfig.json`
```javascript
{
  "compilerOptions": {
    // ... your config
    "types": ["@pyoner/svelte-types"]
  }
}
```
npm package: @pyoxa/go-httpkit-query
Description: Query param composer for the httpkit Go API conventions.
Latest version: 0.1.0

# @pyoxa/aids-query

Small helper for composing query params that match the `aids` Go API conventions.

## Install

```bash
bun add @pyoxa/aids-query
```

## Quick usage

```ts
import { buildQuery, buildUrl } from "@pyoxa/aids-query";

const q = buildQuery()
	.filter("habit_id", "f86b053f-94ce-4c6f-b13a-e1208979218a", "exact")
	.sort("created_at", "desc")
	.limit(50)
	.offset(0);

const url = buildUrl("/api/habits", q);
// /api/habits?habit_id_exact=f86b053f-94ce-4c6f-b13a-e1208979218a&sort=-created_at&limit=50&offset=0
```

## Axios

```ts
import axios from "axios";
import { buildQuery } from "@pyoxa/aids-query";

const q = buildQuery()
	.filterExact("habit_id", "f86b053f-94ce-4c6f-b13a-e1208979218a")
	.limit(25)
	.page(2);

const res = await axios.get("/api/habits", {
	params: q.toSearchParams(),
});
```

## Fetch

```ts
import { buildQuery, buildUrl } from "@pyoxa/aids-query";

const q = buildQuery().filterCI("title", "daily").sort("title", "asc");
const res = await fetch(buildUrl("/api/habits", q));
```

## Notes

- Filters serialize as `{column}_{mode}=value`, e.g. `habit_id_exact=...`.
- Sort uses `sort=+column` or `sort=-column`.
- `limit("ALL")` disables pagination.
npm package: @pypi/beautifulsoup4
Description: Beautiful Soup sits atop an HTML or XML parser, providing Pythonic idioms for iterating, searching, and modifying the parse tree.
Author: Leonard Richardson
Latest version: 4.6.1

= Introduction =

  >>> from bs4 import BeautifulSoup
  >>> soup = BeautifulSoup("<p>Some<b>bad<i>HTML")
  >>> print soup.prettify()
  <html>
   <body>
    <p>
     Some
     <b>
      bad
      <i>
       HTML
      </i>
     </b>
    </p>
   </body>
  </html>
  >>> soup.find(text="bad")
  u'bad'

  >>> soup.i
  <i>HTML</i>

  >>> soup = BeautifulSoup("<tag1>Some<tag2/>bad<tag3>XML", "xml")
  >>> print soup.prettify()
  <?xml version="1.0" encoding="utf-8">
  <tag1>
   Some
   <tag2 />
   bad
   <tag3>
    XML
   </tag3>
  </tag1>

= Full documentation =

The bs4/doc/ directory contains full documentation in Sphinx
format. Run "make html" in that directory to create HTML
documentation.

= Running the unit tests =

Beautiful Soup supports unit test discovery from the project root directory:

 $ nosetests

 $ python -m unittest discover -s bs4 # Python 2.7 and up

If you checked out the source tree, you should see a script in the
home directory called test-all-versions. This script will run the unit
tests under Python 2.7, then create a temporary Python 3 conversion of
the source and run the unit tests again under Python 3.

= Links =

Homepage: http://www.crummy.com/software/BeautifulSoup/bs4/
Documentation: http://www.crummy.com/software/BeautifulSoup/bs4/doc/
               http://readthedocs.org/docs/beautiful-soup-4/
Discussion group: http://groups.google.com/group/beautifulsoup/
Development: https://code.launchpad.net/beautifulsoup/
Bug tracker: https://bugs.launchpad.net/beautifulsoup/