@peteanderson/ansi 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +38 -11
- package/dist/{ansi.d.ts → cjs/ansi.d.ts} +17 -16
- package/dist/cjs/ansi.d.ts.map +1 -0
- package/dist/{ansi.js → cjs/ansi.js} +3 -2
- package/dist/cjs/ansi.js.map +1 -0
- package/dist/cjs/caret.d.ts.map +1 -0
- package/dist/cjs/caret.js.map +1 -0
- package/dist/cjs/erase.d.ts.map +1 -0
- package/dist/cjs/erase.js.map +1 -0
- package/dist/cjs/features/build.d.ts.map +1 -0
- package/dist/cjs/features/build.js.map +1 -0
- package/dist/cjs/features/detect.d.ts.map +1 -0
- package/dist/cjs/features/detect.js.map +1 -0
- package/dist/cjs/features/features.d.ts.map +1 -0
- package/dist/{features → cjs/features}/features.js +2 -2
- package/dist/cjs/features/features.js.map +1 -0
- package/dist/cjs/features/index.d.ts.map +1 -0
- package/dist/cjs/features/index.js.map +1 -0
- package/dist/cjs/features/types.d.ts.map +1 -0
- package/dist/cjs/features/types.js.map +1 -0
- package/dist/cjs/index.d.ts +96 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +39 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/pad.d.ts.map +1 -0
- package/dist/cjs/pad.js.map +1 -0
- package/dist/cjs/patterns.d.ts.map +1 -0
- package/dist/cjs/patterns.js.map +1 -0
- package/dist/cjs/scroll.d.ts.map +1 -0
- package/dist/cjs/scroll.js.map +1 -0
- package/dist/cjs/sgr/color/channel.d.ts.map +1 -0
- package/dist/cjs/sgr/color/channel.js.map +1 -0
- package/dist/cjs/sgr/color/color.d.ts.map +1 -0
- package/dist/cjs/sgr/color/color.js.map +1 -0
- package/dist/cjs/sgr/color/context.d.ts.map +1 -0
- package/dist/cjs/sgr/color/context.js.map +1 -0
- package/dist/cjs/sgr/color/index.d.ts.map +1 -0
- package/dist/cjs/sgr/color/index.js.map +1 -0
- package/dist/cjs/sgr/color/rgb.d.ts.map +1 -0
- package/dist/cjs/sgr/color/rgb.js.map +1 -0
- package/dist/cjs/sgr/color/utils.d.ts.map +1 -0
- package/dist/cjs/sgr/color/utils.js.map +1 -0
- package/dist/cjs/sgr/combine.d.ts.map +1 -0
- package/dist/cjs/sgr/combine.js.map +1 -0
- package/dist/cjs/sgr/format-builder.d.ts.map +1 -0
- package/dist/cjs/sgr/format-builder.js.map +1 -0
- package/dist/cjs/sgr/index.d.ts.map +1 -0
- package/dist/cjs/sgr/index.js.map +1 -0
- package/dist/cjs/sgr/lazy.d.ts.map +1 -0
- package/dist/cjs/sgr/lazy.js.map +1 -0
- package/dist/cjs/sgr/reset.d.ts.map +1 -0
- package/dist/cjs/sgr/reset.js.map +1 -0
- package/dist/cjs/sgr/sgr.d.ts.map +1 -0
- package/dist/cjs/sgr/sgr.js.map +1 -0
- package/dist/cjs/sgr/style.d.ts.map +1 -0
- package/dist/cjs/sgr/style.js.map +1 -0
- package/dist/cjs/sgr/types.d.ts.map +1 -0
- package/dist/{features → cjs/sgr}/types.js.map +1 -1
- package/dist/cjs/simplify/atom.d.ts.map +1 -0
- package/dist/cjs/simplify/atom.js.map +1 -0
- package/dist/cjs/simplify/index.d.ts.map +1 -0
- package/dist/cjs/simplify/index.js.map +1 -0
- package/dist/cjs/simplify/lookup.d.ts.map +1 -0
- package/dist/cjs/simplify/lookup.js.map +1 -0
- package/dist/cjs/simplify/simplify.d.ts.map +1 -0
- package/dist/cjs/simplify/simplify.js.map +1 -0
- package/dist/cjs/simplify/state.d.ts.map +1 -0
- package/dist/cjs/simplify/state.js.map +1 -0
- package/dist/cjs/simplify/types.d.ts.map +1 -0
- package/dist/cjs/simplify/types.js.map +1 -0
- package/dist/cjs/simplify/utils.d.ts.map +1 -0
- package/dist/cjs/simplify/utils.js.map +1 -0
- package/dist/cjs/slice.d.ts.map +1 -0
- package/dist/{slice.js → cjs/slice.js} +1 -1
- package/dist/cjs/slice.js.map +1 -0
- package/dist/cjs/strip.d.ts.map +1 -0
- package/dist/cjs/strip.js.map +1 -0
- package/dist/cjs/terminal.d.ts.map +1 -0
- package/dist/cjs/terminal.js.map +1 -0
- package/dist/cjs/typed-object.d.ts.map +1 -0
- package/dist/cjs/typed-object.js.map +1 -0
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/{sgr → cjs}/types.js.map +1 -1
- package/dist/esm/ansi.d.ts +85 -0
- package/dist/esm/ansi.d.ts.map +1 -0
- package/dist/esm/ansi.js +33 -0
- package/dist/esm/ansi.js.map +1 -0
- package/dist/esm/caret.d.ts +30 -0
- package/dist/esm/caret.d.ts.map +1 -0
- package/dist/esm/caret.js +64 -0
- package/dist/{caret.js.map → esm/caret.js.map} +1 -1
- package/dist/esm/erase.d.ts +17 -0
- package/dist/esm/erase.d.ts.map +1 -0
- package/dist/esm/erase.js +28 -0
- package/dist/{erase.js.map → esm/erase.js.map} +1 -1
- package/dist/esm/features/build.d.ts +7 -0
- package/dist/esm/features/build.d.ts.map +1 -0
- package/dist/esm/features/build.js +35 -0
- package/dist/esm/features/build.js.map +1 -0
- package/dist/esm/features/detect.d.ts +4 -0
- package/dist/esm/features/detect.d.ts.map +1 -0
- package/dist/esm/features/detect.js +29 -0
- package/dist/esm/features/detect.js.map +1 -0
- package/dist/esm/features/features.d.ts +3 -0
- package/dist/esm/features/features.d.ts.map +1 -0
- package/dist/esm/features/features.js +25 -0
- package/dist/esm/features/features.js.map +1 -0
- package/dist/esm/features/index.d.ts +3 -0
- package/dist/esm/features/index.d.ts.map +1 -0
- package/dist/esm/features/index.js +2 -0
- package/dist/esm/features/index.js.map +1 -0
- package/dist/esm/features/types.d.ts +12 -0
- package/dist/esm/features/types.d.ts.map +1 -0
- package/dist/esm/features/types.js +2 -0
- package/dist/esm/features/types.js.map +1 -0
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +3 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/pad.d.ts +13 -0
- package/dist/esm/pad.d.ts.map +1 -0
- package/dist/esm/pad.js +12 -0
- package/dist/esm/pad.js.map +1 -0
- package/dist/esm/patterns.d.ts +4 -0
- package/dist/esm/patterns.d.ts.map +1 -0
- package/dist/esm/patterns.js +42 -0
- package/dist/esm/patterns.js.map +1 -0
- package/dist/esm/scroll.d.ts +8 -0
- package/dist/esm/scroll.d.ts.map +1 -0
- package/dist/esm/scroll.js +10 -0
- package/dist/esm/scroll.js.map +1 -0
- package/dist/esm/sgr/color/channel.d.ts +4 -0
- package/dist/esm/sgr/color/channel.d.ts.map +1 -0
- package/dist/esm/sgr/color/channel.js +30 -0
- package/dist/esm/sgr/color/channel.js.map +1 -0
- package/dist/esm/sgr/color/color.d.ts +4 -0
- package/dist/esm/sgr/color/color.d.ts.map +1 -0
- package/dist/esm/sgr/color/color.js +18 -0
- package/dist/esm/sgr/color/color.js.map +1 -0
- package/dist/esm/sgr/color/context.d.ts +13 -0
- package/dist/esm/sgr/color/context.d.ts.map +1 -0
- package/dist/esm/sgr/color/context.js +21 -0
- package/dist/esm/sgr/color/context.js.map +1 -0
- package/dist/esm/sgr/color/index.d.ts +2 -0
- package/dist/esm/sgr/color/index.d.ts.map +1 -0
- package/dist/esm/sgr/color/index.js +2 -0
- package/dist/esm/sgr/color/index.js.map +1 -0
- package/dist/esm/sgr/color/rgb.d.ts +5 -0
- package/dist/esm/sgr/color/rgb.d.ts.map +1 -0
- package/dist/esm/sgr/color/rgb.js +28 -0
- package/dist/esm/sgr/color/rgb.js.map +1 -0
- package/dist/esm/sgr/color/utils.d.ts +7 -0
- package/dist/esm/sgr/color/utils.d.ts.map +1 -0
- package/dist/esm/sgr/color/utils.js +53 -0
- package/dist/esm/sgr/color/utils.js.map +1 -0
- package/dist/esm/sgr/combine.d.ts +3 -0
- package/dist/esm/sgr/combine.d.ts.map +1 -0
- package/dist/esm/sgr/combine.js +11 -0
- package/dist/esm/sgr/combine.js.map +1 -0
- package/dist/esm/sgr/format-builder.d.ts +3 -0
- package/dist/esm/sgr/format-builder.d.ts.map +1 -0
- package/dist/esm/sgr/format-builder.js +30 -0
- package/dist/esm/sgr/format-builder.js.map +1 -0
- package/dist/esm/sgr/index.d.ts +3 -0
- package/dist/esm/sgr/index.d.ts.map +1 -0
- package/dist/esm/sgr/index.js +2 -0
- package/dist/esm/sgr/index.js.map +1 -0
- package/dist/esm/sgr/lazy.d.ts +6 -0
- package/dist/esm/sgr/lazy.d.ts.map +1 -0
- package/dist/esm/sgr/lazy.js +14 -0
- package/dist/esm/sgr/lazy.js.map +1 -0
- package/dist/esm/sgr/reset.d.ts +2 -0
- package/dist/esm/sgr/reset.d.ts.map +1 -0
- package/dist/esm/sgr/reset.js +2 -0
- package/dist/esm/sgr/reset.js.map +1 -0
- package/dist/esm/sgr/sgr.d.ts +4 -0
- package/dist/esm/sgr/sgr.d.ts.map +1 -0
- package/dist/esm/sgr/sgr.js +47 -0
- package/dist/esm/sgr/sgr.js.map +1 -0
- package/dist/esm/sgr/style.d.ts +3 -0
- package/dist/esm/sgr/style.d.ts.map +1 -0
- package/dist/esm/sgr/style.js +29 -0
- package/dist/esm/sgr/style.js.map +1 -0
- package/dist/esm/sgr/types.d.ts +59 -0
- package/dist/esm/sgr/types.d.ts.map +1 -0
- package/dist/esm/sgr/types.js +2 -0
- package/dist/{simplify → esm/sgr}/types.js.map +1 -1
- package/dist/esm/simplify/atom.d.ts +4 -0
- package/dist/esm/simplify/atom.d.ts.map +1 -0
- package/dist/esm/simplify/atom.js +33 -0
- package/dist/esm/simplify/atom.js.map +1 -0
- package/dist/esm/simplify/index.d.ts +2 -0
- package/dist/esm/simplify/index.d.ts.map +1 -0
- package/dist/esm/simplify/index.js +2 -0
- package/dist/esm/simplify/index.js.map +1 -0
- package/dist/esm/simplify/lookup.d.ts +3 -0
- package/dist/esm/simplify/lookup.d.ts.map +1 -0
- package/dist/esm/simplify/lookup.js +70 -0
- package/dist/esm/simplify/lookup.js.map +1 -0
- package/dist/esm/simplify/simplify.d.ts +3 -0
- package/dist/esm/simplify/simplify.d.ts.map +1 -0
- package/dist/esm/simplify/simplify.js +22 -0
- package/dist/esm/simplify/simplify.js.map +1 -0
- package/dist/esm/simplify/state.d.ts +5 -0
- package/dist/esm/simplify/state.d.ts.map +1 -0
- package/dist/esm/simplify/state.js +49 -0
- package/dist/esm/simplify/state.js.map +1 -0
- package/dist/esm/simplify/types.d.ts +9 -0
- package/dist/esm/simplify/types.d.ts.map +1 -0
- package/dist/esm/simplify/types.js +2 -0
- package/dist/esm/simplify/types.js.map +1 -0
- package/dist/esm/simplify/utils.d.ts +3 -0
- package/dist/esm/simplify/utils.d.ts.map +1 -0
- package/dist/esm/simplify/utils.js +28 -0
- package/dist/esm/simplify/utils.js.map +1 -0
- package/dist/esm/slice.d.ts +22 -0
- package/dist/esm/slice.d.ts.map +1 -0
- package/dist/esm/slice.js +69 -0
- package/dist/esm/slice.js.map +1 -0
- package/dist/esm/strip.d.ts +10 -0
- package/dist/esm/strip.d.ts.map +1 -0
- package/dist/esm/strip.js +8 -0
- package/dist/esm/strip.js.map +1 -0
- package/dist/esm/terminal.d.ts +26 -0
- package/dist/esm/terminal.d.ts.map +1 -0
- package/dist/esm/terminal.js +46 -0
- package/dist/{terminal.js.map → esm/terminal.js.map} +1 -1
- package/dist/esm/typed-object.d.ts +16 -0
- package/dist/esm/typed-object.d.ts.map +1 -0
- package/dist/esm/typed-object.js +33 -0
- package/dist/esm/typed-object.js.map +1 -0
- package/dist/esm/types.d.ts +25 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +2 -0
- package/dist/esm/types.js.map +1 -0
- package/package.json +14 -7
- package/src/ansi.ts +6 -3
- package/src/features/features.ts +1 -1
- package/src/index.ts +3 -1
- package/src/require.ts +11 -0
- package/dist/ansi.d.ts.map +0 -1
- package/dist/ansi.js.map +0 -1
- package/dist/caret.d.ts.map +0 -1
- package/dist/erase.d.ts.map +0 -1
- package/dist/features/build.d.ts.map +0 -1
- package/dist/features/build.js.map +0 -1
- package/dist/features/detect.d.ts.map +0 -1
- package/dist/features/detect.js.map +0 -1
- package/dist/features/features.d.ts.map +0 -1
- package/dist/features/features.js.map +0 -1
- package/dist/features/index.d.ts.map +0 -1
- package/dist/features/index.js.map +0 -1
- package/dist/features/types.d.ts.map +0 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -24
- package/dist/index.js.map +0 -1
- package/dist/pad.d.ts.map +0 -1
- package/dist/pad.js.map +0 -1
- package/dist/patterns.d.ts.map +0 -1
- package/dist/patterns.js.map +0 -1
- package/dist/scroll.d.ts.map +0 -1
- package/dist/scroll.js.map +0 -1
- package/dist/sgr/color/channel.d.ts.map +0 -1
- package/dist/sgr/color/channel.js.map +0 -1
- package/dist/sgr/color/color.d.ts.map +0 -1
- package/dist/sgr/color/color.js.map +0 -1
- package/dist/sgr/color/context.d.ts.map +0 -1
- package/dist/sgr/color/context.js.map +0 -1
- package/dist/sgr/color/index.d.ts.map +0 -1
- package/dist/sgr/color/index.js.map +0 -1
- package/dist/sgr/color/rgb.d.ts.map +0 -1
- package/dist/sgr/color/rgb.js.map +0 -1
- package/dist/sgr/color/utils.d.ts.map +0 -1
- package/dist/sgr/color/utils.js.map +0 -1
- package/dist/sgr/combine.d.ts.map +0 -1
- package/dist/sgr/combine.js.map +0 -1
- package/dist/sgr/format-builder.d.ts.map +0 -1
- package/dist/sgr/format-builder.js.map +0 -1
- package/dist/sgr/index.d.ts.map +0 -1
- package/dist/sgr/index.js.map +0 -1
- package/dist/sgr/lazy.d.ts.map +0 -1
- package/dist/sgr/lazy.js.map +0 -1
- package/dist/sgr/reset.d.ts.map +0 -1
- package/dist/sgr/reset.js.map +0 -1
- package/dist/sgr/sgr.d.ts.map +0 -1
- package/dist/sgr/sgr.js.map +0 -1
- package/dist/sgr/style.d.ts.map +0 -1
- package/dist/sgr/style.js.map +0 -1
- package/dist/sgr/types.d.ts.map +0 -1
- package/dist/simplify/atom.d.ts.map +0 -1
- package/dist/simplify/atom.js.map +0 -1
- package/dist/simplify/index.d.ts.map +0 -1
- package/dist/simplify/index.js.map +0 -1
- package/dist/simplify/lookup.d.ts.map +0 -1
- package/dist/simplify/lookup.js.map +0 -1
- package/dist/simplify/simplify.d.ts.map +0 -1
- package/dist/simplify/simplify.js.map +0 -1
- package/dist/simplify/state.d.ts.map +0 -1
- package/dist/simplify/state.js.map +0 -1
- package/dist/simplify/types.d.ts.map +0 -1
- package/dist/simplify/utils.d.ts.map +0 -1
- package/dist/simplify/utils.js.map +0 -1
- package/dist/slice.d.ts.map +0 -1
- package/dist/slice.js.map +0 -1
- package/dist/strip.d.ts.map +0 -1
- package/dist/strip.js.map +0 -1
- package/dist/terminal.d.ts.map +0 -1
- package/dist/typed-object.d.ts.map +0 -1
- package/dist/typed-object.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- /package/dist/{caret.d.ts → cjs/caret.d.ts} +0 -0
- /package/dist/{caret.js → cjs/caret.js} +0 -0
- /package/dist/{erase.d.ts → cjs/erase.d.ts} +0 -0
- /package/dist/{erase.js → cjs/erase.js} +0 -0
- /package/dist/{features → cjs/features}/build.d.ts +0 -0
- /package/dist/{features → cjs/features}/build.js +0 -0
- /package/dist/{features → cjs/features}/detect.d.ts +0 -0
- /package/dist/{features → cjs/features}/detect.js +0 -0
- /package/dist/{features → cjs/features}/features.d.ts +0 -0
- /package/dist/{features → cjs/features}/index.d.ts +0 -0
- /package/dist/{features → cjs/features}/index.js +0 -0
- /package/dist/{features → cjs/features}/types.d.ts +0 -0
- /package/dist/{features → cjs/features}/types.js +0 -0
- /package/dist/{pad.d.ts → cjs/pad.d.ts} +0 -0
- /package/dist/{pad.js → cjs/pad.js} +0 -0
- /package/dist/{patterns.d.ts → cjs/patterns.d.ts} +0 -0
- /package/dist/{patterns.js → cjs/patterns.js} +0 -0
- /package/dist/{scroll.d.ts → cjs/scroll.d.ts} +0 -0
- /package/dist/{scroll.js → cjs/scroll.js} +0 -0
- /package/dist/{sgr → cjs/sgr}/color/channel.d.ts +0 -0
- /package/dist/{sgr → cjs/sgr}/color/channel.js +0 -0
- /package/dist/{sgr → cjs/sgr}/color/color.d.ts +0 -0
- /package/dist/{sgr → cjs/sgr}/color/color.js +0 -0
- /package/dist/{sgr → cjs/sgr}/color/context.d.ts +0 -0
- /package/dist/{sgr → cjs/sgr}/color/context.js +0 -0
- /package/dist/{sgr → cjs/sgr}/color/index.d.ts +0 -0
- /package/dist/{sgr → cjs/sgr}/color/index.js +0 -0
- /package/dist/{sgr → cjs/sgr}/color/rgb.d.ts +0 -0
- /package/dist/{sgr → cjs/sgr}/color/rgb.js +0 -0
- /package/dist/{sgr → cjs/sgr}/color/utils.d.ts +0 -0
- /package/dist/{sgr → cjs/sgr}/color/utils.js +0 -0
- /package/dist/{sgr → cjs/sgr}/combine.d.ts +0 -0
- /package/dist/{sgr → cjs/sgr}/combine.js +0 -0
- /package/dist/{sgr → cjs/sgr}/format-builder.d.ts +0 -0
- /package/dist/{sgr → cjs/sgr}/format-builder.js +0 -0
- /package/dist/{sgr → cjs/sgr}/index.d.ts +0 -0
- /package/dist/{sgr → cjs/sgr}/index.js +0 -0
- /package/dist/{sgr → cjs/sgr}/lazy.d.ts +0 -0
- /package/dist/{sgr → cjs/sgr}/lazy.js +0 -0
- /package/dist/{sgr → cjs/sgr}/reset.d.ts +0 -0
- /package/dist/{sgr → cjs/sgr}/reset.js +0 -0
- /package/dist/{sgr → cjs/sgr}/sgr.d.ts +0 -0
- /package/dist/{sgr → cjs/sgr}/sgr.js +0 -0
- /package/dist/{sgr → cjs/sgr}/style.d.ts +0 -0
- /package/dist/{sgr → cjs/sgr}/style.js +0 -0
- /package/dist/{sgr → cjs/sgr}/types.d.ts +0 -0
- /package/dist/{sgr → cjs/sgr}/types.js +0 -0
- /package/dist/{simplify → cjs/simplify}/atom.d.ts +0 -0
- /package/dist/{simplify → cjs/simplify}/atom.js +0 -0
- /package/dist/{simplify → cjs/simplify}/index.d.ts +0 -0
- /package/dist/{simplify → cjs/simplify}/index.js +0 -0
- /package/dist/{simplify → cjs/simplify}/lookup.d.ts +0 -0
- /package/dist/{simplify → cjs/simplify}/lookup.js +0 -0
- /package/dist/{simplify → cjs/simplify}/simplify.d.ts +0 -0
- /package/dist/{simplify → cjs/simplify}/simplify.js +0 -0
- /package/dist/{simplify → cjs/simplify}/state.d.ts +0 -0
- /package/dist/{simplify → cjs/simplify}/state.js +0 -0
- /package/dist/{simplify → cjs/simplify}/types.d.ts +0 -0
- /package/dist/{simplify → cjs/simplify}/types.js +0 -0
- /package/dist/{simplify → cjs/simplify}/utils.d.ts +0 -0
- /package/dist/{simplify → cjs/simplify}/utils.js +0 -0
- /package/dist/{slice.d.ts → cjs/slice.d.ts} +0 -0
- /package/dist/{strip.d.ts → cjs/strip.d.ts} +0 -0
- /package/dist/{strip.js → cjs/strip.js} +0 -0
- /package/dist/{terminal.d.ts → cjs/terminal.d.ts} +0 -0
- /package/dist/{terminal.js → cjs/terminal.js} +0 -0
- /package/dist/{typed-object.d.ts → cjs/typed-object.d.ts} +0 -0
- /package/dist/{typed-object.js → cjs/typed-object.js} +0 -0
- /package/dist/{types.d.ts → cjs/types.d.ts} +0 -0
- /package/dist/{types.js → cjs/types.js} +0 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/*
|
|
2
|
+
I'm freezing these to prevent accidental mutation of the `lastIndex` property, which could keep
|
|
3
|
+
future calls from starting at the beginning of the string.
|
|
4
|
+
|
|
5
|
+
Code using these objects will have to clone them (with `new RegExp(rx)`) before using functions
|
|
6
|
+
that modify `lastIndex` (such as `exec`). But according to my benchmarks, cloning the regex takes
|
|
7
|
+
mere nanoseconds, and it wasn't even measurable when operating on longer strings. V8 clearly uses a
|
|
8
|
+
global cache of compiled regexes. I assume that SpiderMonkey does the same thing.
|
|
9
|
+
|
|
10
|
+
Here are my `timeit` benchmark results:
|
|
11
|
+
|
|
12
|
+
```js
|
|
13
|
+
const {timeit} = require("$timeit");
|
|
14
|
+
|
|
15
|
+
const rxSGR = /\x1b\[[\d;]*m/g;
|
|
16
|
+
const short = "\x1b[31mred \x1b[32mgreen \x1b[34mblue \x1b[0m";
|
|
17
|
+
const long = short.repeat(1000);
|
|
18
|
+
|
|
19
|
+
timeit(() => short.replace(rxSGR, ""), {description: "short - no clone "});
|
|
20
|
+
timeit(() => short.replace(new RegExp(rxSGR), ""), {description: "short - clone object "});
|
|
21
|
+
timeit(() => short.replace(new RegExp(rxSGR.source, "g"), ""), {description: "short - clone source "});
|
|
22
|
+
|
|
23
|
+
console.log();
|
|
24
|
+
|
|
25
|
+
timeit(() => long .replace(rxSGR, ""), {description: "long - no clone "});
|
|
26
|
+
timeit(() => long .replace(new RegExp(rxSGR), ""), {description: "long - clone object "});
|
|
27
|
+
timeit(() => long .replace(new RegExp(rxSGR.source, "g"), ""), {description: "long - clone source "});
|
|
28
|
+
|
|
29
|
+
// Output:
|
|
30
|
+
// short - no clone : 82.73 ns (12,087,731 in 1.000016982 s)
|
|
31
|
+
// short - clone object : 142.132 ns (7,035,692 in 1.0000001770000002 s)
|
|
32
|
+
// short - clone source : 127.872 ns (7,820,293 in 1.00000017 s)
|
|
33
|
+
//
|
|
34
|
+
// long - no clone : 47.953 ųs (20,854 in 1.0000098149999999 s)
|
|
35
|
+
// long - clone object : 46.713 ųs (21,408 in 1.0000285520000003 s)
|
|
36
|
+
// long - clone source : 46.491 ųs (21,510 in 1.000026492 s)
|
|
37
|
+
```
|
|
38
|
+
*/
|
|
39
|
+
export const rxSGR = Object.freeze(/\x1b\[[\d;]*m/g);
|
|
40
|
+
export const rxCSI = Object.freeze(/\x1b\[[0-?]*[ -/]*[@-~]/g);
|
|
41
|
+
export const rxUnsafe = Object.freeze(/\x1b\[[0-?]*[ -/]*[@-ln-~]/g); // Everything except SGR codes (m).
|
|
42
|
+
//# sourceMappingURL=patterns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patterns.js","sourceRoot":"","sources":["../../src/patterns.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqCE;AAEF,MAAM,CAAC,MAAM,KAAK,GAAM,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACxD,MAAM,CAAC,MAAM,KAAK,GAAM,MAAM,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC;AAClE,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC,CAAC,mCAAmC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scroll.d.ts","sourceRoot":"","sources":["../../src/scroll.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,MAAM;iBACK,MAAM,KAAG,MAAM;mBACf,MAAM,KAAG,MAAM;CAC/B,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC;AAOnC,eAAO,MAAM,UAAU,GAAI,iBAAc,KAAG,MAAqC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
const scroll = {
|
|
2
|
+
up: (lines) => `\x1b[${lines ?? 1}S`,
|
|
3
|
+
down: (lines) => `\x1b[${lines ?? 1}T`,
|
|
4
|
+
};
|
|
5
|
+
const disabled = {
|
|
6
|
+
up: () => "",
|
|
7
|
+
down: () => "",
|
|
8
|
+
};
|
|
9
|
+
export const makeScroll = (enabled = true) => enabled ? scroll : disabled;
|
|
10
|
+
//# sourceMappingURL=scroll.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scroll.js","sourceRoot":"","sources":["../../src/scroll.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,GAAG;IACd,EAAE,EAAK,CAAC,KAAc,EAAU,EAAE,CAAC,QAAQ,KAAK,IAAI,CAAC,GAAG;IACxD,IAAI,EAAG,CAAC,KAAc,EAAU,EAAE,CAAC,QAAQ,KAAK,IAAI,CAAC,GAAG;CACxD,CAAC;AAIF,MAAM,QAAQ,GAAW;IACxB,EAAE,EAAK,GAAG,EAAE,CAAC,EAAE;IACf,IAAI,EAAG,GAAG,EAAE,CAAC,EAAE;CACf,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAO,GAAG,IAAI,EAAU,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ColorDepth } from "../../features";
|
|
2
|
+
import type { ChainKey, Channel, ColorKey, FormatBuilder, Style } from "../types";
|
|
3
|
+
export declare function makeChannel(keys: ReadonlySet<ChainKey>, makeFormatter: FormatBuilder, style: Style, colorDepth: ColorDepth, channel: ColorKey): Channel;
|
|
4
|
+
//# sourceMappingURL=channel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../../../src/sgr/color/channel.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,UAAU,EAAC,MAA6C,gBAAgB,CAAC;AACtF,OAAO,KAAK,EAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAC,MAAM,UAAU,CAAC;AAahF,wBAAgB,WAAW,CAC1B,IAAI,EAAY,WAAW,CAAC,QAAQ,CAAC,EACrC,aAAa,EAAG,aAAa,EAC7B,KAAK,EAAW,KAAK,EACrB,UAAU,EAAM,UAAU,EAC1B,OAAO,EAAS,QAAQ,GACtB,OAAO,CAmBT"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { lazy } from "../lazy.js";
|
|
2
|
+
import { buildContext } from "./context.js";
|
|
3
|
+
import { makeRGB, makeX256 } from "./rgb.js";
|
|
4
|
+
const colors = [
|
|
5
|
+
"black",
|
|
6
|
+
"red",
|
|
7
|
+
"green",
|
|
8
|
+
"yellow",
|
|
9
|
+
"blue",
|
|
10
|
+
"magenta",
|
|
11
|
+
"cyan",
|
|
12
|
+
"white",
|
|
13
|
+
];
|
|
14
|
+
export function makeChannel(keys, makeFormatter, style, colorDepth, channel) {
|
|
15
|
+
const ctx = buildContext(keys, makeFormatter, style, colorDepth, channel);
|
|
16
|
+
const { build, bright, open, close } = ctx;
|
|
17
|
+
const rtn = {
|
|
18
|
+
rgb: makeRGB(ctx),
|
|
19
|
+
x256: makeX256(ctx),
|
|
20
|
+
default: colorDepth > 1 ? `\x1b[${close}m` : "",
|
|
21
|
+
};
|
|
22
|
+
for (let i = 0; i < colors.length; i++) {
|
|
23
|
+
const color = colors[i];
|
|
24
|
+
const brightColor = `bright${color[0].toUpperCase()}${color.slice(1)}`;
|
|
25
|
+
lazy.add(rtn, color, () => build(open + i));
|
|
26
|
+
lazy.add(rtn, brightColor, () => bright(i));
|
|
27
|
+
}
|
|
28
|
+
return rtn;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=channel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel.js","sourceRoot":"","sources":["../../../../src/sgr/color/channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAmB,SAAS,CAAC;AAC1C,OAAO,EAAC,YAAY,EAAC,MAAW,WAAW,CAAC;AAC5C,OAAO,EAAC,OAAO,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAKxC,MAAM,MAAM,GAAG;IACd,OAAO;IACP,KAAK;IACL,OAAO;IACP,QAAQ;IACR,MAAM;IACN,SAAS;IACT,MAAM;IACN,OAAO;CACE,CAAC;AAEX,MAAM,UAAU,WAAW,CAC1B,IAAqC,EACrC,aAA6B,EAC7B,KAAqB,EACrB,UAA0B,EAC1B,OAAwB;IAExB,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAC1E,MAAM,EAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAC,GAAG,GAAG,CAAC;IAEzC,MAAM,GAAG,GAAG;QACX,GAAG,EAAO,OAAO,CAAC,GAAG,CAAC;QACtB,IAAI,EAAM,QAAQ,CAAC,GAAG,CAAC;QACvB,OAAO,EAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE;KACrC,CAAC;IAEb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,KAAK,GAAS,MAAM,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,WAAW,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAEvE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;QAClD,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,GAAG,CAAC;AACZ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ColorDepth } from "../../features";
|
|
2
|
+
import type { ChainKey, Color, FormatBuilder, Style } from "../types";
|
|
3
|
+
export declare function makeColor(keys: ReadonlySet<ChainKey>, makeFormatter: FormatBuilder, style: Style, colorDepth: ColorDepth): Color<any>;
|
|
4
|
+
//# sourceMappingURL=color.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../../../src/sgr/color/color.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAiC,gBAAgB,CAAC;AAC1E,OAAO,KAAK,EAAC,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAC,MAAM,UAAU,CAAC;AAIpE,wBAAgB,SAAS,CACxB,IAAI,EAAY,WAAW,CAAC,QAAQ,CAAC,EACrC,aAAa,EAAG,aAAa,EAC7B,KAAK,EAAW,KAAK,EACrB,UAAU,EAAM,UAAU,GACxB,KAAK,CAAC,GAAG,CAAC,CAcZ"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
import { lazy } from "../lazy.js";
|
|
3
|
+
import { makeChannel } from "./channel.js";
|
|
4
|
+
const channels = ["fg", "bg"];
|
|
5
|
+
export function makeColor(keys, makeFormatter, style, colorDepth) {
|
|
6
|
+
const rtn = {};
|
|
7
|
+
for (const channel of channels) {
|
|
8
|
+
if (keys.has(channel)) {
|
|
9
|
+
lazy.add(rtn, channel, () => {
|
|
10
|
+
const newKeys = new Set(keys);
|
|
11
|
+
newKeys.delete(channel);
|
|
12
|
+
return makeChannel(newKeys, makeFormatter, style, colorDepth, channel);
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return rtn;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=color.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"color.js","sourceRoot":"","sources":["../../../../src/sgr/color/color.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAC,IAAI,EAAC,MAAa,SAAS,CAAC;AACpC,OAAO,EAAC,WAAW,EAAC,MAAM,WAAW,CAAC;AAKtC,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,IAAI,CAAU,CAAC;AAEvC,MAAM,UAAU,SAAS,CACxB,IAAqC,EACrC,aAA6B,EAC7B,KAAqB,EACrB,UAA0B;IAE1B,MAAM,GAAG,GAAG,EAAgB,CAAC;IAE7B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE;gBAC3B,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC9B,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACxB,OAAO,WAAW,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YACxE,CAAC,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAED,OAAO,GAAG,CAAC;AACZ,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ColorDepth } from "../../features";
|
|
2
|
+
import type { ChainKey, Code, ColorKey, Format, FormatBuilder, Style } from "../types";
|
|
3
|
+
export declare function buildContext(keys: ReadonlySet<ChainKey>, makeFormatter: FormatBuilder, style: Style, colorDepth: ColorDepth, channel: ColorKey): {
|
|
4
|
+
colorDepth: ColorDepth;
|
|
5
|
+
channel: ColorKey;
|
|
6
|
+
open: number;
|
|
7
|
+
close: number;
|
|
8
|
+
build: (open: Code) => Format;
|
|
9
|
+
bright: (index: number) => Format;
|
|
10
|
+
x16ToX8: (code: number) => Format;
|
|
11
|
+
};
|
|
12
|
+
export type Context = ReturnType<typeof buildContext>;
|
|
13
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/sgr/color/context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAc,aAAa,EAAE,KAAK,EAAC,MAAM,UAAU,CAAC;AAOjG,wBAAgB,YAAY,CAC3B,IAAI,EAAY,WAAW,CAAC,QAAQ,CAAC,EACrC,aAAa,EAAG,aAAa,EAC7B,KAAK,EAAW,KAAK,EACrB,UAAU,EAAM,UAAU,EAC1B,OAAO,EAAS,QAAQ;;;;;kBAIH,IAAI,KAAG,MAAM;oBAQZ,MAAM,KAAK,MAAM;oBAQjB,MAAM,KAAK,MAAM;EAMvC;AAED,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { combineCodes } from "../combine.js";
|
|
2
|
+
const baseCodes = {
|
|
3
|
+
fg: { open: 30, close: 39 },
|
|
4
|
+
bg: { open: 40, close: 49 },
|
|
5
|
+
};
|
|
6
|
+
export function buildContext(keys, makeFormatter, style, colorDepth, channel) {
|
|
7
|
+
const { open, close } = baseCodes[channel];
|
|
8
|
+
const build = (open) => makeFormatter(keys, open, close);
|
|
9
|
+
const combine = (base, style) => makeFormatter(keys, combineCodes(base.codes.open, style.codes.open), combineCodes(base.codes.close, style.codes.close));
|
|
10
|
+
const bright = colorDepth >= 4 ? index => build(open + 60 + index) :
|
|
11
|
+
colorDepth === 3 ?
|
|
12
|
+
channel === "fg" ?
|
|
13
|
+
index => combine(style.bold, build(open + index)) :
|
|
14
|
+
index => build(open + index) :
|
|
15
|
+
() => build(0);
|
|
16
|
+
const x16ToX8 = channel === "fg" ?
|
|
17
|
+
code => code >= 60 ? combine(style.bold, build(open + code - 60)) : build(open + code) :
|
|
18
|
+
code => code >= 60 ? build(open + code - 60) : build(open + code);
|
|
19
|
+
return { colorDepth, channel, open, close, build, bright, x16ToX8 };
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../../src/sgr/color/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,YAAY,CAAC;AAKxC,MAAM,SAAS,GAAG;IACjB,EAAE,EAAE,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAC;IACzB,EAAE,EAAE,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAC;CACzB,CAAC;AAEF,MAAM,UAAU,YAAY,CAC3B,IAAqC,EACrC,aAA6B,EAC7B,KAAqB,EACrB,UAA0B,EAC1B,OAAwB;IAExB,MAAM,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAEzC,MAAM,KAAK,GAAG,CAAC,IAAU,EAAU,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAEvE,MAAM,OAAO,GAAG,CAAC,IAAgB,EAAE,KAAiB,EAAU,EAAE,CAAC,aAAa,CAC7E,IAAI,EACJ,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAChD,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CACjD,CAAC;IAEF,MAAM,MAAM,GACX,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;QACrD,UAAU,KAAK,CAAC,CAAC,CAAC;YACjB,OAAO,KAAK,IAAI,CAAC,CAAC;gBACjB,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACnD,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;YAChC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEhB,MAAM,OAAO,GACZ,OAAO,KAAK,IAAI,CAAC,CAAC;QACjB,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;QACxF,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IAEpE,OAAO,EAAC,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAC,CAAC;AACnE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/sgr/color/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/sgr/color/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Channel, Format } from "../types";
|
|
2
|
+
import type { Context } from "./context";
|
|
3
|
+
export declare function makeRGB(ctx: Context): Channel["rgb"];
|
|
4
|
+
export declare function makeX256(ctx: Context): (...args: [number] | [number, number, number]) => Format;
|
|
5
|
+
//# sourceMappingURL=rgb.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rgb.d.ts","sourceRoot":"","sources":["../../../../src/sgr/color/rgb.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,OAAO,EAAE,MAAM,EAAC,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,EAAC,OAAO,EAAC,MAAc,WAAW,CAAC;AAE/C,wBAAgB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAapD;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,MAAM,CA2B/F"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { clip, rgbToX256, rgbToX16, rgbToX8, x256ToRgb } from "./utils.js";
|
|
2
|
+
export function makeRGB(ctx) {
|
|
3
|
+
const { colorDepth, channel, build, open, x16ToX8 } = ctx;
|
|
4
|
+
return (colorDepth >= 24 ? (r, g, b) => build([open + 8, 2, ...clip(r, g, b)]) :
|
|
5
|
+
colorDepth >= 8 ? (r, g, b) => build([open + 8, 5, rgbToX256(...clip(r, g, b))]) :
|
|
6
|
+
colorDepth >= 4 ? (r, g, b) => build(open + rgbToX16(...clip(r, g, b))) :
|
|
7
|
+
colorDepth === 3 ?
|
|
8
|
+
channel === "fg" ?
|
|
9
|
+
(r, g, b) => x16ToX8(rgbToX16(...clip(r, g, b))) :
|
|
10
|
+
(r, g, b) => build(open + rgbToX8(...clip(r, g, b))) :
|
|
11
|
+
() => build(0));
|
|
12
|
+
}
|
|
13
|
+
export function makeX256(ctx) {
|
|
14
|
+
const { colorDepth, channel, build, open, x16ToX8 } = ctx;
|
|
15
|
+
return (colorDepth >= 8 ?
|
|
16
|
+
(...args) => build([open + 8, 5, args.length === 3 ? rgbToX256(...clip(...args)) : clip(args[0])]) :
|
|
17
|
+
colorDepth >= 4 ?
|
|
18
|
+
(...args) => build(open +
|
|
19
|
+
rgbToX16(...(args.length === 3 ? clip(...args) : x256ToRgb(clip(args[0]))))) :
|
|
20
|
+
colorDepth === 3 ?
|
|
21
|
+
channel === "fg" ?
|
|
22
|
+
(...args) => x16ToX8(args.length === 3 ?
|
|
23
|
+
rgbToX16(...clip(...args)) :
|
|
24
|
+
rgbToX16(...x256ToRgb(clip(args[0])))) :
|
|
25
|
+
(...args) => build(open + rgbToX8(...args.length === 3 ? clip(...args) : x256ToRgb(clip(args[0])))) :
|
|
26
|
+
() => build(0));
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=rgb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rgb.js","sourceRoot":"","sources":["../../../../src/sgr/color/rgb.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare function rgbToX256(r: number, g: number, b: number): number;
|
|
2
|
+
export declare function x256ToRgb(code: number): [number, number, number];
|
|
3
|
+
export declare function rgbToX16(r: number, g: number, b: number): number;
|
|
4
|
+
export declare function rgbToX8(r: number, g: number, b: number): number;
|
|
5
|
+
export declare function clip(x: number): number;
|
|
6
|
+
export declare function clip(r: number, g: number, b: number): [number, number, number];
|
|
7
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/sgr/color/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAajE;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAYhE;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAiBhE;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAM/D;AAED,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;AACxC,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export function rgbToX256(r, g, b) {
|
|
2
|
+
if (r === g && g === b) {
|
|
3
|
+
// grayscale
|
|
4
|
+
return 232 + Math.floor(r * 24 / 256);
|
|
5
|
+
}
|
|
6
|
+
// 6x6x6 color cube
|
|
7
|
+
return (16 +
|
|
8
|
+
Math.floor(r * 6 / 256) * 36 +
|
|
9
|
+
Math.floor(g * 6 / 256) * 6 +
|
|
10
|
+
Math.floor(b * 6 / 256));
|
|
11
|
+
}
|
|
12
|
+
export function x256ToRgb(code) {
|
|
13
|
+
if (code >= 232) {
|
|
14
|
+
// grayscale
|
|
15
|
+
const gray = Math.round((code - 232) * 255 / 24);
|
|
16
|
+
return [gray, gray, gray];
|
|
17
|
+
}
|
|
18
|
+
code -= 16;
|
|
19
|
+
const r = Math.floor(code / 36) * 51;
|
|
20
|
+
const g = Math.floor((code % 36) / 6) * 51;
|
|
21
|
+
const b = (code % 6) * 51;
|
|
22
|
+
return [r, g, b];
|
|
23
|
+
}
|
|
24
|
+
export function rgbToX16(r, g, b) {
|
|
25
|
+
// First calculate it as a 4x4x4 cube.
|
|
26
|
+
r = Math.min(2, Math.floor(r / 85));
|
|
27
|
+
g = Math.min(2, Math.floor(g / 85));
|
|
28
|
+
b = Math.min(2, Math.floor(b / 85));
|
|
29
|
+
// Which channels are "on" determines the hue (ANSI color index 0–7).
|
|
30
|
+
const index = (r ? 1 : 0) | (g ? 2 : 0) | (b ? 4 : 0);
|
|
31
|
+
// The bright bit is derived from the max channel level across all three.
|
|
32
|
+
const twos = (r === 2 ? 1 : 0) + (g === 2 ? 1 : 0) + (b === 2 ? 1 : 0);
|
|
33
|
+
const ones = (r === 1 ? 1 : 0) + (g === 1 ? 1 : 0) + (b === 1 ? 1 : 0);
|
|
34
|
+
const bright = twos > 0 && twos >= ones;
|
|
35
|
+
// Return value uses the SGR offset scheme: 0–7 for normal, 60–67 for bright.
|
|
36
|
+
return index + (bright ? 60 : 0);
|
|
37
|
+
}
|
|
38
|
+
export function rgbToX8(r, g, b) {
|
|
39
|
+
r = r >= 128 ? 1 : 0;
|
|
40
|
+
g = g >= 128 ? 1 : 0;
|
|
41
|
+
b = b >= 128 ? 1 : 0;
|
|
42
|
+
return (r ? 1 : 0) | (g ? 2 : 0) | (b ? 4 : 0);
|
|
43
|
+
}
|
|
44
|
+
export function clip(...args) {
|
|
45
|
+
return args.length === 1 ?
|
|
46
|
+
Math.max(0, Math.min(255, Math.floor(args[0]))) :
|
|
47
|
+
[
|
|
48
|
+
Math.max(0, Math.min(255, Math.floor(args[0]))),
|
|
49
|
+
Math.max(0, Math.min(255, Math.floor(args[1]))),
|
|
50
|
+
Math.max(0, Math.min(255, Math.floor(args[2]))),
|
|
51
|
+
];
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/sgr/color/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"combine.d.ts","sourceRoot":"","sources":["../../../src/sgr/combine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,SAAS,CAAC;AAElC,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAUzD"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export function combineCodes(base, code) {
|
|
2
|
+
const set = new Set(Array.isArray(base) ? [...base] : [base]);
|
|
3
|
+
if (Array.isArray(code)) {
|
|
4
|
+
for (const c of code)
|
|
5
|
+
set.add(c);
|
|
6
|
+
}
|
|
7
|
+
else
|
|
8
|
+
set.add(code);
|
|
9
|
+
return [...set];
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=combine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"combine.js","sourceRoot":"","sources":["../../../src/sgr/combine.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,YAAY,CAAC,IAAU,EAAE,IAAU;IAClD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAE9D,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,KAAK,MAAM,CAAC,IAAI,IAAI;YACnB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACb,CAAC;;QACA,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAEf,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-builder.d.ts","sourceRoot":"","sources":["../../../src/sgr/format-builder.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,YAAY,EAAsC,aAAa,EAAC,MAAM,SAAS,CAAC;AAY7F,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,UAAO,GAAG,aAAa,CA+BxF"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { define } from "@peteanderson/props";
|
|
2
|
+
import { lazy } from "./lazy.js";
|
|
3
|
+
const codeSequence = (code) => Array.isArray(code) ? code.join(';') : code;
|
|
4
|
+
const chain = (makeChain, keys, baseFormat) => !keys.size
|
|
5
|
+
? baseFormat
|
|
6
|
+
: lazy.add(baseFormat, "and", () => makeChain(keys, baseFormat));
|
|
7
|
+
export function makeFormatBuilder(makeChain, enabled = true) {
|
|
8
|
+
if (enabled) {
|
|
9
|
+
return (keys, open, close, reset) => {
|
|
10
|
+
const openCode = codeSequence(open);
|
|
11
|
+
const closeCode = codeSequence(close);
|
|
12
|
+
const openSequence = `\x1b[${openCode}m`;
|
|
13
|
+
const closeSequence = `\x1b[${closeCode}m`;
|
|
14
|
+
const reopenCode = reset ? `${closeCode};${openCode}` : openCode;
|
|
15
|
+
const rxClose = new RegExp(`(?<start>\\x1b\\[(?:\\d+;)*)${closeCode}(?<end>(?:;\\d+)*m)`, "g");
|
|
16
|
+
const replace = `$<start>${reopenCode}$<end>`;
|
|
17
|
+
return chain(makeChain, keys, define((s) => s ? openSequence + s.replace(rxClose, replace) + closeSequence : s, {
|
|
18
|
+
open: { value: openSequence, enumerable: true },
|
|
19
|
+
close: { value: closeSequence, enumerable: true },
|
|
20
|
+
codes: { value: { open, close }, enumerable: true },
|
|
21
|
+
}));
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
return keys => chain(makeChain, keys, define((s) => s, {
|
|
25
|
+
open: { value: "", enumerable: true },
|
|
26
|
+
close: { value: "", enumerable: true },
|
|
27
|
+
codes: { value: { open: [], close: [] }, enumerable: true },
|
|
28
|
+
}));
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=format-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-builder.js","sourceRoot":"","sources":["../../../src/sgr/format-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAC,IAAI,EAAC,MAAQ,QAAQ,CAAC;AAI9B,MAAM,YAAY,GAAG,CAAC,IAAU,EAAmB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAElG,MAAM,KAAK,GAAG,CACb,SAAyB,EACzB,IAA8B,EAC9B,UAAuB,EACR,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI;IAC5B,CAAC,CAAC,UAA0B;IAC5B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;AAElE,MAAM,UAAU,iBAAiB,CAAC,SAAuB,EAAE,OAAO,GAAG,IAAI;IACxE,IAAI,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACnC,MAAM,QAAQ,GAAQ,YAAY,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,SAAS,GAAO,YAAY,CAAC,KAAK,CAAC,CAAC;YAC1C,MAAM,YAAY,GAAI,QAAQ,QAAQ,GAAG,CAAC;YAC1C,MAAM,aAAa,GAAG,QAAQ,SAAS,GAAG,CAAC;YAC3C,MAAM,UAAU,GAAM,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;YAEpE,MAAM,OAAO,GAAG,IAAI,MAAM,CACzB,+BAA+B,SAAS,qBAAqB,EAC7D,GAAG,CACH,CAAC;YACF,MAAM,OAAO,GAAG,WAAW,UAAU,QAAQ,CAAC;YAE9C,OAAO,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CACnC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,EACjF;gBACC,IAAI,EAAI,EAAC,KAAK,EAAE,YAAY,EAAG,UAAU,EAAE,IAAI,EAAC;gBAChD,KAAK,EAAG,EAAC,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,IAAI,EAAC;gBAChD,KAAK,EAAG,EAAC,KAAK,EAAE,EAAC,IAAI,EAAE,KAAK,EAAC,EAAE,UAAU,EAAE,IAAI,EAAC;aAChD,CACD,CAAC,CAAC;QACJ,CAAC,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,EAAE;QAC9D,IAAI,EAAI,EAAC,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAC;QACrC,KAAK,EAAG,EAAC,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAC;QACrC,KAAK,EAAG,EAAC,KAAK,EAAE,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAC,EAAE,UAAU,EAAE,IAAI,EAAC;KACxD,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sgr/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AAEtB,OAAO,EAAC,GAAG,EAAC,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/sgr/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { GetterProperty } from "@peteanderson/props";
|
|
2
|
+
export declare function lazy<K extends keyof any, V>(key: K, get: () => V): GetterProperty<V>;
|
|
3
|
+
export declare namespace lazy {
|
|
4
|
+
var add: <T extends object, K extends keyof any, V>(obj: T, key: K, get: () => V) => T & { [k in K]: V; };
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=lazy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../../../src/sgr/lazy.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,qBAAqB,CAAC;AAExD,wBAAgB,IAAI,CAAC,CAAC,SAAS,MAAM,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAUpF;yBAVe,IAAI;cAYR,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,GAAG,EAAE,CAAC,OAC7C,CAAC,OACD,CAAC,OACD,MAAM,CAAC,KACX,CAAC,GAAG,GAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { define } from "@peteanderson/props";
|
|
2
|
+
export function lazy(key, get) {
|
|
3
|
+
return {
|
|
4
|
+
get() {
|
|
5
|
+
const value = get();
|
|
6
|
+
define(this, key, { value, enumerable: true });
|
|
7
|
+
return value;
|
|
8
|
+
},
|
|
9
|
+
enumerable: true,
|
|
10
|
+
configurable: true,
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
lazy.add = (obj, key, get) => define(obj, key, lazy(key, get));
|
|
14
|
+
//# sourceMappingURL=lazy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lazy.js","sourceRoot":"","sources":["../../../src/sgr/lazy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,qBAAqB,CAAC;AAI3C,MAAM,UAAU,IAAI,CAAyB,GAAM,EAAE,GAAY;IAChE,OAAO;QACN,GAAG;YACF,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,EAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAC,CAAC,CAAC;YAC7C,OAAO,KAAK,CAAC;QACd,CAAC;QACD,UAAU,EAAK,IAAI;QACnB,YAAY,EAAG,IAAI;KACnB,CAAC;AACH,CAAC;AAED,IAAI,CAAC,GAAG,GAAG,CACV,GAAO,EACP,GAAO,EACP,GAAa,EACO,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reset.d.ts","sourceRoot":"","sources":["../../../src/sgr/reset.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,GAAI,iBAAc,KAAG,MAAkC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reset.js","sourceRoot":"","sources":["../../../src/sgr/reset.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAO,GAAG,IAAI,EAAU,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sgr.d.ts","sourceRoot":"","sources":["../../../src/sgr/sgr.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAa,QAAQ,EAAC,MAAiC,aAAa,CAAC;AACjF,OAAO,KAAK,EAA6C,GAAG,EAAC,MAAM,SAAS,CAAC;AAsB7E,wBAAgB,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,GAAG,CAyC/C"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { TypedObject } from "../typed-object.js";
|
|
2
|
+
import { makeColor } from "./color/index.js";
|
|
3
|
+
import { combineCodes } from "./combine.js";
|
|
4
|
+
import { makeFormatBuilder } from "./format-builder.js";
|
|
5
|
+
import { makeReset } from "./reset.js";
|
|
6
|
+
import { makeStyle } from "./style.js";
|
|
7
|
+
const keyMap = {
|
|
8
|
+
fg: undefined,
|
|
9
|
+
bg: undefined,
|
|
10
|
+
bold: undefined,
|
|
11
|
+
dim: undefined,
|
|
12
|
+
italic: undefined,
|
|
13
|
+
underline: undefined,
|
|
14
|
+
inverse: undefined,
|
|
15
|
+
hidden: undefined,
|
|
16
|
+
strikethrough: undefined,
|
|
17
|
+
doubleUnderline: undefined,
|
|
18
|
+
frame: undefined,
|
|
19
|
+
encircle: undefined,
|
|
20
|
+
overline: undefined,
|
|
21
|
+
};
|
|
22
|
+
const allKeys = new Set(TypedObject.keys(keyMap));
|
|
23
|
+
const cache = {};
|
|
24
|
+
export function makeSGR(features) {
|
|
25
|
+
const cacheKey = `${features.colorDepth}.${features.style}`;
|
|
26
|
+
if (cache[cacheKey])
|
|
27
|
+
return cache[cacheKey];
|
|
28
|
+
const colorFormat = makeFormatBuilder(makeChain, features.colorDepth > 1);
|
|
29
|
+
const styleFormat = makeFormatBuilder(makeChain, features.style);
|
|
30
|
+
const style = makeStyle(allKeys, styleFormat, features.style);
|
|
31
|
+
function makeChain(keys, baseFormat) {
|
|
32
|
+
const chainedColorFormat = (keys, open, close, reset) => colorFormat(keys, combineCodes(baseFormat.codes.open, open), combineCodes(baseFormat.codes.close, close), reset);
|
|
33
|
+
const chainedStyleFormat = (keys, open, close, reset) => styleFormat(keys, combineCodes(baseFormat.codes.open, open), combineCodes(baseFormat.codes.close, close), reset);
|
|
34
|
+
return /** @type {Chain<any>} */ ({
|
|
35
|
+
...makeColor(keys, chainedColorFormat, style, features.colorDepth),
|
|
36
|
+
...makeStyle(keys, chainedStyleFormat, features.style),
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
const rtn = {
|
|
40
|
+
...makeColor(allKeys, colorFormat, style, features.colorDepth),
|
|
41
|
+
style,
|
|
42
|
+
reset: makeReset(features.colorDepth > 1 || features.style),
|
|
43
|
+
};
|
|
44
|
+
cache[cacheKey] = rtn;
|
|
45
|
+
return rtn;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=sgr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sgr.js","sourceRoot":"","sources":["../../../src/sgr/sgr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAY,iBAAiB,CAAC;AAClD,OAAO,EAAC,SAAS,EAAC,MAAc,SAAS,CAAC;AAC1C,OAAO,EAAC,YAAY,EAAC,MAAW,WAAW,CAAC;AAC5C,OAAO,EAAC,iBAAiB,EAAC,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAC,SAAS,EAAC,MAAc,SAAS,CAAC;AAC1C,OAAO,EAAC,SAAS,EAAC,MAAc,SAAS,CAAC;AAK1C,MAAM,MAAM,GAAgC;IAC3C,EAAE,EAAgB,SAAS;IAC3B,EAAE,EAAgB,SAAS;IAC3B,IAAI,EAAc,SAAS;IAC3B,GAAG,EAAe,SAAS;IAC3B,MAAM,EAAY,SAAS;IAC3B,SAAS,EAAS,SAAS;IAC3B,OAAO,EAAW,SAAS;IAC3B,MAAM,EAAY,SAAS;IAC3B,aAAa,EAAK,SAAS;IAC3B,eAAe,EAAG,SAAS;IAC3B,KAAK,EAAa,SAAS;IAC3B,QAAQ,EAAU,SAAS;IAC3B,QAAQ,EAAU,SAAS;CAC3B,CAAC;AAEF,MAAM,OAAO,GAA0B,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAEzE,MAAM,KAAK,GAAqD,EAAE,CAAC;AAEnE,MAAM,UAAU,OAAO,CAAC,QAAkB;IACzC,MAAM,QAAQ,GAAG,GAAG,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,KAAK,EAAW,CAAC;IACrE,IAAI,KAAK,CAAC,QAAQ,CAAC;QAClB,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC;IAExB,MAAM,WAAW,GAAG,iBAAiB,CAAC,SAAS,EAAE,QAAQ,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IAC1E,MAAM,WAAW,GAAG,iBAAiB,CAAC,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IACjE,MAAM,KAAK,GAAS,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEpE,SAAS,SAAS,CACjB,IAA8B,EAC9B,UAAuB;QAEvB,MAAM,kBAAkB,GAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,WAAW,CAClF,IAAI,EACJ,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,EACzC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,EAC3C,KAAK,CACL,CAAC;QACF,MAAM,kBAAkB,GAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,WAAW,CAClF,IAAI,EACJ,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,EACzC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,EAC3C,KAAK,CACL,CAAC;QAEF,OAAO,yBAAyB,CAAA,CAAC;YAChC,GAAG,SAAS,CAAC,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC;YAClE,GAAG,SAAS,CAAC,IAAI,EAAE,kBAAkB,EAAE,QAAQ,CAAC,KAAK,CAAC;SACtD,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAQ;QAChB,GAAG,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC;QAC9D,KAAK;QACL,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,UAAU,GAAG,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC;KAC3D,CAAC;IAEF,KAAK,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;IAEtB,OAAO,GAAG,CAAC;AACZ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../../../src/sgr/style.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAC,MAAM,SAAS,CAAC;AAgB5D,wBAAgB,SAAS,CACxB,IAAI,EAAY,WAAW,CAAC,QAAQ,CAAC,EACrC,aAAa,EAAG,aAAa,EAC7B,OAAO,EAAS,OAAO,GACrB,KAAK,CAAC,GAAG,CAAC,CAcZ"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { TypedObject } from "../typed-object.js";
|
|
2
|
+
import { lazy } from "./lazy.js";
|
|
3
|
+
const propParams = TypedObject.entries({
|
|
4
|
+
bold: [1, 22, true],
|
|
5
|
+
dim: [2, 22, true],
|
|
6
|
+
italic: [3, 23],
|
|
7
|
+
underline: [4, 24],
|
|
8
|
+
inverse: [7, 27],
|
|
9
|
+
hidden: [8, 28],
|
|
10
|
+
strikethrough: [9, 29],
|
|
11
|
+
doubleUnderline: [21, 24],
|
|
12
|
+
frame: [51, 54],
|
|
13
|
+
encircle: [52, 54],
|
|
14
|
+
overline: [53, 55],
|
|
15
|
+
});
|
|
16
|
+
export function makeStyle(keys, makeFormatter, enabled) {
|
|
17
|
+
const rtn = {};
|
|
18
|
+
for (const [key, args] of propParams) {
|
|
19
|
+
if (keys.has(key)) {
|
|
20
|
+
lazy.add(rtn, key, () => {
|
|
21
|
+
const newKeys = new Set(keys);
|
|
22
|
+
newKeys.delete(key);
|
|
23
|
+
return enabled ? makeFormatter(newKeys, ...args) : makeFormatter(newKeys, 0, 0);
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return rtn;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=style.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style.js","sourceRoot":"","sources":["../../../src/sgr/style.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAC,IAAI,EAAC,MAAa,QAAQ,CAAC;AAInC,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAA4D;IACjG,IAAI,EAAc,CAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC;IAChC,GAAG,EAAe,CAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC;IAChC,MAAM,EAAY,CAAE,CAAC,EAAE,EAAE,CAAC;IAC1B,SAAS,EAAS,CAAE,CAAC,EAAE,EAAE,CAAC;IAC1B,OAAO,EAAW,CAAE,CAAC,EAAE,EAAE,CAAC;IAC1B,MAAM,EAAY,CAAE,CAAC,EAAE,EAAE,CAAC;IAC1B,aAAa,EAAK,CAAE,CAAC,EAAE,EAAE,CAAC;IAC1B,eAAe,EAAG,CAAC,EAAE,EAAE,EAAE,CAAC;IAC1B,KAAK,EAAa,CAAC,EAAE,EAAE,EAAE,CAAC;IAC1B,QAAQ,EAAU,CAAC,EAAE,EAAE,EAAE,CAAC;IAC1B,QAAQ,EAAU,CAAC,EAAE,EAAE,EAAE,CAAC;CAC1B,CAAC,CAAC;AAEH,MAAM,UAAU,SAAS,CACxB,IAAqC,EACrC,aAA6B,EAC7B,OAAuB;IAEvB,MAAM,GAAG,GAAG,EAAgB,CAAC;IAE7B,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,UAAU,EAAE,CAAC;QACtC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACnB,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;gBACvB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC9B,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACpB,OAAO,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACjF,CAAC,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAED,OAAO,GAAG,CAAC;AACZ,CAAC"}
|