typia 13.1.0 → 13.1.19
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 +21 -0
- package/lib/executable/FileSystemIdentity.js +183 -0
- package/lib/executable/FileSystemIdentity.js.map +1 -0
- package/lib/executable/FileSystemIdentity.mjs +129 -0
- package/lib/executable/FileSystemIdentity.mjs.map +1 -0
- package/lib/executable/TypiaGenerateWizard.js +264 -104
- package/lib/executable/TypiaGenerateWizard.js.map +1 -1
- package/lib/executable/TypiaGenerateWizard.mjs +233 -93
- 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 +17 -0
- package/lib/internal/_ProtobufReader.js +117 -45
- package/lib/internal/_ProtobufReader.js.map +1 -1
- package/lib/internal/_ProtobufReader.mjs +108 -39
- 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/_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 +2 -1
- package/lib/internal/_randomFormatByte.js.map +1 -1
- package/lib/internal/_randomFormatByte.mjs +2 -1
- package/lib/internal/_randomFormatByte.mjs.map +1 -1
- package/lib/internal/_randomFormatDate.d.ts +2 -0
- package/lib/internal/_randomFormatDate.js +3 -2
- package/lib/internal/_randomFormatDate.js.map +1 -1
- package/lib/internal/_randomFormatDate.mjs +3 -2
- package/lib/internal/_randomFormatDate.mjs.map +1 -1
- package/lib/internal/_randomFormatDatetime.d.ts +2 -0
- package/lib/internal/_randomFormatDatetime.js +3 -2
- package/lib/internal/_randomFormatDatetime.js.map +1 -1
- package/lib/internal/_randomFormatDatetime.mjs +3 -2
- package/lib/internal/_randomFormatDatetime.mjs.map +1 -1
- package/lib/internal/_randomFormatDuration.d.ts +2 -1
- package/lib/internal/_randomFormatDuration.js +3 -2
- package/lib/internal/_randomFormatDuration.js.map +1 -1
- package/lib/internal/_randomFormatDuration.mjs +3 -2
- 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 +2 -1
- package/lib/internal/_randomFormatIpv4.js.map +1 -1
- package/lib/internal/_randomFormatIpv4.mjs +2 -1
- package/lib/internal/_randomFormatIpv4.mjs.map +1 -1
- package/lib/internal/_randomFormatIpv6.d.ts +2 -1
- package/lib/internal/_randomFormatIpv6.js +2 -1
- package/lib/internal/_randomFormatIpv6.js.map +1 -1
- package/lib/internal/_randomFormatIpv6.mjs +2 -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 +8 -1
- package/lib/internal/_randomFormatJsonPointer.js.map +1 -1
- package/lib/internal/_randomFormatJsonPointer.mjs +5 -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 +2 -1
- package/lib/internal/_randomFormatRegex.js.map +1 -1
- package/lib/internal/_randomFormatRegex.mjs +2 -1
- package/lib/internal/_randomFormatRegex.mjs.map +1 -1
- package/lib/internal/_randomFormatRelativeJsonPointer.d.ts +2 -1
- package/lib/internal/_randomFormatRelativeJsonPointer.js +3 -2
- package/lib/internal/_randomFormatRelativeJsonPointer.js.map +1 -1
- package/lib/internal/_randomFormatRelativeJsonPointer.mjs +3 -2
- package/lib/internal/_randomFormatRelativeJsonPointer.mjs.map +1 -1
- package/lib/internal/_randomFormatTime.d.ts +2 -1
- package/lib/internal/_randomFormatTime.js +3 -2
- package/lib/internal/_randomFormatTime.js.map +1 -1
- package/lib/internal/_randomFormatTime.mjs +3 -2
- 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 +33 -0
- package/lib/internal/_randomStringLength.js +48 -0
- package/lib/internal/_randomStringLength.js.map +1 -0
- package/lib/internal/_randomStringLength.mjs +44 -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/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 +81 -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/command_routes_and_diagnostics_coverage_test.go +3 -1
- 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_union_discrimination_transform_test.go +289 -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_stringify_special_key_transform_test.go +238 -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/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/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_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_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 +228 -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 +159 -1
- 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/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 +7 -4
- 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 +134 -7
- package/native/core/factories/internal/metadata/emplace_metadata_object.go +116 -8
- package/native/core/factories/internal/metadata/iterate_metadata.go +6 -0
- package/native/core/factories/internal/metadata/iterate_metadata_function.go +4 -11
- package/native/core/factories/internal/metadata/iterate_metadata_intersection.go +8 -6
- package/native/core/factories/internal/metadata/iterate_metadata_map.go +9 -0
- package/native/core/factories/internal/metadata/iterate_metadata_native.go +27 -2
- package/native/core/factories/internal/metadata/iterate_metadata_set.go +9 -0
- package/native/core/factories/internal/metadata/js_doc_link_text_test.go +69 -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 +393 -5
- 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/NotationJoiner.go +86 -28
- package/native/core/programmers/helpers/StringifyJoinder.go +32 -1
- package/native/core/programmers/helpers/UnionExplorer.go +203 -61
- package/native/core/programmers/helpers/joiner_branch_coverage_test.go +5 -3
- 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/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/openapi_v3_downgrader.go +641 -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 +52 -7
- package/native/core/programmers/json/JsonApplicationProgrammer.go +45 -11
- package/native/core/programmers/json/JsonSchemasProgrammer.go +12 -2
- package/native/core/programmers/llm/LlmApplicationProgrammer.go +12 -10
- 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 +40 -21
- 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 +270 -20
- package/native/core/schemas/metadata/MetadataDependency.go +388 -0
- package/native/core/schemas/metadata/MetadataObjectType.go +17 -4
- 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/package.json +16 -4
- package/src/executable/FileSystemIdentity.ts +189 -0
- package/src/executable/TypiaGenerateWizard.ts +377 -110
- package/src/functional.ts +30 -60
- package/src/internal/_ProtobufReader.ts +129 -43
- 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/_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 +4 -1
- package/src/internal/_randomFormatDate.ts +17 -12
- package/src/internal/_randomFormatDatetime.ts +15 -10
- package/src/internal/_randomFormatDuration.ts +16 -14
- 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 +3 -2
- package/src/internal/_randomFormatIpv6.ts +3 -2
- package/src/internal/_randomFormatIri.ts +3 -1
- package/src/internal/_randomFormatIriReference.ts +3 -1
- package/src/internal/_randomFormatJsonPointer.ts +8 -2
- package/src/internal/_randomFormatPassword.ts +11 -6
- package/src/internal/_randomFormatRegex.ts +4 -1
- package/src/internal/_randomFormatRelativeJsonPointer.ts +13 -6
- package/src/internal/_randomFormatTime.ts +13 -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 +26 -4
- package/src/internal/_randomStringLength.ts +72 -0
- package/src/internal/_stringLength.ts +5 -0
- package/src/internal/_validateReport.ts +5 -1
- package/src/internal/private/__notationRename.ts +24 -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/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/src/internal/private/__notationCapitalize.ts +0 -2
- package/src/internal/private/__notationUnsnake.ts +0 -24
|
@@ -1,10 +1,32 @@
|
|
|
1
1
|
import RandExp from "randexp";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import { _ILengthProps } from "./_randomStringLength";
|
|
4
|
+
|
|
5
|
+
export const _randomPattern = (regex: RegExp, props?: _ILengthProps): string => {
|
|
4
6
|
const r: RandExp = new RandExp(regex);
|
|
5
|
-
|
|
7
|
+
const min: number | undefined = props?.minLength;
|
|
8
|
+
const max: number | undefined = props?.maxLength;
|
|
9
|
+
|
|
10
|
+
// RandExp expands an unbounded quantifier to `randInt(token.min, token.min +
|
|
11
|
+
// r.max)`, so steering `r.max` biases the generated length toward the window.
|
|
12
|
+
// There is no matching floor control, so the length is still verified below.
|
|
13
|
+
if (max !== undefined) r.max = max;
|
|
14
|
+
else if (min !== undefined && min * 2 > r.max) r.max = min * 2;
|
|
15
|
+
|
|
16
|
+
const bounded: boolean = min !== undefined || max !== undefined;
|
|
17
|
+
const limit: number = bounded ? 1024 : 10;
|
|
18
|
+
for (let i: number = 0; i < limit; ++i) {
|
|
6
19
|
const str: string = r.gen();
|
|
7
|
-
if (
|
|
20
|
+
if (
|
|
21
|
+
regex.test(str) &&
|
|
22
|
+
(min === undefined || str.length >= min) &&
|
|
23
|
+
(max === undefined || str.length <= max)
|
|
24
|
+
)
|
|
25
|
+
return str;
|
|
8
26
|
}
|
|
9
|
-
|
|
27
|
+
throw new Error(
|
|
28
|
+
bounded
|
|
29
|
+
? "unable to generate a random string matching the pattern within the length range."
|
|
30
|
+
: "unable to generate a random string matching the pattern.",
|
|
31
|
+
);
|
|
10
32
|
};
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { _randomString } from "./_randomString";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Length bounds forwarded to a string format or pattern generator.
|
|
5
|
+
*
|
|
6
|
+
* `typia.random<T>()` passes this object to the `_randomFormat*` and
|
|
7
|
+
* `_randomPattern` helpers whenever the string leaf also carries a `MinLength`
|
|
8
|
+
* or `MaxLength` tag, so a constrained format or pattern is generated at a
|
|
9
|
+
* length its own validator accepts (issue #2189).
|
|
10
|
+
*/
|
|
11
|
+
export interface _ILengthProps {
|
|
12
|
+
minLength?: number;
|
|
13
|
+
maxLength?: number;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Builds the variable segment of a fixed-shape format string so that the total
|
|
18
|
+
* length `fixed + segment.length` lands inside the requested window.
|
|
19
|
+
*
|
|
20
|
+
* `fixed` is the number of characters the format always contributes around the
|
|
21
|
+
* segment, `fallback` is the segment length used when the leaf is
|
|
22
|
+
* unconstrained on that side, and `minimum` is the smallest segment the format
|
|
23
|
+
* still validates with. Throws when the window cannot be satisfied by this
|
|
24
|
+
* format's shape (e.g. `Format<"email"> & MaxLength<3>`).
|
|
25
|
+
*/
|
|
26
|
+
export const _randomSegmentLength = (
|
|
27
|
+
props: _ILengthProps | undefined,
|
|
28
|
+
fixed: number,
|
|
29
|
+
fallback: number,
|
|
30
|
+
minimum: number,
|
|
31
|
+
): string => {
|
|
32
|
+
let low: number =
|
|
33
|
+
props?.minLength === undefined ? minimum : props.minLength - fixed;
|
|
34
|
+
if (low < minimum) low = minimum;
|
|
35
|
+
// With only a lower bound, spread the segment across `fallback` extra
|
|
36
|
+
// characters so the generated length varies, mirroring `_randomString`.
|
|
37
|
+
const high: number =
|
|
38
|
+
props?.maxLength === undefined ? low + fallback : props.maxLength - fixed;
|
|
39
|
+
if (high < low || high < minimum)
|
|
40
|
+
throw new Error(
|
|
41
|
+
"unable to generate a random string satisfying both the format and the length constraints.",
|
|
42
|
+
);
|
|
43
|
+
return _randomString({ type: "string", minLength: low, maxLength: high });
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Wraps a fixed- or narrow-length format generator (uuid, ipv4, date, ...) with
|
|
48
|
+
* the requested length window.
|
|
49
|
+
*
|
|
50
|
+
* These formats cannot grow an arbitrary segment, so the generator is retried a
|
|
51
|
+
* bounded number of times and the first draw inside the window is returned. A
|
|
52
|
+
* window that excludes every length the format can produce is unsatisfiable and
|
|
53
|
+
* throws instead of silently yielding an out-of-range value.
|
|
54
|
+
*/
|
|
55
|
+
export const _randomFormatLength = (
|
|
56
|
+
props: _ILengthProps | undefined,
|
|
57
|
+
generate: () => string,
|
|
58
|
+
): string => {
|
|
59
|
+
if (props?.minLength === undefined && props?.maxLength === undefined)
|
|
60
|
+
return generate();
|
|
61
|
+
for (let i: number = 0; i < 256; ++i) {
|
|
62
|
+
const value: string = generate();
|
|
63
|
+
if (
|
|
64
|
+
(props.minLength === undefined || value.length >= props.minLength) &&
|
|
65
|
+
(props.maxLength === undefined || value.length <= props.maxLength)
|
|
66
|
+
)
|
|
67
|
+
return value;
|
|
68
|
+
}
|
|
69
|
+
throw new Error(
|
|
70
|
+
"unable to generate a random string satisfying both the format and the length constraints.",
|
|
71
|
+
);
|
|
72
|
+
};
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import { IValidation } from "@typia/interface";
|
|
2
2
|
|
|
3
3
|
export const _validateReport = (array: IValidation.IError[]) => {
|
|
4
|
+
const isAncestor = (ancestor: string, descendant: string): boolean =>
|
|
5
|
+
descendant === ancestor ||
|
|
6
|
+
descendant.startsWith(`${ancestor}.`) ||
|
|
7
|
+
descendant.startsWith(`${ancestor}[`);
|
|
4
8
|
const reportable = (path: string): boolean => {
|
|
5
9
|
if (array.length === 0) return true;
|
|
6
10
|
const last: string = array[array.length - 1]!.path;
|
|
7
|
-
return path
|
|
11
|
+
return isAncestor(path, last) === false && isAncestor(last, path) === false;
|
|
8
12
|
};
|
|
9
13
|
return (exceptable: boolean, error: IValidation.IError): false => {
|
|
10
14
|
if (exceptable && reportable(error.path)) {
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared outer walk for the `camel`/`pascal` notations.
|
|
3
|
+
*
|
|
4
|
+
* Mirrors the `CamelCase<T>` / `PascalCase<T>` typings: leading underscores are
|
|
5
|
+
* preserved verbatim, an all-underscore key stays untouched, and the presence
|
|
6
|
+
* of any remaining underscore — not the number of non-empty segments — selects
|
|
7
|
+
* the `snake` conversion. Routing on underscore presence keeps a trailing or
|
|
8
|
+
* doubled underscore (`fooBar_`) on the same path the type takes, instead of
|
|
9
|
+
* collapsing it to the underscore-free `plain` path.
|
|
10
|
+
*/
|
|
11
|
+
export const __notationRename =
|
|
12
|
+
(props: {
|
|
13
|
+
plain: (str: string) => string;
|
|
14
|
+
snake: (str: string) => string;
|
|
15
|
+
}) =>
|
|
16
|
+
(str: string): string => {
|
|
17
|
+
let prefix: string = "";
|
|
18
|
+
while (str.startsWith("_")) {
|
|
19
|
+
prefix += "_";
|
|
20
|
+
str = str.substring(1);
|
|
21
|
+
}
|
|
22
|
+
if (str.length === 0) return prefix;
|
|
23
|
+
return `${prefix}${str.includes("_") ? props.snake(str) : props.plain(str)}`;
|
|
24
|
+
};
|
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"}
|
|
@@ -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
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
export const __notationUnsnake =
|
|
2
|
-
(props: {
|
|
3
|
-
plain: (str: string) => string;
|
|
4
|
-
snake: (str: string, index: number) => string;
|
|
5
|
-
}) =>
|
|
6
|
-
(str: string): string => {
|
|
7
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
8
|
-
let prefix: string = "";
|
|
9
|
-
for (let i: number = 0; i < str.length; i++) {
|
|
10
|
-
if (str[i] === "_") prefix += "_";
|
|
11
|
-
else break;
|
|
12
|
-
}
|
|
13
|
-
if (prefix.length !== 0) str = str.substring(prefix.length);
|
|
14
|
-
|
|
15
|
-
const out = (s: string) => `${prefix}${s}`;
|
|
16
|
-
if (str.length === 0) return out("");
|
|
17
|
-
|
|
18
|
-
const items: string[] = 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
|
-
};
|