Skip to content

Commit a98ff15

Browse files
authored
Merge pull request #24 from wangweianger/master
新增通过 code 生成 jsonschema
2 parents 65b9427 + beb20c3 commit a98ff15

File tree

11 files changed

+473
-25
lines changed

11 files changed

+473
-25
lines changed

CHANGELOG.md

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
## 0.0.8 (2023-02-27)
2+
3+
4+
### Bug Fixes
5+
6+
* 避免原有definitions被覆盖 ([64d2ff6](https://github.com/yunke-yunfly/fast-typescript-to-jsonschema/commit/64d2ff626dbb0b33593b6e0c890a8d1026c155a0))
7+
* 泛型默认值,进行深度克隆,避免被覆盖 ([ffb5d2d](https://github.com/yunke-yunfly/fast-typescript-to-jsonschema/commit/ffb5d2d2ebe606733fb8031c5b4018eccca67a71))
8+
* 完善重复引用逻辑 ([136e9b0](https://github.com/yunke-yunfly/fast-typescript-to-jsonschema/commit/136e9b037acb5c4cc3b47f080c3ee61c5e6880b8))
9+
* 完善重复引用逻辑 ([eed579e](https://github.com/yunke-yunfly/fast-typescript-to-jsonschema/commit/eed579e5f18977e35fc0ad8c5ab9f48bad7f4f16))
10+
* 重复引用以及 namespace 多层嵌套解析 ([a08d8d9](https://github.com/yunke-yunfly/fast-typescript-to-jsonschema/commit/a08d8d9e8aacef1a5995a23ebaa83dc86c66d415))
11+
* genJsonschema 方法 entry 增加默认值处理 ([cde668a](https://github.com/yunke-yunfly/fast-typescript-to-jsonschema/commit/cde668a66e53f69166943fbde95e1abe37176ffe))
12+
* namespace 多层嵌套解析问题 ([78b7b27](https://github.com/yunke-yunfly/fast-typescript-to-jsonschema/commit/78b7b277165ada3bef60af4417b563a169f374cc))
13+
14+
15+
### Features
16+
17+
* 1. 新增对npm包类型的支持 2.修复非同类型枚举类型结果不准确问题 3.修复枚举类型中key为字符串时深度循环问题 ([1e9bbad](https://github.com/yunke-yunfly/fast-typescript-to-jsonschema/commit/1e9bbadb1635df39e41240978f80e8ccb2e01b06))
18+
* 1. 新增通过 code 生成 jsonschema ([96770e3](https://github.com/yunke-yunfly/fast-typescript-to-jsonschema/commit/96770e327ad65d8f6e9e0a79182eea946a6bdef5))
19+
* 更新文档,新增测试案例 ([84a5788](https://github.com/yunke-yunfly/fast-typescript-to-jsonschema/commit/84a5788d9b3593d3df6bd1a011f7590a8fec1794))
20+
* 更新文档,新增测试案例 ([c480e6c](https://github.com/yunke-yunfly/fast-typescript-to-jsonschema/commit/c480e6cf2e31b2a12bc9101f11cc0171a47f50c8))
21+
* 解析块级文档支持description参数 ([176adcb](https://github.com/yunke-yunfly/fast-typescript-to-jsonschema/commit/176adcb6fe3e23772f4228cf4a628c49e2489cca))
22+
* 枚举类型解析问题 ([6467bae](https://github.com/yunke-yunfly/fast-typescript-to-jsonschema/commit/6467bae084d9b237c1be516d12b8f6938eecaf83))
23+
* 默认文档切换为英文文档 ([df98316](https://github.com/yunke-yunfly/fast-typescript-to-jsonschema/commit/df98316506277468909d8c44b2f8473db3cab13c))
24+
* 删除额外属性,处理type为数组情况,完善逻辑 ([265ad1e](https://github.com/yunke-yunfly/fast-typescript-to-jsonschema/commit/265ad1e029d96c5ae16257e35e5f68bf54aca6d1))
25+
* 完善additionalProperties处理,补充测试用例 ([1e3fe87](https://github.com/yunke-yunfly/fast-typescript-to-jsonschema/commit/1e3fe873462b927eb500f6e74ae47dac8c32a67e))
26+
* 文档优化 ([3591789](https://github.com/yunke-yunfly/fast-typescript-to-jsonschema/commit/359178929e255e6f9bef2b9989acc3ecdc1275fb))
27+
* 新增测试覆盖率标识 ([c94dca2](https://github.com/yunke-yunfly/fast-typescript-to-jsonschema/commit/c94dca2ed57ed2692d714dfa4bc8d9b403e18e6c))
28+
* 新增测试覆盖率标识 ([56daa19](https://github.com/yunke-yunfly/fast-typescript-to-jsonschema/commit/56daa19e2deffb8c1f95d6097e104a6d6efbc971))
29+
* 新增测试覆盖率标识 ([96b1a17](https://github.com/yunke-yunfly/fast-typescript-to-jsonschema/commit/96b1a17682b5bfda68c88301ced8096a520b987c))
30+
* 新增测试覆盖率标识 ([1ad1c11](https://github.com/yunke-yunfly/fast-typescript-to-jsonschema/commit/1ad1c112d5391319828a553cbf82600526804958))
31+
* 新增测试覆盖率标识 ([4fb6beb](https://github.com/yunke-yunfly/fast-typescript-to-jsonschema/commit/4fb6bebe1f6af10c56bb6f4169ca3f900f11b7d9))
32+
* 新增测试覆盖率标识 ([cca0f42](https://github.com/yunke-yunfly/fast-typescript-to-jsonschema/commit/cca0f420d53507ff4e52302e2a8471401e3f88e4))
33+
* 修复包名 ([0813a33](https://github.com/yunke-yunfly/fast-typescript-to-jsonschema/commit/0813a33085589e0aeb547836fbde371785409aca))
34+
* 修复repository链接 ([24eea13](https://github.com/yunke-yunfly/fast-typescript-to-jsonschema/commit/24eea136c8b58ef9148b00cf0adf0b8507496ea5))
35+
* 增加本文件查找引用类型,删除枚举类型时的空definitions ([a7fc272](https://github.com/yunke-yunfly/fast-typescript-to-jsonschema/commit/a7fc2721988e50a653e2cfa12f09c10cde4cb59d))
36+
* 增加Partial、Required对联合类型的处理 ([a1c661b](https://github.com/yunke-yunfly/fast-typescript-to-jsonschema/commit/a1c661b62b0f5f78136abc5eb4a41ef035df3207))
37+
* 增加Pick/Omit对type的支持 ([46f2a9e](https://github.com/yunke-yunfly/fast-typescript-to-jsonschema/commit/46f2a9e220eff2fb2afdc2b6b65fd5371ec2205c))
38+
* 支持工具函数Partial ([fbe9c68](https://github.com/yunke-yunfly/fast-typescript-to-jsonschema/commit/fbe9c682d9fb8e24a4e2fd3f05f2420c1c898d43))
39+
* 支持工具函数Required ([486e1ea](https://github.com/yunke-yunfly/fast-typescript-to-jsonschema/commit/486e1eaaf0cd9c691eebbd2de1c72252af6203a4))
40+
* add codecov_token ([954b209](https://github.com/yunke-yunfly/fast-typescript-to-jsonschema/commit/954b209c3315e88aab95bd8b7678db445e1d5de0))
41+
* add codecov_token ([900ffda](https://github.com/yunke-yunfly/fast-typescript-to-jsonschema/commit/900ffda089a792691b6b6a5c9b544172117c0e8e))
42+
* add codecov_token ([22b7069](https://github.com/yunke-yunfly/fast-typescript-to-jsonschema/commit/22b7069acb674185bf0994ce8e680b3ad786d134))
43+
* add English docs ([0926ac6](https://github.com/yunke-yunfly/fast-typescript-to-jsonschema/commit/0926ac62a84ac035a1569efdfebc61d66c673ca8))
44+
* add license ([1f3fce9](https://github.com/yunke-yunfly/fast-typescript-to-jsonschema/commit/1f3fce925597fa8f93acf4b5f89a15b7139fe87f))
45+
* enable sourcemap ([882be37](https://github.com/yunke-yunfly/fast-typescript-to-jsonschema/commit/882be37152ff71296c007fe4a1ed6f65c4c3f0c6))
46+
* typescript-to-jsonschema first version ([15632cc](https://github.com/yunke-yunfly/fast-typescript-to-jsonschema/commit/15632cce735e96b037c9b01b64abce6056bcf4f2))
47+
48+
49+

README.md

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# fast-typescript-to-jsonschema
22

3-
[![npm version](https://img.shields.io/npm/v/fast-typescript-to-jsonschema.svg)](https://www.npmjs.com/package/fast-typescript-to-jsonschema)
3+
[![npm version](https://img.shields.io/npm/v/fast-typescript-to-jsonschema.svg)](https://www.npmjs.com/package/fast-typescript-to-jsonschema)
44
![Test](https://github.com/yunke-yunfly/fast-typescript-to-jsonschema/workflows/Test/badge.svg)
55
[![codecov](https://codecov.io/gh/yunke-yunfly/fast-typescript-to-jsonschema/branch/master/graph/badge.svg)](https://app.codecov.io/gh/yunke-yunfly/fast-typescript-to-jsonschema)
66

@@ -33,6 +33,8 @@ interface ITest {
3333

3434
3. create `test.js`
3535

36+
3.1. gen jsonschema from file.
37+
3638
```js
3739
const { default: genTypeSchema } = require('fast-typescript-to-jsonschema');
3840
const path = require('path');
@@ -53,6 +55,31 @@ const jsonSchema = genTypeSchema.getJsonSchema(file, 'ITest');
5355
console.log(jsonSchema);
5456
```
5557

58+
3.2. gen jsonschema from code.
59+
60+
```js
61+
const { default: genTypeSchema } = require('fast-typescript-to-jsonschema');
62+
63+
const code = `
64+
interface ITest {
65+
attr1: string;
66+
attr2: number;
67+
attr3?: boolean;
68+
}
69+
`
70+
// generate data
71+
genTypeSchema.genJsonDataFromCode(code);
72+
73+
// get all jsonschema data of current file
74+
const json = genTypeSchema.genJsonData();
75+
76+
// get jsonschema of specific type
77+
const jsonSchema = genTypeSchema.getJsonSchema('ITest');
78+
79+
// result
80+
console.log(jsonSchema);
81+
```
82+
5683
4. execute script
5784

5885
```js
@@ -161,7 +188,7 @@ result:
161188
- [1.2 Named Export Modules](docs/module.en-US.md#12-named-export-modules)
162189
- [Extending Types](docs/extends.en-US.md#extending-types)
163190
- [1.1 Basic Extending Types](docs/extends.en-US.md#11-basic-extending-types)
164-
- [1.2 Multiple Extending Types ](docs/extends.en-US.md#12-multiple-extending-types)
191+
- [1.2 Multiple Extending Types](docs/extends.en-US.md#12-multiple-extending-types)
165192
- [Enums](docs/enum.en-US.md#enums)
166193
- [1.1 Numeric Enums](docs/enum.en-US.md#11-numeric-enums)
167194
- [1.2 String Enums](docs/enum.en-US.md#12-string-enums)

README.zh-cn.md

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# fast-typescript-to-jsonschema
22

3-
[![npm version](https://img.shields.io/npm/v/fast-typescript-to-jsonschema.svg)](https://www.npmjs.com/package/fast-typescript-to-jsonschema)
3+
[![npm version](https://img.shields.io/npm/v/fast-typescript-to-jsonschema.svg)](https://www.npmjs.com/package/fast-typescript-to-jsonschema)
44
![Test](https://github.com/yunke-yunfly/fast-typescript-to-jsonschema/workflows/Test/badge.svg)
55
[![codecov](https://codecov.io/gh/yunke-yunfly/fast-typescript-to-jsonschema/branch/master/graph/badge.svg)](https://app.codecov.io/gh/yunke-yunfly/fast-typescript-to-jsonschema)
66

@@ -31,7 +31,9 @@ interface ITest {
3131
}
3232
```
3333

34-
3.创建`test.js`文件,内容如下:
34+
3. 创建`test.js`文件,内容如下:
35+
36+
3.1 通过文件生成 jsonschema
3537

3638
```js
3739
const { default: genTypeSchema } = require('fast-typescript-to-jsonschema');
@@ -53,6 +55,31 @@ const jsonSchema = genTypeSchema.getJsonSchema(file, 'ITest');
5355
console.log(jsonSchema);
5456
```
5557

58+
3.2 通过 code 生成 jsonschema
59+
60+
```js
61+
const { default: genTypeSchema } = require('fast-typescript-to-jsonschema');
62+
63+
const code = `
64+
interface ITest {
65+
attr1: string;
66+
attr2: number;
67+
attr3?: boolean;
68+
}
69+
`
70+
// generate data
71+
genTypeSchema.genJsonDataFromCode(code);
72+
73+
// get all jsonschema data of current file
74+
const json = genTypeSchema.genJsonData();
75+
76+
// get jsonschema of specific type
77+
const jsonSchema = genTypeSchema.getJsonSchema('ITest');
78+
79+
// result
80+
console.log(jsonSchema);
81+
```
82+
5683
4.执行脚本
5784

5885
```js
@@ -84,7 +111,7 @@ node ./test.js
84111
```
85112

86113
- example 案例地址:
87-
https://github.com/yunke-yunfly/fast-typescript-to-jsonschema/tree/master/example
114+
<https://github.com/yunke-yunfly/fast-typescript-to-jsonschema/tree/master/example>
88115

89116
## 注释
90117

@@ -141,7 +168,6 @@ interface Interface_4 {
141168
}
142169
```
143170

144-
145171
> 更多支持的类型解析[请看](docs/index.md),目录如下:
146172
147173
- [接口](docs/interface.md)

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "fast-typescript-to-jsonschema",
3-
"version": "0.0.7",
3+
"version": "0.0.8",
44
"description": "fast-typescript-to-jsonschema generates JSON Schema files from your Typescript sources.",
55
"main": "./dist/index.js",
66
"typings": "dist/index.d.ts",
Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
// Jest Snapshot v1, https://goo.gl/fbAQLP
2+
3+
exports[`Type类型 1`] = `
4+
Object {
5+
"anyOf": Array [
6+
Object {
7+
"type": "string",
8+
},
9+
Object {
10+
"enum": Object {
11+
"enum": Array [
12+
"home",
13+
"about",
14+
"contact",
15+
],
16+
},
17+
"type": "string",
18+
},
19+
],
20+
}
21+
`;
22+
23+
exports[`嵌套接口 1`] = `
24+
Object {
25+
"additionalProperties": false,
26+
"definitions": Object {
27+
"BBB": Object {
28+
"additionalProperties": false,
29+
"properties": Object {
30+
"some": Object {
31+
"type": "string",
32+
},
33+
},
34+
"required": Array [
35+
"some",
36+
],
37+
"type": "object",
38+
},
39+
},
40+
"properties": Object {
41+
"some": Object {
42+
"$ref": "#/definitions/BBB",
43+
},
44+
"title": Object {
45+
"type": "string",
46+
},
47+
},
48+
"required": Array [
49+
"title",
50+
"some",
51+
],
52+
"type": "object",
53+
}
54+
`;
55+
56+
exports[`嵌套泛型 1`] = `
57+
Object {
58+
"additionalProperties": false,
59+
"definitions": Object {},
60+
"properties": Object {
61+
"value1": Object {
62+
"type": "string",
63+
},
64+
"value2": Object {
65+
"type": "string",
66+
},
67+
},
68+
"required": Array [
69+
"value1",
70+
"value2",
71+
],
72+
"type": "object",
73+
}
74+
`;
75+
76+
exports[`枚举 1`] = `
77+
Object {
78+
"enum": Array [
79+
"Maintainer",
80+
"Developer",
81+
],
82+
"type": "string",
83+
}
84+
`;
85+
86+
exports[`泛型 1`] = `
87+
Object {
88+
"additionalProperties": false,
89+
"definitions": Object {
90+
"T": Object {},
91+
},
92+
"properties": Object {
93+
"value1": Object {
94+
"type": "string",
95+
},
96+
"value2": Object {
97+
"$ref": "#/definitions/T",
98+
},
99+
},
100+
"required": Array [
101+
"value1",
102+
"value2",
103+
],
104+
"type": "object",
105+
}
106+
`;
107+
108+
exports[`简单接口 1`] = `
109+
Object {
110+
"additionalProperties": false,
111+
"properties": Object {
112+
"some": Object {
113+
"type": "string",
114+
},
115+
},
116+
"required": Array [
117+
"some",
118+
],
119+
"type": "object",
120+
}
121+
`;

0 commit comments

Comments
 (0)