@elastic/isomer-sdk 0.0.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.txt +93 -0
- package/NOTICE.txt +1861 -0
- package/README.md +69 -0
- package/THIRD_PARTY_LICENSES.md +957 -0
- package/dist/author/authored_fields.d.ts +153 -0
- package/dist/author/authored_fields.d.ts.map +1 -0
- package/dist/author/authored_fields.js +227 -0
- package/dist/author/authored_fields.js.map +1 -0
- package/dist/author/authoring_input.d.ts +7 -0
- package/dist/author/authoring_input.d.ts.map +1 -0
- package/dist/author/authoring_input.js +60 -0
- package/dist/author/authoring_input.js.map +1 -0
- package/dist/author/authoring_model.d.ts +27 -0
- package/dist/author/authoring_model.d.ts.map +1 -0
- package/dist/author/authoring_model.js +98 -0
- package/dist/author/authoring_model.js.map +1 -0
- package/dist/author/declarations.d.ts +13 -0
- package/dist/author/declarations.d.ts.map +1 -0
- package/dist/author/declarations.js +277 -0
- package/dist/author/declarations.js.map +1 -0
- package/dist/author/index.d.ts +7 -0
- package/dist/author/index.d.ts.map +1 -0
- package/dist/author/index.js +12 -0
- package/dist/author/index.js.map +1 -0
- package/dist/author/jsx.d.ts +21 -0
- package/dist/author/jsx.d.ts.map +1 -0
- package/dist/author/jsx.js +20 -0
- package/dist/author/jsx.js.map +1 -0
- package/dist/author/jsx_shim.d.ts +117 -0
- package/dist/author/jsx_shim.d.ts.map +1 -0
- package/dist/author/jsx_shim.js +270 -0
- package/dist/author/jsx_shim.js.map +1 -0
- package/dist/author/prompt.d.ts +58 -0
- package/dist/author/prompt.d.ts.map +1 -0
- package/dist/author/prompt.js +148 -0
- package/dist/author/prompt.js.map +1 -0
- package/dist/author/schema_to_typescript.d.ts +37 -0
- package/dist/author/schema_to_typescript.d.ts.map +1 -0
- package/dist/author/schema_to_typescript.js +286 -0
- package/dist/author/schema_to_typescript.js.map +1 -0
- package/dist/cjs/author/authored_fields.js +233 -0
- package/dist/cjs/author/authored_fields.js.map +1 -0
- package/dist/cjs/author/authoring_input.js +64 -0
- package/dist/cjs/author/authoring_input.js.map +1 -0
- package/dist/cjs/author/authoring_model.js +104 -0
- package/dist/cjs/author/authoring_model.js.map +1 -0
- package/dist/cjs/author/declarations.js +281 -0
- package/dist/cjs/author/declarations.js.map +1 -0
- package/dist/cjs/author/index.js +25 -0
- package/dist/cjs/author/index.js.map +1 -0
- package/dist/cjs/author/jsx.js +24 -0
- package/dist/cjs/author/jsx.js.map +1 -0
- package/dist/cjs/author/jsx_shim.js +276 -0
- package/dist/cjs/author/jsx_shim.js.map +1 -0
- package/dist/cjs/author/prompt.js +153 -0
- package/dist/cjs/author/prompt.js.map +1 -0
- package/dist/cjs/author/schema_to_typescript.js +295 -0
- package/dist/cjs/author/schema_to_typescript.js.map +1 -0
- package/dist/cjs/composition/action_event.js +9 -0
- package/dist/cjs/composition/action_event.js.map +1 -0
- package/dist/cjs/composition/body_node_base.js +112 -0
- package/dist/cjs/composition/body_node_base.js.map +1 -0
- package/dist/cjs/composition/composition.js +9 -0
- package/dist/cjs/composition/composition.js.map +1 -0
- package/dist/cjs/composition/error.js +73 -0
- package/dist/cjs/composition/error.js.map +1 -0
- package/dist/cjs/composition/index.js +32 -0
- package/dist/cjs/composition/index.js.map +1 -0
- package/dist/cjs/composition/map_nodes.js +85 -0
- package/dist/cjs/composition/map_nodes.js.map +1 -0
- package/dist/cjs/composition/named_color.js +20 -0
- package/dist/cjs/composition/named_color.js.map +1 -0
- package/dist/cjs/composition/node.js +9 -0
- package/dist/cjs/composition/node.js.map +1 -0
- package/dist/cjs/composition/one_line.js +23 -0
- package/dist/cjs/composition/one_line.js.map +1 -0
- package/dist/cjs/composition/structured_value.js +21 -0
- package/dist/cjs/composition/structured_value.js.map +1 -0
- package/dist/cjs/composition/validation_error.js +40 -0
- package/dist/cjs/composition/validation_error.js.map +1 -0
- package/dist/cjs/define/frame.js +31 -0
- package/dist/cjs/define/frame.js.map +1 -0
- package/dist/cjs/define/index.js +31 -0
- package/dist/cjs/define/index.js.map +1 -0
- package/dist/cjs/define/markdown_content.js +12 -0
- package/dist/cjs/define/markdown_content.js.map +1 -0
- package/dist/cjs/define/primitive_example.js +26 -0
- package/dist/cjs/define/primitive_example.js.map +1 -0
- package/dist/cjs/define/primitive_icon.js +17 -0
- package/dist/cjs/define/primitive_icon.js.map +1 -0
- package/dist/cjs/define/primitive_module.js +118 -0
- package/dist/cjs/define/primitive_module.js.map +1 -0
- package/dist/cjs/define/slack_assets.js +9 -0
- package/dist/cjs/define/slack_assets.js.map +1 -0
- package/dist/cjs/define/slack_blocks.js +9 -0
- package/dist/cjs/define/slack_blocks.js.map +1 -0
- package/dist/cjs/define/zod_format.js +122 -0
- package/dist/cjs/define/zod_format.js.map +1 -0
- package/dist/cjs/define/zod_helpers.js +26 -0
- package/dist/cjs/define/zod_helpers.js.map +1 -0
- package/dist/cjs/entries/html.js +12 -0
- package/dist/cjs/entries/html.js.map +1 -0
- package/dist/cjs/entries/index.js +80 -0
- package/dist/cjs/entries/index.js.map +1 -0
- package/dist/cjs/entries/markdown.js +14 -0
- package/dist/cjs/entries/markdown.js.map +1 -0
- package/dist/cjs/entries/react.js +20 -0
- package/dist/cjs/entries/react.js.map +1 -0
- package/dist/cjs/entries/slack.js +25 -0
- package/dist/cjs/entries/slack.js.map +1 -0
- package/dist/cjs/entries/text.js +12 -0
- package/dist/cjs/entries/text.js.map +1 -0
- package/dist/cjs/pack/capabilities.js +40 -0
- package/dist/cjs/pack/capabilities.js.map +1 -0
- package/dist/cjs/pack/compose.js +59 -0
- package/dist/cjs/pack/compose.js.map +1 -0
- package/dist/cjs/pack/enhancements.js +65 -0
- package/dist/cjs/pack/enhancements.js.map +1 -0
- package/dist/cjs/pack/index.js +18 -0
- package/dist/cjs/pack/index.js.map +1 -0
- package/dist/cjs/pack/primitive_pack.js +97 -0
- package/dist/cjs/pack/primitive_pack.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/render/anchors.js +167 -0
- package/dist/cjs/render/anchors.js.map +1 -0
- package/dist/cjs/render/context_view.js +54 -0
- package/dist/cjs/render/context_view.js.map +1 -0
- package/dist/cjs/render/format_display_value.js +143 -0
- package/dist/cjs/render/format_display_value.js.map +1 -0
- package/dist/cjs/render/format_number.js +46 -0
- package/dist/cjs/render/format_number.js.map +1 -0
- package/dist/cjs/render/html/enhancements.js +30 -0
- package/dist/cjs/render/html/enhancements.js.map +1 -0
- package/dist/cjs/render/html/envelope.js +218 -0
- package/dist/cjs/render/html/envelope.js.map +1 -0
- package/dist/cjs/render/html/index.js +12 -0
- package/dist/cjs/render/html/index.js.map +1 -0
- package/dist/cjs/render/index.js +25 -0
- package/dist/cjs/render/index.js.map +1 -0
- package/dist/cjs/render/layout_check.js +133 -0
- package/dist/cjs/render/layout_check.js.map +1 -0
- package/dist/cjs/render/markdown/builder.js +195 -0
- package/dist/cjs/render/markdown/builder.js.map +1 -0
- package/dist/cjs/render/markdown/envelope.js +33 -0
- package/dist/cjs/render/markdown/envelope.js.map +1 -0
- package/dist/cjs/render/markdown/format.js +208 -0
- package/dist/cjs/render/markdown/format.js.map +1 -0
- package/dist/cjs/render/markdown/index.js +15 -0
- package/dist/cjs/render/markdown/index.js.map +1 -0
- package/dist/cjs/render/measure_dom.js +61 -0
- package/dist/cjs/render/measure_dom.js.map +1 -0
- package/dist/cjs/render/payload.js +13 -0
- package/dist/cjs/render/payload.js.map +1 -0
- package/dist/cjs/render/primitive_dispatch.js +173 -0
- package/dist/cjs/render/primitive_dispatch.js.map +1 -0
- package/dist/cjs/render/react/content.js +44 -0
- package/dist/cjs/render/react/content.js.map +1 -0
- package/dist/cjs/render/react/enhancements.js +32 -0
- package/dist/cjs/render/react/enhancements.js.map +1 -0
- package/dist/cjs/render/react/index.js +15 -0
- package/dist/cjs/render/react/index.js.map +1 -0
- package/dist/cjs/render/slack/assets.js +45 -0
- package/dist/cjs/render/slack/assets.js.map +1 -0
- package/dist/cjs/render/slack/blocks.js +80 -0
- package/dist/cjs/render/slack/blocks.js.map +1 -0
- package/dist/cjs/render/slack/envelope.js +551 -0
- package/dist/cjs/render/slack/envelope.js.map +1 -0
- package/dist/cjs/render/slack/format.js +225 -0
- package/dist/cjs/render/slack/format.js.map +1 -0
- package/dist/cjs/render/slack/index.js +30 -0
- package/dist/cjs/render/slack/index.js.map +1 -0
- package/dist/cjs/render/slack/markdown_content.js +409 -0
- package/dist/cjs/render/slack/markdown_content.js.map +1 -0
- package/dist/cjs/render/text/envelope.js +21 -0
- package/dist/cjs/render/text/envelope.js.map +1 -0
- package/dist/cjs/render/text/index.js +12 -0
- package/dist/cjs/render/text/index.js.map +1 -0
- package/dist/cjs/testing/conformance.js +312 -0
- package/dist/cjs/testing/conformance.js.map +1 -0
- package/dist/cjs/testing/icon.js +248 -0
- package/dist/cjs/testing/icon.js.map +1 -0
- package/dist/cjs/testing/index.js +18 -0
- package/dist/cjs/testing/index.js.map +1 -0
- package/dist/cjs/testing/registration.js +142 -0
- package/dist/cjs/testing/registration.js.map +1 -0
- package/dist/cjs/validate/authoring_schema.js +312 -0
- package/dist/cjs/validate/authoring_schema.js.map +1 -0
- package/dist/cjs/validate/composition_schema.js +135 -0
- package/dist/cjs/validate/composition_schema.js.map +1 -0
- package/dist/cjs/validate/index.js +53 -0
- package/dist/cjs/validate/index.js.map +1 -0
- package/dist/cjs/validate/input_budget.js +156 -0
- package/dist/cjs/validate/input_budget.js.map +1 -0
- package/dist/cjs/validate/json_schema.js +72 -0
- package/dist/cjs/validate/json_schema.js.map +1 -0
- package/dist/cjs/validate/node_issues.js +65 -0
- package/dist/cjs/validate/node_issues.js.map +1 -0
- package/dist/cjs/validate/url.js +116 -0
- package/dist/cjs/validate/url.js.map +1 -0
- package/dist/cjs/validate/validation.js +165 -0
- package/dist/cjs/validate/validation.js.map +1 -0
- package/dist/cjs/validate/value_schemas.js +53 -0
- package/dist/cjs/validate/value_schemas.js.map +1 -0
- package/dist/composition/action_event.d.ts +13 -0
- package/dist/composition/action_event.d.ts.map +1 -0
- package/dist/composition/action_event.js +8 -0
- package/dist/composition/action_event.js.map +1 -0
- package/dist/composition/body_node_base.d.ts +72 -0
- package/dist/composition/body_node_base.d.ts.map +1 -0
- package/dist/composition/body_node_base.js +104 -0
- package/dist/composition/body_node_base.js.map +1 -0
- package/dist/composition/composition.d.ts +71 -0
- package/dist/composition/composition.d.ts.map +1 -0
- package/dist/composition/composition.js +8 -0
- package/dist/composition/composition.js.map +1 -0
- package/dist/composition/error.d.ts +61 -0
- package/dist/composition/error.d.ts.map +1 -0
- package/dist/composition/error.js +69 -0
- package/dist/composition/error.js.map +1 -0
- package/dist/composition/index.d.ts +11 -0
- package/dist/composition/index.d.ts.map +1 -0
- package/dist/composition/index.js +14 -0
- package/dist/composition/index.js.map +1 -0
- package/dist/composition/map_nodes.d.ts +16 -0
- package/dist/composition/map_nodes.d.ts.map +1 -0
- package/dist/composition/map_nodes.js +81 -0
- package/dist/composition/map_nodes.js.map +1 -0
- package/dist/composition/named_color.d.ts +9 -0
- package/dist/composition/named_color.d.ts.map +1 -0
- package/dist/composition/named_color.js +17 -0
- package/dist/composition/named_color.js.map +1 -0
- package/dist/composition/node.d.ts +11 -0
- package/dist/composition/node.d.ts.map +1 -0
- package/dist/composition/node.js +8 -0
- package/dist/composition/node.js.map +1 -0
- package/dist/composition/one_line.d.ts +7 -0
- package/dist/composition/one_line.d.ts.map +1 -0
- package/dist/composition/one_line.js +17 -0
- package/dist/composition/one_line.js.map +1 -0
- package/dist/composition/structured_value.d.ts +27 -0
- package/dist/composition/structured_value.d.ts.map +1 -0
- package/dist/composition/structured_value.js +18 -0
- package/dist/composition/structured_value.js.map +1 -0
- package/dist/composition/validation_error.d.ts +33 -0
- package/dist/composition/validation_error.d.ts.map +1 -0
- package/dist/composition/validation_error.js +35 -0
- package/dist/composition/validation_error.js.map +1 -0
- package/dist/define/frame.d.ts +155 -0
- package/dist/define/frame.d.ts.map +1 -0
- package/dist/define/frame.js +27 -0
- package/dist/define/frame.js.map +1 -0
- package/dist/define/index.d.ts +10 -0
- package/dist/define/index.d.ts.map +1 -0
- package/dist/define/index.js +13 -0
- package/dist/define/index.js.map +1 -0
- package/dist/define/markdown_content.d.ts +15 -0
- package/dist/define/markdown_content.d.ts.map +1 -0
- package/dist/define/markdown_content.js +9 -0
- package/dist/define/markdown_content.js.map +1 -0
- package/dist/define/primitive_example.d.ts +30 -0
- package/dist/define/primitive_example.d.ts.map +1 -0
- package/dist/define/primitive_example.js +21 -0
- package/dist/define/primitive_example.js.map +1 -0
- package/dist/define/primitive_icon.d.ts +11 -0
- package/dist/define/primitive_icon.d.ts.map +1 -0
- package/dist/define/primitive_icon.js +14 -0
- package/dist/define/primitive_icon.js.map +1 -0
- package/dist/define/primitive_module.d.ts +435 -0
- package/dist/define/primitive_module.d.ts.map +1 -0
- package/dist/define/primitive_module.js +112 -0
- package/dist/define/primitive_module.js.map +1 -0
- package/dist/define/slack_assets.d.ts +28 -0
- package/dist/define/slack_assets.d.ts.map +1 -0
- package/dist/define/slack_assets.js +8 -0
- package/dist/define/slack_assets.js.map +1 -0
- package/dist/define/slack_blocks.d.ts +234 -0
- package/dist/define/slack_blocks.d.ts.map +1 -0
- package/dist/define/slack_blocks.js +8 -0
- package/dist/define/slack_blocks.js.map +1 -0
- package/dist/define/zod_format.d.ts +33 -0
- package/dist/define/zod_format.d.ts.map +1 -0
- package/dist/define/zod_format.js +114 -0
- package/dist/define/zod_format.js.map +1 -0
- package/dist/define/zod_helpers.d.ts +10 -0
- package/dist/define/zod_helpers.d.ts.map +1 -0
- package/dist/define/zod_helpers.js +22 -0
- package/dist/define/zod_helpers.js.map +1 -0
- package/dist/entries/html.d.ts +3 -0
- package/dist/entries/html.d.ts.map +1 -0
- package/dist/entries/html.js +8 -0
- package/dist/entries/html.js.map +1 -0
- package/dist/entries/index.d.ts +6 -0
- package/dist/entries/index.d.ts.map +1 -0
- package/dist/entries/index.js +12 -0
- package/dist/entries/index.js.map +1 -0
- package/dist/entries/markdown.d.ts +3 -0
- package/dist/entries/markdown.d.ts.map +1 -0
- package/dist/entries/markdown.js +8 -0
- package/dist/entries/markdown.js.map +1 -0
- package/dist/entries/react.d.ts +5 -0
- package/dist/entries/react.d.ts.map +1 -0
- package/dist/entries/react.js +11 -0
- package/dist/entries/react.js.map +1 -0
- package/dist/entries/slack.d.ts +2 -0
- package/dist/entries/slack.d.ts.map +1 -0
- package/dist/entries/slack.js +8 -0
- package/dist/entries/slack.js.map +1 -0
- package/dist/entries/text.d.ts +2 -0
- package/dist/entries/text.d.ts.map +1 -0
- package/dist/entries/text.js +8 -0
- package/dist/entries/text.js.map +1 -0
- package/dist/pack/capabilities.d.ts +41 -0
- package/dist/pack/capabilities.d.ts.map +1 -0
- package/dist/pack/capabilities.js +36 -0
- package/dist/pack/capabilities.js.map +1 -0
- package/dist/pack/compose.d.ts +24 -0
- package/dist/pack/compose.d.ts.map +1 -0
- package/dist/pack/compose.js +55 -0
- package/dist/pack/compose.js.map +1 -0
- package/dist/pack/enhancements.d.ts +65 -0
- package/dist/pack/enhancements.d.ts.map +1 -0
- package/dist/pack/enhancements.js +59 -0
- package/dist/pack/enhancements.js.map +1 -0
- package/dist/pack/index.d.ts +5 -0
- package/dist/pack/index.d.ts.map +1 -0
- package/dist/pack/index.js +11 -0
- package/dist/pack/index.js.map +1 -0
- package/dist/pack/primitive_pack.d.ts +164 -0
- package/dist/pack/primitive_pack.d.ts.map +1 -0
- package/dist/pack/primitive_pack.js +92 -0
- package/dist/pack/primitive_pack.js.map +1 -0
- package/dist/render/anchors.d.ts +82 -0
- package/dist/render/anchors.d.ts.map +1 -0
- package/dist/render/anchors.js +153 -0
- package/dist/render/anchors.js.map +1 -0
- package/dist/render/context_view.d.ts +10 -0
- package/dist/render/context_view.d.ts.map +1 -0
- package/dist/render/context_view.js +49 -0
- package/dist/render/context_view.js.map +1 -0
- package/dist/render/format_display_value.d.ts +20 -0
- package/dist/render/format_display_value.d.ts.map +1 -0
- package/dist/render/format_display_value.js +137 -0
- package/dist/render/format_display_value.js.map +1 -0
- package/dist/render/format_number.d.ts +9 -0
- package/dist/render/format_number.d.ts.map +1 -0
- package/dist/render/format_number.js +42 -0
- package/dist/render/format_number.js.map +1 -0
- package/dist/render/html/enhancements.d.ts +10 -0
- package/dist/render/html/enhancements.d.ts.map +1 -0
- package/dist/render/html/enhancements.js +25 -0
- package/dist/render/html/enhancements.js.map +1 -0
- package/dist/render/html/envelope.d.ts +182 -0
- package/dist/render/html/envelope.d.ts.map +1 -0
- package/dist/render/html/envelope.js +214 -0
- package/dist/render/html/envelope.js.map +1 -0
- package/dist/render/html/index.d.ts +3 -0
- package/dist/render/html/index.d.ts.map +1 -0
- package/dist/render/html/index.js +8 -0
- package/dist/render/html/index.js.map +1 -0
- package/dist/render/index.d.ts +6 -0
- package/dist/render/index.d.ts.map +1 -0
- package/dist/render/index.js +11 -0
- package/dist/render/index.js.map +1 -0
- package/dist/render/layout_check.d.ts +43 -0
- package/dist/render/layout_check.d.ts.map +1 -0
- package/dist/render/layout_check.js +129 -0
- package/dist/render/layout_check.js.map +1 -0
- package/dist/render/markdown/builder.d.ts +46 -0
- package/dist/render/markdown/builder.d.ts.map +1 -0
- package/dist/render/markdown/builder.js +190 -0
- package/dist/render/markdown/builder.js.map +1 -0
- package/dist/render/markdown/envelope.d.ts +20 -0
- package/dist/render/markdown/envelope.d.ts.map +1 -0
- package/dist/render/markdown/envelope.js +29 -0
- package/dist/render/markdown/envelope.js.map +1 -0
- package/dist/render/markdown/format.d.ts +10 -0
- package/dist/render/markdown/format.d.ts.map +1 -0
- package/dist/render/markdown/format.js +202 -0
- package/dist/render/markdown/format.js.map +1 -0
- package/dist/render/markdown/index.d.ts +3 -0
- package/dist/render/markdown/index.d.ts.map +1 -0
- package/dist/render/markdown/index.js +9 -0
- package/dist/render/markdown/index.js.map +1 -0
- package/dist/render/measure_dom.d.ts +10 -0
- package/dist/render/measure_dom.d.ts.map +1 -0
- package/dist/render/measure_dom.js +57 -0
- package/dist/render/measure_dom.js.map +1 -0
- package/dist/render/payload.d.ts +16 -0
- package/dist/render/payload.d.ts.map +1 -0
- package/dist/render/payload.js +9 -0
- package/dist/render/payload.js.map +1 -0
- package/dist/render/primitive_dispatch.d.ts +72 -0
- package/dist/render/primitive_dispatch.d.ts.map +1 -0
- package/dist/render/primitive_dispatch.js +169 -0
- package/dist/render/primitive_dispatch.js.map +1 -0
- package/dist/render/react/content.d.ts +40 -0
- package/dist/render/react/content.d.ts.map +1 -0
- package/dist/render/react/content.js +39 -0
- package/dist/render/react/content.js.map +1 -0
- package/dist/render/react/enhancements.d.ts +15 -0
- package/dist/render/react/enhancements.d.ts.map +1 -0
- package/dist/render/react/enhancements.js +28 -0
- package/dist/render/react/enhancements.js.map +1 -0
- package/dist/render/react/index.d.ts +3 -0
- package/dist/render/react/index.d.ts.map +1 -0
- package/dist/render/react/index.js +9 -0
- package/dist/render/react/index.js.map +1 -0
- package/dist/render/slack/assets.d.ts +16 -0
- package/dist/render/slack/assets.d.ts.map +1 -0
- package/dist/render/slack/assets.js +40 -0
- package/dist/render/slack/assets.js.map +1 -0
- package/dist/render/slack/blocks.d.ts +72 -0
- package/dist/render/slack/blocks.d.ts.map +1 -0
- package/dist/render/slack/blocks.js +77 -0
- package/dist/render/slack/blocks.js.map +1 -0
- package/dist/render/slack/envelope.d.ts +52 -0
- package/dist/render/slack/envelope.d.ts.map +1 -0
- package/dist/render/slack/envelope.js +547 -0
- package/dist/render/slack/envelope.js.map +1 -0
- package/dist/render/slack/format.d.ts +70 -0
- package/dist/render/slack/format.d.ts.map +1 -0
- package/dist/render/slack/format.js +209 -0
- package/dist/render/slack/format.js.map +1 -0
- package/dist/render/slack/index.d.ts +6 -0
- package/dist/render/slack/index.d.ts.map +1 -0
- package/dist/render/slack/index.js +12 -0
- package/dist/render/slack/index.js.map +1 -0
- package/dist/render/slack/markdown_content.d.ts +17 -0
- package/dist/render/slack/markdown_content.d.ts.map +1 -0
- package/dist/render/slack/markdown_content.js +404 -0
- package/dist/render/slack/markdown_content.js.map +1 -0
- package/dist/render/text/envelope.d.ts +15 -0
- package/dist/render/text/envelope.d.ts.map +1 -0
- package/dist/render/text/envelope.js +17 -0
- package/dist/render/text/envelope.js.map +1 -0
- package/dist/render/text/index.d.ts +2 -0
- package/dist/render/text/index.d.ts.map +1 -0
- package/dist/render/text/index.js +8 -0
- package/dist/render/text/index.js.map +1 -0
- package/dist/testing/conformance.d.ts +145 -0
- package/dist/testing/conformance.d.ts.map +1 -0
- package/dist/testing/conformance.js +303 -0
- package/dist/testing/conformance.js.map +1 -0
- package/dist/testing/icon.d.ts +11 -0
- package/dist/testing/icon.d.ts.map +1 -0
- package/dist/testing/icon.js +244 -0
- package/dist/testing/icon.js.map +1 -0
- package/dist/testing/index.d.ts +4 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +10 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/registration.d.ts +32 -0
- package/dist/testing/registration.d.ts.map +1 -0
- package/dist/testing/registration.js +105 -0
- package/dist/testing/registration.js.map +1 -0
- package/dist/validate/authoring_schema.d.ts +33 -0
- package/dist/validate/authoring_schema.d.ts.map +1 -0
- package/dist/validate/authoring_schema.js +306 -0
- package/dist/validate/authoring_schema.js.map +1 -0
- package/dist/validate/composition_schema.d.ts +80 -0
- package/dist/validate/composition_schema.d.ts.map +1 -0
- package/dist/validate/composition_schema.js +127 -0
- package/dist/validate/composition_schema.js.map +1 -0
- package/dist/validate/index.d.ts +9 -0
- package/dist/validate/index.d.ts.map +1 -0
- package/dist/validate/index.js +15 -0
- package/dist/validate/index.js.map +1 -0
- package/dist/validate/input_budget.d.ts +35 -0
- package/dist/validate/input_budget.d.ts.map +1 -0
- package/dist/validate/input_budget.js +151 -0
- package/dist/validate/input_budget.js.map +1 -0
- package/dist/validate/json_schema.d.ts +32 -0
- package/dist/validate/json_schema.d.ts.map +1 -0
- package/dist/validate/json_schema.js +68 -0
- package/dist/validate/json_schema.js.map +1 -0
- package/dist/validate/node_issues.d.ts +12 -0
- package/dist/validate/node_issues.d.ts.map +1 -0
- package/dist/validate/node_issues.js +61 -0
- package/dist/validate/node_issues.js.map +1 -0
- package/dist/validate/url.d.ts +50 -0
- package/dist/validate/url.d.ts.map +1 -0
- package/dist/validate/url.js +107 -0
- package/dist/validate/url.js.map +1 -0
- package/dist/validate/validation.d.ts +95 -0
- package/dist/validate/validation.d.ts.map +1 -0
- package/dist/validate/validation.js +157 -0
- package/dist/validate/validation.js.map +1 -0
- package/dist/validate/value_schemas.d.ts +53 -0
- package/dist/validate/value_schemas.d.ts.map +1 -0
- package/dist/validate/value_schemas.js +50 -0
- package/dist/validate/value_schemas.js.map +1 -0
- package/package.json +119 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authoring_model.js","sourceRoot":"","sources":["../../src/author/authoring_model.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one\n * or more contributor license agreements. Licensed under the Elastic License\n * 2.0; you may not use this file except in compliance with the Elastic License\n * 2.0.\n */\n\nimport type { ZodType } from 'zod';\n\nimport { IsomerError } from '../composition/error';\nimport type { PrimitiveNode } from '../define/primitive_module';\n\nimport {\n type AuthoredChildField,\n type AuthoredSpec,\n readAuthoredSpec,\n} from './authored_fields';\n\nexport interface ChildSlot {\n array: boolean;\n field: string;\n}\n\nexport interface AuthoringChild {\n field: AuthoredChildField;\n primitiveType: string;\n path: readonly AuthoredChildField[];\n}\n\nexport const createAuthoringModel = (\n primitives: readonly { type: string; schema?: unknown; children?: unknown }[]\n) => {\n const authoredByType = new Map<string, AuthoredSpec>();\n const children = new Map<string, AuthoringChild>();\n const visited = new Set<ZodType>();\n const collectChildren = (\n fields: readonly AuthoredChildField[],\n primitiveType: string,\n path: readonly AuthoredChildField[]\n ): void => {\n for (const field of fields) {\n const prior = children.get(field.childType);\n if (prior && prior.field.signature !== field.signature) {\n throw new IsomerError(\n 'DUPLICATE_AUTHORED_CHILD',\n `Child type \"${field.childType}\" is branded with incompatible item or props input schemas.`\n );\n }\n const nextPath = [...path, field];\n if (!prior)\n children.set(field.childType, { field, primitiveType, path: nextPath });\n if (field.toItem || visited.has(field.itemSchema)) continue;\n visited.add(field.itemSchema);\n collectChildren(\n readAuthoredSpec(field.itemSchema).children,\n primitiveType,\n nextPath\n );\n }\n };\n for (const { type, schema } of primitives) {\n if (!isZodType(schema)) continue;\n const spec = readAuthoredSpec(schema);\n if (spec.children.length === 0 && spec.text.length === 0) continue;\n authoredByType.set(type, spec);\n collectChildren(spec.children, type, []);\n }\n const typeByName = new Map([['Composition', 'view']]);\n for (const type of [\n ...primitives.map(({ type }) => type),\n ...children.keys(),\n ]) {\n const name = capitalize(type);\n const earlier = typeByName.get(name);\n if (earlier !== undefined && earlier !== type) {\n throw new IsomerError(\n 'DUPLICATE_PRIMITIVE_TYPE',\n `buildJsxShim: \"${earlier}\" and \"${type}\" both become the component ${name}`\n );\n }\n typeByName.set(name, type);\n }\n const childSlotsByType = new Map(\n primitives.map(({ type, children }) => [type, inferChildSlots(children)])\n );\n return { authoredByType, children, childSlotsByType };\n};\n\nconst isZodType = (schema: unknown): schema is ZodType =>\n typeof schema === 'object' && schema !== null && '_zod' in schema;\n\n/**\n * Reads {@link PrimitiveDefinition.children} against a probe node so JSX can\n * fill the same fields a tree walk would visit. Paths like `body[0]` are array\n * slots; a bare `header` is a single nested node.\n */\nexport const inferChildSlots = (children: unknown): readonly ChildSlot[] => {\n if (typeof children !== 'function') {\n return [];\n }\n const probeNode: PrimitiveNode = { type: '__probe__' };\n const node = new Proxy(\n {},\n {\n get(_target, prop) {\n if (prop === 'type') {\n return probeNode.type;\n }\n return [probeNode];\n },\n }\n );\n try {\n const refs = (children as (value: unknown) => unknown)(node);\n if (!Array.isArray(refs)) {\n return [];\n }\n const byField = new Map<string, boolean>();\n for (const ref of refs) {\n if (!isChildRef(ref)) {\n continue;\n }\n const field = /^[A-Za-z_]\\w*/.exec(ref.path)?.[0];\n if (!field) {\n continue;\n }\n byField.set(\n field,\n byField.get(field) === true || /\\[\\d+\\]/.test(ref.path)\n );\n }\n return [...byField.entries()].map(([field, array]) => ({ array, field }));\n } catch {\n return [];\n }\n};\n\nconst isChildRef = (value: unknown): value is { path: string } =>\n typeof value === 'object' &&\n value !== null &&\n 'path' in value &&\n typeof value.path === 'string';\n\nexport const capitalize = (value: string): string =>\n `${value.slice(0, 1).toUpperCase()}${value.slice(1)}`;\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { AnyPrimitiveDefinition } from '../define/primitive_module.js';
|
|
2
|
+
type JsonSchema = Record<string, unknown>;
|
|
3
|
+
/** Options for {@link buildAuthoringDeclarations}. */
|
|
4
|
+
export interface AuthoringDeclarationsOptions {
|
|
5
|
+
/** Also declare the components `buildJsxShim` builds for these primitives. Defaults to `false`. */
|
|
6
|
+
jsx?: boolean;
|
|
7
|
+
/** Ambient module identity. Defaults to `@elastic/isomer-authoring`. */
|
|
8
|
+
moduleName?: string;
|
|
9
|
+
}
|
|
10
|
+
/** An ambient module for the schema from `buildAuthoringJsonSchema` and its primitive definitions. */
|
|
11
|
+
export declare const buildAuthoringDeclarations: (schema: JsonSchema, definitions: readonly AnyPrimitiveDefinition[], { jsx, moduleName, }?: AuthoringDeclarationsOptions) => string;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=declarations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"declarations.d.ts","sourceRoot":"","sources":["../../src/author/declarations.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAiBzE,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE1C,sDAAsD;AACtD,MAAM,WAAW,4BAA4B;IAC3C,mGAAmG;IACnG,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAwFD,sGAAsG;AACtG,eAAO,MAAM,0BAA0B,GACrC,QAAQ,UAAU,EAClB,aAAa,SAAS,sBAAsB,EAAE,EAC9C,uBAGG,4BAAiC,KACnC,MAwPF,CAAC"}
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
3
|
+
* or more contributor license agreements. Licensed under the Elastic License
|
|
4
|
+
* 2.0; you may not use this file except in compliance with the Elastic License
|
|
5
|
+
* 2.0.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
import { readAuthoredSpec } from './authored_fields.js';
|
|
9
|
+
import { prepareAuthoringInput } from './authoring_input.js';
|
|
10
|
+
import { capitalize, createAuthoringModel } from './authoring_model.js';
|
|
11
|
+
import { ANONYMOUS_DEF, createTypePrinter, IDENTIFIER, isJsonObject, jsDoc, ownDef, parseDefRef, pascalCase, } from './schema_to_typescript.js';
|
|
12
|
+
const RESERVED_NAMES = [
|
|
13
|
+
'AuthorChildren',
|
|
14
|
+
'CompositionProps',
|
|
15
|
+
'authorJsx',
|
|
16
|
+
'components',
|
|
17
|
+
];
|
|
18
|
+
const JSX_PRELUDE = `function authorJsx(type: unknown, props: unknown, ...children: unknown[]): authorJsx.JSX.Element;
|
|
19
|
+
namespace authorJsx {
|
|
20
|
+
namespace JSX {
|
|
21
|
+
interface Element {
|
|
22
|
+
readonly __isomerAuthorElement: true;
|
|
23
|
+
}
|
|
24
|
+
interface ElementChildrenAttribute {
|
|
25
|
+
children: {};
|
|
26
|
+
}
|
|
27
|
+
interface IntrinsicAttributes {
|
|
28
|
+
key?: string | number;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
`;
|
|
33
|
+
const AUTHOR_CHILDREN = `type AuthorChildren = authorJsx.JSX.Element | { readonly type: unknown; readonly props: unknown; readonly key: string | null } | string | number | boolean | null | undefined | readonly AuthorChildren[];\n`;
|
|
34
|
+
const isPlainObjectSchema = (node) => isJsonObject(node) &&
|
|
35
|
+
node.type === 'object' &&
|
|
36
|
+
isJsonObject(node.properties) &&
|
|
37
|
+
Object.keys(node.properties).length > 0 &&
|
|
38
|
+
(node.additionalProperties === undefined ||
|
|
39
|
+
node.additionalProperties === false) &&
|
|
40
|
+
!['$ref', 'oneOf', 'anyOf', 'allOf'].some((key) => Object.hasOwn(node, key));
|
|
41
|
+
const isNullSchema = (node) => isJsonObject(node) && node.type === 'null';
|
|
42
|
+
/** The object (or array) schema `node` stands for, through `$ref` and nullable wrappers. */
|
|
43
|
+
const resolveNode = (defs, node, active = new Set()) => {
|
|
44
|
+
if (!isJsonObject(node)) {
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
if (isJsonObject(node.properties)) {
|
|
48
|
+
return node;
|
|
49
|
+
}
|
|
50
|
+
if (typeof node.$ref === 'string') {
|
|
51
|
+
const id = parseDefRef(node.$ref);
|
|
52
|
+
return id === undefined || active.has(id)
|
|
53
|
+
? node
|
|
54
|
+
: (resolveNode(defs, ownDef(defs, id), new Set([...active, id])) ?? node);
|
|
55
|
+
}
|
|
56
|
+
for (const key of ['anyOf', 'oneOf']) {
|
|
57
|
+
const members = node[key];
|
|
58
|
+
if (Array.isArray(members)) {
|
|
59
|
+
const present = members.filter((member) => !isNullSchema(member));
|
|
60
|
+
if (present.length === 1) {
|
|
61
|
+
return resolveNode(defs, present[0], active);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return node;
|
|
66
|
+
};
|
|
67
|
+
const primitiveDoc = ({ catalog }, node) => {
|
|
68
|
+
const { purpose, useWhen, avoidWhen } = catalog;
|
|
69
|
+
const description = isJsonObject(node) && typeof node.description === 'string'
|
|
70
|
+
? node.description
|
|
71
|
+
: undefined;
|
|
72
|
+
return [
|
|
73
|
+
purpose,
|
|
74
|
+
...(description && description !== purpose ? ['', description] : []),
|
|
75
|
+
...(useWhen.length > 0
|
|
76
|
+
? ['', 'Use when:', ...useWhen.map((line) => `- ${line}`)]
|
|
77
|
+
: []),
|
|
78
|
+
...(avoidWhen.length > 0
|
|
79
|
+
? ['', 'Avoid when:', ...avoidWhen.map((line) => `- ${line}`)]
|
|
80
|
+
: []),
|
|
81
|
+
];
|
|
82
|
+
};
|
|
83
|
+
/** An ambient module for the schema from `buildAuthoringJsonSchema` and its primitive definitions. */
|
|
84
|
+
export const buildAuthoringDeclarations = (schema, definitions, { jsx = false, moduleName = '@elastic/isomer-authoring', } = {}) => {
|
|
85
|
+
const defs = { ...(isJsonObject(schema.$defs) ? schema.$defs : {}) };
|
|
86
|
+
const model = jsx ? createAuthoringModel(definitions) : undefined;
|
|
87
|
+
const customProps = new Map();
|
|
88
|
+
for (const [type, { field }] of model?.children ?? []) {
|
|
89
|
+
if (!field.propsSchema)
|
|
90
|
+
continue;
|
|
91
|
+
const { schema: input, metadata } = prepareAuthoringInput(field.propsSchema);
|
|
92
|
+
const projected = z.toJSONSchema(input, {
|
|
93
|
+
metadata,
|
|
94
|
+
io: 'input',
|
|
95
|
+
target: 'draft-2020-12',
|
|
96
|
+
cycles: 'ref',
|
|
97
|
+
reused: 'ref',
|
|
98
|
+
unrepresentable: 'any',
|
|
99
|
+
});
|
|
100
|
+
const localDefs = isJsonObject(projected.$defs) ? projected.$defs : {};
|
|
101
|
+
const prefix = `__authorProps${customProps.size}_`;
|
|
102
|
+
const id = `${prefix}Root`;
|
|
103
|
+
const rewrite = (value) => {
|
|
104
|
+
if (Array.isArray(value))
|
|
105
|
+
return value.map(rewrite);
|
|
106
|
+
if (!isJsonObject(value))
|
|
107
|
+
return value;
|
|
108
|
+
return Object.fromEntries(Object.entries(value).map(([key, member]) => [
|
|
109
|
+
key,
|
|
110
|
+
key === '$ref' && member === '#'
|
|
111
|
+
? `#/$defs/${id}`
|
|
112
|
+
: key === '$ref' &&
|
|
113
|
+
typeof member === 'string' &&
|
|
114
|
+
parseDefRef(member) !== undefined
|
|
115
|
+
? `#/$defs/${prefix}${parseDefRef(member)}`
|
|
116
|
+
: rewrite(member),
|
|
117
|
+
]));
|
|
118
|
+
};
|
|
119
|
+
for (const [id, node] of Object.entries(localDefs))
|
|
120
|
+
defs[`${prefix}${id}`] = rewrite(node);
|
|
121
|
+
const { $defs: _defs, $schema: _schema, ...node } = projected;
|
|
122
|
+
defs[id] = rewrite(node);
|
|
123
|
+
customProps.set(type, id);
|
|
124
|
+
}
|
|
125
|
+
const used = new Set(RESERVED_NAMES);
|
|
126
|
+
const claim = (base) => {
|
|
127
|
+
let name = base;
|
|
128
|
+
for (let suffix = 2; used.has(name); suffix += 1) {
|
|
129
|
+
name = `${base}${suffix}`;
|
|
130
|
+
}
|
|
131
|
+
used.add(name);
|
|
132
|
+
return name;
|
|
133
|
+
};
|
|
134
|
+
const names = new Map();
|
|
135
|
+
if (Object.hasOwn(defs, 'bodyNode')) {
|
|
136
|
+
names.set('bodyNode', claim('BodyNode'));
|
|
137
|
+
}
|
|
138
|
+
for (const { type } of definitions) {
|
|
139
|
+
if (Object.hasOwn(defs, type) && !names.has(type)) {
|
|
140
|
+
names.set(type, claim(`${pascalCase(type)}Node`));
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
for (const id of Object.keys(defs)) {
|
|
144
|
+
if (!names.has(id) && !ANONYMOUS_DEF.test(id)) {
|
|
145
|
+
names.set(id, claim(pascalCase(id)));
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
const printer = createTypePrinter({ defs, names, claim });
|
|
149
|
+
const declareType = (name, node, docLines) => {
|
|
150
|
+
const doc = jsDoc(docLines, '');
|
|
151
|
+
return isPlainObjectSchema(node)
|
|
152
|
+
? `${doc}interface ${name} {\n${printer.members(node, 0)}}\n`
|
|
153
|
+
: `${doc}type ${name} = ${printer.print(node)};\n`;
|
|
154
|
+
};
|
|
155
|
+
const declareBodyNode = (name, node) => {
|
|
156
|
+
const members = isJsonObject(node) && Array.isArray(node.oneOf)
|
|
157
|
+
? node.oneOf.map((member) => printer.print(member))
|
|
158
|
+
: undefined;
|
|
159
|
+
if (!members) {
|
|
160
|
+
return declareType(name, node, []);
|
|
161
|
+
}
|
|
162
|
+
return `type ${name} =${members.length === 0
|
|
163
|
+
? ' never'
|
|
164
|
+
: `\n${members.map((member) => ` | ${member}`).join('\n')}`};\n`;
|
|
165
|
+
};
|
|
166
|
+
const declareJsx = () => {
|
|
167
|
+
if (!model)
|
|
168
|
+
return [];
|
|
169
|
+
const out = [JSX_PRELUDE, AUTHOR_CHILDREN];
|
|
170
|
+
const bindings = [];
|
|
171
|
+
const declared = new Set();
|
|
172
|
+
const declareComponent = (component, node, optional, takesChildren, omit = new Set(), docs = []) => {
|
|
173
|
+
if (declared.has(component))
|
|
174
|
+
return;
|
|
175
|
+
declared.add(component);
|
|
176
|
+
const propsName = component === 'Composition'
|
|
177
|
+
? 'CompositionProps'
|
|
178
|
+
: claim(`${pascalCase(component)}Props`);
|
|
179
|
+
const skipped = new Set([
|
|
180
|
+
...omit,
|
|
181
|
+
...(takesChildren ? ['children'] : []),
|
|
182
|
+
]);
|
|
183
|
+
const extra = node?.additionalProperties;
|
|
184
|
+
const props = node && isJsonObject(node.properties)
|
|
185
|
+
? printer.members(node, 0, { omit: skipped, optional })
|
|
186
|
+
: '';
|
|
187
|
+
const combined = node &&
|
|
188
|
+
!isJsonObject(node.properties) &&
|
|
189
|
+
['$ref', 'anyOf', 'oneOf', 'allOf'].some((key) => Object.hasOwn(node, key));
|
|
190
|
+
out.push(combined
|
|
191
|
+
? `type ${propsName} = (${printer.print(node)})${takesChildren ? ' & { children?: AuthorChildren }' : ''};\n`
|
|
192
|
+
: `interface ${propsName} {\n${props}${takesChildren ? ' children?: AuthorChildren;\n' : ''}}\n`);
|
|
193
|
+
const open = !combined && (!node || extra !== false);
|
|
194
|
+
const extraType = extra === undefined || extra === true
|
|
195
|
+
? 'unknown'
|
|
196
|
+
: printer.print(extra);
|
|
197
|
+
const inputName = claim('AuthorInput');
|
|
198
|
+
const keyName = claim('AuthorKey');
|
|
199
|
+
const signature = open
|
|
200
|
+
? `<${inputName} extends ${propsName}>(props: ${inputName} & { [${keyName} in keyof ${inputName} as ${keyName} extends keyof ${propsName} | 'key' ? never : ${keyName}]: ${extraType} }) => null`
|
|
201
|
+
: `(props: ${propsName}) => null`;
|
|
202
|
+
bindings.push(` ${JSON.stringify(component)}: ${signature};`);
|
|
203
|
+
if (IDENTIFIER.test(component))
|
|
204
|
+
out.push(`${jsDoc(docs, '')}const ${component}: ${signature};\n`);
|
|
205
|
+
};
|
|
206
|
+
declareComponent('Composition', schema, new Set(['body']), true, new Set(['type']), ['Props of the root `<Composition>` element.']);
|
|
207
|
+
for (const definition of definitions) {
|
|
208
|
+
const { type } = definition;
|
|
209
|
+
const node = resolveNode(defs, ownDef(defs, type));
|
|
210
|
+
const spec = model.authoredByType.get(type);
|
|
211
|
+
const slots = model.childSlotsByType.get(type) ?? [];
|
|
212
|
+
const [slot] = slots;
|
|
213
|
+
const filled = spec
|
|
214
|
+
? [...spec.children, ...spec.text].map(({ field }) => field)
|
|
215
|
+
: slots.length === 1 && slot
|
|
216
|
+
? [slot.field]
|
|
217
|
+
: [];
|
|
218
|
+
declareComponent(capitalize(type), node, new Set(filled), filled.length > 0, new Set(['type']), primitiveDoc(definition, node));
|
|
219
|
+
}
|
|
220
|
+
for (const [type, { field, primitiveType, path }] of model.children) {
|
|
221
|
+
let node = resolveNode(defs, ownDef(defs, primitiveType));
|
|
222
|
+
for (const step of path) {
|
|
223
|
+
const properties = node && isJsonObject(node.properties) ? node.properties : {};
|
|
224
|
+
const property = resolveNode(defs, properties[step.field]);
|
|
225
|
+
node = step.array ? resolveNode(defs, property?.items) : property;
|
|
226
|
+
}
|
|
227
|
+
const customId = customProps.get(type);
|
|
228
|
+
if (field.toItem)
|
|
229
|
+
node = customId ? resolveNode(defs, ownDef(defs, customId)) : undefined;
|
|
230
|
+
const nested = field.toItem
|
|
231
|
+
? []
|
|
232
|
+
: readAuthoredSpec(field.itemSchema).children;
|
|
233
|
+
const optional = new Set([
|
|
234
|
+
...nested.map(({ field }) => field),
|
|
235
|
+
...(field.textField === undefined || field.toItem
|
|
236
|
+
? []
|
|
237
|
+
: [field.textField]),
|
|
238
|
+
]);
|
|
239
|
+
declareComponent(capitalize(type), node, optional, !!field.toItem || nested.length > 0 || field.textField !== undefined);
|
|
240
|
+
}
|
|
241
|
+
out.push(`const components: {\n${bindings.join('\n')}\n};\n`);
|
|
242
|
+
return out;
|
|
243
|
+
};
|
|
244
|
+
const definitionByType = new Map(definitions.map((definition) => [definition.type, definition]));
|
|
245
|
+
const chunks = [];
|
|
246
|
+
for (const [id, name] of names) {
|
|
247
|
+
const node = ownDef(defs, id);
|
|
248
|
+
if (id === 'bodyNode') {
|
|
249
|
+
continue;
|
|
250
|
+
}
|
|
251
|
+
const definition = definitionByType.get(id);
|
|
252
|
+
chunks.push(declareType(name, node, definition
|
|
253
|
+
? primitiveDoc(definition, node)
|
|
254
|
+
: [
|
|
255
|
+
isJsonObject(node) && typeof node.description === 'string'
|
|
256
|
+
? node.description
|
|
257
|
+
: '',
|
|
258
|
+
]));
|
|
259
|
+
}
|
|
260
|
+
const bodyNodeName = names.get('bodyNode');
|
|
261
|
+
if (bodyNodeName !== undefined) {
|
|
262
|
+
chunks.push(declareBodyNode(bodyNodeName, ownDef(defs, 'bodyNode')));
|
|
263
|
+
}
|
|
264
|
+
if (jsx) {
|
|
265
|
+
chunks.push(...declareJsx());
|
|
266
|
+
}
|
|
267
|
+
chunks.push(...printer.promoted().map((alias) => `${alias}\n`));
|
|
268
|
+
const runtimeModule = jsx
|
|
269
|
+
? `\ndeclare module ${JSON.stringify(`${moduleName}/jsx-runtime`)} {\n import { authorJsx } from ${JSON.stringify(moduleName)};\n export import JSX = authorJsx.JSX;\n export function jsx(type: unknown, props: unknown, key?: string): JSX.Element;\n export function jsxs(type: unknown, props: unknown, key?: string): JSX.Element;\n}\n\ndeclare module ${JSON.stringify(`${moduleName}/jsx-dev-runtime`)} {\n import { authorJsx } from ${JSON.stringify(moduleName)};\n export import JSX = authorJsx.JSX;\n export function jsxDEV(type: unknown, props: unknown, key?: string, isStaticChildren?: boolean, source?: unknown, self?: unknown): JSX.Element;\n}\n`
|
|
270
|
+
: '';
|
|
271
|
+
return `declare module ${JSON.stringify(moduleName)} {\n${chunks
|
|
272
|
+
.join('\n')
|
|
273
|
+
.split('\n')
|
|
274
|
+
.map((line) => (line ? ` ${line}` : ''))
|
|
275
|
+
.join('\n')}\n}\n${runtimeModule}`;
|
|
276
|
+
};
|
|
277
|
+
//# sourceMappingURL=declarations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"declarations.js","sourceRoot":"","sources":["../../src/author/declarations.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one\n * or more contributor license agreements. Licensed under the Elastic License\n * 2.0; you may not use this file except in compliance with the Elastic License\n * 2.0.\n */\n\nimport { z } from 'zod';\n\nimport type { AnyPrimitiveDefinition } from '../define/primitive_module';\n\nimport { readAuthoredSpec } from './authored_fields';\nimport { prepareAuthoringInput } from './authoring_input';\nimport { capitalize, createAuthoringModel } from './authoring_model';\nimport {\n ANONYMOUS_DEF,\n createTypePrinter,\n IDENTIFIER,\n isJsonObject,\n jsDoc,\n type JsonObject,\n ownDef,\n parseDefRef,\n pascalCase,\n} from './schema_to_typescript';\n\ntype JsonSchema = Record<string, unknown>;\n\n/** Options for {@link buildAuthoringDeclarations}. */\nexport interface AuthoringDeclarationsOptions {\n /** Also declare the components `buildJsxShim` builds for these primitives. Defaults to `false`. */\n jsx?: boolean;\n /** Ambient module identity. Defaults to `@elastic/isomer-authoring`. */\n moduleName?: string;\n}\n\nconst RESERVED_NAMES = [\n 'AuthorChildren',\n 'CompositionProps',\n 'authorJsx',\n 'components',\n];\nconst JSX_PRELUDE = `function authorJsx(type: unknown, props: unknown, ...children: unknown[]): authorJsx.JSX.Element;\nnamespace authorJsx {\n namespace JSX {\n interface Element {\n readonly __isomerAuthorElement: true;\n }\n interface ElementChildrenAttribute {\n children: {};\n }\n interface IntrinsicAttributes {\n key?: string | number;\n }\n }\n}\n`;\nconst AUTHOR_CHILDREN = `type AuthorChildren = authorJsx.JSX.Element | { readonly type: unknown; readonly props: unknown; readonly key: string | null } | string | number | boolean | null | undefined | readonly AuthorChildren[];\\n`;\n\nconst isPlainObjectSchema = (node: unknown): node is JsonObject =>\n isJsonObject(node) &&\n node.type === 'object' &&\n isJsonObject(node.properties) &&\n Object.keys(node.properties).length > 0 &&\n (node.additionalProperties === undefined ||\n node.additionalProperties === false) &&\n !['$ref', 'oneOf', 'anyOf', 'allOf'].some((key) => Object.hasOwn(node, key));\n\nconst isNullSchema = (node: unknown): boolean =>\n isJsonObject(node) && node.type === 'null';\n\n/** The object (or array) schema `node` stands for, through `$ref` and nullable wrappers. */\nconst resolveNode = (\n defs: JsonObject,\n node: unknown,\n active: ReadonlySet<string> = new Set()\n): JsonObject | undefined => {\n if (!isJsonObject(node)) {\n return undefined;\n }\n if (isJsonObject(node.properties)) {\n return node;\n }\n if (typeof node.$ref === 'string') {\n const id = parseDefRef(node.$ref);\n return id === undefined || active.has(id)\n ? node\n : (resolveNode(defs, ownDef(defs, id), new Set([...active, id])) ?? node);\n }\n for (const key of ['anyOf', 'oneOf'] as const) {\n const members = node[key];\n if (Array.isArray(members)) {\n const present = members.filter((member) => !isNullSchema(member));\n if (present.length === 1) {\n return resolveNode(defs, present[0], active);\n }\n }\n }\n return node;\n};\n\nconst primitiveDoc = (\n { catalog }: AnyPrimitiveDefinition,\n node: unknown\n): string[] => {\n const { purpose, useWhen, avoidWhen } = catalog;\n const description =\n isJsonObject(node) && typeof node.description === 'string'\n ? node.description\n : undefined;\n return [\n purpose,\n ...(description && description !== purpose ? ['', description] : []),\n ...(useWhen.length > 0\n ? ['', 'Use when:', ...useWhen.map((line) => `- ${line}`)]\n : []),\n ...(avoidWhen.length > 0\n ? ['', 'Avoid when:', ...avoidWhen.map((line) => `- ${line}`)]\n : []),\n ];\n};\n\n/** An ambient module for the schema from `buildAuthoringJsonSchema` and its primitive definitions. */\nexport const buildAuthoringDeclarations = (\n schema: JsonSchema,\n definitions: readonly AnyPrimitiveDefinition[],\n {\n jsx = false,\n moduleName = '@elastic/isomer-authoring',\n }: AuthoringDeclarationsOptions = {}\n): string => {\n const defs = { ...(isJsonObject(schema.$defs) ? schema.$defs : {}) };\n const model = jsx ? createAuthoringModel(definitions) : undefined;\n const customProps = new Map<string, string>();\n for (const [type, { field }] of model?.children ?? []) {\n if (!field.propsSchema) continue;\n const { schema: input, metadata } = prepareAuthoringInput(\n field.propsSchema\n );\n const projected = z.toJSONSchema(input, {\n metadata,\n io: 'input',\n target: 'draft-2020-12',\n cycles: 'ref',\n reused: 'ref',\n unrepresentable: 'any',\n });\n const localDefs = isJsonObject(projected.$defs) ? projected.$defs : {};\n const prefix = `__authorProps${customProps.size}_`;\n const id = `${prefix}Root`;\n const rewrite = (value: unknown): unknown => {\n if (Array.isArray(value)) return value.map(rewrite);\n if (!isJsonObject(value)) return value;\n return Object.fromEntries(\n Object.entries(value).map(([key, member]) => [\n key,\n key === '$ref' && member === '#'\n ? `#/$defs/${id}`\n : key === '$ref' &&\n typeof member === 'string' &&\n parseDefRef(member) !== undefined\n ? `#/$defs/${prefix}${parseDefRef(member)}`\n : rewrite(member),\n ])\n );\n };\n for (const [id, node] of Object.entries(localDefs))\n defs[`${prefix}${id}`] = rewrite(node);\n const { $defs: _defs, $schema: _schema, ...node } = projected;\n defs[id] = rewrite(node);\n customProps.set(type, id);\n }\n const used = new Set(RESERVED_NAMES);\n const claim = (base: string): string => {\n let name = base;\n for (let suffix = 2; used.has(name); suffix += 1) {\n name = `${base}${suffix}`;\n }\n used.add(name);\n return name;\n };\n\n const names = new Map<string, string>();\n if (Object.hasOwn(defs, 'bodyNode')) {\n names.set('bodyNode', claim('BodyNode'));\n }\n for (const { type } of definitions) {\n if (Object.hasOwn(defs, type) && !names.has(type)) {\n names.set(type, claim(`${pascalCase(type)}Node`));\n }\n }\n for (const id of Object.keys(defs)) {\n if (!names.has(id) && !ANONYMOUS_DEF.test(id)) {\n names.set(id, claim(pascalCase(id)));\n }\n }\n\n const printer = createTypePrinter({ defs, names, claim });\n\n const declareType = (\n name: string,\n node: unknown,\n docLines: readonly string[]\n ): string => {\n const doc = jsDoc(docLines, '');\n return isPlainObjectSchema(node)\n ? `${doc}interface ${name} {\\n${printer.members(node, 0)}}\\n`\n : `${doc}type ${name} = ${printer.print(node)};\\n`;\n };\n\n const declareBodyNode = (name: string, node: unknown): string => {\n const members =\n isJsonObject(node) && Array.isArray(node.oneOf)\n ? node.oneOf.map((member) => printer.print(member))\n : undefined;\n if (!members) {\n return declareType(name, node, []);\n }\n return `type ${name} =${\n members.length === 0\n ? ' never'\n : `\\n${members.map((member) => ` | ${member}`).join('\\n')}`\n };\\n`;\n };\n\n const declareJsx = (): string[] => {\n if (!model) return [];\n const out = [JSX_PRELUDE, AUTHOR_CHILDREN];\n const bindings: string[] = [];\n const declared = new Set<string>();\n const declareComponent = (\n component: string,\n node: JsonObject | undefined,\n optional: ReadonlySet<string>,\n takesChildren: boolean,\n omit: ReadonlySet<string> = new Set(),\n docs: readonly string[] = []\n ): void => {\n if (declared.has(component)) return;\n declared.add(component);\n const propsName =\n component === 'Composition'\n ? 'CompositionProps'\n : claim(`${pascalCase(component)}Props`);\n const skipped = new Set([\n ...omit,\n ...(takesChildren ? ['children'] : []),\n ]);\n const extra = node?.additionalProperties;\n const props =\n node && isJsonObject(node.properties)\n ? printer.members(node, 0, { omit: skipped, optional })\n : '';\n const combined =\n node &&\n !isJsonObject(node.properties) &&\n ['$ref', 'anyOf', 'oneOf', 'allOf'].some((key) =>\n Object.hasOwn(node, key)\n );\n out.push(\n combined\n ? `type ${propsName} = (${printer.print(node)})${takesChildren ? ' & { children?: AuthorChildren }' : ''};\\n`\n : `interface ${propsName} {\\n${props}${takesChildren ? ' children?: AuthorChildren;\\n' : ''}}\\n`\n );\n const open = !combined && (!node || extra !== false);\n const extraType =\n extra === undefined || extra === true\n ? 'unknown'\n : printer.print(extra);\n const inputName = claim('AuthorInput');\n const keyName = claim('AuthorKey');\n const signature = open\n ? `<${inputName} extends ${propsName}>(props: ${inputName} & { [${keyName} in keyof ${inputName} as ${keyName} extends keyof ${propsName} | 'key' ? never : ${keyName}]: ${extraType} }) => null`\n : `(props: ${propsName}) => null`;\n bindings.push(` ${JSON.stringify(component)}: ${signature};`);\n if (IDENTIFIER.test(component))\n out.push(`${jsDoc(docs, '')}const ${component}: ${signature};\\n`);\n };\n declareComponent(\n 'Composition',\n schema,\n new Set(['body']),\n true,\n new Set(['type']),\n ['Props of the root `<Composition>` element.']\n );\n for (const definition of definitions) {\n const { type } = definition;\n const node = resolveNode(defs, ownDef(defs, type));\n const spec = model.authoredByType.get(type);\n const slots = model.childSlotsByType.get(type) ?? [];\n const [slot] = slots;\n const filled = spec\n ? [...spec.children, ...spec.text].map(({ field }) => field)\n : slots.length === 1 && slot\n ? [slot.field]\n : [];\n declareComponent(\n capitalize(type),\n node,\n new Set(filled),\n filled.length > 0,\n new Set(['type']),\n primitiveDoc(definition, node)\n );\n }\n for (const [type, { field, primitiveType, path }] of model.children) {\n let node = resolveNode(defs, ownDef(defs, primitiveType));\n for (const step of path) {\n const properties =\n node && isJsonObject(node.properties) ? node.properties : {};\n const property = resolveNode(defs, properties[step.field]);\n node = step.array ? resolveNode(defs, property?.items) : property;\n }\n const customId = customProps.get(type);\n if (field.toItem)\n node = customId ? resolveNode(defs, ownDef(defs, customId)) : undefined;\n const nested = field.toItem\n ? []\n : readAuthoredSpec(field.itemSchema).children;\n const optional = new Set([\n ...nested.map(({ field }) => field),\n ...(field.textField === undefined || field.toItem\n ? []\n : [field.textField]),\n ]);\n declareComponent(\n capitalize(type),\n node,\n optional,\n !!field.toItem || nested.length > 0 || field.textField !== undefined\n );\n }\n out.push(`const components: {\\n${bindings.join('\\n')}\\n};\\n`);\n return out;\n };\n\n const definitionByType = new Map(\n definitions.map((definition) => [definition.type, definition])\n );\n const chunks: string[] = [];\n for (const [id, name] of names) {\n const node = ownDef(defs, id);\n if (id === 'bodyNode') {\n continue;\n }\n const definition = definitionByType.get(id);\n chunks.push(\n declareType(\n name,\n node,\n definition\n ? primitiveDoc(definition, node)\n : [\n isJsonObject(node) && typeof node.description === 'string'\n ? node.description\n : '',\n ]\n )\n );\n }\n const bodyNodeName = names.get('bodyNode');\n if (bodyNodeName !== undefined) {\n chunks.push(declareBodyNode(bodyNodeName, ownDef(defs, 'bodyNode')));\n }\n\n if (jsx) {\n chunks.push(...declareJsx());\n }\n chunks.push(...printer.promoted().map((alias) => `${alias}\\n`));\n const runtimeModule = jsx\n ? `\\ndeclare module ${JSON.stringify(`${moduleName}/jsx-runtime`)} {\\n import { authorJsx } from ${JSON.stringify(moduleName)};\\n export import JSX = authorJsx.JSX;\\n export function jsx(type: unknown, props: unknown, key?: string): JSX.Element;\\n export function jsxs(type: unknown, props: unknown, key?: string): JSX.Element;\\n}\\n\\ndeclare module ${JSON.stringify(`${moduleName}/jsx-dev-runtime`)} {\\n import { authorJsx } from ${JSON.stringify(moduleName)};\\n export import JSX = authorJsx.JSX;\\n export function jsxDEV(type: unknown, props: unknown, key?: string, isStaticChildren?: boolean, source?: unknown, self?: unknown): JSX.Element;\\n}\\n`\n : '';\n return `declare module ${JSON.stringify(moduleName)} {\\n${chunks\n .join('\\n')\n .split('\\n')\n .map((line) => (line ? ` ${line}` : ''))\n .join('\\n')}\\n}\\n${runtimeModule}`;\n};\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { authoringBodySchema } from '../validate/index.js';
|
|
2
|
+
export { type AuthorChildContext, type AuthoredChildBrand, type AuthoredChildField, type AuthoredSpec, type AuthoredTextBrand, type AuthoredTextField, type AuthoredToItemBrand, fromChildren, fromTextChildren, readAuthoredSpec, } from './authored_fields.js';
|
|
3
|
+
export { type AuthoringDeclarationsOptions, buildAuthoringDeclarations, } from './declarations.js';
|
|
4
|
+
export { type AuthorComponent } from './jsx.js';
|
|
5
|
+
export { type AuthorComposition, type CompositionAuthorProps, type JsxShim, type PrimitiveComponentMap, buildJsxShim, textFromChildren, } from './jsx_shim.js';
|
|
6
|
+
export { type AuthoringProfileId, type AuthoringPromptContext, type AuthoringViewSummary, AUTHORING_PROFILE_IDS, buildAuthoringPrompt, formatPrimitiveEntry, } from './prompt.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/author/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,4BAA4B,EACjC,0BAA0B,GAC3B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,OAAO,EACZ,KAAK,qBAAqB,EAC1B,YAAY,EACZ,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
3
|
+
* or more contributor license agreements. Licensed under the Elastic License
|
|
4
|
+
* 2.0; you may not use this file except in compliance with the Elastic License
|
|
5
|
+
* 2.0.
|
|
6
|
+
*/
|
|
7
|
+
export { authoringBodySchema } from '../validate/index.js';
|
|
8
|
+
export { fromChildren, fromTextChildren, readAuthoredSpec, } from './authored_fields.js';
|
|
9
|
+
export { buildAuthoringDeclarations, } from './declarations.js';
|
|
10
|
+
export { buildJsxShim, textFromChildren, } from './jsx_shim.js';
|
|
11
|
+
export { AUTHORING_PROFILE_IDS, buildAuthoringPrompt, formatPrimitiveEntry, } from './prompt.js';
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/author/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAQL,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,0BAA0B,GAC3B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAKL,YAAY,EACZ,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAIL,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,UAAU,CAAC","sourcesContent":["/*\n * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one\n * or more contributor license agreements. Licensed under the Elastic License\n * 2.0; you may not use this file except in compliance with the Elastic License\n * 2.0.\n */\n\nexport { authoringBodySchema } from '../validate';\nexport {\n type AuthorChildContext,\n type AuthoredChildBrand,\n type AuthoredChildField,\n type AuthoredSpec,\n type AuthoredTextBrand,\n type AuthoredTextField,\n type AuthoredToItemBrand,\n fromChildren,\n fromTextChildren,\n readAuthoredSpec,\n} from './authored_fields';\nexport {\n type AuthoringDeclarationsOptions,\n buildAuthoringDeclarations,\n} from './declarations';\nexport { type AuthorComponent } from './jsx';\nexport {\n type AuthorComposition,\n type CompositionAuthorProps,\n type JsxShim,\n type PrimitiveComponentMap,\n buildJsxShim,\n textFromChildren,\n} from './jsx_shim';\nexport {\n type AuthoringProfileId,\n type AuthoringPromptContext,\n type AuthoringViewSummary,\n AUTHORING_PROFILE_IDS,\n buildAuthoringPrompt,\n formatPrimitiveEntry,\n} from './prompt';\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Brand carrying the primitive type an authoring component stands for.
|
|
3
|
+
*
|
|
4
|
+
* `Symbol.for` rather than `Symbol()`: the SDK ships both ESM and CJS builds,
|
|
5
|
+
* so a host can hold two copies of this module and a unique symbol would make
|
|
6
|
+
* one build's components unreadable to the other's shim.
|
|
7
|
+
*/
|
|
8
|
+
export declare const authorType: unique symbol;
|
|
9
|
+
/**
|
|
10
|
+
* A JSX component that renders `null` and exists only to carry `TType` through
|
|
11
|
+
* the tree until the shim converts it to a composition.
|
|
12
|
+
*/
|
|
13
|
+
export interface AuthorComponent<TProps, TType extends string> {
|
|
14
|
+
(props: TProps): null;
|
|
15
|
+
readonly [authorType]: TType;
|
|
16
|
+
/** Set to `type` by the shim. */
|
|
17
|
+
displayName?: string;
|
|
18
|
+
}
|
|
19
|
+
/** The {@link AuthorComponent} for one primitive `type`. */
|
|
20
|
+
export declare const defineAuthorComponent: <TProps, TType extends string>(type: TType) => AuthorComponent<TProps, TType>;
|
|
21
|
+
//# sourceMappingURL=jsx.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsx.d.ts","sourceRoot":"","sources":["../../src/author/jsx.ts"],"names":[],"mappings":"AAOA;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,eAA2C,CAAC;AAEnE;;;GAGG;AACH,MAAM,WAAW,eAAe,CAAC,MAAM,EAAE,KAAK,SAAS,MAAM;IAC3D,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC;IAC7B,iCAAiC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,4DAA4D;AAC5D,eAAO,MAAM,qBAAqB,GAAI,MAAM,EAAE,KAAK,SAAS,MAAM,EAChE,MAAM,KAAK,KACV,eAAe,CAAC,MAAM,EAAE,KAAK,CAI5B,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
3
|
+
* or more contributor license agreements. Licensed under the Elastic License
|
|
4
|
+
* 2.0; you may not use this file except in compliance with the Elastic License
|
|
5
|
+
* 2.0.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Brand carrying the primitive type an authoring component stands for.
|
|
9
|
+
*
|
|
10
|
+
* `Symbol.for` rather than `Symbol()`: the SDK ships both ESM and CJS builds,
|
|
11
|
+
* so a host can hold two copies of this module and a unique symbol would make
|
|
12
|
+
* one build's components unreadable to the other's shim.
|
|
13
|
+
*/
|
|
14
|
+
export const authorType = Symbol.for('elastic.isomer.author_type');
|
|
15
|
+
/** The {@link AuthorComponent} for one primitive `type`. */
|
|
16
|
+
export const defineAuthorComponent = (type) => Object.assign(() => null, {
|
|
17
|
+
[authorType]: type,
|
|
18
|
+
displayName: type,
|
|
19
|
+
});
|
|
20
|
+
//# sourceMappingURL=jsx.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsx.js","sourceRoot":"","sources":["../../src/author/jsx.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;AAanE,4DAA4D;AAC5D,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,IAAW,EACqB,EAAE,CAClC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE;IACxB,CAAC,UAAU,CAAC,EAAE,IAAI;IAClB,WAAW,EAAE,IAAI;CAClB,CAAC,CAAC","sourcesContent":["/*\n * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one\n * or more contributor license agreements. Licensed under the Elastic License\n * 2.0; you may not use this file except in compliance with the Elastic License\n * 2.0.\n */\n\n/**\n * Brand carrying the primitive type an authoring component stands for.\n *\n * `Symbol.for` rather than `Symbol()`: the SDK ships both ESM and CJS builds,\n * so a host can hold two copies of this module and a unique symbol would make\n * one build's components unreadable to the other's shim.\n */\nexport const authorType = Symbol.for('elastic.isomer.author_type');\n\n/**\n * A JSX component that renders `null` and exists only to carry `TType` through\n * the tree until the shim converts it to a composition.\n */\nexport interface AuthorComponent<TProps, TType extends string> {\n (props: TProps): null;\n readonly [authorType]: TType;\n /** Set to `type` by the shim. */\n displayName?: string;\n}\n\n/** The {@link AuthorComponent} for one primitive `type`. */\nexport const defineAuthorComponent = <TProps, TType extends string>(\n type: TType\n): AuthorComponent<TProps, TType> =>\n Object.assign(() => null, {\n [authorType]: type,\n displayName: type,\n });\n"]}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { type ReactElement, type ReactNode } from 'react';
|
|
2
|
+
import type { z, ZodObject } from 'zod';
|
|
3
|
+
import type { Composition } from '../composition/composition.js';
|
|
4
|
+
import type { PrimitiveNode } from '../define/primitive_module.js';
|
|
5
|
+
import { type AuthoredChildBrand, type AuthoredTextBrand, type AuthoredToItemBrand, type ItemSchema } from './authored_fields.js';
|
|
6
|
+
import { type AuthorComponent } from './jsx.js';
|
|
7
|
+
/** A {@link Composition} whose `body` is the pack's own authoring node type. */
|
|
8
|
+
export type AuthorComposition<TNode extends PrimitiveNode = PrimitiveNode> = Omit<Composition<TNode>, 'body'> & {
|
|
9
|
+
body: TNode[];
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Props of the shim's root element: the composition fields minus `type`, with
|
|
13
|
+
* `body` given either as an array or as JSX children.
|
|
14
|
+
*/
|
|
15
|
+
export interface CompositionAuthorProps<TNode extends PrimitiveNode = PrimitiveNode> extends Omit<AuthorComposition<TNode>, 'type' | 'body'> {
|
|
16
|
+
/** Wins outright when present: `children` are then ignored, not merged. */
|
|
17
|
+
body?: TNode[];
|
|
18
|
+
/** Parsed into `body` only when `body` is absent. Each child must be an authoring element of a registered primitive type. */
|
|
19
|
+
children?: ReactNode;
|
|
20
|
+
}
|
|
21
|
+
/** Literal `type` strings; wide `string` is dropped so a string index cannot collide with `component`. */
|
|
22
|
+
type LiteralType<T extends string> = string extends T ? never : T;
|
|
23
|
+
/** No keys. Intersects away, unlike `Record<string, never>`. */
|
|
24
|
+
type NoKeys = Record<never, never>;
|
|
25
|
+
type ShapeOf<T> = T extends {
|
|
26
|
+
shape: infer Shape;
|
|
27
|
+
} ? Shape : NoKeys;
|
|
28
|
+
/** A primitive's schema type, or `never` when it declares none. */
|
|
29
|
+
type SchemaOf<P> = P extends {
|
|
30
|
+
schema: infer S;
|
|
31
|
+
} ? S extends ZodObject ? S : never : never;
|
|
32
|
+
/** A bare `ZodObject` has a string index; a real shape does not. */
|
|
33
|
+
type LooseSchema<TSchema> = string extends keyof ShapeOf<TSchema> ? true : false;
|
|
34
|
+
type Branded<F> = F extends AuthoredChildBrand<string, unknown> | AuthoredTextBrand ? F : F extends {
|
|
35
|
+
_zod: {
|
|
36
|
+
def: {
|
|
37
|
+
type: 'optional' | 'nullable' | 'default' | 'readonly';
|
|
38
|
+
innerType: infer Inner;
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
} ? Branded<Inner> : F;
|
|
42
|
+
type AuthoredNames<TSchema> = {
|
|
43
|
+
[K in keyof ShapeOf<TSchema>]: Branded<ShapeOf<TSchema>[K]> extends AuthoredChildBrand<string, unknown> | AuthoredTextBrand ? K : never;
|
|
44
|
+
}[keyof ShapeOf<TSchema>];
|
|
45
|
+
type AuthorPropsForSchema<TSchema extends ZodObject> = LooseSchema<TSchema> extends true ? Record<string, unknown> & {
|
|
46
|
+
children?: ReactNode;
|
|
47
|
+
} : Omit<z.infer<TSchema>, 'type' | AuthoredNames<TSchema>> & Partial<Pick<z.infer<TSchema>, Extract<AuthoredNames<TSchema>, keyof z.infer<TSchema>>>> & {
|
|
48
|
+
children?: ReactNode;
|
|
49
|
+
};
|
|
50
|
+
type AuthorPropsFor<P> = [SchemaOf<P>] extends [never] ? Record<string, unknown> & {
|
|
51
|
+
children?: ReactNode;
|
|
52
|
+
} : AuthorPropsForSchema<SchemaOf<P>>;
|
|
53
|
+
type ChildEntry<F, TDepth extends unknown[]> = 0 extends 1 & F ? NoKeys : F extends AuthoredChildBrand<infer Name, infer Props> ? [Name] extends [string] ? {
|
|
54
|
+
[K in Capitalize<Name>]: AuthorComponent<Props & {
|
|
55
|
+
children?: ReactNode;
|
|
56
|
+
}, Name>;
|
|
57
|
+
} & (F extends AuthoredToItemBrand ? NoKeys : ChildComponentsOf<ItemSchema<F>, [...TDepth, unknown]>) : NoKeys : NoKeys;
|
|
58
|
+
type UnionToIntersection<T> = (T extends unknown ? (value: T) => void : never) extends (value: infer R) => void ? R : never;
|
|
59
|
+
/** Child components branded on `TSchema`, then on each child's item schema, five levels deep. */
|
|
60
|
+
type ChildComponentsOf<TSchema, TDepth extends unknown[] = []> = TDepth['length'] extends 5 ? NoKeys : LooseSchema<TSchema> extends true ? NoKeys : UnionToIntersection<{
|
|
61
|
+
[K in keyof ShapeOf<TSchema>]: ChildEntry<Branded<ShapeOf<TSchema>[K]>, TDepth>;
|
|
62
|
+
}[keyof ShapeOf<TSchema>]>;
|
|
63
|
+
type ChildMapOfTuple<TPrimitives> = TPrimitives extends readonly [
|
|
64
|
+
infer Head,
|
|
65
|
+
...infer Tail
|
|
66
|
+
] ? ChildComponentsOf<SchemaOf<Head>> & ChildMapOfTuple<Tail extends readonly {
|
|
67
|
+
type: string;
|
|
68
|
+
}[] ? Tail : []> : NoKeys;
|
|
69
|
+
type ChildComponentMap<TPrimitives extends readonly {
|
|
70
|
+
type: string;
|
|
71
|
+
}[]> = ChildMapOfTuple<TPrimitives>;
|
|
72
|
+
/**
|
|
73
|
+
* PascalCase authoring components keyed from a pack's primitive `type` list.
|
|
74
|
+
* `slideFrame` becomes `SlideFrame`. Props come from the primitive's schema.
|
|
75
|
+
*/
|
|
76
|
+
export type PrimitiveComponentMap<TPrimitives extends readonly {
|
|
77
|
+
type: string;
|
|
78
|
+
}[]> = {
|
|
79
|
+
[P in TPrimitives[number] as Capitalize<LiteralType<P['type'] & string>>]: AuthorComponent<AuthorPropsFor<P>, P['type'] & string>;
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* A pack's JSX authoring front: the root `Composition` element, one
|
|
83
|
+
* PascalCase component per primitive and per branded child, and the conversion
|
|
84
|
+
* back to plain data.
|
|
85
|
+
*/
|
|
86
|
+
export type JsxShim<TNode extends PrimitiveNode = PrimitiveNode, TPrimitives extends readonly {
|
|
87
|
+
type: string;
|
|
88
|
+
}[] = readonly {
|
|
89
|
+
type: string;
|
|
90
|
+
}[]> = {
|
|
91
|
+
Composition: AuthorComponent<CompositionAuthorProps<TNode>, 'view'>;
|
|
92
|
+
/** Throws when the root is not the `Composition` element, or when a child is not a registered primitive. */
|
|
93
|
+
toComposition: (element: ReactElement<CompositionAuthorProps<TNode>>) => AuthorComposition<TNode>;
|
|
94
|
+
} & PrimitiveComponentMap<TPrimitives> & ChildComponentMap<TPrimitives>;
|
|
95
|
+
/**
|
|
96
|
+
* Builds a pack's {@link JsxShim} from its primitive list.
|
|
97
|
+
*
|
|
98
|
+
* Branded schema fields ({@link fromChildren}, {@link fromTextChildren}) fill
|
|
99
|
+
* from JSX children, and each child type becomes a component. A primitive with
|
|
100
|
+
* no brand still fills its one child slot, array or single node, from
|
|
101
|
+
* {@link PrimitiveDefinition.children}.
|
|
102
|
+
*/
|
|
103
|
+
export declare const buildJsxShim: <const TPrimitives extends readonly {
|
|
104
|
+
type: string;
|
|
105
|
+
}[] = readonly {
|
|
106
|
+
type: string;
|
|
107
|
+
}[], TNode extends PrimitiveNode = PrimitiveNode>(primitives?: TPrimitives) => JsxShim<TNode, TPrimitives>;
|
|
108
|
+
/** React children as a flat array, with fragments inlined. */
|
|
109
|
+
export declare const flattenChildren: (children: ReactNode) => ReactNode[];
|
|
110
|
+
/**
|
|
111
|
+
* Children joined into one string. Throws on an element child, so a prop typed as text stays text. Collapses whitespace unless `{ collapseWhitespace: false }`.
|
|
112
|
+
*/
|
|
113
|
+
export declare const textFromChildren: (children: ReactNode, options?: {
|
|
114
|
+
collapseWhitespace?: boolean;
|
|
115
|
+
}) => string;
|
|
116
|
+
export {};
|
|
117
|
+
//# sourceMappingURL=jsx_shim.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsx_shim.d.ts","sourceRoot":"","sources":["../../src/author/jsx_shim.ts"],"names":[],"mappings":"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"}
|