From 31bd3fb1ccdf0e1a7458a7a97693d3d6789d4f14 Mon Sep 17 00:00:00 2001 From: yini-chen Date: Wed, 27 Dec 2023 10:22:06 +0800 Subject: [PATCH 1/2] fix:logo --- package.json | 2 +- resources/aliyun_logo_128x128.png | Bin 0 -> 3559 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 resources/aliyun_logo_128x128.png diff --git a/package.json b/package.json index 19fc50e..4270197 100644 --- a/package.json +++ b/package.json @@ -245,7 +245,7 @@ "urllib": "^2.36.1", "xml2js": "^0.4.23" }, - "icon": "resources/alibabacloud.png", + "icon": "resources/aliyun_logo_128x128.png", "repository": { "url": "git@github.com:aliyun/alibabacloud-api-vscode-toolkit.git", "type": "git" diff --git a/resources/aliyun_logo_128x128.png b/resources/aliyun_logo_128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..1d1101c33f8341847133eb84a36806a650dc91e1 GIT binary patch literal 3559 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 Date: Wed, 27 Dec 2023 14:13:51 +0800 Subject: [PATCH 2/2] fix: code --- README.en-US.md | 6 +- README.md | 15 ++- .../APIPage/APIDocument/ApiParamsDoc.tsx | 69 +++++++------- package.json | 36 ++----- src/commands.ts | 94 +++++++++---------- 5 files changed, 105 insertions(+), 115 deletions(-) diff --git a/README.en-US.md b/README.en-US.md index af197ee..b2238c8 100644 --- a/README.en-US.md +++ b/README.en-US.md @@ -1,5 +1,9 @@ # Alibaba Cloud API Toolkit +[![Version](https://img.shields.io/visual-studio-marketplace/v/alibabacloud-openapi.vscode-alicloud-api)](https://marketplace.visualstudio.com/items?itemName=alibabacloud-openapi.vscode-alicloud-api) +[![Installs](https://img.shields.io/visual-studio-marketplace/i/alibabacloud-openapi.vscode-alicloud-api)](https://marketplace.visualstudio.com/items?itemName=alibabacloud-openapi.vscode-alicloud-api) +[![Ratings](https://img.shields.io/visual-studio-marketplace/r/alibabacloud-openapi.vscode-alicloud-api)](https://marketplace.visualstudio.com/items?itemName=alibabacloud-openapi.vscode-alicloud-api) + The Alibaba Cloud API Toolkit for VSCode makes it easier to access Alibaba Cloud services. ## Features @@ -16,7 +20,7 @@ Click to debug, you can link to Aliyun OpenAPI portal for online API trial. ## Extension UI Guide -![VSCode Extension Guide](https://img.alicdn.com/imgextra/i2/O1CN01VJNeqk1NKrbDtTotP_!!6000000001552-0-tps-2310-1524.jpg) +![VSCode Extension Guide](https://img.alicdn.com/imgextra/i1/O1CN01iYMtwm27arlqDq7V3_!!6000000007814-0-tps-2328-1540.jpg) * Product Searching `ctrl+cmd+k` diff --git a/README.md b/README.md index bff10bc..12a714d 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,19 @@ # Alibaba Cloud API Toolkit -The Alibaba Cloud API Toolkit for VSCode makes it easier to access Alibaba Cloud services. +[![Version](https://img.shields.io/visual-studio-marketplace/v/alibabacloud-openapi.vscode-alicloud-api)](https://marketplace.visualstudio.com/items?itemName=alibabacloud-openapi.vscode-alicloud-api) +[![Installs](https://img.shields.io/visual-studio-marketplace/i/alibabacloud-openapi.vscode-alicloud-api)](https://marketplace.visualstudio.com/items?itemName=alibabacloud-openapi.vscode-alicloud-api) +[![Ratings](https://img.shields.io/visual-studio-marketplace/r/alibabacloud-openapi.vscode-alicloud-api)](https://marketplace.visualstudio.com/items?itemName=alibabacloud-openapi.vscode-alicloud-api) +![beta](https://img.shields.io/badge/beta-version) -简体中文 | [English]() +Alibaba Cloud API Toolkit 是一个轻量化的阿里云 API 工具,支持在 VS Code 中快速查阅阿里云产品的 API. -## Features +简体中文 | [English](./README.en-US.md) -* **阿里云产品订阅:** 插件提供了一键订阅阿里云产品的功能,你可以通过 `ctrl+cmd+o` 搜索和订阅阿里云产品。 +## 功能 -* **API 搜索:** 你可以通过 `ctrl+cmd+p` 搜索并查看已订阅的 API 文档。 +* **阿里云产品订阅:** 插件提供了一键订阅阿里云产品的功能,你可以通过 `ctrl+cmd+k` 搜索和订阅阿里云产品。 + +* **API 搜索:** 你可以通过 `ctrl+cmd+l` 搜索并查看已订阅的 API 文档。 * **API 文档预览:** 点击 API 可以打开一个新的标签页,并显示对应的 API 文档,包括描述、请求参数、响应参数和错误码。在文档中点击调试按钮,可以链接到阿里云 OpenAPI 门户进行在线 API 试用。 diff --git a/media/src/components/APIPage/APIDocument/ApiParamsDoc.tsx b/media/src/components/APIPage/APIDocument/ApiParamsDoc.tsx index 762148d..aec1fb0 100644 --- a/media/src/components/APIPage/APIDocument/ApiParamsDoc.tsx +++ b/media/src/components/APIPage/APIDocument/ApiParamsDoc.tsx @@ -8,6 +8,7 @@ import { SemixJsonSchema } from "semix-core"; import * as PontSpec from "pontx-spec"; import { getRefSchema } from "../../utils"; import { InnerSchemaTable } from "semix-schema-table"; +import { Card } from "@alicloud/console-components"; export class PontxParamsDocProps { parameters?: PontSpec.Parameter[]; @@ -45,38 +46,42 @@ export const ApiParamsDoc: React.FC = (props) => { return React.useMemo(() => { return (
- { - return ( -
{ - onExpand(node); - }} - > - -
- ); - }} - renderEmpty={() => { - return ( - - - 无参数定义 - - - ); - }} - schema={schema} - /> + {props.parameters?.length ? ( + { + return ( +
{ + onExpand(node); + }} + > + +
+ ); + }} + renderEmpty={() => { + return ( + + + 无参数定义 + + + ); + }} + schema={schema} + /> + ) : ( +
调用该 OpenAPI 无需参数。
+ )}
); }, [schema, propSchemaCnt, props.schemas]); diff --git a/package.json b/package.json index 4270197..4c13d18 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,12 @@ { "name": "vscode-alicloud-api", "displayName": "Alibaba Cloud API Toolkit", - "description": "", + "description": "The Alibaba Cloud API Toolkit for VSCode makes it easier to access Alibaba Cloud services.", + "author": "Alibaba Cloud SDK Team", "version": "0.0.1", "private": true, - "publisher": "AlibabaCloud", - "license": "MIT", + "publisher": "alibabacloud-openapi", + "license": "Apache-2.0", "engines": { "vscode": "^1.47.0" }, @@ -34,16 +35,6 @@ "title": "生成本地代码", "icon": "$(debug-start)" }, - { - "command": "alicloud.api.generateMocks", - "title": "生成Mocks代码", - "icon": "$(issues)" - }, - { - "command": "alicloud.api.regenerateAPIMocks", - "title": "重新生成 API Mocks代码", - "icon": "$(issues)" - }, { "command": "alicloud.api.restart", "title": "重启 Alibaba Cloud API Toolkit", @@ -72,11 +63,6 @@ "command": "alicloud.api.removeSubscriptions", "icon": "$(notebook-delete-cell)", "title": "取消订阅" - }, - { - "command": "alicloud.api.viewMocks", - "icon": "$(go-to-file)", - "title": "查看Mocks数据" } ], "keybindings": [ @@ -151,19 +137,9 @@ { "command": "alicloud.api.openDocument", "group": "navigation" - }, - { - "command": "alicloud.api.viewMocks", - "group": "navigation" - } - ], - "editor/title": [ - { - "command": "alicloud.api.regenerateAPIMocks", - "when": "resourcePath =~ /mocks/ && resourceFilename =~ /.ts$/ && resourceFilename != 'index.ts'", - "group": "navigation" } ], + "editor/title": [], "view/title": [ { "command": "alicloud.api.restart", @@ -209,7 +185,7 @@ "build:media": "cd media && npm run build:ncc", "reinstall": "rimraf node_modules && npm i", "afterinstall": "cd ../../ && lerna bootstrap", - "build:ncc": "rimraf dist && ncc build ./src/extension.ts -o dist -m --license licenses.txt && mv dist/index.js dist/extension.js && mv dist/license.txt ./LICENSE.txt", + "build:ncc": "rimraf dist && ncc build ./src/extension.ts -o dist -m --license licenses.txt && mv dist/index.js dist/extension.js", "vscode:prepublish": "npm run build:ncc", "esbuild-base": "esbuild ./src/extension.ts --bundle --outfile=dist/extension.js --external:vscode --format=cjs --platform=node --minify", "esbuild": "npm run esbuild-base -- --sourcemap", diff --git a/src/commands.ts b/src/commands.ts index 5d75304..c1e021a 100644 --- a/src/commands.ts +++ b/src/commands.ts @@ -136,39 +136,39 @@ export class AlicloudApiCommands { }); }); - vscode.commands.registerCommand("alicloud.api.regenerateAPIMocks", async (event) => { - const filePaths: string[] = (event.path || "")?.split("/"); - const lastMocksIndex = filePaths.lastIndexOf("mocks"); - const names = filePaths.slice(lastMocksIndex + 1); - names.push(names.pop().replace(".ts", "")); - - if (service.pontManager.localPontSpecs?.[0]?.name) { - showProgress("重新生成 API Mocks", service.pontManager, async (log) => { - log("代码生成中..."); - await wait(100); - - let specName, modName, apiName; - if (names.length === 3) { - [specName, modName, apiName] = names; - } else { - [specName, apiName] = names; - } - const mocksPlugin = await service.pontManager.innerManagerConfig.plugins.mocks?.instance; - const mocksOptions = await service.pontManager.innerManagerConfig.plugins.mocks?.options; - const mocksCode = await mocksPlugin.getAPIMockCode( - service.pontManager, - mocksOptions, - apiName, - modName, - specName, - ); - fs.writeFileSync(event.path, mocksCode, "utf-8"); - - log("API Mocks 生成成功!"); - vscode.window.showInformationMessage("API Mocks生成成功!"); - }); - } - }); + // vscode.commands.registerCommand("alicloud.api.regenerateAPIMocks", async (event) => { + // const filePaths: string[] = (event.path || "")?.split("/"); + // const lastMocksIndex = filePaths.lastIndexOf("mocks"); + // const names = filePaths.slice(lastMocksIndex + 1); + // names.push(names.pop().replace(".ts", "")); + + // if (service.pontManager.localPontSpecs?.[0]?.name) { + // showProgress("重新生成 API Mocks", service.pontManager, async (log) => { + // log("代码生成中..."); + // await wait(100); + + // let specName, modName, apiName; + // if (names.length === 3) { + // [specName, modName, apiName] = names; + // } else { + // [specName, apiName] = names; + // } + // const mocksPlugin = await service.pontManager.innerManagerConfig.plugins.mocks?.instance; + // const mocksOptions = await service.pontManager.innerManagerConfig.plugins.mocks?.options; + // const mocksCode = await mocksPlugin.getAPIMockCode( + // service.pontManager, + // mocksOptions, + // apiName, + // modName, + // specName, + // ); + // fs.writeFileSync(event.path, mocksCode, "utf-8"); + + // log("API Mocks 生成成功!"); + // vscode.window.showInformationMessage("API Mocks生成成功!"); + // }); + // } + // }); vscode.commands.registerCommand("alicloud.api.fetchRemote", (config) => { const pontManager = service.pontManager; @@ -245,20 +245,20 @@ export class AlicloudApiCommands { spec: spec?.apis?.[`${result.apiKey}`], }); }); - vscode.commands.registerTextEditorCommand("alicloud.api.viewMocks", async (editor, edit) => { - const isSingleSpec = PontManager.checkIsSingleSpec(service.pontManager); - const result = (await findInterface(editor, !isSingleSpec, service.pontManager)) || ({} as any); - const spec = PontManager.getSpec(service.pontManager, result.specName); - - if (!result.apiName) { - vscode.window.showErrorMessage("未找到该 OpenAPI"); - return; - } - - const namespace = [result.specName, result.modName, result.apiName].filter((id) => id).join("/"); - const mocksFilePath = path.join(service.pontManager.innerManagerConfig.outDir, "mocks", namespace + ".ts"); - vscode.commands.executeCommand("vscode.open", vscode.Uri.file(mocksFilePath)); - }); + // vscode.commands.registerTextEditorCommand("alicloud.api.viewMocks", async (editor, edit) => { + // const isSingleSpec = PontManager.checkIsSingleSpec(service.pontManager); + // const result = (await findInterface(editor, !isSingleSpec, service.pontManager)) || ({} as any); + // const spec = PontManager.getSpec(service.pontManager, result.specName); + + // if (!result.apiName) { + // vscode.window.showErrorMessage("未找到该 OpenAPI"); + // return; + // } + + // const namespace = [result.specName, result.modName, result.apiName].filter((id) => id).join("/"); + // const mocksFilePath = path.join(service.pontManager.innerManagerConfig.outDir, "mocks", namespace + ".ts"); + // vscode.commands.executeCommand("vscode.open", vscode.Uri.file(mocksFilePath)); + // }); // vscode.commands.registerCommand('alicloud.api.refreshPontExplorer', () => { // service.treeDataProvider.refresh();