@nestia/core 4.4.0 → 4.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/options/INestiaTransformOptions.d.ts +7 -0
- package/lib/programmers/TypedBodyProgrammer.js +11 -0
- package/lib/programmers/TypedBodyProgrammer.js.map +1 -1
- package/lib/programmers/TypedQueryBodyProgrammer.js +36 -0
- package/lib/programmers/TypedQueryBodyProgrammer.js.map +1 -1
- package/lib/programmers/TypedQueryProgrammer.js +36 -0
- package/lib/programmers/TypedQueryProgrammer.js.map +1 -1
- package/lib/programmers/TypedQueryRouteProgrammer.js +36 -0
- package/lib/programmers/TypedQueryRouteProgrammer.js.map +1 -1
- package/lib/programmers/TypedRouteProgrammer.js +18 -0
- package/lib/programmers/TypedRouteProgrammer.js.map +1 -1
- package/lib/programmers/internal/LlmValidatePredicator.d.ts +5 -0
- package/lib/programmers/internal/LlmValidatePredicator.js +18 -0
- package/lib/programmers/internal/LlmValidatePredicator.js.map +1 -0
- package/package.json +6 -6
- package/src/options/INestiaTransformOptions.ts +9 -0
- package/src/programmers/TypedBodyProgrammer.ts +11 -0
- package/src/programmers/TypedQueryBodyProgrammer.ts +43 -0
- package/src/programmers/TypedQueryProgrammer.ts +43 -0
- package/src/programmers/TypedQueryRouteProgrammer.ts +43 -0
- package/src/programmers/TypedRouteProgrammer.ts +19 -0
- package/src/programmers/internal/LlmValidatePredicator.ts +16 -0
|
@@ -1,9 +1,16 @@
|
|
|
1
|
+
import { ILlmSchema } from "@samchon/openapi";
|
|
1
2
|
export interface INestiaTransformOptions {
|
|
2
3
|
validate?: INestiaTransformOptions.Validate;
|
|
3
4
|
stringify?: INestiaTransformOptions.Stringify | null;
|
|
5
|
+
llm?: INestiaTransformOptions.ILlm<"chatgpt" | "gemini" | "3.0">;
|
|
4
6
|
throws?: boolean;
|
|
5
7
|
}
|
|
6
8
|
export declare namespace INestiaTransformOptions {
|
|
7
9
|
type Validate = "assert" | "is" | "validate" | "assertEquals" | "equals" | "validateEquals" | "assertClone" | "validateClone" | "assertPrune" | "validatePrune";
|
|
8
10
|
type Stringify = "stringify" | "assert" | "is" | "validate" | "validate.log";
|
|
11
|
+
interface ILlm<Model extends ILlmSchema.Model> {
|
|
12
|
+
model: Model;
|
|
13
|
+
strict?: Model extends "chatgpt" ? boolean : never;
|
|
14
|
+
recursive?: Model extends "gemini" | "3.0" ? false | number : never;
|
|
15
|
+
}
|
|
9
16
|
}
|
|
@@ -9,10 +9,12 @@ const JsonMetadataFactory_1 = require("typia/lib/factories/JsonMetadataFactory")
|
|
|
9
9
|
const AssertProgrammer_1 = require("typia/lib/programmers/AssertProgrammer");
|
|
10
10
|
const IsProgrammer_1 = require("typia/lib/programmers/IsProgrammer");
|
|
11
11
|
const ValidateProgrammer_1 = require("typia/lib/programmers/ValidateProgrammer");
|
|
12
|
+
const LlmSchemaProgrammer_1 = require("typia/lib/programmers/llm/LlmSchemaProgrammer");
|
|
12
13
|
const MiscAssertCloneProgrammer_1 = require("typia/lib/programmers/misc/MiscAssertCloneProgrammer");
|
|
13
14
|
const MiscAssertPruneProgrammer_1 = require("typia/lib/programmers/misc/MiscAssertPruneProgrammer");
|
|
14
15
|
const MiscValidateCloneProgrammer_1 = require("typia/lib/programmers/misc/MiscValidateCloneProgrammer");
|
|
15
16
|
const MiscValidatePruneProgrammer_1 = require("typia/lib/programmers/misc/MiscValidatePruneProgrammer");
|
|
17
|
+
const LlmValidatePredicator_1 = require("./internal/LlmValidatePredicator");
|
|
16
18
|
var TypedBodyProgrammer;
|
|
17
19
|
(function (TypedBodyProgrammer) {
|
|
18
20
|
TypedBodyProgrammer.generate = (props) => {
|
|
@@ -22,6 +24,15 @@ var TypedBodyProgrammer;
|
|
|
22
24
|
checker: props.context.checker,
|
|
23
25
|
transformer: props.context.transformer,
|
|
24
26
|
type: props.type,
|
|
27
|
+
validate: LlmValidatePredicator_1.LlmValidatePredicator.is(props.context.options.llm)
|
|
28
|
+
? LlmSchemaProgrammer_1.LlmSchemaProgrammer.validate({
|
|
29
|
+
model: props.context.options.llm.model,
|
|
30
|
+
config: {
|
|
31
|
+
strict: props.context.options.llm.strict,
|
|
32
|
+
recursive: props.context.options.llm.recursive,
|
|
33
|
+
},
|
|
34
|
+
})
|
|
35
|
+
: undefined,
|
|
25
36
|
});
|
|
26
37
|
// GENERATE VALIDATION PLAN
|
|
27
38
|
const check = (key) => (equals) => (programmer) => typescript_1.default.factory.createObjectLiteralExpression([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypedBodyProgrammer.js","sourceRoot":"","sources":["../../src/programmers/TypedBodyProgrammer.ts"],"names":[],"mappings":";;;;;;AAAA,4DAA4B;AAC5B,iFAA8E;AAC9E,6EAA0E;AAC1E,qEAAkE;AAClE,iFAA8E;AAC9E,oGAAiG;AACjG,oGAAiG;AACjG,wGAAqG;AACrG,wGAAqG;
|
|
1
|
+
{"version":3,"file":"TypedBodyProgrammer.js","sourceRoot":"","sources":["../../src/programmers/TypedBodyProgrammer.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,12 +5,48 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.TypedQueryBodyProgrammer = void 0;
|
|
7
7
|
const typescript_1 = __importDefault(require("typescript"));
|
|
8
|
+
const MetadataCollection_1 = require("typia/lib/factories/MetadataCollection");
|
|
9
|
+
const MetadataFactory_1 = require("typia/lib/factories/MetadataFactory");
|
|
8
10
|
const HttpAssertQueryProgrammer_1 = require("typia/lib/programmers/http/HttpAssertQueryProgrammer");
|
|
9
11
|
const HttpIsQueryProgrammer_1 = require("typia/lib/programmers/http/HttpIsQueryProgrammer");
|
|
12
|
+
const HttpQueryProgrammer_1 = require("typia/lib/programmers/http/HttpQueryProgrammer");
|
|
10
13
|
const HttpValidateQueryProgrammer_1 = require("typia/lib/programmers/http/HttpValidateQueryProgrammer");
|
|
14
|
+
const LlmSchemaProgrammer_1 = require("typia/lib/programmers/llm/LlmSchemaProgrammer");
|
|
15
|
+
const TransformerError_1 = require("typia/lib/transformers/TransformerError");
|
|
16
|
+
const LlmValidatePredicator_1 = require("./internal/LlmValidatePredicator");
|
|
11
17
|
var TypedQueryBodyProgrammer;
|
|
12
18
|
(function (TypedQueryBodyProgrammer) {
|
|
13
19
|
TypedQueryBodyProgrammer.generate = (props) => {
|
|
20
|
+
// VALIDATE TYPE
|
|
21
|
+
if (LlmValidatePredicator_1.LlmValidatePredicator.is(props.context.options.llm)) {
|
|
22
|
+
const result = MetadataFactory_1.MetadataFactory.analyze({
|
|
23
|
+
checker: props.context.checker,
|
|
24
|
+
transformer: props.context.transformer,
|
|
25
|
+
options: {
|
|
26
|
+
escape: false,
|
|
27
|
+
constant: true,
|
|
28
|
+
absorb: true,
|
|
29
|
+
validate: (meta, explore) => {
|
|
30
|
+
const errors = HttpQueryProgrammer_1.HttpQueryProgrammer.validate(meta, explore, true);
|
|
31
|
+
errors.push(...LlmSchemaProgrammer_1.LlmSchemaProgrammer.validate({
|
|
32
|
+
model: props.context.options.llm.model,
|
|
33
|
+
config: {
|
|
34
|
+
strict: props.context.options.llm.strict,
|
|
35
|
+
recursive: props.context.options.llm.recursive,
|
|
36
|
+
},
|
|
37
|
+
})(meta));
|
|
38
|
+
return errors;
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
collection: new MetadataCollection_1.MetadataCollection(),
|
|
42
|
+
type: props.type,
|
|
43
|
+
});
|
|
44
|
+
if (result.success === false)
|
|
45
|
+
throw TransformerError_1.TransformerError.from({
|
|
46
|
+
code: "@nestia.core.TypedQuery.Body",
|
|
47
|
+
errors: result.errors,
|
|
48
|
+
});
|
|
49
|
+
}
|
|
14
50
|
// GENERATE VALIDATION PLAN
|
|
15
51
|
const parameter = (key) => (programmer) => typescript_1.default.factory.createObjectLiteralExpression([
|
|
16
52
|
typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createIdentifier("type"), typescript_1.default.factory.createStringLiteral(key)),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypedQueryBodyProgrammer.js","sourceRoot":"","sources":["../../src/programmers/TypedQueryBodyProgrammer.ts"],"names":[],"mappings":";;;;;;AAAA,4DAA4B;AAC5B,oGAAiG;AACjG,4FAAyF;AACzF,wGAAqG;
|
|
1
|
+
{"version":3,"file":"TypedQueryBodyProgrammer.js","sourceRoot":"","sources":["../../src/programmers/TypedQueryBodyProgrammer.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,12 +5,48 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.TypedQueryProgrammer = void 0;
|
|
7
7
|
const typescript_1 = __importDefault(require("typescript"));
|
|
8
|
+
const MetadataCollection_1 = require("typia/lib/factories/MetadataCollection");
|
|
9
|
+
const MetadataFactory_1 = require("typia/lib/factories/MetadataFactory");
|
|
8
10
|
const HttpAssertQueryProgrammer_1 = require("typia/lib/programmers/http/HttpAssertQueryProgrammer");
|
|
9
11
|
const HttpIsQueryProgrammer_1 = require("typia/lib/programmers/http/HttpIsQueryProgrammer");
|
|
12
|
+
const HttpQueryProgrammer_1 = require("typia/lib/programmers/http/HttpQueryProgrammer");
|
|
10
13
|
const HttpValidateQueryProgrammer_1 = require("typia/lib/programmers/http/HttpValidateQueryProgrammer");
|
|
14
|
+
const LlmSchemaProgrammer_1 = require("typia/lib/programmers/llm/LlmSchemaProgrammer");
|
|
15
|
+
const TransformerError_1 = require("typia/lib/transformers/TransformerError");
|
|
16
|
+
const LlmValidatePredicator_1 = require("./internal/LlmValidatePredicator");
|
|
11
17
|
var TypedQueryProgrammer;
|
|
12
18
|
(function (TypedQueryProgrammer) {
|
|
13
19
|
TypedQueryProgrammer.generate = (props) => {
|
|
20
|
+
// VALIDATE TYPE
|
|
21
|
+
if (LlmValidatePredicator_1.LlmValidatePredicator.is(props.context.options.llm)) {
|
|
22
|
+
const result = MetadataFactory_1.MetadataFactory.analyze({
|
|
23
|
+
checker: props.context.checker,
|
|
24
|
+
transformer: props.context.transformer,
|
|
25
|
+
options: {
|
|
26
|
+
escape: false,
|
|
27
|
+
constant: true,
|
|
28
|
+
absorb: true,
|
|
29
|
+
validate: (meta, explore) => {
|
|
30
|
+
const errors = HttpQueryProgrammer_1.HttpQueryProgrammer.validate(meta, explore, true);
|
|
31
|
+
errors.push(...LlmSchemaProgrammer_1.LlmSchemaProgrammer.validate({
|
|
32
|
+
model: props.context.options.llm.model,
|
|
33
|
+
config: {
|
|
34
|
+
strict: props.context.options.llm.strict,
|
|
35
|
+
recursive: props.context.options.llm.recursive,
|
|
36
|
+
},
|
|
37
|
+
})(meta));
|
|
38
|
+
return errors;
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
collection: new MetadataCollection_1.MetadataCollection(),
|
|
42
|
+
type: props.type,
|
|
43
|
+
});
|
|
44
|
+
if (result.success === false)
|
|
45
|
+
throw TransformerError_1.TransformerError.from({
|
|
46
|
+
code: "@nestia.core.TypedQuery",
|
|
47
|
+
errors: result.errors,
|
|
48
|
+
});
|
|
49
|
+
}
|
|
14
50
|
// GENERATE VALIDATION PLAN
|
|
15
51
|
const parameter = (key) => (programmer) => typescript_1.default.factory.createObjectLiteralExpression([
|
|
16
52
|
typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createIdentifier("type"), typescript_1.default.factory.createStringLiteral(key)),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypedQueryProgrammer.js","sourceRoot":"","sources":["../../src/programmers/TypedQueryProgrammer.ts"],"names":[],"mappings":";;;;;;AAAA,4DAA4B;AAC5B,oGAAiG;AACjG,4FAAyF;AACzF,wGAAqG;
|
|
1
|
+
{"version":3,"file":"TypedQueryProgrammer.js","sourceRoot":"","sources":["../../src/programmers/TypedQueryProgrammer.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,13 +5,49 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.TypedQueryRouteProgrammer = void 0;
|
|
7
7
|
const typescript_1 = __importDefault(require("typescript"));
|
|
8
|
+
const MetadataCollection_1 = require("typia/lib/factories/MetadataCollection");
|
|
9
|
+
const MetadataFactory_1 = require("typia/lib/factories/MetadataFactory");
|
|
10
|
+
const HttpQueryProgrammer_1 = require("typia/lib/programmers/http/HttpQueryProgrammer");
|
|
11
|
+
const LlmSchemaProgrammer_1 = require("typia/lib/programmers/llm/LlmSchemaProgrammer");
|
|
12
|
+
const TransformerError_1 = require("typia/lib/transformers/TransformerError");
|
|
8
13
|
const HttpAssertQuerifyProgrammer_1 = require("./http/HttpAssertQuerifyProgrammer");
|
|
9
14
|
const HttpIsQuerifyProgrammer_1 = require("./http/HttpIsQuerifyProgrammer");
|
|
10
15
|
const HttpQuerifyProgrammer_1 = require("./http/HttpQuerifyProgrammer");
|
|
11
16
|
const HttpValidateQuerifyProgrammer_1 = require("./http/HttpValidateQuerifyProgrammer");
|
|
17
|
+
const LlmValidatePredicator_1 = require("./internal/LlmValidatePredicator");
|
|
12
18
|
var TypedQueryRouteProgrammer;
|
|
13
19
|
(function (TypedQueryRouteProgrammer) {
|
|
14
20
|
TypedQueryRouteProgrammer.generate = (props) => {
|
|
21
|
+
// VALIDATE TYPE
|
|
22
|
+
if (LlmValidatePredicator_1.LlmValidatePredicator.is(props.context.options.llm)) {
|
|
23
|
+
const result = MetadataFactory_1.MetadataFactory.analyze({
|
|
24
|
+
checker: props.context.checker,
|
|
25
|
+
transformer: props.context.transformer,
|
|
26
|
+
options: {
|
|
27
|
+
escape: false,
|
|
28
|
+
constant: true,
|
|
29
|
+
absorb: true,
|
|
30
|
+
validate: (meta, explore) => {
|
|
31
|
+
const errors = HttpQueryProgrammer_1.HttpQueryProgrammer.validate(meta, explore, true);
|
|
32
|
+
errors.push(...LlmSchemaProgrammer_1.LlmSchemaProgrammer.validate({
|
|
33
|
+
model: props.context.options.llm.model,
|
|
34
|
+
config: {
|
|
35
|
+
strict: props.context.options.llm.strict,
|
|
36
|
+
recursive: props.context.options.llm.recursive,
|
|
37
|
+
},
|
|
38
|
+
})(meta));
|
|
39
|
+
return errors;
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
collection: new MetadataCollection_1.MetadataCollection(),
|
|
43
|
+
type: props.type,
|
|
44
|
+
});
|
|
45
|
+
if (result.success === false)
|
|
46
|
+
throw TransformerError_1.TransformerError.from({
|
|
47
|
+
code: props.modulo.getText(),
|
|
48
|
+
errors: result.errors,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
15
51
|
// GENERATE STRINGIFY PLAN
|
|
16
52
|
const parameter = (key, programmer) => typescript_1.default.factory.createObjectLiteralExpression([
|
|
17
53
|
typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createIdentifier("type"), typescript_1.default.factory.createStringLiteral(key)),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypedQueryRouteProgrammer.js","sourceRoot":"","sources":["../../src/programmers/TypedQueryRouteProgrammer.ts"],"names":[],"mappings":";;;;;;AAAA,4DAA4B;
|
|
1
|
+
{"version":3,"file":"TypedQueryRouteProgrammer.js","sourceRoot":"","sources":["../../src/programmers/TypedQueryRouteProgrammer.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,13 +5,31 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.TypedRouteProgrammer = void 0;
|
|
7
7
|
const typescript_1 = __importDefault(require("typescript"));
|
|
8
|
+
const JsonMetadataFactory_1 = require("typia/lib/factories/JsonMetadataFactory");
|
|
8
9
|
const JsonAssertStringifyProgrammer_1 = require("typia/lib/programmers/json/JsonAssertStringifyProgrammer");
|
|
9
10
|
const JsonIsStringifyProgrammer_1 = require("typia/lib/programmers/json/JsonIsStringifyProgrammer");
|
|
10
11
|
const JsonStringifyProgrammer_1 = require("typia/lib/programmers/json/JsonStringifyProgrammer");
|
|
11
12
|
const JsonValidateStringifyProgrammer_1 = require("typia/lib/programmers/json/JsonValidateStringifyProgrammer");
|
|
13
|
+
const LlmSchemaProgrammer_1 = require("typia/lib/programmers/llm/LlmSchemaProgrammer");
|
|
14
|
+
const LlmValidatePredicator_1 = require("./internal/LlmValidatePredicator");
|
|
12
15
|
var TypedRouteProgrammer;
|
|
13
16
|
(function (TypedRouteProgrammer) {
|
|
14
17
|
TypedRouteProgrammer.generate = (props) => {
|
|
18
|
+
// VALIDATE TYPE
|
|
19
|
+
if (LlmValidatePredicator_1.LlmValidatePredicator.is(props.context.options.llm))
|
|
20
|
+
JsonMetadataFactory_1.JsonMetadataFactory.analyze({
|
|
21
|
+
method: "@nestia.core.TypedBody",
|
|
22
|
+
checker: props.context.checker,
|
|
23
|
+
transformer: props.context.transformer,
|
|
24
|
+
type: props.type,
|
|
25
|
+
validate: LlmSchemaProgrammer_1.LlmSchemaProgrammer.validate({
|
|
26
|
+
model: props.context.options.llm.model,
|
|
27
|
+
config: {
|
|
28
|
+
strict: props.context.options.llm.strict,
|
|
29
|
+
recursive: props.context.options.llm.recursive,
|
|
30
|
+
},
|
|
31
|
+
}),
|
|
32
|
+
});
|
|
15
33
|
// GENERATE STRINGIFY PLAN
|
|
16
34
|
const parameter = (next) => typescript_1.default.factory.createObjectLiteralExpression([
|
|
17
35
|
typescript_1.default.factory.createPropertyAssignment(typescript_1.default.factory.createIdentifier("type"), typescript_1.default.factory.createStringLiteral(next.type)),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypedRouteProgrammer.js","sourceRoot":"","sources":["../../src/programmers/TypedRouteProgrammer.ts"],"names":[],"mappings":";;;;;;AAAA,4DAA4B;AAC5B,4GAAyG;AACzG,oGAAiG;AACjG,gGAA6F;AAC7F,gHAA6G;
|
|
1
|
+
{"version":3,"file":"TypedRouteProgrammer.js","sourceRoot":"","sources":["../../src/programmers/TypedRouteProgrammer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { ILlmSchema } from "@samchon/openapi";
|
|
2
|
+
import { INestiaTransformOptions } from "../../options/INestiaTransformOptions";
|
|
3
|
+
export declare namespace LlmValidatePredicator {
|
|
4
|
+
const is: <Model extends ILlmSchema.Model>(llm: INestiaTransformOptions.ILlm<Model> | undefined) => llm is INestiaTransformOptions.ILlm<Model>;
|
|
5
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LlmValidatePredicator = void 0;
|
|
4
|
+
var LlmValidatePredicator;
|
|
5
|
+
(function (LlmValidatePredicator) {
|
|
6
|
+
LlmValidatePredicator.is = (llm) => {
|
|
7
|
+
if ((llm === null || llm === void 0 ? void 0 : llm.model) === undefined)
|
|
8
|
+
return false;
|
|
9
|
+
else if (llm.model === "chatgpt")
|
|
10
|
+
return llm.strict === true;
|
|
11
|
+
else if (llm.model === "gemini")
|
|
12
|
+
return true;
|
|
13
|
+
else if (llm.model === "3.0")
|
|
14
|
+
return llm.recursive === false || llm.recursive === 0;
|
|
15
|
+
return false;
|
|
16
|
+
};
|
|
17
|
+
})(LlmValidatePredicator || (exports.LlmValidatePredicator = LlmValidatePredicator = {}));
|
|
18
|
+
//# sourceMappingURL=LlmValidatePredicator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LlmValidatePredicator.js","sourceRoot":"","sources":["../../../src/programmers/internal/LlmValidatePredicator.ts"],"names":[],"mappings":";;;AAIA,IAAiB,qBAAqB,CAWrC;AAXD,WAAiB,qBAAqB;IACvB,wBAAE,GAAG,CAChB,GAAoD,EACR,EAAE;QAC9C,IAAI,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,KAAK,MAAK,SAAS;YAAE,OAAO,KAAK,CAAC;aACtC,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS;YAAE,OAAO,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC;aACxD,IAAI,GAAG,CAAC,KAAK,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;aACxC,IAAI,GAAG,CAAC,KAAK,KAAK,KAAK;YAC1B,OAAO,GAAG,CAAC,SAAS,KAAK,KAAK,IAAI,GAAG,CAAC,SAAS,KAAK,CAAC,CAAC;QACxD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC,EAXgB,qBAAqB,qCAArB,qBAAqB,QAWrC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nestia/core",
|
|
3
|
-
"version": "4.4.
|
|
3
|
+
"version": "4.4.1",
|
|
4
4
|
"description": "Super-fast validation decorators of NestJS",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"typings": "lib/index.d.ts",
|
|
@@ -36,10 +36,10 @@
|
|
|
36
36
|
},
|
|
37
37
|
"homepage": "https://nestia.io",
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@nestia/fetcher": "^4.4.
|
|
39
|
+
"@nestia/fetcher": "^4.4.1",
|
|
40
40
|
"@nestjs/common": ">=7.0.1",
|
|
41
41
|
"@nestjs/core": ">=7.0.1",
|
|
42
|
-
"@samchon/openapi": "^2.2.
|
|
42
|
+
"@samchon/openapi": "^2.2.1",
|
|
43
43
|
"detect-ts-node": "^1.0.5",
|
|
44
44
|
"get-function-location": "^2.0.0",
|
|
45
45
|
"glob": "^7.2.0",
|
|
@@ -48,16 +48,16 @@
|
|
|
48
48
|
"reflect-metadata": ">=0.1.12",
|
|
49
49
|
"rxjs": ">=6.0.3",
|
|
50
50
|
"tgrid": "^1.1.0",
|
|
51
|
-
"typia": "^7.4.
|
|
51
|
+
"typia": "^7.4.1",
|
|
52
52
|
"ws": "^7.5.3"
|
|
53
53
|
},
|
|
54
54
|
"peerDependencies": {
|
|
55
|
-
"@nestia/fetcher": ">=4.4.
|
|
55
|
+
"@nestia/fetcher": ">=4.4.1",
|
|
56
56
|
"@nestjs/common": ">=7.0.1",
|
|
57
57
|
"@nestjs/core": ">=7.0.1",
|
|
58
58
|
"reflect-metadata": ">=0.1.12",
|
|
59
59
|
"rxjs": ">=6.0.3",
|
|
60
|
-
"typia": ">=7.4.
|
|
60
|
+
"typia": ">=7.4.1 <8.0.0"
|
|
61
61
|
},
|
|
62
62
|
"devDependencies": {
|
|
63
63
|
"@nestjs/common": "^10.4.13",
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
import { ILlmSchema } from "@samchon/openapi";
|
|
2
|
+
|
|
1
3
|
export interface INestiaTransformOptions {
|
|
2
4
|
validate?: INestiaTransformOptions.Validate;
|
|
3
5
|
stringify?: INestiaTransformOptions.Stringify | null;
|
|
6
|
+
llm?: INestiaTransformOptions.ILlm<"chatgpt" | "gemini" | "3.0">;
|
|
4
7
|
throws?: boolean;
|
|
5
8
|
}
|
|
6
9
|
export namespace INestiaTransformOptions {
|
|
@@ -26,4 +29,10 @@ export namespace INestiaTransformOptions {
|
|
|
26
29
|
| "is"
|
|
27
30
|
| "validate"
|
|
28
31
|
| "validate.log";
|
|
32
|
+
|
|
33
|
+
export interface ILlm<Model extends ILlmSchema.Model> {
|
|
34
|
+
model: Model;
|
|
35
|
+
strict?: Model extends "chatgpt" ? boolean : never;
|
|
36
|
+
recursive?: Model extends "gemini" | "3.0" ? false | number : never;
|
|
37
|
+
}
|
|
29
38
|
}
|
|
@@ -3,6 +3,7 @@ import { JsonMetadataFactory } from "typia/lib/factories/JsonMetadataFactory";
|
|
|
3
3
|
import { AssertProgrammer } from "typia/lib/programmers/AssertProgrammer";
|
|
4
4
|
import { IsProgrammer } from "typia/lib/programmers/IsProgrammer";
|
|
5
5
|
import { ValidateProgrammer } from "typia/lib/programmers/ValidateProgrammer";
|
|
6
|
+
import { LlmSchemaProgrammer } from "typia/lib/programmers/llm/LlmSchemaProgrammer";
|
|
6
7
|
import { MiscAssertCloneProgrammer } from "typia/lib/programmers/misc/MiscAssertCloneProgrammer";
|
|
7
8
|
import { MiscAssertPruneProgrammer } from "typia/lib/programmers/misc/MiscAssertPruneProgrammer";
|
|
8
9
|
import { MiscValidateCloneProgrammer } from "typia/lib/programmers/misc/MiscValidateCloneProgrammer";
|
|
@@ -11,6 +12,7 @@ import { ITypiaContext } from "typia/lib/transformers/ITypiaContext";
|
|
|
11
12
|
|
|
12
13
|
import { INestiaTransformContext } from "../options/INestiaTransformProject";
|
|
13
14
|
import { IRequestBodyValidator } from "../options/IRequestBodyValidator";
|
|
15
|
+
import { LlmValidatePredicator } from "./internal/LlmValidatePredicator";
|
|
14
16
|
|
|
15
17
|
export namespace TypedBodyProgrammer {
|
|
16
18
|
export const generate = (props: {
|
|
@@ -24,6 +26,15 @@ export namespace TypedBodyProgrammer {
|
|
|
24
26
|
checker: props.context.checker,
|
|
25
27
|
transformer: props.context.transformer,
|
|
26
28
|
type: props.type,
|
|
29
|
+
validate: LlmValidatePredicator.is(props.context.options.llm)
|
|
30
|
+
? LlmSchemaProgrammer.validate({
|
|
31
|
+
model: props.context.options.llm.model,
|
|
32
|
+
config: {
|
|
33
|
+
strict: props.context.options.llm.strict,
|
|
34
|
+
recursive: props.context.options.llm.recursive,
|
|
35
|
+
},
|
|
36
|
+
})
|
|
37
|
+
: undefined,
|
|
27
38
|
});
|
|
28
39
|
|
|
29
40
|
// GENERATE VALIDATION PLAN
|
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
import ts from "typescript";
|
|
2
|
+
import { MetadataCollection } from "typia/lib/factories/MetadataCollection";
|
|
3
|
+
import { MetadataFactory } from "typia/lib/factories/MetadataFactory";
|
|
2
4
|
import { HttpAssertQueryProgrammer } from "typia/lib/programmers/http/HttpAssertQueryProgrammer";
|
|
3
5
|
import { HttpIsQueryProgrammer } from "typia/lib/programmers/http/HttpIsQueryProgrammer";
|
|
6
|
+
import { HttpQueryProgrammer } from "typia/lib/programmers/http/HttpQueryProgrammer";
|
|
4
7
|
import { HttpValidateQueryProgrammer } from "typia/lib/programmers/http/HttpValidateQueryProgrammer";
|
|
8
|
+
import { LlmSchemaProgrammer } from "typia/lib/programmers/llm/LlmSchemaProgrammer";
|
|
5
9
|
import { ITypiaContext } from "typia/lib/transformers/ITypiaContext";
|
|
10
|
+
import { TransformerError } from "typia/lib/transformers/TransformerError";
|
|
6
11
|
|
|
7
12
|
import { INestiaTransformContext } from "../options/INestiaTransformProject";
|
|
8
13
|
import { IRequestQueryValidator } from "../options/IRequestQueryValidator";
|
|
14
|
+
import { LlmValidatePredicator } from "./internal/LlmValidatePredicator";
|
|
9
15
|
|
|
10
16
|
export namespace TypedQueryBodyProgrammer {
|
|
11
17
|
export const generate = (props: {
|
|
@@ -13,6 +19,43 @@ export namespace TypedQueryBodyProgrammer {
|
|
|
13
19
|
modulo: ts.LeftHandSideExpression;
|
|
14
20
|
type: ts.Type;
|
|
15
21
|
}): ts.ObjectLiteralExpression => {
|
|
22
|
+
// VALIDATE TYPE
|
|
23
|
+
if (LlmValidatePredicator.is(props.context.options.llm)) {
|
|
24
|
+
const result = MetadataFactory.analyze({
|
|
25
|
+
checker: props.context.checker,
|
|
26
|
+
transformer: props.context.transformer,
|
|
27
|
+
options: {
|
|
28
|
+
escape: false,
|
|
29
|
+
constant: true,
|
|
30
|
+
absorb: true,
|
|
31
|
+
validate: (meta, explore) => {
|
|
32
|
+
const errors: string[] = HttpQueryProgrammer.validate(
|
|
33
|
+
meta,
|
|
34
|
+
explore,
|
|
35
|
+
true,
|
|
36
|
+
);
|
|
37
|
+
errors.push(
|
|
38
|
+
...LlmSchemaProgrammer.validate({
|
|
39
|
+
model: props.context.options.llm!.model,
|
|
40
|
+
config: {
|
|
41
|
+
strict: props.context.options.llm!.strict,
|
|
42
|
+
recursive: props.context.options.llm!.recursive,
|
|
43
|
+
},
|
|
44
|
+
})(meta),
|
|
45
|
+
);
|
|
46
|
+
return errors;
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
collection: new MetadataCollection(),
|
|
50
|
+
type: props.type,
|
|
51
|
+
});
|
|
52
|
+
if (result.success === false)
|
|
53
|
+
throw TransformerError.from({
|
|
54
|
+
code: "@nestia.core.TypedQuery.Body",
|
|
55
|
+
errors: result.errors,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
|
|
16
59
|
// GENERATE VALIDATION PLAN
|
|
17
60
|
const parameter =
|
|
18
61
|
(key: IRequestQueryValidator<any>["type"]) =>
|
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
import ts from "typescript";
|
|
2
|
+
import { MetadataCollection } from "typia/lib/factories/MetadataCollection";
|
|
3
|
+
import { MetadataFactory } from "typia/lib/factories/MetadataFactory";
|
|
2
4
|
import { HttpAssertQueryProgrammer } from "typia/lib/programmers/http/HttpAssertQueryProgrammer";
|
|
3
5
|
import { HttpIsQueryProgrammer } from "typia/lib/programmers/http/HttpIsQueryProgrammer";
|
|
6
|
+
import { HttpQueryProgrammer } from "typia/lib/programmers/http/HttpQueryProgrammer";
|
|
4
7
|
import { HttpValidateQueryProgrammer } from "typia/lib/programmers/http/HttpValidateQueryProgrammer";
|
|
8
|
+
import { LlmSchemaProgrammer } from "typia/lib/programmers/llm/LlmSchemaProgrammer";
|
|
5
9
|
import { ITypiaContext } from "typia/lib/transformers/ITypiaContext";
|
|
10
|
+
import { TransformerError } from "typia/lib/transformers/TransformerError";
|
|
6
11
|
|
|
7
12
|
import { INestiaTransformContext } from "../options/INestiaTransformProject";
|
|
8
13
|
import { IRequestQueryValidator } from "../options/IRequestQueryValidator";
|
|
14
|
+
import { LlmValidatePredicator } from "./internal/LlmValidatePredicator";
|
|
9
15
|
|
|
10
16
|
export namespace TypedQueryProgrammer {
|
|
11
17
|
export const generate = (props: {
|
|
@@ -13,6 +19,43 @@ export namespace TypedQueryProgrammer {
|
|
|
13
19
|
modulo: ts.LeftHandSideExpression;
|
|
14
20
|
type: ts.Type;
|
|
15
21
|
}): ts.Expression => {
|
|
22
|
+
// VALIDATE TYPE
|
|
23
|
+
if (LlmValidatePredicator.is(props.context.options.llm)) {
|
|
24
|
+
const result = MetadataFactory.analyze({
|
|
25
|
+
checker: props.context.checker,
|
|
26
|
+
transformer: props.context.transformer,
|
|
27
|
+
options: {
|
|
28
|
+
escape: false,
|
|
29
|
+
constant: true,
|
|
30
|
+
absorb: true,
|
|
31
|
+
validate: (meta, explore) => {
|
|
32
|
+
const errors: string[] = HttpQueryProgrammer.validate(
|
|
33
|
+
meta,
|
|
34
|
+
explore,
|
|
35
|
+
true,
|
|
36
|
+
);
|
|
37
|
+
errors.push(
|
|
38
|
+
...LlmSchemaProgrammer.validate({
|
|
39
|
+
model: props.context.options.llm!.model,
|
|
40
|
+
config: {
|
|
41
|
+
strict: props.context.options.llm!.strict,
|
|
42
|
+
recursive: props.context.options.llm!.recursive,
|
|
43
|
+
},
|
|
44
|
+
})(meta),
|
|
45
|
+
);
|
|
46
|
+
return errors;
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
collection: new MetadataCollection(),
|
|
50
|
+
type: props.type,
|
|
51
|
+
});
|
|
52
|
+
if (result.success === false)
|
|
53
|
+
throw TransformerError.from({
|
|
54
|
+
code: "@nestia.core.TypedQuery",
|
|
55
|
+
errors: result.errors,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
|
|
16
59
|
// GENERATE VALIDATION PLAN
|
|
17
60
|
const parameter =
|
|
18
61
|
(key: IRequestQueryValidator<any>["type"]) =>
|
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
import ts from "typescript";
|
|
2
|
+
import { MetadataCollection } from "typia/lib/factories/MetadataCollection";
|
|
3
|
+
import { MetadataFactory } from "typia/lib/factories/MetadataFactory";
|
|
4
|
+
import { HttpQueryProgrammer } from "typia/lib/programmers/http/HttpQueryProgrammer";
|
|
5
|
+
import { LlmSchemaProgrammer } from "typia/lib/programmers/llm/LlmSchemaProgrammer";
|
|
2
6
|
import { ITypiaContext } from "typia/lib/transformers/ITypiaContext";
|
|
7
|
+
import { TransformerError } from "typia/lib/transformers/TransformerError";
|
|
3
8
|
|
|
4
9
|
import { INestiaTransformContext } from "../options/INestiaTransformProject";
|
|
5
10
|
import { HttpAssertQuerifyProgrammer } from "./http/HttpAssertQuerifyProgrammer";
|
|
6
11
|
import { HttpIsQuerifyProgrammer } from "./http/HttpIsQuerifyProgrammer";
|
|
7
12
|
import { HttpQuerifyProgrammer } from "./http/HttpQuerifyProgrammer";
|
|
8
13
|
import { HttpValidateQuerifyProgrammer } from "./http/HttpValidateQuerifyProgrammer";
|
|
14
|
+
import { LlmValidatePredicator } from "./internal/LlmValidatePredicator";
|
|
9
15
|
|
|
10
16
|
export namespace TypedQueryRouteProgrammer {
|
|
11
17
|
export const generate = (props: {
|
|
@@ -13,6 +19,43 @@ export namespace TypedQueryRouteProgrammer {
|
|
|
13
19
|
modulo: ts.LeftHandSideExpression;
|
|
14
20
|
type: ts.Type;
|
|
15
21
|
}): ts.Expression => {
|
|
22
|
+
// VALIDATE TYPE
|
|
23
|
+
if (LlmValidatePredicator.is(props.context.options.llm)) {
|
|
24
|
+
const result = MetadataFactory.analyze({
|
|
25
|
+
checker: props.context.checker,
|
|
26
|
+
transformer: props.context.transformer,
|
|
27
|
+
options: {
|
|
28
|
+
escape: false,
|
|
29
|
+
constant: true,
|
|
30
|
+
absorb: true,
|
|
31
|
+
validate: (meta, explore) => {
|
|
32
|
+
const errors: string[] = HttpQueryProgrammer.validate(
|
|
33
|
+
meta,
|
|
34
|
+
explore,
|
|
35
|
+
true,
|
|
36
|
+
);
|
|
37
|
+
errors.push(
|
|
38
|
+
...LlmSchemaProgrammer.validate({
|
|
39
|
+
model: props.context.options.llm!.model,
|
|
40
|
+
config: {
|
|
41
|
+
strict: props.context.options.llm!.strict,
|
|
42
|
+
recursive: props.context.options.llm!.recursive,
|
|
43
|
+
},
|
|
44
|
+
})(meta),
|
|
45
|
+
);
|
|
46
|
+
return errors;
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
collection: new MetadataCollection(),
|
|
50
|
+
type: props.type,
|
|
51
|
+
});
|
|
52
|
+
if (result.success === false)
|
|
53
|
+
throw TransformerError.from({
|
|
54
|
+
code: props.modulo.getText(),
|
|
55
|
+
errors: result.errors,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
|
|
16
59
|
// GENERATE STRINGIFY PLAN
|
|
17
60
|
const parameter = (
|
|
18
61
|
key: string,
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import ts from "typescript";
|
|
2
|
+
import { JsonMetadataFactory } from "typia/lib/factories/JsonMetadataFactory";
|
|
2
3
|
import { JsonAssertStringifyProgrammer } from "typia/lib/programmers/json/JsonAssertStringifyProgrammer";
|
|
3
4
|
import { JsonIsStringifyProgrammer } from "typia/lib/programmers/json/JsonIsStringifyProgrammer";
|
|
4
5
|
import { JsonStringifyProgrammer } from "typia/lib/programmers/json/JsonStringifyProgrammer";
|
|
5
6
|
import { JsonValidateStringifyProgrammer } from "typia/lib/programmers/json/JsonValidateStringifyProgrammer";
|
|
7
|
+
import { LlmSchemaProgrammer } from "typia/lib/programmers/llm/LlmSchemaProgrammer";
|
|
6
8
|
import { IProgrammerProps } from "typia/lib/transformers/IProgrammerProps";
|
|
7
9
|
|
|
8
10
|
import { INestiaTransformContext } from "../options/INestiaTransformProject";
|
|
11
|
+
import { LlmValidatePredicator } from "./internal/LlmValidatePredicator";
|
|
9
12
|
|
|
10
13
|
export namespace TypedRouteProgrammer {
|
|
11
14
|
export const generate = (props: {
|
|
@@ -13,6 +16,22 @@ export namespace TypedRouteProgrammer {
|
|
|
13
16
|
modulo: ts.LeftHandSideExpression;
|
|
14
17
|
type: ts.Type;
|
|
15
18
|
}): ts.Expression => {
|
|
19
|
+
// VALIDATE TYPE
|
|
20
|
+
if (LlmValidatePredicator.is(props.context.options.llm))
|
|
21
|
+
JsonMetadataFactory.analyze({
|
|
22
|
+
method: "@nestia.core.TypedBody",
|
|
23
|
+
checker: props.context.checker,
|
|
24
|
+
transformer: props.context.transformer,
|
|
25
|
+
type: props.type,
|
|
26
|
+
validate: LlmSchemaProgrammer.validate({
|
|
27
|
+
model: props.context.options.llm.model,
|
|
28
|
+
config: {
|
|
29
|
+
strict: props.context.options.llm.strict,
|
|
30
|
+
recursive: props.context.options.llm.recursive,
|
|
31
|
+
},
|
|
32
|
+
}),
|
|
33
|
+
});
|
|
34
|
+
|
|
16
35
|
// GENERATE STRINGIFY PLAN
|
|
17
36
|
const parameter = (next: {
|
|
18
37
|
type: string;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ILlmSchema } from "@samchon/openapi";
|
|
2
|
+
|
|
3
|
+
import { INestiaTransformOptions } from "../../options/INestiaTransformOptions";
|
|
4
|
+
|
|
5
|
+
export namespace LlmValidatePredicator {
|
|
6
|
+
export const is = <Model extends ILlmSchema.Model>(
|
|
7
|
+
llm: INestiaTransformOptions.ILlm<Model> | undefined,
|
|
8
|
+
): llm is INestiaTransformOptions.ILlm<Model> => {
|
|
9
|
+
if (llm?.model === undefined) return false;
|
|
10
|
+
else if (llm.model === "chatgpt") return llm.strict === true;
|
|
11
|
+
else if (llm.model === "gemini") return true;
|
|
12
|
+
else if (llm.model === "3.0")
|
|
13
|
+
return llm.recursive === false || llm.recursive === 0;
|
|
14
|
+
return false;
|
|
15
|
+
};
|
|
16
|
+
}
|