@asapjs/schema 1.0.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/TypeIs.d.ts +31 -0
- package/dist/TypeIs.d.ts.map +1 -0
- package/dist/TypeIs.js +52 -0
- package/dist/TypeIs.js.map +1 -0
- package/dist/base.d.ts +12 -0
- package/dist/base.d.ts.map +1 -0
- package/dist/base.js +25 -0
- package/dist/base.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +59 -0
- package/dist/index.js.map +1 -0
- package/dist/plugins/sequelize.d.ts +3 -0
- package/dist/plugins/sequelize.d.ts.map +1 -0
- package/dist/plugins/sequelize.js +128 -0
- package/dist/plugins/sequelize.js.map +1 -0
- package/dist/plugins/swagger.d.ts +3 -0
- package/dist/plugins/swagger.d.ts.map +1 -0
- package/dist/plugins/swagger.js +138 -0
- package/dist/plugins/swagger.js.map +1 -0
- package/dist/registry.d.ts +12 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +28 -0
- package/dist/registry.js.map +1 -0
- package/dist/types/array.d.ts +17 -0
- package/dist/types/array.d.ts.map +1 -0
- package/dist/types/array.js +54 -0
- package/dist/types/array.js.map +1 -0
- package/dist/types/bigint.d.ts +7 -0
- package/dist/types/bigint.d.ts.map +1 -0
- package/dist/types/bigint.js +29 -0
- package/dist/types/bigint.js.map +1 -0
- package/dist/types/boolean.d.ts +7 -0
- package/dist/types/boolean.d.ts.map +1 -0
- package/dist/types/boolean.js +24 -0
- package/dist/types/boolean.js.map +1 -0
- package/dist/types/dateonly.d.ts +7 -0
- package/dist/types/dateonly.d.ts.map +1 -0
- package/dist/types/dateonly.js +27 -0
- package/dist/types/dateonly.js.map +1 -0
- package/dist/types/datetime.d.ts +7 -0
- package/dist/types/datetime.d.ts.map +1 -0
- package/dist/types/datetime.js +25 -0
- package/dist/types/datetime.js.map +1 -0
- package/dist/types/decimal.d.ts +13 -0
- package/dist/types/decimal.d.ts.map +1 -0
- package/dist/types/decimal.js +22 -0
- package/dist/types/decimal.js.map +1 -0
- package/dist/types/double.d.ts +7 -0
- package/dist/types/double.d.ts.map +1 -0
- package/dist/types/double.js +22 -0
- package/dist/types/double.js.map +1 -0
- package/dist/types/dto.d.ts +17 -0
- package/dist/types/dto.d.ts.map +1 -0
- package/dist/types/dto.js +31 -0
- package/dist/types/dto.js.map +1 -0
- package/dist/types/enum.d.ts +12 -0
- package/dist/types/enum.d.ts.map +1 -0
- package/dist/types/enum.js +27 -0
- package/dist/types/enum.js.map +1 -0
- package/dist/types/float.d.ts +15 -0
- package/dist/types/float.d.ts.map +1 -0
- package/dist/types/float.js +35 -0
- package/dist/types/float.js.map +1 -0
- package/dist/types/int.d.ts +13 -0
- package/dist/types/int.d.ts.map +1 -0
- package/dist/types/int.js +35 -0
- package/dist/types/int.js.map +1 -0
- package/dist/types/json.d.ts +12 -0
- package/dist/types/json.d.ts.map +1 -0
- package/dist/types/json.js +31 -0
- package/dist/types/json.js.map +1 -0
- package/dist/types/password.d.ts +9 -0
- package/dist/types/password.d.ts.map +1 -0
- package/dist/types/password.js +22 -0
- package/dist/types/password.js.map +1 -0
- package/dist/types/string.d.ts +15 -0
- package/dist/types/string.d.ts.map +1 -0
- package/dist/types/string.js +38 -0
- package/dist/types/string.js.map +1 -0
- package/dist/types/text.d.ts +12 -0
- package/dist/types/text.d.ts.map +1 -0
- package/dist/types/text.js +22 -0
- package/dist/types/text.js.map +1 -0
- package/dist/types.d.ts +22 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +24 -0
package/dist/TypeIs.d.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { SchemaType, SchemaFactory, SchemaOptions } from './types';
|
|
2
|
+
export interface TypeIsInterface {
|
|
3
|
+
INT: SchemaFactory<IntOptions>;
|
|
4
|
+
BIGINT: SchemaFactory<SchemaOptions>;
|
|
5
|
+
LONG: SchemaFactory<SchemaOptions>;
|
|
6
|
+
FLOAT: SchemaFactory<FloatOptions>;
|
|
7
|
+
STRING: SchemaFactory<StringOptions>;
|
|
8
|
+
TEXT: SchemaFactory<TextOptions>;
|
|
9
|
+
ARRAY: (itemsOrOptions: SchemaType | (() => SchemaType) | ArrayOptions) => SchemaType;
|
|
10
|
+
BOOLEAN: SchemaFactory<SchemaOptions>;
|
|
11
|
+
JSON: SchemaFactory<JsonOptions>;
|
|
12
|
+
DATETIME: SchemaFactory<SchemaOptions>;
|
|
13
|
+
DATEONLY: SchemaFactory<SchemaOptions>;
|
|
14
|
+
ENUM: SchemaFactory<EnumOptions>;
|
|
15
|
+
PASSWORD: SchemaFactory<StringOptions>;
|
|
16
|
+
DECIMAL: SchemaFactory<DecimalOptions>;
|
|
17
|
+
DOUBLE: SchemaFactory<SchemaOptions>;
|
|
18
|
+
DTO: SchemaFactory<DtoOptions>;
|
|
19
|
+
}
|
|
20
|
+
import { IntOptions } from './types/int';
|
|
21
|
+
import { StringOptions } from './types/string';
|
|
22
|
+
import { ArrayOptions } from './types/array';
|
|
23
|
+
import { JsonOptions } from './types/json';
|
|
24
|
+
import { FloatOptions } from './types/float';
|
|
25
|
+
import { TextOptions } from './types/text';
|
|
26
|
+
import { EnumOptions } from './types/enum';
|
|
27
|
+
import { DecimalOptions } from './types/decimal';
|
|
28
|
+
import { DtoOptions } from './types/dto';
|
|
29
|
+
export declare const TypeIs: TypeIsInterface;
|
|
30
|
+
export declare function extendTypeIs<T extends Record<string, any>>(extensions: T): void;
|
|
31
|
+
//# sourceMappingURL=TypeIs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TypeIs.d.ts","sourceRoot":"","sources":["../src/TypeIs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAGnE,MAAM,WAAW,eAAe;IAE9B,GAAG,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IAC/B,MAAM,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IACrC,IAAI,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IACnC,KAAK,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IACnC,MAAM,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IACrC,IAAI,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IACjC,KAAK,EAAE,CAAC,cAAc,EAAE,UAAU,GAAG,CAAC,MAAM,UAAU,CAAC,GAAG,YAAY,KAAK,UAAU,CAAC;IACtF,OAAO,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IACtC,IAAI,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IACjC,QAAQ,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IACvC,QAAQ,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IACvC,IAAI,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IACjC,QAAQ,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IACvC,OAAO,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IACvC,MAAM,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IACrC,GAAG,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;CAChC;AACD,OAAO,EAAW,UAAU,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAc,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAa,YAAY,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,EAAY,WAAW,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAa,YAAY,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,EAAY,WAAW,EAAE,MAAM,cAAc,CAAC;AAErD,OAAO,EAAY,WAAW,EAAE,MAAM,cAAc,CAAC;AAErD,OAAO,EAAe,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAG9D,OAAO,EAAW,UAAU,EAAE,MAAM,aAAa,CAAC;AAgBlD,eAAO,MAAM,MAAM,EAAE,eAiBpB,CAAC;AAGF,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,GAAG,IAAI,CAE/E"}
|
package/dist/TypeIs.js
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TypeIs = void 0;
|
|
4
|
+
exports.extendTypeIs = extendTypeIs;
|
|
5
|
+
const int_1 = require("./types/int");
|
|
6
|
+
const string_1 = require("./types/string");
|
|
7
|
+
const array_1 = require("./types/array");
|
|
8
|
+
const boolean_1 = require("./types/boolean");
|
|
9
|
+
const json_1 = require("./types/json");
|
|
10
|
+
const float_1 = require("./types/float");
|
|
11
|
+
const bigint_1 = require("./types/bigint");
|
|
12
|
+
const text_1 = require("./types/text");
|
|
13
|
+
const datetime_1 = require("./types/datetime");
|
|
14
|
+
const enum_1 = require("./types/enum");
|
|
15
|
+
const password_1 = require("./types/password");
|
|
16
|
+
const decimal_1 = require("./types/decimal");
|
|
17
|
+
const double_1 = require("./types/double");
|
|
18
|
+
const dateonly_1 = require("./types/dateonly");
|
|
19
|
+
const dto_1 = require("./types/dto");
|
|
20
|
+
// TypeIs.INT({ comment: "ID" }) 형태를 위한 팩토리 함수
|
|
21
|
+
function createFactory(TypeClass) {
|
|
22
|
+
return (options) => new TypeClass(options || {});
|
|
23
|
+
}
|
|
24
|
+
// Array는 특별 처리 (두 가지 API 지원)
|
|
25
|
+
function createArrayFactory() {
|
|
26
|
+
return (itemsOrOptions) => {
|
|
27
|
+
return new array_1.ArrayType(itemsOrOptions);
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
exports.TypeIs = {
|
|
31
|
+
INT: createFactory(int_1.IntType),
|
|
32
|
+
BIGINT: createFactory(bigint_1.BigIntType),
|
|
33
|
+
LONG: createFactory(bigint_1.BigIntType), // alias for BIGINT
|
|
34
|
+
FLOAT: createFactory(float_1.FloatType),
|
|
35
|
+
STRING: createFactory(string_1.StringType),
|
|
36
|
+
TEXT: createFactory(text_1.TextType),
|
|
37
|
+
ARRAY: createArrayFactory(),
|
|
38
|
+
BOOLEAN: createFactory(boolean_1.BooleanType),
|
|
39
|
+
JSON: createFactory(json_1.JsonType),
|
|
40
|
+
DATETIME: createFactory(datetime_1.DateTimeType),
|
|
41
|
+
DATEONLY: createFactory(dateonly_1.DateOnlyType),
|
|
42
|
+
ENUM: createFactory(enum_1.EnumType),
|
|
43
|
+
PASSWORD: createFactory(password_1.PasswordType),
|
|
44
|
+
DECIMAL: createFactory(decimal_1.DecimalType),
|
|
45
|
+
DOUBLE: createFactory(double_1.DoubleType),
|
|
46
|
+
DTO: createFactory(dto_1.DtoType),
|
|
47
|
+
};
|
|
48
|
+
// 타입 확장을 위한 헬퍼 함수
|
|
49
|
+
function extendTypeIs(extensions) {
|
|
50
|
+
Object.assign(exports.TypeIs, extensions);
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=TypeIs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TypeIs.js","sourceRoot":"","sources":["../src/TypeIs.ts"],"names":[],"mappings":";;;AAwEA,oCAEC;AApDD,qCAAkD;AAClD,2CAA2D;AAC3D,yCAAwD;AACxD,6CAA8C;AAC9C,uCAAqD;AACrD,yCAAwD;AACxD,2CAA4C;AAC5C,uCAAqD;AACrD,+CAAgD;AAChD,uCAAqD;AACrD,+CAAgD;AAChD,6CAA8D;AAC9D,2CAA4C;AAC5C,+CAAgD;AAChD,qCAAkD;AAElD,8CAA8C;AAC9C,SAAS,aAAa,CACpB,SAAgC;IAEhC,OAAO,CAAC,OAAW,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,OAAO,IAAI,EAAO,CAAC,CAAC;AAC5D,CAAC;AAED,6BAA6B;AAC7B,SAAS,kBAAkB;IACzB,OAAO,CAAC,cAA8D,EAAE,EAAE;QACxE,OAAO,IAAI,iBAAS,CAAC,cAAc,CAAC,CAAC;IACvC,CAAC,CAAC;AACJ,CAAC;AAEY,QAAA,MAAM,GAAoB;IACrC,GAAG,EAAE,aAAa,CAAsB,aAAO,CAAC;IAChD,MAAM,EAAE,aAAa,CAA4B,mBAAU,CAAC;IAC5D,IAAI,EAAE,aAAa,CAA4B,mBAAU,CAAC,EAAE,mBAAmB;IAC/E,KAAK,EAAE,aAAa,CAA0B,iBAAS,CAAC;IACxD,MAAM,EAAE,aAAa,CAA4B,mBAAU,CAAC;IAC5D,IAAI,EAAE,aAAa,CAAwB,eAAQ,CAAC;IACpD,KAAK,EAAE,kBAAkB,EAAE;IAC3B,OAAO,EAAE,aAAa,CAA6B,qBAAW,CAAC;IAC/D,IAAI,EAAE,aAAa,CAAwB,eAAQ,CAAC;IACpD,QAAQ,EAAE,aAAa,CAA8B,uBAAY,CAAC;IAClE,QAAQ,EAAE,aAAa,CAA8B,uBAAY,CAAC;IAClE,IAAI,EAAE,aAAa,CAAwB,eAAQ,CAAC;IACpD,QAAQ,EAAE,aAAa,CAA8B,uBAAY,CAAC;IAClE,OAAO,EAAE,aAAa,CAA8B,qBAAW,CAAC;IAChE,MAAM,EAAE,aAAa,CAA4B,mBAAU,CAAC;IAC5D,GAAG,EAAE,aAAa,CAAsB,aAAO,CAAC;CACjD,CAAC;AAEF,kBAAkB;AAClB,SAAgB,YAAY,CAAgC,UAAa;IACvE,MAAM,CAAC,MAAM,CAAC,cAAM,EAAE,UAAU,CAAC,CAAC;AACpC,CAAC"}
|
package/dist/base.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { SchemaType, SchemaOptions } from './types';
|
|
2
|
+
export declare abstract class BaseSchemaType<T = any> implements SchemaType<T> {
|
|
3
|
+
abstract __name: string;
|
|
4
|
+
__options: SchemaOptions;
|
|
5
|
+
constructor(options?: SchemaOptions);
|
|
6
|
+
to(target: string): any;
|
|
7
|
+
abstract validate(value: any): boolean;
|
|
8
|
+
abstract parse(value: any): T;
|
|
9
|
+
toSwagger(): any;
|
|
10
|
+
toSequelize(): any;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAGpD,8BAAsB,cAAc,CAAC,CAAC,GAAG,GAAG,CAAE,YAAW,UAAU,CAAC,CAAC,CAAC;IACpE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,aAAa,CAAC;gBAEb,OAAO,GAAE,aAAkB;IAIvC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG;IAQvB,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IACtC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC;IAG7B,SAAS,IAAI,GAAG;IAIhB,WAAW,IAAI,GAAG;CAGnB"}
|
package/dist/base.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseSchemaType = void 0;
|
|
4
|
+
const registry_1 = require("./registry");
|
|
5
|
+
class BaseSchemaType {
|
|
6
|
+
constructor(options = {}) {
|
|
7
|
+
this.__options = options;
|
|
8
|
+
}
|
|
9
|
+
to(target) {
|
|
10
|
+
const plugin = registry_1.registry.get(target);
|
|
11
|
+
if (!plugin) {
|
|
12
|
+
throw new Error(`No plugin registered for target '${target}'`);
|
|
13
|
+
}
|
|
14
|
+
return plugin.transform(this, this.__options);
|
|
15
|
+
}
|
|
16
|
+
// 편의 메서드들
|
|
17
|
+
toSwagger() {
|
|
18
|
+
return this.to('swagger');
|
|
19
|
+
}
|
|
20
|
+
toSequelize() {
|
|
21
|
+
return this.to('sequelize');
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.BaseSchemaType = BaseSchemaType;
|
|
25
|
+
//# sourceMappingURL=base.js.map
|
package/dist/base.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":";;;AACA,yCAAsC;AAEtC,MAAsB,cAAc;IAIlC,YAAY,UAAyB,EAAE;QACrC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;IAC3B,CAAC;IAED,EAAE,CAAC,MAAc;QACf,MAAM,MAAM,GAAG,mBAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,oCAAoC,MAAM,GAAG,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAChD,CAAC;IAKD,UAAU;IACV,SAAS;QACP,OAAO,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;IAC5B,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;IAC9B,CAAC;CACF;AA3BD,wCA2BC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export * from './types';
|
|
2
|
+
export * from './registry';
|
|
3
|
+
export * from './base';
|
|
4
|
+
export { TypeIs, TypeIsInterface, extendTypeIs } from './TypeIs';
|
|
5
|
+
export * from './types/int';
|
|
6
|
+
export * from './types/string';
|
|
7
|
+
export * from './types/array';
|
|
8
|
+
export * from './types/boolean';
|
|
9
|
+
export * from './types/json';
|
|
10
|
+
export * from './types/float';
|
|
11
|
+
export * from './types/bigint';
|
|
12
|
+
export * from './types/text';
|
|
13
|
+
export * from './types/datetime';
|
|
14
|
+
export * from './types/enum';
|
|
15
|
+
export * from './types/password';
|
|
16
|
+
export * from './types/decimal';
|
|
17
|
+
export * from './types/double';
|
|
18
|
+
export * from './types/dateonly';
|
|
19
|
+
export * from './types/dto';
|
|
20
|
+
export { swaggerPlugin } from './plugins/swagger';
|
|
21
|
+
export { sequelizePlugin } from './plugins/sequelize';
|
|
22
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AAGvB,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGjE,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAG5B,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.sequelizePlugin = exports.swaggerPlugin = exports.extendTypeIs = exports.TypeIs = void 0;
|
|
18
|
+
// Core exports
|
|
19
|
+
__exportStar(require("./types"), exports);
|
|
20
|
+
__exportStar(require("./registry"), exports);
|
|
21
|
+
__exportStar(require("./base"), exports);
|
|
22
|
+
// TypeIs factory
|
|
23
|
+
var TypeIs_1 = require("./TypeIs");
|
|
24
|
+
Object.defineProperty(exports, "TypeIs", { enumerable: true, get: function () { return TypeIs_1.TypeIs; } });
|
|
25
|
+
Object.defineProperty(exports, "extendTypeIs", { enumerable: true, get: function () { return TypeIs_1.extendTypeIs; } });
|
|
26
|
+
// Type implementations
|
|
27
|
+
__exportStar(require("./types/int"), exports);
|
|
28
|
+
__exportStar(require("./types/string"), exports);
|
|
29
|
+
__exportStar(require("./types/array"), exports);
|
|
30
|
+
__exportStar(require("./types/boolean"), exports);
|
|
31
|
+
__exportStar(require("./types/json"), exports);
|
|
32
|
+
__exportStar(require("./types/float"), exports);
|
|
33
|
+
__exportStar(require("./types/bigint"), exports);
|
|
34
|
+
__exportStar(require("./types/text"), exports);
|
|
35
|
+
__exportStar(require("./types/datetime"), exports);
|
|
36
|
+
__exportStar(require("./types/enum"), exports);
|
|
37
|
+
__exportStar(require("./types/password"), exports);
|
|
38
|
+
__exportStar(require("./types/decimal"), exports);
|
|
39
|
+
__exportStar(require("./types/double"), exports);
|
|
40
|
+
__exportStar(require("./types/dateonly"), exports);
|
|
41
|
+
__exportStar(require("./types/dto"), exports);
|
|
42
|
+
// Built-in plugins
|
|
43
|
+
var swagger_1 = require("./plugins/swagger");
|
|
44
|
+
Object.defineProperty(exports, "swaggerPlugin", { enumerable: true, get: function () { return swagger_1.swaggerPlugin; } });
|
|
45
|
+
var sequelize_1 = require("./plugins/sequelize");
|
|
46
|
+
Object.defineProperty(exports, "sequelizePlugin", { enumerable: true, get: function () { return sequelize_1.sequelizePlugin; } });
|
|
47
|
+
// Auto-register plugins
|
|
48
|
+
const registry_1 = require("./registry");
|
|
49
|
+
const swagger_2 = require("./plugins/swagger");
|
|
50
|
+
const sequelize_2 = require("./plugins/sequelize");
|
|
51
|
+
registry_1.registry.register(swagger_2.swaggerPlugin);
|
|
52
|
+
// Sequelize 플러그인도 기본으로 등록 (사용하지 않으면 무시됨)
|
|
53
|
+
try {
|
|
54
|
+
registry_1.registry.register(sequelize_2.sequelizePlugin);
|
|
55
|
+
}
|
|
56
|
+
catch (e) {
|
|
57
|
+
// Sequelize가 설치되지 않은 경우 무시
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,eAAe;AACf,0CAAwB;AACxB,6CAA2B;AAC3B,yCAAuB;AAEvB,iBAAiB;AACjB,mCAAiE;AAAxD,gGAAA,MAAM,OAAA;AAAmB,sGAAA,YAAY,OAAA;AAE9C,uBAAuB;AACvB,8CAA4B;AAC5B,iDAA+B;AAC/B,gDAA8B;AAC9B,kDAAgC;AAChC,+CAA6B;AAC7B,gDAA8B;AAC9B,iDAA+B;AAC/B,+CAA6B;AAC7B,mDAAiC;AACjC,+CAA6B;AAC7B,mDAAiC;AACjC,kDAAgC;AAChC,iDAA+B;AAC/B,mDAAiC;AACjC,8CAA4B;AAE5B,mBAAmB;AACnB,6CAAkD;AAAzC,wGAAA,aAAa,OAAA;AACtB,iDAAsD;AAA7C,4GAAA,eAAe,OAAA;AAExB,wBAAwB;AACxB,yCAAsC;AACtC,+CAAkD;AAClD,mDAAsD;AAEtD,mBAAQ,CAAC,QAAQ,CAAC,uBAAa,CAAC,CAAC;AAEjC,yCAAyC;AACzC,IAAI,CAAC;IACH,mBAAQ,CAAC,QAAQ,CAAC,2BAAe,CAAC,CAAC;AACrC,CAAC;AAAC,OAAO,CAAC,EAAE,CAAC;IACX,2BAA2B;AAC7B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sequelize.d.ts","sourceRoot":"","sources":["../../src/plugins/sequelize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA6B,MAAM,UAAU,CAAC;AAenE,eAAO,MAAM,eAAe,EAAE,YA+H7B,CAAC"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sequelizePlugin = void 0;
|
|
4
|
+
// Sequelize DataTypes를 동적으로 import하기 위한 getter
|
|
5
|
+
let DataTypes;
|
|
6
|
+
const getDataTypes = () => {
|
|
7
|
+
if (!DataTypes) {
|
|
8
|
+
try {
|
|
9
|
+
DataTypes = require('sequelize').DataTypes;
|
|
10
|
+
}
|
|
11
|
+
catch (e) {
|
|
12
|
+
throw new Error('Sequelize is not installed. Please install sequelize to use the sequelize plugin.');
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return DataTypes;
|
|
16
|
+
};
|
|
17
|
+
exports.sequelizePlugin = {
|
|
18
|
+
name: 'sequelize',
|
|
19
|
+
transform(type, options) {
|
|
20
|
+
const DT = getDataTypes();
|
|
21
|
+
const baseOptions = {};
|
|
22
|
+
// 공통 속성 처리
|
|
23
|
+
if (options.comment) {
|
|
24
|
+
baseOptions.comment = options.comment;
|
|
25
|
+
}
|
|
26
|
+
if (options.optional) {
|
|
27
|
+
baseOptions.allowNull = true;
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
baseOptions.allowNull = false;
|
|
31
|
+
}
|
|
32
|
+
if (options.default !== undefined) {
|
|
33
|
+
baseOptions.defaultValue = options.default;
|
|
34
|
+
}
|
|
35
|
+
// Sequelize 전용 옵션 처리
|
|
36
|
+
if ('primaryKey' in options) {
|
|
37
|
+
baseOptions.primaryKey = options.primaryKey;
|
|
38
|
+
}
|
|
39
|
+
if ('autoIncrement' in options) {
|
|
40
|
+
baseOptions.autoIncrement = options.autoIncrement;
|
|
41
|
+
}
|
|
42
|
+
if ('unique' in options) {
|
|
43
|
+
baseOptions.unique = options.unique;
|
|
44
|
+
}
|
|
45
|
+
if ('allowNull' in options) {
|
|
46
|
+
baseOptions.allowNull = options.allowNull;
|
|
47
|
+
}
|
|
48
|
+
if ('defaultValue' in options) {
|
|
49
|
+
baseOptions.defaultValue = options.defaultValue;
|
|
50
|
+
}
|
|
51
|
+
// 타입별 변환
|
|
52
|
+
switch (type.__name) {
|
|
53
|
+
case 'int':
|
|
54
|
+
return {
|
|
55
|
+
...baseOptions,
|
|
56
|
+
type: DT.INTEGER,
|
|
57
|
+
};
|
|
58
|
+
case 'bigint':
|
|
59
|
+
return {
|
|
60
|
+
...baseOptions,
|
|
61
|
+
type: DT.BIGINT,
|
|
62
|
+
};
|
|
63
|
+
case 'float':
|
|
64
|
+
return {
|
|
65
|
+
...baseOptions,
|
|
66
|
+
type: DT.FLOAT(options.length, options.decimals),
|
|
67
|
+
};
|
|
68
|
+
case 'double':
|
|
69
|
+
return {
|
|
70
|
+
...baseOptions,
|
|
71
|
+
type: DT.DOUBLE,
|
|
72
|
+
};
|
|
73
|
+
case 'decimal':
|
|
74
|
+
return {
|
|
75
|
+
...baseOptions,
|
|
76
|
+
type: DT.DECIMAL(options.precision, options.scale),
|
|
77
|
+
};
|
|
78
|
+
case 'string':
|
|
79
|
+
return {
|
|
80
|
+
...baseOptions,
|
|
81
|
+
type: DT.STRING(options.maxLength || 255),
|
|
82
|
+
};
|
|
83
|
+
case 'text':
|
|
84
|
+
return {
|
|
85
|
+
...baseOptions,
|
|
86
|
+
type: DT.TEXT(options.length),
|
|
87
|
+
};
|
|
88
|
+
case 'password':
|
|
89
|
+
return {
|
|
90
|
+
...baseOptions,
|
|
91
|
+
type: DT.STRING(512),
|
|
92
|
+
};
|
|
93
|
+
case 'boolean':
|
|
94
|
+
return {
|
|
95
|
+
...baseOptions,
|
|
96
|
+
type: DT.BOOLEAN,
|
|
97
|
+
};
|
|
98
|
+
case 'json':
|
|
99
|
+
return {
|
|
100
|
+
...baseOptions,
|
|
101
|
+
type: DT.JSON,
|
|
102
|
+
};
|
|
103
|
+
case 'datetime':
|
|
104
|
+
return {
|
|
105
|
+
...baseOptions,
|
|
106
|
+
type: DT.DATE,
|
|
107
|
+
};
|
|
108
|
+
case 'dateonly':
|
|
109
|
+
return {
|
|
110
|
+
...baseOptions,
|
|
111
|
+
type: DT.DATEONLY,
|
|
112
|
+
};
|
|
113
|
+
case 'enum':
|
|
114
|
+
return {
|
|
115
|
+
...baseOptions,
|
|
116
|
+
type: DT.ENUM(...(options.values || [])),
|
|
117
|
+
};
|
|
118
|
+
case 'binary':
|
|
119
|
+
return {
|
|
120
|
+
...baseOptions,
|
|
121
|
+
type: DT.BLOB(options.length),
|
|
122
|
+
};
|
|
123
|
+
default:
|
|
124
|
+
throw new Error(`Unknown type '${type.__name}' for sequelize transformation`);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
//# sourceMappingURL=sequelize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sequelize.js","sourceRoot":"","sources":["../../src/plugins/sequelize.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swagger.d.ts","sourceRoot":"","sources":["../../src/plugins/swagger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA6B,MAAM,UAAU,CAAC;AAInE,eAAO,MAAM,aAAa,EAAE,YAyJ3B,CAAC"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.swaggerPlugin = void 0;
|
|
4
|
+
exports.swaggerPlugin = {
|
|
5
|
+
name: 'swagger',
|
|
6
|
+
transform(type, options) {
|
|
7
|
+
const baseSchema = {};
|
|
8
|
+
// 공통 속성 처리
|
|
9
|
+
if (options.comment) {
|
|
10
|
+
baseSchema.description = options.comment;
|
|
11
|
+
}
|
|
12
|
+
if (options.example !== undefined) {
|
|
13
|
+
baseSchema.example = options.example;
|
|
14
|
+
}
|
|
15
|
+
if (options.default !== undefined) {
|
|
16
|
+
baseSchema.default = options.default;
|
|
17
|
+
}
|
|
18
|
+
// 타입별 변환
|
|
19
|
+
switch (type.__name) {
|
|
20
|
+
case 'int':
|
|
21
|
+
return {
|
|
22
|
+
type: 'integer',
|
|
23
|
+
format: 'int32',
|
|
24
|
+
...baseSchema,
|
|
25
|
+
...(options.min !== undefined && { minimum: options.min }),
|
|
26
|
+
...(options.max !== undefined && { maximum: options.max }),
|
|
27
|
+
};
|
|
28
|
+
case 'bigint':
|
|
29
|
+
case 'long':
|
|
30
|
+
return {
|
|
31
|
+
type: 'integer',
|
|
32
|
+
format: 'int64',
|
|
33
|
+
...baseSchema,
|
|
34
|
+
};
|
|
35
|
+
case 'float':
|
|
36
|
+
return {
|
|
37
|
+
type: 'number',
|
|
38
|
+
format: 'float',
|
|
39
|
+
...baseSchema,
|
|
40
|
+
...(options.min !== undefined && { minimum: options.min }),
|
|
41
|
+
...(options.max !== undefined && { maximum: options.max }),
|
|
42
|
+
};
|
|
43
|
+
case 'string':
|
|
44
|
+
return {
|
|
45
|
+
type: 'string',
|
|
46
|
+
...baseSchema,
|
|
47
|
+
...(options.minLength !== undefined && { minLength: options.minLength }),
|
|
48
|
+
...(options.maxLength !== undefined && { maxLength: options.maxLength }),
|
|
49
|
+
...(options.pattern && { pattern: options.pattern.source }),
|
|
50
|
+
...(options.enum && { enum: options.enum }),
|
|
51
|
+
};
|
|
52
|
+
case 'array':
|
|
53
|
+
const arrayType = type;
|
|
54
|
+
return {
|
|
55
|
+
type: 'array',
|
|
56
|
+
items: arrayType.items.to('swagger'),
|
|
57
|
+
...baseSchema,
|
|
58
|
+
...(options.minItems !== undefined && { minItems: options.minItems }),
|
|
59
|
+
...(options.maxItems !== undefined && { maxItems: options.maxItems }),
|
|
60
|
+
...(options.uniqueItems !== undefined && { uniqueItems: options.uniqueItems }),
|
|
61
|
+
};
|
|
62
|
+
case 'boolean':
|
|
63
|
+
return {
|
|
64
|
+
type: 'boolean',
|
|
65
|
+
...baseSchema,
|
|
66
|
+
};
|
|
67
|
+
case 'json':
|
|
68
|
+
return {
|
|
69
|
+
type: 'object',
|
|
70
|
+
...baseSchema,
|
|
71
|
+
};
|
|
72
|
+
case 'text':
|
|
73
|
+
return {
|
|
74
|
+
type: 'string',
|
|
75
|
+
...baseSchema,
|
|
76
|
+
};
|
|
77
|
+
case 'datetime':
|
|
78
|
+
return {
|
|
79
|
+
type: 'string',
|
|
80
|
+
format: 'date-time',
|
|
81
|
+
...baseSchema,
|
|
82
|
+
};
|
|
83
|
+
case 'enum':
|
|
84
|
+
return {
|
|
85
|
+
type: 'string',
|
|
86
|
+
enum: options.values,
|
|
87
|
+
...baseSchema,
|
|
88
|
+
};
|
|
89
|
+
case 'password':
|
|
90
|
+
return {
|
|
91
|
+
type: 'string',
|
|
92
|
+
format: 'password',
|
|
93
|
+
...baseSchema,
|
|
94
|
+
};
|
|
95
|
+
case 'decimal':
|
|
96
|
+
case 'double':
|
|
97
|
+
return {
|
|
98
|
+
type: 'number',
|
|
99
|
+
...baseSchema,
|
|
100
|
+
};
|
|
101
|
+
case 'dateonly':
|
|
102
|
+
return {
|
|
103
|
+
type: 'string',
|
|
104
|
+
format: 'date',
|
|
105
|
+
...baseSchema,
|
|
106
|
+
};
|
|
107
|
+
case 'dto':
|
|
108
|
+
const dtoType = type;
|
|
109
|
+
if (dtoType.className) {
|
|
110
|
+
return {
|
|
111
|
+
$ref: `#/components/schemas/${dtoType.className}`,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
return {
|
|
115
|
+
type: 'object',
|
|
116
|
+
...baseSchema,
|
|
117
|
+
};
|
|
118
|
+
case 'query':
|
|
119
|
+
// QUERY 타입은 실행 결과에 따라 다름
|
|
120
|
+
return {
|
|
121
|
+
type: 'string',
|
|
122
|
+
...baseSchema,
|
|
123
|
+
};
|
|
124
|
+
case 'foreignkey':
|
|
125
|
+
return {
|
|
126
|
+
type: 'integer',
|
|
127
|
+
format: 'int32',
|
|
128
|
+
...baseSchema,
|
|
129
|
+
};
|
|
130
|
+
case 'belongsto':
|
|
131
|
+
// BELONGSTO는 관계를 나타내므로 스키마에 포함하지 않음
|
|
132
|
+
return null;
|
|
133
|
+
default:
|
|
134
|
+
throw new Error(`Unknown type '${type.__name}' for swagger transformation`);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
//# sourceMappingURL=swagger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swagger.js","sourceRoot":"","sources":["../../src/plugins/swagger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { SchemaPlugin } from './types';
|
|
2
|
+
declare class SchemaPluginRegistry {
|
|
3
|
+
private plugins;
|
|
4
|
+
register(plugin: SchemaPlugin): void;
|
|
5
|
+
unregister(name: string): void;
|
|
6
|
+
get(name: string): SchemaPlugin | undefined;
|
|
7
|
+
has(name: string): boolean;
|
|
8
|
+
list(): string[];
|
|
9
|
+
}
|
|
10
|
+
export declare const registry: SchemaPluginRegistry;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,cAAM,oBAAoB;IACxB,OAAO,CAAC,OAAO,CAAwC;IAEvD,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAOpC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI9B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI3C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,IAAI,IAAI,MAAM,EAAE;CAGjB;AAED,eAAO,MAAM,QAAQ,sBAA6B,CAAC"}
|
package/dist/registry.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registry = void 0;
|
|
4
|
+
class SchemaPluginRegistry {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.plugins = new Map();
|
|
7
|
+
}
|
|
8
|
+
register(plugin) {
|
|
9
|
+
if (this.plugins.has(plugin.name)) {
|
|
10
|
+
throw new Error(`Plugin '${plugin.name}' is already registered`);
|
|
11
|
+
}
|
|
12
|
+
this.plugins.set(plugin.name, plugin);
|
|
13
|
+
}
|
|
14
|
+
unregister(name) {
|
|
15
|
+
this.plugins.delete(name);
|
|
16
|
+
}
|
|
17
|
+
get(name) {
|
|
18
|
+
return this.plugins.get(name);
|
|
19
|
+
}
|
|
20
|
+
has(name) {
|
|
21
|
+
return this.plugins.has(name);
|
|
22
|
+
}
|
|
23
|
+
list() {
|
|
24
|
+
return Array.from(this.plugins.keys());
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.registry = new SchemaPluginRegistry();
|
|
28
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":";;;AAEA,MAAM,oBAAoB;IAA1B;QACU,YAAO,GAA8B,IAAI,GAAG,EAAE,CAAC;IAwBzD,CAAC;IAtBC,QAAQ,CAAC,MAAoB;QAC3B,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,WAAW,MAAM,CAAC,IAAI,yBAAyB,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,UAAU,CAAC,IAAY;QACrB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,IAAI;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;CACF;AAEY,QAAA,QAAQ,GAAG,IAAI,oBAAoB,EAAE,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { BaseSchemaType } from '../base';
|
|
2
|
+
import { SchemaOptions, SchemaType } from '../types';
|
|
3
|
+
export interface ArrayOptions extends SchemaOptions {
|
|
4
|
+
items: SchemaType | (() => SchemaType);
|
|
5
|
+
minItems?: number;
|
|
6
|
+
maxItems?: number;
|
|
7
|
+
uniqueItems?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare class ArrayType extends BaseSchemaType<any[]> {
|
|
10
|
+
__name: string;
|
|
11
|
+
private itemType;
|
|
12
|
+
constructor(itemsOrOptions: SchemaType | (() => SchemaType) | ArrayOptions);
|
|
13
|
+
validate(value: any): boolean;
|
|
14
|
+
parse(value: any): any[];
|
|
15
|
+
get items(): SchemaType;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=array.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../src/types/array.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAErD,MAAM,WAAW,YAAa,SAAQ,aAAa;IACjD,KAAK,EAAE,UAAU,GAAG,CAAC,MAAM,UAAU,CAAC,CAAC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,qBAAa,SAAU,SAAQ,cAAc,CAAC,GAAG,EAAE,CAAC;IAClD,MAAM,SAAW;IACjB,OAAO,CAAC,QAAQ,CAAc;gBAElB,cAAc,EAAE,UAAU,GAAG,CAAC,MAAM,UAAU,CAAC,GAAG,YAAY;IAe1E,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAoB7B,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG,EAAE;IAexB,IAAI,KAAK,IAAI,UAAU,CAEtB;CACF"}
|