Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion jest/generic.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,6 @@ interface Generic_11<T = Generic_8<string>> {
value: T[];
}

type Generic_12 = Generic_11
type Generic_12 = Generic_11

type Generic_13 = Generic_11<string>
5 changes: 5 additions & 0 deletions jest/toolfn.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,3 +66,8 @@ type ToolFn_15 = Record<Page, string>;
// interface ToolFn_18 {
// name: Record<Page, PageInfo>
// }

type Filter = 'a' | 'b';
type ToolFn_16 = Pick<AAA, Filter>;

type ToolFn_17 = Omit<AAA, Filter>;
19 changes: 19 additions & 0 deletions src/__tests__/__snapshots__/generic.test.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -239,3 +239,22 @@ Object {
"type": "object",
}
`;

exports[`Generic默认值_类型_3 1`] = `
Object {
"additionalProperties": false,
"definitions": Object {},
"properties": Object {
"value": Object {
"items": Object {
"type": "string",
},
"type": "array",
},
},
"required": Array [
"value",
],
"type": "object",
}
`;
34 changes: 34 additions & 0 deletions src/__tests__/__snapshots__/toolfn.test.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,21 @@ Object {
}
`;

exports[`工具函数Omit_4 1`] = `
Object {
"additionalProperties": false,
"properties": Object {
"c": Object {
"type": "boolean",
},
},
"required": Array [
"c",
],
"type": "object",
}
`;

exports[`工具函数Pick_1 1`] = `
Object {
"properties": Object {
Expand Down Expand Up @@ -80,6 +95,25 @@ Object {
}
`;

exports[`工具函数Pick_3 1`] = `
Object {
"additionalProperties": false,
"properties": Object {
"a": Object {
"type": "number",
},
"b": Object {
"type": "string",
},
},
"required": Array [
"a",
"b",
],
"type": "object",
}
`;

exports[`工具函数Record_1 1`] = `
Object {
"additionalProperties": false,
Expand Down
4 changes: 4 additions & 0 deletions src/__tests__/generic.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,10 @@ test('Generic默认值_类型_2', () => {
expect(getSchema('Generic_12')).toMatchSnapshot();
});

test('Generic默认值_类型_3', () => {
expect(getSchema('Generic_13')).toMatchSnapshot();
});

test('Generic多层对象_类型_1', () => {
expect(getSchema('Generic_9')).toMatchSnapshot();
});
Expand Down
8 changes: 8 additions & 0 deletions src/__tests__/toolfn.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ test('工具函数Omit_3', () => {
expect(getSchema('ToolFn_3')).toMatchSnapshot();
});

test('工具函数Omit_4', () => {
expect(getSchema('ToolFn_17')).toMatchSnapshot();
});

// test('工具函数Omit_4', () => {
// expect(getSchema('ToolFn_4')).toMatchSnapshot();
// });
Expand Down Expand Up @@ -50,6 +54,10 @@ test('工具函数Pick_2', () => {
expect(getSchema('ToolFn_10')).toMatchSnapshot();
});

test('工具函数Pick_3', () => {
expect(getSchema('ToolFn_16')).toMatchSnapshot();
});

// test('工具函数Pick_3', () => {
// expect(getSchema('ToolFn_11')).toMatchSnapshot();
// });
Expand Down
13 changes: 5 additions & 8 deletions src/get-jsonschema-from-data.ts
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,7 @@ export default class genTypeSchema extends typescriptToFileDatas {
if (file) {
this.extendJsonData(file, name, realRef);
}
fileJson[name] = _.cloneDeep(realRef);
fileJson[name] = fileJson[name] || _.cloneDeep(realRef);
}
// 对象类型
if (result.properties && Object.keys(result.properties)) {
Expand Down Expand Up @@ -311,6 +311,7 @@ export default class genTypeSchema extends typescriptToFileDatas {

// 兼容import外部引入与内部引用两种方式
let $refJson = fileJson[firstKey] || fileJson[$refKey] || {};
$refJson = _.cloneDeep($refJson)
if ((entry as any).keySet.has($refKey)) {
(entry as any).refKeyTime[$refKey] = ((entry as any).refKeyTime[$refKey] || 0) + 1;
return;
Expand Down Expand Up @@ -448,6 +449,9 @@ export default class genTypeSchema extends typescriptToFileDatas {
if (!extra) return resType;

if (resType) {
if (extra && extra.$ref) {
extra = _.cloneDeep(attrCommonHandle(extra, false) as AnyOption);
}
const extraKeys = extra.enum || [];
if (key === 'Omit') {
const res = deleteJsonSchemaKeys(resType, extraKeys);
Expand Down Expand Up @@ -606,13 +610,6 @@ export default class genTypeSchema extends typescriptToFileDatas {
typeJson = handleExtends(typeJson);
}

// 处理默认值
if (typeJson.typeParams) {
const defaultNames = handleGenericDefaultType(typeJson.properties, typeJson.typeParams);
if (defaultNames.length) {
delete typeJson.typeParams;
}
}

// 对象类型
if (typeJson.properties && Object.keys(typeJson.properties)) {
Expand Down
2 changes: 1 addition & 1 deletion src/typescript-to-file-datas.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ export default class typescriptToFileDatas {

extendJsonData(fileName: string, key: string, data: AnyOption) {
this.jsonData[fileName] = this.jsonData[fileName] || {};
this.jsonData[fileName][key] = data;
this.jsonData[fileName][key] = this.jsonData[fileName][key] || data;
}

/**
Expand Down