@react-x11/components 0.1.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/README.md +979 -21
- package/dist/ansi/cast.d.ts +48 -0
- package/dist/ansi/cast.d.ts.map +1 -0
- package/dist/ansi/cast.js +135 -0
- package/dist/ansi/cast.js.map +1 -0
- package/dist/ansi/index.d.ts +10 -0
- package/dist/ansi/index.d.ts.map +1 -0
- package/dist/ansi/index.js +27 -0
- package/dist/ansi/index.js.map +1 -0
- package/dist/ansi/palette.d.ts +79 -0
- package/dist/ansi/palette.d.ts.map +1 -0
- package/dist/ansi/palette.js +155 -0
- package/dist/ansi/palette.js.map +1 -0
- package/dist/ansi/parse.d.ts +114 -0
- package/dist/ansi/parse.d.ts.map +1 -0
- package/dist/ansi/parse.js +687 -0
- package/dist/ansi/parse.js.map +1 -0
- package/dist/ansi/sgr.d.ts +87 -0
- package/dist/ansi/sgr.d.ts.map +1 -0
- package/dist/ansi/sgr.js +302 -0
- package/dist/ansi/sgr.js.map +1 -0
- package/dist/ansi/utf8.d.ts +15 -0
- package/dist/ansi/utf8.d.ts.map +1 -0
- package/dist/ansi/utf8.js +82 -0
- package/dist/ansi/utf8.js.map +1 -0
- package/dist/calendar/Calendar.d.ts +136 -0
- package/dist/calendar/Calendar.d.ts.map +1 -0
- package/dist/calendar/Calendar.js +460 -0
- package/dist/calendar/Calendar.js.map +1 -0
- package/dist/calendar/DatePicker.d.ts +52 -0
- package/dist/calendar/DatePicker.d.ts.map +1 -0
- package/dist/calendar/DatePicker.js +257 -0
- package/dist/calendar/DatePicker.js.map +1 -0
- package/dist/calendar/dates.d.ts +90 -0
- package/dist/calendar/dates.d.ts.map +1 -0
- package/dist/calendar/dates.js +236 -0
- package/dist/calendar/dates.js.map +1 -0
- package/dist/calendar/index.d.ts +8 -0
- package/dist/calendar/index.d.ts.map +1 -0
- package/dist/calendar/index.js +15 -0
- package/dist/calendar/index.js.map +1 -0
- package/dist/charts/components.d.ts +141 -0
- package/dist/charts/components.d.ts.map +1 -0
- package/dist/charts/components.js +580 -0
- package/dist/charts/components.js.map +1 -0
- package/dist/charts/data.d.ts +198 -0
- package/dist/charts/data.d.ts.map +1 -0
- package/dist/charts/data.js +616 -0
- package/dist/charts/data.js.map +1 -0
- package/dist/charts/hx.d.ts +21 -0
- package/dist/charts/hx.d.ts.map +1 -0
- package/dist/charts/hx.js +15 -0
- package/dist/charts/hx.js.map +1 -0
- package/dist/charts/index.d.ts +27 -0
- package/dist/charts/index.d.ts.map +1 -0
- package/dist/charts/index.js +38 -0
- package/dist/charts/index.js.map +1 -0
- package/dist/charts/node.d.ts +96 -0
- package/dist/charts/node.d.ts.map +1 -0
- package/dist/charts/node.js +720 -0
- package/dist/charts/node.js.map +1 -0
- package/dist/charts/render.d.ts +153 -0
- package/dist/charts/render.d.ts.map +1 -0
- package/dist/charts/render.js +762 -0
- package/dist/charts/render.js.map +1 -0
- package/dist/charts/scale.d.ts +42 -0
- package/dist/charts/scale.d.ts.map +1 -0
- package/dist/charts/scale.js +173 -0
- package/dist/charts/scale.js.map +1 -0
- package/dist/charts/spec.d.ts +91 -0
- package/dist/charts/spec.d.ts.map +1 -0
- package/dist/charts/spec.js +33 -0
- package/dist/charts/spec.js.map +1 -0
- package/dist/charts/timers.d.ts +6 -0
- package/dist/charts/timers.d.ts.map +1 -0
- package/dist/charts/timers.js +14 -0
- package/dist/charts/timers.js.map +1 -0
- package/dist/code/hx.d.ts +24 -0
- package/dist/code/hx.d.ts.map +1 -0
- package/dist/code/hx.js +25 -0
- package/dist/code/hx.js.map +1 -0
- package/dist/code/index.d.ts +45 -0
- package/dist/code/index.d.ts.map +1 -0
- package/dist/code/index.js +93 -0
- package/dist/code/index.js.map +1 -0
- package/dist/code-editor/completion.d.ts +26 -0
- package/dist/code-editor/completion.d.ts.map +1 -0
- package/dist/code-editor/completion.js +129 -0
- package/dist/code-editor/completion.js.map +1 -0
- package/dist/code-editor/doc.d.ts +35 -0
- package/dist/code-editor/doc.d.ts.map +1 -0
- package/dist/code-editor/doc.js +162 -0
- package/dist/code-editor/doc.js.map +1 -0
- package/dist/code-editor/hx.d.ts +13 -0
- package/dist/code-editor/hx.d.ts.map +1 -0
- package/dist/code-editor/hx.js +10 -0
- package/dist/code-editor/hx.js.map +1 -0
- package/dist/code-editor/index.d.ts +88 -0
- package/dist/code-editor/index.d.ts.map +1 -0
- package/dist/code-editor/index.js +401 -0
- package/dist/code-editor/index.js.map +1 -0
- package/dist/code-editor/node.d.ts +343 -0
- package/dist/code-editor/node.d.ts.map +1 -0
- package/dist/code-editor/node.js +1521 -0
- package/dist/code-editor/node.js.map +1 -0
- package/dist/code-language/hljs.d.ts +47 -0
- package/dist/code-language/hljs.d.ts.map +1 -0
- package/dist/code-language/hljs.js +211 -0
- package/dist/code-language/hljs.js.map +1 -0
- package/dist/code-language/index.d.ts +22 -0
- package/dist/code-language/index.d.ts.map +1 -0
- package/dist/code-language/index.js +20 -0
- package/dist/code-language/index.js.map +1 -0
- package/dist/code-language/languages/glsl.d.ts +4 -0
- package/dist/code-language/languages/glsl.d.ts.map +1 -0
- package/dist/code-language/languages/glsl.js +99 -0
- package/dist/code-language/languages/glsl.js.map +1 -0
- package/dist/code-language/languages/javascript.d.ts +10 -0
- package/dist/code-language/languages/javascript.d.ts.map +1 -0
- package/dist/code-language/languages/javascript.js +360 -0
- package/dist/code-language/languages/javascript.js.map +1 -0
- package/dist/code-language/languages/json.d.ts +4 -0
- package/dist/code-language/languages/json.d.ts.map +1 -0
- package/dist/code-language/languages/json.js +68 -0
- package/dist/code-language/languages/json.js.map +1 -0
- package/dist/code-language/languages/shell.d.ts +4 -0
- package/dist/code-language/languages/shell.d.ts.map +1 -0
- package/dist/code-language/languages/shell.js +189 -0
- package/dist/code-language/languages/shell.js.map +1 -0
- package/dist/code-language/languages/sql.d.ts +11 -0
- package/dist/code-language/languages/sql.d.ts.map +1 -0
- package/dist/code-language/languages/sql.js +133 -0
- package/dist/code-language/languages/sql.js.map +1 -0
- package/dist/code-language/lezer.d.ts +24 -0
- package/dist/code-language/lezer.d.ts.map +1 -0
- package/dist/code-language/lezer.js +148 -0
- package/dist/code-language/lezer.js.map +1 -0
- package/dist/code-language/registry.d.ts +19 -0
- package/dist/code-language/registry.d.ts.map +1 -0
- package/dist/code-language/registry.js +56 -0
- package/dist/code-language/registry.js.map +1 -0
- package/dist/code-language/runs.d.ts +35 -0
- package/dist/code-language/runs.d.ts.map +1 -0
- package/dist/code-language/runs.js +88 -0
- package/dist/code-language/runs.js.map +1 -0
- package/dist/code-language/stream.d.ts +70 -0
- package/dist/code-language/stream.d.ts.map +1 -0
- package/dist/code-language/stream.js +243 -0
- package/dist/code-language/stream.js.map +1 -0
- package/dist/code-language/textmate.d.ts +27 -0
- package/dist/code-language/textmate.d.ts.map +1 -0
- package/dist/code-language/textmate.js +86 -0
- package/dist/code-language/textmate.js.map +1 -0
- package/dist/code-language/theme.d.ts +26 -0
- package/dist/code-language/theme.d.ts.map +1 -0
- package/dist/code-language/theme.js +108 -0
- package/dist/code-language/theme.js.map +1 -0
- package/dist/code-language/timers.d.ts +7 -0
- package/dist/code-language/timers.d.ts.map +1 -0
- package/dist/code-language/timers.js +22 -0
- package/dist/code-language/timers.js.map +1 -0
- package/dist/code-language/types.d.ts +173 -0
- package/dist/code-language/types.d.ts.map +1 -0
- package/dist/code-language/types.js +41 -0
- package/dist/code-language/types.js.map +1 -0
- package/dist/codeblock/index.d.ts +69 -0
- package/dist/codeblock/index.d.ts.map +1 -0
- package/dist/codeblock/index.js +85 -0
- package/dist/codeblock/index.js.map +1 -0
- package/dist/color-picker/ColorField.d.ts +39 -0
- package/dist/color-picker/ColorField.d.ts.map +1 -0
- package/dist/color-picker/ColorField.js +239 -0
- package/dist/color-picker/ColorField.js.map +1 -0
- package/dist/color-picker/ColorPicker.d.ts +109 -0
- package/dist/color-picker/ColorPicker.d.ts.map +1 -0
- package/dist/color-picker/ColorPicker.js +757 -0
- package/dist/color-picker/ColorPicker.js.map +1 -0
- package/dist/color-picker/color.d.ts +105 -0
- package/dist/color-picker/color.d.ts.map +1 -0
- package/dist/color-picker/color.js +313 -0
- package/dist/color-picker/color.js.map +1 -0
- package/dist/color-picker/index.d.ts +8 -0
- package/dist/color-picker/index.d.ts.map +1 -0
- package/dist/color-picker/index.js +19 -0
- package/dist/color-picker/index.js.map +1 -0
- package/dist/desktop-calendar/eds.d.ts +102 -0
- package/dist/desktop-calendar/eds.d.ts.map +1 -0
- package/dist/desktop-calendar/eds.js +356 -0
- package/dist/desktop-calendar/eds.js.map +1 -0
- package/dist/desktop-calendar/ical.d.ts +63 -0
- package/dist/desktop-calendar/ical.d.ts.map +1 -0
- package/dist/desktop-calendar/ical.js +57 -0
- package/dist/desktop-calendar/ical.js.map +1 -0
- package/dist/desktop-calendar/index.d.ts +72 -0
- package/dist/desktop-calendar/index.d.ts.map +1 -0
- package/dist/desktop-calendar/index.js +213 -0
- package/dist/desktop-calendar/index.js.map +1 -0
- package/dist/embed/client.d.ts +121 -0
- package/dist/embed/client.d.ts.map +1 -0
- package/dist/embed/client.js +203 -0
- package/dist/embed/client.js.map +1 -0
- package/dist/embed/host.d.ts +96 -0
- package/dist/embed/host.d.ts.map +1 -0
- package/dist/embed/host.js +266 -0
- package/dist/embed/host.js.map +1 -0
- package/dist/embed/index.d.ts +5 -0
- package/dist/embed/index.d.ts.map +1 -0
- package/dist/embed/index.js +13 -0
- package/dist/embed/index.js.map +1 -0
- package/dist/embed/timers.d.ts +6 -0
- package/dist/embed/timers.d.ts.map +1 -0
- package/dist/embed/timers.js +16 -0
- package/dist/embed/timers.js.map +1 -0
- package/dist/flow/draw.d.ts +45 -0
- package/dist/flow/draw.d.ts.map +1 -0
- package/dist/flow/draw.js +295 -0
- package/dist/flow/draw.js.map +1 -0
- package/dist/flow/index.d.ts +64 -0
- package/dist/flow/index.d.ts.map +1 -0
- package/dist/flow/index.js +306 -0
- package/dist/flow/index.js.map +1 -0
- package/dist/flow/model.d.ts +158 -0
- package/dist/flow/model.d.ts.map +1 -0
- package/dist/flow/model.js +566 -0
- package/dist/flow/model.js.map +1 -0
- package/dist/flow/node.d.ts +429 -0
- package/dist/flow/node.d.ts.map +1 -0
- package/dist/flow/node.js +3025 -0
- package/dist/flow/node.js.map +1 -0
- package/dist/flow/paths.d.ts +43 -0
- package/dist/flow/paths.d.ts.map +1 -0
- package/dist/flow/paths.js +327 -0
- package/dist/flow/paths.js.map +1 -0
- package/dist/flow/types.d.ts +561 -0
- package/dist/flow/types.d.ts.map +1 -0
- package/dist/flow/types.js +2 -0
- package/dist/flow/types.js.map +1 -0
- package/dist/formula/hx.d.ts +24 -0
- package/dist/formula/hx.d.ts.map +1 -0
- package/dist/formula/hx.js +25 -0
- package/dist/formula/hx.js.map +1 -0
- package/dist/formula/index.d.ts +74 -0
- package/dist/formula/index.d.ts.map +1 -0
- package/dist/formula/index.js +155 -0
- package/dist/formula/index.js.map +1 -0
- package/dist/formula/katex.d.ts +78 -0
- package/dist/formula/katex.d.ts.map +1 -0
- package/dist/formula/katex.js +130 -0
- package/dist/formula/katex.js.map +1 -0
- package/dist/formula/layout.d.ts +103 -0
- package/dist/formula/layout.d.ts.map +1 -0
- package/dist/formula/layout.js +716 -0
- package/dist/formula/layout.js.map +1 -0
- package/dist/formula/node.d.ts +50 -0
- package/dist/formula/node.d.ts.map +1 -0
- package/dist/formula/node.js +351 -0
- package/dist/formula/node.js.map +1 -0
- package/dist/html/controls.d.ts +48 -0
- package/dist/html/controls.d.ts.map +1 -0
- package/dist/html/controls.js +195 -0
- package/dist/html/controls.js.map +1 -0
- package/dist/html/css/cascade.d.ts +51 -0
- package/dist/html/css/cascade.d.ts.map +1 -0
- package/dist/html/css/cascade.js +552 -0
- package/dist/html/css/cascade.js.map +1 -0
- package/dist/html/css/parse.d.ts +74 -0
- package/dist/html/css/parse.d.ts.map +1 -0
- package/dist/html/css/parse.js +464 -0
- package/dist/html/css/parse.js.map +1 -0
- package/dist/html/css/style.d.ts +142 -0
- package/dist/html/css/style.d.ts.map +1 -0
- package/dist/html/css/style.js +1145 -0
- package/dist/html/css/style.js.map +1 -0
- package/dist/html/css/ua.d.ts +5 -0
- package/dist/html/css/ua.d.ts.map +1 -0
- package/dist/html/css/ua.js +171 -0
- package/dist/html/css/ua.js.map +1 -0
- package/dist/html/css/values.d.ts +78 -0
- package/dist/html/css/values.d.ts.map +1 -0
- package/dist/html/css/values.js +330 -0
- package/dist/html/css/values.js.map +1 -0
- package/dist/html/dom.d.ts +112 -0
- package/dist/html/dom.d.ts.map +1 -0
- package/dist/html/dom.js +374 -0
- package/dist/html/dom.js.map +1 -0
- package/dist/html/hx.d.ts +24 -0
- package/dist/html/hx.d.ts.map +1 -0
- package/dist/html/hx.js +29 -0
- package/dist/html/hx.js.map +1 -0
- package/dist/html/index.d.ts +137 -0
- package/dist/html/index.d.ts.map +1 -0
- package/dist/html/index.js +339 -0
- package/dist/html/index.js.map +1 -0
- package/dist/html/layout/block.d.ts +58 -0
- package/dist/html/layout/block.d.ts.map +1 -0
- package/dist/html/layout/block.js +724 -0
- package/dist/html/layout/block.js.map +1 -0
- package/dist/html/layout/boxes.d.ts +261 -0
- package/dist/html/layout/boxes.d.ts.map +1 -0
- package/dist/html/layout/boxes.js +725 -0
- package/dist/html/layout/boxes.js.map +1 -0
- package/dist/html/layout/flex.d.ts +16 -0
- package/dist/html/layout/flex.d.ts.map +1 -0
- package/dist/html/layout/flex.js +242 -0
- package/dist/html/layout/flex.js.map +1 -0
- package/dist/html/layout/floats.d.ts +50 -0
- package/dist/html/layout/floats.d.ts.map +1 -0
- package/dist/html/layout/floats.js +110 -0
- package/dist/html/layout/floats.js.map +1 -0
- package/dist/html/layout/inline.d.ts +44 -0
- package/dist/html/layout/inline.d.ts.map +1 -0
- package/dist/html/layout/inline.js +700 -0
- package/dist/html/layout/inline.js.map +1 -0
- package/dist/html/layout/table.d.ts +5 -0
- package/dist/html/layout/table.d.ts.map +1 -0
- package/dist/html/layout/table.js +340 -0
- package/dist/html/layout/table.js.map +1 -0
- package/dist/html/node.d.ts +149 -0
- package/dist/html/node.d.ts.map +1 -0
- package/dist/html/node.js +861 -0
- package/dist/html/node.js.map +1 -0
- package/dist/html/paint.d.ts +48 -0
- package/dist/html/paint.d.ts.map +1 -0
- package/dist/html/paint.js +495 -0
- package/dist/html/paint.js.map +1 -0
- package/dist/html/resources.d.ts +48 -0
- package/dist/html/resources.d.ts.map +1 -0
- package/dist/html/resources.js +156 -0
- package/dist/html/resources.js.map +1 -0
- package/dist/index.d.ts +48 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +92 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/heights.d.ts +81 -0
- package/dist/internal/heights.d.ts.map +1 -0
- package/dist/internal/heights.js +193 -0
- package/dist/internal/heights.js.map +1 -0
- package/dist/internal/hx.d.ts +24 -0
- package/dist/internal/hx.d.ts.map +1 -0
- package/dist/internal/hx.js +27 -0
- package/dist/internal/hx.js.map +1 -0
- package/dist/internal/text.d.ts +6 -0
- package/dist/internal/text.d.ts.map +1 -0
- package/dist/internal/text.js +44 -0
- package/dist/internal/text.js.map +1 -0
- package/dist/internal/timers.d.ts +8 -0
- package/dist/internal/timers.d.ts.map +1 -0
- package/dist/internal/timers.js +22 -0
- package/dist/internal/timers.js.map +1 -0
- package/dist/internal/widget.d.ts +40 -0
- package/dist/internal/widget.d.ts.map +1 -0
- package/dist/internal/widget.js +44 -0
- package/dist/internal/widget.js.map +1 -0
- package/dist/markdown/ast.d.ts +126 -0
- package/dist/markdown/ast.d.ts.map +1 -0
- package/dist/markdown/ast.js +8 -0
- package/dist/markdown/ast.js.map +1 -0
- package/dist/markdown/hx.d.ts +24 -0
- package/dist/markdown/hx.d.ts.map +1 -0
- package/dist/markdown/hx.js +25 -0
- package/dist/markdown/hx.js.map +1 -0
- package/dist/markdown/index.d.ts +90 -0
- package/dist/markdown/index.d.ts.map +1 -0
- package/dist/markdown/index.js +413 -0
- package/dist/markdown/index.js.map +1 -0
- package/dist/markdown/parse.d.ts +8 -0
- package/dist/markdown/parse.d.ts.map +1 -0
- package/dist/markdown/parse.js +911 -0
- package/dist/markdown/parse.js.map +1 -0
- package/dist/markdown/spans.d.ts +20 -0
- package/dist/markdown/spans.d.ts.map +1 -0
- package/dist/markdown/spans.js +96 -0
- package/dist/markdown/spans.js.map +1 -0
- package/dist/media-player/backends.d.ts +64 -0
- package/dist/media-player/backends.d.ts.map +1 -0
- package/dist/media-player/backends.js +110 -0
- package/dist/media-player/backends.js.map +1 -0
- package/dist/media-player/control.d.ts +40 -0
- package/dist/media-player/control.d.ts.map +1 -0
- package/dist/media-player/control.js +44 -0
- package/dist/media-player/control.js.map +1 -0
- package/dist/media-player/hx.d.ts +24 -0
- package/dist/media-player/hx.d.ts.map +1 -0
- package/dist/media-player/hx.js +25 -0
- package/dist/media-player/hx.js.map +1 -0
- package/dist/media-player/index.d.ts +107 -0
- package/dist/media-player/index.d.ts.map +1 -0
- package/dist/media-player/index.js +219 -0
- package/dist/media-player/index.js.map +1 -0
- package/dist/media-player/mpv.d.ts +4 -0
- package/dist/media-player/mpv.d.ts.map +1 -0
- package/dist/media-player/mpv.js +120 -0
- package/dist/media-player/mpv.js.map +1 -0
- package/dist/media-player/vlc.d.ts +8 -0
- package/dist/media-player/vlc.d.ts.map +1 -0
- package/dist/media-player/vlc.js +83 -0
- package/dist/media-player/vlc.js.map +1 -0
- package/dist/richtext/index.d.ts +19 -0
- package/dist/richtext/index.d.ts.map +1 -0
- package/dist/richtext/index.js +4 -0
- package/dist/richtext/index.js.map +1 -0
- package/dist/richtext/links.d.ts +12 -0
- package/dist/richtext/links.d.ts.map +1 -0
- package/dist/richtext/links.js +64 -0
- package/dist/richtext/links.js.map +1 -0
- package/dist/richtext/menu.d.ts +11 -0
- package/dist/richtext/menu.d.ts.map +1 -0
- package/dist/richtext/menu.js +43 -0
- package/dist/richtext/menu.js.map +1 -0
- package/dist/richtext/node.d.ts +151 -0
- package/dist/richtext/node.d.ts.map +1 -0
- package/dist/richtext/node.js +255 -0
- package/dist/richtext/node.js.map +1 -0
- package/dist/richtext/runs.d.ts +92 -0
- package/dist/richtext/runs.d.ts.map +1 -0
- package/dist/richtext/runs.js +158 -0
- package/dist/richtext/runs.js.map +1 -0
- package/dist/table/hx.d.ts +24 -0
- package/dist/table/hx.d.ts.map +1 -0
- package/dist/table/hx.js +25 -0
- package/dist/table/hx.js.map +1 -0
- package/dist/table/index.d.ts +169 -0
- package/dist/table/index.d.ts.map +1 -0
- package/dist/table/index.js +844 -0
- package/dist/table/index.js.map +1 -0
- package/dist/table/rows.d.ts +136 -0
- package/dist/table/rows.d.ts.map +1 -0
- package/dist/table/rows.js +146 -0
- package/dist/table/rows.js.map +1 -0
- package/dist/terminal/backends.d.ts +105 -0
- package/dist/terminal/backends.d.ts.map +1 -0
- package/dist/terminal/backends.js +185 -0
- package/dist/terminal/backends.js.map +1 -0
- package/dist/terminal/hx.d.ts +24 -0
- package/dist/terminal/hx.d.ts.map +1 -0
- package/dist/terminal/hx.js +25 -0
- package/dist/terminal/hx.js.map +1 -0
- package/dist/terminal/index.d.ts +160 -0
- package/dist/terminal/index.d.ts.map +1 -0
- package/dist/terminal/index.js +344 -0
- package/dist/terminal/index.js.map +1 -0
- package/dist/terminal/title.d.ts +24 -0
- package/dist/terminal/title.d.ts.map +1 -0
- package/dist/terminal/title.js +129 -0
- package/dist/terminal/title.js.map +1 -0
- package/dist/terminal/vt/colors.d.ts +63 -0
- package/dist/terminal/vt/colors.d.ts.map +1 -0
- package/dist/terminal/vt/colors.js +203 -0
- package/dist/terminal/vt/colors.js.map +1 -0
- package/dist/terminal/vt/diff.d.ts +117 -0
- package/dist/terminal/vt/diff.d.ts.map +1 -0
- package/dist/terminal/vt/diff.js +358 -0
- package/dist/terminal/vt/diff.js.map +1 -0
- package/dist/terminal/vt/fonts.d.ts +92 -0
- package/dist/terminal/vt/fonts.d.ts.map +1 -0
- package/dist/terminal/vt/fonts.js +178 -0
- package/dist/terminal/vt/fonts.js.map +1 -0
- package/dist/terminal/vt/index.d.ts +78 -0
- package/dist/terminal/vt/index.d.ts.map +1 -0
- package/dist/terminal/vt/index.js +312 -0
- package/dist/terminal/vt/index.js.map +1 -0
- package/dist/terminal/vt/keys.d.ts +74 -0
- package/dist/terminal/vt/keys.d.ts.map +1 -0
- package/dist/terminal/vt/keys.js +309 -0
- package/dist/terminal/vt/keys.js.map +1 -0
- package/dist/terminal/vt/mouse.d.ts +44 -0
- package/dist/terminal/vt/mouse.d.ts.map +1 -0
- package/dist/terminal/vt/mouse.js +106 -0
- package/dist/terminal/vt/mouse.js.map +1 -0
- package/dist/terminal/vt/node.d.ts +246 -0
- package/dist/terminal/vt/node.d.ts.map +1 -0
- package/dist/terminal/vt/node.js +1068 -0
- package/dist/terminal/vt/node.js.map +1 -0
- package/dist/terminal/vt/pty.d.ts +81 -0
- package/dist/terminal/vt/pty.d.ts.map +1 -0
- package/dist/terminal/vt/pty.js +201 -0
- package/dist/terminal/vt/pty.js.map +1 -0
- package/dist/terminal/vt/renderer.d.ts +179 -0
- package/dist/terminal/vt/renderer.d.ts.map +1 -0
- package/dist/terminal/vt/renderer.js +357 -0
- package/dist/terminal/vt/renderer.js.map +1 -0
- package/dist/terminal/vt/timers.d.ts +6 -0
- package/dist/terminal/vt/timers.d.ts.map +1 -0
- package/dist/terminal/vt/timers.js +16 -0
- package/dist/terminal/vt/timers.js.map +1 -0
- package/dist/terminal/vt/xterm.d.ts +142 -0
- package/dist/terminal/vt/xterm.d.ts.map +1 -0
- package/dist/terminal/vt/xterm.js +32 -0
- package/dist/terminal/vt/xterm.js.map +1 -0
- package/dist/terminal-output/hx.d.ts +24 -0
- package/dist/terminal-output/hx.d.ts.map +1 -0
- package/dist/terminal-output/hx.js +25 -0
- package/dist/terminal-output/hx.js.map +1 -0
- package/dist/terminal-output/index.d.ts +92 -0
- package/dist/terminal-output/index.d.ts.map +1 -0
- package/dist/terminal-output/index.js +179 -0
- package/dist/terminal-output/index.js.map +1 -0
- package/dist/terminal-output/runs.d.ts +27 -0
- package/dist/terminal-output/runs.d.ts.map +1 -0
- package/dist/terminal-output/runs.js +66 -0
- package/dist/terminal-output/runs.js.map +1 -0
- package/dist/three/canvas.d.ts +46 -0
- package/dist/three/canvas.d.ts.map +1 -0
- package/dist/three/canvas.js +305 -0
- package/dist/three/canvas.js.map +1 -0
- package/dist/three/events.d.ts +64 -0
- package/dist/three/events.d.ts.map +1 -0
- package/dist/three/events.js +146 -0
- package/dist/three/events.js.map +1 -0
- package/dist/three/geometries.d.ts +89 -0
- package/dist/three/geometries.d.ts.map +1 -0
- package/dist/three/geometries.js +345 -0
- package/dist/three/geometries.js.map +1 -0
- package/dist/three/globals.d.ts +7 -0
- package/dist/three/globals.d.ts.map +1 -0
- package/dist/three/globals.js +20 -0
- package/dist/three/globals.js.map +1 -0
- package/dist/three/hx.d.ts +9 -0
- package/dist/three/hx.d.ts.map +1 -0
- package/dist/three/hx.js +10 -0
- package/dist/three/hx.js.map +1 -0
- package/dist/three/index.d.ts +22 -0
- package/dist/three/index.d.ts.map +1 -0
- package/dist/three/index.js +24 -0
- package/dist/three/index.js.map +1 -0
- package/dist/three/jsx-dev-runtime.d.ts +19 -0
- package/dist/three/jsx-dev-runtime.d.ts.map +1 -0
- package/dist/three/jsx-dev-runtime.js +2 -0
- package/dist/three/jsx-dev-runtime.js.map +1 -0
- package/dist/three/jsx-runtime.d.ts +19 -0
- package/dist/three/jsx-runtime.d.ts.map +1 -0
- package/dist/three/jsx-runtime.js +2 -0
- package/dist/three/jsx-runtime.js.map +1 -0
- package/dist/three/jsx.d.ts +198 -0
- package/dist/three/jsx.d.ts.map +1 -0
- package/dist/three/jsx.js +2 -0
- package/dist/three/jsx.js.map +1 -0
- package/dist/three/materials.d.ts +125 -0
- package/dist/three/materials.d.ts.map +1 -0
- package/dist/three/materials.js +229 -0
- package/dist/three/materials.js.map +1 -0
- package/dist/three/math.d.ts +146 -0
- package/dist/three/math.d.ts.map +1 -0
- package/dist/three/math.js +464 -0
- package/dist/three/math.js.map +1 -0
- package/dist/three/objects.d.ts +185 -0
- package/dist/three/objects.d.ts.map +1 -0
- package/dist/three/objects.js +309 -0
- package/dist/three/objects.js.map +1 -0
- package/dist/three/passes.d.ts +54 -0
- package/dist/three/passes.d.ts.map +1 -0
- package/dist/three/passes.js +78 -0
- package/dist/three/passes.js.map +1 -0
- package/dist/three/postprocess.d.ts +85 -0
- package/dist/three/postprocess.d.ts.map +1 -0
- package/dist/three/postprocess.js +503 -0
- package/dist/three/postprocess.js.map +1 -0
- package/dist/three/raycast.d.ts +24 -0
- package/dist/three/raycast.d.ts.map +1 -0
- package/dist/three/raycast.js +138 -0
- package/dist/three/raycast.js.map +1 -0
- package/dist/three/reconciler.d.ts +48 -0
- package/dist/three/reconciler.d.ts.map +1 -0
- package/dist/three/reconciler.js +416 -0
- package/dist/three/reconciler.js.map +1 -0
- package/dist/three/renderer-direct.d.ts +102 -0
- package/dist/three/renderer-direct.d.ts.map +1 -0
- package/dist/three/renderer-direct.js +782 -0
- package/dist/three/renderer-direct.js.map +1 -0
- package/dist/three/renderer-indirect.d.ts +68 -0
- package/dist/three/renderer-indirect.d.ts.map +1 -0
- package/dist/three/renderer-indirect.js +438 -0
- package/dist/three/renderer-indirect.js.map +1 -0
- package/dist/three/store.d.ts +81 -0
- package/dist/three/store.d.ts.map +1 -0
- package/dist/three/store.js +110 -0
- package/dist/three/store.js.map +1 -0
- package/dist/timeline/hx.d.ts +18 -0
- package/dist/timeline/hx.d.ts.map +1 -0
- package/dist/timeline/hx.js +10 -0
- package/dist/timeline/hx.js.map +1 -0
- package/dist/timeline/index.d.ts +152 -0
- package/dist/timeline/index.d.ts.map +1 -0
- package/dist/timeline/index.js +383 -0
- package/dist/timeline/index.js.map +1 -0
- package/dist/tray-host/hx.d.ts +24 -0
- package/dist/tray-host/hx.d.ts.map +1 -0
- package/dist/tray-host/hx.js +25 -0
- package/dist/tray-host/hx.js.map +1 -0
- package/dist/tray-host/index.d.ts +110 -0
- package/dist/tray-host/index.d.ts.map +1 -0
- package/dist/tray-host/index.js +191 -0
- package/dist/tray-host/index.js.map +1 -0
- package/dist/tray-host/manager.d.ts +137 -0
- package/dist/tray-host/manager.d.ts.map +1 -0
- package/dist/tray-host/manager.js +462 -0
- package/dist/tray-host/manager.js.map +1 -0
- package/dist/tray-host/notify.d.ts +22 -0
- package/dist/tray-host/notify.d.ts.map +1 -0
- package/dist/tray-host/notify.js +74 -0
- package/dist/tray-host/notify.js.map +1 -0
- package/dist/tray-host/protocol.d.ts +106 -0
- package/dist/tray-host/protocol.d.ts.map +1 -0
- package/dist/tray-host/protocol.js +191 -0
- package/dist/tray-host/protocol.js.map +1 -0
- package/dist/tree/hx.d.ts +24 -0
- package/dist/tree/hx.d.ts.map +1 -0
- package/dist/tree/hx.js +25 -0
- package/dist/tree/hx.js.map +1 -0
- package/dist/tree/index.d.ts +221 -0
- package/dist/tree/index.d.ts.map +1 -0
- package/dist/tree/index.js +716 -0
- package/dist/tree/index.js.map +1 -0
- package/dist/tree/internal.d.ts +18 -0
- package/dist/tree/internal.d.ts.map +1 -0
- package/dist/tree/internal.js +66 -0
- package/dist/tree/internal.js.map +1 -0
- package/dist/tree/rows.d.ts +177 -0
- package/dist/tree/rows.d.ts.map +1 -0
- package/dist/tree/rows.js +179 -0
- package/dist/tree/rows.js.map +1 -0
- package/package.json +166 -12
- package/src/ansi/cast.ts +159 -0
- package/src/ansi/index.ts +53 -0
- package/src/ansi/palette.ts +226 -0
- package/src/ansi/parse.ts +780 -0
- package/src/ansi/sgr.ts +380 -0
- package/src/ansi/utf8.ts +84 -0
- package/src/calendar/Calendar.ts +744 -0
- package/src/calendar/DatePicker.ts +368 -0
- package/src/calendar/dates.ts +307 -0
- package/src/calendar/index.ts +51 -0
- package/src/charts/components.ts +864 -0
- package/src/charts/data.ts +776 -0
- package/src/charts/hx.ts +39 -0
- package/src/charts/index.ts +99 -0
- package/src/charts/node.ts +932 -0
- package/src/charts/render.ts +982 -0
- package/src/charts/scale.ts +214 -0
- package/src/charts/spec.ts +122 -0
- package/src/charts/timers.ts +24 -0
- package/src/code/hx.ts +51 -0
- package/src/code/index.ts +174 -0
- package/src/code-editor/completion.ts +161 -0
- package/src/code-editor/doc.ts +198 -0
- package/src/code-editor/hx.ts +26 -0
- package/src/code-editor/index.ts +615 -0
- package/src/code-editor/node.ts +1926 -0
- package/src/code-language/hljs.ts +302 -0
- package/src/code-language/index.ts +51 -0
- package/src/code-language/languages/glsl.ts +120 -0
- package/src/code-language/languages/javascript.ts +419 -0
- package/src/code-language/languages/json.ts +72 -0
- package/src/code-language/languages/shell.ts +221 -0
- package/src/code-language/languages/sql.ts +165 -0
- package/src/code-language/lezer.ts +190 -0
- package/src/code-language/registry.ts +66 -0
- package/src/code-language/runs.ts +128 -0
- package/src/code-language/stream.ts +306 -0
- package/src/code-language/textmate.ts +134 -0
- package/src/code-language/theme.ts +124 -0
- package/src/code-language/timers.ts +36 -0
- package/src/code-language/types.ts +252 -0
- package/src/codeblock/index.ts +146 -0
- package/src/color-picker/ColorField.ts +333 -0
- package/src/color-picker/ColorPicker.ts +1069 -0
- package/src/color-picker/color.ts +399 -0
- package/src/color-picker/index.ts +50 -0
- package/src/desktop-calendar/eds.ts +484 -0
- package/src/desktop-calendar/ical.ts +119 -0
- package/src/desktop-calendar/index.ts +287 -0
- package/src/embed/client.ts +311 -0
- package/src/embed/host.ts +432 -0
- package/src/embed/index.ts +33 -0
- package/src/embed/timers.ts +32 -0
- package/src/flow/draw.ts +418 -0
- package/src/flow/index.ts +473 -0
- package/src/flow/model.ts +687 -0
- package/src/flow/node.ts +3694 -0
- package/src/flow/paths.ts +403 -0
- package/src/flow/types.ts +634 -0
- package/src/formula/hx.ts +51 -0
- package/src/formula/index.ts +243 -0
- package/src/formula/katex.ts +209 -0
- package/src/formula/layout.ts +876 -0
- package/src/formula/node.ts +467 -0
- package/src/html/controls.ts +244 -0
- package/src/html/css/cascade.ts +606 -0
- package/src/html/css/parse.ts +500 -0
- package/src/html/css/style.ts +1371 -0
- package/src/html/css/ua.ts +174 -0
- package/src/html/css/values.ts +358 -0
- package/src/html/dom.ts +410 -0
- package/src/html/hx.ts +55 -0
- package/src/html/index.ts +545 -0
- package/src/html/layout/block.ts +876 -0
- package/src/html/layout/boxes.ts +981 -0
- package/src/html/layout/flex.ts +297 -0
- package/src/html/layout/floats.ts +125 -0
- package/src/html/layout/inline.ts +870 -0
- package/src/html/layout/table.ts +380 -0
- package/src/html/node.ts +967 -0
- package/src/html/paint.ts +605 -0
- package/src/html/resources.ts +214 -0
- package/src/index.ts +638 -0
- package/src/internal/heights.ts +211 -0
- package/src/internal/hx.ts +53 -0
- package/src/internal/text.ts +44 -0
- package/src/internal/timers.ts +44 -0
- package/src/internal/widget.ts +92 -0
- package/src/markdown/ast.ts +163 -0
- package/src/markdown/hx.ts +51 -0
- package/src/markdown/index.ts +686 -0
- package/src/markdown/parse.ts +1037 -0
- package/src/markdown/spans.ts +143 -0
- package/src/media-player/backends.ts +155 -0
- package/src/media-player/control.ts +70 -0
- package/src/media-player/hx.ts +51 -0
- package/src/media-player/index.ts +378 -0
- package/src/media-player/mpv.ts +146 -0
- package/src/media-player/vlc.ts +97 -0
- package/src/richtext/index.ts +42 -0
- package/src/richtext/links.ts +78 -0
- package/src/richtext/menu.ts +49 -0
- package/src/richtext/node.ts +406 -0
- package/src/richtext/runs.ts +253 -0
- package/src/table/hx.ts +51 -0
- package/src/table/index.ts +1219 -0
- package/src/table/rows.ts +275 -0
- package/src/terminal/backends.ts +242 -0
- package/src/terminal/hx.ts +51 -0
- package/src/terminal/index.ts +574 -0
- package/src/terminal/title.ts +172 -0
- package/src/terminal/vt/colors.ts +247 -0
- package/src/terminal/vt/diff.ts +467 -0
- package/src/terminal/vt/fonts.ts +233 -0
- package/src/terminal/vt/index.ts +443 -0
- package/src/terminal/vt/keys.ts +369 -0
- package/src/terminal/vt/mouse.ts +144 -0
- package/src/terminal/vt/node.ts +1242 -0
- package/src/terminal/vt/pty.ts +334 -0
- package/src/terminal/vt/renderer.ts +555 -0
- package/src/terminal/vt/timers.ts +31 -0
- package/src/terminal/vt/xterm.ts +193 -0
- package/src/terminal-output/hx.ts +51 -0
- package/src/terminal-output/index.ts +340 -0
- package/src/terminal-output/runs.ts +79 -0
- package/src/three/canvas.ts +451 -0
- package/src/three/events.ts +197 -0
- package/src/three/geometries.ts +429 -0
- package/src/three/globals.ts +34 -0
- package/src/three/hx.ts +22 -0
- package/src/three/index.ts +98 -0
- package/src/three/jsx-dev-runtime.ts +27 -0
- package/src/three/jsx-runtime.ts +38 -0
- package/src/three/jsx.ts +275 -0
- package/src/three/materials.ts +270 -0
- package/src/three/math.ts +585 -0
- package/src/three/objects.ts +397 -0
- package/src/three/passes.ts +90 -0
- package/src/three/postprocess.ts +677 -0
- package/src/three/raycast.ts +189 -0
- package/src/three/react-reconciler.d.ts +50 -0
- package/src/three/reconciler.ts +624 -0
- package/src/three/renderer-direct.ts +1055 -0
- package/src/three/renderer-indirect.ts +570 -0
- package/src/three/store.ts +207 -0
- package/src/timeline/hx.ts +31 -0
- package/src/timeline/index.ts +603 -0
- package/src/tray-host/hx.ts +51 -0
- package/src/tray-host/index.ts +331 -0
- package/src/tray-host/manager.ts +639 -0
- package/src/tray-host/notify.ts +102 -0
- package/src/tray-host/protocol.ts +235 -0
- package/src/tree/hx.ts +51 -0
- package/src/tree/index.ts +1087 -0
- package/src/tree/internal.ts +87 -0
- package/src/tree/rows.ts +334 -0
- package/src/index.d.ts +0 -2
- package/src/index.js +0 -9
- package/src/sparkline/index.d.ts +0 -29
- package/src/sparkline/index.js +0 -50
- package/src/sparkline/node.js +0 -72
|
@@ -0,0 +1,432 @@
|
|
|
1
|
+
// The operating system, as an interface — because `<Terminal>` and
|
|
2
|
+
// `<MediaPlayer>` are the first things in this package that run somebody
|
|
3
|
+
// else's program.
|
|
4
|
+
//
|
|
5
|
+
// Two reasons this is an interface and not five `import`s:
|
|
6
|
+
//
|
|
7
|
+
// 1. **`src/` may not name node's types.** `tsconfig.build.json` sets
|
|
8
|
+
// `types: []` on purpose, so a `process` or a `Buffer` in a shipped module
|
|
9
|
+
// fails the build rather than becoming an `@types/node` dependency a
|
|
10
|
+
// consumer has to satisfy. The slice of `child_process`, `fs`, `net` and
|
|
11
|
+
// `os` used here is therefore written out structurally and reached
|
|
12
|
+
// through a dynamic `import()` with a specifier built at run time —
|
|
13
|
+
// exactly what `../desktop-calendar/ical.ts` does for `ical.js`, and what
|
|
14
|
+
// react-x11 does for `dbus-native`.
|
|
15
|
+
// 2. **It is the seam the components are tested through.** A fake host
|
|
16
|
+
// records argv and hands back a process that never existed, which is the
|
|
17
|
+
// only way to assert "xterm would have been spawned with `-into 42`"
|
|
18
|
+
// without an xterm. It is public rather than private because the same
|
|
19
|
+
// seam is what an app needs to run the child somewhere else — inside a
|
|
20
|
+
// container, over ssh, under a sandbox — and none of that should require
|
|
21
|
+
// forking the component.
|
|
22
|
+
|
|
23
|
+
import { delay } from './timers.js';
|
|
24
|
+
|
|
25
|
+
/** How a spawned child ended. */
|
|
26
|
+
export interface ExitInfo {
|
|
27
|
+
/** Exit status, or `null` when a signal ended it. */
|
|
28
|
+
code: number | null;
|
|
29
|
+
/** The signal that ended it, or `null`. */
|
|
30
|
+
signal: string | null;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* A running child, reduced to what an embedded client needs: its pid, a way
|
|
35
|
+
* to signal it, and the two things that can happen to it.
|
|
36
|
+
*
|
|
37
|
+
* Deliberately not node's `ChildProcess`. Listener registration is a method
|
|
38
|
+
* per event rather than an `EventEmitter`, so a fake is a dozen lines and
|
|
39
|
+
* cannot accidentally rely on emitter behaviour (`once`, `removeAllListeners`,
|
|
40
|
+
* the `error`-with-no-listener throw) that the real one has and a fake would
|
|
41
|
+
* have to reimplement.
|
|
42
|
+
*/
|
|
43
|
+
export interface SpawnedProcess {
|
|
44
|
+
readonly pid: number | null;
|
|
45
|
+
/** POSIX signal name. Returns whether it was delivered. */
|
|
46
|
+
kill(signal?: string): boolean;
|
|
47
|
+
onExit(listener: (info: ExitInfo) => void): void;
|
|
48
|
+
onError(listener: (err: Error) => void): void;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export interface SpawnOptions {
|
|
52
|
+
cwd?: string;
|
|
53
|
+
/**
|
|
54
|
+
* Added to the ambient environment rather than replacing it: a terminal
|
|
55
|
+
* with no `PATH` and no `HOME` is not a terminal. An explicit `undefined`
|
|
56
|
+
* removes a variable.
|
|
57
|
+
*/
|
|
58
|
+
env?: Record<string, string | undefined>;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* A line-oriented control channel to a player process — mpv's JSON IPC, VLC's
|
|
63
|
+
* rc interface. Text in, text out, and no framing: the protocols disagree
|
|
64
|
+
* about what a message is, so splitting is the caller's.
|
|
65
|
+
*/
|
|
66
|
+
export interface IpcSocket {
|
|
67
|
+
write(data: string): void;
|
|
68
|
+
onData(listener: (chunk: string) => void): void;
|
|
69
|
+
onClose(listener: () => void): void;
|
|
70
|
+
close(): void;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/** A private directory to put a control socket in, and how to remove it. */
|
|
74
|
+
export interface ScratchSocket {
|
|
75
|
+
path: string;
|
|
76
|
+
dispose(): Promise<void>;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Everything the embedded-client components do outside their own process.
|
|
81
|
+
*
|
|
82
|
+
* Every method is async, including the ones whose node counterparts are not:
|
|
83
|
+
* the node modules behind them are loaded lazily (see the file comment), so
|
|
84
|
+
* the first call is a dynamic `import()` however synchronous `spawn` itself
|
|
85
|
+
* is. Nothing here runs during render, so the cost is invisible.
|
|
86
|
+
*/
|
|
87
|
+
export interface ProcessHost {
|
|
88
|
+
/**
|
|
89
|
+
* The absolute path `command` resolves to on `PATH`, or `null` when it is
|
|
90
|
+
* not installed. A command containing a slash is tested as-is.
|
|
91
|
+
*/
|
|
92
|
+
which(command: string): Promise<string | null>;
|
|
93
|
+
spawn(
|
|
94
|
+
command: string,
|
|
95
|
+
args: readonly string[],
|
|
96
|
+
options?: SpawnOptions,
|
|
97
|
+
): Promise<SpawnedProcess>;
|
|
98
|
+
/** A path in a fresh private directory, for a child to create a socket at. */
|
|
99
|
+
socketPath(prefix: string): Promise<ScratchSocket>;
|
|
100
|
+
/** Connect to a unix socket a child created. Rejects if it is not there. */
|
|
101
|
+
connect(path: string): Promise<IpcSocket>;
|
|
102
|
+
/** The ambient environment, for defaults and for `PATH`. */
|
|
103
|
+
environment(): Record<string, string | undefined>;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// --- the node implementation -----------------------------------------------
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* The node modules this file uses, structurally.
|
|
110
|
+
*
|
|
111
|
+
* Only the members actually called are described. Anything wider would be
|
|
112
|
+
* `@types/node` written out by hand, which is both a maintenance burden and a
|
|
113
|
+
* lie the moment node changes.
|
|
114
|
+
*/
|
|
115
|
+
interface ChildProcessModule {
|
|
116
|
+
spawn(
|
|
117
|
+
command: string,
|
|
118
|
+
args: readonly string[],
|
|
119
|
+
options: {
|
|
120
|
+
cwd?: string;
|
|
121
|
+
env?: Record<string, string | undefined>;
|
|
122
|
+
stdio?: string;
|
|
123
|
+
detached?: boolean;
|
|
124
|
+
},
|
|
125
|
+
): NodeChildProcess;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
interface NodeChildProcess {
|
|
129
|
+
pid?: number;
|
|
130
|
+
killed: boolean;
|
|
131
|
+
kill(signal?: string): boolean;
|
|
132
|
+
on(
|
|
133
|
+
event: 'exit',
|
|
134
|
+
listener: (code: number | null, signal: string | null) => void,
|
|
135
|
+
): void;
|
|
136
|
+
on(event: 'error', listener: (err: Error) => void): void;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
interface FsPromisesModule {
|
|
140
|
+
access(path: string, mode: number): Promise<void>;
|
|
141
|
+
mkdtemp(prefix: string): Promise<string>;
|
|
142
|
+
rm(
|
|
143
|
+
path: string,
|
|
144
|
+
options: { recursive: boolean; force: boolean },
|
|
145
|
+
): Promise<void>;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
interface NodeSocket {
|
|
149
|
+
setEncoding(encoding: string): void;
|
|
150
|
+
write(data: string): void;
|
|
151
|
+
end(): void;
|
|
152
|
+
destroy(): void;
|
|
153
|
+
on(event: string, listener: (arg?: unknown) => void): void;
|
|
154
|
+
once(event: string, listener: (arg?: unknown) => void): void;
|
|
155
|
+
removeListener(event: string, listener: (arg?: unknown) => void): void;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
interface NetModule {
|
|
159
|
+
createConnection(options: { path: string }): NodeSocket;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
interface OsModule {
|
|
163
|
+
tmpdir(): string;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
interface PathModule {
|
|
167
|
+
join(...parts: string[]): string;
|
|
168
|
+
isAbsolute(path: string): boolean;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Load a node builtin without naming it to the compiler.
|
|
173
|
+
*
|
|
174
|
+
* The specifier is a variable on purpose: a literal `import('node:net')`
|
|
175
|
+
* would need `@types/node` in the build program, which is the thing
|
|
176
|
+
* `tsconfig.build.json` refuses. It also keeps a bundler from trying to
|
|
177
|
+
* resolve a node builtin for a target that has none.
|
|
178
|
+
*/
|
|
179
|
+
const builtins = new Map<string, Promise<unknown>>();
|
|
180
|
+
function builtin<T>(name: string): Promise<T> {
|
|
181
|
+
let mod = builtins.get(name);
|
|
182
|
+
if (!mod) {
|
|
183
|
+
const specifier = name;
|
|
184
|
+
mod = import(/* @vite-ignore */ specifier);
|
|
185
|
+
builtins.set(name, mod);
|
|
186
|
+
}
|
|
187
|
+
return mod as Promise<T>;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/** `process`, if there is one. `globalThis` because `process` is not typed. */
|
|
191
|
+
function nodeProcess(): {
|
|
192
|
+
env?: Record<string, string | undefined>;
|
|
193
|
+
platform?: string;
|
|
194
|
+
} | null {
|
|
195
|
+
const g = globalThis as {
|
|
196
|
+
process?: { env?: Record<string, string | undefined>; platform?: string };
|
|
197
|
+
};
|
|
198
|
+
return g.process ?? null;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/** Executable-by-anyone, `fs.constants.X_OK`. Spelled out rather than read
|
|
202
|
+
* off the module, which would be a second await for a constant that is 1 on
|
|
203
|
+
* every platform this package can run on. */
|
|
204
|
+
const X_OK = 1;
|
|
205
|
+
|
|
206
|
+
/** Thrown when a control socket does not appear. */
|
|
207
|
+
export class IpcConnectError extends Error {
|
|
208
|
+
constructor(path: string, cause?: unknown) {
|
|
209
|
+
super(`@react-x11/components: could not connect to ${path}`, { cause });
|
|
210
|
+
this.name = 'IpcConnectError';
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
class NodeSpawnedProcess implements SpawnedProcess {
|
|
215
|
+
#child: NodeChildProcess;
|
|
216
|
+
|
|
217
|
+
constructor(child: NodeChildProcess) {
|
|
218
|
+
this.#child = child;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
get pid(): number | null {
|
|
222
|
+
return this.#child.pid ?? null;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
kill(signal = 'SIGTERM'): boolean {
|
|
226
|
+
if (this.#child.killed) return false;
|
|
227
|
+
try {
|
|
228
|
+
return this.#child.kill(signal);
|
|
229
|
+
} catch {
|
|
230
|
+
// already reaped, or a pid we no longer own
|
|
231
|
+
return false;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
onExit(listener: (info: ExitInfo) => void): void {
|
|
236
|
+
this.#child.on('exit', (code, signal) => listener({ code, signal }));
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
onError(listener: (err: Error) => void): void {
|
|
240
|
+
this.#child.on('error', listener);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
class NodeIpcSocket implements IpcSocket {
|
|
245
|
+
#socket: NodeSocket;
|
|
246
|
+
#closed = false;
|
|
247
|
+
|
|
248
|
+
constructor(socket: NodeSocket) {
|
|
249
|
+
this.#socket = socket;
|
|
250
|
+
socket.setEncoding('utf8');
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
write(data: string): void {
|
|
254
|
+
if (this.#closed) return;
|
|
255
|
+
try {
|
|
256
|
+
this.#socket.write(data);
|
|
257
|
+
} catch {
|
|
258
|
+
// the player exited between the last event and this command
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
onData(listener: (chunk: string) => void): void {
|
|
263
|
+
this.#socket.on('data', (chunk) => listener(String(chunk)));
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
onClose(listener: () => void): void {
|
|
267
|
+
const fire = (): void => {
|
|
268
|
+
if (this.#closed) return;
|
|
269
|
+
this.#closed = true;
|
|
270
|
+
listener();
|
|
271
|
+
};
|
|
272
|
+
this.#socket.on('close', fire);
|
|
273
|
+
// a socket that errors also closes, but not before something has
|
|
274
|
+
// listened for `error` — an unhandled one on a node socket throws
|
|
275
|
+
this.#socket.on('error', () => {});
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
close(): void {
|
|
279
|
+
this.#closed = true;
|
|
280
|
+
try {
|
|
281
|
+
this.#socket.end();
|
|
282
|
+
this.#socket.destroy();
|
|
283
|
+
} catch {
|
|
284
|
+
// already gone
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
let sharedHost: ProcessHost | null = null;
|
|
290
|
+
|
|
291
|
+
/**
|
|
292
|
+
* The real one: node's `child_process`, `fs`, `net` and `os`.
|
|
293
|
+
*
|
|
294
|
+
* Cached, because it holds nothing per-caller and the module loads it does are
|
|
295
|
+
* worth doing once. An app that wants a *different* host (a container, a
|
|
296
|
+
* remote shell) passes it as the `processes` prop instead of replacing this.
|
|
297
|
+
*/
|
|
298
|
+
export function nodeProcessHost(): ProcessHost {
|
|
299
|
+
if (sharedHost) return sharedHost;
|
|
300
|
+
|
|
301
|
+
const host: ProcessHost = {
|
|
302
|
+
environment() {
|
|
303
|
+
return nodeProcess()?.env ?? {};
|
|
304
|
+
},
|
|
305
|
+
|
|
306
|
+
async which(command) {
|
|
307
|
+
if (!command) return null;
|
|
308
|
+
const path = await builtin<PathModule>('node:path');
|
|
309
|
+
const fs = await builtin<FsPromisesModule>('node:fs/promises');
|
|
310
|
+
const runnable = async (candidate: string): Promise<boolean> => {
|
|
311
|
+
try {
|
|
312
|
+
await fs.access(candidate, X_OK);
|
|
313
|
+
return true;
|
|
314
|
+
} catch {
|
|
315
|
+
return false;
|
|
316
|
+
}
|
|
317
|
+
};
|
|
318
|
+
|
|
319
|
+
// A path, not a name: PATH is not consulted, exactly as a shell would
|
|
320
|
+
// not consult it.
|
|
321
|
+
if (command.includes('/')) {
|
|
322
|
+
return (await runnable(command)) ? command : null;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
const search = host.environment().PATH ?? '';
|
|
326
|
+
for (const dir of search.split(':')) {
|
|
327
|
+
if (!dir) continue;
|
|
328
|
+
const candidate = path.join(dir, command);
|
|
329
|
+
if (await runnable(candidate)) return candidate;
|
|
330
|
+
}
|
|
331
|
+
return null;
|
|
332
|
+
},
|
|
333
|
+
|
|
334
|
+
async spawn(command, args, options = {}) {
|
|
335
|
+
const cp = await builtin<ChildProcessModule>('node:child_process');
|
|
336
|
+
const env = options.env
|
|
337
|
+
? { ...host.environment(), ...options.env }
|
|
338
|
+
: undefined;
|
|
339
|
+
const child = cp.spawn(command, args, {
|
|
340
|
+
cwd: options.cwd,
|
|
341
|
+
env,
|
|
342
|
+
// The child draws into an X window; its stdio is not ours to show,
|
|
343
|
+
// and an inherited one would interleave with the app's own output.
|
|
344
|
+
// A pipe nobody reads fills and blocks the child, which is worse.
|
|
345
|
+
stdio: 'ignore',
|
|
346
|
+
});
|
|
347
|
+
return new NodeSpawnedProcess(child);
|
|
348
|
+
},
|
|
349
|
+
|
|
350
|
+
async socketPath(prefix) {
|
|
351
|
+
const [os, path, fs] = await Promise.all([
|
|
352
|
+
builtin<OsModule>('node:os'),
|
|
353
|
+
builtin<PathModule>('node:path'),
|
|
354
|
+
builtin<FsPromisesModule>('node:fs/promises'),
|
|
355
|
+
]);
|
|
356
|
+
const dir = await fs.mkdtemp(path.join(os.tmpdir(), `${prefix}-`));
|
|
357
|
+
return {
|
|
358
|
+
// The directory is what is private, not the socket: a unix socket's
|
|
359
|
+
// own mode is not honoured on every kernel, and a predictable path in
|
|
360
|
+
// a shared /tmp is how another user gets a command channel to the
|
|
361
|
+
// player.
|
|
362
|
+
path: path.join(dir, 'sock'),
|
|
363
|
+
async dispose() {
|
|
364
|
+
try {
|
|
365
|
+
await fs.rm(dir, { recursive: true, force: true });
|
|
366
|
+
} catch {
|
|
367
|
+
// /tmp is allowed to have been cleaned already
|
|
368
|
+
}
|
|
369
|
+
},
|
|
370
|
+
};
|
|
371
|
+
},
|
|
372
|
+
|
|
373
|
+
async connect(socketPath) {
|
|
374
|
+
const net = await builtin<NetModule>('node:net');
|
|
375
|
+
return new Promise<IpcSocket>((resolve, reject) => {
|
|
376
|
+
let socket: NodeSocket;
|
|
377
|
+
try {
|
|
378
|
+
socket = net.createConnection({ path: socketPath });
|
|
379
|
+
} catch (err) {
|
|
380
|
+
reject(new IpcConnectError(socketPath, err));
|
|
381
|
+
return;
|
|
382
|
+
}
|
|
383
|
+
const onConnect = (): void => {
|
|
384
|
+
socket.removeListener('error', onError);
|
|
385
|
+
resolve(new NodeIpcSocket(socket));
|
|
386
|
+
};
|
|
387
|
+
const onError = (err?: unknown): void => {
|
|
388
|
+
socket.removeListener('connect', onConnect);
|
|
389
|
+
try {
|
|
390
|
+
socket.destroy();
|
|
391
|
+
} catch {
|
|
392
|
+
// nothing to close
|
|
393
|
+
}
|
|
394
|
+
reject(new IpcConnectError(socketPath, err));
|
|
395
|
+
};
|
|
396
|
+
socket.once('connect', onConnect);
|
|
397
|
+
socket.once('error', onError);
|
|
398
|
+
});
|
|
399
|
+
},
|
|
400
|
+
};
|
|
401
|
+
|
|
402
|
+
sharedHost = host;
|
|
403
|
+
return host;
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
/**
|
|
407
|
+
* Retry `connect` until the child has created its socket.
|
|
408
|
+
*
|
|
409
|
+
* Every player here is given a socket path and creates it *itself*, some
|
|
410
|
+
* milliseconds after it starts — so the first connect always loses the race,
|
|
411
|
+
* and "the socket is not there yet" and "the player failed to start" look
|
|
412
|
+
* identical for that window. Polling with a deadline is what separates them.
|
|
413
|
+
*/
|
|
414
|
+
export async function connectWhenReady(
|
|
415
|
+
host: ProcessHost,
|
|
416
|
+
path: string,
|
|
417
|
+
options: { timeoutMs?: number; intervalMs?: number } = {},
|
|
418
|
+
): Promise<IpcSocket> {
|
|
419
|
+
const { timeoutMs = 5000, intervalMs = 50 } = options;
|
|
420
|
+
const deadline = Date.now() + timeoutMs;
|
|
421
|
+
let last: unknown;
|
|
422
|
+
for (;;) {
|
|
423
|
+
try {
|
|
424
|
+
return await host.connect(path);
|
|
425
|
+
} catch (err) {
|
|
426
|
+
last = err;
|
|
427
|
+
if (Date.now() >= deadline) break;
|
|
428
|
+
await delay(intervalMs);
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
throw last instanceof Error ? last : new IpcConnectError(path, last);
|
|
432
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// `@react-x11/components/embed` — running somebody else's program inside a
|
|
2
|
+
// `<foreign>`, without the vocabulary of any particular program.
|
|
3
|
+
//
|
|
4
|
+
// A **shared module**, not a component: it registers no element, renders
|
|
5
|
+
// nothing at import time, and exists because `<Terminal>` and `<MediaPlayer>`
|
|
6
|
+
// are the same lifecycle with different argv (AGENTS.md, "Shared modules are
|
|
7
|
+
// directories too"). It is exported rather than kept private for two
|
|
8
|
+
// reasons — `ProcessHost` is the seam an app needs to run the child somewhere
|
|
9
|
+
// else (a container, an ssh host, a sandbox), and a fourth wrapper around some
|
|
10
|
+
// other `-into WID` program should not have to copy this file to exist.
|
|
11
|
+
export {
|
|
12
|
+
BackendUnavailableError,
|
|
13
|
+
resolveBackend,
|
|
14
|
+
useEmbeddedClient,
|
|
15
|
+
} from './client.js';
|
|
16
|
+
export type {
|
|
17
|
+
EmbedStatus,
|
|
18
|
+
EmbeddedClient,
|
|
19
|
+
LaunchPlan,
|
|
20
|
+
PlanContext,
|
|
21
|
+
PlanFactory,
|
|
22
|
+
UseEmbeddedClientOptions,
|
|
23
|
+
} from './client.js';
|
|
24
|
+
|
|
25
|
+
export { IpcConnectError, connectWhenReady, nodeProcessHost } from './host.js';
|
|
26
|
+
export type {
|
|
27
|
+
ExitInfo,
|
|
28
|
+
IpcSocket,
|
|
29
|
+
ProcessHost,
|
|
30
|
+
ScratchSocket,
|
|
31
|
+
SpawnOptions,
|
|
32
|
+
SpawnedProcess,
|
|
33
|
+
} from './host.js';
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// Timers, reached through `globalThis` — the build compiles `src/` with
|
|
2
|
+
// `types: []`, so a runtime-provided global has to be typed structurally
|
|
3
|
+
// rather than inherited from `@types/node` (AGENTS.md, "Two tsconfigs").
|
|
4
|
+
//
|
|
5
|
+
// A near-copy of `../code-language/timers.ts`, and deliberately a copy: a
|
|
6
|
+
// shared module reaching into another shared module's private file would make
|
|
7
|
+
// the two one unit for a bundler, which is the same rule that stops one
|
|
8
|
+
// component importing another. Thirty lines is the cheaper side of that
|
|
9
|
+
// trade.
|
|
10
|
+
interface TimerGlobals {
|
|
11
|
+
setTimeout?(fn: () => void, ms: number): unknown;
|
|
12
|
+
clearTimeout?(id: unknown): void;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const g = globalThis as TimerGlobals;
|
|
16
|
+
|
|
17
|
+
export type TimerId = unknown;
|
|
18
|
+
|
|
19
|
+
export function startTimeout(fn: () => void, ms: number): TimerId {
|
|
20
|
+
return g.setTimeout?.(fn, ms) ?? null;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export function stopTimeout(id: TimerId): void {
|
|
24
|
+
if (id != null) g.clearTimeout?.(id);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/** `await delay(50)` — the polling half of `connectWhenReady`. */
|
|
28
|
+
export function delay(ms: number): Promise<void> {
|
|
29
|
+
return new Promise((resolve) => {
|
|
30
|
+
if (!startTimeout(() => resolve(), ms)) resolve();
|
|
31
|
+
});
|
|
32
|
+
}
|