@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,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ArrayType = void 0;
4
+ const base_1 = require("../base");
5
+ class ArrayType extends base_1.BaseSchemaType {
6
+ constructor(itemsOrOptions) {
7
+ // 항상 super를 먼저 호출
8
+ const isSimpleApi = '__name' in itemsOrOptions || typeof itemsOrOptions === 'function';
9
+ super(isSimpleApi ? {} : itemsOrOptions);
10
+ this.__name = 'array';
11
+ if (isSimpleApi) {
12
+ // 새로운 API: TypeIs.ARRAY(TypeIs.STRING())
13
+ this.itemType = typeof itemsOrOptions === 'function' ? itemsOrOptions() : itemsOrOptions;
14
+ }
15
+ else {
16
+ // 기존 API 호환: TypeIs.ARRAY({ items: TypeIs.STRING(), comment: "..." })
17
+ const options = itemsOrOptions;
18
+ this.itemType = typeof options.items === 'function' ? options.items() : options.items;
19
+ }
20
+ }
21
+ validate(value) {
22
+ if (!Array.isArray(value)) {
23
+ return false;
24
+ }
25
+ const options = this.__options;
26
+ if (options.minItems !== undefined && value.length < options.minItems) {
27
+ return false;
28
+ }
29
+ if (options.maxItems !== undefined && value.length > options.maxItems) {
30
+ return false;
31
+ }
32
+ if (options.uniqueItems && new Set(value).size !== value.length) {
33
+ return false;
34
+ }
35
+ // 각 아이템 검증
36
+ return value.every(item => this.itemType.validate(item));
37
+ }
38
+ parse(value) {
39
+ if (!Array.isArray(value)) {
40
+ throw new Error(`Expected array, got ${typeof value}`);
41
+ }
42
+ const parsed = value.map(item => this.itemType.parse(item));
43
+ if (!this.validate(parsed)) {
44
+ throw new Error('Array validation failed');
45
+ }
46
+ return parsed;
47
+ }
48
+ // ArrayType에 특별한 getter 추가
49
+ get items() {
50
+ return this.itemType;
51
+ }
52
+ }
53
+ exports.ArrayType = ArrayType;
54
+ //# sourceMappingURL=array.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.js","sourceRoot":"","sources":["../../src/types/array.ts"],"names":[],"mappings":";;;AAAA,kCAAyC;AAUzC,MAAa,SAAU,SAAQ,qBAAqB;IAIlD,YAAY,cAA8D;QACxE,kBAAkB;QAClB,MAAM,WAAW,GAAG,QAAQ,IAAI,cAAc,IAAI,OAAO,cAAc,KAAK,UAAU,CAAC;QACvF,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAA8B,CAAC,CAAC;QAN3D,WAAM,GAAG,OAAO,CAAC;QAQf,IAAI,WAAW,EAAE,CAAC;YAChB,yCAAyC;YACzC,IAAI,CAAC,QAAQ,GAAG,OAAO,cAAc,KAAK,UAAU,CAAC,CAAC,CAAE,cAAmC,EAAE,CAAC,CAAC,CAAC,cAA4B,CAAC;QAC/H,CAAC;aAAM,CAAC;YACN,sEAAsE;YACtE,MAAM,OAAO,GAAG,cAA8B,CAAC;YAC/C,IAAI,CAAC,QAAQ,GAAG,OAAO,OAAO,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;QACxF,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,KAAU;QACjB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,SAAyB,CAAC;QAC/C,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;YACtE,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;YACtE,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,OAAO,CAAC,WAAW,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;YAChE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,WAAW;QACX,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,KAAU;QACd,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,uBAAuB,OAAO,KAAK,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAE5D,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,2BAA2B;IAC3B,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CACF;AAzDD,8BAyDC"}
@@ -0,0 +1,7 @@
1
+ import { BaseSchemaType } from '../base';
2
+ export declare class BigIntType extends BaseSchemaType<bigint> {
3
+ __name: string;
4
+ validate(value: any): boolean;
5
+ parse(value: any): bigint;
6
+ }
7
+ //# sourceMappingURL=bigint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bigint.d.ts","sourceRoot":"","sources":["../../src/types/bigint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAGzC,qBAAa,UAAW,SAAQ,cAAc,CAAC,MAAM,CAAC;IACpD,MAAM,SAAY;IAElB,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAS7B,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM;CAO1B"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BigIntType = void 0;
4
+ const base_1 = require("../base");
5
+ class BigIntType extends base_1.BaseSchemaType {
6
+ constructor() {
7
+ super(...arguments);
8
+ this.__name = 'bigint';
9
+ }
10
+ validate(value) {
11
+ try {
12
+ BigInt(value);
13
+ return true;
14
+ }
15
+ catch {
16
+ return false;
17
+ }
18
+ }
19
+ parse(value) {
20
+ try {
21
+ return BigInt(value);
22
+ }
23
+ catch {
24
+ throw new Error(`Cannot parse '${value}' as bigint`);
25
+ }
26
+ }
27
+ }
28
+ exports.BigIntType = BigIntType;
29
+ //# sourceMappingURL=bigint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bigint.js","sourceRoot":"","sources":["../../src/types/bigint.ts"],"names":[],"mappings":";;;AAAA,kCAAyC;AAGzC,MAAa,UAAW,SAAQ,qBAAsB;IAAtD;;QACE,WAAM,GAAG,QAAQ,CAAC;IAkBpB,CAAC;IAhBC,QAAQ,CAAC,KAAU;QACjB,IAAI,CAAC;YACH,MAAM,CAAC,KAAK,CAAC,CAAC;YACd,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAU;QACd,IAAI,CAAC;YACH,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,iBAAiB,KAAK,aAAa,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;CACF;AAnBD,gCAmBC"}
@@ -0,0 +1,7 @@
1
+ import { BaseSchemaType } from '../base';
2
+ export declare class BooleanType extends BaseSchemaType<boolean> {
3
+ __name: string;
4
+ validate(value: any): boolean;
5
+ parse(value: any): boolean;
6
+ }
7
+ //# sourceMappingURL=boolean.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boolean.d.ts","sourceRoot":"","sources":["../../src/types/boolean.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAGzC,qBAAa,WAAY,SAAQ,cAAc,CAAC,OAAO,CAAC;IACtD,MAAM,SAAa;IAEnB,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAI7B,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;CAM3B"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BooleanType = void 0;
4
+ const base_1 = require("../base");
5
+ class BooleanType extends base_1.BaseSchemaType {
6
+ constructor() {
7
+ super(...arguments);
8
+ this.__name = 'boolean';
9
+ }
10
+ validate(value) {
11
+ return typeof value === 'boolean';
12
+ }
13
+ parse(value) {
14
+ if (typeof value === 'boolean')
15
+ return value;
16
+ if (value === 'true' || value === '1' || value === 1)
17
+ return true;
18
+ if (value === 'false' || value === '0' || value === 0)
19
+ return false;
20
+ throw new Error(`Cannot parse '${value}' as boolean`);
21
+ }
22
+ }
23
+ exports.BooleanType = BooleanType;
24
+ //# sourceMappingURL=boolean.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boolean.js","sourceRoot":"","sources":["../../src/types/boolean.ts"],"names":[],"mappings":";;;AAAA,kCAAyC;AAGzC,MAAa,WAAY,SAAQ,qBAAuB;IAAxD;;QACE,WAAM,GAAG,SAAS,CAAC;IAYrB,CAAC;IAVC,QAAQ,CAAC,KAAU;QACjB,OAAO,OAAO,KAAK,KAAK,SAAS,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,KAAU;QACd,IAAI,OAAO,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QAC7C,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAClE,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACpE,MAAM,IAAI,KAAK,CAAC,iBAAiB,KAAK,cAAc,CAAC,CAAC;IACxD,CAAC;CACF;AAbD,kCAaC"}
@@ -0,0 +1,7 @@
1
+ import { BaseSchemaType } from '../base';
2
+ export declare class DateOnlyType extends BaseSchemaType<string> {
3
+ __name: string;
4
+ validate(value: any): boolean;
5
+ parse(value: any): string;
6
+ }
7
+ //# sourceMappingURL=dateonly.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dateonly.d.ts","sourceRoot":"","sources":["../../src/types/dateonly.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAGzC,qBAAa,YAAa,SAAQ,cAAc,CAAC,MAAM,CAAC;IACtD,MAAM,SAAc;IAEpB,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAM7B,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM;CAU1B"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DateOnlyType = void 0;
4
+ const base_1 = require("../base");
5
+ class DateOnlyType extends base_1.BaseSchemaType {
6
+ constructor() {
7
+ super(...arguments);
8
+ this.__name = 'dateonly';
9
+ }
10
+ validate(value) {
11
+ // YYYY-MM-DD format
12
+ const dateRegex = /^\d{4}-\d{2}-\d{2}$/;
13
+ return typeof value === 'string' && dateRegex.test(value);
14
+ }
15
+ parse(value) {
16
+ if (value instanceof Date) {
17
+ return value.toISOString().split('T')[0];
18
+ }
19
+ const str = String(value);
20
+ if (!this.validate(str)) {
21
+ throw new Error(`Value '${str}' is not a valid date (YYYY-MM-DD format)`);
22
+ }
23
+ return str;
24
+ }
25
+ }
26
+ exports.DateOnlyType = DateOnlyType;
27
+ //# sourceMappingURL=dateonly.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dateonly.js","sourceRoot":"","sources":["../../src/types/dateonly.ts"],"names":[],"mappings":";;;AAAA,kCAAyC;AAGzC,MAAa,YAAa,SAAQ,qBAAsB;IAAxD;;QACE,WAAM,GAAG,UAAU,CAAC;IAkBtB,CAAC;IAhBC,QAAQ,CAAC,KAAU;QACjB,oBAAoB;QACpB,MAAM,SAAS,GAAG,qBAAqB,CAAC;QACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,KAAU;QACd,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,2CAA2C,CAAC,CAAC;QAC5E,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AAnBD,oCAmBC"}
@@ -0,0 +1,7 @@
1
+ import { BaseSchemaType } from '../base';
2
+ export declare class DateTimeType extends BaseSchemaType<Date> {
3
+ __name: string;
4
+ validate(value: any): boolean;
5
+ parse(value: any): Date;
6
+ }
7
+ //# sourceMappingURL=datetime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datetime.d.ts","sourceRoot":"","sources":["../../src/types/datetime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAGzC,qBAAa,YAAa,SAAQ,cAAc,CAAC,IAAI,CAAC;IACpD,MAAM,SAAc;IAEpB,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAI7B,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI;CAUxB"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DateTimeType = void 0;
4
+ const base_1 = require("../base");
5
+ class DateTimeType extends base_1.BaseSchemaType {
6
+ constructor() {
7
+ super(...arguments);
8
+ this.__name = 'datetime';
9
+ }
10
+ validate(value) {
11
+ return value instanceof Date || !isNaN(Date.parse(value));
12
+ }
13
+ parse(value) {
14
+ if (value instanceof Date) {
15
+ return value;
16
+ }
17
+ const date = new Date(value);
18
+ if (isNaN(date.getTime())) {
19
+ throw new Error(`Cannot parse '${value}' as datetime`);
20
+ }
21
+ return date;
22
+ }
23
+ }
24
+ exports.DateTimeType = DateTimeType;
25
+ //# sourceMappingURL=datetime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"datetime.js","sourceRoot":"","sources":["../../src/types/datetime.ts"],"names":[],"mappings":";;;AAAA,kCAAyC;AAGzC,MAAa,YAAa,SAAQ,qBAAoB;IAAtD;;QACE,WAAM,GAAG,UAAU,CAAC;IAgBtB,CAAC;IAdC,QAAQ,CAAC,KAAU;QACjB,OAAO,KAAK,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,KAAU;QACd,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,iBAAiB,KAAK,eAAe,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAjBD,oCAiBC"}
@@ -0,0 +1,13 @@
1
+ import { BaseSchemaType } from '../base';
2
+ import { SchemaOptions } from '../types';
3
+ export interface DecimalOptions extends SchemaOptions {
4
+ precision?: number;
5
+ scale?: number;
6
+ }
7
+ export declare class DecimalType extends BaseSchemaType<number> {
8
+ __name: string;
9
+ constructor(options?: DecimalOptions);
10
+ validate(value: any): boolean;
11
+ parse(value: any): number;
12
+ }
13
+ //# sourceMappingURL=decimal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decimal.d.ts","sourceRoot":"","sources":["../../src/types/decimal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,WAAW,cAAe,SAAQ,aAAa;IACnD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,WAAY,SAAQ,cAAc,CAAC,MAAM,CAAC;IACrD,MAAM,SAAa;gBAEP,OAAO,GAAE,cAAmB;IAIxC,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAI7B,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM;CAO1B"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DecimalType = void 0;
4
+ const base_1 = require("../base");
5
+ class DecimalType extends base_1.BaseSchemaType {
6
+ constructor(options = {}) {
7
+ super(options);
8
+ this.__name = 'decimal';
9
+ }
10
+ validate(value) {
11
+ return typeof value === 'number' || !isNaN(parseFloat(value));
12
+ }
13
+ parse(value) {
14
+ const num = parseFloat(value);
15
+ if (isNaN(num)) {
16
+ throw new Error(`Cannot parse '${value}' as decimal`);
17
+ }
18
+ return num;
19
+ }
20
+ }
21
+ exports.DecimalType = DecimalType;
22
+ //# sourceMappingURL=decimal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decimal.js","sourceRoot":"","sources":["../../src/types/decimal.ts"],"names":[],"mappings":";;;AAAA,kCAAyC;AAQzC,MAAa,WAAY,SAAQ,qBAAsB;IAGrD,YAAY,UAA0B,EAAE;QACtC,KAAK,CAAC,OAAO,CAAC,CAAC;QAHjB,WAAM,GAAG,SAAS,CAAC;IAInB,CAAC;IAED,QAAQ,CAAC,KAAU;QACjB,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,KAAU;QACd,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,iBAAiB,KAAK,cAAc,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AAlBD,kCAkBC"}
@@ -0,0 +1,7 @@
1
+ import { BaseSchemaType } from '../base';
2
+ export declare class DoubleType extends BaseSchemaType<number> {
3
+ __name: string;
4
+ validate(value: any): boolean;
5
+ parse(value: any): number;
6
+ }
7
+ //# sourceMappingURL=double.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"double.d.ts","sourceRoot":"","sources":["../../src/types/double.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAGzC,qBAAa,UAAW,SAAQ,cAAc,CAAC,MAAM,CAAC;IACpD,MAAM,SAAY;IAElB,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAI7B,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM;CAO1B"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DoubleType = void 0;
4
+ const base_1 = require("../base");
5
+ class DoubleType extends base_1.BaseSchemaType {
6
+ constructor() {
7
+ super(...arguments);
8
+ this.__name = 'double';
9
+ }
10
+ validate(value) {
11
+ return typeof value === 'number';
12
+ }
13
+ parse(value) {
14
+ const num = parseFloat(value);
15
+ if (isNaN(num)) {
16
+ throw new Error(`Cannot parse '${value}' as double`);
17
+ }
18
+ return num;
19
+ }
20
+ }
21
+ exports.DoubleType = DoubleType;
22
+ //# sourceMappingURL=double.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"double.js","sourceRoot":"","sources":["../../src/types/double.ts"],"names":[],"mappings":";;;AAAA,kCAAyC;AAGzC,MAAa,UAAW,SAAQ,qBAAsB;IAAtD;;QACE,WAAM,GAAG,QAAQ,CAAC;IAapB,CAAC;IAXC,QAAQ,CAAC,KAAU;QACjB,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,KAAU;QACd,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,iBAAiB,KAAK,aAAa,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AAdD,gCAcC"}
@@ -0,0 +1,17 @@
1
+ import { BaseSchemaType } from '../base';
2
+ import { SchemaOptions } from '../types';
3
+ export interface DtoOptions extends SchemaOptions {
4
+ class?: any;
5
+ name?: string;
6
+ }
7
+ export declare class DtoType extends BaseSchemaType<any> {
8
+ __name: string;
9
+ private dtoClass?;
10
+ private dtoName?;
11
+ constructor(options?: DtoOptions);
12
+ validate(value: any): boolean;
13
+ parse(value: any): any;
14
+ get className(): string | undefined;
15
+ get classRef(): any;
16
+ }
17
+ //# sourceMappingURL=dto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dto.d.ts","sourceRoot":"","sources":["../../src/types/dto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,WAAW,UAAW,SAAQ,aAAa;IAC/C,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,OAAQ,SAAQ,cAAc,CAAC,GAAG,CAAC;IAC9C,MAAM,SAAS;IACf,OAAO,CAAC,QAAQ,CAAC,CAAM;IACvB,OAAO,CAAC,OAAO,CAAC,CAAS;gBAEb,OAAO,GAAE,UAAe;IAMpC,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAK7B,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG;IAQtB,IAAI,SAAS,IAAI,MAAM,GAAG,SAAS,CAElC;IAED,IAAI,QAAQ,IAAI,GAAG,CAElB;CACF"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DtoType = void 0;
4
+ const base_1 = require("../base");
5
+ class DtoType extends base_1.BaseSchemaType {
6
+ constructor(options = {}) {
7
+ super(options);
8
+ this.__name = 'dto';
9
+ this.dtoClass = options.class;
10
+ this.dtoName = options.name || options.class?.name;
11
+ }
12
+ validate(value) {
13
+ // DTO는 보통 객체 타입
14
+ return value !== null && typeof value === 'object';
15
+ }
16
+ parse(value) {
17
+ // DTO 인스턴스인지 확인
18
+ if (this.dtoClass && value instanceof this.dtoClass) {
19
+ return value;
20
+ }
21
+ return value;
22
+ }
23
+ get className() {
24
+ return this.dtoName;
25
+ }
26
+ get classRef() {
27
+ return this.dtoClass;
28
+ }
29
+ }
30
+ exports.DtoType = DtoType;
31
+ //# sourceMappingURL=dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dto.js","sourceRoot":"","sources":["../../src/types/dto.ts"],"names":[],"mappings":";;;AAAA,kCAAyC;AAQzC,MAAa,OAAQ,SAAQ,qBAAmB;IAK9C,YAAY,UAAsB,EAAE;QAClC,KAAK,CAAC,OAAO,CAAC,CAAC;QALjB,WAAM,GAAG,KAAK,CAAC;QAMb,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC;IACrD,CAAC;IAED,QAAQ,CAAC,KAAU;QACjB,gBAAgB;QAChB,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,KAAU;QACd,gBAAgB;QAChB,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,YAAY,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CACF;AA/BD,0BA+BC"}
@@ -0,0 +1,12 @@
1
+ import { BaseSchemaType } from '../base';
2
+ import { SchemaOptions } from '../types';
3
+ export interface EnumOptions extends SchemaOptions {
4
+ values: string[];
5
+ }
6
+ export declare class EnumType extends BaseSchemaType<string> {
7
+ __name: string;
8
+ constructor(options: EnumOptions);
9
+ validate(value: any): boolean;
10
+ parse(value: any): string;
11
+ }
12
+ //# sourceMappingURL=enum.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enum.d.ts","sourceRoot":"","sources":["../../src/types/enum.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,WAAW,WAAY,SAAQ,aAAa;IAChD,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,qBAAa,QAAS,SAAQ,cAAc,CAAC,MAAM,CAAC;IAClD,MAAM,SAAU;gBAEJ,OAAO,EAAE,WAAW;IAOhC,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAK7B,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM;CAQ1B"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EnumType = void 0;
4
+ const base_1 = require("../base");
5
+ class EnumType extends base_1.BaseSchemaType {
6
+ constructor(options) {
7
+ super(options);
8
+ this.__name = 'enum';
9
+ if (!options.values || options.values.length === 0) {
10
+ throw new Error('Enum must have at least one value');
11
+ }
12
+ }
13
+ validate(value) {
14
+ const options = this.__options;
15
+ return options.values.includes(value);
16
+ }
17
+ parse(value) {
18
+ const str = String(value);
19
+ if (!this.validate(str)) {
20
+ const options = this.__options;
21
+ throw new Error(`Value '${str}' is not one of: ${options.values.join(', ')}`);
22
+ }
23
+ return str;
24
+ }
25
+ }
26
+ exports.EnumType = EnumType;
27
+ //# sourceMappingURL=enum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enum.js","sourceRoot":"","sources":["../../src/types/enum.ts"],"names":[],"mappings":";;;AAAA,kCAAyC;AAOzC,MAAa,QAAS,SAAQ,qBAAsB;IAGlD,YAAY,OAAoB;QAC9B,KAAK,CAAC,OAAO,CAAC,CAAC;QAHjB,WAAM,GAAG,MAAM,CAAC;QAId,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,KAAU;QACjB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAwB,CAAC;QAC9C,OAAO,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,KAAU;QACd,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAwB,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,oBAAoB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChF,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AAvBD,4BAuBC"}
@@ -0,0 +1,15 @@
1
+ import { BaseSchemaType } from '../base';
2
+ import { SchemaOptions } from '../types';
3
+ export interface FloatOptions extends SchemaOptions {
4
+ length?: number;
5
+ decimals?: number;
6
+ min?: number;
7
+ max?: number;
8
+ }
9
+ export declare class FloatType extends BaseSchemaType<number> {
10
+ __name: string;
11
+ constructor(options?: FloatOptions);
12
+ validate(value: any): boolean;
13
+ parse(value: any): number;
14
+ }
15
+ //# sourceMappingURL=float.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"float.d.ts","sourceRoot":"","sources":["../../src/types/float.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,WAAW,YAAa,SAAQ,aAAa;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,qBAAa,SAAU,SAAQ,cAAc,CAAC,MAAM,CAAC;IACnD,MAAM,SAAW;gBAEL,OAAO,GAAE,YAAiB;IAItC,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAgB7B,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM;CAU1B"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FloatType = void 0;
4
+ const base_1 = require("../base");
5
+ class FloatType extends base_1.BaseSchemaType {
6
+ constructor(options = {}) {
7
+ super(options);
8
+ this.__name = 'float';
9
+ }
10
+ validate(value) {
11
+ if (typeof value !== 'number') {
12
+ return false;
13
+ }
14
+ const options = this.__options;
15
+ if (options.min !== undefined && value < options.min) {
16
+ return false;
17
+ }
18
+ if (options.max !== undefined && value > options.max) {
19
+ return false;
20
+ }
21
+ return true;
22
+ }
23
+ parse(value) {
24
+ const num = parseFloat(value);
25
+ if (isNaN(num)) {
26
+ throw new Error(`Cannot parse '${value}' as float`);
27
+ }
28
+ if (!this.validate(num)) {
29
+ throw new Error(`Value ${num} does not meet constraints`);
30
+ }
31
+ return num;
32
+ }
33
+ }
34
+ exports.FloatType = FloatType;
35
+ //# sourceMappingURL=float.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"float.js","sourceRoot":"","sources":["../../src/types/float.ts"],"names":[],"mappings":";;;AAAA,kCAAyC;AAUzC,MAAa,SAAU,SAAQ,qBAAsB;IAGnD,YAAY,UAAwB,EAAE;QACpC,KAAK,CAAC,OAAO,CAAC,CAAC;QAHjB,WAAM,GAAG,OAAO,CAAC;IAIjB,CAAC;IAED,QAAQ,CAAC,KAAU;QACjB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,SAAyB,CAAC;QAC/C,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YACrD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YACrD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,KAAU;QACd,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,iBAAiB,KAAK,YAAY,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,SAAS,GAAG,4BAA4B,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AAjCD,8BAiCC"}
@@ -0,0 +1,13 @@
1
+ import { BaseSchemaType } from '../base';
2
+ import { SchemaOptions } from '../types';
3
+ export interface IntOptions extends SchemaOptions {
4
+ min?: number;
5
+ max?: number;
6
+ }
7
+ export declare class IntType extends BaseSchemaType<number> {
8
+ __name: string;
9
+ constructor(options?: IntOptions);
10
+ validate(value: any): boolean;
11
+ parse(value: any): number;
12
+ }
13
+ //# sourceMappingURL=int.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"int.d.ts","sourceRoot":"","sources":["../../src/types/int.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,WAAW,UAAW,SAAQ,aAAa;IAC/C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,qBAAa,OAAQ,SAAQ,cAAc,CAAC,MAAM,CAAC;IACjD,MAAM,SAAS;gBAEH,OAAO,GAAE,UAAe;IAIpC,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAgB7B,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM;CAU1B"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IntType = void 0;
4
+ const base_1 = require("../base");
5
+ class IntType extends base_1.BaseSchemaType {
6
+ constructor(options = {}) {
7
+ super(options);
8
+ this.__name = 'int';
9
+ }
10
+ validate(value) {
11
+ if (typeof value !== 'number' || !Number.isInteger(value)) {
12
+ return false;
13
+ }
14
+ const options = this.__options;
15
+ if (options.min !== undefined && value < options.min) {
16
+ return false;
17
+ }
18
+ if (options.max !== undefined && value > options.max) {
19
+ return false;
20
+ }
21
+ return true;
22
+ }
23
+ parse(value) {
24
+ const num = parseInt(value, 10);
25
+ if (isNaN(num)) {
26
+ throw new Error(`Cannot parse '${value}' as integer`);
27
+ }
28
+ if (!this.validate(num)) {
29
+ throw new Error(`Value ${num} does not meet constraints`);
30
+ }
31
+ return num;
32
+ }
33
+ }
34
+ exports.IntType = IntType;
35
+ //# sourceMappingURL=int.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"int.js","sourceRoot":"","sources":["../../src/types/int.ts"],"names":[],"mappings":";;;AAAA,kCAAyC;AAQzC,MAAa,OAAQ,SAAQ,qBAAsB;IAGjD,YAAY,UAAsB,EAAE;QAClC,KAAK,CAAC,OAAO,CAAC,CAAC;QAHjB,WAAM,GAAG,KAAK,CAAC;IAIf,CAAC;IAED,QAAQ,CAAC,KAAU;QACjB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,SAAuB,CAAC;QAC7C,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YACrD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YACrD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,KAAU;QACd,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAChC,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,iBAAiB,KAAK,cAAc,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,SAAS,GAAG,4BAA4B,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AAjCD,0BAiCC"}
@@ -0,0 +1,12 @@
1
+ import { BaseSchemaType } from '../base';
2
+ import { SchemaOptions } from '../types';
3
+ export interface JsonOptions extends SchemaOptions {
4
+ schema?: Record<string, any>;
5
+ }
6
+ export declare class JsonType extends BaseSchemaType<any> {
7
+ __name: string;
8
+ constructor(options?: JsonOptions);
9
+ validate(value: any): boolean;
10
+ parse(value: any): any;
11
+ }
12
+ //# sourceMappingURL=json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../src/types/json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,WAAW,WAAY,SAAQ,aAAa;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B;AAED,qBAAa,QAAS,SAAQ,cAAc,CAAC,GAAG,CAAC;IAC/C,MAAM,SAAU;gBAEJ,OAAO,GAAE,WAAgB;IAIrC,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAM7B,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG;CAavB"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonType = void 0;
4
+ const base_1 = require("../base");
5
+ class JsonType extends base_1.BaseSchemaType {
6
+ constructor(options = {}) {
7
+ super(options);
8
+ this.__name = 'json';
9
+ }
10
+ validate(value) {
11
+ // 기본적으로 object 타입인지만 확인
12
+ // 추후 JSON Schema 검증 추가 가능
13
+ return value !== null && typeof value === 'object';
14
+ }
15
+ parse(value) {
16
+ if (typeof value === 'string') {
17
+ try {
18
+ return JSON.parse(value);
19
+ }
20
+ catch {
21
+ throw new Error(`Cannot parse '${value}' as JSON`);
22
+ }
23
+ }
24
+ if (this.validate(value)) {
25
+ return value;
26
+ }
27
+ throw new Error(`Value is not a valid JSON object`);
28
+ }
29
+ }
30
+ exports.JsonType = JsonType;
31
+ //# sourceMappingURL=json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/types/json.ts"],"names":[],"mappings":";;;AAAA,kCAAyC;AAOzC,MAAa,QAAS,SAAQ,qBAAmB;IAG/C,YAAY,UAAuB,EAAE;QACnC,KAAK,CAAC,OAAO,CAAC,CAAC;QAHjB,WAAM,GAAG,MAAM,CAAC;IAIhB,CAAC;IAED,QAAQ,CAAC,KAAU;QACjB,wBAAwB;QACxB,0BAA0B;QAC1B,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,KAAU;QACd,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACH,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC3B,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,IAAI,KAAK,CAAC,iBAAiB,KAAK,WAAW,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;CACF;AA1BD,4BA0BC"}
@@ -0,0 +1,9 @@
1
+ import { BaseSchemaType } from '../base';
2
+ import { StringOptions } from './string';
3
+ export declare class PasswordType extends BaseSchemaType<string> {
4
+ __name: string;
5
+ constructor(options?: StringOptions);
6
+ validate(value: any): boolean;
7
+ parse(value: any): string;
8
+ }
9
+ //# sourceMappingURL=password.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"password.d.ts","sourceRoot":"","sources":["../../src/types/password.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,qBAAa,YAAa,SAAQ,cAAc,CAAC,MAAM,CAAC;IACtD,MAAM,SAAc;gBAER,OAAO,GAAE,aAAkB;IAIvC,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAI7B,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM;CAO1B"}