@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.
Files changed (89) hide show
  1. package/dist/TypeIs.d.ts +31 -0
  2. package/dist/TypeIs.d.ts.map +1 -0
  3. package/dist/TypeIs.js +52 -0
  4. package/dist/TypeIs.js.map +1 -0
  5. package/dist/base.d.ts +12 -0
  6. package/dist/base.d.ts.map +1 -0
  7. package/dist/base.js +25 -0
  8. package/dist/base.js.map +1 -0
  9. package/dist/index.d.ts +22 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +59 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/plugins/sequelize.d.ts +3 -0
  14. package/dist/plugins/sequelize.d.ts.map +1 -0
  15. package/dist/plugins/sequelize.js +128 -0
  16. package/dist/plugins/sequelize.js.map +1 -0
  17. package/dist/plugins/swagger.d.ts +3 -0
  18. package/dist/plugins/swagger.d.ts.map +1 -0
  19. package/dist/plugins/swagger.js +138 -0
  20. package/dist/plugins/swagger.js.map +1 -0
  21. package/dist/registry.d.ts +12 -0
  22. package/dist/registry.d.ts.map +1 -0
  23. package/dist/registry.js +28 -0
  24. package/dist/registry.js.map +1 -0
  25. package/dist/types/array.d.ts +17 -0
  26. package/dist/types/array.d.ts.map +1 -0
  27. package/dist/types/array.js +54 -0
  28. package/dist/types/array.js.map +1 -0
  29. package/dist/types/bigint.d.ts +7 -0
  30. package/dist/types/bigint.d.ts.map +1 -0
  31. package/dist/types/bigint.js +29 -0
  32. package/dist/types/bigint.js.map +1 -0
  33. package/dist/types/boolean.d.ts +7 -0
  34. package/dist/types/boolean.d.ts.map +1 -0
  35. package/dist/types/boolean.js +24 -0
  36. package/dist/types/boolean.js.map +1 -0
  37. package/dist/types/dateonly.d.ts +7 -0
  38. package/dist/types/dateonly.d.ts.map +1 -0
  39. package/dist/types/dateonly.js +27 -0
  40. package/dist/types/dateonly.js.map +1 -0
  41. package/dist/types/datetime.d.ts +7 -0
  42. package/dist/types/datetime.d.ts.map +1 -0
  43. package/dist/types/datetime.js +25 -0
  44. package/dist/types/datetime.js.map +1 -0
  45. package/dist/types/decimal.d.ts +13 -0
  46. package/dist/types/decimal.d.ts.map +1 -0
  47. package/dist/types/decimal.js +22 -0
  48. package/dist/types/decimal.js.map +1 -0
  49. package/dist/types/double.d.ts +7 -0
  50. package/dist/types/double.d.ts.map +1 -0
  51. package/dist/types/double.js +22 -0
  52. package/dist/types/double.js.map +1 -0
  53. package/dist/types/dto.d.ts +17 -0
  54. package/dist/types/dto.d.ts.map +1 -0
  55. package/dist/types/dto.js +31 -0
  56. package/dist/types/dto.js.map +1 -0
  57. package/dist/types/enum.d.ts +12 -0
  58. package/dist/types/enum.d.ts.map +1 -0
  59. package/dist/types/enum.js +27 -0
  60. package/dist/types/enum.js.map +1 -0
  61. package/dist/types/float.d.ts +15 -0
  62. package/dist/types/float.d.ts.map +1 -0
  63. package/dist/types/float.js +35 -0
  64. package/dist/types/float.js.map +1 -0
  65. package/dist/types/int.d.ts +13 -0
  66. package/dist/types/int.d.ts.map +1 -0
  67. package/dist/types/int.js +35 -0
  68. package/dist/types/int.js.map +1 -0
  69. package/dist/types/json.d.ts +12 -0
  70. package/dist/types/json.d.ts.map +1 -0
  71. package/dist/types/json.js +31 -0
  72. package/dist/types/json.js.map +1 -0
  73. package/dist/types/password.d.ts +9 -0
  74. package/dist/types/password.d.ts.map +1 -0
  75. package/dist/types/password.js +22 -0
  76. package/dist/types/password.js.map +1 -0
  77. package/dist/types/string.d.ts +15 -0
  78. package/dist/types/string.d.ts.map +1 -0
  79. package/dist/types/string.js +38 -0
  80. package/dist/types/string.js.map +1 -0
  81. package/dist/types/text.d.ts +12 -0
  82. package/dist/types/text.d.ts.map +1 -0
  83. package/dist/types/text.js +22 -0
  84. package/dist/types/text.js.map +1 -0
  85. package/dist/types.d.ts +22 -0
  86. package/dist/types.d.ts.map +1 -0
  87. package/dist/types.js +3 -0
  88. package/dist/types.js.map +1 -0
  89. package/package.json +24 -0
@@ -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
@@ -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"}
@@ -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,3 @@
1
+ import { SchemaPlugin } from '../types';
2
+ export declare const sequelizePlugin: SchemaPlugin;
3
+ //# sourceMappingURL=sequelize.d.ts.map
@@ -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,3 @@
1
+ import { SchemaPlugin } from '../types';
2
+ export declare const swaggerPlugin: SchemaPlugin;
3
+ //# sourceMappingURL=swagger.d.ts.map
@@ -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"}
@@ -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"}