# jcode-tools

> ## 简介

Latest version **0.11.3** (published 2023-04-26) · MIT license · 0 weekly downloads

## Install

```sh
npm install jcode-tools
pnpm add jcode-tools
yarn add jcode-tools
bun add jcode-tools
```

## Health

**Score 20/100 (F)** — status: abandoned.

Positive: esm support; no vulnerabilities.

Warnings: low downloads; no types; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.11.3 |
| Published | 2023-04-26 |
| First published | 2022-04-09 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | ESM + CommonJS |
| Dependencies | 0 |
| Unpacked size | 223.9 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Maintainers | spritejs |

## Links

- npm: https://www.npmjs.com/package/jcode-tools
- npm.io page: https://npm.io/package/jcode-tools

## Recent versions

- 0.11.3 (latest) — 2023-04-26
- 0.11.0 — 2022-07-31
- 0.10.6 — 2022-07-26
- 0.10.5 — 2022-07-25
- 0.10.4 — 2022-07-25
- 0.10.3 — 2022-07-25
- 0.10.2 — 2022-07-23
- 0.10.1 — 2022-07-21
- 0.10.0 — 2022-07-21
- 0.9.5 — 2022-07-20
- 0.9.4 — 2022-07-20
- 0.9.3 — 2022-07-20
- 0.9.2 — 2022-07-20
- 0.9.1 — 2022-07-19
- 0.9.0 — 2022-07-19
- … 28 more at https://npm.io/package/jcode-tools/versions

## README

# JCode Tools

## 简介

这是为[码上掘金](https://code.juejin.cn/)提供的JS工具库，用它来增强码上掘金的能力和弥补它的不足。

## API

### 1. JCode.getCustomCode

在[自定义Script模式](https://juejin.cn/post/7118935790192721957)下，获得代码文本。

```js
const code = await JCode.getCustomCode(); 
```

### 2. JCode.logger

将控制台内容输出到页面上。

```js
const logger = JCode.logger(container);
logger.log('Hello %cworld', 'color:red');
```

### 3. JCode.CodeXClient

运行服务端代码。

支持同步和异步模式。

#### 同步模式：[在线demo](https://code.juejin.cn/pen/7122291068397322248)

```html
<script type="module">
import {CodeXClient, logger} from 'https://cdn.jsdelivr.net/npm/jcode-tools/dist/jcode-tools.esm.js';
(async () => {
  window.console = logger(app);
  console.log('提交代码，请稍候');

  try {
    const code = new CodeXClient(); // 默认会从CustomCode中获取
    const result = await code.runCode({input: ['1 1']});
    if(result.error) {
      console.error(result.error);
    }
    console.log(result.output);
  } catch(ex) {
    console.error(ex);
  }
})();
</script>
```

#### 异步模式：[在线demo](https://code.juejin.cn/pen/7121977600011927589)

```html
<script type="module">
import {CodeXClient, logger} from 'https://cdn.jsdelivr.net/npm/jcode-tools/dist/jcode-tools.esm.js';
(async () => {
  window.console = logger(app);
  console.log('提交代码，请稍候');

  try {
    const code = new CodeXClient();
    code.onmessage = (msg) => {
      console.log(msg);
    }
    code.onerror = (msg) => {
      console.error(msg);
    }

    const result = await Promise.all(
      [code.runCode()
      , code.input('1 1')
      , code.input('2 3')
      , code.input('')]);
    if(result[0].error) {
      console.error(result[0].error);
    }
  } catch(ex) {
    console.error(ex);
  }
})();
</script>
```

### 4. KV存储服务

提供简单的KV存储，可以存储一些数据到服务器。

```js
import {Storage} from 'https://cdn.jsdelivr.net/npm/jcode-tools/dist/jcode-tools.esm.js';

const storage = new Storage();
const successful = await storage.set('juejin', {id: 'value'});
if(successful) {
  const data = await storage.get('juejin');
  console.log(data); // {id: 'value'}
  await storage.del('juejin');
} else {
  console.error(storage.result.error);
}
```

## 使用方式

1. 可以直接通过 CDN 引入 `https://cdn.jsdelivr.net/npm/jcode-tools` 以及对应的 css `https://cdn.jsdelivr.net/npm/jcode-tools/dist/jcode-tools.css`;

<img src="assets/jcode-tools.jpg" width="480">

<img src="assets/jcode-tools-css.jpg" width="480">

2. 可以通过 ESModule 引入：

```js
import {CodeXClient, logger} from 'https://cdn.jsdelivr.net/npm/jcode-tools/dist/jcode-tools.esm.js';
```

## 如何贡献代码

Clone 本项目，`npm install` 安装依赖，然后运行 `npm run dev`。

设置 `http://localhost:8000/dist/jcode-tools.js` 到码上掘金项目的依赖资源中即可调试运行。

---
_Source: https://npm.io/package/jcode-tools · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
