typia 6.9.0 → 6.10.0-dev.20240906

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 (65) hide show
  1. package/lib/factories/internal/metadata/emplace_metadata_object.js +1 -1
  2. package/lib/factories/internal/metadata/emplace_metadata_object.js.map +1 -1
  3. package/lib/index.mjs +2 -0
  4. package/lib/index.mjs.map +1 -1
  5. package/lib/json.d.ts +1 -1
  6. package/lib/llm.d.ts +5 -0
  7. package/lib/llm.js +23 -0
  8. package/lib/llm.js.map +1 -0
  9. package/lib/llm.mjs +21 -0
  10. package/lib/llm.mjs.map +1 -0
  11. package/lib/module.d.ts +1 -0
  12. package/lib/module.js +2 -1
  13. package/lib/module.js.map +1 -1
  14. package/lib/module.mjs +2 -0
  15. package/lib/module.mjs.map +1 -1
  16. package/lib/programmers/internal/application_escaped.js +4 -6
  17. package/lib/programmers/internal/application_escaped.js.map +1 -1
  18. package/lib/programmers/internal/llm_schema_array.d.ts +1 -0
  19. package/lib/programmers/internal/llm_schema_array.js +20 -0
  20. package/lib/programmers/internal/llm_schema_array.js.map +1 -0
  21. package/lib/programmers/internal/llm_schema_escaped.d.ts +1 -0
  22. package/lib/programmers/internal/llm_schema_escaped.js +56 -0
  23. package/lib/programmers/internal/llm_schema_escaped.js.map +1 -0
  24. package/lib/programmers/internal/llm_schema_native.d.ts +1 -0
  25. package/lib/programmers/internal/llm_schema_native.js +19 -0
  26. package/lib/programmers/internal/llm_schema_native.js.map +1 -0
  27. package/lib/programmers/internal/llm_schema_object.d.ts +1 -0
  28. package/lib/programmers/internal/llm_schema_object.js +134 -0
  29. package/lib/programmers/internal/llm_schema_object.js.map +1 -0
  30. package/lib/programmers/internal/llm_schema_station.d.ts +1 -0
  31. package/lib/programmers/internal/llm_schema_station.js +238 -0
  32. package/lib/programmers/internal/llm_schema_station.js.map +1 -0
  33. package/lib/programmers/internal/llm_schema_tuple.d.ts +6 -0
  34. package/lib/programmers/internal/llm_schema_tuple.js +30 -0
  35. package/lib/programmers/internal/llm_schema_tuple.js.map +1 -0
  36. package/lib/programmers/llm/LlmSchemaProgrammer.d.ts +6 -0
  37. package/lib/programmers/llm/LlmSchemaProgrammer.js +66 -0
  38. package/lib/programmers/llm/LlmSchemaProgrammer.js.map +1 -0
  39. package/lib/schemas/json/IJsonApplication.d.ts +5 -3
  40. package/lib/transformers/CallExpressionTransformer.js +7 -1
  41. package/lib/transformers/CallExpressionTransformer.js.map +1 -1
  42. package/lib/transformers/features/llm/LlmSchemaTransformer.d.ts +5 -0
  43. package/lib/transformers/features/llm/LlmSchemaTransformer.js +45 -0
  44. package/lib/transformers/features/llm/LlmSchemaTransformer.js.map +1 -0
  45. package/lib/utils/Escaper.js +4 -0
  46. package/lib/utils/Escaper.js.map +1 -1
  47. package/package.json +2 -2
  48. package/src/factories/MetadataCommentTagFactory.ts +534 -534
  49. package/src/factories/internal/metadata/emplace_metadata_object.ts +2 -2
  50. package/src/json.ts +738 -738
  51. package/src/llm.ts +30 -0
  52. package/src/module.ts +1 -0
  53. package/src/programmers/internal/application_escaped.ts +4 -6
  54. package/src/programmers/internal/llm_schema_array.ts +22 -0
  55. package/src/programmers/internal/llm_schema_escaped.ts +61 -0
  56. package/src/programmers/internal/llm_schema_native.ts +17 -0
  57. package/src/programmers/internal/llm_schema_object.ts +129 -0
  58. package/src/programmers/internal/llm_schema_station.ts +185 -0
  59. package/src/programmers/internal/llm_schema_tuple.ts +31 -0
  60. package/src/programmers/json/JsonApplicationProgrammer.ts +1 -1
  61. package/src/programmers/llm/LlmSchemaProgrammer.ts +49 -0
  62. package/src/schemas/json/IJsonApplication.ts +22 -16
  63. package/src/transformers/CallExpressionTransformer.ts +6 -1
  64. package/src/transformers/features/llm/LlmSchemaTransformer.ts +52 -0
  65. package/src/utils/Escaper.ts +50 -46
@@ -0,0 +1,52 @@
1
+ import { ILlmSchema } from "@samchon/openapi";
2
+ import ts from "typescript";
3
+
4
+ import { LiteralFactory } from "../../../factories/LiteralFactory";
5
+ import { MetadataCollection } from "../../../factories/MetadataCollection";
6
+ import { MetadataFactory } from "../../../factories/MetadataFactory";
7
+
8
+ import { Metadata } from "../../../schemas/metadata/Metadata";
9
+
10
+ import { LlmSchemaProgrammer } from "../../../programmers/llm/LlmSchemaProgrammer";
11
+
12
+ import { ValidationPipe } from "../../../typings/ValidationPipe";
13
+
14
+ import { IProject } from "../../IProject";
15
+ import { TransformerError } from "../../TransformerError";
16
+
17
+ export namespace LlmSchemaTransformer {
18
+ export const transform =
19
+ (project: IProject) =>
20
+ (expression: ts.CallExpression): ts.Expression => {
21
+ if (!expression.typeArguments?.length)
22
+ throw new TransformerError({
23
+ code: "typia.llm.schema",
24
+ message: "no generic argument.",
25
+ });
26
+
27
+ // GET TYPE
28
+ const top: ts.Node = expression.typeArguments[0]!;
29
+ if (ts.isTypeNode(top) === false) return expression;
30
+
31
+ const type: ts.Type = project.checker.getTypeFromTypeNode(top);
32
+ const collection: MetadataCollection = new MetadataCollection({
33
+ replace: MetadataCollection.replace,
34
+ });
35
+ const result: ValidationPipe<Metadata, MetadataFactory.IError> =
36
+ MetadataFactory.analyze(
37
+ project.checker,
38
+ project.context,
39
+ )({
40
+ escape: true,
41
+ constant: true,
42
+ absorb: false,
43
+ validate: LlmSchemaProgrammer.validate,
44
+ })(collection)(type);
45
+ if (result.success === false)
46
+ throw TransformerError.from("typia.llm.schema")(result.errors);
47
+
48
+ // GENERATE LLM SCHEMA
49
+ const schema: ILlmSchema = LlmSchemaProgrammer.write(result.data);
50
+ return LiteralFactory.generate(schema);
51
+ };
52
+ }
@@ -1,46 +1,50 @@
1
- export namespace Escaper {
2
- export const variable = (str: string): boolean =>
3
- reserved(str) === false && /^[a-zA-Z_$][a-zA-Z_$0-9]*$/g.test(str);
4
-
5
- export const reserved = (str: string): boolean => RESERVED.has(str);
6
- }
7
-
8
- const RESERVED: Set<string> = new Set([
9
- "break",
10
- "case",
11
- "catch",
12
- "class",
13
- "const",
14
- "continue",
15
- "debugger",
16
- "default",
17
- "delete",
18
- "do",
19
- "else",
20
- "enum",
21
- "export",
22
- "extends",
23
- "false",
24
- "finally",
25
- "for",
26
- "function",
27
- "if",
28
- "import",
29
- "in",
30
- "instanceof",
31
- "new",
32
- "null",
33
- "package",
34
- "return",
35
- "super",
36
- "switch",
37
- "this",
38
- "throw",
39
- "true",
40
- "try",
41
- "typeof",
42
- "var",
43
- "void",
44
- "while",
45
- "with",
46
- ]);
1
+ export namespace Escaper {
2
+ export const variable = (str: string): boolean =>
3
+ reserved(str) === false && /^[a-zA-Z_$][a-zA-Z_$0-9]*$/g.test(str);
4
+
5
+ export const reserved = (str: string): boolean => RESERVED.has(str);
6
+ }
7
+
8
+ const RESERVED: Set<string> = new Set([
9
+ "break",
10
+ "case",
11
+ "catch",
12
+ "class",
13
+ "const",
14
+ "continue",
15
+ "debugger",
16
+ "default",
17
+ "delete",
18
+ "do",
19
+ "else",
20
+ "enum",
21
+ "export",
22
+ "extends",
23
+ "false",
24
+ "finally",
25
+ "for",
26
+ "function",
27
+ "if",
28
+ "import",
29
+ "in",
30
+ "instanceof",
31
+ "module",
32
+ "new",
33
+ "null",
34
+ "package",
35
+ "public",
36
+ "private",
37
+ "protected",
38
+ "return",
39
+ "super",
40
+ "switch",
41
+ "this",
42
+ "throw",
43
+ "true",
44
+ "try",
45
+ "typeof",
46
+ "var",
47
+ "void",
48
+ "while",
49
+ "with",
50
+ ]);