jsii-rosetta 1.76.0 → 4.9.0-dev.1
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 +33 -23
- 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
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import * as ts from 'typescript';
|
|
2
|
+
import { DefaultVisitor } from './default';
|
|
2
3
|
import { TargetLanguage } from '../languages/target-language';
|
|
3
4
|
import { OTree } from '../o-tree';
|
|
4
5
|
import { AstRenderer } from '../renderer';
|
|
5
6
|
import { SubmoduleReference } from '../submodule-reference';
|
|
6
7
|
import { Spans } from '../typescript/visible-spans';
|
|
7
|
-
import { DefaultVisitor } from './default';
|
|
8
8
|
interface RecordReferencesContext {
|
|
9
9
|
}
|
|
10
|
-
|
|
10
|
+
type RecordReferencesRenderer = AstRenderer<RecordReferencesContext>;
|
|
11
11
|
/**
|
|
12
12
|
* A visitor that collects all types referenced in a particular piece of sample code
|
|
13
13
|
*/
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.RecordReferencesVisitor = void 0;
|
|
4
|
+
const default_1 = require("./default");
|
|
5
|
+
const record_references_version_1 = require("./record-references-version");
|
|
4
6
|
const jsii_utils_1 = require("../jsii/jsii-utils");
|
|
5
7
|
const target_language_1 = require("../languages/target-language");
|
|
6
8
|
const o_tree_1 = require("../o-tree");
|
|
7
|
-
const default_1 = require("./default");
|
|
8
9
|
/**
|
|
9
10
|
* A visitor that collects all types referenced in a particular piece of sample code
|
|
10
11
|
*/
|
|
@@ -104,5 +105,5 @@ class RecordReferencesVisitor extends default_1.DefaultVisitor {
|
|
|
104
105
|
}
|
|
105
106
|
}
|
|
106
107
|
exports.RecordReferencesVisitor = RecordReferencesVisitor;
|
|
107
|
-
RecordReferencesVisitor.VERSION =
|
|
108
|
+
RecordReferencesVisitor.VERSION = record_references_version_1.RECORD_REFERENCES_VERSION;
|
|
108
109
|
//# sourceMappingURL=record-references.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record-references.js","sourceRoot":"","sources":["../../src/languages/record-references.ts"],"names":[],"mappings":"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","sourcesContent":["import * as ts from 'typescript';\n\nimport { DefaultVisitor } from './default';\nimport { RECORD_REFERENCES_VERSION } from './record-references-version';\nimport { lookupJsiiSymbol } from '../jsii/jsii-utils';\nimport { TargetLanguage } from '../languages/target-language';\nimport { OTree, NO_SYNTAX } from '../o-tree';\nimport { AstRenderer } from '../renderer';\nimport { SubmoduleReference } from '../submodule-reference';\nimport { Spans } from '../typescript/visible-spans';\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\ninterface RecordReferencesContext {}\n\ntype RecordReferencesRenderer = AstRenderer<RecordReferencesContext>;\n\n/**\n * A visitor that collects all types referenced in a particular piece of sample code\n */\nexport class RecordReferencesVisitor extends DefaultVisitor<RecordReferencesContext> {\n public static readonly VERSION = RECORD_REFERENCES_VERSION;\n\n public readonly language = TargetLanguage.VISUALIZE;\n public readonly defaultContext = {};\n private readonly references = new Set<string>();\n\n public constructor(private readonly visibleSpans: Spans) {\n super();\n }\n\n public fqnsReferenced() {\n return Array.from(this.references).sort();\n }\n\n public mergeContext(old: RecordReferencesContext, update: Partial<RecordReferencesContext>): RecordReferencesContext {\n return Object.assign({}, old, update);\n }\n\n /**\n * For a variable declaration, a type counts as \"referenced\" if it gets assigned a value via an initializer\n *\n * This skips \"declare\" statements which aren't really interesting.\n */\n public override variableDeclaration(node: ts.VariableDeclaration, renderer: RecordReferencesRenderer): OTree {\n if (this.visibleSpans.containsStartOfNode(node) && node.initializer) {\n const type =\n (node.type && renderer.typeOfType(node.type)) ||\n (node.initializer && renderer.typeOfExpression(node.initializer));\n\n this.recordSymbol(type.symbol, renderer);\n }\n\n return super.variableDeclaration(node, renderer);\n }\n\n public override newExpression(node: ts.NewExpression, context: RecordReferencesRenderer): OTree {\n // Constructor\n if (this.visibleSpans.containsStartOfNode(node)) {\n this.recordNode(node.expression, context);\n if (node.arguments) {\n this.visitArgumentTypes(node.arguments, context);\n }\n }\n\n return super.newExpression(node, context);\n }\n\n public override propertyAccessExpression(\n node: ts.PropertyAccessExpression,\n context: RecordReferencesRenderer,\n submoduleReference: SubmoduleReference | undefined,\n ): OTree {\n if (this.visibleSpans.containsStartOfNode(node)) {\n // The property itself\n this.recordNode(node, context);\n\n // Not currently considering the return type as \"referenced\"\n }\n\n return super.propertyAccessExpression(node, context, submoduleReference);\n }\n\n public override regularCallExpression(node: ts.CallExpression, context: RecordReferencesRenderer): OTree {\n if (this.visibleSpans.containsStartOfNode(node)) {\n // The method itself\n this.recordNode(node.expression, context);\n\n if (node.arguments) {\n this.visitArgumentTypes(node.arguments, context);\n }\n\n // Not currently considering the return type as \"referenced\"\n }\n\n return super.regularCallExpression(node, context);\n }\n\n public override objectLiteralExpression(node: ts.ObjectLiteralExpression, context: RecordReferencesRenderer): OTree {\n context.convertAll(node.properties);\n return NO_SYNTAX;\n }\n\n public override propertyAssignment(node: ts.PropertyAssignment, renderer: RecordReferencesRenderer): OTree {\n const type = renderer.typeOfExpression(node.initializer).getNonNullableType();\n this.recordSymbol(type?.symbol, renderer);\n return super.propertyAssignment(node, renderer);\n }\n\n public override shorthandPropertyAssignment(\n node: ts.ShorthandPropertyAssignment,\n renderer: RecordReferencesRenderer,\n ): OTree {\n const type = renderer.typeOfExpression(node.name).getNonNullableType();\n this.recordSymbol(type?.symbol, renderer);\n return super.shorthandPropertyAssignment(node, renderer);\n }\n\n /**\n * Visit the arguments by type (instead of by node)\n *\n * This will make sure we recognize the use of a `BucketProps` in a `new Bucket(..., { ... })` call.\n */\n private visitArgumentTypes(args: ts.NodeArray<ts.Expression>, context: RecordReferencesRenderer) {\n for (const argument of args) {\n const type = context.inferredTypeOfExpression(argument);\n this.recordSymbol(type?.symbol, context);\n }\n }\n\n private recordNode(node: ts.Node, context: RecordReferencesRenderer) {\n this.recordSymbol(context.typeChecker.getSymbolAtLocation(node), context);\n }\n\n private recordSymbol(symbol: ts.Symbol | undefined, context: RecordReferencesRenderer) {\n if (!symbol) {\n return;\n }\n const jsiiSym = lookupJsiiSymbol(context.typeChecker, symbol);\n if (!jsiiSym) {\n return;\n }\n\n this.references.add(jsiiSym.fqn);\n }\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.supportsTransitiveSubmoduleAccess = exports.targetName = exports.TargetLanguage = void 0;
|
|
4
|
-
const assert = require("assert");
|
|
4
|
+
const assert = require("node:assert");
|
|
5
5
|
var TargetLanguage;
|
|
6
6
|
(function (TargetLanguage) {
|
|
7
7
|
/** @internal an alias of PYTHON to make intent clear when language is irrelevant */
|
|
@@ -58,6 +58,7 @@ exports.targetName = targetName;
|
|
|
58
58
|
*/
|
|
59
59
|
function supportsTransitiveSubmoduleAccess(language) {
|
|
60
60
|
switch (language) {
|
|
61
|
+
case TargetLanguage.VISUALIZE:
|
|
61
62
|
case TargetLanguage.PYTHON:
|
|
62
63
|
return true;
|
|
63
64
|
case TargetLanguage.CSHARP:
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"target-language.js","sourceRoot":"","sources":["../../src/languages/target-language.ts"],"names":[],"mappings":";;;AAAA,sCAAsC;AAEtC,IAAY,cAOX;AAPD,WAAY,cAAc;IACxB,oFAAoF;IACpF,sCAAoB,CAAA;IACpB,mCAAiB,CAAA;IACjB,mCAAiB,CAAA;IACjB,+BAAa,CAAA;IACb,2BAAS,CAAA;AACX,CAAC,EAPW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAOzB;AAED,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;AAOtE;;;;GAIG;AACH,SAAgB,UAAU,CAAC,QAAwB;IACjD,4FAA4F;IAC5F,sFAAsF;IACtF,MAAM,CAAC,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,kDAAkD,QAAQ,EAAE,CAAC,CAAC;IAE3G,QAAQ,QAAQ,EAAE;QAChB,KAAK,cAAc,CAAC,SAAS,CAAC;QAC9B,KAAK,cAAc,CAAC,MAAM;YACxB,OAAO,QAAQ,CAAC;QAClB,KAAK,cAAc,CAAC,MAAM;YACxB,OAAO,QAAQ,CAAC;QAClB,KAAK,cAAc,CAAC,IAAI;YACtB,OAAO,MAAM,CAAC;QAChB,KAAK,cAAc,CAAC,EAAE;YACpB,OAAO,IAAI,CAAC;KACf;AACH,CAAC;AAhBD,gCAgBC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,SAAgB,iCAAiC,CAAC,QAAwB;IACxE,QAAQ,QAAQ,EAAE;QAChB,KAAK,cAAc,CAAC,SAAS,CAAC;QAC9B,KAAK,cAAc,CAAC,MAAM;YACxB,OAAO,IAAI,CAAC;QACd,KAAK,cAAc,CAAC,MAAM;YACxB,OAAO,IAAI,CAAC;QACd,KAAK,cAAc,CAAC,IAAI;YACtB,OAAO,KAAK,CAAC;QACf,KAAK,cAAc,CAAC,EAAE;YACpB,OAAO,KAAK,CAAC;KAChB;AACH,CAAC;AAZD,8EAYC","sourcesContent":["import * as assert from 'node:assert';\n\nexport enum TargetLanguage {\n /** @internal an alias of PYTHON to make intent clear when language is irrelevant */\n VISUALIZE = 'python',\n PYTHON = 'python',\n CSHARP = 'csharp',\n JAVA = 'java',\n GO = 'go',\n}\n\nconst VALID_TARGET_LANGUAGES = new Set(Object.values(TargetLanguage));\n\nexport function targetName(language: TargetLanguage.PYTHON | TargetLanguage.VISUALIZE): 'python';\nexport function targetName(language: TargetLanguage.CSHARP): 'dotnet';\nexport function targetName(language: TargetLanguage.JAVA): 'java';\nexport function targetName(language: TargetLanguage.GO): 'go';\nexport function targetName(language: TargetLanguage): 'python' | 'dotnet' | 'java' | 'go';\n/**\n * @param language a possible value for `TargetLanguage`.\n *\n * @returns the name of the target configuration block for the given language.\n */\nexport function targetName(language: TargetLanguage): 'python' | 'dotnet' | 'java' | 'go' {\n // The TypeScript compiler should guarantee the below `switch` statement covers all possible\n // values of the TargetLanguage enum, but we add an assert here for clarity of intent.\n assert(VALID_TARGET_LANGUAGES.has(language), `Invalid/unexpected target language identifier: ${language}`);\n\n switch (language) {\n case TargetLanguage.VISUALIZE:\n case TargetLanguage.PYTHON:\n return 'python';\n case TargetLanguage.CSHARP:\n return 'dotnet';\n case TargetLanguage.JAVA:\n return 'java';\n case TargetLanguage.GO:\n return 'go';\n }\n}\n\n/**\n * Determines whether the supplied language supports transitive submodule\n * access (similar to how TypeScript/Javascript allows to use a partially\n * qualified name to access a namespace-nested value).\n *\n * If `true`, imports will mirror those found in the original TypeScript\n * code, namespace-traversing property accesses will be rendered as such. This\n * means the following snippet would be transformed \"as-is\":\n * ```ts\n * import * as cdk from 'aws-cdk-lib';\n * new cdk.aws_s3.Bucket(this, 'Bucket');\n * ```\n *\n * If `false` on the other hand, each used submodule will be imported\n * separately and namespace-traversing property accesses will be replaced with\n * references to the separately-imported submodule. This means the above\n * snippet would be transformed as if it had been modifired to:\n * ```ts\n * import * as aws_s3 from 'aws-cdk-lib/aws-s3';\n * new aws_s3.Bucket(this, 'Bucket');\n * ```\n */\nexport function supportsTransitiveSubmoduleAccess(language: TargetLanguage): boolean {\n switch (language) {\n case TargetLanguage.VISUALIZE:\n case TargetLanguage.PYTHON:\n return true;\n case TargetLanguage.CSHARP:\n return true;\n case TargetLanguage.JAVA:\n return false;\n case TargetLanguage.GO:\n return false;\n }\n}\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as ts from 'typescript';
|
|
2
|
+
import { TargetLanguage } from './target-language';
|
|
2
3
|
import { OTree } from '../o-tree';
|
|
3
4
|
import { AstRenderer, AstHandler, CommentSyntax } from '../renderer';
|
|
4
5
|
import { ImportStatement } from '../typescript/imports';
|
|
5
|
-
import { TargetLanguage } from './target-language';
|
|
6
6
|
export declare class VisualizeAstVisitor implements AstHandler<void> {
|
|
7
7
|
private readonly includeHandlerNames?;
|
|
8
8
|
readonly language = TargetLanguage.VISUALIZE;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.VisualizeAstVisitor = void 0;
|
|
4
|
+
const target_language_1 = require("./target-language");
|
|
4
5
|
const o_tree_1 = require("../o-tree");
|
|
5
6
|
const renderer_1 = require("../renderer");
|
|
6
|
-
const target_language_1 = require("./target-language");
|
|
7
7
|
class VisualizeAstVisitor {
|
|
8
8
|
constructor(includeHandlerNames) {
|
|
9
9
|
this.includeHandlerNames = includeHandlerNames;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visualize.js","sourceRoot":"","sources":["../../src/languages/visualize.ts"],"names":[],"mappings":"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","sourcesContent":["import * as ts from 'typescript';\n\nimport { TargetLanguage } from './target-language';\nimport { OTree } from '../o-tree';\nimport { AstRenderer, AstHandler, nimpl, CommentSyntax } from '../renderer';\nimport { ImportStatement } from '../typescript/imports';\n\nexport class VisualizeAstVisitor implements AstHandler<void> {\n public readonly language = TargetLanguage.VISUALIZE;\n public readonly defaultContext: void = undefined;\n\n public constructor(private readonly includeHandlerNames?: boolean) {}\n\n public mergeContext(_old: any, _update: any): any {\n return undefined;\n }\n\n public commentRange(node: CommentSyntax, _context: AstRenderer<void>): OTree {\n return new OTree(['(Comment', node.text], [], { suffix: ')' });\n }\n\n public jsDoc(_node: ts.JSDoc, _context: AstRenderer<void>): OTree {\n // Already handled by other doc handlers\n return new OTree([]);\n }\n\n public sourceFile(node: ts.SourceFile, context: AstRenderer<void>): OTree {\n return new OTree(context.convertAll(node.statements));\n }\n\n public importStatement(node: ImportStatement, context: AstRenderer<void>): OTree {\n return this.defaultNode('importStatement', node.node, context);\n }\n\n public functionDeclaration(node: ts.FunctionDeclaration, children: AstRenderer<void>): OTree {\n return this.defaultNode('functionDeclaration', node, children);\n }\n\n public stringLiteral(node: ts.StringLiteral | ts.NoSubstitutionTemplateLiteral, children: AstRenderer<void>): OTree {\n return this.defaultNode('stringLiteral', node, children);\n }\n\n public numericLiteral(node: ts.NumericLiteral, children: AstRenderer<void>): OTree {\n return this.defaultNode('numericLiteral', node, children);\n }\n\n public identifier(node: ts.Identifier, children: AstRenderer<void>): OTree {\n return this.defaultNode('identifier', node, children);\n }\n\n public block(node: ts.Block, children: AstRenderer<void>): OTree {\n return this.defaultNode('block', node, children);\n }\n\n public parameterDeclaration(node: ts.ParameterDeclaration, children: AstRenderer<void>): OTree {\n return this.defaultNode('parameterDeclaration', node, children);\n }\n\n public returnStatement(node: ts.ReturnStatement, children: AstRenderer<void>): OTree {\n return this.defaultNode('returnStatement', node, children);\n }\n\n public binaryExpression(node: ts.BinaryExpression, children: AstRenderer<void>): OTree {\n return this.defaultNode('binaryExpression', node, children);\n }\n\n public ifStatement(node: ts.IfStatement, context: AstRenderer<void>): OTree {\n return this.defaultNode('ifStatement', node, context);\n }\n\n public propertyAccessExpression(node: ts.PropertyAccessExpression, context: AstRenderer<void>): OTree {\n return this.defaultNode('propertyAccessExpression', node, context);\n }\n\n public callExpression(node: ts.CallExpression, context: AstRenderer<void>): OTree {\n return this.defaultNode('callExpression', node, context);\n }\n\n public expressionStatement(node: ts.ExpressionStatement, context: AstRenderer<void>): OTree {\n return this.defaultNode('expressionStatement', node, context);\n }\n\n public token<A extends ts.SyntaxKind>(node: ts.Token<A>, context: AstRenderer<void>): OTree {\n return this.defaultNode('token', node, context);\n }\n\n public objectLiteralExpression(node: ts.ObjectLiteralExpression, context: AstRenderer<void>): OTree {\n return this.defaultNode('objectLiteralExpression', node, context);\n }\n\n public newExpression(node: ts.NewExpression, context: AstRenderer<void>): OTree {\n return this.defaultNode('newExpression', node, context);\n }\n\n public awaitExpression(node: ts.AwaitExpression, context: AstRenderer<void>): OTree {\n return this.defaultNode('await', node, context);\n }\n\n public propertyAssignment(node: ts.PropertyAssignment, context: AstRenderer<void>): OTree {\n return this.defaultNode('propertyAssignment', node, context);\n }\n\n public variableStatement(node: ts.VariableStatement, context: AstRenderer<void>): OTree {\n return this.defaultNode('variableStatement', node, context);\n }\n\n public variableDeclarationList(node: ts.VariableDeclarationList, context: AstRenderer<void>): OTree {\n return this.defaultNode('variableDeclarationList', node, context);\n }\n\n public variableDeclaration(node: ts.VariableDeclaration, context: AstRenderer<void>): OTree {\n return this.defaultNode('variableDeclaration', node, context);\n }\n\n public arrayLiteralExpression(node: ts.ArrayLiteralExpression, context: AstRenderer<void>): OTree {\n return this.defaultNode('arrayLiteralExpression', node, context);\n }\n\n public shorthandPropertyAssignment(node: ts.ShorthandPropertyAssignment, context: AstRenderer<void>): OTree {\n return this.defaultNode('shorthandPropertyAssignment', node, context);\n }\n\n public forOfStatement(node: ts.ForOfStatement, context: AstRenderer<void>): OTree {\n return this.defaultNode('forOfStatement', node, context);\n }\n\n public classDeclaration(node: ts.ClassDeclaration, context: AstRenderer<void>): OTree {\n return this.defaultNode('classDeclaration', node, context);\n }\n\n public constructorDeclaration(node: ts.ConstructorDeclaration, context: AstRenderer<void>): OTree {\n return this.defaultNode('constructorDeclaration', node, context);\n }\n\n public propertyDeclaration(node: ts.PropertyDeclaration, context: AstRenderer<void>): OTree {\n return this.defaultNode('propertyDeclaration', node, context);\n }\n\n public computedPropertyName(node: ts.Expression, context: AstRenderer<void>): OTree {\n return this.defaultNode('computedPropertyName', node, context);\n }\n\n public methodDeclaration(node: ts.MethodDeclaration, context: AstRenderer<void>): OTree {\n return this.defaultNode('methodDeclaration', node, context);\n }\n\n public interfaceDeclaration(node: ts.InterfaceDeclaration, context: AstRenderer<void>): OTree {\n return this.defaultNode('interfaceDeclaration', node, context);\n }\n\n public propertySignature(node: ts.PropertySignature, context: AstRenderer<void>): OTree {\n return this.defaultNode('propertySignature', node, context);\n }\n\n public methodSignature(node: ts.MethodSignature, context: AstRenderer<void>): OTree {\n return this.defaultNode('methodSignature', node, context);\n }\n\n public asExpression(node: ts.AsExpression, context: AstRenderer<void>): OTree {\n return this.defaultNode('asExpression', node, context);\n }\n\n public prefixUnaryExpression(node: ts.PrefixUnaryExpression, context: AstRenderer<void>): OTree {\n return this.defaultNode('prefixUnaryExpression', node, context);\n }\n\n public spreadElement(node: ts.SpreadElement, context: AstRenderer<void>): OTree {\n return this.defaultNode('spreadElement', node, context);\n }\n\n public spreadAssignment(node: ts.SpreadAssignment, context: AstRenderer<void>): OTree {\n return this.defaultNode('spreadAssignment', node, context);\n }\n\n public ellipsis(node: ts.SpreadAssignment | ts.SpreadElement, context: AstRenderer<void>): OTree {\n return this.defaultNode('ellipsis', node, context);\n }\n\n public templateExpression(node: ts.TemplateExpression, context: AstRenderer<void>): OTree {\n return this.defaultNode('templateExpression', node, context);\n }\n\n public elementAccessExpression(node: ts.ElementAccessExpression, context: AstRenderer<void>): OTree {\n return this.defaultNode('elementAccessExpression', node, context);\n }\n\n public nonNullExpression(node: ts.NonNullExpression, context: AstRenderer<void>): OTree {\n return this.defaultNode('nonNullExpression', node, context);\n }\n\n public parenthesizedExpression(node: ts.ParenthesizedExpression, context: AstRenderer<void>): OTree {\n return this.defaultNode('parenthesizedExpression', node, context);\n }\n\n public maskingVoidExpression(node: ts.VoidExpression, context: AstRenderer<void>): OTree {\n return this.defaultNode('maskingVoidExpression', node, context);\n }\n\n private defaultNode(handlerName: string, node: ts.Node, context: AstRenderer<void>): OTree {\n return nimpl(node, context, {\n additionalInfo: this.includeHandlerNames ? handlerName : '',\n });\n }\n}\n"]}
|
package/lib/logging.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.debug = exports.info = exports.error = exports.warn = exports.configure = exports.level = exports.LEVEL_VERBOSE = exports.LEVEL_INFO = exports.Level = void 0;
|
|
4
|
-
const util = require("util");
|
|
4
|
+
const util = require("node:util");
|
|
5
5
|
var Level;
|
|
6
6
|
(function (Level) {
|
|
7
7
|
Level[Level["ERROR"] = -2] = "ERROR";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logging.js","sourceRoot":"","sources":["../src/logging.ts"],"names":[],"mappings":";;;AAAA,kCAAkC;AAElC,IAAY,KAMX;AAND,WAAY,KAAK;IACf,oCAAU,CAAA;IACV,kCAAS,CAAA;IACT,mCAAS,CAAA;IACT,iCAAQ,CAAA;IACR,uCAAW,CAAA;AACb,CAAC,EANW,KAAK,GAAL,aAAK,KAAL,aAAK,QAMhB;AAEY,QAAA,UAAU,GAAW,KAAK,CAAC,IAAI,CAAC;AAChC,QAAA,aAAa,GAAW,KAAK,CAAC,OAAO,CAAC;AAEnD,4DAA4D;AACjD,QAAA,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AAE/B,SAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAoB;IAC7D,aAAK,GAAG,QAAQ,CAAC;AACnB,CAAC;AAFD,8BAEC;AAED,SAAgB,IAAI,CAAC,GAAW,EAAE,GAAG,IAAW;IAC9C,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;AAChC,CAAC;AAFD,oBAEC;AAED,SAAgB,KAAK,CAAC,GAAW,EAAE,GAAG,IAAW;IAC/C,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;AACjC,CAAC;AAFD,sBAEC;AAED,SAAgB,IAAI,CAAC,GAAW,EAAE,GAAG,IAAW;IAC9C,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;AAChC,CAAC;AAFD,oBAEC;AAED,SAAgB,KAAK,CAAC,GAAW,EAAE,GAAG,IAAW;IAC/C,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;AACnC,CAAC;AAFD,sBAEC;AAED,SAAS,GAAG,CAAC,YAAmB,EAAE,GAAW,EAAE,GAAG,IAAW;IAC3D,IAAI,aAAK,IAAI,YAAY,EAAE;QACzB,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;QACtC,wFAAwF;QACxF,gCAAgC;QAChC,OAAO,CAAC,KAAK,CAAC,mBAAmB,SAAS,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;KAC7E;AACH,CAAC","sourcesContent":["import * as util from 'node:util';\n\nexport enum Level {\n ERROR = -2,\n WARN = -1,\n QUIET = 0,\n INFO = 1,\n VERBOSE = 2,\n}\n\nexport const LEVEL_INFO: number = Level.INFO;\nexport const LEVEL_VERBOSE: number = Level.VERBOSE;\n\n/** The minimal logging level for messages to be emitted. */\nexport let level = Level.QUIET;\n\nexport function configure({ level: newLevel }: { level: Level }) {\n level = newLevel;\n}\n\nexport function warn(fmt: string, ...args: any[]) {\n log(Level.WARN, fmt, ...args);\n}\n\nexport function error(fmt: string, ...args: any[]) {\n log(Level.ERROR, fmt, ...args);\n}\n\nexport function info(fmt: string, ...args: any[]) {\n log(Level.INFO, fmt, ...args);\n}\n\nexport function debug(fmt: string, ...args: any[]) {\n log(Level.VERBOSE, fmt, ...args);\n}\n\nfunction log(messageLevel: Level, fmt: string, ...args: any[]) {\n if (level >= messageLevel) {\n const levelName = Level[messageLevel];\n // `console.error` will automatically be transported from worker child to worker parent,\n // process.stderr.write() won't.\n console.error(`[jsii-rosetta] [${levelName}] ${util.format(fmt, ...args)}`);\n }\n}\n"]}
|
package/lib/main.d.ts
ADDED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
require("@jsii/check-node/run");
|
|
4
|
-
const
|
|
5
|
-
const path = require("path");
|
|
4
|
+
const node_fs_1 = require("node:fs");
|
|
5
|
+
const path = require("node:path");
|
|
6
6
|
const yargs = require("yargs");
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const languages_1 = require("
|
|
16
|
-
const python_1 = require("
|
|
17
|
-
const visualize_1 = require("
|
|
18
|
-
const logging = require("
|
|
19
|
-
const util_1 = require("
|
|
7
|
+
const convert_1 = require("./commands/convert");
|
|
8
|
+
const coverage_1 = require("./commands/coverage");
|
|
9
|
+
const extract_1 = require("./commands/extract");
|
|
10
|
+
const infuse_1 = require("./commands/infuse");
|
|
11
|
+
const read_1 = require("./commands/read");
|
|
12
|
+
const transliterate_1 = require("./commands/transliterate");
|
|
13
|
+
const trim_cache_1 = require("./commands/trim-cache");
|
|
14
|
+
const index_1 = require("./index");
|
|
15
|
+
const languages_1 = require("./languages");
|
|
16
|
+
const python_1 = require("./languages/python");
|
|
17
|
+
const visualize_1 = require("./languages/visualize");
|
|
18
|
+
const logging = require("./logging");
|
|
19
|
+
const util_1 = require("./util");
|
|
20
20
|
function main() {
|
|
21
21
|
const argv = yargs
|
|
22
22
|
.usage('$0 <cmd> [args]')
|
|
@@ -37,7 +37,7 @@ function main() {
|
|
|
37
37
|
boolean: true,
|
|
38
38
|
description: 'Translate snippets to Python',
|
|
39
39
|
}), wrapHandler(async (args) => {
|
|
40
|
-
const result = (0,
|
|
40
|
+
const result = (0, index_1.translateTypeScript)(await makeFileSource(args.FILE ?? '-', 'stdin.ts'), makeVisitor(args));
|
|
41
41
|
handleSingleResult(result);
|
|
42
42
|
}))
|
|
43
43
|
.command('markdown FILE', 'Translate a MarkDown file', (command) => command
|
|
@@ -333,10 +333,10 @@ function main() {
|
|
|
333
333
|
default: '.',
|
|
334
334
|
normalize: true,
|
|
335
335
|
}), wrapHandler(async (args) => {
|
|
336
|
-
const packageJsonPath = (await
|
|
336
|
+
const packageJsonPath = (await node_fs_1.promises.stat(args.PACKAGE)).isDirectory()
|
|
337
337
|
? path.join(args.PACKAGE, 'package.json')
|
|
338
338
|
: args.PACKAGE;
|
|
339
|
-
const packageJson = JSON.parse(await
|
|
339
|
+
const packageJson = JSON.parse(await node_fs_1.promises.readFile(packageJsonPath, 'utf-8'));
|
|
340
340
|
if (packageJson.jsii == null) {
|
|
341
341
|
console.error(`The package in ${args.PACKAGE} does not have a jsii configuration! You can set it up using jsii-config.`);
|
|
342
342
|
process.exitCode = 1;
|
|
@@ -350,7 +350,7 @@ function main() {
|
|
|
350
350
|
const mdJsii = (md.jsii = md.jsii ?? {});
|
|
351
351
|
const mdRosetta = (mdJsii.rosetta = mdJsii.rosetta ?? {});
|
|
352
352
|
mdRosetta.strict = true;
|
|
353
|
-
return
|
|
353
|
+
return node_fs_1.promises.writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2));
|
|
354
354
|
}))
|
|
355
355
|
.demandCommand()
|
|
356
356
|
.help()
|
|
@@ -390,7 +390,7 @@ async function makeFileSource(fileName, stdinName) {
|
|
|
390
390
|
};
|
|
391
391
|
}
|
|
392
392
|
return {
|
|
393
|
-
contents: await
|
|
393
|
+
contents: await node_fs_1.promises.readFile(fileName, { encoding: 'utf-8' }),
|
|
394
394
|
fileName: fileName,
|
|
395
395
|
};
|
|
396
396
|
}
|
|
@@ -461,4 +461,4 @@ function roundPercentage(num) {
|
|
|
461
461
|
return Math.round(10000 * num) / 100;
|
|
462
462
|
}
|
|
463
463
|
main();
|
|
464
|
-
//# sourceMappingURL=
|
|
464
|
+
//# sourceMappingURL=main.js.map
|
package/lib/main.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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","sourcesContent":["import '@jsii/check-node/run';\n\nimport { promises as fs } from 'node:fs';\nimport * as path from 'node:path';\nimport * as yargs from 'yargs';\n\nimport { translateMarkdown } from './commands/convert';\nimport { checkCoverage } from './commands/coverage';\nimport { extractAndInfuse, extractSnippets, ExtractOptions } from './commands/extract';\nimport { infuse, DEFAULT_INFUSION_RESULTS_NAME } from './commands/infuse';\nimport { readTablet } from './commands/read';\nimport { transliterateAssembly } from './commands/transliterate';\nimport { trimCache } from './commands/trim-cache';\nimport { TranslateResult, translateTypeScript, RosettaDiagnostic } from './index';\nimport { TargetLanguage } from './languages';\nimport { PythonVisitor } from './languages/python';\nimport { VisualizeAstVisitor } from './languages/visualize';\nimport * as logging from './logging';\nimport { File, fmap, printDiagnostics } from './util';\n\nfunction main() {\n const argv = yargs\n .usage('$0 <cmd> [args]')\n .option('verbose', {\n alias: 'v',\n type: 'boolean',\n desc: 'Increase logging verbosity',\n count: true,\n default: 0,\n })\n .command(\n 'snippet FILE',\n 'Translate a single snippet',\n (command) =>\n command\n .positional('FILE', {\n type: 'string',\n describe: 'The file to translate (leave out for stdin)',\n })\n .option('python', {\n alias: 'p',\n boolean: true,\n description: 'Translate snippets to Python',\n }),\n wrapHandler(async (args) => {\n const result = translateTypeScript(await makeFileSource(args.FILE ?? '-', 'stdin.ts'), makeVisitor(args));\n handleSingleResult(result);\n }),\n )\n .command(\n 'markdown FILE',\n 'Translate a MarkDown file',\n (command) =>\n command\n .positional('FILE', {\n type: 'string',\n describe: 'The file to translate (leave out for stdin)',\n })\n .option('python', {\n alias: 'p',\n boolean: true,\n description: 'Translate snippets to Python',\n }),\n wrapHandler(async (args) => {\n const result = translateMarkdown(await makeFileSource(args.FILE ?? '-', 'stdin.md'), makeVisitor(args));\n handleSingleResult(result);\n }),\n )\n .command(\n 'infuse [ASSEMBLY..]',\n '(EXPERIMENTAL) mutates one or more assemblies by adding documentation examples to top-level types',\n (command) =>\n command\n .positional('ASSEMBLY', {\n type: 'string',\n array: true,\n default: [],\n describe: 'Assembly or directory to mutate',\n })\n .option('log-file', {\n alias: 'l',\n type: 'string',\n describe: 'Output file to store logging results. Ignored if -log is not true',\n default: DEFAULT_INFUSION_RESULTS_NAME,\n })\n .option('cache-from', {\n alias: 'C',\n type: 'string',\n // eslint-disable-next-line prettier/prettier\n describe:\n 'Reuse translations from the given tablet file if the snippet and type definitions did not change',\n requiresArg: true,\n default: undefined,\n })\n .option('cache-to', {\n alias: 'o',\n type: 'string',\n describe: 'Append all translated snippets to the given tablet file',\n requiresArg: true,\n default: undefined,\n })\n .option('cache', {\n alias: 'k',\n type: 'string',\n describe: 'Alias for --cache-from and --cache-to together',\n requiresArg: true,\n default: undefined,\n })\n .conflicts('cache', 'cache-from')\n .conflicts('cache', 'cache-to'),\n wrapHandler(async (args) => {\n const absAssemblies = (args.ASSEMBLY.length > 0 ? args.ASSEMBLY : ['.']).map((x) => path.resolve(x));\n const absCacheFrom = fmap(args.cache ?? args['cache-from'], path.resolve);\n const absCacheTo = fmap(args.cache ?? args['cache-to'], path.resolve);\n const result = await infuse(absAssemblies, {\n logFile: args['log-file'],\n cacheToFile: absCacheTo,\n cacheFromFile: absCacheFrom,\n });\n\n let totalTypes = 0;\n let insertedExamples = 0;\n for (const [directory, map] of Object.entries(result.coverageResults)) {\n const commonName = directory.split('/').pop()!;\n const newCoverage = roundPercentage(map.typesWithInsertedExamples / map.types);\n process.stdout.write(\n `${commonName}: Added ${map.typesWithInsertedExamples} examples to ${map.types} types.\\n`,\n );\n process.stdout.write(`${commonName}: New coverage: ${newCoverage}%.\\n`);\n\n insertedExamples += map.typesWithInsertedExamples;\n totalTypes += map.types;\n }\n const newCoverage = roundPercentage(insertedExamples / totalTypes);\n process.stdout.write(`\\n\\nFinal Stats:\\nNew coverage: ${newCoverage}%.\\n`);\n }),\n )\n .command(\n ['extract [ASSEMBLY..]', '$0 [ASSEMBLY..]'],\n 'Extract code snippets from one or more assemblies into language tablets',\n (command) =>\n command\n .positional('ASSEMBLY', {\n type: 'string',\n array: true,\n default: [],\n describe: 'Assembly or directory to extract from',\n })\n .option('output', {\n type: 'string',\n describe: 'Additional output file where to store translated samples (deprecated, alias for --cache-to)',\n requiresArg: true,\n default: undefined,\n })\n .option('compile', {\n alias: 'c',\n type: 'boolean',\n describe: 'Try compiling (on by default, use --no-compile to switch off)',\n default: true,\n })\n .option('directory', {\n alias: 'd',\n type: 'string',\n describe: 'Working directory (for require() etc)',\n })\n .option('include', {\n alias: 'i',\n type: 'string',\n array: true,\n describe: 'Extract only snippets with given ids',\n default: [],\n })\n .option('infuse', {\n type: 'boolean',\n describe: 'bundle this command with the infuse command',\n default: false,\n })\n .option('fail', {\n alias: 'f',\n type: 'boolean',\n describe: 'Fail if there are compilation errors',\n default: false,\n })\n .option('validate-assemblies', {\n type: 'boolean',\n describe: 'Whether to validate loaded assemblies or not (this can be slow)',\n default: false,\n })\n .option('cache-from', {\n alias: 'C',\n type: 'string',\n // eslint-disable-next-line prettier/prettier\n describe:\n 'Reuse translations from the given tablet file if the snippet and type definitions did not change',\n requiresArg: true,\n default: undefined,\n })\n .option('cache-to', {\n alias: 'o',\n type: 'string',\n describe: 'Append all translated snippets to the given tablet file',\n requiresArg: true,\n default: undefined,\n })\n .conflicts('cache-to', 'output')\n .option('cache', {\n alias: 'k',\n type: 'string',\n describe: 'Alias for --cache-from and --cache-to together',\n requiresArg: true,\n default: undefined,\n })\n .conflicts('cache', 'cache-from')\n .conflicts('cache', 'cache-to')\n .option('trim-cache', {\n alias: 'T',\n type: 'boolean',\n describe: 'Remove translations that are not referenced by any of the assemblies anymore from the cache',\n })\n .option('strict', {\n alias: 'S',\n type: 'boolean',\n describe:\n 'Require all code samples compile, and fail if one does not. Strict mode always enables --compile and --fail',\n default: false,\n })\n .options('loose', {\n alias: 'l',\n describe: 'Ignore missing fixtures and literate markdown files instead of failing',\n type: 'boolean',\n })\n .options('compress-tablet', {\n alias: 'z',\n type: 'boolean',\n describe: 'Compress the implicit tablet file',\n default: false,\n })\n .options('compress-cache', {\n type: 'boolean',\n describe: 'Compress the cache-to file',\n default: false,\n })\n .conflicts('loose', 'strict')\n .conflicts('loose', 'fail'),\n wrapHandler(async (args) => {\n // `--strict` is short for `--compile --fail`, and we'll override those even if they're set to `false`, such as\n // using `--no-(compile|fail)`, because yargs does not quite give us a better option that does not hurt CX.\n if (args.strict) {\n args.compile = args.c = true;\n args.fail = args.f = true;\n }\n\n const absAssemblies = (args.ASSEMBLY.length > 0 ? args.ASSEMBLY : ['.']).map((x) => path.resolve(x));\n\n const absCacheFrom = fmap(args.cache ?? args['cache-from'], path.resolve);\n const absCacheTo = fmap(args.cache ?? args['cache-to'] ?? args.output, path.resolve);\n\n const extractOptions: ExtractOptions = {\n compilationDirectory: args.directory,\n includeCompilerDiagnostics: !!args.compile,\n validateAssemblies: args['validate-assemblies'],\n only: args.include,\n cacheFromFile: absCacheFrom,\n cacheToFile: absCacheTo,\n trimCache: args['trim-cache'],\n loose: args.loose,\n compressTablet: args['compress-tablet'],\n compressCacheToFile: args['compress-cache'],\n };\n\n const result = args.infuse\n ? await extractAndInfuse(absAssemblies, extractOptions)\n : await extractSnippets(absAssemblies, extractOptions);\n\n handleDiagnostics(result.diagnostics, args.fail, result.tablet.count);\n }),\n )\n .command(\n 'transliterate [ASSEMBLY..]',\n '(EXPERIMENTAL) Transliterates the designated assemblies',\n (command) =>\n command\n .positional('ASSEMBLY', {\n type: 'string',\n array: true,\n default: [],\n required: true,\n describe: 'Assembly to transliterate',\n })\n .option('language', {\n alias: 'l',\n type: 'string',\n array: true,\n default: [],\n describe: 'Language ID to transliterate to',\n })\n .options('strict', {\n alias: 's',\n conflicts: 'loose',\n describe:\n 'Fail if an example that needs live transliteration fails to compile (which could cause incorrect transpilation results)',\n type: 'boolean',\n })\n .options('loose', {\n alias: 'l',\n conflicts: 'strict',\n describe: 'Ignore missing fixtures and literate markdown files instead of failing',\n type: 'boolean',\n })\n .option('tablet', {\n alias: 't',\n type: 'string',\n describe:\n 'Language tablet containing pre-translated code examples to use (these are generated by the `extract` command)',\n }),\n wrapHandler((args) => {\n const assemblies = (args.ASSEMBLY.length > 0 ? args.ASSEMBLY : ['.']).map((dir) =>\n path.resolve(process.cwd(), dir),\n );\n const languages =\n args.language.length > 0\n ? args.language.map((lang) => {\n const target = Object.entries(TargetLanguage).find(([k]) => k === lang)?.[1];\n if (target == null) {\n throw new Error(\n `Unknown target language: ${lang}. Expected one of ${Object.keys(TargetLanguage).join(', ')}`,\n );\n }\n return target;\n })\n : Object.values(TargetLanguage);\n return transliterateAssembly(assemblies, languages, args);\n }),\n )\n .command(\n 'trim-cache <TABLET> [ASSEMBLY..]',\n 'Retain only those snippets in the cache which occur in one of the given assemblies',\n (command) =>\n command\n .positional('TABLET', {\n type: 'string',\n required: true,\n describe: 'Language tablet to trim',\n })\n .positional('ASSEMBLY', {\n type: 'string',\n array: true,\n default: [],\n describe: 'Assembly or directory to search',\n })\n .demandOption('TABLET'),\n wrapHandler(async (args) => {\n await trimCache({\n cacheFile: args.TABLET,\n assemblyLocations: args.ASSEMBLY,\n });\n }),\n )\n .command(\n 'coverage [ASSEMBLY..]',\n 'Check the translation coverage of implicit tablets for the given assemblies',\n (command) =>\n command.positional('ASSEMBLY', {\n type: 'string',\n array: true,\n default: ['.'],\n describe: 'Assembly or directory to search',\n }),\n wrapHandler(async (args) => {\n const absAssemblies = (args.ASSEMBLY.length > 0 ? args.ASSEMBLY : ['.']).map((x) => path.resolve(x));\n await checkCoverage(absAssemblies);\n }),\n )\n .command(\n 'read <TABLET> [KEY] [LANGUAGE]',\n 'Display snippets in a language tablet file',\n (command) =>\n command\n .positional('TABLET', {\n type: 'string',\n required: true,\n describe: 'Language tablet to read',\n })\n .positional('KEY', {\n type: 'string',\n describe: 'Snippet key to read',\n })\n .positional('LANGUAGE', {\n type: 'string',\n describe: 'Language ID to read',\n })\n .demandOption('TABLET'),\n wrapHandler(async (args) => {\n await readTablet(args.TABLET, args.KEY, args.LANGUAGE);\n }),\n )\n .command(\n 'configure-strict [PACKAGE]',\n \"Enables strict mode for a package's assembly\",\n (command) =>\n command.positional('PACKAGE', {\n type: 'string',\n describe: 'The path to the package to configure',\n required: false,\n default: '.',\n normalize: true,\n }),\n wrapHandler(async (args) => {\n const packageJsonPath = (await fs.stat(args.PACKAGE)).isDirectory()\n ? path.join(args.PACKAGE, 'package.json')\n : args.PACKAGE;\n const packageJson = JSON.parse(await fs.readFile(packageJsonPath, 'utf-8'));\n if (packageJson.jsii == null) {\n console.error(\n `The package in ${args.PACKAGE} does not have a jsii configuration! You can set it up using jsii-config.`,\n );\n process.exitCode = 1;\n return Promise.resolve();\n }\n if (packageJson.jsii.metadata?.jsii?.rosetta?.strict) {\n // Nothing to do - it's already configured, so we assert idempotent success!\n return Promise.resolve();\n }\n const md = (packageJson.jsii.metadata = packageJson.jsii.metadata ?? {});\n const mdJsii = (md.jsii = md.jsii ?? {});\n const mdRosetta = (mdJsii.rosetta = mdJsii.rosetta ?? {});\n mdRosetta.strict = true;\n\n return fs.writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2));\n }),\n )\n .demandCommand()\n .help()\n .strict() // Error on wrong command\n // eslint-disable-next-line @typescript-eslint/no-require-imports,@typescript-eslint/no-var-requires\n .version(require('../package.json').version)\n .showHelpOnFail(false).argv;\n\n // Evaluating .argv triggers the parsing but the command gets implicitly executed,\n // so we don't need the output.\n Array.isArray(argv);\n}\n\n/**\n * Wrap a command's handler with standard pre- and post-work\n */\nfunction wrapHandler<A extends { verbose?: number }, R>(handler: (x: A) => Promise<R>) {\n return (argv: A) => {\n logging.configure({ level: argv.verbose !== undefined ? argv.verbose : 0 });\n handler(argv).catch((e) => {\n logging.error(e.message);\n logging.error(e.stack);\n process.exitCode = 1;\n });\n };\n}\n\nfunction makeVisitor(args: { python?: boolean }) {\n if (args.python) {\n return new PythonVisitor();\n }\n // Default to visualizing AST, including nodes we don't recognize yet\n return new VisualizeAstVisitor();\n}\n\nasync function makeFileSource(fileName: string, stdinName: string): Promise<File> {\n if (fileName === '-') {\n return {\n contents: await readStdin(),\n fileName: stdinName,\n };\n }\n return {\n contents: await fs.readFile(fileName, { encoding: 'utf-8' }),\n fileName: fileName,\n };\n}\n\nasync function readStdin(): Promise<string> {\n process.stdin.setEncoding('utf8');\n\n const parts: Buffer[] = [];\n\n return new Promise((resolve, reject) => {\n process.stdin.on('readable', () => {\n const chunk = process.stdin.read();\n if (chunk !== null) {\n parts.push(Buffer.from(chunk));\n }\n });\n\n process.stdin.on('error', reject);\n process.stdin.on('end', () => resolve(Buffer.concat(parts).toString('utf-8')));\n });\n}\n\nfunction handleSingleResult(result: TranslateResult) {\n process.stdout.write(`${result.translation}\\n`);\n\n // For a single result, we always request implicit failure.\n handleDiagnostics(result.diagnostics, 'implicit');\n}\n\n/**\n * Print diagnostics and set exit code\n *\n * 'fail' is whether or not the user passed '--fail' for commands that accept\n * it, or 'implicit' for commands that should always fail. 'implicit' will be\n * treated as 'fail=true, but will not print to the user that the '--fail' is\n * set (because for this particular command that switch does not exist and so it\n * would be confusing).\n */\nfunction handleDiagnostics(diagnostics: readonly RosettaDiagnostic[], fail: boolean | 'implicit', snippetCount = 1) {\n if (fail !== false) {\n // Fail on any diagnostic\n if (diagnostics.length > 0) {\n printDiagnostics(diagnostics, process.stderr);\n logging.error(\n [\n `${diagnostics.length} diagnostics encountered in ${snippetCount} snippets`,\n ...(fail === true ? [\"(running with '--fail')\"] : []),\n ].join(' '),\n );\n process.exitCode = 1;\n }\n\n return;\n }\n\n // Otherwise fail only on strict diagnostics. If we have strict diagnostics, print only those\n // (so it's very clear what is failing the build), otherwise print everything.\n const strictDiagnostics = diagnostics.filter((diag) => diag.isFromStrictAssembly);\n if (strictDiagnostics.length > 0) {\n printDiagnostics(strictDiagnostics, process.stderr);\n const remaining = diagnostics.length - strictDiagnostics.length;\n logging.warn(\n [\n `${strictDiagnostics.length} diagnostics from assemblies with 'strict' mode on`,\n ...(remaining > 0 ? [`(and ${remaining} more non-strict diagnostics)`] : []),\n ].join(' '),\n );\n process.exitCode = 1;\n return;\n }\n\n if (diagnostics.length > 0) {\n printDiagnostics(diagnostics, process.stderr);\n logging.warn(`${diagnostics.length} diagnostics encountered in ${snippetCount} snippets`);\n }\n}\n\n/**\n * Rounds a decimal number to two decimal points.\n * The function is useful for fractions that need to be outputted as percentages.\n */\nfunction roundPercentage(num: number): number {\n return Math.round(10000 * num) / 100;\n}\n\nmain();\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"escapes.js","sourceRoot":"","sources":["../../src/markdown/escapes.ts"],"names":[],"mappings":";;;AAoBA;;GAEG;AACH,SAAgB,cAAc;IAC5B,MAAM,IAAI,GAAY,CAAC,GAAG,IAAI,EAAE,GAAG,SAAS,CAAC,CAAC;IAE9C,OAAO;QACL,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QAChC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QACrC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC;KAC3C,CAAC;AACJ,CAAC;AARD,wCAQC;AAED;;;;;GAKG;AACH,SAAgB,eAAe;IAC7B,MAAM,QAAQ,GAAY,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IACrE,MAAM,QAAQ,GAAY,CAAC,GAAG,QAAQ,EAAE,GAAG,SAAS,CAAC,CAAC;IAEtD,OAAO;QACL,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;QACpC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC;KAC3C,CAAC;AACJ,CAAC;AATD,0CASC;AAID,MAAM,IAAI,GAAY;IACpB,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC;IAC/B,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAC9B,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF,mGAAmG;AACnG,MAAM,SAAS,GAAY;IACzB,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC;IAChC,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC;CACjC,CAAC;AAEF,SAAS,UAAU,CAAC,GAAY,EAAE,IAAmB;IACnD,IAAI,CAAC,IAAI,EAAE;QACT,OAAO,EAAE,CAAC;KACX;IAED,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,GAAG,EAAE;QAC5B,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;KAC/B;IAED,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["export interface Escaper {\n /**\n * Escape for use in XML/HTML text\n */\n text(x: string | null): string;\n\n /**\n * Escape for use in XML/HTML attributes\n */\n attribute(x: string | null): string;\n\n /**\n * Re-escape a string that has been escaped for text to be escaped for attributes\n *\n * Conceptually this unescapes text back to raw and re-escapes for attributes,\n * but for speed in practice we just do the additional escapes.\n */\n text2attr(x: string | null): string;\n}\n\n/**\n * Make a generic XML escaper\n */\nexport function makeXmlEscaper(): Escaper {\n const attr: Escapes = [...TEXT, ...ATTR_ADDL];\n\n return {\n text: (x) => escapeText(TEXT, x),\n attribute: (x) => escapeText(attr, x),\n text2attr: (x) => escapeText(ATTR_ADDL, x),\n };\n}\n\n/**\n * Make a Java specific escaper\n *\n * This one also escapes '@' because that triggers parsing of comment directives\n * in Java.\n */\nexport function makeJavaEscaper(): Escaper {\n const javaText: Escapes = [...TEXT, [new RegExp('@', 'g'), '@']];\n const javaAttr: Escapes = [...javaText, ...ATTR_ADDL];\n\n return {\n text: (x) => escapeText(javaText, x),\n attribute: (x) => escapeText(javaAttr, x),\n text2attr: (x) => escapeText(ATTR_ADDL, x),\n };\n}\n\ntype Escapes = Array<[RegExp, string]>;\n\nconst TEXT: Escapes = [\n [new RegExp('&', 'g'), '&'],\n [new RegExp('<', 'g'), '<'],\n [new RegExp('>', 'g'), '>'],\n];\n\n// Additional escapes (in addition to the text escapes) which need to be escaped inside attributes.\nconst ATTR_ADDL: Escapes = [\n [new RegExp('\"', 'g'), '"'],\n [new RegExp(\"'\", 'g'), '''],\n];\n\nfunction escapeText(set: Escapes, what: string | null): string {\n if (!what) {\n return '';\n }\n\n for (const [re, repl] of set) {\n what = what.replace(re, repl);\n }\n\n return what;\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { TypeScriptSnippet, ApiLocation } from '../snippet';
|
|
2
1
|
import { CodeBlock } from './types';
|
|
3
|
-
|
|
2
|
+
import { TypeScriptSnippet, ApiLocation } from '../snippet';
|
|
3
|
+
export type TypeScriptReplacer = (code: TypeScriptSnippet) => CodeBlock | undefined;
|
|
4
4
|
export declare function extractTypescriptSnippetsFromMarkdown(markdown: string, location: ApiLocation, strict: boolean): TypeScriptSnippet[];
|
|
5
5
|
//# sourceMappingURL=extract-snippets.d.ts.map
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.extractTypescriptSnippetsFromMarkdown = void 0;
|
|
4
4
|
const cm = require("commonmark");
|
|
5
|
-
const markdown_1 = require("../markdown/markdown");
|
|
6
5
|
const replace_typescript_transform_1 = require("./replace-typescript-transform");
|
|
6
|
+
const markdown_1 = require("../markdown/markdown");
|
|
7
7
|
function extractTypescriptSnippetsFromMarkdown(markdown, location, strict) {
|
|
8
8
|
const parser = new cm.Parser();
|
|
9
9
|
const doc = parser.parse(markdown);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract-snippets.js","sourceRoot":"","sources":["../../src/markdown/extract-snippets.ts"],"names":[],"mappings":";;;AAAA,iCAAiC;AAEjC,iFAA4E;AAE5E,mDAA2D;AAK3D,SAAgB,qCAAqC,CACnD,QAAgB,EAChB,QAAqB,EACrB,MAAe;IAEf,MAAM,MAAM,GAAG,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;IAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEnC,MAAM,GAAG,GAAwB,EAAE,CAAC;IAEpC,IAAA,8BAAmB,EACjB,GAAG,EACH,IAAI,yDAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE;QACtD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACb,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC,CACH,CAAC;IAEF,OAAO,GAAG,CAAC;AACb,CAAC;AAnBD,sFAmBC","sourcesContent":["import * as cm from 'commonmark';\n\nimport { ReplaceTypeScriptTransform } from './replace-typescript-transform';\nimport { CodeBlock } from './types';\nimport { visitCommonMarkTree } from '../markdown/markdown';\nimport { TypeScriptSnippet, ApiLocation } from '../snippet';\n\nexport type TypeScriptReplacer = (code: TypeScriptSnippet) => CodeBlock | undefined;\n\nexport function extractTypescriptSnippetsFromMarkdown(\n markdown: string,\n location: ApiLocation,\n strict: boolean,\n): TypeScriptSnippet[] {\n const parser = new cm.Parser();\n const doc = parser.parse(markdown);\n\n const ret: TypeScriptSnippet[] = [];\n\n visitCommonMarkTree(\n doc,\n new ReplaceTypeScriptTransform(location, strict, (ts) => {\n ret.push(ts);\n return undefined;\n }),\n );\n\n return ret;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/markdown/index.ts"],"names":[],"mappings":";;;AAAA,yDAAqD;AACrD,yCAA+C;AAC/C,6DAAyD;AACzD,iEAAkE;AAElE;;;;;;;GAOG;AAEH,SAAgB,mBAAmB,CAAC,MAAc;IAChD,OAAO,IAAA,4BAAiB,EAAC,MAAM,EAAE,IAAI,sCAAiB,EAAE,CAAC,CAAC;AAC5D,CAAC;AAFD,kDAEC;AAED,SAAgB,iBAAiB,CAAC,MAAc;IAC9C,OAAO,IAAA,4BAAiB,EAAC,MAAM,EAAE,IAAI,kCAAe,EAAE,CAAC,CAAC;AAC1D,CAAC;AAFD,8CAEC;AAED,SAAgB,gBAAgB,CAAC,MAAc;IAC7C,OAAO,IAAA,4BAAiB,EAAC,MAAM,EAAE,IAAI,+CAAwB,EAAE,CAAC,CAAC;AACnE,CAAC;AAFD,4CAEC","sourcesContent":["import { JavaDocRenderer } from './javadoc-renderer';\nimport { transformMarkdown } from './markdown';\nimport { StructureRenderer } from './structure-renderer';\nimport { CSharpXmlCommentRenderer } from './xml-comment-renderer';\n\n/**\n * All the visitors in this module expose CommonMark types in their API\n *\n * We want to keep CommonMark as a private dependency (so we don't have to\n * mark it as peerDependency and can keep its @types in devDependencies),\n * so we re-expose the main functionality needed by pacmak as functions\n * that operate on basic types here.\n */\n\nexport function markDownToStructure(source: string) {\n return transformMarkdown(source, new StructureRenderer());\n}\n\nexport function markDownToJavaDoc(source: string) {\n return transformMarkdown(source, new JavaDocRenderer());\n}\n\nexport function markDownToXmlDoc(source: string) {\n return transformMarkdown(source, new CSharpXmlCommentRenderer());\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"javadoc-renderer.js","sourceRoot":"","sources":["../../src/markdown/javadoc-renderer.ts"],"names":[],"mappings":"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","sourcesContent":["import * as cm from 'commonmark';\n\nimport { makeJavaEscaper } from './escapes';\nimport { RendererContext } from './markdown';\nimport { MarkdownRenderer, collapsePara, para, stripTrailingWhitespace, stripPara } from './markdown-renderer';\n\nconst ESCAPE = makeJavaEscaper();\n\n/**\n * A renderer that will render a CommonMark tree to JavaDoc comments\n *\n * Mostly concerns itself with code annotations and escaping; tags that the\n * XML formatter doesn't have equivalents for will be rendered back to MarkDown.\n */\nexport class JavaDocRenderer extends MarkdownRenderer {\n public override block_quote(_node: cm.Node, context: RendererContext) {\n return `<blockquote>${context.content()}</blockquote>`;\n }\n\n public override code(node: cm.Node, _context: RendererContext) {\n return `<code>${ESCAPE.text(node.literal)}</code>`;\n }\n\n /**\n * Render code blocks for JavaDoc\n *\n * See https://reflectoring.io/howto-format-code-snippets-in-javadoc/\n *\n * Since we need to display @ inside our examples and we don't have to\n * care about writability, the most robust option seems to be <pre>\n * tags with escaping of bad characters.\n */\n public override code_block(node: cm.Node, _context: RendererContext) {\n return para(`<blockquote><pre>\\n${ESCAPE.text(node.literal)}</pre></blockquote>`);\n }\n\n public override text(node: cm.Node, _context: RendererContext) {\n return ESCAPE.text(node.literal) ?? '';\n }\n\n public override link(node: cm.Node, context: RendererContext) {\n return `<a href=\"${ESCAPE.attribute(node.destination) ?? ''}\">${context.content()}</a>`;\n }\n\n public override document(_node: cm.Node, context: RendererContext) {\n return stripTrailingWhitespace(specialDocCommentEscape(collapseParaJava(context.content())));\n }\n\n public override heading(node: cm.Node, context: RendererContext) {\n return para(`<h${node.level}>${context.content()}</h${node.level}>`);\n }\n\n public override list(node: cm.Node, context: RendererContext) {\n const tag = node.listType === 'bullet' ? 'ul' : 'ol';\n\n return para(`<${tag}>\\n${context.content()}</${tag}>`);\n }\n\n public override item(_node: cm.Node, context: RendererContext) {\n return `<li>${stripPara(context.content())}</li>\\n`;\n }\n\n public override image(node: cm.Node, context: RendererContext) {\n return `<img alt=\"${ESCAPE.text2attr(context.content())}\" src=\"${ESCAPE.attribute(node.destination) ?? ''}\">`;\n }\n\n public override emph(_node: cm.Node, context: RendererContext) {\n return `<em>${context.content()}</em>`;\n }\n\n public override strong(_node: cm.Node, context: RendererContext) {\n return `<strong>${context.content()}</strong>`;\n }\n\n public override thematic_break(_node: cm.Node, _context: RendererContext) {\n return para('<hr>');\n }\n}\n\nfunction collapseParaJava(x: string) {\n return collapsePara(x, '\\n<p>\\n');\n}\n\n/**\n * A final single-pass escape of '* /' which might otherwise end a doc comment.\n *\n * We have to do this in one final pass because I've observed that in running\n * next, the MarkDown parser will parse the two symbols to:\n *\n * [..., text('*'), text('/'), ...]\n *\n * which means we have no other ability to observe the two-character combination\n * properly.\n */\nfunction specialDocCommentEscape(x: string) {\n return x.replace(new RegExp('\\\\*\\\\/', 'g'), '*/');\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown-renderer.js","sourceRoot":"","sources":["../../src/markdown/markdown-renderer.ts"],"names":[],"mappings":"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","sourcesContent":["import * as cm from 'commonmark';\n\nimport { cmNodeChildren, CommonMarkRenderer, prefixLines, RendererContext } from './markdown';\n\n/**\n * A renderer that will render a CommonMark tree back to MarkDown\n */\nexport class MarkdownRenderer implements CommonMarkRenderer {\n public block_quote(_node: cm.Node, context: RendererContext) {\n return para(prefixLines('> ', collapsePara(context.content())));\n }\n\n public code(node: cm.Node, _context: RendererContext) {\n return `\\`${node.literal}\\``;\n }\n\n public code_block(node: cm.Node, _context: RendererContext) {\n return para(`\\`\\`\\`${node.info ?? ''}\\n${node.literal}\\`\\`\\``);\n }\n\n public text(node: cm.Node, _context: RendererContext) {\n return node.literal ?? '';\n }\n\n public softbreak(_node: cm.Node, _context: RendererContext) {\n return '\\n';\n }\n\n public linebreak(_node: cm.Node, _context: RendererContext) {\n return '\\\\\\n';\n }\n\n public emph(_node: cm.Node, context: RendererContext) {\n return `*${context.content()}*`;\n }\n\n public strong(_node: cm.Node, context: RendererContext) {\n return `**${context.content()}**`;\n }\n\n public html_inline(node: cm.Node, _context: RendererContext) {\n return node.literal ?? '';\n }\n\n public html_block(node: cm.Node, _context: RendererContext) {\n return node.literal ?? '';\n }\n\n public link(node: cm.Node, context: RendererContext) {\n return `[${context.content()}](${node.destination ?? ''})`;\n }\n\n public image(node: cm.Node, context: RendererContext) {\n return ``;\n }\n\n public document(_node: cm.Node, context: RendererContext) {\n return stripTrailingWhitespace(collapsePara(context.content()));\n }\n\n public paragraph(_node: cm.Node, context: RendererContext) {\n return para(context.content());\n }\n\n public list(node: cm.Node, context: RendererContext) {\n // A list is not wrapped in a paragraph, but items may contain paragraphs.\n // All elements of a list are definitely 'item's.\n const items = [];\n\n let i = 1;\n for (const item of cmNodeChildren(node)) {\n const firstLinePrefix = determineItemPrefix(node, i);\n const hangingPrefix = ' '.repeat(firstLinePrefix.length);\n\n const rendered = context.recurse(item);\n // Prefix the first line with a different text than subsequent lines\n const prefixed = firstLinePrefix + prefixLines(hangingPrefix, rendered).slice(hangingPrefix.length);\n\n items.push(prefixed);\n\n i += 1;\n }\n\n return para(items.join('\\n'));\n }\n\n public item(_node: cm.Node, context: RendererContext) {\n return collapsePara(context.content());\n }\n\n public heading(node: cm.Node, context: RendererContext) {\n return para(`${'#'.repeat(node.level)} ${context.content()}`);\n }\n\n public thematic_break(_node: cm.Node, _context: RendererContext) {\n return '---\\n';\n }\n\n public custom_block(_node: cm.Node, context: RendererContext) {\n return `<custom>${context.content()}</custom>`;\n }\n\n public custom_inline(_node: cm.Node, context: RendererContext) {\n return `<custom>${context.content()}</custom>`;\n }\n}\n\nconst PARA_BREAK = '\\u001d';\n\nexport function para(x: string) {\n return `${PARA_BREAK}${x}${PARA_BREAK}`;\n}\n\n/**\n * Collapse paragraph markers\n */\nexport function collapsePara(x: string, brk = '\\n\\n') {\n /* eslint-disable no-control-regex */\n return x\n .replace(/^\\u001d+/, '')\n .replace(/\\u001d+$/, '')\n .replace(/\\u001d+/g, brk);\n /* eslint-enable no-control-regex */\n}\n\n/**\n * Strip paragraph markers from start and end\n */\nexport function stripPara(x: string) {\n /* eslint-disable-next-line no-control-regex */\n return x.replace(/^\\u001d+/, '').replace(/\\u001d+$/, '');\n}\n\nfunction determineItemPrefix(listNode: cm.Node, index: number) {\n if (listNode.listType === 'bullet') {\n return '* ';\n }\n return `${index}${listNode.listDelimiter} `;\n}\n\nexport function stripTrailingWhitespace(x: string) {\n return x.replace(/[ \\t]+$/gm, '');\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/markdown/markdown.ts"],"names":[],"mappings":";;;AAAA,iCAAiC;AAEjC,SAAgB,iBAAiB,CAAC,MAAc,EAAE,QAA4B,EAAE,SAA6B;IAC3G,MAAM,MAAM,GAAG,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;IAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,SAAS,EAAE;QACb,mBAAmB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;KACrC;IACD,OAAO,oBAAoB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAC7C,CAAC;AAPD,8CAOC;AA+BD,SAAgB,oBAAoB,CAAC,IAAa,EAAE,QAA4B;IAC9E,MAAM,OAAO,GAAoB;QAC/B,OAAO,CAAC,CAAU;YAChB,OAAO,oBAAoB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC3C,CAAC;QAED,OAAO;YACL,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClC,CAAC;QAED,QAAQ;YACN,MAAM,KAAK,GAAG,EAAE,CAAC;YACjB,KAAK,MAAM,KAAK,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE;gBACxC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;aACnD;YACD,OAAO,KAAK,CAAC;QACf,CAAC;KACF,CAAC;IAEF,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC;AApBD,oDAoBC;AAED,SAAgB,mBAAmB,CAAC,IAAa,EAAE,OAA0B;IAC3E,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;IACzB,KAAK,MAAM,KAAK,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE;QACxC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;KACrC;AACH,CAAC;AALD,kDAKC;AAED,SAAgB,WAAW,CAAC,MAAc,EAAE,CAAS;IACnD,OAAO,CAAC;SACL,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;SACtB,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AALD,kCAKC;AAED,QAAe,CAAC,CAAC,cAAc,CAAC,IAAa;IAC3C,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,KAAK,IAAI,EAAE,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE;QACpE,MAAM,KAAK,CAAC;KACb;AACH,CAAC;AAJD,wCAIC","sourcesContent":["import * as cm from 'commonmark';\n\nexport function transformMarkdown(source: string, renderer: CommonMarkRenderer, transform?: CommonMarkVisitor) {\n const parser = new cm.Parser();\n const doc = parser.parse(source);\n if (transform) {\n visitCommonMarkTree(doc, transform);\n }\n return renderCommonMarkTree(doc, renderer);\n}\n\nexport interface RendererContext {\n recurse(node: cm.Node): string;\n children(): string[];\n content(): string;\n}\n\nexport interface CommonMarkRenderer {\n block_quote(node: cm.Node, context: RendererContext): string;\n code(node: cm.Node, context: RendererContext): string;\n code_block(node: cm.Node, context: RendererContext): string;\n text(node: cm.Node, context: RendererContext): string;\n softbreak(node: cm.Node, context: RendererContext): string;\n linebreak(node: cm.Node, context: RendererContext): string;\n emph(node: cm.Node, context: RendererContext): string;\n strong(node: cm.Node, context: RendererContext): string;\n html_inline(node: cm.Node, context: RendererContext): string;\n html_block(node: cm.Node, context: RendererContext): string;\n link(node: cm.Node, context: RendererContext): string;\n image(node: cm.Node, context: RendererContext): string;\n document(node: cm.Node, context: RendererContext): string;\n paragraph(node: cm.Node, context: RendererContext): string;\n list(node: cm.Node, context: RendererContext): string;\n item(node: cm.Node, context: RendererContext): string;\n heading(node: cm.Node, context: RendererContext): string;\n thematic_break(node: cm.Node, context: RendererContext): string;\n custom_block(node: cm.Node, context: RendererContext): string;\n custom_inline(node: cm.Node, context: RendererContext): string;\n}\n\nexport function renderCommonMarkTree(node: cm.Node, renderer: CommonMarkRenderer) {\n const context: RendererContext = {\n recurse(n: cm.Node): string {\n return renderCommonMarkTree(n, renderer);\n },\n\n content() {\n return this.children().join('');\n },\n\n children() {\n const parts = [];\n for (const child of cmNodeChildren(node)) {\n parts.push(renderCommonMarkTree(child, renderer));\n }\n return parts;\n },\n };\n\n return renderer[node.type](node, context);\n}\n\nexport function visitCommonMarkTree(node: cm.Node, visitor: CommonMarkVisitor) {\n visitor[node.type](node);\n for (const child of cmNodeChildren(node)) {\n visitCommonMarkTree(child, visitor);\n }\n}\n\nexport function prefixLines(prefix: string, x: string) {\n return x\n .split('\\n')\n .map((l) => prefix + l)\n .join('\\n');\n}\n\nexport function* cmNodeChildren(node: cm.Node): IterableIterator<cm.Node> {\n for (let child = node.firstChild; child !== null; child = child.next) {\n yield child;\n }\n}\n\nexport interface CommonMarkVisitor {\n block_quote(node: cm.Node): void;\n code(node: cm.Node): void;\n code_block(node: cm.Node): void;\n text(node: cm.Node): void;\n softbreak(node: cm.Node): void;\n linebreak(node: cm.Node): void;\n emph(node: cm.Node): void;\n strong(node: cm.Node): void;\n html_inline(node: cm.Node): void;\n html_block(node: cm.Node): void;\n link(node: cm.Node): void;\n image(node: cm.Node): void;\n document(node: cm.Node): void;\n paragraph(node: cm.Node): void;\n list(node: cm.Node): void;\n item(node: cm.Node): void;\n heading(node: cm.Node): void;\n thematic_break(node: cm.Node): void;\n custom_block(node: cm.Node): void;\n custom_inline(node: cm.Node): void;\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as cm from 'commonmark';
|
|
2
2
|
import { CommonMarkVisitor } from './markdown';
|
|
3
3
|
import { CodeBlock } from './types';
|
|
4
|
-
export
|
|
4
|
+
export type CodeReplacer = (code: CodeBlock, line: number) => CodeBlock;
|
|
5
5
|
/**
|
|
6
6
|
* Renderer that replaces code blocks in a MarkDown document
|
|
7
7
|
*/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replace-code-renderer.js","sourceRoot":"","sources":["../../src/markdown/replace-code-renderer.ts"],"names":[],"mappings":";;;AAOA;;GAEG;AACH,MAAa,oBAAoB;IAC/B,YAAoC,QAAsB;QAAtB,aAAQ,GAAR,QAAQ,CAAc;IAAG,CAAC;IAEvD,UAAU,CAAC,IAAa;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CACvB;YACE,QAAQ,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;YACzB,MAAM,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;SAC3B,EACD,IAAI,CACL,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACrF,CAAC;IAEM,WAAW;QAChB,aAAa;IACf,CAAC;IACM,IAAI;QACT,aAAa;IACf,CAAC;IACM,IAAI;QACT,aAAa;IACf,CAAC;IACM,SAAS;QACd,aAAa;IACf,CAAC;IACM,SAAS;QACd,aAAa;IACf,CAAC;IACM,IAAI;QACT,aAAa;IACf,CAAC;IACM,MAAM;QACX,aAAa;IACf,CAAC;IACM,WAAW;QAChB,aAAa;IACf,CAAC;IACM,UAAU;QACf,aAAa;IACf,CAAC;IACM,IAAI;QACT,aAAa;IACf,CAAC;IACM,KAAK;QACV,aAAa;IACf,CAAC;IACM,QAAQ;QACb,aAAa;IACf,CAAC;IACM,SAAS;QACd,aAAa;IACf,CAAC;IACM,IAAI;QACT,aAAa;IACf,CAAC;IACM,IAAI;QACT,aAAa;IACf,CAAC;IACM,OAAO;QACZ,aAAa;IACf,CAAC;IACM,cAAc;QACnB,aAAa;IACf,CAAC;IACM,YAAY;QACjB,aAAa;IACf,CAAC;IACM,aAAa;QAClB,aAAa;IACf,CAAC;CACF;AAzED,oDAyEC","sourcesContent":["import * as cm from 'commonmark';\n\nimport { CommonMarkVisitor } from './markdown';\nimport { CodeBlock } from './types';\n\nexport type CodeReplacer = (code: CodeBlock, line: number) => CodeBlock;\n\n/**\n * Renderer that replaces code blocks in a MarkDown document\n */\nexport class ReplaceCodeTransform implements CommonMarkVisitor {\n public constructor(private readonly replacer: CodeReplacer) {}\n\n public code_block(node: cm.Node) {\n const line = node.sourcepos[0][0];\n const ret = this.replacer(\n {\n language: node.info ?? '',\n source: node.literal ?? '',\n },\n line,\n );\n node.info = ret.language;\n node.literal = ret.source + (!ret.source || ret.source.endsWith('\\n') ? '' : '\\n');\n }\n\n public block_quote(): void {\n /* nothing */\n }\n public code(): void {\n /* nothing */\n }\n public text(): void {\n /* nothing */\n }\n public softbreak(): void {\n /* nothing */\n }\n public linebreak(): void {\n /* nothing */\n }\n public emph(): void {\n /* nothing */\n }\n public strong(): void {\n /* nothing */\n }\n public html_inline(): void {\n /* nothing */\n }\n public html_block(): void {\n /* nothing */\n }\n public link(): void {\n /* nothing */\n }\n public image(): void {\n /* nothing */\n }\n public document(): void {\n /* nothing */\n }\n public paragraph(): void {\n /* nothing */\n }\n public list(): void {\n /* nothing */\n }\n public item(): void {\n /* nothing */\n }\n public heading(): void {\n /* nothing */\n }\n public thematic_break(): void {\n /* nothing */\n }\n public custom_block(): void {\n /* nothing */\n }\n public custom_inline(): void {\n /* nothing */\n }\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { TypeScriptSnippet, ApiLocation } from '../snippet';
|
|
2
1
|
import { ReplaceCodeTransform } from './replace-code-renderer';
|
|
3
2
|
import { CodeBlock } from './types';
|
|
4
|
-
|
|
3
|
+
import { TypeScriptSnippet, ApiLocation } from '../snippet';
|
|
4
|
+
export type TypeScriptReplacer = (code: TypeScriptSnippet) => CodeBlock | undefined;
|
|
5
5
|
/**
|
|
6
6
|
* A specialization of ReplaceCodeTransform that maintains state about TypeScript snippets
|
|
7
7
|
*/
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ReplaceTypeScriptTransform = void 0;
|
|
4
|
-
const snippet_1 = require("../snippet");
|
|
5
4
|
const replace_code_renderer_1 = require("./replace-code-renderer");
|
|
5
|
+
const snippet_1 = require("../snippet");
|
|
6
6
|
/**
|
|
7
7
|
* A specialization of ReplaceCodeTransform that maintains state about TypeScript snippets
|
|
8
8
|
*/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replace-typescript-transform.js","sourceRoot":"","sources":["../../src/markdown/replace-typescript-transform.ts"],"names":[],"mappings":";;;AAAA,mEAA+D;AAE/D,wCAA4G;AAI5G;;GAEG;AACH,MAAa,0BAA2B,SAAQ,4CAAoB;IAClE,YAAmB,GAAgB,EAAE,MAAe,EAAE,QAA4B;QAChF,KAAK,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YACpB,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACtE,IAAI,aAAa,CAAC,CAAC,CAAC,KAAK,YAAY,IAAI,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;gBAClE,OAAO,KAAK,CAAC;aACd;YAED,MAAM,SAAS,GAAG,IAAA,qCAA2B,EAC3C,KAAK,CAAC,MAAM,EACZ,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAC3C,MAAM,EACN,IAAA,2BAAiB,EAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAC1C,CAAC;YAEF,OAAO,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAlBD,gEAkBC","sourcesContent":["import { ReplaceCodeTransform } from './replace-code-renderer';\nimport { CodeBlock } from './types';\nimport { TypeScriptSnippet, typeScriptSnippetFromSource, parseKeyValueList, ApiLocation } from '../snippet';\n\nexport type TypeScriptReplacer = (code: TypeScriptSnippet) => CodeBlock | undefined;\n\n/**\n * A specialization of ReplaceCodeTransform that maintains state about TypeScript snippets\n */\nexport class ReplaceTypeScriptTransform extends ReplaceCodeTransform {\n public constructor(api: ApiLocation, strict: boolean, replacer: TypeScriptReplacer) {\n super((block, line) => {\n const languageParts = block.language ? block.language.split(' ') : [];\n if (languageParts[0] !== 'typescript' && languageParts[0] !== 'ts') {\n return block;\n }\n\n const tsSnippet = typeScriptSnippetFromSource(\n block.source,\n { api, field: { field: 'markdown', line } },\n strict,\n parseKeyValueList(languageParts.slice(1)),\n );\n\n return replacer(tsSnippet) ?? block;\n });\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structure-renderer.js","sourceRoot":"","sources":["../../src/markdown/structure-renderer.ts"],"names":[],"mappings":";;;AAEA,yCAA8E;AAE9E;;GAEG;AACH,MAAa,iBAAiB;IACrB,WAAW,CAAC,IAAa,EAAE,OAAwB;QACxD,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IACM,IAAI,CAAC,IAAa,EAAE,OAAwB;QACjD,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IACM,UAAU,CAAC,IAAa,EAAE,OAAwB;QACvD,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IACM,IAAI,CAAC,IAAa,EAAE,OAAwB;QACjD,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IACM,SAAS,CAAC,IAAa,EAAE,OAAwB;QACtD,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IACM,SAAS,CAAC,IAAa,EAAE,OAAwB;QACtD,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IACM,IAAI,CAAC,IAAa,EAAE,OAAwB;QACjD,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IACM,MAAM,CAAC,IAAa,EAAE,OAAwB;QACnD,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IACM,WAAW,CAAC,IAAa,EAAE,OAAwB;QACxD,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IACM,UAAU,CAAC,IAAa,EAAE,OAAwB;QACvD,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IACM,IAAI,CAAC,IAAa,EAAE,OAAwB;QACjD,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IACM,KAAK,CAAC,IAAa,EAAE,OAAwB;QAClD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IACM,QAAQ,CAAC,IAAa,EAAE,OAAwB;QACrD,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IACM,SAAS,CAAC,IAAa,EAAE,OAAwB;QACtD,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IACM,IAAI,CAAC,IAAa,EAAE,OAAwB;QACjD,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IACM,IAAI,CAAC,IAAa,EAAE,OAAwB;QACjD,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IACM,OAAO,CAAC,IAAa,EAAE,OAAwB;QACpD,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IACM,cAAc,CAAC,IAAa,EAAE,OAAwB;QAC3D,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IACM,YAAY,CAAC,IAAa,EAAE,OAAwB;QACzD,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IACM,aAAa,CAAC,IAAa,EAAE,OAAwB;QAC1D,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAEO,MAAM,CAAC,IAAY,EAAE,IAAa,EAAE,OAAwB;QAClE,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QAEnC,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEvE,IAAI,QAAQ,EAAE;YACZ,OAAO,IAAI,SAAS,KAAK,IAAA,sBAAW,EAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC;SAC3D;QACD,OAAO,IAAI,SAAS,KAAK,CAAC;IAC5B,CAAC;CACF;AAxED,8CAwEC;AAED,SAAS,WAAW,CAAC,CAAU;IAC7B,MAAM,gBAAgB,GAAG;QACvB,SAAS;QACT,aAAa;QACb,OAAO;QACP,MAAM;QACN,OAAO;QACP,UAAU;QACV,WAAW;QACX,WAAW;QACX,eAAe;KAChB,CAAC;IACF,MAAM,GAAG,GAAQ,EAAE,CAAC;IACpB,iCAAiC;IACjC,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE;QAClC,MAAM,KAAK,GAAI,CAAS,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC1D,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;SAClB;KACF;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC","sourcesContent":["import * as cm from 'commonmark';\n\nimport { CommonMarkRenderer, prefixLines, RendererContext } from './markdown';\n\n/**\n * A renderer that will render a CommonMark tree to show its structure\n */\nexport class StructureRenderer implements CommonMarkRenderer {\n public block_quote(node: cm.Node, context: RendererContext) {\n return this.handle('block_quote', node, context);\n }\n public code(node: cm.Node, context: RendererContext) {\n return this.handle('code', node, context);\n }\n public code_block(node: cm.Node, context: RendererContext) {\n return this.handle('code_block', node, context);\n }\n public text(node: cm.Node, context: RendererContext) {\n return this.handle('text', node, context);\n }\n public softbreak(node: cm.Node, context: RendererContext) {\n return this.handle('softbreak', node, context);\n }\n public linebreak(node: cm.Node, context: RendererContext) {\n return this.handle('linebreak', node, context);\n }\n public emph(node: cm.Node, context: RendererContext) {\n return this.handle('emph', node, context);\n }\n public strong(node: cm.Node, context: RendererContext) {\n return this.handle('strong', node, context);\n }\n public html_inline(node: cm.Node, context: RendererContext) {\n return this.handle('html_inline', node, context);\n }\n public html_block(node: cm.Node, context: RendererContext) {\n return this.handle('html_block', node, context);\n }\n public link(node: cm.Node, context: RendererContext) {\n return this.handle('link', node, context);\n }\n public image(node: cm.Node, context: RendererContext) {\n return this.handle('image', node, context);\n }\n public document(node: cm.Node, context: RendererContext) {\n return this.handle('document', node, context);\n }\n public paragraph(node: cm.Node, context: RendererContext) {\n return this.handle('paragraph', node, context);\n }\n public list(node: cm.Node, context: RendererContext) {\n return this.handle('list', node, context);\n }\n public item(node: cm.Node, context: RendererContext) {\n return this.handle('item', node, context);\n }\n public heading(node: cm.Node, context: RendererContext) {\n return this.handle('heading', node, context);\n }\n public thematic_break(node: cm.Node, context: RendererContext) {\n return this.handle('thematic_break', node, context);\n }\n public custom_block(node: cm.Node, context: RendererContext) {\n return this.handle('custom_block', node, context);\n }\n public custom_inline(node: cm.Node, context: RendererContext) {\n return this.handle('custom_inline', node, context);\n }\n\n private handle(name: string, node: cm.Node, context: RendererContext) {\n const contents = context.content();\n\n const enterText = [name, inspectNode(node)].filter((x) => x).join(' ');\n\n if (contents) {\n return `(${enterText}\\n${prefixLines(' ', contents)})\\n`;\n }\n return `(${enterText})\\n`;\n }\n}\n\nfunction inspectNode(n: cm.Node): string {\n const INTERESTING_KEYS = [\n 'literal',\n 'destination',\n 'title',\n 'info',\n 'level',\n 'listType',\n 'listTight',\n 'listStart',\n 'listDelimiter',\n ];\n const ret: any = {};\n // tslint:disable-next-line:forin\n for (const key of INTERESTING_KEYS) {\n const value = (n as any)[key];\n if (typeof value === 'string' || typeof value === 'number') {\n ret[key] = value;\n }\n }\n return JSON.stringify(ret);\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/markdown/types.ts"],"names":[],"mappings":"","sourcesContent":["export interface CodeBlock {\n source: string;\n language: string;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xml-comment-renderer.js","sourceRoot":"","sources":["../../src/markdown/xml-comment-renderer.ts"],"names":[],"mappings":"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","sourcesContent":["import * as cm from 'commonmark';\n\nimport { makeXmlEscaper } from './escapes';\nimport { prefixLines, RendererContext } from './markdown';\nimport { MarkdownRenderer, para, stripPara } from './markdown-renderer';\n\nconst ESCAPE = makeXmlEscaper();\n\n// The types for 'xmldom' are not complete.\n/* eslint-disable-next-line @typescript-eslint/no-var-requires,@typescript-eslint/no-require-imports */\nconst { DOMParser, XMLSerializer } = require('@xmldom/xmldom');\n\n/**\n * A renderer that will render a CommonMark tree to .NET XML comments\n *\n * Mostly concerns itself with code annotations and escaping; tags that the\n * XML formatter doesn't have equivalents for will be rendered back to MarkDown.\n */\nexport class CSharpXmlCommentRenderer extends MarkdownRenderer {\n public override block_quote(_node: cm.Node, context: RendererContext) {\n return para(prefixLines(' ', stripPara(context.content())));\n }\n\n public override code(node: cm.Node, _context: RendererContext) {\n return `<c>${ESCAPE.text(node.literal)}</c>`;\n }\n\n public override code_block(node: cm.Node, _context: RendererContext) {\n return para(`<code><![CDATA[\\n${node.literal}]]></code>`);\n }\n\n public override text(node: cm.Node, _context: RendererContext) {\n return ESCAPE.text(node.literal) ?? '';\n }\n\n public override link(node: cm.Node, context: RendererContext) {\n return `<a href=\"${ESCAPE.attribute(node.destination) ?? ''}\">${context.content()}</a>`;\n }\n\n public override image(node: cm.Node, context: RendererContext) {\n return `<img alt=\"${ESCAPE.text2attr(context.content())}\" src=\"${ESCAPE.attribute(node.destination) ?? ''}\" />`;\n }\n\n public override emph(_node: cm.Node, context: RendererContext) {\n return `<em>${context.content()}</em>`;\n }\n\n public override strong(_node: cm.Node, context: RendererContext) {\n return `<strong>${context.content()}</strong>`;\n }\n\n public override heading(node: cm.Node, context: RendererContext) {\n return para(`<h${node.level}>${context.content()}</h${node.level}>`);\n }\n\n public override list(node: cm.Node, context: RendererContext) {\n const listType = node.listType === 'bullet' ? 'bullet' : 'number';\n\n return para(`<list type=\"${listType}\">\\n${context.content()}</list>`);\n }\n\n public override item(_node: cm.Node, context: RendererContext) {\n return `<description>${stripPara(context.content())}</description>\\n`;\n }\n\n public override thematic_break(_node: cm.Node, _context: RendererContext) {\n return para('<hr />');\n }\n\n /**\n * HTML needs to be converted to XML\n *\n * If we don't do this, the parser will reject the whole XML block once it seens an unclosed\n * <img> tag.\n */\n public override html_inline(node: cm.Node, _context: RendererContext) {\n const html = node.literal ?? '';\n try {\n const doc = new DOMParser().parseFromString(html, 'text/html');\n return new XMLSerializer().serializeToString(doc);\n } catch {\n // Could not parse - we'll escape unsafe XML entities here...\n return html.replace(/[<>&]/g, (char: string) => {\n switch (char) {\n case '&':\n return '&';\n case '<':\n return '<';\n case '>':\n return '>';\n default:\n return char;\n }\n });\n }\n }\n\n /**\n * HTML needs to be converted to XML\n *\n * If we don't do this, the parser will reject the whole XML block once it seens an unclosed\n * <img> tag.\n */\n public override html_block(node: cm.Node, context: RendererContext) {\n return this.html_inline(node, context);\n }\n}\n"]}
|
package/lib/o-tree.js
CHANGED
|
@@ -8,15 +8,15 @@ exports.renderTree = exports.OTreeSink = exports.UnknownSyntax = exports.NO_SYNT
|
|
|
8
8
|
* can be rendered to an output sink.
|
|
9
9
|
*/
|
|
10
10
|
class OTree {
|
|
11
|
+
static simplify(xs) {
|
|
12
|
+
return xs.filter(notUndefined).filter(notEmpty);
|
|
13
|
+
}
|
|
11
14
|
constructor(prefix, children, options = {}) {
|
|
12
15
|
this.options = options;
|
|
13
16
|
this.prefix = OTree.simplify(prefix);
|
|
14
17
|
this.children = OTree.simplify(children ?? []);
|
|
15
18
|
this.attachComment = !!options.canBreakLine;
|
|
16
19
|
}
|
|
17
|
-
static simplify(xs) {
|
|
18
|
-
return xs.filter(notUndefined).filter(notEmpty);
|
|
19
|
-
}
|
|
20
20
|
/**
|
|
21
21
|
* Set the span in the source file this tree node relates to
|
|
22
22
|
*/
|