open-index/open-npm huggingface dataset:
npm package: @qs1/v3-sdk
Description: ⚒️ An SDK for building applications on top of Uniswap V3
Latest version: 3.9.4

# Alpha software

The latest version of the SDK is used in production in the Uniswap Interface,
but it is considered Alpha software and may contain bugs or change significantly between patch versions.
If you have questions about how to use the SDK, please reach out in the `#dev-chat` channel of the Discord.
Pull requests welcome!

# Uniswap V3 SDK

[![Unit Tests](https://github.com/Uniswap/uniswap-v3-sdk/workflows/Unit%20Tests/badge.svg)](https://github.com/Uniswap/uniswap-v3-sdk/actions?query=workflow%3A%22Unit+Tests%22)
[![Lint](https://github.com/Uniswap/uniswap-v3-sdk/workflows/Lint/badge.svg)](https://github.com/Uniswap/uniswap-v3-sdk/actions?query=workflow%3ALint)
[![npm version](https://img.shields.io/npm/v/@uniswap/v3-sdk/latest.svg)](https://www.npmjs.com/package/@uniswap/v3-sdk/v/latest)
[![npm bundle size (scoped version)](https://img.shields.io/bundlephobia/minzip/@uniswap/v3-sdk/latest.svg)](https://bundlephobia.com/result?p=@uniswap/v3-sdk@latest)

In-depth documentation on this SDK is available at [uniswap.org](https://docs.uniswap.org/).
npm package: @qs20199/vite-plugin-vue2
Description: Vite plugin for Vue2
Author: underfin
Latest version: 1.4.4-1

# vite-plugin-vue2 (fork)

This is the fork of the original vite-plugin-vue2, and remove `vue-template-compiler` from package.json.
So this plugin will use parent project's vue-template-compiler.
This change is for being compatible with old Vue version (like vue@2.5.x)

## Usage

- run `yarn add vite-plugin-vue2 --dev`
- add the plugin into `vite.config.js`
``` js
// vite.config.js
const { createVuePlugin } = require('vite-plugin-vue2')

module.exports = {
  plugins: [createVuePlugin(/*options*/)],
}
```

## [Options](https://github.com/underfin/vite-plugin-vue2/blob/master/src/index.ts#L26)

### `vueTemplateOptions`

Type: `Object`<br>
Default: `null`

The options for `@vue/component-compiler-utils`.

### `jsx`

Type: `Boolean`<br>
Default: `false`

The options for jsx transform.

### `jsxOptions`

Type: `Object`<br>

The options for `@vue/babel-preset-jsx`.

## Todo

- SSR Build
- Sourcemap
npm package: @qschqd/fund-cli
Description: > fund-cli 是一款在终端查看基金情况的 cli 工具
Latest version: 0.2.4

# fund-cli

> fund-cli 是一款在终端查看基金情况的 cli 工具

![demo](https://fund.fkman.vip/demo.gif)

## Install

```bash
$ npm install -g @qschqd/fund-cli
```

## CLI

```
$ fund

# 查看帮助信息
$ fund --help

```

## Keyboard operations

- 按`esc`键在`排行榜`，`自选`, `实时大盘`之间切换
- 在`排行榜`, `自选`列表页，按**j/k**选中某一行，在按**空格**键添加自选或者取消自选
- 在`排行榜`中，按**左右键**进行翻页
- 在`排行榜`中，使用**上下键**根据类型筛选列表
- 在`排行榜`中，使用`Tab`键(正向)，或者`Shift+Tab`(反向)根据公司筛选列表
- 在`自选`中，输入基金代码(支持逗号分割的多个基金代码)，**回车**添加自选
- 按`q`键或者`Ctrl + C`退出应用
npm package: @qsda82/mamtest.js
Description: JavaScript implementation of Masked Authentication Message v0 for IOTA
Author: Martyn Janes
Latest version: 1.0.9

# mam.js

> We strongly advise that you update your apps to use [IOTA Streams](https://github.com/iotaledger/streams) - this package is unlikely to be maintained.

Implementation of Masked Authentication Messaging v0 for IOTA in JavaScript, for use with IOTA network.

## Installing

Install this package using the following commands:

```shell
npm install @iota/mam.js
```

If you want to use this module in a browser `<script>` tag see the example Browser [./examples/browser/index.html](./examples/browser/index.html)

## Example Usage

```js
const { channelRoot, createChannel, createMessage, parseMessage, mamAttach, mamFetch, mamFetchAll } = require('@iota/mam.js');

// Setup the details for the channel.
const seed = 'ENTER A SEED';
const mode = 'restricted';
const sideKey = 'MYKEY';

// Create a new channel using the details
// You could also load the state from persistence.
const channelState = createChannel(seed, 2, mode, sideKey);

// Create a MAM message using the channel state.
// The returned mamMessage will contain address, root, nextRoot and payload.
// The channel state is also updated, so you should persist it if you want
// to add further messages in the same channel.
// The payload should be attached to the tangle.
const mamMessage = createMessage(channelState, 'MY9MESSAGE');

// Decode the message using the root and sideKey.
// The decodedMessage will contain nextRoot and message.
const decodedMessage = parseMessage(mamMessage.payload, mamMessage.root, sideKey);

// If we want to attach the message to the tangle we first compose the API
const node = "https://chrysalis-nodes.iota.org";
// And then attach the message, tagging it if required.
// Attaching will return the actual transactions attached to the tangle if you need them.
await mamAttach(node, mamMessage, "MY9MAM");

// We can also fetch a message given its root and channel details.
// The fetched data will contain the nextRoot and the message.
const fetched = await mamFetch(node, mamMessage.root, mode, sideKey)

// If you want to fetch multiple messages from a channel
// you need either its initial root (or start from another root).
const channelState = createChannel(seed, 2, mode, sideKey);
const initialRoot = channelRoot(channelState);
const chunkSize = 4;
const chunk = await mamFetchAll(node, initialRoot, mode, sideKey, chunkSize);

// If you want to fetch the next message from a list of channels
const channels = [
  { root: initialRoot1, mode: "restricted", sideKey: "MYKEY" },
  { root: initialRoot2, mode: "public" },
];
// One message for each channel will be retrieved
const fetched = await mamFetchCombined(node, channels);
```

## API Reference

See the API reference for the JavaScript implementation [here](./docs/api.md).

## Examples

To see the MAMv0 in action demonstration code using this library can be found in the [./examples/](./examples/README.md) folder.

## License

Apache License Version 2.0 - Copyright (c) 2021 IOTA Stiftung
npm package: @qsdoctor/quickstart-verify
Description: Scoped alias for quickstart-verify
Latest version: 0.0.20

![Quickstart Verified](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/quickstart-doctor/badges/refs/heads/main/verified.json)

# @qsdoctor/quickstart-verify

Scoped alias for [`quickstart-verify`](https://www.npmjs.com/package/quickstart-verify).

```bash
npx -y @qsdoctor/quickstart-verify
npm package: @qse/antd
Description: 基础组件库
Latest version: 2.4.0

# ComponentStory

基础组件库

[蓝湖地址](https://lanhuapp.com/web/#/item/project/detailDetach?tid=6aa91dbb-007a-49ac-a39e-54a5431eda3f&pid=b409433e-de29-47e7-8673-91aae142a598&project_id=b409433e-de29-47e7-8673-91aae142a598&image_id=7be50dfb-e431-438b-8b0e-ae3772cbf2c3&fromEditor=true)

## 发布流程

发布前提需要有公网发布权限，需要加入到 @qse 组织中。

- 修改`/docs/CHANGELOG.md`

### 发布文档

- `yarn | npm [run] deploy`

### 发布 npm 包

- 修改`package.json`文件的`version`
- `yarn | npm [run] release`

## 修改 theme.json

- 修改`theme.json`文件
- `yarn | npm [run] css:school`
npm package: @qse/antd-mobile-pro
Description: pro antd-mobile
Latest version: 1.2.15

# @qse/antd-mobile-pro

[![NPM version](https://img.shields.io/npm/v/@qse/antd-mobile-pro.svg?style=flat)](https://npmjs.org/package/@qse/antd-mobile-pro)
[![NPM downloads](http://img.shields.io/npm/dm/@qse/antd-mobile-pro.svg?style=flat)](https://npmjs.org/package/@qse/antd-mobile-pro)

pro antd-mobile

## Usage

TODO

## Options

TODO

## Development

```bash
# install dependencies
$ npm install

# develop library by docs demo
$ npm start

# build library source code
$ npm run build

# build library source code in watch mode
$ npm run build:watch

# build docs
$ npm run docs:build

# check your project for potential problems
$ npm run doctor
```

## LICENSE

MIT
npm package: @qse/approve-design
Description: edu common approve design
Author: kinoko
Latest version: 3.11.2

# @qse/approve-design

公共审批设计组件

## 安装

```sh
# 安装 更新
npm i @qse/approve-design@latest
```

## 使用

### `ApproveDesign` 的使用示例

```jsx
<ApproveDesign
  // 非必填
  onSave={() => {}}
  // 必填 选部门的modal
  renderSelectPerson={({ visible, onOk, onCancel, selectedRows }) => {
    return visible && <SimpleSelectPerson visible onOk={onOk} onCancel={onCancel} />
  }}
  // 必填 选人的modal
  renderSelectDept={({ visible, onOk, onCancel, selectedRows }) => {
    return visible && <SimpleSelectPerson visible onOk={onOk} onCancel={onCancel} />
  }}
  // 必填 主键id
  scheme_id="1266521377981071360"
/>
```

## API

| 属性               | 说明           | 类型                                |
| ------------------ | -------------- | ----------------------------------- |
| scheme_id          | 表单 id        | string                              |
| onSave             | 保存回调       | () => void                          |
| campusid           | 分校区 id      | string                              |
| pannable           | 可拖动画布     | boolean                             |
| renderSelectPerson | 渲染选人组件   | (params: RenderSelectProps) => void |
| renderSelectDept   | 渲染选部门组件 | (params: RenderSelectProps) => void |
npm package: @qse/common-utils
Description: react工程的工具类
Latest version: 1.3.47

# CommonUtils
react工程的工具类

## 安装使用
### 通过 npm 安装
common-utils 可以通过 npm 安装到项目中, 先变更注册为私库(`npm config set registry http://192.168.10.162:8081/nexus/content/groups/npm-all/`)

`npm install common-utils --save`

### 通过 CDN 引用

common-utils 可以通过 CDN 引入到项目中。
* 引入指定版本。用版本号替换 `[version]` 部分的内容即可：
https://xxx/utils[version].min.js

## config 工具使用

### 路由分工程使用
### api分工程使用

## 私库操作
### 1. npm变更为私库
npm config set registry http://192.168.10.162:8081/nexus/content/groups/npm-all/
淘宝的: npm config set registry https://registry.npm.taobao.org/
### 2. npm发布私库
(1) 配置.npmrc文件
email=you@example.com 
always-auth=true 
_auth=YWRtaW46YWRtaW4xMjM= 

_auth 的值
在任意目录下创建一个in.txt文件，里面直接写nexus访问的用户名：密码。
如：admin:admin123
不要有空行或空格等其他信息。
在in.txt目录下命令行执行
certutil /encode in.txt out.txt
执行后会在当前目录生成out.txt文件，内容是
—–BEGIN CERTIFICATE—–
YWRtaW46YWRtaW4xMjM=
—–END CERTIFICATE—–
第二行即为编码证书，把这串证书信息及你的邮箱信息添加到 .npmrc中：

作者：王淑君_8f58
链接：https://www.jianshu.com/p/7930b3e07ef5
来源：简书
简书著作权归作者所有，任何形式的转载都请联系作者获得授权并注明出处。

(2) 发布
npm publish --registry http://192.168.10.162:8081/nexus/content/repositories/npm-private/


## nowa参数
    [ '-s, --src <dir>', 'source directory, default to `src`', 'src' ],
    [ '-d, --dist <dir>', 'build directory, default to `dist`', 'dist' ],
    [ '-e  --entry <file>', 'app entry, default to `app/app.js`', 'app/app.js' ],
    [ '    --pages [pages]', 'add multi-page entries' ],
    [ '    --buildvars <json>', 'build varibles' ],
    [ '    --vars <json>', 'runtime varibles' ],
    [ '    --externals', 'webpack external varibles' ],
    [ '-o, --loose', 'use babel es2015 loose mode to transform codes' ],
    [ '-c, --keepconsole', 'keep `console.log`' ],
    [ '    --keepcss', 'keep non-extracted css in all builds'],
    [ '    --skipminify', 'skip minify js and css' ],
    [ '-p, --progress', 'show progress' ],
    [ '    --exportcss', 'export css files' ],
    [ '    --multiCompilers', 'generate multi-compilers' ],
    [ '    --minifyExtension <extension>', 'minify file extension' ],
    [ '    --includes', 'loader should include paths' ],
    [ '    --polyfill', 'use core-js to do polyfills' ],
    [ '    --mangle', 'mangle varibles when minify' ],
    [ '    --alias', 'path alias' ],
    [ '    --publicPath <path>', 'set publicPath in webpack'],
    [ '    --analyse [port]', 'analyse bundle size'],
npm package: @qse/edu-login
Description: 教育公共登录工具，根据环境自动判断登录方式
Latest version: 1.8.16

# 教育公共登录

教育公共登录工具，根据环境自动判断登录方式

支持`钉钉跳转浏览器、浏览器、钉钉、支付宝、微信`

## 安装

请在私库里下载安装

```shell
npm i @qse/edu-login
```

## 使用

```ts
import { eduLogin } from '@qse/edu-login'

async function main() {
  const config = await eduLogin()

  // 也可以选择开发环境登录方式，返回默认配置的登录人信息
  const config = await eduLogin(true)
}
```

## 登录方式

**以下说明按登录优先级排序**

- 链接上加 `webskip=1` 参数可以默认人员免校验登录，直接返回默认配置的登录人信息，
- 链接上加 `token=xxx` 参数,可实现登录信息交换，例如钉钉->浏览器，必须要有局校关系。**token 登录目前仅支持 https 协议**
- `iframe` 里 `parent` 有 `_user` 属性，直接返回父页面登录信息
- 微信登录、支付宝登录、钉钉登录
- 最后使用有权限校验的浏览器登录

## 特性

- 钉钉环境自动加载 `ddjsapi`
- 链接有 `vconsole=1` 参数时，加载 `VConsole` 模块
- 链接上加 `webskip=1` 参数可以默认人员免校验登录，再指定 `corpId` `uid` `campusid` 参数可以实现精确人员登录

## 测试

以下代码仅用来测试登录效果，实际只需调用`eduLogin()`即可

```tsx
import { eduLogin } from '@qse/edu-login'
import React, { useState, useEffect } from 'react'
export default function App() {
  const [config, setConfig] = useState()

  useEffect(() => {
    const fn = async () => {
      try {
        const res = await eduLogin()
        setConfig(JSON.stringify(res, null, 2))
      } catch (e) {
        console.error(e)
        setConfig(`${e.name}：${e.message}`)
      }
    }
    fn()
  }, [])

  const s = (search: string) => {
    window.location.search = search
  }

  const logout = () => {
    document.cookie = '__TTOKEN=;expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;'
    document.cookie =
      'JSESSIONID=;expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;'
  }

  return (
    <div>
      <button onClick={() => s('webskip=1')}>webskip默认人员登录</button>
      <button onClick={() => logout()}>清空登录信息</button>
      <h5>登录结果(其他登录方式需要在各自环境中测试)</h5>
      <pre>{config}</pre>
    </div>
  )
}
```

## 开发

```sh
# 开发
yarn start

# 发布npm
yarn release

# 部署文档
yarn deploy
```
npm package: @qse/edu-scripts
Description: 教育工程化基础框架
Author: Kinoko
Latest version: 2.1.1

# 教育工程化基础框架

svn://192.168.10.168/qsedu/code/00.common/02.front-end-component/06.edu-scripts/trunk

v2 版本底层的打包工具从 webpack 迁移至 rspack，速度快了3-10x

## 运行条件

nodejs 版本至少 18+

## 快速体验

执行下面的命令，快速建立一个最小的应用模版，支持 [教育集成 与 独立项目模式](/mode)

```shell
# npm 安装
npm create @qse/edu-app@latest

# 或者 yarn 安装
yarn create @qse/edu-app@latest

# 或者 pnpm 安装
pnpm create @qse/edu-app@latest
```

## 安装

如果你的项目还在使用 require.ensure，请使用 v1.15.0 版本

第一次使用这个框架，请看[老项目接入流程](/refactor)

```shell
npm i @qse/edu-scripts -D
```

## 用法

`edu-scripts` 可以使用缩写 `edu`，在手写命令行时方便使用

```shell
# 开发
edu-scripts start
# 开发指定端口 默认3000
edu-scripts start --port 5000

# 打包
edu-scripts build
# 打包并分析
edu-scripts build --analyze
# 打包并导出 html 文件
edu-scripts build --output-html

# 部署代码 校端
edu-scripts deploy -s
# 部署代码 局端
edu-scripts deploy -b
# 部署代码 公文端
edu-scripts deploy -d
# 部署代码 校端 + 局端 + 公文端
edu-scripts deploy -s -b -d

# 生成 override 文件
edu-scripts generator override
# 自动生成代码 可使用 npx edu-scripts generator page -h 查看具体效果
edu-scripts generator page --name <module-name>
# 生成 tailwind 配置
edu-scripts generator tailwind
# 生成 tsconfig 配置
edu-scripts generator ts

# SVN 提交 dist 到 dist 分支上
edu-scripts commit-dist
# SVN 提交 dist 到 dist 分支上，并且删除本地 dist
edu-scripts commit-dist --rm-local
```

## ENV 环境变量

| 参数    | 默认值 | 说明         |
| ------- | ------ | ------------ |
| PORT    | 3000   | 启动端口     |
| ANALYZE | false  | 开启打包分析 |

## 自定义配置

```shell
# 创建 edu-scripts.override.js 文件
npx edu-scripts g override
```

具体看[override](/override)

### 自定义 antd 样式

如果不需要，可以跳过

根目录生成 `theme.js` 或 `theme.json`

```js
export default {
  '@primary-color': '#99f',
}
```

```json
{
  "@primary-color": "#99f"
}
```
npm package: @qse/file-viewer
Description: ## 文件预览组件
Latest version: 1.0.0

# ComponentStory

## 文件预览组件  

## 发布流程

发布前提需要有公网发布权限，需要加入到 @qse 组织中。

- 修改`/docs/CHANGELOG.md`

### 发布文档

- `yarn | npm [run] deploy`

### 发布 npm 包

- 修改`package.json`文件的`version`
- `yarn | npm [run] release`
npm package: @qse/help-dialog
Description: 错误信息提示框
Latest version: 1.1.0

# @qse/help-dialog

错误信息提示框

## 接入

```ts
import { HelpError } from '@qse/help-dialog'

// 设置用户信息
HelpError.defaults.personid = ''
HelpError.defaults.fgsid = ''
HelpError.defaults.studentid = ''
HelpError.defaults.campusid = ''

async function query() {
  const res = await fetch('/api/xx/xx')

  // 当 code !== '0' 时，创建 HelpError
  if (res.err_code !== '0') throw new HelpError(res)

  return res
}
```

全局捕获 `HelpError`

```ts
import { showHelpDialog } from '@qse/help-dialog'

function handleError(error: Error) {
  showHelpDialog(error)
}
```

## 导出对象说明

### `HelpError`

#### 函数签名

```ts
export declare class HelpError extends Error {
  info: HelpErrorInfo
  static defaults: HelpErrorInfo
  static isHelpError(error: Error): error is HelpError
  get isValid(): boolean
  constructor(info: HelpErrorInfo)
}
```

标准错误类，继承与 `Error`，可以当 `Error` 使用

通过 `HelpError.defaults[xxx]` 设置默认参数

通过 `HelpError.isHelpError(error)` 可以判断 `error` 是否是 `HelpError`

通过 `error.isValid` 判断 `HelpError` 是否具有合法参数（用于获取帮助信息）

### `showHelpDialog`

#### 函数签名

```ts
function showHelpDialog(error: Error): Promise<void>
```

传递 `error` 即可，内部会判断是否是合格的 `HelpError`，不合格显示 `Dialog.alert({ content:error.message })`，合格显示带有帮助的 `dialog`
npm package: @qse/hooks
Description: 转发 ahooks 并且增加其他 hook
Latest version: 2.2.6

# hooks

转发 ahooks 并且增加其他 hook

## Getting Started

Install dependencies,

```bash
$ npm i
```

Start the dev server,

```bash
$ npm start
```

Build documentation,

```bash
$ npm run docs:build
```

Run test,

```bash
$ npm test
```

Build library via `father-build`,

```bash
$ npm run build
```
npm package: @qse/router-cache
Description: react-router-dom v6 cache
Latest version: 2.2.2

# router-cache

react-router-dom v6 cache

[文档](http://www.zhidianbao.cn:8088/qsxxwapdev/edu-router-cache/)

[在线 demo](http://www.zhidianbao.cn:8088/qsxxwapdev/edu-router-cache/example/)

## 安装

```shell
npm i @qse/router-cache
```

## 使用

```tsx | pure
import React from 'react'
import { withCache } from '@qse/router-cache'
import { useRoutes } from 'react-router-dom'

const List = withCache(() => <div>list</div>)
const Item = () => <div>item</div>

const APP_ROUTES = [
  {
    path: '/list',
    element: <List />,
    children: [{ path: ':id', element: <Item /> }],
  },
]

const App = () => useRoutes(APP_ROUTES)

export default App
```

## 原理

使用 [react-freeze](https://github.com/software-mansion/react-freeze) 实现组件冻结

### 冻结特性

- 组件无法感知冻结状态，因为在进入冻结状体时，所有 hooks 都停止工作了
- 冻结状态的组件不会执行 hooks，也不会刷新视图，dom
- 副作用函数还是会执行，例如 `window.addEventListener`

### 解冻特性

- 组件能够感知解冻状态，可以通过对比解冻前后 `Date.now()`
- 解冻后组件会使用最新的数据刷新一遍视图
npm package: @qse/scheme-render
Description: ## Getting Started
Author: IronKinoko
Latest version: 2.0.0

# @qse/scheme-render

## Getting Started

Install dependencies,

```bash
$ npm i
```

Start the dev server,

```bash
$ npm start
```

Build documentation,

```bash
$ npm run docs:build
```

Build library via `father-build`,

```bash
$ npm run build
```
npm package: @qse/ssh-sftp
Description: 教育代码部署工具
Author: Ironkinoko
Latest version: 1.4.0

# @qse/ssh-sftp

简单易用的 SFTP 工具，可以上传/忽略/删除远程的文件

## 安装

```bash
# 全局
npm i @qse/ssh-sftp -g

# 局部
npm i @qse/ssh-sftp -D
```

## 使用

1. 首先初始化一份配置文件

`npx ssh-sftp init`

2. 将生成的`.sftprc.json`文件里的信息填写完整

3. 添加脚本到 `package.json`

```json
{
  "scripts": {
    "deploy": "ssh-sftp"
  }
}
```

**建议在部署前使用`npx ssh-sftp ls`查看哪些文件会被上传或删除**

## 字段说明

### `.sftprc.json`

schema定义 http://www.zhidianbao.cn:8088/qsxxwapdev/edu-ssh-sftp/sftprc.schema.json

| 字段名           | 类型                                                 | 描述                                           | 默认值                 |
| ---------------- | ---------------------------------------------------- | ---------------------------------------------- | ---------------------- |
| localPath        | `string`                                             |                                                | `'dist'`               |
| remotePath       | `string`                                             |                                                | -                      |
| connectOptions   | `ConnectOptions`                                     | 登录信息                                       | -                      |
| ignore           | `string[]`                                           | 忽略`localPath`中的部分文件，`glob`类型        | `['**/*.LICENSE.txt']` |
| cleanRemoteFiles | `boolean \| string[]`                                | 清空远程文件夹，或按`glob`匹配清空远程部分文件 | `true`                 |
| securityLock     | `boolean`                                            | 安全锁，默认开启                               | `true`                 |
| keepAlive        | `boolean`                                            | 保持连接                                       | `false`                |
| noWarn           | `boolean`                                            | 禁止提示                                       | `false`                |
| skipPrompt       | `boolean`                                            | 跳过询问，全部同意                             | `false`                |
| preset           | `{context: string; folder?: string; server?:string}` | 预设登录项                                     | -                      |

`preset.context` 目前只有三个值 `"qsxxwapdev", "eduwebngv1", "qsxxadminv1"`

`preset.folder` 文件夹名称默认使用项目名称，也可自定义文件夹名称，支持多层文件夹，例如 `parent/child`

`preset.server` 部署服务器地址 `"19", "171"`

### `connectOptions`

| 字段名   | 类型     | 描述 |
| -------- | -------- | ---- |
| host     | `string` |      |
| port     | `number` |      |
| username | `string` |      |
| password | `string` |      |

### `securityLock`

**安全锁** 默认开启，会校验项目名称与远程地址是否匹配防止误传，关闭后忽略验证

## Commands

### `ssh-sftp init`

初始化生成配置文件 `.sftprc.json`

### `ssh-sftp ls`

列出所有需要上传/删除/忽略的文件

`ssh-sftp ls -u` 单独列出所有需要上传的文件

`ssh-sftp ls -d` 单独列出所有需要删除的文件

`ssh-sftp ls -i` 单独列出所有忽略的文件
npm package: @qshan/react-scripts
Description: Configuration and scripts for Create React App.
Latest version: 1.1.0

# react-scripts

This package includes scripts and configuration used by [Create React App](https://github.com/facebook/create-react-app).<br>
Please refer to its documentation:

* [Getting Started](https://github.com/facebook/create-react-app/blob/master/README.md#getting-started) – How to create a new app.
* [User Guide](https://github.com/facebook/create-react-app/blob/master/packages/react-scripts/template/README.md) – How to develop apps bootstrapped with Create React App.
npm package: @qshan/tuql
Description: _Pronounced: Too cool_
Author: Brad Daily
Latest version: 1.7.0

# tuql ![build status](https://github.com/bradleyboy/tuql/workflows/Node%20CI/badge.svg) [![Coverage Status](https://coveralls.io/repos/github/bradleyboy/tuql/badge.svg?branch=master)](https://coveralls.io/github/bradleyboy/tuql?branch=master)

_Pronounced: Too cool_

**tuql** is a simple tool that turns a sanely formatted sqlite database into a graphql endpoint. It tries to infer relationships between objects, currently supporting `belongsTo`, `hasMany` and `belongsToMany`. It also forms the basic mutations necessary to create, update, and delete objects, as well as assoicate many-to-many relationships.

## Installing

`npm install -g tuql`

## Using

`tuql --db path/to/database.sqlite`

You can also optionally set the port and enable graphiql:

`tuql --db path/to/database.sqlite --port 8888 --graphiql`

Or, you can use a sql file with statements to build up an in-memory database:

`tuql --infile path/to/db_dump.sql --graphiql`

If you'd like to print out the schema itself, use:

`tuql --db path/to/database.sqlite --schema`

Or send it to a file:

`tuql --db path/to/database.sqlite --schema > schema.graphql`

## How it works

Imagine your sqlite schema looked something like this:

| posts | users | categories | category_post |
| :-: | :-: | :-: | :-: |
| id      | id | id | category_id |
| user_id | username | title | post_id |
| title   | | |
| body    | | |

**tuql** will automatically define models and associations, so that graphql queries like this will work right out of the box:

```graphql
{
  posts {
    title
    body
    user {
      username
    }
    categories {
      title
    }
  }
}
```

**tuql** works one of two ways. It prefers to map your schema based on the foreign key information in your tables. If foreign keys are not present, **tuql** assumes the following about your schema in order to map relationships:

1. The primary key column is named `id` or `thing_id` or `thingId`, where `thing` is the singular form of the table name. Example: For a table named **posts**, the primary key column should be named `id`, `post_id` or `postId`.
2. Similarly, foreign key columns should be `thing_id` or `thingId`, where `thing` is the singular form of the associated table.
3. For many-to-many associations, the table name should be in the form of `foo_bar` or `bar_foo` (ordering is not important). The columns should follow the same pattern as #2 above.
npm package: @qsketch/graph
Description: JS Graph data structures, algorithms and utilities
Author: Harlen Alvarez
Latest version: 1.0.0

# graph

This library was generated with [Nx](https://nx.dev).

## Building

Run `nx build graph` to build the library.

## Running unit tests

Run `nx test graph` to execute the unit tests via [Vitest](https://vitest.dev/).
npm package: @qskye/await-until
Description: A function that waits until a condition is met.
Author: SkyeTheDoggy
Latest version: 1.0.5

# Await Until

A simple function that waits until a condition is met.

## Installation

```sh
npm i @qskye/await-until
```

## Usage

```js
const { awaitUntil } = require('@qskye/await-until');

const conditionFn = () => 5 > 0;

// Default usage
await awaitUntil(conditionFn);

// With custom delay and timeout
await awaitUntil(conditionFn, 100, 5000);
```