jsii-rosetta 1.76.0 → 4.9.0-dev.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/LICENSE +202 -0
- package/NOTICE +1 -0
- package/README.md +287 -388
- package/bin/jsii-rosetta +1 -1
- package/lib/ambient/semver-intersect.d.ts +13 -0
- package/lib/ambient/semver-intersect.js +2 -0
- package/lib/ambient/semver-intersect.js.map +1 -0
- package/lib/commands/convert.js.map +1 -0
- package/lib/commands/coverage.js.map +1 -0
- package/lib/commands/extract.js +2 -2
- package/lib/commands/extract.js.map +1 -0
- package/lib/commands/infuse.js +2 -2
- package/lib/commands/infuse.js.map +1 -0
- package/lib/commands/read.js +6 -6
- package/lib/commands/read.js.map +1 -0
- package/lib/commands/transliterate.js +4 -4
- package/lib/commands/transliterate.js.map +1 -0
- package/lib/commands/trim-cache.js.map +1 -0
- package/lib/find-utils.js +4 -4
- package/lib/find-utils.js.map +1 -0
- package/lib/fixtures.js +2 -2
- package/lib/fixtures.js.map +1 -0
- package/lib/index.js.map +1 -0
- package/lib/jsii/assemblies.d.ts +1 -1
- package/lib/jsii/assemblies.js +14 -11
- package/lib/jsii/assemblies.js.map +1 -0
- package/lib/jsii/fingerprinting.js +9 -9
- package/lib/jsii/fingerprinting.js.map +1 -0
- package/lib/jsii/jsii-types.d.ts +4 -4
- package/lib/jsii/jsii-types.js +9 -4
- package/lib/jsii/jsii-types.js.map +1 -0
- package/lib/jsii/jsii-utils.d.ts +1 -1
- package/lib/jsii/jsii-utils.js +2 -2
- package/lib/jsii/jsii-utils.js.map +1 -0
- package/lib/jsii/packages.js.map +1 -0
- package/lib/languages/csharp.d.ts +3 -3
- package/lib/languages/csharp.js +2 -2
- package/lib/languages/csharp.js.map +1 -0
- package/lib/languages/default.d.ts +2 -2
- package/lib/languages/default.js.map +1 -0
- package/lib/languages/go.d.ts +3 -3
- package/lib/languages/go.js +20 -16
- package/lib/languages/go.js.map +1 -0
- package/lib/languages/index.d.ts +1 -1
- package/lib/languages/index.js +4 -4
- package/lib/languages/index.js.map +1 -0
- package/lib/languages/java.d.ts +2 -2
- package/lib/languages/java.js +2 -2
- package/lib/languages/java.js.map +1 -0
- package/lib/languages/python.d.ts +3 -3
- package/lib/languages/python.js +1 -1
- package/lib/languages/python.js.map +1 -0
- package/lib/languages/record-references-version.d.ts +2 -0
- package/lib/languages/record-references-version.js +6 -0
- package/lib/languages/record-references-version.js.map +1 -0
- package/lib/languages/record-references.d.ts +2 -2
- package/lib/languages/record-references.js +3 -2
- package/lib/languages/record-references.js.map +1 -0
- package/lib/languages/target-language.d.ts +0 -2
- package/lib/languages/target-language.js +2 -1
- package/lib/languages/target-language.js.map +1 -0
- package/lib/languages/visualize.d.ts +1 -1
- package/lib/languages/visualize.js +1 -1
- package/lib/languages/visualize.js.map +1 -0
- package/lib/logging.js +1 -1
- package/lib/logging.js.map +1 -0
- package/lib/main.d.ts +2 -0
- package/{bin/jsii-rosetta.js → lib/main.js} +21 -21
- package/lib/main.js.map +1 -0
- package/lib/markdown/escapes.js.map +1 -0
- package/lib/markdown/extract-snippets.d.ts +2 -2
- package/lib/markdown/extract-snippets.js +1 -1
- package/lib/markdown/extract-snippets.js.map +1 -0
- package/lib/markdown/index.js.map +1 -0
- package/lib/markdown/javadoc-renderer.js.map +1 -0
- package/lib/markdown/markdown-renderer.js.map +1 -0
- package/lib/markdown/markdown.js.map +1 -0
- package/lib/markdown/replace-code-renderer.d.ts +1 -1
- package/lib/markdown/replace-code-renderer.js.map +1 -0
- package/lib/markdown/replace-typescript-transform.d.ts +2 -2
- package/lib/markdown/replace-typescript-transform.js +1 -1
- package/lib/markdown/replace-typescript-transform.js.map +1 -0
- package/lib/markdown/structure-renderer.js.map +1 -0
- package/lib/markdown/types.js.map +1 -0
- package/lib/markdown/xml-comment-renderer.js.map +1 -0
- package/lib/o-tree.js +3 -3
- package/lib/o-tree.js.map +1 -0
- package/lib/renderer.js.map +1 -0
- package/lib/rosetta-reader.js.map +1 -0
- package/lib/rosetta-translator.d.ts +1 -1
- package/lib/rosetta-translator.js +2 -2
- package/lib/rosetta-translator.js.map +1 -0
- package/lib/snippet-dependencies.js +12 -12
- package/lib/snippet-dependencies.js.map +1 -0
- package/lib/snippet-selectors.d.ts +1 -1
- package/lib/snippet-selectors.js +2 -2
- package/lib/snippet-selectors.js.map +1 -0
- package/lib/snippet.d.ts +3 -3
- package/lib/snippet.js +5 -5
- package/lib/snippet.js.map +1 -0
- package/lib/strict.js.map +1 -0
- package/lib/submodule-reference.d.ts +1 -1
- package/lib/submodule-reference.js +11 -11
- package/lib/submodule-reference.js.map +1 -0
- package/lib/tablets/key.js +3 -3
- package/lib/tablets/key.js.map +1 -0
- package/lib/tablets/schema.js.map +1 -0
- package/lib/tablets/tablets.d.ts +1 -1
- package/lib/tablets/tablets.js +13 -13
- package/lib/tablets/tablets.js.map +1 -0
- package/lib/translate.d.ts +1 -1
- package/lib/translate.js +9 -7
- package/lib/translate.js.map +1 -0
- package/lib/translate_all.js +2 -2
- package/lib/translate_all.js.map +1 -0
- package/lib/translate_all_worker.js.map +1 -0
- package/lib/typescript/ast-utils.d.ts +2 -2
- package/lib/typescript/ast-utils.js +2 -4
- package/lib/typescript/ast-utils.js.map +1 -0
- package/lib/typescript/imports.d.ts +2 -2
- package/lib/typescript/imports.js +3 -3
- package/lib/typescript/imports.js.map +1 -0
- package/lib/typescript/syntax-kind-counter.d.ts +1 -1
- package/lib/typescript/syntax-kind-counter.js +1 -2
- package/lib/typescript/syntax-kind-counter.js.map +1 -0
- package/lib/typescript/ts-compiler.js.map +1 -0
- package/lib/typescript/types.d.ts +2 -2
- package/lib/typescript/types.js +1 -1
- package/lib/typescript/types.js.map +1 -0
- package/lib/typescript/visible-spans.js +6 -6
- package/lib/typescript/visible-spans.js.map +1 -0
- package/lib/util.d.ts +1 -1
- package/lib/util.js +2 -2
- package/lib/util.js.map +1 -0
- package/package.json +68 -37
- package/temp.tabl.json +48 -0
- package/bin/jsii-rosetta.d.ts +0 -2
- package/jest.config.mjs +0 -8
- package/jestsetup.js +0 -4
- package/test/commands/extract.test.d.ts +0 -2
- package/test/commands/extract.test.js +0 -698
- package/test/commands/infuse.test.d.ts +0 -2
- package/test/commands/infuse.test.js +0 -165
- package/test/commands/transliterate.test.d.ts +0 -2
- package/test/commands/transliterate.test.js +0 -1636
- package/test/commands/trim-cache.test.d.ts +0 -2
- package/test/commands/trim-cache.test.js +0 -85
- package/test/fixtures.test.d.ts +0 -2
- package/test/fixtures.test.js +0 -49
- package/test/jsii/assemblies.test.d.ts +0 -2
- package/test/jsii/assemblies.test.js +0 -230
- package/test/jsii/fake-assembly.d.ts +0 -3
- package/test/jsii/fake-assembly.js +0 -21
- package/test/jsii/fixtures/rosetta/explicit.ts-fixture +0 -7
- package/test/jsii/visible-spans.test.d.ts +0 -2
- package/test/jsii/visible-spans.test.js +0 -40
- package/test/jsii-imports.test.d.ts +0 -2
- package/test/jsii-imports.test.js +0 -438
- package/test/markdown/javadoc.test.d.ts +0 -2
- package/test/markdown/javadoc.test.js +0 -110
- package/test/markdown/roundtrip.test.d.ts +0 -2
- package/test/markdown/roundtrip.test.js +0 -126
- package/test/markdown/xmldoccomments.test.d.ts +0 -2
- package/test/markdown/xmldoccomments.test.js +0 -89
- package/test/otree.test.d.ts +0 -2
- package/test/otree.test.js +0 -36
- package/test/record-references.test.d.ts +0 -2
- package/test/record-references.test.js +0 -88
- package/test/rosetta/default.ts-fixture +0 -1
- package/test/rosetta-translator.test.d.ts +0 -2
- package/test/rosetta-translator.test.js +0 -33
- package/test/rosetta.test.d.ts +0 -2
- package/test/rosetta.test.js +0 -221
- package/test/snippet-selectors.test.d.ts +0 -2
- package/test/snippet-selectors.test.js +0 -57
- package/test/snippet.test.d.ts +0 -2
- package/test/snippet.test.js +0 -18
- package/test/syntax-counter.test.d.ts +0 -2
- package/test/syntax-counter.test.js +0 -60
- package/test/testutil.d.ts +0 -64
- package/test/testutil.js +0 -104
- package/test/translate.test.d.ts +0 -2
- package/test/translate.test.js +0 -175
- package/test/translations/calls/declaring_default_arguments.cs +0 -4
- package/test/translations/calls/declaring_default_arguments.go +0 -6
- package/test/translations/calls/declaring_default_arguments.java +0 -11
- package/test/translations/calls/declaring_default_arguments.py +0 -2
- package/test/translations/calls/default_struct_fields.cs +0 -9
- package/test/translations/calls/default_struct_fields.go +0 -7
- package/test/translations/calls/default_struct_fields.java +0 -21
- package/test/translations/calls/default_struct_fields.py +0 -2
- package/test/translations/calls/function_call.cs +0 -1
- package/test/translations/calls/function_call.go +0 -1
- package/test/translations/calls/function_call.java +0 -1
- package/test/translations/calls/function_call.py +0 -1
- package/test/translations/calls/list_of_anonymous_structs.cs +0 -9
- package/test/translations/calls/list_of_anonymous_structs.go +0 -12
- package/test/translations/calls/list_of_anonymous_structs.java +0 -6
- package/test/translations/calls/list_of_anonymous_structs.py +0 -9
- package/test/translations/calls/literal_map_argument.cs +0 -5
- package/test/translations/calls/literal_map_argument.go +0 -7
- package/test/translations/calls/literal_map_argument.java +0 -4
- package/test/translations/calls/literal_map_argument.py +0 -4
- package/test/translations/calls/method_call.cs +0 -1
- package/test/translations/calls/method_call.go +0 -1
- package/test/translations/calls/method_call.java +0 -1
- package/test/translations/calls/method_call.py +0 -1
- package/test/translations/calls/self_method_call.cs +0 -1
- package/test/translations/calls/self_method_call.go +0 -1
- package/test/translations/calls/self_method_call.java +0 -1
- package/test/translations/calls/self_method_call.py +0 -1
- package/test/translations/calls/shorthand_property.cs +0 -2
- package/test/translations/calls/shorthand_property.go +0 -4
- package/test/translations/calls/shorthand_property.java +0 -2
- package/test/translations/calls/shorthand_property.py +0 -2
- package/test/translations/calls/static_function_call.cs +0 -1
- package/test/translations/calls/static_function_call.go +0 -1
- package/test/translations/calls/static_function_call.java +0 -1
- package/test/translations/calls/static_function_call.py +0 -1
- package/test/translations/calls/this_argument.cs +0 -1
- package/test/translations/calls/this_argument.go +0 -1
- package/test/translations/calls/this_argument.java +0 -1
- package/test/translations/calls/this_argument.py +0 -1
- package/test/translations/calls/translate_object_literals_in_function_call.cs +0 -1
- package/test/translations/calls/translate_object_literals_in_function_call.go +0 -4
- package/test/translations/calls/translate_object_literals_in_function_call.java +0 -1
- package/test/translations/calls/translate_object_literals_in_function_call.py +0 -1
- package/test/translations/calls/translate_object_literals_only_one_level_deep.cs +0 -1
- package/test/translations/calls/translate_object_literals_only_one_level_deep.go +0 -7
- package/test/translations/calls/translate_object_literals_only_one_level_deep.java +0 -1
- package/test/translations/calls/translate_object_literals_only_one_level_deep.py +0 -1
- package/test/translations/calls/translate_object_literals_second_level_with_newlines.cs +0 -4
- package/test/translations/calls/translate_object_literals_second_level_with_newlines.go +0 -7
- package/test/translations/calls/translate_object_literals_second_level_with_newlines.java +0 -3
- package/test/translations/calls/translate_object_literals_second_level_with_newlines.py +0 -4
- package/test/translations/calls/translate_object_literals_with_multiple_newlines.cs +0 -5
- package/test/translations/calls/translate_object_literals_with_multiple_newlines.go +0 -5
- package/test/translations/calls/translate_object_literals_with_multiple_newlines.java +0 -4
- package/test/translations/calls/translate_object_literals_with_multiple_newlines.py +0 -5
- package/test/translations/calls/translate_object_literals_with_newlines.cs +0 -4
- package/test/translations/calls/translate_object_literals_with_newlines.go +0 -4
- package/test/translations/calls/translate_object_literals_with_newlines.java +0 -3
- package/test/translations/calls/translate_object_literals_with_newlines.py +0 -4
- package/test/translations/calls/will_type_deep_structs_directly_if_type_info_is_available.cs +0 -24
- package/test/translations/calls/will_type_deep_structs_directly_if_type_info_is_available.go +0 -24
- package/test/translations/calls/will_type_deep_structs_directly_if_type_info_is_available.java +0 -48
- package/test/translations/calls/will_type_deep_structs_directly_if_type_info_is_available.py +0 -7
- package/test/translations/classes/class_declaration_with_private_fields_and_constructor.cs +0 -9
- package/test/translations/classes/class_declaration_with_private_fields_and_constructor.go +0 -9
- package/test/translations/classes/class_declaration_with_private_fields_and_constructor.java +0 -7
- package/test/translations/classes/class_declaration_with_private_fields_and_constructor.py +0 -4
- package/test/translations/classes/class_declaration_with_public_fields_and_constructor.cs +0 -9
- package/test/translations/classes/class_declaration_with_public_fields_and_constructor.go +0 -9
- package/test/translations/classes/class_declaration_with_public_fields_and_constructor.java +0 -7
- package/test/translations/classes/class_declaration_with_public_fields_and_constructor.py +0 -4
- package/test/translations/classes/class_implementing_jsii_interface.cs +0 -7
- package/test/translations/classes/class_implementing_jsii_interface.go +0 -6
- package/test/translations/classes/class_implementing_jsii_interface.java +0 -5
- package/test/translations/classes/class_implementing_jsii_interface.py +0 -4
- package/test/translations/classes/class_with_different_name.cs +0 -6
- package/test/translations/classes/class_with_different_name.go +0 -7
- package/test/translations/classes/class_with_different_name.java +0 -4
- package/test/translations/classes/class_with_different_name.py +0 -3
- package/test/translations/classes/class_with_extends_and_implements.cs +0 -3
- package/test/translations/classes/class_with_extends_and_implements.go +0 -3
- package/test/translations/classes/class_with_extends_and_implements.java +0 -2
- package/test/translations/classes/class_with_inheritance.cs +0 -3
- package/test/translations/classes/class_with_inheritance.go +0 -3
- package/test/translations/classes/class_with_inheritance.java +0 -2
- package/test/translations/classes/class_with_inheritance.py +0 -2
- package/test/translations/classes/class_with_inheritance_and_super_class.cs +0 -6
- package/test/translations/classes/class_with_inheritance_and_super_class.go +0 -9
- package/test/translations/classes/class_with_inheritance_and_super_class.java +0 -5
- package/test/translations/classes/class_with_inheritance_and_super_class.py +0 -3
- package/test/translations/classes/class_with_method.cs +0 -7
- package/test/translations/classes/class_with_method.go +0 -7
- package/test/translations/classes/class_with_method.java +0 -5
- package/test/translations/classes/class_with_method.py +0 -3
- package/test/translations/classes/class_with_props_argument.cs +0 -14
- package/test/translations/classes/class_with_props_argument.go +0 -16
- package/test/translations/classes/class_with_props_argument.java +0 -26
- package/test/translations/classes/class_with_props_argument.py +0 -5
- package/test/translations/classes/constructor_with_optional_params.go +0 -10
- package/test/translations/classes/constructor_with_optional_params.java +0 -12
- package/test/translations/classes/empty_class.cs +0 -3
- package/test/translations/classes/empty_class.go +0 -2
- package/test/translations/classes/empty_class.java +0 -2
- package/test/translations/classes/empty_class.py +0 -2
- package/test/translations/classes/invisible_interfaces_do_not_affect_whitespace.cs +0 -11
- package/test/translations/classes/invisible_interfaces_do_not_affect_whitespace.go +0 -8
- package/test/translations/classes/invisible_interfaces_do_not_affect_whitespace.java +0 -8
- package/test/translations/classes/invisible_interfaces_do_not_affect_whitespace.py +0 -5
- package/test/translations/classes/whitespace_between_multiple_empty_members.cs +0 -15
- package/test/translations/classes/whitespace_between_multiple_empty_members.go +0 -12
- package/test/translations/classes/whitespace_between_multiple_empty_members.java +0 -11
- package/test/translations/classes/whitespace_between_multiple_empty_members.py +0 -9
- package/test/translations/classes/whitespace_between_multiple_members.cs +0 -17
- package/test/translations/classes/whitespace_between_multiple_members.go +0 -16
- package/test/translations/classes/whitespace_between_multiple_members.java +0 -13
- package/test/translations/classes/whitespace_between_multiple_members.py +0 -9
- package/test/translations/comments/empty_lines_in_comments.cs +0 -4
- package/test/translations/comments/empty_lines_in_comments.go +0 -4
- package/test/translations/comments/empty_lines_in_comments.java +0 -4
- package/test/translations/comments/empty_lines_in_comments.py +0 -4
- package/test/translations/comments/interleave_multiline_comments_with_function_call.cs +0 -7
- package/test/translations/comments/interleave_multiline_comments_with_function_call.go +0 -7
- package/test/translations/comments/interleave_multiline_comments_with_function_call.java +0 -6
- package/test/translations/comments/interleave_multiline_comments_with_function_call.py +0 -7
- package/test/translations/comments/interleave_single_line_comments_with_function_call.cs +0 -7
- package/test/translations/comments/interleave_single_line_comments_with_function_call.go +0 -7
- package/test/translations/comments/interleave_single_line_comments_with_function_call.java +0 -6
- package/test/translations/comments/interleave_single_line_comments_with_function_call.py +0 -7
- package/test/translations/comments/no_duplication_of_comments.cs +0 -2
- package/test/translations/comments/no_duplication_of_comments.go +0 -2
- package/test/translations/comments/no_duplication_of_comments.java +0 -2
- package/test/translations/comments/no_duplication_of_comments.py +0 -2
- package/test/translations/expressions/array_index.cs +0 -3
- package/test/translations/expressions/array_index.go +0 -3
- package/test/translations/expressions/array_index.java +0 -3
- package/test/translations/expressions/array_index.py +0 -3
- package/test/translations/expressions/as_expression.cs +0 -1
- package/test/translations/expressions/as_expression.go +0 -1
- package/test/translations/expressions/as_expression.java +0 -1
- package/test/translations/expressions/as_expression.py +0 -1
- package/test/translations/expressions/await.cs +0 -1
- package/test/translations/expressions/await.go +0 -1
- package/test/translations/expressions/await.java +0 -1
- package/test/translations/expressions/await.py +0 -1
- package/test/translations/expressions/backtick_string_w_o_substitutions.cs +0 -1
- package/test/translations/expressions/backtick_string_w_o_substitutions.go +0 -1
- package/test/translations/expressions/backtick_string_w_o_substitutions.java +0 -1
- package/test/translations/expressions/backtick_string_w_o_substitutions.py +0 -1
- package/test/translations/expressions/computed_key.cs +0 -4
- package/test/translations/expressions/computed_key.go +0 -8
- package/test/translations/expressions/computed_key.java +0 -4
- package/test/translations/expressions/computed_key.py +0 -4
- package/test/translations/expressions/double_quoted_dict_keys.cs +0 -1
- package/test/translations/expressions/double_quoted_dict_keys.go +0 -3
- package/test/translations/expressions/double_quoted_dict_keys.java +0 -1
- package/test/translations/expressions/double_quoted_dict_keys.py +0 -1
- package/test/translations/expressions/ellipsis_at_a_random_place.cs +0 -1
- package/test/translations/expressions/ellipsis_at_a_random_place.go +0 -1
- package/test/translations/expressions/ellipsis_at_a_random_place.java +0 -1
- package/test/translations/expressions/ellipsis_at_a_random_place.py +0 -1
- package/test/translations/expressions/enum_access.cs +0 -1
- package/test/translations/expressions/enum_access.go +0 -1
- package/test/translations/expressions/enum_access.java +0 -1
- package/test/translations/expressions/enum_access.py +0 -1
- package/test/translations/expressions/enum_like_access.cs +0 -1
- package/test/translations/expressions/enum_like_access.go +0 -1
- package/test/translations/expressions/enum_like_access.java +0 -1
- package/test/translations/expressions/enum_like_access.py +0 -1
- package/test/translations/expressions/map-literal.cs +0 -3
- package/test/translations/expressions/map-literal.go +0 -3
- package/test/translations/expressions/map-literal.java +0 -2
- package/test/translations/expressions/map-literal.py +0 -3
- package/test/translations/expressions/non_null_expression.cs +0 -1
- package/test/translations/expressions/non_null_expression.go +0 -1
- package/test/translations/expressions/non_null_expression.java +0 -1
- package/test/translations/expressions/non_null_expression.py +0 -1
- package/test/translations/expressions/string_interpolation.cs +0 -10
- package/test/translations/expressions/string_interpolation.go +0 -6
- package/test/translations/expressions/string_interpolation.java +0 -6
- package/test/translations/expressions/string_interpolation.py +0 -10
- package/test/translations/expressions/string_literal.cs +0 -9
- package/test/translations/expressions/string_literal.go +0 -9
- package/test/translations/expressions/string_literal.java +0 -1
- package/test/translations/expressions/string_literal.py +0 -9
- package/test/translations/expressions/struct_assignment.cs +0 -6
- package/test/translations/expressions/struct_assignment.go +0 -7
- package/test/translations/expressions/struct_assignment.java +0 -12
- package/test/translations/expressions/struct_assignment.py +0 -1
- package/test/translations/expressions/unary_and_binary_operators.cs +0 -3
- package/test/translations/expressions/unary_and_binary_operators.go +0 -3
- package/test/translations/expressions/unary_and_binary_operators.java +0 -3
- package/test/translations/expressions/unary_and_binary_operators.py +0 -3
- package/test/translations/hiding/hide_block_level_statements_using_void_directive.cs +0 -6
- package/test/translations/hiding/hide_block_level_statements_using_void_directive.go +0 -5
- package/test/translations/hiding/hide_block_level_statements_using_void_directive.java +0 -5
- package/test/translations/hiding/hide_block_level_statements_using_void_directive.py +0 -4
- package/test/translations/hiding/hide_expression_with_explicit_ellipsis.cs +0 -1
- package/test/translations/hiding/hide_expression_with_explicit_ellipsis.go +0 -1
- package/test/translations/hiding/hide_expression_with_explicit_ellipsis.java +0 -1
- package/test/translations/hiding/hide_expression_with_explicit_ellipsis.py +0 -1
- package/test/translations/hiding/hide_halfway_into_class_using_comments.cs +0 -3
- package/test/translations/hiding/hide_halfway_into_class_using_comments.go +0 -3
- package/test/translations/hiding/hide_halfway_into_class_using_comments.java +0 -3
- package/test/translations/hiding/hide_halfway_into_class_using_comments.py +0 -3
- package/test/translations/hiding/hide_parameter_sequence.cs +0 -1
- package/test/translations/hiding/hide_parameter_sequence.go +0 -1
- package/test/translations/hiding/hide_parameter_sequence.java +0 -1
- package/test/translations/hiding/hide_parameter_sequence.py +0 -1
- package/test/translations/hiding/hide_statements_with_explicit_ellipsis.cs +0 -3
- package/test/translations/hiding/hide_statements_with_explicit_ellipsis.go +0 -3
- package/test/translations/hiding/hide_statements_with_explicit_ellipsis.java +0 -3
- package/test/translations/hiding/hide_statements_with_explicit_ellipsis.py +0 -3
- package/test/translations/hiding/hide_top_level_statements_using_void_directive.cs +0 -1
- package/test/translations/hiding/hide_top_level_statements_using_void_directive.go +0 -1
- package/test/translations/hiding/hide_top_level_statements_using_void_directive.java +0 -1
- package/test/translations/hiding/hide_top_level_statements_using_void_directive.py +0 -1
- package/test/translations/identifiers/keyword.cs +0 -4
- package/test/translations/identifiers/keyword.go +0 -4
- package/test/translations/identifiers/keyword.java +0 -4
- package/test/translations/identifiers/keyword.py +0 -4
- package/test/translations/imports/import_require.cs +0 -2
- package/test/translations/imports/import_require.go +0 -2
- package/test/translations/imports/import_require.java +0 -2
- package/test/translations/imports/import_require.py +0 -2
- package/test/translations/imports/import_star_as.cs +0 -2
- package/test/translations/imports/import_star_as.go +0 -2
- package/test/translations/imports/import_star_as.java +0 -2
- package/test/translations/imports/import_star_as.py +0 -2
- package/test/translations/imports/multiple-imports.cs +0 -2
- package/test/translations/imports/multiple-imports.go +0 -2
- package/test/translations/imports/multiple-imports.java +0 -3
- package/test/translations/imports/multiple-imports.py +0 -2
- package/test/translations/imports/selective_import.cs +0 -4
- package/test/translations/imports/selective_import.go +0 -3
- package/test/translations/imports/selective_import.java +0 -6
- package/test/translations/imports/selective_import.py +0 -3
- package/test/translations/imports/submodule-import.cs +0 -15
- package/test/translations/imports/submodule-import.go +0 -23
- package/test/translations/imports/submodule-import.java +0 -17
- package/test/translations/imports/submodule-import.py +0 -15
- package/test/translations/interfaces/interface_with_method.cs +0 -4
- package/test/translations/interfaces/interface_with_method.go +0 -3
- package/test/translations/interfaces/interface_with_method.java +0 -3
- package/test/translations/interfaces/interface_with_props.cs +0 -4
- package/test/translations/interfaces/interface_with_props.go +0 -3
- package/test/translations/interfaces/interface_with_props.java +0 -3
- package/test/translations/misc/booleans_render_to_right_primitives.cs +0 -1
- package/test/translations/misc/booleans_render_to_right_primitives.go +0 -1
- package/test/translations/misc/booleans_render_to_right_primitives.java +0 -1
- package/test/translations/misc/booleans_render_to_right_primitives.py +0 -1
- package/test/translations/statements/block_without_braces.cs +0 -1
- package/test/translations/statements/block_without_braces.go +0 -3
- package/test/translations/statements/block_without_braces.java +0 -1
- package/test/translations/statements/block_without_braces.py +0 -1
- package/test/translations/statements/declare_var.cs +0 -1
- package/test/translations/statements/declare_var.go +0 -1
- package/test/translations/statements/declare_var.java +0 -1
- package/test/translations/statements/declare_var.py +0 -1
- package/test/translations/statements/empty_control_block.cs +0 -3
- package/test/translations/statements/empty_control_block.go +0 -1
- package/test/translations/statements/empty_control_block.java +0 -2
- package/test/translations/statements/empty_control_block.py +0 -2
- package/test/translations/statements/for_of_loop.cs +0 -4
- package/test/translations/statements/for_of_loop.go +0 -3
- package/test/translations/statements/for_of_loop.java +0 -3
- package/test/translations/statements/for_of_loop.py +0 -2
- package/test/translations/statements/if.cs +0 -4
- package/test/translations/statements/if.go +0 -3
- package/test/translations/statements/if.java +0 -3
- package/test/translations/statements/if.py +0 -2
- package/test/translations/statements/if_then_else.cs +0 -8
- package/test/translations/statements/if_then_else.go +0 -5
- package/test/translations/statements/if_then_else.java +0 -5
- package/test/translations/statements/if_then_else.py +0 -4
- package/test/translations/statements/initialize_object_literal.cs +0 -5
- package/test/translations/statements/initialize_object_literal.go +0 -8
- package/test/translations/statements/initialize_object_literal.java +0 -4
- package/test/translations/statements/initialize_object_literal.py +0 -5
- package/test/translations/statements/multiline_if_then_else.cs +0 -9
- package/test/translations/statements/multiline_if_then_else.go +0 -6
- package/test/translations/statements/multiline_if_then_else.java +0 -6
- package/test/translations/statements/multiline_if_then_else.py +0 -5
- package/test/translations/statements/statements_and_newlines.cs +0 -26
- package/test/translations/statements/statements_and_newlines.go +0 -21
- package/test/translations/statements/statements_and_newlines.java +0 -21
- package/test/translations/statements/statements_and_newlines.py +0 -16
- package/test/translations/statements/vararg_any_call.cs +0 -7
- package/test/translations/statements/vararg_any_call.go +0 -13
- package/test/translations/statements/vararg_any_call.java +0 -6
- package/test/translations/statements/vararg_any_call.py +0 -6
- package/test/translations/statements/whitespace_between_statements.cs +0 -3
- package/test/translations/statements/whitespace_between_statements.go +0 -3
- package/test/translations/statements/whitespace_between_statements.java +0 -3
- package/test/translations/statements/whitespace_between_statements.py +0 -3
- package/test/translations/statements/whitespace_between_statements_in_a_block.cs +0 -6
- package/test/translations/statements/whitespace_between_statements_in_a_block.go +0 -5
- package/test/translations/statements/whitespace_between_statements_in_a_block.java +0 -5
- package/test/translations/statements/whitespace_between_statements_in_a_block.py +0 -4
- package/test/translations/structs/any_type_never_a_struct.cs +0 -3
- package/test/translations/structs/any_type_never_a_struct.go +0 -3
- package/test/translations/structs/any_type_never_a_struct.java +0 -2
- package/test/translations/structs/any_type_never_a_struct.py +0 -3
- package/test/translations/structs/infer_struct_from_union.cs +0 -6
- package/test/translations/structs/infer_struct_from_union.go +0 -8
- package/test/translations/structs/infer_struct_from_union.java +0 -6
- package/test/translations/structs/infer_struct_from_union.py +0 -6
- package/test/translations/structs/optional_known_struct.cs +0 -3
- package/test/translations/structs/optional_known_struct.go +0 -3
- package/test/translations/structs/optional_known_struct.java +0 -3
- package/test/translations/structs/optional_known_struct.py +0 -3
- package/test/translations/structs/struct_starting_with_i.cs +0 -3
- package/test/translations/structs/struct_starting_with_i.go +0 -3
- package/test/translations/structs/struct_starting_with_i.java +0 -3
- package/test/translations/structs/struct_starting_with_i.py +0 -3
- package/test/translations/structs/var_new_class_known_struct.cs +0 -3
- package/test/translations/structs/var_new_class_known_struct.go +0 -3
- package/test/translations/structs/var_new_class_known_struct.java +0 -3
- package/test/translations/structs/var_new_class_known_struct.py +0 -3
- package/test/translations/structs/var_new_class_unknown_struct.cs +0 -3
- package/test/translations/structs/var_new_class_unknown_struct.go +0 -3
- package/test/translations/structs/var_new_class_unknown_struct.java +0 -3
- package/test/translations/structs/var_new_class_unknown_struct.py +0 -3
- package/test/translations.test.d.ts +0 -9
- package/test/translations.test.js +0 -112
- package/test/util.test.d.ts +0 -2
- package/test/util.test.js +0 -25
- package/vendor/semver-intersect.d.ts +0 -13
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"go.js","sourceRoot":"","sources":["../../src/languages/go.ts"],"names":[],"mappings":"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","sourcesContent":["// import { JsiiSymbol, simpleName, namespaceName } from '../jsii/jsii-utils';\n// import { jsiiTargetParameter } from '../jsii/packages';\nimport { AssertionError } from 'node:assert';\nimport * as ts from 'typescript';\n\nimport { DefaultVisitor } from './default';\nimport { TargetLanguage } from './target-language';\nimport { analyzeObjectLiteral, determineJsiiType, JsiiType, ObjectLiteralStruct } from '../jsii/jsii-types';\nimport { lookupJsiiSymbolFromNode } from '../jsii/jsii-utils';\nimport { OTree } from '../o-tree';\nimport { AstRenderer } from '../renderer';\nimport { SubmoduleReference } from '../submodule-reference';\nimport { isExported, isPublic, isPrivate, isReadOnly, isStatic } from '../typescript/ast-utils';\nimport { analyzeImportDeclaration, ImportStatement } from '../typescript/imports';\nimport {\n determineReturnType,\n inferMapElementType,\n inferredTypeOfExpression,\n typeOfExpression,\n} from '../typescript/types';\n\ninterface GoLanguageContext {\n /**\n * Free floating symbols are made importable across packages by naming with a capital in Go.\n */\n isExported: boolean;\n\n /**\n * Whether type should be converted a pointer type\n */\n isPtr: boolean;\n\n /**\n * Whether this is the R-Value in an assignment expression to a pointer value.\n */\n isPtrAssignmentRValue: boolean;\n\n /**\n * Whether the current element is a parameter delcaration name.\n */\n isParameterName: boolean;\n\n /**\n * Whether context is within a struct declaration\n */\n isStruct: boolean;\n\n /**\n * Whether the context is within an interface delcaration.\n */\n isInterface: boolean;\n\n /**\n * Whether properties are being intialized within a `map` type\n */\n inMapLiteral: boolean;\n\n /**\n * Wheter to wrap a literal in a pointer constructor ie: jsii.String.\n */\n wrapPtr: boolean;\n}\n\nenum DeclarationType {\n STRUCT,\n INTERFACE,\n FUNCTION,\n BUILTIN,\n UNKNOWN,\n}\n\ntype GoRenderer = AstRenderer<GoLanguageContext>;\n\ninterface FormattedId {\n readonly type: DeclarationType;\n readonly formatted: string;\n}\nexport class GoVisitor extends DefaultVisitor<GoLanguageContext> {\n /**\n * Translation version\n *\n * Bump this when you change something in the implementation to invalidate\n * existing cached translations.\n */\n public static readonly VERSION = '1';\n\n public readonly indentChar = '\\t';\n\n public readonly language = TargetLanguage.GO;\n\n private readonly idMap = new Map<ts.Symbol | string, FormattedId>();\n\n public readonly defaultContext: GoLanguageContext = {\n isExported: false,\n isPtr: false,\n isPtrAssignmentRValue: false,\n isStruct: false,\n isInterface: false,\n isParameterName: false,\n inMapLiteral: false,\n wrapPtr: false,\n };\n\n protected override argumentList(args: readonly ts.Node[] | undefined, renderer: GoRenderer): OTree {\n return new OTree([], args ? renderer.convertAll(args) : [], {\n separator: ', ',\n });\n }\n\n public override block(node: ts.Block, renderer: GoRenderer): OTree {\n return new OTree(['{'], renderer.convertAll(node.statements), {\n indent: 1,\n suffix: renderer.mirrorNewlineBefore(node.statements[0], '}'),\n });\n }\n\n public override expressionStatement(node: ts.ExpressionStatement, renderer: GoRenderer): OTree {\n const inner = renderer.convert(node.expression);\n if (inner.isEmpty) {\n return inner;\n }\n return new OTree([inner], [], { canBreakLine: true });\n }\n\n public override functionDeclaration(node: ts.FunctionDeclaration, renderer: GoRenderer): OTree {\n const funcName = renderer.updateContext({ isExported: isExported(node) }).convert(node.name);\n const returnType = determineReturnType(renderer.typeChecker, node);\n const goType = this.renderType(node.type ?? node, returnType?.symbol, returnType, true, '', renderer);\n\n const body = node.body?.statements ? renderer.convertAll(node.body.statements) : [];\n return new OTree(\n [\n 'func ',\n funcName,\n '(',\n new OTree([], renderer.updateContext({ isPtr: true }).convertAll(node.parameters), {\n separator: ', ',\n }),\n ')',\n goType ? ' ' : '',\n goType,\n ],\n [\n new OTree(\n [' {'],\n [this.defaultArgValues(node.parameters, renderer.updateContext({ wrapPtr: true })), ...body],\n {\n indent: 1,\n suffix: '\\n}',\n },\n ),\n ],\n {\n canBreakLine: true,\n },\n );\n }\n\n public override identifier(\n node: ts.Identifier | ts.StringLiteral | ts.NoSubstitutionTemplateLiteral,\n renderer: GoRenderer,\n ) {\n const symbol = renderer.typeChecker.getSymbolAtLocation(node);\n\n // If the identifier corresponds to a renamed imported symbol, we need to use the original symbol name, qualified\n // with the import package name, since Go does not allow generalized symbol aliasing (we *could* alias types, but\n // not static functions or constructors).\n const declaration = symbol?.valueDeclaration ?? symbol?.declarations?.[0];\n if (declaration && ts.isImportSpecifier(declaration)) {\n const importInfo = analyzeImportDeclaration(declaration.parent.parent.parent, renderer);\n const packageName =\n importInfo.moduleSymbol?.sourceAssembly?.packageJson.jsii?.targets?.go?.packageName ??\n this.goName(importInfo.packageName, renderer, undefined);\n\n const importedSymbol = declaration.propertyName\n ? renderer.typeChecker.getSymbolAtLocation(declaration.propertyName)\n : symbol;\n // Note: imported members are (by nature) always exported by the module they are imported from.\n return new OTree([\n packageName,\n '.',\n this.goName(\n (declaration.propertyName ?? declaration.name).text,\n renderer.updateContext({ isExported: true }),\n importedSymbol,\n ),\n ]);\n }\n\n return new OTree([this.goName(node.text, renderer, symbol)]);\n }\n\n public override newExpression(node: ts.NewExpression, renderer: GoRenderer): OTree {\n const { classNamespace, className } = determineClassName.call(this, node.expression);\n return new OTree(\n [\n ...(classNamespace ? [classNamespace, '.'] : []),\n 'New', // Should this be \"new\" if the class is unexported?\n className,\n '(',\n ],\n renderer.updateContext({ wrapPtr: true }).convertAll(node.arguments ?? []),\n { canBreakLine: true, separator: ', ', suffix: ')' },\n );\n\n function determineClassName(this: GoVisitor, expr: ts.Expression): { classNamespace?: OTree; className: string } {\n if (ts.isIdentifier(expr)) {\n // Imported names are referred to by the original (i.e: exported) name, qualified with the source module's go\n // package name.\n const symbol = renderer.typeChecker.getSymbolAtLocation(expr);\n const declaration = symbol?.valueDeclaration ?? symbol?.declarations?.[0];\n if (declaration && ts.isImportSpecifier(declaration)) {\n const importInfo = analyzeImportDeclaration(declaration.parent.parent.parent, renderer);\n const packageName =\n importInfo.moduleSymbol?.sourceAssembly?.packageJson.jsii?.targets?.go?.packageName ??\n this.goName(importInfo.packageName, renderer, undefined);\n\n return {\n classNamespace: new OTree([packageName]),\n className: this.goName(\n (declaration.propertyName ?? declaration.name).text,\n renderer.updateContext({ isExported: true }),\n symbol,\n ),\n };\n }\n\n return { className: ucFirst(expr.text) };\n }\n if (ts.isPropertyAccessExpression(expr)) {\n if (ts.isIdentifier(expr.expression)) {\n return {\n className: ucFirst(expr.name.text),\n classNamespace: renderer.updateContext({ isExported: false }).convert(expr.expression),\n };\n } else if (\n ts.isPropertyAccessExpression(expr.expression) &&\n renderer.submoduleReferences.has(expr.expression)\n ) {\n const submodule = renderer.submoduleReferences.get(expr.expression)!;\n return {\n className: ucFirst(expr.name.text),\n classNamespace: renderer.updateContext({ isExported: false }).convert(submodule.lastNode),\n };\n }\n renderer.reportUnsupported(expr.expression, TargetLanguage.GO);\n return {\n className: ucFirst(expr.name.text),\n classNamespace: new OTree(['#error#']),\n };\n }\n renderer.reportUnsupported(expr, TargetLanguage.GO);\n return { className: expr.getText(expr.getSourceFile()) };\n }\n }\n\n public override arrayLiteralExpression(\n node: ts.ArrayLiteralExpression,\n renderer: AstRenderer<GoLanguageContext>,\n ): OTree {\n const arrayType =\n inferredTypeOfExpression(renderer.typeChecker, node) ?? renderer.typeChecker.getTypeAtLocation(node);\n const [elementType] = renderer.typeChecker.getTypeArguments(arrayType as ts.TypeReference);\n const typeName = elementType\n ? this.renderType(node, elementType.symbol, elementType, true, 'interface{}', renderer)\n : 'interface{}';\n\n return new OTree(['[]', typeName, '{'], renderer.convertAll(node.elements), {\n separator: ',',\n trailingSeparator: true,\n suffix: '}',\n indent: 1,\n });\n }\n\n public override objectLiteralExpression(node: ts.ObjectLiteralExpression, renderer: GoRenderer): OTree {\n const lit = analyzeObjectLiteral(renderer.typeChecker, node);\n\n switch (lit.kind) {\n case 'unknown':\n return this.unknownTypeObjectLiteralExpression(node, renderer);\n case 'struct':\n case 'local-struct':\n return this.knownStructObjectLiteralExpression(node, lit, renderer);\n case 'map':\n return this.keyValueObjectLiteralExpression(node, renderer);\n }\n }\n\n public override propertyAssignment(node: ts.PropertyAssignment, renderer: GoRenderer): OTree {\n const key =\n ts.isStringLiteralLike(node.name) || ts.isIdentifier(node.name)\n ? renderer.currentContext.inMapLiteral\n ? JSON.stringify(node.name.text)\n : this.goName(node.name.text, renderer, renderer.typeChecker.getSymbolAtLocation(node.name))\n : renderer.convert(node.name);\n return new OTree(\n [\n key,\n ': ',\n renderer\n .updateContext({\n // Reset isExported, as this was intended for the key name translation...\n isExported: undefined,\n // Struct member values are always pointers...\n isPtr: renderer.currentContext.isStruct,\n wrapPtr: renderer.currentContext.isStruct || renderer.currentContext.inMapLiteral,\n })\n .convert(node.initializer),\n ],\n [],\n {\n canBreakLine: true,\n },\n );\n }\n\n public override shorthandPropertyAssignment(\n node: ts.ShorthandPropertyAssignment,\n renderer: AstRenderer<GoLanguageContext>,\n ): OTree {\n const key =\n ts.isStringLiteralLike(node.name) || ts.isIdentifier(node.name)\n ? renderer.currentContext.inMapLiteral\n ? JSON.stringify(node.name.text)\n : this.goName(node.name.text, renderer, renderer.typeChecker.getSymbolAtLocation(node.name))\n : renderer.convert(node.name);\n\n const rawValue = renderer.updateContext({ wrapPtr: true, isStruct: false }).convert(node.name);\n const value = isPointerValue(renderer.typeChecker, node.name)\n ? rawValue\n : wrapPtrExpression(renderer.typeChecker, node.name, rawValue);\n\n return new OTree([key, ': ', value], [], { canBreakLine: true });\n }\n\n public override templateExpression(node: ts.TemplateExpression, renderer: AstRenderer<GoLanguageContext>): OTree {\n let template = '';\n const parameters = new Array<OTree>();\n\n if (node.head.rawText) {\n template += node.head.rawText;\n }\n\n for (const span of node.templateSpans) {\n template += '%v';\n parameters.push(renderer.convert(span.expression));\n if (span.literal.rawText) {\n template += span.literal.rawText;\n }\n }\n\n if (parameters.length === 0) {\n return new OTree([JSON.stringify(template)]);\n }\n\n return new OTree(\n ['fmt.Sprintf('],\n [\n JSON.stringify(template),\n ...parameters.reduce((list, element) => list.concat(', ', element), new Array<string | OTree>()),\n ],\n {\n canBreakLine: true,\n suffix: ')',\n },\n );\n }\n\n public override token<A extends ts.SyntaxKind>(node: ts.Token<A>, renderer: GoRenderer): OTree {\n switch (node.kind) {\n case ts.SyntaxKind.FalseKeyword:\n case ts.SyntaxKind.TrueKeyword:\n if (renderer.currentContext.wrapPtr) {\n return new OTree(['jsii.Boolean(', node.getText(), ')']);\n }\n return new OTree([node.getText()]);\n\n case ts.SyntaxKind.NullKeyword:\n case ts.SyntaxKind.UndefinedKeyword:\n return new OTree(['nil']);\n default:\n return super.token(node, renderer);\n }\n }\n\n public override unknownTypeObjectLiteralExpression(node: ts.ObjectLiteralExpression, renderer: GoRenderer): OTree {\n return this.keyValueObjectLiteralExpression(node, renderer);\n }\n\n public override keyValueObjectLiteralExpression(node: ts.ObjectLiteralExpression, renderer: GoRenderer): OTree {\n const valueType = inferMapElementType(node.properties, renderer.typeChecker);\n\n return new OTree(\n [`map[string]`, this.renderType(node, valueType?.symbol, valueType, true, `interface{}`, renderer), `{`],\n renderer.updateContext({ inMapLiteral: true, wrapPtr: true }).convertAll(node.properties),\n {\n suffix: '}',\n separator: ',',\n trailingSeparator: true,\n indent: 1,\n },\n );\n }\n\n public override knownStructObjectLiteralExpression(\n node: ts.ObjectLiteralExpression,\n structType: ObjectLiteralStruct,\n renderer: GoRenderer,\n ): OTree {\n const exported = structType.kind === 'struct';\n return new OTree(\n [\n '&',\n this.goName(\n structType.type.symbol.name,\n renderer.updateContext({ isExported: exported, isPtr: false }),\n structType.type.symbol,\n ),\n '{',\n ],\n renderer.updateContext({ isExported: exported, isStruct: true }).convertAll(node.properties),\n {\n suffix: '}',\n separator: ',',\n trailingSeparator: true,\n indent: 1,\n },\n );\n }\n\n public override asExpression(node: ts.AsExpression, renderer: AstRenderer<GoLanguageContext>): OTree {\n const jsiiType = determineJsiiType(renderer.typeChecker, renderer.typeChecker.getTypeFromTypeNode(node.type));\n switch (jsiiType.kind) {\n case 'builtIn':\n switch (jsiiType.builtIn) {\n case 'boolean':\n return new OTree(['bool(', renderer.convert(node.expression), ')'], [], { canBreakLine: true });\n case 'number':\n return new OTree(['f64(', renderer.convert(node.expression), ')'], [], { canBreakLine: true });\n case 'string':\n return new OTree(['string(', renderer.convert(node.expression), ')'], [], { canBreakLine: true });\n case 'any':\n case 'void':\n // Just return the value as-is... Everything is compatible with `interface{}`.\n return renderer.convert(node.expression);\n }\n // To make linter understand there is no fall-through here...\n throw new AssertionError({ message: 'unreachable' });\n default:\n return new OTree(\n [renderer.convert(node.expression), '.(', this.renderTypeNode(node.type, false, renderer), ')'],\n [],\n { canBreakLine: true },\n );\n }\n }\n\n public override parameterDeclaration(node: ts.ParameterDeclaration, renderer: GoRenderer): OTree {\n const nodeName = renderer.updateContext({ isParameterName: true, isPtr: false }).convert(node.name);\n const nodeType = node.dotDotDotToken ? (node.type as ts.ArrayTypeNode | undefined)?.elementType : node.type;\n const typeNode = this.renderTypeNode(nodeType, true, renderer);\n return new OTree([...(node.dotDotDotToken ? ['...'] : []), nodeName, ' ', typeNode]);\n }\n\n public override printStatement(args: ts.NodeArray<ts.Expression>, renderer: GoRenderer): OTree {\n const renderedArgs = this.argumentList(args, renderer);\n return new OTree(['fmt.Println(', renderedArgs, ')']);\n }\n\n public override propertyAccessExpression(\n node: ts.PropertyAccessExpression,\n renderer: GoRenderer,\n submoduleReference?: SubmoduleReference,\n ): OTree {\n if (submoduleReference != null) {\n return new OTree([\n renderer\n .updateContext({ isExported: false, isPtr: false, wrapPtr: false })\n .convert(submoduleReference.lastNode),\n ]);\n }\n\n const expressionType = typeOfExpression(renderer.typeChecker, node.expression);\n const valueSymbol = renderer.typeChecker.getSymbolAtLocation(node.name);\n\n const isStaticMember = valueSymbol?.valueDeclaration != null && isStatic(valueSymbol.valueDeclaration);\n const isClassStaticPropertyAccess =\n isStaticMember &&\n expressionType?.symbol?.valueDeclaration != null &&\n valueSymbol.valueDeclaration != null &&\n ts.isClassDeclaration(expressionType.symbol.valueDeclaration) &&\n (ts.isPropertyDeclaration(valueSymbol.valueDeclaration) || ts.isAccessor(valueSymbol.valueDeclaration));\n const isClassStaticMethodAccess =\n isStaticMember &&\n !isClassStaticPropertyAccess &&\n valueSymbol.valueDeclaration != null &&\n ts.isMethodDeclaration(valueSymbol.valueDeclaration);\n\n // When the expression has an unknown type (unresolved symbol), and has an upper-case first\n // letter, we assume it's a type name... In such cases, what comes after can be considered a\n // static member access. Note that the expression might be further qualified, so we check using\n // a regex that checks for the last \".\"-delimited segment if there's dots in there...\n const expressionLooksLikeTypeReference =\n expressionType.symbol == null &&\n /(?:\\.|^)[A-Z][^.]*$/.exec(node.expression.getText(node.expression.getSourceFile())) != null;\n\n // Whether the node is an enum member reference.\n const isEnumMember =\n expressionType?.symbol?.valueDeclaration != null && ts.isEnumDeclaration(expressionType.symbol.valueDeclaration);\n\n const jsiiSymbol = lookupJsiiSymbolFromNode(renderer.typeChecker, node.name);\n const isExportedTypeName = jsiiSymbol != null && jsiiSymbol.symbolType !== 'module';\n\n const delimiter =\n isEnumMember || isClassStaticPropertyAccess || isClassStaticMethodAccess || expressionLooksLikeTypeReference\n ? '_'\n : '.';\n\n return new OTree([\n renderer.convert(node.expression),\n delimiter,\n renderer\n .updateContext({\n isExported:\n isClassStaticPropertyAccess ||\n isClassStaticMethodAccess ||\n expressionLooksLikeTypeReference ||\n isEnumMember ||\n isExportedTypeName,\n })\n .convert(node.name),\n ...(isClassStaticPropertyAccess\n ? ['()']\n : // If the parent's not a call-like expression, and it's an inferred static property access, we need to put call\n // parentheses at the end, as static properties are accessed via synthetic readers.\n expressionLooksLikeTypeReference && findUp(node, ts.isCallLikeExpression) == null\n ? ['()']\n : []),\n ]);\n }\n\n public override methodSignature(node: ts.MethodSignature, renderer: AstRenderer<GoLanguageContext>): OTree {\n const type = this.renderTypeNode(node.type, true, renderer);\n return new OTree(\n [\n renderer.updateContext({ isExported: renderer.currentContext.isExported && isPublic(node) }).convert(node.name),\n '(',\n ],\n renderer.convertAll(node.parameters),\n { suffix: `) ${type}`, canBreakLine: true },\n );\n }\n\n public override propertyDeclaration(node: ts.PropertyDeclaration, renderer: AstRenderer<GoLanguageContext>): OTree {\n return new OTree(\n [\n renderer\n .updateContext({ isExported: (renderer.currentContext.isExported && isPublic(node)) || isStatic(node) })\n .convert(node.name),\n ' ',\n this.renderTypeNode(node.type, true, renderer),\n ],\n [],\n { canBreakLine: true },\n );\n }\n\n public override propertySignature(node: ts.PropertySignature, renderer: GoRenderer): OTree {\n if (renderer.currentContext.isInterface) {\n const type = this.renderTypeNode(node.type, true, renderer);\n const getter = new OTree([\n renderer.updateContext({ isExported: renderer.currentContext.isExported && isPublic(node) }).convert(node.name),\n '() ',\n type,\n ]);\n if (isReadOnly(node)) {\n return getter;\n }\n const setter = new OTree([\n '\\n',\n renderer.currentContext.isExported && isPublic(node) ? 'Set' : 'set',\n renderer.updateContext({ isExported: true }).convert(node.name),\n '(value ',\n type,\n ')',\n ]);\n return new OTree([getter, setter]);\n }\n\n return new OTree([\n '\\n',\n renderer.updateContext({ isExported: renderer.currentContext.isExported && isPublic(node) }).convert(node.name),\n ' ',\n this.renderTypeNode(node.type, renderer.currentContext.isPtr, renderer),\n ]);\n }\n\n public override regularCallExpression(node: ts.CallExpression, renderer: GoRenderer): OTree {\n return new OTree([\n renderer.convert(node.expression),\n '(',\n this.argumentList(node.arguments, renderer.updateContext({ wrapPtr: true })),\n ')',\n ]);\n }\n\n public override returnStatement(node: ts.ReturnStatement, renderer: AstRenderer<GoLanguageContext>): OTree {\n return new OTree(['return ', renderer.updateContext({ wrapPtr: true }).convert(node.expression)], [], {\n canBreakLine: true,\n });\n }\n\n public override binaryExpression(node: ts.BinaryExpression, renderer: AstRenderer<GoLanguageContext>): OTree {\n if (node.operatorToken.kind === ts.SyntaxKind.EqualsToken) {\n const symbol = symbolFor(renderer.typeChecker, node.left);\n return new OTree([\n renderer.convert(node.left),\n ' = ',\n renderer\n .updateContext({\n isPtrAssignmentRValue:\n symbol?.valueDeclaration &&\n (ts.isParameter(symbol.valueDeclaration) || ts.isPropertyDeclaration(symbol.valueDeclaration)),\n })\n .convert(node.right),\n ]);\n }\n\n const output = super.binaryExpression(node, renderer.updateContext({ wrapPtr: false, isPtr: false }));\n if (!renderer.currentContext.wrapPtr) {\n return output;\n }\n return wrapPtrExpression(renderer.typeChecker, node, output);\n }\n\n public override stringLiteral(\n node: ts.StringLiteral | ts.NoSubstitutionTemplateLiteral,\n renderer: GoRenderer,\n ): OTree {\n // Go supports backtick-delimited multi-line string literals, similar/same as JavaScript no-substitution templates.\n // We only use this trick if the literal includes actual new line characters (otherwise it just looks weird in go).\n const text =\n ts.isNoSubstitutionTemplateLiteral(node) && /[\\n\\r]/m.test(node.text)\n ? node.getText(node.getSourceFile())\n : JSON.stringify(node.text);\n\n return new OTree([`${renderer.currentContext.wrapPtr ? jsiiStr(text) : text}`]);\n }\n\n public override numericLiteral(node: ts.NumericLiteral, renderer: GoRenderer): OTree {\n const text = `${node.text}`;\n\n return new OTree([`${renderer.currentContext.wrapPtr ? jsiiNum(text) : text}`]);\n }\n\n public override classDeclaration(node: ts.ClassDeclaration, renderer: AstRenderer<GoLanguageContext>): OTree {\n const className = node.name\n ? renderer.updateContext({ isExported: isExported(node) }).convert(node.name)\n : 'anonymous';\n\n const extendsClause = node.heritageClauses?.find((clause) => clause.token === ts.SyntaxKind.ExtendsKeyword);\n const base = extendsClause && this.renderTypeNode(extendsClause.types[0], false, renderer);\n\n const properties = node.members\n .filter(ts.isPropertyDeclaration)\n .map((prop) => renderer.updateContext({ isStruct: true, isPtr: true }).convert(prop));\n\n const struct = new OTree(['type ', className, ' struct {'], [...(base ? ['\\n', base] : []), ...properties], {\n canBreakLine: true,\n suffix: properties.length > 0 ? renderer.mirrorNewlineBefore(node.members[0], '}') : '\\n}',\n indent: 1,\n });\n\n const methods = [\n node.members.length > 0\n ? // Ensure there is a blank line between thre struct and the first member, but don't put two if there's already\n // one as part of the first member's leading trivia.\n new OTree(['\\n\\n'], [], { renderOnce: `ws-${node.members[0].getFullStart()}` })\n : '',\n ...renderer.convertAll(\n node.members.filter((member) => !ts.isPropertyDeclaration(member) || (isExported(node) && !isPrivate(member))),\n ),\n ];\n\n return new OTree([struct], methods, { canBreakLine: true });\n }\n\n public override structInterfaceDeclaration(node: ts.InterfaceDeclaration, renderer: GoRenderer): OTree {\n const bases =\n node.heritageClauses?.flatMap((hc) => hc.types).map((t) => this.renderTypeNode(t, false, renderer)) ?? [];\n return new OTree(\n ['type ', renderer.updateContext({ isStruct: true }).convert(node.name), ' struct {'],\n [...bases, ...renderer.updateContext({ isStruct: true, isPtr: true }).convertAll(node.members)],\n { indent: 1, canBreakLine: true, separator: '\\n', trailingSeparator: true, suffix: '}' },\n );\n }\n\n public override regularInterfaceDeclaration(\n node: ts.InterfaceDeclaration,\n renderer: AstRenderer<GoLanguageContext>,\n ): OTree {\n if (node.members.length === 0) {\n // Erase empty interfaces as they have no bearing in Go\n return new OTree([]);\n }\n\n const symbol = renderer.typeChecker.getSymbolAtLocation(node.name);\n const name = this.goName(node.name.text, renderer.updateContext({ isExported: isExported(node) }), symbol);\n return new OTree(\n [`type ${name} interface {`],\n renderer.updateContext({ isInterface: true, isExported: isExported(node) }).convertAll(node.members),\n { indent: 1, canBreakLine: true, separator: '\\n', trailingSeparator: true, suffix: '}' },\n );\n }\n\n public override constructorDeclaration(\n node: ts.ConstructorDeclaration,\n renderer: AstRenderer<GoLanguageContext>,\n ): OTree {\n const className = node.parent.name\n ? this.goName(\n node.parent.name.text,\n renderer.updateContext({ isExported: isExported(node.parent) }),\n renderer.typeChecker.getSymbolAtLocation(node.parent.name),\n )\n : 'anonymous';\n\n const defaultArgValues = this.defaultArgValues(node.parameters, renderer);\n\n return new OTree(\n [\n 'func ',\n isExported(node.parent) ? 'New' : 'new',\n ucFirst(className),\n '(',\n new OTree([], renderer.convertAll(node.parameters), { separator: ', ' }),\n ') *',\n className,\n ' {',\n new OTree([], [defaultArgValues, '\\nthis := &', className, '{}'], {\n indent: 1,\n }),\n ],\n node.body ? renderer.convertAll(node.body.statements) : [],\n { canBreakLine: true, suffix: '\\n\\treturn this\\n}', indent: 1 },\n );\n }\n\n public override superCallExpression(node: ts.CallExpression, renderer: AstRenderer<GoLanguageContext>): OTree {\n // We're on a `super` call, so we must be extending a base class.\n const base = findUp(node, ts.isConstructorDeclaration)!.parent.heritageClauses!.find(\n (clause) => clause.token === ts.SyntaxKind.ExtendsKeyword,\n )!.types[0].expression;\n const baseConstructor = ts.isPropertyAccessExpression(base)\n ? new OTree([\n renderer.convert(base.expression),\n '.New',\n ucFirst(this.goName(base.name.text, renderer, renderer.typeChecker.getSymbolAtLocation(base.name))),\n ])\n : ts.isIdentifier(base)\n ? `new${ucFirst(this.goName(base.text, renderer, renderer.typeChecker.getSymbolAtLocation(base)))}`\n : (function () {\n renderer.reportUnsupported(node, TargetLanguage.GO);\n return renderer.convert(base);\n })();\n\n return new OTree(\n [\n baseConstructor,\n '_Override(this, ',\n this.argumentList(node.arguments, renderer.updateContext({ wrapPtr: true, isPtr: true })),\n ')',\n ],\n [],\n {\n canBreakLine: true,\n },\n );\n }\n\n public override methodDeclaration(node: ts.MethodDeclaration, renderer: AstRenderer<GoLanguageContext>): OTree {\n if (ts.isObjectLiteralExpression(node.parent)) {\n return super.methodDeclaration(node, renderer);\n }\n\n const className = node.parent.name\n ? this.goName(\n node.parent.name.text,\n renderer.updateContext({ isExported: isExported(node.parent) }),\n renderer.typeChecker.getSymbolAtLocation(node.parent.name),\n )\n : 'anonymous';\n\n const returnType = determineReturnType(renderer.typeChecker, node);\n const goReturnType =\n returnType && this.renderType(node.type ?? node, returnType.symbol, returnType, true, 'interface{}', renderer);\n\n return new OTree(\n [\n 'func (this *',\n className,\n ') ',\n renderer.updateContext({ isExported: renderer.currentContext.isExported && isPublic(node) }).convert(node.name),\n '(',\n new OTree([], renderer.convertAll(node.parameters), { separator: ', ' }),\n ') ',\n goReturnType,\n goReturnType ? ' ' : '',\n '{',\n ],\n [\n this.defaultArgValues(node.parameters, renderer),\n ...(node.body ? renderer.convertAll(node.body.statements) : []),\n ],\n { canBreakLine: true, suffix: node.body && node.body.statements.length > 0 ? '\\n}' : '}', indent: 1 },\n );\n }\n\n public override ifStatement(node: ts.IfStatement, renderer: AstRenderer<GoLanguageContext>): OTree {\n const [ifPrefix, ifSuffix, ifIndent] = ts.isBlock(node.thenStatement) ? [' '] : [' {\\n', '\\n}', 1];\n const ifStmt = new OTree(\n ['if ', renderer.convert(node.expression)],\n [ifPrefix, renderer.convert(node.thenStatement)],\n {\n canBreakLine: true,\n suffix: ifSuffix,\n indent: ifIndent,\n },\n );\n if (!node.elseStatement) {\n return ifStmt;\n }\n\n const [elsePrefix, elseSuffix, elseIndent] = ts.isBlock(node.elseStatement) ? [' '] : [' {\\n', '\\n}', 1];\n const elseStmt = new OTree(['else'], [elsePrefix, renderer.convert(node.elseStatement)], {\n canBreakLine: true,\n suffix: elseSuffix,\n indent: elseIndent,\n });\n\n return new OTree([], [ifStmt, elseStmt], {\n separator: ' ',\n canBreakLine: true,\n });\n }\n\n public override forOfStatement(node: ts.ForOfStatement, renderer: AstRenderer<GoLanguageContext>): OTree {\n const [prefix, suffix, indent] = ts.isBlock(node.statement) ? [' '] : [' {\\n', '\\n}', 1];\n return new OTree(\n ['for _, ', nameOf(node.initializer), ' := range ', renderer.convert(node.expression)],\n [prefix, renderer.convert(node.statement)],\n { canBreakLine: true, suffix, indent },\n );\n\n function nameOf(decl: ts.ForInitializer | ts.Declaration): string | OTree {\n if (ts.isVariableDeclarationList(decl)) {\n if (decl.declarations.length !== 1) {\n renderer.reportUnsupported(decl.declarations[1], TargetLanguage.GO);\n }\n return nameOf(decl.declarations[0]);\n }\n if (ts.isVariableDeclaration(decl)) {\n return decl.name.getText(decl.name.getSourceFile());\n }\n renderer.reportUnsupported(decl, TargetLanguage.GO);\n return renderer.convert(decl);\n }\n }\n\n public override importStatement(node: ImportStatement, renderer: AstRenderer<GoLanguageContext>): OTree {\n const packageName =\n node.moduleSymbol?.sourceAssembly?.packageJson.jsii?.targets?.go?.packageName ??\n node.packageName\n // Special case namespaced npm package names, so they are mangled the same way pacmak does.\n .replace(/@([a-z0-9_-]+)\\/([a-z0-9_-])/, '$1$2')\n .split('/')\n .map((txt) => this.goName(txt, renderer, undefined))\n .filter((txt) => txt !== '')\n .join('/');\n const moduleName = node.moduleSymbol?.sourceAssembly?.packageJson.jsii?.targets?.go?.moduleName\n ? `${node.moduleSymbol.sourceAssembly.packageJson.jsii.targets.go.moduleName}/${packageName}`\n : `github.com/aws-samples/dummy/${packageName}`;\n\n if (node.imports.import === 'full') {\n // We don't emit the alias if it matches the last path segment (conventionally this is the package name)\n const maybeAlias = node.imports.alias ? `${this.goName(node.imports.alias, renderer, undefined)} ` : '';\n\n return new OTree([`import ${maybeAlias}${JSON.stringify(moduleName)}`], undefined, { canBreakLine: true });\n }\n\n if (node.imports.elements.length === 0) {\n // This is a blank import (for side-effects only)\n return new OTree([`import _ ${JSON.stringify(moduleName)}`], undefined, { canBreakLine: true });\n }\n\n return new OTree([`import ${JSON.stringify(moduleName)}`], undefined, { canBreakLine: true });\n }\n\n public override variableDeclaration(node: ts.VariableDeclaration, renderer: AstRenderer<GoLanguageContext>): OTree {\n if (!node.initializer) {\n return new OTree([\n 'var ',\n renderer.updateContext({ isExported: isExported(node) }).convert(node.name),\n ' ',\n this.renderTypeNode(node.type, false, renderer) || 'interface{}',\n ]);\n }\n\n return new OTree([\n renderer.updateContext({ isExported: false }).convert(node.name),\n ' := ',\n renderer.convert(node.initializer),\n ]);\n }\n\n private defaultArgValues(params: ts.NodeArray<ts.ParameterDeclaration>, renderer: GoRenderer) {\n return new OTree(\n params.reduce((accum: OTree[], param) => {\n if (!param.initializer) {\n return accum;\n }\n\n const name = renderer.updateContext({ isPtr: true }).convert(param.name);\n return [\n ...accum,\n new OTree(\n ['\\n', 'if ', name, ' == nil {'],\n ['\\n', name, ' = ', renderer.updateContext({ wrapPtr: true }).convert(param.initializer)],\n {\n indent: 1,\n suffix: '\\n}',\n },\n ),\n ];\n }, []),\n );\n }\n\n public mergeContext(old: GoLanguageContext, update: Partial<GoLanguageContext>): GoLanguageContext {\n return Object.assign({}, old, update);\n }\n\n private renderTypeNode(typeNode: ts.TypeNode | undefined, isPtr: boolean, renderer: GoRenderer): string {\n if (!typeNode) {\n return '';\n }\n return this.renderType(\n typeNode,\n renderer.typeChecker.getTypeFromTypeNode(typeNode).symbol,\n renderer.typeOfType(typeNode),\n isPtr,\n renderer.textOf(typeNode),\n renderer,\n );\n }\n\n private renderType(\n typeNode: ts.Node,\n typeSymbol: ts.Symbol | undefined,\n type: ts.Type | undefined,\n isPtr: boolean,\n fallback: string,\n renderer: GoRenderer,\n ): string {\n if (type === undefined) {\n return fallback;\n }\n\n const jsiiType = determineJsiiType(renderer.typeChecker, type);\n\n const doRender = (jType: JsiiType, asPtr: boolean, typeSym: ts.Symbol | undefined): string => {\n const prefix = asPtr ? '*' : '';\n switch (jType.kind) {\n case 'unknown':\n return fallback;\n case 'error':\n renderer.report(typeNode, jType.message);\n return fallback;\n case 'map':\n return `map[string]${doRender(jType.elementType, true, jType.elementTypeSymbol)}`;\n case 'list':\n return `[]${doRender(jType.elementType, true, jType.elementTypeSymbol)}`;\n case 'namedType':\n return this.goName(jType.name, renderer, typeSym);\n case 'builtIn':\n switch (jType.builtIn) {\n case 'boolean':\n return `${prefix}bool`;\n case 'number':\n return `${prefix}f64`;\n case 'string':\n return `${prefix}string`;\n case 'any':\n return 'interface{}';\n case 'void':\n return '';\n }\n }\n };\n\n return doRender(jsiiType, isPtr, typeSymbol);\n }\n\n /**\n * Guess an item's go name based on it's TS name and context\n */\n private goName(input: string, renderer: GoRenderer, symbol: ts.Symbol | undefined) {\n let text = input.replace(/[^a-z0-9_]/gi, '');\n const prev = this.idMap.get(symbol ?? input) ?? this.idMap.get(input);\n\n if (prev) {\n // If an identifier has been renamed go get it\n text = prev.formatted;\n } else if (renderer.currentContext.isExported && !renderer.currentContext.inMapLiteral) {\n // Uppercase exported and public symbols/members\n text = ucFirst(text);\n } else if (!renderer.currentContext.inMapLiteral) {\n // Lowercase unexported items that are capitalized in TS like structs/interfaces/classes\n text = lcFirst(text);\n }\n\n text = prefixReserved(text);\n\n if (text !== input && prev == null) {\n this.idMap.set(symbol ?? input, { formatted: text, type: getDeclarationType(renderer.currentContext) });\n }\n\n if (\n // Non-pointer references to parameters need to be de-referenced\n (!renderer.currentContext.isPtr &&\n !renderer.currentContext.isParameterName &&\n symbol?.valueDeclaration?.kind === ts.SyntaxKind.Parameter &&\n !renderer.currentContext.isPtrAssignmentRValue) ||\n // Pointer reference to non-interfaces are prefixed with *\n (renderer.currentContext.isPtr && prev && prev?.type !== DeclarationType.INTERFACE)\n ) {\n return `*${text}`;\n }\n return text;\n }\n}\n\n/**\n * Uppercase the first letter\n */\nfunction ucFirst(x: string) {\n return x.substring(0, 1).toUpperCase() + x.substring(1);\n}\n\n/**\n * Lowercase the first letter\n */\nfunction lcFirst(x: string) {\n return x.substring(0, 1).toLowerCase() + x.substring(1);\n}\n\nfunction wrapPtrExpression(typeChecker: ts.TypeChecker, node: ts.Expression, unwrapped: OTree): OTree {\n const type = typeOfExpression(typeChecker, node);\n const jsiiType = determineJsiiType(typeChecker, type);\n if (jsiiType.kind !== 'builtIn') {\n return unwrapped;\n }\n switch (jsiiType.builtIn) {\n case 'boolean':\n return new OTree(['jsii.Boolean(', unwrapped, ')']);\n case 'number':\n return new OTree(['jsii.Number(', unwrapped, ')']);\n case 'string':\n return new OTree(['jsii.String(', unwrapped, ')']);\n case 'any':\n case 'void':\n return unwrapped;\n }\n}\n\n/**\n * Wrap a string literal in the jsii.String helper\n */\nfunction jsiiStr(x: string) {\n return `jsii.String(${x})`;\n}\n\n/**\n * Wrap a string literal in the jsii.String helper\n */\nfunction jsiiNum(x: string) {\n return `jsii.Number(${x})`;\n}\n\n/**\n * Prefix reserved word identifiers with _\n */\nfunction prefixReserved(x: string) {\n if (['struct'].includes(x)) {\n return `${x}_`;\n }\n return x;\n}\n\nfunction getDeclarationType(ctx: GoLanguageContext) {\n if (ctx.isStruct) {\n return DeclarationType.STRUCT;\n }\n\n return DeclarationType.UNKNOWN;\n}\n\nfunction findUp<T extends ts.Node>(node: ts.Node, predicate: (node: ts.Node) => node is T): T | undefined {\n if (predicate(node)) {\n return node;\n }\n if (node.parent == null) {\n return undefined;\n }\n return findUp(node.parent, predicate);\n}\n\nfunction symbolFor(typeChecker: ts.TypeChecker, node: ts.Node): ts.Symbol | undefined {\n if (ts.isIdentifier(node)) {\n return typeChecker.getSymbolAtLocation(node);\n }\n if (ts.isPropertyAccessExpression(node)) {\n return typeChecker.getSymbolAtLocation(node.name);\n }\n // I don't know 🤷🏻♂️\n return undefined;\n}\n\n/**\n * Checks whether the provided node corresponds to a pointer-value.\n *\n * NOTE: This currently only checkes for parameter declarations. This is\n * presently used only to determine whether a variable reference needs to be\n * wrapped or not (i.e: \"jsii.String(varStr)\"), and parameter references are the\n * only \"always pointer\" values possible in that particular context.\n *\n * @param typeChecker a TypeChecker to use to resolve the node's symbol.\n * @param node the node to be checked.\n *\n * @returns true if the node corresponds to a pointer-value.\n */\nfunction isPointerValue(typeChecker: ts.TypeChecker, node: ts.Node): boolean {\n const symbol = typeChecker.getSymbolAtLocation(node);\n if (symbol == null) {\n // Can't find symbol, assuming it's a pointer...\n return true;\n }\n\n const declaration = symbol.valueDeclaration;\n if (declaration == null) {\n // Doesn't have declaration, assuming it's a pointer...\n return true;\n }\n\n // Now check if this is known pointer kind or not....\n return ts.isParameter(node);\n}\n"]}
|
package/lib/languages/index.d.ts
CHANGED
package/lib/languages/index.js
CHANGED
|
@@ -8,19 +8,19 @@ const python_1 = require("./python");
|
|
|
8
8
|
const target_language_1 = require("./target-language");
|
|
9
9
|
Object.defineProperty(exports, "TargetLanguage", { enumerable: true, get: function () { return target_language_1.TargetLanguage; } });
|
|
10
10
|
exports.TARGET_LANGUAGES = {
|
|
11
|
-
|
|
11
|
+
[target_language_1.TargetLanguage.PYTHON]: {
|
|
12
12
|
version: python_1.PythonVisitor.VERSION,
|
|
13
13
|
createVisitor: () => new python_1.PythonVisitor(),
|
|
14
14
|
},
|
|
15
|
-
|
|
15
|
+
[target_language_1.TargetLanguage.CSHARP]: {
|
|
16
16
|
version: csharp_1.CSharpVisitor.VERSION,
|
|
17
17
|
createVisitor: () => new csharp_1.CSharpVisitor(),
|
|
18
18
|
},
|
|
19
|
-
|
|
19
|
+
[target_language_1.TargetLanguage.JAVA]: {
|
|
20
20
|
version: java_1.JavaVisitor.VERSION,
|
|
21
21
|
createVisitor: () => new java_1.JavaVisitor(),
|
|
22
22
|
},
|
|
23
|
-
|
|
23
|
+
[target_language_1.TargetLanguage.GO]: {
|
|
24
24
|
version: go_1.GoVisitor.VERSION,
|
|
25
25
|
createVisitor: () => new go_1.GoVisitor(),
|
|
26
26
|
},
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/languages/index.ts"],"names":[],"mappings":";;;AAAA,qCAAyC;AACzC,6BAAiC;AACjC,iCAAqC;AACrC,qCAAyC;AACzC,uDAAmD;AAG1C,+FAHA,gCAAc,OAGA;AAOV,QAAA,gBAAgB,GAAgD;IAC3E,CAAC,gCAAc,CAAC,MAAM,CAAC,EAAE;QACvB,OAAO,EAAE,sBAAa,CAAC,OAAO;QAC9B,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI,sBAAa,EAAE;KACzC;IACD,CAAC,gCAAc,CAAC,MAAM,CAAC,EAAE;QACvB,OAAO,EAAE,sBAAa,CAAC,OAAO;QAC9B,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI,sBAAa,EAAE;KACzC;IACD,CAAC,gCAAc,CAAC,IAAI,CAAC,EAAE;QACrB,OAAO,EAAE,kBAAW,CAAC,OAAO;QAC5B,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI,kBAAW,EAAE;KACvC;IACD,CAAC,gCAAc,CAAC,EAAE,CAAC,EAAE;QACnB,OAAO,EAAE,cAAS,CAAC,OAAO;QAC1B,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI,cAAS,EAAE;KACrC;CACF,CAAC","sourcesContent":["import { CSharpVisitor } from './csharp';\nimport { GoVisitor } from './go';\nimport { JavaVisitor } from './java';\nimport { PythonVisitor } from './python';\nimport { TargetLanguage } from './target-language';\nimport { AstHandler } from '../renderer';\n\nexport { TargetLanguage };\n\nexport interface VisitorFactory {\n readonly version: string;\n createVisitor(): AstHandler<any>;\n}\n\nexport const TARGET_LANGUAGES: { [key in TargetLanguage]: VisitorFactory } = {\n [TargetLanguage.PYTHON]: {\n version: PythonVisitor.VERSION,\n createVisitor: () => new PythonVisitor(),\n },\n [TargetLanguage.CSHARP]: {\n version: CSharpVisitor.VERSION,\n createVisitor: () => new CSharpVisitor(),\n },\n [TargetLanguage.JAVA]: {\n version: JavaVisitor.VERSION,\n createVisitor: () => new JavaVisitor(),\n },\n [TargetLanguage.GO]: {\n version: GoVisitor.VERSION,\n createVisitor: () => new GoVisitor(),\n },\n};\n"]}
|
package/lib/languages/java.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import * as ts from 'typescript';
|
|
2
|
+
import { DefaultVisitor } from './default';
|
|
2
3
|
import { ObjectLiteralStruct } from '../jsii/jsii-types';
|
|
3
4
|
import { TargetLanguage } from '../languages/target-language';
|
|
4
5
|
import { OTree } from '../o-tree';
|
|
5
6
|
import { AstRenderer } from '../renderer';
|
|
6
7
|
import { SubmoduleReference } from '../submodule-reference';
|
|
7
8
|
import { ImportStatement } from '../typescript/imports';
|
|
8
|
-
import { DefaultVisitor } from './default';
|
|
9
9
|
interface JavaContext {
|
|
10
10
|
/**
|
|
11
11
|
* Whether to ignore the left-hand part of a property access expression.
|
|
@@ -78,7 +78,7 @@ interface InsideTypeDeclaration {
|
|
|
78
78
|
*/
|
|
79
79
|
readonly isInterface?: boolean;
|
|
80
80
|
}
|
|
81
|
-
|
|
81
|
+
type JavaRenderer = AstRenderer<JavaContext>;
|
|
82
82
|
export declare class JavaVisitor extends DefaultVisitor<JavaContext> {
|
|
83
83
|
/**
|
|
84
84
|
* Translation version
|
package/lib/languages/java.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.JavaVisitor = void 0;
|
|
4
4
|
const ts = require("typescript");
|
|
5
|
+
const default_1 = require("./default");
|
|
5
6
|
const jsii_types_1 = require("../jsii/jsii-types");
|
|
6
7
|
const jsii_utils_1 = require("../jsii/jsii-utils");
|
|
7
8
|
const packages_1 = require("../jsii/packages");
|
|
@@ -10,7 +11,6 @@ const o_tree_1 = require("../o-tree");
|
|
|
10
11
|
const ast_utils_1 = require("../typescript/ast-utils");
|
|
11
12
|
const types_1 = require("../typescript/types");
|
|
12
13
|
const util_1 = require("../util");
|
|
13
|
-
const default_1 = require("./default");
|
|
14
14
|
class JavaVisitor extends default_1.DefaultVisitor {
|
|
15
15
|
constructor() {
|
|
16
16
|
super(...arguments);
|
|
@@ -514,7 +514,7 @@ class JavaVisitor extends default_1.DefaultVisitor {
|
|
|
514
514
|
// the body is the call to the next overload
|
|
515
515
|
this.renderBlock([
|
|
516
516
|
new o_tree_1.OTree(['\n', callExpr, '('], [
|
|
517
|
-
...parametersUpToIth.map((
|
|
517
|
+
...parametersUpToIth.map((p) => renderer.convert(p.name)),
|
|
518
518
|
param.initializer ? renderer.convert(param.initializer) : 'null',
|
|
519
519
|
], {
|
|
520
520
|
separator: ', ',
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"java.js","sourceRoot":"","sources":["../../src/languages/java.ts"],"names":[],"mappings":";;;AAAA,iCAAiC;AAEjC,uCAA2C;AAC3C,mDAA4G;AAC5G,mDAA2E;AAC3E,+CAAuD;AACvD,kEAA8D;AAC9D,sCAA6C;AAG7C,uDAA2G;AAE3G,+CAAgG;AAChG,kCAA0C;AAsF1C,MAAa,WAAY,SAAQ,wBAA2B;IAA5D;;QASE;;;;WAIG;QACc,yBAAoB,GAAG,IAAI,GAAG,EAAU,CAAC;QAE1C,aAAQ,GAAG,gCAAc,CAAC,IAAI,CAAC;QAC/B,mBAAc,GAAG,EAAE,CAAC;IA4tBtC,CAAC;IA1tBQ,YAAY,CAAC,GAAgB,EAAE,MAA4B;QAChE,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IAEe,eAAe,CAAC,eAAgC;QAC9D,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAC7E,IAAI,eAAe,CAAC,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE;YAC7C,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAClE,MAAM,SAAS,GAAG,IAAA,WAAI,EAAC,eAAe,CAAC,YAAY,EAAE,YAAY,CAAC,IAAI,gBAAgB,CAAC;YAEvF,OAAO,IAAI,cAAK,CAAC,CAAC,UAAU,SAAS,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;SAC1E;QAED,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACzD,MAAM,GAAG,GAAG,IAAA,WAAI,EAAC,CAAC,CAAC,cAAc,EAAE,YAAY,CAAC,IAAI,GAAG,gBAAgB,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;YAE1F,4FAA4F;YAC5F,4FAA4F;YAC5F,sDAAsD;YACtD,OAAO,CAAC,CAAC,CAAC,cAAc,EAAE,UAAU,IAAI,IAAI;gBAC1C,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;gBACnE,CAAC,CAAC,cAAc,EAAE,UAAU,KAAK,QAAQ;gBACzC,CAAC,CAAC,UAAU,GAAG,KAAK;gBACpB,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,QAAQ;aAChD,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,cAAc,EAAE,UAAU,KAAK,QAAQ,CAAC;aAC1D,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAA,gBAAS,EAAC,IAAI,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC;QAEjD,OAAO,IAAI,cAAK,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzE,CAAC;IAEe,gBAAgB,CAAC,IAAyB,EAAE,QAAsB;QAChF,OAAO,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACrD,CAAC;IAEe,0BAA0B,CAAC,IAA6B,EAAE,QAAsB;QAC9F,sFAAsF;QACtF,uCAAuC;QACvC,wFAAwF;QACxF,kBAAkB;QAClB,2FAA2F;QAC3F,iCAAiC;QAEjC,OAAO,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACrD,CAAC;IAEe,2BAA2B,CAAC,IAA6B,EAAE,QAAsB;QAC/F,OAAO,IAAI,cAAK,CACd;YACE,SAAS;YACT,YAAY;YACZ,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YAC3B,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;YACnF,IAAI;SACL,EACD,QAAQ;aACL,aAAa,CAAC;YACb,qBAAqB,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE;SAClE,CAAC;aACD,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAC3B;YACE,MAAM,EAAE,CAAC;YACT,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE,KAAK;SACd,CACF,CAAC;IACJ,CAAC;IAEe,iBAAiB,CAAC,IAA0B,EAAE,QAAsB;QAClF,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACxE,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEjD,MAAM,OAAO,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,qBAAqB,EAAE,WAAW,CAAC;QAC5E,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAErC,MAAM,KAAK,GAAG,OAAO;YACnB,CAAC,CAAC,IAAI,cAAK,CAAC,EAAE,EAAE,CAAC,UAAU,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,CAAC,EAAE;gBAChE,YAAY,EAAE,IAAI;aACnB,CAAC;YACJ,CAAC,CAAC,kBAAS,CAAC;QAEd,MAAM,MAAM,GAAG,IAAI,cAAK,CACtB,EAAE,EACF;YACE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAS;YAC/B,YAAY;YACZ,GAAG;YACH,MAAM,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,QAAQ,EAAE;YAC3D,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,cAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAS;SACjG,EACD;YACE,YAAY,EAAE,IAAI;SACnB,CACF,CAAC;QAEF,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,IAAA,sBAAU,EAAC,IAAI,CAAC,CAAC;QAE/C,MAAM,MAAM,GAAG,SAAS;YACtB,CAAC,CAAC,IAAI,cAAK,CACP,EAAE,EACF;gBACE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAS;gBAC/B,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,qBAAsB,CAAC,QAAQ,CAAC;gBACzE,GAAG;gBACH,YAAY;gBACZ,GAAG;gBACH,YAAY;gBACZ,GAAG;gBACH,YAAY;gBACZ,IAAI,QAAQ,EAAE;gBACd,OAAO;oBACL,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;wBACf,IAAI,cAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC;wBACpE,IAAI,cAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC;qBACpC,CAAC;oBACJ,CAAC,CAAC,kBAAS;aACd,EACD;gBACE,YAAY,EAAE,IAAI;aACnB,CACF;YACH,CAAC,CAAC,kBAAS,CAAC;QAEd,OAAO,IAAI,cAAK,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE;YAC5C,YAAY,EAAE,IAAI;YAClB,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;IAEe,mBAAmB,CAAC,IAA4B,EAAE,QAAsB;QACtF,MAAM,GAAG,GAAG,IAAA,sBAAU,EAAC,IAAI,CAAC,CAAC;QAE7B,OAAO,IAAI,cAAK,CACd;YACE,GAAG;YACH,IAAA,sBAAU,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;YAChC,GAAG;YACH,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC;YAClD,GAAG;YACH,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YAC3B,GAAG;SACJ,EACD,EAAE,EACF;YACE,YAAY,EAAE,IAAI;SACnB,CACF,CAAC;IACJ,CAAC;IAEe,sBAAsB,CAAC,IAA+B,EAAE,QAAsB;QAC5F,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,qBAAsB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAClH,CAAC;IAEe,iBAAiB,CAAC,IAA0B,EAAE,QAAsB;QAClF,MAAM,OAAO,GAAG,IAAA,2BAAmB,EAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3G,CAAC;IAEe,mBAAmB,CAAC,IAA4B,EAAE,QAAsB;QACtF,MAAM,OAAO,GAAG,IAAA,2BAAmB,EAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3G,CAAC;IAEe,eAAe,CAAC,IAAwB,EAAE,QAAsB;QAC9E,OAAO,IAAI,cAAK,CACd;YACE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC;YAChD,GAAG;YACH,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YAC3B,GAAG;YACH,IAAI,cAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;gBAClD,SAAS,EAAE,IAAI;aAChB,CAAC;YACF,IAAI;SACL,EACD,EAAE,EACF,EAAE,YAAY,EAAE,IAAI,EAAE,CACvB,CAAC;IACJ,CAAC;IAEe,oBAAoB,CAAC,IAA6B,EAAE,QAAsB;QACxF,IAAI,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC5D,IAAI,IAAI,CAAC,cAAc,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACtD,0GAA0G;YAC1G,YAAY,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;SAClD;QAED,OAAO,IAAI,cAAK,CAAC,CAAC,YAAY,EAAE,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACrE,CAAC;IAEe,KAAK,CAAC,IAAc,EAAE,QAAsB;QAC1D,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAChE,CAAC;IAEe,mBAAmB,CAAC,IAA4B,EAAE,QAAsB;QACtF,IAAI,QAAQ,GAAG,QAAQ,CAAC;QACxB,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;SAChC;QACD,MAAM,IAAI,GACR,CAAC,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,CAAC,IAAI,CAAC,WAAW,IAAI,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAEpE,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QAEvF,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,OAAO,IAAI,cAAK,CAAC,CAAC,YAAY,EAAE,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;SAC7E;QAED,OAAO,IAAI,cAAK,CACd;YACE,YAAY;YACZ,GAAG;YACH,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YAC3B,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACxE,GAAG;SACJ,EACD,EAAE,EACF;YACE,YAAY,EAAE,IAAI;SACnB,CACF,CAAC;IACJ,CAAC;IAEe,mBAAmB,CAAC,IAA4B,EAAE,QAAsB;QACtF,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChD,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,cAAK,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;IACrF,CAAC;IAEe,WAAW,CAAC,IAAoB,EAAE,QAAsB;QACtE,MAAM,MAAM,GAAG,IAAI,cAAK,CACtB,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,EACjD,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EACtC;YACE,YAAY,EAAE,IAAI;SACnB,CACF,CAAC;QACF,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa;YACjC,CAAC,CAAC,IAAI,cAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE;gBAC3D,YAAY,EAAE,IAAI;aACnB,CAAC;YACJ,CAAC,CAAC,SAAS,CAAC;QAEd,OAAO,QAAQ;YACb,CAAC,CAAC,IAAI,cAAK,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE;gBAChC,SAAS,EAAE,GAAG;gBACd,YAAY,EAAE,IAAI;aACnB,CAAC;YACJ,CAAC,CAAC,MAAM,CAAC;IACb,CAAC;IAEe,cAAc,CAAC,IAAuB,EAAE,QAAsB;QAC5E,8DAA8D;QAC9D,IAAI,YAAY,GAAG,KAAK,CAAC;QAEzB,IAAA,oBAAQ,EACN,IAAI,CAAC,WAAW,EAChB,IAAA,sBAAU,EAAC,EAAE,CAAC,UAAU,CAAC,uBAAuB,EAAE,IAAA,sBAAU,EAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,EACvG,CAAC,QAAQ,EAAE,EAAE;YACX,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpD,CAAC,CACF,CAAC;QAEF,OAAO,IAAI,cAAK,CACd,CAAC,cAAc,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,EAC9E,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAClC;YACE,YAAY,EAAE,IAAI;SACnB,CACF,CAAC;IACJ,CAAC;IAEe,cAAc,CAAC,IAAiC,EAAE,QAAsB;QACtF,OAAO,IAAI,cAAK,CAAC;YACf,qBAAqB;YACrB,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,cAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;YAC9G,GAAG;SACJ,CAAC,CAAC;IACL,CAAC;IAEe,kBAAkB,CAAC,IAA2B,EAAE,QAAsB;QACpF,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,MAAM,UAAU,GAAG,IAAI,KAAK,EAAS,CAAC;QAEtC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACrB,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;SAC/B;QAED,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE;YACrC,QAAQ,IAAI,IAAI,CAAC;YACjB,UAAU,CAAC,IAAI,CACb,QAAQ;iBACL,aAAa,CAAC;gBACb,uBAAuB,EAAE,IAAI;gBAC7B,kBAAkB,EAAE,KAAK;aAC1B,CAAC;iBACD,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAC5B,CAAC;YACF,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;gBACxB,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;aAClC;SACF;QAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;YAC3B,OAAO,IAAI,cAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAA,8BAAkB,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;SAClE;QAED,OAAO,IAAI,cAAK,CAAC;YACf,gBAAgB;YAChB,IAAI,IAAA,8BAAkB,EAAC,QAAQ,CAAC;gBAC9B,4FAA4F;iBAC3F,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG;YAC1B,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,IAAI,KAAK,EAAkB,CAAC;YAChG,GAAG;SACJ,CAAC,CAAC;IACL,CAAC;IAEe,YAAY,CAAC,IAAqB,EAAE,QAAsB;QACxE,OAAO,IAAI,cAAK,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACtH,CAAC;IAEe,sBAAsB,CAAC,IAA+B,EAAE,QAAsB;QAC5F,OAAO,IAAI,cAAK,CAAC,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YACjE,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,GAAG;YACX,MAAM,EAAE,CAAC;SACV,CAAC,CAAC;IACL,CAAC;IAEe,qBAAqB,CAAC,IAAuB,EAAE,QAAsB;QACnF,OAAO,IAAI,cAAK,CAAC;YACf,QAAQ,CAAC,aAAa,CAAC,EAAE,uBAAuB,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;YACnF,GAAG;YACH,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC;YAC3C,GAAG;SACJ,CAAC,CAAC;IACL,CAAC;IAEe,aAAa,CAAC,IAAsB,EAAE,QAAsB;QAC1E,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAU,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE7E,yDAAyD;QACzD,gFAAgF;QAChF,2EAA2E;QAC3E,4EAA4E;QAE5E,MAAM,cAAc,GAAG,OAAO,IAAI,EAAE,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9F,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,IAAI,OAAO,IAAI,EAAE,CAAC,yBAAyB,CAAC,OAAO,CAAC,EAAE;YACpD,MAAM,QAAQ,GAAG,IAAA,iCAAoB,EAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACrE,aAAa,GAAG,QAAQ,CAAC,IAAI,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC;SAC3E;QAED,MAAM,SAAS,GAAG,QAAQ;aACvB,aAAa,CAAC;YACb,qBAAqB,EAAE,IAAI;YAC3B,uBAAuB,EAAE,KAAK;SAC/B,CAAC;aACD,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE5B,IAAI,aAAa,EAAE;YACjB,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAU,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;YAClE,OAAO,IAAI,cAAK,CACd,EAAE,EACF;gBACE,SAAS;gBACT,kBAAkB;gBAClB,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,QAAQ,CAAC;gBAC7C,GAAG;gBACH,GAAG,QAAQ,CAAC,UAAU,CAAC,cAAe,CAAC,UAAU,CAAC;gBAClD,IAAI,cAAK,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,cAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;aACvF,EACD,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAClC,CAAC;SACH;QAED,OAAO,IAAI,cAAK,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,EAAE;YAC/F,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;IACL,CAAC;IAEe,kCAAkC,CAAC,IAAgC,EAAE,QAAsB;QACzG,OAAO,QAAQ,CAAC,cAAc,CAAC,mCAAmC;YAChE,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,IAAI,EAAE,QAAQ,CAAC;YACnD,CAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC3D,CAAC;IAEe,+BAA+B,CAAC,IAAgC,EAAE,QAAsB;QACtG,OAAO,IAAI,cAAK,CAAC,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,aAAa,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YAC1G,MAAM,EAAE,GAAG;YACX,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,CAAC;SACV,CAAC,CAAC;IACL,CAAC;IAEe,kCAAkC,CAChD,IAAgC,EAChC,UAA+B,EAC/B,QAAsB;QAEtB,kFAAkF;QAClF,2EAA2E;QAC3E,0CAA0C;QAC1C,IAAI,QAAQ,CAAC,cAAc,CAAC,mCAAmC,EAAE;YAC/D,OAAO,IAAI,cAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;SAC3E;QAED,8EAA8E;QAC9E,uBAAuB;QACvB,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC;QAEtD,OAAO,IAAI,cAAK,CACd,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,EACtG;YACE,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;YACvC,IAAI,cAAK,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SAC9F,EACD;YACE,MAAM,EAAE,CAAC;SACV,CACF,CAAC;IACJ,CAAC;IAEe,kBAAkB,CAAC,IAA2B,EAAE,QAAsB;QACpF,OAAO,QAAQ,CAAC,cAAc,CAAC,cAAc;YAC3C,CAAC,CAAC,IAAI,CAAC,gDAAgD,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;YAC9F,CAAC,CAAC,IAAI,CAAC,sDAAsD,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACzG,CAAC;IAEe,2BAA2B,CAAC,IAAoC,EAAE,QAAsB;QACtG,OAAO,QAAQ,CAAC,cAAc,CAAC,cAAc;YAC3C,CAAC,CAAC,IAAI,CAAC,gDAAgD,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;YACvF,CAAC,CAAC,IAAI,CAAC,sDAAsD,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAClG,CAAC;IAEe,wBAAwB,CACtC,IAAiC,EACjC,QAAsB,EACtB,YAA4C;QAE5C,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,6GAA6G;QAC7G,IAAI,YAAY,IAAI,IAAI,EAAE;YACxB,OAAO,aAAa,CAAC;SACtB;QAED,IAAI,KAAwC,CAAC;QAE7C,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEtD,mFAAmF;QACnF,IAAI,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,QAAQ,CAAC,cAAc,CAAC,qBAAqB,EAAE;YAChG,KAAK,GAAG,CAAC,aAAa,CAAC,CAAC;SACzB;aAAM,IAAI,YAAY,KAAK,MAAM,EAAE;YAClC,6DAA6D;YAC7D,KAAK,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC;SACtC;aAAM;YACL,IAAI,eAAe,GAAG,QAAQ,CAAC,cAAc,CAAC,uBAAuB,KAAK,KAAK,CAAC;YAEhF,wFAAwF;YACxF,IAAI,IAAA,oBAAY,EAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE;gBAC5C,eAAe,GAAG,KAAK,CAAC;aACzB;YACD,IAAI,IAAA,8BAAsB,EAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE;gBACtD,eAAe,GAAG,KAAK,CAAC;aACzB;YAED,+FAA+F;YAC/F,MAAM,qBAAqB,GAAG,eAAe,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC;YAErG,kFAAkF;YAClF,KAAK,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,qBAAqB,CAAC,CAAC;SACzE;QAED,OAAO,IAAI,cAAK,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAEe,aAAa,CAC3B,IAAyD,EACzD,QAAsB;QAEtB,IAAI,QAAQ,CAAC,cAAc,CAAC,yBAAyB,EAAE;YACrD,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;SACxC;QACD,4FAA4F;QAC5F,OAAO,IAAI,cAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACtE,CAAC;IAEe,UAAU,CACxB,IAAyE,EACzE,QAAsB;QAEtB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;QAC3B,OAAO,IAAI,cAAK,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvG,CAAC;IAEO,4BAA4B,CAAC,IAAgC,EAAE,QAAsB;QAC3F,OAAO,IAAI,cAAK,CACd,EAAE,EACF;YACE,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;YACvC,IAAI,cAAK,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;SAC5E,EACD;YACE,MAAM,EAAE,CAAC;SACV,CACF,CAAC;IACJ,CAAC;IAEO,gDAAgD,CACtD,IAAa,EACb,WAAoB,EACpB,QAAsB;QAEtB,OAAO,IAAI,cAAK,CACd,EAAE,EACF;YACE,QAAQ;iBACL,aAAa,CAAC;gBACb,kBAAkB,EAAE,CAAC,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC;aACrD,CAAC;iBACD,OAAO,CAAC,IAAI,CAAC;YAChB,IAAI;YACJ,QAAQ,CAAC,aAAa,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;SACvE,EACD;YACE,YAAY,EAAE,IAAI;SACnB,CACF,CAAC;IACJ,CAAC;IAEO,sDAAsD,CAC5D,IAAa,EACb,WAAoB,EACpB,QAAsB;QAEtB,OAAO,IAAI,cAAK,CACd,EAAE,EACF;YACE,GAAG;YACH,QAAQ,CAAC,aAAa,CAAC,EAAE,yBAAyB,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;YACzE,GAAG;YACH,QAAQ,CAAC,aAAa,CAAC,EAAE,mCAAmC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;YAC3F,GAAG;SACJ,EACD;YACE,YAAY,EAAE,IAAI;SACnB,CACF,CAAC;IACJ,CAAC;IAEO,sBAAsB,CAAC,IAAmD,EAAE,QAAsB;QACxG,OAAO,IAAI,cAAK,CACd;YACE,SAAS;YACT,QAAQ;YACR,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YAC3B,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;YACnF,IAAI;SACL,EACD,QAAQ,CAAC,aAAa,CAAC,EAAE,qBAAqB,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EACnG;YACE,MAAM,EAAE,CAAC;YACT,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE,KAAK;SACd,CACF,CAAC;IACJ,CAAC;IAEO,YAAY,CAClB,IAAmD,EACnD,QAAsB;QAEtB,OAAO;YACL,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,UAAU,CAAC,cAAc,EAAE,SAAS,CAAC;YAClF,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,UAAU,CAAC,iBAAiB,EAAE,YAAY,CAAC;SACzF,CAAC;IACJ,CAAC;IAEO,iBAAiB,CACvB,IAAmD,EACnD,QAAsB,EACtB,eAA8B,EAC9B,aAAqB;QAErB,MAAM,cAAc,GAAG,CAAC,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,KAAK,eAAe,CAAC,CAAC;QAC/F,MAAM,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzG,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,aAAa,GAAG,EAAE,IAAI,cAAK,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7G,CAAC;IAEO,cAAc,CAAC,QAAiC,EAAE,QAAsB,EAAE,QAAiB;QACjG,QAAQ;YACN,QAAQ;gBACR,CAAC,QAAQ;oBACP,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,gCAAgC;oBACpF,CAAC,CAAC,QAAQ,CAAC,CAAC;QAEhB,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO,QAAQ,CAAC;SACjB;QAED,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACtF,CAAC;IAEO,UAAU,CAAC,UAAmB,EAAE,IAAyB,EAAE,QAAsB,EAAE,QAAgB;QACzG,IAAI,CAAC,IAAI,EAAE;YACT,OAAO,QAAQ,CAAC;SACjB;QAED,OAAO,QAAQ,CAAC,IAAA,8BAAiB,EAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;QAEtE,6CAA6C;QAC7C,SAAS,QAAQ,CAAC,QAAkB,EAAE,qBAA8B;YAClE,QAAQ,QAAQ,CAAC,IAAI,EAAE;gBACrB,KAAK,SAAS;oBACZ,OAAO,QAAQ,CAAC;gBAClB,KAAK,OAAO;oBACV,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;oBAC9C,OAAO,QAAQ,CAAC;gBAClB,KAAK,KAAK;oBACR,OAAO,eAAe,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC;gBAChE,KAAK,MAAM;oBACT,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC;gBACrD,KAAK,WAAW;oBACd,OAAO,QAAQ,CAAC,IAAI,CAAC;gBACvB,KAAK,SAAS;oBACZ,QAAQ,QAAQ,CAAC,OAAO,EAAE;wBACxB,KAAK,SAAS;4BACZ,OAAO,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;wBACvD,KAAK,QAAQ;4BACX,OAAO,QAAQ,CAAC;wBAClB,KAAK,QAAQ;4BACX,OAAO,QAAQ,CAAC;wBAClB,KAAK,KAAK;4BACR,OAAO,QAAQ,CAAC;wBAClB;4BACE,OAAO,QAAQ,CAAC,OAAO,CAAC;qBAC3B;aACJ;QACH,CAAC;IACH,CAAC;IAEO,eAAe,CACrB,IAA+E,EAC/E,QAAsB,EACtB,uBAA4C,EAC5C,UAA8B;QAE9B,MAAM,SAAS,GAAG,IAAI,KAAK,EAAS,CAAC;QACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,CAAC,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE;gBAChD,uDAAuD;gBACvD,0EAA0E;gBAC1E,mGAAmG;gBACnG,sDAAsD;gBAEtD,iDAAiD;gBACjD,MAAM,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACtD,gDAAgD;gBAChD,MAAM,QAAQ,GAAG,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;gBAExG,SAAS,CAAC,IAAI,CACZ,IAAI,CAAC,cAAc,CACjB,UAAU,EACV,QAAQ,EACR,uBAAuB,EACvB,iBAAiB;gBACjB,4CAA4C;gBAC5C,IAAI,CAAC,WAAW,CAAC;oBACf,IAAI,cAAK,CACP,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,EACrB;wBACE,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;wBACzD,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM;qBACjE,EACD;wBACE,SAAS,EAAE,IAAI;wBACf,MAAM,EAAE,IAAI;qBACb,CACF;iBACF,CAAC,CACH,CACF,CAAC;aACH;SACF;QACD,8BAA8B;QAC9B,SAAS,CAAC,IAAI,CACZ,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,QAAQ,EAAE,uBAAuB,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CACjH,CAAC;QAEF,OAAO,IAAI,cAAK,CAAC,EAAE,EAAE,SAAS,EAAE;YAC9B,YAAY,EAAE,IAAI;YAClB,SAAS,EAAE,MAAM;SAClB,CAAC,CAAC;IACL,CAAC;IAEO,cAAc,CACpB,UAA8B,EAC9B,QAAsB,EACtB,uBAA4C,EAC5C,UAA6E,EAC7E,IAAW;QAEX,OAAO,IAAI,cAAK,CACd;YACE,SAAS;YACT,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,SAAS;YACzC,QAAQ,CAAC,OAAO,CAAC,uBAAuB,CAAC;YACzC,GAAG;YACH,IAAI,cAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;YACnE,IAAI;SACL,EACD,CAAC,IAAI,CAAC,EACN;YACE,YAAY,EAAE,IAAI;SACnB,CACF,CAAC;IACJ,CAAC;IAEO,WAAW,CAAC,aAAsB;QACxC,OAAO,IAAI,cAAK,CAAC,CAAC,GAAG,CAAC,EAAE,aAAa,EAAE;YACrC,MAAM,EAAE,CAAC;YACT,MAAM,EAAE,KAAK;SACd,CAAC,CAAC;IACL,CAAC;;AA5uBH,kCA6uBC;AA5uBC;;;;;GAKG;AACoB,mBAAO,GAAG,GAAG,CAAC;AAwuBvC,SAAS,UAAU,CAAC,GAAW;IAC7B,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,WAAW,CAAC,OAAiB;IACpC,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,UAAsB;IAC1C,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,QAAQ,EAAE;QACxC,uCAAuC;QACvC,OAAO,UAAU,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAA,uBAAU,EAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;KACjH;IAED,MAAM,GAAG,GAAG,UAAU,CAAC,cAAc,EAAE,QAAQ,CAAC;IAChD,OAAO,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAE/B,SAAS,OAAO,CAAC,GAAW;QAC1B,IAAI,GAAG,KAAK,GAAG,CAAC,IAAI,EAAE;YACpB,OAAO,IAAA,8BAAmB,EAAC,GAAG,EAAE,cAAc,CAAC,IAAI,sBAAsB,CAAC,GAAG,CAAC,CAAC;SAChF;QACD,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,EAAE;YACzB,MAAM,OAAO,GAAG,IAAA,8BAAmB,EAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,cAAc,CAAC,CAAC;YACzE,IAAI,OAAO,EAAE;gBACX,OAAO,OAAO,CAAC;aAChB;SACF;QAED,MAAM,EAAE,GAAG,IAAA,0BAAa,EAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,UAAU,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;QAC/B,MAAM,IAAI,GAAG,IAAA,uBAAU,EAAC,GAAG,CAAC,CAAC;QAC7B,OAAO,GAAG,UAAU,IAAI,IAAI,EAAE,CAAC;IACjC,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,WAAmB;IACjD,OAAO,WAAW;SACf,KAAK,CAAC,gBAAgB,CAAC;SACvB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;SACvB,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC","sourcesContent":["import * as ts from 'typescript';\n\nimport { DefaultVisitor } from './default';\nimport { determineJsiiType, JsiiType, analyzeObjectLiteral, ObjectLiteralStruct } from '../jsii/jsii-types';\nimport { JsiiSymbol, simpleName, namespaceName } from '../jsii/jsii-utils';\nimport { jsiiTargetParameter } from '../jsii/packages';\nimport { TargetLanguage } from '../languages/target-language';\nimport { OTree, NO_SYNTAX } from '../o-tree';\nimport { AstRenderer } from '../renderer';\nimport { SubmoduleReference } from '../submodule-reference';\nimport { isReadOnly, matchAst, nodeOfType, quoteStringLiteral, visibility } from '../typescript/ast-utils';\nimport { ImportStatement } from '../typescript/imports';\nimport { isEnumAccess, isStaticReadonlyAccess, determineReturnType } from '../typescript/types';\nimport { fmap, setExtend } from '../util';\n\ninterface JavaContext {\n /**\n * Whether to ignore the left-hand part of a property access expression.\n *\n * Used to strip out TypeScript namespace prefixes from 'extends' and 'new' clauses,\n * EVEN if the source doesn't compile.\n *\n * @default false\n */\n readonly discardPropertyAccess?: boolean;\n\n /**\n * Whether a property access ('sth.b') should be substituted by a getter ('sth.getB()').\n * Not true for 'new' expressions and calls to methods on objects.\n *\n * @default true\n */\n readonly convertPropertyToGetter?: boolean;\n\n /**\n * Set when we are in the middle translating a type (= class, interface or enum) declaration.\n */\n readonly insideTypeDeclaration?: InsideTypeDeclaration;\n\n /**\n * True if we are in the middle of a `new` expression that has an object literal as its last argument -\n * in that case, we render a ClassName.Builder.create(...).prop(...).build() expression instead.\n *\n * @default false\n */\n readonly inNewExprWithObjectLiteralAsLastArg?: boolean;\n\n /**\n * True when, from the context,\n * we are supposed to render a JavaScript object literal as a Map in Java.\n *\n * @default false\n */\n readonly inKeyValueList?: boolean;\n\n /**\n * Used when rendering a JavaScript object literal that is _not_ for a struct -\n * we render that as a Map in Java.\n *\n * @default false\n */\n readonly identifierAsString?: boolean;\n\n /**\n * Used when rendering a JavaScript object literal that is for a struct -\n * maps to a Builder in Java.\n *\n * @default false\n */\n readonly stringLiteralAsIdentifier?: boolean;\n\n /**\n * Used to denote that a type is being rendered in a position where a generic\n * type parameter is expected, so only reference types are valid (not\n * primitives).\n *\n * @default false\n */\n readonly requiresReferenceType?: boolean;\n}\n\n/**\n * Values saved when we are translating a type declaration.\n */\ninterface InsideTypeDeclaration {\n /**\n * The name of the type.\n * Needed to correctly generate the constructor.\n */\n readonly typeName: ts.Node | undefined;\n\n /**\n * Is this an interface (true) or a class (unset/false)\n */\n readonly isInterface?: boolean;\n}\n\ntype JavaRenderer = AstRenderer<JavaContext>;\n\nexport class JavaVisitor extends DefaultVisitor<JavaContext> {\n /**\n * Translation version\n *\n * Bump this when you change something in the implementation to invalidate\n * existing cached translations.\n */\n public static readonly VERSION = '1';\n\n /**\n * Aliases for modules\n *\n * If these are encountered in the LHS of a property access, they will be dropped.\n */\n private readonly dropPropertyAccesses = new Set<string>();\n\n public readonly language = TargetLanguage.JAVA;\n public readonly defaultContext = {};\n\n public mergeContext(old: JavaContext, update: Partial<JavaContext>): JavaContext {\n return Object.assign({}, old, update);\n }\n\n public override importStatement(importStatement: ImportStatement): OTree {\n const guessedNamespace = guessJavaNamespaceName(importStatement.packageName);\n if (importStatement.imports.import === 'full') {\n this.dropPropertyAccesses.add(importStatement.imports.sourceName);\n const namespace = fmap(importStatement.moduleSymbol, findJavaName) ?? guessedNamespace;\n\n return new OTree([`import ${namespace}.*;`], [], { canBreakLine: true });\n }\n\n const imports = importStatement.imports.elements.map((e) => {\n const fqn = fmap(e.importedSymbol, findJavaName) ?? `${guessedNamespace}.${e.sourceName}`;\n\n // If there is no imported symbol, we check if there is anything looking like a type name in\n // the source name (that is, any segment that starts with an upper case letter), and if none\n // is found, assume this refers to a namespace/module.\n return (e.importedSymbol?.symbolType == null &&\n !e.sourceName.split('.').some((segment) => /^[A-Z]/.test(segment))) ||\n e.importedSymbol?.symbolType === 'module'\n ? `import ${fqn}.*;`\n : `import ${fqn};`;\n });\n\n const localNames = importStatement.imports.elements\n .filter((el) => el.importedSymbol?.symbolType === 'module')\n .map((el) => el.alias ?? el.sourceName);\n setExtend(this.dropPropertyAccesses, localNames);\n\n return new OTree([], imports, { canBreakLine: true, separator: '\\n' });\n }\n\n public override classDeclaration(node: ts.ClassDeclaration, renderer: JavaRenderer): OTree {\n return this.renderClassDeclaration(node, renderer);\n }\n\n public override structInterfaceDeclaration(node: ts.InterfaceDeclaration, renderer: JavaRenderer): OTree {\n // Render structs as simple Java classes with getters, and setters that return `this`.\n // This is a compromise between brevity\n // (rendering a full inner static Builder class, like JSII uses, would be quite verbose)\n // and ease of use\n // (fluent setters allow us to mirror JavaScript object literals more closely than classic,\n // void-returning setters would).\n\n return this.renderClassDeclaration(node, renderer);\n }\n\n public override regularInterfaceDeclaration(node: ts.InterfaceDeclaration, renderer: JavaRenderer): OTree {\n return new OTree(\n [\n 'public ',\n 'interface ',\n renderer.convert(node.name),\n ...this.typeHeritage(node, renderer.updateContext({ discardPropertyAccess: true })),\n ' {',\n ],\n renderer\n .updateContext({\n insideTypeDeclaration: { typeName: node.name, isInterface: true },\n })\n .convertAll(node.members),\n {\n indent: 4,\n canBreakLine: true,\n suffix: '\\n}',\n },\n );\n }\n\n public override propertySignature(node: ts.PropertySignature, renderer: JavaRenderer): OTree {\n const propertyType = this.renderTypeNode(node.type, renderer, 'Object');\n const propertyName = renderer.convert(node.name);\n\n const isClass = !renderer.currentContext.insideTypeDeclaration?.isInterface;\n const blockSep = isClass ? ' ' : ';';\n\n const field = isClass\n ? new OTree([], ['private ', propertyType, ' ', propertyName, ';'], {\n canBreakLine: true,\n })\n : NO_SYNTAX;\n\n const getter = new OTree(\n [],\n [\n isClass ? 'public ' : NO_SYNTAX,\n propertyType,\n ' ',\n `get${capitalize(renderer.textOf(node.name))}()${blockSep}`,\n isClass ? this.renderBlock([new OTree(['\\n'], ['return this.', propertyName, ';'])]) : NO_SYNTAX,\n ],\n {\n canBreakLine: true,\n },\n );\n\n const hasSetter = isClass || !isReadOnly(node);\n\n const setter = hasSetter\n ? new OTree(\n [],\n [\n isClass ? 'public ' : NO_SYNTAX,\n renderer.convert(renderer.currentContext.insideTypeDeclaration!.typeName),\n ' ',\n propertyName, // don't prefix the setter with `set` - makes it more aligned with JSII builders\n '(',\n propertyType,\n ' ',\n propertyName,\n `)${blockSep}`,\n isClass\n ? this.renderBlock([\n new OTree(['\\n'], ['this.', propertyName, ' = ', propertyName, ';']),\n new OTree(['\\n'], ['return this;']),\n ])\n : NO_SYNTAX,\n ],\n {\n canBreakLine: true,\n },\n )\n : NO_SYNTAX;\n\n return new OTree([], [field, getter, setter], {\n canBreakLine: true,\n separator: '\\n',\n });\n }\n\n public override propertyDeclaration(node: ts.PropertyDeclaration, renderer: JavaRenderer): OTree {\n const vis = visibility(node);\n\n return new OTree(\n [\n vis,\n isReadOnly(node) ? ' final' : '',\n ' ',\n this.renderTypeNode(node.type, renderer, 'Object'),\n ' ',\n renderer.convert(node.name),\n ';',\n ],\n [],\n {\n canBreakLine: true,\n },\n );\n }\n\n public override constructorDeclaration(node: ts.ConstructorDeclaration, renderer: JavaRenderer): OTree {\n return this.renderProcedure(node, renderer, renderer.currentContext.insideTypeDeclaration!.typeName, undefined);\n }\n\n public override methodDeclaration(node: ts.MethodDeclaration, renderer: JavaRenderer): OTree {\n const retType = determineReturnType(renderer.typeChecker, node);\n return this.renderProcedure(node, renderer, node.name, this.renderType(node, retType, renderer, 'void'));\n }\n\n public override functionDeclaration(node: ts.FunctionDeclaration, renderer: JavaRenderer): OTree {\n const retType = determineReturnType(renderer.typeChecker, node);\n return this.renderProcedure(node, renderer, node.name, this.renderType(node, retType, renderer, 'void'));\n }\n\n public override methodSignature(node: ts.MethodSignature, renderer: JavaRenderer): OTree {\n return new OTree(\n [\n this.renderTypeNode(node.type, renderer, 'void'),\n ' ',\n renderer.convert(node.name),\n '(',\n new OTree([], renderer.convertAll(node.parameters), {\n separator: ', ',\n }),\n ');',\n ],\n [],\n { canBreakLine: true },\n );\n }\n\n public override parameterDeclaration(node: ts.ParameterDeclaration, renderer: JavaRenderer): OTree {\n let renderedType = this.renderTypeNode(node.type, renderer);\n if (node.dotDotDotToken && renderedType.endsWith('[]')) {\n // Varargs. In Java, render this as `Element...` (instead of `Element[]` which is what we'll have gotten).\n renderedType = `${renderedType.slice(0, -2)}...`;\n }\n\n return new OTree([renderedType, ' ', renderer.convert(node.name)]);\n }\n\n public override block(node: ts.Block, renderer: JavaRenderer): OTree {\n return this.renderBlock(renderer.convertAll(node.statements));\n }\n\n public override variableDeclaration(node: ts.VariableDeclaration, renderer: JavaRenderer): OTree {\n let fallback = 'Object';\n if (node.type) {\n fallback = node.type.getText();\n }\n const type =\n (node.type && renderer.typeOfType(node.type)) ||\n (node.initializer && renderer.typeOfExpression(node.initializer));\n\n const renderedType = type ? this.renderType(node, type, renderer, fallback) : fallback;\n\n if (!node.initializer) {\n return new OTree([renderedType, ' ', renderer.convert(node.name), ';'], []);\n }\n\n return new OTree(\n [\n renderedType,\n ' ',\n renderer.convert(node.name),\n ...(node.initializer ? [' = ', renderer.convert(node.initializer)] : []),\n ';',\n ],\n [],\n {\n canBreakLine: true,\n },\n );\n }\n\n public override expressionStatement(node: ts.ExpressionStatement, renderer: JavaRenderer): OTree {\n const inner = renderer.convert(node.expression);\n return inner.isEmpty ? inner : new OTree([inner, ';'], [], { canBreakLine: true });\n }\n\n public override ifStatement(node: ts.IfStatement, renderer: JavaRenderer): OTree {\n const ifStmt = new OTree(\n ['if (', renderer.convert(node.expression), ') '],\n [renderer.convert(node.thenStatement)],\n {\n canBreakLine: true,\n },\n );\n const elseStmt = node.elseStatement\n ? new OTree(['else '], [renderer.convert(node.elseStatement)], {\n canBreakLine: true,\n })\n : undefined;\n\n return elseStmt\n ? new OTree([], [ifStmt, elseStmt], {\n separator: ' ',\n canBreakLine: true,\n })\n : ifStmt;\n }\n\n public override forOfStatement(node: ts.ForOfStatement, renderer: JavaRenderer): OTree {\n // This is what a \"for (const x of ...)\" looks like in the AST\n let variableName = '???';\n\n matchAst(\n node.initializer,\n nodeOfType(ts.SyntaxKind.VariableDeclarationList, nodeOfType('var', ts.SyntaxKind.VariableDeclaration)),\n (bindings) => {\n variableName = renderer.textOf(bindings.var.name);\n },\n );\n\n return new OTree(\n ['for (Object ', variableName, ' : ', renderer.convert(node.expression), ') '],\n [renderer.convert(node.statement)],\n {\n canBreakLine: true,\n },\n );\n }\n\n public override printStatement(args: ts.NodeArray<ts.Expression>, renderer: JavaRenderer) {\n return new OTree([\n 'System.out.println(',\n args.length === 1 ? renderer.convert(args[0]) : new OTree([], renderer.convertAll(args), { separator: ' + ' }),\n ')',\n ]);\n }\n\n public override templateExpression(node: ts.TemplateExpression, renderer: JavaRenderer): OTree {\n let template = '';\n const parameters = new Array<OTree>();\n\n if (node.head.rawText) {\n template += node.head.rawText;\n }\n\n for (const span of node.templateSpans) {\n template += '%s';\n parameters.push(\n renderer\n .updateContext({\n convertPropertyToGetter: true,\n identifierAsString: false,\n })\n .convert(span.expression),\n );\n if (span.literal.rawText) {\n template += span.literal.rawText;\n }\n }\n\n if (parameters.length === 0) {\n return new OTree([JSON.stringify(quoteStringLiteral(template))]);\n }\n\n return new OTree([\n 'String.format(',\n `\"${quoteStringLiteral(template)\n // Java does not have multiline string literals, so we must replace literal newlines with %n\n .replace(/\\n/g, '%n')}\"`,\n ...parameters.reduce((list, element) => list.concat(', ', element), new Array<string | OTree>()),\n ')',\n ]);\n }\n\n public override asExpression(node: ts.AsExpression, renderer: JavaRenderer): OTree {\n return new OTree(['(', this.renderTypeNode(node.type, renderer, 'Object'), ')', renderer.convert(node.expression)]);\n }\n\n public override arrayLiteralExpression(node: ts.ArrayLiteralExpression, renderer: JavaRenderer): OTree {\n return new OTree(['List.of('], renderer.convertAll(node.elements), {\n separator: ', ',\n suffix: ')',\n indent: 4,\n });\n }\n\n public override regularCallExpression(node: ts.CallExpression, renderer: JavaRenderer): OTree {\n return new OTree([\n renderer.updateContext({ convertPropertyToGetter: false }).convert(node.expression),\n '(',\n this.argumentList(node.arguments, renderer),\n ')',\n ]);\n }\n\n public override newExpression(node: ts.NewExpression, renderer: JavaRenderer): OTree {\n const argsLength = node.arguments ? node.arguments.length : 0;\n const lastArg = argsLength > 0 ? node.arguments![argsLength - 1] : undefined;\n\n // We render the ClassName.Builder.create(...) expression\n // if the last argument is an object literal, and either a known struct (because\n // those are the jsii rules) or an unknown type (because the example didn't\n // compile but most of the target examples will intend this to be a struct).\n\n const structArgument = lastArg && ts.isObjectLiteralExpression(lastArg) ? lastArg : undefined;\n let renderBuilder = false;\n if (lastArg && ts.isObjectLiteralExpression(lastArg)) {\n const analysis = analyzeObjectLiteral(renderer.typeChecker, lastArg);\n renderBuilder = analysis.kind === 'struct' || analysis.kind === 'unknown';\n }\n\n const className = renderer\n .updateContext({\n discardPropertyAccess: true,\n convertPropertyToGetter: false,\n })\n .convert(node.expression);\n\n if (renderBuilder) {\n const initialArguments = node.arguments!.slice(0, argsLength - 1);\n return new OTree(\n [],\n [\n className,\n '.Builder.create(',\n this.argumentList(initialArguments, renderer),\n ')',\n ...renderer.convertAll(structArgument!.properties),\n new OTree([renderer.mirrorNewlineBefore(structArgument!.properties[0])], ['.build()']),\n ],\n { canBreakLine: true, indent: 8 },\n );\n }\n\n return new OTree([], ['new ', className, '(', this.argumentList(node.arguments, renderer), ')'], {\n canBreakLine: true,\n });\n }\n\n public override unknownTypeObjectLiteralExpression(node: ts.ObjectLiteralExpression, renderer: JavaRenderer): OTree {\n return renderer.currentContext.inNewExprWithObjectLiteralAsLastArg\n ? this.renderObjectLiteralAsBuilder(node, renderer)\n : this.keyValueObjectLiteralExpression(node, renderer);\n }\n\n public override keyValueObjectLiteralExpression(node: ts.ObjectLiteralExpression, renderer: JavaRenderer): OTree {\n return new OTree(['Map.of('], renderer.updateContext({ inKeyValueList: true }).convertAll(node.properties), {\n suffix: ')',\n separator: ', ',\n indent: 8,\n });\n }\n\n public override knownStructObjectLiteralExpression(\n node: ts.ObjectLiteralExpression,\n structType: ObjectLiteralStruct,\n renderer: JavaRenderer,\n ): OTree {\n // Special case: we're rendering an object literal, but the containing constructor\n // has already started the builder: we don't have to create a new instance,\n // all we have to do is pile on arguments.\n if (renderer.currentContext.inNewExprWithObjectLiteralAsLastArg) {\n return new OTree([], renderer.convertAll(node.properties), { indent: 8 });\n }\n\n // Jsii-generated classes have builders, classes we generated in the course of\n // this example do not.\n const hasBuilder = structType.kind !== 'local-struct';\n\n return new OTree(\n hasBuilder ? [structType.type.symbol.name, '.builder()'] : ['new ', structType.type.symbol.name, '()'],\n [\n ...renderer.convertAll(node.properties),\n new OTree([renderer.mirrorNewlineBefore(node.properties[0])], [hasBuilder ? '.build()' : '']),\n ],\n {\n indent: 8,\n },\n );\n }\n\n public override propertyAssignment(node: ts.PropertyAssignment, renderer: JavaRenderer): OTree {\n return renderer.currentContext.inKeyValueList\n ? this.singlePropertyInJavaScriptObjectLiteralToJavaMap(node.name, node.initializer, renderer)\n : this.singlePropertyInJavaScriptObjectLiteralToFluentSetters(node.name, node.initializer, renderer);\n }\n\n public override shorthandPropertyAssignment(node: ts.ShorthandPropertyAssignment, renderer: JavaRenderer): OTree {\n return renderer.currentContext.inKeyValueList\n ? this.singlePropertyInJavaScriptObjectLiteralToJavaMap(node.name, node.name, renderer)\n : this.singlePropertyInJavaScriptObjectLiteralToFluentSetters(node.name, node.name, renderer);\n }\n\n public override propertyAccessExpression(\n node: ts.PropertyAccessExpression,\n renderer: JavaRenderer,\n submoduleRef: SubmoduleReference | undefined,\n ): OTree {\n const rightHandSide = renderer.convert(node.name);\n // If a submodule access, then just render the name, we emitted a * import of the expression segment already.\n if (submoduleRef != null) {\n return rightHandSide;\n }\n\n let parts: Array<OTree | string | undefined>;\n\n const leftHandSide = renderer.textOf(node.expression);\n\n // Suppress the LHS of the dot operator if it matches an alias for a module import.\n if (this.dropPropertyAccesses.has(leftHandSide) || renderer.currentContext.discardPropertyAccess) {\n parts = [rightHandSide];\n } else if (leftHandSide === 'this') {\n // for 'this', assume this is a field, and access it directly\n parts = ['this', '.', rightHandSide];\n } else {\n let convertToGetter = renderer.currentContext.convertPropertyToGetter !== false;\n\n // See if we're not accessing an enum member or public static readonly property (const).\n if (isEnumAccess(renderer.typeChecker, node)) {\n convertToGetter = false;\n }\n if (isStaticReadonlyAccess(renderer.typeChecker, node)) {\n convertToGetter = false;\n }\n\n // add a 'get' prefix to the property name, and change the access to a method call, if required\n const renderedRightHandSide = convertToGetter ? `get${capitalize(node.name.text)}()` : rightHandSide;\n\n // strip any trailing ! from the left-hand side, as they're not meaningful in Java\n parts = [renderer.convert(node.expression), '.', renderedRightHandSide];\n }\n\n return new OTree(parts);\n }\n\n public override stringLiteral(\n node: ts.StringLiteral | ts.NoSubstitutionTemplateLiteral,\n renderer: JavaRenderer,\n ): OTree {\n if (renderer.currentContext.stringLiteralAsIdentifier) {\n return this.identifier(node, renderer);\n }\n // Java does not have multiline string literals, so we must replace literal newlines with \\n\n return new OTree([JSON.stringify(node.text).replace(/\\n/g, '\\\\n')]);\n }\n\n public override identifier(\n node: ts.Identifier | ts.StringLiteral | ts.NoSubstitutionTemplateLiteral,\n renderer: JavaRenderer,\n ): OTree {\n const nodeText = node.text;\n return new OTree([renderer.currentContext.identifierAsString ? JSON.stringify(nodeText) : nodeText]);\n }\n\n private renderObjectLiteralAsBuilder(node: ts.ObjectLiteralExpression, renderer: JavaRenderer): OTree {\n return new OTree(\n [],\n [\n ...renderer.convertAll(node.properties),\n new OTree([renderer.mirrorNewlineBefore(node.properties[0])], ['.build()']),\n ],\n {\n indent: 8,\n },\n );\n }\n\n private singlePropertyInJavaScriptObjectLiteralToJavaMap(\n name: ts.Node,\n initializer: ts.Node,\n renderer: JavaRenderer,\n ): OTree {\n return new OTree(\n [],\n [\n renderer\n .updateContext({\n identifierAsString: !ts.isComputedPropertyName(name),\n })\n .convert(name),\n ', ',\n renderer.updateContext({ inKeyValueList: false }).convert(initializer),\n ],\n {\n canBreakLine: true,\n },\n );\n }\n\n private singlePropertyInJavaScriptObjectLiteralToFluentSetters(\n name: ts.Node,\n initializer: ts.Node,\n renderer: JavaRenderer,\n ): OTree {\n return new OTree(\n [],\n [\n '.',\n renderer.updateContext({ stringLiteralAsIdentifier: true }).convert(name),\n '(',\n renderer.updateContext({ inNewExprWithObjectLiteralAsLastArg: false }).convert(initializer),\n ')',\n ],\n {\n canBreakLine: true,\n },\n );\n }\n\n private renderClassDeclaration(node: ts.ClassDeclaration | ts.InterfaceDeclaration, renderer: JavaRenderer) {\n return new OTree(\n [\n 'public ',\n 'class ',\n renderer.convert(node.name),\n ...this.typeHeritage(node, renderer.updateContext({ discardPropertyAccess: true })),\n ' {',\n ],\n renderer.updateContext({ insideTypeDeclaration: { typeName: node.name } }).convertAll(node.members),\n {\n indent: 4,\n canBreakLine: true,\n suffix: '\\n}',\n },\n );\n }\n\n private typeHeritage(\n node: ts.ClassDeclaration | ts.InterfaceDeclaration,\n renderer: JavaRenderer,\n ): Array<OTree | string | undefined> {\n return [\n ...this.extractSuperTypes(node, renderer, ts.SyntaxKind.ExtendsKeyword, 'extends'),\n ...this.extractSuperTypes(node, renderer, ts.SyntaxKind.ImplementsKeyword, 'implements'),\n ];\n }\n\n private extractSuperTypes(\n node: ts.ClassDeclaration | ts.InterfaceDeclaration,\n renderer: JavaRenderer,\n heritageKeyword: ts.SyntaxKind,\n outputKeyword: string,\n ): Array<OTree | string | undefined> {\n const heritageClause = (node.heritageClauses ?? []).find((hc) => hc.token === heritageKeyword);\n const superTypes = heritageClause ? heritageClause.types.map((t) => renderer.convert(t.expression)) : [];\n return superTypes.length > 0 ? [` ${outputKeyword} `, new OTree([], superTypes, { separator: ', ' })] : [];\n }\n\n private renderTypeNode(typeNode: ts.TypeNode | undefined, renderer: JavaRenderer, fallback?: string): string {\n fallback =\n fallback ??\n (typeNode\n ? lastElement(renderer.textOf(typeNode).split('.')) // remove any namespace prefixes\n : 'Object');\n\n if (!typeNode) {\n return fallback;\n }\n\n return this.renderType(typeNode, renderer.typeOfType(typeNode), renderer, fallback);\n }\n\n private renderType(owningNode: ts.Node, type: ts.Type | undefined, renderer: JavaRenderer, fallback: string): string {\n if (!type) {\n return fallback;\n }\n\n return doRender(determineJsiiType(renderer.typeChecker, type), false);\n\n // eslint-disable-next-line consistent-return\n function doRender(jsiiType: JsiiType, requiresReferenceType: boolean): string {\n switch (jsiiType.kind) {\n case 'unknown':\n return fallback;\n case 'error':\n renderer.report(owningNode, jsiiType.message);\n return fallback;\n case 'map':\n return `Map<String, ${doRender(jsiiType.elementType, true)}>`;\n case 'list':\n return `${doRender(jsiiType.elementType, true)}[]`;\n case 'namedType':\n return jsiiType.name;\n case 'builtIn':\n switch (jsiiType.builtIn) {\n case 'boolean':\n return requiresReferenceType ? 'Boolean' : 'boolean';\n case 'number':\n return 'Number';\n case 'string':\n return 'String';\n case 'any':\n return 'Object';\n default:\n return jsiiType.builtIn;\n }\n }\n }\n }\n\n private renderProcedure(\n node: ts.ConstructorDeclaration | ts.MethodDeclaration | ts.FunctionDeclaration,\n renderer: JavaRenderer,\n methodOrConstructorName: ts.Node | undefined,\n returnType: string | undefined,\n ): OTree {\n const overloads = new Array<OTree>();\n for (let i = 0; i < node.parameters.length; i++) {\n const param = node.parameters[i];\n if (!!param.questionToken || !!param.initializer) {\n // The parameter is either optional, or has a default -\n // render an overload that delegates to a version with one more parameter.\n // Note that we don't check that all parameters with indexes > i are also optional/have a default -\n // we assume the TypeScript compiler does that for us.\n\n // parameters up to but excluding the current one\n const parametersUpToIth = node.parameters.slice(0, i);\n // how should the call to the next overload look\n const callExpr = ts.isConstructorDeclaration(node) ? 'this' : renderer.convert(methodOrConstructorName);\n\n overloads.push(\n this.renderOverload(\n returnType,\n renderer,\n methodOrConstructorName,\n parametersUpToIth,\n // the body is the call to the next overload\n this.renderBlock([\n new OTree(\n ['\\n', callExpr, '('],\n [\n ...parametersUpToIth.map((p) => renderer.convert(p.name)),\n param.initializer ? renderer.convert(param.initializer) : 'null',\n ],\n {\n separator: ', ',\n suffix: ');',\n },\n ),\n ]),\n ),\n );\n }\n }\n // render the primary overload\n overloads.push(\n this.renderOverload(returnType, renderer, methodOrConstructorName, node.parameters, renderer.convert(node.body)),\n );\n\n return new OTree([], overloads, {\n canBreakLine: true,\n separator: '\\n\\n',\n });\n }\n\n private renderOverload(\n returnType: string | undefined,\n renderer: JavaRenderer,\n methodOrConstructorName: ts.Node | undefined,\n parameters: ts.ParameterDeclaration[] | ts.NodeArray<ts.ParameterDeclaration>,\n body: OTree,\n ): OTree {\n return new OTree(\n [\n 'public ',\n returnType ? `${returnType} ` : undefined,\n renderer.convert(methodOrConstructorName),\n '(',\n new OTree([], renderer.convertAll(parameters), { separator: ', ' }),\n ') ',\n ],\n [body],\n {\n canBreakLine: true,\n },\n );\n }\n\n private renderBlock(blockContents: OTree[]): OTree {\n return new OTree(['{'], blockContents, {\n indent: 4,\n suffix: '\\n}',\n });\n }\n}\n\nfunction capitalize(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nfunction lastElement(strings: string[]): string {\n return strings[strings.length - 1];\n}\n\n/**\n * Find the Java name of a module or type\n */\nfunction findJavaName(jsiiSymbol: JsiiSymbol): string | undefined {\n if (!jsiiSymbol.sourceAssembly?.assembly) {\n // Don't have accurate info, just guess\n return jsiiSymbol.symbolType !== 'module' ? simpleName(jsiiSymbol.fqn) : guessJavaNamespaceName(jsiiSymbol.fqn);\n }\n\n const asm = jsiiSymbol.sourceAssembly?.assembly;\n return recurse(jsiiSymbol.fqn);\n\n function recurse(fqn: string): string {\n if (fqn === asm.name) {\n return jsiiTargetParameter(asm, 'java.package') ?? guessJavaNamespaceName(fqn);\n }\n if (asm.submodules?.[fqn]) {\n const modName = jsiiTargetParameter(asm.submodules[fqn], 'java.package');\n if (modName) {\n return modName;\n }\n }\n\n const ns = namespaceName(fqn);\n const nsJavaName = recurse(ns);\n const leaf = simpleName(fqn);\n return `${nsJavaName}.${leaf}`;\n }\n}\n\nfunction guessJavaNamespaceName(packageName: string) {\n return packageName\n .split(/[^a-zA-Z0-9]+/g)\n .filter((s) => s !== '')\n .join('.');\n}\n"]}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import * as ts from 'typescript';
|
|
2
|
+
import { DefaultVisitor } from './default';
|
|
2
3
|
import { ObjectLiteralStruct } from '../jsii/jsii-types';
|
|
3
4
|
import { TargetLanguage } from '../languages/target-language';
|
|
4
5
|
import { OTree } from '../o-tree';
|
|
5
6
|
import { AstRenderer, CommentSyntax } from '../renderer';
|
|
6
7
|
import { SubmoduleReference } from '../submodule-reference';
|
|
7
8
|
import { ImportStatement } from '../typescript/imports';
|
|
8
|
-
import { DefaultVisitor } from './default';
|
|
9
9
|
interface StructVar {
|
|
10
10
|
variableName: string;
|
|
11
11
|
type: ts.Type | undefined;
|
|
12
12
|
}
|
|
13
|
-
|
|
13
|
+
type ReturnFromTree<A> = {
|
|
14
14
|
value?: A;
|
|
15
15
|
};
|
|
16
16
|
interface PythonLanguageContext {
|
|
@@ -62,7 +62,7 @@ interface PythonLanguageContext {
|
|
|
62
62
|
*/
|
|
63
63
|
readonly variadicArgument?: boolean;
|
|
64
64
|
}
|
|
65
|
-
|
|
65
|
+
type PythonVisitorContext = AstRenderer<PythonLanguageContext>;
|
|
66
66
|
export interface PythonVisitorOptions {
|
|
67
67
|
disclaimer?: string;
|
|
68
68
|
}
|
package/lib/languages/python.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.PythonVisitor = void 0;
|
|
4
4
|
const ts = require("typescript");
|
|
5
|
+
const default_1 = require("./default");
|
|
5
6
|
const jsii_types_1 = require("../jsii/jsii-types");
|
|
6
7
|
const jsii_utils_1 = require("../jsii/jsii-utils");
|
|
7
8
|
const packages_1 = require("../jsii/packages");
|
|
@@ -11,7 +12,6 @@ const renderer_1 = require("../renderer");
|
|
|
11
12
|
const ast_utils_1 = require("../typescript/ast-utils");
|
|
12
13
|
const types_1 = require("../typescript/types");
|
|
13
14
|
const util_1 = require("../util");
|
|
14
|
-
const default_1 = require("./default");
|
|
15
15
|
class PythonVisitor extends default_1.DefaultVisitor {
|
|
16
16
|
constructor(options = {}) {
|
|
17
17
|
super();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"python.js","sourceRoot":"","sources":["../../src/languages/python.ts"],"names":[],"mappings":"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","sourcesContent":["import * as ts from 'typescript';\n\nimport { DefaultVisitor } from './default';\nimport { determineJsiiType, JsiiType, ObjectLiteralStruct } from '../jsii/jsii-types';\nimport {\n propertiesOfStruct,\n StructProperty,\n structPropertyAcceptsUndefined,\n analyzeStructType,\n JsiiSymbol,\n simpleName,\n namespaceName,\n isJsiiProtocolType,\n} from '../jsii/jsii-utils';\nimport { jsiiTargetParameter } from '../jsii/packages';\nimport { TargetLanguage } from '../languages/target-language';\nimport { NO_SYNTAX, OTree, renderTree } from '../o-tree';\nimport { AstRenderer, nimpl, CommentSyntax } from '../renderer';\nimport { SubmoduleReference } from '../submodule-reference';\nimport {\n matchAst,\n nodeOfType,\n stripCommentMarkers,\n voidExpressionString,\n quoteStringLiteral,\n} from '../typescript/ast-utils';\nimport { ImportStatement } from '../typescript/imports';\nimport { parameterAcceptsUndefined } from '../typescript/types';\nimport { startsWithUppercase, sortBy, groupBy, fmap } from '../util';\n\ninterface StructVar {\n variableName: string;\n type: ts.Type | undefined;\n}\n\ntype ReturnFromTree<A> = { value?: A };\n\ninterface PythonLanguageContext {\n /**\n * Whether we're currently rendering a parameter in tail position\n *\n * If so, and the parameter is of type struct, explode it to keyword args\n * and return its information in `returnExplodedParameter`.\n */\n readonly tailPositionParameter?: boolean;\n\n /**\n * Used to return details about any exploded parameter\n */\n readonly returnExplodedParameter?: ReturnFromTree<StructVar>;\n\n /**\n * Whether we're currently rendering a value/expression in tail position\n *\n * If so, and the expression seems to be of a struct type, explode it\n * to keyword args.\n */\n readonly tailPositionArgument?: boolean;\n\n /**\n * Whether object literal members should render themselves as dict\n * members or keyword args\n */\n readonly renderObjectLiteralAsKeywords?: boolean;\n\n /**\n * In a code block, if any parameter is exploded, information about the parameter here\n */\n readonly explodedParameter?: StructVar;\n\n /**\n * Whether we're rendering a method or property inside a class\n */\n readonly inClass?: boolean;\n\n /**\n * Whether the current property assignment is in the context of a map value.\n * In this case, the keys should be strings (quoted where needed), and should\n * not get mangled or case-converted.\n */\n readonly inMap?: boolean;\n\n /**\n * If we're in a method, what is it's name\n *\n * (Used to render super() call.);\n */\n readonly currentMethodName?: string;\n\n /**\n * If we're rendering a variadic argument value\n */\n readonly variadicArgument?: boolean;\n}\n\ntype PythonVisitorContext = AstRenderer<PythonLanguageContext>;\n\nexport interface PythonVisitorOptions {\n disclaimer?: string;\n}\n\ninterface ImportedModule {\n readonly importedFqn: string;\n readonly importName: string;\n}\n\nexport class PythonVisitor extends DefaultVisitor<PythonLanguageContext> {\n /**\n * Translation version\n *\n * Bump this when you change something in the implementation to invalidate\n * existing cached translations.\n */\n public static readonly VERSION = '2';\n\n public readonly language = TargetLanguage.PYTHON;\n public readonly defaultContext = {};\n\n /**\n * Keep track of module imports we've seen, so that if we need to render a type we can pick from these modules\n */\n private readonly imports = new Array<ImportedModule>();\n\n /**\n * Synthetic imports that need to be added as a final step\n */\n private readonly syntheticImportsToAdd = new Array<string>();\n\n protected override statementTerminator = '';\n\n public constructor(private readonly options: PythonVisitorOptions = {}) {\n super();\n }\n\n public mergeContext(old: PythonLanguageContext, update: Partial<PythonLanguageContext>) {\n return Object.assign({}, old, update);\n }\n\n public override commentRange(comment: CommentSyntax, _context: PythonVisitorContext): OTree {\n const commentText = stripCommentMarkers(comment.text, comment.kind === ts.SyntaxKind.MultiLineCommentTrivia);\n const hashLines = commentText\n .split('\\n')\n .map((l) => `# ${l}`)\n .join('\\n');\n const needsAdditionalTrailer = comment.hasTrailingNewLine;\n\n return new OTree([comment.isTrailing ? ' ' : '', hashLines, needsAdditionalTrailer ? '\\n' : ''], [], {\n // Make sure comment is rendered exactly once in the output tree, no\n // matter how many source nodes it is attached to.\n renderOnce: `comment-${comment.pos}`,\n });\n }\n\n public override sourceFile(node: ts.SourceFile, context: PythonVisitorContext): OTree {\n let rendered = super.sourceFile(node, context);\n\n // Add synthetic imports\n if (this.syntheticImportsToAdd.length > 0) {\n rendered = new OTree([...this.renderSyntheticImports(), rendered]);\n }\n\n if (this.options.disclaimer) {\n rendered = new OTree([`# ${this.options.disclaimer}\\n`, rendered]);\n }\n return rendered;\n }\n\n public override importStatement(node: ImportStatement, context: PythonVisitorContext): OTree {\n if (node.imports.import === 'full') {\n const moduleName = fmap(node.moduleSymbol, findPythonName) ?? guessPythonPackageName(node.packageName);\n\n const importName = node.imports.alias ?? node.imports.sourceName;\n this.addImport({\n importedFqn: node.moduleSymbol?.fqn ?? node.packageName,\n importName,\n });\n\n return new OTree([`import ${moduleName} as ${mangleIdentifier(importName)}`], [], {\n canBreakLine: true,\n });\n }\n if (node.imports.import === 'selective') {\n for (const im of node.imports.elements) {\n if (im.importedSymbol) {\n this.addImport({\n importName: im.alias ? im.alias : im.sourceName,\n importedFqn: im.importedSymbol.fqn,\n });\n }\n }\n\n const imports = node.imports.elements.map((im) => {\n const localName = im.alias ?? im.sourceName;\n const originalName = fmap(fmap(im.importedSymbol, findPythonName), simpleName) ?? im.sourceName;\n\n return localName === originalName\n ? mangleIdentifier(originalName)\n : `${mangleIdentifier(originalName)} as ${mangleIdentifier(localName)}`;\n });\n\n const moduleName = fmap(node.moduleSymbol, findPythonName) ?? guessPythonPackageName(node.packageName);\n\n return new OTree([`from ${moduleName} import ${imports.join(', ')}`], [], {\n canBreakLine: true,\n });\n }\n\n return nimpl(node.node, context);\n }\n\n public override token<A extends ts.SyntaxKind>(node: ts.Token<A>, context: PythonVisitorContext): OTree {\n const text = context.textOf(node);\n const mapped = TOKEN_REWRITES[text];\n if (mapped) {\n return new OTree([mapped]);\n }\n return super.token(node, context);\n }\n\n public override identifier(node: ts.Identifier, context: PythonVisitorContext) {\n const originalIdentifier = node.text;\n\n const explodedParameter = context.currentContext.explodedParameter;\n if (\n context.currentContext.tailPositionArgument &&\n explodedParameter &&\n explodedParameter.type &&\n explodedParameter.variableName === originalIdentifier\n ) {\n return new OTree(\n [],\n propertiesOfStruct(explodedParameter.type, context).map((prop) => new OTree([prop.name, '=', prop.name])),\n { separator: ', ' },\n );\n }\n\n return new OTree([mangleIdentifier(originalIdentifier)]);\n }\n\n public override functionDeclaration(node: ts.FunctionDeclaration, context: PythonVisitorContext): OTree {\n return this.functionLike(node, context);\n }\n\n public override constructorDeclaration(node: ts.ConstructorDeclaration, context: PythonVisitorContext): OTree {\n return this.functionLike(node, context, { isConstructor: true });\n }\n\n public override methodDeclaration(node: ts.MethodDeclaration, context: PythonVisitorContext): OTree {\n return this.functionLike(node, context);\n }\n\n public override expressionStatement(node: ts.ExpressionStatement, context: PythonVisitorContext): OTree {\n const text = context.textOf(node);\n if (text === 'true') {\n return new OTree(['True']);\n }\n if (text === 'false') {\n return new OTree(['False']);\n }\n\n return super.expressionStatement(node, context);\n }\n\n // tslint:disable-next-line:max-line-length\n public functionLike(\n node: ts.FunctionLikeDeclarationBase,\n context: PythonVisitorContext,\n opts: { isConstructor?: boolean } = {},\n ): OTree {\n const methodName = opts.isConstructor ? '__init__' : renderTree(context.convert(node.name));\n\n const [paramDecls, explodedParameter] = this.convertFunctionCallParameters(node.parameters, context);\n\n const ret = new OTree(\n [\n 'def ',\n methodName,\n '(',\n new OTree([], [context.currentContext.inClass ? 'self' : undefined, ...paramDecls], {\n separator: ', ',\n }),\n '): ',\n ],\n [context.updateContext({ explodedParameter, currentMethodName: methodName }).convert(node.body)],\n {\n canBreakLine: true,\n },\n );\n\n return ret;\n }\n\n public override block(node: ts.Block, context: PythonVisitorContext): OTree {\n if (node.statements.length === 0) {\n return new OTree([], ['\\npass'], { indent: 4, canBreakLine: true });\n }\n\n return new OTree([], context.convertAll(node.statements), {\n separator: '',\n indent: 4,\n canBreakLine: true,\n });\n }\n\n public override regularCallExpression(node: ts.CallExpression, context: PythonVisitorContext): OTree {\n let expressionText: OTree | string = context.convert(node.expression);\n\n if (matchAst(node.expression, nodeOfType(ts.SyntaxKind.SuperKeyword)) && context.currentContext.currentMethodName) {\n expressionText = `super().${context.currentContext.currentMethodName}`;\n }\n\n const signature = context.typeChecker.getResolvedSignature(node);\n\n return new OTree(\n [\n expressionText,\n '(',\n this.convertFunctionCallArguments(\n node.arguments,\n context,\n signature?.parameters?.map((p) => p.valueDeclaration as ts.ParameterDeclaration),\n ),\n ')',\n ],\n [],\n { canBreakLine: true },\n );\n }\n\n public override propertyAccessExpression(\n node: ts.PropertyAccessExpression,\n context: PythonVisitorContext,\n submoduleReference: SubmoduleReference | undefined,\n ) {\n const fullText = context.textOf(node);\n if (fullText in BUILTIN_FUNCTIONS) {\n return new OTree([BUILTIN_FUNCTIONS[fullText]]);\n }\n\n const explodedParameter = context.currentContext.explodedParameter;\n\n // We might be in a context where we've exploded this struct into arguments,\n // in which case we will return just the accessed variable.\n if (explodedParameter && context.textOf(node.expression) === explodedParameter.variableName) {\n return context.convert(node.name);\n }\n\n if (submoduleReference != null) {\n return context.convert(submoduleReference.lastNode);\n }\n\n return super.propertyAccessExpression(node, context, submoduleReference);\n }\n\n public override parameterDeclaration(node: ts.ParameterDeclaration, context: PythonVisitorContext): OTree {\n const type = node.type && context.typeOfType(node.type);\n\n if (\n context.currentContext.tailPositionParameter &&\n type &&\n analyzeStructType(context.typeChecker, type) !== false\n ) {\n // Return the parameter that we exploded so that we can use this information\n // while translating the body.\n if (context.currentContext.returnExplodedParameter) {\n context.currentContext.returnExplodedParameter.value = {\n variableName: context.textOf(node.name),\n type,\n };\n }\n\n // Explode to fields\n return new OTree([], ['*', ...propertiesOfStruct(type, context).map(renderStructProperty)], { separator: ', ' });\n }\n\n const suffix = parameterAcceptsUndefined(node, type) ? '=None' : '';\n\n return new OTree([node.dotDotDotToken ? '*' : '', context.convert(node.name), suffix]);\n\n function renderStructProperty(prop: StructProperty): string {\n const sfx = structPropertyAcceptsUndefined(prop) ? '=None' : '';\n return prop.name + sfx;\n }\n }\n\n public override ifStatement(node: ts.IfStatement, context: PythonVisitorContext): OTree {\n const ifStmt = new OTree(['if ', context.convert(node.expression), ': '], [context.convert(node.thenStatement)], {\n canBreakLine: true,\n });\n const elseStmt = node.elseStatement\n ? new OTree(['else: '], [context.convert(node.elseStatement)], {\n canBreakLine: true,\n })\n : undefined;\n\n return elseStmt\n ? new OTree([], [ifStmt, elseStmt], {\n separator: '\\n',\n canBreakLine: true,\n })\n : ifStmt;\n }\n\n public override unknownTypeObjectLiteralExpression(\n node: ts.ObjectLiteralExpression,\n context: PythonVisitorContext,\n ): OTree {\n // Neutralize local modifiers if any for transforming further down.\n const downContext = context.updateContext({\n tailPositionArgument: false,\n variadicArgument: false,\n });\n\n if (context.currentContext.tailPositionArgument && !context.currentContext.variadicArgument) {\n // Guess that it's a struct we can probably inline the kwargs for\n return this.renderObjectLiteralExpression('', '', true, node, downContext);\n }\n return this.renderObjectLiteralExpression('{', '}', false, node, downContext);\n }\n\n public override knownStructObjectLiteralExpression(\n node: ts.ObjectLiteralExpression,\n structType: ObjectLiteralStruct,\n context: PythonVisitorContext,\n ): OTree {\n if (context.currentContext.tailPositionArgument) {\n // We know it's a struct we can DEFINITELY inline the args for\n return this.renderObjectLiteralExpression('', '', true, node, context);\n }\n\n const structName =\n structType.kind === 'struct' ? this.importedNameForType(structType.jsiiSym) : structType.type.symbol.name;\n\n return this.renderObjectLiteralExpression(`${structName}(`, ')', true, node, context);\n }\n\n public override keyValueObjectLiteralExpression(\n node: ts.ObjectLiteralExpression,\n context: PythonVisitorContext,\n ): OTree {\n return this.renderObjectLiteralExpression('{', '}', false, node, context.updateContext({ inMap: true }));\n }\n\n public override translateUnaryOperator(operator: ts.PrefixUnaryOperator) {\n if (operator === ts.SyntaxKind.ExclamationToken) {\n return 'not ';\n }\n return super.translateUnaryOperator(operator);\n }\n\n public renderObjectLiteralExpression(\n prefix: string,\n suffix: string,\n renderObjectLiteralAsKeywords: boolean,\n node: ts.ObjectLiteralExpression,\n context: PythonVisitorContext,\n ): OTree {\n return new OTree([prefix], context.updateContext({ renderObjectLiteralAsKeywords }).convertAll(node.properties), {\n suffix: context.mirrorNewlineBefore(node.properties[0], suffix),\n separator: ', ',\n indent: 4,\n });\n }\n\n public override arrayLiteralExpression(node: ts.ArrayLiteralExpression, context: PythonVisitorContext): OTree {\n return new OTree(['['], context.convertAll(node.elements), {\n suffix: context.mirrorNewlineBefore(node.elements[0], ']'),\n separator: ', ',\n indent: 4,\n });\n }\n\n public override propertyAssignment(node: ts.PropertyAssignment, context: PythonVisitorContext): OTree {\n const mid = context.currentContext.renderObjectLiteralAsKeywords ? '=' : ': ';\n\n // node.name is either an identifier or a string literal. The string literal\n // needs to be converted differently depending on whether it needs to be a\n // string or a keyword argument.\n let name = ts.isStringLiteral(node.name)\n ? new OTree([\n context.currentContext.inMap // If in map, don't mangle the keys\n ? node.name.text\n : mangleIdentifier(node.name.text),\n ])\n : context.convert(node.name);\n\n // If this isn't a computed property, we must quote the key (unless it's rendered as a keyword)\n if (\n context.currentContext.inMap ||\n (!context.currentContext.renderObjectLiteralAsKeywords && !ts.isComputedPropertyName(node.name))\n ) {\n name = new OTree(['\"', name, '\"']);\n }\n\n return new OTree(\n [name, mid, context.updateContext({ inMap: false, tailPositionArgument: false }).convert(node.initializer)],\n [],\n { canBreakLine: true },\n );\n }\n\n public override shorthandPropertyAssignment(\n node: ts.ShorthandPropertyAssignment,\n context: PythonVisitorContext,\n ): OTree {\n let before = '\"';\n let mid = '\": ';\n\n if (context.currentContext.renderObjectLiteralAsKeywords) {\n before = '';\n mid = '=';\n }\n\n return new OTree([before, context.convert(node.name), mid, context.convert(node.name)], [], { canBreakLine: true });\n }\n\n public override newExpression(node: ts.NewExpression, context: PythonVisitorContext): OTree {\n return new OTree(\n [context.convert(node.expression), '(', this.convertFunctionCallArguments(node.arguments, context), ')'],\n [],\n { canBreakLine: true },\n );\n }\n\n public override variableDeclaration(node: ts.VariableDeclaration, context: PythonVisitorContext): OTree {\n let fallback = 'object';\n if (node.type) {\n fallback = node.type.getText();\n }\n\n if (!node.initializer) {\n const type =\n (node.type && context.typeOfType(node.type)) ||\n (node.initializer && context.typeOfExpression(node.initializer));\n\n const renderedType = type ? this.renderType(node, type, context, fallback) : fallback;\n return new OTree(['# ', context.convert(node.name), ': ', renderedType], []);\n }\n\n return new OTree([context.convert(node.name), ' = ', context.convert(node.initializer)], [], {\n canBreakLine: true,\n });\n }\n\n public thisKeyword() {\n return new OTree(['self']);\n }\n\n public override forOfStatement(node: ts.ForOfStatement, context: PythonVisitorContext): OTree {\n // This is what a \"for (const x of ...)\" looks like in the AST\n let variableName = '???';\n\n matchAst(\n node.initializer,\n nodeOfType(ts.SyntaxKind.VariableDeclarationList, nodeOfType('var', ts.SyntaxKind.VariableDeclaration)),\n (bindings) => {\n variableName = mangleIdentifier(context.textOf(bindings.var.name));\n },\n );\n\n return new OTree(\n ['for ', variableName, ' in ', context.convert(node.expression), ': '],\n [context.convert(node.statement)],\n { canBreakLine: true },\n );\n }\n\n public override classDeclaration(node: ts.ClassDeclaration, context: PythonVisitorContext): OTree {\n const allHeritageClauses = Array.from(node.heritageClauses ?? []).flatMap((h) => Array.from(h.types));\n\n // List of booleans matching `allHeritage` array\n const isJsii = allHeritageClauses.map(\n (e) =>\n fmap(context.typeOfExpression(e.expression), (type) => isJsiiProtocolType(context.typeChecker, type)) ?? false,\n );\n\n const jsiiImplements = allHeritageClauses.filter((_, i) => isJsii[i]);\n\n const inlineHeritage = allHeritageClauses.filter((_, i) => !isJsii[i]);\n const hasHeritage = inlineHeritage.length > 0;\n\n const members = context.updateContext({ inClass: true }).convertAll(node.members);\n if (members.length === 0) {\n members.push(new OTree(['\\npass'], []));\n }\n\n const ret = new OTree(\n [\n ...jsiiImplements.flatMap((i) => ['@jsii.implements(', context.convert(i.expression), ')\\n']),\n 'class ',\n node.name ? context.textOf(node.name) : '???',\n hasHeritage ? '(' : '',\n ...inlineHeritage.map((t) => context.convert(t.expression)),\n hasHeritage ? ')' : '',\n ': ',\n ],\n members,\n {\n indent: 4,\n canBreakLine: true,\n },\n );\n\n return ret;\n }\n\n public override printStatement(args: ts.NodeArray<ts.Expression>, context: PythonVisitorContext) {\n return new OTree(['print', '(', new OTree([], context.convertAll(args), { separator: ', ' }), ')']);\n }\n\n public override propertyDeclaration(_node: ts.PropertyDeclaration, _context: PythonVisitorContext): OTree {\n return new OTree([]);\n }\n\n /**\n * We have to do something special here\n *\n * Best-effort, we remember the fields of struct interfaces and keep track of\n * them. Fortunately we can determine from the name whether what to do.\n */\n public override interfaceDeclaration(_node: ts.InterfaceDeclaration, _context: PythonVisitorContext): OTree {\n // Whatever we do, nothing here will have a representation\n return NO_SYNTAX;\n }\n\n public override propertySignature(_node: ts.PropertySignature, _context: PythonVisitorContext): OTree {\n // Does not represent in Python\n return NO_SYNTAX;\n }\n\n public override methodSignature(_node: ts.MethodSignature, _context: PythonVisitorContext): OTree {\n // Does not represent in Python\n return NO_SYNTAX;\n }\n\n public override asExpression(node: ts.AsExpression, context: PythonVisitorContext): OTree {\n return context.convert(node.expression);\n }\n\n public override stringLiteral(\n node: ts.StringLiteral | ts.NoSubstitutionTemplateLiteral,\n _context: PythonVisitorContext,\n ): OTree {\n if (node.getText(node.getSourceFile()).includes('\\n')) {\n return new OTree([\n '\"\"\"',\n node.text\n // Escape all occurrences of back-slash once more\n .replace(/\\\\/g, '\\\\\\\\')\n // Escape only the first one in triple-quotes\n .replace(/\"\"\"/g, '\\\\\"\"\"'),\n '\"\"\"',\n ]);\n }\n return new OTree([JSON.stringify(node.text)]);\n }\n\n public override templateExpression(node: ts.TemplateExpression, context: PythonVisitorContext): OTree {\n const parts = new Array<string>();\n if (node.head.rawText) {\n parts.push(quoteStringLiteral(node.head.rawText));\n }\n for (const span of node.templateSpans) {\n parts.push(`{${context.textOf(span.expression)}}`);\n if (span.literal.rawText) {\n parts.push(quoteStringLiteral(span.literal.rawText));\n }\n }\n\n const quote = parts.some((part) => part.includes('\\n')) ? '\"\"\"' : '\"';\n\n return new OTree([`f${quote}`, ...parts, quote]);\n }\n\n public override maskingVoidExpression(node: ts.VoidExpression, _context: PythonVisitorContext): OTree {\n const arg = voidExpressionString(node);\n if (arg === 'block') {\n return new OTree(['# ...'], [], { canBreakLine: true });\n }\n if (arg === '...') {\n return new OTree(['...']);\n }\n return NO_SYNTAX;\n }\n\n /**\n * Convert parameters\n *\n * If the last one has the type of a known struct, explode to keyword-only arguments.\n *\n * Returns a pair of [decls, excploded-var-name].\n */\n // tslint:disable-next-line:max-line-length\n private convertFunctionCallParameters(\n params: ts.NodeArray<ts.ParameterDeclaration> | undefined,\n context: PythonVisitorContext,\n ): [Array<string | OTree>, StructVar | undefined] {\n if (!params || params.length === 0) {\n return [[], undefined];\n }\n\n const returnExplodedParameter: ReturnFromTree<StructVar> = {};\n\n // Convert the last element differently\n const converted: Array<string | OTree> =\n params.length > 0\n ? [\n ...context.convertAll(params.slice(0, params.length - 1)),\n context\n .updateContext({\n tailPositionParameter: true,\n returnExplodedParameter,\n })\n .convert(last(params)),\n ]\n : [];\n\n return [converted, returnExplodedParameter.value];\n }\n\n /**\n * Convert arguments.\n *\n * If the last argument:\n *\n * - is an object literal, explode it.\n * - is itself an exploded argument in our call signature, explode the fields\n */\n private convertFunctionCallArguments(\n args: ts.NodeArray<ts.Expression> | undefined,\n context: PythonVisitorContext,\n parameterDeclarations?: readonly ts.ParameterDeclaration[],\n ) {\n if (!args) {\n return NO_SYNTAX;\n }\n\n const converted = context.convertWithModifier(args, (ctx, _arg, index) => {\n const decl = parameterDeclarations?.[Math.min(index, parameterDeclarations.length - 1)];\n const variadicArgument = decl?.dotDotDotToken != null;\n const tailPositionArgument = index >= args.length - 1;\n\n return ctx.updateContext({ variadicArgument, tailPositionArgument });\n });\n\n return new OTree([], converted, { separator: ', ', indent: 4 });\n }\n\n /**\n * Render a type.\n *\n * Not usually a thing in Python, but useful for declared variables.\n */\n private renderType(owningNode: ts.Node, type: ts.Type, renderer: PythonVisitorContext, fallback: string): string {\n return doRender(determineJsiiType(renderer.typeChecker, type));\n\n // eslint-disable-next-line consistent-return\n function doRender(jsiiType: JsiiType): string {\n switch (jsiiType.kind) {\n case 'unknown':\n return fallback;\n case 'error':\n renderer.report(owningNode, jsiiType.message);\n return fallback;\n case 'map':\n return `Dict[str, ${doRender(jsiiType.elementType)}]`;\n case 'list':\n return `List[${doRender(jsiiType.elementType)}]`;\n case 'namedType':\n // in this case, the fallback will hold more information than jsiiType.name\n return fallback;\n case 'builtIn':\n switch (jsiiType.builtIn) {\n case 'boolean':\n return 'bool';\n case 'number':\n return 'number';\n case 'string':\n return 'str';\n case 'any':\n return 'Any';\n default:\n return jsiiType.builtIn;\n }\n }\n }\n }\n\n private addImport(x: ImportedModule) {\n this.imports.push(x);\n // Sort in reverse order of FQN length\n sortBy(this.imports, (i) => [-i.importedFqn.length]);\n }\n\n /**\n * Find the import for the FQNs submodule, and return it and the rest of the name\n */\n private importedNameForType(jsiiSym: JsiiSymbol) {\n // Look for an existing import that contains this symbol\n for (const imp of this.imports) {\n if (jsiiSym.fqn.startsWith(`${imp.importedFqn}.`)) {\n const remainder = jsiiSym.fqn.substring(imp.importedFqn.length + 1);\n return `${imp.importName}.${remainder}`;\n }\n }\n\n // Otherwise look up the Python name of this symbol (but not for fake imports from tests)\n const pythonName = findPythonName(jsiiSym);\n if (!jsiiSym.fqn.startsWith('fake_jsii.') && pythonName) {\n this.syntheticImportsToAdd.push(pythonName);\n }\n return simpleName(jsiiSym.fqn);\n }\n\n private renderSyntheticImports(): string[] {\n const grouped = groupBy(this.syntheticImportsToAdd, namespaceName);\n return Object.entries(grouped).map(([namespaceFqn, fqns]) => {\n const simpleNames = fqns.map(simpleName);\n return `from ${namespaceFqn} import ${simpleNames.join(', ')}\\n`;\n });\n }\n}\n\nfunction mangleIdentifier(originalIdentifier: string) {\n if (startsWithUppercase(originalIdentifier)) {\n // Probably a class, leave as-is\n return originalIdentifier;\n }\n // Turn into snake-case\n const cased = originalIdentifier.replace(/[^A-Z][A-Z]/g, (m) => `${m[0].slice(0, 1)}_${m.slice(1).toLowerCase()}`);\n return IDENTIFIER_KEYWORDS.includes(cased) ? `${cased}_` : cased;\n}\n\nconst BUILTIN_FUNCTIONS: { [key: string]: string } = {\n 'console.log': 'print',\n 'console.error': 'sys.stderr.write',\n 'Math.random': 'random.random',\n};\n\nconst TOKEN_REWRITES: { [key: string]: string } = {\n this: 'self',\n true: 'True',\n false: 'False',\n};\n\nconst IDENTIFIER_KEYWORDS: string[] = ['lambda'];\n\nfunction last<A>(xs: readonly A[]): A {\n return xs[xs.length - 1];\n}\n\n/**\n * Find the Python name of a module or type\n */\nfunction findPythonName(jsiiSymbol: JsiiSymbol): string | undefined {\n if (!jsiiSymbol.sourceAssembly?.assembly) {\n // Don't have accurate info, just guess\n return jsiiSymbol.symbolType !== 'module' ? simpleName(jsiiSymbol.fqn) : guessPythonPackageName(jsiiSymbol.fqn);\n }\n\n const asm = jsiiSymbol.sourceAssembly?.assembly;\n return recurse(jsiiSymbol.fqn);\n\n function recurse(fqn: string): string {\n if (fqn === asm.name) {\n return jsiiTargetParameter(asm, 'python.module') ?? guessPythonPackageName(fqn);\n }\n if (asm.submodules?.[fqn]) {\n const modName = jsiiTargetParameter(asm.submodules[fqn], 'python.module');\n if (modName) {\n return modName;\n }\n }\n\n return `${recurse(namespaceName(fqn))}.${simpleName(jsiiSymbol.fqn)}`;\n }\n}\n\n/**\n * Pythonify an assembly name and hope it is correct\n */\nfunction guessPythonPackageName(ref: string) {\n return ref.replace(/^@/, '').replace(/\\//g, '.').replace(/-/g, '_');\n}\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RECORD_REFERENCES_VERSION = void 0;
|
|
4
|
+
// This is separate from "record-references.ts" to avoid a load cycle.
|
|
5
|
+
exports.RECORD_REFERENCES_VERSION = '2';
|
|
6
|
+
//# sourceMappingURL=record-references-version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record-references-version.js","sourceRoot":"","sources":["../../src/languages/record-references-version.ts"],"names":[],"mappings":";;;AAAA,sEAAsE;AACzD,QAAA,yBAAyB,GAAG,GAAG,CAAC","sourcesContent":["// This is separate from \"record-references.ts\" to avoid a load cycle.\nexport const RECORD_REFERENCES_VERSION = '2';\n"]}
|