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,34 @@
|
|
|
1
|
+
import { _randomInteger } from "../_randomInteger";
|
|
2
|
+
|
|
3
|
+
export interface __IEpochProps {
|
|
4
|
+
minimum?: number;
|
|
5
|
+
maximum?: number;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Draws an epoch millisecond inside the requested bounds.
|
|
10
|
+
*
|
|
11
|
+
* Shared by the `date` and `date-time` generators, which had the same bound
|
|
12
|
+
* expression written twice: `props?.maximum ?? props?.minimum === undefined`
|
|
13
|
+
* parses as `props?.maximum ?? (props?.minimum === undefined)` because `??`
|
|
14
|
+
* binds looser than `===`, so any supplied `maximum` made the condition truthy
|
|
15
|
+
* and was replaced by `Date.now()`, while `maximum: 0` fell through to
|
|
16
|
+
* `undefined + one year` and produced `NaN` (issue #2287). Keeping the
|
|
17
|
+
* resolution in one place is what stops the two copies from drifting again.
|
|
18
|
+
*
|
|
19
|
+
* With no bound at all the window ends at the present instant; with only a
|
|
20
|
+
* lower bound it spans one year from there.
|
|
21
|
+
*/
|
|
22
|
+
export const __randomEpoch = (props?: __IEpochProps): number => {
|
|
23
|
+
const minimum: number = props?.minimum ?? 0;
|
|
24
|
+
const maximum: number =
|
|
25
|
+
props?.maximum ??
|
|
26
|
+
(props?.minimum === undefined ? Date.now() : props.minimum + YEAR);
|
|
27
|
+
return _randomInteger({
|
|
28
|
+
type: "integer",
|
|
29
|
+
minimum,
|
|
30
|
+
maximum,
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const YEAR = 365 * 24 * 60 * 60 * 1_000;
|
package/src/json.ts
CHANGED
|
@@ -101,10 +101,10 @@ export function application(): never;
|
|
|
101
101
|
*
|
|
102
102
|
* - Custom LLM function calling schema formats
|
|
103
103
|
* - API documentation or code generation tools
|
|
104
|
-
* - Alternative LLM integrations
|
|
104
|
+
* - Alternative LLM integrations that need full JSON Schema
|
|
105
105
|
*
|
|
106
106
|
* For standard LLM function calling, use {@link llm.application} instead, which
|
|
107
|
-
*
|
|
107
|
+
* builds the LLM-optimized function schema directly.
|
|
108
108
|
*
|
|
109
109
|
* @template Class Target class or interface type
|
|
110
110
|
* @template Version OpenAPI version (`"3.0"` | `"3.1"`). Default `"3.1"`
|
package/src/module.ts
CHANGED
|
@@ -637,10 +637,10 @@ export function createAssertGuard(
|
|
|
637
637
|
*/
|
|
638
638
|
export function createAssertGuard<T>(
|
|
639
639
|
errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
|
|
640
|
-
):
|
|
640
|
+
): AssertionGuard<T>;
|
|
641
641
|
|
|
642
642
|
/** @internal */
|
|
643
|
-
export function createAssertGuard<T>():
|
|
643
|
+
export function createAssertGuard<T>(): AssertionGuard<T> {
|
|
644
644
|
NoTransformConfigurationError("createAssertGuard");
|
|
645
645
|
}
|
|
646
646
|
|
|
@@ -809,12 +809,10 @@ export function createAssertGuardEquals(
|
|
|
809
809
|
*/
|
|
810
810
|
export function createAssertGuardEquals<T>(
|
|
811
811
|
errorFactory?: undefined | ((props: TypeGuardError.IProps) => Error),
|
|
812
|
-
):
|
|
812
|
+
): AssertionGuard<T>;
|
|
813
813
|
|
|
814
814
|
/** @internal */
|
|
815
|
-
export function createAssertGuardEquals<T>():
|
|
816
|
-
input: unknown,
|
|
817
|
-
) => AssertionGuard<T> {
|
|
815
|
+
export function createAssertGuardEquals<T>(): AssertionGuard<T> {
|
|
818
816
|
NoTransformConfigurationError("createAssertGuardEquals");
|
|
819
817
|
}
|
|
820
818
|
|
package/src/notations.ts
CHANGED
|
@@ -23,7 +23,10 @@ import { NoTransformConfigurationError } from "./transformers/NoTransformConfigu
|
|
|
23
23
|
* Converts property names to camelCase.
|
|
24
24
|
*
|
|
25
25
|
* Transforms all property names in the object (including nested) to camelCase
|
|
26
|
-
* convention. Creates a new object with renamed properties.
|
|
26
|
+
* convention. Creates a new object with renamed properties. Distinct source
|
|
27
|
+
* keys that become the same destination key are rejected with an error instead
|
|
28
|
+
* of silently discarding a value. This collision policy also applies to the
|
|
29
|
+
* assert, is, validate, and factory variants.
|
|
27
30
|
*
|
|
28
31
|
* Does not validate the input. For validation, use:
|
|
29
32
|
*
|
|
@@ -34,6 +37,7 @@ import { NoTransformConfigurationError } from "./transformers/NoTransformConfigu
|
|
|
34
37
|
* @template T Type of input value
|
|
35
38
|
* @param input Object to convert
|
|
36
39
|
* @returns New object with camelCase property names
|
|
40
|
+
* @throws {Error} When two source keys become the same destination key
|
|
37
41
|
*/
|
|
38
42
|
export function camel<T>(input: T): CamelCase<T>;
|
|
39
43
|
|
|
@@ -137,7 +141,10 @@ export function validateCamel(): never {
|
|
|
137
141
|
* Converts property names to PascalCase.
|
|
138
142
|
*
|
|
139
143
|
* Transforms all property names in the object (including nested) to PascalCase
|
|
140
|
-
* convention. Creates a new object with renamed properties.
|
|
144
|
+
* convention. Creates a new object with renamed properties. Distinct source
|
|
145
|
+
* keys that become the same destination key are rejected with an error instead
|
|
146
|
+
* of silently discarding a value. This collision policy also applies to the
|
|
147
|
+
* assert, is, validate, and factory variants.
|
|
141
148
|
*
|
|
142
149
|
* Does not validate the input. For validation, use:
|
|
143
150
|
*
|
|
@@ -148,6 +155,7 @@ export function validateCamel(): never {
|
|
|
148
155
|
* @template T Type of input value
|
|
149
156
|
* @param input Object to convert
|
|
150
157
|
* @returns New object with PascalCase property names
|
|
158
|
+
* @throws {Error} When two source keys become the same destination key
|
|
151
159
|
*/
|
|
152
160
|
export function pascal<T>(input: T): PascalCase<T>;
|
|
153
161
|
|
|
@@ -251,7 +259,10 @@ export function validatePascal(): never {
|
|
|
251
259
|
* Converts property names to snake_case.
|
|
252
260
|
*
|
|
253
261
|
* Transforms all property names in the object (including nested) to snake_case
|
|
254
|
-
* convention. Creates a new object with renamed properties.
|
|
262
|
+
* convention. Creates a new object with renamed properties. Distinct source
|
|
263
|
+
* keys that become the same destination key are rejected with an error instead
|
|
264
|
+
* of silently discarding a value. This collision policy also applies to the
|
|
265
|
+
* assert, is, validate, and factory variants.
|
|
255
266
|
*
|
|
256
267
|
* Does not validate the input. For validation, use:
|
|
257
268
|
*
|
|
@@ -262,6 +273,7 @@ export function validatePascal(): never {
|
|
|
262
273
|
* @template T Type of input value
|
|
263
274
|
* @param input Object to convert
|
|
264
275
|
* @returns New object with snake_case property names
|
|
276
|
+
* @throws {Error} When two source keys become the same destination key
|
|
265
277
|
*/
|
|
266
278
|
export function snake<T>(input: T): SnakeCase<T>;
|
|
267
279
|
|
|
@@ -365,7 +377,10 @@ export function validateSnake(): never {
|
|
|
365
377
|
* Converts property names to kebab-case.
|
|
366
378
|
*
|
|
367
379
|
* Transforms all property names in the object (including nested) to kebab-case
|
|
368
|
-
* convention. Creates a new object with renamed properties.
|
|
380
|
+
* convention. Creates a new object with renamed properties. Distinct source
|
|
381
|
+
* keys that become the same destination key are rejected with an error instead
|
|
382
|
+
* of silently discarding a value. This collision policy also applies to the
|
|
383
|
+
* assert, is, validate, and factory variants.
|
|
369
384
|
*
|
|
370
385
|
* Does not validate the input. For validation, use:
|
|
371
386
|
*
|
|
@@ -376,6 +391,7 @@ export function validateSnake(): never {
|
|
|
376
391
|
* @template T Type of input value
|
|
377
392
|
* @param input Object to convert
|
|
378
393
|
* @returns New object with kebab-case property names
|
|
394
|
+
* @throws {Error} When two source keys become the same destination key
|
|
379
395
|
*/
|
|
380
396
|
export function kebab<T>(input: T): KebabCase<T>;
|
|
381
397
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const __notationCapitalize: (str: string) => string;
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.__notationCapitalize = void 0;
|
|
4
|
-
const __notationCapitalize = (str) => str.length ? str[0].toUpperCase() + str.slice(1).toLowerCase() : str;
|
|
5
|
-
exports.__notationCapitalize = __notationCapitalize;
|
|
6
|
-
//# sourceMappingURL=__notationCapitalize.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"__notationCapitalize.js","sourceRoot":"","sources":["../../../src/internal/private/__notationCapitalize.ts"],"names":[],"mappings":";;;AAAO,MAAM,oBAAoB,GAAG,CAAC,GAAW,EAAE,EAAE,CAClD,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;AAD3D,QAAA,oBAAoB,GAApB,oBAAoB,CACuC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"__notationCapitalize.mjs","names":[],"sources":["../../../src/internal/private/__notationCapitalize.ts"],"sourcesContent":["export const __notationCapitalize = (str: string) =>\n str.length ? str[0]!.toUpperCase() + str.slice(1).toLowerCase() : str;\n"],"mappings":";AAAA,MAAa,wBAAwB,QACnC,IAAI,SAAS,IAAI,EAAE,CAAE,YAAY,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,YAAY,IAAI"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.__notationUnsnake = void 0;
|
|
4
|
-
const __notationUnsnake = (props) => (str) => {
|
|
5
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6
|
-
let prefix = "";
|
|
7
|
-
for (let i = 0; i < str.length; i++) {
|
|
8
|
-
if (str[i] === "_")
|
|
9
|
-
prefix += "_";
|
|
10
|
-
else
|
|
11
|
-
break;
|
|
12
|
-
}
|
|
13
|
-
if (prefix.length !== 0)
|
|
14
|
-
str = str.substring(prefix.length);
|
|
15
|
-
const out = (s) => `${prefix}${s}`;
|
|
16
|
-
if (str.length === 0)
|
|
17
|
-
return out("");
|
|
18
|
-
const items = str.split("_").filter((s) => s.length !== 0);
|
|
19
|
-
return items.length === 0
|
|
20
|
-
? out("")
|
|
21
|
-
: items.length === 1
|
|
22
|
-
? out(props.plain(items[0]))
|
|
23
|
-
: out(items.map(props.snake).join(""));
|
|
24
|
-
};
|
|
25
|
-
exports.__notationUnsnake = __notationUnsnake;
|
|
26
|
-
//# sourceMappingURL=__notationUnsnake.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"__notationUnsnake.js","sourceRoot":"","sources":["../../../src/internal/private/__notationUnsnake.ts"],"names":[],"mappings":";;;AAAO,MAAM,iBAAiB,GAC5B,CAAC,KAGA,EAAE,EAAE,CACL,CAAC,GAAW,EAAU,EAAE;IACtB,6DAA6D;IAC7D,IAAI,MAAM,GAAW,EAAE,CAAC;IACxB,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG;YAAE,MAAM,IAAI,GAAG,CAAC;;YAC7B,MAAM;IACb,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAE5D,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC;IAC3C,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC;IAErC,MAAM,KAAK,GAAa,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;IACrE,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;QACvB,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QACT,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;YAClB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;YAC7B,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7C,CAAC,CAAC;AAvBS,QAAA,iBAAiB,GAAjB,iBAAiB,CAuB1B"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
//#region src/internal/private/__notationUnsnake.ts
|
|
2
|
-
const __notationUnsnake = (props) => (str) => {
|
|
3
|
-
let prefix = "";
|
|
4
|
-
for (let i = 0; i < str.length; i++) if (str[i] === "_") prefix += "_";
|
|
5
|
-
else break;
|
|
6
|
-
if (prefix.length !== 0) str = str.substring(prefix.length);
|
|
7
|
-
const out = (s) => `${prefix}${s}`;
|
|
8
|
-
if (str.length === 0) return out("");
|
|
9
|
-
const items = str.split("_").filter((s) => s.length !== 0);
|
|
10
|
-
return items.length === 0 ? out("") : items.length === 1 ? out(props.plain(items[0])) : out(items.map(props.snake).join(""));
|
|
11
|
-
};
|
|
12
|
-
//#endregion
|
|
13
|
-
export { __notationUnsnake };
|
|
14
|
-
|
|
15
|
-
//# sourceMappingURL=__notationUnsnake.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"__notationUnsnake.mjs","names":[],"sources":["../../../src/internal/private/__notationUnsnake.ts"],"sourcesContent":["export const __notationUnsnake =\n (props: {\n plain: (str: string) => string;\n snake: (str: string, index: number) => string;\n }) =>\n (str: string): string => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n let prefix: string = \"\";\n for (let i: number = 0; i < str.length; i++) {\n if (str[i] === \"_\") prefix += \"_\";\n else break;\n }\n if (prefix.length !== 0) str = str.substring(prefix.length);\n\n const out = (s: string) => `${prefix}${s}`;\n if (str.length === 0) return out(\"\");\n\n const items: string[] = str.split(\"_\").filter((s) => s.length !== 0);\n return items.length === 0\n ? out(\"\")\n : items.length === 1\n ? out(props.plain(items[0]!))\n : out(items.map(props.snake).join(\"\"));\n };\n"],"mappings":";AAAA,MAAa,qBACV,WAIA,QAAwB;CAEvB,IAAI,SAAiB;CACrB,KAAK,IAAI,IAAY,GAAG,IAAI,IAAI,QAAQ,KACtC,IAAI,IAAI,OAAO,KAAK,UAAU;MACzB;CAEP,IAAI,OAAO,WAAW,GAAG,MAAM,IAAI,UAAU,OAAO,MAAM;CAE1D,MAAM,OAAO,MAAc,GAAG,SAAS;CACvC,IAAI,IAAI,WAAW,GAAG,OAAO,IAAI,EAAE;CAEnC,MAAM,QAAkB,IAAI,MAAM,GAAG,CAAC,CAAC,QAAQ,MAAM,EAAE,WAAW,CAAC;CACnE,OAAO,MAAM,WAAW,IACpB,IAAI,EAAE,IACN,MAAM,WAAW,IACf,IAAI,MAAM,MAAM,MAAM,EAAG,CAAC,IAC1B,IAAI,MAAM,IAAI,MAAM,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;AAC3C"}
|
package/native/adapter/visit.go
DELETED
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
package adapter
|
|
2
|
-
|
|
3
|
-
import (
|
|
4
|
-
"path/filepath"
|
|
5
|
-
"strings"
|
|
6
|
-
|
|
7
|
-
shimast "github.com/microsoft/typescript-go/shim/ast"
|
|
8
|
-
shimchecker "github.com/microsoft/typescript-go/shim/checker"
|
|
9
|
-
)
|
|
10
|
-
|
|
11
|
-
type CallSite struct {
|
|
12
|
-
File *shimast.SourceFile
|
|
13
|
-
FilePath string
|
|
14
|
-
Module string
|
|
15
|
-
Method string
|
|
16
|
-
Call *shimast.CallExpression
|
|
17
|
-
RootName string
|
|
18
|
-
Namespaces []string
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
func CollectCallSites(files []*shimast.SourceFile, checker *shimchecker.Checker) []CallSite {
|
|
22
|
-
sites := []CallSite{}
|
|
23
|
-
for _, file := range files {
|
|
24
|
-
if file == nil || file.IsDeclarationFile {
|
|
25
|
-
continue
|
|
26
|
-
}
|
|
27
|
-
file.ForEachChild(func(node *shimast.Node) bool {
|
|
28
|
-
visitCallSite(file, checker, node, &sites)
|
|
29
|
-
return false
|
|
30
|
-
})
|
|
31
|
-
}
|
|
32
|
-
return sites
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
func visitCallSite(file *shimast.SourceFile, checker *shimchecker.Checker, node *shimast.Node, sites *[]CallSite) {
|
|
36
|
-
if node == nil {
|
|
37
|
-
return
|
|
38
|
-
}
|
|
39
|
-
if node.Kind == shimast.KindCallExpression {
|
|
40
|
-
if site, ok := tryCallSite(file, checker, node); ok {
|
|
41
|
-
*sites = append(*sites, site)
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
node.ForEachChild(func(child *shimast.Node) bool {
|
|
45
|
-
visitCallSite(file, checker, child, sites)
|
|
46
|
-
return false
|
|
47
|
-
})
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
func tryCallSite(file *shimast.SourceFile, checker *shimchecker.Checker, node *shimast.Node) (CallSite, bool) {
|
|
51
|
-
if checker == nil {
|
|
52
|
-
return CallSite{}, false
|
|
53
|
-
}
|
|
54
|
-
if node.Kind != shimast.KindCallExpression {
|
|
55
|
-
return CallSite{}, false
|
|
56
|
-
}
|
|
57
|
-
call := node.AsCallExpression()
|
|
58
|
-
if call == nil {
|
|
59
|
-
return CallSite{}, false
|
|
60
|
-
}
|
|
61
|
-
signature := checker.GetResolvedSignature(node)
|
|
62
|
-
if signature == nil {
|
|
63
|
-
return CallSite{}, false
|
|
64
|
-
}
|
|
65
|
-
declaration := signature.Declaration()
|
|
66
|
-
if declaration == nil {
|
|
67
|
-
return CallSite{}, false
|
|
68
|
-
}
|
|
69
|
-
sourceFile := shimast.GetSourceFileOfNode(declaration)
|
|
70
|
-
if sourceFile == nil {
|
|
71
|
-
return CallSite{}, false
|
|
72
|
-
}
|
|
73
|
-
module, ok := matchTypiaModule(sourceFile.FileName())
|
|
74
|
-
if !ok {
|
|
75
|
-
return CallSite{}, false
|
|
76
|
-
}
|
|
77
|
-
method := callSiteMethodName(checker, declaration, call)
|
|
78
|
-
if method == "" {
|
|
79
|
-
return CallSite{}, false
|
|
80
|
-
}
|
|
81
|
-
root, namespaces, ok := extractRootAndNamespaces(call, method)
|
|
82
|
-
if !ok {
|
|
83
|
-
return CallSite{}, false
|
|
84
|
-
}
|
|
85
|
-
return CallSite{
|
|
86
|
-
File: file,
|
|
87
|
-
FilePath: file.FileName(),
|
|
88
|
-
Module: module,
|
|
89
|
-
Method: method,
|
|
90
|
-
Call: call,
|
|
91
|
-
RootName: root,
|
|
92
|
-
Namespaces: namespaces,
|
|
93
|
-
}, true
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
func matchTypiaModule(location string) (string, bool) {
|
|
97
|
-
location = filepath.ToSlash(location)
|
|
98
|
-
for _, suffix := range []string{".d.ts", ".ts"} {
|
|
99
|
-
for _, middle := range []string{"typia/lib/", "typia/src/", "packages/typia/src/"} {
|
|
100
|
-
index := strings.LastIndex(location, middle)
|
|
101
|
-
if index < 0 {
|
|
102
|
-
continue
|
|
103
|
-
}
|
|
104
|
-
name := location[index+len(middle):]
|
|
105
|
-
if !strings.HasSuffix(name, suffix) {
|
|
106
|
-
continue
|
|
107
|
-
}
|
|
108
|
-
name = strings.TrimSuffix(name, suffix)
|
|
109
|
-
if strings.Contains(name, "/") {
|
|
110
|
-
continue
|
|
111
|
-
}
|
|
112
|
-
return name, true
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
return "", false
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
func callSiteMethodName(checker *shimchecker.Checker, declaration *shimast.Node, call *shimast.CallExpression) string {
|
|
119
|
-
if name := declaration.Name(); name != nil {
|
|
120
|
-
if checker != nil {
|
|
121
|
-
if symbol := checker.GetSymbolAtLocation(name); symbol != nil && symbol.Name != "" {
|
|
122
|
-
return symbol.Name
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
if name.Kind == shimast.KindIdentifier {
|
|
126
|
-
if id := name.AsIdentifier(); id != nil {
|
|
127
|
-
return id.Text
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
if call.Expression != nil && call.Expression.Kind == shimast.KindPropertyAccessExpression {
|
|
132
|
-
if property := call.Expression.AsPropertyAccessExpression(); property != nil {
|
|
133
|
-
if name := property.Name(); name != nil && name.Kind == shimast.KindIdentifier {
|
|
134
|
-
if id := name.AsIdentifier(); id != nil {
|
|
135
|
-
return id.Text
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
return ""
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
func extractRootAndNamespaces(call *shimast.CallExpression, method string) (string, []string, bool) {
|
|
144
|
-
expression := call.Expression
|
|
145
|
-
segments := []string{}
|
|
146
|
-
for expression != nil && expression.Kind == shimast.KindPropertyAccessExpression {
|
|
147
|
-
property := expression.AsPropertyAccessExpression()
|
|
148
|
-
if property == nil {
|
|
149
|
-
break
|
|
150
|
-
}
|
|
151
|
-
name := property.Name()
|
|
152
|
-
if name == nil || name.Kind != shimast.KindIdentifier {
|
|
153
|
-
return "", nil, false
|
|
154
|
-
}
|
|
155
|
-
id := name.AsIdentifier()
|
|
156
|
-
if id == nil || id.Text == "" {
|
|
157
|
-
return "", nil, false
|
|
158
|
-
}
|
|
159
|
-
segments = append([]string{id.Text}, segments...)
|
|
160
|
-
expression = property.Expression
|
|
161
|
-
}
|
|
162
|
-
if expression == nil || expression.Kind != shimast.KindIdentifier {
|
|
163
|
-
return "", nil, false
|
|
164
|
-
}
|
|
165
|
-
root := expression.AsIdentifier()
|
|
166
|
-
if root == nil || root.Text == "" || len(segments) == 0 {
|
|
167
|
-
return "", nil, false
|
|
168
|
-
}
|
|
169
|
-
if segments[len(segments)-1] != method {
|
|
170
|
-
return "", nil, false
|
|
171
|
-
}
|
|
172
|
-
return root.Text, segments[:len(segments)-1], true
|
|
173
|
-
}
|
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
//go:build typia_native_internal
|
|
2
|
-
// +build typia_native_internal
|
|
3
|
-
|
|
4
|
-
package adapter
|
|
5
|
-
|
|
6
|
-
import (
|
|
7
|
-
"path/filepath"
|
|
8
|
-
"testing"
|
|
9
|
-
|
|
10
|
-
shimast "github.com/microsoft/typescript-go/shim/ast"
|
|
11
|
-
shimchecker "github.com/microsoft/typescript-go/shim/checker"
|
|
12
|
-
shimcore "github.com/microsoft/typescript-go/shim/core"
|
|
13
|
-
shimparser "github.com/microsoft/typescript-go/shim/parser"
|
|
14
|
-
)
|
|
15
|
-
|
|
16
|
-
// TestVisitPropertyChainEdges verifies call-site property-chain parsing.
|
|
17
|
-
//
|
|
18
|
-
// Call-site discovery peels a TypeScript expression like
|
|
19
|
-
// `typia.json.stringify()` into a root import name, namespace chain, and method.
|
|
20
|
-
// Malformed or mismatched chains must be rejected without producing a site.
|
|
21
|
-
//
|
|
22
|
-
// 1. Build a nested property-access call expression.
|
|
23
|
-
// 2. Extract the root name, namespace, and terminal method.
|
|
24
|
-
// 3. Reject a method mismatch, a non-property call, and an empty member name.
|
|
25
|
-
// 4. Verify nil nodes do not append call sites.
|
|
26
|
-
func TestVisitPropertyChainEdges(t *testing.T) {
|
|
27
|
-
factory := shimast.NewNodeFactory(shimast.NodeFactoryHooks{})
|
|
28
|
-
namespace := factory.NewPropertyAccessExpression(
|
|
29
|
-
factory.NewIdentifier("typia"),
|
|
30
|
-
nil,
|
|
31
|
-
factory.NewIdentifier("json"),
|
|
32
|
-
shimast.NodeFlagsNone,
|
|
33
|
-
)
|
|
34
|
-
method := factory.NewPropertyAccessExpression(
|
|
35
|
-
namespace,
|
|
36
|
-
nil,
|
|
37
|
-
factory.NewIdentifier("stringify"),
|
|
38
|
-
shimast.NodeFlagsNone,
|
|
39
|
-
)
|
|
40
|
-
call := factory.NewCallExpression(method, nil, nil, factory.NewNodeList(nil), shimast.NodeFlagsNone).AsCallExpression()
|
|
41
|
-
|
|
42
|
-
root, namespaces, ok := extractRootAndNamespaces(call, "stringify")
|
|
43
|
-
if !ok || root != "typia" || len(namespaces) != 1 || namespaces[0] != "json" {
|
|
44
|
-
t.Fatalf("unexpected property-chain extraction: root=%q namespaces=%#v ok=%v", root, namespaces, ok)
|
|
45
|
-
}
|
|
46
|
-
if _, _, ok := extractRootAndNamespaces(call, "is"); ok {
|
|
47
|
-
t.Fatal("method mismatch should reject the call chain")
|
|
48
|
-
}
|
|
49
|
-
statement := factory.NewExpressionStatement(factory.NewIdentifier("noop"))
|
|
50
|
-
if method := callSiteMethodName(nil, statement, call); method != "stringify" {
|
|
51
|
-
t.Fatalf("property-access method fallback mismatch: %q", method)
|
|
52
|
-
}
|
|
53
|
-
declaration := factory.NewFunctionDeclaration(
|
|
54
|
-
nil,
|
|
55
|
-
nil,
|
|
56
|
-
factory.NewIdentifier("declared"),
|
|
57
|
-
nil,
|
|
58
|
-
nil,
|
|
59
|
-
nil,
|
|
60
|
-
nil,
|
|
61
|
-
nil,
|
|
62
|
-
)
|
|
63
|
-
if method := callSiteMethodName(nil, declaration, call); method != "declared" {
|
|
64
|
-
t.Fatalf("declaration-name fallback mismatch: %q", method)
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
plain := factory.NewCallExpression(
|
|
68
|
-
factory.NewIdentifier("plain"),
|
|
69
|
-
nil,
|
|
70
|
-
nil,
|
|
71
|
-
factory.NewNodeList(nil),
|
|
72
|
-
shimast.NodeFlagsNone,
|
|
73
|
-
).AsCallExpression()
|
|
74
|
-
if _, _, ok := extractRootAndNamespaces(plain, "plain"); ok {
|
|
75
|
-
t.Fatal("plain calls without a property chain should be rejected")
|
|
76
|
-
}
|
|
77
|
-
literal := factory.NewCallExpression(
|
|
78
|
-
factory.NewStringLiteral("call", shimast.TokenFlagsNone),
|
|
79
|
-
nil,
|
|
80
|
-
nil,
|
|
81
|
-
factory.NewNodeList(nil),
|
|
82
|
-
shimast.NodeFlagsNone,
|
|
83
|
-
).AsCallExpression()
|
|
84
|
-
if _, _, ok := extractRootAndNamespaces(literal, "call"); ok {
|
|
85
|
-
t.Fatal("non-identifier root expressions should be rejected")
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
emptyMember := factory.NewPropertyAccessExpression(
|
|
89
|
-
factory.NewIdentifier("typia"),
|
|
90
|
-
nil,
|
|
91
|
-
factory.NewIdentifier(""),
|
|
92
|
-
shimast.NodeFlagsNone,
|
|
93
|
-
)
|
|
94
|
-
emptyCall := factory.NewCallExpression(emptyMember, nil, nil, factory.NewNodeList(nil), shimast.NodeFlagsNone).AsCallExpression()
|
|
95
|
-
if _, _, ok := extractRootAndNamespaces(emptyCall, ""); ok {
|
|
96
|
-
t.Fatal("empty property name should be rejected")
|
|
97
|
-
}
|
|
98
|
-
stringMember := factory.NewPropertyAccessExpression(
|
|
99
|
-
factory.NewIdentifier("typia"),
|
|
100
|
-
nil,
|
|
101
|
-
factory.NewStringLiteral("is", shimast.TokenFlagsNone),
|
|
102
|
-
shimast.NodeFlagsNone,
|
|
103
|
-
)
|
|
104
|
-
stringMemberCall := factory.NewCallExpression(stringMember, nil, nil, factory.NewNodeList(nil), shimast.NodeFlagsNone).AsCallExpression()
|
|
105
|
-
if _, _, ok := extractRootAndNamespaces(stringMemberCall, "is"); ok {
|
|
106
|
-
t.Fatal("non-identifier property names should be rejected")
|
|
107
|
-
}
|
|
108
|
-
sites := []CallSite{}
|
|
109
|
-
visitCallSite(nil, nil, nil, &sites)
|
|
110
|
-
if len(sites) != 0 {
|
|
111
|
-
t.Fatalf("nil node should not append call sites: %#v", sites)
|
|
112
|
-
}
|
|
113
|
-
file := shimparser.ParseSourceFile(
|
|
114
|
-
shimast.SourceFileParseOptions{FileName: filepath.ToSlash(filepath.Join(t.TempDir(), "visit.ts"))},
|
|
115
|
-
`typia.is(input);`,
|
|
116
|
-
shimcore.ScriptKindTS,
|
|
117
|
-
)
|
|
118
|
-
declFile := *file
|
|
119
|
-
declFile.IsDeclarationFile = true
|
|
120
|
-
if sites := CollectCallSites([]*shimast.SourceFile{nil, &declFile}, nil); len(sites) != 0 {
|
|
121
|
-
t.Fatalf("nil and declaration files should not produce call sites: %#v", sites)
|
|
122
|
-
}
|
|
123
|
-
if _, ok := tryCallSite(file, nil, call.AsNode()); ok {
|
|
124
|
-
t.Fatal("nil checker should reject call-site probing")
|
|
125
|
-
}
|
|
126
|
-
if _, ok := tryCallSite(file, &shimchecker.Checker{}, statement); ok {
|
|
127
|
-
t.Fatal("non-call nodes should reject call-site probing")
|
|
128
|
-
}
|
|
129
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
//go:build typia_native_internal
|
|
2
|
-
// +build typia_native_internal
|
|
3
|
-
|
|
4
|
-
package main
|
|
5
|
-
|
|
6
|
-
import (
|
|
7
|
-
"path/filepath"
|
|
8
|
-
"testing"
|
|
9
|
-
)
|
|
10
|
-
|
|
11
|
-
// TestPluginOptionsMissingConfigFallsBackToDefaults verifies unreadable config files are ignored.
|
|
12
|
-
//
|
|
13
|
-
// Plugin option detection is deliberately best-effort because the compiler can
|
|
14
|
-
// still run without typia plugin flags. A missing config path must therefore
|
|
15
|
-
// return the zero option set instead of surfacing a command error here.
|
|
16
|
-
//
|
|
17
|
-
// 1. Point option parsing at a nonexistent tsconfig file.
|
|
18
|
-
// 2. Resolve the path through a temporary working directory.
|
|
19
|
-
// 3. Read typia plugin options.
|
|
20
|
-
// 4. Assert every option remains unset.
|
|
21
|
-
func TestPluginOptionsMissingConfigFallsBackToDefaults(t *testing.T) {
|
|
22
|
-
options := readTypiaPluginOptions(t.TempDir(), filepath.Join("missing", "tsconfig.json"))
|
|
23
|
-
if options.Functional || options.Numeric || options.Finite || options.Undefined != nil {
|
|
24
|
-
t.Fatalf("missing config should return zero plugin options: %+v", options)
|
|
25
|
-
}
|
|
26
|
-
}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
package main
|
|
2
|
-
|
|
3
|
-
import (
|
|
4
|
-
"os"
|
|
5
|
-
"path/filepath"
|
|
6
|
-
"testing"
|
|
7
|
-
)
|
|
8
|
-
|
|
9
|
-
// TestPluginOptionsUndefinedFalsePreservesExplicitFalse verifies undefined option parsing.
|
|
10
|
-
//
|
|
11
|
-
// The exact optional-property workflow depends on distinguishing an omitted
|
|
12
|
-
// plugin option from `"undefined": false`. The native command reads tsconfig
|
|
13
|
-
// directly, so it must preserve explicit false instead of collapsing it into
|
|
14
|
-
// the default nil option.
|
|
15
|
-
//
|
|
16
|
-
// 1. Write a tsconfig with the typia transformer and `"undefined": false`.
|
|
17
|
-
// 2. Read plugin options through the native command helper.
|
|
18
|
-
// 3. Assert the undefined option is a non-nil false pointer.
|
|
19
|
-
func TestPluginOptionsUndefinedFalsePreservesExplicitFalse(t *testing.T) {
|
|
20
|
-
root := t.TempDir()
|
|
21
|
-
path := filepath.Join(root, "tsconfig.json")
|
|
22
|
-
if err := os.WriteFile(path, []byte(`{
|
|
23
|
-
"compilerOptions": {
|
|
24
|
-
"plugins": [
|
|
25
|
-
{ "transform": "typia/lib/transform", "undefined": false }
|
|
26
|
-
]
|
|
27
|
-
}
|
|
28
|
-
}`), 0o644); err != nil {
|
|
29
|
-
t.Fatal(err)
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
options := readTypiaPluginOptions(root, path)
|
|
33
|
-
if options.Undefined == nil || *options.Undefined {
|
|
34
|
-
t.Fatalf("undefined=false should be preserved: %#v", options.Undefined)
|
|
35
|
-
}
|
|
36
|
-
}
|