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 19fc50e..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", @@ -245,7 +221,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 0000000..1d1101c Binary files /dev/null and b/resources/aliyun_logo_128x128.png differ 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();