@typia/transform 12.0.0-dev.20260225
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/LICENSE +21 -0
- package/README.md +19 -0
- package/lib/CallExpressionTransformer.d.ts +17 -0
- package/lib/CallExpressionTransformer.js +467 -0
- package/lib/CallExpressionTransformer.js.map +1 -0
- package/lib/CallExpressionTransformer.mjs +462 -0
- package/lib/CallExpressionTransformer.mjs.map +1 -0
- package/lib/FileTransformer.d.ts +14 -0
- package/lib/FileTransformer.js +106 -0
- package/lib/FileTransformer.js.map +1 -0
- package/lib/FileTransformer.mjs +103 -0
- package/lib/FileTransformer.mjs.map +1 -0
- package/lib/ITransformProps.d.ts +17 -0
- package/lib/ITransformProps.js +3 -0
- package/lib/ITransformProps.js.map +1 -0
- package/lib/ITransformProps.mjs +2 -0
- package/lib/ITransformProps.mjs.map +1 -0
- package/lib/ImportTransformer.d.ts +16 -0
- package/lib/ImportTransformer.js +176 -0
- package/lib/ImportTransformer.js.map +1 -0
- package/lib/ImportTransformer.mjs +173 -0
- package/lib/ImportTransformer.mjs.map +1 -0
- package/lib/NodeTransformer.d.ts +16 -0
- package/lib/NodeTransformer.js +26 -0
- package/lib/NodeTransformer.js.map +1 -0
- package/lib/NodeTransformer.mjs +23 -0
- package/lib/NodeTransformer.mjs.map +1 -0
- package/lib/TransformerError.d.ts +42 -0
- package/lib/TransformerError.js +74 -0
- package/lib/TransformerError.js.map +1 -0
- package/lib/TransformerError.mjs +75 -0
- package/lib/TransformerError.mjs.map +1 -0
- package/lib/TypiaGenerator.d.ts +8 -0
- package/lib/TypiaGenerator.js +141 -0
- package/lib/TypiaGenerator.js.map +1 -0
- package/lib/TypiaGenerator.mjs +128 -0
- package/lib/TypiaGenerator.mjs.map +1 -0
- package/lib/features/AssertTransformer.d.ts +5 -0
- package/lib/features/AssertTransformer.js +16 -0
- package/lib/features/AssertTransformer.js.map +1 -0
- package/lib/features/AssertTransformer.mjs +23 -0
- package/lib/features/AssertTransformer.mjs.map +1 -0
- package/lib/features/CreateAssertTransformer.d.ts +5 -0
- package/lib/features/CreateAssertTransformer.js +16 -0
- package/lib/features/CreateAssertTransformer.js.map +1 -0
- package/lib/features/CreateAssertTransformer.mjs +23 -0
- package/lib/features/CreateAssertTransformer.mjs.map +1 -0
- package/lib/features/CreateIsTransformer.d.ts +5 -0
- package/lib/features/CreateIsTransformer.js +10 -0
- package/lib/features/CreateIsTransformer.js.map +1 -0
- package/lib/features/CreateIsTransformer.mjs +17 -0
- package/lib/features/CreateIsTransformer.mjs.map +1 -0
- package/lib/features/CreateRandomTransformer.d.ts +5 -0
- package/lib/features/CreateRandomTransformer.js +34 -0
- package/lib/features/CreateRandomTransformer.js.map +1 -0
- package/lib/features/CreateRandomTransformer.mjs +40 -0
- package/lib/features/CreateRandomTransformer.mjs.map +1 -0
- package/lib/features/CreateValidateTransformer.d.ts +5 -0
- package/lib/features/CreateValidateTransformer.js +10 -0
- package/lib/features/CreateValidateTransformer.js.map +1 -0
- package/lib/features/CreateValidateTransformer.mjs +17 -0
- package/lib/features/CreateValidateTransformer.mjs.map +1 -0
- package/lib/features/IsTransformer.d.ts +5 -0
- package/lib/features/IsTransformer.js +10 -0
- package/lib/features/IsTransformer.js.map +1 -0
- package/lib/features/IsTransformer.mjs +17 -0
- package/lib/features/IsTransformer.mjs.map +1 -0
- package/lib/features/RandomTransformer.d.ts +5 -0
- package/lib/features/RandomTransformer.js +39 -0
- package/lib/features/RandomTransformer.js.map +1 -0
- package/lib/features/RandomTransformer.mjs +35 -0
- package/lib/features/RandomTransformer.mjs.map +1 -0
- package/lib/features/ValidateTransformer.d.ts +5 -0
- package/lib/features/ValidateTransformer.js +10 -0
- package/lib/features/ValidateTransformer.js.map +1 -0
- package/lib/features/ValidateTransformer.mjs +17 -0
- package/lib/features/ValidateTransformer.mjs.map +1 -0
- package/lib/features/functional/FunctionalGenericTransformer.d.ts +21 -0
- package/lib/features/functional/FunctionalGenericTransformer.js +27 -0
- package/lib/features/functional/FunctionalGenericTransformer.js.map +1 -0
- package/lib/features/functional/FunctionalGenericTransformer.mjs +33 -0
- package/lib/features/functional/FunctionalGenericTransformer.mjs.map +1 -0
- package/lib/features/http/CreateHttpAssertFormDataTransformer.d.ts +4 -0
- package/lib/features/http/CreateHttpAssertFormDataTransformer.js +10 -0
- package/lib/features/http/CreateHttpAssertFormDataTransformer.js.map +1 -0
- package/lib/features/http/CreateHttpAssertFormDataTransformer.mjs +14 -0
- package/lib/features/http/CreateHttpAssertFormDataTransformer.mjs.map +1 -0
- package/lib/features/http/CreateHttpAssertHeadersTransformer.d.ts +4 -0
- package/lib/features/http/CreateHttpAssertHeadersTransformer.js +10 -0
- package/lib/features/http/CreateHttpAssertHeadersTransformer.js.map +1 -0
- package/lib/features/http/CreateHttpAssertHeadersTransformer.mjs +14 -0
- package/lib/features/http/CreateHttpAssertHeadersTransformer.mjs.map +1 -0
- package/lib/features/http/CreateHttpAssertQueryTransformer.d.ts +4 -0
- package/lib/features/http/CreateHttpAssertQueryTransformer.js +10 -0
- package/lib/features/http/CreateHttpAssertQueryTransformer.js.map +1 -0
- package/lib/features/http/CreateHttpAssertQueryTransformer.mjs +14 -0
- package/lib/features/http/CreateHttpAssertQueryTransformer.mjs.map +1 -0
- package/lib/features/http/CreateHttpFormDataTransformer.d.ts +4 -0
- package/lib/features/http/CreateHttpFormDataTransformer.js +10 -0
- package/lib/features/http/CreateHttpFormDataTransformer.js.map +1 -0
- package/lib/features/http/CreateHttpFormDataTransformer.mjs +14 -0
- package/lib/features/http/CreateHttpFormDataTransformer.mjs.map +1 -0
- package/lib/features/http/CreateHttpHeadersTransformer.d.ts +4 -0
- package/lib/features/http/CreateHttpHeadersTransformer.js +10 -0
- package/lib/features/http/CreateHttpHeadersTransformer.js.map +1 -0
- package/lib/features/http/CreateHttpHeadersTransformer.mjs +14 -0
- package/lib/features/http/CreateHttpHeadersTransformer.mjs.map +1 -0
- package/lib/features/http/CreateHttpIsFormDataTransformer.d.ts +4 -0
- package/lib/features/http/CreateHttpIsFormDataTransformer.js +10 -0
- package/lib/features/http/CreateHttpIsFormDataTransformer.js.map +1 -0
- package/lib/features/http/CreateHttpIsFormDataTransformer.mjs +14 -0
- package/lib/features/http/CreateHttpIsFormDataTransformer.mjs.map +1 -0
- package/lib/features/http/CreateHttpIsHeadersTransformer.d.ts +4 -0
- package/lib/features/http/CreateHttpIsHeadersTransformer.js +10 -0
- package/lib/features/http/CreateHttpIsHeadersTransformer.js.map +1 -0
- package/lib/features/http/CreateHttpIsHeadersTransformer.mjs +14 -0
- package/lib/features/http/CreateHttpIsHeadersTransformer.mjs.map +1 -0
- package/lib/features/http/CreateHttpIsQueryTransformer.d.ts +4 -0
- package/lib/features/http/CreateHttpIsQueryTransformer.js +10 -0
- package/lib/features/http/CreateHttpIsQueryTransformer.js.map +1 -0
- package/lib/features/http/CreateHttpIsQueryTransformer.mjs +14 -0
- package/lib/features/http/CreateHttpIsQueryTransformer.mjs.map +1 -0
- package/lib/features/http/CreateHttpParameterTransformer.d.ts +4 -0
- package/lib/features/http/CreateHttpParameterTransformer.js +10 -0
- package/lib/features/http/CreateHttpParameterTransformer.js.map +1 -0
- package/lib/features/http/CreateHttpParameterTransformer.mjs +14 -0
- package/lib/features/http/CreateHttpParameterTransformer.mjs.map +1 -0
- package/lib/features/http/CreateHttpQueryTransformer.d.ts +4 -0
- package/lib/features/http/CreateHttpQueryTransformer.js +10 -0
- package/lib/features/http/CreateHttpQueryTransformer.js.map +1 -0
- package/lib/features/http/CreateHttpQueryTransformer.mjs +14 -0
- package/lib/features/http/CreateHttpQueryTransformer.mjs.map +1 -0
- package/lib/features/http/CreateHttpValidateFormDataTransformer.d.ts +4 -0
- package/lib/features/http/CreateHttpValidateFormDataTransformer.js +10 -0
- package/lib/features/http/CreateHttpValidateFormDataTransformer.js.map +1 -0
- package/lib/features/http/CreateHttpValidateFormDataTransformer.mjs +14 -0
- package/lib/features/http/CreateHttpValidateFormDataTransformer.mjs.map +1 -0
- package/lib/features/http/CreateHttpValidateHeadersTransformer.d.ts +4 -0
- package/lib/features/http/CreateHttpValidateHeadersTransformer.js +10 -0
- package/lib/features/http/CreateHttpValidateHeadersTransformer.js.map +1 -0
- package/lib/features/http/CreateHttpValidateHeadersTransformer.mjs +14 -0
- package/lib/features/http/CreateHttpValidateHeadersTransformer.mjs.map +1 -0
- package/lib/features/http/CreateHttpValidateQueryTransformer.d.ts +4 -0
- package/lib/features/http/CreateHttpValidateQueryTransformer.js +10 -0
- package/lib/features/http/CreateHttpValidateQueryTransformer.js.map +1 -0
- package/lib/features/http/CreateHttpValidateQueryTransformer.mjs +14 -0
- package/lib/features/http/CreateHttpValidateQueryTransformer.mjs.map +1 -0
- package/lib/features/http/HttpAssertFormDataTransformer.d.ts +4 -0
- package/lib/features/http/HttpAssertFormDataTransformer.js +10 -0
- package/lib/features/http/HttpAssertFormDataTransformer.js.map +1 -0
- package/lib/features/http/HttpAssertFormDataTransformer.mjs +14 -0
- package/lib/features/http/HttpAssertFormDataTransformer.mjs.map +1 -0
- package/lib/features/http/HttpAssertHeadersTransformer.d.ts +4 -0
- package/lib/features/http/HttpAssertHeadersTransformer.js +10 -0
- package/lib/features/http/HttpAssertHeadersTransformer.js.map +1 -0
- package/lib/features/http/HttpAssertHeadersTransformer.mjs +14 -0
- package/lib/features/http/HttpAssertHeadersTransformer.mjs.map +1 -0
- package/lib/features/http/HttpAssertQueryTransformer.d.ts +4 -0
- package/lib/features/http/HttpAssertQueryTransformer.js +10 -0
- package/lib/features/http/HttpAssertQueryTransformer.js.map +1 -0
- package/lib/features/http/HttpAssertQueryTransformer.mjs +14 -0
- package/lib/features/http/HttpAssertQueryTransformer.mjs.map +1 -0
- package/lib/features/http/HttpFormDataTransformer.d.ts +4 -0
- package/lib/features/http/HttpFormDataTransformer.js +10 -0
- package/lib/features/http/HttpFormDataTransformer.js.map +1 -0
- package/lib/features/http/HttpFormDataTransformer.mjs +14 -0
- package/lib/features/http/HttpFormDataTransformer.mjs.map +1 -0
- package/lib/features/http/HttpHeadersTransformer.d.ts +4 -0
- package/lib/features/http/HttpHeadersTransformer.js +10 -0
- package/lib/features/http/HttpHeadersTransformer.js.map +1 -0
- package/lib/features/http/HttpHeadersTransformer.mjs +14 -0
- package/lib/features/http/HttpHeadersTransformer.mjs.map +1 -0
- package/lib/features/http/HttpIsFormDataTransformer.d.ts +4 -0
- package/lib/features/http/HttpIsFormDataTransformer.js +10 -0
- package/lib/features/http/HttpIsFormDataTransformer.js.map +1 -0
- package/lib/features/http/HttpIsFormDataTransformer.mjs +14 -0
- package/lib/features/http/HttpIsFormDataTransformer.mjs.map +1 -0
- package/lib/features/http/HttpIsHeadersTransformer.d.ts +4 -0
- package/lib/features/http/HttpIsHeadersTransformer.js +10 -0
- package/lib/features/http/HttpIsHeadersTransformer.js.map +1 -0
- package/lib/features/http/HttpIsHeadersTransformer.mjs +14 -0
- package/lib/features/http/HttpIsHeadersTransformer.mjs.map +1 -0
- package/lib/features/http/HttpIsQueryTransformer.d.ts +4 -0
- package/lib/features/http/HttpIsQueryTransformer.js +10 -0
- package/lib/features/http/HttpIsQueryTransformer.js.map +1 -0
- package/lib/features/http/HttpIsQueryTransformer.mjs +14 -0
- package/lib/features/http/HttpIsQueryTransformer.mjs.map +1 -0
- package/lib/features/http/HttpParameterTransformer.d.ts +4 -0
- package/lib/features/http/HttpParameterTransformer.js +10 -0
- package/lib/features/http/HttpParameterTransformer.js.map +1 -0
- package/lib/features/http/HttpParameterTransformer.mjs +14 -0
- package/lib/features/http/HttpParameterTransformer.mjs.map +1 -0
- package/lib/features/http/HttpQueryTransformer.d.ts +4 -0
- package/lib/features/http/HttpQueryTransformer.js +10 -0
- package/lib/features/http/HttpQueryTransformer.js.map +1 -0
- package/lib/features/http/HttpQueryTransformer.mjs +14 -0
- package/lib/features/http/HttpQueryTransformer.mjs.map +1 -0
- package/lib/features/http/HttpValidateFormDataTransformer.d.ts +4 -0
- package/lib/features/http/HttpValidateFormDataTransformer.js +10 -0
- package/lib/features/http/HttpValidateFormDataTransformer.js.map +1 -0
- package/lib/features/http/HttpValidateFormDataTransformer.mjs +14 -0
- package/lib/features/http/HttpValidateFormDataTransformer.mjs.map +1 -0
- package/lib/features/http/HttpValidateHeadersTransformer.d.ts +4 -0
- package/lib/features/http/HttpValidateHeadersTransformer.js +10 -0
- package/lib/features/http/HttpValidateHeadersTransformer.js.map +1 -0
- package/lib/features/http/HttpValidateHeadersTransformer.mjs +14 -0
- package/lib/features/http/HttpValidateHeadersTransformer.mjs.map +1 -0
- package/lib/features/http/HttpValidateQueryTransformer.d.ts +4 -0
- package/lib/features/http/HttpValidateQueryTransformer.js +10 -0
- package/lib/features/http/HttpValidateQueryTransformer.js.map +1 -0
- package/lib/features/http/HttpValidateQueryTransformer.mjs +14 -0
- package/lib/features/http/HttpValidateQueryTransformer.mjs.map +1 -0
- package/lib/features/json/JsonApplicationTransformer.d.ts +5 -0
- package/lib/features/json/JsonApplicationTransformer.js +84 -0
- package/lib/features/json/JsonApplicationTransformer.js.map +1 -0
- package/lib/features/json/JsonApplicationTransformer.mjs +80 -0
- package/lib/features/json/JsonApplicationTransformer.mjs.map +1 -0
- package/lib/features/json/JsonAssertParseTransformer.d.ts +4 -0
- package/lib/features/json/JsonAssertParseTransformer.js +10 -0
- package/lib/features/json/JsonAssertParseTransformer.js.map +1 -0
- package/lib/features/json/JsonAssertParseTransformer.mjs +14 -0
- package/lib/features/json/JsonAssertParseTransformer.mjs.map +1 -0
- package/lib/features/json/JsonAssertStringifyTransformer.d.ts +4 -0
- package/lib/features/json/JsonAssertStringifyTransformer.js +10 -0
- package/lib/features/json/JsonAssertStringifyTransformer.js.map +1 -0
- package/lib/features/json/JsonAssertStringifyTransformer.mjs +14 -0
- package/lib/features/json/JsonAssertStringifyTransformer.mjs.map +1 -0
- package/lib/features/json/JsonCreateAssertParseTransformer.d.ts +4 -0
- package/lib/features/json/JsonCreateAssertParseTransformer.js +10 -0
- package/lib/features/json/JsonCreateAssertParseTransformer.js.map +1 -0
- package/lib/features/json/JsonCreateAssertParseTransformer.mjs +14 -0
- package/lib/features/json/JsonCreateAssertParseTransformer.mjs.map +1 -0
- package/lib/features/json/JsonCreateAssertStringifyTransformer.d.ts +4 -0
- package/lib/features/json/JsonCreateAssertStringifyTransformer.js +10 -0
- package/lib/features/json/JsonCreateAssertStringifyTransformer.js.map +1 -0
- package/lib/features/json/JsonCreateAssertStringifyTransformer.mjs +14 -0
- package/lib/features/json/JsonCreateAssertStringifyTransformer.mjs.map +1 -0
- package/lib/features/json/JsonCreateIsParseTransformer.d.ts +4 -0
- package/lib/features/json/JsonCreateIsParseTransformer.js +10 -0
- package/lib/features/json/JsonCreateIsParseTransformer.js.map +1 -0
- package/lib/features/json/JsonCreateIsParseTransformer.mjs +14 -0
- package/lib/features/json/JsonCreateIsParseTransformer.mjs.map +1 -0
- package/lib/features/json/JsonCreateIsStringifyTransformer.d.ts +4 -0
- package/lib/features/json/JsonCreateIsStringifyTransformer.js +10 -0
- package/lib/features/json/JsonCreateIsStringifyTransformer.js.map +1 -0
- package/lib/features/json/JsonCreateIsStringifyTransformer.mjs +14 -0
- package/lib/features/json/JsonCreateIsStringifyTransformer.mjs.map +1 -0
- package/lib/features/json/JsonCreateStringifyTransformer.d.ts +4 -0
- package/lib/features/json/JsonCreateStringifyTransformer.js +10 -0
- package/lib/features/json/JsonCreateStringifyTransformer.js.map +1 -0
- package/lib/features/json/JsonCreateStringifyTransformer.mjs +14 -0
- package/lib/features/json/JsonCreateStringifyTransformer.mjs.map +1 -0
- package/lib/features/json/JsonCreateValidateParseTransformer.d.ts +4 -0
- package/lib/features/json/JsonCreateValidateParseTransformer.js +10 -0
- package/lib/features/json/JsonCreateValidateParseTransformer.js.map +1 -0
- package/lib/features/json/JsonCreateValidateParseTransformer.mjs +14 -0
- package/lib/features/json/JsonCreateValidateParseTransformer.mjs.map +1 -0
- package/lib/features/json/JsonCreateValidateStringifyProgrammer.d.ts +4 -0
- package/lib/features/json/JsonCreateValidateStringifyProgrammer.js +10 -0
- package/lib/features/json/JsonCreateValidateStringifyProgrammer.js.map +1 -0
- package/lib/features/json/JsonCreateValidateStringifyProgrammer.mjs +14 -0
- package/lib/features/json/JsonCreateValidateStringifyProgrammer.mjs.map +1 -0
- package/lib/features/json/JsonIsParseTransformer.d.ts +4 -0
- package/lib/features/json/JsonIsParseTransformer.js +10 -0
- package/lib/features/json/JsonIsParseTransformer.js.map +1 -0
- package/lib/features/json/JsonIsParseTransformer.mjs +14 -0
- package/lib/features/json/JsonIsParseTransformer.mjs.map +1 -0
- package/lib/features/json/JsonIsStringifyTransformer.d.ts +4 -0
- package/lib/features/json/JsonIsStringifyTransformer.js +10 -0
- package/lib/features/json/JsonIsStringifyTransformer.js.map +1 -0
- package/lib/features/json/JsonIsStringifyTransformer.mjs +14 -0
- package/lib/features/json/JsonIsStringifyTransformer.mjs.map +1 -0
- package/lib/features/json/JsonSchemaTransformer.d.ts +5 -0
- package/lib/features/json/JsonSchemaTransformer.js +104 -0
- package/lib/features/json/JsonSchemaTransformer.js.map +1 -0
- package/lib/features/json/JsonSchemaTransformer.mjs +100 -0
- package/lib/features/json/JsonSchemaTransformer.mjs.map +1 -0
- package/lib/features/json/JsonSchemasTransformer.d.ts +5 -0
- package/lib/features/json/JsonSchemasTransformer.js +114 -0
- package/lib/features/json/JsonSchemasTransformer.js.map +1 -0
- package/lib/features/json/JsonSchemasTransformer.mjs +110 -0
- package/lib/features/json/JsonSchemasTransformer.mjs.map +1 -0
- package/lib/features/json/JsonStringifyTransformer.d.ts +4 -0
- package/lib/features/json/JsonStringifyTransformer.js +10 -0
- package/lib/features/json/JsonStringifyTransformer.js.map +1 -0
- package/lib/features/json/JsonStringifyTransformer.mjs +14 -0
- package/lib/features/json/JsonStringifyTransformer.mjs.map +1 -0
- package/lib/features/json/JsonValidateParseTransformer.d.ts +4 -0
- package/lib/features/json/JsonValidateParseTransformer.js +10 -0
- package/lib/features/json/JsonValidateParseTransformer.js.map +1 -0
- package/lib/features/json/JsonValidateParseTransformer.mjs +14 -0
- package/lib/features/json/JsonValidateParseTransformer.mjs.map +1 -0
- package/lib/features/json/JsonValidateStringifyTransformer.d.ts +4 -0
- package/lib/features/json/JsonValidateStringifyTransformer.js +10 -0
- package/lib/features/json/JsonValidateStringifyTransformer.js.map +1 -0
- package/lib/features/json/JsonValidateStringifyTransformer.mjs +14 -0
- package/lib/features/json/JsonValidateStringifyTransformer.mjs.map +1 -0
- package/lib/features/llm/LlmApplicationTransformer.d.ts +12 -0
- package/lib/features/llm/LlmApplicationTransformer.js +123 -0
- package/lib/features/llm/LlmApplicationTransformer.js.map +1 -0
- package/lib/features/llm/LlmApplicationTransformer.mjs +118 -0
- package/lib/features/llm/LlmApplicationTransformer.mjs.map +1 -0
- package/lib/features/llm/LlmControllerTransformer.d.ts +5 -0
- package/lib/features/llm/LlmControllerTransformer.js +61 -0
- package/lib/features/llm/LlmControllerTransformer.js.map +1 -0
- package/lib/features/llm/LlmControllerTransformer.mjs +57 -0
- package/lib/features/llm/LlmControllerTransformer.mjs.map +1 -0
- package/lib/features/llm/LlmParametersTransformer.d.ts +5 -0
- package/lib/features/llm/LlmParametersTransformer.js +71 -0
- package/lib/features/llm/LlmParametersTransformer.js.map +1 -0
- package/lib/features/llm/LlmParametersTransformer.mjs +67 -0
- package/lib/features/llm/LlmParametersTransformer.mjs.map +1 -0
- package/lib/features/llm/LlmSchemaTransformer.d.ts +5 -0
- package/lib/features/llm/LlmSchemaTransformer.js +90 -0
- package/lib/features/llm/LlmSchemaTransformer.js.map +1 -0
- package/lib/features/llm/LlmSchemaTransformer.mjs +86 -0
- package/lib/features/llm/LlmSchemaTransformer.mjs.map +1 -0
- package/lib/features/misc/MiscAssertCloneTransformer.d.ts +4 -0
- package/lib/features/misc/MiscAssertCloneTransformer.js +10 -0
- package/lib/features/misc/MiscAssertCloneTransformer.js.map +1 -0
- package/lib/features/misc/MiscAssertCloneTransformer.mjs +14 -0
- package/lib/features/misc/MiscAssertCloneTransformer.mjs.map +1 -0
- package/lib/features/misc/MiscAssertPruneTransformer.d.ts +4 -0
- package/lib/features/misc/MiscAssertPruneTransformer.js +10 -0
- package/lib/features/misc/MiscAssertPruneTransformer.js.map +1 -0
- package/lib/features/misc/MiscAssertPruneTransformer.mjs +14 -0
- package/lib/features/misc/MiscAssertPruneTransformer.mjs.map +1 -0
- package/lib/features/misc/MiscCloneTransformer.d.ts +4 -0
- package/lib/features/misc/MiscCloneTransformer.js +10 -0
- package/lib/features/misc/MiscCloneTransformer.js.map +1 -0
- package/lib/features/misc/MiscCloneTransformer.mjs +14 -0
- package/lib/features/misc/MiscCloneTransformer.mjs.map +1 -0
- package/lib/features/misc/MiscCreateAssertCloneTransformer.d.ts +4 -0
- package/lib/features/misc/MiscCreateAssertCloneTransformer.js +10 -0
- package/lib/features/misc/MiscCreateAssertCloneTransformer.js.map +1 -0
- package/lib/features/misc/MiscCreateAssertCloneTransformer.mjs +14 -0
- package/lib/features/misc/MiscCreateAssertCloneTransformer.mjs.map +1 -0
- package/lib/features/misc/MiscCreateAssertPruneTransformer.d.ts +4 -0
- package/lib/features/misc/MiscCreateAssertPruneTransformer.js +10 -0
- package/lib/features/misc/MiscCreateAssertPruneTransformer.js.map +1 -0
- package/lib/features/misc/MiscCreateAssertPruneTransformer.mjs +14 -0
- package/lib/features/misc/MiscCreateAssertPruneTransformer.mjs.map +1 -0
- package/lib/features/misc/MiscCreateCloneTransformer.d.ts +4 -0
- package/lib/features/misc/MiscCreateCloneTransformer.js +10 -0
- package/lib/features/misc/MiscCreateCloneTransformer.js.map +1 -0
- package/lib/features/misc/MiscCreateCloneTransformer.mjs +14 -0
- package/lib/features/misc/MiscCreateCloneTransformer.mjs.map +1 -0
- package/lib/features/misc/MiscCreateIsCloneTransformer.d.ts +4 -0
- package/lib/features/misc/MiscCreateIsCloneTransformer.js +10 -0
- package/lib/features/misc/MiscCreateIsCloneTransformer.js.map +1 -0
- package/lib/features/misc/MiscCreateIsCloneTransformer.mjs +14 -0
- package/lib/features/misc/MiscCreateIsCloneTransformer.mjs.map +1 -0
- package/lib/features/misc/MiscCreateIsPruneTransformer.d.ts +4 -0
- package/lib/features/misc/MiscCreateIsPruneTransformer.js +10 -0
- package/lib/features/misc/MiscCreateIsPruneTransformer.js.map +1 -0
- package/lib/features/misc/MiscCreateIsPruneTransformer.mjs +14 -0
- package/lib/features/misc/MiscCreateIsPruneTransformer.mjs.map +1 -0
- package/lib/features/misc/MiscCreatePruneTransformer.d.ts +4 -0
- package/lib/features/misc/MiscCreatePruneTransformer.js +10 -0
- package/lib/features/misc/MiscCreatePruneTransformer.js.map +1 -0
- package/lib/features/misc/MiscCreatePruneTransformer.mjs +14 -0
- package/lib/features/misc/MiscCreatePruneTransformer.mjs.map +1 -0
- package/lib/features/misc/MiscCreateValidateCloneTransformer.d.ts +4 -0
- package/lib/features/misc/MiscCreateValidateCloneTransformer.js +10 -0
- package/lib/features/misc/MiscCreateValidateCloneTransformer.js.map +1 -0
- package/lib/features/misc/MiscCreateValidateCloneTransformer.mjs +14 -0
- package/lib/features/misc/MiscCreateValidateCloneTransformer.mjs.map +1 -0
- package/lib/features/misc/MiscCreateValidatePruneTransformer.d.ts +4 -0
- package/lib/features/misc/MiscCreateValidatePruneTransformer.js +10 -0
- package/lib/features/misc/MiscCreateValidatePruneTransformer.js.map +1 -0
- package/lib/features/misc/MiscCreateValidatePruneTransformer.mjs +14 -0
- package/lib/features/misc/MiscCreateValidatePruneTransformer.mjs.map +1 -0
- package/lib/features/misc/MiscIsCloneTransformer.d.ts +4 -0
- package/lib/features/misc/MiscIsCloneTransformer.js +10 -0
- package/lib/features/misc/MiscIsCloneTransformer.js.map +1 -0
- package/lib/features/misc/MiscIsCloneTransformer.mjs +14 -0
- package/lib/features/misc/MiscIsCloneTransformer.mjs.map +1 -0
- package/lib/features/misc/MiscIsPruneTransformer.d.ts +4 -0
- package/lib/features/misc/MiscIsPruneTransformer.js +10 -0
- package/lib/features/misc/MiscIsPruneTransformer.js.map +1 -0
- package/lib/features/misc/MiscIsPruneTransformer.mjs +14 -0
- package/lib/features/misc/MiscIsPruneTransformer.mjs.map +1 -0
- package/lib/features/misc/MiscLiteralsTransformer.d.ts +5 -0
- package/lib/features/misc/MiscLiteralsTransformer.js +31 -0
- package/lib/features/misc/MiscLiteralsTransformer.js.map +1 -0
- package/lib/features/misc/MiscLiteralsTransformer.mjs +30 -0
- package/lib/features/misc/MiscLiteralsTransformer.mjs.map +1 -0
- package/lib/features/misc/MiscPruneTransformer.d.ts +4 -0
- package/lib/features/misc/MiscPruneTransformer.js +10 -0
- package/lib/features/misc/MiscPruneTransformer.js.map +1 -0
- package/lib/features/misc/MiscPruneTransformer.mjs +14 -0
- package/lib/features/misc/MiscPruneTransformer.mjs.map +1 -0
- package/lib/features/misc/MiscValidateCloneTransformer.d.ts +4 -0
- package/lib/features/misc/MiscValidateCloneTransformer.js +10 -0
- package/lib/features/misc/MiscValidateCloneTransformer.js.map +1 -0
- package/lib/features/misc/MiscValidateCloneTransformer.mjs +14 -0
- package/lib/features/misc/MiscValidateCloneTransformer.mjs.map +1 -0
- package/lib/features/misc/MiscValidatePruneTransformer.d.ts +4 -0
- package/lib/features/misc/MiscValidatePruneTransformer.js +10 -0
- package/lib/features/misc/MiscValidatePruneTransformer.js.map +1 -0
- package/lib/features/misc/MiscValidatePruneTransformer.mjs +14 -0
- package/lib/features/misc/MiscValidatePruneTransformer.mjs.map +1 -0
- package/lib/features/notations/NotationAssertGeneralTransformer.d.ts +4 -0
- package/lib/features/notations/NotationAssertGeneralTransformer.js +11 -0
- package/lib/features/notations/NotationAssertGeneralTransformer.js.map +1 -0
- package/lib/features/notations/NotationAssertGeneralTransformer.mjs +18 -0
- package/lib/features/notations/NotationAssertGeneralTransformer.mjs.map +1 -0
- package/lib/features/notations/NotationCreateAssertGeneralTransformer.d.ts +4 -0
- package/lib/features/notations/NotationCreateAssertGeneralTransformer.js +11 -0
- package/lib/features/notations/NotationCreateAssertGeneralTransformer.js.map +1 -0
- package/lib/features/notations/NotationCreateAssertGeneralTransformer.mjs +18 -0
- package/lib/features/notations/NotationCreateAssertGeneralTransformer.mjs.map +1 -0
- package/lib/features/notations/NotationCreateGeneralTransformer.d.ts +4 -0
- package/lib/features/notations/NotationCreateGeneralTransformer.js +11 -0
- package/lib/features/notations/NotationCreateGeneralTransformer.js.map +1 -0
- package/lib/features/notations/NotationCreateGeneralTransformer.mjs +18 -0
- package/lib/features/notations/NotationCreateGeneralTransformer.mjs.map +1 -0
- package/lib/features/notations/NotationCreateIsGeneralTransformer.d.ts +4 -0
- package/lib/features/notations/NotationCreateIsGeneralTransformer.js +11 -0
- package/lib/features/notations/NotationCreateIsGeneralTransformer.js.map +1 -0
- package/lib/features/notations/NotationCreateIsGeneralTransformer.mjs +18 -0
- package/lib/features/notations/NotationCreateIsGeneralTransformer.mjs.map +1 -0
- package/lib/features/notations/NotationCreateValidateGeneralTransformer.d.ts +4 -0
- package/lib/features/notations/NotationCreateValidateGeneralTransformer.js +11 -0
- package/lib/features/notations/NotationCreateValidateGeneralTransformer.js.map +1 -0
- package/lib/features/notations/NotationCreateValidateGeneralTransformer.mjs +18 -0
- package/lib/features/notations/NotationCreateValidateGeneralTransformer.mjs.map +1 -0
- package/lib/features/notations/NotationGeneralTransformer.d.ts +4 -0
- package/lib/features/notations/NotationGeneralTransformer.js +10 -0
- package/lib/features/notations/NotationGeneralTransformer.js.map +1 -0
- package/lib/features/notations/NotationGeneralTransformer.mjs +17 -0
- package/lib/features/notations/NotationGeneralTransformer.mjs.map +1 -0
- package/lib/features/notations/NotationIsGeneralTransformer.d.ts +4 -0
- package/lib/features/notations/NotationIsGeneralTransformer.js +11 -0
- package/lib/features/notations/NotationIsGeneralTransformer.js.map +1 -0
- package/lib/features/notations/NotationIsGeneralTransformer.mjs +18 -0
- package/lib/features/notations/NotationIsGeneralTransformer.mjs.map +1 -0
- package/lib/features/notations/NotationValidateGeneralTransformer.d.ts +4 -0
- package/lib/features/notations/NotationValidateGeneralTransformer.js +11 -0
- package/lib/features/notations/NotationValidateGeneralTransformer.js.map +1 -0
- package/lib/features/notations/NotationValidateGeneralTransformer.mjs +18 -0
- package/lib/features/notations/NotationValidateGeneralTransformer.mjs.map +1 -0
- package/lib/features/protobuf/ProtobufAssertDecodeTransformer.d.ts +4 -0
- package/lib/features/protobuf/ProtobufAssertDecodeTransformer.js +10 -0
- package/lib/features/protobuf/ProtobufAssertDecodeTransformer.js.map +1 -0
- package/lib/features/protobuf/ProtobufAssertDecodeTransformer.mjs +14 -0
- package/lib/features/protobuf/ProtobufAssertDecodeTransformer.mjs.map +1 -0
- package/lib/features/protobuf/ProtobufAssertEncodeTransformer.d.ts +4 -0
- package/lib/features/protobuf/ProtobufAssertEncodeTransformer.js +10 -0
- package/lib/features/protobuf/ProtobufAssertEncodeTransformer.js.map +1 -0
- package/lib/features/protobuf/ProtobufAssertEncodeTransformer.mjs +14 -0
- package/lib/features/protobuf/ProtobufAssertEncodeTransformer.mjs.map +1 -0
- package/lib/features/protobuf/ProtobufCreateAssertDecodeTransformer.d.ts +4 -0
- package/lib/features/protobuf/ProtobufCreateAssertDecodeTransformer.js +10 -0
- package/lib/features/protobuf/ProtobufCreateAssertDecodeTransformer.js.map +1 -0
- package/lib/features/protobuf/ProtobufCreateAssertDecodeTransformer.mjs +14 -0
- package/lib/features/protobuf/ProtobufCreateAssertDecodeTransformer.mjs.map +1 -0
- package/lib/features/protobuf/ProtobufCreateAssertEncodeTransformer.d.ts +4 -0
- package/lib/features/protobuf/ProtobufCreateAssertEncodeTransformer.js +10 -0
- package/lib/features/protobuf/ProtobufCreateAssertEncodeTransformer.js.map +1 -0
- package/lib/features/protobuf/ProtobufCreateAssertEncodeTransformer.mjs +14 -0
- package/lib/features/protobuf/ProtobufCreateAssertEncodeTransformer.mjs.map +1 -0
- package/lib/features/protobuf/ProtobufCreateDecodeTransformer.d.ts +4 -0
- package/lib/features/protobuf/ProtobufCreateDecodeTransformer.js +10 -0
- package/lib/features/protobuf/ProtobufCreateDecodeTransformer.js.map +1 -0
- package/lib/features/protobuf/ProtobufCreateDecodeTransformer.mjs +14 -0
- package/lib/features/protobuf/ProtobufCreateDecodeTransformer.mjs.map +1 -0
- package/lib/features/protobuf/ProtobufCreateEncodeTransformer.d.ts +4 -0
- package/lib/features/protobuf/ProtobufCreateEncodeTransformer.js +10 -0
- package/lib/features/protobuf/ProtobufCreateEncodeTransformer.js.map +1 -0
- package/lib/features/protobuf/ProtobufCreateEncodeTransformer.mjs +14 -0
- package/lib/features/protobuf/ProtobufCreateEncodeTransformer.mjs.map +1 -0
- package/lib/features/protobuf/ProtobufCreateIsDecodeTransformer.d.ts +4 -0
- package/lib/features/protobuf/ProtobufCreateIsDecodeTransformer.js +10 -0
- package/lib/features/protobuf/ProtobufCreateIsDecodeTransformer.js.map +1 -0
- package/lib/features/protobuf/ProtobufCreateIsDecodeTransformer.mjs +14 -0
- package/lib/features/protobuf/ProtobufCreateIsDecodeTransformer.mjs.map +1 -0
- package/lib/features/protobuf/ProtobufCreateIsEncodeTransformer.d.ts +4 -0
- package/lib/features/protobuf/ProtobufCreateIsEncodeTransformer.js +10 -0
- package/lib/features/protobuf/ProtobufCreateIsEncodeTransformer.js.map +1 -0
- package/lib/features/protobuf/ProtobufCreateIsEncodeTransformer.mjs +14 -0
- package/lib/features/protobuf/ProtobufCreateIsEncodeTransformer.mjs.map +1 -0
- package/lib/features/protobuf/ProtobufCreateValidateDecodeTransformer.d.ts +4 -0
- package/lib/features/protobuf/ProtobufCreateValidateDecodeTransformer.js +10 -0
- package/lib/features/protobuf/ProtobufCreateValidateDecodeTransformer.js.map +1 -0
- package/lib/features/protobuf/ProtobufCreateValidateDecodeTransformer.mjs +14 -0
- package/lib/features/protobuf/ProtobufCreateValidateDecodeTransformer.mjs.map +1 -0
- package/lib/features/protobuf/ProtobufCreateValidateEncodeTransformer.d.ts +4 -0
- package/lib/features/protobuf/ProtobufCreateValidateEncodeTransformer.js +10 -0
- package/lib/features/protobuf/ProtobufCreateValidateEncodeTransformer.js.map +1 -0
- package/lib/features/protobuf/ProtobufCreateValidateEncodeTransformer.mjs +14 -0
- package/lib/features/protobuf/ProtobufCreateValidateEncodeTransformer.mjs.map +1 -0
- package/lib/features/protobuf/ProtobufDecodeTransformer.d.ts +4 -0
- package/lib/features/protobuf/ProtobufDecodeTransformer.js +10 -0
- package/lib/features/protobuf/ProtobufDecodeTransformer.js.map +1 -0
- package/lib/features/protobuf/ProtobufDecodeTransformer.mjs +14 -0
- package/lib/features/protobuf/ProtobufDecodeTransformer.mjs.map +1 -0
- package/lib/features/protobuf/ProtobufEncodeTransformer.d.ts +4 -0
- package/lib/features/protobuf/ProtobufEncodeTransformer.js +10 -0
- package/lib/features/protobuf/ProtobufEncodeTransformer.js.map +1 -0
- package/lib/features/protobuf/ProtobufEncodeTransformer.mjs +14 -0
- package/lib/features/protobuf/ProtobufEncodeTransformer.mjs.map +1 -0
- package/lib/features/protobuf/ProtobufIsDecodeTransformer.d.ts +4 -0
- package/lib/features/protobuf/ProtobufIsDecodeTransformer.js +10 -0
- package/lib/features/protobuf/ProtobufIsDecodeTransformer.js.map +1 -0
- package/lib/features/protobuf/ProtobufIsDecodeTransformer.mjs +14 -0
- package/lib/features/protobuf/ProtobufIsDecodeTransformer.mjs.map +1 -0
- package/lib/features/protobuf/ProtobufIsEncodeTransformer.d.ts +4 -0
- package/lib/features/protobuf/ProtobufIsEncodeTransformer.js +10 -0
- package/lib/features/protobuf/ProtobufIsEncodeTransformer.js.map +1 -0
- package/lib/features/protobuf/ProtobufIsEncodeTransformer.mjs +14 -0
- package/lib/features/protobuf/ProtobufIsEncodeTransformer.mjs.map +1 -0
- package/lib/features/protobuf/ProtobufMessageTransformer.d.ts +5 -0
- package/lib/features/protobuf/ProtobufMessageTransformer.js +29 -0
- package/lib/features/protobuf/ProtobufMessageTransformer.js.map +1 -0
- package/lib/features/protobuf/ProtobufMessageTransformer.mjs +29 -0
- package/lib/features/protobuf/ProtobufMessageTransformer.mjs.map +1 -0
- package/lib/features/protobuf/ProtobufValidateDecodeTransformer.d.ts +4 -0
- package/lib/features/protobuf/ProtobufValidateDecodeTransformer.js +10 -0
- package/lib/features/protobuf/ProtobufValidateDecodeTransformer.js.map +1 -0
- package/lib/features/protobuf/ProtobufValidateDecodeTransformer.mjs +14 -0
- package/lib/features/protobuf/ProtobufValidateDecodeTransformer.mjs.map +1 -0
- package/lib/features/protobuf/ProtobufValidateEncodeTransformer.d.ts +4 -0
- package/lib/features/protobuf/ProtobufValidateEncodeTransformer.js +10 -0
- package/lib/features/protobuf/ProtobufValidateEncodeTransformer.js.map +1 -0
- package/lib/features/protobuf/ProtobufValidateEncodeTransformer.mjs +14 -0
- package/lib/features/protobuf/ProtobufValidateEncodeTransformer.mjs.map +1 -0
- package/lib/features/reflect/ReflectMetadataTransformer.d.ts +5 -0
- package/lib/features/reflect/ReflectMetadataTransformer.js +62 -0
- package/lib/features/reflect/ReflectMetadataTransformer.js.map +1 -0
- package/lib/features/reflect/ReflectMetadataTransformer.mjs +58 -0
- package/lib/features/reflect/ReflectMetadataTransformer.mjs.map +1 -0
- package/lib/features/reflect/ReflectNameTransformer.d.ts +5 -0
- package/lib/features/reflect/ReflectNameTransformer.js +69 -0
- package/lib/features/reflect/ReflectNameTransformer.js.map +1 -0
- package/lib/features/reflect/ReflectNameTransformer.mjs +65 -0
- package/lib/features/reflect/ReflectNameTransformer.mjs.map +1 -0
- package/lib/index.d.ts +5 -0
- package/lib/index.js +22 -0
- package/lib/index.js.map +1 -0
- package/lib/index.mjs +8 -0
- package/lib/index.mjs.map +1 -0
- package/lib/internal/GenericTransformer.d.ts +11 -0
- package/lib/internal/GenericTransformer.js +76 -0
- package/lib/internal/GenericTransformer.js.map +1 -0
- package/lib/internal/GenericTransformer.mjs +72 -0
- package/lib/internal/GenericTransformer.mjs.map +1 -0
- package/lib/transform.d.ts +38 -0
- package/lib/transform.js +68 -0
- package/lib/transform.js.map +1 -0
- package/lib/transform.mjs +64 -0
- package/lib/transform.mjs.map +1 -0
- package/package.json +95 -0
- package/src/CallExpressionTransformer.ts +567 -0
- package/src/FileTransformer.ts +143 -0
- package/src/ITransformProps.ts +20 -0
- package/src/ImportTransformer.ts +262 -0
- package/src/NodeTransformer.ts +25 -0
- package/src/TransformerError.ts +85 -0
- package/src/TypiaGenerator.ts +174 -0
- package/src/features/AssertTransformer.ts +24 -0
- package/src/features/CreateAssertTransformer.ts +24 -0
- package/src/features/CreateIsTransformer.ts +18 -0
- package/src/features/CreateRandomTransformer.ts +42 -0
- package/src/features/CreateValidateTransformer.ts +18 -0
- package/src/features/IsTransformer.ts +18 -0
- package/src/features/RandomTransformer.ts +40 -0
- package/src/features/ValidateTransformer.ts +18 -0
- package/src/features/functional/FunctionalGenericTransformer.ts +55 -0
- package/src/features/http/CreateHttpAssertFormDataTransformer.ts +13 -0
- package/src/features/http/CreateHttpAssertHeadersTransformer.ts +13 -0
- package/src/features/http/CreateHttpAssertQueryTransformer.ts +13 -0
- package/src/features/http/CreateHttpFormDataTransformer.ts +13 -0
- package/src/features/http/CreateHttpHeadersTransformer.ts +13 -0
- package/src/features/http/CreateHttpIsFormDataTransformer.ts +13 -0
- package/src/features/http/CreateHttpIsHeadersTransformer.ts +13 -0
- package/src/features/http/CreateHttpIsQueryTransformer.ts +13 -0
- package/src/features/http/CreateHttpParameterTransformer.ts +13 -0
- package/src/features/http/CreateHttpQueryTransformer.ts +13 -0
- package/src/features/http/CreateHttpValidateFormDataTransformer.ts +13 -0
- package/src/features/http/CreateHttpValidateHeadersTransformer.ts +13 -0
- package/src/features/http/CreateHttpValidateQueryTransformer.ts +13 -0
- package/src/features/http/HttpAssertFormDataTransformer.ts +13 -0
- package/src/features/http/HttpAssertHeadersTransformer.ts +13 -0
- package/src/features/http/HttpAssertQueryTransformer.ts +13 -0
- package/src/features/http/HttpFormDataTransformer.ts +13 -0
- package/src/features/http/HttpHeadersTransformer.ts +13 -0
- package/src/features/http/HttpIsFormDataTransformer.ts +13 -0
- package/src/features/http/HttpIsHeadersTransformer.ts +13 -0
- package/src/features/http/HttpIsQueryTransformer.ts +13 -0
- package/src/features/http/HttpParameterTransformer.ts +13 -0
- package/src/features/http/HttpQueryTransformer.ts +13 -0
- package/src/features/http/HttpValidateFormDataTransformer.ts +13 -0
- package/src/features/http/HttpValidateHeadersTransformer.ts +13 -0
- package/src/features/http/HttpValidateQueryTransformer.ts +13 -0
- package/src/features/json/JsonApplicationTransformer.ts +102 -0
- package/src/features/json/JsonAssertParseTransformer.ts +13 -0
- package/src/features/json/JsonAssertStringifyTransformer.ts +13 -0
- package/src/features/json/JsonCreateAssertParseTransformer.ts +13 -0
- package/src/features/json/JsonCreateAssertStringifyTransformer.ts +13 -0
- package/src/features/json/JsonCreateIsParseTransformer.ts +13 -0
- package/src/features/json/JsonCreateIsStringifyTransformer.ts +13 -0
- package/src/features/json/JsonCreateStringifyTransformer.ts +13 -0
- package/src/features/json/JsonCreateValidateParseTransformer.ts +13 -0
- package/src/features/json/JsonCreateValidateStringifyProgrammer.ts +13 -0
- package/src/features/json/JsonIsParseTransformer.ts +13 -0
- package/src/features/json/JsonIsStringifyTransformer.ts +13 -0
- package/src/features/json/JsonSchemaTransformer.ts +132 -0
- package/src/features/json/JsonSchemasTransformer.ts +142 -0
- package/src/features/json/JsonStringifyTransformer.ts +13 -0
- package/src/features/json/JsonValidateParseTransformer.ts +13 -0
- package/src/features/json/JsonValidateStringifyTransformer.ts +13 -0
- package/src/features/llm/LlmApplicationTransformer.ts +206 -0
- package/src/features/llm/LlmControllerTransformer.ts +82 -0
- package/src/features/llm/LlmParametersTransformer.ts +88 -0
- package/src/features/llm/LlmSchemaTransformer.ts +133 -0
- package/src/features/misc/MiscAssertCloneTransformer.ts +13 -0
- package/src/features/misc/MiscAssertPruneTransformer.ts +13 -0
- package/src/features/misc/MiscCloneTransformer.ts +13 -0
- package/src/features/misc/MiscCreateAssertCloneTransformer.ts +13 -0
- package/src/features/misc/MiscCreateAssertPruneTransformer.ts +13 -0
- package/src/features/misc/MiscCreateCloneTransformer.ts +13 -0
- package/src/features/misc/MiscCreateIsCloneTransformer.ts +13 -0
- package/src/features/misc/MiscCreateIsPruneTransformer.ts +13 -0
- package/src/features/misc/MiscCreatePruneTransformer.ts +13 -0
- package/src/features/misc/MiscCreateValidateCloneTransformer.ts +13 -0
- package/src/features/misc/MiscCreateValidatePruneTransformer.ts +13 -0
- package/src/features/misc/MiscIsCloneTransformer.ts +13 -0
- package/src/features/misc/MiscIsPruneTransformer.ts +13 -0
- package/src/features/misc/MiscLiteralsTransformer.ts +34 -0
- package/src/features/misc/MiscPruneTransformer.ts +13 -0
- package/src/features/misc/MiscValidateCloneTransformer.ts +13 -0
- package/src/features/misc/MiscValidatePruneTransformer.ts +13 -0
- package/src/features/notations/NotationAssertGeneralTransformer.ts +19 -0
- package/src/features/notations/NotationCreateAssertGeneralTransformer.ts +19 -0
- package/src/features/notations/NotationCreateGeneralTransformer.ts +19 -0
- package/src/features/notations/NotationCreateIsGeneralTransformer.ts +19 -0
- package/src/features/notations/NotationCreateValidateGeneralTransformer.ts +19 -0
- package/src/features/notations/NotationGeneralTransformer.ts +18 -0
- package/src/features/notations/NotationIsGeneralTransformer.ts +19 -0
- package/src/features/notations/NotationValidateGeneralTransformer.ts +19 -0
- package/src/features/protobuf/ProtobufAssertDecodeTransformer.ts +13 -0
- package/src/features/protobuf/ProtobufAssertEncodeTransformer.ts +13 -0
- package/src/features/protobuf/ProtobufCreateAssertDecodeTransformer.ts +13 -0
- package/src/features/protobuf/ProtobufCreateAssertEncodeTransformer.ts +13 -0
- package/src/features/protobuf/ProtobufCreateDecodeTransformer.ts +13 -0
- package/src/features/protobuf/ProtobufCreateEncodeTransformer.ts +13 -0
- package/src/features/protobuf/ProtobufCreateIsDecodeTransformer.ts +13 -0
- package/src/features/protobuf/ProtobufCreateIsEncodeTransformer.ts +13 -0
- package/src/features/protobuf/ProtobufCreateValidateDecodeTransformer.ts +13 -0
- package/src/features/protobuf/ProtobufCreateValidateEncodeTransformer.ts +13 -0
- package/src/features/protobuf/ProtobufDecodeTransformer.ts +13 -0
- package/src/features/protobuf/ProtobufEncodeTransformer.ts +13 -0
- package/src/features/protobuf/ProtobufIsDecodeTransformer.ts +13 -0
- package/src/features/protobuf/ProtobufIsEncodeTransformer.ts +13 -0
- package/src/features/protobuf/ProtobufMessageTransformer.ts +34 -0
- package/src/features/protobuf/ProtobufValidateDecodeTransformer.ts +13 -0
- package/src/features/protobuf/ProtobufValidateEncodeTransformer.ts +13 -0
- package/src/features/reflect/ReflectMetadataTransformer.ts +69 -0
- package/src/features/reflect/ReflectNameTransformer.ts +81 -0
- package/src/index.ts +7 -0
- package/src/internal/GenericTransformer.ts +101 -0
- package/src/transform.ts +68 -0
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { ITypiaContext, ImportProgrammer } from "@typia/core";
|
|
2
|
+
import { Singleton } from "@typia/utils";
|
|
3
|
+
import ts from "typescript";
|
|
4
|
+
|
|
5
|
+
import { NodeTransformer } from "./NodeTransformer";
|
|
6
|
+
import { TransformerError } from "./TransformerError";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* TypeScript source file transformer for typia.
|
|
10
|
+
*
|
|
11
|
+
* Entry point for typia's compile-time transformation. Traverses AST nodes,
|
|
12
|
+
* transforms `typia.*` function calls into optimized runtime code, and injects
|
|
13
|
+
* required imports. Skips declaration files.
|
|
14
|
+
*
|
|
15
|
+
* @author Jeongho Nam - https://github.com/samchon
|
|
16
|
+
*/
|
|
17
|
+
export namespace FileTransformer {
|
|
18
|
+
export const transform =
|
|
19
|
+
(environments: Omit<ITypiaContext, "transformer" | "importer">) =>
|
|
20
|
+
(transformer: ts.TransformationContext) =>
|
|
21
|
+
(file: ts.SourceFile): ts.SourceFile => {
|
|
22
|
+
if (file.isDeclarationFile) return file;
|
|
23
|
+
|
|
24
|
+
const importer: ImportProgrammer = new ImportProgrammer({
|
|
25
|
+
internalPrefix: "typia_transform_",
|
|
26
|
+
runtime: environments.options.runtime,
|
|
27
|
+
});
|
|
28
|
+
const context: ITypiaContext = {
|
|
29
|
+
...environments,
|
|
30
|
+
transformer,
|
|
31
|
+
importer,
|
|
32
|
+
};
|
|
33
|
+
checkJsDocParsingMode.get(context, file);
|
|
34
|
+
|
|
35
|
+
file = ts.visitEachChild(
|
|
36
|
+
file,
|
|
37
|
+
(node) =>
|
|
38
|
+
iterate_node({
|
|
39
|
+
context,
|
|
40
|
+
node,
|
|
41
|
+
}),
|
|
42
|
+
transformer,
|
|
43
|
+
);
|
|
44
|
+
const index: number = find_import_injection_index(file);
|
|
45
|
+
return ts.factory.updateSourceFile(
|
|
46
|
+
file,
|
|
47
|
+
[
|
|
48
|
+
...file.statements.slice(0, index),
|
|
49
|
+
...importer.toStatements(),
|
|
50
|
+
...file.statements.slice(index),
|
|
51
|
+
],
|
|
52
|
+
false,
|
|
53
|
+
file.referencedFiles,
|
|
54
|
+
file.typeReferenceDirectives,
|
|
55
|
+
file.hasNoDefaultLib,
|
|
56
|
+
file.libReferenceDirectives,
|
|
57
|
+
);
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
const iterate_node = (props: {
|
|
61
|
+
context: ITypiaContext;
|
|
62
|
+
node: ts.Node;
|
|
63
|
+
}): ts.Node =>
|
|
64
|
+
ts.visitEachChild(
|
|
65
|
+
try_transform_node(props) ?? props.node,
|
|
66
|
+
(node) =>
|
|
67
|
+
iterate_node({
|
|
68
|
+
context: props.context,
|
|
69
|
+
node,
|
|
70
|
+
}),
|
|
71
|
+
props.context.transformer,
|
|
72
|
+
);
|
|
73
|
+
|
|
74
|
+
const try_transform_node = (props: {
|
|
75
|
+
context: ITypiaContext;
|
|
76
|
+
node: ts.Node;
|
|
77
|
+
}): ts.Node | null => {
|
|
78
|
+
try {
|
|
79
|
+
return NodeTransformer.transform(props);
|
|
80
|
+
} catch (exp) {
|
|
81
|
+
// ONLY ACCEPT TRANSFORMER-ERROR
|
|
82
|
+
if (!isTransformerError(exp)) throw exp;
|
|
83
|
+
|
|
84
|
+
// REPORT DIAGNOSTIC
|
|
85
|
+
const diagnostic = ts.createDiagnosticForNode(props.node, {
|
|
86
|
+
key: exp.code,
|
|
87
|
+
category: ts.DiagnosticCategory.Error,
|
|
88
|
+
message: exp.message,
|
|
89
|
+
code: `(${exp.code})` as any,
|
|
90
|
+
});
|
|
91
|
+
props.context.extras.addDiagnostic(diagnostic);
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
const find_import_injection_index = (file: ts.SourceFile): number => {
|
|
97
|
+
let i: number = 0;
|
|
98
|
+
for (; i < file.statements.length; ++i) {
|
|
99
|
+
const stmt: ts.Statement = file.statements[i]!;
|
|
100
|
+
if (
|
|
101
|
+
ts.isExpressionStatement(stmt) &&
|
|
102
|
+
ts.isStringLiteralLike(stmt.expression) &&
|
|
103
|
+
stmt.expression.text.startsWith("use ")
|
|
104
|
+
)
|
|
105
|
+
continue;
|
|
106
|
+
break;
|
|
107
|
+
}
|
|
108
|
+
return i;
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
const isTransformerError = (error: any): error is TransformerError =>
|
|
113
|
+
typeof error === "object" &&
|
|
114
|
+
error !== null &&
|
|
115
|
+
error.constructor.name === "TransformerError" &&
|
|
116
|
+
typeof error.code === "string" &&
|
|
117
|
+
typeof error.message === "string";
|
|
118
|
+
|
|
119
|
+
const checkJsDocParsingMode = new Singleton(
|
|
120
|
+
(context: ITypiaContext, file: ts.SourceFile) => {
|
|
121
|
+
if (
|
|
122
|
+
typeof file.jsDocParsingMode === "number" &&
|
|
123
|
+
file.jsDocParsingMode !== 0
|
|
124
|
+
) {
|
|
125
|
+
context.extras.addDiagnostic(
|
|
126
|
+
ts.createDiagnosticForNode(file, {
|
|
127
|
+
code: `(typia setup)` as any,
|
|
128
|
+
key: "jsDocParsingMode",
|
|
129
|
+
category: ts.DiagnosticCategory.Warning,
|
|
130
|
+
message: [
|
|
131
|
+
`Run "npx typia setup" or "npx typia patch" command again.`,
|
|
132
|
+
``,
|
|
133
|
+
`Since TypeScript v5.3 update, "tsc" no more parses JSDoc comments. Therefore, "typia" also cannot utilize those JSDoc comments too, and it damages on some features of "typia" like "comment tags" or "JSON schema" generator.`,
|
|
134
|
+
``,
|
|
135
|
+
`To solve this problem, run "npx typia setup" or "npx typia patch" command to hack the TypeScript compiler to revive the JSDoc parsing feature.`,
|
|
136
|
+
``,
|
|
137
|
+
` - reference: https://github.com/microsoft/TypeScript/pull/55739`,
|
|
138
|
+
].join("\n"),
|
|
139
|
+
}),
|
|
140
|
+
);
|
|
141
|
+
}
|
|
142
|
+
},
|
|
143
|
+
);
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ITypiaContext } from "@typia/core";
|
|
2
|
+
import ts from "typescript";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Properties for individual typia function transformation.
|
|
6
|
+
*
|
|
7
|
+
* Passed to each transformer handler when processing a `typia.*()` call.
|
|
8
|
+
*
|
|
9
|
+
* @author Jeongho Nam - https://github.com/samchon
|
|
10
|
+
*/
|
|
11
|
+
export interface ITransformProps {
|
|
12
|
+
/** Typia transformation context with type checker and utilities. */
|
|
13
|
+
context: ITypiaContext;
|
|
14
|
+
|
|
15
|
+
/** Module expression (e.g., `typia` in `typia.is<T>()`). */
|
|
16
|
+
modulo: ts.LeftHandSideExpression;
|
|
17
|
+
|
|
18
|
+
/** The original `typia.*<T>()` call expression being transformed. */
|
|
19
|
+
expression: ts.CallExpression;
|
|
20
|
+
}
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
import path from "path";
|
|
2
|
+
import ts from "typescript";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Transforms import paths for typia build output.
|
|
6
|
+
*
|
|
7
|
+
* Rewrites relative import paths when building typia packages. Also removes
|
|
8
|
+
* unused typia imports that only contained transformable function calls (since
|
|
9
|
+
* those are replaced at compile time).
|
|
10
|
+
*
|
|
11
|
+
* @author Jeongho Nam - https://github.com/samchon
|
|
12
|
+
*/
|
|
13
|
+
export namespace ImportTransformer {
|
|
14
|
+
export const transform =
|
|
15
|
+
(props: { from: string; to: string }) =>
|
|
16
|
+
(context: ts.TransformationContext) =>
|
|
17
|
+
(file: ts.SourceFile) =>
|
|
18
|
+
transform_file({
|
|
19
|
+
top: props.from,
|
|
20
|
+
to: props.to,
|
|
21
|
+
context,
|
|
22
|
+
file,
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
const transform_file = (props: {
|
|
26
|
+
top: string;
|
|
27
|
+
to: string;
|
|
28
|
+
context: ts.TransformationContext;
|
|
29
|
+
file: ts.SourceFile;
|
|
30
|
+
}): ts.SourceFile => {
|
|
31
|
+
if (props.file.isDeclarationFile) return props.file;
|
|
32
|
+
|
|
33
|
+
const from: string = get_directory_path(
|
|
34
|
+
path.resolve(props.file.getSourceFile().fileName),
|
|
35
|
+
);
|
|
36
|
+
const to: string = from.replace(props.top, props.to);
|
|
37
|
+
|
|
38
|
+
// First pass: transform relative imports
|
|
39
|
+
let transformedFile = ts.visitEachChild(
|
|
40
|
+
props.file,
|
|
41
|
+
(node) =>
|
|
42
|
+
transform_node({
|
|
43
|
+
top: props.top,
|
|
44
|
+
from,
|
|
45
|
+
to,
|
|
46
|
+
node,
|
|
47
|
+
}),
|
|
48
|
+
props.context,
|
|
49
|
+
);
|
|
50
|
+
|
|
51
|
+
// Second pass: remove unused typia imports
|
|
52
|
+
transformedFile = removeUnusedTypiaImports(transformedFile);
|
|
53
|
+
|
|
54
|
+
return transformedFile;
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
const transform_node = (props: {
|
|
58
|
+
top: string;
|
|
59
|
+
from: string;
|
|
60
|
+
to: string;
|
|
61
|
+
node: ts.Node;
|
|
62
|
+
}) => {
|
|
63
|
+
if (
|
|
64
|
+
!ts.isImportDeclaration(props.node) ||
|
|
65
|
+
!ts.isStringLiteral(props.node.moduleSpecifier)
|
|
66
|
+
)
|
|
67
|
+
return props.node;
|
|
68
|
+
|
|
69
|
+
const text: string = props.node.moduleSpecifier.text;
|
|
70
|
+
if (text[0] !== ".") return props.node;
|
|
71
|
+
|
|
72
|
+
const location: string = path.resolve(props.from, text);
|
|
73
|
+
if (location.indexOf(props.top) === 0) return props.node;
|
|
74
|
+
|
|
75
|
+
const replaced: string = (() => {
|
|
76
|
+
const simple: string = path
|
|
77
|
+
.relative(props.to, location)
|
|
78
|
+
.split(path.sep)
|
|
79
|
+
.join("/");
|
|
80
|
+
return simple[0] === "." ? simple : `./${simple}`;
|
|
81
|
+
})();
|
|
82
|
+
|
|
83
|
+
return ts.factory.createImportDeclaration(
|
|
84
|
+
undefined,
|
|
85
|
+
props.node.importClause,
|
|
86
|
+
ts.factory.createStringLiteral(replaced),
|
|
87
|
+
props.node.assertClause,
|
|
88
|
+
);
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
const get_directory_path = (file: string): string => {
|
|
93
|
+
const split: string[] = path.resolve(file).split(path.sep);
|
|
94
|
+
split.pop();
|
|
95
|
+
return path.resolve(split.join(path.sep));
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
/** Remove unused typia imports that are only used in transformable calls */
|
|
99
|
+
const removeUnusedTypiaImports = (file: ts.SourceFile): ts.SourceFile => {
|
|
100
|
+
// Find typia imports and collect all identifiers
|
|
101
|
+
interface ImportMetadata {
|
|
102
|
+
declaration: ts.ImportDeclaration;
|
|
103
|
+
default: boolean;
|
|
104
|
+
}
|
|
105
|
+
const imports: Map<string, ImportMetadata> = new Map();
|
|
106
|
+
for (const stmt of file.statements) {
|
|
107
|
+
if (
|
|
108
|
+
ts.isImportDeclaration(stmt) === false ||
|
|
109
|
+
ts.isStringLiteral(stmt.moduleSpecifier) === false ||
|
|
110
|
+
stmt.moduleSpecifier.text !== "typia" ||
|
|
111
|
+
stmt.importClause === undefined
|
|
112
|
+
)
|
|
113
|
+
continue;
|
|
114
|
+
|
|
115
|
+
// Track default import (import typia from 'typia')
|
|
116
|
+
if (stmt.importClause.name)
|
|
117
|
+
imports.set(stmt.importClause.name.text, {
|
|
118
|
+
declaration: stmt,
|
|
119
|
+
default: true,
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
// Track named imports (import { tags } from 'typia') - keep these
|
|
123
|
+
if (
|
|
124
|
+
stmt.importClause.namedBindings &&
|
|
125
|
+
ts.isNamedImports(stmt.importClause.namedBindings)
|
|
126
|
+
)
|
|
127
|
+
for (const element of stmt.importClause.namedBindings.elements)
|
|
128
|
+
imports.set(element.name.text, {
|
|
129
|
+
declaration: stmt,
|
|
130
|
+
default: false,
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
if (imports.size === 0) return file; // No typia imports to check
|
|
134
|
+
|
|
135
|
+
// Find usage of typia identifiers that are NOT transformable calls
|
|
136
|
+
const nonTransformableUsage = new Set<string>();
|
|
137
|
+
const checkUsage = (node: ts.Node) => {
|
|
138
|
+
if (ts.isIdentifier(node) && imports.has(node.text)) {
|
|
139
|
+
const identifier: string = node.text;
|
|
140
|
+
// Check if this identifier is being used as part of a property access
|
|
141
|
+
if (
|
|
142
|
+
node.parent &&
|
|
143
|
+
ts.isPropertyAccessExpression(node.parent) &&
|
|
144
|
+
node.parent.expression === node
|
|
145
|
+
) {
|
|
146
|
+
// This is typia.something - check if it's a transformable call pattern
|
|
147
|
+
if (!isLikelyTransformableCall(node.parent))
|
|
148
|
+
nonTransformableUsage.add(identifier);
|
|
149
|
+
} else
|
|
150
|
+
// Direct usage of the typia identifier (not as property access)
|
|
151
|
+
// This is definitely non-transformable usage
|
|
152
|
+
nonTransformableUsage.add(identifier);
|
|
153
|
+
}
|
|
154
|
+
ts.forEachChild(node, checkUsage);
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
// Check all statements except import declarations
|
|
158
|
+
for (const stmt of file.statements)
|
|
159
|
+
if (
|
|
160
|
+
!ts.isImportDeclaration(stmt) ||
|
|
161
|
+
!ts.isStringLiteral(stmt.moduleSpecifier) ||
|
|
162
|
+
stmt.moduleSpecifier.text !== "typia"
|
|
163
|
+
)
|
|
164
|
+
checkUsage(stmt);
|
|
165
|
+
|
|
166
|
+
// Update import statements
|
|
167
|
+
const newStatements: ts.Statement[] = file.statements
|
|
168
|
+
.map((stmt) => {
|
|
169
|
+
if (
|
|
170
|
+
ts.isImportDeclaration(stmt) &&
|
|
171
|
+
ts.isStringLiteral(stmt.moduleSpecifier) &&
|
|
172
|
+
stmt.moduleSpecifier.text === "typia" &&
|
|
173
|
+
stmt.importClause
|
|
174
|
+
) {
|
|
175
|
+
const newImportClause = filterTypiaImportClause(
|
|
176
|
+
stmt.importClause,
|
|
177
|
+
nonTransformableUsage,
|
|
178
|
+
);
|
|
179
|
+
if (newImportClause)
|
|
180
|
+
return ts.factory.createImportDeclaration(
|
|
181
|
+
stmt.modifiers,
|
|
182
|
+
newImportClause,
|
|
183
|
+
stmt.moduleSpecifier,
|
|
184
|
+
stmt.attributes,
|
|
185
|
+
);
|
|
186
|
+
return null; // Skip adding the import if all imports are unused
|
|
187
|
+
}
|
|
188
|
+
return stmt;
|
|
189
|
+
})
|
|
190
|
+
.filter((stmt) => stmt !== null);
|
|
191
|
+
return ts.factory.updateSourceFile(
|
|
192
|
+
file,
|
|
193
|
+
newStatements,
|
|
194
|
+
file.isDeclarationFile,
|
|
195
|
+
file.referencedFiles,
|
|
196
|
+
file.typeReferenceDirectives,
|
|
197
|
+
file.hasNoDefaultLib,
|
|
198
|
+
file.libReferenceDirectives,
|
|
199
|
+
);
|
|
200
|
+
};
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* Check if a property access expression looks like a transformable typia call
|
|
204
|
+
* This uses heuristics to detect patterns like typia.xxx(),
|
|
205
|
+
* typia.namespace.xxx()
|
|
206
|
+
*/
|
|
207
|
+
const isLikelyTransformableCall = (
|
|
208
|
+
node: ts.PropertyAccessExpression,
|
|
209
|
+
): boolean => {
|
|
210
|
+
// Check if this is eventually part of a call expression
|
|
211
|
+
let current: ts.Node = node;
|
|
212
|
+
|
|
213
|
+
// Walk up the chain to find if this leads to a call expression
|
|
214
|
+
// Handle patterns like: typia.xxx(), typia.namespace.xxx()
|
|
215
|
+
while (ts.isPropertyAccessExpression(current)) {
|
|
216
|
+
current = current.parent;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
// If the final result is a call expression, this is likely transformable
|
|
220
|
+
if (
|
|
221
|
+
ts.isCallExpression(current) &&
|
|
222
|
+
(current.expression === node ||
|
|
223
|
+
(ts.isPropertyAccessExpression(current.expression) &&
|
|
224
|
+
isTypiaPropertyChain(current.expression)))
|
|
225
|
+
) {
|
|
226
|
+
return true;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
return false;
|
|
230
|
+
};
|
|
231
|
+
|
|
232
|
+
/** Check if a property access expression is part of a typia.xxx.yyy chain */
|
|
233
|
+
const isTypiaPropertyChain = (node: ts.PropertyAccessExpression): boolean => {
|
|
234
|
+
let current: ts.Expression = node;
|
|
235
|
+
|
|
236
|
+
while (ts.isPropertyAccessExpression(current)) {
|
|
237
|
+
current = current.expression;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
return ts.isIdentifier(current) && current.text === "typia";
|
|
241
|
+
};
|
|
242
|
+
|
|
243
|
+
/** Filter import clause to remove unused default imports */
|
|
244
|
+
const filterTypiaImportClause = (
|
|
245
|
+
importClause: ts.ImportClause,
|
|
246
|
+
usedImports: Set<string>,
|
|
247
|
+
): ts.ImportClause | undefined => {
|
|
248
|
+
const hasDefaultImport =
|
|
249
|
+
importClause.name && usedImports.has(importClause.name.text);
|
|
250
|
+
const namedBindings = importClause.namedBindings; // Always keep named bindings like { tags }
|
|
251
|
+
|
|
252
|
+
// Return undefined if no imports are used
|
|
253
|
+
if (!hasDefaultImport && !namedBindings) {
|
|
254
|
+
return undefined;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
return ts.factory.createImportClause(
|
|
258
|
+
importClause.isTypeOnly,
|
|
259
|
+
hasDefaultImport ? importClause.name : undefined,
|
|
260
|
+
namedBindings,
|
|
261
|
+
);
|
|
262
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ITypiaContext } from "@typia/core";
|
|
2
|
+
import ts from "typescript";
|
|
3
|
+
|
|
4
|
+
import { CallExpressionTransformer } from "./CallExpressionTransformer";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* TypeScript AST node transformer.
|
|
8
|
+
*
|
|
9
|
+
* Delegates call expression nodes to {@link CallExpressionTransformer} for
|
|
10
|
+
* potential `typia.*` function transformation. Non-call nodes pass through.
|
|
11
|
+
*
|
|
12
|
+
* @author Jeongho Nam - https://github.com/samchon
|
|
13
|
+
*/
|
|
14
|
+
export namespace NodeTransformer {
|
|
15
|
+
export const transform = (props: {
|
|
16
|
+
context: ITypiaContext;
|
|
17
|
+
node: ts.Node;
|
|
18
|
+
}): ts.Node | null =>
|
|
19
|
+
ts.isCallExpression(props.node) && props.node.parent
|
|
20
|
+
? CallExpressionTransformer.transform({
|
|
21
|
+
context: props.context,
|
|
22
|
+
expression: props.node,
|
|
23
|
+
})
|
|
24
|
+
: props.node;
|
|
25
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { MetadataFactory, MetadataObjectType } from "@typia/core";
|
|
2
|
+
import { NamingConvention } from "@typia/utils";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Error thrown during typia transformation.
|
|
6
|
+
*
|
|
7
|
+
* `TransformerError` is thrown when `typia.*<T>()` receives unsupported types
|
|
8
|
+
* or invalid configurations at compile time. The error message details which
|
|
9
|
+
* types failed and why.
|
|
10
|
+
*
|
|
11
|
+
* Common causes:
|
|
12
|
+
*
|
|
13
|
+
* - Tuples in LLM schema (not supported by most LLMs)
|
|
14
|
+
* - Recursive types without `$ref` support
|
|
15
|
+
* - `any` types without explicit handling
|
|
16
|
+
* - Native classes not serializable to JSON
|
|
17
|
+
*
|
|
18
|
+
* Use {@link from} to create from {@link MetadataFactory.IError} instances.
|
|
19
|
+
*
|
|
20
|
+
* @author Jeongho Nam - https://github.com/samchon
|
|
21
|
+
*/
|
|
22
|
+
export class TransformerError extends Error {
|
|
23
|
+
/** Error code identifying the error type. */
|
|
24
|
+
public readonly code: string;
|
|
25
|
+
|
|
26
|
+
public constructor(props: TransformerError.IProps) {
|
|
27
|
+
super(props.message);
|
|
28
|
+
this.code = props.code;
|
|
29
|
+
|
|
30
|
+
// INHERITANCE POLYFILL
|
|
31
|
+
const proto = new.target.prototype;
|
|
32
|
+
if (Object.setPrototypeOf) Object.setPrototypeOf(this, proto);
|
|
33
|
+
else (this as any).__proto__ = proto;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export namespace TransformerError {
|
|
37
|
+
/** Constructor properties for TransformerError. */
|
|
38
|
+
export interface IProps {
|
|
39
|
+
/** Error code identifying the error type. */
|
|
40
|
+
code: string;
|
|
41
|
+
|
|
42
|
+
/** Human-readable error message. */
|
|
43
|
+
message: string;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Create error from metadata factory errors.
|
|
48
|
+
*
|
|
49
|
+
* Formats multiple type errors into a single TransformerError.
|
|
50
|
+
*/
|
|
51
|
+
export const from = (props: {
|
|
52
|
+
code: string;
|
|
53
|
+
errors: MetadataFactory.IError[];
|
|
54
|
+
}): TransformerError => {
|
|
55
|
+
const body: string = props.errors
|
|
56
|
+
.map((e) => {
|
|
57
|
+
const subject: string =
|
|
58
|
+
e.explore.object === null
|
|
59
|
+
? ""
|
|
60
|
+
: join(e.explore.object)(e.explore.property);
|
|
61
|
+
const middle: string = e.explore.parameter
|
|
62
|
+
? `(parameter: ${JSON.stringify(e.explore.parameter)})`
|
|
63
|
+
: e.explore.output
|
|
64
|
+
? "(return type)"
|
|
65
|
+
: "";
|
|
66
|
+
const type: string = `${subject.length ? `${subject}: ` : ""}${e.name}`;
|
|
67
|
+
return `- ${type}${middle}\n${e.messages
|
|
68
|
+
.map((msg) => ` - ${msg}`)
|
|
69
|
+
.join("\n")}`;
|
|
70
|
+
})
|
|
71
|
+
.join("\n\n");
|
|
72
|
+
return new TransformerError({
|
|
73
|
+
code: props.code,
|
|
74
|
+
message: `unsupported type detected\n\n${body}`,
|
|
75
|
+
});
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
const join =
|
|
79
|
+
(object: MetadataObjectType) => (key: string | object | null) => {
|
|
80
|
+
if (key === null) return object.name;
|
|
81
|
+
else if (typeof key === "object") return `${object.name}[key]`;
|
|
82
|
+
else if (NamingConvention.variable(key)) return `${object.name}.${key}`;
|
|
83
|
+
return `${object.name}[${JSON.stringify(key)}]`;
|
|
84
|
+
};
|
|
85
|
+
}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import ts from "typescript";
|
|
4
|
+
|
|
5
|
+
import { ImportTransformer } from "./ImportTransformer";
|
|
6
|
+
import { transform } from "./transform";
|
|
7
|
+
|
|
8
|
+
export namespace TypiaGenerator {
|
|
9
|
+
export interface ILocation {
|
|
10
|
+
input: string;
|
|
11
|
+
output: string;
|
|
12
|
+
project: string;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export const build = async (
|
|
16
|
+
location: TypiaGenerator.ILocation,
|
|
17
|
+
): Promise<void> => {
|
|
18
|
+
location.input = path.resolve(location.input);
|
|
19
|
+
location.output = path.resolve(location.output);
|
|
20
|
+
|
|
21
|
+
if ((await is_directory(location.input)) === false)
|
|
22
|
+
throw new URIError(
|
|
23
|
+
"Error on TypiaGenerator.generate(): input path is not a directory.",
|
|
24
|
+
);
|
|
25
|
+
else if (fs.existsSync(location.output) === false)
|
|
26
|
+
await fs.promises.mkdir(location.output, { recursive: true });
|
|
27
|
+
else if ((await is_directory(location.output)) === false) {
|
|
28
|
+
const parent: string = path.join(location.output, "..");
|
|
29
|
+
if ((await is_directory(parent)) === false)
|
|
30
|
+
throw new URIError(
|
|
31
|
+
"Error on TypiaGenerator.generate(): output path is not a directory.",
|
|
32
|
+
);
|
|
33
|
+
await fs.promises.mkdir(location.output);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// CREATE PROGRAM
|
|
37
|
+
const { options: compilerOptions } = ts.parseJsonConfigFileContent(
|
|
38
|
+
ts.readConfigFile(location.project, ts.sys.readFile).config,
|
|
39
|
+
{
|
|
40
|
+
fileExists: ts.sys.fileExists,
|
|
41
|
+
readFile: ts.sys.readFile,
|
|
42
|
+
readDirectory: ts.sys.readDirectory,
|
|
43
|
+
useCaseSensitiveFileNames: ts.sys.useCaseSensitiveFileNames,
|
|
44
|
+
},
|
|
45
|
+
path.dirname(location.project),
|
|
46
|
+
);
|
|
47
|
+
|
|
48
|
+
const program: ts.Program = ts.createProgram(
|
|
49
|
+
await (async () => {
|
|
50
|
+
const container: string[] = [];
|
|
51
|
+
await gather({
|
|
52
|
+
location,
|
|
53
|
+
container,
|
|
54
|
+
from: location.input,
|
|
55
|
+
to: location.output,
|
|
56
|
+
});
|
|
57
|
+
return container;
|
|
58
|
+
})(),
|
|
59
|
+
compilerOptions,
|
|
60
|
+
);
|
|
61
|
+
|
|
62
|
+
// DO TRANSFORM
|
|
63
|
+
const diagnostics: ts.Diagnostic[] = [];
|
|
64
|
+
const result: ts.TransformationResult<ts.SourceFile> = ts.transform(
|
|
65
|
+
program
|
|
66
|
+
.getSourceFiles()
|
|
67
|
+
.filter(
|
|
68
|
+
(file) =>
|
|
69
|
+
!file.isDeclarationFile &&
|
|
70
|
+
path.resolve(file.fileName).indexOf(location.input) !== -1,
|
|
71
|
+
),
|
|
72
|
+
[
|
|
73
|
+
ImportTransformer.transform({
|
|
74
|
+
from: location.input,
|
|
75
|
+
to: location.output,
|
|
76
|
+
}),
|
|
77
|
+
transform(
|
|
78
|
+
program,
|
|
79
|
+
((compilerOptions.plugins as any[]) ?? []).find(
|
|
80
|
+
(p: any) =>
|
|
81
|
+
p.transform === "typia/src/transform" ||
|
|
82
|
+
p.transform === "../src/transform.ts",
|
|
83
|
+
) ?? {},
|
|
84
|
+
{
|
|
85
|
+
addDiagnostic: (diag) => diagnostics.push(diag),
|
|
86
|
+
},
|
|
87
|
+
),
|
|
88
|
+
],
|
|
89
|
+
program.getCompilerOptions(),
|
|
90
|
+
);
|
|
91
|
+
|
|
92
|
+
// TRACE ERRORS
|
|
93
|
+
for (const diag of diagnostics) {
|
|
94
|
+
const file: string = diag.file
|
|
95
|
+
? path.relative(diag.file.fileName, process.cwd())
|
|
96
|
+
: "(unknown file)";
|
|
97
|
+
const category: string =
|
|
98
|
+
diag.category === ts.DiagnosticCategory.Warning
|
|
99
|
+
? "warning"
|
|
100
|
+
: diag.category === ts.DiagnosticCategory.Error
|
|
101
|
+
? "error"
|
|
102
|
+
: diag.category === ts.DiagnosticCategory.Suggestion
|
|
103
|
+
? "suggestion"
|
|
104
|
+
: diag.category === ts.DiagnosticCategory.Message
|
|
105
|
+
? "message"
|
|
106
|
+
: "unknown";
|
|
107
|
+
const [line, pos] = diag.file
|
|
108
|
+
? (() => {
|
|
109
|
+
const lines: string[] = diag
|
|
110
|
+
.file!.text.substring(0, diag.start)
|
|
111
|
+
.split("\n");
|
|
112
|
+
if (lines.length === 0) return [0, 0];
|
|
113
|
+
return [lines.length, lines.at(-1)!.length + 1];
|
|
114
|
+
})()
|
|
115
|
+
: [0, 0];
|
|
116
|
+
console.error(
|
|
117
|
+
`${file}:${line}:${pos} - ${category} TS${diag.code}: ${diag.messageText}`,
|
|
118
|
+
);
|
|
119
|
+
}
|
|
120
|
+
if (diagnostics.length) process.exit(-1);
|
|
121
|
+
|
|
122
|
+
// ARCHIVE TRANSFORMED FILES
|
|
123
|
+
const printer: ts.Printer = ts.createPrinter({
|
|
124
|
+
newLine: ts.NewLineKind.LineFeed,
|
|
125
|
+
});
|
|
126
|
+
for (const file of result.transformed) {
|
|
127
|
+
const to: string = path
|
|
128
|
+
.resolve(file.fileName)
|
|
129
|
+
.replace(location.input, location.output);
|
|
130
|
+
|
|
131
|
+
const content: string = printer.printFile(file);
|
|
132
|
+
await fs.promises.writeFile(to, content, "utf8");
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
const is_directory = async (current: string): Promise<boolean> => {
|
|
137
|
+
const stat: fs.Stats = await fs.promises.stat(current);
|
|
138
|
+
return stat.isDirectory();
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
const gather = async (props: {
|
|
142
|
+
location: ILocation;
|
|
143
|
+
container: string[];
|
|
144
|
+
from: string;
|
|
145
|
+
to: string;
|
|
146
|
+
}) => {
|
|
147
|
+
if (props.from === props.location.output) return;
|
|
148
|
+
else if (fs.existsSync(props.to) === false)
|
|
149
|
+
await fs.promises.mkdir(props.to);
|
|
150
|
+
|
|
151
|
+
for (const file of await fs.promises.readdir(props.from)) {
|
|
152
|
+
const next: string = path.join(props.from, file);
|
|
153
|
+
const stat: fs.Stats = await fs.promises.stat(next);
|
|
154
|
+
|
|
155
|
+
if (stat.isDirectory()) {
|
|
156
|
+
await gather({
|
|
157
|
+
location: props.location,
|
|
158
|
+
container: props.container,
|
|
159
|
+
from: next,
|
|
160
|
+
to: path.join(props.to, file),
|
|
161
|
+
});
|
|
162
|
+
continue;
|
|
163
|
+
} else if (is_supported_extension(file)) props.container.push(next);
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
const is_supported_extension = (filename: string): boolean => {
|
|
168
|
+
// avoid using look-behind assertion as it is not marked as Baseline Widely Available
|
|
169
|
+
return TS_PATTERN.test(filename) && !DTS_PATTERN.test(filename);
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
const TS_PATTERN = /\.[cm]?tsx?$/;
|
|
174
|
+
const DTS_PATTERN = /\.d\.[cm]?tsx?$/;
|