Skip to content

Commit cf2c6a3

Browse files
committed
Completed.
1 parent 77565fd commit cf2c6a3

26 files changed

+2210
-1198
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@
22
/node_modules/
33
/samples/
44
/test/
5+
/dist/

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
[![GitHub issues](https://img.shields.io/github/issues/litert/type-guard.svg)](https://github.com/litert/type-guard/issues)
77
[![GitHub Releases](https://img.shields.io/github/release/litert/type-guard.svg)](https://github.com/litert/type-guard/releases "Stable Release")
88

9-
A type checking code "JIT"😄.
9+
An easy and powerful data validation code generator by JavaScript.
1010

1111
## Requirement
1212

docs/zh-CN/APIs.md

Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
# API 说明
2+
3+
## 模块方法 `createJavaScriptLanguageBuilder`
4+
5+
```ts
6+
function createJavaScriptLanguageBuilder(): ILanguageBuilder;
7+
```
8+
9+
创建一个 JavaScript 语言的代码生成器,供编译器对象使用。
10+
11+
12+
## 模块方法 `createInlineCompiler`
13+
14+
```ts
15+
function createInlineCompiler(): IInlineCompiler;
16+
```
17+
18+
创建一个 JavaScript 语言的规则编译器,可以编译规则并生成 JavaScript Lambda 方法,供代码内
19+
直接使用。
20+
21+
## 模块方法 `createCompiler`
22+
23+
```ts
24+
function createCompiler(): ICompiler;
25+
```
26+
27+
创建一个纯粹的规则编译器对象,用于生成代码。
28+
29+
## 接口 `IInlineCompiler`
30+
31+
```ts
32+
interface IInlineCompiler {
33+
34+
/**
35+
* 编译规则并返回一个 JavaScript 函数,可直接用于校验数据。
36+
*
37+
* @param options 编译选项。
38+
*/
39+
compile<T>(options: IInlineCompileOptions): C.TypeChecker<T>;
40+
41+
/**
42+
* 获取一个预定义类型的校验器函数。
43+
*
44+
* @param name 预定义类型的名称。
45+
*/
46+
getPredefinedType<T>(name: string): C.TypeChecker<T>;
47+
48+
/**
49+
* 判断一个预定于类型是否已经定义。
50+
*
51+
* @param name 预定义类型的名称。
52+
*/
53+
hasPredefinedType(name: string): boolean;
54+
55+
/**
56+
* 获取所有未定义,但是已经被使用的”预定义类型“的名称列表。
57+
*/
58+
detectUndefinedTypes(): string[];
59+
}
60+
```
61+
62+
## 接口 `ICompiler`
63+
64+
```ts
65+
interface ICompiler {
66+
67+
/**
68+
* 获取一个预定义类型的编译结果。
69+
*
70+
* @param name 预定义类型的名称。
71+
*/
72+
getPredefinedType(name: string): ICompileResult | null;
73+
74+
/**
75+
* 编译一条规则,并返回编译结果。
76+
*
77+
* @param options 编译选项
78+
*/
79+
compile(options: ICompileOptions): ICompileResult;
80+
}
81+
```
82+
83+
## 接口 ICompileOptions
84+
85+
```ts
86+
interface ICompileOptions {
87+
88+
/**
89+
* 要编译的规则
90+
*/
91+
"rule": any;
92+
93+
/**
94+
* 将该规则定义为一个类型,可以在后面复用。
95+
*/
96+
"name"?: string;
97+
}
98+
```
99+
100+
## 接口 ICompileResult
101+
102+
```ts
103+
interface ICompileResult {
104+
105+
/**
106+
* 校验代码的入口参数信息。
107+
*/
108+
"arguments": ICompileOutputArgument[];
109+
110+
/**
111+
* 存储预定义类型函数的映射对象的变量名。
112+
*/
113+
"typeSlotName": string;
114+
115+
/**
116+
* 编译生成的代码。
117+
*/
118+
"source": string;
119+
120+
/**
121+
* 该代码引用的预定义类型的名称。
122+
*/
123+
"referredTypes": string[];
124+
}
125+
```
126+
127+
## 接口 IInlineCompileOptions
128+
129+
```ts
130+
interface IInlineCompileOptions extends C.ICompileOptions {
131+
132+
/**
133+
* 在检查代码的第一行(端点)暂停,方便调试。
134+
*/
135+
"stopOnEntry"?: boolean;
136+
}
137+
```

0 commit comments

Comments
 (0)