typia 13.0.1-dev.20260703.1 → 13.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +169 -171
- package/lib/TypeGuardError.mjs +42 -3
- package/lib/TypeGuardError.mjs.map +1 -1
- package/lib/_virtual/_rolldown/runtime.mjs +17 -0
- package/lib/compare.mjs +39 -3
- package/lib/compare.mjs.map +1 -1
- package/lib/executable/TypiaGenerateWizard.js +7 -2
- package/lib/executable/TypiaGenerateWizard.js.map +1 -1
- package/lib/executable/TypiaGenerateWizard.mjs +474 -3
- package/lib/executable/TypiaGenerateWizard.mjs.map +1 -1
- package/lib/executable/generate/ttsc.js +11 -8
- package/lib/executable/generate/ttsc.js.map +1 -1
- package/lib/executable/generate/ttsc.mjs +37 -3
- package/lib/executable/generate/ttsc.mjs.map +1 -1
- package/lib/executable/typia.js +10 -4
- package/lib/executable/typia.js.map +1 -1
- package/lib/executable/typia.mjs +59 -3
- package/lib/executable/typia.mjs.map +1 -1
- package/lib/functional.mjs +99 -3
- package/lib/functional.mjs.map +1 -1
- package/lib/http.mjs +139 -3
- package/lib/http.mjs.map +1 -1
- package/lib/index.mjs +18 -2
- package/lib/index.mjs.map +1 -1
- package/lib/internal/_IProtobufWriter.mjs +0 -3
- package/lib/internal/_ProtobufReader.js +7 -6
- package/lib/internal/_ProtobufReader.js.map +1 -1
- package/lib/internal/_ProtobufReader.mjs +140 -3
- package/lib/internal/_ProtobufReader.mjs.map +1 -1
- package/lib/internal/_ProtobufSizer.mjs +84 -3
- package/lib/internal/_ProtobufSizer.mjs.map +1 -1
- package/lib/internal/_ProtobufWriter.mjs +94 -3
- package/lib/internal/_ProtobufWriter.mjs.map +1 -1
- package/lib/internal/_accessExpressionAsString.mjs +46 -3
- package/lib/internal/_accessExpressionAsString.mjs.map +1 -1
- package/lib/internal/_assertGuard.mjs +11 -3
- package/lib/internal/_assertGuard.mjs.map +1 -1
- package/lib/internal/_coerceLlmArguments.mjs +7 -3
- package/lib/internal/_coerceLlmArguments.mjs.map +1 -1
- package/lib/internal/_createStandardSchema.mjs +64 -3
- package/lib/internal/_createStandardSchema.mjs.map +1 -1
- package/lib/internal/_functionalTypeGuardErrorFactory.mjs +7 -3
- package/lib/internal/_functionalTypeGuardErrorFactory.mjs.map +1 -1
- package/lib/internal/_httpFormDataReadArray.mjs +6 -3
- package/lib/internal/_httpFormDataReadArray.mjs.map +1 -1
- package/lib/internal/_httpFormDataReadBigint.mjs +13 -3
- package/lib/internal/_httpFormDataReadBigint.mjs.map +1 -1
- package/lib/internal/_httpFormDataReadBlob.mjs +6 -3
- package/lib/internal/_httpFormDataReadBlob.mjs.map +1 -1
- package/lib/internal/_httpFormDataReadBoolean.mjs +6 -3
- package/lib/internal/_httpFormDataReadBoolean.mjs.map +1 -1
- package/lib/internal/_httpFormDataReadFile.mjs +6 -3
- package/lib/internal/_httpFormDataReadFile.mjs.map +1 -1
- package/lib/internal/_httpFormDataReadNumber.mjs +10 -3
- package/lib/internal/_httpFormDataReadNumber.mjs.map +1 -1
- package/lib/internal/_httpFormDataReadString.mjs +6 -3
- package/lib/internal/_httpFormDataReadString.mjs.map +1 -1
- package/lib/internal/_httpHeaderReadBigint.mjs +13 -3
- package/lib/internal/_httpHeaderReadBigint.mjs.map +1 -1
- package/lib/internal/_httpHeaderReadBoolean.mjs +6 -3
- package/lib/internal/_httpHeaderReadBoolean.mjs.map +1 -1
- package/lib/internal/_httpHeaderReadNumber.mjs +10 -3
- package/lib/internal/_httpHeaderReadNumber.mjs.map +1 -1
- package/lib/internal/_httpParameterReadBigint.mjs +13 -3
- package/lib/internal/_httpParameterReadBigint.mjs.map +1 -1
- package/lib/internal/_httpParameterReadBoolean.mjs +6 -3
- package/lib/internal/_httpParameterReadBoolean.mjs.map +1 -1
- package/lib/internal/_httpParameterReadNumber.mjs +10 -3
- package/lib/internal/_httpParameterReadNumber.mjs.map +1 -1
- package/lib/internal/_httpParameterReadString.mjs +6 -3
- package/lib/internal/_httpParameterReadString.mjs.map +1 -1
- package/lib/internal/_httpQueryParseURLSearchParams.mjs +13 -3
- package/lib/internal/_httpQueryParseURLSearchParams.mjs.map +1 -1
- package/lib/internal/_httpQueryReadArray.mjs +6 -3
- package/lib/internal/_httpQueryReadArray.mjs.map +1 -1
- package/lib/internal/_httpQueryReadBigint.mjs +13 -3
- package/lib/internal/_httpQueryReadBigint.mjs.map +1 -1
- package/lib/internal/_httpQueryReadBoolean.mjs +6 -3
- package/lib/internal/_httpQueryReadBoolean.mjs.map +1 -1
- package/lib/internal/_httpQueryReadNumber.mjs +10 -3
- package/lib/internal/_httpQueryReadNumber.mjs.map +1 -1
- package/lib/internal/_httpQueryReadString.mjs +6 -3
- package/lib/internal/_httpQueryReadString.mjs.map +1 -1
- package/lib/internal/_isBetween.mjs +6 -3
- package/lib/internal/_isBetween.mjs.map +1 -1
- package/lib/internal/_isBigintString.mjs +13 -3
- package/lib/internal/_isBigintString.mjs.map +1 -1
- package/lib/internal/_isFormatByte.mjs +10 -3
- package/lib/internal/_isFormatByte.mjs.map +1 -1
- package/lib/internal/_isFormatDate.mjs +7 -3
- package/lib/internal/_isFormatDate.mjs.map +1 -1
- package/lib/internal/_isFormatDateTime.mjs +7 -3
- package/lib/internal/_isFormatDateTime.mjs.map +1 -1
- package/lib/internal/_isFormatDuration.mjs +7 -3
- package/lib/internal/_isFormatDuration.mjs.map +1 -1
- package/lib/internal/_isFormatEmail.mjs +7 -3
- package/lib/internal/_isFormatEmail.mjs.map +1 -1
- package/lib/internal/_isFormatHostname.mjs +7 -3
- package/lib/internal/_isFormatHostname.mjs.map +1 -1
- package/lib/internal/_isFormatIdnEmail.mjs +7 -3
- package/lib/internal/_isFormatIdnEmail.mjs.map +1 -1
- package/lib/internal/_isFormatIdnHostname.mjs +7 -3
- package/lib/internal/_isFormatIdnHostname.mjs.map +1 -1
- package/lib/internal/_isFormatIpv4.mjs +7 -3
- package/lib/internal/_isFormatIpv4.mjs.map +1 -1
- package/lib/internal/_isFormatIpv6.mjs +7 -3
- package/lib/internal/_isFormatIpv6.mjs.map +1 -1
- package/lib/internal/_isFormatIri.mjs +7 -3
- package/lib/internal/_isFormatIri.mjs.map +1 -1
- package/lib/internal/_isFormatIriReference.mjs +7 -3
- package/lib/internal/_isFormatIriReference.mjs.map +1 -1
- package/lib/internal/_isFormatJsonPointer.mjs +7 -3
- package/lib/internal/_isFormatJsonPointer.mjs.map +1 -1
- package/lib/internal/_isFormatPassword.mjs +6 -3
- package/lib/internal/_isFormatPassword.mjs.map +1 -1
- package/lib/internal/_isFormatRegex.mjs +13 -3
- package/lib/internal/_isFormatRegex.mjs.map +1 -1
- package/lib/internal/_isFormatRelativeJsonPointer.mjs +7 -3
- package/lib/internal/_isFormatRelativeJsonPointer.mjs.map +1 -1
- package/lib/internal/_isFormatTime.mjs +7 -3
- package/lib/internal/_isFormatTime.mjs.map +1 -1
- package/lib/internal/_isFormatUri.mjs +8 -3
- package/lib/internal/_isFormatUri.mjs.map +1 -1
- package/lib/internal/_isFormatUriReference.mjs +7 -3
- package/lib/internal/_isFormatUriReference.mjs.map +1 -1
- package/lib/internal/_isFormatUriTemplate.mjs +7 -3
- package/lib/internal/_isFormatUriTemplate.mjs.map +1 -1
- package/lib/internal/_isFormatUrl.mjs +7 -3
- package/lib/internal/_isFormatUrl.mjs.map +1 -1
- package/lib/internal/_isFormatUuid.mjs +7 -3
- package/lib/internal/_isFormatUuid.mjs.map +1 -1
- package/lib/internal/_isTypeFloat.mjs +8 -3
- package/lib/internal/_isTypeFloat.mjs.map +1 -1
- package/lib/internal/_isTypeInt16.mjs +8 -3
- package/lib/internal/_isTypeInt16.mjs.map +1 -1
- package/lib/internal/_isTypeInt32.mjs +8 -3
- package/lib/internal/_isTypeInt32.mjs.map +1 -1
- package/lib/internal/_isTypeInt64.mjs +8 -3
- package/lib/internal/_isTypeInt64.mjs.map +1 -1
- package/lib/internal/_isTypeInt8.mjs +8 -3
- package/lib/internal/_isTypeInt8.mjs.map +1 -1
- package/lib/internal/_isTypeUint16.mjs +8 -3
- package/lib/internal/_isTypeUint16.mjs.map +1 -1
- package/lib/internal/_isTypeUint32.mjs +8 -3
- package/lib/internal/_isTypeUint32.mjs.map +1 -1
- package/lib/internal/_isTypeUint64.mjs +8 -3
- package/lib/internal/_isTypeUint64.mjs.map +1 -1
- package/lib/internal/_isTypeUint8.mjs +8 -3
- package/lib/internal/_isTypeUint8.mjs.map +1 -1
- package/lib/internal/_isUniqueItems.mjs +67 -3
- package/lib/internal/_isUniqueItems.mjs.map +1 -1
- package/lib/internal/_jsonStringifyNumber.mjs +6 -3
- package/lib/internal/_jsonStringifyNumber.mjs.map +1 -1
- package/lib/internal/_jsonStringifyRest.mjs +8 -3
- package/lib/internal/_jsonStringifyRest.mjs.map +1 -1
- package/lib/internal/_jsonStringifyString.mjs +34 -3
- package/lib/internal/_jsonStringifyString.mjs.map +1 -1
- package/lib/internal/_jsonStringifyTail.mjs +6 -3
- package/lib/internal/_jsonStringifyTail.mjs.map +1 -1
- package/lib/internal/_llmApplicationFinalize.mjs +19 -3
- package/lib/internal/_llmApplicationFinalize.mjs.map +1 -1
- package/lib/internal/_notationAny.mjs +18 -3
- package/lib/internal/_notationAny.mjs.map +1 -1
- package/lib/internal/_notationCamel.mjs +11 -3
- package/lib/internal/_notationCamel.mjs.map +1 -1
- package/lib/internal/_notationPascal.mjs +11 -3
- package/lib/internal/_notationPascal.mjs.map +1 -1
- package/lib/internal/_notationSnake.mjs +32 -3
- package/lib/internal/_notationSnake.mjs.map +1 -1
- package/lib/internal/_parseLlmArguments.mjs +7 -3
- package/lib/internal/_parseLlmArguments.mjs.map +1 -1
- package/lib/internal/_plainCloneAny.mjs +35 -3
- package/lib/internal/_plainCloneAny.mjs.map +1 -1
- package/lib/internal/_randomArray.mjs +22 -3
- package/lib/internal/_randomArray.mjs.map +1 -1
- package/lib/internal/_randomBigint.mjs +7 -3
- package/lib/internal/_randomBigint.mjs.map +1 -1
- package/lib/internal/_randomBoolean.mjs +6 -3
- package/lib/internal/_randomBoolean.mjs.map +1 -1
- package/lib/internal/_randomFormatByte.mjs +7 -3
- package/lib/internal/_randomFormatByte.mjs.map +1 -1
- package/lib/internal/_randomFormatDate.mjs +11 -3
- package/lib/internal/_randomFormatDate.mjs.map +1 -1
- package/lib/internal/_randomFormatDatetime.mjs +11 -3
- package/lib/internal/_randomFormatDatetime.mjs.map +1 -1
- package/lib/internal/_randomFormatDuration.mjs +26 -3
- package/lib/internal/_randomFormatDuration.mjs.map +1 -1
- package/lib/internal/_randomFormatEmail.mjs +12 -3
- package/lib/internal/_randomFormatEmail.mjs.map +1 -1
- package/lib/internal/_randomFormatHostname.mjs +12 -3
- package/lib/internal/_randomFormatHostname.mjs.map +1 -1
- package/lib/internal/_randomFormatIdnEmail.mjs +7 -3
- package/lib/internal/_randomFormatIdnEmail.mjs.map +1 -1
- package/lib/internal/_randomFormatIdnHostname.mjs +7 -3
- package/lib/internal/_randomFormatIdnHostname.mjs.map +1 -1
- package/lib/internal/_randomFormatIpv4.mjs +12 -3
- package/lib/internal/_randomFormatIpv4.mjs.map +1 -1
- package/lib/internal/_randomFormatIpv6.mjs +12 -3
- package/lib/internal/_randomFormatIpv6.mjs.map +1 -1
- package/lib/internal/_randomFormatIri.mjs +7 -3
- package/lib/internal/_randomFormatIri.mjs.map +1 -1
- package/lib/internal/_randomFormatIriReference.mjs +7 -3
- package/lib/internal/_randomFormatIriReference.mjs.map +1 -1
- package/lib/internal/_randomFormatJsonPointer.mjs +12 -3
- package/lib/internal/_randomFormatJsonPointer.mjs.map +1 -1
- package/lib/internal/_randomFormatPassword.mjs +11 -3
- package/lib/internal/_randomFormatPassword.mjs.map +1 -1
- package/lib/internal/_randomFormatRegex.mjs +7 -3
- package/lib/internal/_randomFormatRegex.mjs.map +1 -1
- package/lib/internal/_randomFormatRelativeJsonPointer.mjs +11 -3
- package/lib/internal/_randomFormatRelativeJsonPointer.mjs.map +1 -1
- package/lib/internal/_randomFormatTime.mjs +12 -3
- package/lib/internal/_randomFormatTime.mjs.map +1 -1
- package/lib/internal/_randomFormatUri.mjs +7 -3
- package/lib/internal/_randomFormatUri.mjs.map +1 -1
- package/lib/internal/_randomFormatUriReference.mjs +7 -3
- package/lib/internal/_randomFormatUriReference.mjs.map +1 -1
- package/lib/internal/_randomFormatUriTemplate.mjs +7 -3
- package/lib/internal/_randomFormatUriTemplate.mjs.map +1 -1
- package/lib/internal/_randomFormatUrl.mjs +12 -3
- package/lib/internal/_randomFormatUrl.mjs.map +1 -1
- package/lib/internal/_randomFormatUuid.mjs +9 -3
- package/lib/internal/_randomFormatUuid.mjs.map +1 -1
- package/lib/internal/_randomInteger.mjs +31 -3
- package/lib/internal/_randomInteger.mjs.map +1 -1
- package/lib/internal/_randomNumber.mjs +45 -3
- package/lib/internal/_randomNumber.mjs.map +1 -1
- package/lib/internal/_randomPattern.mjs +14 -3
- package/lib/internal/_randomPattern.mjs.map +1 -1
- package/lib/internal/_randomPick.mjs +12 -3
- package/lib/internal/_randomPick.mjs.map +1 -1
- package/lib/internal/_randomString.mjs +23 -3
- package/lib/internal/_randomString.mjs.map +1 -1
- package/lib/internal/_throwTypeGuardError.mjs +9 -3
- package/lib/internal/_throwTypeGuardError.mjs.map +1 -1
- package/lib/internal/_validateReport.mjs +23 -3
- package/lib/internal/_validateReport.mjs.map +1 -1
- package/lib/internal/private/__notationCapitalize.mjs +6 -3
- package/lib/internal/private/__notationCapitalize.mjs.map +1 -1
- package/lib/internal/private/__notationUnsnake.mjs +15 -3
- package/lib/internal/private/__notationUnsnake.mjs.map +1 -1
- package/lib/json.mjs +94 -3
- package/lib/json.mjs.map +1 -1
- package/lib/llm.mjs +54 -3
- package/lib/llm.mjs.map +1 -1
- package/lib/module.mjs +131 -2
- package/lib/module.mjs.map +1 -1
- package/lib/notations.mjs +169 -3
- package/lib/notations.mjs.map +1 -1
- package/lib/plain.mjs +119 -3
- package/lib/plain.mjs.map +1 -1
- package/lib/protobuf.mjs +94 -3
- package/lib/protobuf.mjs.map +1 -1
- package/lib/re-exports.d.ts +2 -1
- package/lib/re-exports.js +5 -1
- package/lib/re-exports.js.map +1 -1
- package/lib/re-exports.mjs +2 -2
- package/lib/reflect.mjs +29 -3
- package/lib/reflect.mjs.map +1 -1
- package/lib/transform.mjs +15 -2
- package/lib/transform.mjs.map +1 -1
- package/lib/transformers/NoTransformConfigurationError.mjs +19 -3
- package/lib/transformers/NoTransformConfigurationError.mjs.map +1 -1
- package/native/adapter/adapter.go +29 -29
- package/native/adapter/adapter_options_branch_matrix_test.go +54 -54
- package/native/adapter/visit.go +173 -173
- package/native/adapter/visit_property_chain_edges_test.go +129 -129
- package/native/cmd/ttsc-typia/any_array_type_tags_transform_test.go +204 -204
- package/native/cmd/ttsc-typia/atomic_intersection_schema_transform_test.go +148 -148
- package/native/cmd/ttsc-typia/boolean_literal_discriminant_schema_transform_test.go +374 -374
- package/native/cmd/ttsc-typia/build.go +188 -188
- package/native/cmd/ttsc-typia/build_reports_semantic_diagnostics_test.go +34 -34
- package/native/cmd/ttsc-typia/build_reports_syntactic_diagnostics_test.go +34 -34
- package/native/cmd/ttsc-typia/command_routes_and_diagnostics_coverage_test.go +314 -314
- package/native/cmd/ttsc-typia/compare_equal_cover_transform_test.go +271 -271
- package/native/cmd/ttsc-typia/compare_less_transform_test.go +180 -180
- package/native/cmd/ttsc-typia/compare_method_delegation_transform_test.go +173 -173
- package/native/cmd/ttsc-typia/demo_rejects_bad_flag_test.go +25 -25
- package/native/cmd/ttsc-typia/diagnostics.go +51 -51
- package/native/cmd/ttsc-typia/dynamic_key_path_helper_alias_transform_test.go +159 -159
- package/native/cmd/ttsc-typia/exclude_type_tag_transform_test.go +176 -176
- package/native/cmd/ttsc-typia/inline_type_display_name_transform_test.go +290 -290
- package/native/cmd/ttsc-typia/instance_union_create_is_transform_test.go +248 -248
- package/native/cmd/ttsc-typia/intersection_all_never_union_transform_test.go +168 -168
- package/native/cmd/ttsc-typia/intersection_brand_transform_test.go +267 -267
- package/native/cmd/ttsc-typia/intersection_nonsensible_backstop_transform_test.go +157 -132
- package/native/cmd/ttsc-typia/intersection_union_validation_transform_test.go +590 -590
- package/native/cmd/ttsc-typia/json_is_stringify_scoped_checker_transform_test.go +206 -0
- package/native/cmd/ttsc-typia/json_stringify_constant_atomic_union_transform_test.go +171 -171
- package/native/cmd/ttsc-typia/main.go +97 -97
- package/native/cmd/ttsc-typia/main_wasm.go +226 -226
- package/native/cmd/ttsc-typia/non_trailing_rest_tuple_transform_test.go +156 -156
- package/native/cmd/ttsc-typia/notation_kebab_case_transform_test.go +186 -186
- package/native/cmd/ttsc-typia/nullable_primitive_property_is_transform_test.go +236 -236
- package/native/cmd/ttsc-typia/object_custom_tag_validation_transform_test.go +332 -332
- package/native/cmd/ttsc-typia/object_union_explicit_pointer_schema_transform_test.go +269 -269
- package/native/cmd/ttsc-typia/plain_classify_class_ref_transform_test.go +261 -261
- package/native/cmd/ttsc-typia/plain_classify_container_seed_transform_test.go +144 -144
- package/native/cmd/ttsc-typia/plain_classify_cross_module_extra_transform_test.go +211 -211
- package/native/cmd/ttsc-typia/plain_classify_deep_nested_transform_test.go +184 -184
- package/native/cmd/ttsc-typia/plain_classify_field_copy_transform_test.go +204 -204
- package/native/cmd/ttsc-typia/plain_classify_from_new_transform_test.go +465 -465
- package/native/cmd/ttsc-typia/plain_classify_strategy_edges_transform_test.go +519 -519
- package/native/cmd/ttsc-typia/plain_classify_union_transform_test.go +149 -149
- package/native/cmd/ttsc-typia/plain_classify_validated_union_transform_test.go +212 -212
- package/native/cmd/ttsc-typia/plain_clone_bigint_wrapper_transform_test.go +153 -153
- package/native/cmd/ttsc-typia/plugin_options_missing_config_test.go +26 -26
- package/native/cmd/ttsc-typia/plugin_options_undefined_false_test.go +36 -36
- package/native/cmd/ttsc-typia/project_catalog_transform_coverage_test.go +73 -73
- package/native/cmd/ttsc-typia/protobuf_object_generic_union_encode_transform_test.go +248 -248
- package/native/cmd/ttsc-typia/protobuf_sequence_field_numbers_transform_test.go +107 -107
- package/native/cmd/ttsc-typia/random_recursive_min_items_diagnostic_test.go +234 -234
- package/native/cmd/ttsc-typia/random_unsatisfiable_recursive_diagnostic_test.go +146 -146
- package/native/cmd/ttsc-typia/recursive_visit_tracking_transform_test.go +473 -473
- package/native/cmd/ttsc-typia/run_default_build_route_test.go +31 -31
- package/native/cmd/ttsc-typia/schema_dts_role_transform_test.go +404 -404
- package/native/cmd/ttsc-typia/shallow_depth_argument_error_transform_test.go +88 -88
- package/native/cmd/ttsc-typia/shallow_depth_limit_transform_test.go +278 -278
- package/native/cmd/ttsc-typia/shallow_depth_runtime_test.go +173 -173
- package/native/cmd/ttsc-typia/shallow_factory_depth_runtime_test.go +171 -171
- package/native/cmd/ttsc-typia/shallow_nested_depth_transform_test.go +148 -148
- package/native/cmd/ttsc-typia/template_interpolation_type_tags_transform_test.go +322 -322
- package/native/cmd/ttsc-typia/template_literal_type_tags_transform_test.go +162 -162
- package/native/cmd/ttsc-typia/transform.go +270 -270
- package/native/cmd/ttsc-typia/transform_declaration_source_produces_no_js_test.go +59 -59
- package/native/cmd/ttsc-typia/transform_diagnostics_preserve_details_test.go +203 -203
- package/native/cmd/ttsc-typia/transform_fixtures_emit_coverage_test.go +528 -528
- package/native/cmd/ttsc-typia/transform_helpers_test.go +155 -155
- package/native/core/context/EmitFactory.go +39 -39
- package/native/core/context/IProgrammerProps.go +14 -14
- package/native/core/context/ITransformOptions.go +9 -9
- package/native/core/context/ITypiaContext.go +36 -36
- package/native/core/context/ImportProgrammer.go +388 -354
- package/native/core/context/TransformerError.go +117 -117
- package/native/core/context/import_programmer_module_identifier_test.go +29 -0
- package/native/core/context/import_programmer_statement_coverage_test.go +71 -71
- package/native/core/context/index.go +1 -1
- package/native/core/context/transformer_error_formatting_test.go +100 -100
- package/native/core/factories/CommentFactory.go +27 -27
- package/native/core/factories/ExpressionFactory.go +357 -357
- package/native/core/factories/FormatCheatSheet.go +30 -30
- package/native/core/factories/IdentifierFactory.go +172 -172
- package/native/core/factories/JsonMetadataFactory.go +154 -154
- package/native/core/factories/LiteralFactory.go +319 -282
- package/native/core/factories/MetadataCommentTagFactory.go +446 -446
- package/native/core/factories/MetadataFactory.go +543 -543
- package/native/core/factories/MetadataTypeTagFactory.go +560 -560
- package/native/core/factories/MetadataTypeTagSchemaFactory.go +117 -117
- package/native/core/factories/NumericRangeFactory.go +132 -132
- package/native/core/factories/ProtobufFactory.go +1090 -1090
- package/native/core/factories/StatementFactory.go +114 -114
- package/native/core/factories/TemplateFactory.go +82 -82
- package/native/core/factories/TypeFactory.go +176 -176
- package/native/core/factories/ValueFactory.go +43 -43
- package/native/core/factories/factory_utility_coverage_test.go +1006 -1006
- package/native/core/factories/index.go +1 -1
- package/native/core/factories/internal/metadata/IMetadataIteratorProps.go +70 -70
- package/native/core/factories/internal/metadata/MetadataHelper.go +425 -425
- package/native/core/factories/internal/metadata/comment_tags_coverage_test.go +184 -184
- package/native/core/factories/internal/metadata/emend_metadata_atomics.go +80 -80
- package/native/core/factories/internal/metadata/emplace_metadata_alias.go +41 -41
- package/native/core/factories/internal/metadata/emplace_metadata_array_type.go +44 -44
- package/native/core/factories/internal/metadata/emplace_metadata_object.go +599 -599
- package/native/core/factories/internal/metadata/emplace_metadata_tuple.go +69 -69
- package/native/core/factories/internal/metadata/explore_metadata.go +75 -75
- package/native/core/factories/internal/metadata/iterate_metadata.go +55 -55
- package/native/core/factories/internal/metadata/iterate_metadata_alias.go +36 -36
- package/native/core/factories/internal/metadata/iterate_metadata_array.go +77 -77
- package/native/core/factories/internal/metadata/iterate_metadata_atomic.go +63 -63
- package/native/core/factories/internal/metadata/iterate_metadata_coalesce.go +30 -30
- package/native/core/factories/internal/metadata/iterate_metadata_collection.go +366 -366
- package/native/core/factories/internal/metadata/iterate_metadata_collection_branch_matrix_test.go +201 -201
- package/native/core/factories/internal/metadata/iterate_metadata_comment_tags.go +34 -34
- package/native/core/factories/internal/metadata/iterate_metadata_constant.go +139 -139
- package/native/core/factories/internal/metadata/iterate_metadata_escape.go +56 -56
- package/native/core/factories/internal/metadata/iterate_metadata_function.go +93 -93
- package/native/core/factories/internal/metadata/iterate_metadata_intersection.go +1054 -1054
- package/native/core/factories/internal/metadata/iterate_metadata_intersection_brand_coverage_test.go +114 -114
- package/native/core/factories/internal/metadata/iterate_metadata_intersection_coverage_test.go +106 -106
- package/native/core/factories/internal/metadata/iterate_metadata_intersection_shareable_name_test.go +22 -22
- package/native/core/factories/internal/metadata/iterate_metadata_map.go +55 -55
- package/native/core/factories/internal/metadata/iterate_metadata_native.go +122 -122
- package/native/core/factories/internal/metadata/iterate_metadata_object.go +35 -35
- package/native/core/factories/internal/metadata/iterate_metadata_set.go +41 -41
- package/native/core/factories/internal/metadata/iterate_metadata_sort.go +202 -202
- package/native/core/factories/internal/metadata/iterate_metadata_template.go +41 -41
- package/native/core/factories/internal/metadata/iterate_metadata_tuple.go +24 -24
- package/native/core/factories/internal/metadata/iterate_metadata_union.go +40 -40
- package/native/core/factories/internal/metadata/js_doc_parameter_name_reads_qualified_name_test.go +55 -55
- package/native/core/factories/internal/metadata/optional_coalesce_coverage_test.go +38 -38
- package/native/core/factories/internal/metadata/sort_constants_coverage_test.go +63 -63
- package/native/core/factories/json_metadata_factory_dedupes_bigint_diagnostics_test.go +36 -36
- package/native/core/factories/json_metadata_factory_rejects_bigint_native_test.go +29 -29
- package/native/core/factories/literal_factory_ordered_object_marshals_json_test.go +40 -0
- package/native/core/factories/metadata_comment_tag_factory_coverage_test.go +239 -239
- package/native/core/factories/protobuf_factory_rejects_invalid_field_names_test.go +75 -75
- package/native/core/index.go +1 -1
- package/native/core/programmers/AssertProgrammer.go +511 -511
- package/native/core/programmers/IsProgrammer.go +418 -419
- package/native/core/programmers/RandomProgrammer.go +1448 -1448
- package/native/core/programmers/ValidateProgrammer.go +488 -488
- package/native/core/programmers/compare/CompareEqualProgrammer.go +668 -668
- package/native/core/programmers/compare/CompareLessProgrammer.go +489 -489
- package/native/core/programmers/functional/FunctionalAssertFunctionProgrammer.go +172 -172
- package/native/core/programmers/functional/FunctionalAssertParametersProgrammer.go +135 -135
- package/native/core/programmers/functional/FunctionalAssertReturnProgrammer.go +131 -131
- package/native/core/programmers/functional/FunctionalIsFunctionProgrammer.go +106 -106
- package/native/core/programmers/functional/FunctionalIsParametersProgrammer.go +222 -222
- package/native/core/programmers/functional/FunctionalIsReturnProgrammer.go +129 -129
- package/native/core/programmers/functional/FunctionalValidateFunctionProgrammer.go +172 -172
- package/native/core/programmers/functional/FunctionalValidateParametersProgrammer.go +252 -252
- package/native/core/programmers/functional/FunctionalValidateReturnProgrammer.go +147 -147
- package/native/core/programmers/functional/functional_assert_helper_coverage_test.go +26 -26
- package/native/core/programmers/functional/index.go +1 -1
- package/native/core/programmers/functional/internal/FunctionalGeneralProgrammer.go +53 -53
- package/native/core/programmers/helpers/AtomicPredicator.go +75 -75
- package/native/core/programmers/helpers/ClassifyJoiner.go +174 -174
- package/native/core/programmers/helpers/CloneJoiner.go +307 -307
- package/native/core/programmers/helpers/FunctionProgrammer.go +218 -218
- package/native/core/programmers/helpers/HttpMetadataUtil.go +30 -30
- package/native/core/programmers/helpers/ICheckEntry.go +14 -14
- package/native/core/programmers/helpers/IExpressionEntry.go +15 -15
- package/native/core/programmers/helpers/ModuloText.go +26 -26
- package/native/core/programmers/helpers/NotationJoiner.go +204 -204
- package/native/core/programmers/helpers/OptionPredicator.go +39 -39
- package/native/core/programmers/helpers/ProtobufUtil.go +273 -273
- package/native/core/programmers/helpers/ProtobufWire.go +14 -14
- package/native/core/programmers/helpers/PruneJoiner.go +290 -290
- package/native/core/programmers/helpers/RandomJoiner.go +805 -805
- package/native/core/programmers/helpers/StringifyJoinder.go +409 -409
- package/native/core/programmers/helpers/StringifyPredicator.go +25 -25
- package/native/core/programmers/helpers/UnionExplorer.go +966 -966
- package/native/core/programmers/helpers/UnionPredicator.go +92 -92
- package/native/core/programmers/helpers/clone_joiner_optional_condition_test.go +70 -70
- package/native/core/programmers/helpers/disable_function_programmer_declare.go +10 -10
- package/native/core/programmers/helpers/function_programmer_unique_names_test.go +54 -54
- package/native/core/programmers/helpers/joiner_branch_coverage_test.go +147 -147
- package/native/core/programmers/helpers/random_joiner_recursive_array_guard_test.go +166 -166
- package/native/core/programmers/helpers/union_explorer_coverage_test.go +135 -135
- package/native/core/programmers/helpers/union_predicator_checks_neighbor_flag_test.go +34 -34
- package/native/core/programmers/helpers/union_predicator_skips_atomic_like_native_fields_test.go +65 -65
- package/native/core/programmers/helpers/union_predicator_skips_collection_bucket_fields_test.go +72 -72
- package/native/core/programmers/helpers/union_predicator_skips_shared_native_names_test.go +239 -239
- package/native/core/programmers/helpers/union_predicator_skips_shared_object_fields_test.go +43 -43
- package/native/core/programmers/helpers/union_predicator_skips_shared_template_fields_test.go +57 -57
- package/native/core/programmers/http/HttpAssertFormDataProgrammer.go +116 -116
- package/native/core/programmers/http/HttpAssertHeadersProgrammer.go +59 -59
- package/native/core/programmers/http/HttpAssertQueryProgrammer.go +71 -71
- package/native/core/programmers/http/HttpFormDataProgrammer.go +416 -416
- package/native/core/programmers/http/HttpHeadersProgrammer.go +428 -428
- package/native/core/programmers/http/HttpIsFormDataProgrammer.go +142 -142
- package/native/core/programmers/http/HttpIsHeadersProgrammer.go +53 -53
- package/native/core/programmers/http/HttpIsQueryProgrammer.go +65 -65
- package/native/core/programmers/http/HttpParameterProgrammer.go +190 -190
- package/native/core/programmers/http/HttpQueryProgrammer.go +484 -484
- package/native/core/programmers/http/HttpValidateFormDataProgrammer.go +110 -110
- package/native/core/programmers/http/HttpValidateHeadersProgrammer.go +56 -56
- package/native/core/programmers/http/HttpValidateQueryProgrammer.go +68 -68
- package/native/core/programmers/http/http_programmer_helper_coverage_test.go +120 -120
- package/native/core/programmers/http/index.go +1 -1
- package/native/core/programmers/index.go +1 -1
- package/native/core/programmers/internal/CheckerProgrammer.go +2064 -2064
- package/native/core/programmers/internal/FeatureProgrammer.go +1361 -1361
- package/native/core/programmers/internal/feature_programmer_visit_guard_test.go +70 -70
- package/native/core/programmers/internal/internal_utility_coverage_test.go +384 -384
- package/native/core/programmers/iterate/check_array_length.go +64 -64
- package/native/core/programmers/iterate/check_bigint.go +78 -78
- package/native/core/programmers/iterate/check_dynamic_key.go +271 -271
- package/native/core/programmers/iterate/check_dynamic_key_tag_rows_test.go +46 -46
- package/native/core/programmers/iterate/check_dynamic_properties.go +292 -292
- package/native/core/programmers/iterate/check_everything.go +33 -33
- package/native/core/programmers/iterate/check_exclude.go +88 -88
- package/native/core/programmers/iterate/check_native.go +38 -38
- package/native/core/programmers/iterate/check_number.go +180 -180
- package/native/core/programmers/iterate/check_object.go +113 -113
- package/native/core/programmers/iterate/check_object_strict_optional_undefined_test.go +74 -74
- package/native/core/programmers/iterate/check_object_type_tags.go +64 -64
- package/native/core/programmers/iterate/check_string.go +78 -78
- package/native/core/programmers/iterate/check_template.go +346 -346
- package/native/core/programmers/iterate/check_union_array_like.go +422 -422
- package/native/core/programmers/iterate/decode_union_object.go +157 -157
- package/native/core/programmers/iterate/feature_object_entries.go +188 -188
- package/native/core/programmers/iterate/iterate_check_coverage_test.go +178 -178
- package/native/core/programmers/iterate/iterate_utility_coverage_test.go +302 -302
- package/native/core/programmers/iterate/json_schema_alias.go +62 -62
- package/native/core/programmers/iterate/json_schema_array.go +66 -66
- package/native/core/programmers/iterate/json_schema_bigint.go +17 -17
- package/native/core/programmers/iterate/json_schema_boolean.go +17 -17
- package/native/core/programmers/iterate/json_schema_constant.go +53 -53
- package/native/core/programmers/iterate/json_schema_description.go +21 -21
- package/native/core/programmers/iterate/json_schema_discriminator.go +57 -57
- package/native/core/programmers/iterate/json_schema_escaped.go +68 -68
- package/native/core/programmers/iterate/json_schema_jsDocTags.go +48 -48
- package/native/core/programmers/iterate/json_schema_native.go +106 -106
- package/native/core/programmers/iterate/json_schema_number.go +17 -17
- package/native/core/programmers/iterate/json_schema_object.go +187 -184
- package/native/core/programmers/iterate/json_schema_plugin.go +47 -47
- package/native/core/programmers/iterate/json_schema_station.go +251 -251
- package/native/core/programmers/iterate/json_schema_string.go +17 -17
- package/native/core/programmers/iterate/json_schema_template.go +63 -63
- package/native/core/programmers/iterate/json_schema_title.go +25 -25
- package/native/core/programmers/iterate/json_schema_tuple.go +41 -41
- package/native/core/programmers/iterate/metadata_to_pattern.go +64 -64
- package/native/core/programmers/iterate/postfix_of_tuple.go +12 -12
- package/native/core/programmers/iterate/prune_object_properties.go +105 -105
- package/native/core/programmers/iterate/stringify_dynamic_properties.go +219 -219
- package/native/core/programmers/iterate/stringify_native.go +14 -14
- package/native/core/programmers/iterate/stringify_regular_properties.go +112 -112
- package/native/core/programmers/iterate/template_interpolation_tags_test.go +495 -495
- package/native/core/programmers/iterate/template_runtime_pattern.go +262 -262
- package/native/core/programmers/iterate/template_to_pattern.go +29 -29
- package/native/core/programmers/iterate/wrap_metadata_rest_tuple.go +23 -23
- package/native/core/programmers/json/JsonApplicationProgrammer.go +380 -380
- package/native/core/programmers/json/JsonAssertParseProgrammer.go +115 -115
- package/native/core/programmers/json/JsonAssertStringifyProgrammer.go +108 -108
- package/native/core/programmers/json/JsonIsParseProgrammer.go +162 -162
- package/native/core/programmers/json/JsonIsStringifyProgrammer.go +113 -113
- package/native/core/programmers/json/JsonSchemaProgrammer.go +94 -94
- package/native/core/programmers/json/JsonSchemasProgrammer.go +142 -142
- package/native/core/programmers/json/JsonStringifyProgrammer.go +1528 -1508
- package/native/core/programmers/json/JsonValidateParseProgrammer.go +105 -105
- package/native/core/programmers/json/JsonValidateStringifyProgrammer.go +126 -126
- package/native/core/programmers/json/index.go +1 -1
- package/native/core/programmers/json/json_schema_programmer_coverage_test.go +198 -198
- package/native/core/programmers/json/json_schemas_programmer_dedupes_bigint_diagnostics_test.go +37 -37
- package/native/core/programmers/json/json_schemas_programmer_rejects_bigint_native_test.go +29 -29
- package/native/core/programmers/json/json_stringify_programmer_coverage_test.go +422 -422
- package/native/core/programmers/llm/LlmApplicationProgrammer.go +526 -526
- package/native/core/programmers/llm/LlmCoerceProgrammer.go +109 -109
- package/native/core/programmers/llm/LlmControllerProgrammer.go +51 -51
- package/native/core/programmers/llm/LlmMetadataFactory.go +89 -89
- package/native/core/programmers/llm/LlmParametersProgrammer.go +141 -141
- package/native/core/programmers/llm/LlmParseProgrammer.go +121 -121
- package/native/core/programmers/llm/LlmSchemaProgrammer.go +902 -846
- package/native/core/programmers/llm/LlmStructuredOutputProgrammer.go +147 -147
- package/native/core/programmers/llm/index.go +1 -1
- package/native/core/programmers/llm/llm_application_programmer_coverage_test.go +166 -166
- package/native/core/programmers/llm/llm_schema_programmer_coverage_test.go +282 -282
- package/native/core/programmers/llm/llm_schema_programmer_dedupes_bigint_diagnostics_test.go +38 -38
- package/native/core/programmers/llm/llm_schema_programmer_rejects_bigint_native_test.go +30 -30
- package/native/core/programmers/llm/llm_schema_programmer_rejects_exclude_tag_in_strict_test.go +52 -52
- package/native/core/programmers/notations/NotationAssertGeneralProgrammer.go +107 -107
- package/native/core/programmers/notations/NotationGeneralProgrammer.go +1441 -1441
- package/native/core/programmers/notations/NotationIsGeneralProgrammer.go +112 -112
- package/native/core/programmers/notations/NotationValidateGeneralProgrammer.go +131 -131
- package/native/core/programmers/notations/index.go +1 -1
- package/native/core/programmers/notations/notation_general_helpers_test.go +395 -395
- package/native/core/programmers/notations/notation_general_programmer_snake_prefix_test.go +44 -44
- package/native/core/programmers/plain/PlainAssertClassifyProgrammer.go +111 -111
- package/native/core/programmers/plain/PlainAssertCloneProgrammer.go +102 -102
- package/native/core/programmers/plain/PlainAssertPruneProgrammer.go +117 -117
- package/native/core/programmers/plain/PlainClassifyProgrammer.go +2205 -2205
- package/native/core/programmers/plain/PlainCloneProgrammer.go +1254 -1254
- package/native/core/programmers/plain/PlainIsCloneProgrammer.go +117 -117
- package/native/core/programmers/plain/PlainIsPruneProgrammer.go +106 -106
- package/native/core/programmers/plain/PlainPruneProgrammer.go +837 -837
- package/native/core/programmers/plain/PlainValidateClassifyProgrammer.go +127 -127
- package/native/core/programmers/plain/PlainValidateCloneProgrammer.go +123 -123
- package/native/core/programmers/plain/PlainValidatePruneProgrammer.go +114 -114
- package/native/core/programmers/plain/index.go +1 -1
- package/native/core/programmers/plain/plain_programmer_helper_coverage_test.go +284 -284
- package/native/core/programmers/plain/plain_prune_programmer_branch_matrix_test.go +145 -145
- package/native/core/programmers/programmer_direct_helper_coverage_test.go +70 -70
- package/native/core/programmers/protobuf/ProtobufAssertDecodeProgrammer.go +125 -125
- package/native/core/programmers/protobuf/ProtobufAssertEncodeProgrammer.go +143 -143
- package/native/core/programmers/protobuf/ProtobufDecodeProgrammer.go +861 -861
- package/native/core/programmers/protobuf/ProtobufEncodeProgrammer.go +1269 -1269
- package/native/core/programmers/protobuf/ProtobufIsDecodeProgrammer.go +122 -122
- package/native/core/programmers/protobuf/ProtobufIsEncodeProgrammer.go +115 -115
- package/native/core/programmers/protobuf/ProtobufMessageProgrammer.go +269 -269
- package/native/core/programmers/protobuf/ProtobufValidateDecodeProgrammer.go +111 -111
- package/native/core/programmers/protobuf/ProtobufValidateEncodeProgrammer.go +145 -145
- package/native/core/programmers/protobuf/index.go +1 -1
- package/native/core/programmers/protobuf/protobuf_programmer_helper_coverage_test.go +454 -454
- package/native/core/programmers/random_programmer_helper_coverage_test.go +367 -367
- package/native/core/programmers/random_programmer_min_items_tag_test.go +44 -44
- package/native/core/programmers/reflect/ReflectLiteralsProgrammer.go +125 -125
- package/native/core/schemas/index.go +1 -1
- package/native/core/schemas/metadata/IMetadataDictionary.go +8 -8
- package/native/core/schemas/metadata/IMetadataTypeTagSequence.go +53 -53
- package/native/core/schemas/metadata/MetadataAlias.go +36 -36
- package/native/core/schemas/metadata/MetadataAliasType.go +64 -64
- package/native/core/schemas/metadata/MetadataApplication.go +41 -41
- package/native/core/schemas/metadata/MetadataArray.go +36 -36
- package/native/core/schemas/metadata/MetadataArrayType.go +59 -59
- package/native/core/schemas/metadata/MetadataAtomic.go +69 -69
- package/native/core/schemas/metadata/MetadataCollection.go +698 -698
- package/native/core/schemas/metadata/MetadataComponents.go +122 -122
- package/native/core/schemas/metadata/MetadataConstant.go +47 -47
- package/native/core/schemas/metadata/MetadataConstantValue.go +97 -97
- package/native/core/schemas/metadata/MetadataEscaped.go +40 -40
- package/native/core/schemas/metadata/MetadataFunction.go +46 -46
- package/native/core/schemas/metadata/MetadataMap.go +45 -45
- package/native/core/schemas/metadata/MetadataNative.go +72 -72
- package/native/core/schemas/metadata/MetadataObject.go +36 -36
- package/native/core/schemas/metadata/MetadataObjectType.go +223 -223
- package/native/core/schemas/metadata/MetadataParameter.go +46 -46
- package/native/core/schemas/metadata/MetadataProperty.go +50 -50
- package/native/core/schemas/metadata/MetadataSchema.go +1485 -1485
- package/native/core/schemas/metadata/MetadataSet.go +41 -41
- package/native/core/schemas/metadata/MetadataTemplate.go +70 -70
- package/native/core/schemas/metadata/MetadataTuple.go +20 -20
- package/native/core/schemas/metadata/MetadataTupleType.go +69 -69
- package/native/core/schemas/metadata/index.go +1 -1
- package/native/core/schemas/metadata/metadata_object_type_required_literal_property_test.go +51 -51
- package/native/core/schemas/metadata/metadata_schema_covers_tag_matrix_test.go +125 -125
- package/native/core/schemas/metadata/metadata_schema_sole_literal_caches_pointer_test.go +38 -38
- package/native/core/schemas/metadata/schema_sequence_and_json_coverage_test.go +427 -427
- package/native/core/schemas/protobuf/IProtobufProperty.go +6 -6
- package/native/core/schemas/protobuf/IProtobufPropertyType.go +55 -55
- package/native/core/schemas/protobuf/IProtobufSchema.go +54 -54
- package/native/core/schemas/protobuf/index.go +1 -1
- package/native/core/schemas/protobuf/protobuf_marker_coverage_test.go +58 -58
- package/native/core/typings/Writable.go +5 -5
- package/native/core/utils/PatternUtil.go +57 -57
- package/native/core/utils/ProtobufNameEncoder.go +47 -47
- package/native/go.mod +31 -31
- package/native/go.sum +22 -22
- package/native/go.work +22 -22
- package/native/transform/CallExpressionTransformer.go +719 -719
- package/native/transform/FileTransformer.go +221 -221
- package/native/transform/ITransformProps.go +5 -5
- package/native/transform/ImportTransformer.go +285 -285
- package/native/transform/NodeTransformer.go +25 -25
- package/native/transform/TransformerError.go +11 -11
- package/native/transform/TypiaGenerator.go +171 -171
- package/native/transform/call_expression_transformer_registry_coverage_test.go +53 -53
- package/native/transform/call_expression_transformer_target_test.go +46 -46
- package/native/transform/features/AssertTransformer.go +39 -39
- package/native/transform/features/CreateAssertTransformer.go +39 -39
- package/native/transform/features/CreateIsTransformer.go +35 -35
- package/native/transform/features/CreateRandomTransformer.go +47 -47
- package/native/transform/features/CreateShallowTransformer.go +33 -33
- package/native/transform/features/CreateValidateTransformer.go +35 -35
- package/native/transform/features/IsTransformer.go +35 -35
- package/native/transform/features/RandomTransformer.go +54 -54
- package/native/transform/features/ShallowTransformer.go +65 -65
- package/native/transform/features/ValidateTransformer.go +35 -35
- package/native/transform/features/compare/CompareCoverTransformer.go +14 -14
- package/native/transform/features/compare/CompareCreateCoverTransformer.go +14 -14
- package/native/transform/features/compare/CompareCreateEqualTransformer.go +14 -14
- package/native/transform/features/compare/CompareCreateLessTransformer.go +14 -14
- package/native/transform/features/compare/CompareEqualTransformer.go +73 -73
- package/native/transform/features/compare/CompareLessTransformer.go +71 -71
- package/native/transform/features/feature_transformer_entry_coverage_test.go +59 -59
- package/native/transform/features/functional/FunctionalGenericTransformer.go +70 -70
- package/native/transform/features/http/CreateHttpAssertFormDataTransformer.go +22 -22
- package/native/transform/features/http/CreateHttpAssertHeadersTransformer.go +22 -22
- package/native/transform/features/http/CreateHttpAssertQueryTransformer.go +28 -28
- package/native/transform/features/http/CreateHttpFormDataTransformer.go +22 -22
- package/native/transform/features/http/CreateHttpHeadersTransformer.go +22 -22
- package/native/transform/features/http/CreateHttpIsFormDataTransformer.go +22 -22
- package/native/transform/features/http/CreateHttpIsHeadersTransformer.go +22 -22
- package/native/transform/features/http/CreateHttpIsQueryTransformer.go +28 -28
- package/native/transform/features/http/CreateHttpParameterTransformer.go +22 -22
- package/native/transform/features/http/CreateHttpQueryTransformer.go +28 -28
- package/native/transform/features/http/CreateHttpValidateFormDataTransformer.go +22 -22
- package/native/transform/features/http/CreateHttpValidateHeadersTransformer.go +22 -22
- package/native/transform/features/http/CreateHttpValidateQueryTransformer.go +28 -28
- package/native/transform/features/http/HttpAssertFormDataTransformer.go +22 -22
- package/native/transform/features/http/HttpAssertHeadersTransformer.go +22 -22
- package/native/transform/features/http/HttpAssertQueryTransformer.go +28 -28
- package/native/transform/features/http/HttpFormDataTransformer.go +22 -22
- package/native/transform/features/http/HttpHeadersTransformer.go +22 -22
- package/native/transform/features/http/HttpIsFormDataTransformer.go +22 -22
- package/native/transform/features/http/HttpIsHeadersTransformer.go +22 -22
- package/native/transform/features/http/HttpIsQueryTransformer.go +28 -28
- package/native/transform/features/http/HttpParameterTransformer.go +22 -22
- package/native/transform/features/http/HttpQueryTransformer.go +28 -28
- package/native/transform/features/http/HttpValidateFormDataTransformer.go +22 -22
- package/native/transform/features/http/HttpValidateHeadersTransformer.go +22 -22
- package/native/transform/features/http/HttpValidateQueryTransformer.go +28 -28
- package/native/transform/features/http/http_transformer_entry_coverage_test.go +65 -65
- package/native/transform/features/json/JsonApplicationTransformer.go +75 -75
- package/native/transform/features/json/JsonAssertParseTransformer.go +22 -22
- package/native/transform/features/json/JsonAssertStringifyTransformer.go +22 -22
- package/native/transform/features/json/JsonCreateAssertParseTransformer.go +22 -22
- package/native/transform/features/json/JsonCreateAssertStringifyTransformer.go +22 -22
- package/native/transform/features/json/JsonCreateIsParseTransformer.go +22 -22
- package/native/transform/features/json/JsonCreateIsStringifyTransformer.go +22 -22
- package/native/transform/features/json/JsonCreateStringifyTransformer.go +22 -22
- package/native/transform/features/json/JsonCreateValidateParseTransformer.go +22 -22
- package/native/transform/features/json/JsonCreateValidateStringifyProgrammer.go +22 -22
- package/native/transform/features/json/JsonIsParseTransformer.go +22 -22
- package/native/transform/features/json/JsonIsStringifyTransformer.go +22 -22
- package/native/transform/features/json/JsonSchemaTransformer.go +175 -175
- package/native/transform/features/json/JsonSchemasTransformer.go +109 -109
- package/native/transform/features/json/JsonStringifyTransformer.go +22 -22
- package/native/transform/features/json/JsonValidateParseTransformer.go +22 -22
- package/native/transform/features/json/JsonValidateStringifyTransformer.go +22 -22
- package/native/transform/features/json/json_transformer_entry_coverage_test.go +56 -56
- package/native/transform/features/llm/LlmApplicationTransformer.go +54 -54
- package/native/transform/features/llm/LlmCoerceTransformer.go +63 -63
- package/native/transform/features/llm/LlmControllerTransformer.go +59 -59
- package/native/transform/features/llm/LlmCreateCoerceTransformer.go +54 -54
- package/native/transform/features/llm/LlmCreateParseTransformer.go +54 -54
- package/native/transform/features/llm/LlmParametersTransformer.go +49 -49
- package/native/transform/features/llm/LlmParseTransformer.go +63 -63
- package/native/transform/features/llm/LlmSchemaTransformer.go +167 -167
- package/native/transform/features/llm/LlmStructuredOutputTransformer.go +55 -55
- package/native/transform/features/llm/llm_transformer_entry_coverage_test.go +48 -48
- package/native/transform/features/notations/NotationAssertGeneralTransformer.go +27 -27
- package/native/transform/features/notations/NotationCreateAssertGeneralTransformer.go +27 -27
- package/native/transform/features/notations/NotationCreateGeneralTransformer.go +27 -27
- package/native/transform/features/notations/NotationCreateIsGeneralTransformer.go +27 -27
- package/native/transform/features/notations/NotationCreateValidateGeneralTransformer.go +27 -27
- package/native/transform/features/notations/NotationGeneralTransformer.go +36 -36
- package/native/transform/features/notations/NotationIsGeneralTransformer.go +27 -27
- package/native/transform/features/notations/NotationValidateGeneralTransformer.go +27 -27
- package/native/transform/features/notations/notation_transformer_entry_coverage_test.go +58 -58
- package/native/transform/features/plain/PlainAssertClassifyTransformer.go +22 -22
- package/native/transform/features/plain/PlainAssertCloneTransformer.go +22 -22
- package/native/transform/features/plain/PlainAssertPruneTransformer.go +22 -22
- package/native/transform/features/plain/PlainClassifyTransformer.go +22 -22
- package/native/transform/features/plain/PlainCloneTransformer.go +22 -22
- package/native/transform/features/plain/PlainCreateAssertClassifyTransformer.go +22 -22
- package/native/transform/features/plain/PlainCreateAssertCloneTransformer.go +22 -22
- package/native/transform/features/plain/PlainCreateAssertPruneTransformer.go +22 -22
- package/native/transform/features/plain/PlainCreateClassifyTransformer.go +22 -22
- package/native/transform/features/plain/PlainCreateCloneTransformer.go +22 -22
- package/native/transform/features/plain/PlainCreateIsCloneTransformer.go +22 -22
- package/native/transform/features/plain/PlainCreateIsPruneTransformer.go +22 -22
- package/native/transform/features/plain/PlainCreatePruneTransformer.go +22 -22
- package/native/transform/features/plain/PlainCreateValidateClassifyTransformer.go +22 -22
- package/native/transform/features/plain/PlainCreateValidateCloneTransformer.go +22 -22
- package/native/transform/features/plain/PlainCreateValidatePruneTransformer.go +22 -22
- package/native/transform/features/plain/PlainIsCloneTransformer.go +22 -22
- package/native/transform/features/plain/PlainIsPruneTransformer.go +22 -22
- package/native/transform/features/plain/PlainPruneTransformer.go +22 -22
- package/native/transform/features/plain/PlainValidateClassifyTransformer.go +22 -22
- package/native/transform/features/plain/PlainValidateCloneTransformer.go +22 -22
- package/native/transform/features/plain/PlainValidatePruneTransformer.go +22 -22
- package/native/transform/features/plain/plain_transformer_entry_coverage_test.go +61 -61
- package/native/transform/features/protobuf/ProtobufAssertDecodeTransformer.go +22 -22
- package/native/transform/features/protobuf/ProtobufAssertEncodeTransformer.go +22 -22
- package/native/transform/features/protobuf/ProtobufCreateAssertDecodeTransformer.go +22 -22
- package/native/transform/features/protobuf/ProtobufCreateAssertEncodeTransformer.go +22 -22
- package/native/transform/features/protobuf/ProtobufCreateDecodeTransformer.go +22 -22
- package/native/transform/features/protobuf/ProtobufCreateEncodeTransformer.go +22 -22
- package/native/transform/features/protobuf/ProtobufCreateIsDecodeTransformer.go +22 -22
- package/native/transform/features/protobuf/ProtobufCreateIsEncodeTransformer.go +22 -22
- package/native/transform/features/protobuf/ProtobufCreateValidateDecodeTransformer.go +22 -22
- package/native/transform/features/protobuf/ProtobufCreateValidateEncodeTransformer.go +22 -22
- package/native/transform/features/protobuf/ProtobufDecodeTransformer.go +22 -22
- package/native/transform/features/protobuf/ProtobufEncodeTransformer.go +22 -22
- package/native/transform/features/protobuf/ProtobufIsDecodeTransformer.go +22 -22
- package/native/transform/features/protobuf/ProtobufIsEncodeTransformer.go +22 -22
- package/native/transform/features/protobuf/ProtobufMessageTransformer.go +31 -31
- package/native/transform/features/protobuf/ProtobufValidateDecodeTransformer.go +22 -22
- package/native/transform/features/protobuf/ProtobufValidateEncodeTransformer.go +22 -22
- package/native/transform/features/protobuf/protobuf_transformer_entry_coverage_test.go +56 -56
- package/native/transform/features/reflect/ReflectLiteralsTransformer.go +32 -32
- package/native/transform/features/reflect/ReflectMetadataTransformer.go +73 -73
- package/native/transform/features/reflect/ReflectNameTransformer.go +100 -100
- package/native/transform/features/reflect/ReflectSchemaTransformer.go +153 -153
- package/native/transform/features/reflect/ReflectSchemasTransformer.go +68 -68
- package/native/transform/features/reflect/reflect_metadata_transformer_edge_branches_test.go +55 -55
- package/native/transform/features/reflect/reflect_transformer_entry_coverage_test.go +47 -47
- package/native/transform/file_transformer_coverage_test.go +94 -94
- package/native/transform/import_transformer_coverage_test.go +153 -153
- package/native/transform/index.go +1 -1
- package/native/transform/internal/GenericTransformer.go +236 -236
- package/native/transform/transform.go +57 -57
- package/native/transform/typia_generator_helpers_coverage_test.go +166 -166
- package/package.json +8 -15
- package/src/executable/TypiaGenerateWizard.ts +5 -1
- package/src/executable/generate/ttsc.ts +3 -4
- package/src/executable/typia.ts +8 -4
- package/src/internal/_ProtobufReader.ts +187 -187
- package/src/internal/_randomArray.ts +34 -34
- package/src/internal/_randomString.ts +30 -30
- package/src/re-exports.ts +8 -3
- package/src/transform.ts +21 -21
- package/lib/TypeGuardError2.mjs +0 -55
- package/lib/TypeGuardError2.mjs.map +0 -1
- package/lib/_virtual/NoTransformConfigurationError.mjs +0 -4
- package/lib/_virtual/NoTransformConfigurationError.mjs.map +0 -1
- package/lib/_virtual/TypeGuardError.mjs +0 -4
- package/lib/_virtual/TypeGuardError.mjs.map +0 -1
- package/lib/_virtual/TypiaGenerateWizard.mjs +0 -4
- package/lib/_virtual/TypiaGenerateWizard.mjs.map +0 -1
- package/lib/_virtual/_IProtobufWriter.mjs +0 -4
- package/lib/_virtual/_IProtobufWriter.mjs.map +0 -1
- package/lib/_virtual/_ProtobufReader.mjs +0 -4
- package/lib/_virtual/_ProtobufReader.mjs.map +0 -1
- package/lib/_virtual/_ProtobufSizer.mjs +0 -4
- package/lib/_virtual/_ProtobufSizer.mjs.map +0 -1
- package/lib/_virtual/_ProtobufWriter.mjs +0 -4
- package/lib/_virtual/_ProtobufWriter.mjs.map +0 -1
- package/lib/_virtual/__notationCapitalize.mjs +0 -4
- package/lib/_virtual/__notationCapitalize.mjs.map +0 -1
- package/lib/_virtual/__notationUnsnake.mjs +0 -4
- package/lib/_virtual/__notationUnsnake.mjs.map +0 -1
- package/lib/_virtual/_accessExpressionAsString.mjs +0 -4
- package/lib/_virtual/_accessExpressionAsString.mjs.map +0 -1
- package/lib/_virtual/_assertGuard.mjs +0 -4
- package/lib/_virtual/_assertGuard.mjs.map +0 -1
- package/lib/_virtual/_coerceLlmArguments.mjs +0 -4
- package/lib/_virtual/_coerceLlmArguments.mjs.map +0 -1
- package/lib/_virtual/_commander.mjs +0 -7
- package/lib/_virtual/_commander.mjs.map +0 -1
- package/lib/_virtual/_commonjsHelpers.mjs +0 -35
- package/lib/_virtual/_commonjsHelpers.mjs.map +0 -1
- package/lib/_virtual/_createStandardSchema.mjs +0 -4
- package/lib/_virtual/_createStandardSchema.mjs.map +0 -1
- package/lib/_virtual/_functionalTypeGuardErrorFactory.mjs +0 -4
- package/lib/_virtual/_functionalTypeGuardErrorFactory.mjs.map +0 -1
- package/lib/_virtual/_httpFormDataReadArray.mjs +0 -4
- package/lib/_virtual/_httpFormDataReadArray.mjs.map +0 -1
- package/lib/_virtual/_httpFormDataReadBigint.mjs +0 -4
- package/lib/_virtual/_httpFormDataReadBigint.mjs.map +0 -1
- package/lib/_virtual/_httpFormDataReadBlob.mjs +0 -4
- package/lib/_virtual/_httpFormDataReadBlob.mjs.map +0 -1
- package/lib/_virtual/_httpFormDataReadBoolean.mjs +0 -4
- package/lib/_virtual/_httpFormDataReadBoolean.mjs.map +0 -1
- package/lib/_virtual/_httpFormDataReadFile.mjs +0 -4
- package/lib/_virtual/_httpFormDataReadFile.mjs.map +0 -1
- package/lib/_virtual/_httpFormDataReadNumber.mjs +0 -4
- package/lib/_virtual/_httpFormDataReadNumber.mjs.map +0 -1
- package/lib/_virtual/_httpFormDataReadString.mjs +0 -4
- package/lib/_virtual/_httpFormDataReadString.mjs.map +0 -1
- package/lib/_virtual/_httpHeaderReadBigint.mjs +0 -4
- package/lib/_virtual/_httpHeaderReadBigint.mjs.map +0 -1
- package/lib/_virtual/_httpHeaderReadBoolean.mjs +0 -4
- package/lib/_virtual/_httpHeaderReadBoolean.mjs.map +0 -1
- package/lib/_virtual/_httpHeaderReadNumber.mjs +0 -4
- package/lib/_virtual/_httpHeaderReadNumber.mjs.map +0 -1
- package/lib/_virtual/_httpParameterReadBigint.mjs +0 -4
- package/lib/_virtual/_httpParameterReadBigint.mjs.map +0 -1
- package/lib/_virtual/_httpParameterReadBoolean.mjs +0 -4
- package/lib/_virtual/_httpParameterReadBoolean.mjs.map +0 -1
- package/lib/_virtual/_httpParameterReadNumber.mjs +0 -4
- package/lib/_virtual/_httpParameterReadNumber.mjs.map +0 -1
- package/lib/_virtual/_httpParameterReadString.mjs +0 -4
- package/lib/_virtual/_httpParameterReadString.mjs.map +0 -1
- package/lib/_virtual/_httpQueryParseURLSearchParams.mjs +0 -4
- package/lib/_virtual/_httpQueryParseURLSearchParams.mjs.map +0 -1
- package/lib/_virtual/_httpQueryReadArray.mjs +0 -4
- package/lib/_virtual/_httpQueryReadArray.mjs.map +0 -1
- package/lib/_virtual/_httpQueryReadBigint.mjs +0 -4
- package/lib/_virtual/_httpQueryReadBigint.mjs.map +0 -1
- package/lib/_virtual/_httpQueryReadBoolean.mjs +0 -4
- package/lib/_virtual/_httpQueryReadBoolean.mjs.map +0 -1
- package/lib/_virtual/_httpQueryReadNumber.mjs +0 -4
- package/lib/_virtual/_httpQueryReadNumber.mjs.map +0 -1
- package/lib/_virtual/_httpQueryReadString.mjs +0 -4
- package/lib/_virtual/_httpQueryReadString.mjs.map +0 -1
- package/lib/_virtual/_inquirer.mjs +0 -7
- package/lib/_virtual/_inquirer.mjs.map +0 -1
- package/lib/_virtual/_isBetween.mjs +0 -4
- package/lib/_virtual/_isBetween.mjs.map +0 -1
- package/lib/_virtual/_isBigintString.mjs +0 -4
- package/lib/_virtual/_isBigintString.mjs.map +0 -1
- package/lib/_virtual/_isFormatByte.mjs +0 -4
- package/lib/_virtual/_isFormatByte.mjs.map +0 -1
- package/lib/_virtual/_isFormatDate.mjs +0 -4
- package/lib/_virtual/_isFormatDate.mjs.map +0 -1
- package/lib/_virtual/_isFormatDateTime.mjs +0 -4
- package/lib/_virtual/_isFormatDateTime.mjs.map +0 -1
- package/lib/_virtual/_isFormatDuration.mjs +0 -4
- package/lib/_virtual/_isFormatDuration.mjs.map +0 -1
- package/lib/_virtual/_isFormatEmail.mjs +0 -4
- package/lib/_virtual/_isFormatEmail.mjs.map +0 -1
- package/lib/_virtual/_isFormatHostname.mjs +0 -4
- package/lib/_virtual/_isFormatHostname.mjs.map +0 -1
- package/lib/_virtual/_isFormatIdnEmail.mjs +0 -4
- package/lib/_virtual/_isFormatIdnEmail.mjs.map +0 -1
- package/lib/_virtual/_isFormatIdnHostname.mjs +0 -4
- package/lib/_virtual/_isFormatIdnHostname.mjs.map +0 -1
- package/lib/_virtual/_isFormatIpv4.mjs +0 -4
- package/lib/_virtual/_isFormatIpv4.mjs.map +0 -1
- package/lib/_virtual/_isFormatIpv6.mjs +0 -4
- package/lib/_virtual/_isFormatIpv6.mjs.map +0 -1
- package/lib/_virtual/_isFormatIri.mjs +0 -4
- package/lib/_virtual/_isFormatIri.mjs.map +0 -1
- package/lib/_virtual/_isFormatIriReference.mjs +0 -4
- package/lib/_virtual/_isFormatIriReference.mjs.map +0 -1
- package/lib/_virtual/_isFormatJsonPointer.mjs +0 -4
- package/lib/_virtual/_isFormatJsonPointer.mjs.map +0 -1
- package/lib/_virtual/_isFormatPassword.mjs +0 -4
- package/lib/_virtual/_isFormatPassword.mjs.map +0 -1
- package/lib/_virtual/_isFormatRegex.mjs +0 -4
- package/lib/_virtual/_isFormatRegex.mjs.map +0 -1
- package/lib/_virtual/_isFormatRelativeJsonPointer.mjs +0 -4
- package/lib/_virtual/_isFormatRelativeJsonPointer.mjs.map +0 -1
- package/lib/_virtual/_isFormatTime.mjs +0 -4
- package/lib/_virtual/_isFormatTime.mjs.map +0 -1
- package/lib/_virtual/_isFormatUri.mjs +0 -4
- package/lib/_virtual/_isFormatUri.mjs.map +0 -1
- package/lib/_virtual/_isFormatUriReference.mjs +0 -4
- package/lib/_virtual/_isFormatUriReference.mjs.map +0 -1
- package/lib/_virtual/_isFormatUriTemplate.mjs +0 -4
- package/lib/_virtual/_isFormatUriTemplate.mjs.map +0 -1
- package/lib/_virtual/_isFormatUrl.mjs +0 -4
- package/lib/_virtual/_isFormatUrl.mjs.map +0 -1
- package/lib/_virtual/_isFormatUuid.mjs +0 -4
- package/lib/_virtual/_isFormatUuid.mjs.map +0 -1
- package/lib/_virtual/_isTypeFloat.mjs +0 -4
- package/lib/_virtual/_isTypeFloat.mjs.map +0 -1
- package/lib/_virtual/_isTypeInt16.mjs +0 -4
- package/lib/_virtual/_isTypeInt16.mjs.map +0 -1
- package/lib/_virtual/_isTypeInt32.mjs +0 -4
- package/lib/_virtual/_isTypeInt32.mjs.map +0 -1
- package/lib/_virtual/_isTypeInt64.mjs +0 -4
- package/lib/_virtual/_isTypeInt64.mjs.map +0 -1
- package/lib/_virtual/_isTypeInt8.mjs +0 -4
- package/lib/_virtual/_isTypeInt8.mjs.map +0 -1
- package/lib/_virtual/_isTypeUint16.mjs +0 -4
- package/lib/_virtual/_isTypeUint16.mjs.map +0 -1
- package/lib/_virtual/_isTypeUint32.mjs +0 -4
- package/lib/_virtual/_isTypeUint32.mjs.map +0 -1
- package/lib/_virtual/_isTypeUint64.mjs +0 -4
- package/lib/_virtual/_isTypeUint64.mjs.map +0 -1
- package/lib/_virtual/_isTypeUint8.mjs +0 -4
- package/lib/_virtual/_isTypeUint8.mjs.map +0 -1
- package/lib/_virtual/_isUniqueItems.mjs +0 -4
- package/lib/_virtual/_isUniqueItems.mjs.map +0 -1
- package/lib/_virtual/_jsonStringifyNumber.mjs +0 -4
- package/lib/_virtual/_jsonStringifyNumber.mjs.map +0 -1
- package/lib/_virtual/_jsonStringifyRest.mjs +0 -4
- package/lib/_virtual/_jsonStringifyRest.mjs.map +0 -1
- package/lib/_virtual/_jsonStringifyString.mjs +0 -4
- package/lib/_virtual/_jsonStringifyString.mjs.map +0 -1
- package/lib/_virtual/_jsonStringifyTail.mjs +0 -4
- package/lib/_virtual/_jsonStringifyTail.mjs.map +0 -1
- package/lib/_virtual/_llmApplicationFinalize.mjs +0 -4
- package/lib/_virtual/_llmApplicationFinalize.mjs.map +0 -1
- package/lib/_virtual/_node_child_process.mjs +0 -7
- package/lib/_virtual/_node_child_process.mjs.map +0 -1
- package/lib/_virtual/_node_fs.mjs +0 -7
- package/lib/_virtual/_node_fs.mjs.map +0 -1
- package/lib/_virtual/_node_module.mjs +0 -7
- package/lib/_virtual/_node_module.mjs.map +0 -1
- package/lib/_virtual/_node_path.mjs +0 -7
- package/lib/_virtual/_node_path.mjs.map +0 -1
- package/lib/_virtual/_notationAny.mjs +0 -4
- package/lib/_virtual/_notationAny.mjs.map +0 -1
- package/lib/_virtual/_notationCamel.mjs +0 -4
- package/lib/_virtual/_notationCamel.mjs.map +0 -1
- package/lib/_virtual/_notationPascal.mjs +0 -4
- package/lib/_virtual/_notationPascal.mjs.map +0 -1
- package/lib/_virtual/_notationSnake.mjs +0 -4
- package/lib/_virtual/_notationSnake.mjs.map +0 -1
- package/lib/_virtual/_parseLlmArguments.mjs +0 -4
- package/lib/_virtual/_parseLlmArguments.mjs.map +0 -1
- package/lib/_virtual/_plainCloneAny.mjs +0 -4
- package/lib/_virtual/_plainCloneAny.mjs.map +0 -1
- package/lib/_virtual/_randexp.mjs +0 -7
- package/lib/_virtual/_randexp.mjs.map +0 -1
- package/lib/_virtual/_randomArray.mjs +0 -4
- package/lib/_virtual/_randomArray.mjs.map +0 -1
- package/lib/_virtual/_randomBigint.mjs +0 -4
- package/lib/_virtual/_randomBigint.mjs.map +0 -1
- package/lib/_virtual/_randomBoolean.mjs +0 -4
- package/lib/_virtual/_randomBoolean.mjs.map +0 -1
- package/lib/_virtual/_randomFormatByte.mjs +0 -4
- package/lib/_virtual/_randomFormatByte.mjs.map +0 -1
- package/lib/_virtual/_randomFormatDate.mjs +0 -4
- package/lib/_virtual/_randomFormatDate.mjs.map +0 -1
- package/lib/_virtual/_randomFormatDatetime.mjs +0 -4
- package/lib/_virtual/_randomFormatDatetime.mjs.map +0 -1
- package/lib/_virtual/_randomFormatDuration.mjs +0 -4
- package/lib/_virtual/_randomFormatDuration.mjs.map +0 -1
- package/lib/_virtual/_randomFormatEmail.mjs +0 -4
- package/lib/_virtual/_randomFormatEmail.mjs.map +0 -1
- package/lib/_virtual/_randomFormatHostname.mjs +0 -4
- package/lib/_virtual/_randomFormatHostname.mjs.map +0 -1
- package/lib/_virtual/_randomFormatIdnEmail.mjs +0 -4
- package/lib/_virtual/_randomFormatIdnEmail.mjs.map +0 -1
- package/lib/_virtual/_randomFormatIdnHostname.mjs +0 -4
- package/lib/_virtual/_randomFormatIdnHostname.mjs.map +0 -1
- package/lib/_virtual/_randomFormatIpv4.mjs +0 -4
- package/lib/_virtual/_randomFormatIpv4.mjs.map +0 -1
- package/lib/_virtual/_randomFormatIpv6.mjs +0 -4
- package/lib/_virtual/_randomFormatIpv6.mjs.map +0 -1
- package/lib/_virtual/_randomFormatIri.mjs +0 -4
- package/lib/_virtual/_randomFormatIri.mjs.map +0 -1
- package/lib/_virtual/_randomFormatIriReference.mjs +0 -4
- package/lib/_virtual/_randomFormatIriReference.mjs.map +0 -1
- package/lib/_virtual/_randomFormatJsonPointer.mjs +0 -4
- package/lib/_virtual/_randomFormatJsonPointer.mjs.map +0 -1
- package/lib/_virtual/_randomFormatPassword.mjs +0 -4
- package/lib/_virtual/_randomFormatPassword.mjs.map +0 -1
- package/lib/_virtual/_randomFormatRegex.mjs +0 -4
- package/lib/_virtual/_randomFormatRegex.mjs.map +0 -1
- package/lib/_virtual/_randomFormatRelativeJsonPointer.mjs +0 -4
- package/lib/_virtual/_randomFormatRelativeJsonPointer.mjs.map +0 -1
- package/lib/_virtual/_randomFormatTime.mjs +0 -4
- package/lib/_virtual/_randomFormatTime.mjs.map +0 -1
- package/lib/_virtual/_randomFormatUri.mjs +0 -4
- package/lib/_virtual/_randomFormatUri.mjs.map +0 -1
- package/lib/_virtual/_randomFormatUriReference.mjs +0 -4
- package/lib/_virtual/_randomFormatUriReference.mjs.map +0 -1
- package/lib/_virtual/_randomFormatUriTemplate.mjs +0 -4
- package/lib/_virtual/_randomFormatUriTemplate.mjs.map +0 -1
- package/lib/_virtual/_randomFormatUrl.mjs +0 -4
- package/lib/_virtual/_randomFormatUrl.mjs.map +0 -1
- package/lib/_virtual/_randomFormatUuid.mjs +0 -4
- package/lib/_virtual/_randomFormatUuid.mjs.map +0 -1
- package/lib/_virtual/_randomInteger.mjs +0 -4
- package/lib/_virtual/_randomInteger.mjs.map +0 -1
- package/lib/_virtual/_randomNumber.mjs +0 -4
- package/lib/_virtual/_randomNumber.mjs.map +0 -1
- package/lib/_virtual/_randomPattern.mjs +0 -4
- package/lib/_virtual/_randomPattern.mjs.map +0 -1
- package/lib/_virtual/_randomPick.mjs +0 -4
- package/lib/_virtual/_randomPick.mjs.map +0 -1
- package/lib/_virtual/_randomString.mjs +0 -4
- package/lib/_virtual/_randomString.mjs.map +0 -1
- package/lib/_virtual/_throwTypeGuardError.mjs +0 -4
- package/lib/_virtual/_throwTypeGuardError.mjs.map +0 -1
- package/lib/_virtual/_tinyglobby.mjs +0 -7
- package/lib/_virtual/_tinyglobby.mjs.map +0 -1
- package/lib/_virtual/_validateReport.mjs +0 -4
- package/lib/_virtual/_validateReport.mjs.map +0 -1
- package/lib/_virtual/compare.mjs +0 -4
- package/lib/_virtual/compare.mjs.map +0 -1
- package/lib/_virtual/functional.mjs +0 -4
- package/lib/_virtual/functional.mjs.map +0 -1
- package/lib/_virtual/http.mjs +0 -4
- package/lib/_virtual/http.mjs.map +0 -1
- package/lib/_virtual/index.mjs +0 -4
- package/lib/_virtual/index.mjs.map +0 -1
- package/lib/_virtual/json.mjs +0 -4
- package/lib/_virtual/json.mjs.map +0 -1
- package/lib/_virtual/llm.mjs +0 -4
- package/lib/_virtual/llm.mjs.map +0 -1
- package/lib/_virtual/module.mjs +0 -4
- package/lib/_virtual/module.mjs.map +0 -1
- package/lib/_virtual/notations.mjs +0 -4
- package/lib/_virtual/notations.mjs.map +0 -1
- package/lib/_virtual/plain.mjs +0 -4
- package/lib/_virtual/plain.mjs.map +0 -1
- package/lib/_virtual/protobuf.mjs +0 -4
- package/lib/_virtual/protobuf.mjs.map +0 -1
- package/lib/_virtual/re-exports.mjs +0 -4
- package/lib/_virtual/re-exports.mjs.map +0 -1
- package/lib/_virtual/reflect.mjs +0 -4
- package/lib/_virtual/reflect.mjs.map +0 -1
- package/lib/_virtual/transform.mjs +0 -4
- package/lib/_virtual/transform.mjs.map +0 -1
- package/lib/_virtual/ttsc.mjs +0 -4
- package/lib/_virtual/ttsc.mjs.map +0 -1
- package/lib/_virtual/typia.mjs +0 -4
- package/lib/_virtual/typia.mjs.map +0 -1
- package/lib/compare2.mjs +0 -39
- package/lib/compare2.mjs.map +0 -1
- package/lib/executable/TypiaGenerateWizard2.mjs +0 -719
- package/lib/executable/TypiaGenerateWizard2.mjs.map +0 -1
- package/lib/executable/generate/ttsc2.mjs +0 -56
- package/lib/executable/generate/ttsc2.mjs.map +0 -1
- package/lib/executable/typia2.mjs +0 -88
- package/lib/executable/typia2.mjs.map +0 -1
- package/lib/functional2.mjs +0 -99
- package/lib/functional2.mjs.map +0 -1
- package/lib/http2.mjs +0 -139
- package/lib/http2.mjs.map +0 -1
- package/lib/index2.mjs +0 -53
- package/lib/index2.mjs.map +0 -1
- package/lib/internal/_IProtobufWriter.mjs.map +0 -1
- package/lib/internal/_IProtobufWriter2.mjs +0 -6
- package/lib/internal/_IProtobufWriter2.mjs.map +0 -1
- package/lib/internal/_ProtobufReader2.mjs +0 -169
- package/lib/internal/_ProtobufReader2.mjs.map +0 -1
- package/lib/internal/_ProtobufSizer2.mjs +0 -119
- package/lib/internal/_ProtobufSizer2.mjs.map +0 -1
- package/lib/internal/_ProtobufWriter2.mjs +0 -107
- package/lib/internal/_ProtobufWriter2.mjs.map +0 -1
- package/lib/internal/_accessExpressionAsString2.mjs +0 -49
- package/lib/internal/_accessExpressionAsString2.mjs.map +0 -1
- package/lib/internal/_assertGuard2.mjs +0 -20
- package/lib/internal/_assertGuard2.mjs.map +0 -1
- package/lib/internal/_coerceLlmArguments2.mjs +0 -11
- package/lib/internal/_coerceLlmArguments2.mjs.map +0 -1
- package/lib/internal/_createStandardSchema2.mjs +0 -138
- package/lib/internal/_createStandardSchema2.mjs.map +0 -1
- package/lib/internal/_functionalTypeGuardErrorFactory2.mjs +0 -12
- package/lib/internal/_functionalTypeGuardErrorFactory2.mjs.map +0 -1
- package/lib/internal/_httpFormDataReadArray2.mjs +0 -9
- package/lib/internal/_httpFormDataReadArray2.mjs.map +0 -1
- package/lib/internal/_httpFormDataReadBigint2.mjs +0 -23
- package/lib/internal/_httpFormDataReadBigint2.mjs.map +0 -1
- package/lib/internal/_httpFormDataReadBlob2.mjs +0 -15
- package/lib/internal/_httpFormDataReadBlob2.mjs.map +0 -1
- package/lib/internal/_httpFormDataReadBoolean2.mjs +0 -21
- package/lib/internal/_httpFormDataReadBoolean2.mjs.map +0 -1
- package/lib/internal/_httpFormDataReadFile2.mjs +0 -15
- package/lib/internal/_httpFormDataReadFile2.mjs.map +0 -1
- package/lib/internal/_httpFormDataReadNumber2.mjs +0 -19
- package/lib/internal/_httpFormDataReadNumber2.mjs.map +0 -1
- package/lib/internal/_httpFormDataReadString2.mjs +0 -15
- package/lib/internal/_httpFormDataReadString2.mjs.map +0 -1
- package/lib/internal/_httpHeaderReadBigint2.mjs +0 -17
- package/lib/internal/_httpHeaderReadBigint2.mjs.map +0 -1
- package/lib/internal/_httpHeaderReadBoolean2.mjs +0 -15
- package/lib/internal/_httpHeaderReadBoolean2.mjs.map +0 -1
- package/lib/internal/_httpHeaderReadNumber2.mjs +0 -13
- package/lib/internal/_httpHeaderReadNumber2.mjs.map +0 -1
- package/lib/internal/_httpParameterReadBigint2.mjs +0 -17
- package/lib/internal/_httpParameterReadBigint2.mjs.map +0 -1
- package/lib/internal/_httpParameterReadBoolean2.mjs +0 -15
- package/lib/internal/_httpParameterReadBoolean2.mjs.map +0 -1
- package/lib/internal/_httpParameterReadNumber2.mjs +0 -13
- package/lib/internal/_httpParameterReadNumber2.mjs.map +0 -1
- package/lib/internal/_httpParameterReadString2.mjs +0 -9
- package/lib/internal/_httpParameterReadString2.mjs.map +0 -1
- package/lib/internal/_httpQueryParseURLSearchParams2.mjs +0 -16
- package/lib/internal/_httpQueryParseURLSearchParams2.mjs.map +0 -1
- package/lib/internal/_httpQueryReadArray2.mjs +0 -9
- package/lib/internal/_httpQueryReadArray2.mjs.map +0 -1
- package/lib/internal/_httpQueryReadBigint2.mjs +0 -17
- package/lib/internal/_httpQueryReadBigint2.mjs.map +0 -1
- package/lib/internal/_httpQueryReadBoolean2.mjs +0 -19
- package/lib/internal/_httpQueryReadBoolean2.mjs.map +0 -1
- package/lib/internal/_httpQueryReadNumber2.mjs +0 -13
- package/lib/internal/_httpQueryReadNumber2.mjs.map +0 -1
- package/lib/internal/_httpQueryReadString2.mjs +0 -9
- package/lib/internal/_httpQueryReadString2.mjs.map +0 -1
- package/lib/internal/_isBetween2.mjs +0 -9
- package/lib/internal/_isBetween2.mjs.map +0 -1
- package/lib/internal/_isBigintString2.mjs +0 -17
- package/lib/internal/_isBigintString2.mjs.map +0 -1
- package/lib/internal/_isFormatByte2.mjs +0 -13
- package/lib/internal/_isFormatByte2.mjs.map +0 -1
- package/lib/internal/_isFormatDate2.mjs +0 -10
- package/lib/internal/_isFormatDate2.mjs.map +0 -1
- package/lib/internal/_isFormatDateTime2.mjs +0 -10
- package/lib/internal/_isFormatDateTime2.mjs.map +0 -1
- package/lib/internal/_isFormatDuration2.mjs +0 -10
- package/lib/internal/_isFormatDuration2.mjs.map +0 -1
- package/lib/internal/_isFormatEmail2.mjs +0 -10
- package/lib/internal/_isFormatEmail2.mjs.map +0 -1
- package/lib/internal/_isFormatHostname2.mjs +0 -10
- package/lib/internal/_isFormatHostname2.mjs.map +0 -1
- package/lib/internal/_isFormatIdnEmail2.mjs +0 -10
- package/lib/internal/_isFormatIdnEmail2.mjs.map +0 -1
- package/lib/internal/_isFormatIdnHostname2.mjs +0 -10
- package/lib/internal/_isFormatIdnHostname2.mjs.map +0 -1
- package/lib/internal/_isFormatIpv42.mjs +0 -10
- package/lib/internal/_isFormatIpv42.mjs.map +0 -1
- package/lib/internal/_isFormatIpv62.mjs +0 -10
- package/lib/internal/_isFormatIpv62.mjs.map +0 -1
- package/lib/internal/_isFormatIri2.mjs +0 -10
- package/lib/internal/_isFormatIri2.mjs.map +0 -1
- package/lib/internal/_isFormatIriReference2.mjs +0 -10
- package/lib/internal/_isFormatIriReference2.mjs.map +0 -1
- package/lib/internal/_isFormatJsonPointer2.mjs +0 -10
- package/lib/internal/_isFormatJsonPointer2.mjs.map +0 -1
- package/lib/internal/_isFormatPassword2.mjs +0 -9
- package/lib/internal/_isFormatPassword2.mjs.map +0 -1
- package/lib/internal/_isFormatRegex2.mjs +0 -17
- package/lib/internal/_isFormatRegex2.mjs.map +0 -1
- package/lib/internal/_isFormatRelativeJsonPointer2.mjs +0 -10
- package/lib/internal/_isFormatRelativeJsonPointer2.mjs.map +0 -1
- package/lib/internal/_isFormatTime2.mjs +0 -10
- package/lib/internal/_isFormatTime2.mjs.map +0 -1
- package/lib/internal/_isFormatUri2.mjs +0 -11
- package/lib/internal/_isFormatUri2.mjs.map +0 -1
- package/lib/internal/_isFormatUriReference2.mjs +0 -10
- package/lib/internal/_isFormatUriReference2.mjs.map +0 -1
- package/lib/internal/_isFormatUriTemplate2.mjs +0 -10
- package/lib/internal/_isFormatUriTemplate2.mjs.map +0 -1
- package/lib/internal/_isFormatUrl2.mjs +0 -10
- package/lib/internal/_isFormatUrl2.mjs.map +0 -1
- package/lib/internal/_isFormatUuid2.mjs +0 -10
- package/lib/internal/_isFormatUuid2.mjs.map +0 -1
- package/lib/internal/_isTypeFloat2.mjs +0 -11
- package/lib/internal/_isTypeFloat2.mjs.map +0 -1
- package/lib/internal/_isTypeInt162.mjs +0 -11
- package/lib/internal/_isTypeInt162.mjs.map +0 -1
- package/lib/internal/_isTypeInt322.mjs +0 -11
- package/lib/internal/_isTypeInt322.mjs.map +0 -1
- package/lib/internal/_isTypeInt642.mjs +0 -11
- package/lib/internal/_isTypeInt642.mjs.map +0 -1
- package/lib/internal/_isTypeInt82.mjs +0 -11
- package/lib/internal/_isTypeInt82.mjs.map +0 -1
- package/lib/internal/_isTypeUint162.mjs +0 -11
- package/lib/internal/_isTypeUint162.mjs.map +0 -1
- package/lib/internal/_isTypeUint322.mjs +0 -11
- package/lib/internal/_isTypeUint322.mjs.map +0 -1
- package/lib/internal/_isTypeUint642.mjs +0 -11
- package/lib/internal/_isTypeUint642.mjs.map +0 -1
- package/lib/internal/_isTypeUint82.mjs +0 -11
- package/lib/internal/_isTypeUint82.mjs.map +0 -1
- package/lib/internal/_isUniqueItems2.mjs +0 -143
- package/lib/internal/_isUniqueItems2.mjs.map +0 -1
- package/lib/internal/_jsonStringifyNumber2.mjs +0 -9
- package/lib/internal/_jsonStringifyNumber2.mjs.map +0 -1
- package/lib/internal/_jsonStringifyRest2.mjs +0 -11
- package/lib/internal/_jsonStringifyRest2.mjs.map +0 -1
- package/lib/internal/_jsonStringifyString2.mjs +0 -45
- package/lib/internal/_jsonStringifyString2.mjs.map +0 -1
- package/lib/internal/_jsonStringifyTail2.mjs +0 -9
- package/lib/internal/_jsonStringifyTail2.mjs.map +0 -1
- package/lib/internal/_llmApplicationFinalize2.mjs +0 -11
- package/lib/internal/_llmApplicationFinalize2.mjs.map +0 -1
- package/lib/internal/_notationAny2.mjs +0 -42
- package/lib/internal/_notationAny2.mjs.map +0 -1
- package/lib/internal/_notationCamel2.mjs +0 -21
- package/lib/internal/_notationCamel2.mjs.map +0 -1
- package/lib/internal/_notationPascal2.mjs +0 -17
- package/lib/internal/_notationPascal2.mjs.map +0 -1
- package/lib/internal/_notationSnake2.mjs +0 -54
- package/lib/internal/_notationSnake2.mjs.map +0 -1
- package/lib/internal/_parseLlmArguments2.mjs +0 -11
- package/lib/internal/_parseLlmArguments2.mjs.map +0 -1
- package/lib/internal/_plainCloneAny2.mjs +0 -67
- package/lib/internal/_plainCloneAny2.mjs.map +0 -1
- package/lib/internal/_randomArray2.mjs +0 -31
- package/lib/internal/_randomArray2.mjs.map +0 -1
- package/lib/internal/_randomBigint2.mjs +0 -12
- package/lib/internal/_randomBigint2.mjs.map +0 -1
- package/lib/internal/_randomBoolean2.mjs +0 -9
- package/lib/internal/_randomBoolean2.mjs.map +0 -1
- package/lib/internal/_randomFormatByte2.mjs +0 -10
- package/lib/internal/_randomFormatByte2.mjs.map +0 -1
- package/lib/internal/_randomFormatDate2.mjs +0 -20
- package/lib/internal/_randomFormatDate2.mjs.map +0 -1
- package/lib/internal/_randomFormatDatetime2.mjs +0 -18
- package/lib/internal/_randomFormatDatetime2.mjs.map +0 -1
- package/lib/internal/_randomFormatDuration2.mjs +0 -35
- package/lib/internal/_randomFormatDuration2.mjs.map +0 -1
- package/lib/internal/_randomFormatEmail2.mjs +0 -17
- package/lib/internal/_randomFormatEmail2.mjs.map +0 -1
- package/lib/internal/_randomFormatHostname2.mjs +0 -13
- package/lib/internal/_randomFormatHostname2.mjs.map +0 -1
- package/lib/internal/_randomFormatIdnEmail2.mjs +0 -12
- package/lib/internal/_randomFormatIdnEmail2.mjs.map +0 -1
- package/lib/internal/_randomFormatIdnHostname2.mjs +0 -12
- package/lib/internal/_randomFormatIdnHostname2.mjs.map +0 -1
- package/lib/internal/_randomFormatIpv42.mjs +0 -17
- package/lib/internal/_randomFormatIpv42.mjs.map +0 -1
- package/lib/internal/_randomFormatIpv62.mjs +0 -17
- package/lib/internal/_randomFormatIpv62.mjs.map +0 -1
- package/lib/internal/_randomFormatIri2.mjs +0 -12
- package/lib/internal/_randomFormatIri2.mjs.map +0 -1
- package/lib/internal/_randomFormatIriReference2.mjs +0 -12
- package/lib/internal/_randomFormatIriReference2.mjs.map +0 -1
- package/lib/internal/_randomFormatJsonPointer2.mjs +0 -13
- package/lib/internal/_randomFormatJsonPointer2.mjs.map +0 -1
- package/lib/internal/_randomFormatPassword2.mjs +0 -16
- package/lib/internal/_randomFormatPassword2.mjs.map +0 -1
- package/lib/internal/_randomFormatRegex2.mjs +0 -10
- package/lib/internal/_randomFormatRegex2.mjs.map +0 -1
- package/lib/internal/_randomFormatRelativeJsonPointer2.mjs +0 -16
- package/lib/internal/_randomFormatRelativeJsonPointer2.mjs.map +0 -1
- package/lib/internal/_randomFormatTime2.mjs +0 -19
- package/lib/internal/_randomFormatTime2.mjs.map +0 -1
- package/lib/internal/_randomFormatUri2.mjs +0 -12
- package/lib/internal/_randomFormatUri2.mjs.map +0 -1
- package/lib/internal/_randomFormatUriReference2.mjs +0 -12
- package/lib/internal/_randomFormatUriReference2.mjs.map +0 -1
- package/lib/internal/_randomFormatUriTemplate2.mjs +0 -12
- package/lib/internal/_randomFormatUriTemplate2.mjs.map +0 -1
- package/lib/internal/_randomFormatUrl2.mjs +0 -17
- package/lib/internal/_randomFormatUrl2.mjs.map +0 -1
- package/lib/internal/_randomFormatUuid2.mjs +0 -13
- package/lib/internal/_randomFormatUuid2.mjs.map +0 -1
- package/lib/internal/_randomInteger2.mjs +0 -47
- package/lib/internal/_randomInteger2.mjs.map +0 -1
- package/lib/internal/_randomNumber2.mjs +0 -66
- package/lib/internal/_randomNumber2.mjs.map +0 -1
- package/lib/internal/_randomPattern2.mjs +0 -22
- package/lib/internal/_randomPattern2.mjs.map +0 -1
- package/lib/internal/_randomPick2.mjs +0 -17
- package/lib/internal/_randomPick2.mjs.map +0 -1
- package/lib/internal/_randomString2.mjs +0 -32
- package/lib/internal/_randomString2.mjs.map +0 -1
- package/lib/internal/_throwTypeGuardError2.mjs +0 -14
- package/lib/internal/_throwTypeGuardError2.mjs.map +0 -1
- package/lib/internal/_validateReport2.mjs +0 -29
- package/lib/internal/_validateReport2.mjs.map +0 -1
- package/lib/internal/private/__notationCapitalize2.mjs +0 -9
- package/lib/internal/private/__notationCapitalize2.mjs.map +0 -1
- package/lib/internal/private/__notationUnsnake2.mjs +0 -29
- package/lib/internal/private/__notationUnsnake2.mjs.map +0 -1
- package/lib/json2.mjs +0 -94
- package/lib/json2.mjs.map +0 -1
- package/lib/llm2.mjs +0 -54
- package/lib/llm2.mjs.map +0 -1
- package/lib/module2.mjs +0 -185
- package/lib/module2.mjs.map +0 -1
- package/lib/notations2.mjs +0 -169
- package/lib/notations2.mjs.map +0 -1
- package/lib/plain2.mjs +0 -119
- package/lib/plain2.mjs.map +0 -1
- package/lib/protobuf2.mjs +0 -94
- package/lib/protobuf2.mjs.map +0 -1
- package/lib/re-exports.mjs.map +0 -1
- package/lib/re-exports2.mjs +0 -17
- package/lib/re-exports2.mjs.map +0 -1
- package/lib/reflect2.mjs +0 -29
- package/lib/reflect2.mjs.map +0 -1
- package/lib/transform2.mjs +0 -26
- package/lib/transform2.mjs.map +0 -1
- package/lib/transformers/NoTransformConfigurationError2.mjs +0 -21
- package/lib/transformers/NoTransformConfigurationError2.mjs.map +0 -1
|
@@ -1,590 +1,590 @@
|
|
|
1
|
-
package main
|
|
2
|
-
|
|
3
|
-
import (
|
|
4
|
-
"os"
|
|
5
|
-
"os/exec"
|
|
6
|
-
"path/filepath"
|
|
7
|
-
"strings"
|
|
8
|
-
"testing"
|
|
9
|
-
)
|
|
10
|
-
|
|
11
|
-
// TestIntersectionUnionValidationTransform verifies intersected unions co-operate.
|
|
12
|
-
//
|
|
13
|
-
// Issue #1590 combines two discriminated unions through an intersection:
|
|
14
|
-
// `(Individual | Corporation) & ({ partyRole: "customer" } | OtherRole)`.
|
|
15
|
-
// The validator must accept a value whose left union branch contains a native
|
|
16
|
-
// Date and whose right union branch is selected by another discriminator. The
|
|
17
|
-
// same fixture also pins shared-field guards and primitive/native overlap
|
|
18
|
-
// decisions whose metadata may otherwise misroute union validation.
|
|
19
|
-
//
|
|
20
|
-
// 1. Transform the intersected-union fixture into JavaScript.
|
|
21
|
-
// 2. Execute `is`, `validate`, `assert`, and direct validate entrypoints.
|
|
22
|
-
// 3. Require valid intersection branches to pass and invalid `Date` data to
|
|
23
|
-
// fail without depending on exact error formatting.
|
|
24
|
-
// 4. Require invalid `other` data not to report the unrelated `"customer"`
|
|
25
|
-
// branch, and require shared native/container fields not to misroute a
|
|
26
|
-
// valid branch on either side.
|
|
27
|
-
// 5. Require non-bigint inputs to fail every BigInt-typed entrypoint.
|
|
28
|
-
func TestIntersectionUnionValidationTransform(t *testing.T) {
|
|
29
|
-
project := intersectionUnionValidationProject(t)
|
|
30
|
-
js := intersectionUnionValidationTransform(t, project)
|
|
31
|
-
if !strings.Contains(js, "partyRole") || !strings.Contains(js, "Date") {
|
|
32
|
-
t.Fatalf("intersected union validation fixture was not emitted:\n%s", js)
|
|
33
|
-
}
|
|
34
|
-
intersectionUnionValidationRunRuntimeCases(t, project, js)
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
func intersectionUnionValidationProject(t *testing.T) string {
|
|
38
|
-
t.Helper()
|
|
39
|
-
root := ttscTypiaTestRepoRoot(t)
|
|
40
|
-
base := filepath.Join(root, "packages", "typia", "native", ".tmp-ttsc-typia-tests")
|
|
41
|
-
if err := os.MkdirAll(base, 0o755); err != nil {
|
|
42
|
-
t.Fatalf("mkdir temp base: %v", err)
|
|
43
|
-
}
|
|
44
|
-
dir, err := os.MkdirTemp(base, "intersection-union-")
|
|
45
|
-
if err != nil {
|
|
46
|
-
t.Fatalf("create temp fixture: %v", err)
|
|
47
|
-
}
|
|
48
|
-
t.Cleanup(func() {
|
|
49
|
-
_ = os.RemoveAll(dir)
|
|
50
|
-
})
|
|
51
|
-
src := filepath.Join(dir, "src")
|
|
52
|
-
if err := os.MkdirAll(src, 0o755); err != nil {
|
|
53
|
-
t.Fatalf("mkdir fixture src: %v", err)
|
|
54
|
-
}
|
|
55
|
-
if err := os.WriteFile(filepath.Join(dir, "tsconfig.json"), []byte(intersectionUnionValidationTSConfig), 0o644); err != nil {
|
|
56
|
-
t.Fatalf("write tsconfig: %v", err)
|
|
57
|
-
}
|
|
58
|
-
if err := os.WriteFile(filepath.Join(src, "main.ts"), []byte(intersectionUnionValidationSource), 0o644); err != nil {
|
|
59
|
-
t.Fatalf("write source: %v", err)
|
|
60
|
-
}
|
|
61
|
-
return dir
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
func intersectionUnionValidationTransform(t *testing.T, project string) string {
|
|
65
|
-
t.Helper()
|
|
66
|
-
out, errText, code := ttscTypiaTestCapture(func() int {
|
|
67
|
-
return runTransform([]string{
|
|
68
|
-
"--cwd", project,
|
|
69
|
-
"--tsconfig", "tsconfig.json",
|
|
70
|
-
"--file", "src/main.ts",
|
|
71
|
-
"--output", "js",
|
|
72
|
-
})
|
|
73
|
-
})
|
|
74
|
-
if code != 0 {
|
|
75
|
-
t.Fatalf("intersection union transform failed: code=%d stderr=\n%s", code, errText)
|
|
76
|
-
}
|
|
77
|
-
return out
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
func intersectionUnionValidationRunRuntimeCases(t *testing.T, project string, js string) {
|
|
81
|
-
t.Helper()
|
|
82
|
-
node, err := exec.LookPath("node")
|
|
83
|
-
if err != nil {
|
|
84
|
-
t.Skip("node executable not found")
|
|
85
|
-
}
|
|
86
|
-
runtimeDir := filepath.Join(project, "runtime")
|
|
87
|
-
if err := os.MkdirAll(runtimeDir, 0o755); err != nil {
|
|
88
|
-
t.Fatalf("mkdir runtime dir: %v", err)
|
|
89
|
-
}
|
|
90
|
-
ttscTypiaTestWriteCommonRuntimeStubs(t, runtimeDir)
|
|
91
|
-
runtimeJS := ttscTypiaTestRewriteCommonJS(t, js)
|
|
92
|
-
if err := os.WriteFile(filepath.Join(runtimeDir, "main.cjs"), []byte(runtimeJS), 0o644); err != nil {
|
|
93
|
-
t.Fatalf("write runtime module: %v", err)
|
|
94
|
-
}
|
|
95
|
-
runner := filepath.Join(runtimeDir, "run.cjs")
|
|
96
|
-
if err := os.WriteFile(runner, []byte(intersectionUnionValidationRuntimeRunner), 0o644); err != nil {
|
|
97
|
-
t.Fatalf("write runtime runner: %v", err)
|
|
98
|
-
}
|
|
99
|
-
cmd := exec.Command(node, runner)
|
|
100
|
-
cmd.Dir = runtimeDir
|
|
101
|
-
output, err := cmd.CombinedOutput()
|
|
102
|
-
if err != nil {
|
|
103
|
-
t.Fatalf("intersection union runtime cases failed: %v\n%s", err, output)
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
const intersectionUnionValidationTSConfig = `{
|
|
108
|
-
"compilerOptions": {
|
|
109
|
-
"target": "ES2022",
|
|
110
|
-
"module": "commonjs",
|
|
111
|
-
"moduleResolution": "bundler",
|
|
112
|
-
"ignoreDeprecations": "6.0",
|
|
113
|
-
"types": ["*"],
|
|
114
|
-
"esModuleInterop": true,
|
|
115
|
-
"strict": true,
|
|
116
|
-
"skipLibCheck": true
|
|
117
|
-
},
|
|
118
|
-
"include": ["src"]
|
|
119
|
-
}
|
|
120
|
-
`
|
|
121
|
-
|
|
122
|
-
const intersectionUnionValidationSource = `import typia from "typia";
|
|
123
|
-
|
|
124
|
-
type PartyWithRole = Party & PartyRoleInfo;
|
|
125
|
-
type Party = Individual | Corporation;
|
|
126
|
-
|
|
127
|
-
interface Individual {
|
|
128
|
-
type: "individual";
|
|
129
|
-
birthDate: Date;
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
interface Corporation {
|
|
133
|
-
type: "corporation";
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
type PartyRoleInfo =
|
|
137
|
-
| {
|
|
138
|
-
partyRole: "customer";
|
|
139
|
-
}
|
|
140
|
-
| {
|
|
141
|
-
partyRole: "other";
|
|
142
|
-
otherPartyRole: string;
|
|
143
|
-
};
|
|
144
|
-
|
|
145
|
-
export const isParty = typia.createIs<PartyWithRole>();
|
|
146
|
-
export const validateParty = typia.createValidate<PartyWithRole>();
|
|
147
|
-
export const assertParty = typia.createAssert<PartyWithRole>();
|
|
148
|
-
export const validateDirect = (input: unknown) => typia.validate<PartyWithRole>(input);
|
|
149
|
-
|
|
150
|
-
type DateSharedUnion =
|
|
151
|
-
| {
|
|
152
|
-
stamp: Date;
|
|
153
|
-
left: string;
|
|
154
|
-
}
|
|
155
|
-
| {
|
|
156
|
-
stamp: Date;
|
|
157
|
-
right: string;
|
|
158
|
-
};
|
|
159
|
-
|
|
160
|
-
type BytesSharedUnion =
|
|
161
|
-
| {
|
|
162
|
-
bytes: Uint8Array;
|
|
163
|
-
left: string;
|
|
164
|
-
}
|
|
165
|
-
| {
|
|
166
|
-
bytes: Uint8Array;
|
|
167
|
-
right: string;
|
|
168
|
-
};
|
|
169
|
-
|
|
170
|
-
type PrimitiveWrapperSharedUnion =
|
|
171
|
-
| {
|
|
172
|
-
value: string;
|
|
173
|
-
left: string;
|
|
174
|
-
}
|
|
175
|
-
| {
|
|
176
|
-
value: String;
|
|
177
|
-
right: string;
|
|
178
|
-
};
|
|
179
|
-
|
|
180
|
-
type TemplateSharedUnion =
|
|
181
|
-
| {
|
|
182
|
-
code: ` + "`id-${number}`" + `;
|
|
183
|
-
left: string;
|
|
184
|
-
}
|
|
185
|
-
| {
|
|
186
|
-
code: ` + "`id-${string}`" + `;
|
|
187
|
-
right: string;
|
|
188
|
-
};
|
|
189
|
-
|
|
190
|
-
type SetSharedUnion =
|
|
191
|
-
| {
|
|
192
|
-
items: Set<string>;
|
|
193
|
-
left: string;
|
|
194
|
-
}
|
|
195
|
-
| {
|
|
196
|
-
items: Set<number>;
|
|
197
|
-
right: string;
|
|
198
|
-
};
|
|
199
|
-
|
|
200
|
-
type MapSharedUnion =
|
|
201
|
-
| {
|
|
202
|
-
lookup: Map<string, number>;
|
|
203
|
-
left: string;
|
|
204
|
-
}
|
|
205
|
-
| {
|
|
206
|
-
lookup: Map<number, string>;
|
|
207
|
-
right: string;
|
|
208
|
-
};
|
|
209
|
-
|
|
210
|
-
type ArrayTupleSharedUnion =
|
|
211
|
-
| {
|
|
212
|
-
items: number[];
|
|
213
|
-
left: string;
|
|
214
|
-
}
|
|
215
|
-
| {
|
|
216
|
-
items: [number];
|
|
217
|
-
right: string;
|
|
218
|
-
};
|
|
219
|
-
|
|
220
|
-
type BigIntPrimitiveOrInterface = bigint | BigInt;
|
|
221
|
-
type BigIntLiteralOrInterface = 1n | BigInt;
|
|
222
|
-
type BigIntInterfaceOnly = BigInt;
|
|
223
|
-
|
|
224
|
-
export const validateDateShared = typia.createValidate<DateSharedUnion>();
|
|
225
|
-
export const validateBytesShared = typia.createValidate<BytesSharedUnion>();
|
|
226
|
-
export const validatePrimitiveWrapperShared = typia.createValidate<PrimitiveWrapperSharedUnion>();
|
|
227
|
-
export const validateTemplateShared = typia.createValidate<TemplateSharedUnion>();
|
|
228
|
-
export const isTemplateShared = typia.createIs<TemplateSharedUnion>();
|
|
229
|
-
export const assertTemplateShared = typia.createAssert<TemplateSharedUnion>();
|
|
230
|
-
export const validateSetShared = typia.createValidate<SetSharedUnion>();
|
|
231
|
-
export const validateMapShared = typia.createValidate<MapSharedUnion>();
|
|
232
|
-
export const validateArrayTupleShared = typia.createValidate<ArrayTupleSharedUnion>();
|
|
233
|
-
export const validateBigIntPrimitiveOrInterface = typia.createValidate<BigIntPrimitiveOrInterface>();
|
|
234
|
-
export const validateBigIntLiteralOrInterface = typia.createValidate<BigIntLiteralOrInterface>();
|
|
235
|
-
export const validateBigIntInterfaceOnly = typia.createValidate<BigIntInterfaceOnly>();
|
|
236
|
-
export const isBigIntPrimitiveOrInterface = typia.createIs<BigIntPrimitiveOrInterface>();
|
|
237
|
-
export const isBigIntLiteralOrInterface = typia.createIs<BigIntLiteralOrInterface>();
|
|
238
|
-
export const isBigIntInterfaceOnly = typia.createIs<BigIntInterfaceOnly>();
|
|
239
|
-
export const assertBigIntPrimitiveOrInterface = typia.createAssert<BigIntPrimitiveOrInterface>();
|
|
240
|
-
export const assertBigIntLiteralOrInterface = typia.createAssert<BigIntLiteralOrInterface>();
|
|
241
|
-
export const assertBigIntInterfaceOnly = typia.createAssert<BigIntInterfaceOnly>();
|
|
242
|
-
`
|
|
243
|
-
|
|
244
|
-
const intersectionUnionValidationRuntimeRunner = `const mod = require("./main.cjs");
|
|
245
|
-
|
|
246
|
-
const capture = (task) => {
|
|
247
|
-
try {
|
|
248
|
-
task();
|
|
249
|
-
return null;
|
|
250
|
-
} catch (error) {
|
|
251
|
-
return error;
|
|
252
|
-
}
|
|
253
|
-
};
|
|
254
|
-
|
|
255
|
-
const validIndividualOther = {
|
|
256
|
-
type: "individual",
|
|
257
|
-
birthDate: new Date("2025-06-10T10:43:59.087Z"),
|
|
258
|
-
partyRole: "other",
|
|
259
|
-
otherPartyRole: "some-valid-string",
|
|
260
|
-
};
|
|
261
|
-
const validCorporationCustomer = {
|
|
262
|
-
type: "corporation",
|
|
263
|
-
partyRole: "customer",
|
|
264
|
-
};
|
|
265
|
-
const validIndividualCustomer = {
|
|
266
|
-
type: "individual",
|
|
267
|
-
birthDate: new Date("2025-06-10T10:43:59.087Z"),
|
|
268
|
-
partyRole: "customer",
|
|
269
|
-
};
|
|
270
|
-
const validCorporationOther = {
|
|
271
|
-
type: "corporation",
|
|
272
|
-
partyRole: "other",
|
|
273
|
-
otherPartyRole: "some-valid-string",
|
|
274
|
-
};
|
|
275
|
-
const invalidOtherMissingDetail = {
|
|
276
|
-
type: "individual",
|
|
277
|
-
birthDate: new Date("2025-06-10T10:43:59.087Z"),
|
|
278
|
-
partyRole: "other",
|
|
279
|
-
};
|
|
280
|
-
const invalidIndividualBirthDate = {
|
|
281
|
-
type: "individual",
|
|
282
|
-
birthDate: "2025-06-10T10:43:59.087Z",
|
|
283
|
-
partyRole: "other",
|
|
284
|
-
otherPartyRole: "some-valid-string",
|
|
285
|
-
};
|
|
286
|
-
|
|
287
|
-
const validate = mod.validateParty(validIndividualOther);
|
|
288
|
-
if (validate.success !== true) {
|
|
289
|
-
throw new Error("valid individual/other intersection failed: " + JSON.stringify(validate));
|
|
290
|
-
}
|
|
291
|
-
const direct = mod.validateDirect(validIndividualOther);
|
|
292
|
-
if (direct.success !== true) {
|
|
293
|
-
throw new Error("direct validate failed for individual/other intersection: " + JSON.stringify(direct));
|
|
294
|
-
}
|
|
295
|
-
if (mod.isParty(validIndividualOther) !== true) {
|
|
296
|
-
throw new Error("is failed for valid individual/other intersection");
|
|
297
|
-
}
|
|
298
|
-
if (mod.assertParty(validIndividualOther) !== validIndividualOther) {
|
|
299
|
-
throw new Error("assert did not return the valid individual/other value");
|
|
300
|
-
}
|
|
301
|
-
if (mod.validateParty(validCorporationCustomer).success !== true) {
|
|
302
|
-
throw new Error("valid corporation/customer intersection failed");
|
|
303
|
-
}
|
|
304
|
-
for (const [name, input] of [
|
|
305
|
-
["individual/customer", validIndividualCustomer],
|
|
306
|
-
["corporation/other", validCorporationOther],
|
|
307
|
-
]) {
|
|
308
|
-
if (mod.validateParty(input).success !== true) {
|
|
309
|
-
throw new Error("valid " + name + " intersection failed validate");
|
|
310
|
-
}
|
|
311
|
-
if (mod.isParty(input) !== true) {
|
|
312
|
-
throw new Error("valid " + name + " intersection failed is");
|
|
313
|
-
}
|
|
314
|
-
if (mod.assertParty(input) !== input) {
|
|
315
|
-
throw new Error("valid " + name + " intersection failed assert");
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
const invalid = mod.validateParty(invalidOtherMissingDetail);
|
|
320
|
-
if (invalid.success !== false) {
|
|
321
|
-
throw new Error("missing otherPartyRole unexpectedly passed");
|
|
322
|
-
}
|
|
323
|
-
if (mod.isParty(invalidOtherMissingDetail) !== false) {
|
|
324
|
-
throw new Error("is accepted missing otherPartyRole");
|
|
325
|
-
}
|
|
326
|
-
if (invalid.errors.some((entry) => entry.path === "$input.partyRole" && entry.expected === '"customer"')) {
|
|
327
|
-
throw new Error("invalid other branch reported unrelated customer branch: " + JSON.stringify(invalid));
|
|
328
|
-
}
|
|
329
|
-
const invalidDirect = mod.validateDirect(invalidOtherMissingDetail);
|
|
330
|
-
if (invalidDirect.success !== false) {
|
|
331
|
-
throw new Error("direct validate missing otherPartyRole unexpectedly passed");
|
|
332
|
-
}
|
|
333
|
-
if (invalidDirect.errors.some((entry) => entry.path === "$input.partyRole" && entry.expected === '"customer"')) {
|
|
334
|
-
throw new Error("direct validate invalid other branch reported unrelated customer branch: " + JSON.stringify(invalidDirect));
|
|
335
|
-
}
|
|
336
|
-
const invalidAssert = capture(() => mod.assertParty(invalidOtherMissingDetail));
|
|
337
|
-
if (invalidAssert === null) {
|
|
338
|
-
throw new Error("assert missing otherPartyRole unexpectedly passed");
|
|
339
|
-
}
|
|
340
|
-
if (invalidAssert.path === "$input.partyRole" && invalidAssert.expected === '"customer"') {
|
|
341
|
-
throw new Error("assert invalid other branch reported unrelated customer branch: " + JSON.stringify(invalidAssert));
|
|
342
|
-
}
|
|
343
|
-
const invalidDate = mod.validateParty(invalidIndividualBirthDate);
|
|
344
|
-
if (invalidDate.success !== false) {
|
|
345
|
-
throw new Error("invalid individual birthDate unexpectedly passed");
|
|
346
|
-
}
|
|
347
|
-
if (mod.isParty(invalidIndividualBirthDate) !== false) {
|
|
348
|
-
throw new Error("is accepted invalid individual birthDate");
|
|
349
|
-
}
|
|
350
|
-
const invalidDateDirect = mod.validateDirect(invalidIndividualBirthDate);
|
|
351
|
-
if (invalidDateDirect.success !== false) {
|
|
352
|
-
throw new Error("direct validate invalid individual birthDate unexpectedly passed");
|
|
353
|
-
}
|
|
354
|
-
const invalidDateAssert = capture(() => mod.assertParty(invalidIndividualBirthDate));
|
|
355
|
-
if (invalidDateAssert === null) {
|
|
356
|
-
throw new Error("assert invalid individual birthDate unexpectedly passed");
|
|
357
|
-
}
|
|
358
|
-
|
|
359
|
-
const validDateRight = {
|
|
360
|
-
stamp: new Date("2025-06-10T10:43:59.087Z"),
|
|
361
|
-
right: "selected-right",
|
|
362
|
-
};
|
|
363
|
-
const dateRight = mod.validateDateShared(validDateRight);
|
|
364
|
-
if (dateRight.success !== true) {
|
|
365
|
-
throw new Error("shared Date native union failed its right branch: " + JSON.stringify(dateRight));
|
|
366
|
-
}
|
|
367
|
-
if (mod.validateDateShared({
|
|
368
|
-
stamp: "2025-06-10T10:43:59.087Z",
|
|
369
|
-
right: "selected-right",
|
|
370
|
-
}).success !== false) {
|
|
371
|
-
throw new Error("shared Date native union accepted invalid right branch stamp");
|
|
372
|
-
}
|
|
373
|
-
|
|
374
|
-
const validBytesRight = {
|
|
375
|
-
bytes: new Uint8Array([1, 2, 3]),
|
|
376
|
-
right: "selected-right",
|
|
377
|
-
};
|
|
378
|
-
const bytesRight = mod.validateBytesShared(validBytesRight);
|
|
379
|
-
if (bytesRight.success !== true) {
|
|
380
|
-
throw new Error("shared Uint8Array native union failed its right branch: " + JSON.stringify(bytesRight));
|
|
381
|
-
}
|
|
382
|
-
if (mod.validateBytesShared({
|
|
383
|
-
bytes: [1, 2, 3],
|
|
384
|
-
right: "selected-right",
|
|
385
|
-
}).success !== false) {
|
|
386
|
-
throw new Error("shared Uint8Array native union accepted invalid right branch bytes");
|
|
387
|
-
}
|
|
388
|
-
|
|
389
|
-
const primitiveWrapperRight = mod.validatePrimitiveWrapperShared({
|
|
390
|
-
value: "x",
|
|
391
|
-
right: "selected-right",
|
|
392
|
-
});
|
|
393
|
-
if (primitiveWrapperRight.success !== true) {
|
|
394
|
-
throw new Error("shared primitive wrapper union failed its right branch: " + JSON.stringify(primitiveWrapperRight));
|
|
395
|
-
}
|
|
396
|
-
if (mod.validatePrimitiveWrapperShared({
|
|
397
|
-
value: 1,
|
|
398
|
-
right: "selected-right",
|
|
399
|
-
}).success !== false) {
|
|
400
|
-
throw new Error("shared primitive wrapper union accepted invalid right branch value");
|
|
401
|
-
}
|
|
402
|
-
|
|
403
|
-
const templateRight = mod.validateTemplateShared({
|
|
404
|
-
code: "id-1",
|
|
405
|
-
right: "selected-right",
|
|
406
|
-
});
|
|
407
|
-
if (templateRight.success !== true) {
|
|
408
|
-
throw new Error("shared template union failed its overlapping right branch: " + JSON.stringify(templateRight));
|
|
409
|
-
}
|
|
410
|
-
if (mod.isTemplateShared({
|
|
411
|
-
code: "id-1",
|
|
412
|
-
right: "selected-right",
|
|
413
|
-
}) !== true) {
|
|
414
|
-
throw new Error("shared template union failed its overlapping right branch is");
|
|
415
|
-
}
|
|
416
|
-
const templateAssertInput = {
|
|
417
|
-
code: "id-1",
|
|
418
|
-
right: "selected-right",
|
|
419
|
-
};
|
|
420
|
-
if (mod.assertTemplateShared(templateAssertInput) !== templateAssertInput) {
|
|
421
|
-
throw new Error("shared template union failed its overlapping right branch assert");
|
|
422
|
-
}
|
|
423
|
-
if (mod.validateTemplateShared({
|
|
424
|
-
code: "other-1",
|
|
425
|
-
right: "selected-right",
|
|
426
|
-
}).success !== false) {
|
|
427
|
-
throw new Error("shared template union accepted invalid right branch code");
|
|
428
|
-
}
|
|
429
|
-
if (mod.isTemplateShared({
|
|
430
|
-
code: "other-1",
|
|
431
|
-
right: "selected-right",
|
|
432
|
-
}) !== false) {
|
|
433
|
-
throw new Error("shared template union is accepted invalid right branch code");
|
|
434
|
-
}
|
|
435
|
-
if (capture(() => mod.assertTemplateShared({
|
|
436
|
-
code: "other-1",
|
|
437
|
-
right: "selected-right",
|
|
438
|
-
})) === null) {
|
|
439
|
-
throw new Error("shared template union assert accepted invalid right branch code");
|
|
440
|
-
}
|
|
441
|
-
|
|
442
|
-
const setRight = mod.validateSetShared({
|
|
443
|
-
items: new Set(),
|
|
444
|
-
right: "selected-right",
|
|
445
|
-
});
|
|
446
|
-
if (setRight.success !== true) {
|
|
447
|
-
throw new Error("shared empty Set union failed its right branch: " + JSON.stringify(setRight));
|
|
448
|
-
}
|
|
449
|
-
if (mod.validateSetShared({
|
|
450
|
-
items: new Set(["left-shaped"]),
|
|
451
|
-
right: "selected-right",
|
|
452
|
-
}).success !== false) {
|
|
453
|
-
throw new Error("shared Set union accepted invalid right branch value");
|
|
454
|
-
}
|
|
455
|
-
|
|
456
|
-
const mapRight = mod.validateMapShared({
|
|
457
|
-
lookup: new Map(),
|
|
458
|
-
right: "selected-right",
|
|
459
|
-
});
|
|
460
|
-
if (mapRight.success !== true) {
|
|
461
|
-
throw new Error("shared empty Map union failed its right branch: " + JSON.stringify(mapRight));
|
|
462
|
-
}
|
|
463
|
-
if (mod.validateMapShared({
|
|
464
|
-
lookup: new Map([["left-key", 1]]),
|
|
465
|
-
right: "selected-right",
|
|
466
|
-
}).success !== false) {
|
|
467
|
-
throw new Error("shared Map union accepted invalid right branch entry");
|
|
468
|
-
}
|
|
469
|
-
|
|
470
|
-
const arrayTupleRight = mod.validateArrayTupleShared({
|
|
471
|
-
items: [1],
|
|
472
|
-
right: "selected-right",
|
|
473
|
-
});
|
|
474
|
-
if (arrayTupleRight.success !== true) {
|
|
475
|
-
throw new Error("shared array/tuple union failed its right branch: " + JSON.stringify(arrayTupleRight));
|
|
476
|
-
}
|
|
477
|
-
if (mod.validateArrayTupleShared({
|
|
478
|
-
items: [1, 2],
|
|
479
|
-
right: "selected-right",
|
|
480
|
-
}).success !== false) {
|
|
481
|
-
throw new Error("shared array/tuple union accepted invalid right branch item");
|
|
482
|
-
}
|
|
483
|
-
|
|
484
|
-
for (const [name, validate, input] of [
|
|
485
|
-
["Date", mod.validateDateShared, { stamp: new Date("2025-06-10T10:43:59.087Z"), left: "selected-left" }],
|
|
486
|
-
["Uint8Array", mod.validateBytesShared, { bytes: new Uint8Array([1, 2, 3]), left: "selected-left" }],
|
|
487
|
-
["primitive wrapper", mod.validatePrimitiveWrapperShared, { value: "x", left: "selected-left" }],
|
|
488
|
-
["template", mod.validateTemplateShared, { code: "id-1", left: "selected-left" }],
|
|
489
|
-
["Set", mod.validateSetShared, { items: new Set(["left-shaped"]), left: "selected-left" }],
|
|
490
|
-
["Map", mod.validateMapShared, { lookup: new Map([["left-key", 1]]), left: "selected-left" }],
|
|
491
|
-
["array/tuple", mod.validateArrayTupleShared, { items: [1, 2], left: "selected-left" }],
|
|
492
|
-
]) {
|
|
493
|
-
const left = validate(input);
|
|
494
|
-
if (left.success !== true) {
|
|
495
|
-
throw new Error("shared " + name + " union failed its left branch: " + JSON.stringify(left));
|
|
496
|
-
}
|
|
497
|
-
}
|
|
498
|
-
|
|
499
|
-
if (mod.validateBigIntPrimitiveOrInterface(1n).success !== true) {
|
|
500
|
-
throw new Error("bigint primitive should pass bigint | BigInt validation");
|
|
501
|
-
}
|
|
502
|
-
if (mod.validateBigIntLiteralOrInterface(1n).success !== true) {
|
|
503
|
-
throw new Error("bigint literal should pass 1n | BigInt validation");
|
|
504
|
-
}
|
|
505
|
-
const boxedBigInt = Object(1n);
|
|
506
|
-
if (mod.validateBigIntInterfaceOnly(boxedBigInt).success !== true) {
|
|
507
|
-
throw new Error("boxed BigInt should pass BigInt validation");
|
|
508
|
-
}
|
|
509
|
-
if (mod.validateBigIntInterfaceOnly(1n).success !== true) {
|
|
510
|
-
throw new Error("primitive bigint should pass BigInt validation");
|
|
511
|
-
}
|
|
512
|
-
if (mod.validateBigIntPrimitiveOrInterface(boxedBigInt).success !== true) {
|
|
513
|
-
throw new Error("boxed BigInt should pass bigint | BigInt validation");
|
|
514
|
-
}
|
|
515
|
-
if (mod.validateBigIntLiteralOrInterface(Object(2n)).success !== true) {
|
|
516
|
-
throw new Error("boxed BigInt should pass 1n | BigInt validation");
|
|
517
|
-
}
|
|
518
|
-
if (mod.validateBigIntLiteralOrInterface(2n).success !== true) {
|
|
519
|
-
throw new Error("primitive bigint should pass 1n | BigInt validation through BigInt");
|
|
520
|
-
}
|
|
521
|
-
if (mod.isBigIntPrimitiveOrInterface(1n) !== true) {
|
|
522
|
-
throw new Error("bigint primitive should pass bigint | BigInt is");
|
|
523
|
-
}
|
|
524
|
-
if (mod.isBigIntLiteralOrInterface(1n) !== true) {
|
|
525
|
-
throw new Error("bigint literal should pass 1n | BigInt is");
|
|
526
|
-
}
|
|
527
|
-
if (mod.isBigIntInterfaceOnly(boxedBigInt) !== true) {
|
|
528
|
-
throw new Error("boxed BigInt should pass BigInt is");
|
|
529
|
-
}
|
|
530
|
-
if (mod.isBigIntInterfaceOnly(1n) !== true) {
|
|
531
|
-
throw new Error("primitive bigint should pass BigInt is");
|
|
532
|
-
}
|
|
533
|
-
if (mod.isBigIntPrimitiveOrInterface(boxedBigInt) !== true) {
|
|
534
|
-
throw new Error("boxed BigInt should pass bigint | BigInt is");
|
|
535
|
-
}
|
|
536
|
-
if (mod.isBigIntLiteralOrInterface(Object(2n)) !== true) {
|
|
537
|
-
throw new Error("boxed BigInt should pass 1n | BigInt is");
|
|
538
|
-
}
|
|
539
|
-
if (mod.isBigIntLiteralOrInterface(2n) !== true) {
|
|
540
|
-
throw new Error("primitive bigint should pass 1n | BigInt is through BigInt");
|
|
541
|
-
}
|
|
542
|
-
if (mod.assertBigIntPrimitiveOrInterface(1n) !== 1n) {
|
|
543
|
-
throw new Error("bigint primitive should pass bigint | BigInt assert");
|
|
544
|
-
}
|
|
545
|
-
if (mod.assertBigIntLiteralOrInterface(1n) !== 1n) {
|
|
546
|
-
throw new Error("bigint literal should pass 1n | BigInt assert");
|
|
547
|
-
}
|
|
548
|
-
if (mod.assertBigIntInterfaceOnly(boxedBigInt) !== boxedBigInt) {
|
|
549
|
-
throw new Error("boxed BigInt should pass BigInt assert");
|
|
550
|
-
}
|
|
551
|
-
if (mod.assertBigIntInterfaceOnly(1n) !== 1n) {
|
|
552
|
-
throw new Error("primitive bigint should pass BigInt assert");
|
|
553
|
-
}
|
|
554
|
-
if (mod.assertBigIntPrimitiveOrInterface(boxedBigInt) !== boxedBigInt) {
|
|
555
|
-
throw new Error("boxed BigInt should pass bigint | BigInt assert");
|
|
556
|
-
}
|
|
557
|
-
const boxedBigIntTwo = Object(2n);
|
|
558
|
-
if (mod.assertBigIntLiteralOrInterface(boxedBigIntTwo) !== boxedBigIntTwo) {
|
|
559
|
-
throw new Error("boxed BigInt should pass 1n | BigInt assert");
|
|
560
|
-
}
|
|
561
|
-
if (mod.assertBigIntLiteralOrInterface(2n) !== 2n) {
|
|
562
|
-
throw new Error("primitive bigint should pass 1n | BigInt assert through BigInt");
|
|
563
|
-
}
|
|
564
|
-
|
|
565
|
-
// NOTE: 2n is NOT a negative for 1n | BigInt: the BigInt arm absorbs every
|
|
566
|
-
// bigint, so 2n is asserted as a positive above. Negatives must be non-bigint.
|
|
567
|
-
const bigintNegatives = [
|
|
568
|
-
["string", "1"],
|
|
569
|
-
["number", 1],
|
|
570
|
-
["null", null],
|
|
571
|
-
["boxed Number", Object(1)],
|
|
572
|
-
];
|
|
573
|
-
for (const [alias, validate, is, assert] of [
|
|
574
|
-
["bigint | BigInt", mod.validateBigIntPrimitiveOrInterface, mod.isBigIntPrimitiveOrInterface, mod.assertBigIntPrimitiveOrInterface],
|
|
575
|
-
["1n | BigInt", mod.validateBigIntLiteralOrInterface, mod.isBigIntLiteralOrInterface, mod.assertBigIntLiteralOrInterface],
|
|
576
|
-
["BigInt", mod.validateBigIntInterfaceOnly, mod.isBigIntInterfaceOnly, mod.assertBigIntInterfaceOnly],
|
|
577
|
-
]) {
|
|
578
|
-
for (const [kind, input] of bigintNegatives) {
|
|
579
|
-
if (validate(input).success !== false) {
|
|
580
|
-
throw new Error(kind + " input unexpectedly passed " + alias + " validate");
|
|
581
|
-
}
|
|
582
|
-
if (is(input) !== false) {
|
|
583
|
-
throw new Error(kind + " input unexpectedly passed " + alias + " is");
|
|
584
|
-
}
|
|
585
|
-
if (capture(() => assert(input)) === null) {
|
|
586
|
-
throw new Error(kind + " input unexpectedly passed " + alias + " assert");
|
|
587
|
-
}
|
|
588
|
-
}
|
|
589
|
-
}
|
|
590
|
-
`
|
|
1
|
+
package main
|
|
2
|
+
|
|
3
|
+
import (
|
|
4
|
+
"os"
|
|
5
|
+
"os/exec"
|
|
6
|
+
"path/filepath"
|
|
7
|
+
"strings"
|
|
8
|
+
"testing"
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
// TestIntersectionUnionValidationTransform verifies intersected unions co-operate.
|
|
12
|
+
//
|
|
13
|
+
// Issue #1590 combines two discriminated unions through an intersection:
|
|
14
|
+
// `(Individual | Corporation) & ({ partyRole: "customer" } | OtherRole)`.
|
|
15
|
+
// The validator must accept a value whose left union branch contains a native
|
|
16
|
+
// Date and whose right union branch is selected by another discriminator. The
|
|
17
|
+
// same fixture also pins shared-field guards and primitive/native overlap
|
|
18
|
+
// decisions whose metadata may otherwise misroute union validation.
|
|
19
|
+
//
|
|
20
|
+
// 1. Transform the intersected-union fixture into JavaScript.
|
|
21
|
+
// 2. Execute `is`, `validate`, `assert`, and direct validate entrypoints.
|
|
22
|
+
// 3. Require valid intersection branches to pass and invalid `Date` data to
|
|
23
|
+
// fail without depending on exact error formatting.
|
|
24
|
+
// 4. Require invalid `other` data not to report the unrelated `"customer"`
|
|
25
|
+
// branch, and require shared native/container fields not to misroute a
|
|
26
|
+
// valid branch on either side.
|
|
27
|
+
// 5. Require non-bigint inputs to fail every BigInt-typed entrypoint.
|
|
28
|
+
func TestIntersectionUnionValidationTransform(t *testing.T) {
|
|
29
|
+
project := intersectionUnionValidationProject(t)
|
|
30
|
+
js := intersectionUnionValidationTransform(t, project)
|
|
31
|
+
if !strings.Contains(js, "partyRole") || !strings.Contains(js, "Date") {
|
|
32
|
+
t.Fatalf("intersected union validation fixture was not emitted:\n%s", js)
|
|
33
|
+
}
|
|
34
|
+
intersectionUnionValidationRunRuntimeCases(t, project, js)
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
func intersectionUnionValidationProject(t *testing.T) string {
|
|
38
|
+
t.Helper()
|
|
39
|
+
root := ttscTypiaTestRepoRoot(t)
|
|
40
|
+
base := filepath.Join(root, "packages", "typia", "native", ".tmp-ttsc-typia-tests")
|
|
41
|
+
if err := os.MkdirAll(base, 0o755); err != nil {
|
|
42
|
+
t.Fatalf("mkdir temp base: %v", err)
|
|
43
|
+
}
|
|
44
|
+
dir, err := os.MkdirTemp(base, "intersection-union-")
|
|
45
|
+
if err != nil {
|
|
46
|
+
t.Fatalf("create temp fixture: %v", err)
|
|
47
|
+
}
|
|
48
|
+
t.Cleanup(func() {
|
|
49
|
+
_ = os.RemoveAll(dir)
|
|
50
|
+
})
|
|
51
|
+
src := filepath.Join(dir, "src")
|
|
52
|
+
if err := os.MkdirAll(src, 0o755); err != nil {
|
|
53
|
+
t.Fatalf("mkdir fixture src: %v", err)
|
|
54
|
+
}
|
|
55
|
+
if err := os.WriteFile(filepath.Join(dir, "tsconfig.json"), []byte(intersectionUnionValidationTSConfig), 0o644); err != nil {
|
|
56
|
+
t.Fatalf("write tsconfig: %v", err)
|
|
57
|
+
}
|
|
58
|
+
if err := os.WriteFile(filepath.Join(src, "main.ts"), []byte(intersectionUnionValidationSource), 0o644); err != nil {
|
|
59
|
+
t.Fatalf("write source: %v", err)
|
|
60
|
+
}
|
|
61
|
+
return dir
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
func intersectionUnionValidationTransform(t *testing.T, project string) string {
|
|
65
|
+
t.Helper()
|
|
66
|
+
out, errText, code := ttscTypiaTestCapture(func() int {
|
|
67
|
+
return runTransform([]string{
|
|
68
|
+
"--cwd", project,
|
|
69
|
+
"--tsconfig", "tsconfig.json",
|
|
70
|
+
"--file", "src/main.ts",
|
|
71
|
+
"--output", "js",
|
|
72
|
+
})
|
|
73
|
+
})
|
|
74
|
+
if code != 0 {
|
|
75
|
+
t.Fatalf("intersection union transform failed: code=%d stderr=\n%s", code, errText)
|
|
76
|
+
}
|
|
77
|
+
return out
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
func intersectionUnionValidationRunRuntimeCases(t *testing.T, project string, js string) {
|
|
81
|
+
t.Helper()
|
|
82
|
+
node, err := exec.LookPath("node")
|
|
83
|
+
if err != nil {
|
|
84
|
+
t.Skip("node executable not found")
|
|
85
|
+
}
|
|
86
|
+
runtimeDir := filepath.Join(project, "runtime")
|
|
87
|
+
if err := os.MkdirAll(runtimeDir, 0o755); err != nil {
|
|
88
|
+
t.Fatalf("mkdir runtime dir: %v", err)
|
|
89
|
+
}
|
|
90
|
+
ttscTypiaTestWriteCommonRuntimeStubs(t, runtimeDir)
|
|
91
|
+
runtimeJS := ttscTypiaTestRewriteCommonJS(t, js)
|
|
92
|
+
if err := os.WriteFile(filepath.Join(runtimeDir, "main.cjs"), []byte(runtimeJS), 0o644); err != nil {
|
|
93
|
+
t.Fatalf("write runtime module: %v", err)
|
|
94
|
+
}
|
|
95
|
+
runner := filepath.Join(runtimeDir, "run.cjs")
|
|
96
|
+
if err := os.WriteFile(runner, []byte(intersectionUnionValidationRuntimeRunner), 0o644); err != nil {
|
|
97
|
+
t.Fatalf("write runtime runner: %v", err)
|
|
98
|
+
}
|
|
99
|
+
cmd := exec.Command(node, runner)
|
|
100
|
+
cmd.Dir = runtimeDir
|
|
101
|
+
output, err := cmd.CombinedOutput()
|
|
102
|
+
if err != nil {
|
|
103
|
+
t.Fatalf("intersection union runtime cases failed: %v\n%s", err, output)
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
const intersectionUnionValidationTSConfig = `{
|
|
108
|
+
"compilerOptions": {
|
|
109
|
+
"target": "ES2022",
|
|
110
|
+
"module": "commonjs",
|
|
111
|
+
"moduleResolution": "bundler",
|
|
112
|
+
"ignoreDeprecations": "6.0",
|
|
113
|
+
"types": ["*"],
|
|
114
|
+
"esModuleInterop": true,
|
|
115
|
+
"strict": true,
|
|
116
|
+
"skipLibCheck": true
|
|
117
|
+
},
|
|
118
|
+
"include": ["src"]
|
|
119
|
+
}
|
|
120
|
+
`
|
|
121
|
+
|
|
122
|
+
const intersectionUnionValidationSource = `import typia from "typia";
|
|
123
|
+
|
|
124
|
+
type PartyWithRole = Party & PartyRoleInfo;
|
|
125
|
+
type Party = Individual | Corporation;
|
|
126
|
+
|
|
127
|
+
interface Individual {
|
|
128
|
+
type: "individual";
|
|
129
|
+
birthDate: Date;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
interface Corporation {
|
|
133
|
+
type: "corporation";
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
type PartyRoleInfo =
|
|
137
|
+
| {
|
|
138
|
+
partyRole: "customer";
|
|
139
|
+
}
|
|
140
|
+
| {
|
|
141
|
+
partyRole: "other";
|
|
142
|
+
otherPartyRole: string;
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
export const isParty = typia.createIs<PartyWithRole>();
|
|
146
|
+
export const validateParty = typia.createValidate<PartyWithRole>();
|
|
147
|
+
export const assertParty = typia.createAssert<PartyWithRole>();
|
|
148
|
+
export const validateDirect = (input: unknown) => typia.validate<PartyWithRole>(input);
|
|
149
|
+
|
|
150
|
+
type DateSharedUnion =
|
|
151
|
+
| {
|
|
152
|
+
stamp: Date;
|
|
153
|
+
left: string;
|
|
154
|
+
}
|
|
155
|
+
| {
|
|
156
|
+
stamp: Date;
|
|
157
|
+
right: string;
|
|
158
|
+
};
|
|
159
|
+
|
|
160
|
+
type BytesSharedUnion =
|
|
161
|
+
| {
|
|
162
|
+
bytes: Uint8Array;
|
|
163
|
+
left: string;
|
|
164
|
+
}
|
|
165
|
+
| {
|
|
166
|
+
bytes: Uint8Array;
|
|
167
|
+
right: string;
|
|
168
|
+
};
|
|
169
|
+
|
|
170
|
+
type PrimitiveWrapperSharedUnion =
|
|
171
|
+
| {
|
|
172
|
+
value: string;
|
|
173
|
+
left: string;
|
|
174
|
+
}
|
|
175
|
+
| {
|
|
176
|
+
value: String;
|
|
177
|
+
right: string;
|
|
178
|
+
};
|
|
179
|
+
|
|
180
|
+
type TemplateSharedUnion =
|
|
181
|
+
| {
|
|
182
|
+
code: ` + "`id-${number}`" + `;
|
|
183
|
+
left: string;
|
|
184
|
+
}
|
|
185
|
+
| {
|
|
186
|
+
code: ` + "`id-${string}`" + `;
|
|
187
|
+
right: string;
|
|
188
|
+
};
|
|
189
|
+
|
|
190
|
+
type SetSharedUnion =
|
|
191
|
+
| {
|
|
192
|
+
items: Set<string>;
|
|
193
|
+
left: string;
|
|
194
|
+
}
|
|
195
|
+
| {
|
|
196
|
+
items: Set<number>;
|
|
197
|
+
right: string;
|
|
198
|
+
};
|
|
199
|
+
|
|
200
|
+
type MapSharedUnion =
|
|
201
|
+
| {
|
|
202
|
+
lookup: Map<string, number>;
|
|
203
|
+
left: string;
|
|
204
|
+
}
|
|
205
|
+
| {
|
|
206
|
+
lookup: Map<number, string>;
|
|
207
|
+
right: string;
|
|
208
|
+
};
|
|
209
|
+
|
|
210
|
+
type ArrayTupleSharedUnion =
|
|
211
|
+
| {
|
|
212
|
+
items: number[];
|
|
213
|
+
left: string;
|
|
214
|
+
}
|
|
215
|
+
| {
|
|
216
|
+
items: [number];
|
|
217
|
+
right: string;
|
|
218
|
+
};
|
|
219
|
+
|
|
220
|
+
type BigIntPrimitiveOrInterface = bigint | BigInt;
|
|
221
|
+
type BigIntLiteralOrInterface = 1n | BigInt;
|
|
222
|
+
type BigIntInterfaceOnly = BigInt;
|
|
223
|
+
|
|
224
|
+
export const validateDateShared = typia.createValidate<DateSharedUnion>();
|
|
225
|
+
export const validateBytesShared = typia.createValidate<BytesSharedUnion>();
|
|
226
|
+
export const validatePrimitiveWrapperShared = typia.createValidate<PrimitiveWrapperSharedUnion>();
|
|
227
|
+
export const validateTemplateShared = typia.createValidate<TemplateSharedUnion>();
|
|
228
|
+
export const isTemplateShared = typia.createIs<TemplateSharedUnion>();
|
|
229
|
+
export const assertTemplateShared = typia.createAssert<TemplateSharedUnion>();
|
|
230
|
+
export const validateSetShared = typia.createValidate<SetSharedUnion>();
|
|
231
|
+
export const validateMapShared = typia.createValidate<MapSharedUnion>();
|
|
232
|
+
export const validateArrayTupleShared = typia.createValidate<ArrayTupleSharedUnion>();
|
|
233
|
+
export const validateBigIntPrimitiveOrInterface = typia.createValidate<BigIntPrimitiveOrInterface>();
|
|
234
|
+
export const validateBigIntLiteralOrInterface = typia.createValidate<BigIntLiteralOrInterface>();
|
|
235
|
+
export const validateBigIntInterfaceOnly = typia.createValidate<BigIntInterfaceOnly>();
|
|
236
|
+
export const isBigIntPrimitiveOrInterface = typia.createIs<BigIntPrimitiveOrInterface>();
|
|
237
|
+
export const isBigIntLiteralOrInterface = typia.createIs<BigIntLiteralOrInterface>();
|
|
238
|
+
export const isBigIntInterfaceOnly = typia.createIs<BigIntInterfaceOnly>();
|
|
239
|
+
export const assertBigIntPrimitiveOrInterface = typia.createAssert<BigIntPrimitiveOrInterface>();
|
|
240
|
+
export const assertBigIntLiteralOrInterface = typia.createAssert<BigIntLiteralOrInterface>();
|
|
241
|
+
export const assertBigIntInterfaceOnly = typia.createAssert<BigIntInterfaceOnly>();
|
|
242
|
+
`
|
|
243
|
+
|
|
244
|
+
const intersectionUnionValidationRuntimeRunner = `const mod = require("./main.cjs");
|
|
245
|
+
|
|
246
|
+
const capture = (task) => {
|
|
247
|
+
try {
|
|
248
|
+
task();
|
|
249
|
+
return null;
|
|
250
|
+
} catch (error) {
|
|
251
|
+
return error;
|
|
252
|
+
}
|
|
253
|
+
};
|
|
254
|
+
|
|
255
|
+
const validIndividualOther = {
|
|
256
|
+
type: "individual",
|
|
257
|
+
birthDate: new Date("2025-06-10T10:43:59.087Z"),
|
|
258
|
+
partyRole: "other",
|
|
259
|
+
otherPartyRole: "some-valid-string",
|
|
260
|
+
};
|
|
261
|
+
const validCorporationCustomer = {
|
|
262
|
+
type: "corporation",
|
|
263
|
+
partyRole: "customer",
|
|
264
|
+
};
|
|
265
|
+
const validIndividualCustomer = {
|
|
266
|
+
type: "individual",
|
|
267
|
+
birthDate: new Date("2025-06-10T10:43:59.087Z"),
|
|
268
|
+
partyRole: "customer",
|
|
269
|
+
};
|
|
270
|
+
const validCorporationOther = {
|
|
271
|
+
type: "corporation",
|
|
272
|
+
partyRole: "other",
|
|
273
|
+
otherPartyRole: "some-valid-string",
|
|
274
|
+
};
|
|
275
|
+
const invalidOtherMissingDetail = {
|
|
276
|
+
type: "individual",
|
|
277
|
+
birthDate: new Date("2025-06-10T10:43:59.087Z"),
|
|
278
|
+
partyRole: "other",
|
|
279
|
+
};
|
|
280
|
+
const invalidIndividualBirthDate = {
|
|
281
|
+
type: "individual",
|
|
282
|
+
birthDate: "2025-06-10T10:43:59.087Z",
|
|
283
|
+
partyRole: "other",
|
|
284
|
+
otherPartyRole: "some-valid-string",
|
|
285
|
+
};
|
|
286
|
+
|
|
287
|
+
const validate = mod.validateParty(validIndividualOther);
|
|
288
|
+
if (validate.success !== true) {
|
|
289
|
+
throw new Error("valid individual/other intersection failed: " + JSON.stringify(validate));
|
|
290
|
+
}
|
|
291
|
+
const direct = mod.validateDirect(validIndividualOther);
|
|
292
|
+
if (direct.success !== true) {
|
|
293
|
+
throw new Error("direct validate failed for individual/other intersection: " + JSON.stringify(direct));
|
|
294
|
+
}
|
|
295
|
+
if (mod.isParty(validIndividualOther) !== true) {
|
|
296
|
+
throw new Error("is failed for valid individual/other intersection");
|
|
297
|
+
}
|
|
298
|
+
if (mod.assertParty(validIndividualOther) !== validIndividualOther) {
|
|
299
|
+
throw new Error("assert did not return the valid individual/other value");
|
|
300
|
+
}
|
|
301
|
+
if (mod.validateParty(validCorporationCustomer).success !== true) {
|
|
302
|
+
throw new Error("valid corporation/customer intersection failed");
|
|
303
|
+
}
|
|
304
|
+
for (const [name, input] of [
|
|
305
|
+
["individual/customer", validIndividualCustomer],
|
|
306
|
+
["corporation/other", validCorporationOther],
|
|
307
|
+
]) {
|
|
308
|
+
if (mod.validateParty(input).success !== true) {
|
|
309
|
+
throw new Error("valid " + name + " intersection failed validate");
|
|
310
|
+
}
|
|
311
|
+
if (mod.isParty(input) !== true) {
|
|
312
|
+
throw new Error("valid " + name + " intersection failed is");
|
|
313
|
+
}
|
|
314
|
+
if (mod.assertParty(input) !== input) {
|
|
315
|
+
throw new Error("valid " + name + " intersection failed assert");
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
const invalid = mod.validateParty(invalidOtherMissingDetail);
|
|
320
|
+
if (invalid.success !== false) {
|
|
321
|
+
throw new Error("missing otherPartyRole unexpectedly passed");
|
|
322
|
+
}
|
|
323
|
+
if (mod.isParty(invalidOtherMissingDetail) !== false) {
|
|
324
|
+
throw new Error("is accepted missing otherPartyRole");
|
|
325
|
+
}
|
|
326
|
+
if (invalid.errors.some((entry) => entry.path === "$input.partyRole" && entry.expected === '"customer"')) {
|
|
327
|
+
throw new Error("invalid other branch reported unrelated customer branch: " + JSON.stringify(invalid));
|
|
328
|
+
}
|
|
329
|
+
const invalidDirect = mod.validateDirect(invalidOtherMissingDetail);
|
|
330
|
+
if (invalidDirect.success !== false) {
|
|
331
|
+
throw new Error("direct validate missing otherPartyRole unexpectedly passed");
|
|
332
|
+
}
|
|
333
|
+
if (invalidDirect.errors.some((entry) => entry.path === "$input.partyRole" && entry.expected === '"customer"')) {
|
|
334
|
+
throw new Error("direct validate invalid other branch reported unrelated customer branch: " + JSON.stringify(invalidDirect));
|
|
335
|
+
}
|
|
336
|
+
const invalidAssert = capture(() => mod.assertParty(invalidOtherMissingDetail));
|
|
337
|
+
if (invalidAssert === null) {
|
|
338
|
+
throw new Error("assert missing otherPartyRole unexpectedly passed");
|
|
339
|
+
}
|
|
340
|
+
if (invalidAssert.path === "$input.partyRole" && invalidAssert.expected === '"customer"') {
|
|
341
|
+
throw new Error("assert invalid other branch reported unrelated customer branch: " + JSON.stringify(invalidAssert));
|
|
342
|
+
}
|
|
343
|
+
const invalidDate = mod.validateParty(invalidIndividualBirthDate);
|
|
344
|
+
if (invalidDate.success !== false) {
|
|
345
|
+
throw new Error("invalid individual birthDate unexpectedly passed");
|
|
346
|
+
}
|
|
347
|
+
if (mod.isParty(invalidIndividualBirthDate) !== false) {
|
|
348
|
+
throw new Error("is accepted invalid individual birthDate");
|
|
349
|
+
}
|
|
350
|
+
const invalidDateDirect = mod.validateDirect(invalidIndividualBirthDate);
|
|
351
|
+
if (invalidDateDirect.success !== false) {
|
|
352
|
+
throw new Error("direct validate invalid individual birthDate unexpectedly passed");
|
|
353
|
+
}
|
|
354
|
+
const invalidDateAssert = capture(() => mod.assertParty(invalidIndividualBirthDate));
|
|
355
|
+
if (invalidDateAssert === null) {
|
|
356
|
+
throw new Error("assert invalid individual birthDate unexpectedly passed");
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
const validDateRight = {
|
|
360
|
+
stamp: new Date("2025-06-10T10:43:59.087Z"),
|
|
361
|
+
right: "selected-right",
|
|
362
|
+
};
|
|
363
|
+
const dateRight = mod.validateDateShared(validDateRight);
|
|
364
|
+
if (dateRight.success !== true) {
|
|
365
|
+
throw new Error("shared Date native union failed its right branch: " + JSON.stringify(dateRight));
|
|
366
|
+
}
|
|
367
|
+
if (mod.validateDateShared({
|
|
368
|
+
stamp: "2025-06-10T10:43:59.087Z",
|
|
369
|
+
right: "selected-right",
|
|
370
|
+
}).success !== false) {
|
|
371
|
+
throw new Error("shared Date native union accepted invalid right branch stamp");
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
const validBytesRight = {
|
|
375
|
+
bytes: new Uint8Array([1, 2, 3]),
|
|
376
|
+
right: "selected-right",
|
|
377
|
+
};
|
|
378
|
+
const bytesRight = mod.validateBytesShared(validBytesRight);
|
|
379
|
+
if (bytesRight.success !== true) {
|
|
380
|
+
throw new Error("shared Uint8Array native union failed its right branch: " + JSON.stringify(bytesRight));
|
|
381
|
+
}
|
|
382
|
+
if (mod.validateBytesShared({
|
|
383
|
+
bytes: [1, 2, 3],
|
|
384
|
+
right: "selected-right",
|
|
385
|
+
}).success !== false) {
|
|
386
|
+
throw new Error("shared Uint8Array native union accepted invalid right branch bytes");
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
const primitiveWrapperRight = mod.validatePrimitiveWrapperShared({
|
|
390
|
+
value: "x",
|
|
391
|
+
right: "selected-right",
|
|
392
|
+
});
|
|
393
|
+
if (primitiveWrapperRight.success !== true) {
|
|
394
|
+
throw new Error("shared primitive wrapper union failed its right branch: " + JSON.stringify(primitiveWrapperRight));
|
|
395
|
+
}
|
|
396
|
+
if (mod.validatePrimitiveWrapperShared({
|
|
397
|
+
value: 1,
|
|
398
|
+
right: "selected-right",
|
|
399
|
+
}).success !== false) {
|
|
400
|
+
throw new Error("shared primitive wrapper union accepted invalid right branch value");
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
const templateRight = mod.validateTemplateShared({
|
|
404
|
+
code: "id-1",
|
|
405
|
+
right: "selected-right",
|
|
406
|
+
});
|
|
407
|
+
if (templateRight.success !== true) {
|
|
408
|
+
throw new Error("shared template union failed its overlapping right branch: " + JSON.stringify(templateRight));
|
|
409
|
+
}
|
|
410
|
+
if (mod.isTemplateShared({
|
|
411
|
+
code: "id-1",
|
|
412
|
+
right: "selected-right",
|
|
413
|
+
}) !== true) {
|
|
414
|
+
throw new Error("shared template union failed its overlapping right branch is");
|
|
415
|
+
}
|
|
416
|
+
const templateAssertInput = {
|
|
417
|
+
code: "id-1",
|
|
418
|
+
right: "selected-right",
|
|
419
|
+
};
|
|
420
|
+
if (mod.assertTemplateShared(templateAssertInput) !== templateAssertInput) {
|
|
421
|
+
throw new Error("shared template union failed its overlapping right branch assert");
|
|
422
|
+
}
|
|
423
|
+
if (mod.validateTemplateShared({
|
|
424
|
+
code: "other-1",
|
|
425
|
+
right: "selected-right",
|
|
426
|
+
}).success !== false) {
|
|
427
|
+
throw new Error("shared template union accepted invalid right branch code");
|
|
428
|
+
}
|
|
429
|
+
if (mod.isTemplateShared({
|
|
430
|
+
code: "other-1",
|
|
431
|
+
right: "selected-right",
|
|
432
|
+
}) !== false) {
|
|
433
|
+
throw new Error("shared template union is accepted invalid right branch code");
|
|
434
|
+
}
|
|
435
|
+
if (capture(() => mod.assertTemplateShared({
|
|
436
|
+
code: "other-1",
|
|
437
|
+
right: "selected-right",
|
|
438
|
+
})) === null) {
|
|
439
|
+
throw new Error("shared template union assert accepted invalid right branch code");
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
const setRight = mod.validateSetShared({
|
|
443
|
+
items: new Set(),
|
|
444
|
+
right: "selected-right",
|
|
445
|
+
});
|
|
446
|
+
if (setRight.success !== true) {
|
|
447
|
+
throw new Error("shared empty Set union failed its right branch: " + JSON.stringify(setRight));
|
|
448
|
+
}
|
|
449
|
+
if (mod.validateSetShared({
|
|
450
|
+
items: new Set(["left-shaped"]),
|
|
451
|
+
right: "selected-right",
|
|
452
|
+
}).success !== false) {
|
|
453
|
+
throw new Error("shared Set union accepted invalid right branch value");
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
const mapRight = mod.validateMapShared({
|
|
457
|
+
lookup: new Map(),
|
|
458
|
+
right: "selected-right",
|
|
459
|
+
});
|
|
460
|
+
if (mapRight.success !== true) {
|
|
461
|
+
throw new Error("shared empty Map union failed its right branch: " + JSON.stringify(mapRight));
|
|
462
|
+
}
|
|
463
|
+
if (mod.validateMapShared({
|
|
464
|
+
lookup: new Map([["left-key", 1]]),
|
|
465
|
+
right: "selected-right",
|
|
466
|
+
}).success !== false) {
|
|
467
|
+
throw new Error("shared Map union accepted invalid right branch entry");
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
const arrayTupleRight = mod.validateArrayTupleShared({
|
|
471
|
+
items: [1],
|
|
472
|
+
right: "selected-right",
|
|
473
|
+
});
|
|
474
|
+
if (arrayTupleRight.success !== true) {
|
|
475
|
+
throw new Error("shared array/tuple union failed its right branch: " + JSON.stringify(arrayTupleRight));
|
|
476
|
+
}
|
|
477
|
+
if (mod.validateArrayTupleShared({
|
|
478
|
+
items: [1, 2],
|
|
479
|
+
right: "selected-right",
|
|
480
|
+
}).success !== false) {
|
|
481
|
+
throw new Error("shared array/tuple union accepted invalid right branch item");
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
for (const [name, validate, input] of [
|
|
485
|
+
["Date", mod.validateDateShared, { stamp: new Date("2025-06-10T10:43:59.087Z"), left: "selected-left" }],
|
|
486
|
+
["Uint8Array", mod.validateBytesShared, { bytes: new Uint8Array([1, 2, 3]), left: "selected-left" }],
|
|
487
|
+
["primitive wrapper", mod.validatePrimitiveWrapperShared, { value: "x", left: "selected-left" }],
|
|
488
|
+
["template", mod.validateTemplateShared, { code: "id-1", left: "selected-left" }],
|
|
489
|
+
["Set", mod.validateSetShared, { items: new Set(["left-shaped"]), left: "selected-left" }],
|
|
490
|
+
["Map", mod.validateMapShared, { lookup: new Map([["left-key", 1]]), left: "selected-left" }],
|
|
491
|
+
["array/tuple", mod.validateArrayTupleShared, { items: [1, 2], left: "selected-left" }],
|
|
492
|
+
]) {
|
|
493
|
+
const left = validate(input);
|
|
494
|
+
if (left.success !== true) {
|
|
495
|
+
throw new Error("shared " + name + " union failed its left branch: " + JSON.stringify(left));
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
if (mod.validateBigIntPrimitiveOrInterface(1n).success !== true) {
|
|
500
|
+
throw new Error("bigint primitive should pass bigint | BigInt validation");
|
|
501
|
+
}
|
|
502
|
+
if (mod.validateBigIntLiteralOrInterface(1n).success !== true) {
|
|
503
|
+
throw new Error("bigint literal should pass 1n | BigInt validation");
|
|
504
|
+
}
|
|
505
|
+
const boxedBigInt = Object(1n);
|
|
506
|
+
if (mod.validateBigIntInterfaceOnly(boxedBigInt).success !== true) {
|
|
507
|
+
throw new Error("boxed BigInt should pass BigInt validation");
|
|
508
|
+
}
|
|
509
|
+
if (mod.validateBigIntInterfaceOnly(1n).success !== true) {
|
|
510
|
+
throw new Error("primitive bigint should pass BigInt validation");
|
|
511
|
+
}
|
|
512
|
+
if (mod.validateBigIntPrimitiveOrInterface(boxedBigInt).success !== true) {
|
|
513
|
+
throw new Error("boxed BigInt should pass bigint | BigInt validation");
|
|
514
|
+
}
|
|
515
|
+
if (mod.validateBigIntLiteralOrInterface(Object(2n)).success !== true) {
|
|
516
|
+
throw new Error("boxed BigInt should pass 1n | BigInt validation");
|
|
517
|
+
}
|
|
518
|
+
if (mod.validateBigIntLiteralOrInterface(2n).success !== true) {
|
|
519
|
+
throw new Error("primitive bigint should pass 1n | BigInt validation through BigInt");
|
|
520
|
+
}
|
|
521
|
+
if (mod.isBigIntPrimitiveOrInterface(1n) !== true) {
|
|
522
|
+
throw new Error("bigint primitive should pass bigint | BigInt is");
|
|
523
|
+
}
|
|
524
|
+
if (mod.isBigIntLiteralOrInterface(1n) !== true) {
|
|
525
|
+
throw new Error("bigint literal should pass 1n | BigInt is");
|
|
526
|
+
}
|
|
527
|
+
if (mod.isBigIntInterfaceOnly(boxedBigInt) !== true) {
|
|
528
|
+
throw new Error("boxed BigInt should pass BigInt is");
|
|
529
|
+
}
|
|
530
|
+
if (mod.isBigIntInterfaceOnly(1n) !== true) {
|
|
531
|
+
throw new Error("primitive bigint should pass BigInt is");
|
|
532
|
+
}
|
|
533
|
+
if (mod.isBigIntPrimitiveOrInterface(boxedBigInt) !== true) {
|
|
534
|
+
throw new Error("boxed BigInt should pass bigint | BigInt is");
|
|
535
|
+
}
|
|
536
|
+
if (mod.isBigIntLiteralOrInterface(Object(2n)) !== true) {
|
|
537
|
+
throw new Error("boxed BigInt should pass 1n | BigInt is");
|
|
538
|
+
}
|
|
539
|
+
if (mod.isBigIntLiteralOrInterface(2n) !== true) {
|
|
540
|
+
throw new Error("primitive bigint should pass 1n | BigInt is through BigInt");
|
|
541
|
+
}
|
|
542
|
+
if (mod.assertBigIntPrimitiveOrInterface(1n) !== 1n) {
|
|
543
|
+
throw new Error("bigint primitive should pass bigint | BigInt assert");
|
|
544
|
+
}
|
|
545
|
+
if (mod.assertBigIntLiteralOrInterface(1n) !== 1n) {
|
|
546
|
+
throw new Error("bigint literal should pass 1n | BigInt assert");
|
|
547
|
+
}
|
|
548
|
+
if (mod.assertBigIntInterfaceOnly(boxedBigInt) !== boxedBigInt) {
|
|
549
|
+
throw new Error("boxed BigInt should pass BigInt assert");
|
|
550
|
+
}
|
|
551
|
+
if (mod.assertBigIntInterfaceOnly(1n) !== 1n) {
|
|
552
|
+
throw new Error("primitive bigint should pass BigInt assert");
|
|
553
|
+
}
|
|
554
|
+
if (mod.assertBigIntPrimitiveOrInterface(boxedBigInt) !== boxedBigInt) {
|
|
555
|
+
throw new Error("boxed BigInt should pass bigint | BigInt assert");
|
|
556
|
+
}
|
|
557
|
+
const boxedBigIntTwo = Object(2n);
|
|
558
|
+
if (mod.assertBigIntLiteralOrInterface(boxedBigIntTwo) !== boxedBigIntTwo) {
|
|
559
|
+
throw new Error("boxed BigInt should pass 1n | BigInt assert");
|
|
560
|
+
}
|
|
561
|
+
if (mod.assertBigIntLiteralOrInterface(2n) !== 2n) {
|
|
562
|
+
throw new Error("primitive bigint should pass 1n | BigInt assert through BigInt");
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
// NOTE: 2n is NOT a negative for 1n | BigInt: the BigInt arm absorbs every
|
|
566
|
+
// bigint, so 2n is asserted as a positive above. Negatives must be non-bigint.
|
|
567
|
+
const bigintNegatives = [
|
|
568
|
+
["string", "1"],
|
|
569
|
+
["number", 1],
|
|
570
|
+
["null", null],
|
|
571
|
+
["boxed Number", Object(1)],
|
|
572
|
+
];
|
|
573
|
+
for (const [alias, validate, is, assert] of [
|
|
574
|
+
["bigint | BigInt", mod.validateBigIntPrimitiveOrInterface, mod.isBigIntPrimitiveOrInterface, mod.assertBigIntPrimitiveOrInterface],
|
|
575
|
+
["1n | BigInt", mod.validateBigIntLiteralOrInterface, mod.isBigIntLiteralOrInterface, mod.assertBigIntLiteralOrInterface],
|
|
576
|
+
["BigInt", mod.validateBigIntInterfaceOnly, mod.isBigIntInterfaceOnly, mod.assertBigIntInterfaceOnly],
|
|
577
|
+
]) {
|
|
578
|
+
for (const [kind, input] of bigintNegatives) {
|
|
579
|
+
if (validate(input).success !== false) {
|
|
580
|
+
throw new Error(kind + " input unexpectedly passed " + alias + " validate");
|
|
581
|
+
}
|
|
582
|
+
if (is(input) !== false) {
|
|
583
|
+
throw new Error(kind + " input unexpectedly passed " + alias + " is");
|
|
584
|
+
}
|
|
585
|
+
if (capture(() => assert(input)) === null) {
|
|
586
|
+
throw new Error(kind + " input unexpectedly passed " + alias + " assert");
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
}
|
|
590
|
+
`
|