typia 5.3.0-dev.20231112 → 5.3.0-dev.20231117

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.
@@ -0,0 +1 @@
1
+ export type AssertionGuard<T> = (input: unknown) => asserts input is T;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=AssertionGuard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AssertionGuard.js","sourceRoot":"","sources":["../src/AssertionGuard.ts"],"names":[],"mappings":""}
package/lib/module.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { AssertionGuard } from "./AssertionGuard";
1
2
  import { IRandomGenerator } from "./IRandomGenerator";
2
3
  import { IValidation } from "./IValidation";
3
4
  import { Resolved } from "./Resolved";
@@ -11,6 +12,7 @@ export * as tags from "./tags";
11
12
  export * from "./schemas/json/IJsonApplication";
12
13
  export * from "./schemas/json/IJsonComponents";
13
14
  export * from "./schemas/json/IJsonSchema";
15
+ export * from "./AssertionGuard";
14
16
  export * from "./IRandomGenerator";
15
17
  export * from "./IValidation";
16
18
  export * from "./TypeGuardError";
@@ -29,6 +31,8 @@ export * from "./SnakeCase";
29
31
  * If what you want is not asserting but just knowing whether the parametric value is
30
32
  * following the type `T` or not, you can choose the {@link is} function instead.
31
33
  * Otherwise you want to know all the errors, {@link validate} is the way to go.
34
+ * Also, if you want to automatically cast the parametric value to the type `T`
35
+ * when no problem (perform the assertion guard of type).
32
36
  *
33
37
  * On the other and, if you don't want to allow any superfluous property that is not
34
38
  * enrolled to the type `T`, you can use {@link assertEquals} function instead.
@@ -63,6 +67,56 @@ export declare function assert<T>(input: T): T;
63
67
  * @author Jeongho Nam - https://github.com/samchon
64
68
  */
65
69
  export declare function assert<T>(input: unknown): T;
70
+ /**
71
+ * Assertion guard of a value type.
72
+ *
73
+ * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
74
+ * reason, if the parametric value is not following the type `T`. Otherwise, the
75
+ * value is following the type `T`, nothing would be returned, but the input value
76
+ * would be automatically casted to the type `T`. This is the concept of
77
+ * "assertion guard" of a value type.
78
+ *
79
+ * If what you want is not asserting but just knowing whether the parametric value is
80
+ * following the type `T` or not, you can choose the {@link is} function instead.
81
+ * Otherwise you want to know all the errors, {@link validate} is the way to go.
82
+ * Also, if you want to returns the parametric value when no problem, you can use
83
+ * {@link assert} function instead.
84
+ *
85
+ * On the other and, if you don't want to allow any superfluous property that is not
86
+ * enrolled to the type `T`, you can use {@link assertGuardEquals} function instead.
87
+ *
88
+ * @template T Type of the input value
89
+ * @param input A value to be asserted
90
+ * @throws A {@link TypeGuardError} instance with detailed reason
91
+ *
92
+ * @author Jeongho Nam - https://github.com/samchon
93
+ */
94
+ export declare function assertGuard<T>(input: T): asserts input is T;
95
+ /**
96
+ * Assertion guard of a value type.
97
+ *
98
+ * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
99
+ * reason, if the parametric value is not following the type `T`. Otherwise, the
100
+ * value is following the type `T`, nothing would be returned, but the input value
101
+ * would be automatically casted to the type `T`. This is the concept of
102
+ * "assertion guard" of a value type.
103
+ *
104
+ * If what you want is not asserting but just knowing whether the parametric value is
105
+ * following the type `T` or not, you can choose the {@link is} function instead.
106
+ * Otherwise you want to know all the errors, {@link validate} is the way to go.
107
+ * Also, if you want to returns the parametric value when no problem, you can use
108
+ * {@link assert} function instead.
109
+ *
110
+ * On the other and, if you don't want to allow any superfluous property that is not
111
+ * enrolled to the type `T`, you can use {@link assertGuardEquals} function instead.
112
+ *
113
+ * @template T Type of the input value
114
+ * @param input A value to be asserted
115
+ * @throws A {@link TypeGuardError} instance with detailed reason
116
+ *
117
+ * @author Jeongho Nam - https://github.com/samchon
118
+ */
119
+ export declare function assertGuard<T>(input: unknown): asserts input is T;
66
120
  /**
67
121
  * Tests a value type.
68
122
  *
@@ -205,6 +259,62 @@ export declare function assertEquals<T>(input: T): T;
205
259
  * @author Jeongho Nam - https://github.com/samchon
206
260
  */
207
261
  export declare function assertEquals<T>(input: unknown): T;
262
+ /**
263
+ * Assertion guard of a type with equality.
264
+ *
265
+ * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
266
+ * reason, if the parametric value is not following the type `T` or some superfluous
267
+ * property that is not listed on the type `T` has been found.
268
+ *
269
+ * Otherwise, the value is following the type `T` without any superfluous property,
270
+ * nothing would be returned, but the input value would be automatically casted to
271
+ * the type `T`. This is the concept of "assertion guard" of a value type.
272
+ *
273
+ * If what you want is not asserting but just knowing whether the parametric value is
274
+ * following the type `T` or not, you can choose the {@link equals} function instead.
275
+ * Otherwise, you want to know all the errors, {@link validateEquals} is the way to go.
276
+ * Also, if you want to returns the parametric value when no problem, you can use
277
+ * {@link assert} function instead.
278
+ *
279
+ * On the other hand, if you want to allow superfluous property that is not enrolled
280
+ * to the type `T`, you can use {@link assertEquals} function instead.
281
+ *
282
+ * @template T Type of the input value
283
+ * @param input A value to be asserted
284
+ * @returns Parametric input value casted as `T`
285
+ * @throws A {@link TypeGuardError} instance with detailed reason
286
+ *
287
+ * @author Jeongho Nam - https://github.com/samchon
288
+ */
289
+ export declare function assertGuardEquals<T>(input: T): asserts input is T;
290
+ /**
291
+ * Assertion guard of a type with equality.
292
+ *
293
+ * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
294
+ * reason, if the parametric value is not following the type `T` or some superfluous
295
+ * property that is not listed on the type `T` has been found.
296
+ *
297
+ * Otherwise, the value is following the type `T` without any superfluous property,
298
+ * nothing would be returned, but the input value would be automatically casted to
299
+ * the type `T`. This is the concept of "assertion guard" of a value type.
300
+ *
301
+ * If what you want is not asserting but just knowing whether the parametric value is
302
+ * following the type `T` or not, you can choose the {@link equals} function instead.
303
+ * Otherwise, you want to know all the errors, {@link validateEquals} is the way to go.
304
+ * Also, if you want to returns the parametric value when no problem, you can use
305
+ * {@link assertEquals} function instead.
306
+ *
307
+ * On the other hand, if you want to allow superfluous property that is not enrolled
308
+ * to the type `T`, you can use {@link assertGuard} function instead.
309
+ *
310
+ * @template T Type of the input value
311
+ * @param input A value to be asserted
312
+ * @returns Parametric input value casted as `T`
313
+ * @throws A {@link TypeGuardError} instance with detailed reason
314
+ *
315
+ * @author Jeongho Nam - https://github.com/samchon
316
+ */
317
+ export declare function assertGuardEquals<T>(input: unknown): asserts input is T;
208
318
  /**
209
319
  * Tests equality between a value and its type.
210
320
  *
@@ -358,6 +468,55 @@ export declare function createAssert(): never;
358
468
  * @author Jeongho Nam - https://github.com/samchon
359
469
  */
360
470
  export declare function createAssert<T>(): (input: unknown) => T;
471
+ /**
472
+ * Creates a reusable {@link assertGuard} function.
473
+ *
474
+ * Note that, you've to declare the variable type of the factory function caller
475
+ * like below. If you don't declare the variable type, compilation error be thrown.
476
+ * This is the special rule of the TypeScript compiler.
477
+ *
478
+ * ```typescript
479
+ * // MUST DECLARE THE VARIABLE TYPE
480
+ * const func: typia.AssertionGuard<number> = typia.createAssertGuard<number>();
481
+ *
482
+ * // IF NOT, COMPILATION ERROR BE OCCURED
483
+ * const func = typia.createAssertGuard<number>();
484
+ * ```
485
+ *
486
+ * > *Assertions require every name in the call target to be declared with an*
487
+ * > *explicit type annotation.*
488
+ *
489
+ * @danger You must configure the generic argument `T`
490
+ * @returns Nothing until you configure the generic argument `T`
491
+ * @throws compile error
492
+ *
493
+ * @author Jeongho Nam - https://github.com/samchon
494
+ */
495
+ export declare function createAssertGuard(): never;
496
+ /**
497
+ * Creates a reusable {@link assertGuard} function.
498
+ *
499
+ * Note that, you've to declare the variable type of the factory function caller
500
+ * like below. If you don't declare the variable type, compilation error be thrown.
501
+ * This is the special rule of the TypeScript compiler.
502
+ *
503
+ * ```typescript
504
+ * // MUST DECLARE THE VARIABLE TYPE
505
+ * const func: typia.AssertionGuard<number> = typia.createAssertGuard<number>();
506
+ *
507
+ * // IF NOT, COMPILATION ERROR BE OCCURED
508
+ * const func = typia.createAssertGuard<number>();
509
+ * ```
510
+ *
511
+ * > *Assertions require every name in the call target to be declared with an*
512
+ * > *explicit type annotation.*
513
+ *
514
+ * @returns Nothing until you configure the generic argument `T`
515
+ * @throws compile error
516
+ *
517
+ * @author Jeongho Nam - https://github.com/samchon
518
+ */
519
+ export declare function createAssertGuard<T>(): (input: unknown) => AssertionGuard<T>;
361
520
  /**
362
521
  * Creates a reusable {@link is} function.
363
522
  *
@@ -415,6 +574,55 @@ export declare function createAssertEquals(): never;
415
574
  * @author Jeongho Nam - https://github.com/samchon
416
575
  */
417
576
  export declare function createAssertEquals<T>(): (input: unknown) => T;
577
+ /**
578
+ * Creates a reusable {@link assertGuardEquals} function.
579
+ *
580
+ * Note that, you've to declare the variable type of the factory function caller
581
+ * like below. If you don't declare the variable type, compilation error be thrown.
582
+ * This is the special rule of the TypeScript compiler.
583
+ *
584
+ * ```typescript
585
+ * // MUST DECLARE THE VARIABLE TYPE
586
+ * const func: typia.AssertionGuard<number> = typia.createAssertGuardEquals<number>();
587
+ *
588
+ * // IF NOT, COMPILATION ERROR BE OCCURED
589
+ * const func = typia.createAssertGuardEquals<number>();
590
+ * ```
591
+ *
592
+ * > *Assertions require every name in the call target to be declared with an*
593
+ * > *explicit type annotation.*
594
+ *
595
+ * @danger You must configure the generic argument `T`
596
+ * @returns Nothing until you configure the generic argument `T`
597
+ * @throws compile error
598
+ *
599
+ * @author Jeongho Nam - https://github.com/samchon
600
+ */
601
+ export declare function createAssertGuardEquals(): never;
602
+ /**
603
+ * Creates a reusable {@link assertGuardEquals} function.
604
+ *
605
+ * Note that, you've to declare the variable type of the factory function caller
606
+ * like below. If you don't declare the variable type, compilation error be thrown.
607
+ * This is the special rule of the TypeScript compiler.
608
+ *
609
+ * ```typescript
610
+ * // MUST DECLARE THE VARIABLE TYPE
611
+ * const func: typia.AssertionGuard<number> = typia.createAssertGuardEquals<number>();
612
+ *
613
+ * // IF NOT, COMPILATION ERROR BE OCCURED
614
+ * const func = typia.createAssertGuardEquals<number>();
615
+ * ```
616
+ *
617
+ * > *Assertions require every name in the call target to be declared with an*
618
+ * > *explicit type annotation.*
619
+ *
620
+ * @returns Nothing until you configure the generic argument `T`
621
+ * @throws compile error
622
+ *
623
+ * @author Jeongho Nam - https://github.com/samchon
624
+ */
625
+ export declare function createAssertGuardEquals<T>(): (input: unknown) => AssertionGuard<T>;
418
626
  /**
419
627
  * Creates a reusable {@link equals} function.
420
628
  *
package/lib/module.js CHANGED
@@ -26,7 +26,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
26
26
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.createRandom = exports.createValidateEquals = exports.createEquals = exports.createAssertEquals = exports.createValidate = exports.createIs = exports.createAssert = exports.random = exports.validateEquals = exports.equals = exports.assertEquals = exports.validate = exports.is = exports.assert = exports.tags = exports.reflect = exports.protobuf = exports.notations = exports.misc = exports.json = exports.http = void 0;
29
+ exports.createRandom = exports.createValidateEquals = exports.createEquals = exports.createAssertGuardEquals = exports.createAssertEquals = exports.createValidate = exports.createIs = exports.createAssertGuard = exports.createAssert = exports.random = exports.validateEquals = exports.equals = exports.assertGuardEquals = exports.assertEquals = exports.validate = exports.is = exports.assertGuard = exports.assert = exports.tags = exports.reflect = exports.protobuf = exports.notations = exports.misc = exports.json = exports.http = void 0;
30
30
  var Namespace_1 = require("./functional/Namespace");
31
31
  exports.http = __importStar(require("./http"));
32
32
  exports.json = __importStar(require("./json"));
@@ -38,6 +38,7 @@ exports.tags = __importStar(require("./tags"));
38
38
  __exportStar(require("./schemas/json/IJsonApplication"), exports);
39
39
  __exportStar(require("./schemas/json/IJsonComponents"), exports);
40
40
  __exportStar(require("./schemas/json/IJsonSchema"), exports);
41
+ __exportStar(require("./AssertionGuard"), exports);
41
42
  __exportStar(require("./IRandomGenerator"), exports);
42
43
  __exportStar(require("./IValidation"), exports);
43
44
  __exportStar(require("./TypeGuardError"), exports);
@@ -51,6 +52,11 @@ function assert() {
51
52
  }
52
53
  exports.assert = assert;
53
54
  Object.assign(assert, Namespace_1.Namespace.assert("assert"));
55
+ function assertGuard() {
56
+ halt("assertGuard");
57
+ }
58
+ exports.assertGuard = assertGuard;
59
+ Object.assign(assertGuard, Namespace_1.Namespace.assert("assertGuard"));
54
60
  function is() {
55
61
  halt("is");
56
62
  }
@@ -66,6 +72,11 @@ function assertEquals() {
66
72
  }
67
73
  exports.assertEquals = assertEquals;
68
74
  Object.assign(assertEquals, Namespace_1.Namespace.assert("assertEquals"));
75
+ function assertGuardEquals() {
76
+ halt("assertGuardEquals");
77
+ }
78
+ exports.assertGuardEquals = assertGuardEquals;
79
+ Object.assign(assertGuardEquals, Namespace_1.Namespace.assert("assertGuardEquals"));
69
80
  function equals() {
70
81
  halt("equals");
71
82
  }
@@ -86,6 +97,11 @@ function createAssert() {
86
97
  }
87
98
  exports.createAssert = createAssert;
88
99
  Object.assign(createAssert, assert);
100
+ function createAssertGuard() {
101
+ halt("createAssertGuard");
102
+ }
103
+ exports.createAssertGuard = createAssertGuard;
104
+ Object.assign(createAssertGuard, assertGuard);
89
105
  function createIs() {
90
106
  halt("createIs");
91
107
  }
@@ -101,6 +117,11 @@ function createAssertEquals() {
101
117
  }
102
118
  exports.createAssertEquals = createAssertEquals;
103
119
  Object.assign(createAssertEquals, assertEquals);
120
+ function createAssertGuardEquals() {
121
+ halt("createAssertGuardEquals");
122
+ }
123
+ exports.createAssertGuardEquals = createAssertGuardEquals;
124
+ Object.assign(createAssertGuardEquals, assertGuardEquals);
104
125
  function createEquals() {
105
126
  halt("createEquals");
106
127
  }
package/lib/module.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,8 @@
1
1
  import ts from "typescript";
2
2
  import { IProject } from "../transformers/IProject";
3
3
  export declare namespace AssertProgrammer {
4
- const write: (project: IProject) => (modulo: ts.LeftHandSideExpression) => (equals: boolean) => (type: ts.Type, name?: string) => ts.ArrowFunction;
4
+ const write: (project: IProject) => (modulo: ts.LeftHandSideExpression) => (props: boolean | {
5
+ equals: boolean;
6
+ guard: boolean;
7
+ }) => (type: ts.Type, name?: string) => ts.ArrowFunction;
5
8
  }
@@ -42,16 +42,18 @@ var AssertProgrammer;
42
42
  (function (AssertProgrammer) {
43
43
  AssertProgrammer.write = function (project) {
44
44
  return function (modulo) {
45
- return function (equals) {
45
+ return function (props) {
46
46
  return function (type, name) {
47
+ if (typeof props === "boolean")
48
+ props = { equals: props, guard: false };
47
49
  var importer = new FunctionImporeter_1.FunctionImporter(modulo.getText());
48
- var is = IsProgrammer_1.IsProgrammer.write(project)(modulo, true)(equals)(type, name !== null && name !== void 0 ? name : TypeFactory_1.TypeFactory.getFullName(project.checker)(type));
50
+ var is = IsProgrammer_1.IsProgrammer.write(project)(modulo, true)(props.equals)(type, name !== null && name !== void 0 ? name : TypeFactory_1.TypeFactory.getFullName(project.checker)(type));
49
51
  var assert = CheckerProgrammer_1.CheckerProgrammer.write(project)({
50
52
  prefix: "$a",
51
53
  path: true,
52
54
  trace: true,
53
55
  numeric: OptionPredicator_1.OptionPredicator.numeric(project.options),
54
- equals: equals,
56
+ equals: props.equals,
55
57
  atomist: function (explore) { return function (entry) { return function (input) {
56
58
  return __spreadArray(__spreadArray([], __read((entry.expression ? [entry.expression] : [])), false), __read((entry.conditions.length === 0
57
59
  ? []
@@ -81,22 +83,27 @@ var AssertProgrammer;
81
83
  : "_path"), entry.expected, input)),
82
84
  ])), false).reduce(function (x, y) { return typescript_1.default.factory.createLogicalAnd(x, y); });
83
85
  }; }; },
84
- combiner: combiner(equals)(project)(importer),
85
- joiner: joiner(equals)(project)(importer),
86
+ combiner: combiner(props.equals)(project)(importer),
87
+ joiner: joiner(props.equals)(project)(importer),
86
88
  success: typescript_1.default.factory.createTrue(),
87
89
  addition: function () { return importer.declare(modulo); },
88
90
  })(importer)(type, name);
89
91
  return typescript_1.default.factory.createArrowFunction(undefined, undefined, [
90
92
  IdentifierFactory_1.IdentifierFactory.parameter("input", TypeFactory_1.TypeFactory.keyword("any")),
91
- ], typescript_1.default.factory.createTypeReferenceNode(name !== null && name !== void 0 ? name : TypeFactory_1.TypeFactory.getFullName(project.checker)(type)), undefined, typescript_1.default.factory.createBlock([
93
+ ], props.guard
94
+ ? typescript_1.default.factory.createTypePredicateNode(typescript_1.default.factory.createToken(typescript_1.default.SyntaxKind.AssertsKeyword), typescript_1.default.factory.createIdentifier("input"), typescript_1.default.factory.createTypeReferenceNode(name !== null && name !== void 0 ? name : TypeFactory_1.TypeFactory.getFullName(project.checker)(type)))
95
+ : typescript_1.default.factory.createTypeReferenceNode(name !== null && name !== void 0 ? name : TypeFactory_1.TypeFactory.getFullName(project.checker)(type)), undefined, typescript_1.default.factory.createBlock(__spreadArray([
92
96
  StatementFactory_1.StatementFactory.constant("__is", is),
93
97
  typescript_1.default.factory.createIfStatement(typescript_1.default.factory.createStrictEquality(typescript_1.default.factory.createFalse(), typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier("__is"), undefined, [typescript_1.default.factory.createIdentifier("input")])), typescript_1.default.factory.createExpressionStatement(typescript_1.default.factory.createCallExpression(assert, undefined, [
94
98
  typescript_1.default.factory.createIdentifier("input"),
95
99
  typescript_1.default.factory.createStringLiteral("$input"),
96
100
  typescript_1.default.factory.createTrue(),
97
- ])), undefined),
98
- typescript_1.default.factory.createReturnStatement(typescript_1.default.factory.createIdentifier("input")),
99
- ], true));
101
+ ])), undefined)
102
+ ], __read((props.guard === false
103
+ ? [
104
+ typescript_1.default.factory.createReturnStatement(typescript_1.default.factory.createIdentifier("input")),
105
+ ]
106
+ : [])), false), true));
100
107
  };
101
108
  };
102
109
  };
@@ -1 +1 @@
1
- {"version":3,"file":"AssertProgrammer.js","sourceRoot":"","sources":["../../src/programmers/AssertProgrammer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AssertProgrammer.js","sourceRoot":"","sources":["../../src/programmers/AssertProgrammer.ts"],"names":[],"mappings":"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"}
@@ -126,20 +126,44 @@ var CallExpressionTransformer;
126
126
  })(CallExpressionTransformer || (exports.CallExpressionTransformer = CallExpressionTransformer = {}));
127
127
  var FUNCTORS = {
128
128
  module: {
129
- assert: function () { return AssertTransformer_1.AssertTransformer.transform(false); },
130
- assertType: function () { return AssertTransformer_1.AssertTransformer.transform(false); },
129
+ assert: function () {
130
+ return AssertTransformer_1.AssertTransformer.transform({ equals: false, guard: false });
131
+ },
132
+ assertGuard: function () {
133
+ return AssertTransformer_1.AssertTransformer.transform({ equals: false, guard: true });
134
+ },
135
+ assertType: function () {
136
+ return AssertTransformer_1.AssertTransformer.transform({ equals: false, guard: false });
137
+ },
131
138
  is: function () { return IsTransformer_1.IsTransformer.transform(false); },
132
139
  validate: function () { return ValidateTransformer_1.ValidateTransformer.transform(false); },
133
- assertEquals: function () { return AssertTransformer_1.AssertTransformer.transform(true); },
140
+ assertEquals: function () {
141
+ return AssertTransformer_1.AssertTransformer.transform({ equals: true, guard: false });
142
+ },
143
+ assertGuardEquals: function () {
144
+ return AssertTransformer_1.AssertTransformer.transform({ equals: true, guard: true });
145
+ },
134
146
  equals: function () { return IsTransformer_1.IsTransformer.transform(true); },
135
147
  validateEquals: function () { return ValidateTransformer_1.ValidateTransformer.transform(true); },
136
148
  random: function () { return RandomTransformer_1.RandomTransformer.transform; },
137
149
  metadata: function () { return ReflectMetadataTransformer_1.ReflectMetadataTransformer.transform; },
138
- createAssert: function () { return CreateAssertTransformer_1.CreateAssertTransformer.transform(false); },
139
- createAssertType: function () { return CreateAssertTransformer_1.CreateAssertTransformer.transform(false); },
150
+ createAssert: function () {
151
+ return CreateAssertTransformer_1.CreateAssertTransformer.transform({ equals: false, guard: false });
152
+ },
153
+ createAssertGuard: function () {
154
+ return CreateAssertTransformer_1.CreateAssertTransformer.transform({ equals: false, guard: true });
155
+ },
156
+ createAssertType: function () {
157
+ return CreateAssertTransformer_1.CreateAssertTransformer.transform({ equals: false, guard: false });
158
+ },
140
159
  createIs: function () { return CreateIsTransformer_1.CreateIsTransformer.transform(false); },
141
160
  createValidate: function () { return CreateValidateTransformer_1.CreateValidateTransformer.transform(false); },
142
- createAssertEquals: function () { return CreateAssertTransformer_1.CreateAssertTransformer.transform(true); },
161
+ createAssertEquals: function () {
162
+ return CreateAssertTransformer_1.CreateAssertTransformer.transform({ equals: true, guard: false });
163
+ },
164
+ createAssertGuardEquals: function () {
165
+ return CreateAssertTransformer_1.CreateAssertTransformer.transform({ equals: true, guard: true });
166
+ },
143
167
  createEquals: function () { return CreateIsTransformer_1.CreateIsTransformer.transform(true); },
144
168
  createValidateEquals: function () { return CreateValidateTransformer_1.CreateValidateTransformer.transform(true); },
145
169
  createRandom: function () { return CreateRandomTransformer_1.CreateRandomTransformer.transform; },
@@ -1 +1 @@
1
- {"version":3,"file":"CallExpressionTransformer.js","sourceRoot":"","sources":["../../src/transformers/CallExpressionTransformer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CallExpressionTransformer.js","sourceRoot":"","sources":["../../src/transformers/CallExpressionTransformer.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,7 @@
1
1
  /// <reference types="ts-expose-internals/typescript" />
2
2
  export declare namespace AssertTransformer {
3
- const transform: (equals: boolean) => (project: import("../IProject").IProject) => (modulo: import("typescript").LeftHandSideExpression) => (expression: import("typescript").CallExpression) => import("typescript").CallExpression;
3
+ const transform: (props: {
4
+ equals: boolean;
5
+ guard: boolean;
6
+ }) => (project: import("../IProject").IProject) => (modulo: import("typescript").LeftHandSideExpression) => (expression: import("typescript").CallExpression) => import("typescript").CallExpression;
4
7
  }
@@ -5,9 +5,15 @@ var AssertProgrammer_1 = require("../../programmers/AssertProgrammer");
5
5
  var GenericTransformer_1 = require("../internal/GenericTransformer");
6
6
  var AssertTransformer;
7
7
  (function (AssertTransformer) {
8
- AssertTransformer.transform = function (equals) {
9
- return GenericTransformer_1.GenericTransformer.scalar(equals ? "assertEquals" : "assert")(function (project) { return function (modulo) {
10
- return AssertProgrammer_1.AssertProgrammer.write(project)(modulo)(equals);
8
+ AssertTransformer.transform = function (props) {
9
+ return GenericTransformer_1.GenericTransformer.scalar(props.equals
10
+ ? props.guard
11
+ ? "assertGuardEquals"
12
+ : "assertEquals"
13
+ : props.guard
14
+ ? "assertGuard"
15
+ : "assert")(function (project) { return function (modulo) {
16
+ return AssertProgrammer_1.AssertProgrammer.write(project)(modulo)(props);
11
17
  }; });
12
18
  };
13
19
  })(AssertTransformer || (exports.AssertTransformer = AssertTransformer = {}));
@@ -1 +1 @@
1
- {"version":3,"file":"AssertTransformer.js","sourceRoot":"","sources":["../../../src/transformers/features/AssertTransformer.ts"],"names":[],"mappings":";;;AAAA,uEAAsE;AAEtE,qEAAoE;AAEpE,IAAiB,iBAAiB,CAMjC;AAND,WAAiB,iBAAiB;IACjB,2BAAS,GAAG,UAAC,MAAe;QACrC,OAAA,uCAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CACzD,UAAC,OAAO,IAAK,OAAA,UAAC,MAAM;YAChB,OAAA,mCAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;QAA/C,CAA+C,EADtC,CACsC,CACtD;IAHD,CAGC,CAAC;AACV,CAAC,EANgB,iBAAiB,iCAAjB,iBAAiB,QAMjC"}
1
+ {"version":3,"file":"AssertTransformer.js","sourceRoot":"","sources":["../../../src/transformers/features/AssertTransformer.ts"],"names":[],"mappings":";;;AAAA,uEAAsE;AAEtE,qEAAoE;AAEpE,IAAiB,iBAAiB,CAcjC;AAdD,WAAiB,iBAAiB;IACjB,2BAAS,GAAG,UAAC,KAA0C;QAChE,OAAA,uCAAkB,CAAC,MAAM,CACrB,KAAK,CAAC,MAAM;YACR,CAAC,CAAC,KAAK,CAAC,KAAK;gBACT,CAAC,CAAC,mBAAmB;gBACrB,CAAC,CAAC,cAAc;YACpB,CAAC,CAAC,KAAK,CAAC,KAAK;gBACb,CAAC,CAAC,aAAa;gBACf,CAAC,CAAC,QAAQ,CACjB,CACG,UAAC,OAAO,IAAK,OAAA,UAAC,MAAM;YAChB,OAAA,mCAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC;QAA9C,CAA8C,EADrC,CACqC,CACrD;IAXD,CAWC,CAAC;AACV,CAAC,EAdgB,iBAAiB,iCAAjB,iBAAiB,QAcjC"}
@@ -1,4 +1,7 @@
1
1
  /// <reference types="ts-expose-internals/typescript" />
2
2
  export declare namespace CreateAssertTransformer {
3
- const transform: (equals: boolean) => (project: import("../IProject").IProject) => (modulo: import("typescript").LeftHandSideExpression) => (expression: import("typescript").CallExpression) => import("typescript").ArrowFunction;
3
+ const transform: (props: {
4
+ equals: boolean;
5
+ guard: boolean;
6
+ }) => (project: import("../IProject").IProject) => (modulo: import("typescript").LeftHandSideExpression) => (expression: import("typescript").CallExpression) => import("typescript").ArrowFunction;
4
7
  }
@@ -5,9 +5,15 @@ var AssertProgrammer_1 = require("../../programmers/AssertProgrammer");
5
5
  var GenericTransformer_1 = require("../internal/GenericTransformer");
6
6
  var CreateAssertTransformer;
7
7
  (function (CreateAssertTransformer) {
8
- CreateAssertTransformer.transform = function (equals) {
9
- return GenericTransformer_1.GenericTransformer.factory(equals ? "createAssertEquals" : "createAssert")(function (project) { return function (modulo) {
10
- return AssertProgrammer_1.AssertProgrammer.write(project)(modulo)(equals);
8
+ CreateAssertTransformer.transform = function (props) {
9
+ return GenericTransformer_1.GenericTransformer.factory(props.equals
10
+ ? props.guard
11
+ ? "createAssertGuardEquals"
12
+ : "createAssertEquals"
13
+ : props.guard
14
+ ? "createAssertGuard"
15
+ : "createAssert")(function (project) { return function (modulo) {
16
+ return AssertProgrammer_1.AssertProgrammer.write(project)(modulo)(props);
11
17
  }; });
12
18
  };
13
19
  })(CreateAssertTransformer || (exports.CreateAssertTransformer = CreateAssertTransformer = {}));
@@ -1 +1 @@
1
- {"version":3,"file":"CreateAssertTransformer.js","sourceRoot":"","sources":["../../../src/transformers/features/CreateAssertTransformer.ts"],"names":[],"mappings":";;;AAAA,uEAAsE;AAEtE,qEAAoE;AAEpE,IAAiB,uBAAuB,CAQvC;AARD,WAAiB,uBAAuB;IACvB,iCAAS,GAAG,UAAC,MAAe;QACrC,OAAA,uCAAkB,CAAC,OAAO,CACtB,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,cAAc,CACjD,CACG,UAAC,OAAO,IAAK,OAAA,UAAC,MAAM;YAChB,OAAA,mCAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;QAA/C,CAA+C,EADtC,CACsC,CACtD;IALD,CAKC,CAAC;AACV,CAAC,EARgB,uBAAuB,uCAAvB,uBAAuB,QAQvC"}
1
+ {"version":3,"file":"CreateAssertTransformer.js","sourceRoot":"","sources":["../../../src/transformers/features/CreateAssertTransformer.ts"],"names":[],"mappings":";;;AAAA,uEAAsE;AAEtE,qEAAoE;AAEpE,IAAiB,uBAAuB,CAcvC;AAdD,WAAiB,uBAAuB;IACvB,iCAAS,GAAG,UAAC,KAA0C;QAChE,OAAA,uCAAkB,CAAC,OAAO,CACtB,KAAK,CAAC,MAAM;YACR,CAAC,CAAC,KAAK,CAAC,KAAK;gBACT,CAAC,CAAC,yBAAyB;gBAC3B,CAAC,CAAC,oBAAoB;YAC1B,CAAC,CAAC,KAAK,CAAC,KAAK;gBACb,CAAC,CAAC,mBAAmB;gBACrB,CAAC,CAAC,cAAc,CACvB,CACG,UAAC,OAAO,IAAK,OAAA,UAAC,MAAM;YAChB,OAAA,mCAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC;QAA9C,CAA8C,EADrC,CACqC,CACrD;IAXD,CAWC,CAAC;AACV,CAAC,EAdgB,uBAAuB,uCAAvB,uBAAuB,QAcvC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "typia",
3
- "version": "5.3.0-dev.20231112",
3
+ "version": "5.3.0-dev.20231117",
4
4
  "description": "Superfast runtime validators with only one line",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
@@ -0,0 +1 @@
1
+ export type AssertionGuard<T> = (input: unknown) => asserts input is T;
package/src/module.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { Namespace } from "./functional/Namespace";
2
2
 
3
+ import { AssertionGuard } from "./AssertionGuard";
3
4
  import { IRandomGenerator } from "./IRandomGenerator";
4
5
  import { IValidation } from "./IValidation";
5
6
  import { Resolved } from "./Resolved";
@@ -15,6 +16,7 @@ export * as tags from "./tags";
15
16
  export * from "./schemas/json/IJsonApplication";
16
17
  export * from "./schemas/json/IJsonComponents";
17
18
  export * from "./schemas/json/IJsonSchema";
19
+ export * from "./AssertionGuard";
18
20
  export * from "./IRandomGenerator";
19
21
  export * from "./IValidation";
20
22
  export * from "./TypeGuardError";
@@ -38,6 +40,8 @@ export * from "./SnakeCase";
38
40
  * If what you want is not asserting but just knowing whether the parametric value is
39
41
  * following the type `T` or not, you can choose the {@link is} function instead.
40
42
  * Otherwise you want to know all the errors, {@link validate} is the way to go.
43
+ * Also, if you want to automatically cast the parametric value to the type `T`
44
+ * when no problem (perform the assertion guard of type).
41
45
  *
42
46
  * On the other and, if you don't want to allow any superfluous property that is not
43
47
  * enrolled to the type `T`, you can use {@link assertEquals} function instead.
@@ -82,6 +86,66 @@ export function assert(): never {
82
86
  }
83
87
  Object.assign(assert, Namespace.assert("assert"));
84
88
 
89
+ /**
90
+ * Assertion guard of a value type.
91
+ *
92
+ * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
93
+ * reason, if the parametric value is not following the type `T`. Otherwise, the
94
+ * value is following the type `T`, nothing would be returned, but the input value
95
+ * would be automatically casted to the type `T`. This is the concept of
96
+ * "assertion guard" of a value type.
97
+ *
98
+ * If what you want is not asserting but just knowing whether the parametric value is
99
+ * following the type `T` or not, you can choose the {@link is} function instead.
100
+ * Otherwise you want to know all the errors, {@link validate} is the way to go.
101
+ * Also, if you want to returns the parametric value when no problem, you can use
102
+ * {@link assert} function instead.
103
+ *
104
+ * On the other and, if you don't want to allow any superfluous property that is not
105
+ * enrolled to the type `T`, you can use {@link assertGuardEquals} function instead.
106
+ *
107
+ * @template T Type of the input value
108
+ * @param input A value to be asserted
109
+ * @throws A {@link TypeGuardError} instance with detailed reason
110
+ *
111
+ * @author Jeongho Nam - https://github.com/samchon
112
+ */
113
+ export function assertGuard<T>(input: T): asserts input is T;
114
+
115
+ /**
116
+ * Assertion guard of a value type.
117
+ *
118
+ * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
119
+ * reason, if the parametric value is not following the type `T`. Otherwise, the
120
+ * value is following the type `T`, nothing would be returned, but the input value
121
+ * would be automatically casted to the type `T`. This is the concept of
122
+ * "assertion guard" of a value type.
123
+ *
124
+ * If what you want is not asserting but just knowing whether the parametric value is
125
+ * following the type `T` or not, you can choose the {@link is} function instead.
126
+ * Otherwise you want to know all the errors, {@link validate} is the way to go.
127
+ * Also, if you want to returns the parametric value when no problem, you can use
128
+ * {@link assert} function instead.
129
+ *
130
+ * On the other and, if you don't want to allow any superfluous property that is not
131
+ * enrolled to the type `T`, you can use {@link assertGuardEquals} function instead.
132
+ *
133
+ * @template T Type of the input value
134
+ * @param input A value to be asserted
135
+ * @throws A {@link TypeGuardError} instance with detailed reason
136
+ *
137
+ * @author Jeongho Nam - https://github.com/samchon
138
+ */
139
+ export function assertGuard<T>(input: unknown): asserts input is T;
140
+
141
+ /**
142
+ * @internal
143
+ */
144
+ export function assertGuard(): never {
145
+ halt("assertGuard");
146
+ }
147
+ Object.assign(assertGuard, Namespace.assert("assertGuard"));
148
+
85
149
  /**
86
150
  * Tests a value type.
87
151
  *
@@ -257,6 +321,72 @@ export function assertEquals(): never {
257
321
  }
258
322
  Object.assign(assertEquals, Namespace.assert("assertEquals"));
259
323
 
324
+ /**
325
+ * Assertion guard of a type with equality.
326
+ *
327
+ * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
328
+ * reason, if the parametric value is not following the type `T` or some superfluous
329
+ * property that is not listed on the type `T` has been found.
330
+ *
331
+ * Otherwise, the value is following the type `T` without any superfluous property,
332
+ * nothing would be returned, but the input value would be automatically casted to
333
+ * the type `T`. This is the concept of "assertion guard" of a value type.
334
+ *
335
+ * If what you want is not asserting but just knowing whether the parametric value is
336
+ * following the type `T` or not, you can choose the {@link equals} function instead.
337
+ * Otherwise, you want to know all the errors, {@link validateEquals} is the way to go.
338
+ * Also, if you want to returns the parametric value when no problem, you can use
339
+ * {@link assert} function instead.
340
+ *
341
+ * On the other hand, if you want to allow superfluous property that is not enrolled
342
+ * to the type `T`, you can use {@link assertEquals} function instead.
343
+ *
344
+ * @template T Type of the input value
345
+ * @param input A value to be asserted
346
+ * @returns Parametric input value casted as `T`
347
+ * @throws A {@link TypeGuardError} instance with detailed reason
348
+ *
349
+ * @author Jeongho Nam - https://github.com/samchon
350
+ */
351
+ export function assertGuardEquals<T>(input: T): asserts input is T;
352
+
353
+ /**
354
+ * Assertion guard of a type with equality.
355
+ *
356
+ * Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
357
+ * reason, if the parametric value is not following the type `T` or some superfluous
358
+ * property that is not listed on the type `T` has been found.
359
+ *
360
+ * Otherwise, the value is following the type `T` without any superfluous property,
361
+ * nothing would be returned, but the input value would be automatically casted to
362
+ * the type `T`. This is the concept of "assertion guard" of a value type.
363
+ *
364
+ * If what you want is not asserting but just knowing whether the parametric value is
365
+ * following the type `T` or not, you can choose the {@link equals} function instead.
366
+ * Otherwise, you want to know all the errors, {@link validateEquals} is the way to go.
367
+ * Also, if you want to returns the parametric value when no problem, you can use
368
+ * {@link assertEquals} function instead.
369
+ *
370
+ * On the other hand, if you want to allow superfluous property that is not enrolled
371
+ * to the type `T`, you can use {@link assertGuard} function instead.
372
+ *
373
+ * @template T Type of the input value
374
+ * @param input A value to be asserted
375
+ * @returns Parametric input value casted as `T`
376
+ * @throws A {@link TypeGuardError} instance with detailed reason
377
+ *
378
+ * @author Jeongho Nam - https://github.com/samchon
379
+ */
380
+ export function assertGuardEquals<T>(input: unknown): asserts input is T;
381
+
382
+ /**
383
+ * @internal
384
+ */
385
+ export function assertGuardEquals(): never {
386
+ halt("assertGuardEquals");
387
+ }
388
+ Object.assign(assertGuardEquals, Namespace.assert("assertGuardEquals"));
389
+
260
390
  /**
261
391
  * Tests equality between a value and its type.
262
392
  *
@@ -456,6 +586,65 @@ export function createAssert<T>(): (input: unknown) => T {
456
586
  }
457
587
  Object.assign(createAssert, assert);
458
588
 
589
+ /**
590
+ * Creates a reusable {@link assertGuard} function.
591
+ *
592
+ * Note that, you've to declare the variable type of the factory function caller
593
+ * like below. If you don't declare the variable type, compilation error be thrown.
594
+ * This is the special rule of the TypeScript compiler.
595
+ *
596
+ * ```typescript
597
+ * // MUST DECLARE THE VARIABLE TYPE
598
+ * const func: typia.AssertionGuard<number> = typia.createAssertGuard<number>();
599
+ *
600
+ * // IF NOT, COMPILATION ERROR BE OCCURED
601
+ * const func = typia.createAssertGuard<number>();
602
+ * ```
603
+ *
604
+ * > *Assertions require every name in the call target to be declared with an*
605
+ * > *explicit type annotation.*
606
+ *
607
+ * @danger You must configure the generic argument `T`
608
+ * @returns Nothing until you configure the generic argument `T`
609
+ * @throws compile error
610
+ *
611
+ * @author Jeongho Nam - https://github.com/samchon
612
+ */
613
+ export function createAssertGuard(): never;
614
+
615
+ /**
616
+ * Creates a reusable {@link assertGuard} function.
617
+ *
618
+ * Note that, you've to declare the variable type of the factory function caller
619
+ * like below. If you don't declare the variable type, compilation error be thrown.
620
+ * This is the special rule of the TypeScript compiler.
621
+ *
622
+ * ```typescript
623
+ * // MUST DECLARE THE VARIABLE TYPE
624
+ * const func: typia.AssertionGuard<number> = typia.createAssertGuard<number>();
625
+ *
626
+ * // IF NOT, COMPILATION ERROR BE OCCURED
627
+ * const func = typia.createAssertGuard<number>();
628
+ * ```
629
+ *
630
+ * > *Assertions require every name in the call target to be declared with an*
631
+ * > *explicit type annotation.*
632
+ *
633
+ * @returns Nothing until you configure the generic argument `T`
634
+ * @throws compile error
635
+ *
636
+ * @author Jeongho Nam - https://github.com/samchon
637
+ */
638
+ export function createAssertGuard<T>(): (input: unknown) => AssertionGuard<T>;
639
+
640
+ /**
641
+ * @internal
642
+ */
643
+ export function createAssertGuard<T>(): (input: unknown) => AssertionGuard<T> {
644
+ halt("createAssertGuard");
645
+ }
646
+ Object.assign(createAssertGuard, assertGuard);
647
+
459
648
  /**
460
649
  * Creates a reusable {@link is} function.
461
650
  *
@@ -543,6 +732,69 @@ export function createAssertEquals<T>(): (input: unknown) => T {
543
732
  }
544
733
  Object.assign(createAssertEquals, assertEquals);
545
734
 
735
+ /**
736
+ * Creates a reusable {@link assertGuardEquals} function.
737
+ *
738
+ * Note that, you've to declare the variable type of the factory function caller
739
+ * like below. If you don't declare the variable type, compilation error be thrown.
740
+ * This is the special rule of the TypeScript compiler.
741
+ *
742
+ * ```typescript
743
+ * // MUST DECLARE THE VARIABLE TYPE
744
+ * const func: typia.AssertionGuard<number> = typia.createAssertGuardEquals<number>();
745
+ *
746
+ * // IF NOT, COMPILATION ERROR BE OCCURED
747
+ * const func = typia.createAssertGuardEquals<number>();
748
+ * ```
749
+ *
750
+ * > *Assertions require every name in the call target to be declared with an*
751
+ * > *explicit type annotation.*
752
+ *
753
+ * @danger You must configure the generic argument `T`
754
+ * @returns Nothing until you configure the generic argument `T`
755
+ * @throws compile error
756
+ *
757
+ * @author Jeongho Nam - https://github.com/samchon
758
+ */
759
+ export function createAssertGuardEquals(): never;
760
+
761
+ /**
762
+ * Creates a reusable {@link assertGuardEquals} function.
763
+ *
764
+ * Note that, you've to declare the variable type of the factory function caller
765
+ * like below. If you don't declare the variable type, compilation error be thrown.
766
+ * This is the special rule of the TypeScript compiler.
767
+ *
768
+ * ```typescript
769
+ * // MUST DECLARE THE VARIABLE TYPE
770
+ * const func: typia.AssertionGuard<number> = typia.createAssertGuardEquals<number>();
771
+ *
772
+ * // IF NOT, COMPILATION ERROR BE OCCURED
773
+ * const func = typia.createAssertGuardEquals<number>();
774
+ * ```
775
+ *
776
+ * > *Assertions require every name in the call target to be declared with an*
777
+ * > *explicit type annotation.*
778
+ *
779
+ * @returns Nothing until you configure the generic argument `T`
780
+ * @throws compile error
781
+ *
782
+ * @author Jeongho Nam - https://github.com/samchon
783
+ */
784
+ export function createAssertGuardEquals<T>(): (
785
+ input: unknown,
786
+ ) => AssertionGuard<T>;
787
+
788
+ /**
789
+ * @internal
790
+ */
791
+ export function createAssertGuardEquals<T>(): (
792
+ input: unknown,
793
+ ) => AssertionGuard<T> {
794
+ halt("createAssertGuardEquals");
795
+ }
796
+ Object.assign(createAssertGuardEquals, assertGuardEquals);
797
+
546
798
  /**
547
799
  * Creates a reusable {@link equals} function.
548
800
  *
@@ -16,12 +16,16 @@ export namespace AssertProgrammer {
16
16
  export const write =
17
17
  (project: IProject) =>
18
18
  (modulo: ts.LeftHandSideExpression) =>
19
- (equals: boolean) =>
19
+ (props: boolean | { equals: boolean; guard: boolean }) =>
20
20
  (type: ts.Type, name?: string) => {
21
+ // TO SUPPORT LEGACY FEATURE
22
+ if (typeof props === "boolean")
23
+ props = { equals: props, guard: false };
24
+
21
25
  const importer: FunctionImporter = new FunctionImporter(
22
26
  modulo.getText(),
23
27
  );
24
- const is = IsProgrammer.write(project)(modulo, true)(equals)(
28
+ const is = IsProgrammer.write(project)(modulo, true)(props.equals)(
25
29
  type,
26
30
  name ?? TypeFactory.getFullName(project.checker)(type),
27
31
  );
@@ -30,7 +34,7 @@ export namespace AssertProgrammer {
30
34
  path: true,
31
35
  trace: true,
32
36
  numeric: OptionPredicator.numeric(project.options),
33
- equals,
37
+ equals: props.equals,
34
38
  atomist: (explore) => (entry) => (input) =>
35
39
  [
36
40
  ...(entry.expression ? [entry.expression] : []),
@@ -91,8 +95,8 @@ export namespace AssertProgrammer {
91
95
  ),
92
96
  ]),
93
97
  ].reduce((x, y) => ts.factory.createLogicalAnd(x, y)),
94
- combiner: combiner(equals)(project)(importer),
95
- joiner: joiner(equals)(project)(importer),
98
+ combiner: combiner(props.equals)(project)(importer),
99
+ joiner: joiner(props.equals)(project)(importer),
96
100
  success: ts.factory.createTrue(),
97
101
  addition: () => importer.declare(modulo),
98
102
  })(importer)(type, name);
@@ -106,9 +110,21 @@ export namespace AssertProgrammer {
106
110
  TypeFactory.keyword("any"),
107
111
  ),
108
112
  ],
109
- ts.factory.createTypeReferenceNode(
110
- name ?? TypeFactory.getFullName(project.checker)(type),
111
- ),
113
+ props.guard
114
+ ? ts.factory.createTypePredicateNode(
115
+ ts.factory.createToken(ts.SyntaxKind.AssertsKeyword),
116
+ ts.factory.createIdentifier("input"),
117
+ ts.factory.createTypeReferenceNode(
118
+ name ??
119
+ TypeFactory.getFullName(project.checker)(
120
+ type,
121
+ ),
122
+ ),
123
+ )
124
+ : ts.factory.createTypeReferenceNode(
125
+ name ??
126
+ TypeFactory.getFullName(project.checker)(type),
127
+ ),
112
128
  undefined,
113
129
  ts.factory.createBlock(
114
130
  [
@@ -137,9 +153,13 @@ export namespace AssertProgrammer {
137
153
  ),
138
154
  undefined,
139
155
  ),
140
- ts.factory.createReturnStatement(
141
- ts.factory.createIdentifier(`input`),
142
- ),
156
+ ...(props.guard === false
157
+ ? [
158
+ ts.factory.createReturnStatement(
159
+ ts.factory.createIdentifier(`input`),
160
+ ),
161
+ ]
162
+ : []),
143
163
  ],
144
164
  true,
145
165
  ),
@@ -162,13 +162,20 @@ type Task = (
162
162
  const FUNCTORS: Record<string, Record<string, () => Task>> = {
163
163
  module: {
164
164
  // BASIC
165
- assert: () => AssertTransformer.transform(false),
166
- assertType: () => AssertTransformer.transform(false),
165
+ assert: () =>
166
+ AssertTransformer.transform({ equals: false, guard: false }),
167
+ assertGuard: () =>
168
+ AssertTransformer.transform({ equals: false, guard: true }),
169
+ assertType: () =>
170
+ AssertTransformer.transform({ equals: false, guard: false }),
167
171
  is: () => IsTransformer.transform(false),
168
172
  validate: () => ValidateTransformer.transform(false),
169
173
 
170
174
  // STRICT
171
- assertEquals: () => AssertTransformer.transform(true),
175
+ assertEquals: () =>
176
+ AssertTransformer.transform({ equals: true, guard: false }),
177
+ assertGuardEquals: () =>
178
+ AssertTransformer.transform({ equals: true, guard: true }),
172
179
  equals: () => IsTransformer.transform(true),
173
180
  validateEquals: () => ValidateTransformer.transform(true),
174
181
 
@@ -177,11 +184,18 @@ const FUNCTORS: Record<string, Record<string, () => Task>> = {
177
184
  metadata: () => ReflectMetadataTransformer.transform,
178
185
 
179
186
  // FACTORIES
180
- createAssert: () => CreateAssertTransformer.transform(false),
181
- createAssertType: () => CreateAssertTransformer.transform(false),
187
+ createAssert: () =>
188
+ CreateAssertTransformer.transform({ equals: false, guard: false }),
189
+ createAssertGuard: () =>
190
+ CreateAssertTransformer.transform({ equals: false, guard: true }),
191
+ createAssertType: () =>
192
+ CreateAssertTransformer.transform({ equals: false, guard: false }),
182
193
  createIs: () => CreateIsTransformer.transform(false),
183
194
  createValidate: () => CreateValidateTransformer.transform(false),
184
- createAssertEquals: () => CreateAssertTransformer.transform(true),
195
+ createAssertEquals: () =>
196
+ CreateAssertTransformer.transform({ equals: true, guard: false }),
197
+ createAssertGuardEquals: () =>
198
+ CreateAssertTransformer.transform({ equals: true, guard: true }),
185
199
  createEquals: () => CreateIsTransformer.transform(true),
186
200
  createValidateEquals: () => CreateValidateTransformer.transform(true),
187
201
  createRandom: () => CreateRandomTransformer.transform,
@@ -3,9 +3,17 @@ import { AssertProgrammer } from "../../programmers/AssertProgrammer";
3
3
  import { GenericTransformer } from "../internal/GenericTransformer";
4
4
 
5
5
  export namespace AssertTransformer {
6
- export const transform = (equals: boolean) =>
7
- GenericTransformer.scalar(equals ? "assertEquals" : "assert")(
6
+ export const transform = (props: { equals: boolean; guard: boolean }) =>
7
+ GenericTransformer.scalar(
8
+ props.equals
9
+ ? props.guard
10
+ ? "assertGuardEquals"
11
+ : "assertEquals"
12
+ : props.guard
13
+ ? "assertGuard"
14
+ : "assert",
15
+ )(
8
16
  (project) => (modulo) =>
9
- AssertProgrammer.write(project)(modulo)(equals),
17
+ AssertProgrammer.write(project)(modulo)(props),
10
18
  );
11
19
  }
@@ -3,11 +3,17 @@ import { AssertProgrammer } from "../../programmers/AssertProgrammer";
3
3
  import { GenericTransformer } from "../internal/GenericTransformer";
4
4
 
5
5
  export namespace CreateAssertTransformer {
6
- export const transform = (equals: boolean) =>
6
+ export const transform = (props: { equals: boolean; guard: boolean }) =>
7
7
  GenericTransformer.factory(
8
- equals ? "createAssertEquals" : "createAssert",
8
+ props.equals
9
+ ? props.guard
10
+ ? "createAssertGuardEquals"
11
+ : "createAssertEquals"
12
+ : props.guard
13
+ ? "createAssertGuard"
14
+ : "createAssert",
9
15
  )(
10
16
  (project) => (modulo) =>
11
- AssertProgrammer.write(project)(modulo)(equals),
17
+ AssertProgrammer.write(project)(modulo)(props),
12
18
  );
13
19
  }