open-index/open-npm huggingface dataset:
npm package: @raytecvision/ngx-remote-desktop
Description: ngx-remote-desktop is an Angular 12 module that implements the guacamole protocol
Author: Manuel Romei
Latest version: 3.1.2

# RemoteDesktop

This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 11.1.0.

## Code scaffolding

Run `ng generate component component-name --project remote-desktop` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project remote-desktop`.
> Note: Don't forget to add `--project remote-desktop` or else it will be added to the default project in your `angular.json` file. 

## Build

Run `ng build remote-desktop` to build the project. The build artifacts will be stored in the `dist/` directory.

## Publishing

After building your library with `ng build remote-desktop`, go to the dist folder `cd dist/remote-desktop` and run `npm publish`.

## Running unit tests

Run `ng test remote-desktop` to execute the unit tests via [Karma](https://karma-runner.github.io).

## Further help

To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
npm package: @raytheist/use-local-storage
Description: A React hook that works like useState but persists via localStorage
Author: rayhatfield
Latest version: 1.0.1

# @raytheist/use-local-storage

> A React hook that works like useState but persists via localStorage

## Install

```bash
npm install --save @raytheist/use-local-storage
```

## Usage

```jsx
import React from 'react'

import useLocalStorage from '@raytheist/use-local-storage'

const Example = () => {
  const [value, setValue] = useLocalStorage('storage-key', 0);
  
  return (
      <button onClick={() => setValue(value + 1)}>{value}</button>
  )
}
```

## License

MIT © [rayhatfield](https://github.com/rayhatfield)
npm package: @raytien/mermaid-ui
Description: CLI, core library & Mermaid.js UI components compilable into framework-agnostic Web Components.
Author: Ray Tien
Latest version: 1.0.1

# MermaidUI Monorepo

A framework-agnostic Mermaid diagram auto-renderer for

- **SSR** in Node.js

## Workspace Packages

- **mermaidui-core** – Core rendering library (ESM/CJS/UMD, SSR, DOM observer).
- **mermaidui** – Vite-powered browser demo and playground.

---

## Prerequisites

- Node.js v20+ (LTS)
- pnpm v9+ (or npm/yarn with equivalent commands)

---

## Setup

```bash
# From monorepo root
pnpm install        # install dependencies
pnpm bootstrap      # bootstrap with Lerna & pnpm workspaces
```

## Development

```bash
# Build all packages
pnpm build

# Run tests across all packages
pnpm test
```

### Development per package

```bash
# UI demo
cd packages/ui
pnpm dev       # start Vite server on http://localhost:5173
pnpm build     # produce static demo in dist/
```

---

## Usage

### Core Library

```ts
import { initMermaidUI, renderAll, renderOne } from "mermaidui-core";

// Auto-render all .mermaid blocks on page
initMermaidUI({ selector: ".mermaid", observer: true });

// Render a single code string
const svg = await renderOne("graph TD; A-->B;", "myId");
```

### UI Demo

```bash
cd packages/ui
pnpm dev
# open http://localhost:5173 in browser
```

The UI lets you:

- Edit Mermaid code in a live textarea
- Load a local .mmd/.md/.txt file via the file picker
- See instant SVG render on the right panel

---

## Publishing Packages

1. Bump version in each `packages/*/package.json`.
2. Run `pnpm build` at monorepo root.
3. `cd packages/<name> && npm publish --access public`.

---

## Contributing

Feel free to open issues or pull requests. We follow the standard GitHub flow:

1. Fork the repository.
2. Create a feature branch.
3. Commit and push changes.
4. Open a PR against `main`.

Please include tests and update documentation.

---

## License

[MIT License](LICENSE)
npm package: @raytio/react-intl-manager
Description: Manage i18n files used by react-intl
Latest version: 6.4.0

# react-intl-manager

![pipeline](https://gitlab.com/raytio/react-intl-manager/badges/main/pipeline.svg?style=flat-square)
![coverage](https://gitlab.com/raytio/react-intl-manager/badges/main/coverage.svg?style=flat-square)
![npm version](https://img.shields.io/npm/v/@raytio/react-intl-manager?color=%234c1&style=flat-square)

A fork of [react-intl-translations-manager](https://github.com/GertjanReynaert/react-intl-translations-manager) which works better for Raytio and integrates with the GitLab CI.

What it actually does

- Remove duplicates from the locale json files
- Remove redundant keys from locale json files
- Detect missing keys and add them as `null`
- Generate a codequality report for codeclimate or GitLab CI.

Note that for performance reasons, this script only parses files that import the `i18n` module. If it fails to detect this, you can add `// @i18nForceCheck` to force it to check that file.

## Usage:

```sh
npm i -D @raytio/react-intl-manager
```

Then add a section to package.json called `i18n` which contains the config:

```jsonc
{
  "scripts": {
    "i18n": "react-intl-manager"
  },
  "i18n": {
    "localeDir": "path/to/locale-json-files",

    // optional, src by default
    "sourceFolder": "src",

    // optional, .messages by default
    "messagesDir": ".messages",

    // optional, the name of the es module - default is "i18n", not "react-intl"
    // set to `false` to parse every js-like file
    "moduleSourceName": "i18n",

    // optional, this will append any issues to this file if exists (or create it)
    "codeQualityReport": "path/to/codequality.json"
  }
}
```

## Contributing

```sh
# makes cli.js available
npm link
```

## Publishing

The CI will publish every commit to `main` if the version number in package.json has been bumped.
npm package: @rayuse/array
Description: 常用的数组工具函数
Author: SuperRay3
Latest version: 0.0.3-beta.6

# Array

> 常用的一些关于数组的工具函数。

引用方式

```typescript
import { arithmeticSequence, ... } from '@rayuse/array'
```

## arithmeticSequence

生成等差数列，参数分别为 `数组起始值` `步长值` `数组长度`

```ts
/**
 * @param start 最小值
 * @param step 步长值
 * @param len 数组长度
 * @returns 等差数组
 */
arithmeticSequence(0, 2, 5) // [0, 2, 4, 6, 8]
arithmeticSequence(1, 5, 8) // [1, 6, 11, 16, 21, 26, 31, 36]
```

## countOccurrences

统计数组中指定元素出现的次数，**只能统计 string | number | boolean | null | undefined 类型的元素**

```ts
/**
 * @param arr 数组
 * @param val 待统计的元素
 * @returns 出现次数
 */
countOccurrences([1, '', undefined, null, true], '') // 1
countOccurrences([1, '', undefined, null, true, ''], '') // 2
countOccurrences([1, '', undefined, null, true], null) // 1
countOccurrences([1, '', undefined, null, true, true], true) // 2
```

## deepFlatten

- 扁平化数组，**不限层级**

```ts
/**
 * @param arr 被操作数组
 * @returns 扁平化后的数组
 */
deepFlatten([1, [2, 3], [[4, 5], [6, [7, 8]]]]) // [1,2,3,4,5,6,7,8]
```

- **限定层级**

```ts
/**
 * @param arr 被操作数组
 * @param depth 深度
 * @returns 扁平后的数组
 */
flatten([1, [2, 3], [[4, 5], [6, [7, 8]]]]) // [1, 2, 3,[4, 5], [6, [7, 8]]]
flatten([1, [2, 3], [[4, 5], [6, [7, 8]]]], 2) // [1, 2, 3,4, 5, 6, [7, 8]]
flatten([1, [2, 3], [[4, 5], [6, [7, 8]]]], 3) // [1, 2, 3,4, 5, 6, 7, 8]
```

## indexOfAll

统计目标元素在数组中的全部索引

```ts
/**
 * @param arr 数组
 * @param val 目标元素
 * @returns 索引的集合
 */
indexOfAll([1, true, undefined, null, '1', 1, true, undefined, null, '1'], undefined) // [2, 7]
indexOfAll([1, true, undefined, null, '1', 1, true, undefined, null, '1'], 1) // [0, 5]
indexOfAll([1, true, undefined, null, '1', 1, true, undefined, null, '1'], true) // [1, 6]
```

## intersection

数组交集，**只能统计 string | number | boolean | null | undefined 类型的元素**

```ts
/**
 * @param arrA 数组 a
 * @param arrB 数组 b
 * @returns 交集
 */
intersection([1,2,3,4,true], [2,5,true]) // [2, true]
```

## diffrence

数组 A 与数组 B 的差集，不带去重功能

```ts
/**
 * @param arrA 数组 a
 * @param arrB 数组 b
 * @returns 差集数组
 */
diffrence([1,2,3], [3,2,1]) // []
diffrence([2,5,2,5], [1]) // [2,5,2,5]
diffrence([2,5,2,5], [2]) // [5,5]
```

## randomIntArrayInRange

获取指定范围、指定长度的随机数组

```ts
/**
 * @param min 最小值
 * @param max 最大值
 * @param n 数组长度
 * @returns 数组
 */
randomIntArrayInRange(12, 35, 10) // [ 34, 14, 27, 17, 30, 27, 20, 26, 21, 14 ]
```

## lastArrItem

获取数组最后一个元素

```ts
/**
 * 获取数组最后一个元素
 * @param arr 数组
 * @returns 数组最后一个元素
 */
lastArrItem([1,2,3,4,true]) // true
lastArrItem([1,2,3,4,{ aa: 1, bb: 2 }]) // { aa: 1, bb: 2 }
```

## everyNth

数组指定间隔的元素（nth）

```ts
/**
 * @param arr 数组
 * @param nth 间隔
 * @returns 结果数组
 */
everyNth([1,2,3,4,5]) // [2, 4]
everyNth([1,2,3,4,5], 3) // [3]
everyNth([1,2,3,4,5], -1) // []
```

## chunkArr

按指定大小分隔数组

```ts
chunkArr([1,2,3,4,5], 1) // [[1],[2],[3],[4],[5]]
chunkArr([1,2,3,4,5], 2) // [[1,2], [3,4], [5]]
chunkArr([1,2,3,4,5], 3) // [[1,2,3], [4,5]]
```

## shuffle

打乱数组

```ts
shuffle([1,2,3,4,5,6]) // [5,3,4,6,2,1]
```
npm package: @rayuse/composition
Description: 常用的 composition
Author: SuperRay3
Latest version: 0.0.3-beta.6

存放一些常用的 `compostion`，得力于 [vue-demi](https://www.npmjs.com/package/vue-demi) 这个包，这里的 compostion **同时支持 vue2 和 vue3**。
npm package: @rayuse/utils
Description: 存放一些零散、未分类的工具函数
Author: SuperRay3
Latest version: 0.0.3-beta.6

# utils

> 常用的一些没有特定分类的工具函数。


引用方式

```ts
import { fixedRound, ... } from '@rayuse/utils'
```

## parseTime

格式化时间

```ts
parseTime(new Date(2021, 10, 24), '{y}/{m}/{d}') // '2021/11/24'
parseTime(1637743490387, '{y}/{m}/{d}') // '2021/11/24'
parseTime('2021-11-24', '{y}/{m}/{d}') // '2021/11/24'

parseTime(1637743490387, '{y}/{m}/{d} {h}:{i}:{s}') // '2021/11/24 16:11:44'
parseTime('2021-11-24', '{y}/{m}/{d} {h}:{i}:{s}') // 2021/11/24 00:00:00
```

## fixedRound

四舍五入保留指定位数小数，并自动补零

::: tip
函数内部对精度丢失问题进行了优化
:::

众所周知，JavaScript 存在**精度丢失**的问题，[0.1 + 0.2 !== 0.3](https://juejin.cn/post/6844903557326454791)。这就给我们在进行数字处理，包括但不限于四则运算等情况下带来了烦恼。

这个函数则是将**原始值扩大相应倍数后进行运算，将运算结果再还原倍数后 `Math.round`**，这样就可以有效地规避精度丢失问题。

```ts
fixedRound(0.2577) // 0.26
fixedRound(0.1 + 0.2) // 0.30
fixedRound(0.5234575, 4) // 0.5235
```

## sleep

::: tip
灵感来自于其它语言的 sleep 函数
:::
指定代码暂停运行 x 毫秒

 - **场景1：** 前端模拟接口请求时的 loading 状态
 - **场景2：** *更新补充中...*

```ts
// 场景1
const loading = ref(false)
async function getData() {
	loading.value = true
	await sleep(2000) // 两秒后改变 loading 状态
	loading.value = false
}
```

## getVal

安全获取对象属性，提供兜底值

- **场景1：** 读取对象上不存在的属性，并提供缺省值

- **场景2：** 对象值为 `undefined` 或者 `null` 时，提供缺省值

```ts
const a = { b: 1, c: 2, e: null }

getVal(() => a.d, 0) // 0 因为不存在属性 c，正常读取会报错可能导致代码终止运行，此时可通过此函数避免报错并提供页面友好的缺省值
getVal(() => a.e, '--') // '--'
```

## formatCashType

千分计数法

```ts
formatCashReg('1234567') // '1,234,567'
formatCashReg('1234567.12') // '1,234,567.12'
```

## upDigit

将金额转换为大写

```ts
upDigit(1234.12) // '壹仟贰佰叁拾肆元壹角壹分整'
upDigit(1234) // '壹仟贰佰叁拾肆元整'
```

## isBlankObj

判断是否为空对象

```ts
isBlankObj({}) // true
isBlankObj(null) // false
isBlankObj(undefined) // false
isBlankObj('') // false
isBlankObj([]) // true
```
npm package: @rayutek/abap-adt-api
Description: Interface to Abap Developer Tools webservice
Author: Marcello Urbani
Latest version: 7.0.0-pkg-1.0.3

[![npm](https://img.shields.io/npm/v/abap-adt-api?label=abap-adt-api)](https://www.npmjs.com/package/abap-adt-api)

# ADT - Abap Developer Tools client

This library simplifies access to the ADT REST interface.

Supports a good share of what Eclipse tools can do with a simple JS/TS interface.

Designed for general use, mostly used in [ABAP remote filesystem extension for visual studio code](https://github.com/marcellourbani/vscode_abap_remote_fs)

## Sample usage

```typescript
// create a client object
import { ADTClient } from "abap-adt-api"
const client = new ADTClient(
  "http://vhcalnplci.bti.local:8000",
  "developer",
  "mypassword"
)

const nodes = await client.nodeContents("DEVC/K", "$TMP")
```