From 81736c17d371b0b8829d36832851d00a92c68a8b Mon Sep 17 00:00:00 2001 From: suhaotian Date: Tue, 20 Feb 2024 14:09:52 +1100 Subject: [PATCH] feat: bump deps and add `httpLib` in tsdk.config.js --- CHANGELOG.mdx | 7 ++ packages/tsdk-server-adapters/package.json | 2 +- .../fe-sdk-template/config/tsdk.config.js | 2 + packages/tsdk/package.json | 4 +- packages/tsdk/src/config.ts | 2 + packages/tsdk/src/sync-api.ts | 12 ++- pnpm-lock.yaml | 74 +++++++++++++++++-- website/package.json | 4 +- .../pages/docs/guide/tsdk.config.en-US.mdx | 15 +++- .../pages/docs/guide/tsdk.config.zh-CN.mdx | 9 +++ 10 files changed, 115 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.mdx b/CHANGELOG.mdx index 6227ad4..c19ada1 100644 --- a/CHANGELOG.mdx +++ b/CHANGELOG.mdx @@ -2,6 +2,13 @@ This is the log of notable changes to the `tsdk` that are developer-facing. + +### 0.1.6 2024/2/21 + +- Feat: add **httpLib** config in `tsdk.config.js`, More detail https://tsdk.dev/docs/guide/tsdk.config +- Chore: bump webpack version +- Chore: add `XiorRequestConfig` in generate code + ### 0.1.5 2024/2/20 - Feat: add fetch support (use xior, similar axios API: https://www.npmjs.com/package/xior) diff --git a/packages/tsdk-server-adapters/package.json b/packages/tsdk-server-adapters/package.json index 460c14d..a4d28c7 100644 --- a/packages/tsdk-server-adapters/package.json +++ b/packages/tsdk-server-adapters/package.json @@ -1,6 +1,6 @@ { "name": "tsdk-server-adapters", - "version": "0.1.5", + "version": "0.1.6", "main": "lib/index.js", "repository": "tsdk-monorepo/tsdk", "bugs": "https://github.com/tsdk-monorepo/tsdk/issues", diff --git a/packages/tsdk/fe-sdk-template/config/tsdk.config.js b/packages/tsdk/fe-sdk-template/config/tsdk.config.js index 8a03fa5..e760286 100644 --- a/packages/tsdk/fe-sdk-template/config/tsdk.config.js +++ b/packages/tsdk/fe-sdk-template/config/tsdk.config.js @@ -10,4 +10,6 @@ module.exports = { shareExt: 'shared', sharedDirs: ['./src/shared'], removeFields: [], + /** 'xior' | 'axios'. More: https://tsdk.dev/docs/guide/tsdk.config#httplib */ + // httpLib: 'xior', }; diff --git a/packages/tsdk/package.json b/packages/tsdk/package.json index b561b77..21f6819 100644 --- a/packages/tsdk/package.json +++ b/packages/tsdk/package.json @@ -1,6 +1,6 @@ { "name": "tsdk", - "version": "0.1.5", + "version": "0.1.6", "description": "Type-safe API development and code share tool for TypeScript projects.", "repository": "tsdk-monorepo/tsdk", "bugs": "https://github.com/tsdk-monorepo/tsdk/issues", @@ -57,7 +57,7 @@ "@configs/ts-config": "workspace:*", "@types/fs-extra": "^11.0.4", "@types/webpack-node-externals": "^3.0.0", - "webpack": "^5.90.1", + "webpack": "^5.90.3", "webpack-node-externals": "^3.0.0" }, "eslintConfig": { diff --git a/packages/tsdk/src/config.ts b/packages/tsdk/src/config.ts index 389271d..e2fa17b 100644 --- a/packages/tsdk/src/config.ts +++ b/packages/tsdk/src/config.ts @@ -14,6 +14,8 @@ export interface TSDKConfig { shareExt?: string; sharedDirs: string[]; monorepoRoot?: string; + /** default: axios */ + httpLib?: 'xior' | 'axios'; dataHookLib?: 'SWR' | 'ReactQuery'; /** custom dependencies */ dependencies?: { [key: string]: string }; diff --git a/packages/tsdk/src/sync-api.ts b/packages/tsdk/src/sync-api.ts index 7e1052a..207715b 100644 --- a/packages/tsdk/src/sync-api.ts +++ b/packages/tsdk/src/sync-api.ts @@ -35,7 +35,11 @@ export async function syncAPI() { ? '' : `import useSWR, { SWRConfiguration } from "swr"; import useSWRMutation, { SWRMutationConfiguration } from "swr/mutation"; - import { AxiosRequestConfig } from "axios"; + ${ + config.httpLib !== 'xior' + ? `import type { AxiosRequestConfig } from "axios";` + : `import type { XiorRequestConfig as AxiosRequestConfig } from "xior";` + } ` } ${ @@ -48,7 +52,11 @@ export async function syncAPI() { UndefinedInitialDataOptions, UseMutationOptions, } from "@tanstack/react-query"; - import { AxiosRequestConfig } from "axios"; + ${ + config.httpLib !== 'xior' + ? `import type { AxiosRequestConfig } from "axios";` + : `import type { XiorRequestConfig as AxiosRequestConfig } from "xior";` + } ` } `; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a777bc6..252a231 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -403,8 +403,8 @@ importers: specifier: ^3.0.0 version: 3.0.0 webpack: - specifier: ^5.90.1 - version: 5.90.1 + specifier: ^5.90.3 + version: 5.90.3 webpack-node-externals: specifier: ^3.0.0 version: 3.0.0 @@ -480,7 +480,7 @@ importers: specifier: 4.2.3 version: 4.2.3(next@13.0.6) next-videos: - specifier: ^1.4.1 + specifier: 1.4.1 version: 1.4.1(webpack@4.47.0) nextra: specifier: 2.13.2 @@ -495,7 +495,7 @@ importers: specifier: ^18.2.0 version: 18.2.0(react@18.2.0) react-wrap-balancer: - specifier: ^1.1.0 + specifier: 1.1.0 version: 1.1.0(react@18.2.0) devDependencies: '@types/node': @@ -4451,7 +4451,7 @@ packages: resolution: {integrity: sha512-Z3ELJiH0aZjxkoymT2nrGSmCF/CYjiqC0bpv4/DWy9h7e6gP4B2qmKZFHJFermeF0SYURbSw0puddQl9dMMV0w==} dependencies: '@types/node': 18.13.0 - webpack: 5.90.1 + webpack: 5.90.3 transitivePeerDependencies: - '@swc/core' - esbuild @@ -15715,6 +15715,30 @@ packages: webpack: 5.90.1 dev: true + /terser-webpack-plugin@5.3.10(webpack@5.90.3): + resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + dependencies: + '@jridgewell/trace-mapping': 0.3.22 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.1 + terser: 5.27.0 + webpack: 5.90.3 + dev: true + /terser@4.8.1: resolution: {integrity: sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==} engines: {node: '>=6.0.0'} @@ -17051,6 +17075,46 @@ packages: - uglify-js dev: true + /webpack@5.90.3: + resolution: {integrity: sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + dependencies: + '@types/eslint-scope': 3.7.4 + '@types/estree': 1.0.5 + '@webassemblyjs/ast': 1.11.5 + '@webassemblyjs/wasm-edit': 1.11.5 + '@webassemblyjs/wasm-parser': 1.11.5 + acorn: 8.10.0 + acorn-import-assertions: 1.9.0(acorn@8.10.0) + browserslist: 4.22.1 + chrome-trace-event: 1.0.3 + enhanced-resolve: 5.15.0 + es-module-lexer: 1.2.1 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.10(webpack@5.90.3) + watchpack: 2.4.0 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + dev: true + /whatwg-encoding@3.1.1: resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} engines: {node: '>=18'} diff --git a/website/package.json b/website/package.json index 9b09e8c..0d147c6 100644 --- a/website/package.json +++ b/website/package.json @@ -25,8 +25,8 @@ "nextra-theme-docs": "2.13.2", "react": "^18.2.0", "react-dom": "^18.2.0", - "next-videos": "^1.4.1", - "react-wrap-balancer": "^1.1.0", + "next-videos": "1.4.1", + "react-wrap-balancer": "1.1.0", "next-sitemap": "4.2.3" }, "devDependencies": { diff --git a/website/pages/docs/guide/tsdk.config.en-US.mdx b/website/pages/docs/guide/tsdk.config.en-US.mdx index 783f405..003cbbe 100644 --- a/website/pages/docs/guide/tsdk.config.en-US.mdx +++ b/website/pages/docs/guide/tsdk.config.en-US.mdx @@ -11,6 +11,7 @@ module.exports = { entityLibName: 'typeorm', entityExt: 'entity', apiconfExt: 'apiconf', + httpLib: 'axios', shareExt: 'shared', sharedDirs: ['./src/shared'], removeFields: [], @@ -25,9 +26,10 @@ module.exports = { - `entityLibName` - ORM library, current support `TypeORM`, `kysely` 和 `DrizzleORM` - `entityExt` - ORM model extension name, default is `*.entity.ts` - `apiconfExt` - API config extension name, default is `*.apiconf.ts` -- `shareExt` - shared file extension name, default is `*.shared.ts` -- `sharedDirs` - shared dir, default is `["./src/shared"]` +- `shareExt` - shared file extension name, default is `*.shared.ts` +- `sharedDirs` - shared dir, default is `["./src/shared"]` - `monorepoRoot` - monorepo root folder, default is `./` +- `httpLib` - `xior` | `axios`, default is `axios`; `xior` use fetch, and have similiar API with axios - `dataHookLib` - `SWR` | `ReactQuery`,Generate `SWR` or `React Query` hooks;dependencies version: `swr@^2.2.5`; `@tanstack/react-query@^5.10.0` - `dependencies` - custom dependencies,will combine to `fe-sdk/package.json ` dependencies. This can custom dependencies and override fe-sdk's default version - `devDependencies` - custom devDependencies. @@ -64,6 +66,12 @@ module.exports = { `monorepoRoot` - monorepo root folder, default is `./` +### httpLib + +Generate API SDK which request library to use. + +`xior` | `axios`, default is `axios`; And `xior` use fetch, and similiar API with axios + ### dataHookLib `dataHookLib` - `SWR` | `ReactQuery`; Generate `SWR` or `React Query` hooks;dependencies version: `swr@^2.2.5`; `@tanstack/react-query@^5.10.0` @@ -74,7 +82,6 @@ Custom dependencies,will combine to `fe-sdk/package.json` dependencies. This c For example, update `tsdk.config.js` to change axios to latest version: - ```js filename="tsdk.config.js" {4-6} /** @type {import('tsdk').TSDKConfig} */ module.exports = { @@ -87,4 +94,4 @@ module.exports = { ### `devDependencies` -Like `dependencies`, but for `devDependencies`. \ No newline at end of file +Like `dependencies`, but for `devDependencies`. diff --git a/website/pages/docs/guide/tsdk.config.zh-CN.mdx b/website/pages/docs/guide/tsdk.config.zh-CN.mdx index f7d6bc4..213245f 100644 --- a/website/pages/docs/guide/tsdk.config.zh-CN.mdx +++ b/website/pages/docs/guide/tsdk.config.zh-CN.mdx @@ -12,6 +12,7 @@ module.exports = { entityExt: 'entity', apiconfExt: 'apiconf', shareExt: 'shared', + httpLib: 'axios', sharedDirs: ['./src/shared'], removeFields: [], monorepoRoot: './', @@ -28,6 +29,7 @@ module.exports = { - `shareExt` - 共享文件名扩展,默认 `*.shared.ts` - `sharedDirs` - 共享文件夹,默认 `["./src/shared"]` - `monorepoRoot` - monorepo 根路径,默认当前路径 `./` +- `httpLib` - 可选值有 `xior` | `axios`,默认 `axios`; `xior` 和 `axios` 什么区别?`xior` 使用 fetch,API 和 `axios` 类似 - `dataHookLib` - 可选值有 `SWR` | `ReactQuery`,生成 `SWR` 或者 `React Query` 钩子;get 方法的接口将生成获取钩子,非 get 的将生成更新钩子。默认不生成。依赖版本:swr@^2.2.4;@tanstack/react-query@^5.10.0 - `dependencies` - 自定义依赖,将会和 **fe-sdk/package.json** dependencies 进行合并。作用:添加自定义依赖,以及覆盖默认的依赖版本号 - `devDependencies` - 自定义依赖,将会和 **fe-sdk/package.json** devDependencies 进行合并。 @@ -64,6 +66,13 @@ module.exports = { `monorepoRoot` - monorepo 根路径,默认当前路径 `./` + +### `httpLib` + +可选值有 `xior` | `axios`,默认 `axios`; + +`xior` 和 `axios` 什么区别?`xior` 使用 fetch,API 和 `axios` 类似 + ### dataHookLib `dataHookLib` - 可选值有 `SWR` | `ReactQuery`,生成 `SWR` 或者 `React Query` 钩子;get 方法的接口将生成获取钩子,非 get 的将生成更新钩子。默认不生成。依赖版本:swr@^2.2.4;@tanstack/react-query@^5.10.0