open-index/open-npm huggingface dataset:
npm package: @glodon-ecs/web-panel-sdk
Description: The ECSHub Panel sdk for ecs-cloud-base.
Latest version: 0.4.3

## ECS-HUB-PANEL-VUE2

- node >= 16

### 开发及编译

```shell
# nvm use 16 # important!

npm i # 安装依赖

npm run dev # 启动开发模式，可在“页面控制台”中查看输出

npm run build --lib # 打包sdk，更多配置参考 vite.config

npm run build -- --base /ecs-hub-panel/ # 打包前缀
# Mode参数会影响打包过程，导致打包之后QT加载失败，因此废弃！！！则，手动指定打包环境变量
```

### ECSHubPanel 类

- 构造参数

| 参数      | 类型   | 是否必须 | 默认 | 描述                                                                                            |
| --------- | ------ | -------- | ---- | ----------------------------------------------------------------------------------------------- |
| el        | String | 是       | -    | PanelView 渲染挂载节点 DOM，需要在用户 Web 页面中提供                                           |
| ecsClient | Object | 是       | -    | ECS-WEB-SDK 实例对象，更多参考 [ECS-WEB-SDK](https://www.npmjs.com/package/@glodon-ecs/web-sdk) |

### 示例

#### 安装依赖

```js
import ECSHubPanel from "@glodon-ecs/web-panel-sdk";

new ECSHubPanel({
  el: "#ecs-hub-panel",
  ecsClient: ecsClient,
});
```
npm package: @glodon-ecs/web-sdk
Description: The ECS js sdk for Web
Author: ECS@FE
Latest version: 0.10.0

## ECS-WEB-SDK

> ECS 云底座前端相关仓库

- node >= 16

### 开发及编译

```shell
# nvm use 16 # important!

npm i # 安装依赖

npm run dev # 启动开发模式，可在“页面控制台”中查看输出

npm run build # 打包sdk，更多配置参考 vite.config
```

### DuckWasmEngine 类

> DuckDB 封装类，用于 Web 环境交互，读取 ECS 数据。

### 方法

#### initialize: `(config)=> engineInstance`

> 初始化并返回 DuckWasmEngine 实例

| 参数 | 类型   | 是否必须 | 默认         | 描述                                                       |
| ---- | ------ | -------- | ------------ | ---------------------------------------------------------- |
| env  | String | -        | `production` | 不同环境依赖包不同，可选 `production 、test 、development` |

#### query: `(sql)=> Object{ data?, error? }`

> 使用 SQL 查询并返回结果，成功返回 `data`，错误返回 `error`

| 参数 | 类型   | 是否必须 | 默认 | 描述 |
| ---- | ------ | -------- | ---- | ---- |
| sql  | String | 是       | -    | -    |

#### prepareQuery: `(sql, params)=> Object{ data?, error? }`

> 使用 SQL 查询并返回结果，成功返回 `data`，错误返回 `error`

| 参数   | 类型   | 是否必须 | 默认 | 描述     |
| ------ | ------ | -------- | ---- | -------- |
| sql    | String | 是       | -    | -        |
| params | Arrary | 是       | []   | 查询参数 |

#### dispose: `()=> void`

> 删除 DuckDB 实例

#### resetDBInstance: `()=> void`

> 重置 DuckDB 实例

#### getDBInstance: `()=> db`

> 返回 DuckDB 实例

### 示例

#### 安装依赖

```js
import { DuckWasmEngine } from "@glodon-ecs/web-sdk@latest";

const init = async () => {
  const initConfig = { env: 'production' };
  const duckdbEngine = await DuckWasmEngine.initialize(initConfig);
};
...

// 通过 SQL 查询数据
const { data, error } = await duckdbEngine.query( "select ident from FC_MESH" );

// prepareQuery
const params = [1];
const { data, error } = await duckdbEngine.prepareQuery( "select ident from FC_MESH where ident.id = ? " , params);
```

### 注意

> 由于 S3 对于 URL 上特殊符号签名的校验规则与华为不匹配，如等号(=)导致签名失败，因此文件修改`@duckdb/duckdb-wasm/dist/duckdb-browser-eh.worker.js`；去除对 `params.url` 的 uriEncode

- [源码](https://github.com/duckdb/duckdb-wasm/blob/main/packages/duckdb-wasm/src/utils/s3_helper.ts#L113)

```js
export function createS3Headers(params: S3Params, payloadParams : S3PayloadParams | null = null) : Map<string, string> {
...
- let canonicalRequest = params.method + "\n" + uriEncode(params.url) + "\n" + params.query;
+ let canonicalRequest = params.method + "\n" + params.url + "\n" + params.query;
...
}
```

- 混淆代码

```js
38390 let o = t.method + "\n" + t.url + "\n" + t.query;
```

> 修改 `query` 参数的签名编码

- [源码](https://github.com/duckdb/duckdb-wasm/blob/main/packages/duckdb-wasm/src/utils/s3_helper.ts#L50)

```js
export function getS3Params (config : S3Config | undefined, url: string, method : string) : S3Params {
...

+ path = path.split('?');

return {
-    url: path,
+    url: path[0],
-    query: "",
+    query: path[1] || "",
...
}
```

### 关注的问题

- [OPFS 支持](https://github.com/duckdb/duckdb-wasm/pull/1490) √ 已支持问题还比较多!
- [读取缓存错误](https://github.com/duckdb/duckdb-wasm/issues/1658) √ 已修复