typia 5.4.14 → 5.5.0-dev.20240302

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 (73) hide show
  1. package/lib/factories/IdentifierFactory.d.ts +1 -1
  2. package/lib/functional/$guard.js +2 -19
  3. package/lib/functional/$guard.js.map +1 -1
  4. package/lib/functional/Namespace/index.d.ts +1 -1
  5. package/lib/http.d.ts +10 -493
  6. package/lib/http.js.map +1 -1
  7. package/lib/json.d.ts +9 -8
  8. package/lib/json.js.map +1 -1
  9. package/lib/misc.d.ts +9 -8
  10. package/lib/misc.js.map +1 -1
  11. package/lib/module.d.ts +17 -16
  12. package/lib/module.js.map +1 -1
  13. package/lib/notations.d.ts +13 -12
  14. package/lib/notations.js.map +1 -1
  15. package/lib/programmers/AssertProgrammer.d.ts +5 -1
  16. package/lib/programmers/AssertProgrammer.js +15 -2
  17. package/lib/programmers/AssertProgrammer.js.map +1 -1
  18. package/lib/programmers/http/HttpAssertFormDataProgrammer.d.ts +1 -1
  19. package/lib/programmers/http/HttpAssertFormDataProgrammer.js +6 -2
  20. package/lib/programmers/http/HttpAssertFormDataProgrammer.js.map +1 -1
  21. package/lib/programmers/http/HttpAssertHeadersProgrammer.d.ts +1 -1
  22. package/lib/programmers/http/HttpAssertHeadersProgrammer.js +6 -2
  23. package/lib/programmers/http/HttpAssertHeadersProgrammer.js.map +1 -1
  24. package/lib/programmers/http/HttpAssertQueryProgrammer.d.ts +1 -1
  25. package/lib/programmers/http/HttpAssertQueryProgrammer.js +6 -2
  26. package/lib/programmers/http/HttpAssertQueryProgrammer.js.map +1 -1
  27. package/lib/programmers/json/JsonAssertParseProgrammer.d.ts +1 -1
  28. package/lib/programmers/json/JsonAssertParseProgrammer.js +9 -3
  29. package/lib/programmers/json/JsonAssertParseProgrammer.js.map +1 -1
  30. package/lib/programmers/json/JsonAssertStringifyProgrammer.d.ts +1 -1
  31. package/lib/programmers/json/JsonAssertStringifyProgrammer.js +9 -3
  32. package/lib/programmers/json/JsonAssertStringifyProgrammer.js.map +1 -1
  33. package/lib/programmers/misc/MiscAssertCloneProgrammer.d.ts +1 -1
  34. package/lib/programmers/misc/MiscAssertCloneProgrammer.js +9 -3
  35. package/lib/programmers/misc/MiscAssertCloneProgrammer.js.map +1 -1
  36. package/lib/programmers/misc/MiscAssertPruneProgrammer.d.ts +1 -1
  37. package/lib/programmers/misc/MiscAssertPruneProgrammer.js +9 -3
  38. package/lib/programmers/misc/MiscAssertPruneProgrammer.js.map +1 -1
  39. package/lib/programmers/notations/NotationAssertGeneralProgrammer.d.ts +1 -1
  40. package/lib/programmers/notations/NotationAssertGeneralProgrammer.js +9 -3
  41. package/lib/programmers/notations/NotationAssertGeneralProgrammer.js.map +1 -1
  42. package/lib/programmers/protobuf/ProtobufAssertDecodeProgrammer.d.ts +1 -1
  43. package/lib/programmers/protobuf/ProtobufAssertDecodeProgrammer.js +6 -2
  44. package/lib/programmers/protobuf/ProtobufAssertDecodeProgrammer.js.map +1 -1
  45. package/lib/programmers/protobuf/ProtobufAssertEncodeProgrammer.d.ts +1 -1
  46. package/lib/programmers/protobuf/ProtobufAssertEncodeProgrammer.js +9 -3
  47. package/lib/programmers/protobuf/ProtobufAssertEncodeProgrammer.js.map +1 -1
  48. package/lib/protobuf.d.ts +9 -8
  49. package/lib/protobuf.js.map +1 -1
  50. package/lib/transformers/internal/GenericTransformer.d.ts +1 -1
  51. package/lib/transformers/internal/GenericTransformer.js +3 -3
  52. package/lib/transformers/internal/GenericTransformer.js.map +1 -1
  53. package/package.json +1 -1
  54. package/src/factories/IdentifierFactory.ts +1 -1
  55. package/src/functional/$guard.ts +6 -20
  56. package/src/http.ts +25 -508
  57. package/src/json.ts +29 -8
  58. package/src/misc.ts +29 -8
  59. package/src/module.ts +57 -16
  60. package/src/notations.ts +43 -12
  61. package/src/programmers/AssertProgrammer.ts +46 -6
  62. package/src/programmers/http/HttpAssertFormDataProgrammer.ts +6 -2
  63. package/src/programmers/http/HttpAssertHeadersProgrammer.ts +6 -2
  64. package/src/programmers/http/HttpAssertQueryProgrammer.ts +6 -2
  65. package/src/programmers/json/JsonAssertParseProgrammer.ts +9 -3
  66. package/src/programmers/json/JsonAssertStringifyProgrammer.ts +9 -3
  67. package/src/programmers/misc/MiscAssertCloneProgrammer.ts +9 -3
  68. package/src/programmers/misc/MiscAssertPruneProgrammer.ts +9 -3
  69. package/src/programmers/notations/NotationAssertGeneralProgrammer.ts +9 -3
  70. package/src/programmers/protobuf/ProtobufAssertDecodeProgrammer.ts +6 -2
  71. package/src/programmers/protobuf/ProtobufAssertEncodeProgrammer.ts +9 -3
  72. package/src/protobuf.ts +29 -8
  73. package/src/transformers/internal/GenericTransformer.ts +12 -4
@@ -13,7 +13,7 @@ export namespace JsonAssertParseProgrammer {
13
13
  export const write =
14
14
  (project: IProject) =>
15
15
  (modulo: ts.LeftHandSideExpression) =>
16
- (type: ts.Type, name?: string): ts.ArrowFunction => {
16
+ (type: ts.Type, name?: string, init?: ts.Expression): ts.ArrowFunction => {
17
17
  JsonMetadataFactory.analyze(`typia.json.${modulo.getText()}`)(
18
18
  project.checker,
19
19
  project.context,
@@ -21,7 +21,10 @@ export namespace JsonAssertParseProgrammer {
21
21
  return ts.factory.createArrowFunction(
22
22
  undefined,
23
23
  undefined,
24
- [IdentifierFactory.parameter("input", TypeFactory.keyword("string"))],
24
+ [
25
+ IdentifierFactory.parameter("input", TypeFactory.keyword("string")),
26
+ AssertProgrammer.Guardian.parameter(init),
27
+ ],
25
28
  ts.factory.createTypeReferenceNode(
26
29
  `typia.Primitive<${
27
30
  name ?? TypeFactory.getFullName(project.checker)(type)
@@ -56,7 +59,10 @@ export namespace JsonAssertParseProgrammer {
56
59
  ts.factory.createCallExpression(
57
60
  ts.factory.createIdentifier("assert"),
58
61
  undefined,
59
- [ts.factory.createIdentifier("input")],
62
+ [
63
+ ts.factory.createIdentifier("input"),
64
+ AssertProgrammer.Guardian.identifier(),
65
+ ],
60
66
  ),
61
67
  ts.factory.createTypeReferenceNode("any"),
62
68
  ),
@@ -13,11 +13,14 @@ export namespace JsonAssertStringifyProgrammer {
13
13
  export const write =
14
14
  (project: IProject) =>
15
15
  (modulo: ts.LeftHandSideExpression) =>
16
- (type: ts.Type, name?: string) =>
16
+ (type: ts.Type, name?: string, init?: ts.Expression) =>
17
17
  ts.factory.createArrowFunction(
18
18
  undefined,
19
19
  undefined,
20
- [IdentifierFactory.parameter("input", TypeFactory.keyword("any"))],
20
+ [
21
+ IdentifierFactory.parameter("input", TypeFactory.keyword("any")),
22
+ AssertProgrammer.Guardian.parameter(init),
23
+ ],
21
24
  TypeFactory.keyword("string"),
22
25
  undefined,
23
26
  ts.factory.createBlock([
@@ -51,7 +54,10 @@ export namespace JsonAssertStringifyProgrammer {
51
54
  ts.factory.createCallExpression(
52
55
  ts.factory.createIdentifier("assert"),
53
56
  undefined,
54
- [ts.factory.createIdentifier("input")],
57
+ [
58
+ ts.factory.createIdentifier("input"),
59
+ AssertProgrammer.Guardian.identifier(),
60
+ ],
55
61
  ),
56
62
  ],
57
63
  ),
@@ -13,11 +13,14 @@ export namespace MiscAssertCloneProgrammer {
13
13
  export const write =
14
14
  (project: IProject) =>
15
15
  (modulo: ts.LeftHandSideExpression) =>
16
- (type: ts.Type, name?: string) =>
16
+ (type: ts.Type, name?: string, init?: ts.Expression) =>
17
17
  ts.factory.createArrowFunction(
18
18
  undefined,
19
19
  undefined,
20
- [IdentifierFactory.parameter("input", TypeFactory.keyword("any"))],
20
+ [
21
+ IdentifierFactory.parameter("input", TypeFactory.keyword("any")),
22
+ AssertProgrammer.Guardian.parameter(init),
23
+ ],
21
24
  ts.factory.createTypeReferenceNode(
22
25
  `typia.Resolved<${
23
26
  name ?? TypeFactory.getFullName(project.checker)(type)
@@ -44,7 +47,10 @@ export namespace MiscAssertCloneProgrammer {
44
47
  ts.factory.createCallExpression(
45
48
  ts.factory.createIdentifier("assert"),
46
49
  undefined,
47
- [ts.factory.createIdentifier("input")],
50
+ [
51
+ ts.factory.createIdentifier("input"),
52
+ AssertProgrammer.Guardian.identifier(),
53
+ ],
48
54
  ),
49
55
  ),
50
56
  StatementFactory.constant(
@@ -13,11 +13,14 @@ export namespace MiscAssertPruneProgrammer {
13
13
  export const write =
14
14
  (project: IProject) =>
15
15
  (modulo: ts.LeftHandSideExpression) =>
16
- (type: ts.Type, name?: string) =>
16
+ (type: ts.Type, name?: string, init?: ts.Expression) =>
17
17
  ts.factory.createArrowFunction(
18
18
  undefined,
19
19
  undefined,
20
- [IdentifierFactory.parameter("input", TypeFactory.keyword("any"))],
20
+ [
21
+ IdentifierFactory.parameter("input", TypeFactory.keyword("any")),
22
+ AssertProgrammer.Guardian.parameter(init),
23
+ ],
21
24
  ts.factory.createTypeReferenceNode(
22
25
  name ?? TypeFactory.getFullName(project.checker)(type),
23
26
  ),
@@ -42,7 +45,10 @@ export namespace MiscAssertPruneProgrammer {
42
45
  ts.factory.createCallExpression(
43
46
  ts.factory.createIdentifier("assert"),
44
47
  undefined,
45
- [ts.factory.createIdentifier("input")],
48
+ [
49
+ ts.factory.createIdentifier("input"),
50
+ AssertProgrammer.Guardian.identifier(),
51
+ ],
46
52
  ),
47
53
  ),
48
54
  ts.factory.createExpressionStatement(
@@ -14,11 +14,14 @@ export namespace NotationAssertGeneralProgrammer {
14
14
  (rename: (str: string) => string) =>
15
15
  (project: IProject) =>
16
16
  (modulo: ts.LeftHandSideExpression) =>
17
- (type: ts.Type, name?: string) =>
17
+ (type: ts.Type, name?: string, init?: ts.Expression) =>
18
18
  ts.factory.createArrowFunction(
19
19
  undefined,
20
20
  undefined,
21
- [IdentifierFactory.parameter("input", TypeFactory.keyword("any"))],
21
+ [
22
+ IdentifierFactory.parameter("input", TypeFactory.keyword("any")),
23
+ AssertProgrammer.Guardian.parameter(init),
24
+ ],
22
25
  ts.factory.createTypeReferenceNode(
23
26
  NotationGeneralProgrammer.returnType(rename)(
24
27
  name ?? TypeFactory.getFullName(project.checker)(type),
@@ -45,7 +48,10 @@ export namespace NotationAssertGeneralProgrammer {
45
48
  ts.factory.createCallExpression(
46
49
  ts.factory.createIdentifier("assert"),
47
50
  undefined,
48
- [ts.factory.createIdentifier("input")],
51
+ [
52
+ ts.factory.createIdentifier("input"),
53
+ AssertProgrammer.Guardian.identifier(),
54
+ ],
49
55
  ),
50
56
  ),
51
57
  StatementFactory.constant(
@@ -13,7 +13,7 @@ export namespace ProtobufAssertDecodeProgrammer {
13
13
  export const write =
14
14
  (project: IProject) =>
15
15
  (modulo: ts.LeftHandSideExpression) =>
16
- (type: ts.Type, name?: string) =>
16
+ (type: ts.Type, name?: string, init?: ts.Expression) =>
17
17
  ts.factory.createArrowFunction(
18
18
  undefined,
19
19
  undefined,
@@ -22,6 +22,7 @@ export namespace ProtobufAssertDecodeProgrammer {
22
22
  "input",
23
23
  ts.factory.createTypeReferenceNode("Uint8Array"),
24
24
  ),
25
+ AssertProgrammer.Guardian.parameter(init),
25
26
  ],
26
27
  ts.factory.createTypeReferenceNode(
27
28
  `typia.Resolved<${
@@ -65,7 +66,10 @@ export namespace ProtobufAssertDecodeProgrammer {
65
66
  ts.factory.createCallExpression(
66
67
  ts.factory.createIdentifier("assert"),
67
68
  undefined,
68
- [ts.factory.createIdentifier("output")],
69
+ [
70
+ ts.factory.createIdentifier("output"),
71
+ AssertProgrammer.Guardian.identifier(),
72
+ ],
69
73
  ),
70
74
  TypeFactory.keyword("any"),
71
75
  ),
@@ -13,11 +13,14 @@ export namespace ProtobufAssertEncodeProgrammer {
13
13
  export const write =
14
14
  (project: IProject) =>
15
15
  (modulo: ts.LeftHandSideExpression) =>
16
- (type: ts.Type, name?: string): ts.ArrowFunction =>
16
+ (type: ts.Type, name?: string, init?: ts.Expression): ts.ArrowFunction =>
17
17
  ts.factory.createArrowFunction(
18
18
  undefined,
19
19
  undefined,
20
- [IdentifierFactory.parameter("input", TypeFactory.keyword("any"))],
20
+ [
21
+ IdentifierFactory.parameter("input", TypeFactory.keyword("any")),
22
+ AssertProgrammer.Guardian.parameter(init),
23
+ ],
21
24
  ts.factory.createTypeReferenceNode("Uint8Array"),
22
25
  undefined,
23
26
  ts.factory.createBlock([
@@ -51,7 +54,10 @@ export namespace ProtobufAssertEncodeProgrammer {
51
54
  ts.factory.createCallExpression(
52
55
  ts.factory.createIdentifier("assert"),
53
56
  undefined,
54
- [ts.factory.createIdentifier("input")],
57
+ [
58
+ ts.factory.createIdentifier("input"),
59
+ AssertProgrammer.Guardian.identifier(),
60
+ ],
55
61
  ),
56
62
  ],
57
63
  ),
package/src/protobuf.ts CHANGED
@@ -2,6 +2,7 @@ import * as Namespace from "./functional/Namespace";
2
2
 
3
3
  import { IValidation } from "./IValidation";
4
4
  import { Resolved } from "./Resolved";
5
+ import { TypeGuardError } from "./TypeGuardError";
5
6
 
6
7
  /* ===========================================================
7
8
  PROTOCOL BUFFER
@@ -167,7 +168,10 @@ export { decodePure as decode };
167
168
  *
168
169
  * @author Jeongho Nam - https://github.com/samchon
169
170
  */
170
- function assertDecode(input: Uint8Array): never;
171
+ function assertDecode(
172
+ input: Uint8Array,
173
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
174
+ ): never;
171
175
 
172
176
  /**
173
177
  * Protocol Buffer Decoder wity type assertion, but not safe.
@@ -196,7 +200,10 @@ function assertDecode(input: Uint8Array): never;
196
200
  *
197
201
  * @author Jeongho Nam - https://github.com/samchon
198
202
  */
199
- function assertDecode<T>(input: Uint8Array): Resolved<T>;
203
+ function assertDecode<T>(
204
+ input: Uint8Array,
205
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
206
+ ): Resolved<T>;
200
207
 
201
208
  /**
202
209
  * @internal
@@ -443,7 +450,10 @@ export { encodePure as encode };
443
450
  *
444
451
  * @author Jeongho Nam - https://github.com/samchon
445
452
  */
446
- function assertEncode<T>(input: T): Uint8Array;
453
+ function assertEncode<T>(
454
+ input: T,
455
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
456
+ ): Uint8Array;
447
457
 
448
458
  /**
449
459
  * Protocol Buffer Encoder with type assertion.
@@ -476,7 +486,10 @@ function assertEncode<T>(input: T): Uint8Array;
476
486
  *
477
487
  * @author Jeongho Nam - https://github.com/samchon
478
488
  */
479
- function assertEncode<T>(input: unknown): Uint8Array;
489
+ function assertEncode<T>(
490
+ input: unknown,
491
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
492
+ ): Uint8Array;
480
493
 
481
494
  /**
482
495
  * @internal
@@ -742,7 +755,9 @@ export { createIsDecodePure as createIsDecode };
742
755
  *
743
756
  * @author Jeongho Nam - https://github.com/samchon
744
757
  */
745
- function createAssertDecode(): never;
758
+ function createAssertDecode(
759
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
760
+ ): never;
746
761
 
747
762
  /**
748
763
  * Creates a reusable {@link assertDecode} function.
@@ -752,7 +767,9 @@ function createAssertDecode(): never;
752
767
  *
753
768
  * @author Jeongho Nam - https://github.com/samchon
754
769
  */
755
- function createAssertDecode<T>(): (input: Uint8Array) => Resolved<T>;
770
+ function createAssertDecode<T>(
771
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
772
+ ): (input: Uint8Array) => Resolved<T>;
756
773
 
757
774
  /**
758
775
  * @internal
@@ -893,7 +910,9 @@ export { createIsEncodePure as createIsEncode };
893
910
  *
894
911
  * @author Jeongho Nam - https://github.com/samchon
895
912
  */
896
- function createAssertEncode(): never;
913
+ function createAssertEncode(
914
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
915
+ ): never;
897
916
 
898
917
  /**
899
918
  * Creates a reusable {@link assertEncode} function.
@@ -903,7 +922,9 @@ function createAssertEncode(): never;
903
922
  *
904
923
  * @author Jeongho Nam - https://github.com/samchon
905
924
  */
906
- function createAssertEncode<T>(): (input: T) => Uint8Array;
925
+ function createAssertEncode<T>(
926
+ errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
927
+ ): (input: T) => Uint8Array;
907
928
 
908
929
  /**
909
930
  * @internal
@@ -17,7 +17,7 @@ export namespace GenericTransformer {
17
17
  (modulo: ts.LeftHandSideExpression) =>
18
18
  (expression: ts.CallExpression) => {
19
19
  // CHECK PARAMETER
20
- if (expression.arguments.length !== 1)
20
+ if (expression.arguments.length === 0)
21
21
  throw new TransformerError({
22
22
  code: `typia.${method}`,
23
23
  message: `no input value.`,
@@ -51,7 +51,7 @@ export namespace GenericTransformer {
51
51
  : name(project.checker)(type)(node),
52
52
  ),
53
53
  undefined,
54
- [expression.arguments[0]!],
54
+ expression.arguments,
55
55
  );
56
56
  };
57
57
 
@@ -62,7 +62,11 @@ export namespace GenericTransformer {
62
62
  project: IProject,
63
63
  ) => (
64
64
  modulo: ts.LeftHandSideExpression,
65
- ) => (type: ts.Type, name: string) => ts.ArrowFunction,
65
+ ) => (
66
+ type: ts.Type,
67
+ name: string,
68
+ init?: ts.Expression,
69
+ ) => ts.ArrowFunction,
66
70
  ) =>
67
71
  (project: IProject) =>
68
72
  (modulo: ts.LeftHandSideExpression) =>
@@ -85,7 +89,11 @@ export namespace GenericTransformer {
85
89
  });
86
90
 
87
91
  // DO TRANSFORM
88
- return programmer(project)(modulo)(type, node.getFullText().trim());
92
+ return programmer(project)(modulo)(
93
+ type,
94
+ node.getFullText().trim(),
95
+ expression.arguments[0],
96
+ );
89
97
  };
90
98
 
91
99
  const name =