typia 13.1.1 → 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 +60 -6
- 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/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
|
@@ -9,12 +9,13 @@ class _ProtobufReader {
|
|
|
9
9
|
this.buf = buf;
|
|
10
10
|
this.ptr = 0;
|
|
11
11
|
this.view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
|
|
12
|
+
this.end = buf.length;
|
|
12
13
|
}
|
|
13
14
|
index() {
|
|
14
15
|
return this.ptr;
|
|
15
16
|
}
|
|
16
17
|
size() {
|
|
17
|
-
return this.
|
|
18
|
+
return this.end;
|
|
18
19
|
}
|
|
19
20
|
uint32() {
|
|
20
21
|
return this.varint32() >>> 0;
|
|
@@ -30,7 +31,7 @@ class _ProtobufReader {
|
|
|
30
31
|
return this.varint64();
|
|
31
32
|
}
|
|
32
33
|
int64() {
|
|
33
|
-
return this.varint64();
|
|
34
|
+
return BigInt.asIntN(64, this.varint64());
|
|
34
35
|
}
|
|
35
36
|
sint64() {
|
|
36
37
|
const value = this.varint64();
|
|
@@ -40,55 +41,85 @@ class _ProtobufReader {
|
|
|
40
41
|
return this.varint32() !== 0;
|
|
41
42
|
}
|
|
42
43
|
float() {
|
|
43
|
-
|
|
44
|
-
this.ptr += 4;
|
|
45
|
-
return value;
|
|
44
|
+
return this.view.getFloat32(this.take(4), true);
|
|
46
45
|
}
|
|
47
46
|
double() {
|
|
48
|
-
|
|
49
|
-
this.ptr += 8;
|
|
50
|
-
return value;
|
|
47
|
+
return this.view.getFloat64(this.take(8), true);
|
|
51
48
|
}
|
|
52
49
|
bytes() {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
50
|
+
return this.atomic(() => {
|
|
51
|
+
const length = this.uint32();
|
|
52
|
+
const from = this.take(length);
|
|
53
|
+
return this.buf.subarray(from, from + length);
|
|
54
|
+
});
|
|
57
55
|
}
|
|
58
56
|
string() {
|
|
59
|
-
|
|
57
|
+
const bytes = this.bytes();
|
|
58
|
+
const decoder = utf8.get();
|
|
59
|
+
try {
|
|
60
|
+
return decoder.decode(bytes);
|
|
61
|
+
}
|
|
62
|
+
catch (_a) {
|
|
63
|
+
throw error("invalid UTF-8 string.");
|
|
64
|
+
}
|
|
60
65
|
}
|
|
66
|
+
fork() {
|
|
67
|
+
return this.atomic(() => {
|
|
68
|
+
const previous = this.end;
|
|
69
|
+
const length = this.uint32();
|
|
70
|
+
this.validate(length);
|
|
71
|
+
this.end = this.ptr + length;
|
|
72
|
+
return previous;
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
close(previous) {
|
|
76
|
+
if (this.ptr !== this.end)
|
|
77
|
+
throw error("buffer overflow.");
|
|
78
|
+
this.end = previous;
|
|
79
|
+
}
|
|
80
|
+
/** Advance by exactly `length` bytes, for every length including zero. */
|
|
61
81
|
skip(length) {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
82
|
+
this.take(length);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Advance by exactly one varint, which carries no length prefix.
|
|
86
|
+
*
|
|
87
|
+
* A varint terminates at its first byte without the continuation bit, and may
|
|
88
|
+
* occupy no more than {@link VARINT_MAX_BYTES}. Reading past that limit would
|
|
89
|
+
* accept a varint that `varint32` and `varint64` could not, making the limit
|
|
90
|
+
* depend on which method happens to consume the value.
|
|
91
|
+
*/
|
|
92
|
+
skipVarint() {
|
|
93
|
+
this.atomic(() => {
|
|
94
|
+
for (let i = 0; i < VARINT_MAX_BYTES; ++i)
|
|
95
|
+
if ((this.u8() & 0x80) === 0)
|
|
96
|
+
return;
|
|
97
|
+
throw error(`varint exceeds ${VARINT_MAX_BYTES} bytes.`);
|
|
98
|
+
});
|
|
70
99
|
}
|
|
71
100
|
skipType(wireType) {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
this.
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
101
|
+
this.atomic(() => {
|
|
102
|
+
switch (wireType) {
|
|
103
|
+
case interface_1.ProtobufWire.VARIANT:
|
|
104
|
+
this.skipVarint();
|
|
105
|
+
break;
|
|
106
|
+
case interface_1.ProtobufWire.I64:
|
|
107
|
+
this.skip(8);
|
|
108
|
+
break;
|
|
109
|
+
case interface_1.ProtobufWire.LEN:
|
|
110
|
+
this.skip(this.uint32());
|
|
111
|
+
break;
|
|
112
|
+
case interface_1.ProtobufWire.START_GROUP:
|
|
113
|
+
while ((wireType = this.uint32() & 0x07) !== interface_1.ProtobufWire.END_GROUP)
|
|
114
|
+
this.skipType(wireType);
|
|
115
|
+
break;
|
|
116
|
+
case interface_1.ProtobufWire.I32:
|
|
117
|
+
this.skip(4);
|
|
118
|
+
break;
|
|
119
|
+
default:
|
|
120
|
+
throw error(`invalid wire type ${wireType} at offset ${this.ptr}.`);
|
|
121
|
+
}
|
|
122
|
+
});
|
|
92
123
|
}
|
|
93
124
|
varint32() {
|
|
94
125
|
let loaded;
|
|
@@ -108,7 +139,8 @@ class _ProtobufReader {
|
|
|
108
139
|
value |= ((loaded = this.u8()) & 0xf) << 28;
|
|
109
140
|
if (loaded < 0x80)
|
|
110
141
|
return value;
|
|
111
|
-
// increment position until there is no continuation bit or until
|
|
142
|
+
// increment position until there is no continuation bit, or until this read
|
|
143
|
+
// reaches VARINT_MAX_BYTES and the value can hold no further bits
|
|
112
144
|
if (this.u8() < 0x80)
|
|
113
145
|
return value;
|
|
114
146
|
if (this.u8() < 0x80)
|
|
@@ -152,15 +184,55 @@ class _ProtobufReader {
|
|
|
152
184
|
if (loaded < BigInt(0x80))
|
|
153
185
|
return value;
|
|
154
186
|
value |= (this.u8n() & BigInt(0x01)) << BigInt(63);
|
|
155
|
-
return BigInt.
|
|
187
|
+
return BigInt.asUintN(64, value);
|
|
156
188
|
}
|
|
157
189
|
u8() {
|
|
158
|
-
return this.view.getUint8(this.
|
|
190
|
+
return this.view.getUint8(this.take(1));
|
|
159
191
|
}
|
|
160
192
|
u8n() {
|
|
161
193
|
return BigInt(this.u8());
|
|
162
194
|
}
|
|
195
|
+
take(length) {
|
|
196
|
+
this.validate(length);
|
|
197
|
+
const from = this.ptr;
|
|
198
|
+
this.ptr += length;
|
|
199
|
+
return from;
|
|
200
|
+
}
|
|
201
|
+
atomic(closure) {
|
|
202
|
+
const index = this.ptr;
|
|
203
|
+
const end = this.end;
|
|
204
|
+
try {
|
|
205
|
+
return closure();
|
|
206
|
+
}
|
|
207
|
+
catch (thrown) {
|
|
208
|
+
this.ptr = index;
|
|
209
|
+
this.end = end;
|
|
210
|
+
throw thrown;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
validate(length) {
|
|
214
|
+
if (Number.isSafeInteger(length) === false ||
|
|
215
|
+
length < 0 ||
|
|
216
|
+
length > this.size() - this.ptr)
|
|
217
|
+
throw error("buffer overflow.");
|
|
218
|
+
}
|
|
163
219
|
}
|
|
164
220
|
exports._ProtobufReader = _ProtobufReader;
|
|
165
|
-
|
|
221
|
+
/**
|
|
222
|
+
* Builds every fault this reader raises, so each one names typia as its source.
|
|
223
|
+
*
|
|
224
|
+
* Every decode error a caller can see must be attributable, and the prefix is
|
|
225
|
+
* what attributes it. Composing it here rather than at each throw keeps a new
|
|
226
|
+
* fault from silently shipping without it.
|
|
227
|
+
*/
|
|
228
|
+
const error = (message) => new Error(`Error on typia.protobuf.decode(): ${message}`);
|
|
229
|
+
/**
|
|
230
|
+
* The most bytes a varint may occupy: a 64-bit value in seven-bit groups.
|
|
231
|
+
*
|
|
232
|
+
* `varint32` and `varint64` hold this same limit structurally, by reading no
|
|
233
|
+
* further than their tenth byte. This constant is what a loop-driven consumer
|
|
234
|
+
* holds it by.
|
|
235
|
+
*/
|
|
236
|
+
const VARINT_MAX_BYTES = 10;
|
|
237
|
+
const utf8 = new utils_1.Singleton(() => new TextDecoder("utf-8", { fatal: true, ignoreBOM: true }));
|
|
166
238
|
//# sourceMappingURL=_ProtobufReader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_ProtobufReader.js","sourceRoot":"","sources":["../../src/internal/_ProtobufReader.ts"],"names":[],"mappings":";;;AAAA,gDAAgD;AAChD,wCAAyC;AAEzC,kHAAkH;AAClH;
|
|
1
|
+
{"version":3,"file":"_ProtobufReader.js","sourceRoot":"","sources":["../../src/internal/_ProtobufReader.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,12 +6,13 @@ var _ProtobufReader = class {
|
|
|
6
6
|
this.buf = buf;
|
|
7
7
|
this.ptr = 0;
|
|
8
8
|
this.view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);
|
|
9
|
+
this.end = buf.length;
|
|
9
10
|
}
|
|
10
11
|
index() {
|
|
11
12
|
return this.ptr;
|
|
12
13
|
}
|
|
13
14
|
size() {
|
|
14
|
-
return this.
|
|
15
|
+
return this.end;
|
|
15
16
|
}
|
|
16
17
|
uint32() {
|
|
17
18
|
return this.varint32() >>> 0;
|
|
@@ -27,7 +28,7 @@ var _ProtobufReader = class {
|
|
|
27
28
|
return this.varint64();
|
|
28
29
|
}
|
|
29
30
|
int64() {
|
|
30
|
-
return this.varint64();
|
|
31
|
+
return BigInt.asIntN(64, this.varint64());
|
|
31
32
|
}
|
|
32
33
|
sint64() {
|
|
33
34
|
const value = this.varint64();
|
|
@@ -37,50 +38,79 @@ var _ProtobufReader = class {
|
|
|
37
38
|
return this.varint32() !== 0;
|
|
38
39
|
}
|
|
39
40
|
float() {
|
|
40
|
-
|
|
41
|
-
this.ptr += 4;
|
|
42
|
-
return value;
|
|
41
|
+
return this.view.getFloat32(this.take(4), true);
|
|
43
42
|
}
|
|
44
43
|
double() {
|
|
45
|
-
|
|
46
|
-
this.ptr += 8;
|
|
47
|
-
return value;
|
|
44
|
+
return this.view.getFloat64(this.take(8), true);
|
|
48
45
|
}
|
|
49
46
|
bytes() {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
47
|
+
return this.atomic(() => {
|
|
48
|
+
const length = this.uint32();
|
|
49
|
+
const from = this.take(length);
|
|
50
|
+
return this.buf.subarray(from, from + length);
|
|
51
|
+
});
|
|
54
52
|
}
|
|
55
53
|
string() {
|
|
56
|
-
|
|
54
|
+
const bytes = this.bytes();
|
|
55
|
+
const decoder = utf8.get();
|
|
56
|
+
try {
|
|
57
|
+
return decoder.decode(bytes);
|
|
58
|
+
} catch {
|
|
59
|
+
throw error("invalid UTF-8 string.");
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
fork() {
|
|
63
|
+
return this.atomic(() => {
|
|
64
|
+
const previous = this.end;
|
|
65
|
+
const length = this.uint32();
|
|
66
|
+
this.validate(length);
|
|
67
|
+
this.end = this.ptr + length;
|
|
68
|
+
return previous;
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
close(previous) {
|
|
72
|
+
if (this.ptr !== this.end) throw error("buffer overflow.");
|
|
73
|
+
this.end = previous;
|
|
57
74
|
}
|
|
75
|
+
/** Advance by exactly `length` bytes, for every length including zero. */
|
|
58
76
|
skip(length) {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
77
|
+
this.take(length);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Advance by exactly one varint, which carries no length prefix.
|
|
81
|
+
*
|
|
82
|
+
* A varint terminates at its first byte without the continuation bit, and may
|
|
83
|
+
* occupy no more than {@link VARINT_MAX_BYTES}. Reading past that limit would
|
|
84
|
+
* accept a varint that `varint32` and `varint64` could not, making the limit
|
|
85
|
+
* depend on which method happens to consume the value.
|
|
86
|
+
*/
|
|
87
|
+
skipVarint() {
|
|
88
|
+
this.atomic(() => {
|
|
89
|
+
for (let i = 0; i < VARINT_MAX_BYTES; ++i) if ((this.u8() & 128) === 0) return;
|
|
90
|
+
throw error(`varint exceeds ${VARINT_MAX_BYTES} bytes.`);
|
|
91
|
+
});
|
|
64
92
|
}
|
|
65
93
|
skipType(wireType) {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
94
|
+
this.atomic(() => {
|
|
95
|
+
switch (wireType) {
|
|
96
|
+
case ProtobufWire.VARIANT:
|
|
97
|
+
this.skipVarint();
|
|
98
|
+
break;
|
|
99
|
+
case ProtobufWire.I64:
|
|
100
|
+
this.skip(8);
|
|
101
|
+
break;
|
|
102
|
+
case ProtobufWire.LEN:
|
|
103
|
+
this.skip(this.uint32());
|
|
104
|
+
break;
|
|
105
|
+
case ProtobufWire.START_GROUP:
|
|
106
|
+
while ((wireType = this.uint32() & 7) !== ProtobufWire.END_GROUP) this.skipType(wireType);
|
|
107
|
+
break;
|
|
108
|
+
case ProtobufWire.I32:
|
|
109
|
+
this.skip(4);
|
|
110
|
+
break;
|
|
111
|
+
default: throw error(`invalid wire type ${wireType} at offset ${this.ptr}.`);
|
|
112
|
+
}
|
|
113
|
+
});
|
|
84
114
|
}
|
|
85
115
|
varint32() {
|
|
86
116
|
let loaded;
|
|
@@ -124,16 +154,55 @@ var _ProtobufReader = class {
|
|
|
124
154
|
value |= ((loaded = this.u8n()) & BigInt(127)) << BigInt(56);
|
|
125
155
|
if (loaded < BigInt(128)) return value;
|
|
126
156
|
value |= (this.u8n() & BigInt(1)) << BigInt(63);
|
|
127
|
-
return BigInt.
|
|
157
|
+
return BigInt.asUintN(64, value);
|
|
128
158
|
}
|
|
129
159
|
u8() {
|
|
130
|
-
return this.view.getUint8(this.
|
|
160
|
+
return this.view.getUint8(this.take(1));
|
|
131
161
|
}
|
|
132
162
|
u8n() {
|
|
133
163
|
return BigInt(this.u8());
|
|
134
164
|
}
|
|
165
|
+
take(length) {
|
|
166
|
+
this.validate(length);
|
|
167
|
+
const from = this.ptr;
|
|
168
|
+
this.ptr += length;
|
|
169
|
+
return from;
|
|
170
|
+
}
|
|
171
|
+
atomic(closure) {
|
|
172
|
+
const index = this.ptr;
|
|
173
|
+
const end = this.end;
|
|
174
|
+
try {
|
|
175
|
+
return closure();
|
|
176
|
+
} catch (thrown) {
|
|
177
|
+
this.ptr = index;
|
|
178
|
+
this.end = end;
|
|
179
|
+
throw thrown;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
validate(length) {
|
|
183
|
+
if (Number.isSafeInteger(length) === false || length < 0 || length > this.size() - this.ptr) throw error("buffer overflow.");
|
|
184
|
+
}
|
|
135
185
|
};
|
|
136
|
-
|
|
186
|
+
/**
|
|
187
|
+
* Builds every fault this reader raises, so each one names typia as its source.
|
|
188
|
+
*
|
|
189
|
+
* Every decode error a caller can see must be attributable, and the prefix is
|
|
190
|
+
* what attributes it. Composing it here rather than at each throw keeps a new
|
|
191
|
+
* fault from silently shipping without it.
|
|
192
|
+
*/
|
|
193
|
+
const error = (message) => /* @__PURE__ */ new Error(`Error on typia.protobuf.decode(): ${message}`);
|
|
194
|
+
/**
|
|
195
|
+
* The most bytes a varint may occupy: a 64-bit value in seven-bit groups.
|
|
196
|
+
*
|
|
197
|
+
* `varint32` and `varint64` hold this same limit structurally, by reading no
|
|
198
|
+
* further than their tenth byte. This constant is what a loop-driven consumer
|
|
199
|
+
* holds it by.
|
|
200
|
+
*/
|
|
201
|
+
const VARINT_MAX_BYTES = 10;
|
|
202
|
+
const utf8 = new Singleton(() => new TextDecoder("utf-8", {
|
|
203
|
+
fatal: true,
|
|
204
|
+
ignoreBOM: true
|
|
205
|
+
}));
|
|
137
206
|
//#endregion
|
|
138
207
|
export { _ProtobufReader };
|
|
139
208
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_ProtobufReader.mjs","names":[],"sources":["../../src/internal/_ProtobufReader.ts"],"sourcesContent":["import { ProtobufWire } from \"@typia/interface\";\nimport { Singleton } from \"@typia/utils\";\n\n/// @reference https://github.com/piotr-oles/as-proto/blob/main/packages/as-proto/assembly/internal/FixedReader.ts\nexport class _ProtobufReader {\n /** Read buffer */\n private buf: Uint8Array;\n\n /** Read buffer pointer. */\n private ptr: number;\n\n /** DataView for buffer. */\n private view: DataView;\n\n public constructor(buf: Uint8Array) {\n this.buf = buf;\n this.ptr = 0;\n this.view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n }\n\n public index(): number {\n return this.ptr;\n }\n\n public size(): number {\n return this.buf.length;\n }\n\n public uint32(): number {\n return this.varint32() >>> 0;\n }\n\n public int32(): number {\n return this.varint32();\n }\n\n public sint32(): number {\n const value: number = this.varint32();\n return (value >>> 1) ^ -(value & 1);\n }\n\n public uint64(): bigint {\n return this.varint64();\n }\n\n public int64(): bigint {\n return this.varint64();\n }\n\n public sint64(): bigint {\n const value = this.varint64();\n return (value >> BigInt(0x01)) ^ -(value & BigInt(0x01));\n }\n\n public bool(): boolean {\n return this.varint32() !== 0;\n }\n\n public float(): number {\n const value: number = this.view.getFloat32(this.ptr, true);\n this.ptr += 4;\n return value;\n }\n\n public double(): number {\n const value: number = this.view.getFloat64(this.ptr, true);\n this.ptr += 8;\n return value;\n }\n\n public bytes(): Uint8Array {\n const length: number = this.uint32();\n const from: number = this.ptr;\n this.ptr += length;\n return this.buf.subarray(from, from + length);\n }\n\n public string(): string {\n return utf8.get().decode(this.bytes());\n }\n\n public skip(length: number): void {\n if (length === 0) while (this.u8() & 0x80);\n else {\n if (this.index() + length > this.size())\n throw new Error(\"Error on typia.protobuf.decode(): buffer overflow.\");\n this.ptr += length;\n }\n }\n\n public skipType(wireType: ProtobufWire): void {\n switch (wireType) {\n case ProtobufWire.VARIANT:\n this.skip(0);\n break;\n case ProtobufWire.I64:\n this.skip(8);\n break;\n case ProtobufWire.LEN:\n this.skip(this.uint32());\n break;\n case ProtobufWire.START_GROUP:\n while ((wireType = this.uint32() & 0x07) !== ProtobufWire.END_GROUP)\n this.skipType(wireType);\n break;\n case ProtobufWire.I32:\n this.skip(4);\n break;\n default:\n throw new Error(`Invalid wire type ${wireType} at offset ${this.ptr}.`);\n }\n }\n\n private varint32(): number {\n let loaded: number;\n let value: number;\n\n value = (loaded = this.u8()) & 0x7f;\n if (loaded < 0x80) return value;\n\n value |= ((loaded = this.u8()) & 0x7f) << 7;\n if (loaded < 0x80) return value;\n\n value |= ((loaded = this.u8()) & 0x7f) << 14;\n if (loaded < 0x80) return value;\n\n value |= ((loaded = this.u8()) & 0x7f) << 21;\n if (loaded < 0x80) return value;\n\n value |= ((loaded = this.u8()) & 0xf) << 28;\n if (loaded < 0x80) return value;\n\n // increment position until there is no continuation bit or until we read 10 bytes\n if (this.u8() < 0x80) return value;\n if (this.u8() < 0x80) return value;\n if (this.u8() < 0x80) return value;\n if (this.u8() < 0x80) return value;\n if (this.u8() < 0x80) return value;\n\n return value;\n }\n\n private varint64(): bigint {\n let loaded: bigint;\n let value: bigint;\n\n value = (loaded = this.u8n()) & BigInt(0x7f);\n if (loaded < BigInt(0x80)) return value;\n\n value |= ((loaded = this.u8n()) & BigInt(0x7f)) << BigInt(7);\n if (loaded < BigInt(0x80)) return value;\n\n value |= ((loaded = this.u8n()) & BigInt(0x7f)) << BigInt(14);\n if (loaded < BigInt(0x80)) return value;\n\n value |= ((loaded = this.u8n()) & BigInt(0x7f)) << BigInt(21);\n if (loaded < BigInt(0x80)) return value;\n\n value |= ((loaded = this.u8n()) & BigInt(0x7f)) << BigInt(28);\n if (loaded < BigInt(0x80)) return value;\n\n value |= ((loaded = this.u8n()) & BigInt(0x7f)) << BigInt(35);\n if (loaded < BigInt(0x80)) return value;\n\n value |= ((loaded = this.u8n()) & BigInt(0x7f)) << BigInt(42);\n if (loaded < BigInt(0x80)) return value;\n\n value |= ((loaded = this.u8n()) & BigInt(0x7f)) << BigInt(49);\n if (loaded < BigInt(0x80)) return value;\n\n value |= ((loaded = this.u8n()) & BigInt(0x7f)) << BigInt(56);\n if (loaded < BigInt(0x80)) return value;\n\n value |= (this.u8n() & BigInt(0x01)) << BigInt(63);\n return BigInt.asIntN(64, value);\n }\n\n private u8(): number {\n return this.view.getUint8(this.ptr++);\n }\n\n private u8n(): bigint {\n return BigInt(this.u8());\n }\n}\n\nconst utf8 = new Singleton(() => new TextDecoder(\"utf-8\"));\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"_ProtobufReader.mjs","names":[],"sources":["../../src/internal/_ProtobufReader.ts"],"sourcesContent":["import { ProtobufWire } from \"@typia/interface\";\nimport { Singleton } from \"@typia/utils\";\n\n/// @reference https://github.com/piotr-oles/as-proto/blob/main/packages/as-proto/assembly/internal/FixedReader.ts\nexport class _ProtobufReader {\n /** Read buffer */\n private buf: Uint8Array;\n\n /** Read buffer pointer. */\n private ptr: number;\n\n /** DataView for buffer. */\n private view: DataView;\n\n /** Current length-delimited boundary. */\n private end: number;\n\n public constructor(buf: Uint8Array) {\n this.buf = buf;\n this.ptr = 0;\n this.view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n this.end = buf.length;\n }\n\n public index(): number {\n return this.ptr;\n }\n\n public size(): number {\n return this.end;\n }\n\n public uint32(): number {\n return this.varint32() >>> 0;\n }\n\n public int32(): number {\n return this.varint32();\n }\n\n public sint32(): number {\n const value: number = this.varint32();\n return (value >>> 1) ^ -(value & 1);\n }\n\n public uint64(): bigint {\n return this.varint64();\n }\n\n public int64(): bigint {\n return BigInt.asIntN(64, this.varint64());\n }\n\n public sint64(): bigint {\n const value = this.varint64();\n return (value >> BigInt(0x01)) ^ -(value & BigInt(0x01));\n }\n\n public bool(): boolean {\n return this.varint32() !== 0;\n }\n\n public float(): number {\n return this.view.getFloat32(this.take(4), true);\n }\n\n public double(): number {\n return this.view.getFloat64(this.take(8), true);\n }\n\n public bytes(): Uint8Array {\n return this.atomic(() => {\n const length: number = this.uint32();\n const from: number = this.take(length);\n return this.buf.subarray(from, from + length);\n });\n }\n\n public string(): string {\n const bytes: Uint8Array = this.bytes();\n const decoder: TextDecoder = utf8.get();\n try {\n return decoder.decode(bytes);\n } catch {\n throw error(\"invalid UTF-8 string.\");\n }\n }\n\n public fork(): number {\n return this.atomic(() => {\n const previous: number = this.end;\n const length: number = this.uint32();\n this.validate(length);\n this.end = this.ptr + length;\n return previous;\n });\n }\n\n public close(previous: number): void {\n if (this.ptr !== this.end) throw error(\"buffer overflow.\");\n this.end = previous;\n }\n\n /** Advance by exactly `length` bytes, for every length including zero. */\n public skip(length: number): void {\n this.take(length);\n }\n\n /**\n * Advance by exactly one varint, which carries no length prefix.\n *\n * A varint terminates at its first byte without the continuation bit, and may\n * occupy no more than {@link VARINT_MAX_BYTES}. Reading past that limit would\n * accept a varint that `varint32` and `varint64` could not, making the limit\n * depend on which method happens to consume the value.\n */\n public skipVarint(): void {\n this.atomic(() => {\n for (let i: number = 0; i < VARINT_MAX_BYTES; ++i)\n if ((this.u8() & 0x80) === 0) return;\n throw error(`varint exceeds ${VARINT_MAX_BYTES} bytes.`);\n });\n }\n\n public skipType(wireType: ProtobufWire): void {\n this.atomic(() => {\n switch (wireType) {\n case ProtobufWire.VARIANT:\n this.skipVarint();\n break;\n case ProtobufWire.I64:\n this.skip(8);\n break;\n case ProtobufWire.LEN:\n this.skip(this.uint32());\n break;\n case ProtobufWire.START_GROUP:\n while ((wireType = this.uint32() & 0x07) !== ProtobufWire.END_GROUP)\n this.skipType(wireType);\n break;\n case ProtobufWire.I32:\n this.skip(4);\n break;\n default:\n throw error(`invalid wire type ${wireType} at offset ${this.ptr}.`);\n }\n });\n }\n\n private varint32(): number {\n let loaded: number;\n let value: number;\n\n value = (loaded = this.u8()) & 0x7f;\n if (loaded < 0x80) return value;\n\n value |= ((loaded = this.u8()) & 0x7f) << 7;\n if (loaded < 0x80) return value;\n\n value |= ((loaded = this.u8()) & 0x7f) << 14;\n if (loaded < 0x80) return value;\n\n value |= ((loaded = this.u8()) & 0x7f) << 21;\n if (loaded < 0x80) return value;\n\n value |= ((loaded = this.u8()) & 0xf) << 28;\n if (loaded < 0x80) return value;\n\n // increment position until there is no continuation bit, or until this read\n // reaches VARINT_MAX_BYTES and the value can hold no further bits\n if (this.u8() < 0x80) return value;\n if (this.u8() < 0x80) return value;\n if (this.u8() < 0x80) return value;\n if (this.u8() < 0x80) return value;\n if (this.u8() < 0x80) return value;\n\n return value;\n }\n\n private varint64(): bigint {\n let loaded: bigint;\n let value: bigint;\n\n value = (loaded = this.u8n()) & BigInt(0x7f);\n if (loaded < BigInt(0x80)) return value;\n\n value |= ((loaded = this.u8n()) & BigInt(0x7f)) << BigInt(7);\n if (loaded < BigInt(0x80)) return value;\n\n value |= ((loaded = this.u8n()) & BigInt(0x7f)) << BigInt(14);\n if (loaded < BigInt(0x80)) return value;\n\n value |= ((loaded = this.u8n()) & BigInt(0x7f)) << BigInt(21);\n if (loaded < BigInt(0x80)) return value;\n\n value |= ((loaded = this.u8n()) & BigInt(0x7f)) << BigInt(28);\n if (loaded < BigInt(0x80)) return value;\n\n value |= ((loaded = this.u8n()) & BigInt(0x7f)) << BigInt(35);\n if (loaded < BigInt(0x80)) return value;\n\n value |= ((loaded = this.u8n()) & BigInt(0x7f)) << BigInt(42);\n if (loaded < BigInt(0x80)) return value;\n\n value |= ((loaded = this.u8n()) & BigInt(0x7f)) << BigInt(49);\n if (loaded < BigInt(0x80)) return value;\n\n value |= ((loaded = this.u8n()) & BigInt(0x7f)) << BigInt(56);\n if (loaded < BigInt(0x80)) return value;\n\n value |= (this.u8n() & BigInt(0x01)) << BigInt(63);\n return BigInt.asUintN(64, value);\n }\n\n private u8(): number {\n return this.view.getUint8(this.take(1));\n }\n\n private u8n(): bigint {\n return BigInt(this.u8());\n }\n\n private take(length: number): number {\n this.validate(length);\n const from: number = this.ptr;\n this.ptr += length;\n return from;\n }\n\n private atomic<T>(closure: () => T): T {\n const index: number = this.ptr;\n const end: number = this.end;\n try {\n return closure();\n } catch (thrown) {\n this.ptr = index;\n this.end = end;\n throw thrown;\n }\n }\n\n private validate(length: number): void {\n if (\n Number.isSafeInteger(length) === false ||\n length < 0 ||\n length > this.size() - this.ptr\n )\n throw error(\"buffer overflow.\");\n }\n}\n\n/**\n * Builds every fault this reader raises, so each one names typia as its source.\n *\n * Every decode error a caller can see must be attributable, and the prefix is\n * what attributes it. Composing it here rather than at each throw keeps a new\n * fault from silently shipping without it.\n */\nconst error = (message: string): Error =>\n new Error(`Error on typia.protobuf.decode(): ${message}`);\n\n/**\n * The most bytes a varint may occupy: a 64-bit value in seven-bit groups.\n *\n * `varint32` and `varint64` hold this same limit structurally, by reading no\n * further than their tenth byte. This constant is what a loop-driven consumer\n * holds it by.\n */\nconst VARINT_MAX_BYTES = 10;\n\nconst utf8 = new Singleton(\n () => new TextDecoder(\"utf-8\", { fatal: true, ignoreBOM: true }),\n);\n"],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ const _createStandardSchema = (fn) => Object.assign(fn, {
|
|
|
15
15
|
else {
|
|
16
16
|
return {
|
|
17
17
|
issues: result.errors.map((error) => ({
|
|
18
|
-
message: `expected ${error.expected}, got ${error.value}`,
|
|
18
|
+
message: `expected ${error.expected}, got ${formatValue(error.value)}`,
|
|
19
19
|
path: typiaPathToStandardSchemaPath(error.path),
|
|
20
20
|
})),
|
|
21
21
|
};
|
|
@@ -24,6 +24,23 @@ const _createStandardSchema = (fn) => Object.assign(fn, {
|
|
|
24
24
|
},
|
|
25
25
|
});
|
|
26
26
|
exports._createStandardSchema = _createStandardSchema;
|
|
27
|
+
const formatValue = (value) => {
|
|
28
|
+
if (typeof value === "object") {
|
|
29
|
+
if (value === null)
|
|
30
|
+
return "null";
|
|
31
|
+
try {
|
|
32
|
+
if (Array.isArray(value))
|
|
33
|
+
return "[object Array]";
|
|
34
|
+
}
|
|
35
|
+
catch (_a) {
|
|
36
|
+
// A revoked proxy can throw even for Array.isArray().
|
|
37
|
+
}
|
|
38
|
+
return "[object Object]";
|
|
39
|
+
}
|
|
40
|
+
if (typeof value === "function")
|
|
41
|
+
return "[function]";
|
|
42
|
+
return String(value);
|
|
43
|
+
};
|
|
27
44
|
var PathParserState;
|
|
28
45
|
(function (PathParserState) {
|
|
29
46
|
// Start of a new segment
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_createStandardSchema.js","sourceRoot":"","sources":["../../src/internal/_createStandardSchema.ts"],"names":[],"mappings":";;;AAGO,MAAM,qBAAqB,GAAG,CACnC,EAAsC,EACyB,EAAE,CACjE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE;IAChB,WAAW,EAAE;QACX,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,OAAO;QACf,QAAQ,EAAE,CAAC,KAAc,EAA8B,EAAE;YACvD,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;YACzB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,OAAO;oBACL,KAAK,EAAE,MAAM,CAAC,IAAI;iBACyB,CAAC;YAChD,CAAC;iBAAM,CAAC;gBACN,OAAO;oBACL,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;wBACpC,OAAO,EAAE,YAAY,KAAK,CAAC,QAAQ,SAAS,KAAK,CAAC,KAAK,EAAE;
|
|
1
|
+
{"version":3,"file":"_createStandardSchema.js","sourceRoot":"","sources":["../../src/internal/_createStandardSchema.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,11 +6,22 @@ const _createStandardSchema = (fn) => Object.assign(fn, { "~standard": {
|
|
|
6
6
|
const result = fn(input);
|
|
7
7
|
if (result.success) return { value: result.data };
|
|
8
8
|
else return { issues: result.errors.map((error) => ({
|
|
9
|
-
message: `expected ${error.expected}, got ${error.value}`,
|
|
9
|
+
message: `expected ${error.expected}, got ${formatValue(error.value)}`,
|
|
10
10
|
path: typiaPathToStandardSchemaPath(error.path)
|
|
11
11
|
})) };
|
|
12
12
|
}
|
|
13
13
|
} });
|
|
14
|
+
const formatValue = (value) => {
|
|
15
|
+
if (typeof value === "object") {
|
|
16
|
+
if (value === null) return "null";
|
|
17
|
+
try {
|
|
18
|
+
if (Array.isArray(value)) return "[object Array]";
|
|
19
|
+
} catch {}
|
|
20
|
+
return "[object Object]";
|
|
21
|
+
}
|
|
22
|
+
if (typeof value === "function") return "[function]";
|
|
23
|
+
return String(value);
|
|
24
|
+
};
|
|
14
25
|
const typiaPathToStandardSchemaPath = (path) => {
|
|
15
26
|
if (!path.startsWith("$input")) throw new Error(`Invalid path: ${JSON.stringify(path)}`);
|
|
16
27
|
const segments = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_createStandardSchema.mjs","names":[],"sources":["../../src/internal/_createStandardSchema.ts"],"sourcesContent":["import { StandardSchemaV1 } from \"@standard-schema/spec\";\nimport { IValidation } from \"@typia/interface\";\n\nexport const _createStandardSchema = <T>(\n fn: (input: unknown) => IValidation<T>,\n): ((input: unknown) => IValidation<T>) & StandardSchemaV1<T, T> =>\n Object.assign(fn, {\n \"~standard\": {\n version: 1,\n vendor: \"typia\",\n validate: (input: unknown): StandardSchemaV1.Result<T> => {\n const result = fn(input);\n if (result.success) {\n return {\n value: result.data,\n } satisfies StandardSchemaV1.SuccessResult<T>;\n } else {\n return {\n issues: result.errors.map((error) => ({\n message: `expected ${error.expected}, got ${error.value}`,\n path: typiaPathToStandardSchemaPath(error.path),\n })),\n } satisfies StandardSchemaV1.FailureResult;\n }\n },\n },\n } satisfies StandardSchemaV1<T, T>);\n\nenum PathParserState {\n // Start of a new segment\n // When the parser is in this state,\n // the pointer must point `.` or `[` or equal to length of the path\n Start,\n // Parsing a property key (`.hoge`)\n Property,\n // Parsing a string key (`[\"fuga\"]`)\n StringKey,\n // Parsing a number key (`[42]`)\n NumberKey,\n}\n\nconst typiaPathToStandardSchemaPath = (\n path: string,\n): ReadonlyArray<StandardSchemaV1.PathSegment> => {\n if (!path.startsWith(\"$input\")) {\n throw new Error(`Invalid path: ${JSON.stringify(path)}`);\n }\n\n const segments: StandardSchemaV1.PathSegment[] = [];\n let currentSegment = \"\";\n let state: PathParserState = PathParserState.Start;\n let index = \"$input\".length - 1;\n while (index < path.length - 1) {\n index++;\n const char = path[index];\n\n if (state === PathParserState.Property) {\n if (char === \".\" || char === \"[\") {\n // End of property\n segments.push({\n key: currentSegment,\n });\n state = PathParserState.Start;\n } else if (index === path.length - 1) {\n // End of path\n currentSegment += char;\n segments.push({\n key: currentSegment,\n });\n index++;\n state = PathParserState.Start;\n } else {\n currentSegment += char;\n }\n } else if (state === PathParserState.StringKey) {\n if (char === '\"') {\n // End of string key\n segments.push({\n key: JSON.parse(currentSegment + char),\n });\n // Skip `\"` and `]`\n index += 2;\n state = PathParserState.Start;\n } else if (char === \"\\\\\") {\n // Skip the next character from parsing\n currentSegment += path[index];\n index++;\n currentSegment += path[index];\n } else {\n currentSegment += char;\n }\n } else if (state === PathParserState.NumberKey) {\n if (char === \"]\") {\n // End of number key\n segments.push({\n key: Number.parseInt(currentSegment),\n });\n index++;\n state = PathParserState.Start;\n } else {\n currentSegment += char;\n }\n }\n\n if (state === PathParserState.Start && index < path.length - 1) {\n const newChar = path[index];\n currentSegment = \"\";\n if (newChar === \"[\") {\n if (path[index + 1] === '\"') {\n // Start of string key\n // NOTE: Typia uses JSON.stringify for this kind of keys, so `'` will not used as a string delimiter\n state = PathParserState.StringKey;\n index++;\n currentSegment = '\"';\n } else {\n // Start of number key\n state = PathParserState.NumberKey;\n }\n } else if (newChar === \".\") {\n // Start of property\n state = PathParserState.Property;\n } else {\n throw new Error(\"Unreachable: pointer points invalid character\");\n }\n }\n }\n\n if (state !== PathParserState.Start) {\n throw new Error(`Failed to parse path: ${JSON.stringify(path)}`);\n }\n\n return segments;\n};\n"],"mappings":";AAGA,MAAa,yBACX,OAEA,OAAO,OAAO,IAAI,EAChB,aAAa;CACX,SAAS;CACT,QAAQ;CACR,WAAW,UAA+C;EACxD,MAAM,SAAS,GAAG,KAAK;EACvB,IAAI,OAAO,SACT,OAAO,EACL,OAAO,OAAO,KAChB;OAEA,OAAO,EACL,QAAQ,OAAO,OAAO,KAAK,WAAW;GACpC,SAAS,YAAY,MAAM,SAAS,QAAQ,MAAM;
|
|
1
|
+
{"version":3,"file":"_createStandardSchema.mjs","names":[],"sources":["../../src/internal/_createStandardSchema.ts"],"sourcesContent":["import { StandardSchemaV1 } from \"@standard-schema/spec\";\nimport { IValidation } from \"@typia/interface\";\n\nexport const _createStandardSchema = <T>(\n fn: (input: unknown) => IValidation<T>,\n): ((input: unknown) => IValidation<T>) & StandardSchemaV1<T, T> =>\n Object.assign(fn, {\n \"~standard\": {\n version: 1,\n vendor: \"typia\",\n validate: (input: unknown): StandardSchemaV1.Result<T> => {\n const result = fn(input);\n if (result.success) {\n return {\n value: result.data,\n } satisfies StandardSchemaV1.SuccessResult<T>;\n } else {\n return {\n issues: result.errors.map((error) => ({\n message: `expected ${error.expected}, got ${formatValue(error.value)}`,\n path: typiaPathToStandardSchemaPath(error.path),\n })),\n } satisfies StandardSchemaV1.FailureResult;\n }\n },\n },\n } satisfies StandardSchemaV1<T, T>);\n\nconst formatValue = (value: unknown): string => {\n if (typeof value === \"object\") {\n if (value === null) return \"null\";\n try {\n if (Array.isArray(value)) return \"[object Array]\";\n } catch {\n // A revoked proxy can throw even for Array.isArray().\n }\n return \"[object Object]\";\n }\n if (typeof value === \"function\") return \"[function]\";\n return String(value);\n};\n\nenum PathParserState {\n // Start of a new segment\n // When the parser is in this state,\n // the pointer must point `.` or `[` or equal to length of the path\n Start,\n // Parsing a property key (`.hoge`)\n Property,\n // Parsing a string key (`[\"fuga\"]`)\n StringKey,\n // Parsing a number key (`[42]`)\n NumberKey,\n}\n\nconst typiaPathToStandardSchemaPath = (\n path: string,\n): ReadonlyArray<StandardSchemaV1.PathSegment> => {\n if (!path.startsWith(\"$input\")) {\n throw new Error(`Invalid path: ${JSON.stringify(path)}`);\n }\n\n const segments: StandardSchemaV1.PathSegment[] = [];\n let currentSegment = \"\";\n let state: PathParserState = PathParserState.Start;\n let index = \"$input\".length - 1;\n while (index < path.length - 1) {\n index++;\n const char = path[index];\n\n if (state === PathParserState.Property) {\n if (char === \".\" || char === \"[\") {\n // End of property\n segments.push({\n key: currentSegment,\n });\n state = PathParserState.Start;\n } else if (index === path.length - 1) {\n // End of path\n currentSegment += char;\n segments.push({\n key: currentSegment,\n });\n index++;\n state = PathParserState.Start;\n } else {\n currentSegment += char;\n }\n } else if (state === PathParserState.StringKey) {\n if (char === '\"') {\n // End of string key\n segments.push({\n key: JSON.parse(currentSegment + char),\n });\n // Skip `\"` and `]`\n index += 2;\n state = PathParserState.Start;\n } else if (char === \"\\\\\") {\n // Skip the next character from parsing\n currentSegment += path[index];\n index++;\n currentSegment += path[index];\n } else {\n currentSegment += char;\n }\n } else if (state === PathParserState.NumberKey) {\n if (char === \"]\") {\n // End of number key\n segments.push({\n key: Number.parseInt(currentSegment),\n });\n index++;\n state = PathParserState.Start;\n } else {\n currentSegment += char;\n }\n }\n\n if (state === PathParserState.Start && index < path.length - 1) {\n const newChar = path[index];\n currentSegment = \"\";\n if (newChar === \"[\") {\n if (path[index + 1] === '\"') {\n // Start of string key\n // NOTE: Typia uses JSON.stringify for this kind of keys, so `'` will not used as a string delimiter\n state = PathParserState.StringKey;\n index++;\n currentSegment = '\"';\n } else {\n // Start of number key\n state = PathParserState.NumberKey;\n }\n } else if (newChar === \".\") {\n // Start of property\n state = PathParserState.Property;\n } else {\n throw new Error(\"Unreachable: pointer points invalid character\");\n }\n }\n }\n\n if (state !== PathParserState.Start) {\n throw new Error(`Failed to parse path: ${JSON.stringify(path)}`);\n }\n\n return segments;\n};\n"],"mappings":";AAGA,MAAa,yBACX,OAEA,OAAO,OAAO,IAAI,EAChB,aAAa;CACX,SAAS;CACT,QAAQ;CACR,WAAW,UAA+C;EACxD,MAAM,SAAS,GAAG,KAAK;EACvB,IAAI,OAAO,SACT,OAAO,EACL,OAAO,OAAO,KAChB;OAEA,OAAO,EACL,QAAQ,OAAO,OAAO,KAAK,WAAW;GACpC,SAAS,YAAY,MAAM,SAAS,QAAQ,YAAY,MAAM,KAAK;GACnE,MAAM,8BAA8B,MAAM,IAAI;EAChD,EAAE,EACJ;CAEJ;AACF,EACF,CAAkC;AAEpC,MAAM,eAAe,UAA2B;CAC9C,IAAI,OAAO,UAAU,UAAU;EAC7B,IAAI,UAAU,MAAM,OAAO;EAC3B,IAAI;GACF,IAAI,MAAM,QAAQ,KAAK,GAAG,OAAO;EACnC,QAAQ,CAER;EACA,OAAO;CACT;CACA,IAAI,OAAO,UAAU,YAAY,OAAO;CACxC,OAAO,OAAO,KAAK;AACrB;AAeA,MAAM,iCACJ,SACgD;CAChD,IAAI,CAAC,KAAK,WAAW,QAAQ,GAC3B,MAAM,IAAI,MAAM,iBAAiB,KAAK,UAAU,IAAI,GAAG;CAGzD,MAAM,WAA2C,CAAC;CAClD,IAAI,iBAAiB;CACrB,IAAI,QAAA;CACJ,IAAI,QAAQ;CACZ,OAAO,QAAQ,KAAK,SAAS,GAAG;EAC9B;EACA,MAAM,OAAO,KAAK;EAElB,IAAI,UAAA,GACF,IAAI,SAAS,OAAO,SAAS,KAAK;GAEhC,SAAS,KAAK,EACZ,KAAK,eACP,CAAC;GACD,QAAA;EACF,OAAO,IAAI,UAAU,KAAK,SAAS,GAAG;GAEpC,kBAAkB;GAClB,SAAS,KAAK,EACZ,KAAK,eACP,CAAC;GACD;GACA,QAAA;EACF,OACE,kBAAkB;OAEf,IAAI,UAAA,GACT,IAAI,SAAS,MAAK;GAEhB,SAAS,KAAK,EACZ,KAAK,KAAK,MAAM,iBAAiB,IAAI,EACvC,CAAC;GAED,SAAS;GACT,QAAA;EACF,OAAO,IAAI,SAAS,MAAM;GAExB,kBAAkB,KAAK;GACvB;GACA,kBAAkB,KAAK;EACzB,OACE,kBAAkB;OAEf,IAAI,UAAA,GACT,IAAI,SAAS,KAAK;GAEhB,SAAS,KAAK,EACZ,KAAK,OAAO,SAAS,cAAc,EACrC,CAAC;GACD;GACA,QAAA;EACF,OACE,kBAAkB;EAItB,IAAI,UAAA,KAAmC,QAAQ,KAAK,SAAS,GAAG;GAC9D,MAAM,UAAU,KAAK;GACrB,iBAAiB;GACjB,IAAI,YAAY,KACd,IAAI,KAAK,QAAQ,OAAO,MAAK;IAG3B,QAAA;IACA;IACA,iBAAiB;GACnB,OAEE,QAAA;QAEG,IAAI,YAAY,KAErB,QAAA;QAEA,MAAM,IAAI,MAAM,+CAA+C;EAEnE;CACF;CAEA,IAAI,UAAA,GACF,MAAM,IAAI,MAAM,yBAAyB,KAAK,UAAU,IAAI,GAAG;CAGjE,OAAO;AACT"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface _IDecimal {
|
|
2
|
+
coefficient: bigint;
|
|
3
|
+
exponent: number;
|
|
4
|
+
}
|
|
5
|
+
export interface _IDecimalRatio {
|
|
6
|
+
numerator: bigint;
|
|
7
|
+
denominator: bigint;
|
|
8
|
+
}
|
|
9
|
+
export declare const _decimalDecompose: (value: number) => _IDecimal | null;
|
|
10
|
+
export declare const _decimalDivide: (value: number, divisor: _IDecimal) => _IDecimalRatio | null;
|
|
11
|
+
export declare const _decimalIntegerStep: (value: number) => _IDecimal | null;
|
|
12
|
+
export declare const _decimalToNumber: (value: _IDecimal) => number;
|
|
13
|
+
export declare const _decimalPower: (exponent: number) => bigint;
|
|
14
|
+
export declare const _decimalGcd: (x: bigint, y: bigint) => bigint;
|