From d88a064fc666d84e60c1723395388aa9ce9a17fd Mon Sep 17 00:00:00 2001 From: "iVampireSP.com" Date: Sat, 2 Dec 2023 23:51:22 +0800 Subject: [PATCH] test --- README.md | 7 + api/swagger.json | 317 +++++++++++++++ openapitools.json | 7 + package.json | 2 + src/components/HelloWorld.vue | 4 +- src/openapi/.gitignore | 4 + src/openapi/.npmignore | 1 + src/openapi/.openapi-generator-ignore | 23 ++ src/openapi/.openapi-generator/FILES | 9 + src/openapi/.openapi-generator/VERSION | 1 + src/openapi/api.ts | 536 +++++++++++++++++++++++++ src/openapi/base.ts | 86 ++++ src/openapi/common.ts | 150 +++++++ src/openapi/configuration.ts | 110 +++++ src/openapi/git_push.sh | 57 +++ src/openapi/index.ts | 18 + yarn.lock | 62 +++ 17 files changed, 1393 insertions(+), 1 deletion(-) create mode 100644 api/swagger.json create mode 100644 openapitools.json create mode 100644 src/openapi/.gitignore create mode 100644 src/openapi/.npmignore create mode 100644 src/openapi/.openapi-generator-ignore create mode 100644 src/openapi/.openapi-generator/FILES create mode 100644 src/openapi/.openapi-generator/VERSION create mode 100644 src/openapi/api.ts create mode 100644 src/openapi/base.ts create mode 100644 src/openapi/common.ts create mode 100644 src/openapi/configuration.ts create mode 100644 src/openapi/git_push.sh create mode 100644 src/openapi/index.ts diff --git a/README.md b/README.md index 0088588..ae5d143 100644 --- a/README.md +++ b/README.md @@ -67,3 +67,10 @@ bun run lint ### Customize configuration See [Configuration Reference](https://vitejs.dev/config/). + + +### 根据 OpenAPI 生成代码 + +```bash +./node_modules/.bin/openapi-generator-cli generate -i api/swagger.json -g typescript-axios -o src/openapi +``` \ No newline at end of file diff --git a/api/swagger.json b/api/swagger.json new file mode 100644 index 0000000..285d060 --- /dev/null +++ b/api/swagger.json @@ -0,0 +1,317 @@ +{ + "swagger": "2.0", + "info": { + "description": "This is a sample server celler server.", + "title": "Swagger Example API", + "contact": {}, + "version": "1.0" + }, + "paths": { + "/document/{Id}": { + "delete": { + "security": [ + { + "BearerToken": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Documents" + ], + "summary": "删除文档", + "parameters": [ + { + "type": "string", + "description": "文档 ID", + "name": "Id", + "in": "path", + "required": true + }, + { + "type": "integer", + "description": "资料库 ID", + "name": "LibraryId", + "in": "query", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/model.Document" + } + } + } + } + }, + "/library/:LibraryId/documents": { + "get": { + "security": [ + { + "BearerToken": [] + } + ], + "description": "获取当前账号的文档列表", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Documents" + ], + "summary": "获取文档列表", + "parameters": [ + { + "type": "integer", + "description": "页码", + "name": "Page", + "in": "query", + "required": true + }, + { + "type": "integer", + "description": "资料库 ID", + "name": "LibraryId", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/pkg.ResponsePaginated" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/pkg.ResponseError" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/pkg.ResponseError" + } + } + } + } + }, + "/library/{LibraryId}/document/{DocumentId}": { + "get": { + "security": [ + { + "BearerToken": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Documents" + ], + "summary": "显示文档", + "parameters": [ + { + "type": "string", + "description": "资料库 ID", + "name": "LibraryId", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "文档 ID", + "name": "DocumentId", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/model.Document" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/pkg.ResponseError" + } + }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/pkg.ResponseError" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/pkg.ResponseError" + } + } + } + } + }, + "/library/{LibraryId}/documents": { + "post": { + "security": [ + { + "BearerToken": [] + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "Documents" + ], + "summary": "新建文档", + "parameters": [ + { + "type": "string", + "description": "标题", + "name": "LibraryId", + "in": "path", + "required": true + }, + { + "type": "string", + "description": "标题", + "name": "Title", + "in": "query", + "required": true + }, + { + "type": "string", + "description": "描述", + "name": "Description", + "in": "query" + }, + { + "type": "string", + "description": "文档内容", + "name": "Content", + "in": "query" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/model.Document" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/pkg.ResponseError" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/pkg.ResponseError" + } + } + } + } + } + }, + "definitions": { + "gorm.DeletedAt": { + "type": "object", + "properties": { + "time": { + "type": "string" + }, + "valid": { + "description": "Valid is true if Time is not NULL", + "type": "boolean" + } + } + }, + "model.Document": { + "type": "object", + "properties": { + "chunked": { + "type": "boolean" + }, + "content": { + "type": "string" + }, + "createdAt": { + "type": "string" + }, + "deletedAt": { + "$ref": "#/definitions/gorm.DeletedAt" + }, + "description": { + "type": "string" + }, + "id": { + "type": "integer" + }, + "libraryId": { + "type": "integer" + }, + "title": { + "type": "string" + }, + "updatedAt": { + "type": "string" + }, + "userId": { + "type": "integer" + } + } + }, + "pkg.ResponseError": { + "type": "object", + "properties": { + "message": { + "type": "string" + } + } + }, + "pkg.ResponsePaginated": { + "type": "object", + "properties": { + "Data": {}, + "Limit": { + "type": "integer" + }, + "Page": { + "type": "integer" + }, + "Total": { + "type": "integer" + } + } + } + }, + "securityDefinitions": { + "BearerToken": { + "type": "apiKey", + "name": "Authorization", + "in": "header" + } + } +} \ No newline at end of file diff --git a/openapitools.json b/openapitools.json new file mode 100644 index 0000000..15fef60 --- /dev/null +++ b/openapitools.json @@ -0,0 +1,7 @@ +{ + "$schema": "./node_modules/@openapitools/openapi-generator-cli/config.schema.json", + "spaces": 2, + "generator-cli": { + "version": "7.1.0" + } +} diff --git a/package.json b/package.json index 269f0ed..fe64a19 100644 --- a/package.json +++ b/package.json @@ -9,10 +9,12 @@ "lint": "eslint . --fix --ignore-path .gitignore" }, "dependencies": { + "axios": "^1.6.2", "core-js": "^3.29.0", "pinia": "^2.0.0", "roboto-fontface": "*", "vue": "^3.2.0", + "vue-axios": "^3.5.2", "vue-router": "^4.0.0", "vuetify": "^3.0.0" }, diff --git a/src/components/HelloWorld.vue b/src/components/HelloWorld.vue index ae41b67..8f712b8 100644 --- a/src/components/HelloWorld.vue +++ b/src/components/HelloWorld.vue @@ -7,5 +7,7 @@ diff --git a/src/openapi/.gitignore b/src/openapi/.gitignore new file mode 100644 index 0000000..149b576 --- /dev/null +++ b/src/openapi/.gitignore @@ -0,0 +1,4 @@ +wwwroot/*.js +node_modules +typings +dist diff --git a/src/openapi/.npmignore b/src/openapi/.npmignore new file mode 100644 index 0000000..999d88d --- /dev/null +++ b/src/openapi/.npmignore @@ -0,0 +1 @@ +# empty npmignore to ensure all required files (e.g., in the dist folder) are published by npm \ No newline at end of file diff --git a/src/openapi/.openapi-generator-ignore b/src/openapi/.openapi-generator-ignore new file mode 100644 index 0000000..7484ee5 --- /dev/null +++ b/src/openapi/.openapi-generator-ignore @@ -0,0 +1,23 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/src/openapi/.openapi-generator/FILES b/src/openapi/.openapi-generator/FILES new file mode 100644 index 0000000..16b445e --- /dev/null +++ b/src/openapi/.openapi-generator/FILES @@ -0,0 +1,9 @@ +.gitignore +.npmignore +.openapi-generator-ignore +api.ts +base.ts +common.ts +configuration.ts +git_push.sh +index.ts diff --git a/src/openapi/.openapi-generator/VERSION b/src/openapi/.openapi-generator/VERSION new file mode 100644 index 0000000..3769235 --- /dev/null +++ b/src/openapi/.openapi-generator/VERSION @@ -0,0 +1 @@ +7.1.0 \ No newline at end of file diff --git a/src/openapi/api.ts b/src/openapi/api.ts new file mode 100644 index 0000000..dab997b --- /dev/null +++ b/src/openapi/api.ts @@ -0,0 +1,536 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Swagger Example API + * This is a sample server celler server. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import type { Configuration } from './configuration'; +import type { AxiosPromise, AxiosInstance, AxiosRequestConfig } from 'axios'; +import globalAxios from 'axios'; +// Some imports not used depending on template conditions +// @ts-ignore +import { DUMMY_BASE_URL, assertParamExists, setApiKeyToObject, setBasicAuthToObject, setBearerAuthToObject, setOAuthToObject, setSearchParams, serializeDataIfNeeded, toPathString, createRequestFunction } from './common'; +import type { RequestArgs } from './base'; +// @ts-ignore +import { BASE_PATH, COLLECTION_FORMATS, BaseAPI, RequiredError, operationServerMap } from './base'; + +/** + * + * @export + * @interface GormDeletedAt + */ +export interface GormDeletedAt { + /** + * + * @type {string} + * @memberof GormDeletedAt + */ + 'time'?: string; + /** + * Valid is true if Time is not NULL + * @type {boolean} + * @memberof GormDeletedAt + */ + 'valid'?: boolean; +} +/** + * + * @export + * @interface ModelDocument + */ +export interface ModelDocument { + /** + * + * @type {boolean} + * @memberof ModelDocument + */ + 'chunked'?: boolean; + /** + * + * @type {string} + * @memberof ModelDocument + */ + 'content'?: string; + /** + * + * @type {string} + * @memberof ModelDocument + */ + 'createdAt'?: string; + /** + * + * @type {GormDeletedAt} + * @memberof ModelDocument + */ + 'deletedAt'?: GormDeletedAt; + /** + * + * @type {string} + * @memberof ModelDocument + */ + 'description'?: string; + /** + * + * @type {number} + * @memberof ModelDocument + */ + 'id'?: number; + /** + * + * @type {number} + * @memberof ModelDocument + */ + 'libraryId'?: number; + /** + * + * @type {string} + * @memberof ModelDocument + */ + 'title'?: string; + /** + * + * @type {string} + * @memberof ModelDocument + */ + 'updatedAt'?: string; + /** + * + * @type {number} + * @memberof ModelDocument + */ + 'userId'?: number; +} +/** + * + * @export + * @interface PkgResponseError + */ +export interface PkgResponseError { + /** + * + * @type {string} + * @memberof PkgResponseError + */ + 'message'?: string; +} +/** + * + * @export + * @interface PkgResponsePaginated + */ +export interface PkgResponsePaginated { + /** + * + * @type {object} + * @memberof PkgResponsePaginated + */ + 'Data'?: object; + /** + * + * @type {number} + * @memberof PkgResponsePaginated + */ + 'Limit'?: number; + /** + * + * @type {number} + * @memberof PkgResponsePaginated + */ + 'Page'?: number; + /** + * + * @type {number} + * @memberof PkgResponsePaginated + */ + 'Total'?: number; +} + +/** + * DocumentsApi - axios parameter creator + * @export + */ +export const DocumentsApiAxiosParamCreator = function (configuration?: Configuration) { + return { + /** + * + * @summary 删除文档 + * @param {string} id 文档 ID + * @param {number} libraryId 资料库 ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + documentIdDelete: async (id: string, libraryId: number, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('documentIdDelete', 'id', id) + // verify required parameter 'libraryId' is not null or undefined + assertParamExists('documentIdDelete', 'libraryId', libraryId) + const localVarPath = `/document/{Id}` + .replace(`{${"Id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication BearerToken required + await setApiKeyToObject(localVarHeaderParameter, "Authorization", configuration) + + if (libraryId !== undefined) { + localVarQueryParameter['LibraryId'] = libraryId; + } + + + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @summary 显示文档 + * @param {string} libraryId 资料库 ID + * @param {string} documentId 文档 ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + libraryLibraryIdDocumentDocumentIdGet: async (libraryId: string, documentId: string, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'libraryId' is not null or undefined + assertParamExists('libraryLibraryIdDocumentDocumentIdGet', 'libraryId', libraryId) + // verify required parameter 'documentId' is not null or undefined + assertParamExists('libraryLibraryIdDocumentDocumentIdGet', 'documentId', documentId) + const localVarPath = `/library/{LibraryId}/document/{DocumentId}` + .replace(`{${"LibraryId"}}`, encodeURIComponent(String(libraryId))) + .replace(`{${"DocumentId"}}`, encodeURIComponent(String(documentId))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication BearerToken required + await setApiKeyToObject(localVarHeaderParameter, "Authorization", configuration) + + + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * 获取当前账号的文档列表 + * @summary 获取文档列表 + * @param {number} page 页码 + * @param {number} libraryId 资料库 ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + libraryLibraryIdDocumentsGet: async (page: number, libraryId: number, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'page' is not null or undefined + assertParamExists('libraryLibraryIdDocumentsGet', 'page', page) + // verify required parameter 'libraryId' is not null or undefined + assertParamExists('libraryLibraryIdDocumentsGet', 'libraryId', libraryId) + const localVarPath = `/library/:LibraryId/documents` + .replace(`{${"LibraryId"}}`, encodeURIComponent(String(libraryId))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication BearerToken required + await setApiKeyToObject(localVarHeaderParameter, "Authorization", configuration) + + if (page !== undefined) { + localVarQueryParameter['Page'] = page; + } + + + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + /** + * + * @summary 新建文档 + * @param {string} libraryId 标题 + * @param {string} title 标题 + * @param {string} [description] 描述 + * @param {string} [content] 文档内容 + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + libraryLibraryIdDocumentsPost: async (libraryId: string, title: string, description?: string, content?: string, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'libraryId' is not null or undefined + assertParamExists('libraryLibraryIdDocumentsPost', 'libraryId', libraryId) + // verify required parameter 'title' is not null or undefined + assertParamExists('libraryLibraryIdDocumentsPost', 'title', title) + const localVarPath = `/library/{LibraryId}/documents` + .replace(`{${"LibraryId"}}`, encodeURIComponent(String(libraryId))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + + const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication BearerToken required + await setApiKeyToObject(localVarHeaderParameter, "Authorization", configuration) + + if (title !== undefined) { + localVarQueryParameter['Title'] = title; + } + + if (description !== undefined) { + localVarQueryParameter['Description'] = description; + } + + if (content !== undefined) { + localVarQueryParameter['Content'] = content; + } + + + + setSearchParams(localVarUrlObj, localVarQueryParameter); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: toPathString(localVarUrlObj), + options: localVarRequestOptions, + }; + }, + } +}; + +/** + * DocumentsApi - functional programming interface + * @export + */ +export const DocumentsApiFp = function(configuration?: Configuration) { + const localVarAxiosParamCreator = DocumentsApiAxiosParamCreator(configuration) + return { + /** + * + * @summary 删除文档 + * @param {string} id 文档 ID + * @param {number} libraryId 资料库 ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async documentIdDelete(id: string, libraryId: number, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.documentIdDelete(id, libraryId, options); + const index = configuration?.serverIndex ?? 0; + const operationBasePath = operationServerMap['DocumentsApi.documentIdDelete']?.[index]?.url; + return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, operationBasePath || basePath); + }, + /** + * + * @summary 显示文档 + * @param {string} libraryId 资料库 ID + * @param {string} documentId 文档 ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async libraryLibraryIdDocumentDocumentIdGet(libraryId: string, documentId: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.libraryLibraryIdDocumentDocumentIdGet(libraryId, documentId, options); + const index = configuration?.serverIndex ?? 0; + const operationBasePath = operationServerMap['DocumentsApi.libraryLibraryIdDocumentDocumentIdGet']?.[index]?.url; + return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, operationBasePath || basePath); + }, + /** + * 获取当前账号的文档列表 + * @summary 获取文档列表 + * @param {number} page 页码 + * @param {number} libraryId 资料库 ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async libraryLibraryIdDocumentsGet(page: number, libraryId: number, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.libraryLibraryIdDocumentsGet(page, libraryId, options); + const index = configuration?.serverIndex ?? 0; + const operationBasePath = operationServerMap['DocumentsApi.libraryLibraryIdDocumentsGet']?.[index]?.url; + return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, operationBasePath || basePath); + }, + /** + * + * @summary 新建文档 + * @param {string} libraryId 标题 + * @param {string} title 标题 + * @param {string} [description] 描述 + * @param {string} [content] 文档内容 + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async libraryLibraryIdDocumentsPost(libraryId: string, title: string, description?: string, content?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.libraryLibraryIdDocumentsPost(libraryId, title, description, content, options); + const index = configuration?.serverIndex ?? 0; + const operationBasePath = operationServerMap['DocumentsApi.libraryLibraryIdDocumentsPost']?.[index]?.url; + return (axios, basePath) => createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration)(axios, operationBasePath || basePath); + }, + } +}; + +/** + * DocumentsApi - factory interface + * @export + */ +export const DocumentsApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { + const localVarFp = DocumentsApiFp(configuration) + return { + /** + * + * @summary 删除文档 + * @param {string} id 文档 ID + * @param {number} libraryId 资料库 ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + documentIdDelete(id: string, libraryId: number, options?: any): AxiosPromise { + return localVarFp.documentIdDelete(id, libraryId, options).then((request) => request(axios, basePath)); + }, + /** + * + * @summary 显示文档 + * @param {string} libraryId 资料库 ID + * @param {string} documentId 文档 ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + libraryLibraryIdDocumentDocumentIdGet(libraryId: string, documentId: string, options?: any): AxiosPromise { + return localVarFp.libraryLibraryIdDocumentDocumentIdGet(libraryId, documentId, options).then((request) => request(axios, basePath)); + }, + /** + * 获取当前账号的文档列表 + * @summary 获取文档列表 + * @param {number} page 页码 + * @param {number} libraryId 资料库 ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + libraryLibraryIdDocumentsGet(page: number, libraryId: number, options?: any): AxiosPromise { + return localVarFp.libraryLibraryIdDocumentsGet(page, libraryId, options).then((request) => request(axios, basePath)); + }, + /** + * + * @summary 新建文档 + * @param {string} libraryId 标题 + * @param {string} title 标题 + * @param {string} [description] 描述 + * @param {string} [content] 文档内容 + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + libraryLibraryIdDocumentsPost(libraryId: string, title: string, description?: string, content?: string, options?: any): AxiosPromise { + return localVarFp.libraryLibraryIdDocumentsPost(libraryId, title, description, content, options).then((request) => request(axios, basePath)); + }, + }; +}; + +/** + * DocumentsApi - object-oriented interface + * @export + * @class DocumentsApi + * @extends {BaseAPI} + */ +export class DocumentsApi extends BaseAPI { + /** + * + * @summary 删除文档 + * @param {string} id 文档 ID + * @param {number} libraryId 资料库 ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof DocumentsApi + */ + public documentIdDelete(id: string, libraryId: number, options?: AxiosRequestConfig) { + return DocumentsApiFp(this.configuration).documentIdDelete(id, libraryId, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @summary 显示文档 + * @param {string} libraryId 资料库 ID + * @param {string} documentId 文档 ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof DocumentsApi + */ + public libraryLibraryIdDocumentDocumentIdGet(libraryId: string, documentId: string, options?: AxiosRequestConfig) { + return DocumentsApiFp(this.configuration).libraryLibraryIdDocumentDocumentIdGet(libraryId, documentId, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * 获取当前账号的文档列表 + * @summary 获取文档列表 + * @param {number} page 页码 + * @param {number} libraryId 资料库 ID + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof DocumentsApi + */ + public libraryLibraryIdDocumentsGet(page: number, libraryId: number, options?: AxiosRequestConfig) { + return DocumentsApiFp(this.configuration).libraryLibraryIdDocumentsGet(page, libraryId, options).then((request) => request(this.axios, this.basePath)); + } + + /** + * + * @summary 新建文档 + * @param {string} libraryId 标题 + * @param {string} title 标题 + * @param {string} [description] 描述 + * @param {string} [content] 文档内容 + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof DocumentsApi + */ + public libraryLibraryIdDocumentsPost(libraryId: string, title: string, description?: string, content?: string, options?: AxiosRequestConfig) { + return DocumentsApiFp(this.configuration).libraryLibraryIdDocumentsPost(libraryId, title, description, content, options).then((request) => request(this.axios, this.basePath)); + } +} + + + diff --git a/src/openapi/base.ts b/src/openapi/base.ts new file mode 100644 index 0000000..c23cc89 --- /dev/null +++ b/src/openapi/base.ts @@ -0,0 +1,86 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Swagger Example API + * This is a sample server celler server. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import type { Configuration } from './configuration'; +// Some imports not used depending on template conditions +// @ts-ignore +import type { AxiosPromise, AxiosInstance, AxiosRequestConfig } from 'axios'; +import globalAxios from 'axios'; + +export const BASE_PATH = "http://localhost".replace(/\/+$/, ""); + +/** + * + * @export + */ +export const COLLECTION_FORMATS = { + csv: ",", + ssv: " ", + tsv: "\t", + pipes: "|", +}; + +/** + * + * @export + * @interface RequestArgs + */ +export interface RequestArgs { + url: string; + options: AxiosRequestConfig; +} + +/** + * + * @export + * @class BaseAPI + */ +export class BaseAPI { + protected configuration: Configuration | undefined; + + constructor(configuration?: Configuration, protected basePath: string = BASE_PATH, protected axios: AxiosInstance = globalAxios) { + if (configuration) { + this.configuration = configuration; + this.basePath = configuration.basePath ?? basePath; + } + } +}; + +/** + * + * @export + * @class RequiredError + * @extends {Error} + */ +export class RequiredError extends Error { + constructor(public field: string, msg?: string) { + super(msg); + this.name = "RequiredError" + } +} + +interface ServerMap { + [key: string]: { + url: string, + description: string, + }[]; +} + +/** + * + * @export + */ +export const operationServerMap: ServerMap = { +} diff --git a/src/openapi/common.ts b/src/openapi/common.ts new file mode 100644 index 0000000..e1f18c8 --- /dev/null +++ b/src/openapi/common.ts @@ -0,0 +1,150 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Swagger Example API + * This is a sample server celler server. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import type { Configuration } from "./configuration"; +import type { RequestArgs } from "./base"; +import type { AxiosInstance, AxiosResponse } from 'axios'; +import { RequiredError } from "./base"; + +/** + * + * @export + */ +export const DUMMY_BASE_URL = 'https://example.com' + +/** + * + * @throws {RequiredError} + * @export + */ +export const assertParamExists = function (functionName: string, paramName: string, paramValue: unknown) { + if (paramValue === null || paramValue === undefined) { + throw new RequiredError(paramName, `Required parameter ${paramName} was null or undefined when calling ${functionName}.`); + } +} + +/** + * + * @export + */ +export const setApiKeyToObject = async function (object: any, keyParamName: string, configuration?: Configuration) { + if (configuration && configuration.apiKey) { + const localVarApiKeyValue = typeof configuration.apiKey === 'function' + ? await configuration.apiKey(keyParamName) + : await configuration.apiKey; + object[keyParamName] = localVarApiKeyValue; + } +} + +/** + * + * @export + */ +export const setBasicAuthToObject = function (object: any, configuration?: Configuration) { + if (configuration && (configuration.username || configuration.password)) { + object["auth"] = { username: configuration.username, password: configuration.password }; + } +} + +/** + * + * @export + */ +export const setBearerAuthToObject = async function (object: any, configuration?: Configuration) { + if (configuration && configuration.accessToken) { + const accessToken = typeof configuration.accessToken === 'function' + ? await configuration.accessToken() + : await configuration.accessToken; + object["Authorization"] = "Bearer " + accessToken; + } +} + +/** + * + * @export + */ +export const setOAuthToObject = async function (object: any, name: string, scopes: string[], configuration?: Configuration) { + if (configuration && configuration.accessToken) { + const localVarAccessTokenValue = typeof configuration.accessToken === 'function' + ? await configuration.accessToken(name, scopes) + : await configuration.accessToken; + object["Authorization"] = "Bearer " + localVarAccessTokenValue; + } +} + +function setFlattenedQueryParams(urlSearchParams: URLSearchParams, parameter: any, key: string = ""): void { + if (parameter == null) return; + if (typeof parameter === "object") { + if (Array.isArray(parameter)) { + (parameter as any[]).forEach(item => setFlattenedQueryParams(urlSearchParams, item, key)); + } + else { + Object.keys(parameter).forEach(currentKey => + setFlattenedQueryParams(urlSearchParams, parameter[currentKey], `${key}${key !== '' ? '.' : ''}${currentKey}`) + ); + } + } + else { + if (urlSearchParams.has(key)) { + urlSearchParams.append(key, parameter); + } + else { + urlSearchParams.set(key, parameter); + } + } +} + +/** + * + * @export + */ +export const setSearchParams = function (url: URL, ...objects: any[]) { + const searchParams = new URLSearchParams(url.search); + setFlattenedQueryParams(searchParams, objects); + url.search = searchParams.toString(); +} + +/** + * + * @export + */ +export const serializeDataIfNeeded = function (value: any, requestOptions: any, configuration?: Configuration) { + const nonString = typeof value !== 'string'; + const needsSerialization = nonString && configuration && configuration.isJsonMime + ? configuration.isJsonMime(requestOptions.headers['Content-Type']) + : nonString; + return needsSerialization + ? JSON.stringify(value !== undefined ? value : {}) + : (value || ""); +} + +/** + * + * @export + */ +export const toPathString = function (url: URL) { + return url.pathname + url.search + url.hash +} + +/** + * + * @export + */ +export const createRequestFunction = function (axiosArgs: RequestArgs, globalAxios: AxiosInstance, BASE_PATH: string, configuration?: Configuration) { + return >(axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => { + const axiosRequestArgs = {...axiosArgs.options, url: (configuration?.basePath || axios.defaults.baseURL || basePath) + axiosArgs.url}; + return axios.request(axiosRequestArgs); + }; +} diff --git a/src/openapi/configuration.ts b/src/openapi/configuration.ts new file mode 100644 index 0000000..2a2332d --- /dev/null +++ b/src/openapi/configuration.ts @@ -0,0 +1,110 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Swagger Example API + * This is a sample server celler server. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +export interface ConfigurationParameters { + apiKey?: string | Promise | ((name: string) => string) | ((name: string) => Promise); + username?: string; + password?: string; + accessToken?: string | Promise | ((name?: string, scopes?: string[]) => string) | ((name?: string, scopes?: string[]) => Promise); + basePath?: string; + serverIndex?: number; + baseOptions?: any; + formDataCtor?: new () => any; +} + +export class Configuration { + /** + * parameter for apiKey security + * @param name security name + * @memberof Configuration + */ + apiKey?: string | Promise | ((name: string) => string) | ((name: string) => Promise); + /** + * parameter for basic security + * + * @type {string} + * @memberof Configuration + */ + username?: string; + /** + * parameter for basic security + * + * @type {string} + * @memberof Configuration + */ + password?: string; + /** + * parameter for oauth2 security + * @param name security name + * @param scopes oauth2 scope + * @memberof Configuration + */ + accessToken?: string | Promise | ((name?: string, scopes?: string[]) => string) | ((name?: string, scopes?: string[]) => Promise); + /** + * override base path + * + * @type {string} + * @memberof Configuration + */ + basePath?: string; + /** + * override server index + * + * @type {number} + * @memberof Configuration + */ + serverIndex?: number; + /** + * base options for axios calls + * + * @type {any} + * @memberof Configuration + */ + baseOptions?: any; + /** + * The FormData constructor that will be used to create multipart form data + * requests. You can inject this here so that execution environments that + * do not support the FormData class can still run the generated client. + * + * @type {new () => FormData} + */ + formDataCtor?: new () => any; + + constructor(param: ConfigurationParameters = {}) { + this.apiKey = param.apiKey; + this.username = param.username; + this.password = param.password; + this.accessToken = param.accessToken; + this.basePath = param.basePath; + this.serverIndex = param.serverIndex; + this.baseOptions = param.baseOptions; + this.formDataCtor = param.formDataCtor; + } + + /** + * Check if the given MIME is a JSON MIME. + * JSON MIME examples: + * application/json + * application/json; charset=UTF8 + * APPLICATION/JSON + * application/vnd.company+json + * @param mime - MIME (Multipurpose Internet Mail Extensions) + * @return True if the given MIME is JSON, false otherwise. + */ + public isJsonMime(mime: string): boolean { + const jsonMime: RegExp = new RegExp('^(application\/json|[^;/ \t]+\/[^;/ \t]+[+]json)[ \t]*(;.*)?$', 'i'); + return mime !== null && (jsonMime.test(mime) || mime.toLowerCase() === 'application/json-patch+json'); + } +} diff --git a/src/openapi/git_push.sh b/src/openapi/git_push.sh new file mode 100644 index 0000000..f53a75d --- /dev/null +++ b/src/openapi/git_push.sh @@ -0,0 +1,57 @@ +#!/bin/sh +# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/ +# +# Usage example: /bin/sh ./git_push.sh wing328 openapi-petstore-perl "minor update" "gitlab.com" + +git_user_id=$1 +git_repo_id=$2 +release_note=$3 +git_host=$4 + +if [ "$git_host" = "" ]; then + git_host="github.com" + echo "[INFO] No command line input provided. Set \$git_host to $git_host" +fi + +if [ "$git_user_id" = "" ]; then + git_user_id="GIT_USER_ID" + echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id" +fi + +if [ "$git_repo_id" = "" ]; then + git_repo_id="GIT_REPO_ID" + echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id" +fi + +if [ "$release_note" = "" ]; then + release_note="Minor update" + echo "[INFO] No command line input provided. Set \$release_note to $release_note" +fi + +# Initialize the local directory as a Git repository +git init + +# Adds the files in the local repository and stages them for commit. +git add . + +# Commits the tracked changes and prepares them to be pushed to a remote repository. +git commit -m "$release_note" + +# Sets the new remote +git_remote=$(git remote) +if [ "$git_remote" = "" ]; then # git remote not defined + + if [ "$GIT_TOKEN" = "" ]; then + echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment." + git remote add origin https://${git_host}/${git_user_id}/${git_repo_id}.git + else + git remote add origin https://${git_user_id}:"${GIT_TOKEN}"@${git_host}/${git_user_id}/${git_repo_id}.git + fi + +fi + +git pull origin master + +# Pushes (Forces) the changes in the local repository up to the remote repository +echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git" +git push origin master 2>&1 | grep -v 'To https' diff --git a/src/openapi/index.ts b/src/openapi/index.ts new file mode 100644 index 0000000..457ac3a --- /dev/null +++ b/src/openapi/index.ts @@ -0,0 +1,18 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Swagger Example API + * This is a sample server celler server. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +export * from "./api"; +export * from "./configuration"; + diff --git a/yarn.lock b/yarn.lock index 25de839..ffbe559 100644 --- a/yarn.lock +++ b/yarn.lock @@ -533,6 +533,20 @@ array-union@^2.1.0: resolved "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +axios@^1.6.2: + version "1.6.2" + resolved "https://registry.npmmirror.com/axios/-/axios-1.6.2.tgz#de67d42c755b571d3e698df1b6504cde9b0ee9f2" + integrity sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A== + dependencies: + follow-redirects "^1.15.0" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -610,6 +624,13 @@ color-name@~1.1.4: resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + commondir@^1.0.1: version "1.0.1" resolved "https://registry.npmmirror.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -666,6 +687,11 @@ deep-is@^0.1.3: resolved "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -920,6 +946,20 @@ flatted@^3.2.9: resolved "https://registry.npmmirror.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== +follow-redirects@^1.15.0: + version "1.15.3" + resolved "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.3.tgz#fe2f3ef2690afce7e82ed0b44db08165b207123a" + integrity sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q== + +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -1155,6 +1195,18 @@ micromatch@^4.0.4: braces "^3.0.2" picomatch "^2.3.1" +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" @@ -1337,6 +1389,11 @@ prelude-ls@^1.2.1: resolved "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + punycode@^2.1.0: version "2.3.1" resolved "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" @@ -1558,6 +1615,11 @@ vite@^4.2.0: optionalDependencies: fsevents "~2.3.2" +vue-axios@^3.5.2: + version "3.5.2" + resolved "https://registry.npmmirror.com/vue-axios/-/vue-axios-3.5.2.tgz#28637524cca550a9e97197e85a41930ec63604d5" + integrity sha512-GP+dct7UlAWkl1qoP3ppw0z6jcSua5/IrMpjB5O8bh089iIiJ+hdxPYH2NPEpajlYgkW5EVMP95ttXWdas1O0g== + vue-demi@>=0.14.5: version "0.14.6" resolved "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.6.tgz#dc706582851dc1cdc17a0054f4fec2eb6df74c92"