Skip to content

Commit a45522f

Browse files
authored
Merge pull request #50 from cloudcome/feat/v0.x
Feat/v0.x
2 parents d2f2dfa + 1a380fa commit a45522f

File tree

8 files changed

+29
-21
lines changed

8 files changed

+29
-21
lines changed

.eslintrc.cjs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@ module.exports = defineConfig({
1010
},
1111

1212
overrides: [
13+
{
14+
files: ['*.mjs'],
15+
parserOptions: {
16+
sourceType: 'module',
17+
},
18+
},
1319
{
1420
files: ['*.ts'],
1521
parser: '@typescript-eslint/parser',

.github/workflows/release.yml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,6 @@ jobs:
1313
release:
1414
runs-on: ubuntu-latest
1515
steps:
16-
- uses: szenius/set-timezone@v1.1
17-
with:
18-
timezoneLinux: Asia/Shanghai
19-
timezoneMacos: Asia/Shanghai
20-
timezoneWindows: Asia/Shanghai
2116
- uses: google-github-actions/release-please-action@v3
2217
id: release
2318
with:

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"description": "OpenAPI Specification ➡️ TypeScript",
55
"scripts": {
66
"prepare": "husky install",
7-
"lint": "eslint src/**/*.ts",
7+
"lint": "eslint src/**/*.ts && tsc --project tsconfig.json --noEmit",
88
"test": "echo 'no test'",
99
"build:types": "rm -rf dist-dts && tsc --project tsconfig.types.json",
1010
"build:files": "rm -rf dist-cjs dist-mjs && rollup --config",

rollup.config.mjs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,20 @@
11
import typescript from '@rollup/plugin-typescript';
22

3+
/** @type {import('rollup').RollupOptions} */
34
export default {
45
input: ['src/index.ts', 'src/helpers.ts'],
56
output: [
67
{
78
format: 'esm',
89
dir: 'dist-mjs',
910
entryFileNames: '[name].mjs',
11+
sourcemap: true,
1012
},
1113
{
1214
format: 'cjs',
1315
dir: 'dist-cjs',
1416
entryFileNames: '[name].cjs',
17+
sourcemap: true,
1518
},
1619
],
1720
plugins: [

src/configure.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { axiosImportDefault } from './const';
2-
import { Config, UserConfig } from './types';
2+
import { StrictConfig, UserConfig } from './types';
33

4-
export const defaults: Config = {
4+
export const defaults: StrictConfig = {
55
cwd: process.cwd(),
66
dest: 'src/apis',
77
axiosImport: axiosImportDefault,
@@ -10,5 +10,5 @@ export const defaults: Config = {
1010
};
1111

1212
export function defineConfig(config: UserConfig) {
13-
return Object.assign({}, defaults, config);
13+
return Object.assign({}, defaults, config) as StrictConfig;
1414
}

src/generator.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import chalk from 'chalk';
22
import { cosmiconfig } from 'cosmiconfig';
3-
import { CosmiconfigResult } from 'cosmiconfig/dist/types';
43
import fs from 'fs/promises';
54
import path from 'path';
65
import { generateApi } from 'swagger-typescript-api';
6+
import { defineConfig } from './configure';
77
import { axiosImportDefault, helpersImport, templatesDir } from './const';
8-
import { Config, Oas } from './types';
8+
import { StrictConfig, Oas, UserConfig } from './types';
99
import { exitError, normalizeError, tryCatch } from './utils';
1010

11-
export async function generateItem(oas: Oas, config: Config) {
11+
export async function generateItem(oas: Oas, config: StrictConfig) {
1212
const { name, url, spec, axiosImport: axiosImportScope } = oas;
1313
const { cwd, dest, axiosImport: axiosImportGlobal, unwrapResponseData } = config;
1414
const axiosImport = axiosImportScope || axiosImportGlobal || axiosImportDefault;
@@ -33,7 +33,7 @@ export async function generateItem(oas: Oas, config: Config) {
3333
}
3434
}
3535

36-
export async function generate(config: Config) {
36+
export async function generate(config: StrictConfig) {
3737
const { list } = config;
3838
let step = 0;
3939
const length = list.length;
@@ -61,7 +61,11 @@ export async function start() {
6161
return exitError('配置文件未找到');
6262
}
6363

64-
const config = result.config as Config;
64+
const config = result.filepath.endsWith('js')
65+
? // js 文件使用 defineConfig,返回的是 StrictConfig
66+
(result.config as StrictConfig)
67+
: // json 文件是纯文本,返回的 UserConfig
68+
defineConfig(result.config as UserConfig);
6569

6670
try {
6771
await generate(config);

src/helpers.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,17 @@ export function formatHeaders(contentKind: ContentKind) {
1919
/**
2020
* 格式化请求体
2121
* @param {string} contentKind
22-
* @param data
22+
* @param body
2323
* @returns {FormData | string}
2424
*/
25-
export function formatBody(contentKind: ContentKind, data: any) {
25+
export function formatBody(contentKind: ContentKind, body: any) {
2626
switch (contentKind) {
2727
case ContentKind.URL_ENCODED:
28-
return new URLSearchParams(data).toString();
28+
return new URLSearchParams(body).toString();
2929

3030
case ContentKind.FORM_DATA: {
31-
return Object.keys(data).reduce((fd, key) => {
32-
const val = data[key];
31+
return Object.keys(body).reduce((fd, key) => {
32+
const val = body[key];
3333
const isFileType = val instanceof Blob || val instanceof File;
3434
const isString = typeof val === 'string' || typeof val === 'number';
3535
fd.append(key, isFileType ? val : isString ? String(val) : JSON.stringify(val));
@@ -38,6 +38,6 @@ export function formatBody(contentKind: ContentKind, data: any) {
3838
}
3939

4040
default:
41-
return JSON.stringify(data);
41+
return JSON.stringify(body);
4242
}
4343
}

src/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ export interface UserConfig {
5353
list: Oas[];
5454
}
5555

56-
export type Config = Required<UserConfig>;
56+
export type StrictConfig = Required<UserConfig>;
5757

5858
export enum ContentKind {
5959
JSON = 'JSON',

0 commit comments

Comments
 (0)