typia 13.1.1 → 13.2.0
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/README.md +3 -0
- package/lib/_virtual/_rolldown/runtime.mjs +1 -5
- package/lib/executable/FileSystemIdentity.d.ts +44 -0
- package/lib/executable/FileSystemIdentity.js +213 -0
- package/lib/executable/FileSystemIdentity.js.map +1 -0
- package/lib/executable/FileSystemIdentity.mjs +133 -0
- package/lib/executable/FileSystemIdentity.mjs.map +1 -0
- package/lib/executable/TypiaGenerateWizard.js +272 -106
- package/lib/executable/TypiaGenerateWizard.js.map +1 -1
- package/lib/executable/TypiaGenerateWizard.mjs +239 -95
- package/lib/executable/TypiaGenerateWizard.mjs.map +1 -1
- package/lib/functional.d.ts +15 -12
- package/lib/functional.js.map +1 -1
- package/lib/functional.mjs.map +1 -1
- package/lib/internal/_ProtobufReader.d.ts +32 -0
- package/lib/internal/_ProtobufReader.js +148 -48
- package/lib/internal/_ProtobufReader.js.map +1 -1
- package/lib/internal/_ProtobufReader.mjs +137 -41
- package/lib/internal/_ProtobufReader.mjs.map +1 -1
- package/lib/internal/_createStandardSchema.js +18 -1
- package/lib/internal/_createStandardSchema.js.map +1 -1
- package/lib/internal/_createStandardSchema.mjs +12 -1
- package/lib/internal/_createStandardSchema.mjs.map +1 -1
- package/lib/internal/_decimal.d.ts +14 -0
- package/lib/internal/_decimal.js +61 -0
- package/lib/internal/_decimal.js.map +1 -0
- package/lib/internal/_decimal.mjs +49 -0
- package/lib/internal/_decimal.mjs.map +1 -0
- package/lib/internal/_httpQueryParseURLSearchParams.js +23 -2
- package/lib/internal/_httpQueryParseURLSearchParams.js.map +1 -1
- package/lib/internal/_httpQueryParseURLSearchParams.mjs +20 -2
- package/lib/internal/_httpQueryParseURLSearchParams.mjs.map +1 -1
- package/lib/internal/_isFormatByte.js +2 -5
- package/lib/internal/_isFormatByte.js.map +1 -1
- package/lib/internal/_isFormatByte.mjs +2 -5
- package/lib/internal/_isFormatByte.mjs.map +1 -1
- package/lib/internal/_isFormatDate.js +15 -2
- package/lib/internal/_isFormatDate.js.map +1 -1
- package/lib/internal/_isFormatDate.mjs +22 -2
- package/lib/internal/_isFormatDate.mjs.map +1 -1
- package/lib/internal/_isFormatDateTime.js +21 -2
- package/lib/internal/_isFormatDateTime.js.map +1 -1
- package/lib/internal/_isFormatDateTime.mjs +13 -2
- package/lib/internal/_isFormatDateTime.mjs.map +1 -1
- package/lib/internal/_isFormatIri.js +3 -2
- package/lib/internal/_isFormatIri.js.map +1 -1
- package/lib/internal/_isFormatIri.mjs +3 -2
- package/lib/internal/_isFormatIri.mjs.map +1 -1
- package/lib/internal/_isFormatIriReference.js +10 -2
- package/lib/internal/_isFormatIriReference.js.map +1 -1
- package/lib/internal/_isFormatIriReference.mjs +9 -2
- package/lib/internal/_isFormatIriReference.mjs.map +1 -1
- package/lib/internal/_isFormatUriReference.js +1 -1
- package/lib/internal/_isFormatUriReference.js.map +1 -1
- package/lib/internal/_isFormatUriReference.mjs +1 -1
- package/lib/internal/_isFormatUriReference.mjs.map +1 -1
- package/lib/internal/_isMultipleOf.d.ts +1 -0
- package/lib/internal/_isMultipleOf.js +13 -0
- package/lib/internal/_isMultipleOf.js.map +1 -0
- package/lib/internal/_isMultipleOf.mjs +12 -0
- package/lib/internal/_isMultipleOf.mjs.map +1 -0
- package/lib/internal/_isTypeFloat.js +1 -1
- package/lib/internal/_isTypeFloat.js.map +1 -1
- package/lib/internal/_isTypeFloat.mjs +1 -1
- package/lib/internal/_isTypeFloat.mjs.map +1 -1
- package/lib/internal/_isTypeInt64.js +1 -0
- package/lib/internal/_isTypeInt64.js.map +1 -1
- package/lib/internal/_isTypeInt64.mjs.map +1 -1
- package/lib/internal/_isTypeInt64Bigint.d.ts +1 -0
- package/lib/internal/_isTypeInt64Bigint.js +15 -0
- package/lib/internal/_isTypeInt64Bigint.js.map +1 -0
- package/lib/internal/_isTypeInt64Bigint.mjs +8 -0
- package/lib/internal/_isTypeInt64Bigint.mjs.map +1 -0
- package/lib/internal/_isTypeUint64.js +1 -0
- package/lib/internal/_isTypeUint64.js.map +1 -1
- package/lib/internal/_isTypeUint64.mjs.map +1 -1
- package/lib/internal/_isTypeUint64Bigint.d.ts +1 -0
- package/lib/internal/_isTypeUint64Bigint.js +10 -0
- package/lib/internal/_isTypeUint64Bigint.js.map +1 -0
- package/lib/internal/_isTypeUint64Bigint.mjs +8 -0
- package/lib/internal/_isTypeUint64Bigint.mjs.map +1 -0
- package/lib/internal/_isUniqueItems.js +96 -109
- package/lib/internal/_isUniqueItems.js.map +1 -1
- package/lib/internal/_isUniqueItems.mjs +62 -50
- package/lib/internal/_isUniqueItems.mjs.map +1 -1
- package/lib/internal/_jsonStringifyArray.d.ts +1 -0
- package/lib/internal/_jsonStringifyArray.js +48 -0
- package/lib/internal/_jsonStringifyArray.js.map +1 -0
- package/lib/internal/_jsonStringifyArray.mjs +40 -0
- package/lib/internal/_jsonStringifyArray.mjs.map +1 -0
- package/lib/internal/_jsonStringifyElement.d.ts +1 -0
- package/lib/internal/_jsonStringifyElement.js +23 -0
- package/lib/internal/_jsonStringifyElement.js.map +1 -0
- package/lib/internal/_jsonStringifyElement.mjs +23 -0
- package/lib/internal/_jsonStringifyElement.mjs.map +1 -0
- package/lib/internal/_jsonStringifyProperty.d.ts +1 -0
- package/lib/internal/_jsonStringifyProperty.js +31 -0
- package/lib/internal/_jsonStringifyProperty.js.map +1 -0
- package/lib/internal/_jsonStringifyProperty.mjs +31 -0
- package/lib/internal/_jsonStringifyProperty.mjs.map +1 -0
- package/lib/internal/_llmApplicationFinalize.js +1 -1
- package/lib/internal/_llmApplicationFinalize.js.map +1 -1
- package/lib/internal/_llmApplicationFinalize.mjs +1 -1
- package/lib/internal/_llmApplicationFinalize.mjs.map +1 -1
- package/lib/internal/_notationAny.js +8 -1
- package/lib/internal/_notationAny.js.map +1 -1
- package/lib/internal/_notationAny.mjs +7 -1
- package/lib/internal/_notationAny.mjs.map +1 -1
- package/lib/internal/_notationAssign.d.ts +1 -0
- package/lib/internal/_notationAssign.js +18 -0
- package/lib/internal/_notationAssign.js.map +1 -0
- package/lib/internal/_notationAssign.mjs +17 -0
- package/lib/internal/_notationAssign.mjs.map +1 -0
- package/lib/internal/_notationCamel.js +30 -9
- package/lib/internal/_notationCamel.js.map +1 -1
- package/lib/internal/_notationCamel.mjs +13 -5
- package/lib/internal/_notationCamel.mjs.map +1 -1
- package/lib/internal/_notationKebab.d.ts +1 -0
- package/lib/internal/_notationKebab.js +15 -0
- package/lib/internal/_notationKebab.js.map +1 -0
- package/lib/internal/_notationKebab.mjs +15 -0
- package/lib/internal/_notationKebab.mjs.map +1 -0
- package/lib/internal/_notationKeyCollision.d.ts +1 -0
- package/lib/internal/_notationKeyCollision.js +8 -0
- package/lib/internal/_notationKeyCollision.js.map +1 -0
- package/lib/internal/_notationKeyCollision.mjs +8 -0
- package/lib/internal/_notationKeyCollision.mjs.map +1 -0
- package/lib/internal/_notationPascal.js +20 -5
- package/lib/internal/_notationPascal.js.map +1 -1
- package/lib/internal/_notationPascal.mjs +10 -5
- package/lib/internal/_notationPascal.mjs.map +1 -1
- package/lib/internal/_notationSnake.js +25 -22
- package/lib/internal/_notationSnake.js.map +1 -1
- package/lib/internal/_notationSnake.mjs +11 -11
- package/lib/internal/_notationSnake.mjs.map +1 -1
- package/lib/internal/_plainCloneAny.js +174 -38
- package/lib/internal/_plainCloneAny.js.map +1 -1
- package/lib/internal/_plainCloneAny.mjs +126 -22
- package/lib/internal/_plainCloneAny.mjs.map +1 -1
- package/lib/internal/_randomArray.d.ts +1 -1
- package/lib/internal/_randomArray.js +11 -4
- package/lib/internal/_randomArray.js.map +1 -1
- package/lib/internal/_randomArray.mjs +9 -3
- package/lib/internal/_randomArray.mjs.map +1 -1
- package/lib/internal/_randomFormatByte.d.ts +2 -1
- package/lib/internal/_randomFormatByte.js +25 -1
- package/lib/internal/_randomFormatByte.js.map +1 -1
- package/lib/internal/_randomFormatByte.mjs +20 -1
- package/lib/internal/_randomFormatByte.mjs.map +1 -1
- package/lib/internal/_randomFormatDate.d.ts +3 -4
- package/lib/internal/_randomFormatDate.js +3 -10
- package/lib/internal/_randomFormatDate.js.map +1 -1
- package/lib/internal/_randomFormatDate.mjs +3 -6
- package/lib/internal/_randomFormatDate.mjs.map +1 -1
- package/lib/internal/_randomFormatDatetime.d.ts +3 -4
- package/lib/internal/_randomFormatDatetime.js +26 -8
- package/lib/internal/_randomFormatDatetime.js.map +1 -1
- package/lib/internal/_randomFormatDatetime.mjs +17 -6
- package/lib/internal/_randomFormatDatetime.mjs.map +1 -1
- package/lib/internal/_randomFormatDuration.d.ts +2 -1
- package/lib/internal/_randomFormatDuration.js +23 -14
- package/lib/internal/_randomFormatDuration.js.map +1 -1
- package/lib/internal/_randomFormatDuration.mjs +22 -13
- package/lib/internal/_randomFormatDuration.mjs.map +1 -1
- package/lib/internal/_randomFormatEmail.d.ts +2 -1
- package/lib/internal/_randomFormatEmail.js +8 -1
- package/lib/internal/_randomFormatEmail.js.map +1 -1
- package/lib/internal/_randomFormatEmail.mjs +5 -1
- package/lib/internal/_randomFormatEmail.mjs.map +1 -1
- package/lib/internal/_randomFormatHostname.d.ts +8 -1
- package/lib/internal/_randomFormatHostname.js +45 -2
- package/lib/internal/_randomFormatHostname.js.map +1 -1
- package/lib/internal/_randomFormatHostname.mjs +38 -2
- package/lib/internal/_randomFormatHostname.mjs.map +1 -1
- package/lib/internal/_randomFormatIdnEmail.d.ts +2 -1
- package/lib/internal/_randomFormatIdnEmail.js +16 -2
- package/lib/internal/_randomFormatIdnEmail.js.map +1 -1
- package/lib/internal/_randomFormatIdnEmail.mjs +11 -2
- package/lib/internal/_randomFormatIdnEmail.mjs.map +1 -1
- package/lib/internal/_randomFormatIdnHostname.d.ts +2 -1
- package/lib/internal/_randomFormatIdnHostname.js +26 -1
- package/lib/internal/_randomFormatIdnHostname.js.map +1 -1
- package/lib/internal/_randomFormatIdnHostname.mjs +25 -2
- package/lib/internal/_randomFormatIdnHostname.mjs.map +1 -1
- package/lib/internal/_randomFormatIpv4.d.ts +2 -1
- package/lib/internal/_randomFormatIpv4.js +32 -1
- package/lib/internal/_randomFormatIpv4.js.map +1 -1
- package/lib/internal/_randomFormatIpv4.mjs +23 -1
- package/lib/internal/_randomFormatIpv4.mjs.map +1 -1
- package/lib/internal/_randomFormatIpv6.d.ts +2 -1
- package/lib/internal/_randomFormatIpv6.js +58 -1
- package/lib/internal/_randomFormatIpv6.js.map +1 -1
- package/lib/internal/_randomFormatIpv6.mjs +45 -1
- package/lib/internal/_randomFormatIpv6.mjs.map +1 -1
- package/lib/internal/_randomFormatIri.d.ts +2 -1
- package/lib/internal/_randomFormatIri.js +1 -1
- package/lib/internal/_randomFormatIri.js.map +1 -1
- package/lib/internal/_randomFormatIri.mjs +1 -1
- package/lib/internal/_randomFormatIri.mjs.map +1 -1
- package/lib/internal/_randomFormatIriReference.d.ts +2 -1
- package/lib/internal/_randomFormatIriReference.js +1 -1
- package/lib/internal/_randomFormatIriReference.js.map +1 -1
- package/lib/internal/_randomFormatIriReference.mjs +1 -1
- package/lib/internal/_randomFormatIriReference.mjs.map +1 -1
- package/lib/internal/_randomFormatJsonPointer.d.ts +2 -1
- package/lib/internal/_randomFormatJsonPointer.js +20 -1
- package/lib/internal/_randomFormatJsonPointer.js.map +1 -1
- package/lib/internal/_randomFormatJsonPointer.mjs +15 -1
- package/lib/internal/_randomFormatJsonPointer.mjs.map +1 -1
- package/lib/internal/_randomFormatPassword.d.ts +2 -1
- package/lib/internal/_randomFormatPassword.js +7 -5
- package/lib/internal/_randomFormatPassword.js.map +1 -1
- package/lib/internal/_randomFormatPassword.mjs +5 -1
- package/lib/internal/_randomFormatPassword.mjs.map +1 -1
- package/lib/internal/_randomFormatRegex.d.ts +2 -1
- package/lib/internal/_randomFormatRegex.js +15 -1
- package/lib/internal/_randomFormatRegex.js.map +1 -1
- package/lib/internal/_randomFormatRegex.mjs +14 -1
- package/lib/internal/_randomFormatRegex.mjs.map +1 -1
- package/lib/internal/_randomFormatRelativeJsonPointer.d.ts +2 -1
- package/lib/internal/_randomFormatRelativeJsonPointer.js +20 -5
- package/lib/internal/_randomFormatRelativeJsonPointer.js.map +1 -1
- package/lib/internal/_randomFormatRelativeJsonPointer.mjs +21 -5
- package/lib/internal/_randomFormatRelativeJsonPointer.mjs.map +1 -1
- package/lib/internal/_randomFormatTime.d.ts +2 -1
- package/lib/internal/_randomFormatTime.js +34 -7
- package/lib/internal/_randomFormatTime.js.map +1 -1
- package/lib/internal/_randomFormatTime.mjs +37 -4
- package/lib/internal/_randomFormatTime.mjs.map +1 -1
- package/lib/internal/_randomFormatUri.d.ts +2 -1
- package/lib/internal/_randomFormatUri.js +1 -1
- package/lib/internal/_randomFormatUri.js.map +1 -1
- package/lib/internal/_randomFormatUri.mjs +1 -1
- package/lib/internal/_randomFormatUri.mjs.map +1 -1
- package/lib/internal/_randomFormatUriReference.d.ts +2 -1
- package/lib/internal/_randomFormatUriReference.js +1 -1
- package/lib/internal/_randomFormatUriReference.js.map +1 -1
- package/lib/internal/_randomFormatUriReference.mjs +1 -1
- package/lib/internal/_randomFormatUriReference.mjs.map +1 -1
- package/lib/internal/_randomFormatUriTemplate.d.ts +2 -1
- package/lib/internal/_randomFormatUriTemplate.js +1 -1
- package/lib/internal/_randomFormatUriTemplate.js.map +1 -1
- package/lib/internal/_randomFormatUriTemplate.mjs +1 -1
- package/lib/internal/_randomFormatUriTemplate.mjs.map +1 -1
- package/lib/internal/_randomFormatUrl.d.ts +2 -1
- package/lib/internal/_randomFormatUrl.js +21 -1
- package/lib/internal/_randomFormatUrl.js.map +1 -1
- package/lib/internal/_randomFormatUrl.mjs +18 -1
- package/lib/internal/_randomFormatUrl.mjs.map +1 -1
- package/lib/internal/_randomFormatUuid.d.ts +2 -1
- package/lib/internal/_randomFormatUuid.js +3 -2
- package/lib/internal/_randomFormatUuid.js.map +1 -1
- package/lib/internal/_randomFormatUuid.mjs +3 -2
- package/lib/internal/_randomFormatUuid.mjs.map +1 -1
- package/lib/internal/_randomInteger.js +59 -28
- package/lib/internal/_randomInteger.js.map +1 -1
- package/lib/internal/_randomInteger.mjs +56 -16
- package/lib/internal/_randomInteger.mjs.map +1 -1
- package/lib/internal/_randomMultiple.d.ts +8 -0
- package/lib/internal/_randomMultiple.js +168 -0
- package/lib/internal/_randomMultiple.js.map +1 -0
- package/lib/internal/_randomMultiple.mjs +158 -0
- package/lib/internal/_randomMultiple.mjs.map +1 -0
- package/lib/internal/_randomNumber.js +42 -42
- package/lib/internal/_randomNumber.js.map +1 -1
- package/lib/internal/_randomNumber.mjs +41 -27
- package/lib/internal/_randomNumber.mjs.map +1 -1
- package/lib/internal/_randomPattern.d.ts +2 -1
- package/lib/internal/_randomPattern.js +19 -4
- package/lib/internal/_randomPattern.js.map +1 -1
- package/lib/internal/_randomPattern.mjs +10 -4
- package/lib/internal/_randomPattern.mjs.map +1 -1
- package/lib/internal/_randomStringLength.d.ts +64 -0
- package/lib/internal/_randomStringLength.js +84 -0
- package/lib/internal/_randomStringLength.js.map +1 -0
- package/lib/internal/_randomStringLength.mjs +79 -0
- package/lib/internal/_randomStringLength.mjs.map +1 -0
- package/lib/internal/_stringLength.d.ts +1 -0
- package/lib/internal/_stringLength.js +11 -0
- package/lib/internal/_stringLength.js.map +1 -0
- package/lib/internal/_stringLength.mjs +10 -0
- package/lib/internal/_stringLength.mjs.map +1 -0
- package/lib/internal/_validateReport.js +4 -1
- package/lib/internal/_validateReport.js.map +1 -1
- package/lib/internal/_validateReport.mjs +2 -1
- package/lib/internal/_validateReport.mjs.map +1 -1
- package/lib/internal/private/__notationRename.d.ts +14 -0
- package/lib/internal/private/__notationRename.js +25 -0
- package/lib/internal/private/__notationRename.js.map +1 -0
- package/lib/internal/private/__notationRename.mjs +24 -0
- package/lib/internal/private/__notationRename.mjs.map +1 -0
- package/lib/internal/private/__randomComposition.d.ts +23 -0
- package/lib/internal/private/__randomComposition.js +48 -0
- package/lib/internal/private/__randomComposition.js.map +1 -0
- package/lib/internal/private/__randomComposition.mjs +54 -0
- package/lib/internal/private/__randomComposition.mjs.map +1 -0
- package/lib/internal/private/__randomEpoch.d.ts +19 -0
- package/lib/internal/private/__randomEpoch.js +31 -0
- package/lib/internal/private/__randomEpoch.js.map +1 -0
- package/lib/internal/private/__randomEpoch.mjs +28 -0
- package/lib/internal/private/__randomEpoch.mjs.map +1 -0
- package/lib/json.d.ts +2 -2
- package/lib/json.mjs.map +1 -1
- package/lib/module.d.ts +2 -2
- package/lib/module.js.map +1 -1
- package/lib/module.mjs.map +1 -1
- package/lib/notations.d.ts +20 -4
- package/lib/notations.js.map +1 -1
- package/lib/notations.mjs.map +1 -1
- package/native/adapter/plugin_options.go +117 -0
- package/native/adapter/plugin_options_payload_matrix_test.go +181 -0
- package/native/cmd/ttsc-typia/any_array_type_tags_transform_test.go +63 -9
- package/native/cmd/ttsc-typia/assert_guard_factory_contract_test.go +152 -0
- package/native/cmd/ttsc-typia/build.go +84 -64
- package/native/cmd/ttsc-typia/build_no_emit_preserves_analysis_options_test.go +67 -0
- package/native/cmd/ttsc-typia/build_no_emit_transform_diagnostics_test.go +138 -0
- package/native/cmd/ttsc-typia/build_plugin_options_come_from_payload_test.go +48 -0
- package/native/cmd/ttsc-typia/build_transactional_emit_success_test.go +81 -0
- package/native/cmd/ttsc-typia/build_transform_failure_atomicity_test.go +138 -0
- package/native/cmd/ttsc-typia/callable_interface_function_semantics_transform_test.go +331 -0
- package/native/cmd/ttsc-typia/callable_type_literal_boundaries_transform_test.go +1184 -0
- package/native/cmd/ttsc-typia/command_routes_and_diagnostics_coverage_test.go +3 -1
- package/native/cmd/ttsc-typia/compare_functional_union_membership_transform_test.go +434 -0
- package/native/cmd/ttsc-typia/compare_less_nan_transform_test.go +98 -0
- package/native/cmd/ttsc-typia/compare_native_object_overmatch_transform_test.go +161 -0
- package/native/cmd/ttsc-typia/compare_nondiscriminable_union_transform_test.go +343 -0
- package/native/cmd/ttsc-typia/compare_template_literal_union_transform_test.go +241 -0
- package/native/cmd/ttsc-typia/compare_union_discrimination_transform_test.go +289 -0
- package/native/cmd/ttsc-typia/default_library_spoof_native_identity_transform_test.go +216 -0
- package/native/cmd/ttsc-typia/escaped_property_key_path_transform_test.go +193 -0
- package/native/cmd/ttsc-typia/finite_option_number_leaf_transform_test.go +240 -0
- package/native/cmd/ttsc-typia/functional_promised_type_transform_test.go +220 -0
- package/native/cmd/ttsc-typia/functional_receiver_transform_test.go +232 -0
- package/native/cmd/ttsc-typia/is_object_function_member_transform_test.go +205 -0
- package/native/cmd/ttsc-typia/json_application_alias_function_validation_transform_test.go +151 -0
- package/native/cmd/ttsc-typia/json_is_stringify_finite_number_transform_test.go +198 -0
- package/native/cmd/ttsc-typia/json_schema_dynamic_key_determinism_transform_test.go +246 -0
- package/native/cmd/ttsc-typia/json_stringify_contextual_undefined_transform_test.go +556 -0
- package/native/cmd/ttsc-typia/json_stringify_special_key_transform_test.go +238 -0
- package/native/cmd/ttsc-typia/lib_replacement_native_identity_transform_test.go +277 -0
- package/native/cmd/ttsc-typia/main_wasm.go +21 -2
- package/native/cmd/ttsc-typia/native_collection_identity_is_transform_test.go +234 -0
- package/native/cmd/ttsc-typia/native_generic_name_guard_is_transform_test.go +194 -0
- package/native/cmd/ttsc-typia/native_name_collision_is_transform_test.go +204 -0
- package/native/cmd/ttsc-typia/native_named_intersection_union_transform_test.go +390 -0
- package/native/cmd/ttsc-typia/node_buffer_native_exports_is_transform_test.go +526 -0
- package/native/cmd/ttsc-typia/non_trailing_rest_tuple_transform_test.go +23 -11
- package/native/cmd/ttsc-typia/notation_dynamic_keys_transform_test.go +286 -0
- package/native/cmd/ttsc-typia/notation_kebab_case_transform_test.go +1 -1
- package/native/cmd/ttsc-typia/notation_literal_collision_transform_test.go +164 -0
- package/native/cmd/ttsc-typia/notation_pascal_case_transform_test.go +230 -0
- package/native/cmd/ttsc-typia/notation_unicode_key_transform_test.go +309 -0
- package/native/cmd/ttsc-typia/package_declaration_native_identity_is_transform_test.go +293 -0
- package/native/cmd/ttsc-typia/pattern_line_terminator_escape_transform_test.go +224 -0
- package/native/cmd/ttsc-typia/plain_prune_union_object_overmatch_transform_test.go +219 -0
- package/native/cmd/ttsc-typia/plugin_options_payload_helpers_test.go +181 -0
- package/native/cmd/ttsc-typia/private_field_filter_is_transform_test.go +278 -0
- package/native/cmd/ttsc-typia/project_catalog_transform_coverage_test.go +73 -27
- package/native/cmd/ttsc-typia/project_dependencies_barrel_reexport_transform_test.go +120 -0
- package/native/cmd/ttsc-typia/project_dependencies_collapsed_alias_transform_test.go +134 -0
- package/native/cmd/ttsc-typia/project_dependencies_custom_lib_name_transform_test.go +135 -0
- package/native/cmd/ttsc-typia/project_dependencies_default_barrel_transform_test.go +114 -0
- package/native/cmd/ttsc-typia/project_dependencies_empty_heritage_transform_test.go +100 -0
- package/native/cmd/ttsc-typia/project_dependencies_envelope_transform_test.go +148 -0
- package/native/cmd/ttsc-typia/project_dependencies_index_signature_alias_transform_test.go +139 -0
- package/native/cmd/ttsc-typia/project_dependencies_local_reexport_transform_test.go +122 -0
- package/native/cmd/ttsc-typia/project_dependencies_signature_alias_transform_test.go +125 -0
- package/native/cmd/ttsc-typia/project_dependencies_star_barrel_transform_test.go +112 -0
- package/native/cmd/ttsc-typia/project_reference_graph_envelope_transform_test.go +190 -0
- package/native/cmd/ttsc-typia/protobuf_diagnostic_code_transform_test.go +167 -0
- package/native/cmd/ttsc-typia/protobuf_is_encode_finite_number_transform_test.go +98 -0
- package/native/cmd/ttsc-typia/protobuf_sequence_field_numbers_transform_test.go +52 -22
- package/native/cmd/ttsc-typia/symbol_index_domain_transform_test.go +316 -0
- package/native/cmd/ttsc-typia/symbol_key_member_filter_transform_test.go +279 -0
- package/native/cmd/ttsc-typia/template_interpolation_type_tags_transform_test.go +86 -23
- package/native/cmd/ttsc-typia/template_literal_type_tags_transform_test.go +3 -1
- package/native/cmd/ttsc-typia/transform.go +251 -39
- package/native/cmd/ttsc-typia/{transform_declaration_source_produces_no_js_test.go → transform_declaration_source_produces_no_javascript_test.go} +10 -2
- package/native/cmd/ttsc-typia/transform_fixtures_emit_coverage_test.go +21 -4
- package/native/cmd/ttsc-typia/transform_helpers_test.go +236 -3
- package/native/cmd/ttsc-typia/transform_plugin_options_come_from_payload_test.go +43 -0
- package/native/cmd/ttsc-typia/transform_single_file_failure_atomicity_test.go +114 -0
- package/native/cmd/ttsc-typia/transform_single_file_failure_writes_no_stdout_test.go +43 -0
- package/native/cmd/ttsc-typia/transform_single_file_js_distinguishes_same_basename_sources_test.go +81 -0
- package/native/cmd/ttsc-typia/transform_single_file_js_empty_emit_reports_no_output_test.go +100 -0
- package/native/cmd/ttsc-typia/transform_single_file_js_locates_output_across_layouts_test.go +160 -0
- package/native/cmd/ttsc-typia/transform_single_file_success_publishes_artifact_test.go +54 -0
- package/native/cmd/ttsc-typia/transform_wasm_host_argv_reports_diagnostics_test.go +39 -0
- package/native/cmd/ttsc-typia/tuple_optional_compare_clone_transform_test.go +227 -0
- package/native/cmd/ttsc-typia/user_global_native_identity_transform_test.go +484 -0
- package/native/core/factories/FormatCheatSheet.go +40 -7
- package/native/core/factories/IdentifierFactory.go +131 -4
- package/native/core/factories/MetadataCommentTagFactory.go +83 -40
- package/native/core/factories/MetadataTypeTagFactory.go +13 -1
- package/native/core/factories/NumericRangeFactory.go +60 -17
- package/native/core/factories/ProtobufFactory.go +13 -5
- package/native/core/factories/factory_utility_coverage_test.go +8 -2
- package/native/core/factories/format_alias_resolves_to_cheat_sheet_test.go +57 -0
- package/native/core/factories/format_alias_table_targets_the_cheat_sheet_test.go +44 -0
- package/native/core/factories/identifier_factory_postfix_escapes_every_key_test.go +147 -0
- package/native/core/factories/identifier_factory_postfix_survives_every_code_point_test.go +86 -0
- package/native/core/factories/internal/metadata/MetadataHelper.go +226 -17
- package/native/core/factories/internal/metadata/emplace_metadata_object.go +141 -8
- package/native/core/factories/internal/metadata/iterate_metadata.go +6 -0
- package/native/core/factories/internal/metadata/iterate_metadata_function.go +5 -12
- package/native/core/factories/internal/metadata/iterate_metadata_intersection.go +111 -29
- package/native/core/factories/internal/metadata/iterate_metadata_map.go +5 -0
- package/native/core/factories/internal/metadata/iterate_metadata_native.go +45 -2
- package/native/core/factories/internal/metadata/iterate_metadata_set.go +5 -0
- package/native/core/factories/internal/metadata/type_arguments_precondition_test.go +70 -0
- package/native/core/factories/metadata_comment_tag_factory_coverage_test.go +39 -0
- package/native/core/factories/metadata_comment_tag_factory_exclusivity_matches_interface_test.go +84 -0
- package/native/core/factories/metadata_type_tag_factory_accepts_legal_tag_combinations_test.go +60 -0
- package/native/core/factories/metadata_type_tag_factory_declarations_test.go +86 -0
- package/native/core/factories/metadata_type_tag_factory_keeps_bool_form_exclusivity_test.go +38 -0
- package/native/core/factories/metadata_type_tag_factory_rejects_cross_kind_exclusive_tags_test.go +65 -0
- package/native/core/factories/metadata_type_tag_factory_rejects_duplicated_array_form_tags_test.go +41 -0
- package/native/core/factories/numeric_range_factory_enforces_64bit_bounds_test.go +69 -0
- package/native/core/factories/protobuf_recovery_ownership_test.go +64 -0
- package/native/core/programmers/IsProgrammer.go +15 -1
- package/native/core/programmers/RandomProgrammer.go +51 -14
- package/native/core/programmers/compare/CompareEqualProgrammer.go +410 -8
- package/native/core/programmers/compare/CompareLessProgrammer.go +4 -2
- package/native/core/programmers/functional/FunctionalAssertFunctionProgrammer.go +4 -6
- package/native/core/programmers/functional/FunctionalAssertParametersProgrammer.go +5 -13
- package/native/core/programmers/functional/FunctionalAssertReturnProgrammer.go +6 -14
- package/native/core/programmers/functional/FunctionalIsFunctionProgrammer.go +4 -6
- package/native/core/programmers/functional/FunctionalIsParametersProgrammer.go +49 -14
- package/native/core/programmers/functional/FunctionalIsReturnProgrammer.go +5 -13
- package/native/core/programmers/functional/FunctionalValidateFunctionProgrammer.go +4 -6
- package/native/core/programmers/functional/FunctionalValidateParametersProgrammer.go +5 -13
- package/native/core/programmers/functional/FunctionalValidateReturnProgrammer.go +5 -13
- package/native/core/programmers/functional/internal/FunctionalGeneralProgrammer.go +4 -17
- package/native/core/programmers/helpers/CloneJoiner.go +32 -0
- package/native/core/programmers/helpers/FunctionProgrammer.go +6 -13
- package/native/core/programmers/helpers/NotationJoiner.go +86 -28
- package/native/core/programmers/helpers/StringifyJoinder.go +161 -51
- package/native/core/programmers/helpers/UnionExplorer.go +203 -61
- package/native/core/programmers/helpers/joiner_branch_coverage_test.go +116 -118
- package/native/core/programmers/helpers/union_explorer_coverage_test.go +1 -1
- package/native/core/programmers/internal/CheckerProgrammer.go +100 -48
- package/native/core/programmers/iterate/check_template.go +344 -32
- package/native/core/programmers/iterate/iterate_check_coverage_test.go +76 -158
- package/native/core/programmers/iterate/iterate_utility_coverage_test.go +231 -270
- package/native/core/programmers/iterate/json_schema_discriminator.go +36 -10
- package/native/core/programmers/iterate/json_schema_discriminator_declaration_syntax_test.go +205 -0
- package/native/core/programmers/iterate/json_schema_object.go +49 -7
- package/native/core/programmers/iterate/json_schema_pattern_property_order_test.go +44 -0
- package/native/core/programmers/iterate/openapi_v3_downgrader.go +674 -0
- package/native/core/programmers/iterate/openapi_v3_downgrader_boolean_default_test.go +95 -0
- package/native/core/programmers/iterate/openapi_v3_downgrader_test.go +123 -0
- package/native/core/programmers/iterate/template_interpolation_tags_test.go +40 -8
- package/native/core/programmers/iterate/template_runtime_pattern.go +63 -7
- package/native/core/programmers/json/JsonApplicationProgrammer.go +45 -11
- package/native/core/programmers/json/JsonSchemasProgrammer.go +12 -2
- package/native/core/programmers/json/JsonStringifyProgrammer.go +47 -6
- package/native/core/programmers/llm/LlmApplicationProgrammer.go +21 -11
- package/native/core/programmers/llm/LlmSchemaProgrammer.go +23 -6
- package/native/core/programmers/llm/llm_reference_codec_test.go +24 -0
- package/native/core/programmers/notations/NotationGeneralProgrammer.go +183 -67
- package/native/core/programmers/notations/notation_general_helpers_test.go +1 -3
- package/native/core/programmers/notations/notation_general_programmer_pascal_multiword_test.go +72 -0
- package/native/core/programmers/notations/notation_general_programmer_underscore_boundary_test.go +68 -0
- package/native/core/programmers/plain/PlainClassifyProgrammer.go +23 -15
- package/native/core/programmers/plain/PlainCloneProgrammer.go +20 -7
- package/native/core/programmers/plain/PlainPruneProgrammer.go +19 -5
- package/native/core/programmers/plain/plain_tuple_seed_recovery_ownership_test.go +25 -0
- package/native/core/programmers/protobuf/ProtobufDecodeProgrammer.go +37 -28
- package/native/core/programmers/protobuf/ProtobufMessageProgrammer.go +41 -22
- package/native/core/programmers/protobuf/protobuf_programmer_helper_coverage_test.go +26 -0
- package/native/core/programmers/random_programmer_length_argument_test.go +53 -0
- package/native/core/schemas/metadata/MetadataCollection.go +266 -25
- package/native/core/schemas/metadata/MetadataDefaultLibrary.go +81 -0
- package/native/core/schemas/metadata/MetadataDependency.go +388 -0
- package/native/core/schemas/metadata/MetadataObjectType.go +24 -22
- package/native/core/schemas/metadata/metadata_collection_generic_argument_dot_test.go +122 -0
- package/native/core/schemas/metadata/metadata_collection_name_allocation_test.go +147 -0
- package/native/core/schemas/metadata/metadata_collection_openapi_name_cascade_test.go +55 -0
- package/native/core/schemas/metadata/metadata_collection_openapi_name_test.go +68 -0
- package/native/core/utils/PatternUtil.go +13 -0
- package/native/core/utils/PromiseTypeFactory.go +59 -0
- package/native/core/utils/ProtobufNameEncoder.go +8 -0
- package/native/core/utils/promise_type_factory_semantics_test.go +118 -0
- package/native/go.mod +9 -1
- package/native/transform/CallExpressionTransformer.go +12 -0
- package/native/transform/features/json/JsonApplicationTransformer.go +1 -1
- package/native/transform/features/json/JsonSchemaTransformer.go +1 -1
- package/native/transform/features/json/JsonSchemasTransformer.go +5 -4
- package/native/transform/features/protobuf/ProtobufMessageTransformer.go +1 -1
- package/package.json +12 -4
- package/src/executable/FileSystemIdentity.ts +222 -0
- package/src/executable/TypiaGenerateWizard.ts +386 -113
- package/src/functional.ts +30 -60
- package/src/internal/_ProtobufReader.ts +161 -46
- package/src/internal/_createStandardSchema.ts +15 -1
- package/src/internal/_decimal.ts +69 -0
- package/src/internal/_httpQueryParseURLSearchParams.ts +24 -2
- package/src/internal/_isFormatByte.ts +2 -5
- package/src/internal/_isFormatDate.ts +15 -2
- package/src/internal/_isFormatDateTime.ts +28 -2
- package/src/internal/_isFormatIri.ts +5 -2
- package/src/internal/_isFormatIriReference.ts +11 -3
- package/src/internal/_isFormatUriReference.ts +1 -1
- package/src/internal/_isMultipleOf.ts +8 -0
- package/src/internal/_isTypeFloat.ts +1 -1
- package/src/internal/_isTypeInt64.ts +1 -0
- package/src/internal/_isTypeInt64Bigint.ts +12 -0
- package/src/internal/_isTypeUint64.ts +1 -0
- package/src/internal/_isTypeUint64Bigint.ts +7 -0
- package/src/internal/_isUniqueItems.ts +134 -132
- package/src/internal/_jsonStringifyArray.ts +50 -0
- package/src/internal/_jsonStringifyElement.ts +19 -0
- package/src/internal/_jsonStringifyProperty.ts +30 -0
- package/src/internal/_llmApplicationFinalize.ts +6 -1
- package/src/internal/_notationAny.ts +9 -4
- package/src/internal/_notationAssign.ts +20 -0
- package/src/internal/_notationCamel.ts +31 -10
- package/src/internal/_notationKebab.ts +11 -0
- package/src/internal/_notationKeyCollision.ts +9 -0
- package/src/internal/_notationPascal.ts +19 -6
- package/src/internal/_notationSnake.ts +24 -21
- package/src/internal/_plainCloneAny.ts +208 -33
- package/src/internal/_randomArray.ts +13 -4
- package/src/internal/_randomFormatByte.ts +31 -1
- package/src/internal/_randomFormatDate.ts +6 -17
- package/src/internal/_randomFormatDatetime.ts +34 -15
- package/src/internal/_randomFormatDuration.ts +30 -13
- package/src/internal/_randomFormatEmail.ts +8 -2
- package/src/internal/_randomFormatHostname.ts +48 -1
- package/src/internal/_randomFormatIdnEmail.ts +18 -2
- package/src/internal/_randomFormatIdnHostname.ts +34 -2
- package/src/internal/_randomFormatIpv4.ts +43 -2
- package/src/internal/_randomFormatIpv6.ts +67 -2
- package/src/internal/_randomFormatIri.ts +3 -1
- package/src/internal/_randomFormatIriReference.ts +3 -1
- package/src/internal/_randomFormatJsonPointer.ts +28 -2
- package/src/internal/_randomFormatPassword.ts +11 -6
- package/src/internal/_randomFormatRegex.ts +22 -1
- package/src/internal/_randomFormatRelativeJsonPointer.ts +26 -6
- package/src/internal/_randomFormatTime.ts +46 -10
- package/src/internal/_randomFormatUri.ts +3 -1
- package/src/internal/_randomFormatUriReference.ts +3 -1
- package/src/internal/_randomFormatUriTemplate.ts +3 -1
- package/src/internal/_randomFormatUrl.ts +25 -2
- package/src/internal/_randomFormatUuid.ts +10 -6
- package/src/internal/_randomInteger.ts +87 -40
- package/src/internal/_randomMultiple.ts +245 -0
- package/src/internal/_randomNumber.ts +72 -55
- package/src/internal/_randomPattern.ts +29 -4
- package/src/internal/_randomStringLength.ts +116 -0
- package/src/internal/_stringLength.ts +5 -0
- package/src/internal/_validateReport.ts +5 -1
- package/src/internal/private/__notationRename.ts +21 -0
- package/src/internal/private/__randomComposition.ts +50 -0
- package/src/internal/private/__randomEpoch.ts +34 -0
- package/src/json.ts +2 -2
- package/src/module.ts +4 -6
- package/src/notations.ts +20 -4
- package/lib/internal/private/__notationCapitalize.d.ts +0 -1
- package/lib/internal/private/__notationCapitalize.js +0 -6
- package/lib/internal/private/__notationCapitalize.js.map +0 -1
- package/lib/internal/private/__notationCapitalize.mjs +0 -6
- package/lib/internal/private/__notationCapitalize.mjs.map +0 -1
- package/lib/internal/private/__notationUnsnake.d.ts +0 -4
- package/lib/internal/private/__notationUnsnake.js +0 -26
- package/lib/internal/private/__notationUnsnake.js.map +0 -1
- package/lib/internal/private/__notationUnsnake.mjs +0 -15
- package/lib/internal/private/__notationUnsnake.mjs.map +0 -1
- package/native/adapter/visit.go +0 -173
- package/native/adapter/visit_property_chain_edges_test.go +0 -129
- package/native/cmd/ttsc-typia/plugin_options_missing_config_test.go +0 -26
- package/native/cmd/ttsc-typia/plugin_options_undefined_false_test.go +0 -36
- package/native/core/programmers/helpers/disable_function_programmer_declare.go +0 -10
- package/native/core/programmers/iterate/check_union_array_like.go +0 -422
- package/native/core/programmers/iterate/prune_object_properties.go +0 -105
- package/native/core/programmers/iterate/stringify_dynamic_properties.go +0 -219
- package/native/core/programmers/iterate/stringify_native.go +0 -14
- package/native/core/programmers/iterate/stringify_regular_properties.go +0 -112
- package/native/core/schemas/metadata/MetadataApplication.go +0 -41
- package/src/internal/private/__notationCapitalize.ts +0 -2
- package/src/internal/private/__notationUnsnake.ts +0 -24
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
package main
|
|
2
|
+
|
|
3
|
+
import (
|
|
4
|
+
"encoding/json"
|
|
5
|
+
"os"
|
|
6
|
+
"path/filepath"
|
|
7
|
+
"testing"
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
// TestProjectDependenciesLocalReexportTransform verifies a barrel that imports
|
|
11
|
+
// a name before re-exporting it still reports the module it imported from.
|
|
12
|
+
//
|
|
13
|
+
// `export { Alpha } from "./mid"` carries its module on the export declaration,
|
|
14
|
+
// but the equivalent `import { Alpha } from "./mid"; export { Alpha };` carries
|
|
15
|
+
// none: the export specifier re-publishes a LOCAL binding. A walk that reads
|
|
16
|
+
// only export declarations therefore loses `mid.ts` — while re-pointing that
|
|
17
|
+
// import still changes the generated validator, which is the same missing-edge
|
|
18
|
+
// defect in a second syntactic form (samchon/typia#2126).
|
|
19
|
+
//
|
|
20
|
+
// 1. Build a project where `a.ts` validates `Alpha` from `barrel.ts`, which
|
|
21
|
+
// imports it from `mid.ts` and re-exports the local binding; `mid.ts` in
|
|
22
|
+
// turn re-exports it from `real.ts`.
|
|
23
|
+
// 2. Run project transform mode and decode the JSON envelope.
|
|
24
|
+
// 3. Assert `dependencies["src/a.ts"]` contains `barrel.ts`, the intermediate
|
|
25
|
+
// `mid.ts`, and the concrete `real.ts`.
|
|
26
|
+
// 4. Assert it does NOT contain `beta.ts`, which `barrel.ts` also imports but
|
|
27
|
+
// no consulted type reaches.
|
|
28
|
+
func TestProjectDependenciesLocalReexportTransform(t *testing.T) {
|
|
29
|
+
project := projectDependenciesLocalReexportProject(t)
|
|
30
|
+
out, errText, code := ttscTypiaTestCapture(func() int {
|
|
31
|
+
return runTransform([]string{
|
|
32
|
+
"--cwd", project,
|
|
33
|
+
"--tsconfig", "tsconfig.json",
|
|
34
|
+
"--output", "ts",
|
|
35
|
+
})
|
|
36
|
+
})
|
|
37
|
+
if code != 0 {
|
|
38
|
+
t.Fatalf("project transform failed: code=%d stderr=\n%s", code, errText)
|
|
39
|
+
}
|
|
40
|
+
var envelope struct {
|
|
41
|
+
Dependencies map[string][]string `json:"dependencies"`
|
|
42
|
+
}
|
|
43
|
+
if err := json.Unmarshal([]byte(out), &envelope); err != nil {
|
|
44
|
+
t.Fatalf("decode envelope: %v\n%s", err, out)
|
|
45
|
+
}
|
|
46
|
+
entries := envelope.Dependencies["src/a.ts"]
|
|
47
|
+
found := map[string]bool{}
|
|
48
|
+
for _, entry := range entries {
|
|
49
|
+
found[entry] = true
|
|
50
|
+
}
|
|
51
|
+
if !found["src/barrel.ts"] {
|
|
52
|
+
t.Fatalf("dependencies of src/a.ts must contain the barrel src/barrel.ts: %v", entries)
|
|
53
|
+
}
|
|
54
|
+
if !found["src/mid.ts"] {
|
|
55
|
+
t.Fatalf("dependencies of src/a.ts must contain the locally re-exported module src/mid.ts: %v", entries)
|
|
56
|
+
}
|
|
57
|
+
if !found["src/real.ts"] {
|
|
58
|
+
t.Fatalf("dependencies of src/a.ts must contain the concrete module src/real.ts: %v", entries)
|
|
59
|
+
}
|
|
60
|
+
if found["src/beta.ts"] {
|
|
61
|
+
t.Fatalf("dependencies of src/a.ts must not contain src/beta.ts, which the barrel imports but no consulted type reaches: %v", entries)
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
func projectDependenciesLocalReexportProject(t *testing.T) string {
|
|
66
|
+
t.Helper()
|
|
67
|
+
root := ttscTypiaTestRepoRoot(t)
|
|
68
|
+
base := filepath.Join(root, "packages", "typia", "native", ".tmp-ttsc-typia-tests")
|
|
69
|
+
if err := os.MkdirAll(base, 0o755); err != nil {
|
|
70
|
+
t.Fatalf("mkdir temp base: %v", err)
|
|
71
|
+
}
|
|
72
|
+
dir, err := os.MkdirTemp(base, "project-dependencies-local-reexport-")
|
|
73
|
+
if err != nil {
|
|
74
|
+
t.Fatalf("create temp fixture: %v", err)
|
|
75
|
+
}
|
|
76
|
+
t.Cleanup(func() { _ = os.RemoveAll(dir) })
|
|
77
|
+
src := filepath.Join(dir, "src")
|
|
78
|
+
if err := os.MkdirAll(src, 0o755); err != nil {
|
|
79
|
+
t.Fatalf("mkdir fixture src: %v", err)
|
|
80
|
+
}
|
|
81
|
+
if err := os.WriteFile(filepath.Join(dir, "tsconfig.json"), []byte(projectDependenciesEnvelopeTSConfig), 0o644); err != nil {
|
|
82
|
+
t.Fatalf("write tsconfig: %v", err)
|
|
83
|
+
}
|
|
84
|
+
for name, body := range map[string]string{
|
|
85
|
+
"a.ts": projectDependenciesLocalReexportSourceA,
|
|
86
|
+
"barrel.ts": projectDependenciesLocalReexportSourceBarrel,
|
|
87
|
+
"mid.ts": projectDependenciesLocalReexportSourceMid,
|
|
88
|
+
"real.ts": projectDependenciesLocalReexportSourceReal,
|
|
89
|
+
"beta.ts": projectDependenciesLocalReexportSourceBeta,
|
|
90
|
+
} {
|
|
91
|
+
if err := os.WriteFile(filepath.Join(src, name), []byte(body), 0o644); err != nil {
|
|
92
|
+
t.Fatalf("write %s: %v", name, err)
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return dir
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
const projectDependenciesLocalReexportSourceA = `import typia from "typia";
|
|
99
|
+
|
|
100
|
+
import { Alpha } from "./barrel";
|
|
101
|
+
|
|
102
|
+
export const validateAlpha = (input: unknown) => typia.validate<Alpha>(input);
|
|
103
|
+
`
|
|
104
|
+
|
|
105
|
+
const projectDependenciesLocalReexportSourceBarrel = `import { Alpha } from "./mid";
|
|
106
|
+
import { Beta } from "./beta";
|
|
107
|
+
|
|
108
|
+
export { Alpha, Beta };
|
|
109
|
+
`
|
|
110
|
+
|
|
111
|
+
const projectDependenciesLocalReexportSourceMid = `export { Alpha } from "./real";
|
|
112
|
+
`
|
|
113
|
+
|
|
114
|
+
const projectDependenciesLocalReexportSourceReal = `export interface Alpha {
|
|
115
|
+
id: string;
|
|
116
|
+
}
|
|
117
|
+
`
|
|
118
|
+
|
|
119
|
+
const projectDependenciesLocalReexportSourceBeta = `export interface Beta {
|
|
120
|
+
flag: boolean;
|
|
121
|
+
}
|
|
122
|
+
`
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
package main
|
|
2
|
+
|
|
3
|
+
import (
|
|
4
|
+
"encoding/json"
|
|
5
|
+
"os"
|
|
6
|
+
"path/filepath"
|
|
7
|
+
"testing"
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
// TestProjectDependenciesSignatureAliasTransform verifies call- and
|
|
11
|
+
// construct-signature types stay OUT of the reported dependencies.
|
|
12
|
+
//
|
|
13
|
+
// `dependencies` must name every file whose edit can change the generated
|
|
14
|
+
// output — and only those. Typia validates a callable as `typeof x ===
|
|
15
|
+
// "function"` and never inspects its parameter or return types, so editing
|
|
16
|
+
// them provably cannot change the emitted validator; reporting them would
|
|
17
|
+
// invalidate consumers on edits that cannot affect them. This is the negative
|
|
18
|
+
// half of samchon/typia#2126, whose positive half adds the barrel and
|
|
19
|
+
// index-signature edges: the two were confirmed by the same probe, which showed
|
|
20
|
+
// the generated output is unchanged across these edits.
|
|
21
|
+
//
|
|
22
|
+
// 1. Build a project where `a.ts` validates `Target` from `model.ts`, whose
|
|
23
|
+
// call signature returns `CallRet` (`callret.ts`) and whose construct
|
|
24
|
+
// signature returns `NewRet` (`newret.ts`), while an ordinary property
|
|
25
|
+
// references `Kept` (`kept.ts`).
|
|
26
|
+
// 2. Run project transform mode and decode the JSON envelope.
|
|
27
|
+
// 3. Assert `dependencies["src/a.ts"]` contains `model.ts` and `kept.ts`, so
|
|
28
|
+
// the fixture is genuinely analyzed.
|
|
29
|
+
// 4. Assert it contains neither `callret.ts` nor `newret.ts`.
|
|
30
|
+
func TestProjectDependenciesSignatureAliasTransform(t *testing.T) {
|
|
31
|
+
project := projectDependenciesSignatureAliasProject(t)
|
|
32
|
+
out, errText, code := ttscTypiaTestCapture(func() int {
|
|
33
|
+
return runTransform([]string{
|
|
34
|
+
"--cwd", project,
|
|
35
|
+
"--tsconfig", "tsconfig.json",
|
|
36
|
+
"--output", "ts",
|
|
37
|
+
})
|
|
38
|
+
})
|
|
39
|
+
if code != 0 {
|
|
40
|
+
t.Fatalf("project transform failed: code=%d stderr=\n%s", code, errText)
|
|
41
|
+
}
|
|
42
|
+
var envelope struct {
|
|
43
|
+
Dependencies map[string][]string `json:"dependencies"`
|
|
44
|
+
}
|
|
45
|
+
if err := json.Unmarshal([]byte(out), &envelope); err != nil {
|
|
46
|
+
t.Fatalf("decode envelope: %v\n%s", err, out)
|
|
47
|
+
}
|
|
48
|
+
entries := envelope.Dependencies["src/a.ts"]
|
|
49
|
+
found := map[string]bool{}
|
|
50
|
+
for _, entry := range entries {
|
|
51
|
+
found[entry] = true
|
|
52
|
+
}
|
|
53
|
+
if !found["src/model.ts"] {
|
|
54
|
+
t.Fatalf("dependencies of src/a.ts must contain the declaring file src/model.ts: %v", entries)
|
|
55
|
+
}
|
|
56
|
+
if !found["src/kept.ts"] {
|
|
57
|
+
t.Fatalf("dependencies of src/a.ts must contain the consulted property alias file src/kept.ts: %v", entries)
|
|
58
|
+
}
|
|
59
|
+
if found["src/callret.ts"] {
|
|
60
|
+
t.Fatalf("dependencies of src/a.ts must not contain src/callret.ts: a call signature's return type cannot change the generated validator: %v", entries)
|
|
61
|
+
}
|
|
62
|
+
if found["src/newret.ts"] {
|
|
63
|
+
t.Fatalf("dependencies of src/a.ts must not contain src/newret.ts: a construct signature's return type cannot change the generated validator: %v", entries)
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
func projectDependenciesSignatureAliasProject(t *testing.T) string {
|
|
68
|
+
t.Helper()
|
|
69
|
+
root := ttscTypiaTestRepoRoot(t)
|
|
70
|
+
base := filepath.Join(root, "packages", "typia", "native", ".tmp-ttsc-typia-tests")
|
|
71
|
+
if err := os.MkdirAll(base, 0o755); err != nil {
|
|
72
|
+
t.Fatalf("mkdir temp base: %v", err)
|
|
73
|
+
}
|
|
74
|
+
dir, err := os.MkdirTemp(base, "project-dependencies-signature-alias-")
|
|
75
|
+
if err != nil {
|
|
76
|
+
t.Fatalf("create temp fixture: %v", err)
|
|
77
|
+
}
|
|
78
|
+
t.Cleanup(func() { _ = os.RemoveAll(dir) })
|
|
79
|
+
src := filepath.Join(dir, "src")
|
|
80
|
+
if err := os.MkdirAll(src, 0o755); err != nil {
|
|
81
|
+
t.Fatalf("mkdir fixture src: %v", err)
|
|
82
|
+
}
|
|
83
|
+
if err := os.WriteFile(filepath.Join(dir, "tsconfig.json"), []byte(projectDependenciesEnvelopeTSConfig), 0o644); err != nil {
|
|
84
|
+
t.Fatalf("write tsconfig: %v", err)
|
|
85
|
+
}
|
|
86
|
+
for name, body := range map[string]string{
|
|
87
|
+
"a.ts": projectDependenciesSignatureAliasSourceA,
|
|
88
|
+
"model.ts": projectDependenciesSignatureAliasSourceModel,
|
|
89
|
+
"callret.ts": projectDependenciesSignatureAliasSourceCallRet,
|
|
90
|
+
"newret.ts": projectDependenciesSignatureAliasSourceNewRet,
|
|
91
|
+
"kept.ts": projectDependenciesSignatureAliasSourceKept,
|
|
92
|
+
} {
|
|
93
|
+
if err := os.WriteFile(filepath.Join(src, name), []byte(body), 0o644); err != nil {
|
|
94
|
+
t.Fatalf("write %s: %v", name, err)
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return dir
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
const projectDependenciesSignatureAliasSourceA = `import typia from "typia";
|
|
101
|
+
|
|
102
|
+
import { Target } from "./model";
|
|
103
|
+
|
|
104
|
+
export const validateTarget = (input: unknown) => typia.validate<Target>(input);
|
|
105
|
+
`
|
|
106
|
+
|
|
107
|
+
const projectDependenciesSignatureAliasSourceModel = `import { CallRet } from "./callret";
|
|
108
|
+
import { Kept } from "./kept";
|
|
109
|
+
import { NewRet } from "./newret";
|
|
110
|
+
|
|
111
|
+
export interface Target {
|
|
112
|
+
kept: Kept;
|
|
113
|
+
(arg: string): CallRet;
|
|
114
|
+
new (arg: string): NewRet;
|
|
115
|
+
}
|
|
116
|
+
`
|
|
117
|
+
|
|
118
|
+
const projectDependenciesSignatureAliasSourceCallRet = `export type CallRet = string;
|
|
119
|
+
`
|
|
120
|
+
|
|
121
|
+
const projectDependenciesSignatureAliasSourceNewRet = `export type NewRet = string;
|
|
122
|
+
`
|
|
123
|
+
|
|
124
|
+
const projectDependenciesSignatureAliasSourceKept = `export type Kept = number;
|
|
125
|
+
`
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
package main
|
|
2
|
+
|
|
3
|
+
import (
|
|
4
|
+
"encoding/json"
|
|
5
|
+
"os"
|
|
6
|
+
"path/filepath"
|
|
7
|
+
"testing"
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
// TestProjectDependenciesStarBarrelTransform verifies a barrel reached through
|
|
11
|
+
// `export *` registers, even though no local specifier names the type.
|
|
12
|
+
//
|
|
13
|
+
// A named re-export publishes an export specifier the alias walk can step
|
|
14
|
+
// through hop by hop; `export * from "./alpha"` publishes none, so that walk
|
|
15
|
+
// has nothing to follow and would stop before reporting the barrel — while
|
|
16
|
+
// re-pointing the star at another module still changes the generated validator
|
|
17
|
+
// (samchon/typia#2126). The walk therefore reports each module specifier's
|
|
18
|
+
// resolved file directly, which is what keeps this shape covered.
|
|
19
|
+
//
|
|
20
|
+
// 1. Build a project where `a.ts` validates `Alpha` imported from `barrel.ts`,
|
|
21
|
+
// which reaches it only through `export * from "./alpha"`.
|
|
22
|
+
// 2. Run project transform mode and decode the JSON envelope.
|
|
23
|
+
// 3. Assert `dependencies["src/a.ts"]` contains the star barrel `barrel.ts`
|
|
24
|
+
// and the concrete module `alpha.ts`.
|
|
25
|
+
// 4. Assert it does NOT contain `beta.ts`, a module the same barrel also stars
|
|
26
|
+
// in but no consulted type reaches.
|
|
27
|
+
func TestProjectDependenciesStarBarrelTransform(t *testing.T) {
|
|
28
|
+
project := projectDependenciesStarBarrelProject(t)
|
|
29
|
+
out, errText, code := ttscTypiaTestCapture(func() int {
|
|
30
|
+
return runTransform([]string{
|
|
31
|
+
"--cwd", project,
|
|
32
|
+
"--tsconfig", "tsconfig.json",
|
|
33
|
+
"--output", "ts",
|
|
34
|
+
})
|
|
35
|
+
})
|
|
36
|
+
if code != 0 {
|
|
37
|
+
t.Fatalf("project transform failed: code=%d stderr=\n%s", code, errText)
|
|
38
|
+
}
|
|
39
|
+
var envelope struct {
|
|
40
|
+
Dependencies map[string][]string `json:"dependencies"`
|
|
41
|
+
}
|
|
42
|
+
if err := json.Unmarshal([]byte(out), &envelope); err != nil {
|
|
43
|
+
t.Fatalf("decode envelope: %v\n%s", err, out)
|
|
44
|
+
}
|
|
45
|
+
entries := envelope.Dependencies["src/a.ts"]
|
|
46
|
+
found := map[string]bool{}
|
|
47
|
+
for _, entry := range entries {
|
|
48
|
+
found[entry] = true
|
|
49
|
+
}
|
|
50
|
+
if !found["src/barrel.ts"] {
|
|
51
|
+
t.Fatalf("dependencies of src/a.ts must contain the star barrel src/barrel.ts: %v", entries)
|
|
52
|
+
}
|
|
53
|
+
if !found["src/alpha.ts"] {
|
|
54
|
+
t.Fatalf("dependencies of src/a.ts must contain the concrete module src/alpha.ts: %v", entries)
|
|
55
|
+
}
|
|
56
|
+
if found["src/beta.ts"] {
|
|
57
|
+
t.Fatalf("dependencies of src/a.ts must not contain src/beta.ts, which the barrel stars in but no consulted type reaches: %v", entries)
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
func projectDependenciesStarBarrelProject(t *testing.T) string {
|
|
62
|
+
t.Helper()
|
|
63
|
+
root := ttscTypiaTestRepoRoot(t)
|
|
64
|
+
base := filepath.Join(root, "packages", "typia", "native", ".tmp-ttsc-typia-tests")
|
|
65
|
+
if err := os.MkdirAll(base, 0o755); err != nil {
|
|
66
|
+
t.Fatalf("mkdir temp base: %v", err)
|
|
67
|
+
}
|
|
68
|
+
dir, err := os.MkdirTemp(base, "project-dependencies-star-barrel-")
|
|
69
|
+
if err != nil {
|
|
70
|
+
t.Fatalf("create temp fixture: %v", err)
|
|
71
|
+
}
|
|
72
|
+
t.Cleanup(func() { _ = os.RemoveAll(dir) })
|
|
73
|
+
src := filepath.Join(dir, "src")
|
|
74
|
+
if err := os.MkdirAll(src, 0o755); err != nil {
|
|
75
|
+
t.Fatalf("mkdir fixture src: %v", err)
|
|
76
|
+
}
|
|
77
|
+
if err := os.WriteFile(filepath.Join(dir, "tsconfig.json"), []byte(projectDependenciesEnvelopeTSConfig), 0o644); err != nil {
|
|
78
|
+
t.Fatalf("write tsconfig: %v", err)
|
|
79
|
+
}
|
|
80
|
+
for name, body := range map[string]string{
|
|
81
|
+
"a.ts": projectDependenciesStarBarrelSourceA,
|
|
82
|
+
"barrel.ts": projectDependenciesStarBarrelSourceBarrel,
|
|
83
|
+
"alpha.ts": projectDependenciesStarBarrelSourceAlpha,
|
|
84
|
+
"beta.ts": projectDependenciesStarBarrelSourceBeta,
|
|
85
|
+
} {
|
|
86
|
+
if err := os.WriteFile(filepath.Join(src, name), []byte(body), 0o644); err != nil {
|
|
87
|
+
t.Fatalf("write %s: %v", name, err)
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return dir
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
const projectDependenciesStarBarrelSourceA = `import typia from "typia";
|
|
94
|
+
|
|
95
|
+
import { Alpha } from "./barrel";
|
|
96
|
+
|
|
97
|
+
export const validateAlpha = (input: unknown) => typia.validate<Alpha>(input);
|
|
98
|
+
`
|
|
99
|
+
|
|
100
|
+
const projectDependenciesStarBarrelSourceBarrel = `export * from "./alpha";
|
|
101
|
+
export * from "./beta";
|
|
102
|
+
`
|
|
103
|
+
|
|
104
|
+
const projectDependenciesStarBarrelSourceAlpha = `export interface Alpha {
|
|
105
|
+
id: string;
|
|
106
|
+
}
|
|
107
|
+
`
|
|
108
|
+
|
|
109
|
+
const projectDependenciesStarBarrelSourceBeta = `export interface Beta {
|
|
110
|
+
flag: boolean;
|
|
111
|
+
}
|
|
112
|
+
`
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
package main
|
|
2
|
+
|
|
3
|
+
import (
|
|
4
|
+
"encoding/json"
|
|
5
|
+
"os"
|
|
6
|
+
"path/filepath"
|
|
7
|
+
"testing"
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
// TestProjectReferenceGraphEnvelopeTransform verifies the project transform
|
|
11
|
+
// envelope carries the ttsc driver SDK's host-owned reference `graph` section
|
|
12
|
+
// alongside typia's precise `dependencies`.
|
|
13
|
+
//
|
|
14
|
+
// `graph` is the plugin-agnostic sound invalidation baseline: the ttsc consumer
|
|
15
|
+
// registers reach(edges, F) ∪ globals ∪ configs ∪ dependencies[F], so a
|
|
16
|
+
// consulted file the precise `dependencies` collection might not attribute is
|
|
17
|
+
// still guarded by the host baseline (samchon/typia#2107). This pins that
|
|
18
|
+
// typia's hand-rolled envelope now routes through driver.NewTransformGraph:
|
|
19
|
+
// direct reference edges (type-only included), ambient global-scope files, and
|
|
20
|
+
// the tsconfig `extends` chain, all keyed by the same driver.TransformOutputKey
|
|
21
|
+
// convention as the `typescript`/`dependencies` sections so a consumer joins
|
|
22
|
+
// them by key.
|
|
23
|
+
//
|
|
24
|
+
// 1. Build a project where `a.ts` imports `Bee` from `b.ts` (and calls
|
|
25
|
+
// `typia.validate<Bee>()`), `b.ts` imports type-only `Cee` from `c.ts`, an
|
|
26
|
+
// ambient `globals.d.ts` contributes a global augmentation, and
|
|
27
|
+
// `tsconfig.json` extends `tsconfig.base.json`.
|
|
28
|
+
// 2. Run project transform mode and decode the JSON envelope's `graph`.
|
|
29
|
+
// 3. Assert the `a.ts -> b.ts` and the type-only `b.ts -> c.ts` edges, the
|
|
30
|
+
// `globals.d.ts` global entry, and the `tsconfig.json` + `tsconfig.base.json`
|
|
31
|
+
// configs chain, all under keys that join with the `typescript` section.
|
|
32
|
+
// 4. Assert `dependencies` is still emitted next to `graph`, and that a
|
|
33
|
+
// non-global source is not misreported as a global.
|
|
34
|
+
func TestProjectReferenceGraphEnvelopeTransform(t *testing.T) {
|
|
35
|
+
project := projectReferenceGraphEnvelopeProject(t)
|
|
36
|
+
out, errText, code := ttscTypiaTestCapture(func() int {
|
|
37
|
+
return runTransform([]string{
|
|
38
|
+
"--cwd", project,
|
|
39
|
+
"--tsconfig", "tsconfig.json",
|
|
40
|
+
"--output", "ts",
|
|
41
|
+
})
|
|
42
|
+
})
|
|
43
|
+
if code != 0 {
|
|
44
|
+
t.Fatalf("project transform failed: code=%d stderr=\n%s", code, errText)
|
|
45
|
+
}
|
|
46
|
+
var envelope struct {
|
|
47
|
+
TypeScript map[string]string `json:"typescript"`
|
|
48
|
+
Graph *struct {
|
|
49
|
+
Edges map[string][]string `json:"edges"`
|
|
50
|
+
Globals []string `json:"globals"`
|
|
51
|
+
Configs []string `json:"configs"`
|
|
52
|
+
} `json:"graph"`
|
|
53
|
+
Dependencies map[string][]string `json:"dependencies"`
|
|
54
|
+
}
|
|
55
|
+
if err := json.Unmarshal([]byte(out), &envelope); err != nil {
|
|
56
|
+
t.Fatalf("decode envelope: %v\n%s", err, out)
|
|
57
|
+
}
|
|
58
|
+
if envelope.Graph == nil {
|
|
59
|
+
t.Fatalf("envelope must carry a graph section:\n%s", out)
|
|
60
|
+
}
|
|
61
|
+
if _, ok := envelope.TypeScript["src/a.ts"]; !ok {
|
|
62
|
+
t.Fatalf("typescript map must contain src/a.ts (graph keys join with it):\n%s", out)
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
contains := func(values []string, want string) bool {
|
|
66
|
+
for _, value := range values {
|
|
67
|
+
if value == want {
|
|
68
|
+
return true
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return false
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// Direct resolved edge from the transformed file to its import.
|
|
75
|
+
if !contains(envelope.Graph.Edges["src/a.ts"], "src/b.ts") {
|
|
76
|
+
t.Fatalf("graph edges of src/a.ts must contain src/b.ts: %v", envelope.Graph.Edges["src/a.ts"])
|
|
77
|
+
}
|
|
78
|
+
// Type-only edges must be included: b.ts imports Cee with `import type`.
|
|
79
|
+
if !contains(envelope.Graph.Edges["src/b.ts"], "src/c.ts") {
|
|
80
|
+
t.Fatalf("graph edges of src/b.ts must contain the type-only edge src/c.ts: %v", envelope.Graph.Edges["src/b.ts"])
|
|
81
|
+
}
|
|
82
|
+
// Ambient global-scope file appears in globals.
|
|
83
|
+
if !contains(envelope.Graph.Globals, "src/globals.d.ts") {
|
|
84
|
+
t.Fatalf("graph globals must contain src/globals.d.ts: %v", envelope.Graph.Globals)
|
|
85
|
+
}
|
|
86
|
+
// A plain module source is not a global-scope contributor.
|
|
87
|
+
if contains(envelope.Graph.Globals, "src/c.ts") {
|
|
88
|
+
t.Fatalf("graph globals must not contain the module source src/c.ts: %v", envelope.Graph.Globals)
|
|
89
|
+
}
|
|
90
|
+
// tsconfig extends chain: project config followed by its base.
|
|
91
|
+
if !contains(envelope.Graph.Configs, "tsconfig.json") {
|
|
92
|
+
t.Fatalf("graph configs must contain tsconfig.json: %v", envelope.Graph.Configs)
|
|
93
|
+
}
|
|
94
|
+
if !contains(envelope.Graph.Configs, "tsconfig.base.json") {
|
|
95
|
+
t.Fatalf("graph configs must contain the extended tsconfig.base.json: %v", envelope.Graph.Configs)
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// The precise dependencies channel remains emitted alongside graph.
|
|
99
|
+
if !contains(envelope.Dependencies["src/a.ts"], "src/b.ts") {
|
|
100
|
+
t.Fatalf("dependencies of src/a.ts must still be emitted alongside graph: %v", envelope.Dependencies["src/a.ts"])
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
func projectReferenceGraphEnvelopeProject(t *testing.T) string {
|
|
105
|
+
t.Helper()
|
|
106
|
+
root := ttscTypiaTestRepoRoot(t)
|
|
107
|
+
base := filepath.Join(root, "packages", "typia", "native", ".tmp-ttsc-typia-tests")
|
|
108
|
+
if err := os.MkdirAll(base, 0o755); err != nil {
|
|
109
|
+
t.Fatalf("mkdir temp base: %v", err)
|
|
110
|
+
}
|
|
111
|
+
dir, err := os.MkdirTemp(base, "project-reference-graph-envelope-")
|
|
112
|
+
if err != nil {
|
|
113
|
+
t.Fatalf("create temp fixture: %v", err)
|
|
114
|
+
}
|
|
115
|
+
t.Cleanup(func() { _ = os.RemoveAll(dir) })
|
|
116
|
+
src := filepath.Join(dir, "src")
|
|
117
|
+
if err := os.MkdirAll(src, 0o755); err != nil {
|
|
118
|
+
t.Fatalf("mkdir fixture src: %v", err)
|
|
119
|
+
}
|
|
120
|
+
files := map[string]string{
|
|
121
|
+
"tsconfig.json": projectReferenceGraphEnvelopeTSConfig,
|
|
122
|
+
"tsconfig.base.json": projectReferenceGraphEnvelopeTSConfigBase,
|
|
123
|
+
}
|
|
124
|
+
for name, body := range files {
|
|
125
|
+
if err := os.WriteFile(filepath.Join(dir, name), []byte(body), 0o644); err != nil {
|
|
126
|
+
t.Fatalf("write %s: %v", name, err)
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
for name, body := range map[string]string{
|
|
130
|
+
"a.ts": projectReferenceGraphEnvelopeSourceA,
|
|
131
|
+
"b.ts": projectReferenceGraphEnvelopeSourceB,
|
|
132
|
+
"c.ts": projectReferenceGraphEnvelopeSourceC,
|
|
133
|
+
"globals.d.ts": projectReferenceGraphEnvelopeGlobals,
|
|
134
|
+
} {
|
|
135
|
+
if err := os.WriteFile(filepath.Join(src, name), []byte(body), 0o644); err != nil {
|
|
136
|
+
t.Fatalf("write %s: %v", name, err)
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return dir
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
const projectReferenceGraphEnvelopeTSConfig = `{
|
|
143
|
+
"extends": "./tsconfig.base.json",
|
|
144
|
+
"compilerOptions": {
|
|
145
|
+
"rootDir": "src",
|
|
146
|
+
"outDir": "dist"
|
|
147
|
+
},
|
|
148
|
+
"include": ["src"]
|
|
149
|
+
}
|
|
150
|
+
`
|
|
151
|
+
|
|
152
|
+
const projectReferenceGraphEnvelopeTSConfigBase = `{
|
|
153
|
+
"compilerOptions": {
|
|
154
|
+
"target": "ES2022",
|
|
155
|
+
"module": "commonjs",
|
|
156
|
+
"moduleResolution": "bundler",
|
|
157
|
+
"ignoreDeprecations": "6.0",
|
|
158
|
+
"esModuleInterop": true,
|
|
159
|
+
"strict": true,
|
|
160
|
+
"skipLibCheck": true
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
`
|
|
164
|
+
|
|
165
|
+
const projectReferenceGraphEnvelopeSourceA = `import typia from "typia";
|
|
166
|
+
|
|
167
|
+
import { Bee } from "./b";
|
|
168
|
+
|
|
169
|
+
export const validateBee = (input: unknown) => typia.validate<Bee>(input);
|
|
170
|
+
`
|
|
171
|
+
|
|
172
|
+
const projectReferenceGraphEnvelopeSourceB = `import type { Cee } from "./c";
|
|
173
|
+
|
|
174
|
+
export interface Bee {
|
|
175
|
+
id: string;
|
|
176
|
+
nested: Cee;
|
|
177
|
+
}
|
|
178
|
+
`
|
|
179
|
+
|
|
180
|
+
const projectReferenceGraphEnvelopeSourceC = `export interface Cee {
|
|
181
|
+
value: number;
|
|
182
|
+
}
|
|
183
|
+
`
|
|
184
|
+
|
|
185
|
+
// A pure ambient declaration file (no import/export) is a script file, so it
|
|
186
|
+
// contributes to the global scope and must appear in graph.globals.
|
|
187
|
+
const projectReferenceGraphEnvelopeGlobals = `declare interface TypiaGraphGlobal {
|
|
188
|
+
tag: string;
|
|
189
|
+
}
|
|
190
|
+
`
|