mimo-reasonix 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/package.json +1 -1
- package/node_modules/@alcalzone/ansi-tokenize/LICENSE +21 -0
- package/node_modules/@alcalzone/ansi-tokenize/README.md +278 -0
- package/node_modules/@alcalzone/ansi-tokenize/build/ansiCodes.d.ts +7 -0
- package/node_modules/@alcalzone/ansi-tokenize/build/ansiCodes.js +57 -0
- package/node_modules/@alcalzone/ansi-tokenize/build/ansiCodes.js.map +1 -0
- package/node_modules/@alcalzone/ansi-tokenize/build/consts.d.ts +17 -0
- package/node_modules/@alcalzone/ansi-tokenize/build/consts.js +28 -0
- package/node_modules/@alcalzone/ansi-tokenize/build/consts.js.map +1 -0
- package/node_modules/@alcalzone/ansi-tokenize/build/diff.d.ts +6 -0
- package/node_modules/@alcalzone/ansi-tokenize/build/diff.js +26 -0
- package/node_modules/@alcalzone/ansi-tokenize/build/diff.js.map +1 -0
- package/node_modules/@alcalzone/ansi-tokenize/build/index.d.ts +6 -0
- package/node_modules/@alcalzone/ansi-tokenize/build/index.js +7 -0
- package/node_modules/@alcalzone/ansi-tokenize/build/index.js.map +1 -0
- package/node_modules/@alcalzone/ansi-tokenize/build/reduce.d.ts +5 -0
- package/node_modules/@alcalzone/ansi-tokenize/build/reduce.js +37 -0
- package/node_modules/@alcalzone/ansi-tokenize/build/reduce.js.map +1 -0
- package/node_modules/@alcalzone/ansi-tokenize/build/styledChars.d.ts +6 -0
- package/node_modules/@alcalzone/ansi-tokenize/build/styledChars.js +38 -0
- package/node_modules/@alcalzone/ansi-tokenize/build/styledChars.js.map +1 -0
- package/node_modules/@alcalzone/ansi-tokenize/build/tokenize.d.ts +16 -0
- package/node_modules/@alcalzone/ansi-tokenize/build/tokenize.js +194 -0
- package/node_modules/@alcalzone/ansi-tokenize/build/tokenize.js.map +1 -0
- package/node_modules/@alcalzone/ansi-tokenize/build/undo.d.ts +3 -0
- package/node_modules/@alcalzone/ansi-tokenize/build/undo.js +11 -0
- package/node_modules/@alcalzone/ansi-tokenize/build/undo.js.map +1 -0
- package/node_modules/@alcalzone/ansi-tokenize/package.json +55 -0
- package/node_modules/ansi-regex/index.d.ts +33 -0
- package/node_modules/ansi-regex/index.js +14 -0
- package/node_modules/ansi-regex/license +9 -0
- package/node_modules/ansi-regex/package.json +61 -0
- package/node_modules/ansi-regex/readme.md +66 -0
- package/node_modules/ansi-styles/index.d.ts +236 -0
- package/node_modules/ansi-styles/index.js +223 -0
- package/node_modules/ansi-styles/license +9 -0
- package/node_modules/ansi-styles/package.json +54 -0
- package/node_modules/ansi-styles/readme.md +173 -0
- package/node_modules/auto-bind/index.d.ts +50 -0
- package/node_modules/auto-bind/index.js +41 -0
- package/node_modules/auto-bind/license +9 -0
- package/node_modules/auto-bind/package.json +51 -0
- package/node_modules/auto-bind/react.d.ts +26 -0
- package/node_modules/auto-bind/react.js +28 -0
- package/node_modules/auto-bind/readme.md +92 -0
- package/node_modules/bidi-js/LICENSE.txt +22 -0
- package/node_modules/bidi-js/README.md +133 -0
- package/node_modules/bidi-js/dist/bidi.js +1010 -0
- package/node_modules/bidi-js/dist/bidi.min.js +1 -0
- package/node_modules/bidi-js/dist/bidi.min.mjs +1 -0
- package/node_modules/bidi-js/dist/bidi.mjs +1002 -0
- package/node_modules/bidi-js/package.json +39 -0
- package/node_modules/bidi-js/src/brackets.js +30 -0
- package/node_modules/bidi-js/src/charTypes.js +66 -0
- package/node_modules/bidi-js/src/data/bidiBrackets.data.js +5 -0
- package/node_modules/bidi-js/src/data/bidiCharTypes.data.js +25 -0
- package/node_modules/bidi-js/src/data/bidiMirroring.data.js +2 -0
- package/node_modules/bidi-js/src/embeddingLevels.js +690 -0
- package/node_modules/bidi-js/src/index.js +5 -0
- package/node_modules/bidi-js/src/mirroring.js +48 -0
- package/node_modules/bidi-js/src/reordering.js +99 -0
- package/node_modules/bidi-js/src/util/parseCharacterMap.js +30 -0
- package/node_modules/chalk/license +9 -0
- package/node_modules/chalk/package.json +83 -0
- package/node_modules/chalk/readme.md +297 -0
- package/node_modules/chalk/source/index.d.ts +325 -0
- package/node_modules/chalk/source/index.js +225 -0
- package/node_modules/chalk/source/utilities.js +33 -0
- package/node_modules/chalk/source/vendor/ansi-styles/index.d.ts +236 -0
- package/node_modules/chalk/source/vendor/ansi-styles/index.js +223 -0
- package/node_modules/chalk/source/vendor/supports-color/browser.d.ts +1 -0
- package/node_modules/chalk/source/vendor/supports-color/browser.js +34 -0
- package/node_modules/chalk/source/vendor/supports-color/index.d.ts +55 -0
- package/node_modules/chalk/source/vendor/supports-color/index.js +190 -0
- package/node_modules/cli-boxes/boxes.json +82 -0
- package/node_modules/cli-boxes/index.d.ts +122 -0
- package/node_modules/cli-boxes/index.js +3 -0
- package/node_modules/cli-boxes/license +9 -0
- package/node_modules/cli-boxes/package.json +49 -0
- package/node_modules/cli-boxes/readme.md +103 -0
- package/node_modules/code-excerpt/dist/index.d.ts +9 -0
- package/node_modules/code-excerpt/dist/index.js +27 -0
- package/node_modules/code-excerpt/license +21 -0
- package/node_modules/code-excerpt/package.json +43 -0
- package/node_modules/code-excerpt/readme.md +65 -0
- package/node_modules/convert-to-spaces/dist/index.d.ts +2 -0
- package/node_modules/convert-to-spaces/dist/index.js +4 -0
- package/node_modules/convert-to-spaces/license +21 -0
- package/node_modules/convert-to-spaces/package.json +40 -0
- package/node_modules/convert-to-spaces/readme.md +39 -0
- package/node_modules/emoji-regex/LICENSE-MIT.txt +20 -0
- package/node_modules/emoji-regex/README.md +107 -0
- package/node_modules/emoji-regex/index.d.ts +3 -0
- package/node_modules/emoji-regex/index.js +4 -0
- package/node_modules/emoji-regex/index.mjs +4 -0
- package/node_modules/emoji-regex/package.json +45 -0
- package/node_modules/escape-string-regexp/index.d.ts +18 -0
- package/node_modules/escape-string-regexp/index.js +11 -0
- package/node_modules/escape-string-regexp/license +9 -0
- package/node_modules/escape-string-regexp/package.json +43 -0
- package/node_modules/escape-string-regexp/readme.md +29 -0
- package/node_modules/get-east-asian-width/index.d.ts +60 -0
- package/node_modules/get-east-asian-width/index.js +30 -0
- package/node_modules/get-east-asian-width/license +9 -0
- package/node_modules/get-east-asian-width/lookup-data.js +18 -0
- package/node_modules/get-east-asian-width/lookup.js +135 -0
- package/node_modules/get-east-asian-width/package.json +71 -0
- package/node_modules/get-east-asian-width/readme.md +65 -0
- package/node_modules/get-east-asian-width/utilities.js +24 -0
- package/node_modules/indent-string/index.d.ts +38 -0
- package/node_modules/indent-string/index.js +38 -0
- package/node_modules/indent-string/license +9 -0
- package/node_modules/indent-string/package.json +40 -0
- package/node_modules/indent-string/readme.md +73 -0
- package/node_modules/ink/LICENSE +30 -0
- package/node_modules/ink/package.json +53 -0
- package/node_modules/ink/src/Ansi.tsx +254 -0
- package/node_modules/ink/src/_internal/debug.ts +27 -0
- package/node_modules/ink/src/_internal/earlyInput.ts +7 -0
- package/node_modules/ink/src/_internal/env.ts +38 -0
- package/node_modules/ink/src/_internal/envUtils.ts +13 -0
- package/node_modules/ink/src/_internal/execFileNoThrow.ts +58 -0
- package/node_modules/ink/src/_internal/fullscreen.ts +9 -0
- package/node_modules/ink/src/_internal/intl.ts +13 -0
- package/node_modules/ink/src/_internal/iter-lines.ts +14 -0
- package/node_modules/ink/src/_internal/log.ts +15 -0
- package/node_modules/ink/src/_internal/semver.ts +12 -0
- package/node_modules/ink/src/_internal/sliceAnsi.ts +6 -0
- package/node_modules/ink/src/_internal/state.ts +22 -0
- package/node_modules/ink/src/_internal/yoga-layout.ts +23 -0
- package/node_modules/ink/src/ambient.d.ts +47 -0
- package/node_modules/ink/src/bidi.ts +110 -0
- package/node_modules/ink/src/clearTerminal.ts +53 -0
- package/node_modules/ink/src/colorize.ts +129 -0
- package/node_modules/ink/src/components/AlternateScreen.tsx +49 -0
- package/node_modules/ink/src/components/App.tsx +700 -0
- package/node_modules/ink/src/components/AppContext.ts +17 -0
- package/node_modules/ink/src/components/Box.tsx +105 -0
- package/node_modules/ink/src/components/Button.tsx +96 -0
- package/node_modules/ink/src/components/ClockContext.tsx +94 -0
- package/node_modules/ink/src/components/CursorDeclarationContext.ts +23 -0
- package/node_modules/ink/src/components/ErrorOverview.tsx +116 -0
- package/node_modules/ink/src/components/Link.tsx +27 -0
- package/node_modules/ink/src/components/Newline.tsx +11 -0
- package/node_modules/ink/src/components/NoSelect.tsx +16 -0
- package/node_modules/ink/src/components/RawAnsi.tsx +18 -0
- package/node_modules/ink/src/components/ScrollBox.tsx +209 -0
- package/node_modules/ink/src/components/Spacer.tsx +6 -0
- package/node_modules/ink/src/components/StdinContext.ts +35 -0
- package/node_modules/ink/src/components/TerminalFocusContext.tsx +37 -0
- package/node_modules/ink/src/components/TerminalSizeContext.tsx +9 -0
- package/node_modules/ink/src/components/Text.tsx +85 -0
- package/node_modules/ink/src/components/TextInput.tsx +140 -0
- package/node_modules/ink/src/constants.ts +2 -0
- package/node_modules/ink/src/cursor.ts +6 -0
- package/node_modules/ink/src/devtools.ts +2 -0
- package/node_modules/ink/src/dom.ts +451 -0
- package/node_modules/ink/src/events/click-event.ts +19 -0
- package/node_modules/ink/src/events/dispatcher.ts +185 -0
- package/node_modules/ink/src/events/emitter.ts +37 -0
- package/node_modules/ink/src/events/event-handlers.ts +60 -0
- package/node_modules/ink/src/events/event.ts +12 -0
- package/node_modules/ink/src/events/focus-event.ts +13 -0
- package/node_modules/ink/src/events/input-event.ts +212 -0
- package/node_modules/ink/src/events/keyboard-event.ts +41 -0
- package/node_modules/ink/src/events/paste-event.ts +11 -0
- package/node_modules/ink/src/events/resize-event.ts +13 -0
- package/node_modules/ink/src/events/terminal-event.ts +99 -0
- package/node_modules/ink/src/events/terminal-focus-event.ts +13 -0
- package/node_modules/ink/src/focus.ts +159 -0
- package/node_modules/ink/src/frame.ts +105 -0
- package/node_modules/ink/src/get-max-width.ts +10 -0
- package/node_modules/ink/src/hit-test.ts +107 -0
- package/node_modules/ink/src/hooks/use-animation-frame.ts +33 -0
- package/node_modules/ink/src/hooks/use-app.ts +6 -0
- package/node_modules/ink/src/hooks/use-declared-cursor.ts +59 -0
- package/node_modules/ink/src/hooks/use-input.ts +57 -0
- package/node_modules/ink/src/hooks/use-interval.ts +53 -0
- package/node_modules/ink/src/hooks/use-search-highlight.ts +41 -0
- package/node_modules/ink/src/hooks/use-selection.ts +86 -0
- package/node_modules/ink/src/hooks/use-stdin.ts +6 -0
- package/node_modules/ink/src/hooks/use-tab-status.ts +68 -0
- package/node_modules/ink/src/hooks/use-terminal-focus.ts +8 -0
- package/node_modules/ink/src/hooks/use-terminal-title.ts +21 -0
- package/node_modules/ink/src/hooks/use-terminal-viewport.ts +77 -0
- package/node_modules/ink/src/index.ts +150 -0
- package/node_modules/ink/src/ink.tsx +1499 -0
- package/node_modules/ink/src/instances.ts +5 -0
- package/node_modules/ink/src/layout/engine.ts +10 -0
- package/node_modules/ink/src/layout/geometry.ts +116 -0
- package/node_modules/ink/src/layout/node.ts +178 -0
- package/node_modules/ink/src/layout/yoga.ts +316 -0
- package/node_modules/ink/src/line-width-cache.ts +19 -0
- package/node_modules/ink/src/log-update.ts +777 -0
- package/node_modules/ink/src/measure-element.ts +14 -0
- package/node_modules/ink/src/measure-text.ts +29 -0
- package/node_modules/ink/src/node-cache.ts +58 -0
- package/node_modules/ink/src/optimizer.ts +65 -0
- package/node_modules/ink/src/output.ts +730 -0
- package/node_modules/ink/src/parse-keypress.ts +751 -0
- package/node_modules/ink/src/react-jsx-aug.d.ts +14 -0
- package/node_modules/ink/src/reconciler.ts +508 -0
- package/node_modules/ink/src/render-border.ts +230 -0
- package/node_modules/ink/src/render-node-to-output.ts +1477 -0
- package/node_modules/ink/src/render-to-screen.ts +201 -0
- package/node_modules/ink/src/renderer.ts +183 -0
- package/node_modules/ink/src/root.ts +148 -0
- package/node_modules/ink/src/screen.ts +1301 -0
- package/node_modules/ink/src/searchHighlight.ts +68 -0
- package/node_modules/ink/src/selection.ts +742 -0
- package/node_modules/ink/src/squash-text-nodes.ts +70 -0
- package/node_modules/ink/src/stringWidth.ts +222 -0
- package/node_modules/ink/src/styles.ts +603 -0
- package/node_modules/ink/src/supports-hyperlinks.ts +41 -0
- package/node_modules/ink/src/tabstops.ts +39 -0
- package/node_modules/ink/src/terminal-focus-state.ts +46 -0
- package/node_modules/ink/src/terminal-querier.ts +143 -0
- package/node_modules/ink/src/terminal.ts +220 -0
- package/node_modules/ink/src/termio/ansi.ts +66 -0
- package/node_modules/ink/src/termio/csi.ts +290 -0
- package/node_modules/ink/src/termio/dec.ts +52 -0
- package/node_modules/ink/src/termio/esc.ts +63 -0
- package/node_modules/ink/src/termio/osc.ts +364 -0
- package/node_modules/ink/src/termio/parser.ts +383 -0
- package/node_modules/ink/src/termio/sgr.ts +331 -0
- package/node_modules/ink/src/termio/tokenize.ts +311 -0
- package/node_modules/ink/src/termio/types.ts +225 -0
- package/node_modules/ink/src/termio.ts +20 -0
- package/node_modules/ink/src/useTerminalNotification.ts +124 -0
- package/node_modules/ink/src/warn.ts +10 -0
- package/node_modules/ink/src/widest-line.ts +12 -0
- package/node_modules/ink/src/wrap-text.ts +55 -0
- package/node_modules/ink/src/wrapAnsi.ts +15 -0
- package/node_modules/ink/tsconfig.json +26 -0
- package/node_modules/is-fullwidth-code-point/index.d.ts +17 -0
- package/node_modules/is-fullwidth-code-point/index.js +12 -0
- package/node_modules/is-fullwidth-code-point/license +9 -0
- package/node_modules/is-fullwidth-code-point/package.json +53 -0
- package/node_modules/is-fullwidth-code-point/readme.md +31 -0
- package/node_modules/lodash-es/LICENSE +47 -0
- package/node_modules/lodash-es/README.md +10 -0
- package/node_modules/lodash-es/_DataView.js +7 -0
- package/node_modules/lodash-es/_Hash.js +32 -0
- package/node_modules/lodash-es/_LazyWrapper.js +28 -0
- package/node_modules/lodash-es/_ListCache.js +32 -0
- package/node_modules/lodash-es/_LodashWrapper.js +22 -0
- package/node_modules/lodash-es/_Map.js +7 -0
- package/node_modules/lodash-es/_MapCache.js +32 -0
- package/node_modules/lodash-es/_Promise.js +7 -0
- package/node_modules/lodash-es/_Set.js +7 -0
- package/node_modules/lodash-es/_SetCache.js +27 -0
- package/node_modules/lodash-es/_Stack.js +27 -0
- package/node_modules/lodash-es/_Symbol.js +6 -0
- package/node_modules/lodash-es/_Uint8Array.js +6 -0
- package/node_modules/lodash-es/_WeakMap.js +7 -0
- package/node_modules/lodash-es/_addMapEntry.js +15 -0
- package/node_modules/lodash-es/_addSetEntry.js +15 -0
- package/node_modules/lodash-es/_apply.js +21 -0
- package/node_modules/lodash-es/_arrayAggregator.js +22 -0
- package/node_modules/lodash-es/_arrayEach.js +22 -0
- package/node_modules/lodash-es/_arrayEachRight.js +21 -0
- package/node_modules/lodash-es/_arrayEvery.js +23 -0
- package/node_modules/lodash-es/_arrayFilter.js +25 -0
- package/node_modules/lodash-es/_arrayIncludes.js +17 -0
- package/node_modules/lodash-es/_arrayIncludesWith.js +22 -0
- package/node_modules/lodash-es/_arrayLikeKeys.js +49 -0
- package/node_modules/lodash-es/_arrayMap.js +21 -0
- package/node_modules/lodash-es/_arrayPush.js +20 -0
- package/node_modules/lodash-es/_arrayReduce.js +26 -0
- package/node_modules/lodash-es/_arrayReduceRight.js +24 -0
- package/node_modules/lodash-es/_arraySample.js +15 -0
- package/node_modules/lodash-es/_arraySampleSize.js +17 -0
- package/node_modules/lodash-es/_arrayShuffle.js +15 -0
- package/node_modules/lodash-es/_arraySome.js +23 -0
- package/node_modules/lodash-es/_asciiSize.js +12 -0
- package/node_modules/lodash-es/_asciiToArray.js +12 -0
- package/node_modules/lodash-es/_asciiWords.js +15 -0
- package/node_modules/lodash-es/_assignMergeValue.js +20 -0
- package/node_modules/lodash-es/_assignValue.js +28 -0
- package/node_modules/lodash-es/_assocIndexOf.js +21 -0
- package/node_modules/lodash-es/_baseAggregator.js +21 -0
- package/node_modules/lodash-es/_baseAssign.js +17 -0
- package/node_modules/lodash-es/_baseAssignIn.js +17 -0
- package/node_modules/lodash-es/_baseAssignValue.js +25 -0
- package/node_modules/lodash-es/_baseAt.js +23 -0
- package/node_modules/lodash-es/_baseClamp.js +22 -0
- package/node_modules/lodash-es/_baseClone.js +166 -0
- package/node_modules/lodash-es/_baseConforms.js +18 -0
- package/node_modules/lodash-es/_baseConformsTo.js +27 -0
- package/node_modules/lodash-es/_baseCreate.js +30 -0
- package/node_modules/lodash-es/_baseDelay.js +21 -0
- package/node_modules/lodash-es/_baseDifference.js +67 -0
- package/node_modules/lodash-es/_baseEach.js +14 -0
- package/node_modules/lodash-es/_baseEachRight.js +14 -0
- package/node_modules/lodash-es/_baseEvery.js +21 -0
- package/node_modules/lodash-es/_baseExtremum.js +32 -0
- package/node_modules/lodash-es/_baseFill.js +32 -0
- package/node_modules/lodash-es/_baseFilter.js +21 -0
- package/node_modules/lodash-es/_baseFindIndex.js +24 -0
- package/node_modules/lodash-es/_baseFindKey.js +23 -0
- package/node_modules/lodash-es/_baseFlatten.js +38 -0
- package/node_modules/lodash-es/_baseFor.js +16 -0
- package/node_modules/lodash-es/_baseForOwn.js +16 -0
- package/node_modules/lodash-es/_baseForOwnRight.js +16 -0
- package/node_modules/lodash-es/_baseForRight.js +15 -0
- package/node_modules/lodash-es/_baseFunctions.js +19 -0
- package/node_modules/lodash-es/_baseGet.js +24 -0
- package/node_modules/lodash-es/_baseGetAllKeys.js +20 -0
- package/node_modules/lodash-es/_baseGetTag.js +28 -0
- package/node_modules/lodash-es/_baseGt.js +14 -0
- package/node_modules/lodash-es/_baseHas.js +19 -0
- package/node_modules/lodash-es/_baseHasIn.js +13 -0
- package/node_modules/lodash-es/_baseInRange.js +18 -0
- package/node_modules/lodash-es/_baseIndexOf.js +20 -0
- package/node_modules/lodash-es/_baseIndexOfWith.js +23 -0
- package/node_modules/lodash-es/_baseIntersection.js +74 -0
- package/node_modules/lodash-es/_baseInverter.js +21 -0
- package/node_modules/lodash-es/_baseInvoke.js +24 -0
- package/node_modules/lodash-es/_baseIsArguments.js +18 -0
- package/node_modules/lodash-es/_baseIsArrayBuffer.js +17 -0
- package/node_modules/lodash-es/_baseIsDate.js +18 -0
- package/node_modules/lodash-es/_baseIsEqual.js +28 -0
- package/node_modules/lodash-es/_baseIsEqualDeep.js +83 -0
- package/node_modules/lodash-es/_baseIsMap.js +18 -0
- package/node_modules/lodash-es/_baseIsMatch.js +62 -0
- package/node_modules/lodash-es/_baseIsNaN.js +12 -0
- package/node_modules/lodash-es/_baseIsNative.js +47 -0
- package/node_modules/lodash-es/_baseIsRegExp.js +18 -0
- package/node_modules/lodash-es/_baseIsSet.js +18 -0
- package/node_modules/lodash-es/_baseIsTypedArray.js +60 -0
- package/node_modules/lodash-es/_baseIteratee.js +31 -0
- package/node_modules/lodash-es/_baseKeys.js +30 -0
- package/node_modules/lodash-es/_baseKeysIn.js +33 -0
- package/node_modules/lodash-es/_baseLodash.js +10 -0
- package/node_modules/lodash-es/_baseLt.js +14 -0
- package/node_modules/lodash-es/_baseMap.js +22 -0
- package/node_modules/lodash-es/_baseMatches.js +22 -0
- package/node_modules/lodash-es/_baseMatchesProperty.js +33 -0
- package/node_modules/lodash-es/_baseMean.js +20 -0
- package/node_modules/lodash-es/_baseMerge.js +42 -0
- package/node_modules/lodash-es/_baseMergeDeep.js +94 -0
- package/node_modules/lodash-es/_baseNth.js +20 -0
- package/node_modules/lodash-es/_baseOrderBy.js +49 -0
- package/node_modules/lodash-es/_basePick.js +19 -0
- package/node_modules/lodash-es/_basePickBy.js +30 -0
- package/node_modules/lodash-es/_baseProperty.js +14 -0
- package/node_modules/lodash-es/_basePropertyDeep.js +16 -0
- package/node_modules/lodash-es/_basePropertyOf.js +14 -0
- package/node_modules/lodash-es/_basePullAll.js +51 -0
- package/node_modules/lodash-es/_basePullAt.js +37 -0
- package/node_modules/lodash-es/_baseRandom.js +18 -0
- package/node_modules/lodash-es/_baseRange.js +28 -0
- package/node_modules/lodash-es/_baseReduce.js +23 -0
- package/node_modules/lodash-es/_baseRepeat.js +35 -0
- package/node_modules/lodash-es/_baseRest.js +17 -0
- package/node_modules/lodash-es/_baseSample.js +15 -0
- package/node_modules/lodash-es/_baseSampleSize.js +18 -0
- package/node_modules/lodash-es/_baseSet.js +51 -0
- package/node_modules/lodash-es/_baseSetData.js +17 -0
- package/node_modules/lodash-es/_baseSetToString.js +22 -0
- package/node_modules/lodash-es/_baseShuffle.js +15 -0
- package/node_modules/lodash-es/_baseSlice.js +31 -0
- package/node_modules/lodash-es/_baseSome.js +22 -0
- package/node_modules/lodash-es/_baseSortBy.js +21 -0
- package/node_modules/lodash-es/_baseSortedIndex.js +42 -0
- package/node_modules/lodash-es/_baseSortedIndexBy.js +67 -0
- package/node_modules/lodash-es/_baseSortedUniq.js +30 -0
- package/node_modules/lodash-es/_baseSum.js +24 -0
- package/node_modules/lodash-es/_baseTimes.js +20 -0
- package/node_modules/lodash-es/_baseToNumber.js +24 -0
- package/node_modules/lodash-es/_baseToPairs.js +18 -0
- package/node_modules/lodash-es/_baseToString.js +37 -0
- package/node_modules/lodash-es/_baseTrim.js +19 -0
- package/node_modules/lodash-es/_baseUnary.js +14 -0
- package/node_modules/lodash-es/_baseUniq.js +72 -0
- package/node_modules/lodash-es/_baseUnset.js +52 -0
- package/node_modules/lodash-es/_baseUpdate.js +18 -0
- package/node_modules/lodash-es/_baseValues.js +19 -0
- package/node_modules/lodash-es/_baseWhile.js +26 -0
- package/node_modules/lodash-es/_baseWrapperValue.js +25 -0
- package/node_modules/lodash-es/_baseXor.js +36 -0
- package/node_modules/lodash-es/_baseZipObject.js +23 -0
- package/node_modules/lodash-es/_cacheHas.js +13 -0
- package/node_modules/lodash-es/_castArrayLikeObject.js +14 -0
- package/node_modules/lodash-es/_castFunction.js +14 -0
- package/node_modules/lodash-es/_castPath.js +21 -0
- package/node_modules/lodash-es/_castRest.js +14 -0
- package/node_modules/lodash-es/_castSlice.js +18 -0
- package/node_modules/lodash-es/_charsEndIndex.js +19 -0
- package/node_modules/lodash-es/_charsStartIndex.js +20 -0
- package/node_modules/lodash-es/_cloneArrayBuffer.js +16 -0
- package/node_modules/lodash-es/_cloneBuffer.js +35 -0
- package/node_modules/lodash-es/_cloneDataView.js +16 -0
- package/node_modules/lodash-es/_cloneMap.js +22 -0
- package/node_modules/lodash-es/_cloneRegExp.js +17 -0
- package/node_modules/lodash-es/_cloneSet.js +22 -0
- package/node_modules/lodash-es/_cloneSymbol.js +18 -0
- package/node_modules/lodash-es/_cloneTypedArray.js +16 -0
- package/node_modules/lodash-es/_compareAscending.js +41 -0
- package/node_modules/lodash-es/_compareMultiple.js +44 -0
- package/node_modules/lodash-es/_composeArgs.js +39 -0
- package/node_modules/lodash-es/_composeArgsRight.js +41 -0
- package/node_modules/lodash-es/_copyArray.js +20 -0
- package/node_modules/lodash-es/_copyObject.js +40 -0
- package/node_modules/lodash-es/_copySymbols.js +16 -0
- package/node_modules/lodash-es/_copySymbolsIn.js +16 -0
- package/node_modules/lodash-es/_coreJsData.js +6 -0
- package/node_modules/lodash-es/_countHolders.js +21 -0
- package/node_modules/lodash-es/_createAggregator.js +23 -0
- package/node_modules/lodash-es/_createAssigner.js +37 -0
- package/node_modules/lodash-es/_createBaseEach.js +32 -0
- package/node_modules/lodash-es/_createBaseFor.js +25 -0
- package/node_modules/lodash-es/_createBind.js +28 -0
- package/node_modules/lodash-es/_createCaseFirst.js +33 -0
- package/node_modules/lodash-es/_createCompounder.js +24 -0
- package/node_modules/lodash-es/_createCtor.js +37 -0
- package/node_modules/lodash-es/_createCurry.js +46 -0
- package/node_modules/lodash-es/_createFind.js +25 -0
- package/node_modules/lodash-es/_createFlow.js +78 -0
- package/node_modules/lodash-es/_createHybrid.js +92 -0
- package/node_modules/lodash-es/_createInverter.js +17 -0
- package/node_modules/lodash-es/_createMathOperation.js +38 -0
- package/node_modules/lodash-es/_createOver.js +27 -0
- package/node_modules/lodash-es/_createPadding.js +33 -0
- package/node_modules/lodash-es/_createPartial.js +43 -0
- package/node_modules/lodash-es/_createRange.js +30 -0
- package/node_modules/lodash-es/_createRecurry.js +56 -0
- package/node_modules/lodash-es/_createRelationalOperation.js +20 -0
- package/node_modules/lodash-es/_createRound.js +35 -0
- package/node_modules/lodash-es/_createSet.js +19 -0
- package/node_modules/lodash-es/_createToPairs.js +30 -0
- package/node_modules/lodash-es/_createWrap.js +106 -0
- package/node_modules/lodash-es/_customDefaultsAssignIn.js +29 -0
- package/node_modules/lodash-es/_customDefaultsMerge.js +28 -0
- package/node_modules/lodash-es/_customOmitClone.js +16 -0
- package/node_modules/lodash-es/_deburrLetter.js +71 -0
- package/node_modules/lodash-es/_defineProperty.js +11 -0
- package/node_modules/lodash-es/_equalArrays.js +84 -0
- package/node_modules/lodash-es/_equalByTag.js +112 -0
- package/node_modules/lodash-es/_equalObjects.js +90 -0
- package/node_modules/lodash-es/_escapeHtmlChar.js +21 -0
- package/node_modules/lodash-es/_escapeStringChar.js +22 -0
- package/node_modules/lodash-es/_flatRest.js +16 -0
- package/node_modules/lodash-es/_freeGlobal.js +4 -0
- package/node_modules/lodash-es/_getAllKeys.js +16 -0
- package/node_modules/lodash-es/_getAllKeysIn.js +17 -0
- package/node_modules/lodash-es/_getData.js +15 -0
- package/node_modules/lodash-es/_getFuncName.js +31 -0
- package/node_modules/lodash-es/_getHolder.js +13 -0
- package/node_modules/lodash-es/_getMapData.js +18 -0
- package/node_modules/lodash-es/_getMatchData.js +24 -0
- package/node_modules/lodash-es/_getNative.js +17 -0
- package/node_modules/lodash-es/_getPrototype.js +6 -0
- package/node_modules/lodash-es/_getRawTag.js +46 -0
- package/node_modules/lodash-es/_getSymbols.js +30 -0
- package/node_modules/lodash-es/_getSymbolsIn.js +25 -0
- package/node_modules/lodash-es/_getTag.js +58 -0
- package/node_modules/lodash-es/_getValue.js +13 -0
- package/node_modules/lodash-es/_getView.js +33 -0
- package/node_modules/lodash-es/_getWrapDetails.js +17 -0
- package/node_modules/lodash-es/_hasPath.js +39 -0
- package/node_modules/lodash-es/_hasUnicode.js +26 -0
- package/node_modules/lodash-es/_hasUnicodeWord.js +15 -0
- package/node_modules/lodash-es/_hashClear.js +15 -0
- package/node_modules/lodash-es/_hashDelete.js +17 -0
- package/node_modules/lodash-es/_hashGet.js +30 -0
- package/node_modules/lodash-es/_hashHas.js +23 -0
- package/node_modules/lodash-es/_hashSet.js +23 -0
- package/node_modules/lodash-es/_initCloneArray.js +26 -0
- package/node_modules/lodash-es/_initCloneByTag.js +77 -0
- package/node_modules/lodash-es/_initCloneObject.js +18 -0
- package/node_modules/lodash-es/_insertWrapDetails.js +23 -0
- package/node_modules/lodash-es/_isFlattenable.js +20 -0
- package/node_modules/lodash-es/_isIndex.js +25 -0
- package/node_modules/lodash-es/_isIterateeCall.js +30 -0
- package/node_modules/lodash-es/_isKey.js +29 -0
- package/node_modules/lodash-es/_isKeyable.js +15 -0
- package/node_modules/lodash-es/_isLaziable.js +28 -0
- package/node_modules/lodash-es/_isMaskable.js +14 -0
- package/node_modules/lodash-es/_isMasked.js +20 -0
- package/node_modules/lodash-es/_isPrototype.js +18 -0
- package/node_modules/lodash-es/_isStrictComparable.js +15 -0
- package/node_modules/lodash-es/_iteratorToArray.js +18 -0
- package/node_modules/lodash-es/_lazyClone.js +23 -0
- package/node_modules/lodash-es/_lazyReverse.js +23 -0
- package/node_modules/lodash-es/_lazyValue.js +69 -0
- package/node_modules/lodash-es/_listCacheClear.js +13 -0
- package/node_modules/lodash-es/_listCacheDelete.js +35 -0
- package/node_modules/lodash-es/_listCacheGet.js +19 -0
- package/node_modules/lodash-es/_listCacheHas.js +16 -0
- package/node_modules/lodash-es/_listCacheSet.js +26 -0
- package/node_modules/lodash-es/_mapCacheClear.js +21 -0
- package/node_modules/lodash-es/_mapCacheDelete.js +18 -0
- package/node_modules/lodash-es/_mapCacheGet.js +16 -0
- package/node_modules/lodash-es/_mapCacheHas.js +16 -0
- package/node_modules/lodash-es/_mapCacheSet.js +22 -0
- package/node_modules/lodash-es/_mapToArray.js +18 -0
- package/node_modules/lodash-es/_matchesStrictComparable.js +20 -0
- package/node_modules/lodash-es/_memoizeCapped.js +26 -0
- package/node_modules/lodash-es/_mergeData.js +90 -0
- package/node_modules/lodash-es/_metaMap.js +6 -0
- package/node_modules/lodash-es/_nativeCreate.js +6 -0
- package/node_modules/lodash-es/_nativeKeys.js +6 -0
- package/node_modules/lodash-es/_nativeKeysIn.js +20 -0
- package/node_modules/lodash-es/_nodeUtil.js +30 -0
- package/node_modules/lodash-es/_objectToString.js +22 -0
- package/node_modules/lodash-es/_overArg.js +15 -0
- package/node_modules/lodash-es/_overRest.js +36 -0
- package/node_modules/lodash-es/_parent.js +16 -0
- package/node_modules/lodash-es/_reEscape.js +4 -0
- package/node_modules/lodash-es/_reEvaluate.js +4 -0
- package/node_modules/lodash-es/_reInterpolate.js +4 -0
- package/node_modules/lodash-es/_realNames.js +4 -0
- package/node_modules/lodash-es/_reorder.js +29 -0
- package/node_modules/lodash-es/_replaceHolders.js +29 -0
- package/node_modules/lodash-es/_root.js +9 -0
- package/node_modules/lodash-es/_safeGet.js +21 -0
- package/node_modules/lodash-es/_setCacheAdd.js +19 -0
- package/node_modules/lodash-es/_setCacheHas.js +14 -0
- package/node_modules/lodash-es/_setData.js +20 -0
- package/node_modules/lodash-es/_setToArray.js +18 -0
- package/node_modules/lodash-es/_setToPairs.js +18 -0
- package/node_modules/lodash-es/_setToString.js +14 -0
- package/node_modules/lodash-es/_setWrapToString.js +21 -0
- package/node_modules/lodash-es/_shortOut.js +37 -0
- package/node_modules/lodash-es/_shuffleSelf.js +28 -0
- package/node_modules/lodash-es/_stackClear.js +15 -0
- package/node_modules/lodash-es/_stackDelete.js +18 -0
- package/node_modules/lodash-es/_stackGet.js +14 -0
- package/node_modules/lodash-es/_stackHas.js +14 -0
- package/node_modules/lodash-es/_stackSet.js +34 -0
- package/node_modules/lodash-es/_strictIndexOf.js +23 -0
- package/node_modules/lodash-es/_strictLastIndexOf.js +21 -0
- package/node_modules/lodash-es/_stringSize.js +18 -0
- package/node_modules/lodash-es/_stringToArray.js +18 -0
- package/node_modules/lodash-es/_stringToPath.js +27 -0
- package/node_modules/lodash-es/_toKey.js +21 -0
- package/node_modules/lodash-es/_toSource.js +26 -0
- package/node_modules/lodash-es/_trimmedEndIndex.js +19 -0
- package/node_modules/lodash-es/_unescapeHtmlChar.js +21 -0
- package/node_modules/lodash-es/_unicodeSize.js +44 -0
- package/node_modules/lodash-es/_unicodeToArray.js +40 -0
- package/node_modules/lodash-es/_unicodeWords.js +69 -0
- package/node_modules/lodash-es/_updateWrapDetails.js +46 -0
- package/node_modules/lodash-es/_wrapperClone.js +23 -0
- package/node_modules/lodash-es/add.js +22 -0
- package/node_modules/lodash-es/after.js +42 -0
- package/node_modules/lodash-es/array.default.js +81 -0
- package/node_modules/lodash-es/array.js +66 -0
- package/node_modules/lodash-es/ary.js +29 -0
- package/node_modules/lodash-es/assign.js +58 -0
- package/node_modules/lodash-es/assignIn.js +40 -0
- package/node_modules/lodash-es/assignInWith.js +38 -0
- package/node_modules/lodash-es/assignWith.js +37 -0
- package/node_modules/lodash-es/at.js +23 -0
- package/node_modules/lodash-es/attempt.js +35 -0
- package/node_modules/lodash-es/before.js +40 -0
- package/node_modules/lodash-es/bind.js +57 -0
- package/node_modules/lodash-es/bindAll.js +41 -0
- package/node_modules/lodash-es/bindKey.js +68 -0
- package/node_modules/lodash-es/camelCase.js +29 -0
- package/node_modules/lodash-es/capitalize.js +23 -0
- package/node_modules/lodash-es/castArray.js +44 -0
- package/node_modules/lodash-es/ceil.js +26 -0
- package/node_modules/lodash-es/chain.js +38 -0
- package/node_modules/lodash-es/chunk.js +50 -0
- package/node_modules/lodash-es/clamp.js +39 -0
- package/node_modules/lodash-es/clone.js +36 -0
- package/node_modules/lodash-es/cloneDeep.js +29 -0
- package/node_modules/lodash-es/cloneDeepWith.js +40 -0
- package/node_modules/lodash-es/cloneWith.js +42 -0
- package/node_modules/lodash-es/collection.default.js +37 -0
- package/node_modules/lodash-es/collection.js +29 -0
- package/node_modules/lodash-es/commit.js +33 -0
- package/node_modules/lodash-es/compact.js +31 -0
- package/node_modules/lodash-es/concat.js +43 -0
- package/node_modules/lodash-es/cond.js +60 -0
- package/node_modules/lodash-es/conforms.js +35 -0
- package/node_modules/lodash-es/conformsTo.js +32 -0
- package/node_modules/lodash-es/constant.js +26 -0
- package/node_modules/lodash-es/countBy.js +40 -0
- package/node_modules/lodash-es/create.js +43 -0
- package/node_modules/lodash-es/curry.js +57 -0
- package/node_modules/lodash-es/curryRight.js +54 -0
- package/node_modules/lodash-es/date.default.js +5 -0
- package/node_modules/lodash-es/date.js +2 -0
- package/node_modules/lodash-es/debounce.js +191 -0
- package/node_modules/lodash-es/deburr.js +45 -0
- package/node_modules/lodash-es/defaultTo.js +25 -0
- package/node_modules/lodash-es/defaults.js +64 -0
- package/node_modules/lodash-es/defaultsDeep.js +30 -0
- package/node_modules/lodash-es/defer.js +26 -0
- package/node_modules/lodash-es/delay.js +28 -0
- package/node_modules/lodash-es/difference.js +33 -0
- package/node_modules/lodash-es/differenceBy.js +44 -0
- package/node_modules/lodash-es/differenceWith.js +40 -0
- package/node_modules/lodash-es/divide.js +22 -0
- package/node_modules/lodash-es/drop.js +38 -0
- package/node_modules/lodash-es/dropRight.js +39 -0
- package/node_modules/lodash-es/dropRightWhile.js +45 -0
- package/node_modules/lodash-es/dropWhile.js +45 -0
- package/node_modules/lodash-es/each.js +1 -0
- package/node_modules/lodash-es/eachRight.js +1 -0
- package/node_modules/lodash-es/endsWith.js +43 -0
- package/node_modules/lodash-es/entries.js +1 -0
- package/node_modules/lodash-es/entriesIn.js +1 -0
- package/node_modules/lodash-es/eq.js +37 -0
- package/node_modules/lodash-es/escape.js +43 -0
- package/node_modules/lodash-es/escapeRegExp.js +32 -0
- package/node_modules/lodash-es/every.js +56 -0
- package/node_modules/lodash-es/extend.js +1 -0
- package/node_modules/lodash-es/extendWith.js +1 -0
- package/node_modules/lodash-es/fill.js +45 -0
- package/node_modules/lodash-es/filter.js +52 -0
- package/node_modules/lodash-es/find.js +42 -0
- package/node_modules/lodash-es/findIndex.js +55 -0
- package/node_modules/lodash-es/findKey.js +44 -0
- package/node_modules/lodash-es/findLast.js +25 -0
- package/node_modules/lodash-es/findLastIndex.js +59 -0
- package/node_modules/lodash-es/findLastKey.js +44 -0
- package/node_modules/lodash-es/first.js +1 -0
- package/node_modules/lodash-es/flatMap.js +29 -0
- package/node_modules/lodash-es/flatMapDeep.js +31 -0
- package/node_modules/lodash-es/flatMapDepth.js +31 -0
- package/node_modules/lodash-es/flatten.js +22 -0
- package/node_modules/lodash-es/flattenDeep.js +25 -0
- package/node_modules/lodash-es/flattenDepth.js +33 -0
- package/node_modules/lodash-es/flip.js +28 -0
- package/node_modules/lodash-es/floor.js +26 -0
- package/node_modules/lodash-es/flow.js +27 -0
- package/node_modules/lodash-es/flowRight.js +26 -0
- package/node_modules/lodash-es/forEach.js +41 -0
- package/node_modules/lodash-es/forEachRight.js +31 -0
- package/node_modules/lodash-es/forIn.js +39 -0
- package/node_modules/lodash-es/forInRight.js +37 -0
- package/node_modules/lodash-es/forOwn.js +36 -0
- package/node_modules/lodash-es/forOwnRight.js +34 -0
- package/node_modules/lodash-es/fromPairs.js +30 -0
- package/node_modules/lodash-es/function.default.js +31 -0
- package/node_modules/lodash-es/function.js +24 -0
- package/node_modules/lodash-es/functions.js +31 -0
- package/node_modules/lodash-es/functionsIn.js +31 -0
- package/node_modules/lodash-es/get.js +33 -0
- package/node_modules/lodash-es/groupBy.js +41 -0
- package/node_modules/lodash-es/gt.js +29 -0
- package/node_modules/lodash-es/gte.js +30 -0
- package/node_modules/lodash-es/has.js +35 -0
- package/node_modules/lodash-es/hasIn.js +34 -0
- package/node_modules/lodash-es/head.js +23 -0
- package/node_modules/lodash-es/identity.js +21 -0
- package/node_modules/lodash-es/inRange.js +55 -0
- package/node_modules/lodash-es/includes.js +53 -0
- package/node_modules/lodash-es/indexOf.js +42 -0
- package/node_modules/lodash-es/initial.js +22 -0
- package/node_modules/lodash-es/intersection.js +30 -0
- package/node_modules/lodash-es/intersectionBy.js +45 -0
- package/node_modules/lodash-es/intersectionWith.js +41 -0
- package/node_modules/lodash-es/invert.js +42 -0
- package/node_modules/lodash-es/invertBy.js +56 -0
- package/node_modules/lodash-es/invoke.js +24 -0
- package/node_modules/lodash-es/invokeMap.js +41 -0
- package/node_modules/lodash-es/isArguments.js +36 -0
- package/node_modules/lodash-es/isArray.js +26 -0
- package/node_modules/lodash-es/isArrayBuffer.js +27 -0
- package/node_modules/lodash-es/isArrayLike.js +33 -0
- package/node_modules/lodash-es/isArrayLikeObject.js +33 -0
- package/node_modules/lodash-es/isBoolean.js +29 -0
- package/node_modules/lodash-es/isBuffer.js +38 -0
- package/node_modules/lodash-es/isDate.js +27 -0
- package/node_modules/lodash-es/isElement.js +25 -0
- package/node_modules/lodash-es/isEmpty.js +77 -0
- package/node_modules/lodash-es/isEqual.js +35 -0
- package/node_modules/lodash-es/isEqualWith.js +41 -0
- package/node_modules/lodash-es/isError.js +36 -0
- package/node_modules/lodash-es/isFinite.js +36 -0
- package/node_modules/lodash-es/isFunction.js +37 -0
- package/node_modules/lodash-es/isInteger.js +33 -0
- package/node_modules/lodash-es/isLength.js +35 -0
- package/node_modules/lodash-es/isMap.js +27 -0
- package/node_modules/lodash-es/isMatch.js +36 -0
- package/node_modules/lodash-es/isMatchWith.js +41 -0
- package/node_modules/lodash-es/isNaN.js +38 -0
- package/node_modules/lodash-es/isNative.js +40 -0
- package/node_modules/lodash-es/isNil.js +25 -0
- package/node_modules/lodash-es/isNull.js +22 -0
- package/node_modules/lodash-es/isNumber.js +38 -0
- package/node_modules/lodash-es/isObject.js +31 -0
- package/node_modules/lodash-es/isObjectLike.js +29 -0
- package/node_modules/lodash-es/isPlainObject.js +62 -0
- package/node_modules/lodash-es/isRegExp.js +27 -0
- package/node_modules/lodash-es/isSafeInteger.js +37 -0
- package/node_modules/lodash-es/isSet.js +27 -0
- package/node_modules/lodash-es/isString.js +30 -0
- package/node_modules/lodash-es/isSymbol.js +29 -0
- package/node_modules/lodash-es/isTypedArray.js +27 -0
- package/node_modules/lodash-es/isUndefined.js +22 -0
- package/node_modules/lodash-es/isWeakMap.js +28 -0
- package/node_modules/lodash-es/isWeakSet.js +28 -0
- package/node_modules/lodash-es/iteratee.js +53 -0
- package/node_modules/lodash-es/join.js +26 -0
- package/node_modules/lodash-es/kebabCase.js +28 -0
- package/node_modules/lodash-es/keyBy.js +36 -0
- package/node_modules/lodash-es/keys.js +37 -0
- package/node_modules/lodash-es/keysIn.js +32 -0
- package/node_modules/lodash-es/lang.default.js +71 -0
- package/node_modules/lodash-es/lang.js +57 -0
- package/node_modules/lodash-es/last.js +20 -0
- package/node_modules/lodash-es/lastIndexOf.js +46 -0
- package/node_modules/lodash-es/lodash.default.js +643 -0
- package/node_modules/lodash-es/lodash.js +331 -0
- package/node_modules/lodash-es/lowerCase.js +27 -0
- package/node_modules/lodash-es/lowerFirst.js +22 -0
- package/node_modules/lodash-es/lt.js +29 -0
- package/node_modules/lodash-es/lte.js +30 -0
- package/node_modules/lodash-es/map.js +53 -0
- package/node_modules/lodash-es/mapKeys.js +36 -0
- package/node_modules/lodash-es/mapValues.js +43 -0
- package/node_modules/lodash-es/matches.js +46 -0
- package/node_modules/lodash-es/matchesProperty.js +44 -0
- package/node_modules/lodash-es/math.default.js +21 -0
- package/node_modules/lodash-es/math.js +16 -0
- package/node_modules/lodash-es/max.js +29 -0
- package/node_modules/lodash-es/maxBy.js +34 -0
- package/node_modules/lodash-es/mean.js +22 -0
- package/node_modules/lodash-es/meanBy.js +31 -0
- package/node_modules/lodash-es/memoize.js +73 -0
- package/node_modules/lodash-es/merge.js +39 -0
- package/node_modules/lodash-es/mergeWith.js +39 -0
- package/node_modules/lodash-es/method.js +34 -0
- package/node_modules/lodash-es/methodOf.js +33 -0
- package/node_modules/lodash-es/min.js +29 -0
- package/node_modules/lodash-es/minBy.js +34 -0
- package/node_modules/lodash-es/mixin.js +74 -0
- package/node_modules/lodash-es/multiply.js +22 -0
- package/node_modules/lodash-es/negate.js +40 -0
- package/node_modules/lodash-es/next.js +35 -0
- package/node_modules/lodash-es/noop.js +17 -0
- package/node_modules/lodash-es/now.js +23 -0
- package/node_modules/lodash-es/nth.js +29 -0
- package/node_modules/lodash-es/nthArg.js +32 -0
- package/node_modules/lodash-es/number.default.js +7 -0
- package/node_modules/lodash-es/number.js +4 -0
- package/node_modules/lodash-es/object.default.js +60 -0
- package/node_modules/lodash-es/object.js +48 -0
- package/node_modules/lodash-es/omit.js +57 -0
- package/node_modules/lodash-es/omitBy.js +29 -0
- package/node_modules/lodash-es/once.js +25 -0
- package/node_modules/lodash-es/orderBy.js +47 -0
- package/node_modules/lodash-es/over.js +24 -0
- package/node_modules/lodash-es/overArgs.js +61 -0
- package/node_modules/lodash-es/overEvery.js +34 -0
- package/node_modules/lodash-es/overSome.js +37 -0
- package/node_modules/lodash-es/package.json +23 -0
- package/node_modules/lodash-es/pad.js +49 -0
- package/node_modules/lodash-es/padEnd.js +39 -0
- package/node_modules/lodash-es/padStart.js +39 -0
- package/node_modules/lodash-es/parseInt.js +43 -0
- package/node_modules/lodash-es/partial.js +50 -0
- package/node_modules/lodash-es/partialRight.js +49 -0
- package/node_modules/lodash-es/partition.js +43 -0
- package/node_modules/lodash-es/pick.js +25 -0
- package/node_modules/lodash-es/pickBy.js +37 -0
- package/node_modules/lodash-es/plant.js +48 -0
- package/node_modules/lodash-es/property.js +32 -0
- package/node_modules/lodash-es/propertyOf.js +30 -0
- package/node_modules/lodash-es/pull.js +29 -0
- package/node_modules/lodash-es/pullAll.js +29 -0
- package/node_modules/lodash-es/pullAllBy.js +33 -0
- package/node_modules/lodash-es/pullAllWith.js +32 -0
- package/node_modules/lodash-es/pullAt.js +43 -0
- package/node_modules/lodash-es/random.js +91 -0
- package/node_modules/lodash-es/range.js +46 -0
- package/node_modules/lodash-es/rangeRight.js +41 -0
- package/node_modules/lodash-es/rearg.js +33 -0
- package/node_modules/lodash-es/reduce.js +51 -0
- package/node_modules/lodash-es/reduceRight.js +36 -0
- package/node_modules/lodash-es/reject.js +46 -0
- package/node_modules/lodash-es/remove.js +53 -0
- package/node_modules/lodash-es/repeat.js +37 -0
- package/node_modules/lodash-es/replace.js +29 -0
- package/node_modules/lodash-es/rest.js +40 -0
- package/node_modules/lodash-es/result.js +56 -0
- package/node_modules/lodash-es/reverse.js +34 -0
- package/node_modules/lodash-es/round.js +26 -0
- package/node_modules/lodash-es/sample.js +24 -0
- package/node_modules/lodash-es/sampleSize.js +37 -0
- package/node_modules/lodash-es/seq.default.js +20 -0
- package/node_modules/lodash-es/seq.js +15 -0
- package/node_modules/lodash-es/set.js +35 -0
- package/node_modules/lodash-es/setWith.js +32 -0
- package/node_modules/lodash-es/shuffle.js +25 -0
- package/node_modules/lodash-es/size.js +46 -0
- package/node_modules/lodash-es/slice.js +37 -0
- package/node_modules/lodash-es/snakeCase.js +28 -0
- package/node_modules/lodash-es/some.js +51 -0
- package/node_modules/lodash-es/sortBy.js +48 -0
- package/node_modules/lodash-es/sortedIndex.js +24 -0
- package/node_modules/lodash-es/sortedIndexBy.js +33 -0
- package/node_modules/lodash-es/sortedIndexOf.js +31 -0
- package/node_modules/lodash-es/sortedLastIndex.js +25 -0
- package/node_modules/lodash-es/sortedLastIndexBy.js +33 -0
- package/node_modules/lodash-es/sortedLastIndexOf.js +31 -0
- package/node_modules/lodash-es/sortedUniq.js +24 -0
- package/node_modules/lodash-es/sortedUniqBy.js +26 -0
- package/node_modules/lodash-es/split.js +52 -0
- package/node_modules/lodash-es/spread.js +63 -0
- package/node_modules/lodash-es/startCase.js +29 -0
- package/node_modules/lodash-es/startsWith.js +39 -0
- package/node_modules/lodash-es/string.default.js +41 -0
- package/node_modules/lodash-es/string.js +32 -0
- package/node_modules/lodash-es/stubArray.js +23 -0
- package/node_modules/lodash-es/stubFalse.js +18 -0
- package/node_modules/lodash-es/stubObject.js +23 -0
- package/node_modules/lodash-es/stubString.js +18 -0
- package/node_modules/lodash-es/stubTrue.js +18 -0
- package/node_modules/lodash-es/subtract.js +22 -0
- package/node_modules/lodash-es/sum.js +24 -0
- package/node_modules/lodash-es/sumBy.js +33 -0
- package/node_modules/lodash-es/tail.js +22 -0
- package/node_modules/lodash-es/take.js +37 -0
- package/node_modules/lodash-es/takeRight.js +39 -0
- package/node_modules/lodash-es/takeRightWhile.js +45 -0
- package/node_modules/lodash-es/takeWhile.js +45 -0
- package/node_modules/lodash-es/tap.js +29 -0
- package/node_modules/lodash-es/template.js +284 -0
- package/node_modules/lodash-es/templateSettings.js +71 -0
- package/node_modules/lodash-es/throttle.js +69 -0
- package/node_modules/lodash-es/thru.js +28 -0
- package/node_modules/lodash-es/times.js +51 -0
- package/node_modules/lodash-es/toArray.js +58 -0
- package/node_modules/lodash-es/toFinite.js +42 -0
- package/node_modules/lodash-es/toInteger.js +36 -0
- package/node_modules/lodash-es/toIterator.js +23 -0
- package/node_modules/lodash-es/toJSON.js +1 -0
- package/node_modules/lodash-es/toLength.js +38 -0
- package/node_modules/lodash-es/toLower.js +28 -0
- package/node_modules/lodash-es/toNumber.js +64 -0
- package/node_modules/lodash-es/toPairs.js +30 -0
- package/node_modules/lodash-es/toPairsIn.js +30 -0
- package/node_modules/lodash-es/toPath.js +33 -0
- package/node_modules/lodash-es/toPlainObject.js +32 -0
- package/node_modules/lodash-es/toSafeInteger.js +37 -0
- package/node_modules/lodash-es/toString.js +28 -0
- package/node_modules/lodash-es/toUpper.js +28 -0
- package/node_modules/lodash-es/transform.js +65 -0
- package/node_modules/lodash-es/trim.js +47 -0
- package/node_modules/lodash-es/trimEnd.js +41 -0
- package/node_modules/lodash-es/trimStart.js +43 -0
- package/node_modules/lodash-es/truncate.js +111 -0
- package/node_modules/lodash-es/unary.js +22 -0
- package/node_modules/lodash-es/unescape.js +34 -0
- package/node_modules/lodash-es/union.js +26 -0
- package/node_modules/lodash-es/unionBy.js +39 -0
- package/node_modules/lodash-es/unionWith.js +34 -0
- package/node_modules/lodash-es/uniq.js +25 -0
- package/node_modules/lodash-es/uniqBy.js +31 -0
- package/node_modules/lodash-es/uniqWith.js +28 -0
- package/node_modules/lodash-es/uniqueId.js +28 -0
- package/node_modules/lodash-es/unset.js +34 -0
- package/node_modules/lodash-es/unzip.js +45 -0
- package/node_modules/lodash-es/unzipWith.js +39 -0
- package/node_modules/lodash-es/update.js +35 -0
- package/node_modules/lodash-es/updateWith.js +33 -0
- package/node_modules/lodash-es/upperCase.js +27 -0
- package/node_modules/lodash-es/upperFirst.js +22 -0
- package/node_modules/lodash-es/util.default.js +42 -0
- package/node_modules/lodash-es/util.js +33 -0
- package/node_modules/lodash-es/value.js +1 -0
- package/node_modules/lodash-es/valueOf.js +1 -0
- package/node_modules/lodash-es/values.js +34 -0
- package/node_modules/lodash-es/valuesIn.js +32 -0
- package/node_modules/lodash-es/without.js +31 -0
- package/node_modules/lodash-es/words.js +35 -0
- package/node_modules/lodash-es/wrap.js +30 -0
- package/node_modules/lodash-es/wrapperAt.js +48 -0
- package/node_modules/lodash-es/wrapperChain.js +34 -0
- package/node_modules/lodash-es/wrapperLodash.js +147 -0
- package/node_modules/lodash-es/wrapperReverse.js +44 -0
- package/node_modules/lodash-es/wrapperValue.js +21 -0
- package/node_modules/lodash-es/xor.js +28 -0
- package/node_modules/lodash-es/xorBy.js +39 -0
- package/node_modules/lodash-es/xorWith.js +34 -0
- package/node_modules/lodash-es/zip.js +22 -0
- package/node_modules/lodash-es/zipObject.js +24 -0
- package/node_modules/lodash-es/zipObjectDeep.js +23 -0
- package/node_modules/lodash-es/zipWith.js +32 -0
- package/node_modules/lodash.debounce/LICENSE +47 -0
- package/node_modules/lodash.debounce/README.md +18 -0
- package/node_modules/lodash.debounce/index.js +377 -0
- package/node_modules/lodash.debounce/package.json +17 -0
- package/node_modules/require-from-string/index.js +34 -0
- package/node_modules/require-from-string/license +21 -0
- package/node_modules/require-from-string/package.json +28 -0
- package/node_modules/require-from-string/readme.md +56 -0
- package/node_modules/semver/LICENSE +15 -0
- package/node_modules/semver/README.md +665 -0
- package/node_modules/semver/bin/semver.js +191 -0
- package/node_modules/semver/classes/comparator.js +143 -0
- package/node_modules/semver/classes/index.js +7 -0
- package/node_modules/semver/classes/range.js +557 -0
- package/node_modules/semver/classes/semver.js +333 -0
- package/node_modules/semver/functions/clean.js +8 -0
- package/node_modules/semver/functions/cmp.js +54 -0
- package/node_modules/semver/functions/coerce.js +62 -0
- package/node_modules/semver/functions/compare-build.js +9 -0
- package/node_modules/semver/functions/compare-loose.js +5 -0
- package/node_modules/semver/functions/compare.js +7 -0
- package/node_modules/semver/functions/diff.js +60 -0
- package/node_modules/semver/functions/eq.js +5 -0
- package/node_modules/semver/functions/gt.js +5 -0
- package/node_modules/semver/functions/gte.js +5 -0
- package/node_modules/semver/functions/inc.js +21 -0
- package/node_modules/semver/functions/lt.js +5 -0
- package/node_modules/semver/functions/lte.js +5 -0
- package/node_modules/semver/functions/major.js +5 -0
- package/node_modules/semver/functions/minor.js +5 -0
- package/node_modules/semver/functions/neq.js +5 -0
- package/node_modules/semver/functions/parse.js +18 -0
- package/node_modules/semver/functions/patch.js +5 -0
- package/node_modules/semver/functions/prerelease.js +8 -0
- package/node_modules/semver/functions/rcompare.js +5 -0
- package/node_modules/semver/functions/rsort.js +5 -0
- package/node_modules/semver/functions/satisfies.js +12 -0
- package/node_modules/semver/functions/sort.js +5 -0
- package/node_modules/semver/functions/valid.js +8 -0
- package/node_modules/semver/index.js +91 -0
- package/node_modules/semver/internal/constants.js +37 -0
- package/node_modules/semver/internal/debug.js +11 -0
- package/node_modules/semver/internal/identifiers.js +29 -0
- package/node_modules/semver/internal/lrucache.js +42 -0
- package/node_modules/semver/internal/parse-options.js +17 -0
- package/node_modules/semver/internal/re.js +223 -0
- package/node_modules/semver/package.json +78 -0
- package/node_modules/semver/preload.js +4 -0
- package/node_modules/semver/range.bnf +16 -0
- package/node_modules/semver/ranges/gtr.js +6 -0
- package/node_modules/semver/ranges/intersects.js +9 -0
- package/node_modules/semver/ranges/ltr.js +6 -0
- package/node_modules/semver/ranges/max-satisfying.js +27 -0
- package/node_modules/semver/ranges/min-satisfying.js +26 -0
- package/node_modules/semver/ranges/min-version.js +63 -0
- package/node_modules/semver/ranges/outside.js +82 -0
- package/node_modules/semver/ranges/simplify.js +49 -0
- package/node_modules/semver/ranges/subset.js +249 -0
- package/node_modules/semver/ranges/to-comparators.js +10 -0
- package/node_modules/semver/ranges/valid.js +13 -0
- package/node_modules/signal-exit/LICENSE.txt +16 -0
- package/node_modules/signal-exit/README.md +74 -0
- package/node_modules/signal-exit/dist/cjs/browser.d.ts +12 -0
- package/node_modules/signal-exit/dist/cjs/browser.d.ts.map +1 -0
- package/node_modules/signal-exit/dist/cjs/browser.js +10 -0
- package/node_modules/signal-exit/dist/cjs/browser.js.map +1 -0
- package/node_modules/signal-exit/dist/cjs/index.d.ts +48 -0
- package/node_modules/signal-exit/dist/cjs/index.d.ts.map +1 -0
- package/node_modules/signal-exit/dist/cjs/index.js +279 -0
- package/node_modules/signal-exit/dist/cjs/index.js.map +1 -0
- package/node_modules/signal-exit/dist/cjs/package.json +3 -0
- package/node_modules/signal-exit/dist/cjs/signals.d.ts +29 -0
- package/node_modules/signal-exit/dist/cjs/signals.d.ts.map +1 -0
- package/node_modules/signal-exit/dist/cjs/signals.js +42 -0
- package/node_modules/signal-exit/dist/cjs/signals.js.map +1 -0
- package/node_modules/signal-exit/dist/mjs/browser.d.ts +12 -0
- package/node_modules/signal-exit/dist/mjs/browser.d.ts.map +1 -0
- package/node_modules/signal-exit/dist/mjs/browser.js +4 -0
- package/node_modules/signal-exit/dist/mjs/browser.js.map +1 -0
- package/node_modules/signal-exit/dist/mjs/index.d.ts +48 -0
- package/node_modules/signal-exit/dist/mjs/index.d.ts.map +1 -0
- package/node_modules/signal-exit/dist/mjs/index.js +275 -0
- package/node_modules/signal-exit/dist/mjs/index.js.map +1 -0
- package/node_modules/signal-exit/dist/mjs/package.json +3 -0
- package/node_modules/signal-exit/dist/mjs/signals.d.ts +29 -0
- package/node_modules/signal-exit/dist/mjs/signals.d.ts.map +1 -0
- package/node_modules/signal-exit/dist/mjs/signals.js +39 -0
- package/node_modules/signal-exit/dist/mjs/signals.js.map +1 -0
- package/node_modules/signal-exit/package.json +106 -0
- package/node_modules/slice-ansi/index.d.ts +19 -0
- package/node_modules/slice-ansi/index.js +169 -0
- package/node_modules/slice-ansi/license +10 -0
- package/node_modules/slice-ansi/package.json +58 -0
- package/node_modules/slice-ansi/readme.md +54 -0
- package/node_modules/stack-utils/LICENSE.md +21 -0
- package/node_modules/stack-utils/index.js +344 -0
- package/node_modules/stack-utils/package.json +39 -0
- package/node_modules/stack-utils/readme.md +143 -0
- package/node_modules/string-width/index.d.ts +39 -0
- package/node_modules/string-width/index.js +82 -0
- package/node_modules/string-width/license +9 -0
- package/node_modules/string-width/package.json +64 -0
- package/node_modules/string-width/readme.md +66 -0
- package/node_modules/strip-ansi/index.d.ts +15 -0
- package/node_modules/strip-ansi/index.js +19 -0
- package/node_modules/strip-ansi/license +9 -0
- package/node_modules/strip-ansi/package.json +59 -0
- package/node_modules/strip-ansi/readme.md +37 -0
- package/node_modules/supports-hyperlinks/browser.js +10 -0
- package/node_modules/supports-hyperlinks/index.d.ts +25 -0
- package/node_modules/supports-hyperlinks/index.js +157 -0
- package/node_modules/supports-hyperlinks/license +10 -0
- package/node_modules/supports-hyperlinks/node_modules/has-flag/index.d.ts +39 -0
- package/node_modules/supports-hyperlinks/node_modules/has-flag/index.js +8 -0
- package/node_modules/supports-hyperlinks/node_modules/has-flag/license +9 -0
- package/node_modules/supports-hyperlinks/node_modules/has-flag/package.json +49 -0
- package/node_modules/supports-hyperlinks/node_modules/has-flag/readme.md +74 -0
- package/node_modules/supports-hyperlinks/node_modules/supports-color/browser.d.ts +1 -0
- package/node_modules/supports-hyperlinks/node_modules/supports-color/browser.js +35 -0
- package/node_modules/supports-hyperlinks/node_modules/supports-color/index.d.ts +55 -0
- package/node_modules/supports-hyperlinks/node_modules/supports-color/index.js +202 -0
- package/node_modules/supports-hyperlinks/node_modules/supports-color/license +9 -0
- package/node_modules/supports-hyperlinks/node_modules/supports-color/package.json +64 -0
- package/node_modules/supports-hyperlinks/node_modules/supports-color/readme.md +75 -0
- package/node_modules/supports-hyperlinks/package.json +47 -0
- package/node_modules/supports-hyperlinks/readme.md +39 -0
- package/node_modules/tagged-tag/index.d.ts +3 -0
- package/node_modules/tagged-tag/license +9 -0
- package/node_modules/tagged-tag/package.json +36 -0
- package/node_modules/tagged-tag/readme.md +5 -0
- package/node_modules/type-fest/index.d.ts +221 -0
- package/node_modules/type-fest/license-cc0 +121 -0
- package/node_modules/type-fest/license-mit +9 -0
- package/node_modules/type-fest/package.json +75 -0
- package/node_modules/type-fest/readme.md +1077 -0
- package/node_modules/type-fest/source/absolute.d.ts +52 -0
- package/node_modules/type-fest/source/all-extend.d.ts +119 -0
- package/node_modules/type-fest/source/all-union-fields.d.ts +91 -0
- package/node_modules/type-fest/source/and-all.d.ts +76 -0
- package/node_modules/type-fest/source/and.d.ts +82 -0
- package/node_modules/type-fest/source/array-element.d.ts +46 -0
- package/node_modules/type-fest/source/array-indices.d.ts +25 -0
- package/node_modules/type-fest/source/array-length.d.ts +36 -0
- package/node_modules/type-fest/source/array-reverse.d.ts +84 -0
- package/node_modules/type-fest/source/array-slice.d.ts +132 -0
- package/node_modules/type-fest/source/array-splice.d.ts +104 -0
- package/node_modules/type-fest/source/array-tail.d.ts +70 -0
- package/node_modules/type-fest/source/array-values.d.ts +24 -0
- package/node_modules/type-fest/source/arrayable.d.ts +31 -0
- package/node_modules/type-fest/source/async-return-type.d.ts +28 -0
- package/node_modules/type-fest/source/asyncify.d.ts +25 -0
- package/node_modules/type-fest/source/basic.d.ts +38 -0
- package/node_modules/type-fest/source/camel-case.d.ts +125 -0
- package/node_modules/type-fest/source/camel-cased-properties-deep.d.ts +106 -0
- package/node_modules/type-fest/source/camel-cased-properties.d.ts +49 -0
- package/node_modules/type-fest/source/characters.d.ts +67 -0
- package/node_modules/type-fest/source/conditional-except.d.ts +47 -0
- package/node_modules/type-fest/source/conditional-keys.d.ts +63 -0
- package/node_modules/type-fest/source/conditional-pick-deep.d.ts +122 -0
- package/node_modules/type-fest/source/conditional-pick.d.ts +48 -0
- package/node_modules/type-fest/source/conditional-simplify-deep.d.ts +73 -0
- package/node_modules/type-fest/source/conditional-simplify.d.ts +50 -0
- package/node_modules/type-fest/source/delimiter-case.d.ts +78 -0
- package/node_modules/type-fest/source/delimiter-cased-properties-deep.d.ts +115 -0
- package/node_modules/type-fest/source/delimiter-cased-properties.d.ts +52 -0
- package/node_modules/type-fest/source/distributed-omit.d.ts +96 -0
- package/node_modules/type-fest/source/distributed-pick.d.ts +92 -0
- package/node_modules/type-fest/source/empty-object.d.ts +51 -0
- package/node_modules/type-fest/source/entries.d.ts +64 -0
- package/node_modules/type-fest/source/entry.d.ts +67 -0
- package/node_modules/type-fest/source/exact.d.ts +73 -0
- package/node_modules/type-fest/source/except.d.ts +112 -0
- package/node_modules/type-fest/source/exclude-exactly.d.ts +57 -0
- package/node_modules/type-fest/source/exclude-rest-element.d.ts +40 -0
- package/node_modules/type-fest/source/exclude-strict.d.ts +51 -0
- package/node_modules/type-fest/source/exclusify-union.d.ts +147 -0
- package/node_modules/type-fest/source/extends-strict.d.ts +44 -0
- package/node_modules/type-fest/source/extract-rest-element.d.ts +30 -0
- package/node_modules/type-fest/source/extract-strict.d.ts +51 -0
- package/node_modules/type-fest/source/find-global-type.d.ts +68 -0
- package/node_modules/type-fest/source/fixed-length-array.d.ts +97 -0
- package/node_modules/type-fest/source/get.d.ts +227 -0
- package/node_modules/type-fest/source/global-this.d.ts +24 -0
- package/node_modules/type-fest/source/globals/index.d.ts +3 -0
- package/node_modules/type-fest/source/globals/observable-like.d.ts +78 -0
- package/node_modules/type-fest/source/greater-than-or-equal.d.ts +63 -0
- package/node_modules/type-fest/source/greater-than.d.ts +92 -0
- package/node_modules/type-fest/source/has-optional-keys.d.ts +23 -0
- package/node_modules/type-fest/source/has-readonly-keys.d.ts +23 -0
- package/node_modules/type-fest/source/has-required-keys.d.ts +61 -0
- package/node_modules/type-fest/source/has-writable-keys.d.ts +23 -0
- package/node_modules/type-fest/source/if-any.d.ts +28 -0
- package/node_modules/type-fest/source/if-empty-object.d.ts +30 -0
- package/node_modules/type-fest/source/if-never.d.ts +28 -0
- package/node_modules/type-fest/source/if-null.d.ts +28 -0
- package/node_modules/type-fest/source/if-unknown.d.ts +28 -0
- package/node_modules/type-fest/source/if.d.ts +102 -0
- package/node_modules/type-fest/source/includes.d.ts +24 -0
- package/node_modules/type-fest/source/int-closed-range.d.ts +45 -0
- package/node_modules/type-fest/source/int-range.d.ts +67 -0
- package/node_modules/type-fest/source/internal/array.d.ts +144 -0
- package/node_modules/type-fest/source/internal/characters.d.ts +65 -0
- package/node_modules/type-fest/source/internal/enforce-optional.d.ts +49 -0
- package/node_modules/type-fest/source/internal/index.d.ts +11 -0
- package/node_modules/type-fest/source/internal/keys.d.ts +100 -0
- package/node_modules/type-fest/source/internal/numeric.d.ts +141 -0
- package/node_modules/type-fest/source/internal/object.d.ts +292 -0
- package/node_modules/type-fest/source/internal/string.d.ts +202 -0
- package/node_modules/type-fest/source/internal/tuple.d.ts +79 -0
- package/node_modules/type-fest/source/internal/type.d.ts +165 -0
- package/node_modules/type-fest/source/invariant-of.d.ts +85 -0
- package/node_modules/type-fest/source/is-any.d.ts +31 -0
- package/node_modules/type-fest/source/is-equal.d.ts +41 -0
- package/node_modules/type-fest/source/is-float.d.ts +43 -0
- package/node_modules/type-fest/source/is-integer.d.ts +60 -0
- package/node_modules/type-fest/source/is-literal.d.ts +315 -0
- package/node_modules/type-fest/source/is-lowercase.d.ts +38 -0
- package/node_modules/type-fest/source/is-never.d.ts +56 -0
- package/node_modules/type-fest/source/is-null.d.ts +22 -0
- package/node_modules/type-fest/source/is-nullable.d.ts +30 -0
- package/node_modules/type-fest/source/is-optional-key-of.d.ts +51 -0
- package/node_modules/type-fest/source/is-optional.d.ts +28 -0
- package/node_modules/type-fest/source/is-readonly-key-of.d.ts +55 -0
- package/node_modules/type-fest/source/is-required-key-of.d.ts +51 -0
- package/node_modules/type-fest/source/is-tuple.d.ts +92 -0
- package/node_modules/type-fest/source/is-undefined.d.ts +22 -0
- package/node_modules/type-fest/source/is-union.d.ts +40 -0
- package/node_modules/type-fest/source/is-unknown.d.ts +43 -0
- package/node_modules/type-fest/source/is-uppercase.d.ts +38 -0
- package/node_modules/type-fest/source/is-writable-key-of.d.ts +51 -0
- package/node_modules/type-fest/source/iterable-element.d.ts +66 -0
- package/node_modules/type-fest/source/join.d.ts +79 -0
- package/node_modules/type-fest/source/json-value.d.ts +33 -0
- package/node_modules/type-fest/source/jsonifiable.d.ts +37 -0
- package/node_modules/type-fest/source/jsonify.d.ts +127 -0
- package/node_modules/type-fest/source/kebab-case.d.ts +47 -0
- package/node_modules/type-fest/source/kebab-cased-properties-deep.d.ts +72 -0
- package/node_modules/type-fest/source/kebab-cased-properties.d.ts +46 -0
- package/node_modules/type-fest/source/key-as-string.d.ts +27 -0
- package/node_modules/type-fest/source/keys-of-union.d.ts +44 -0
- package/node_modules/type-fest/source/last-array-element.d.ts +36 -0
- package/node_modules/type-fest/source/less-than-or-equal.d.ts +60 -0
- package/node_modules/type-fest/source/less-than.d.ts +60 -0
- package/node_modules/type-fest/source/literal-to-primitive-deep.d.ts +71 -0
- package/node_modules/type-fest/source/literal-to-primitive.d.ts +38 -0
- package/node_modules/type-fest/source/literal-union.d.ts +39 -0
- package/node_modules/type-fest/source/merge-deep.d.ts +495 -0
- package/node_modules/type-fest/source/merge-exclusive.d.ts +45 -0
- package/node_modules/type-fest/source/merge.d.ts +87 -0
- package/node_modules/type-fest/source/multidimensional-array.d.ts +38 -0
- package/node_modules/type-fest/source/multidimensional-readonly-array.d.ts +38 -0
- package/node_modules/type-fest/source/non-empty-object.d.ts +38 -0
- package/node_modules/type-fest/source/non-empty-string.d.ts +32 -0
- package/node_modules/type-fest/source/non-empty-tuple.d.ts +24 -0
- package/node_modules/type-fest/source/non-nullable-deep.d.ts +102 -0
- package/node_modules/type-fest/source/numeric.d.ts +226 -0
- package/node_modules/type-fest/source/object-merge.d.ts +194 -0
- package/node_modules/type-fest/source/omit-deep.d.ts +153 -0
- package/node_modules/type-fest/source/omit-index-signature.d.ts +98 -0
- package/node_modules/type-fest/source/opaque.d.ts +3 -0
- package/node_modules/type-fest/source/optional-keys-of.d.ts +46 -0
- package/node_modules/type-fest/source/optional.d.ts +31 -0
- package/node_modules/type-fest/source/or-all.d.ts +73 -0
- package/node_modules/type-fest/source/or.d.ts +82 -0
- package/node_modules/type-fest/source/override-properties.d.ts +43 -0
- package/node_modules/type-fest/source/package-json.d.ts +710 -0
- package/node_modules/type-fest/source/partial-deep.d.ts +157 -0
- package/node_modules/type-fest/source/partial-on-undefined-deep.d.ts +81 -0
- package/node_modules/type-fest/source/pascal-case.d.ts +52 -0
- package/node_modules/type-fest/source/pascal-cased-properties-deep.d.ts +79 -0
- package/node_modules/type-fest/source/pascal-cased-properties.d.ts +46 -0
- package/node_modules/type-fest/source/paths.d.ts +241 -0
- package/node_modules/type-fest/source/pick-deep.d.ts +139 -0
- package/node_modules/type-fest/source/pick-index-signature.d.ts +52 -0
- package/node_modules/type-fest/source/primitive.d.ts +15 -0
- package/node_modules/type-fest/source/promisable.d.ts +27 -0
- package/node_modules/type-fest/source/readonly-deep.d.ts +118 -0
- package/node_modules/type-fest/source/readonly-keys-of.d.ts +38 -0
- package/node_modules/type-fest/source/readonly-tuple.d.ts +34 -0
- package/node_modules/type-fest/source/remove-prefix.d.ts +132 -0
- package/node_modules/type-fest/source/replace.d.ts +87 -0
- package/node_modules/type-fest/source/require-all-or-none.d.ts +54 -0
- package/node_modules/type-fest/source/require-at-least-one.d.ts +48 -0
- package/node_modules/type-fest/source/require-exactly-one.d.ts +48 -0
- package/node_modules/type-fest/source/require-one-or-none.d.ts +49 -0
- package/node_modules/type-fest/source/required-deep.d.ts +78 -0
- package/node_modules/type-fest/source/required-keys-of.d.ts +38 -0
- package/node_modules/type-fest/source/schema.d.ts +119 -0
- package/node_modules/type-fest/source/screaming-snake-case.d.ts +31 -0
- package/node_modules/type-fest/source/set-field-type.d.ts +67 -0
- package/node_modules/type-fest/source/set-non-nullable-deep.d.ts +88 -0
- package/node_modules/type-fest/source/set-non-nullable.d.ts +34 -0
- package/node_modules/type-fest/source/set-optional.d.ts +42 -0
- package/node_modules/type-fest/source/set-parameter-type.d.ts +125 -0
- package/node_modules/type-fest/source/set-readonly.d.ts +40 -0
- package/node_modules/type-fest/source/set-required-deep.d.ts +64 -0
- package/node_modules/type-fest/source/set-required.d.ts +75 -0
- package/node_modules/type-fest/source/set-return-type.d.ts +31 -0
- package/node_modules/type-fest/source/shared-union-fields-deep.d.ts +180 -0
- package/node_modules/type-fest/source/shared-union-fields.d.ts +79 -0
- package/node_modules/type-fest/source/simplify-deep.d.ts +117 -0
- package/node_modules/type-fest/source/simplify.d.ts +61 -0
- package/node_modules/type-fest/source/single-key-object.d.ts +28 -0
- package/node_modules/type-fest/source/snake-case.d.ts +48 -0
- package/node_modules/type-fest/source/snake-cased-properties-deep.d.ts +72 -0
- package/node_modules/type-fest/source/snake-cased-properties.d.ts +46 -0
- package/node_modules/type-fest/source/some-extend.d.ts +113 -0
- package/node_modules/type-fest/source/split-on-rest-element.d.ts +106 -0
- package/node_modules/type-fest/source/split.d.ts +90 -0
- package/node_modules/type-fest/source/spread.d.ts +78 -0
- package/node_modules/type-fest/source/string-repeat.d.ts +49 -0
- package/node_modules/type-fest/source/string-slice.d.ts +39 -0
- package/node_modules/type-fest/source/stringified.d.ts +25 -0
- package/node_modules/type-fest/source/structured-cloneable.d.ts +89 -0
- package/node_modules/type-fest/source/subtract.d.ts +87 -0
- package/node_modules/type-fest/source/sum.d.ts +82 -0
- package/node_modules/type-fest/source/tagged-union.d.ts +53 -0
- package/node_modules/type-fest/source/tagged.d.ts +261 -0
- package/node_modules/type-fest/source/trim.d.ts +29 -0
- package/node_modules/type-fest/source/tsconfig-json.d.ts +1356 -0
- package/node_modules/type-fest/source/tuple-of.d.ts +80 -0
- package/node_modules/type-fest/source/tuple-to-object.d.ts +47 -0
- package/node_modules/type-fest/source/tuple-to-union.d.ts +54 -0
- package/node_modules/type-fest/source/typed-array.d.ts +19 -0
- package/node_modules/type-fest/source/undefined-on-partial-deep.d.ts +83 -0
- package/node_modules/type-fest/source/union-length.d.ts +27 -0
- package/node_modules/type-fest/source/union-member.d.ts +65 -0
- package/node_modules/type-fest/source/union-to-intersection.d.ts +35 -0
- package/node_modules/type-fest/source/union-to-tuple.d.ts +49 -0
- package/node_modules/type-fest/source/unknown-array.d.ts +27 -0
- package/node_modules/type-fest/source/unknown-map.d.ts +26 -0
- package/node_modules/type-fest/source/unknown-record.d.ts +33 -0
- package/node_modules/type-fest/source/unknown-set.d.ts +26 -0
- package/node_modules/type-fest/source/unwrap-partial.d.ts +33 -0
- package/node_modules/type-fest/source/value-of.d.ts +24 -0
- package/node_modules/type-fest/source/words.d.ts +148 -0
- package/node_modules/type-fest/source/writable-deep.d.ts +84 -0
- package/node_modules/type-fest/source/writable-keys-of.d.ts +34 -0
- package/node_modules/type-fest/source/writable.d.ts +68 -0
- package/node_modules/type-fest/source/xor.d.ts +83 -0
- package/node_modules/usehooks-ts/LICENSE +22 -0
- package/node_modules/usehooks-ts/README.md +473 -0
- package/node_modules/usehooks-ts/dist/index.cjs +1084 -0
- package/node_modules/usehooks-ts/dist/index.d.cts +953 -0
- package/node_modules/usehooks-ts/dist/index.d.ts +953 -0
- package/node_modules/usehooks-ts/dist/index.js +1046 -0
- package/node_modules/usehooks-ts/package.json +74 -0
- package/node_modules/wrap-ansi/index.d.ts +41 -0
- package/node_modules/wrap-ansi/index.js +222 -0
- package/node_modules/wrap-ansi/license +9 -0
- package/node_modules/wrap-ansi/package.json +69 -0
- package/node_modules/wrap-ansi/readme.md +75 -0
- package/package.json +3 -2
|
@@ -0,0 +1,700 @@
|
|
|
1
|
+
import React, { PureComponent, type ReactNode } from 'react';
|
|
2
|
+
import { logForDebugging } from '../_internal/debug.js';
|
|
3
|
+
import { stopCapturingEarlyInput } from '../_internal/earlyInput.js';
|
|
4
|
+
import { isEnvTruthy } from '../_internal/envUtils.js';
|
|
5
|
+
import { isMouseClicksDisabled } from '../_internal/fullscreen.js';
|
|
6
|
+
import { logError } from '../_internal/log.js';
|
|
7
|
+
import { updateLastInteractionTime } from '../_internal/state.js';
|
|
8
|
+
import { EventEmitter } from '../events/emitter.js';
|
|
9
|
+
import { InputEvent } from '../events/input-event.js';
|
|
10
|
+
import { TerminalFocusEvent } from '../events/terminal-focus-event.js';
|
|
11
|
+
import { INITIAL_STATE, type ParsedInput, type ParsedKey, type ParsedMouse, parseMultipleKeypresses } from '../parse-keypress.js';
|
|
12
|
+
import reconciler from '../reconciler.js';
|
|
13
|
+
import { finishSelection, hasSelection, type SelectionState, startSelection } from '../selection.js';
|
|
14
|
+
import { isXtermJs, setXtversionName, supportsExtendedKeys } from '../terminal.js';
|
|
15
|
+
import { getTerminalFocused, setTerminalFocused } from '../terminal-focus-state.js';
|
|
16
|
+
import { TerminalQuerier, xtversion } from '../terminal-querier.js';
|
|
17
|
+
import { DISABLE_KITTY_KEYBOARD, DISABLE_MODIFY_OTHER_KEYS, ENABLE_KITTY_KEYBOARD, ENABLE_MODIFY_OTHER_KEYS, FOCUS_IN, FOCUS_OUT } from '../termio/csi.js';
|
|
18
|
+
import { DBP, DFE, DISABLE_MOUSE_TRACKING, EBP, EFE, HIDE_CURSOR, SHOW_CURSOR } from '../termio/dec.js';
|
|
19
|
+
import AppContext from './AppContext.js';
|
|
20
|
+
import { ClockProvider } from './ClockContext.js';
|
|
21
|
+
import CursorDeclarationContext, { type CursorDeclarationSetter } from './CursorDeclarationContext.js';
|
|
22
|
+
import ErrorOverview from './ErrorOverview.js';
|
|
23
|
+
import StdinContext from './StdinContext.js';
|
|
24
|
+
import { TerminalFocusProvider } from './TerminalFocusContext.js';
|
|
25
|
+
import { TerminalSizeContext } from './TerminalSizeContext.js';
|
|
26
|
+
|
|
27
|
+
// Windows doesn't have SIGSTOP/SIGCONT semantics, so the Ctrl+Z suspend
|
|
28
|
+
// path is a no-op there. Cached at module load — the platform isn't
|
|
29
|
+
// going to change at runtime.
|
|
30
|
+
const SUPPORTS_SUSPEND = process.platform !== 'win32';
|
|
31
|
+
|
|
32
|
+
// If stdin goes silent for this long and then receives a chunk, treat
|
|
33
|
+
// the next chunk as a resume signal and re-assert terminal modes (mouse
|
|
34
|
+
// tracking, etc.). Real reattach scenarios — tmux detach/attach, SSH
|
|
35
|
+
// reconnect, laptop wake — reset the terminal's DEC private modes
|
|
36
|
+
// without sending us any signal we could hook into directly. Five
|
|
37
|
+
// seconds is comfortably longer than any normal inter-keystroke gap but
|
|
38
|
+
// short enough that the first scroll after reattach still works.
|
|
39
|
+
const STDIN_RESUME_GAP_MS = 5000;
|
|
40
|
+
|
|
41
|
+
// Short flush timeout for a stranded ESC-prefixed sequence (cursor
|
|
42
|
+
// keys, etc.). 50ms is enough to receive the rest of an SS3/CSI tail
|
|
43
|
+
// across most terminals; long enough that a deliberate single ESC keypress
|
|
44
|
+
// resolves to "Escape" instead of being treated as the start of a sequence.
|
|
45
|
+
const NORMAL_FLUSH_TIMEOUT_MS = 50;
|
|
46
|
+
|
|
47
|
+
// Pastes can interleave with our processing if the terminal sends them in
|
|
48
|
+
// chunks larger than the readable buffer. Hold incomplete paste content
|
|
49
|
+
// longer so we don't split it across two parse runs.
|
|
50
|
+
const PASTE_FLUSH_TIMEOUT_MS = 500;
|
|
51
|
+
|
|
52
|
+
// macOS double/triple-click default: a follow-up click within this many
|
|
53
|
+
// ms and this many cells of the previous click counts as a continuation
|
|
54
|
+
// (word-select on 2, line-select on 3). The position tolerance allows
|
|
55
|
+
// for trackpad jitter between consecutive taps.
|
|
56
|
+
const MULTI_CLICK_TIMEOUT_MS = 500;
|
|
57
|
+
const MULTI_CLICK_DISTANCE = 1;
|
|
58
|
+
|
|
59
|
+
// Bits in the SGR mouse button code we need to inspect by name. Names
|
|
60
|
+
// match what the terminal protocol calls them.
|
|
61
|
+
const MOUSE_BUTTON_BASE_MASK = 0x03;
|
|
62
|
+
const MOUSE_BUTTON_MOTION_BIT = 0x20;
|
|
63
|
+
const MOUSE_BUTTON_ALT_BIT = 0x08;
|
|
64
|
+
const MOUSE_BUTTON_BASE_RELEASE_LEGACY = 3; // "no button" from X10 encoding
|
|
65
|
+
type Props = {
|
|
66
|
+
readonly children: ReactNode;
|
|
67
|
+
readonly stdin: NodeJS.ReadStream;
|
|
68
|
+
readonly stdout: NodeJS.WriteStream;
|
|
69
|
+
readonly stderr: NodeJS.WriteStream;
|
|
70
|
+
readonly exitOnCtrlC: boolean;
|
|
71
|
+
readonly onExit: (error?: Error) => void;
|
|
72
|
+
readonly terminalColumns: number;
|
|
73
|
+
readonly terminalRows: number;
|
|
74
|
+
/** Shared selection state. */
|
|
75
|
+
readonly selection: SelectionState;
|
|
76
|
+
readonly onSelectionChange: () => void;
|
|
77
|
+
/** Dispatch a click at `(col, row)`. */
|
|
78
|
+
readonly onClickAt: (col: number, row: number) => boolean;
|
|
79
|
+
readonly onHoverAt: (col: number, row: number) => void;
|
|
80
|
+
readonly getHyperlinkAt: (col: number, row: number) => string | undefined;
|
|
81
|
+
/** Open a hyperlink URL in the browser. Called when the defer fires. */
|
|
82
|
+
readonly onOpenHyperlink: (url: string) => void;
|
|
83
|
+
/** Fired on the press half of a double/triple click at `(col, row)`. */
|
|
84
|
+
readonly onMultiClick: (col: number, row: number, count: 2 | 3) => void;
|
|
85
|
+
/** Fired on drag-motion. */
|
|
86
|
+
readonly onSelectionDrag: (col: number, row: number) => void;
|
|
87
|
+
readonly onStdinResume?: () => void;
|
|
88
|
+
readonly onCursorDeclaration?: CursorDeclarationSetter;
|
|
89
|
+
/** Dispatch a parsed keyboard event through the DOM tree. */
|
|
90
|
+
readonly dispatchKeyboardEvent: (parsedKey: ParsedKey) => void;
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
type State = {
|
|
94
|
+
readonly error?: Error;
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
/** Root component for every rendered tree. */
|
|
98
|
+
export default class App extends PureComponent<Props, State> {
|
|
99
|
+
static displayName = 'InternalApp';
|
|
100
|
+
static getDerivedStateFromError(error: Error) {
|
|
101
|
+
return {
|
|
102
|
+
error,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
override state = {
|
|
106
|
+
error: undefined,
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
// Reference count for raw-mode enablement. Components that need raw
|
|
110
|
+
// keyboard input call `handleSetRawMode(true)` independently; we only
|
|
111
|
+
// disable raw mode once every consumer has released.
|
|
112
|
+
rawModeEnabledCount = 0;
|
|
113
|
+
internal_eventEmitter = new EventEmitter();
|
|
114
|
+
keyParseState = INITIAL_STATE;
|
|
115
|
+
// Timer for flushing incomplete escape sequences. Always either null
|
|
116
|
+
// or a live timer reference — `flushIncomplete` clears it itself.
|
|
117
|
+
incompleteEscapeTimer: NodeJS.Timeout | null = null;
|
|
118
|
+
|
|
119
|
+
// Terminal query/response dispatcher. Responses (DECRPM, DA1, OSC
|
|
120
|
+
// replies, ...) arrive on stdin and `parse-keypress` separates them
|
|
121
|
+
// from real keys; this querier routes them to pending resolvers.
|
|
122
|
+
querier = new TerminalQuerier(this.props.stdout);
|
|
123
|
+
|
|
124
|
+
// Multi-click tracking for double/triple-click text selection. A
|
|
125
|
+
// click within `MULTI_CLICK_TIMEOUT_MS` and `MULTI_CLICK_DISTANCE`
|
|
126
|
+
// of the previous one increments `clickCount`; otherwise it resets
|
|
127
|
+
// to 1 (the new chain starts).
|
|
128
|
+
lastClickTime = 0;
|
|
129
|
+
lastClickCol = -1;
|
|
130
|
+
lastClickRow = -1;
|
|
131
|
+
clickCount = 0;
|
|
132
|
+
// Pending hyperlink open. Cancelled if a second click arrives within
|
|
133
|
+
// `MULTI_CLICK_TIMEOUT_MS` so double-clicking an OSC 8 link selects
|
|
134
|
+
// the word without also opening the browser. DOM `onClick` dispatch
|
|
135
|
+
// does NOT go through this timer — `onClickAt` returning `true`
|
|
136
|
+
// short-circuits before the link path runs.
|
|
137
|
+
pendingHyperlinkTimer: ReturnType<typeof setTimeout> | null = null;
|
|
138
|
+
// Last mode-1003 motion position. Terminals dedupe at cell granularity
|
|
139
|
+
// already, but tracking it ourselves lets us skip `dispatchHover`
|
|
140
|
+
// entirely on duplicate events (drag-then-release at the same cell,
|
|
141
|
+
// for example).
|
|
142
|
+
lastHoverCol = -1;
|
|
143
|
+
lastHoverRow = -1;
|
|
144
|
+
|
|
145
|
+
// Timestamp of the last stdin chunk. Used by the resume-gap check to
|
|
146
|
+
// detect tmux attach / SSH reconnect / laptop wake. Initialised to
|
|
147
|
+
// `now` so the first chunk after startup doesn't false-trigger.
|
|
148
|
+
lastStdinTime = Date.now();
|
|
149
|
+
|
|
150
|
+
// True iff the configured stdin is a TTY (and therefore supports
|
|
151
|
+
// entering raw mode).
|
|
152
|
+
isRawModeSupported(): boolean {
|
|
153
|
+
return this.props.stdin.isTTY;
|
|
154
|
+
}
|
|
155
|
+
override render() {
|
|
156
|
+
return <TerminalSizeContext.Provider value={{
|
|
157
|
+
columns: this.props.terminalColumns,
|
|
158
|
+
rows: this.props.terminalRows
|
|
159
|
+
}}>
|
|
160
|
+
<AppContext.Provider value={{
|
|
161
|
+
exit: this.handleExit
|
|
162
|
+
}}>
|
|
163
|
+
<StdinContext.Provider value={{
|
|
164
|
+
stdin: this.props.stdin,
|
|
165
|
+
setRawMode: this.handleSetRawMode,
|
|
166
|
+
isRawModeSupported: this.isRawModeSupported(),
|
|
167
|
+
internal_exitOnCtrlC: this.props.exitOnCtrlC,
|
|
168
|
+
internal_eventEmitter: this.internal_eventEmitter,
|
|
169
|
+
internal_querier: this.querier
|
|
170
|
+
}}>
|
|
171
|
+
<TerminalFocusProvider>
|
|
172
|
+
<ClockProvider>
|
|
173
|
+
<CursorDeclarationContext.Provider value={this.props.onCursorDeclaration ?? (() => {})}>
|
|
174
|
+
{this.state.error ? <ErrorOverview error={this.state.error as Error} /> : this.props.children}
|
|
175
|
+
</CursorDeclarationContext.Provider>
|
|
176
|
+
</ClockProvider>
|
|
177
|
+
</TerminalFocusProvider>
|
|
178
|
+
</StdinContext.Provider>
|
|
179
|
+
</AppContext.Provider>
|
|
180
|
+
</TerminalSizeContext.Provider>;
|
|
181
|
+
}
|
|
182
|
+
override componentDidMount() {
|
|
183
|
+
// Hide the native cursor while the app is running. In accessibility
|
|
184
|
+
// mode the cursor stays visible because screen magnifiers and similar
|
|
185
|
+
// assistive tools track its position to follow focus.
|
|
186
|
+
if (this.props.stdout.isTTY && !isEnvTruthy(process.env.REASONIX_ACCESSIBILITY)) {
|
|
187
|
+
this.props.stdout.write(HIDE_CURSOR);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
override componentWillUnmount() {
|
|
191
|
+
if (this.props.stdout.isTTY) {
|
|
192
|
+
this.props.stdout.write(SHOW_CURSOR);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
// Drop any pending timers so they don't fire into a torn-down tree.
|
|
196
|
+
if (this.incompleteEscapeTimer) {
|
|
197
|
+
clearTimeout(this.incompleteEscapeTimer);
|
|
198
|
+
this.incompleteEscapeTimer = null;
|
|
199
|
+
}
|
|
200
|
+
if (this.pendingHyperlinkTimer) {
|
|
201
|
+
clearTimeout(this.pendingHyperlinkTimer);
|
|
202
|
+
this.pendingHyperlinkTimer = null;
|
|
203
|
+
}
|
|
204
|
+
// Skip `setRawMode` on non-TTY stdin; calling it would throw the
|
|
205
|
+
// same error the prop-time guard reports, and unmount paths are not
|
|
206
|
+
// a useful place to surface that.
|
|
207
|
+
if (this.isRawModeSupported()) {
|
|
208
|
+
this.handleSetRawMode(false);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
override componentDidCatch(error: Error) {
|
|
212
|
+
this.handleExit(error);
|
|
213
|
+
}
|
|
214
|
+
handleSetRawMode = (isEnabled: boolean): void => {
|
|
215
|
+
const {
|
|
216
|
+
stdin
|
|
217
|
+
} = this.props;
|
|
218
|
+
if (!this.isRawModeSupported()) {
|
|
219
|
+
if (stdin === process.stdin) {
|
|
220
|
+
throw new Error('Raw mode is not supported on the default process.stdin used as the input stream.\nThis usually means the process was launched without a TTY (e.g. piped input, CI runner). Pass an explicit `stdin` option whose `isTTY` is true, or render with `{ stdin: process.stdin }` only inside an interactive terminal.');
|
|
221
|
+
} else {
|
|
222
|
+
throw new Error('Raw mode is not supported on the provided `stdin` stream.\nThe stream must be a TTY (its `isTTY` property must be true). Streams from pipes, files, or non-interactive shells cannot enter raw mode; supply a TTY-backed stream or skip the components that depend on raw keyboard input.');
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
stdin.setEncoding('utf8');
|
|
226
|
+
if (isEnabled) {
|
|
227
|
+
// Only do the heavy setup once, on the first enable.
|
|
228
|
+
if (this.rawModeEnabledCount === 0) {
|
|
229
|
+
// Stop early-input capture before installing our own readable
|
|
230
|
+
// listener. Both use the same `'readable' + read()` pattern, so
|
|
231
|
+
// they cannot coexist on the same stream — whichever drains
|
|
232
|
+
// stdin first wins, and the loser sees no events. Any buffered
|
|
233
|
+
// text the early capture collected is preserved separately and
|
|
234
|
+
// can be consumed via `consumeEarlyInput()`.
|
|
235
|
+
stopCapturingEarlyInput();
|
|
236
|
+
stdin.ref();
|
|
237
|
+
stdin.setRawMode(true);
|
|
238
|
+
stdin.addListener('readable', this.handleReadable);
|
|
239
|
+
// Bracketed paste mode: pastes arrive wrapped in
|
|
240
|
+
// `ESC [ 200 ~` / `ESC [ 201 ~` so the parser can tell them
|
|
241
|
+
// apart from typed input.
|
|
242
|
+
this.props.stdout.write(EBP);
|
|
243
|
+
// DECSET 1004 — terminal focus reporting.
|
|
244
|
+
this.props.stdout.write(EFE);
|
|
245
|
+
// Extended key reporting, so ctrl+shift+<letter> is
|
|
246
|
+
// distinguishable from plain ctrl+<letter>. We push the kitty
|
|
247
|
+
// keyboard stack (CSI >1u) AND set xterm modifyOtherKeys level
|
|
248
|
+
// 2 (CSI >4;2m); terminals respect whichever they implement
|
|
249
|
+
// (tmux honours only the latter), and the unused one is a
|
|
250
|
+
// harmless no-op on the rest.
|
|
251
|
+
if (supportsExtendedKeys()) {
|
|
252
|
+
this.props.stdout.write(ENABLE_KITTY_KEYBOARD);
|
|
253
|
+
this.props.stdout.write(ENABLE_MODIFY_OTHER_KEYS);
|
|
254
|
+
}
|
|
255
|
+
// Probe terminal identity via XTVERSION. Unlike `TERM_PROGRAM`
|
|
256
|
+
// this query/reply travels through the pty, which means it
|
|
257
|
+
// survives SSH and tmux. The reply (when we get one) is used
|
|
258
|
+
// for wheel-scroll base detection on hosts where env vars
|
|
259
|
+
// aren't reliable. Fire-and-forget: the querier's DA1 sentinel
|
|
260
|
+
// bounds the round-trip, so a silent terminal just leaves
|
|
261
|
+
// `name` undefined and we move on.
|
|
262
|
+
//
|
|
263
|
+
// Deferred to the next macrotask so it doesn't interleave with
|
|
264
|
+
// alt-screen / mouse-tracking writes that may happen later in
|
|
265
|
+
// the same render cycle.
|
|
266
|
+
setImmediate(() => {
|
|
267
|
+
void Promise.all([this.querier.send(xtversion()), this.querier.flush()]).then(([r]) => {
|
|
268
|
+
if (r) {
|
|
269
|
+
setXtversionName(r.name);
|
|
270
|
+
logForDebugging(`XTVERSION: terminal identified as "${r.name}"`);
|
|
271
|
+
} else {
|
|
272
|
+
logForDebugging('XTVERSION: no reply (terminal ignored query)');
|
|
273
|
+
}
|
|
274
|
+
});
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
this.rawModeEnabledCount++;
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
// Disable for real only when every consumer has released.
|
|
282
|
+
if (--this.rawModeEnabledCount === 0) {
|
|
283
|
+
this.props.stdout.write(DISABLE_MODIFY_OTHER_KEYS);
|
|
284
|
+
this.props.stdout.write(DISABLE_KITTY_KEYBOARD);
|
|
285
|
+
// DECRST 1004 — leave terminal focus reporting off.
|
|
286
|
+
this.props.stdout.write(DFE);
|
|
287
|
+
// Disable bracketed paste mode.
|
|
288
|
+
this.props.stdout.write(DBP);
|
|
289
|
+
stdin.setRawMode(false);
|
|
290
|
+
stdin.removeListener('readable', this.handleReadable);
|
|
291
|
+
stdin.unref();
|
|
292
|
+
}
|
|
293
|
+
};
|
|
294
|
+
|
|
295
|
+
/** Flush whatever incomplete escape sequence the parser is holding. */
|
|
296
|
+
flushIncomplete = (): void => {
|
|
297
|
+
this.incompleteEscapeTimer = null;
|
|
298
|
+
|
|
299
|
+
if (!this.keyParseState.incomplete) return;
|
|
300
|
+
|
|
301
|
+
if (this.props.stdin.readableLength > 0) {
|
|
302
|
+
this.incompleteEscapeTimer = setTimeout(this.flushIncomplete, NORMAL_FLUSH_TIMEOUT_MS);
|
|
303
|
+
return;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
// Run the parser with `input=null` to signal "no more bytes are
|
|
307
|
+
// coming, finalise whatever you have". Reuses all the regular parse
|
|
308
|
+
// dispatch code below.
|
|
309
|
+
this.processInput(null);
|
|
310
|
+
};
|
|
311
|
+
|
|
312
|
+
processInput = (input: string | Buffer | null): void => {
|
|
313
|
+
const [keys, newState] = parseMultipleKeypresses(this.keyParseState, input);
|
|
314
|
+
this.keyParseState = newState;
|
|
315
|
+
|
|
316
|
+
if (keys.length > 0) {
|
|
317
|
+
reconciler.discreteUpdates(processKeysInBatch, this, keys, undefined, undefined);
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
// Re-arm the flush timer if the parser is still holding a partial
|
|
321
|
+
// sequence. Cancel an existing timer first so the timeout reflects
|
|
322
|
+
// the most recent input (especially important when we transition
|
|
323
|
+
// into paste mode and need the longer timeout).
|
|
324
|
+
if (this.keyParseState.incomplete) {
|
|
325
|
+
if (this.incompleteEscapeTimer) {
|
|
326
|
+
clearTimeout(this.incompleteEscapeTimer);
|
|
327
|
+
}
|
|
328
|
+
this.incompleteEscapeTimer = setTimeout(
|
|
329
|
+
this.flushIncomplete,
|
|
330
|
+
this.keyParseState.mode === 'IN_PASTE' ? PASTE_FLUSH_TIMEOUT_MS : NORMAL_FLUSH_TIMEOUT_MS,
|
|
331
|
+
);
|
|
332
|
+
}
|
|
333
|
+
};
|
|
334
|
+
handleReadable = (): void => {
|
|
335
|
+
// Detect long stdin gaps (tmux attach, SSH reconnect, laptop wake).
|
|
336
|
+
// The terminal probably reset its DEC private modes during the gap,
|
|
337
|
+
// so we ask the host to re-assert mouse tracking and friends. One
|
|
338
|
+
// `Date.now()` per readable event covers every chunk we drain in
|
|
339
|
+
// this turn.
|
|
340
|
+
const now = Date.now();
|
|
341
|
+
if (now - this.lastStdinTime > STDIN_RESUME_GAP_MS) {
|
|
342
|
+
this.props.onStdinResume?.();
|
|
343
|
+
}
|
|
344
|
+
this.lastStdinTime = now;
|
|
345
|
+
try {
|
|
346
|
+
let chunk;
|
|
347
|
+
while ((chunk = this.props.stdin.read() as string | null) !== null) {
|
|
348
|
+
this.processInput(chunk);
|
|
349
|
+
}
|
|
350
|
+
} catch (error) {
|
|
351
|
+
// Bun's behaviour on an uncaught throw inside a stream 'readable'
|
|
352
|
+
// handler is to wedge the stream permanently — data stays
|
|
353
|
+
// buffered and 'readable' never re-fires. Logging + recovering
|
|
354
|
+
// here keeps the input pipeline healthy so subsequent keystrokes
|
|
355
|
+
// are still delivered.
|
|
356
|
+
logError(error);
|
|
357
|
+
|
|
358
|
+
// Re-attach the listener if Bun detached it as part of the
|
|
359
|
+
// exception path. Without this the session is alive but the
|
|
360
|
+
// stdin reader is silently dead — every key vanishes into the
|
|
361
|
+
// void until the user kills the process.
|
|
362
|
+
const { stdin } = this.props;
|
|
363
|
+
if (this.rawModeEnabledCount > 0 && !stdin.listeners('readable').includes(this.handleReadable)) {
|
|
364
|
+
logForDebugging('handleReadable: re-attaching stdin readable listener after error recovery', {
|
|
365
|
+
level: 'warn',
|
|
366
|
+
});
|
|
367
|
+
stdin.addListener('readable', this.handleReadable);
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
};
|
|
371
|
+
handleInput = (input: string | undefined): void => {
|
|
372
|
+
// Ctrl+C → exit. The Ctrl+Z (suspend) path used to live here too,
|
|
373
|
+
// but it now runs in `processKeysInBatch` against the parsed key so
|
|
374
|
+
// it works under both legacy (`\x1a`) and Kitty CSI-u (`\x1b[122;5u`)
|
|
375
|
+
// encodings — Ghostty, iTerm2, kitty, and WezTerm all emit the latter.
|
|
376
|
+
if (input === '\x03' && this.props.exitOnCtrlC) {
|
|
377
|
+
this.handleExit();
|
|
378
|
+
}
|
|
379
|
+
};
|
|
380
|
+
handleExit = (error?: Error): void => {
|
|
381
|
+
if (this.isRawModeSupported()) {
|
|
382
|
+
this.handleSetRawMode(false);
|
|
383
|
+
}
|
|
384
|
+
this.props.onExit(error);
|
|
385
|
+
};
|
|
386
|
+
handleTerminalFocus = (isFocused: boolean): void => {
|
|
387
|
+
// The focus store fans out to `TerminalFocusProvider` (context) and
|
|
388
|
+
// to the clock (interval speed), so we don't need to setState here
|
|
389
|
+
// — App.tsx is intentionally insulated from focus churn.
|
|
390
|
+
setTerminalFocused(isFocused);
|
|
391
|
+
};
|
|
392
|
+
handleSuspend = (): void => {
|
|
393
|
+
if (!this.isRawModeSupported()) {
|
|
394
|
+
return;
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
// Snapshot the raw-mode reference count so we can restore the
|
|
398
|
+
// exact same depth on resume — components that were holding raw
|
|
399
|
+
// mode at suspend time still expect it to be on when we come back.
|
|
400
|
+
const rawModeCountBeforeSuspend = this.rawModeEnabledCount;
|
|
401
|
+
|
|
402
|
+
// Fully unwind raw mode so the parent shell sees a normal cooked
|
|
403
|
+
// terminal while we're stopped.
|
|
404
|
+
while (this.rawModeEnabledCount > 0) {
|
|
405
|
+
this.handleSetRawMode(false);
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
// Restore cursor visibility, turn off focus reporting, and disable
|
|
409
|
+
// mouse tracking before stopping. `DISABLE_MOUSE_TRACKING` is a
|
|
410
|
+
// no-op if tracking was never enabled, but emitting it
|
|
411
|
+
// unconditionally is necessary: otherwise leftover SGR mouse
|
|
412
|
+
// sequences would arrive at the shell prompt and render as
|
|
413
|
+
// garbled text until the user runs `reset`.
|
|
414
|
+
if (this.props.stdout.isTTY) {
|
|
415
|
+
this.props.stdout.write(SHOW_CURSOR + DFE + DISABLE_MOUSE_TRACKING);
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
// Notify subscribers so app-level housekeeping (saving state,
|
|
419
|
+
// suspending background work) can run before we actually stop.
|
|
420
|
+
this.internal_eventEmitter.emit('suspend');
|
|
421
|
+
|
|
422
|
+
const resumeHandler = () => {
|
|
423
|
+
// Restore raw mode to the depth it was at when we suspended.
|
|
424
|
+
for (let i = 0; i < rawModeCountBeforeSuspend; i++) {
|
|
425
|
+
if (this.isRawModeSupported()) {
|
|
426
|
+
this.handleSetRawMode(true);
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
// Hide the cursor again (unless in accessibility mode) and
|
|
431
|
+
// re-enable focus reporting so the terminal is back in the state
|
|
432
|
+
// the app expected before suspension.
|
|
433
|
+
if (this.props.stdout.isTTY) {
|
|
434
|
+
if (!isEnvTruthy(process.env.REASONIX_ACCESSIBILITY)) {
|
|
435
|
+
this.props.stdout.write(HIDE_CURSOR);
|
|
436
|
+
}
|
|
437
|
+
this.props.stdout.write(EFE);
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
this.internal_eventEmitter.emit('resume');
|
|
441
|
+
process.removeListener('SIGCONT', resumeHandler);
|
|
442
|
+
};
|
|
443
|
+
process.on('SIGCONT', resumeHandler);
|
|
444
|
+
process.kill(process.pid, 'SIGSTOP');
|
|
445
|
+
};
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
function processKeysInBatch(app: App, items: ParsedInput[], _unused1: undefined, _unused2: undefined): void {
|
|
449
|
+
// Refresh the "last interaction" timestamp used by notification
|
|
450
|
+
// dampening and other idle-gated background work. Only real
|
|
451
|
+
// engagement counts: keys + mouse clicks/drags, but the passive
|
|
452
|
+
// no-button motion that mode-1003 emits when the user just brushes
|
|
453
|
+
// the cursor through the window does not — counting it would
|
|
454
|
+
// suppress idle notifications and defer housekeeping forever.
|
|
455
|
+
// Terminal responses (XTVERSION etc.) are automated and excluded.
|
|
456
|
+
if (items.some(i => i.kind === 'key' || (i.kind === 'mouse' && !isPassiveHover(i.button)))) {
|
|
457
|
+
updateLastInteractionTime();
|
|
458
|
+
}
|
|
459
|
+
for (const item of items) {
|
|
460
|
+
// Terminal responses (DECRPM, DA1, OSC replies, ...) are not user
|
|
461
|
+
// input — resolve any pending promise on the querier and stop.
|
|
462
|
+
if (item.kind === 'response') {
|
|
463
|
+
app.querier.onResponse(item.response);
|
|
464
|
+
continue;
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
// Mouse click/drag/motion. The terminal protocol sends 1-indexed
|
|
468
|
+
// columns and rows; the screen buffer uses 0-indexed, so the
|
|
469
|
+
// handler does the conversion.
|
|
470
|
+
if (item.kind === 'mouse') {
|
|
471
|
+
handleMouseEvent(app, item);
|
|
472
|
+
continue;
|
|
473
|
+
}
|
|
474
|
+
const sequence = item.sequence;
|
|
475
|
+
|
|
476
|
+
// DECSET 1004 terminal focus events.
|
|
477
|
+
if (sequence === FOCUS_IN) {
|
|
478
|
+
app.handleTerminalFocus(true);
|
|
479
|
+
const event = new TerminalFocusEvent('terminalfocus');
|
|
480
|
+
app.internal_eventEmitter.emit('terminalfocus', event);
|
|
481
|
+
continue;
|
|
482
|
+
}
|
|
483
|
+
if (sequence === FOCUS_OUT) {
|
|
484
|
+
app.handleTerminalFocus(false);
|
|
485
|
+
// Defensive selection close: if we never saw the mouse release
|
|
486
|
+
// (e.g. iTerm2 doesn't capture the pointer past the window
|
|
487
|
+
// bounds, so the release SGR never arrives), the focus-out event
|
|
488
|
+
// is our next observable signal that the drag is over. Without
|
|
489
|
+
// this, `isDragging` stays true forever and drag-to-scroll's
|
|
490
|
+
// timer keeps firing.
|
|
491
|
+
if (app.props.selection.isDragging) {
|
|
492
|
+
finishSelection(app.props.selection);
|
|
493
|
+
app.props.onSelectionChange();
|
|
494
|
+
}
|
|
495
|
+
const event = new TerminalFocusEvent('terminalblur');
|
|
496
|
+
app.internal_eventEmitter.emit('terminalblur', event);
|
|
497
|
+
continue;
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
// Receiving real input implies the terminal window is focused.
|
|
501
|
+
// Some emulators (notably tmux without `focus-events on`) never
|
|
502
|
+
// emit focus-in, so this is the only signal we'll get that they
|
|
503
|
+
// came back. Without it the clock stays at the blurred-tick rate
|
|
504
|
+
// and animations look choppy.
|
|
505
|
+
if (!getTerminalFocused()) {
|
|
506
|
+
setTerminalFocused(true);
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
// Ctrl+Z (suspend). Reading the parsed key here, rather than
|
|
510
|
+
// matching `\x1a` on the raw byte, handles both legacy and Kitty
|
|
511
|
+
// CSI-u (`\x1b[122;5u`) encodings.
|
|
512
|
+
if (item.name === 'z' && item.ctrl && SUPPORTS_SUSPEND) {
|
|
513
|
+
app.handleSuspend();
|
|
514
|
+
continue;
|
|
515
|
+
}
|
|
516
|
+
app.handleInput(sequence);
|
|
517
|
+
const event = new InputEvent(item);
|
|
518
|
+
app.internal_eventEmitter.emit('input', event);
|
|
519
|
+
|
|
520
|
+
// Mirror the input through the DOM tree so `onKeyDown` handlers on
|
|
521
|
+
// focused Boxes can react.
|
|
522
|
+
app.props.dispatchKeyboardEvent(item);
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
function isPassiveHover(button: number): boolean {
|
|
527
|
+
return (button & MOUSE_BUTTON_MOTION_BIT) !== 0
|
|
528
|
+
&& (button & MOUSE_BUTTON_BASE_MASK) === MOUSE_BUTTON_BASE_RELEASE_LEGACY;
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
export function handleMouseEvent(app: App, m: ParsedMouse): void {
|
|
532
|
+
// Allow disabling click handling without disabling wheel scroll.
|
|
533
|
+
// Wheel events arrive through the keybinding system as
|
|
534
|
+
// 'wheelup'/'wheeldown', not here, so this gate doesn't affect them.
|
|
535
|
+
if (isMouseClicksDisabled()) return;
|
|
536
|
+
const sel = app.props.selection;
|
|
537
|
+
// Terminal protocol is 1-indexed; the screen buffer is 0-indexed.
|
|
538
|
+
const col = m.col - 1;
|
|
539
|
+
const row = m.row - 1;
|
|
540
|
+
const baseButton = m.button & MOUSE_BUTTON_BASE_MASK;
|
|
541
|
+
if (m.action === 'press') {
|
|
542
|
+
if ((m.button & MOUSE_BUTTON_MOTION_BIT) !== 0 && baseButton === MOUSE_BUTTON_BASE_RELEASE_LEGACY) {
|
|
543
|
+
// Mode-1003 motion with no button held: dispatch hover and stop.
|
|
544
|
+
// No selection logic, no click-count side effects.
|
|
545
|
+
//
|
|
546
|
+
// Lost-release recovery: if the user is "dragging" but we see
|
|
547
|
+
// no-button motion, the release happened outside the terminal
|
|
548
|
+
// window (iTerm2 doesn't capture the pointer past window
|
|
549
|
+
// bounds, so its SGR 'm' release never arrives). Finish the
|
|
550
|
+
// selection here so copy-on-select still fires. The FOCUS_OUT
|
|
551
|
+
// path handles "switched apps", but not "released past the edge,
|
|
552
|
+
// came back" — and tmux without `focus-events on` doesn't even
|
|
553
|
+
// emit focus changes, so this is the more reliable signal.
|
|
554
|
+
if (sel.isDragging) {
|
|
555
|
+
finishSelection(sel);
|
|
556
|
+
app.props.onSelectionChange();
|
|
557
|
+
}
|
|
558
|
+
if (col === app.lastHoverCol && row === app.lastHoverRow) return;
|
|
559
|
+
app.lastHoverCol = col;
|
|
560
|
+
app.lastHoverRow = row;
|
|
561
|
+
app.props.onHoverAt(col, row);
|
|
562
|
+
return;
|
|
563
|
+
}
|
|
564
|
+
if (baseButton !== 0) {
|
|
565
|
+
// Non-left press breaks the multi-click chain.
|
|
566
|
+
app.clickCount = 0;
|
|
567
|
+
return;
|
|
568
|
+
}
|
|
569
|
+
if ((m.button & MOUSE_BUTTON_MOTION_BIT) !== 0) {
|
|
570
|
+
// Drag motion: mode-aware extension (char / word / line).
|
|
571
|
+
// `onSelectionDrag` calls `notifySelectionChange` internally so
|
|
572
|
+
// we don't double-up by calling `onSelectionChange` here.
|
|
573
|
+
app.props.onSelectionDrag(col, row);
|
|
574
|
+
return;
|
|
575
|
+
}
|
|
576
|
+
// Lost-release fallback for mode-1002-only terminals (no motion
|
|
577
|
+
// reports when no button is held). Seeing a fresh press while
|
|
578
|
+
// `isDragging=true` means the previous release was dropped (cursor
|
|
579
|
+
// left the window). Finish that selection so copy-on-select fires
|
|
580
|
+
// before `startSelection` / `onMultiClick` clobbers the anchor.
|
|
581
|
+
// Mode-1003 terminals hit the no-button-motion recovery above
|
|
582
|
+
// instead, so this branch only fires on the older protocol.
|
|
583
|
+
if (sel.isDragging) {
|
|
584
|
+
finishSelection(sel);
|
|
585
|
+
app.props.onSelectionChange();
|
|
586
|
+
}
|
|
587
|
+
// Fresh left press. Detect multi-click here, on press, not on
|
|
588
|
+
// release. Two reasons:
|
|
589
|
+
//
|
|
590
|
+
// 1. The word/line highlight needs to appear immediately so the
|
|
591
|
+
// feedback feels native.
|
|
592
|
+
// 2. Detecting on release used to let double-click+drag fall
|
|
593
|
+
// through to char-mode selection, because by the time the
|
|
594
|
+
// second release came in we were already mid-drag.
|
|
595
|
+
const now = Date.now();
|
|
596
|
+
const nearLast = now - app.lastClickTime < MULTI_CLICK_TIMEOUT_MS
|
|
597
|
+
&& Math.abs(col - app.lastClickCol) <= MULTI_CLICK_DISTANCE
|
|
598
|
+
&& Math.abs(row - app.lastClickRow) <= MULTI_CLICK_DISTANCE;
|
|
599
|
+
app.clickCount = nearLast ? app.clickCount + 1 : 1;
|
|
600
|
+
app.lastClickTime = now;
|
|
601
|
+
app.lastClickCol = col;
|
|
602
|
+
app.lastClickRow = row;
|
|
603
|
+
if (app.clickCount >= 2) {
|
|
604
|
+
// Cancel any pending hyperlink-open from the prior click — this
|
|
605
|
+
// is a double-click, not a single-click on a link.
|
|
606
|
+
if (app.pendingHyperlinkTimer) {
|
|
607
|
+
clearTimeout(app.pendingHyperlinkTimer);
|
|
608
|
+
app.pendingHyperlinkTimer = null;
|
|
609
|
+
}
|
|
610
|
+
// Cap at 3 (line select) for quadruple-and-up clicks.
|
|
611
|
+
const count = app.clickCount === 2 ? 2 : 3;
|
|
612
|
+
app.props.onMultiClick(col, row, count);
|
|
613
|
+
return;
|
|
614
|
+
}
|
|
615
|
+
startSelection(sel, col, row);
|
|
616
|
+
// SGR bit 0x08 carries the alt-key state. (xterm.js wires its
|
|
617
|
+
// `altKey` field here, NOT `metaKey` — see the hyperlink guard
|
|
618
|
+
// below for the consequences.) On macOS xterm.js, receiving alt
|
|
619
|
+
// also implies `macOptionClickForcesSelection=OFF`; otherwise
|
|
620
|
+
// xterm.js would have consumed the event for native selection
|
|
621
|
+
// before forwarding it.
|
|
622
|
+
sel.lastPressHadAlt = (m.button & MOUSE_BUTTON_ALT_BIT) !== 0;
|
|
623
|
+
app.props.onSelectionChange();
|
|
624
|
+
return;
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
// Release path. End any drag even when the base button is non-zero:
|
|
628
|
+
// some terminals encode the release with the motion bit set, or with
|
|
629
|
+
// `button=3` "no button" (left over from the pre-SGR X10 encoding).
|
|
630
|
+
// Filtering those out would leave `isDragging=true` permanently and
|
|
631
|
+
// let drag-to-scroll's timer keep firing until the scroll boundary.
|
|
632
|
+
// For non-left releases we still only act when we ARE dragging, so an
|
|
633
|
+
// unrelated middle/right release doesn't touch the selection.
|
|
634
|
+
if (baseButton !== 0) {
|
|
635
|
+
if (!sel.isDragging) return;
|
|
636
|
+
finishSelection(sel);
|
|
637
|
+
app.props.onSelectionChange();
|
|
638
|
+
return;
|
|
639
|
+
}
|
|
640
|
+
finishSelection(sel);
|
|
641
|
+
// Note: we deliberately do NOT reset `clickCount` on a release that
|
|
642
|
+
// followed a drag. This matches NSEvent.clickCount semantics — an
|
|
643
|
+
// intervening drag doesn't break the click chain — and the practical
|
|
644
|
+
// payoff is that trackpad jitter during an intended double-click
|
|
645
|
+
// (press → wobble → release → press) resolves to word-select instead
|
|
646
|
+
// of degrading to a fresh single click. The `nearLast` window
|
|
647
|
+
// (`MULTI_CLICK_TIMEOUT_MS` / `MULTI_CLICK_DISTANCE`) keeps the
|
|
648
|
+
// effect bounded; a deliberate long drag past that window just
|
|
649
|
+
// starts a fresh chain.
|
|
650
|
+
//
|
|
651
|
+
// Click semantics by mode:
|
|
652
|
+
// - char mode: press sets anchor, focus stays null until drag, so
|
|
653
|
+
// a press+release with no drag is `hasSelection=false` → click.
|
|
654
|
+
// - word/line mode: the press already set both anchor and focus
|
|
655
|
+
// (`hasSelection=true`), so release just keeps the highlight.
|
|
656
|
+
//
|
|
657
|
+
// The `sel.anchor` guard handles orphaned releases — e.g. the button
|
|
658
|
+
// was already held when mouse tracking was enabled, so we get a
|
|
659
|
+
// release with no prior press recorded.
|
|
660
|
+
if (!hasSelection(sel) && sel.anchor) {
|
|
661
|
+
// Single click: dispatch DOM `onClick` immediately. Cursor
|
|
662
|
+
// repositioning and similar handlers are latency-sensitive and
|
|
663
|
+
// shouldn't be deferred. If no DOM handler consumed the click, we
|
|
664
|
+
// fall through to hyperlink handling, which IS deferred so a
|
|
665
|
+
// second click can cancel it.
|
|
666
|
+
if (!app.props.onClickAt(col, row)) {
|
|
667
|
+
// Resolve the URL synchronously while the screen buffer still
|
|
668
|
+
// shows what the user clicked. Only the browser-open itself is
|
|
669
|
+
// deferred — that's what double-click can cancel.
|
|
670
|
+
const url = app.props.getHyperlinkAt(col, row);
|
|
671
|
+
// xterm.js (VS Code, Cursor, Windsurf, ...) ships its own OSC 8
|
|
672
|
+
// handler that fires on Cmd+click *without consuming the mouse
|
|
673
|
+
// event*: Linkifier._handleMouseUp calls link.activate() but
|
|
674
|
+
// never preventDefault/stopPropagation, so the click is still
|
|
675
|
+
// forwarded to the pty as SGR. If we opened the URL too, both
|
|
676
|
+
// VS Code's terminalLinkManager AND we would open it — twice.
|
|
677
|
+
// We can't filter by Cmd from this end: xterm.js drops metaKey
|
|
678
|
+
// before SGR encoding (its ICoreMouseEvent has no meta field;
|
|
679
|
+
// the SGR bit we call "meta" is wired to alt). The least-bad
|
|
680
|
+
// option is to defer entirely to xterm.js when we know we're
|
|
681
|
+
// inside it; Cmd+click is the native UX there anyway.
|
|
682
|
+
//
|
|
683
|
+
// TERM_PROGRAM='vscode' is the synchronous fast-path; the
|
|
684
|
+
// `isXtermJs()` fallback uses the XTVERSION probe result, which
|
|
685
|
+
// catches SSH sessions and non-VS Code embedders like Hyper.
|
|
686
|
+
if (url && process.env.TERM_PROGRAM !== 'vscode' && !isXtermJs()) {
|
|
687
|
+
// Clicking a second link supersedes the first — only the
|
|
688
|
+
// most recent click opens.
|
|
689
|
+
if (app.pendingHyperlinkTimer) {
|
|
690
|
+
clearTimeout(app.pendingHyperlinkTimer);
|
|
691
|
+
}
|
|
692
|
+
app.pendingHyperlinkTimer = setTimeout((app, url) => {
|
|
693
|
+
app.pendingHyperlinkTimer = null;
|
|
694
|
+
app.props.onOpenHyperlink(url);
|
|
695
|
+
}, MULTI_CLICK_TIMEOUT_MS, app, url);
|
|
696
|
+
}
|
|
697
|
+
}
|
|
698
|
+
}
|
|
699
|
+
app.props.onSelectionChange();
|
|
700
|
+
}
|