typia 13.1.1 → 13.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/lib/_virtual/_rolldown/runtime.mjs +1 -5
- package/lib/executable/FileSystemIdentity.d.ts +44 -0
- package/lib/executable/FileSystemIdentity.js +213 -0
- package/lib/executable/FileSystemIdentity.js.map +1 -0
- package/lib/executable/FileSystemIdentity.mjs +133 -0
- package/lib/executable/FileSystemIdentity.mjs.map +1 -0
- package/lib/executable/TypiaGenerateWizard.js +272 -106
- package/lib/executable/TypiaGenerateWizard.js.map +1 -1
- package/lib/executable/TypiaGenerateWizard.mjs +239 -95
- package/lib/executable/TypiaGenerateWizard.mjs.map +1 -1
- package/lib/functional.d.ts +15 -12
- package/lib/functional.js.map +1 -1
- package/lib/functional.mjs.map +1 -1
- package/lib/internal/_ProtobufReader.d.ts +32 -0
- package/lib/internal/_ProtobufReader.js +148 -48
- package/lib/internal/_ProtobufReader.js.map +1 -1
- package/lib/internal/_ProtobufReader.mjs +137 -41
- package/lib/internal/_ProtobufReader.mjs.map +1 -1
- package/lib/internal/_createStandardSchema.js +18 -1
- package/lib/internal/_createStandardSchema.js.map +1 -1
- package/lib/internal/_createStandardSchema.mjs +12 -1
- package/lib/internal/_createStandardSchema.mjs.map +1 -1
- package/lib/internal/_decimal.d.ts +14 -0
- package/lib/internal/_decimal.js +61 -0
- package/lib/internal/_decimal.js.map +1 -0
- package/lib/internal/_decimal.mjs +49 -0
- package/lib/internal/_decimal.mjs.map +1 -0
- package/lib/internal/_httpQueryParseURLSearchParams.js +23 -2
- package/lib/internal/_httpQueryParseURLSearchParams.js.map +1 -1
- package/lib/internal/_httpQueryParseURLSearchParams.mjs +20 -2
- package/lib/internal/_httpQueryParseURLSearchParams.mjs.map +1 -1
- package/lib/internal/_isFormatByte.js +2 -5
- package/lib/internal/_isFormatByte.js.map +1 -1
- package/lib/internal/_isFormatByte.mjs +2 -5
- package/lib/internal/_isFormatByte.mjs.map +1 -1
- package/lib/internal/_isFormatDate.js +15 -2
- package/lib/internal/_isFormatDate.js.map +1 -1
- package/lib/internal/_isFormatDate.mjs +22 -2
- package/lib/internal/_isFormatDate.mjs.map +1 -1
- package/lib/internal/_isFormatDateTime.js +21 -2
- package/lib/internal/_isFormatDateTime.js.map +1 -1
- package/lib/internal/_isFormatDateTime.mjs +13 -2
- package/lib/internal/_isFormatDateTime.mjs.map +1 -1
- package/lib/internal/_isFormatIri.js +3 -2
- package/lib/internal/_isFormatIri.js.map +1 -1
- package/lib/internal/_isFormatIri.mjs +3 -2
- package/lib/internal/_isFormatIri.mjs.map +1 -1
- package/lib/internal/_isFormatIriReference.js +10 -2
- package/lib/internal/_isFormatIriReference.js.map +1 -1
- package/lib/internal/_isFormatIriReference.mjs +9 -2
- package/lib/internal/_isFormatIriReference.mjs.map +1 -1
- package/lib/internal/_isFormatUriReference.js +1 -1
- package/lib/internal/_isFormatUriReference.js.map +1 -1
- package/lib/internal/_isFormatUriReference.mjs +1 -1
- package/lib/internal/_isFormatUriReference.mjs.map +1 -1
- package/lib/internal/_isMultipleOf.d.ts +1 -0
- package/lib/internal/_isMultipleOf.js +13 -0
- package/lib/internal/_isMultipleOf.js.map +1 -0
- package/lib/internal/_isMultipleOf.mjs +12 -0
- package/lib/internal/_isMultipleOf.mjs.map +1 -0
- package/lib/internal/_isTypeFloat.js +1 -1
- package/lib/internal/_isTypeFloat.js.map +1 -1
- package/lib/internal/_isTypeFloat.mjs +1 -1
- package/lib/internal/_isTypeFloat.mjs.map +1 -1
- package/lib/internal/_isTypeInt64.js +1 -0
- package/lib/internal/_isTypeInt64.js.map +1 -1
- package/lib/internal/_isTypeInt64.mjs.map +1 -1
- package/lib/internal/_isTypeInt64Bigint.d.ts +1 -0
- package/lib/internal/_isTypeInt64Bigint.js +15 -0
- package/lib/internal/_isTypeInt64Bigint.js.map +1 -0
- package/lib/internal/_isTypeInt64Bigint.mjs +8 -0
- package/lib/internal/_isTypeInt64Bigint.mjs.map +1 -0
- package/lib/internal/_isTypeUint64.js +1 -0
- package/lib/internal/_isTypeUint64.js.map +1 -1
- package/lib/internal/_isTypeUint64.mjs.map +1 -1
- package/lib/internal/_isTypeUint64Bigint.d.ts +1 -0
- package/lib/internal/_isTypeUint64Bigint.js +10 -0
- package/lib/internal/_isTypeUint64Bigint.js.map +1 -0
- package/lib/internal/_isTypeUint64Bigint.mjs +8 -0
- package/lib/internal/_isTypeUint64Bigint.mjs.map +1 -0
- package/lib/internal/_isUniqueItems.js +96 -109
- package/lib/internal/_isUniqueItems.js.map +1 -1
- package/lib/internal/_isUniqueItems.mjs +62 -50
- package/lib/internal/_isUniqueItems.mjs.map +1 -1
- package/lib/internal/_jsonStringifyArray.d.ts +1 -0
- package/lib/internal/_jsonStringifyArray.js +48 -0
- package/lib/internal/_jsonStringifyArray.js.map +1 -0
- package/lib/internal/_jsonStringifyArray.mjs +40 -0
- package/lib/internal/_jsonStringifyArray.mjs.map +1 -0
- package/lib/internal/_jsonStringifyElement.d.ts +1 -0
- package/lib/internal/_jsonStringifyElement.js +23 -0
- package/lib/internal/_jsonStringifyElement.js.map +1 -0
- package/lib/internal/_jsonStringifyElement.mjs +23 -0
- package/lib/internal/_jsonStringifyElement.mjs.map +1 -0
- package/lib/internal/_jsonStringifyProperty.d.ts +1 -0
- package/lib/internal/_jsonStringifyProperty.js +31 -0
- package/lib/internal/_jsonStringifyProperty.js.map +1 -0
- package/lib/internal/_jsonStringifyProperty.mjs +31 -0
- package/lib/internal/_jsonStringifyProperty.mjs.map +1 -0
- package/lib/internal/_llmApplicationFinalize.js +1 -1
- package/lib/internal/_llmApplicationFinalize.js.map +1 -1
- package/lib/internal/_llmApplicationFinalize.mjs +1 -1
- package/lib/internal/_llmApplicationFinalize.mjs.map +1 -1
- package/lib/internal/_notationAny.js +8 -1
- package/lib/internal/_notationAny.js.map +1 -1
- package/lib/internal/_notationAny.mjs +7 -1
- package/lib/internal/_notationAny.mjs.map +1 -1
- package/lib/internal/_notationAssign.d.ts +1 -0
- package/lib/internal/_notationAssign.js +18 -0
- package/lib/internal/_notationAssign.js.map +1 -0
- package/lib/internal/_notationAssign.mjs +17 -0
- package/lib/internal/_notationAssign.mjs.map +1 -0
- package/lib/internal/_notationCamel.js +30 -9
- package/lib/internal/_notationCamel.js.map +1 -1
- package/lib/internal/_notationCamel.mjs +13 -5
- package/lib/internal/_notationCamel.mjs.map +1 -1
- package/lib/internal/_notationKebab.d.ts +1 -0
- package/lib/internal/_notationKebab.js +15 -0
- package/lib/internal/_notationKebab.js.map +1 -0
- package/lib/internal/_notationKebab.mjs +15 -0
- package/lib/internal/_notationKebab.mjs.map +1 -0
- package/lib/internal/_notationKeyCollision.d.ts +1 -0
- package/lib/internal/_notationKeyCollision.js +8 -0
- package/lib/internal/_notationKeyCollision.js.map +1 -0
- package/lib/internal/_notationKeyCollision.mjs +8 -0
- package/lib/internal/_notationKeyCollision.mjs.map +1 -0
- package/lib/internal/_notationPascal.js +20 -5
- package/lib/internal/_notationPascal.js.map +1 -1
- package/lib/internal/_notationPascal.mjs +10 -5
- package/lib/internal/_notationPascal.mjs.map +1 -1
- package/lib/internal/_notationSnake.js +25 -22
- package/lib/internal/_notationSnake.js.map +1 -1
- package/lib/internal/_notationSnake.mjs +11 -11
- package/lib/internal/_notationSnake.mjs.map +1 -1
- package/lib/internal/_plainCloneAny.js +174 -38
- package/lib/internal/_plainCloneAny.js.map +1 -1
- package/lib/internal/_plainCloneAny.mjs +126 -22
- package/lib/internal/_plainCloneAny.mjs.map +1 -1
- package/lib/internal/_randomArray.d.ts +1 -1
- package/lib/internal/_randomArray.js +11 -4
- package/lib/internal/_randomArray.js.map +1 -1
- package/lib/internal/_randomArray.mjs +9 -3
- package/lib/internal/_randomArray.mjs.map +1 -1
- package/lib/internal/_randomFormatByte.d.ts +2 -1
- package/lib/internal/_randomFormatByte.js +25 -1
- package/lib/internal/_randomFormatByte.js.map +1 -1
- package/lib/internal/_randomFormatByte.mjs +20 -1
- package/lib/internal/_randomFormatByte.mjs.map +1 -1
- package/lib/internal/_randomFormatDate.d.ts +3 -4
- package/lib/internal/_randomFormatDate.js +3 -10
- package/lib/internal/_randomFormatDate.js.map +1 -1
- package/lib/internal/_randomFormatDate.mjs +3 -6
- package/lib/internal/_randomFormatDate.mjs.map +1 -1
- package/lib/internal/_randomFormatDatetime.d.ts +3 -4
- package/lib/internal/_randomFormatDatetime.js +26 -8
- package/lib/internal/_randomFormatDatetime.js.map +1 -1
- package/lib/internal/_randomFormatDatetime.mjs +17 -6
- package/lib/internal/_randomFormatDatetime.mjs.map +1 -1
- package/lib/internal/_randomFormatDuration.d.ts +2 -1
- package/lib/internal/_randomFormatDuration.js +23 -14
- package/lib/internal/_randomFormatDuration.js.map +1 -1
- package/lib/internal/_randomFormatDuration.mjs +22 -13
- package/lib/internal/_randomFormatDuration.mjs.map +1 -1
- package/lib/internal/_randomFormatEmail.d.ts +2 -1
- package/lib/internal/_randomFormatEmail.js +8 -1
- package/lib/internal/_randomFormatEmail.js.map +1 -1
- package/lib/internal/_randomFormatEmail.mjs +5 -1
- package/lib/internal/_randomFormatEmail.mjs.map +1 -1
- package/lib/internal/_randomFormatHostname.d.ts +8 -1
- package/lib/internal/_randomFormatHostname.js +45 -2
- package/lib/internal/_randomFormatHostname.js.map +1 -1
- package/lib/internal/_randomFormatHostname.mjs +38 -2
- package/lib/internal/_randomFormatHostname.mjs.map +1 -1
- package/lib/internal/_randomFormatIdnEmail.d.ts +2 -1
- package/lib/internal/_randomFormatIdnEmail.js +16 -2
- package/lib/internal/_randomFormatIdnEmail.js.map +1 -1
- package/lib/internal/_randomFormatIdnEmail.mjs +11 -2
- package/lib/internal/_randomFormatIdnEmail.mjs.map +1 -1
- package/lib/internal/_randomFormatIdnHostname.d.ts +2 -1
- package/lib/internal/_randomFormatIdnHostname.js +26 -1
- package/lib/internal/_randomFormatIdnHostname.js.map +1 -1
- package/lib/internal/_randomFormatIdnHostname.mjs +25 -2
- package/lib/internal/_randomFormatIdnHostname.mjs.map +1 -1
- package/lib/internal/_randomFormatIpv4.d.ts +2 -1
- package/lib/internal/_randomFormatIpv4.js +32 -1
- package/lib/internal/_randomFormatIpv4.js.map +1 -1
- package/lib/internal/_randomFormatIpv4.mjs +23 -1
- package/lib/internal/_randomFormatIpv4.mjs.map +1 -1
- package/lib/internal/_randomFormatIpv6.d.ts +2 -1
- package/lib/internal/_randomFormatIpv6.js +58 -1
- package/lib/internal/_randomFormatIpv6.js.map +1 -1
- package/lib/internal/_randomFormatIpv6.mjs +45 -1
- package/lib/internal/_randomFormatIpv6.mjs.map +1 -1
- package/lib/internal/_randomFormatIri.d.ts +2 -1
- package/lib/internal/_randomFormatIri.js +1 -1
- package/lib/internal/_randomFormatIri.js.map +1 -1
- package/lib/internal/_randomFormatIri.mjs +1 -1
- package/lib/internal/_randomFormatIri.mjs.map +1 -1
- package/lib/internal/_randomFormatIriReference.d.ts +2 -1
- package/lib/internal/_randomFormatIriReference.js +1 -1
- package/lib/internal/_randomFormatIriReference.js.map +1 -1
- package/lib/internal/_randomFormatIriReference.mjs +1 -1
- package/lib/internal/_randomFormatIriReference.mjs.map +1 -1
- package/lib/internal/_randomFormatJsonPointer.d.ts +2 -1
- package/lib/internal/_randomFormatJsonPointer.js +20 -1
- package/lib/internal/_randomFormatJsonPointer.js.map +1 -1
- package/lib/internal/_randomFormatJsonPointer.mjs +15 -1
- package/lib/internal/_randomFormatJsonPointer.mjs.map +1 -1
- package/lib/internal/_randomFormatPassword.d.ts +2 -1
- package/lib/internal/_randomFormatPassword.js +7 -5
- package/lib/internal/_randomFormatPassword.js.map +1 -1
- package/lib/internal/_randomFormatPassword.mjs +5 -1
- package/lib/internal/_randomFormatPassword.mjs.map +1 -1
- package/lib/internal/_randomFormatRegex.d.ts +2 -1
- package/lib/internal/_randomFormatRegex.js +15 -1
- package/lib/internal/_randomFormatRegex.js.map +1 -1
- package/lib/internal/_randomFormatRegex.mjs +14 -1
- package/lib/internal/_randomFormatRegex.mjs.map +1 -1
- package/lib/internal/_randomFormatRelativeJsonPointer.d.ts +2 -1
- package/lib/internal/_randomFormatRelativeJsonPointer.js +20 -5
- package/lib/internal/_randomFormatRelativeJsonPointer.js.map +1 -1
- package/lib/internal/_randomFormatRelativeJsonPointer.mjs +21 -5
- package/lib/internal/_randomFormatRelativeJsonPointer.mjs.map +1 -1
- package/lib/internal/_randomFormatTime.d.ts +2 -1
- package/lib/internal/_randomFormatTime.js +34 -7
- package/lib/internal/_randomFormatTime.js.map +1 -1
- package/lib/internal/_randomFormatTime.mjs +37 -4
- package/lib/internal/_randomFormatTime.mjs.map +1 -1
- package/lib/internal/_randomFormatUri.d.ts +2 -1
- package/lib/internal/_randomFormatUri.js +1 -1
- package/lib/internal/_randomFormatUri.js.map +1 -1
- package/lib/internal/_randomFormatUri.mjs +1 -1
- package/lib/internal/_randomFormatUri.mjs.map +1 -1
- package/lib/internal/_randomFormatUriReference.d.ts +2 -1
- package/lib/internal/_randomFormatUriReference.js +1 -1
- package/lib/internal/_randomFormatUriReference.js.map +1 -1
- package/lib/internal/_randomFormatUriReference.mjs +1 -1
- package/lib/internal/_randomFormatUriReference.mjs.map +1 -1
- package/lib/internal/_randomFormatUriTemplate.d.ts +2 -1
- package/lib/internal/_randomFormatUriTemplate.js +1 -1
- package/lib/internal/_randomFormatUriTemplate.js.map +1 -1
- package/lib/internal/_randomFormatUriTemplate.mjs +1 -1
- package/lib/internal/_randomFormatUriTemplate.mjs.map +1 -1
- package/lib/internal/_randomFormatUrl.d.ts +2 -1
- package/lib/internal/_randomFormatUrl.js +21 -1
- package/lib/internal/_randomFormatUrl.js.map +1 -1
- package/lib/internal/_randomFormatUrl.mjs +18 -1
- package/lib/internal/_randomFormatUrl.mjs.map +1 -1
- package/lib/internal/_randomFormatUuid.d.ts +2 -1
- package/lib/internal/_randomFormatUuid.js +3 -2
- package/lib/internal/_randomFormatUuid.js.map +1 -1
- package/lib/internal/_randomFormatUuid.mjs +3 -2
- package/lib/internal/_randomFormatUuid.mjs.map +1 -1
- package/lib/internal/_randomInteger.js +59 -28
- package/lib/internal/_randomInteger.js.map +1 -1
- package/lib/internal/_randomInteger.mjs +56 -16
- package/lib/internal/_randomInteger.mjs.map +1 -1
- package/lib/internal/_randomMultiple.d.ts +8 -0
- package/lib/internal/_randomMultiple.js +168 -0
- package/lib/internal/_randomMultiple.js.map +1 -0
- package/lib/internal/_randomMultiple.mjs +158 -0
- package/lib/internal/_randomMultiple.mjs.map +1 -0
- package/lib/internal/_randomNumber.js +42 -42
- package/lib/internal/_randomNumber.js.map +1 -1
- package/lib/internal/_randomNumber.mjs +41 -27
- package/lib/internal/_randomNumber.mjs.map +1 -1
- package/lib/internal/_randomPattern.d.ts +2 -1
- package/lib/internal/_randomPattern.js +19 -4
- package/lib/internal/_randomPattern.js.map +1 -1
- package/lib/internal/_randomPattern.mjs +10 -4
- package/lib/internal/_randomPattern.mjs.map +1 -1
- package/lib/internal/_randomStringLength.d.ts +64 -0
- package/lib/internal/_randomStringLength.js +84 -0
- package/lib/internal/_randomStringLength.js.map +1 -0
- package/lib/internal/_randomStringLength.mjs +79 -0
- package/lib/internal/_randomStringLength.mjs.map +1 -0
- package/lib/internal/_stringLength.d.ts +1 -0
- package/lib/internal/_stringLength.js +11 -0
- package/lib/internal/_stringLength.js.map +1 -0
- package/lib/internal/_stringLength.mjs +10 -0
- package/lib/internal/_stringLength.mjs.map +1 -0
- package/lib/internal/_validateReport.js +4 -1
- package/lib/internal/_validateReport.js.map +1 -1
- package/lib/internal/_validateReport.mjs +2 -1
- package/lib/internal/_validateReport.mjs.map +1 -1
- package/lib/internal/private/__notationRename.d.ts +14 -0
- package/lib/internal/private/__notationRename.js +25 -0
- package/lib/internal/private/__notationRename.js.map +1 -0
- package/lib/internal/private/__notationRename.mjs +24 -0
- package/lib/internal/private/__notationRename.mjs.map +1 -0
- package/lib/internal/private/__randomComposition.d.ts +23 -0
- package/lib/internal/private/__randomComposition.js +48 -0
- package/lib/internal/private/__randomComposition.js.map +1 -0
- package/lib/internal/private/__randomComposition.mjs +54 -0
- package/lib/internal/private/__randomComposition.mjs.map +1 -0
- package/lib/internal/private/__randomEpoch.d.ts +19 -0
- package/lib/internal/private/__randomEpoch.js +31 -0
- package/lib/internal/private/__randomEpoch.js.map +1 -0
- package/lib/internal/private/__randomEpoch.mjs +28 -0
- package/lib/internal/private/__randomEpoch.mjs.map +1 -0
- package/lib/json.d.ts +2 -2
- package/lib/json.mjs.map +1 -1
- package/lib/module.d.ts +2 -2
- package/lib/module.js.map +1 -1
- package/lib/module.mjs.map +1 -1
- package/lib/notations.d.ts +20 -4
- package/lib/notations.js.map +1 -1
- package/lib/notations.mjs.map +1 -1
- package/native/adapter/plugin_options.go +117 -0
- package/native/adapter/plugin_options_payload_matrix_test.go +181 -0
- package/native/cmd/ttsc-typia/any_array_type_tags_transform_test.go +63 -9
- package/native/cmd/ttsc-typia/assert_guard_factory_contract_test.go +152 -0
- package/native/cmd/ttsc-typia/build.go +84 -64
- package/native/cmd/ttsc-typia/build_no_emit_preserves_analysis_options_test.go +67 -0
- package/native/cmd/ttsc-typia/build_no_emit_transform_diagnostics_test.go +138 -0
- package/native/cmd/ttsc-typia/build_plugin_options_come_from_payload_test.go +48 -0
- package/native/cmd/ttsc-typia/build_transactional_emit_success_test.go +81 -0
- package/native/cmd/ttsc-typia/build_transform_failure_atomicity_test.go +138 -0
- package/native/cmd/ttsc-typia/callable_interface_function_semantics_transform_test.go +331 -0
- package/native/cmd/ttsc-typia/callable_type_literal_boundaries_transform_test.go +1184 -0
- package/native/cmd/ttsc-typia/command_routes_and_diagnostics_coverage_test.go +3 -1
- package/native/cmd/ttsc-typia/compare_functional_union_membership_transform_test.go +434 -0
- package/native/cmd/ttsc-typia/compare_less_nan_transform_test.go +98 -0
- package/native/cmd/ttsc-typia/compare_native_object_overmatch_transform_test.go +161 -0
- package/native/cmd/ttsc-typia/compare_nondiscriminable_union_transform_test.go +343 -0
- package/native/cmd/ttsc-typia/compare_template_literal_union_transform_test.go +241 -0
- package/native/cmd/ttsc-typia/compare_union_discrimination_transform_test.go +289 -0
- package/native/cmd/ttsc-typia/default_library_spoof_native_identity_transform_test.go +216 -0
- package/native/cmd/ttsc-typia/escaped_property_key_path_transform_test.go +193 -0
- package/native/cmd/ttsc-typia/finite_option_number_leaf_transform_test.go +240 -0
- package/native/cmd/ttsc-typia/functional_promised_type_transform_test.go +220 -0
- package/native/cmd/ttsc-typia/functional_receiver_transform_test.go +232 -0
- package/native/cmd/ttsc-typia/is_object_function_member_transform_test.go +205 -0
- package/native/cmd/ttsc-typia/json_application_alias_function_validation_transform_test.go +151 -0
- package/native/cmd/ttsc-typia/json_is_stringify_finite_number_transform_test.go +198 -0
- package/native/cmd/ttsc-typia/json_schema_dynamic_key_determinism_transform_test.go +246 -0
- package/native/cmd/ttsc-typia/json_stringify_contextual_undefined_transform_test.go +556 -0
- package/native/cmd/ttsc-typia/json_stringify_special_key_transform_test.go +238 -0
- package/native/cmd/ttsc-typia/lib_replacement_native_identity_transform_test.go +277 -0
- package/native/cmd/ttsc-typia/main_wasm.go +21 -2
- package/native/cmd/ttsc-typia/native_collection_identity_is_transform_test.go +234 -0
- package/native/cmd/ttsc-typia/native_generic_name_guard_is_transform_test.go +194 -0
- package/native/cmd/ttsc-typia/native_name_collision_is_transform_test.go +204 -0
- package/native/cmd/ttsc-typia/native_named_intersection_union_transform_test.go +390 -0
- package/native/cmd/ttsc-typia/node_buffer_native_exports_is_transform_test.go +526 -0
- package/native/cmd/ttsc-typia/non_trailing_rest_tuple_transform_test.go +23 -11
- package/native/cmd/ttsc-typia/notation_dynamic_keys_transform_test.go +286 -0
- package/native/cmd/ttsc-typia/notation_kebab_case_transform_test.go +1 -1
- package/native/cmd/ttsc-typia/notation_literal_collision_transform_test.go +164 -0
- package/native/cmd/ttsc-typia/notation_pascal_case_transform_test.go +230 -0
- package/native/cmd/ttsc-typia/notation_unicode_key_transform_test.go +309 -0
- package/native/cmd/ttsc-typia/package_declaration_native_identity_is_transform_test.go +293 -0
- package/native/cmd/ttsc-typia/pattern_line_terminator_escape_transform_test.go +224 -0
- package/native/cmd/ttsc-typia/plain_prune_union_object_overmatch_transform_test.go +219 -0
- package/native/cmd/ttsc-typia/plugin_options_payload_helpers_test.go +181 -0
- package/native/cmd/ttsc-typia/private_field_filter_is_transform_test.go +278 -0
- package/native/cmd/ttsc-typia/project_catalog_transform_coverage_test.go +73 -27
- package/native/cmd/ttsc-typia/project_dependencies_barrel_reexport_transform_test.go +120 -0
- package/native/cmd/ttsc-typia/project_dependencies_collapsed_alias_transform_test.go +134 -0
- package/native/cmd/ttsc-typia/project_dependencies_custom_lib_name_transform_test.go +135 -0
- package/native/cmd/ttsc-typia/project_dependencies_default_barrel_transform_test.go +114 -0
- package/native/cmd/ttsc-typia/project_dependencies_empty_heritage_transform_test.go +100 -0
- package/native/cmd/ttsc-typia/project_dependencies_envelope_transform_test.go +148 -0
- package/native/cmd/ttsc-typia/project_dependencies_index_signature_alias_transform_test.go +139 -0
- package/native/cmd/ttsc-typia/project_dependencies_local_reexport_transform_test.go +122 -0
- package/native/cmd/ttsc-typia/project_dependencies_signature_alias_transform_test.go +125 -0
- package/native/cmd/ttsc-typia/project_dependencies_star_barrel_transform_test.go +112 -0
- package/native/cmd/ttsc-typia/project_reference_graph_envelope_transform_test.go +190 -0
- package/native/cmd/ttsc-typia/protobuf_diagnostic_code_transform_test.go +167 -0
- package/native/cmd/ttsc-typia/protobuf_is_encode_finite_number_transform_test.go +98 -0
- package/native/cmd/ttsc-typia/protobuf_sequence_field_numbers_transform_test.go +52 -22
- package/native/cmd/ttsc-typia/symbol_index_domain_transform_test.go +316 -0
- package/native/cmd/ttsc-typia/symbol_key_member_filter_transform_test.go +279 -0
- package/native/cmd/ttsc-typia/template_interpolation_type_tags_transform_test.go +86 -23
- package/native/cmd/ttsc-typia/template_literal_type_tags_transform_test.go +3 -1
- package/native/cmd/ttsc-typia/transform.go +251 -39
- package/native/cmd/ttsc-typia/{transform_declaration_source_produces_no_js_test.go → transform_declaration_source_produces_no_javascript_test.go} +10 -2
- package/native/cmd/ttsc-typia/transform_fixtures_emit_coverage_test.go +21 -4
- package/native/cmd/ttsc-typia/transform_helpers_test.go +236 -3
- package/native/cmd/ttsc-typia/transform_plugin_options_come_from_payload_test.go +43 -0
- package/native/cmd/ttsc-typia/transform_single_file_failure_atomicity_test.go +114 -0
- package/native/cmd/ttsc-typia/transform_single_file_failure_writes_no_stdout_test.go +43 -0
- package/native/cmd/ttsc-typia/transform_single_file_js_distinguishes_same_basename_sources_test.go +81 -0
- package/native/cmd/ttsc-typia/transform_single_file_js_empty_emit_reports_no_output_test.go +100 -0
- package/native/cmd/ttsc-typia/transform_single_file_js_locates_output_across_layouts_test.go +160 -0
- package/native/cmd/ttsc-typia/transform_single_file_success_publishes_artifact_test.go +54 -0
- package/native/cmd/ttsc-typia/transform_wasm_host_argv_reports_diagnostics_test.go +39 -0
- package/native/cmd/ttsc-typia/tuple_optional_compare_clone_transform_test.go +227 -0
- package/native/cmd/ttsc-typia/user_global_native_identity_transform_test.go +484 -0
- package/native/core/factories/FormatCheatSheet.go +40 -7
- package/native/core/factories/IdentifierFactory.go +131 -4
- package/native/core/factories/MetadataCommentTagFactory.go +83 -40
- package/native/core/factories/MetadataTypeTagFactory.go +13 -1
- package/native/core/factories/NumericRangeFactory.go +60 -17
- package/native/core/factories/ProtobufFactory.go +13 -5
- package/native/core/factories/factory_utility_coverage_test.go +8 -2
- package/native/core/factories/format_alias_resolves_to_cheat_sheet_test.go +57 -0
- package/native/core/factories/format_alias_table_targets_the_cheat_sheet_test.go +44 -0
- package/native/core/factories/identifier_factory_postfix_escapes_every_key_test.go +147 -0
- package/native/core/factories/identifier_factory_postfix_survives_every_code_point_test.go +86 -0
- package/native/core/factories/internal/metadata/MetadataHelper.go +226 -17
- package/native/core/factories/internal/metadata/emplace_metadata_object.go +141 -8
- package/native/core/factories/internal/metadata/iterate_metadata.go +6 -0
- package/native/core/factories/internal/metadata/iterate_metadata_function.go +5 -12
- package/native/core/factories/internal/metadata/iterate_metadata_intersection.go +111 -29
- package/native/core/factories/internal/metadata/iterate_metadata_map.go +5 -0
- package/native/core/factories/internal/metadata/iterate_metadata_native.go +45 -2
- package/native/core/factories/internal/metadata/iterate_metadata_set.go +5 -0
- package/native/core/factories/internal/metadata/type_arguments_precondition_test.go +70 -0
- package/native/core/factories/metadata_comment_tag_factory_coverage_test.go +39 -0
- package/native/core/factories/metadata_comment_tag_factory_exclusivity_matches_interface_test.go +84 -0
- package/native/core/factories/metadata_type_tag_factory_accepts_legal_tag_combinations_test.go +60 -0
- package/native/core/factories/metadata_type_tag_factory_declarations_test.go +86 -0
- package/native/core/factories/metadata_type_tag_factory_keeps_bool_form_exclusivity_test.go +38 -0
- package/native/core/factories/metadata_type_tag_factory_rejects_cross_kind_exclusive_tags_test.go +65 -0
- package/native/core/factories/metadata_type_tag_factory_rejects_duplicated_array_form_tags_test.go +41 -0
- package/native/core/factories/numeric_range_factory_enforces_64bit_bounds_test.go +69 -0
- package/native/core/factories/protobuf_recovery_ownership_test.go +64 -0
- package/native/core/programmers/IsProgrammer.go +15 -1
- package/native/core/programmers/RandomProgrammer.go +51 -14
- package/native/core/programmers/compare/CompareEqualProgrammer.go +410 -8
- package/native/core/programmers/compare/CompareLessProgrammer.go +4 -2
- package/native/core/programmers/functional/FunctionalAssertFunctionProgrammer.go +4 -6
- package/native/core/programmers/functional/FunctionalAssertParametersProgrammer.go +5 -13
- package/native/core/programmers/functional/FunctionalAssertReturnProgrammer.go +6 -14
- package/native/core/programmers/functional/FunctionalIsFunctionProgrammer.go +4 -6
- package/native/core/programmers/functional/FunctionalIsParametersProgrammer.go +49 -14
- package/native/core/programmers/functional/FunctionalIsReturnProgrammer.go +5 -13
- package/native/core/programmers/functional/FunctionalValidateFunctionProgrammer.go +4 -6
- package/native/core/programmers/functional/FunctionalValidateParametersProgrammer.go +5 -13
- package/native/core/programmers/functional/FunctionalValidateReturnProgrammer.go +5 -13
- package/native/core/programmers/functional/internal/FunctionalGeneralProgrammer.go +4 -17
- package/native/core/programmers/helpers/CloneJoiner.go +32 -0
- package/native/core/programmers/helpers/FunctionProgrammer.go +6 -13
- package/native/core/programmers/helpers/NotationJoiner.go +86 -28
- package/native/core/programmers/helpers/StringifyJoinder.go +161 -51
- package/native/core/programmers/helpers/UnionExplorer.go +203 -61
- package/native/core/programmers/helpers/joiner_branch_coverage_test.go +116 -118
- package/native/core/programmers/helpers/union_explorer_coverage_test.go +1 -1
- package/native/core/programmers/internal/CheckerProgrammer.go +100 -48
- package/native/core/programmers/iterate/check_template.go +344 -32
- package/native/core/programmers/iterate/iterate_check_coverage_test.go +76 -158
- package/native/core/programmers/iterate/iterate_utility_coverage_test.go +231 -270
- package/native/core/programmers/iterate/json_schema_discriminator.go +36 -10
- package/native/core/programmers/iterate/json_schema_discriminator_declaration_syntax_test.go +205 -0
- package/native/core/programmers/iterate/json_schema_object.go +49 -7
- package/native/core/programmers/iterate/json_schema_pattern_property_order_test.go +44 -0
- package/native/core/programmers/iterate/openapi_v3_downgrader.go +674 -0
- package/native/core/programmers/iterate/openapi_v3_downgrader_boolean_default_test.go +95 -0
- package/native/core/programmers/iterate/openapi_v3_downgrader_test.go +123 -0
- package/native/core/programmers/iterate/template_interpolation_tags_test.go +40 -8
- package/native/core/programmers/iterate/template_runtime_pattern.go +63 -7
- package/native/core/programmers/json/JsonApplicationProgrammer.go +45 -11
- package/native/core/programmers/json/JsonSchemasProgrammer.go +12 -2
- package/native/core/programmers/json/JsonStringifyProgrammer.go +47 -6
- package/native/core/programmers/llm/LlmApplicationProgrammer.go +21 -11
- package/native/core/programmers/llm/LlmSchemaProgrammer.go +23 -6
- package/native/core/programmers/llm/llm_reference_codec_test.go +24 -0
- package/native/core/programmers/notations/NotationGeneralProgrammer.go +183 -67
- package/native/core/programmers/notations/notation_general_helpers_test.go +1 -3
- package/native/core/programmers/notations/notation_general_programmer_pascal_multiword_test.go +72 -0
- package/native/core/programmers/notations/notation_general_programmer_underscore_boundary_test.go +68 -0
- package/native/core/programmers/plain/PlainClassifyProgrammer.go +23 -15
- package/native/core/programmers/plain/PlainCloneProgrammer.go +20 -7
- package/native/core/programmers/plain/PlainPruneProgrammer.go +19 -5
- package/native/core/programmers/plain/plain_tuple_seed_recovery_ownership_test.go +25 -0
- package/native/core/programmers/protobuf/ProtobufDecodeProgrammer.go +37 -28
- package/native/core/programmers/protobuf/ProtobufMessageProgrammer.go +41 -22
- package/native/core/programmers/protobuf/protobuf_programmer_helper_coverage_test.go +26 -0
- package/native/core/programmers/random_programmer_length_argument_test.go +53 -0
- package/native/core/schemas/metadata/MetadataCollection.go +266 -25
- package/native/core/schemas/metadata/MetadataDefaultLibrary.go +81 -0
- package/native/core/schemas/metadata/MetadataDependency.go +388 -0
- package/native/core/schemas/metadata/MetadataObjectType.go +24 -22
- package/native/core/schemas/metadata/metadata_collection_generic_argument_dot_test.go +122 -0
- package/native/core/schemas/metadata/metadata_collection_name_allocation_test.go +147 -0
- package/native/core/schemas/metadata/metadata_collection_openapi_name_cascade_test.go +55 -0
- package/native/core/schemas/metadata/metadata_collection_openapi_name_test.go +68 -0
- package/native/core/utils/PatternUtil.go +13 -0
- package/native/core/utils/PromiseTypeFactory.go +59 -0
- package/native/core/utils/ProtobufNameEncoder.go +8 -0
- package/native/core/utils/promise_type_factory_semantics_test.go +118 -0
- package/native/go.mod +9 -1
- package/native/transform/CallExpressionTransformer.go +12 -0
- package/native/transform/features/json/JsonApplicationTransformer.go +1 -1
- package/native/transform/features/json/JsonSchemaTransformer.go +1 -1
- package/native/transform/features/json/JsonSchemasTransformer.go +5 -4
- package/native/transform/features/protobuf/ProtobufMessageTransformer.go +1 -1
- package/package.json +12 -4
- package/src/executable/FileSystemIdentity.ts +222 -0
- package/src/executable/TypiaGenerateWizard.ts +386 -113
- package/src/functional.ts +30 -60
- package/src/internal/_ProtobufReader.ts +161 -46
- package/src/internal/_createStandardSchema.ts +15 -1
- package/src/internal/_decimal.ts +69 -0
- package/src/internal/_httpQueryParseURLSearchParams.ts +24 -2
- package/src/internal/_isFormatByte.ts +2 -5
- package/src/internal/_isFormatDate.ts +15 -2
- package/src/internal/_isFormatDateTime.ts +28 -2
- package/src/internal/_isFormatIri.ts +5 -2
- package/src/internal/_isFormatIriReference.ts +11 -3
- package/src/internal/_isFormatUriReference.ts +1 -1
- package/src/internal/_isMultipleOf.ts +8 -0
- package/src/internal/_isTypeFloat.ts +1 -1
- package/src/internal/_isTypeInt64.ts +1 -0
- package/src/internal/_isTypeInt64Bigint.ts +12 -0
- package/src/internal/_isTypeUint64.ts +1 -0
- package/src/internal/_isTypeUint64Bigint.ts +7 -0
- package/src/internal/_isUniqueItems.ts +134 -132
- package/src/internal/_jsonStringifyArray.ts +50 -0
- package/src/internal/_jsonStringifyElement.ts +19 -0
- package/src/internal/_jsonStringifyProperty.ts +30 -0
- package/src/internal/_llmApplicationFinalize.ts +6 -1
- package/src/internal/_notationAny.ts +9 -4
- package/src/internal/_notationAssign.ts +20 -0
- package/src/internal/_notationCamel.ts +31 -10
- package/src/internal/_notationKebab.ts +11 -0
- package/src/internal/_notationKeyCollision.ts +9 -0
- package/src/internal/_notationPascal.ts +19 -6
- package/src/internal/_notationSnake.ts +24 -21
- package/src/internal/_plainCloneAny.ts +208 -33
- package/src/internal/_randomArray.ts +13 -4
- package/src/internal/_randomFormatByte.ts +31 -1
- package/src/internal/_randomFormatDate.ts +6 -17
- package/src/internal/_randomFormatDatetime.ts +34 -15
- package/src/internal/_randomFormatDuration.ts +30 -13
- package/src/internal/_randomFormatEmail.ts +8 -2
- package/src/internal/_randomFormatHostname.ts +48 -1
- package/src/internal/_randomFormatIdnEmail.ts +18 -2
- package/src/internal/_randomFormatIdnHostname.ts +34 -2
- package/src/internal/_randomFormatIpv4.ts +43 -2
- package/src/internal/_randomFormatIpv6.ts +67 -2
- package/src/internal/_randomFormatIri.ts +3 -1
- package/src/internal/_randomFormatIriReference.ts +3 -1
- package/src/internal/_randomFormatJsonPointer.ts +28 -2
- package/src/internal/_randomFormatPassword.ts +11 -6
- package/src/internal/_randomFormatRegex.ts +22 -1
- package/src/internal/_randomFormatRelativeJsonPointer.ts +26 -6
- package/src/internal/_randomFormatTime.ts +46 -10
- package/src/internal/_randomFormatUri.ts +3 -1
- package/src/internal/_randomFormatUriReference.ts +3 -1
- package/src/internal/_randomFormatUriTemplate.ts +3 -1
- package/src/internal/_randomFormatUrl.ts +25 -2
- package/src/internal/_randomFormatUuid.ts +10 -6
- package/src/internal/_randomInteger.ts +87 -40
- package/src/internal/_randomMultiple.ts +245 -0
- package/src/internal/_randomNumber.ts +72 -55
- package/src/internal/_randomPattern.ts +29 -4
- package/src/internal/_randomStringLength.ts +116 -0
- package/src/internal/_stringLength.ts +5 -0
- package/src/internal/_validateReport.ts +5 -1
- package/src/internal/private/__notationRename.ts +21 -0
- package/src/internal/private/__randomComposition.ts +50 -0
- package/src/internal/private/__randomEpoch.ts +34 -0
- package/src/json.ts +2 -2
- package/src/module.ts +4 -6
- package/src/notations.ts +20 -4
- package/lib/internal/private/__notationCapitalize.d.ts +0 -1
- package/lib/internal/private/__notationCapitalize.js +0 -6
- package/lib/internal/private/__notationCapitalize.js.map +0 -1
- package/lib/internal/private/__notationCapitalize.mjs +0 -6
- package/lib/internal/private/__notationCapitalize.mjs.map +0 -1
- package/lib/internal/private/__notationUnsnake.d.ts +0 -4
- package/lib/internal/private/__notationUnsnake.js +0 -26
- package/lib/internal/private/__notationUnsnake.js.map +0 -1
- package/lib/internal/private/__notationUnsnake.mjs +0 -15
- package/lib/internal/private/__notationUnsnake.mjs.map +0 -1
- package/native/adapter/visit.go +0 -173
- package/native/adapter/visit_property_chain_edges_test.go +0 -129
- package/native/cmd/ttsc-typia/plugin_options_missing_config_test.go +0 -26
- package/native/cmd/ttsc-typia/plugin_options_undefined_false_test.go +0 -36
- package/native/core/programmers/helpers/disable_function_programmer_declare.go +0 -10
- package/native/core/programmers/iterate/check_union_array_like.go +0 -422
- package/native/core/programmers/iterate/prune_object_properties.go +0 -105
- package/native/core/programmers/iterate/stringify_dynamic_properties.go +0 -219
- package/native/core/programmers/iterate/stringify_native.go +0 -14
- package/native/core/programmers/iterate/stringify_regular_properties.go +0 -112
- package/native/core/schemas/metadata/MetadataApplication.go +0 -41
- package/src/internal/private/__notationCapitalize.ts +0 -2
- package/src/internal/private/__notationUnsnake.ts +0 -24
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports._randomFormatLength = exports._randomLengthPick = exports._randomLengthWindow = exports._randomSegmentLength = exports._RANDOM_LENGTH_ERROR = void 0;
|
|
4
|
+
const _randomInteger_1 = require("./_randomInteger");
|
|
5
|
+
const _randomString_1 = require("./_randomString");
|
|
6
|
+
exports._RANDOM_LENGTH_ERROR = "unable to generate a random string satisfying both the format and the length constraints.";
|
|
7
|
+
/**
|
|
8
|
+
* Builds the variable segment of a fixed-shape format string so that the total
|
|
9
|
+
* length `fixed + segment.length` lands inside the requested window.
|
|
10
|
+
*
|
|
11
|
+
* `fixed` is the number of characters the format always contributes around the
|
|
12
|
+
* segment, `fallback` is the segment length used when the leaf is unconstrained
|
|
13
|
+
* on that side, and `minimum` is the smallest segment the format still
|
|
14
|
+
* validates with. Throws when the window cannot be satisfied by this format's
|
|
15
|
+
* shape (e.g. `Format<"email"> & MaxLength<3>`).
|
|
16
|
+
*/
|
|
17
|
+
const _randomSegmentLength = (props, fixed, fallback, minimum) => {
|
|
18
|
+
let low = (props === null || props === void 0 ? void 0 : props.minLength) === undefined ? minimum : props.minLength - fixed;
|
|
19
|
+
if (low < minimum)
|
|
20
|
+
low = minimum;
|
|
21
|
+
// With only a lower bound, spread the segment across `fallback` extra
|
|
22
|
+
// characters so the generated length varies, mirroring `_randomString`.
|
|
23
|
+
const high = (props === null || props === void 0 ? void 0 : props.maxLength) === undefined ? low + fallback : props.maxLength - fixed;
|
|
24
|
+
if (high < low || high < minimum)
|
|
25
|
+
throw new Error(exports._RANDOM_LENGTH_ERROR);
|
|
26
|
+
return (0, _randomString_1._randomString)({ type: "string", minLength: low, maxLength: high });
|
|
27
|
+
};
|
|
28
|
+
exports._randomSegmentLength = _randomSegmentLength;
|
|
29
|
+
/**
|
|
30
|
+
* Intersects the requested length window with the lengths a format's grammar
|
|
31
|
+
* can express, and draws one of them.
|
|
32
|
+
*
|
|
33
|
+
* `minimum` and `maximum` are the shortest and longest values the format admits
|
|
34
|
+
* — omit `maximum` when the grammar is open above — and `spread` is how far
|
|
35
|
+
* past the floor an unbounded request may reach, so an open side still varies
|
|
36
|
+
* the way `_randomString` does. The caller draws from the returned window and
|
|
37
|
+
* applies whatever step its grammar has (base64 lengths are multiples of four,
|
|
38
|
+
* a fractional second needs at least one digit).
|
|
39
|
+
*
|
|
40
|
+
* Throws only when the window and the grammar do not overlap at all. That is
|
|
41
|
+
* the distinction the retry driver below cannot make: it redraws one shape, so
|
|
42
|
+
* it gives up on every length that shape never emits even when the format
|
|
43
|
+
* itself accepts one (issue #2284).
|
|
44
|
+
*/
|
|
45
|
+
const _randomLengthWindow = (props, format) => {
|
|
46
|
+
var _a, _b, _c, _d;
|
|
47
|
+
const ceiling = (_a = format.maximum) !== null && _a !== void 0 ? _a : Number.MAX_SAFE_INTEGER;
|
|
48
|
+
const low = Math.max((_b = props === null || props === void 0 ? void 0 : props.minLength) !== null && _b !== void 0 ? _b : format.minimum, format.minimum);
|
|
49
|
+
const high = Math.min((_c = props === null || props === void 0 ? void 0 : props.maxLength) !== null && _c !== void 0 ? _c : low + ((_d = format.spread) !== null && _d !== void 0 ? _d : 0), ceiling);
|
|
50
|
+
if (low > high)
|
|
51
|
+
throw new Error(exports._RANDOM_LENGTH_ERROR);
|
|
52
|
+
return { low, high };
|
|
53
|
+
};
|
|
54
|
+
exports._randomLengthWindow = _randomLengthWindow;
|
|
55
|
+
/** Draws a length inside a window produced by {@link _randomLengthWindow}. */
|
|
56
|
+
const _randomLengthPick = (window) => (0, _randomInteger_1._randomInteger)({
|
|
57
|
+
type: "integer",
|
|
58
|
+
minimum: window.low,
|
|
59
|
+
maximum: window.high,
|
|
60
|
+
});
|
|
61
|
+
exports._randomLengthPick = _randomLengthPick;
|
|
62
|
+
/**
|
|
63
|
+
* Wraps a fixed-length format generator (uuid, date) with the requested length
|
|
64
|
+
* window.
|
|
65
|
+
*
|
|
66
|
+
* Use it only where the grammar admits exactly one length, so a window that
|
|
67
|
+
* excludes it is genuinely unsatisfiable. A format that can express more than
|
|
68
|
+
* one length must build its value at a length drawn from
|
|
69
|
+
* {@link _randomLengthWindow} instead; redrawing one shape cannot reach a length
|
|
70
|
+
* that shape never emits.
|
|
71
|
+
*/
|
|
72
|
+
const _randomFormatLength = (props, generate) => {
|
|
73
|
+
if ((props === null || props === void 0 ? void 0 : props.minLength) === undefined && (props === null || props === void 0 ? void 0 : props.maxLength) === undefined)
|
|
74
|
+
return generate();
|
|
75
|
+
for (let i = 0; i < 256; ++i) {
|
|
76
|
+
const value = generate();
|
|
77
|
+
if ((props.minLength === undefined || value.length >= props.minLength) &&
|
|
78
|
+
(props.maxLength === undefined || value.length <= props.maxLength))
|
|
79
|
+
return value;
|
|
80
|
+
}
|
|
81
|
+
throw new Error(exports._RANDOM_LENGTH_ERROR);
|
|
82
|
+
};
|
|
83
|
+
exports._randomFormatLength = _randomFormatLength;
|
|
84
|
+
//# sourceMappingURL=_randomStringLength.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_randomStringLength.js","sourceRoot":"","sources":["../../src/internal/_randomStringLength.ts"],"names":[],"mappings":";;;AAAA,qDAAkD;AAClD,mDAAgD;AAEnC,QAAA,oBAAoB,GAC/B,2FAA2F,CAAC;AAe9F;;;;;;;;;GASG;AACI,MAAM,oBAAoB,GAAG,CAClC,KAAgC,EAChC,KAAa,EACb,QAAgB,EAChB,OAAe,EACP,EAAE;IACV,IAAI,GAAG,GACL,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,MAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;IACrE,IAAI,GAAG,GAAG,OAAO;QAAE,GAAG,GAAG,OAAO,CAAC;IACjC,sEAAsE;IACtE,wEAAwE;IACxE,MAAM,IAAI,GACR,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,MAAK,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;IAC5E,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,QAAA,oBAAoB,CAAC,CAAC;IACxE,OAAO,IAAA,6BAAa,EAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC5E,CAAC,CAAC;AAfW,QAAA,oBAAoB,GAApB,oBAAoB,CAe/B;AAEF;;;;;;;;;;;;;;;GAeG;AACI,MAAM,mBAAmB,GAAG,CACjC,KAAgC,EAChC,MAA8D,EAC/B,EAAE;;IACjC,MAAM,OAAO,SAAW,MAAM,CAAC,OAAO,mCAAI,MAAM,CAAC,gBAAgB,CAAC;IAClE,MAAM,GAAG,GAAW,IAAI,CAAC,GAAG,OAC1B,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,mCAAI,MAAM,CAAC,OAAO,EAClC,MAAM,CAAC,OAAO,CACf,CAAC;IACF,MAAM,IAAI,GAAW,IAAI,CAAC,GAAG,OAC3B,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,mCAAI,GAAG,GAAG,OAAC,MAAM,CAAC,MAAM,mCAAI,CAAC,CAAC,EAC9C,OAAO,CACR,CAAC;IACF,IAAI,GAAG,GAAG,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,QAAA,oBAAoB,CAAC,CAAC;IACtD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AACvB,CAAC,CAAC;AAfW,QAAA,mBAAmB,GAAnB,mBAAmB,CAe9B;AAEF,8EAA8E;AACvE,MAAM,iBAAiB,GAAG,CAAC,MAGjC,EAAU,EAAE,CACX,IAAA,+BAAc,EAAC;IACb,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,MAAM,CAAC,GAAG;IACnB,OAAO,EAAE,MAAM,CAAC,IAAI;CACrB,CAAC,CAAC;AARQ,QAAA,iBAAiB,GAAjB,iBAAiB,CAQzB;AAEL;;;;;;;;;GASG;AACI,MAAM,mBAAmB,GAAG,CACjC,KAAgC,EAChC,QAAsB,EACd,EAAE;IACV,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,MAAK,SAAS,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,MAAK,SAAS;QAClE,OAAO,QAAQ,EAAE,CAAC;IACpB,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;QACrC,MAAM,KAAK,GAAW,QAAQ,EAAE,CAAC;QACjC,IACE,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC;YAClE,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC;YAElE,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,QAAA,oBAAoB,CAAC,CAAC;AACxC,CAAC,CAAC;AAfW,QAAA,mBAAmB,GAAnB,mBAAmB,CAe9B"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { _randomInteger } from "./_randomInteger.mjs";
|
|
2
|
+
import { _randomString } from "./_randomString.mjs";
|
|
3
|
+
//#region src/internal/_randomStringLength.ts
|
|
4
|
+
const _RANDOM_LENGTH_ERROR = "unable to generate a random string satisfying both the format and the length constraints.";
|
|
5
|
+
/**
|
|
6
|
+
* Builds the variable segment of a fixed-shape format string so that the total
|
|
7
|
+
* length `fixed + segment.length` lands inside the requested window.
|
|
8
|
+
*
|
|
9
|
+
* `fixed` is the number of characters the format always contributes around the
|
|
10
|
+
* segment, `fallback` is the segment length used when the leaf is unconstrained
|
|
11
|
+
* on that side, and `minimum` is the smallest segment the format still
|
|
12
|
+
* validates with. Throws when the window cannot be satisfied by this format's
|
|
13
|
+
* shape (e.g. `Format<"email"> & MaxLength<3>`).
|
|
14
|
+
*/
|
|
15
|
+
const _randomSegmentLength = (props, fixed, fallback, minimum) => {
|
|
16
|
+
let low = props?.minLength === void 0 ? minimum : props.minLength - fixed;
|
|
17
|
+
if (low < minimum) low = minimum;
|
|
18
|
+
const high = props?.maxLength === void 0 ? low + fallback : props.maxLength - fixed;
|
|
19
|
+
if (high < low || high < minimum) throw new Error(_RANDOM_LENGTH_ERROR);
|
|
20
|
+
return _randomString({
|
|
21
|
+
type: "string",
|
|
22
|
+
minLength: low,
|
|
23
|
+
maxLength: high
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Intersects the requested length window with the lengths a format's grammar
|
|
28
|
+
* can express, and draws one of them.
|
|
29
|
+
*
|
|
30
|
+
* `minimum` and `maximum` are the shortest and longest values the format admits
|
|
31
|
+
* — omit `maximum` when the grammar is open above — and `spread` is how far
|
|
32
|
+
* past the floor an unbounded request may reach, so an open side still varies
|
|
33
|
+
* the way `_randomString` does. The caller draws from the returned window and
|
|
34
|
+
* applies whatever step its grammar has (base64 lengths are multiples of four,
|
|
35
|
+
* a fractional second needs at least one digit).
|
|
36
|
+
*
|
|
37
|
+
* Throws only when the window and the grammar do not overlap at all. That is
|
|
38
|
+
* the distinction the retry driver below cannot make: it redraws one shape, so
|
|
39
|
+
* it gives up on every length that shape never emits even when the format
|
|
40
|
+
* itself accepts one (issue #2284).
|
|
41
|
+
*/
|
|
42
|
+
const _randomLengthWindow = (props, format) => {
|
|
43
|
+
const ceiling = format.maximum ?? Number.MAX_SAFE_INTEGER;
|
|
44
|
+
const low = Math.max(props?.minLength ?? format.minimum, format.minimum);
|
|
45
|
+
const high = Math.min(props?.maxLength ?? low + (format.spread ?? 0), ceiling);
|
|
46
|
+
if (low > high) throw new Error(_RANDOM_LENGTH_ERROR);
|
|
47
|
+
return {
|
|
48
|
+
low,
|
|
49
|
+
high
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
/** Draws a length inside a window produced by {@link _randomLengthWindow}. */
|
|
53
|
+
const _randomLengthPick = (window) => _randomInteger({
|
|
54
|
+
type: "integer",
|
|
55
|
+
minimum: window.low,
|
|
56
|
+
maximum: window.high
|
|
57
|
+
});
|
|
58
|
+
/**
|
|
59
|
+
* Wraps a fixed-length format generator (uuid, date) with the requested length
|
|
60
|
+
* window.
|
|
61
|
+
*
|
|
62
|
+
* Use it only where the grammar admits exactly one length, so a window that
|
|
63
|
+
* excludes it is genuinely unsatisfiable. A format that can express more than
|
|
64
|
+
* one length must build its value at a length drawn from
|
|
65
|
+
* {@link _randomLengthWindow} instead; redrawing one shape cannot reach a length
|
|
66
|
+
* that shape never emits.
|
|
67
|
+
*/
|
|
68
|
+
const _randomFormatLength = (props, generate) => {
|
|
69
|
+
if (props?.minLength === void 0 && props?.maxLength === void 0) return generate();
|
|
70
|
+
for (let i = 0; i < 256; ++i) {
|
|
71
|
+
const value = generate();
|
|
72
|
+
if ((props.minLength === void 0 || value.length >= props.minLength) && (props.maxLength === void 0 || value.length <= props.maxLength)) return value;
|
|
73
|
+
}
|
|
74
|
+
throw new Error(_RANDOM_LENGTH_ERROR);
|
|
75
|
+
};
|
|
76
|
+
//#endregion
|
|
77
|
+
export { _RANDOM_LENGTH_ERROR, _randomFormatLength, _randomLengthPick, _randomLengthWindow, _randomSegmentLength };
|
|
78
|
+
|
|
79
|
+
//# sourceMappingURL=_randomStringLength.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_randomStringLength.mjs","names":[],"sources":["../../src/internal/_randomStringLength.ts"],"sourcesContent":["import { _randomInteger } from \"./_randomInteger\";\nimport { _randomString } from \"./_randomString\";\n\nexport const _RANDOM_LENGTH_ERROR =\n \"unable to generate a random string satisfying both the format and the length constraints.\";\n\n/**\n * Length bounds forwarded to a string format or pattern generator.\n *\n * `typia.random<T>()` passes this object to the `_randomFormat*` and\n * `_randomPattern` helpers whenever the string leaf also carries a `MinLength`\n * or `MaxLength` tag, so a constrained format or pattern is generated at a\n * length its own validator accepts (issue #2189).\n */\nexport interface _ILengthProps {\n minLength?: number;\n maxLength?: number;\n}\n\n/**\n * Builds the variable segment of a fixed-shape format string so that the total\n * length `fixed + segment.length` lands inside the requested window.\n *\n * `fixed` is the number of characters the format always contributes around the\n * segment, `fallback` is the segment length used when the leaf is unconstrained\n * on that side, and `minimum` is the smallest segment the format still\n * validates with. Throws when the window cannot be satisfied by this format's\n * shape (e.g. `Format<\"email\"> & MaxLength<3>`).\n */\nexport const _randomSegmentLength = (\n props: _ILengthProps | undefined,\n fixed: number,\n fallback: number,\n minimum: number,\n): string => {\n let low: number =\n props?.minLength === undefined ? minimum : props.minLength - fixed;\n if (low < minimum) low = minimum;\n // With only a lower bound, spread the segment across `fallback` extra\n // characters so the generated length varies, mirroring `_randomString`.\n const high: number =\n props?.maxLength === undefined ? low + fallback : props.maxLength - fixed;\n if (high < low || high < minimum) throw new Error(_RANDOM_LENGTH_ERROR);\n return _randomString({ type: \"string\", minLength: low, maxLength: high });\n};\n\n/**\n * Intersects the requested length window with the lengths a format's grammar\n * can express, and draws one of them.\n *\n * `minimum` and `maximum` are the shortest and longest values the format admits\n * — omit `maximum` when the grammar is open above — and `spread` is how far\n * past the floor an unbounded request may reach, so an open side still varies\n * the way `_randomString` does. The caller draws from the returned window and\n * applies whatever step its grammar has (base64 lengths are multiples of four,\n * a fractional second needs at least one digit).\n *\n * Throws only when the window and the grammar do not overlap at all. That is\n * the distinction the retry driver below cannot make: it redraws one shape, so\n * it gives up on every length that shape never emits even when the format\n * itself accepts one (issue #2284).\n */\nexport const _randomLengthWindow = (\n props: _ILengthProps | undefined,\n format: { minimum: number; maximum?: number; spread?: number },\n): { low: number; high: number } => {\n const ceiling: number = format.maximum ?? Number.MAX_SAFE_INTEGER;\n const low: number = Math.max(\n props?.minLength ?? format.minimum,\n format.minimum,\n );\n const high: number = Math.min(\n props?.maxLength ?? low + (format.spread ?? 0),\n ceiling,\n );\n if (low > high) throw new Error(_RANDOM_LENGTH_ERROR);\n return { low, high };\n};\n\n/** Draws a length inside a window produced by {@link _randomLengthWindow}. */\nexport const _randomLengthPick = (window: {\n low: number;\n high: number;\n}): number =>\n _randomInteger({\n type: \"integer\",\n minimum: window.low,\n maximum: window.high,\n });\n\n/**\n * Wraps a fixed-length format generator (uuid, date) with the requested length\n * window.\n *\n * Use it only where the grammar admits exactly one length, so a window that\n * excludes it is genuinely unsatisfiable. A format that can express more than\n * one length must build its value at a length drawn from\n * {@link _randomLengthWindow} instead; redrawing one shape cannot reach a length\n * that shape never emits.\n */\nexport const _randomFormatLength = (\n props: _ILengthProps | undefined,\n generate: () => string,\n): string => {\n if (props?.minLength === undefined && props?.maxLength === undefined)\n return generate();\n for (let i: number = 0; i < 256; ++i) {\n const value: string = generate();\n if (\n (props.minLength === undefined || value.length >= props.minLength) &&\n (props.maxLength === undefined || value.length <= props.maxLength)\n )\n return value;\n }\n throw new Error(_RANDOM_LENGTH_ERROR);\n};\n"],"mappings":";;;AAGA,MAAa,uBACX;;;;;;;;;;;AAyBF,MAAa,wBACX,OACA,OACA,UACA,YACW;CACX,IAAI,MACF,OAAO,cAAc,KAAA,IAAY,UAAU,MAAM,YAAY;CAC/D,IAAI,MAAM,SAAS,MAAM;CAGzB,MAAM,OACJ,OAAO,cAAc,KAAA,IAAY,MAAM,WAAW,MAAM,YAAY;CACtE,IAAI,OAAO,OAAO,OAAO,SAAS,MAAM,IAAI,MAAM,oBAAoB;CACtE,OAAO,cAAc;EAAE,MAAM;EAAU,WAAW;EAAK,WAAW;CAAK,CAAC;AAC1E;;;;;;;;;;;;;;;;;AAkBA,MAAa,uBACX,OACA,WACkC;CAClC,MAAM,UAAkB,OAAO,WAAW,OAAO;CACjD,MAAM,MAAc,KAAK,IACvB,OAAO,aAAa,OAAO,SAC3B,OAAO,OACT;CACA,MAAM,OAAe,KAAK,IACxB,OAAO,aAAa,OAAO,OAAO,UAAU,IAC5C,OACF;CACA,IAAI,MAAM,MAAM,MAAM,IAAI,MAAM,oBAAoB;CACpD,OAAO;EAAE;EAAK;CAAK;AACrB;;AAGA,MAAa,qBAAqB,WAIhC,eAAe;CACb,MAAM;CACN,SAAS,OAAO;CAChB,SAAS,OAAO;AAClB,CAAC;;;;;;;;;;;AAYH,MAAa,uBACX,OACA,aACW;CACX,IAAI,OAAO,cAAc,KAAA,KAAa,OAAO,cAAc,KAAA,GACzD,OAAO,SAAS;CAClB,KAAK,IAAI,IAAY,GAAG,IAAI,KAAK,EAAE,GAAG;EACpC,MAAM,QAAgB,SAAS;EAC/B,KACG,MAAM,cAAc,KAAA,KAAa,MAAM,UAAU,MAAM,eACvD,MAAM,cAAc,KAAA,KAAa,MAAM,UAAU,MAAM,YAExD,OAAO;CACX;CACA,MAAM,IAAI,MAAM,oBAAoB;AACtC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const _stringLength: (value: string) => number;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports._stringLength = void 0;
|
|
4
|
+
const _stringLength = (value) => {
|
|
5
|
+
let count = 0;
|
|
6
|
+
for (const _ch of value)
|
|
7
|
+
++count;
|
|
8
|
+
return count;
|
|
9
|
+
};
|
|
10
|
+
exports._stringLength = _stringLength;
|
|
11
|
+
//# sourceMappingURL=_stringLength.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_stringLength.js","sourceRoot":"","sources":["../../src/internal/_stringLength.ts"],"names":[],"mappings":";;;AAAO,MAAM,aAAa,GAAG,CAAC,KAAa,EAAU,EAAE;IACrD,IAAI,KAAK,GAAW,CAAC,CAAC;IACtB,KAAK,MAAM,GAAG,IAAI,KAAK;QAAE,EAAE,KAAK,CAAC;IACjC,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAJW,QAAA,aAAa,GAAb,aAAa,CAIxB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_stringLength.mjs","names":[],"sources":["../../src/internal/_stringLength.ts"],"sourcesContent":["export const _stringLength = (value: string): number => {\n let count: number = 0;\n for (const _ch of value) ++count;\n return count;\n};\n"],"mappings":";AAAA,MAAa,iBAAiB,UAA0B;CACtD,IAAI,QAAgB;CACpB,KAAK,MAAM,OAAO,OAAO,EAAE;CAC3B,OAAO;AACT"}
|
|
@@ -2,11 +2,14 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports._validateReport = void 0;
|
|
4
4
|
const _validateReport = (array) => {
|
|
5
|
+
const isAncestor = (ancestor, descendant) => descendant === ancestor ||
|
|
6
|
+
descendant.startsWith(`${ancestor}.`) ||
|
|
7
|
+
descendant.startsWith(`${ancestor}[`);
|
|
5
8
|
const reportable = (path) => {
|
|
6
9
|
if (array.length === 0)
|
|
7
10
|
return true;
|
|
8
11
|
const last = array[array.length - 1].path;
|
|
9
|
-
return path
|
|
12
|
+
return isAncestor(path, last) === false && isAncestor(last, path) === false;
|
|
10
13
|
};
|
|
11
14
|
return (exceptable, error) => {
|
|
12
15
|
var _a;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_validateReport.js","sourceRoot":"","sources":["../../src/internal/_validateReport.ts"],"names":[],"mappings":";;;AAEO,MAAM,eAAe,GAAG,CAAC,KAA2B,EAAE,EAAE;IAC7D,MAAM,UAAU,GAAG,CAAC,IAAY,EAAW,EAAE;QAC3C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACpC,MAAM,IAAI,GAAW,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,IAAI,CAAC;QACnD,OAAO,
|
|
1
|
+
{"version":3,"file":"_validateReport.js","sourceRoot":"","sources":["../../src/internal/_validateReport.ts"],"names":[],"mappings":";;;AAEO,MAAM,eAAe,GAAG,CAAC,KAA2B,EAAE,EAAE;IAC7D,MAAM,UAAU,GAAG,CAAC,QAAgB,EAAE,UAAkB,EAAW,EAAE,CACnE,UAAU,KAAK,QAAQ;QACvB,UAAU,CAAC,UAAU,CAAC,GAAG,QAAQ,GAAG,CAAC;QACrC,UAAU,CAAC,UAAU,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAW,EAAE;QAC3C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACpC,MAAM,IAAI,GAAW,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,IAAI,CAAC;QACnD,OAAO,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,KAAK,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,KAAK,CAAC;IAC9E,CAAC,CAAC;IACF,OAAO,CAAC,UAAmB,EAAE,KAAyB,EAAS,EAAE;;QAC/D,IAAI,UAAU,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACzC,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;gBAC3B,MAAA,KAAK,CAAC,WAAW,oCAAjB,KAAK,CAAC,WAAW,GAAK;oBACpB,wCAAwC;oBACxC,EAAE;oBACF,qBAAqB,KAAK,CAAC,QAAQ,2BAA2B;iBAC/D,CAAC,IAAI,CAAC,IAAI,CAAC,EAAC;YACf,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC,CAAC;AAtBW,QAAA,eAAe,GAAf,eAAe,CAsB1B"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
//#region src/internal/_validateReport.ts
|
|
2
2
|
const _validateReport = (array) => {
|
|
3
|
+
const isAncestor = (ancestor, descendant) => descendant === ancestor || descendant.startsWith(`${ancestor}.`) || descendant.startsWith(`${ancestor}[`);
|
|
3
4
|
const reportable = (path) => {
|
|
4
5
|
if (array.length === 0) return true;
|
|
5
6
|
const last = array[array.length - 1].path;
|
|
6
|
-
return path
|
|
7
|
+
return isAncestor(path, last) === false && isAncestor(last, path) === false;
|
|
7
8
|
};
|
|
8
9
|
return (exceptable, error) => {
|
|
9
10
|
if (exceptable && reportable(error.path)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_validateReport.mjs","names":[],"sources":["../../src/internal/_validateReport.ts"],"sourcesContent":["import { IValidation } from \"@typia/interface\";\n\nexport const _validateReport = (array: IValidation.IError[]) => {\n const reportable = (path: string): boolean => {\n if (array.length === 0) return true;\n const last: string = array[array.length - 1]!.path;\n return path
|
|
1
|
+
{"version":3,"file":"_validateReport.mjs","names":[],"sources":["../../src/internal/_validateReport.ts"],"sourcesContent":["import { IValidation } from \"@typia/interface\";\n\nexport const _validateReport = (array: IValidation.IError[]) => {\n const isAncestor = (ancestor: string, descendant: string): boolean =>\n descendant === ancestor ||\n descendant.startsWith(`${ancestor}.`) ||\n descendant.startsWith(`${ancestor}[`);\n const reportable = (path: string): boolean => {\n if (array.length === 0) return true;\n const last: string = array[array.length - 1]!.path;\n return isAncestor(path, last) === false && isAncestor(last, path) === false;\n };\n return (exceptable: boolean, error: IValidation.IError): false => {\n if (exceptable && reportable(error.path)) {\n if (error.value === undefined)\n error.description ??= [\n \"The value at this path is `undefined`.\",\n \"\",\n `Please fill the \\`${error.expected}\\` typed value next time.`,\n ].join(\"\\n\");\n array.push(error);\n }\n return false;\n };\n};\n"],"mappings":";AAEA,MAAa,mBAAmB,UAAgC;CAC9D,MAAM,cAAc,UAAkB,eACpC,eAAe,YACf,WAAW,WAAW,GAAG,SAAS,EAAE,KACpC,WAAW,WAAW,GAAG,SAAS,EAAE;CACtC,MAAM,cAAc,SAA0B;EAC5C,IAAI,MAAM,WAAW,GAAG,OAAO;EAC/B,MAAM,OAAe,MAAM,MAAM,SAAS,EAAE,CAAE;EAC9C,OAAO,WAAW,MAAM,IAAI,MAAM,SAAS,WAAW,MAAM,IAAI,MAAM;CACxE;CACA,QAAQ,YAAqB,UAAqC;EAChE,IAAI,cAAc,WAAW,MAAM,IAAI,GAAG;GACxC,IAAI,MAAM,UAAU,KAAA,GAClB,MAAM,gBAAgB;IACpB;IACA;IACA,qBAAqB,MAAM,SAAS;GACtC,CAAC,CAAC,KAAK,IAAI;GACb,MAAM,KAAK,KAAK;EAClB;EACA,OAAO;CACT;AACF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared outer walk for the `camel`/`pascal` notations.
|
|
3
|
+
*
|
|
4
|
+
* Mirrors the `CamelCase<T>` / `PascalCase<T>` typings: leading underscores are
|
|
5
|
+
* preserved verbatim, an all-underscore key stays untouched, and the presence
|
|
6
|
+
* of any remaining underscore — not the number of non-empty segments — selects
|
|
7
|
+
* the `snake` conversion. Routing on underscore presence keeps a trailing or
|
|
8
|
+
* doubled underscore (`fooBar_`) on the same path the type takes, instead of
|
|
9
|
+
* collapsing it to the underscore-free `plain` path.
|
|
10
|
+
*/
|
|
11
|
+
export declare const __notationRename: (props: {
|
|
12
|
+
plain: (str: string) => string;
|
|
13
|
+
snake: (str: string) => string;
|
|
14
|
+
}) => (str: string) => string;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.__notationRename = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Shared outer walk for the `camel`/`pascal` notations.
|
|
6
|
+
*
|
|
7
|
+
* Mirrors the `CamelCase<T>` / `PascalCase<T>` typings: leading underscores are
|
|
8
|
+
* preserved verbatim, an all-underscore key stays untouched, and the presence
|
|
9
|
+
* of any remaining underscore — not the number of non-empty segments — selects
|
|
10
|
+
* the `snake` conversion. Routing on underscore presence keeps a trailing or
|
|
11
|
+
* doubled underscore (`fooBar_`) on the same path the type takes, instead of
|
|
12
|
+
* collapsing it to the underscore-free `plain` path.
|
|
13
|
+
*/
|
|
14
|
+
const __notationRename = (props) => (str) => {
|
|
15
|
+
let prefix = "";
|
|
16
|
+
while (str.startsWith("_")) {
|
|
17
|
+
prefix += "_";
|
|
18
|
+
str = str.substring(1);
|
|
19
|
+
}
|
|
20
|
+
if (str.length === 0)
|
|
21
|
+
return prefix;
|
|
22
|
+
return `${prefix}${str.includes("_") ? props.snake(str) : props.plain(str)}`;
|
|
23
|
+
};
|
|
24
|
+
exports.__notationRename = __notationRename;
|
|
25
|
+
//# sourceMappingURL=__notationRename.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"__notationRename.js","sourceRoot":"","sources":["../../../src/internal/private/__notationRename.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;GASG;AACI,MAAM,gBAAgB,GAC3B,CAAC,KAAyE,EAAE,EAAE,CAC9E,CAAC,GAAW,EAAU,EAAE;IACtB,IAAI,MAAM,GAAW,EAAE,CAAC;IACxB,OAAO,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,CAAC;QACd,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IACpC,OAAO,GAAG,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;AAC/E,CAAC,CAAC;AAVS,QAAA,gBAAgB,GAAhB,gBAAgB,CAUzB"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
//#region src/internal/private/__notationRename.ts
|
|
2
|
+
/**
|
|
3
|
+
* Shared outer walk for the `camel`/`pascal` notations.
|
|
4
|
+
*
|
|
5
|
+
* Mirrors the `CamelCase<T>` / `PascalCase<T>` typings: leading underscores are
|
|
6
|
+
* preserved verbatim, an all-underscore key stays untouched, and the presence
|
|
7
|
+
* of any remaining underscore — not the number of non-empty segments — selects
|
|
8
|
+
* the `snake` conversion. Routing on underscore presence keeps a trailing or
|
|
9
|
+
* doubled underscore (`fooBar_`) on the same path the type takes, instead of
|
|
10
|
+
* collapsing it to the underscore-free `plain` path.
|
|
11
|
+
*/
|
|
12
|
+
const __notationRename = (props) => (str) => {
|
|
13
|
+
let prefix = "";
|
|
14
|
+
while (str.startsWith("_")) {
|
|
15
|
+
prefix += "_";
|
|
16
|
+
str = str.substring(1);
|
|
17
|
+
}
|
|
18
|
+
if (str.length === 0) return prefix;
|
|
19
|
+
return `${prefix}${str.includes("_") ? props.snake(str) : props.plain(str)}`;
|
|
20
|
+
};
|
|
21
|
+
//#endregion
|
|
22
|
+
export { __notationRename };
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=__notationRename.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"__notationRename.mjs","names":[],"sources":["../../../src/internal/private/__notationRename.ts"],"sourcesContent":["/**\n * Shared outer walk for the `camel`/`pascal` notations.\n *\n * Mirrors the `CamelCase<T>` / `PascalCase<T>` typings: leading underscores are\n * preserved verbatim, an all-underscore key stays untouched, and the presence\n * of any remaining underscore — not the number of non-empty segments — selects\n * the `snake` conversion. Routing on underscore presence keeps a trailing or\n * doubled underscore (`fooBar_`) on the same path the type takes, instead of\n * collapsing it to the underscore-free `plain` path.\n */\nexport const __notationRename =\n (props: { plain: (str: string) => string; snake: (str: string) => string }) =>\n (str: string): string => {\n let prefix: string = \"\";\n while (str.startsWith(\"_\")) {\n prefix += \"_\";\n str = str.substring(1);\n }\n if (str.length === 0) return prefix;\n return `${prefix}${str.includes(\"_\") ? props.snake(str) : props.plain(str)}`;\n };\n"],"mappings":";;;;;;;;;;;AAUA,MAAa,oBACV,WACA,QAAwB;CACvB,IAAI,SAAiB;CACrB,OAAO,IAAI,WAAW,GAAG,GAAG;EAC1B,UAAU;EACV,MAAM,IAAI,UAAU,CAAC;CACvB;CACA,IAAI,IAAI,WAAW,GAAG,OAAO;CAC7B,OAAO,GAAG,SAAS,IAAI,SAAS,GAAG,IAAI,MAAM,MAAM,GAAG,IAAI,MAAM,MAAM,GAAG;AAC3E"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Splits `total` into `count` parts, each inside `[minimum, maximum]`.
|
|
3
|
+
*
|
|
4
|
+
* Used where a format's length is the sum of its segments — an IPv4 octet spans
|
|
5
|
+
* one to three digits, an IPv6 group one to four — so a requested total length
|
|
6
|
+
* is realized by choosing how many characters each segment contributes instead
|
|
7
|
+
* of redrawing whole addresses and hoping one lands in the window (issue
|
|
8
|
+
* #2284).
|
|
9
|
+
*
|
|
10
|
+
* The caller guarantees `count * minimum <= total <= count * maximum`; each
|
|
11
|
+
* part is drawn from the range that still leaves the remaining parts
|
|
12
|
+
* satisfiable.
|
|
13
|
+
*/
|
|
14
|
+
export declare const __randomComposition: (props: {
|
|
15
|
+
total: number;
|
|
16
|
+
count: number;
|
|
17
|
+
minimum: number;
|
|
18
|
+
maximum: number;
|
|
19
|
+
}) => number[];
|
|
20
|
+
/** Draws `length` decimal digits, leading zeros included. */
|
|
21
|
+
export declare const __randomDigits: (length: number) => string;
|
|
22
|
+
/** Draws a decimal number of exactly `length` digits without a leading zero. */
|
|
23
|
+
export declare const __randomNumeric: (length: number) => string;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.__randomNumeric = exports.__randomDigits = exports.__randomComposition = void 0;
|
|
4
|
+
const _randomInteger_1 = require("../_randomInteger");
|
|
5
|
+
/**
|
|
6
|
+
* Splits `total` into `count` parts, each inside `[minimum, maximum]`.
|
|
7
|
+
*
|
|
8
|
+
* Used where a format's length is the sum of its segments — an IPv4 octet spans
|
|
9
|
+
* one to three digits, an IPv6 group one to four — so a requested total length
|
|
10
|
+
* is realized by choosing how many characters each segment contributes instead
|
|
11
|
+
* of redrawing whole addresses and hoping one lands in the window (issue
|
|
12
|
+
* #2284).
|
|
13
|
+
*
|
|
14
|
+
* The caller guarantees `count * minimum <= total <= count * maximum`; each
|
|
15
|
+
* part is drawn from the range that still leaves the remaining parts
|
|
16
|
+
* satisfiable.
|
|
17
|
+
*/
|
|
18
|
+
const __randomComposition = (props) => {
|
|
19
|
+
const parts = [];
|
|
20
|
+
let remaining = props.total;
|
|
21
|
+
for (let i = 0; i < props.count; ++i) {
|
|
22
|
+
const rest = props.count - i - 1;
|
|
23
|
+
const value = (0, _randomInteger_1._randomInteger)({
|
|
24
|
+
type: "integer",
|
|
25
|
+
minimum: Math.max(props.minimum, remaining - rest * props.maximum),
|
|
26
|
+
maximum: Math.min(props.maximum, remaining - rest * props.minimum),
|
|
27
|
+
});
|
|
28
|
+
parts.push(value);
|
|
29
|
+
remaining -= value;
|
|
30
|
+
}
|
|
31
|
+
return parts;
|
|
32
|
+
};
|
|
33
|
+
exports.__randomComposition = __randomComposition;
|
|
34
|
+
/** Draws `length` decimal digits, leading zeros included. */
|
|
35
|
+
const __randomDigits = (length) => {
|
|
36
|
+
let text = "";
|
|
37
|
+
for (let i = 0; i < length; ++i)
|
|
38
|
+
text += String((0, _randomInteger_1._randomInteger)({ type: "integer", minimum: 0, maximum: 9 }));
|
|
39
|
+
return text;
|
|
40
|
+
};
|
|
41
|
+
exports.__randomDigits = __randomDigits;
|
|
42
|
+
/** Draws a decimal number of exactly `length` digits without a leading zero. */
|
|
43
|
+
const __randomNumeric = (length) => length <= 1
|
|
44
|
+
? String((0, _randomInteger_1._randomInteger)({ type: "integer", minimum: 0, maximum: 9 }))
|
|
45
|
+
: String((0, _randomInteger_1._randomInteger)({ type: "integer", minimum: 1, maximum: 9 })) +
|
|
46
|
+
(0, exports.__randomDigits)(length - 1);
|
|
47
|
+
exports.__randomNumeric = __randomNumeric;
|
|
48
|
+
//# sourceMappingURL=__randomComposition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"__randomComposition.js","sourceRoot":"","sources":["../../../src/internal/private/__randomComposition.ts"],"names":[],"mappings":";;;AAAA,sDAAmD;AAEnD;;;;;;;;;;;;GAYG;AACI,MAAM,mBAAmB,GAAG,CAAC,KAKnC,EAAY,EAAE;IACb,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,SAAS,GAAW,KAAK,CAAC,KAAK,CAAC;IACpC,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAW,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,KAAK,GAAW,IAAA,+BAAc,EAAC;YACnC,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC;YAClE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC;SACnE,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,SAAS,IAAI,KAAK,CAAC;IACrB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAnBW,QAAA,mBAAmB,GAAnB,mBAAmB,CAmB9B;AAEF,6DAA6D;AACtD,MAAM,cAAc,GAAG,CAAC,MAAc,EAAU,EAAE;IACvD,IAAI,IAAI,GAAW,EAAE,CAAC;IACtB,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC;QACrC,IAAI,IAAI,MAAM,CAAC,IAAA,+BAAc,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9E,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AALW,QAAA,cAAc,GAAd,cAAc,CAKzB;AAEF,gFAAgF;AACzE,MAAM,eAAe,GAAG,CAAC,MAAc,EAAU,EAAE,CACxD,MAAM,IAAI,CAAC;IACT,CAAC,CAAC,MAAM,CAAC,IAAA,+BAAc,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACrE,CAAC,CAAC,MAAM,CAAC,IAAA,+BAAc,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACnE,IAAA,QAAA,cAAc,EAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAJpB,QAAA,eAAe,GAAf,eAAe,CAIK"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { _randomInteger } from "../_randomInteger.mjs";
|
|
2
|
+
//#region src/internal/private/__randomComposition.ts
|
|
3
|
+
/**
|
|
4
|
+
* Splits `total` into `count` parts, each inside `[minimum, maximum]`.
|
|
5
|
+
*
|
|
6
|
+
* Used where a format's length is the sum of its segments — an IPv4 octet spans
|
|
7
|
+
* one to three digits, an IPv6 group one to four — so a requested total length
|
|
8
|
+
* is realized by choosing how many characters each segment contributes instead
|
|
9
|
+
* of redrawing whole addresses and hoping one lands in the window (issue
|
|
10
|
+
* #2284).
|
|
11
|
+
*
|
|
12
|
+
* The caller guarantees `count * minimum <= total <= count * maximum`; each
|
|
13
|
+
* part is drawn from the range that still leaves the remaining parts
|
|
14
|
+
* satisfiable.
|
|
15
|
+
*/
|
|
16
|
+
const __randomComposition = (props) => {
|
|
17
|
+
const parts = [];
|
|
18
|
+
let remaining = props.total;
|
|
19
|
+
for (let i = 0; i < props.count; ++i) {
|
|
20
|
+
const rest = props.count - i - 1;
|
|
21
|
+
const value = _randomInteger({
|
|
22
|
+
type: "integer",
|
|
23
|
+
minimum: Math.max(props.minimum, remaining - rest * props.maximum),
|
|
24
|
+
maximum: Math.min(props.maximum, remaining - rest * props.minimum)
|
|
25
|
+
});
|
|
26
|
+
parts.push(value);
|
|
27
|
+
remaining -= value;
|
|
28
|
+
}
|
|
29
|
+
return parts;
|
|
30
|
+
};
|
|
31
|
+
/** Draws `length` decimal digits, leading zeros included. */
|
|
32
|
+
const __randomDigits = (length) => {
|
|
33
|
+
let text = "";
|
|
34
|
+
for (let i = 0; i < length; ++i) text += String(_randomInteger({
|
|
35
|
+
type: "integer",
|
|
36
|
+
minimum: 0,
|
|
37
|
+
maximum: 9
|
|
38
|
+
}));
|
|
39
|
+
return text;
|
|
40
|
+
};
|
|
41
|
+
/** Draws a decimal number of exactly `length` digits without a leading zero. */
|
|
42
|
+
const __randomNumeric = (length) => length <= 1 ? String(_randomInteger({
|
|
43
|
+
type: "integer",
|
|
44
|
+
minimum: 0,
|
|
45
|
+
maximum: 9
|
|
46
|
+
})) : String(_randomInteger({
|
|
47
|
+
type: "integer",
|
|
48
|
+
minimum: 1,
|
|
49
|
+
maximum: 9
|
|
50
|
+
})) + __randomDigits(length - 1);
|
|
51
|
+
//#endregion
|
|
52
|
+
export { __randomComposition, __randomDigits, __randomNumeric };
|
|
53
|
+
|
|
54
|
+
//# sourceMappingURL=__randomComposition.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"__randomComposition.mjs","names":[],"sources":["../../../src/internal/private/__randomComposition.ts"],"sourcesContent":["import { _randomInteger } from \"../_randomInteger\";\n\n/**\n * Splits `total` into `count` parts, each inside `[minimum, maximum]`.\n *\n * Used where a format's length is the sum of its segments — an IPv4 octet spans\n * one to three digits, an IPv6 group one to four — so a requested total length\n * is realized by choosing how many characters each segment contributes instead\n * of redrawing whole addresses and hoping one lands in the window (issue\n * #2284).\n *\n * The caller guarantees `count * minimum <= total <= count * maximum`; each\n * part is drawn from the range that still leaves the remaining parts\n * satisfiable.\n */\nexport const __randomComposition = (props: {\n total: number;\n count: number;\n minimum: number;\n maximum: number;\n}): number[] => {\n const parts: number[] = [];\n let remaining: number = props.total;\n for (let i: number = 0; i < props.count; ++i) {\n const rest: number = props.count - i - 1;\n const value: number = _randomInteger({\n type: \"integer\",\n minimum: Math.max(props.minimum, remaining - rest * props.maximum),\n maximum: Math.min(props.maximum, remaining - rest * props.minimum),\n });\n parts.push(value);\n remaining -= value;\n }\n return parts;\n};\n\n/** Draws `length` decimal digits, leading zeros included. */\nexport const __randomDigits = (length: number): string => {\n let text: string = \"\";\n for (let i: number = 0; i < length; ++i)\n text += String(_randomInteger({ type: \"integer\", minimum: 0, maximum: 9 }));\n return text;\n};\n\n/** Draws a decimal number of exactly `length` digits without a leading zero. */\nexport const __randomNumeric = (length: number): string =>\n length <= 1\n ? String(_randomInteger({ type: \"integer\", minimum: 0, maximum: 9 }))\n : String(_randomInteger({ type: \"integer\", minimum: 1, maximum: 9 })) +\n __randomDigits(length - 1);\n"],"mappings":";;;;;;;;;;;;;;;AAeA,MAAa,uBAAuB,UAKpB;CACd,MAAM,QAAkB,CAAC;CACzB,IAAI,YAAoB,MAAM;CAC9B,KAAK,IAAI,IAAY,GAAG,IAAI,MAAM,OAAO,EAAE,GAAG;EAC5C,MAAM,OAAe,MAAM,QAAQ,IAAI;EACvC,MAAM,QAAgB,eAAe;GACnC,MAAM;GACN,SAAS,KAAK,IAAI,MAAM,SAAS,YAAY,OAAO,MAAM,OAAO;GACjE,SAAS,KAAK,IAAI,MAAM,SAAS,YAAY,OAAO,MAAM,OAAO;EACnE,CAAC;EACD,MAAM,KAAK,KAAK;EAChB,aAAa;CACf;CACA,OAAO;AACT;;AAGA,MAAa,kBAAkB,WAA2B;CACxD,IAAI,OAAe;CACnB,KAAK,IAAI,IAAY,GAAG,IAAI,QAAQ,EAAE,GACpC,QAAQ,OAAO,eAAe;EAAE,MAAM;EAAW,SAAS;EAAG,SAAS;CAAE,CAAC,CAAC;CAC5E,OAAO;AACT;;AAGA,MAAa,mBAAmB,WAC9B,UAAU,IACN,OAAO,eAAe;CAAE,MAAM;CAAW,SAAS;CAAG,SAAS;AAAE,CAAC,CAAC,IAClE,OAAO,eAAe;CAAE,MAAM;CAAW,SAAS;CAAG,SAAS;AAAE,CAAC,CAAC,IAClE,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface __IEpochProps {
|
|
2
|
+
minimum?: number;
|
|
3
|
+
maximum?: number;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Draws an epoch millisecond inside the requested bounds.
|
|
7
|
+
*
|
|
8
|
+
* Shared by the `date` and `date-time` generators, which had the same bound
|
|
9
|
+
* expression written twice: `props?.maximum ?? props?.minimum === undefined`
|
|
10
|
+
* parses as `props?.maximum ?? (props?.minimum === undefined)` because `??`
|
|
11
|
+
* binds looser than `===`, so any supplied `maximum` made the condition truthy
|
|
12
|
+
* and was replaced by `Date.now()`, while `maximum: 0` fell through to
|
|
13
|
+
* `undefined + one year` and produced `NaN` (issue #2287). Keeping the
|
|
14
|
+
* resolution in one place is what stops the two copies from drifting again.
|
|
15
|
+
*
|
|
16
|
+
* With no bound at all the window ends at the present instant; with only a
|
|
17
|
+
* lower bound it spans one year from there.
|
|
18
|
+
*/
|
|
19
|
+
export declare const __randomEpoch: (props?: __IEpochProps) => number;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.__randomEpoch = void 0;
|
|
4
|
+
const _randomInteger_1 = require("../_randomInteger");
|
|
5
|
+
/**
|
|
6
|
+
* Draws an epoch millisecond inside the requested bounds.
|
|
7
|
+
*
|
|
8
|
+
* Shared by the `date` and `date-time` generators, which had the same bound
|
|
9
|
+
* expression written twice: `props?.maximum ?? props?.minimum === undefined`
|
|
10
|
+
* parses as `props?.maximum ?? (props?.minimum === undefined)` because `??`
|
|
11
|
+
* binds looser than `===`, so any supplied `maximum` made the condition truthy
|
|
12
|
+
* and was replaced by `Date.now()`, while `maximum: 0` fell through to
|
|
13
|
+
* `undefined + one year` and produced `NaN` (issue #2287). Keeping the
|
|
14
|
+
* resolution in one place is what stops the two copies from drifting again.
|
|
15
|
+
*
|
|
16
|
+
* With no bound at all the window ends at the present instant; with only a
|
|
17
|
+
* lower bound it spans one year from there.
|
|
18
|
+
*/
|
|
19
|
+
const __randomEpoch = (props) => {
|
|
20
|
+
var _a, _b;
|
|
21
|
+
const minimum = (_a = props === null || props === void 0 ? void 0 : props.minimum) !== null && _a !== void 0 ? _a : 0;
|
|
22
|
+
const maximum = (_b = props === null || props === void 0 ? void 0 : props.maximum) !== null && _b !== void 0 ? _b : ((props === null || props === void 0 ? void 0 : props.minimum) === undefined ? Date.now() : props.minimum + YEAR);
|
|
23
|
+
return (0, _randomInteger_1._randomInteger)({
|
|
24
|
+
type: "integer",
|
|
25
|
+
minimum,
|
|
26
|
+
maximum,
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
exports.__randomEpoch = __randomEpoch;
|
|
30
|
+
const YEAR = 365 * 24 * 60 * 60 * 1000;
|
|
31
|
+
//# sourceMappingURL=__randomEpoch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"__randomEpoch.js","sourceRoot":"","sources":["../../../src/internal/private/__randomEpoch.ts"],"names":[],"mappings":";;;AAAA,sDAAmD;AAOnD;;;;;;;;;;;;;GAaG;AACI,MAAM,aAAa,GAAG,CAAC,KAAqB,EAAU,EAAE;;IAC7D,MAAM,OAAO,SAAW,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,mCAAI,CAAC,CAAC;IAC5C,MAAM,OAAO,SACX,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,mCACd,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,MAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IACrE,OAAO,IAAA,+BAAc,EAAC;QACpB,IAAI,EAAE,SAAS;QACf,OAAO;QACP,OAAO;KACR,CAAC,CAAC;AACL,CAAC,CAAC;AAVW,QAAA,aAAa,GAAb,aAAa,CAUxB;AAEF,MAAM,IAAI,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAK,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { _randomInteger } from "../_randomInteger.mjs";
|
|
2
|
+
//#region src/internal/private/__randomEpoch.ts
|
|
3
|
+
/**
|
|
4
|
+
* Draws an epoch millisecond inside the requested bounds.
|
|
5
|
+
*
|
|
6
|
+
* Shared by the `date` and `date-time` generators, which had the same bound
|
|
7
|
+
* expression written twice: `props?.maximum ?? props?.minimum === undefined`
|
|
8
|
+
* parses as `props?.maximum ?? (props?.minimum === undefined)` because `??`
|
|
9
|
+
* binds looser than `===`, so any supplied `maximum` made the condition truthy
|
|
10
|
+
* and was replaced by `Date.now()`, while `maximum: 0` fell through to
|
|
11
|
+
* `undefined + one year` and produced `NaN` (issue #2287). Keeping the
|
|
12
|
+
* resolution in one place is what stops the two copies from drifting again.
|
|
13
|
+
*
|
|
14
|
+
* With no bound at all the window ends at the present instant; with only a
|
|
15
|
+
* lower bound it spans one year from there.
|
|
16
|
+
*/
|
|
17
|
+
const __randomEpoch = (props) => {
|
|
18
|
+
return _randomInteger({
|
|
19
|
+
type: "integer",
|
|
20
|
+
minimum: props?.minimum ?? 0,
|
|
21
|
+
maximum: props?.maximum ?? (props?.minimum === void 0 ? Date.now() : props.minimum + YEAR)
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
const YEAR = 365 * 24 * 60 * 60 * 1e3;
|
|
25
|
+
//#endregion
|
|
26
|
+
export { __randomEpoch };
|
|
27
|
+
|
|
28
|
+
//# sourceMappingURL=__randomEpoch.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"__randomEpoch.mjs","names":[],"sources":["../../../src/internal/private/__randomEpoch.ts"],"sourcesContent":["import { _randomInteger } from \"../_randomInteger\";\n\nexport interface __IEpochProps {\n minimum?: number;\n maximum?: number;\n}\n\n/**\n * Draws an epoch millisecond inside the requested bounds.\n *\n * Shared by the `date` and `date-time` generators, which had the same bound\n * expression written twice: `props?.maximum ?? props?.minimum === undefined`\n * parses as `props?.maximum ?? (props?.minimum === undefined)` because `??`\n * binds looser than `===`, so any supplied `maximum` made the condition truthy\n * and was replaced by `Date.now()`, while `maximum: 0` fell through to\n * `undefined + one year` and produced `NaN` (issue #2287). Keeping the\n * resolution in one place is what stops the two copies from drifting again.\n *\n * With no bound at all the window ends at the present instant; with only a\n * lower bound it spans one year from there.\n */\nexport const __randomEpoch = (props?: __IEpochProps): number => {\n const minimum: number = props?.minimum ?? 0;\n const maximum: number =\n props?.maximum ??\n (props?.minimum === undefined ? Date.now() : props.minimum + YEAR);\n return _randomInteger({\n type: \"integer\",\n minimum,\n maximum,\n });\n};\n\nconst YEAR = 365 * 24 * 60 * 60 * 1_000;\n"],"mappings":";;;;;;;;;;;;;;;;AAqBA,MAAa,iBAAiB,UAAkC;CAK9D,OAAO,eAAe;EACpB,MAAM;EACN,SANsB,OAAO,WAAW;EAOxC,SALA,OAAO,YACN,OAAO,YAAY,KAAA,IAAY,KAAK,IAAI,IAAI,MAAM,UAAU;CAK/D,CAAC;AACH;AAEA,MAAM,OAAO,MAAM,KAAK,KAAK,KAAK"}
|
package/lib/json.d.ts
CHANGED
|
@@ -62,10 +62,10 @@ export declare function application(): never;
|
|
|
62
62
|
*
|
|
63
63
|
* - Custom LLM function calling schema formats
|
|
64
64
|
* - API documentation or code generation tools
|
|
65
|
-
* - Alternative LLM integrations
|
|
65
|
+
* - Alternative LLM integrations that need full JSON Schema
|
|
66
66
|
*
|
|
67
67
|
* For standard LLM function calling, use {@link llm.application} instead, which
|
|
68
|
-
*
|
|
68
|
+
* builds the LLM-optimized function schema directly.
|
|
69
69
|
*
|
|
70
70
|
* @template Class Target class or interface type
|
|
71
71
|
* @template Version OpenAPI version (`"3.0"` | `"3.1"`). Default `"3.1"`
|