├── .github
└── workflows
│ └── release.yml
├── .gitignore
├── README.md
├── assets
└── preview-v1.png
├── biome.json
├── docs
├── 1-setup.md
├── 2-basic-usage.md
├── 3-api-reference.md
├── 4-guides.md
└── README.md
├── examples
├── index.tsx
├── package.json
└── tsconfig.json
├── package.json
├── packages
├── cli
│ ├── package.json
│ ├── rescript.json
│ └── src
│ │ ├── Main.res
│ │ ├── bindings
│ │ ├── BetterTmux.res
│ │ ├── BunX.res
│ │ └── ReactReconcilier.res
│ │ └── core
│ │ ├── Bindings.res
│ │ ├── Config.res
│ │ ├── Debug.res
│ │ ├── GlobalOptions.res
│ │ ├── Parser.res
│ │ ├── Reconcilier.res
│ │ ├── Renderer.res
│ │ ├── Runner.res
│ │ ├── Styles.res
│ │ ├── Theme.res
│ │ ├── Tmux.res
│ │ ├── TmuxJsx.res
│ │ └── version.js
└── lib
│ ├── .release-it.json
│ ├── CHANGELOG.md
│ ├── package.json
│ ├── src
│ ├── components.tsx
│ ├── global.d.ts
│ ├── hooks
│ │ ├── index.ts
│ │ └── use-theme.ts
│ ├── index.ts
│ ├── presets
│ │ └── index.tsx
│ ├── tmux.ts
│ ├── types.ts
│ └── widgets
│ │ ├── index.tsx
│ │ ├── types.ts
│ │ └── widget.tsx
│ └── tsconfig.json
├── pnpm-lock.yaml
├── pnpm-workspace.yaml
├── scripts
├── build-cli.sh
├── bump-cli-version.sh
├── install.sh
├── uninstall.sh
└── update.sh
└── turbo.json
/.github/workflows/release.yml:
--------------------------------------------------------------------------------
1 | name: Release
2 | run-name: 'Release a [${{ github.event.inputs.versionType }}] version of better-tmux'
3 | 'on':
4 | workflow_dispatch:
5 | inputs:
6 | versionType:
7 | description: Version type
8 | required: true
9 | default: patch
10 | type: choice
11 | options:
12 | - patch
13 | - minor
14 | - major
15 | jobs:
16 | setup:
17 | runs-on: ubuntu-latest
18 | steps:
19 | - uses: actions/checkout@v4
20 | - uses: oven-sh/setup-bun@v2
21 | - uses: pnpm/action-setup@v4
22 | name: Install pnpm
23 | with:
24 | version: 9.0.0
25 | run_install: false
26 | - name: Install Node.js
27 | uses: actions/setup-node@v4
28 | with:
29 | node-version: 20
30 | cache: 'pnpm'
31 |
32 | - name: Configure CI user
33 | run: |
34 | git config --global user.email "vmarcosp.pereira@gmail.com"
35 | git config --global user.name "vmarcosp"
36 |
37 | - name: Install dependencies
38 | run: pnpm install
39 |
40 | - name: Build Project
41 | run: pnpm turbo build
42 |
43 | - name: Generate CLI executable
44 | run: |
45 | bash ./scripts/bump-cli-version.sh ${{ github.event.inputs.versionType }}
46 | bash ./scripts/build-cli.sh
47 |
48 | - name: Release
49 | run: pnpm release-it --ci --increment=${{ github.event.inputs.versionType }} --config=packages/lib/.release-it.json
50 | env:
51 | GITHUB_TOKEN: ${{secrets.GH_TOKEN }}
52 | - name: Publish npm package
53 | run: |
54 | cd packages/lib
55 | echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_AUTH_TOKEN }}" > ~/.npmrc
56 | npm publish --access=public
57 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Based on https://raw.githubusercontent.com/github/gitignore/main/Node.gitignore
2 |
3 | # Logs
4 |
5 | logs
6 | _.log
7 | npm-debug.log_
8 | yarn-debug.log*
9 | yarn-error.log*
10 | lerna-debug.log*
11 | .pnpm-debug.log*
12 |
13 | # Caches
14 |
15 | .cache
16 |
17 | # Diagnostic reports (https://nodejs.org/api/report.html)
18 |
19 | report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json
20 |
21 | # Runtime data
22 |
23 | pids
24 | _.pid
25 | _.seed
26 | *.pid.lock
27 |
28 | # Directory for instrumented libs generated by jscoverage/JSCover
29 |
30 | lib-cov
31 |
32 | # Coverage directory used by tools like istanbul
33 |
34 | coverage
35 | *.lcov
36 |
37 | # nyc test coverage
38 |
39 | .nyc_output
40 |
41 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
42 |
43 | .grunt
44 |
45 | # Bower dependency directory (https://bower.io/)
46 |
47 | bower_components
48 |
49 | # node-waf configuration
50 |
51 | .lock-wscript
52 |
53 | # Compiled binary addons (https://nodejs.org/api/addons.html)
54 |
55 | build/Release
56 |
57 | # Dependency directories
58 |
59 | node_modules/
60 | jspm_packages/
61 |
62 | # Snowpack dependency directory (https://snowpack.dev/)
63 |
64 | web_modules/
65 |
66 | # TypeScript cache
67 |
68 | *.tsbuildinfo
69 |
70 | # Optional npm cache directory
71 |
72 | .npm
73 |
74 | # Optional eslint cache
75 |
76 | .eslintcache
77 |
78 | # Optional stylelint cache
79 |
80 | .stylelintcache
81 |
82 | # Microbundle cache
83 |
84 | .rpt2_cache/
85 | .rts2_cache_cjs/
86 | .rts2_cache_es/
87 | .rts2_cache_umd/
88 |
89 | # Optional REPL history
90 |
91 | .node_repl_history
92 |
93 | # Output of 'npm pack'
94 |
95 | *.tgz
96 |
97 | # Yarn Integrity file
98 |
99 | .yarn-integrity
100 |
101 | # dotenv environment variable files
102 |
103 | .env
104 | .env.development.local
105 | .env.test.local
106 | .env.production.local
107 | .env.local
108 |
109 | # parcel-bundler cache (https://parceljs.org/)
110 |
111 | .parcel-cache
112 |
113 | # Next.js build output
114 |
115 | .next
116 | out
117 |
118 | # Nuxt.js build / generate output
119 |
120 | .nuxt
121 | dist
122 |
123 | # Gatsby files
124 |
125 | # Comment in the public line in if your project uses Gatsby and not Next.js
126 |
127 | # https://nextjs.org/blog/next-9-1#public-directory-support
128 |
129 | # public
130 |
131 | # vuepress build output
132 |
133 | .vuepress/dist
134 |
135 | # vuepress v2.x temp and cache directory
136 |
137 | .temp
138 |
139 | # Docusaurus cache and generated files
140 |
141 | .docusaurus
142 |
143 | # Serverless directories
144 |
145 | .serverless/
146 |
147 | # FuseBox cache
148 |
149 | .fusebox/
150 |
151 | # DynamoDB Local files
152 |
153 | .dynamodb/
154 |
155 | # TernJS port file
156 |
157 | .tern-port
158 |
159 | # Stores VSCode versions used for testing VSCode extensions
160 |
161 | .vscode-test
162 |
163 | # yarn v2
164 |
165 | .yarn/cache
166 | .yarn/unplugged
167 | .yarn/build-state.yml
168 | .yarn/install-state.gz
169 | .pnp.*
170 |
171 | # IntelliJ based IDEs
172 | .idea
173 |
174 | # Finder (MacOS) folder config
175 | .DS_Store
176 | ./packages/**/lib/
177 | *.res.js
178 | .turbo/
179 | /packages/cli/lib/
180 | .build/
181 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | > [!WARNING]
2 | > 💡 This project is experimental and still in progress, but definitely worth trying. If you encounter any issues, please open an issue or DM me on [Twitter](https://x.com/vmaarcosp). Don't hesitate to reach out 👋🏻
3 |
4 |
5 |
BetterTmux
6 |
Unlock the full power of TMUX with TypeScript and JSX ⚡
7 |
8 |
9 |
10 |
11 | ## Features
12 |
13 | - ⚙️ Support for TMUX customizations trough TypeScript and React
14 | - 🎨 Theme management + popular themes
15 | - 📦 Pre-built widgets such as ``, ``, ``, etc
16 | - 💡 Ability to create your own widgets using native building blocks `` adn ``
17 |
18 | ## Introduction
19 | BetterTmux is essentially a framework for TMUX that leverages React and TypeScript to enable powerful customizations. It allows you to create your own custom components and configurations for the TMUX status bar. Additionally, it provides a layer of pre-built components that help you unlock the full potential of your TMUX setup.
20 |
21 | ## Why
22 |
23 | TMUX is incredible and boosts productivity, but configuring it can be tough. You can either use a pre-made config like "oh my tmux", which can be challenging to customize, or build your own from scratch, which can be overwhelming depending on your experience. If you try to use a plugin theme like [Nord](https://github.com/nordtheme/tmux) or [Catppuccin](https://github.com/catppuccin/tmux) to match your vim or terminal theme, you'll notice that it doesn't only change the colors but also affects your widgets and layout.
24 |
25 | I've been tweaking my own tmux config for years, and I've ended up with complex configurations like this:
26 |
27 |
28 |
29 | Click to reveal 🔎
30 |
31 |
32 | ```sh
33 | set -g status-left-length 50
34 | set -g status-left "#(hostname) #[bg=$theme_primary,fg=$theme_background] 🚀 #[bg=$theme_background,fg=$theme_foreground] Test "
35 |
36 | set -g status-right-length 50
37 | set -g status-right "#[bg=$theme_primary,fg=$theme_background] %Y-%m-%d #[bg=$theme_background,fg=$theme_foreground] %H:%M:%S "
38 |
39 | set -g window-status-format "#[bg=$theme_background,fg=$theme_foreground] #I: #W "
40 | set -g window-status-current-format "#[bg=$theme_primary,fg=$theme_background] #I: #W "
41 |
42 | set -g status-style "bg=$theme_background,fg=$theme_foreground"
43 | ```
44 |
45 |
46 |
47 |
48 |
49 | On the other hand, TypeScript (and JavaScript) plus JSX are great ways to handle UIs. So, what if you could configure your TMUX using these technologies?
50 | Here is a very similar example of the code above but using BetterTmux:
51 | ```typescript
52 | import { BetterTmuxConfig, Box, WindowConfig, useTheme } from 'better-tmux'
53 | import { Clock, Hostname } from 'better-tmux/widgets'
54 |
55 | const Window = ({ type, number, name }: WindowConfig) => {
56 | const theme = useTheme()
57 | return (
58 |
63 | {number}: {name}
64 |
65 | )
66 | }
67 |
68 | const CustomStatusLeft = () => {
69 | const theme = useTheme()
70 |
71 | return (
72 |
73 |
74 | 🚀
75 | Test
76 |
77 |
78 | )
79 | }
80 |
81 | export default {
82 | theme: 'nord',
83 | options: {
84 | prefix: 'C-a',
85 | setTitlesString: "BetterTmux",
86 | },
87 | status: {
88 | left: ,
89 | right: ,
90 | position: 'top'
91 | },
92 | window: (window) =>
93 | } satisfies BetterTmuxConfig
94 | ```
95 |
96 | ## Documentation 📘
97 |
98 | - [Setup](./docs/1-setup.md)
99 | - [Install](./docs/1-setup.md#install)
100 | - [Setting up your config](./docs/1-setup.md#setting-up-your-config)
101 | - [Testing](./docs/1-setup.md#testing)
102 | - [Update](./docs/1-setup.md#update)
103 | - [Uninstall](./docs/1-setup.md#uninstall)
104 | - [Basic Usage](./docs/2-basic-usage.md)
105 | - [Understanding customizations](./docs/2-basic-usage.md#understanding-customizations)
106 | - [Usage of index.tsx](./docs/2-basic-usage.md#usage-of-indextsx)
107 | - [Integrating with tmux.conf](./docs/2-basic-usage.md#integrating-with-your-tmuxconf)
108 | - [BetterTmux packages](./docs/2-basic-usage.md#bettertmux-packages-better-tmux)
109 | - [API Reference](./docs/3-api-reference.md)
110 | - [Configuration](./docs/3-api-reference.md#configuration)
111 | - [Themes](./docs/3-api-reference.md#themes)
112 | - [Components](./docs/3-api-reference.md#components)
113 | - [Example](./docs/3-api-reference.md#example)
114 | - [Hooks](./docs/3-api-reference.md#hooks)
115 | - [Widgets](./docs/3-api-reference.md#widgets)
116 | - [Utilities](./docs/3-api-reference.md#utilities)
117 |
118 | ## FAQ
119 |
120 | **"Is this project a replacement for my `tmux.conf`?"**
121 |
122 | - **Short answer**: Not yet.
123 | - **Long answer**: This is our plans for this project. Currently, we don't support all possible tmux configurations and options, but we plan to support the most common ones.
124 |
125 | **"What happens if I need something that is not supported by BetterTmux?"**
126 | - We recommend using your `tmux.conf` alongside BetterTmux. This allows you to use any native tmux command as an escape hatch.
127 |
128 |
129 | ## License
130 | MIT
131 |
--------------------------------------------------------------------------------
/assets/preview-v1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bettervim/better-tmux/bb16638d89a77ad303f521ed17347ee6b6f82695/assets/preview-v1.png
--------------------------------------------------------------------------------
/biome.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json",
3 | "vcs": {
4 | "enabled": false,
5 | "clientKind": "git",
6 | "useIgnoreFile": false
7 | },
8 | "files": {
9 | "ignoreUnknown": false,
10 | "ignore": ["**/*.js", "**/*.d.ts"]
11 | },
12 | "formatter": {
13 | "enabled": true,
14 | "indentStyle": "tab"
15 | },
16 | "organizeImports": {
17 | "enabled": true
18 | },
19 | "linter": {
20 | "enabled": true,
21 | "rules": {
22 | "recommended": true
23 | }
24 | },
25 | "javascript": {
26 | "formatter": {
27 | "quoteStyle": "double"
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/docs/1-setup.md:
--------------------------------------------------------------------------------
1 | [← Back](./README.md) / [Next →](./2-basic-usage.md)
2 |
3 | # 1. Setup
4 |
5 | - [Install](1-setup.md#install)
6 | - [Setting up your config](1-setup.md#setting-up-your-config)
7 | - [Testing](1-setup.md#testing)
8 | - [Update](1-setup.md#update)
9 | - [Uninstall](1-setup.md#uninstall)
10 |
11 |
12 | ## Install
13 |
14 | Install `better-tmux` CLI:
15 | ```sh
16 | curl -sSL https://raw.githubusercontent.com/bettervim/better-tmux/main/scripts/install.sh | bash
17 | ```
18 |
19 | The CLI contain only two commands / arguments:
20 |
21 | - `--version`: Display the version installed
22 | - `--file`: Specifies the file you'll use to customize your tmux
23 |
24 | > 💡 Don't worry about this for now, we'll cover the basic usage later.
25 |
26 | ## Setting up your config
27 | In the folder where you want to store your configuration (we recommend ~/), run the following command:
28 | ```sh
29 | git clone https://github.com/bettervim/better-tmux-template.git ~/better-tmux && rm -rf better-tmux/.git
30 | ```
31 | Now, install the dependencies using your favorite package manager:
32 |
33 | ```sh
34 | pnpm install
35 | # or bun install
36 | # or yarn install
37 | # or npm install
38 | ```
39 |
40 | ## Testing
41 |
42 | To test changes in your configuration, you'll need to run the better-tmux CLI, specifying your configuration file. For example:
43 | ```sh
44 | better-tmux --file ~/better-tmux/index.tsx
45 | ```
46 |
47 | We recommend you to modify your `tmux.conf` to execute the CLI on every reload and point to the `index.tsx` of your config folder:
48 | ```sh
49 | # ~/tmux.conf
50 | run-shell 'better-tmux --file ~/better-tmux/index.tsx'
51 | ```
52 |
53 | ## Update
54 | To update `better-tmux` CLI, run the following command:
55 | ```sh
56 | curl -sSL https://raw.githubusercontent.com/bettervim/better-tmux/main/scripts/update.sh | bash
57 | ```
58 | > [!TIP]
59 | > Additionally, you need to update your `better-tmux` package inside of your tmux config using npm / yarn (or pnpm / bun / etc).
60 |
61 | ## Uninstall
62 | To uninstall `better-tmux` CLI, run the following command:
63 | ```sh
64 | curl -sSL https://raw.githubusercontent.com/bettervim/better-tmux/main/scripts/uninstall.sh | bash
65 | ```
66 |
67 |
68 |
69 | [← Back](./README.md) / [Next →](./2-basic-usage.md)
70 |
--------------------------------------------------------------------------------
/docs/2-basic-usage.md:
--------------------------------------------------------------------------------
1 | [← Back](./1-setup.md) / [Next →](./3-api-reference.md)
2 |
3 | # 2. Basic Usage
4 | - [Understanding customizations](2-basic-usage.md#understanding-customizations)
5 | - [Usage of index.tsx](2-basic-usage.md#usage-of-indextsx)
6 | - [Integrating with tmux.conf](2-basic-usage.md#integrating-with-your-tmuxconf)
7 | - [BetterTmux packages](2-basic-usage.md#bettertmux-packages-better-tmux)
8 |
9 | As we did previously, you used a template to set up your config. This template is essentially a JavaScript/TypeScript project with React pre-configured and `better-tmux` installed.
10 |
11 | From this template, the only thing you need to focus on is the `index.tsx`; the rest works like any JavaScript project.
12 |
13 | ## Understanding customizations
14 | After cloning and setting up your config using our template, you'll end up with something like that in your config:
15 | ```typescript
16 | import { BetterTmuxConfig, Box, WindowConfig, useTheme } from 'better-tmux'
17 | import { Clock, Hostname } from 'better-tmux/widgets'
18 |
19 | const Window = ({ type, number, name }: WindowConfig) => {
20 | const theme = useTheme()
21 | return (
22 |
27 | {number}: {name}
28 |
29 | )
30 | }
31 |
32 | const CustomStatusLeft = () => {
33 | const theme = useTheme()
34 |
35 | return (
36 |
37 |
38 | 🚀
39 | Test
40 |
41 |
42 | )
43 | }
44 |
45 | export default {
46 | theme: 'nord',
47 | options: {
48 | prefix: 'C-a'
49 | },
50 | status: {
51 | left: ,
52 | right: ,
53 | position: 'top'
54 | },
55 | window: (window) =>
56 | } satisfies BetterTmuxConfig
57 | ```
58 |
59 | Let's break this customizastion into multiple parts to understand what we're doing in here 🏃
60 |
61 | ### Customizing windows
62 | As you might know, TMUX allows you to create multiple windows per session. One of the most common customizations is modifying the window appearance, such as setting a layout for the window (e.g., `(number): (name)`) or changing the colors for each state (active, normal, zoomed, etc.).
63 |
64 | With BetterTmux, all you need to customize your windows is to create a component that receives props of type `WindowConfig` and returns the layout and UI you want. After that, you just need to export this component as a field of the object config `window`. Here is an example:
65 |
66 | ```typescript
67 | const Window = ({ type, number, name }: WindowConfig) => {
68 | const theme = useTheme()
69 | return (
70 |
75 | {number}: {name}
76 |
77 | )
78 | }
79 |
80 | export default {
81 | // ... other customizations
82 | window: (window) =>
83 | }
84 | ```
85 |
86 | > 💡 You can use the `type` prop to display different colors or layout based on the type of window, for example: `active` windows are blue, and `normal` are red.
87 |
88 | ### Customizing status bar
89 | TMUX has a status bar with two parts, a status-left and a status-right, with additional configurations related to the status bar itself.
90 |
91 | In the above example, we've made some customizations to it, modifying the layout of status-left, status-right, and status-position.
92 |
93 | To customize both status-left and status-right, you can create your own component to display pre-built widgets or create your own from scratch using BetterTmux building blocks. After that, you just need to attach them to the config via the status object:
94 |
95 | ```typescript
96 | const CustomStatusLeft = () => {
97 | const theme = useTheme()
98 |
99 | return (
100 |
101 |
102 | 🚀
103 | Test
104 |
105 |
106 | )
107 | }
108 | export default {
109 | status: {
110 | left: ,
111 | position: 'top'
112 | },
113 | }
114 | ```
115 | Additionally, you can modify other aspects of the status, like `bg` (background color) or even its position. To see more, check out the [API reference of the object config](https://github.com/bettervim/better-tmux/blob/main/docs/3-api-reference.md#configuration).
116 |
117 | ### Themes
118 | As you might have noticed, BetterTmux can handle themes, which is an important part of your configuration. If you've used TMUX for a while, you'll know that changing your TMUX theme often means changing your TMUX layout as well. However, BetterTmux handles theme changes without affecting the UI.
119 |
120 | Whether you're switching your status bar using pre-built widgets or building your own, if you want to change the theme to fit your config (like vim or terminal), all you need to do is change the `theme` field in the configuration.
121 |
122 | To ensure your customizations remain consistent with the current theme, use the `useTheme` hook like we did in the example above:
123 | ```typescript
124 | const CustomStatusLeft = () => {
125 | const theme = useTheme()
126 |
127 | return (
128 |
129 |
130 | 🚀
131 | Test
132 |
133 |
134 | )
135 | }
136 | ```
137 |
138 | ### Setting global options
139 |
140 | A common task when creating a `tmux.conf` is setting global options. This probably makes up 50% of your config, right? BetterTmux offers a way to do that via the `options` object. For example, if you need to set a title for your session, you would use `tmux set -g set-titles-string "title :)"`. With BetterTmux, you can do it like this:
141 | ```typescript
142 | export default {
143 | options: { setTitlesString: "title :)" }
144 | }
145 | ```
146 |
147 | Check out the `options` [API Reference](https://github.com/bettervim/better-tmux/blob/main/docs/3-api-reference.md#configuration) to see more.
148 |
149 | ## Usage of `index.tsx`
150 |
151 | The main configuration file for BetterTmux is `index.tsx`. This file is where you define your tmux setup using TypeScript and JSX. You'll notice that this file exports an object with your customizations. These configurations are read by the BetterTmux CLI and do the magic for you. To better understand the flow, it's basically like this:
152 | 1. Write your customizations using React.
153 | 2. Run `better-tmux --file /path/to/your-config/index.tsx`.
154 | 3. And tada 🎉
155 |
156 | Notice that the `better-tmux` CLI reads your object and transforms everything into tmux native configs.
157 |
158 | ## Integrating with your `tmux.conf`
159 |
160 | A common and productive approach is to keep your configs together in dotfiles. BetterTmux fits perfectly into this use case if you integrate it with your `tmux.conf` file. Since `tmux.conf` is essentially a file read by tmux, all you need to do is add a line to ensure that every reload of your tmux also executes the `better-tmux` CLI:
161 |
162 | ```sh
163 | # ~/tmux.conf
164 | run-shell 'better-tmux --file /path/to/your-config/index.tsx'
165 | ```
166 |
167 | ## BetterTmux Packages (`better-tmux`)
168 |
169 | Along with the setup, you'll install the `better-tmux` package. This package exports some useful resources for your config:
170 |
171 | - Building blocks: `` and ``
172 | - Pre-built widgets: ``, ``, ``, etc.
173 | - TMUX global variables through `tmux`, such as `tmux.globals.sessionName`
174 | - Hooks: `useTheme()`
175 |
176 | These resources are used internally by presets and components, but they are available for you to build your own customizations.
177 |
178 | Check out the [API Reference](./api-reference.md) to see more.
179 |
180 |
181 | [← Back](./1-setup.md) / [Next →](./3-api-reference.md)
182 |
--------------------------------------------------------------------------------
/docs/3-api-reference.md:
--------------------------------------------------------------------------------
1 | [← Back](./2-basic-usage.md) / [Next →](./4-guides.md)
2 |
3 | # 3. API Reference
4 | - [Configuration](3-api-reference.md#configuration)
5 | - [Themes](3-api-reference.md#themes)
6 | - [Components](3-api-reference.md#components)
7 | - [Example](3-api-reference.md#example)
8 | - [Hooks](3-api-reference.md#hooks)
9 | - [Widgets](3-api-reference.md#widgets)
10 | - [Utilities](3-api-reference.md#utilities)
11 |
12 | ## Configuration
13 | The exported object has the following type signature and options:
14 | ```typescript
15 | export type WindowConfig = {
16 | number: number,
17 | name: string,
18 | type: "active" | "normal"
19 | }
20 |
21 | export type Theme =
22 | | "catppuccin-mocha"
23 | | "catppuccin-latte"
24 | | "catppuccin-macchiato"
25 | | "catppuccin-frappe"
26 | | "nord"
27 | | "dracula"
28 | | "onedark"
29 | | "onelight"
30 | | "onedark-dark"
31 | | "onedark-vivid"
32 | | "tokyonight"
33 | | "tokyonight-moon"
34 | | "tokyonight-day"
35 | | "tokyonight-storm"
36 | | "ayu"
37 | | "ayu-dark"
38 | | "ayu-light"
39 |
40 | export type Status = {
41 | fg?: string,
42 | bg?: string,
43 | left?: JSX.Element,
44 | right?: JSX.Element,
45 | position?: "top" | "bottom"
46 | }
47 |
48 |
49 | type Toggle = "on" | "off"
50 |
51 | export type Options = {
52 | terminalOverrides?: string,
53 | escapeTime?: number,
54 | paneBaseIndex?: number,
55 | statusKeys?: "vi" | "emacs",
56 | modeKeys?: "vi" | "emacs",
57 | setTitles?: Toggle,
58 | setTitlesString?: string,
59 | prefix?: string,
60 | baseIndex?: number,
61 | historyLimit?: number,
62 | defaultTerminal?: string,
63 | mouse?: string,
64 | renumberWindows?: Toggle,
65 | aggressiveResize?: boolean,
66 | }
67 |
68 | type TmuxCommand =
69 | | 'select-pane'
70 | | 'new-window'
71 | | 'new-window'
72 | | 'split-window'
73 | | 'select-pane'
74 | | 'select-window'
75 | | 'kill-pane'
76 | | 'kill-window'
77 | | 'resize-pane'
78 | | 'swap-pane'
79 | | 'rename-window'
80 | | 'list-panes'
81 | | 'list-windows'
82 | | 'list-sessions'
83 | | 'attach-session'
84 | | 'detach-client'
85 | | 'show-messages'
86 | | 'display-message'
87 | | 'copy-mode'
88 | | 'paste-buffer'
89 |
90 | export type Bind = {
91 | key: string,
92 | command: TmuxCommand,
93 | options?: string[]
94 | }
95 |
96 | export type BetterTmuxConfig = {
97 | bindings?: Bind[],
98 | options?: Options,
99 | theme?: Theme,
100 | status?: Status,
101 | window?: (config: WindowConfig) => JSX.Element
102 | }
103 | ```
104 |
105 | ## Themes
106 | The supported themes are:
107 | - Catppuccin
108 | - Nord
109 | - Dracula
110 |
111 | > 💡 Do you need a theme? Feel free to open a PR; it's pretty simple. Check out this [file](https://github.com/bettervim/better-tmux/blob/main/packages/lib/src/hooks/use-theme.ts).
112 |
113 | ## Components
114 | ### `` and ``
115 |
116 | These are the most primitive building blocks of BetterTmux. They offer you a way to create your own components within the BetterTmux runtime.
117 | They are quite similar in practice; you can use only `` if you want, but I prefer to use `` sometimes to improve semantics and readability.
118 |
119 | ### Example
120 |
121 | ```typescript
122 | import { Box, Text } from 'better-tmux'
123 |
124 | const MyStatusLeft = () => (
125 |
126 | Testing :)
127 |
128 | )
129 | ```
130 |
131 | As you notice, since they're components, they can receive props. Here is a complete list of props:
132 |
133 | ### Props Table
134 |
135 | | Prop | Type |
136 | | -------------- | ------- |
137 | | `bg` | string |
138 | | `fg` | string |
139 | | `padding` | number |
140 | | `paddingLeft` | number |
141 | | `paddingRight` | number |
142 | | `gap` | number |
143 | | `bold` | boolean |
144 | | `italic` | boolean |
145 |
146 | ## Hooks
147 | ### useTheme(...)
148 | This hook allows you to get the theme palette based on what you provided to the config object. All the widgets provided by BetterTmux and other defaults are based on this theme.
149 | ```typescript
150 | import { useTheme } from 'better-tmux'
151 |
152 | const MyWindow = () => {
153 | const theme = useTheme()
154 | return Window
155 | }
156 | ```
157 | **API Reference**
158 | ```typescript
159 | const useTheme: void => ThemePalette;
160 |
161 | type ThemePalette = {
162 | background: string,
163 | foreground: string,
164 | primary: string,
165 | secondary: string,
166 | }
167 | ```
168 | ## Widgets
169 | Widgets are essentially components that you can import and render to any part of the TMUX status bar.
170 |
171 | ```typescript
172 | import { SessionName, Clock } from 'better-tmux/widgets'
173 |
174 | const MyStatusLeft = () =>
175 |
176 |
177 |
178 | ```
179 |
180 | ### ``
181 | | Prop | Type |
182 | | -------------- | ------- |
183 | | `icon` | string |
184 |
185 |
186 | ### ``
187 |
188 | | Prop | Type |
189 | | -------------- | ------- |
190 | | `icon` | string |
191 |
192 | ### ``
193 | | Prop | Type |
194 | | -------------- | ------- |
195 | | `icon` | string |
196 | | `format` | string |
197 |
198 | ### ``
199 | ```typescript
200 | import { Clock, tmux } from 'better-tmux/widgets'
201 |
202 | const MyStatus = () =>
203 | ```
204 | | Prop | Type |
205 | | -------------- | ------- |
206 | | `icon` | string |
207 | | `format` | string |
208 |
209 | > 💡 The format props are used to customize the format and ensure you can format based on your locale.
210 |
211 | ## Utilities
212 | Some nice utilities that enables you access TMUX globals or work with TMUX native features.
213 | ### `tmux`
214 | A collection of constants, global variables, etc acessible directly via TypeScript. Example:
215 | ```typescript
216 | import { tmux } from 'better-tmux'
217 |
218 | const MyStatusLeft = () => {tmux.globals.sessionName}
219 | ```
220 | **API Reference**
221 | ```typescript
222 | const tmux: {
223 | globals: {
224 | hostname: string,
225 | sessionName: string,
226 | hour_24: string,
227 | hour_12: string,
228 | hour_24_single: string,
229 | hour_12_single: string,
230 | minute: string,
231 | second: string,
232 | am_pm_upper: string,
233 | am_pm_lower: string,
234 | year: string,
235 | month: string,
236 | day: string,
237 | abbreviated_month: string,
238 | full_month: string,
239 | abbreviated_day: string,
240 | full_day: string,
241 | week_number: string,
242 | day_of_year: string,
243 | day_of_week_number: string,
244 | }
245 | }
246 | ```
247 |
248 | [← Back](./2-basic-usage.md) / [Next →](./4-guides.md)
249 |
--------------------------------------------------------------------------------
/docs/4-guides.md:
--------------------------------------------------------------------------------
1 | [← Back](./3-api-reference.md)
2 |
3 | # 4. Guides
4 | - [Creating custom bindings](4-guides.md#creating-custom-bindings)
5 |
6 | ## Creating custom bindings
7 | Example:
8 | ```typescript
9 | export default {
10 | bindings: [
11 | {
12 | key: 'x',
13 | command: 'kill-window'
14 | },
15 | {
16 | key: 'h',
17 | command: 'select-pane',
18 | options: ['-L']
19 | }
20 | ]
21 | }
22 | ```
23 |
--------------------------------------------------------------------------------
/docs/README.md:
--------------------------------------------------------------------------------
1 | # Documentation 📕
2 | This guide will help you get started with BetterTmux, a tool designed to unlock the full power of TMUX using TypeScript and JSX.
3 | Below you will find links to various sections of the documentation.
4 |
5 | ## Table of contents 🔗
6 |
7 | - [Setup](1-setup.md)
8 | - [Install](1-setup.md#install)
9 | - [Setting up your config](1-setup.md#setting-up-your-config)
10 | - [Testing](1-setup.md#testing)
11 | - [Update](1-setup.md#update)
12 | - [Uninstall](1-setup.md#uninstall)
13 | - [Basic Usage](2-basic-usage.md)
14 | - [Understanding customizations](2-basic-usage.md#understanding-customizations)
15 | - [Usage of index.tsx](2-basic-usage.md#usage-of-indextsx)
16 | - [Integrating with tmux.conf](2-basic-usage.md#integrating-with-your-tmuxconf)
17 | - [BetterTmux packages](2-basic-usage.md#bettertmux-packages-better-tmux)
18 | - [API Reference](3-api-reference.md)
19 | - [Configuration](3-api-reference.md#configuration)
20 | - [Themes](3-api-reference.md#themes)
21 | - [Components](3-api-reference.md#components)
22 | - [Example](3-api-reference.md#example)
23 | - [Hooks](3-api-reference.md#hooks)
24 | - [Widgets](3-api-reference.md#widgets)
25 | - [Utilities](3-api-reference.md#utilities)
26 | - [Guides](4-guides.md)
27 | - [Creating custom bindings](4-guides.md#creating-custom-bindings)
28 |
29 |
30 | ## Overview 🔎
31 |
32 | BetterTmux allows you to configure TMUX using a modern and powerful approach with TypeScript and JSX.
33 | This documentation covers everything from setting up the tool to using its features effectively.
34 |
35 | ## Getting Started ✨
36 |
37 | To get started, follow the instructions in the [Setup](1-setup.md) section.
38 |
39 | ## Usage 💡
40 |
41 | Learn how to use BetterTmux with examples and detailed explanations in the [Basic Usage](2-basic-usage.md) section.
42 |
43 | ## API 📦
44 |
45 | For detailed information about the functions, objects, and components provided by BetterTmux, refer to the [API Reference](3-api-reference.md) section.
46 |
47 | Happy TMUXing ✨ 🚀
48 |
--------------------------------------------------------------------------------
/examples/index.tsx:
--------------------------------------------------------------------------------
1 | import {
2 | Box,
3 | type BetterTmuxConfig,
4 | type WindowConfig,
5 | useTheme,
6 | tmux,
7 | } from "better-tmux";
8 | import { Calendar, SessionName } from "better-tmux/widgets";
9 |
10 | const Window = ({ type, number, name }: WindowConfig) => {
11 | const theme = useTheme();
12 | const styles =
13 | type === "active"
14 | ? { bg: theme.primary, fg: theme.background, bold: true }
15 | : {};
16 |
17 | return (
18 |
19 | {number}: {name}
20 |
21 | );
22 | };
23 |
24 | const StatusLeft = () => (
25 |
26 |
27 |
28 | );
29 |
30 | const StatusRight = () => (
31 |
32 |
35 |
36 | );
37 |
38 | export default {
39 | theme: "ayu-light",
40 | bindings: [
41 | {
42 | key: "x",
43 | command: "kill-window",
44 | },
45 | ],
46 | options: {
47 | setTitlesString: " ",
48 | prefix: "C-a",
49 | },
50 | status: {
51 | left: ,
52 | right: ,
53 | position: "top",
54 | },
55 | window: (props) => ,
56 | } satisfies BetterTmuxConfig;
57 |
--------------------------------------------------------------------------------
/examples/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "better-tmux/examples",
3 | "version": "1.0.0",
4 | "private": true,
5 | "type": "module",
6 | "dependencies": {
7 | "@types/react": "^18.3.3",
8 | "better-tmux": "workspace:*",
9 | "ink": "^5.0.1",
10 | "react": "18.3.1"
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/examples/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "include": [
3 | "./"
4 | ],
5 | "compilerOptions": {
6 | "target": "ES6",
7 | "module": "ESNext",
8 | "lib": [
9 | "DOM",
10 | "ES6"
11 | ],
12 | "allowJs": true,
13 | "jsx": "react-jsx",
14 | "strict": true,
15 | "moduleResolution": "nodenext",
16 | "esModuleInterop": true,
17 | "skipLibCheck": true
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "better-tmux",
3 | "private": true,
4 | "scripts": {
5 | "build": "turbo build",
6 | "dev": "turbo dev",
7 | "lint": "turbo lint",
8 | "release": "release-it"
9 | },
10 | "devDependencies": {
11 | "@biomejs/biome": "1.9.4",
12 | "@release-it/bumper": "^6.0.1",
13 | "@release-it/keep-a-changelog": "^5.0.0",
14 | "release-it": "^17.5.0",
15 | "turbo": "latest"
16 | },
17 | "engines": {
18 | "node": ">=18"
19 | },
20 | "packageManager": "pnpm@9.0.0",
21 | "version": "0.0.15",
22 | "dependencies": {
23 | "@changesets/cli": "^2.27.7",
24 | "typescript": "^5.5.3"
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/packages/cli/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "cli",
3 | "module": "index.js",
4 | "type": "module",
5 | "scripts": {
6 | "dev": "pnpm rescript build -w",
7 | "build": "pnpm rescript build",
8 | "reload": "bun src/Main.res.js --file ../../examples/index.tsx"
9 | },
10 | "dependencies": {
11 | "better-tmux": "workspace:*",
12 | "@rescript/core": "1.4.0",
13 | "@rescript/react": "0.12.2",
14 | "@types/node": "^20.14.9",
15 | "react": "18.3.1",
16 | "react-reconciler": "0.29.2",
17 | "rescript": "11.1.1",
18 | "rescript-bun": "0.5.0"
19 | },
20 | "trustedDependencies": [
21 | "rescript"
22 | ],
23 | "version": "0.0.15"
24 | }
25 |
--------------------------------------------------------------------------------
/packages/cli/rescript.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "better-tmux-cli",
3 | "sources": [
4 | {
5 | "dir": "src",
6 | "subdirs": true
7 | }
8 | ],
9 | "package-specs": [
10 | {
11 | "module": "esmodule",
12 | "in-source": true
13 | }
14 | ],
15 | "jsx": {
16 | "module": "TmuxJsx"
17 | },
18 | "suffix": ".res.js",
19 | "bs-dependencies": [
20 | "@rescript/core",
21 | "rescript-bun"
22 | ],
23 | "bsc-flags": [
24 | "-open RescriptCore",
25 | "-open RescriptBun",
26 | "-open RescriptBun.Globals"
27 | ]
28 | }
29 |
--------------------------------------------------------------------------------
/packages/cli/src/Main.res:
--------------------------------------------------------------------------------
1 | Runner.run()->ignore
2 |
--------------------------------------------------------------------------------
/packages/cli/src/bindings/BetterTmux.res:
--------------------------------------------------------------------------------
1 | type themePalette = {
2 | background: string,
3 | foreground: string,
4 | primary: string,
5 | secondary: string,
6 | }
7 |
8 | @module("better-tmux")
9 | external fallback: themePalette = "catppuccinMocha"
10 |
11 | @module("better-tmux")
12 | external getTheme: string => option = "getTheme"
13 |
--------------------------------------------------------------------------------
/packages/cli/src/bindings/BunX.res:
--------------------------------------------------------------------------------
1 |
2 | type parseArgs<'values> = {
3 | values: 'values
4 | }
5 |
6 | type flag = {
7 | @as("type") type_: string,
8 | }
9 |
10 | type parseArgsParams<'values> = {
11 | args: array,
12 | options: 'values,
13 | strict: bool,
14 | allowPositionals: bool,
15 | }
16 |
17 | @module("util")
18 | external parseArgs: parseArgsParams<'flags> => parseArgs<'values> = "parseArgs"
19 |
--------------------------------------------------------------------------------
/packages/cli/src/bindings/ReactReconcilier.res:
--------------------------------------------------------------------------------
1 | module type Reconcilier = {
2 | type root
3 | type componentElement
4 | type props
5 | }
6 |
7 | module Make = (R: Reconcilier) => {
8 | type t
9 | type componentElement = R.componentElement
10 | type root = R.root
11 | type payload
12 | type context
13 | type defaultEventPriority
14 | type props = R.props
15 | type hostContext = {isInsideText: bool}
16 |
17 | type createParams<'props> = {
18 | getRootHostContext: unit => hostContext,
19 | appendChildToContainer: (root, componentElement) => unit,
20 | appendInitialChild: (componentElement, componentElement) => unit,
21 | createInstance: (string, props, root) => componentElement,
22 | createTextInstance: (Jsx.element) => componentElement,
23 | prepareUpdate: (componentElement, string, 'props, 'props) => payload,
24 | commitUpdate: (componentElement, payload) => unit,
25 | commitTextUpdate: (componentElement, string, string) => unit,
26 | appendChild: (componentElement, componentElement) => unit,
27 | getChildHostContext: unit => option,
28 | shouldSetTextContent: unit => option,
29 | prepareForCommit: unit => option,
30 | preparePortalMount: unit => unit,
31 | clearContainer: unit => unit,
32 | resetAfterCommit: unit => unit,
33 | resetTextContent: unit => unit,
34 | hideTextInstance: unit => unit,
35 | unhideTextInstance: unit => unit,
36 | getPublicInstance: unit => option,
37 | hideInstance: array => unit,
38 | unhideInstance: unit => unit,
39 | insertBefore: (componentElement, componentElement, componentElement) => unit,
40 | finalizeInitialChildren: unit => bool,
41 | getCurrentEventPriority: unit => defaultEventPriority,
42 | beforeActiveInstanceBlur: unit => unit,
43 | afterActiveInstanceBlur: unit => unit,
44 | detachDeletedInstance: unit => unit,
45 | getInstanceFromNode: unit => option,
46 | prepareScopeUpdate: unit => unit,
47 | getInstanceFromScope: unit => option,
48 | insertInContainerBefore: unit => unit,
49 | removeChildFromContainer: unit => unit,
50 | removeChild: array => unit,
51 | isPrimaryRenderer: bool,
52 | supportsMutation: bool,
53 | supportsPersistence: bool,
54 | supportsHydration: bool,
55 | scheduleTimeout: (unit => unit, int) => int,
56 | cancelTimeout: int => unit,
57 | noTimeout: int,
58 | }
59 |
60 | @module("react-reconciler")
61 | external create: createParams<{..}> => t = "default"
62 |
63 | type container
64 |
65 | @send
66 | external createContainer: (
67 | t,
68 | root,
69 | int,
70 | Js.Nullable.t,
71 | bool,
72 | Js.Nullable.t,
73 | string,
74 | unit => Js.Nullable.t,
75 | Js.Nullable.t,
76 | ) => container = "createContainer"
77 |
78 | type app = Jsx.element
79 |
80 | @send
81 | external updateContainer: (
82 | t,
83 | app,
84 | container,
85 | Js.Nullable.t,
86 | unit => Js.Nullable.t,
87 | ) => unit = "updateContainer"
88 | }
89 |
--------------------------------------------------------------------------------
/packages/cli/src/core/Bindings.res:
--------------------------------------------------------------------------------
1 | let execute = (bindings: array) => {
2 | bindings->Array.forEach(bind => {
3 | Tmux.exec(Bind(bind.key, bind.command, bind.options->Option.getOr([])))
4 | })
5 | }
6 |
--------------------------------------------------------------------------------
/packages/cli/src/core/Config.res:
--------------------------------------------------------------------------------
1 | type windowType = [
2 | | #active
3 | | #normal
4 | ]
5 |
6 | type windowParams = {
7 | @as("type") type_: windowType,
8 | number: string,
9 | name: string,
10 | }
11 |
12 | type window = windowParams => TmuxJsx.element
13 |
14 | type status = {
15 | fg?: string,
16 | bg?: string,
17 | left?: TmuxJsx.element,
18 | right?: TmuxJsx.element,
19 | position?: string,
20 | }
21 |
22 | type options = {
23 | terminalOverrides?: string,
24 | escapeTime?: int,
25 | paneBaseIndex?: int,
26 | statusKeys?: string,
27 | setTitles?: string,
28 | setTitlesString?: string,
29 | modeKeys?: string,
30 | prefix?: string,
31 | baseIndex?: int,
32 | historyLimit?: int,
33 | defaultTerminal?: string,
34 | mouse?: string,
35 | renumberWindows?: string,
36 | aggressiveResize?: string,
37 | }
38 |
39 | type bind = {
40 | key: string,
41 | command: string,
42 | options?: array
43 | }
44 |
45 | type config = {
46 | bindings?: array,
47 | theme?: string,
48 | status?: status,
49 | window?: window,
50 | options?: options,
51 | }
52 |
53 |
54 | type mod = {default: config}
55 |
56 | @val external import_: string => promise = "import"
57 |
--------------------------------------------------------------------------------
/packages/cli/src/core/Debug.res:
--------------------------------------------------------------------------------
1 | let log = (content) => {
2 | let debugMode = Bun.Env.get(Bun.env, "BETTER_TMUX_DEBUG")
3 | switch debugMode {
4 | | Some("1") => Console.log2("[🔎 BetterTmux] Executing Command: ", content)
5 | | Some(_)
6 | | None => ()
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/packages/cli/src/core/GlobalOptions.res:
--------------------------------------------------------------------------------
1 | let tap = (opt, fn) => opt->Option.map(value => fn(value))->ignore
2 |
3 | let execute = (options: Config.options) => {
4 | options.mouse->tap(v => Tmux.exec(SetGlobal(Mouse(v))))
5 | options.escapeTime->tap(v => Tmux.exec(SetGlobal(EscapeTime(v))))
6 | options.paneBaseIndex->tap(v => Tmux.exec(SetGlobal(PaneBaseIndex(v))))
7 | options.statusKeys->tap(v => Tmux.exec(SetGlobal(StatusKeys(v))))
8 | options.modeKeys->tap(v => Tmux.exec(SetGlobal(ModeKeys(v))))
9 | options.setTitles->tap(v => Tmux.exec(SetGlobal(SetTitles(v))))
10 | options.setTitlesString->tap(v => Tmux.exec(SetGlobal(SetTitlesString(v))))
11 | options.prefix->tap(v => Tmux.exec(SetGlobal(Prefix(v))))
12 | options.baseIndex->tap(v => Tmux.exec(SetGlobal(BaseIndex(v))))
13 | options.historyLimit->tap(v => Tmux.exec(SetGlobal(HistoryLimit(v))))
14 | options.defaultTerminal->tap(v => Tmux.exec(SetGlobal(DefaultTerminal(v))))
15 | options.terminalOverrides->tap(v => Tmux.exec(SetOverrideGlobal(TerminalOverrides(v))))
16 | options.renumberWindows->tap(v => Tmux.exec(SetGlobal(RenumberWindows(v))))
17 | options.aggressiveResize->tap(v => Tmux.exec(SetGlobal(AggressiveResize(v))))
18 | }
19 |
20 |
--------------------------------------------------------------------------------
/packages/cli/src/core/Parser.res:
--------------------------------------------------------------------------------
1 | let spacing = length => Array.make(~length, " ")->Array.join("")
2 | let getPadding = (props: TmuxJsx.Elements.props) => {
3 | switch props.padding {
4 | | None => {
5 | let paddingLeft = props.paddingLeft->Option.mapOr("", spacing)
6 | let paddingRight = props.paddingRight->Option.mapOr("", spacing)
7 |
8 | (paddingLeft, paddingRight)
9 | }
10 | | Some(value) => (spacing(value), spacing(value))
11 | }
12 | }
13 |
14 | let rec make = (node: Reconcilier.Tree.t, ~body="") => {
15 | let element = (~props, ~children) => {
16 | let (paddingLeft, paddingRight) = getPadding(props)
17 | let gap = props.gap->Option.mapOr("", spacing)
18 | let styles = props->Styles.inline
19 | let children = children->Array.reduceWithIndex("", (body, child, index) => {
20 | let middle = if index === 0 {
21 | ""
22 | } else {
23 | `${styles}${gap}`
24 | }
25 |
26 | `${body}${middle}${child->make}`
27 | })
28 |
29 | [styles, paddingLeft, children, paddingRight]->Array.join("")
30 | }
31 |
32 | switch node {
33 | | Element(_, props, children) => element(~props, ~children)
34 | | TextElement(value) => `${body}${value->Obj.magic}`
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/packages/cli/src/core/Reconcilier.res:
--------------------------------------------------------------------------------
1 | module Tree = {
2 | type prop = {
3 | name: string,
4 | value: string,
5 | }
6 |
7 | type rec t =
8 | | Element(string, TmuxJsx.Elements.props, array)
9 | | TextElement(Jsx.element)
10 | }
11 |
12 | type root = {
13 | mount: Tree.t => unit,
14 | }
15 |
16 | module Reconcilier = ReactReconcilier.Make({
17 | type root = root
18 | type componentElement = Tree.t
19 | type props = TmuxJsx.Elements.props
20 | })
21 |
22 | let reconcilier = Reconcilier.create({
23 | getRootHostContext: () => {isInsideText: false},
24 | appendChildToContainer: (parent, child) => {
25 | parent.mount(child)
26 | },
27 | appendInitialChild: (parent, child) => {
28 | switch parent {
29 | | Element(_, _, children) => children->Array.push(child)
30 | | _ => ()
31 | }
32 | },
33 | createInstance: (name, props, _) => {
34 | Element(name, props, [])
35 | },
36 | createTextInstance: text => TextElement(text),
37 | prepareUpdate: (_, __, _, _) => {
38 | Obj.magic()
39 | },
40 | commitUpdate: (_, _) => {
41 | Console.log("commitUpdate")
42 | },
43 | commitTextUpdate: (_, _, _) => {
44 | Console.log("commitTextUpdate")
45 | },
46 | appendChild: (_, _) => {
47 | Console.log("appendChild")
48 | Obj.magic()
49 | },
50 | getChildHostContext: () => Obj.magic(),
51 | shouldSetTextContent: () => Obj.magic(),
52 | prepareForCommit: () => Obj.magic(),
53 | preparePortalMount: () => Obj.magic(),
54 | clearContainer: () => Obj.magic(),
55 | resetAfterCommit: () => Obj.magic(),
56 | resetTextContent: () => Obj.magic(),
57 | hideTextInstance: () => Obj.magic(),
58 | unhideTextInstance: () => Obj.magic(),
59 | getPublicInstance: () => Obj.magic(),
60 | hideInstance: _ => Obj.magic(),
61 | unhideInstance: () => Obj.magic(),
62 | insertBefore: (_, _, _) => Obj.magic(),
63 | finalizeInitialChildren: () => Obj.magic(),
64 | getCurrentEventPriority: () => Obj.magic(),
65 | beforeActiveInstanceBlur: () => Obj.magic(),
66 | afterActiveInstanceBlur: () => Obj.magic(),
67 | detachDeletedInstance: () => Obj.magic(),
68 | getInstanceFromNode: () => Obj.magic(),
69 | prepareScopeUpdate: () => Obj.magic(),
70 | getInstanceFromScope: () => Obj.magic(),
71 | insertInContainerBefore: () => Obj.magic(),
72 | removeChildFromContainer: () => Obj.magic(),
73 | removeChild: _ => Obj.magic(),
74 | isPrimaryRenderer: true,
75 | supportsMutation: true,
76 | supportsPersistence: false,
77 | supportsHydration: false,
78 | scheduleTimeout: Js.Global.setTimeout->Obj.magic,
79 | cancelTimeout: Js.Global.clearTimeout->Obj.magic,
80 | noTimeout: -1,
81 | })
82 |
83 | let render = (app, root) => {
84 | let container =
85 | reconcilier->Reconcilier.createContainer(
86 | root,
87 | 0,
88 | Js.Nullable.null,
89 | false,
90 | Js.Nullable.null,
91 | "id",
92 | () => Js.Nullable.null,
93 | null,
94 | )
95 | reconcilier->Reconcilier.updateContainer(app, container, Js.Nullable.null, () => Js.Nullable.null)
96 | }
97 |
98 |
--------------------------------------------------------------------------------
/packages/cli/src/core/Renderer.res:
--------------------------------------------------------------------------------
1 | let createRoot = exec => {
2 | let root: Reconcilier.root = {
3 | mount: tree => {
4 | let body = Parser.make(tree)
5 | exec(body)
6 | },
7 | }
8 |
9 | root
10 | }
11 |
12 | module StatusRenderer = {
13 | let leftRoot = createRoot(body => Tmux.exec(SetGlobal(StatusLeft(body))))
14 | let rightRoot = createRoot(body => Tmux.exec(SetGlobal(StatusRight(body))))
15 |
16 | let render = (~theme: BetterTmux.themePalette, ~status: Config.status) => {
17 | let statusBg = status.bg->Option.getOr(theme.background)
18 | let statusFg = status.fg->Option.getOr(theme.foreground)
19 |
20 | switch status.left {
21 | | Some(tree) => Reconcilier.render(tree, leftRoot)
22 | | None => Tmux.exec(SetGlobal(StatusLeft("")))
23 | }
24 |
25 | switch status.right {
26 | | Some(tree) => Reconcilier.render(tree, rightRoot)
27 | | None => Tmux.exec(SetGlobal(StatusRight("")))
28 | }
29 |
30 | switch status.position {
31 | | Some(position) => Tmux.exec(SetGlobal(StatusPosition(position)))
32 | | None => ()
33 | }
34 |
35 |
36 | Tmux.exec(SetGlobal(StatusBg(statusBg)))
37 | Tmux.exec(SetGlobal(StatusFg(statusFg)))
38 | }
39 | }
40 |
41 | module WindowRenderer = {
42 | let activeRoot = createRoot(body => Tmux.exec(SetGlobal(WindowStatusCurrentFormat(body))))
43 | let normalRoot = createRoot(body => Tmux.exec(SetGlobal(WindowStatusFormat(body))))
44 |
45 | let render = (window: Config.window) => {
46 | Reconcilier.render(
47 | window({
48 | type_: #active,
49 | name: "#W",
50 | number: "#I",
51 | }),
52 | activeRoot,
53 | )
54 |
55 | Reconcilier.render(
56 | window({
57 | type_: #normal,
58 | name: "#W",
59 | number: "#I",
60 | }),
61 | normalRoot,
62 | )
63 | }
64 | }
65 |
66 | let render = (config: Config.config) => {
67 | let (theme, themeName) = Theme.getCurrent(config.theme)
68 | Theme.setEnv(Bun.env, themeName)
69 |
70 | switch config.window {
71 | | Some(window) => WindowRenderer.render(window)
72 | | None => ()
73 | }
74 |
75 | switch config.status {
76 | | Some(status) => StatusRenderer.render(~theme, ~status)
77 | | None => ()
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/packages/cli/src/core/Runner.res:
--------------------------------------------------------------------------------
1 | type flags<'value> = {file: 'value, version: 'value}
2 |
3 | @module("./version.js") external version: string = "version"
4 |
5 | let run = async () => {
6 | let options: flags = {
7 | file: {type_: "string"},
8 | version: {type_: "boolean"},
9 | }
10 |
11 | let {values}: BunX.parseArgs>> = BunX.parseArgs({
12 | args: Bun.argv,
13 | options,
14 | strict: true,
15 | allowPositionals: true,
16 | })
17 |
18 | switch values.file {
19 | | None => ()
20 | | Some(file) => {
21 | let path = Path.resolve([file])
22 | let {default: config} = await Config.import_(path)
23 |
24 | Renderer.render(config)
25 |
26 | switch config.options {
27 | | None => ()
28 | | Some(options) => GlobalOptions.execute(options)
29 | }
30 |
31 | switch config.bindings {
32 | | None => ()
33 | | Some(bindings) => Bindings.execute(bindings)
34 | }
35 | }
36 | }
37 |
38 | switch values.version {
39 | | None => ()
40 | | Some(_) => Console.log(`better-tmux @ ${version} 🚀`)
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/packages/cli/src/core/Styles.res:
--------------------------------------------------------------------------------
1 | let toString = (styles: TmuxJsx.Elements.props) => {
2 | let str = (~name, value) => value->Option.mapOr("", v => `${name}=${v}`)
3 | let bool = (~name, value) => value->Option.mapOr("", v => v ? name : "")
4 |
5 | let bg = str(~name="bg", styles.bg)
6 | let fg = str(~name="fg", styles.fg)
7 | let bold = bool(~name="bold", styles.bold)
8 |
9 | [bg, fg, bold]
10 | ->Array.filter(v => v !== "")
11 | ->Array.join(",")
12 | }
13 |
14 | let inline = styles => `#[${toString(styles)}]`
15 |
--------------------------------------------------------------------------------
/packages/cli/src/core/Theme.res:
--------------------------------------------------------------------------------
1 | let getCurrent = (theme: option) => {
2 | let theme = theme->Option.getOr("catppuccin-mocha")
3 |
4 | let themePalette = BetterTmux.getTheme(theme)->Option.getOr(BetterTmux.fallback)
5 | (themePalette, theme)
6 | }
7 |
8 | @set
9 | external setEnv: (Bun.Env.t, string) => unit = "BETTER_TMUX_THEME"
10 |
--------------------------------------------------------------------------------
/packages/cli/src/core/Tmux.res:
--------------------------------------------------------------------------------
1 | type options =
2 | | StatusFg(string)
3 | | StatusBg(string)
4 | | StatusLeft(string)
5 | | StatusRight(string)
6 | | StatusPosition(string)
7 | | WindowStatusCurrentFormat(string)
8 | | WindowStatusFormat(string)
9 | | TerminalOverrides(string)
10 | | EscapeTime(int)
11 | | PaneBaseIndex(int)
12 | | StatusKeys(string)
13 | | ModeKeys(string)
14 | | SetTitles(string)
15 | | SetTitlesString(string)
16 | | Prefix(string)
17 | | BaseIndex(int)
18 | | HistoryLimit(int)
19 | | DefaultTerminal(string)
20 | | Mouse(string)
21 | | RenumberWindows(string)
22 | | AggressiveResize(string)
23 |
24 | type command =
25 | | SetGlobal(options)
26 | | SetOverrideGlobal(options)
27 | | Bind(string, string, array)
28 |
29 | let parseOptions = options =>
30 | switch options {
31 | | StatusFg(value) => `status-fg "${value}"`
32 | | StatusBg(value) => `status-bg "${value}"`
33 | | StatusLeft(value) => `status-left "${value}"`
34 | | StatusRight(value) => `status-right "${value}"`
35 | | StatusPosition(value) => `status-position "${value}"`
36 | | WindowStatusCurrentFormat(value) => `window-status-current-format "${value}"`
37 | | WindowStatusFormat(value) => `window-status-format "${value}"`
38 | | TerminalOverrides(value) => `terminal-overrides "${value}"`
39 | | EscapeTime(value) => `escape-time "${value->Int.toString}"`
40 | | PaneBaseIndex(value) => `pane-base-index "${value->Int.toString}"`
41 | | StatusKeys(value) => `status-keys "${value}"`
42 | | ModeKeys(value) => `mode-keys "${value}"`
43 | | SetTitles(value) => `set-titles ${value}`
44 | | SetTitlesString(value) => `set-titles-string "${value}"`
45 | | Prefix(value) => `prefix "${value}"`
46 | | BaseIndex(value) => `base-index "${value->Int.toString}"`
47 | | HistoryLimit(value) => `history-limit "${value->Int.toString}"`
48 | | DefaultTerminal(value) => `default-terminal "${value}"`
49 | | Mouse(value) => `mouse "${value}"`
50 | | RenumberWindows(value) => `renumber-windows ${value}`
51 | | AggressiveResize(value) => `aggressive-resize ${value}`
52 | }
53 |
54 | let parse = command =>
55 | switch command {
56 | | SetGlobal(options) => `tmux set -g ${options->parseOptions}`
57 | | SetOverrideGlobal(options) => `tmux set -ga ${options->parseOptions}`
58 | | Bind(key, command, options) => `tmux bind ${key} ${command} ${options->Array.join(" ")}`
59 | }
60 |
61 | let exec = command => {
62 | let parsedCommand = command->parse
63 | Debug.log(parsedCommand)
64 | parsedCommand->ChildProcess.execSync->ignore
65 | }
66 |
--------------------------------------------------------------------------------
/packages/cli/src/core/TmuxJsx.res:
--------------------------------------------------------------------------------
1 | type element = Jsx.element
2 |
3 | type component<'props> = Jsx.component<'props>
4 | type componentLike<'props, 'return> = Jsx.componentLike<'props, 'return>
5 |
6 | type fragmentProps = {children?: element}
7 |
8 | @module("react/jsx-runtime") external jsxFragment: component = "Fragment"
9 |
10 | @module("react/jsx-runtime")
11 | external jsx: (component<'props>, 'props) => element = "jsx"
12 |
13 | @module("react/jsx-runtime")
14 | external jsxs: (component<'props>, 'props) => element = "jsxs"
15 |
16 | @val external null: Jsx.element = "null"
17 |
18 | external float: float => Jsx.element = "%identity"
19 | external int: int => Jsx.element = "%identity"
20 | external string: string => Jsx.element = "%identity"
21 | external array: array => element = "%identity"
22 |
23 | module Elements = {
24 | external someElement: Jsx.element => option = "%identity"
25 |
26 | type props = {
27 | children?: JsxU.element,
28 | bg?: string,
29 | fg?: string,
30 | bold?: bool,
31 | padding?: int,
32 | paddingLeft?: int,
33 | paddingRight?: int,
34 | gap?: int,
35 |
36 | }
37 |
38 | @module("react/jsx-runtime")
39 | external jsx: (string, props) => element = "jsx"
40 |
41 | @module("react/jsx-runtime")
42 | external jsxs: (string, props) => element = "jsxs"
43 | }
44 |
--------------------------------------------------------------------------------
/packages/cli/src/core/version.js:
--------------------------------------------------------------------------------
1 | import packageJson from '../../package.json'
2 |
3 | export const version = packageJson.version
4 |
--------------------------------------------------------------------------------
/packages/lib/.release-it.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://unpkg.com/release-it/schema/release-it.json",
3 | "plugins": {
4 | "@release-it/keep-a-changelog": {
5 | "filename": "packages/lib/CHANGELOG.md"
6 | },
7 | "@release-it/bumper": {
8 | "in": "packages/lib/package.json",
9 | "out": ["packages/lib/package.json"]
10 | }
11 | },
12 | "github": {
13 | "release": true,
14 | "assets": [".build/*"]
15 | },
16 | "git": {
17 | "commitMessage": "v${version} [skip-ci]",
18 | "tagAnnotation": "v${version} [skip-ci]",
19 | "tagName": "v${version}"
20 | },
21 | "npm": {
22 | "publish": false
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/packages/lib/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Changelog
2 |
3 | All notable changes to this project will be documented in this file.
4 |
5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7 |
8 | ## [Unreleased]
9 |
10 | ### Breaking change 💥
11 |
12 | - Renamed widget `Date` to `Calendar` to avoid conflicts with the native `Date` constructor
13 |
14 | ## [0.0.15] - 2024-10-20
15 |
16 | ### Fixes 🐛
17 |
18 | - Updated the `--version` command to display the version correctly
19 |
20 | ## [0.0.14] - 2024-10-20
21 |
22 | ### Fixes 🐛
23 |
24 | - Fixed the `better-tmux --version` command
25 |
26 | ## [0.0.13] - 2024-07-15
27 |
28 | ### Fixes 🐛
29 | - Add option to override globals by @fdaciuk in https://github.com/bettervim/better-tmux/pull/15
30 |
31 | ### Features 🚀
32 | - Added support for popular themes (by @vmarcosp in https://github.com/bettervim/better-tmux/pull/14) including:
33 | - Ayu
34 | - Onedark
35 | - Tokyonight
36 |
37 | ## [0.0.12] - 2024-07-13
38 |
39 | ### Added 📦
40 |
41 | - Added verbose logs via `BETTER_TMUX_DEBUG=1` env var
42 |
43 | ## [0.0.11] - 2024-07-13
44 |
45 | ### Fixes 🐛
46 | - Fixed background and foreground color for default window
47 | - Removed unused warning messages
48 |
49 | ## [0.0.10] - 2024-07-13
50 |
51 | ### Features 🚀
52 | - Support for custom bindings by @vmarcosp in https://github.com/bettervim/better-tmux/pull/11
53 |
--------------------------------------------------------------------------------
/packages/lib/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "better-tmux",
3 | "version": "0.0.15",
4 | "exports": {
5 | ".": {
6 | "types": "./dist/index.d.ts",
7 | "default": "./dist/index.js"
8 | },
9 | "./presets": {
10 | "types": "./dist/presets/index.d.ts",
11 | "default": "./dist/presets/index.js"
12 | },
13 | "./widgets": {
14 | "types": "./dist/widgets/index.d.ts",
15 | "default": "./dist/widgets/index.js"
16 | }
17 | },
18 | "type": "module",
19 | "scripts": {
20 | "build": "tsc -p tsconfig.json",
21 | "dev": "tsc -p tsconfig.json --watch"
22 | },
23 | "dependencies": {
24 | "@types/node": "^20.14.9",
25 | "@types/react": "^18.3.3",
26 | "react": "^18.3.1",
27 | "typescript": "^5.6.2"
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/packages/lib/src/components.tsx:
--------------------------------------------------------------------------------
1 | import type { ReactNode } from "react"
2 |
3 | export type ElementProps = {
4 | padding?: number,
5 | paddingLeft?: number,
6 | paddingRight?: number,
7 | gap?: number,
8 | bold?: boolean,
9 | bg?: string,
10 | fg?: string,
11 | children: ReactNode,
12 | }
13 |
14 | export const Box = ({ children, ...props}: ElementProps) => (
15 | {children}
16 | )
17 |
18 | export const Text = ({ children, ...props}: ElementProps) => (
19 | {children}
20 | )
21 |
--------------------------------------------------------------------------------
/packages/lib/src/global.d.ts:
--------------------------------------------------------------------------------
1 | import type { Theme } from './types.ts'
2 | import type { ElementProps } from "./components.tsx"
3 |
4 | declare global {
5 | namespace JSX {
6 | // eslint-disable-next-line @typescript-eslint/consistent-type-definitions
7 | interface IntrinsicElements {
8 | 'text': ElementProps,
9 | 'box': ElementProps
10 | }
11 | }
12 |
13 | declare namespace NodeJS {
14 | interface ProcessEnv {
15 | BETTER_TMUX_THEME: Theme
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/packages/lib/src/hooks/index.ts:
--------------------------------------------------------------------------------
1 | export * from './use-theme.js'
2 |
--------------------------------------------------------------------------------
/packages/lib/src/hooks/use-theme.ts:
--------------------------------------------------------------------------------
1 | import type { Theme } from "../types.js"
2 |
3 | type ThemePalette = {
4 | background: string,
5 | foreground: string,
6 | primary: string,
7 | secondary: string,
8 | }
9 |
10 | const nord = {
11 | foreground: "#D8DEE9",
12 | background: "#2E3440",
13 | primary: "#94BECE",
14 | secondary: "#94BECE",
15 | }
16 |
17 | const dracula = {
18 | foreground: "#f8f8f2",
19 | background: "#282a36",
20 | primary: "#bd93f9",
21 | secondary: "#50fa7b",
22 | }
23 |
24 | export const catppuccinMocha = {
25 | foreground: "#cdd6f4",
26 | background: "#282a36",
27 | primary: "#b1baf7",
28 | secondary: "#50fa7b",
29 | }
30 |
31 | const catppuccinMacchiato = {
32 | foreground: "#cad3f5",
33 | background: "#24273a",
34 | primary: "#b7bdf8",
35 | secondary: "#50fa7b",
36 | }
37 |
38 | const catppuccinFrappe = {
39 | foreground: "#cad3f5",
40 | background: "#24273a",
41 | primary: "#babbf1",
42 | secondary: "#50fa7b",
43 | }
44 |
45 | const catppuccinLatte = {
46 | foreground: "#4c4f69",
47 | background: "#dce0e8",
48 | primary: "#7287fd",
49 | secondary: "#50fa7b",
50 | }
51 |
52 | const onedark = {
53 | foreground: "#abb2bf",
54 | background: "#282c34",
55 | primary: "#98c379",
56 | secondary: "#d19a66",
57 | }
58 |
59 | const onedarkDark = {
60 | foreground: "#abb2bf",
61 | background: "#000000",
62 | primary: "#89ca78",
63 | secondary: "#d19a66",
64 | }
65 |
66 | const onelight = {
67 | foreground: "#6a6a6a",
68 | background: "#fafafa",
69 | primary: "#1da912",
70 | secondary: "#ee9025",
71 | }
72 |
73 | const onedarkVivid = {
74 | foreground: "#abb2bf",
75 | background: "#282c34",
76 | primary: "#89ca78",
77 | secondary: "#d19a66",
78 | }
79 |
80 | const tokyonightStorm = {
81 | foreground: "#c0caf5",
82 | background: "#24283b",
83 | primary: "#7aa2f7",
84 | secondary: "#9ece6a",
85 | }
86 |
87 | const tokyonightMoon = {
88 | foreground: "#c8d3f5",
89 | background: "#222436",
90 | primary: "#82aaff",
91 | secondary: "#c3e88d",
92 | }
93 |
94 | const tokyonightDay = {
95 | foreground: "#222436",
96 | background: "#c8d3f5",
97 | primary: "#82aaff",
98 | secondary: "#c3e88d",
99 | }
100 |
101 | const tokyonight = {
102 | ...tokyonightStorm,
103 | background: "#1a1b26",
104 | }
105 |
106 | const ayu = {
107 | foreground: "#cfcebe",
108 | background: "#212733",
109 | primary: "#e59448",
110 | secondary: "#b7cb52",
111 | }
112 |
113 | const ayuDark = {
114 | foreground: "#cfcebe",
115 | background: "#0f141a",
116 | primary: "#ff7734",
117 | secondary: "#b7cb52",
118 | }
119 |
120 | const ayuLight = {
121 | foreground: "#616772",
122 | background: "#fafafa",
123 | primary: "#ff7734",
124 | secondary: "#b7cb52",
125 | }
126 |
127 | export function getTheme(theme?: Theme): ThemePalette {
128 | const selectedTheme = theme || process.env.BETTER_TMUX_THEME || 'catppuccin-mocha'
129 |
130 | switch (selectedTheme) {
131 | case 'catppuccin-mocha': return catppuccinMocha
132 | case 'catppuccin-macchiato': return catppuccinMacchiato
133 | case 'catppuccin-latte': return catppuccinLatte
134 | case 'catppuccin-frappe': return catppuccinFrappe
135 | case 'nord': return nord
136 | case 'dracula': return dracula
137 | case 'onedark': return onedark
138 | case 'onelight': return onelight
139 | case 'onedark-vivid': return onedarkVivid
140 | case 'onedark-dark': return onedarkDark
141 | case 'tokyonight': return tokyonight
142 | case 'tokyonight-storm': return tokyonightStorm
143 | case 'tokyonight-moon': return tokyonightMoon
144 | case 'tokyonight-day': return tokyonightDay
145 | case 'ayu': return ayu
146 | case 'ayu-dark': return ayuDark
147 | case 'ayu-light': return ayuLight
148 | }
149 | }
150 |
151 | export const useTheme = getTheme
152 |
--------------------------------------------------------------------------------
/packages/lib/src/index.ts:
--------------------------------------------------------------------------------
1 | export * from './components.js'
2 | export * from './types.js'
3 | export * from './hooks/index.js'
4 | export * from './tmux.js'
5 |
--------------------------------------------------------------------------------
/packages/lib/src/presets/index.tsx:
--------------------------------------------------------------------------------
1 | import { useTheme } from '../hooks/use-theme.js'
2 | import type { BetterTmuxConfig, WindowConfig } from '../types.js'
3 |
4 | const Window = ({ type, number, name }: WindowConfig) => {
5 | const theme = useTheme()
6 | const style = type === "active" ? { bg: theme.primary, fg: theme.foreground } : {}
7 |
8 | return (
9 |
10 | {number}: {name}
11 |
12 | )
13 | }
14 |
15 | export const minimal = {
16 | window: (window) =>
17 | } satisfies BetterTmuxConfig
18 |
--------------------------------------------------------------------------------
/packages/lib/src/tmux.ts:
--------------------------------------------------------------------------------
1 | const globals = {
2 | hostname: "#H",
3 | sessionName: "#S",
4 |
5 | hour_24: '%H',
6 | hour_12: '%I',
7 | hour_24_single: '%k',
8 | hour_12_single: '%l',
9 | minute: '%M',
10 | second: '%S',
11 | am_pm_upper: '%p',
12 | am_pm_lower: '%P',
13 |
14 | year: '%Y',
15 | month: '%m',
16 | day: '%d',
17 | abbreviated_month: '%b',
18 | full_month: '%B',
19 | abbreviated_day: '%a',
20 | full_day: '%A',
21 | week_number: '%V',
22 | day_of_year: '%j',
23 | day_of_week_number: '%u',
24 | }
25 |
26 | export const tmux = {
27 | globals,
28 | } as const
29 |
--------------------------------------------------------------------------------
/packages/lib/src/types.ts:
--------------------------------------------------------------------------------
1 | export type WindowConfig = {
2 | number: number,
3 | name: string,
4 | type: "active" | "normal"
5 | }
6 |
7 | export type Theme =
8 | | "catppuccin-mocha"
9 | | "catppuccin-latte"
10 | | "catppuccin-macchiato"
11 | | "catppuccin-frappe"
12 | | "nord"
13 | | "dracula"
14 | | "onedark"
15 | | "onelight"
16 | | "onedark-dark"
17 | | "onedark-vivid"
18 | | "tokyonight"
19 | | "tokyonight-moon"
20 | | "tokyonight-day"
21 | | "tokyonight-storm"
22 | | "ayu"
23 | | "ayu-dark"
24 | | "ayu-light"
25 |
26 | export type Status = {
27 | fg?: string,
28 | bg?: string,
29 | left?: JSX.Element,
30 | right?: JSX.Element,
31 | position?: "top" | "bottom"
32 | }
33 |
34 |
35 | type Toggle = "on" | "off"
36 |
37 | export type Options = {
38 | terminalOverrides?: string,
39 | escapeTime?: number,
40 | paneBaseIndex?: number,
41 | statusKeys?: "vi" | "emacs",
42 | modeKeys?: "vi" | "emacs",
43 | setTitles?: Toggle,
44 | setTitlesString?: string,
45 | prefix?: string,
46 | baseIndex?: number,
47 | historyLimit?: number,
48 | defaultTerminal?: string,
49 | mouse?: string,
50 | renumberWindows?: Toggle,
51 | aggressiveResize?: boolean,
52 | }
53 |
54 | type TmuxCommand =
55 | | 'select-pane'
56 | | 'new-window'
57 | | 'new-window'
58 | | 'split-window'
59 | | 'select-pane'
60 | | 'select-window'
61 | | 'kill-pane'
62 | | 'kill-window'
63 | | 'resize-pane'
64 | | 'swap-pane'
65 | | 'rename-window'
66 | | 'list-panes'
67 | | 'list-windows'
68 | | 'list-sessions'
69 | | 'attach-session'
70 | | 'detach-client'
71 | | 'show-messages'
72 | | 'display-message'
73 | | 'copy-mode'
74 | | 'paste-buffer'
75 |
76 | export type Bind = {
77 | key: string,
78 | command: TmuxCommand,
79 | options?: string[]
80 | }
81 |
82 | export type BetterTmuxConfig = {
83 | bindings?: Bind[],
84 | options?: Options,
85 | theme?: Theme,
86 | status?: Status,
87 | window?: (config: WindowConfig) => JSX.Element
88 | }
89 |
--------------------------------------------------------------------------------
/packages/lib/src/widgets/index.tsx:
--------------------------------------------------------------------------------
1 | import { tmux } from "../tmux.js";
2 | import { Widget, WidgetIcon, WidgetLabel } from "./widget.js";
3 | export * from "./widget.js";
4 |
5 | type CommonModuleProps = {
6 | icon?: string;
7 | };
8 |
9 | type HostnameProps = CommonModuleProps;
10 |
11 | export const Hostname = ({ icon }: HostnameProps) => {
12 | return (
13 |
14 | {icon ?? ""}
15 | {tmux.globals.hostname}
16 |
17 | );
18 | };
19 |
20 | type SessionNameProps = CommonModuleProps;
21 |
22 | export const SessionName = ({ icon }: SessionNameProps) => {
23 | return (
24 |
25 | {icon ?? ""}
26 | {tmux.globals.sessionName}
27 |
28 | );
29 | };
30 |
31 | type ClockProps = CommonModuleProps & {
32 | format?: string;
33 | };
34 |
35 | export const Clock = ({ format, icon }: ClockProps) => {
36 | const value = format ?? `${tmux.globals.hour_24}:${tmux.globals.minute}`;
37 |
38 | return (
39 |
40 | {icon ?? ""}
41 | {value}
42 |
43 | );
44 | };
45 |
46 | type CalendarProps = CommonModuleProps & {
47 | format?: string;
48 | };
49 |
50 | export const Calendar = ({ format, icon }: CalendarProps) => {
51 | const value =
52 | format ?? `${tmux.globals.month}-${tmux.globals.day}-${tmux.globals.year}`;
53 |
54 | return (
55 |
56 | {icon ?? ""}
57 | {value}
58 |
59 | );
60 | };
61 |
--------------------------------------------------------------------------------
/packages/lib/src/widgets/types.ts:
--------------------------------------------------------------------------------
1 | export type CommonModuleProps = {
2 | icon?: string,
3 | }
4 |
5 |
--------------------------------------------------------------------------------
/packages/lib/src/widgets/widget.tsx:
--------------------------------------------------------------------------------
1 | import type { PropsWithChildren } from "react"
2 | import { useTheme } from "../hooks/use-theme.js"
3 |
4 | export const Widget = ({ children }: PropsWithChildren) => {
5 | const theme = useTheme()
6 |
7 | return (
8 |
9 | {children}
10 |
11 | )
12 | }
13 |
14 | export const WidgetIcon = ({ children }: PropsWithChildren) => {
15 | const theme = useTheme()
16 |
17 | return (
18 |
19 | {children}
20 |
21 | )
22 | }
23 |
24 | export const WidgetLabel = ({ children }: PropsWithChildren) => {
25 | const theme = useTheme()
26 |
27 | return (
28 |
29 | {children}
30 |
31 | )
32 | }
33 |
--------------------------------------------------------------------------------
/packages/lib/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "outDir": "dist",
4 | "declaration": true,
5 | "declarationDir": "dist",
6 | "module": "nodenext",
7 | "allowJs": true,
8 | "jsx": "react-jsx",
9 | "strict": true,
10 | "moduleResolution": "nodenext",
11 | "esModuleInterop": true,
12 | "skipLibCheck": true
13 | },
14 | "include": ["./src/**/*"]
15 | }
16 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '9.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | importers:
8 |
9 | .:
10 | dependencies:
11 | '@changesets/cli':
12 | specifier: ^2.27.7
13 | version: 2.27.7
14 | typescript:
15 | specifier: ^5.5.3
16 | version: 5.5.3
17 | devDependencies:
18 | '@biomejs/biome':
19 | specifier: 1.9.4
20 | version: 1.9.4
21 | '@release-it/bumper':
22 | specifier: ^6.0.1
23 | version: 6.0.1(release-it@17.5.0(typescript@5.5.3))
24 | '@release-it/keep-a-changelog':
25 | specifier: ^5.0.0
26 | version: 5.0.0(release-it@17.5.0(typescript@5.5.3))
27 | release-it:
28 | specifier: ^17.5.0
29 | version: 17.5.0(typescript@5.5.3)
30 | turbo:
31 | specifier: latest
32 | version: 2.0.4
33 |
34 | examples:
35 | dependencies:
36 | '@types/react':
37 | specifier: ^18.3.3
38 | version: 18.3.3
39 | better-tmux:
40 | specifier: workspace:*
41 | version: link:../packages/lib
42 | ink:
43 | specifier: ^5.0.1
44 | version: 5.0.1(@types/react@18.3.3)(react@18.3.1)
45 | react:
46 | specifier: 18.3.1
47 | version: 18.3.1
48 |
49 | packages/cli:
50 | dependencies:
51 | '@rescript/core':
52 | specifier: 1.4.0
53 | version: 1.4.0(rescript@11.1.1)
54 | '@rescript/react':
55 | specifier: 0.12.2
56 | version: 0.12.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
57 | '@types/node':
58 | specifier: ^20.14.9
59 | version: 20.14.9
60 | better-tmux:
61 | specifier: workspace:*
62 | version: link:../lib
63 | react:
64 | specifier: 18.3.1
65 | version: 18.3.1
66 | react-reconciler:
67 | specifier: 0.29.2
68 | version: 0.29.2(react@18.3.1)
69 | rescript:
70 | specifier: 11.1.1
71 | version: 11.1.1
72 | rescript-bun:
73 | specifier: 0.5.0
74 | version: 0.5.0(@rescript/core@1.4.0(rescript@11.1.1))(rescript@11.1.1)
75 |
76 | packages/lib:
77 | dependencies:
78 | '@types/node':
79 | specifier: ^20.14.9
80 | version: 20.14.9
81 | '@types/react':
82 | specifier: ^18.3.3
83 | version: 18.3.3
84 | react:
85 | specifier: ^18.3.1
86 | version: 18.3.1
87 | typescript:
88 | specifier: ^5.6.2
89 | version: 5.6.2
90 |
91 | packages:
92 |
93 | '@alcalzone/ansi-tokenize@0.1.3':
94 | resolution: {integrity: sha512-3yWxPTq3UQ/FY9p1ErPxIyfT64elWaMvM9lIHnaqpyft63tkxodF5aUElYHrdisWve5cETkh1+KBw1yJuW0aRw==}
95 | engines: {node: '>=14.13.1'}
96 |
97 | '@babel/code-frame@7.24.7':
98 | resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==}
99 | engines: {node: '>=6.9.0'}
100 |
101 | '@babel/helper-validator-identifier@7.24.7':
102 | resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==}
103 | engines: {node: '>=6.9.0'}
104 |
105 | '@babel/highlight@7.24.7':
106 | resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==}
107 | engines: {node: '>=6.9.0'}
108 |
109 | '@babel/runtime@7.24.7':
110 | resolution: {integrity: sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==}
111 | engines: {node: '>=6.9.0'}
112 |
113 | '@biomejs/biome@1.9.4':
114 | resolution: {integrity: sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog==}
115 | engines: {node: '>=14.21.3'}
116 | hasBin: true
117 |
118 | '@biomejs/cli-darwin-arm64@1.9.4':
119 | resolution: {integrity: sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw==}
120 | engines: {node: '>=14.21.3'}
121 | cpu: [arm64]
122 | os: [darwin]
123 |
124 | '@biomejs/cli-darwin-x64@1.9.4':
125 | resolution: {integrity: sha512-ngYBh/+bEedqkSevPVhLP4QfVPCpb+4BBe2p7Xs32dBgs7rh9nY2AIYUL6BgLw1JVXV8GlpKmb/hNiuIxfPfZg==}
126 | engines: {node: '>=14.21.3'}
127 | cpu: [x64]
128 | os: [darwin]
129 |
130 | '@biomejs/cli-linux-arm64-musl@1.9.4':
131 | resolution: {integrity: sha512-v665Ct9WCRjGa8+kTr0CzApU0+XXtRgwmzIf1SeKSGAv+2scAlW6JR5PMFo6FzqqZ64Po79cKODKf3/AAmECqA==}
132 | engines: {node: '>=14.21.3'}
133 | cpu: [arm64]
134 | os: [linux]
135 |
136 | '@biomejs/cli-linux-arm64@1.9.4':
137 | resolution: {integrity: sha512-fJIW0+LYujdjUgJJuwesP4EjIBl/N/TcOX3IvIHJQNsAqvV2CHIogsmA94BPG6jZATS4Hi+xv4SkBBQSt1N4/g==}
138 | engines: {node: '>=14.21.3'}
139 | cpu: [arm64]
140 | os: [linux]
141 |
142 | '@biomejs/cli-linux-x64-musl@1.9.4':
143 | resolution: {integrity: sha512-gEhi/jSBhZ2m6wjV530Yy8+fNqG8PAinM3oV7CyO+6c3CEh16Eizm21uHVsyVBEB6RIM8JHIl6AGYCv6Q6Q9Tg==}
144 | engines: {node: '>=14.21.3'}
145 | cpu: [x64]
146 | os: [linux]
147 |
148 | '@biomejs/cli-linux-x64@1.9.4':
149 | resolution: {integrity: sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg==}
150 | engines: {node: '>=14.21.3'}
151 | cpu: [x64]
152 | os: [linux]
153 |
154 | '@biomejs/cli-win32-arm64@1.9.4':
155 | resolution: {integrity: sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg==}
156 | engines: {node: '>=14.21.3'}
157 | cpu: [arm64]
158 | os: [win32]
159 |
160 | '@biomejs/cli-win32-x64@1.9.4':
161 | resolution: {integrity: sha512-8Y5wMhVIPaWe6jw2H+KlEm4wP/f7EW3810ZLmDlrEEy5KvBsb9ECEfu/kMWD484ijfQ8+nIi0giMgu9g1UAuuA==}
162 | engines: {node: '>=14.21.3'}
163 | cpu: [x64]
164 | os: [win32]
165 |
166 | '@changesets/apply-release-plan@7.0.4':
167 | resolution: {integrity: sha512-HLFwhKWayKinWAul0Vj+76jVx1Pc2v55MGPVjZ924Y/ROeSsBMFutv9heHmCUj48lJyRfOTJG5+ar+29FUky/A==}
168 |
169 | '@changesets/assemble-release-plan@6.0.3':
170 | resolution: {integrity: sha512-bLNh9/Lgl1VwkjWZTq8JmRqH+hj7/Yzfz0jsQ/zJJ+FTmVqmqPj3szeKOri8O/hEM8JmHW019vh2gTO9iq5Cuw==}
171 |
172 | '@changesets/changelog-git@0.2.0':
173 | resolution: {integrity: sha512-bHOx97iFI4OClIT35Lok3sJAwM31VbUM++gnMBV16fdbtBhgYu4dxsphBF/0AZZsyAHMrnM0yFcj5gZM1py6uQ==}
174 |
175 | '@changesets/cli@2.27.7':
176 | resolution: {integrity: sha512-6lr8JltiiXPIjDeYg4iM2MeePP6VN/JkmqBsVA5XRiy01hGS3y629LtSDvKcycj/w/5Eur1rEwby/MjcYS+e2A==}
177 | hasBin: true
178 |
179 | '@changesets/config@3.0.2':
180 | resolution: {integrity: sha512-cdEhS4t8woKCX2M8AotcV2BOWnBp09sqICxKapgLHf9m5KdENpWjyrFNMjkLqGJtUys9U+w93OxWT0czorVDfw==}
181 |
182 | '@changesets/errors@0.2.0':
183 | resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==}
184 |
185 | '@changesets/get-dependents-graph@2.1.1':
186 | resolution: {integrity: sha512-LRFjjvigBSzfnPU2n/AhFsuWR5DK++1x47aq6qZ8dzYsPtS/I5mNhIGAS68IAxh1xjO9BTtz55FwefhANZ+FCA==}
187 |
188 | '@changesets/get-release-plan@4.0.3':
189 | resolution: {integrity: sha512-6PLgvOIwTSdJPTtpdcr3sLtGatT+Jr22+cQwEBJBy6wP0rjB4yJ9lv583J9fVpn1bfQlBkDa8JxbS2g/n9lIyA==}
190 |
191 | '@changesets/get-version-range-type@0.4.0':
192 | resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==}
193 |
194 | '@changesets/git@3.0.0':
195 | resolution: {integrity: sha512-vvhnZDHe2eiBNRFHEgMiGd2CT+164dfYyrJDhwwxTVD/OW0FUD6G7+4DIx1dNwkwjHyzisxGAU96q0sVNBns0w==}
196 |
197 | '@changesets/logger@0.1.0':
198 | resolution: {integrity: sha512-pBrJm4CQm9VqFVwWnSqKEfsS2ESnwqwH+xR7jETxIErZcfd1u2zBSqrHbRHR7xjhSgep9x2PSKFKY//FAshA3g==}
199 |
200 | '@changesets/parse@0.4.0':
201 | resolution: {integrity: sha512-TS/9KG2CdGXS27S+QxbZXgr8uPsP4yNJYb4BC2/NeFUj80Rni3TeD2qwWmabymxmrLo7JEsytXH1FbpKTbvivw==}
202 |
203 | '@changesets/pre@2.0.0':
204 | resolution: {integrity: sha512-HLTNYX/A4jZxc+Sq8D1AMBsv+1qD6rmmJtjsCJa/9MSRybdxh0mjbTvE6JYZQ/ZiQ0mMlDOlGPXTm9KLTU3jyw==}
205 |
206 | '@changesets/read@0.6.0':
207 | resolution: {integrity: sha512-ZypqX8+/im1Fm98K4YcZtmLKgjs1kDQ5zHpc2U1qdtNBmZZfo/IBiG162RoP0CUF05tvp2y4IspH11PLnPxuuw==}
208 |
209 | '@changesets/should-skip-package@0.1.0':
210 | resolution: {integrity: sha512-FxG6Mhjw7yFStlSM7Z0Gmg3RiyQ98d/9VpQAZ3Fzr59dCOM9G6ZdYbjiSAt0XtFr9JR5U2tBaJWPjrkGGc618g==}
211 |
212 | '@changesets/types@4.1.0':
213 | resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==}
214 |
215 | '@changesets/types@6.0.0':
216 | resolution: {integrity: sha512-b1UkfNulgKoWfqyHtzKS5fOZYSJO+77adgL7DLRDr+/7jhChN+QcHnbjiQVOz/U+Ts3PGNySq7diAItzDgugfQ==}
217 |
218 | '@changesets/write@0.3.1':
219 | resolution: {integrity: sha512-SyGtMXzH3qFqlHKcvFY2eX+6b0NGiFcNav8AFsYwy5l8hejOeoeTDemu5Yjmke2V5jpzY+pBvM0vCCQ3gdZpfw==}
220 |
221 | '@iarna/toml@2.2.5':
222 | resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==}
223 |
224 | '@inquirer/figures@1.0.3':
225 | resolution: {integrity: sha512-ErXXzENMH5pJt5/ssXV0DfWUZqly8nGzf0UcBV9xTnP+KyffE2mqyxIMBrZ8ijQck2nU0TQm40EQB53YreyWHw==}
226 | engines: {node: '>=18'}
227 |
228 | '@manypkg/find-root@1.1.0':
229 | resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==}
230 |
231 | '@manypkg/get-packages@1.1.3':
232 | resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==}
233 |
234 | '@nodelib/fs.scandir@2.1.5':
235 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
236 | engines: {node: '>= 8'}
237 |
238 | '@nodelib/fs.stat@2.0.5':
239 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
240 | engines: {node: '>= 8'}
241 |
242 | '@nodelib/fs.walk@1.2.8':
243 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
244 | engines: {node: '>= 8'}
245 |
246 | '@octokit/auth-token@4.0.0':
247 | resolution: {integrity: sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==}
248 | engines: {node: '>= 18'}
249 |
250 | '@octokit/core@5.2.0':
251 | resolution: {integrity: sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==}
252 | engines: {node: '>= 18'}
253 |
254 | '@octokit/endpoint@9.0.5':
255 | resolution: {integrity: sha512-ekqR4/+PCLkEBF6qgj8WqJfvDq65RH85OAgrtnVp1mSxaXF03u2xW/hUdweGS5654IlC0wkNYC18Z50tSYTAFw==}
256 | engines: {node: '>= 18'}
257 |
258 | '@octokit/graphql@7.1.0':
259 | resolution: {integrity: sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ==}
260 | engines: {node: '>= 18'}
261 |
262 | '@octokit/openapi-types@22.2.0':
263 | resolution: {integrity: sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==}
264 |
265 | '@octokit/plugin-paginate-rest@11.3.1':
266 | resolution: {integrity: sha512-ryqobs26cLtM1kQxqeZui4v8FeznirUsksiA+RYemMPJ7Micju0WSkv50dBksTuZks9O5cg4wp+t8fZ/cLY56g==}
267 | engines: {node: '>= 18'}
268 | peerDependencies:
269 | '@octokit/core': '5'
270 |
271 | '@octokit/plugin-request-log@4.0.1':
272 | resolution: {integrity: sha512-GihNqNpGHorUrO7Qa9JbAl0dbLnqJVrV8OXe2Zm5/Y4wFkZQDfTreBzVmiRfJVfE4mClXdihHnbpyyO9FSX4HA==}
273 | engines: {node: '>= 18'}
274 | peerDependencies:
275 | '@octokit/core': '5'
276 |
277 | '@octokit/plugin-rest-endpoint-methods@13.2.2':
278 | resolution: {integrity: sha512-EI7kXWidkt3Xlok5uN43suK99VWqc8OaIMktY9d9+RNKl69juoTyxmLoWPIZgJYzi41qj/9zU7G/ljnNOJ5AFA==}
279 | engines: {node: '>= 18'}
280 | peerDependencies:
281 | '@octokit/core': ^5
282 |
283 | '@octokit/request-error@5.1.0':
284 | resolution: {integrity: sha512-GETXfE05J0+7H2STzekpKObFe765O5dlAKUTLNGeH+x47z7JjXHfsHKo5z21D/o/IOZTUEI6nyWyR+bZVP/n5Q==}
285 | engines: {node: '>= 18'}
286 |
287 | '@octokit/request@8.4.0':
288 | resolution: {integrity: sha512-9Bb014e+m2TgBeEJGEbdplMVWwPmL1FPtggHQRkV+WVsMggPtEkLKPlcVYm/o8xKLkpJ7B+6N8WfQMtDLX2Dpw==}
289 | engines: {node: '>= 18'}
290 |
291 | '@octokit/rest@20.1.1':
292 | resolution: {integrity: sha512-MB4AYDsM5jhIHro/dq4ix1iWTLGToIGk6cWF5L6vanFaMble5jTX/UBQyiv05HsWnwUtY8JrfHy2LWfKwihqMw==}
293 | engines: {node: '>= 18'}
294 |
295 | '@octokit/types@13.5.0':
296 | resolution: {integrity: sha512-HdqWTf5Z3qwDVlzCrP8UJquMwunpDiMPt5er+QjGzL4hqr/vBVY/MauQgS1xWxCDT1oMx1EULyqxncdCY/NVSQ==}
297 |
298 | '@pnpm/config.env-replace@1.1.0':
299 | resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==}
300 | engines: {node: '>=12.22.0'}
301 |
302 | '@pnpm/network.ca-file@1.0.2':
303 | resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==}
304 | engines: {node: '>=12.22.0'}
305 |
306 | '@pnpm/npm-conf@2.2.2':
307 | resolution: {integrity: sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==}
308 | engines: {node: '>=12'}
309 |
310 | '@release-it/bumper@6.0.1':
311 | resolution: {integrity: sha512-yeQsbGNMzzN0c/5JV1awXP6UHX/kJamXCKR6/daS0YQfj98SZXAcLn3JEq+qfK/Jq/cnATnlz5r6UY0cfBkm1A==}
312 | engines: {node: '>=18'}
313 | peerDependencies:
314 | release-it: ^17.0.0
315 |
316 | '@release-it/keep-a-changelog@5.0.0':
317 | resolution: {integrity: sha512-Y1xqZe50jqK8qKlzEfGLVTjSkn57e/QlQMXHhKRWGgsv8Qy/X0LN1CJphoskZu7p7sAD3RihxhXrjJhRPE4JcA==}
318 | engines: {node: '>=18'}
319 | peerDependencies:
320 | release-it: ^17.0.0
321 |
322 | '@rescript/core@1.4.0':
323 | resolution: {integrity: sha512-2zwlYp/SFvjb9M4PcS+NCTNXeXJ9ZHSn5Q4o+EQq9Yfc1jOgsAWqBhu7RW6n2IceugH0H/6eZjqYT7IZAoLRsw==}
324 | peerDependencies:
325 | rescript: ^11.1.0-rc.7
326 |
327 | '@rescript/react@0.12.2':
328 | resolution: {integrity: sha512-EOF19dLTG4Y9K59JqMjG5yfvIsrMZqfxGC2J/oe9gGgrMiUrzZh3KH9khTcR1Z3Ih0lRViSh0/iYnJz20gGoag==}
329 | peerDependencies:
330 | react: '>=18.0.0'
331 | react-dom: '>=18.0.0'
332 |
333 | '@sindresorhus/is@5.6.0':
334 | resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==}
335 | engines: {node: '>=14.16'}
336 |
337 | '@sindresorhus/merge-streams@2.3.0':
338 | resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==}
339 | engines: {node: '>=18'}
340 |
341 | '@szmarczak/http-timer@5.0.1':
342 | resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==}
343 | engines: {node: '>=14.16'}
344 |
345 | '@tootallnate/quickjs-emscripten@0.23.0':
346 | resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==}
347 |
348 | '@types/http-cache-semantics@4.0.4':
349 | resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==}
350 |
351 | '@types/node@12.20.55':
352 | resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==}
353 |
354 | '@types/node@20.14.9':
355 | resolution: {integrity: sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==}
356 |
357 | '@types/prop-types@15.7.12':
358 | resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==}
359 |
360 | '@types/react@18.3.3':
361 | resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==}
362 |
363 | '@types/semver@7.5.8':
364 | resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==}
365 |
366 | agent-base@7.1.1:
367 | resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==}
368 | engines: {node: '>= 14'}
369 |
370 | ansi-align@3.0.1:
371 | resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==}
372 |
373 | ansi-colors@4.1.3:
374 | resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==}
375 | engines: {node: '>=6'}
376 |
377 | ansi-escapes@4.3.2:
378 | resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==}
379 | engines: {node: '>=8'}
380 |
381 | ansi-escapes@7.0.0:
382 | resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==}
383 | engines: {node: '>=18'}
384 |
385 | ansi-regex@5.0.1:
386 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
387 | engines: {node: '>=8'}
388 |
389 | ansi-regex@6.0.1:
390 | resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
391 | engines: {node: '>=12'}
392 |
393 | ansi-styles@3.2.1:
394 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
395 | engines: {node: '>=4'}
396 |
397 | ansi-styles@4.3.0:
398 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
399 | engines: {node: '>=8'}
400 |
401 | ansi-styles@6.2.1:
402 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
403 | engines: {node: '>=12'}
404 |
405 | argparse@1.0.10:
406 | resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
407 |
408 | argparse@2.0.1:
409 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
410 |
411 | array-union@2.1.0:
412 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
413 | engines: {node: '>=8'}
414 |
415 | ast-types@0.13.4:
416 | resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==}
417 | engines: {node: '>=4'}
418 |
419 | async-retry@1.3.3:
420 | resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==}
421 |
422 | auto-bind@5.0.1:
423 | resolution: {integrity: sha512-ooviqdwwgfIfNmDwo94wlshcdzfO64XV0Cg6oDsDYBJfITDz1EngD2z7DkbvCWn+XIMsIqW27sEVF6qcpJrRcg==}
424 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
425 |
426 | balanced-match@1.0.2:
427 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
428 |
429 | base64-js@1.5.1:
430 | resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
431 |
432 | basic-ftp@5.0.5:
433 | resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==}
434 | engines: {node: '>=10.0.0'}
435 |
436 | before-after-hook@2.2.3:
437 | resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==}
438 |
439 | better-path-resolve@1.0.0:
440 | resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==}
441 | engines: {node: '>=4'}
442 |
443 | bl@4.1.0:
444 | resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
445 |
446 | boxen@7.1.1:
447 | resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==}
448 | engines: {node: '>=14.16'}
449 |
450 | brace-expansion@1.1.11:
451 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
452 |
453 | braces@3.0.3:
454 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
455 | engines: {node: '>=8'}
456 |
457 | buffer@5.7.1:
458 | resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
459 |
460 | bundle-name@4.1.0:
461 | resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==}
462 | engines: {node: '>=18'}
463 |
464 | cacheable-lookup@7.0.0:
465 | resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==}
466 | engines: {node: '>=14.16'}
467 |
468 | cacheable-request@10.2.14:
469 | resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==}
470 | engines: {node: '>=14.16'}
471 |
472 | callsites@3.1.0:
473 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
474 | engines: {node: '>=6'}
475 |
476 | camelcase@7.0.1:
477 | resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==}
478 | engines: {node: '>=14.16'}
479 |
480 | chalk@2.4.2:
481 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
482 | engines: {node: '>=4'}
483 |
484 | chalk@4.1.2:
485 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
486 | engines: {node: '>=10'}
487 |
488 | chalk@5.3.0:
489 | resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==}
490 | engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
491 |
492 | chardet@0.7.0:
493 | resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==}
494 |
495 | ci-info@3.9.0:
496 | resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
497 | engines: {node: '>=8'}
498 |
499 | cli-boxes@3.0.0:
500 | resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==}
501 | engines: {node: '>=10'}
502 |
503 | cli-cursor@3.1.0:
504 | resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==}
505 | engines: {node: '>=8'}
506 |
507 | cli-cursor@4.0.0:
508 | resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==}
509 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
510 |
511 | cli-spinners@2.9.2:
512 | resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==}
513 | engines: {node: '>=6'}
514 |
515 | cli-truncate@4.0.0:
516 | resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==}
517 | engines: {node: '>=18'}
518 |
519 | cli-width@4.1.0:
520 | resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==}
521 | engines: {node: '>= 12'}
522 |
523 | clone@1.0.4:
524 | resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==}
525 | engines: {node: '>=0.8'}
526 |
527 | code-excerpt@4.0.0:
528 | resolution: {integrity: sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA==}
529 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
530 |
531 | color-convert@1.9.3:
532 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
533 |
534 | color-convert@2.0.1:
535 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
536 | engines: {node: '>=7.0.0'}
537 |
538 | color-name@1.1.3:
539 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
540 |
541 | color-name@1.1.4:
542 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
543 |
544 | concat-map@0.0.1:
545 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
546 |
547 | config-chain@1.1.13:
548 | resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==}
549 |
550 | configstore@6.0.0:
551 | resolution: {integrity: sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==}
552 | engines: {node: '>=12'}
553 |
554 | convert-to-spaces@2.0.1:
555 | resolution: {integrity: sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==}
556 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
557 |
558 | cosmiconfig@9.0.0:
559 | resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==}
560 | engines: {node: '>=14'}
561 | peerDependencies:
562 | typescript: '>=4.9.5'
563 | peerDependenciesMeta:
564 | typescript:
565 | optional: true
566 |
567 | cross-spawn@5.1.0:
568 | resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==}
569 |
570 | cross-spawn@7.0.3:
571 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
572 | engines: {node: '>= 8'}
573 |
574 | crypto-random-string@4.0.0:
575 | resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==}
576 | engines: {node: '>=12'}
577 |
578 | csstype@3.1.3:
579 | resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
580 |
581 | data-uri-to-buffer@4.0.1:
582 | resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==}
583 | engines: {node: '>= 12'}
584 |
585 | data-uri-to-buffer@6.0.2:
586 | resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==}
587 | engines: {node: '>= 14'}
588 |
589 | debug@4.3.5:
590 | resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==}
591 | engines: {node: '>=6.0'}
592 | peerDependencies:
593 | supports-color: '*'
594 | peerDependenciesMeta:
595 | supports-color:
596 | optional: true
597 |
598 | decompress-response@6.0.0:
599 | resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==}
600 | engines: {node: '>=10'}
601 |
602 | deep-extend@0.6.0:
603 | resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==}
604 | engines: {node: '>=4.0.0'}
605 |
606 | default-browser-id@5.0.0:
607 | resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==}
608 | engines: {node: '>=18'}
609 |
610 | default-browser@5.2.1:
611 | resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==}
612 | engines: {node: '>=18'}
613 |
614 | defaults@1.0.4:
615 | resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==}
616 |
617 | defer-to-connect@2.0.1:
618 | resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==}
619 | engines: {node: '>=10'}
620 |
621 | define-lazy-prop@3.0.0:
622 | resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==}
623 | engines: {node: '>=12'}
624 |
625 | degenerator@5.0.1:
626 | resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==}
627 | engines: {node: '>= 14'}
628 |
629 | deprecation@2.3.1:
630 | resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==}
631 |
632 | detect-indent@6.1.0:
633 | resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==}
634 | engines: {node: '>=8'}
635 |
636 | detect-indent@7.0.1:
637 | resolution: {integrity: sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==}
638 | engines: {node: '>=12.20'}
639 |
640 | detect-newline@4.0.1:
641 | resolution: {integrity: sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog==}
642 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
643 |
644 | dir-glob@3.0.1:
645 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
646 | engines: {node: '>=8'}
647 |
648 | dot-prop@6.0.1:
649 | resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==}
650 | engines: {node: '>=10'}
651 |
652 | eastasianwidth@0.2.0:
653 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
654 |
655 | emoji-regex@10.3.0:
656 | resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==}
657 |
658 | emoji-regex@8.0.0:
659 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
660 |
661 | emoji-regex@9.2.2:
662 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
663 |
664 | enquirer@2.4.1:
665 | resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==}
666 | engines: {node: '>=8.6'}
667 |
668 | env-paths@2.2.1:
669 | resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==}
670 | engines: {node: '>=6'}
671 |
672 | environment@1.1.0:
673 | resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==}
674 | engines: {node: '>=18'}
675 |
676 | error-ex@1.3.2:
677 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
678 |
679 | escape-goat@4.0.0:
680 | resolution: {integrity: sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==}
681 | engines: {node: '>=12'}
682 |
683 | escape-string-regexp@1.0.5:
684 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
685 | engines: {node: '>=0.8.0'}
686 |
687 | escape-string-regexp@2.0.0:
688 | resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==}
689 | engines: {node: '>=8'}
690 |
691 | escodegen@2.1.0:
692 | resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==}
693 | engines: {node: '>=6.0'}
694 | hasBin: true
695 |
696 | esprima@4.0.1:
697 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
698 | engines: {node: '>=4'}
699 | hasBin: true
700 |
701 | estraverse@5.3.0:
702 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
703 | engines: {node: '>=4.0'}
704 |
705 | esutils@2.0.3:
706 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
707 | engines: {node: '>=0.10.0'}
708 |
709 | execa@5.1.1:
710 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
711 | engines: {node: '>=10'}
712 |
713 | execa@8.0.1:
714 | resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
715 | engines: {node: '>=16.17'}
716 |
717 | extendable-error@0.1.7:
718 | resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==}
719 |
720 | external-editor@3.1.0:
721 | resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==}
722 | engines: {node: '>=4'}
723 |
724 | fast-glob@3.3.2:
725 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
726 | engines: {node: '>=8.6.0'}
727 |
728 | fastq@1.17.1:
729 | resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
730 |
731 | fetch-blob@3.2.0:
732 | resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==}
733 | engines: {node: ^12.20 || >= 14.13}
734 |
735 | fill-range@7.1.1:
736 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
737 | engines: {node: '>=8'}
738 |
739 | find-up@4.1.0:
740 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
741 | engines: {node: '>=8'}
742 |
743 | find-up@5.0.0:
744 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
745 | engines: {node: '>=10'}
746 |
747 | find-yarn-workspace-root2@1.2.16:
748 | resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==}
749 |
750 | form-data-encoder@2.1.4:
751 | resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==}
752 | engines: {node: '>= 14.17'}
753 |
754 | formdata-polyfill@4.0.10:
755 | resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==}
756 | engines: {node: '>=12.20.0'}
757 |
758 | fs-extra@11.2.0:
759 | resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==}
760 | engines: {node: '>=14.14'}
761 |
762 | fs-extra@7.0.1:
763 | resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==}
764 | engines: {node: '>=6 <7 || >=8'}
765 |
766 | fs-extra@8.1.0:
767 | resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==}
768 | engines: {node: '>=6 <7 || >=8'}
769 |
770 | fs.realpath@1.0.0:
771 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
772 |
773 | function-bind@1.1.2:
774 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
775 |
776 | get-east-asian-width@1.2.0:
777 | resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==}
778 | engines: {node: '>=18'}
779 |
780 | get-stream@6.0.1:
781 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
782 | engines: {node: '>=10'}
783 |
784 | get-stream@8.0.1:
785 | resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==}
786 | engines: {node: '>=16'}
787 |
788 | get-uri@6.0.3:
789 | resolution: {integrity: sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==}
790 | engines: {node: '>= 14'}
791 |
792 | git-up@7.0.0:
793 | resolution: {integrity: sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==}
794 |
795 | git-url-parse@14.0.0:
796 | resolution: {integrity: sha512-NnLweV+2A4nCvn4U/m2AoYu0pPKlsmhK9cknG7IMwsjFY1S2jxM+mAhsDxyxfCIGfGaD+dozsyX4b6vkYc83yQ==}
797 |
798 | glob-parent@5.1.2:
799 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
800 | engines: {node: '>= 6'}
801 |
802 | glob@7.2.3:
803 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
804 | deprecated: Glob versions prior to v9 are no longer supported
805 |
806 | global-dirs@3.0.1:
807 | resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==}
808 | engines: {node: '>=10'}
809 |
810 | globby@11.1.0:
811 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
812 | engines: {node: '>=10'}
813 |
814 | globby@14.0.2:
815 | resolution: {integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==}
816 | engines: {node: '>=18'}
817 |
818 | got@12.6.1:
819 | resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==}
820 | engines: {node: '>=14.16'}
821 |
822 | got@13.0.0:
823 | resolution: {integrity: sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==}
824 | engines: {node: '>=16'}
825 |
826 | graceful-fs@4.2.10:
827 | resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==}
828 |
829 | graceful-fs@4.2.11:
830 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
831 |
832 | has-flag@3.0.0:
833 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
834 | engines: {node: '>=4'}
835 |
836 | has-flag@4.0.0:
837 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
838 | engines: {node: '>=8'}
839 |
840 | hasown@2.0.2:
841 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
842 | engines: {node: '>= 0.4'}
843 |
844 | http-cache-semantics@4.1.1:
845 | resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==}
846 |
847 | http-proxy-agent@7.0.2:
848 | resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==}
849 | engines: {node: '>= 14'}
850 |
851 | http2-wrapper@2.2.1:
852 | resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==}
853 | engines: {node: '>=10.19.0'}
854 |
855 | https-proxy-agent@7.0.5:
856 | resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==}
857 | engines: {node: '>= 14'}
858 |
859 | human-id@1.0.2:
860 | resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==}
861 |
862 | human-signals@2.1.0:
863 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
864 | engines: {node: '>=10.17.0'}
865 |
866 | human-signals@5.0.0:
867 | resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
868 | engines: {node: '>=16.17.0'}
869 |
870 | iconv-lite@0.4.24:
871 | resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
872 | engines: {node: '>=0.10.0'}
873 |
874 | ieee754@1.2.1:
875 | resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
876 |
877 | ignore@5.3.1:
878 | resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==}
879 | engines: {node: '>= 4'}
880 |
881 | import-fresh@3.3.0:
882 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
883 | engines: {node: '>=6'}
884 |
885 | import-lazy@4.0.0:
886 | resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==}
887 | engines: {node: '>=8'}
888 |
889 | imurmurhash@0.1.4:
890 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
891 | engines: {node: '>=0.8.19'}
892 |
893 | indent-string@5.0.0:
894 | resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==}
895 | engines: {node: '>=12'}
896 |
897 | inflight@1.0.6:
898 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
899 | deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
900 |
901 | inherits@2.0.4:
902 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
903 |
904 | ini@1.3.8:
905 | resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
906 |
907 | ini@2.0.0:
908 | resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==}
909 | engines: {node: '>=10'}
910 |
911 | ini@4.1.3:
912 | resolution: {integrity: sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==}
913 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
914 |
915 | ink@5.0.1:
916 | resolution: {integrity: sha512-ae4AW/t8jlkj/6Ou21H2av0wxTk8vrGzXv+v2v7j4in+bl1M5XRMVbfNghzhBokV++FjF8RBDJvYo+ttR9YVRg==}
917 | engines: {node: '>=18'}
918 | peerDependencies:
919 | '@types/react': '>=18.0.0'
920 | react: '>=18.0.0'
921 | react-devtools-core: ^4.19.1
922 | peerDependenciesMeta:
923 | '@types/react':
924 | optional: true
925 | react-devtools-core:
926 | optional: true
927 |
928 | inquirer@9.3.2:
929 | resolution: {integrity: sha512-+ynEbhWKhyomnaX0n2aLIMSkgSlGB5RrWbNXnEqj6mdaIydu6y40MdBjL38SAB0JcdmOaIaMua1azdjLEr3sdw==}
930 | engines: {node: '>=18'}
931 |
932 | interpret@1.4.0:
933 | resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==}
934 | engines: {node: '>= 0.10'}
935 |
936 | ip-address@9.0.5:
937 | resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==}
938 | engines: {node: '>= 12'}
939 |
940 | is-arrayish@0.2.1:
941 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
942 |
943 | is-ci@3.0.1:
944 | resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==}
945 | hasBin: true
946 |
947 | is-core-module@2.14.0:
948 | resolution: {integrity: sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==}
949 | engines: {node: '>= 0.4'}
950 |
951 | is-docker@3.0.0:
952 | resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==}
953 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
954 | hasBin: true
955 |
956 | is-extglob@2.1.1:
957 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
958 | engines: {node: '>=0.10.0'}
959 |
960 | is-fullwidth-code-point@3.0.0:
961 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
962 | engines: {node: '>=8'}
963 |
964 | is-fullwidth-code-point@4.0.0:
965 | resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==}
966 | engines: {node: '>=12'}
967 |
968 | is-fullwidth-code-point@5.0.0:
969 | resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==}
970 | engines: {node: '>=18'}
971 |
972 | is-glob@4.0.3:
973 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
974 | engines: {node: '>=0.10.0'}
975 |
976 | is-in-ci@0.1.0:
977 | resolution: {integrity: sha512-d9PXLEY0v1iJ64xLiQMJ51J128EYHAaOR4yZqQi8aHGfw6KgifM3/Viw1oZZ1GCVmb3gBuyhLyHj0HgR2DhSXQ==}
978 | engines: {node: '>=18'}
979 | hasBin: true
980 |
981 | is-inside-container@1.0.0:
982 | resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==}
983 | engines: {node: '>=14.16'}
984 | hasBin: true
985 |
986 | is-installed-globally@0.4.0:
987 | resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==}
988 | engines: {node: '>=10'}
989 |
990 | is-interactive@1.0.0:
991 | resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==}
992 | engines: {node: '>=8'}
993 |
994 | is-interactive@2.0.0:
995 | resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==}
996 | engines: {node: '>=12'}
997 |
998 | is-npm@6.0.0:
999 | resolution: {integrity: sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==}
1000 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1001 |
1002 | is-number@7.0.0:
1003 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
1004 | engines: {node: '>=0.12.0'}
1005 |
1006 | is-obj@2.0.0:
1007 | resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==}
1008 | engines: {node: '>=8'}
1009 |
1010 | is-path-inside@3.0.3:
1011 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
1012 | engines: {node: '>=8'}
1013 |
1014 | is-ssh@1.4.0:
1015 | resolution: {integrity: sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==}
1016 |
1017 | is-stream@2.0.1:
1018 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
1019 | engines: {node: '>=8'}
1020 |
1021 | is-stream@3.0.0:
1022 | resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
1023 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1024 |
1025 | is-subdir@1.2.0:
1026 | resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==}
1027 | engines: {node: '>=4'}
1028 |
1029 | is-typedarray@1.0.0:
1030 | resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==}
1031 |
1032 | is-unicode-supported@0.1.0:
1033 | resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==}
1034 | engines: {node: '>=10'}
1035 |
1036 | is-unicode-supported@1.3.0:
1037 | resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==}
1038 | engines: {node: '>=12'}
1039 |
1040 | is-unicode-supported@2.0.0:
1041 | resolution: {integrity: sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==}
1042 | engines: {node: '>=18'}
1043 |
1044 | is-windows@1.0.2:
1045 | resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==}
1046 | engines: {node: '>=0.10.0'}
1047 |
1048 | is-wsl@3.1.0:
1049 | resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==}
1050 | engines: {node: '>=16'}
1051 |
1052 | isexe@2.0.0:
1053 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
1054 |
1055 | issue-parser@7.0.1:
1056 | resolution: {integrity: sha512-3YZcUUR2Wt1WsapF+S/WiA2WmlW0cWAoPccMqne7AxEBhCdFeTPjfv/Axb8V2gyCgY3nRw+ksZ3xSUX+R47iAg==}
1057 | engines: {node: ^18.17 || >=20.6.1}
1058 |
1059 | js-tokens@4.0.0:
1060 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
1061 |
1062 | js-yaml@3.14.1:
1063 | resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
1064 | hasBin: true
1065 |
1066 | js-yaml@4.1.0:
1067 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
1068 | hasBin: true
1069 |
1070 | jsbn@1.1.0:
1071 | resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==}
1072 |
1073 | json-buffer@3.0.1:
1074 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
1075 |
1076 | json-parse-even-better-errors@2.3.1:
1077 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
1078 |
1079 | jsonfile@4.0.0:
1080 | resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==}
1081 |
1082 | jsonfile@6.1.0:
1083 | resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
1084 |
1085 | keyv@4.5.4:
1086 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
1087 |
1088 | latest-version@7.0.0:
1089 | resolution: {integrity: sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==}
1090 | engines: {node: '>=14.16'}
1091 |
1092 | lines-and-columns@1.2.4:
1093 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
1094 |
1095 | load-yaml-file@0.2.0:
1096 | resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==}
1097 | engines: {node: '>=6'}
1098 |
1099 | locate-path@5.0.0:
1100 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
1101 | engines: {node: '>=8'}
1102 |
1103 | locate-path@6.0.0:
1104 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
1105 | engines: {node: '>=10'}
1106 |
1107 | lodash-es@4.17.21:
1108 | resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==}
1109 |
1110 | lodash.capitalize@4.2.1:
1111 | resolution: {integrity: sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==}
1112 |
1113 | lodash.escaperegexp@4.1.2:
1114 | resolution: {integrity: sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==}
1115 |
1116 | lodash.isplainobject@4.0.6:
1117 | resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==}
1118 |
1119 | lodash.isstring@4.0.1:
1120 | resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==}
1121 |
1122 | lodash.startcase@4.4.0:
1123 | resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==}
1124 |
1125 | lodash.uniqby@4.7.0:
1126 | resolution: {integrity: sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==}
1127 |
1128 | lodash@4.17.21:
1129 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
1130 |
1131 | log-symbols@4.1.0:
1132 | resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==}
1133 | engines: {node: '>=10'}
1134 |
1135 | log-symbols@6.0.0:
1136 | resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==}
1137 | engines: {node: '>=18'}
1138 |
1139 | loose-envify@1.4.0:
1140 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
1141 | hasBin: true
1142 |
1143 | lowercase-keys@3.0.0:
1144 | resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==}
1145 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1146 |
1147 | lru-cache@4.1.5:
1148 | resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==}
1149 |
1150 | lru-cache@7.18.3:
1151 | resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==}
1152 | engines: {node: '>=12'}
1153 |
1154 | macos-release@3.2.0:
1155 | resolution: {integrity: sha512-fSErXALFNsnowREYZ49XCdOHF8wOPWuFOGQrAhP7x5J/BqQv+B02cNsTykGpDgRVx43EKg++6ANmTaGTtW+hUA==}
1156 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1157 |
1158 | merge-stream@2.0.0:
1159 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
1160 |
1161 | merge2@1.4.1:
1162 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
1163 | engines: {node: '>= 8'}
1164 |
1165 | micromatch@4.0.7:
1166 | resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==}
1167 | engines: {node: '>=8.6'}
1168 |
1169 | mime-db@1.52.0:
1170 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
1171 | engines: {node: '>= 0.6'}
1172 |
1173 | mime-types@2.1.35:
1174 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
1175 | engines: {node: '>= 0.6'}
1176 |
1177 | mimic-fn@2.1.0:
1178 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
1179 | engines: {node: '>=6'}
1180 |
1181 | mimic-fn@4.0.0:
1182 | resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
1183 | engines: {node: '>=12'}
1184 |
1185 | mimic-response@3.1.0:
1186 | resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==}
1187 | engines: {node: '>=10'}
1188 |
1189 | mimic-response@4.0.0:
1190 | resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==}
1191 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1192 |
1193 | minimatch@3.1.2:
1194 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
1195 |
1196 | minimist@1.2.8:
1197 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
1198 |
1199 | mri@1.2.0:
1200 | resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
1201 | engines: {node: '>=4'}
1202 |
1203 | ms@2.1.2:
1204 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
1205 |
1206 | mute-stream@1.0.0:
1207 | resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==}
1208 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
1209 |
1210 | netmask@2.0.2:
1211 | resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==}
1212 | engines: {node: '>= 0.4.0'}
1213 |
1214 | new-github-release-url@2.0.0:
1215 | resolution: {integrity: sha512-NHDDGYudnvRutt/VhKFlX26IotXe1w0cmkDm6JGquh5bz/bDTw0LufSmH/GxTjEdpHEO+bVKFTwdrcGa/9XlKQ==}
1216 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1217 |
1218 | node-domexception@1.0.0:
1219 | resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==}
1220 | engines: {node: '>=10.5.0'}
1221 |
1222 | node-fetch@3.3.2:
1223 | resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==}
1224 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1225 |
1226 | normalize-url@8.0.1:
1227 | resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==}
1228 | engines: {node: '>=14.16'}
1229 |
1230 | npm-run-path@4.0.1:
1231 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
1232 | engines: {node: '>=8'}
1233 |
1234 | npm-run-path@5.3.0:
1235 | resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==}
1236 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1237 |
1238 | once@1.4.0:
1239 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
1240 |
1241 | onetime@5.1.2:
1242 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
1243 | engines: {node: '>=6'}
1244 |
1245 | onetime@6.0.0:
1246 | resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
1247 | engines: {node: '>=12'}
1248 |
1249 | open@10.1.0:
1250 | resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==}
1251 | engines: {node: '>=18'}
1252 |
1253 | ora@5.4.1:
1254 | resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==}
1255 | engines: {node: '>=10'}
1256 |
1257 | ora@8.0.1:
1258 | resolution: {integrity: sha512-ANIvzobt1rls2BDny5fWZ3ZVKyD6nscLvfFRpQgfWsythlcsVUC9kL0zq6j2Z5z9wwp1kd7wpsD/T9qNPVLCaQ==}
1259 | engines: {node: '>=18'}
1260 |
1261 | os-name@5.1.0:
1262 | resolution: {integrity: sha512-YEIoAnM6zFmzw3PQ201gCVCIWbXNyKObGlVvpAVvraAeOHnlYVKFssbA/riRX5R40WA6kKrZ7Dr7dWzO3nKSeQ==}
1263 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1264 |
1265 | os-tmpdir@1.0.2:
1266 | resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==}
1267 | engines: {node: '>=0.10.0'}
1268 |
1269 | outdent@0.5.0:
1270 | resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==}
1271 |
1272 | p-cancelable@3.0.0:
1273 | resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==}
1274 | engines: {node: '>=12.20'}
1275 |
1276 | p-filter@2.1.0:
1277 | resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==}
1278 | engines: {node: '>=8'}
1279 |
1280 | p-limit@2.3.0:
1281 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
1282 | engines: {node: '>=6'}
1283 |
1284 | p-limit@3.1.0:
1285 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
1286 | engines: {node: '>=10'}
1287 |
1288 | p-locate@4.1.0:
1289 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
1290 | engines: {node: '>=8'}
1291 |
1292 | p-locate@5.0.0:
1293 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
1294 | engines: {node: '>=10'}
1295 |
1296 | p-map@2.1.0:
1297 | resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==}
1298 | engines: {node: '>=6'}
1299 |
1300 | p-try@2.2.0:
1301 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
1302 | engines: {node: '>=6'}
1303 |
1304 | pac-proxy-agent@7.0.2:
1305 | resolution: {integrity: sha512-BFi3vZnO9X5Qt6NRz7ZOaPja3ic0PhlsmCRYLOpN11+mWBCR6XJDqW5RF3j8jm4WGGQZtBA+bTfxYzeKW73eHg==}
1306 | engines: {node: '>= 14'}
1307 |
1308 | pac-resolver@7.0.1:
1309 | resolution: {integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==}
1310 | engines: {node: '>= 14'}
1311 |
1312 | package-json@8.1.1:
1313 | resolution: {integrity: sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==}
1314 | engines: {node: '>=14.16'}
1315 |
1316 | parent-module@1.0.1:
1317 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
1318 | engines: {node: '>=6'}
1319 |
1320 | parse-json@5.2.0:
1321 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
1322 | engines: {node: '>=8'}
1323 |
1324 | parse-path@7.0.0:
1325 | resolution: {integrity: sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==}
1326 |
1327 | parse-url@8.1.0:
1328 | resolution: {integrity: sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==}
1329 |
1330 | patch-console@2.0.0:
1331 | resolution: {integrity: sha512-0YNdUceMdaQwoKce1gatDScmMo5pu/tfABfnzEqeG0gtTmd7mh/WcwgUjtAeOU7N8nFFlbQBnFK2gXW5fGvmMA==}
1332 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1333 |
1334 | path-exists@4.0.0:
1335 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
1336 | engines: {node: '>=8'}
1337 |
1338 | path-is-absolute@1.0.1:
1339 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
1340 | engines: {node: '>=0.10.0'}
1341 |
1342 | path-key@3.1.1:
1343 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
1344 | engines: {node: '>=8'}
1345 |
1346 | path-key@4.0.0:
1347 | resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
1348 | engines: {node: '>=12'}
1349 |
1350 | path-parse@1.0.7:
1351 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
1352 |
1353 | path-type@4.0.0:
1354 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
1355 | engines: {node: '>=8'}
1356 |
1357 | path-type@5.0.0:
1358 | resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==}
1359 | engines: {node: '>=12'}
1360 |
1361 | picocolors@1.0.1:
1362 | resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==}
1363 |
1364 | picomatch@2.3.1:
1365 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
1366 | engines: {node: '>=8.6'}
1367 |
1368 | pify@4.0.1:
1369 | resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
1370 | engines: {node: '>=6'}
1371 |
1372 | pkg-dir@4.2.0:
1373 | resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==}
1374 | engines: {node: '>=8'}
1375 |
1376 | preferred-pm@3.1.3:
1377 | resolution: {integrity: sha512-MkXsENfftWSRpzCzImcp4FRsCc3y1opwB73CfCNWyzMqArju2CrlMHlqB7VexKiPEOjGMbttv1r9fSCn5S610w==}
1378 | engines: {node: '>=10'}
1379 |
1380 | prettier@2.8.8:
1381 | resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==}
1382 | engines: {node: '>=10.13.0'}
1383 | hasBin: true
1384 |
1385 | proto-list@1.2.4:
1386 | resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==}
1387 |
1388 | protocols@2.0.1:
1389 | resolution: {integrity: sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==}
1390 |
1391 | proxy-agent@6.4.0:
1392 | resolution: {integrity: sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==}
1393 | engines: {node: '>= 14'}
1394 |
1395 | proxy-from-env@1.1.0:
1396 | resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
1397 |
1398 | pseudomap@1.0.2:
1399 | resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==}
1400 |
1401 | pupa@3.1.0:
1402 | resolution: {integrity: sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==}
1403 | engines: {node: '>=12.20'}
1404 |
1405 | queue-microtask@1.2.3:
1406 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
1407 |
1408 | quick-lru@5.1.1:
1409 | resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==}
1410 | engines: {node: '>=10'}
1411 |
1412 | rc@1.2.8:
1413 | resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==}
1414 | hasBin: true
1415 |
1416 | react-dom@18.3.1:
1417 | resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==}
1418 | peerDependencies:
1419 | react: ^18.3.1
1420 |
1421 | react-reconciler@0.29.2:
1422 | resolution: {integrity: sha512-zZQqIiYgDCTP/f1N/mAR10nJGrPD2ZR+jDSEsKWJHYC7Cm2wodlwbR3upZRdC3cjIjSlTLNVyO7Iu0Yy7t2AYg==}
1423 | engines: {node: '>=0.10.0'}
1424 | peerDependencies:
1425 | react: ^18.3.1
1426 |
1427 | react@18.3.1:
1428 | resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==}
1429 | engines: {node: '>=0.10.0'}
1430 |
1431 | read-yaml-file@1.1.0:
1432 | resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==}
1433 | engines: {node: '>=6'}
1434 |
1435 | readable-stream@3.6.2:
1436 | resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
1437 | engines: {node: '>= 6'}
1438 |
1439 | rechoir@0.6.2:
1440 | resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==}
1441 | engines: {node: '>= 0.10'}
1442 |
1443 | regenerator-runtime@0.14.1:
1444 | resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
1445 |
1446 | registry-auth-token@5.0.2:
1447 | resolution: {integrity: sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==}
1448 | engines: {node: '>=14'}
1449 |
1450 | registry-url@6.0.1:
1451 | resolution: {integrity: sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==}
1452 | engines: {node: '>=12'}
1453 |
1454 | release-it@17.5.0:
1455 | resolution: {integrity: sha512-+g6k/7i6AjdCozLkcybvwgYLw/RF6bcYJHf1xDLcg36GeBu8zr/geI9joLk5drubiE/UKdN694vwAeimmJWt8Q==}
1456 | engines: {node: ^18.18.0 || ^20.9.0 || ^22.0.0}
1457 | hasBin: true
1458 |
1459 | rescript-bun@0.5.0:
1460 | resolution: {integrity: sha512-y7GK+RgQeaC2a8Qam0jZZ+ApTHW32s2bpVOjryeU2pHoNjtNXel7txZyywwEfC5o5rXvF7b12688YW5lO6C5jg==}
1461 | peerDependencies:
1462 | '@rescript/core': '>=1.3.0'
1463 | rescript: '>=11.1.0'
1464 |
1465 | rescript@11.1.1:
1466 | resolution: {integrity: sha512-FMELeoiR1n3LzBdBt+k7U4l0vsz5Xh0HBSHf+0NhyhzZkMRLkEKEDNrcqZc6RIux9bxmxoO+zEa9qFM01VOXAw==}
1467 | engines: {node: '>=10'}
1468 | hasBin: true
1469 |
1470 | resolve-alpn@1.2.1:
1471 | resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==}
1472 |
1473 | resolve-from@4.0.0:
1474 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
1475 | engines: {node: '>=4'}
1476 |
1477 | resolve-from@5.0.0:
1478 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
1479 | engines: {node: '>=8'}
1480 |
1481 | resolve@1.22.8:
1482 | resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
1483 | hasBin: true
1484 |
1485 | responselike@3.0.0:
1486 | resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==}
1487 | engines: {node: '>=14.16'}
1488 |
1489 | restore-cursor@3.1.0:
1490 | resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==}
1491 | engines: {node: '>=8'}
1492 |
1493 | restore-cursor@4.0.0:
1494 | resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==}
1495 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1496 |
1497 | retry@0.13.1:
1498 | resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==}
1499 | engines: {node: '>= 4'}
1500 |
1501 | reusify@1.0.4:
1502 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
1503 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
1504 |
1505 | run-applescript@7.0.0:
1506 | resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==}
1507 | engines: {node: '>=18'}
1508 |
1509 | run-async@3.0.0:
1510 | resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==}
1511 | engines: {node: '>=0.12.0'}
1512 |
1513 | run-parallel@1.2.0:
1514 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
1515 |
1516 | rxjs@7.8.1:
1517 | resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==}
1518 |
1519 | safe-buffer@5.2.1:
1520 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
1521 |
1522 | safer-buffer@2.1.2:
1523 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
1524 |
1525 | scheduler@0.23.2:
1526 | resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==}
1527 |
1528 | semver-diff@4.0.0:
1529 | resolution: {integrity: sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==}
1530 | engines: {node: '>=12'}
1531 |
1532 | semver@7.6.2:
1533 | resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==}
1534 | engines: {node: '>=10'}
1535 | hasBin: true
1536 |
1537 | shebang-command@1.2.0:
1538 | resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==}
1539 | engines: {node: '>=0.10.0'}
1540 |
1541 | shebang-command@2.0.0:
1542 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
1543 | engines: {node: '>=8'}
1544 |
1545 | shebang-regex@1.0.0:
1546 | resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==}
1547 | engines: {node: '>=0.10.0'}
1548 |
1549 | shebang-regex@3.0.0:
1550 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
1551 | engines: {node: '>=8'}
1552 |
1553 | shelljs@0.8.5:
1554 | resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==}
1555 | engines: {node: '>=4'}
1556 | hasBin: true
1557 |
1558 | signal-exit@3.0.7:
1559 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
1560 |
1561 | signal-exit@4.1.0:
1562 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
1563 | engines: {node: '>=14'}
1564 |
1565 | slash@3.0.0:
1566 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
1567 | engines: {node: '>=8'}
1568 |
1569 | slash@5.1.0:
1570 | resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==}
1571 | engines: {node: '>=14.16'}
1572 |
1573 | slice-ansi@5.0.0:
1574 | resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==}
1575 | engines: {node: '>=12'}
1576 |
1577 | slice-ansi@7.1.0:
1578 | resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==}
1579 | engines: {node: '>=18'}
1580 |
1581 | smart-buffer@4.2.0:
1582 | resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==}
1583 | engines: {node: '>= 6.0.0', npm: '>= 3.0.0'}
1584 |
1585 | socks-proxy-agent@8.0.4:
1586 | resolution: {integrity: sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==}
1587 | engines: {node: '>= 14'}
1588 |
1589 | socks@2.8.3:
1590 | resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==}
1591 | engines: {node: '>= 10.0.0', npm: '>= 3.0.0'}
1592 |
1593 | source-map@0.6.1:
1594 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
1595 | engines: {node: '>=0.10.0'}
1596 |
1597 | spawndamnit@2.0.0:
1598 | resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==}
1599 |
1600 | sprintf-js@1.0.3:
1601 | resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
1602 |
1603 | sprintf-js@1.1.3:
1604 | resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==}
1605 |
1606 | stack-utils@2.0.6:
1607 | resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==}
1608 | engines: {node: '>=10'}
1609 |
1610 | stdin-discarder@0.2.2:
1611 | resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==}
1612 | engines: {node: '>=18'}
1613 |
1614 | string-template@1.0.0:
1615 | resolution: {integrity: sha512-SLqR3GBUXuoPP5MmYtD7ompvXiG87QjT6lzOszyXjTM86Uu7At7vNnt2xgyTLq5o9T4IxTYFyGxcULqpsmsfdg==}
1616 |
1617 | string-width@4.2.3:
1618 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
1619 | engines: {node: '>=8'}
1620 |
1621 | string-width@5.1.2:
1622 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
1623 | engines: {node: '>=12'}
1624 |
1625 | string-width@7.1.0:
1626 | resolution: {integrity: sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==}
1627 | engines: {node: '>=18'}
1628 |
1629 | string_decoder@1.3.0:
1630 | resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
1631 |
1632 | strip-ansi@6.0.1:
1633 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
1634 | engines: {node: '>=8'}
1635 |
1636 | strip-ansi@7.1.0:
1637 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
1638 | engines: {node: '>=12'}
1639 |
1640 | strip-bom@3.0.0:
1641 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
1642 | engines: {node: '>=4'}
1643 |
1644 | strip-final-newline@2.0.0:
1645 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
1646 | engines: {node: '>=6'}
1647 |
1648 | strip-final-newline@3.0.0:
1649 | resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
1650 | engines: {node: '>=12'}
1651 |
1652 | strip-json-comments@2.0.1:
1653 | resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==}
1654 | engines: {node: '>=0.10.0'}
1655 |
1656 | supports-color@5.5.0:
1657 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
1658 | engines: {node: '>=4'}
1659 |
1660 | supports-color@7.2.0:
1661 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
1662 | engines: {node: '>=8'}
1663 |
1664 | supports-preserve-symlinks-flag@1.0.0:
1665 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
1666 | engines: {node: '>= 0.4'}
1667 |
1668 | term-size@2.2.1:
1669 | resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==}
1670 | engines: {node: '>=8'}
1671 |
1672 | tmp@0.0.33:
1673 | resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==}
1674 | engines: {node: '>=0.6.0'}
1675 |
1676 | to-regex-range@5.0.1:
1677 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
1678 | engines: {node: '>=8.0'}
1679 |
1680 | tslib@2.6.3:
1681 | resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==}
1682 |
1683 | turbo-darwin-64@2.0.4:
1684 | resolution: {integrity: sha512-x9mvmh4wudBstML8Z8IOmokLWglIhSfhQwnh2gBCSqabgVBKYvzl8Y+i+UCNPxheCGTgtsPepTcIaKBIyFIcvw==}
1685 | cpu: [x64]
1686 | os: [darwin]
1687 |
1688 | turbo-darwin-arm64@2.0.4:
1689 | resolution: {integrity: sha512-/B1Ih8zPRGVw5vw4SlclOf3C/woJ/2T6ieH6u54KT4wypoaVyaiyMqBcziIXycdObIYr7jQ+raHO7q3mhay9/A==}
1690 | cpu: [arm64]
1691 | os: [darwin]
1692 |
1693 | turbo-linux-64@2.0.4:
1694 | resolution: {integrity: sha512-6aG670e5zOWu6RczEYcB81nEl8EhiGJEvWhUrnAfNEUIMBEH1pR5SsMmG2ol5/m3PgiRM12r13dSqTxCLcHrVg==}
1695 | cpu: [x64]
1696 | os: [linux]
1697 |
1698 | turbo-linux-arm64@2.0.4:
1699 | resolution: {integrity: sha512-AXfVOjst+mCtPDFT4tCu08Qrfv12Nj7NDd33AjGwV79NYN1Y1rcFY59UQ4nO3ij3rbcvV71Xc+TZJ4csEvRCSg==}
1700 | cpu: [arm64]
1701 | os: [linux]
1702 |
1703 | turbo-windows-64@2.0.4:
1704 | resolution: {integrity: sha512-QOnUR9hKl0T5gq5h1fAhVEqBSjpcBi/BbaO71YGQNgsr6pAnCQdbG8/r3MYXet53efM0KTdOhieWeO3KLNKybA==}
1705 | cpu: [x64]
1706 | os: [win32]
1707 |
1708 | turbo-windows-arm64@2.0.4:
1709 | resolution: {integrity: sha512-3v8WpdZy1AxZw0gha0q3caZmm+0gveBQ40OspD6mxDBIS+oBtO5CkxhIXkFJJW+jDKmDlM7wXDIGfMEq+QyNCQ==}
1710 | cpu: [arm64]
1711 | os: [win32]
1712 |
1713 | turbo@2.0.4:
1714 | resolution: {integrity: sha512-Ilme/2Q5kYw0AeRr+aw3s02+WrEYaY7U8vPnqSZU/jaDG/qd6jHVN6nRWyd/9KXvJGYM69vE6JImoGoyNjLwaw==}
1715 | hasBin: true
1716 |
1717 | type-fest@0.21.3:
1718 | resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
1719 | engines: {node: '>=10'}
1720 |
1721 | type-fest@1.4.0:
1722 | resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==}
1723 | engines: {node: '>=10'}
1724 |
1725 | type-fest@2.19.0:
1726 | resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==}
1727 | engines: {node: '>=12.20'}
1728 |
1729 | type-fest@4.20.0:
1730 | resolution: {integrity: sha512-MBh+PHUHHisjXf4tlx0CFWoMdjx8zCMLJHOjnV1prABYZFHqtFOyauCIK2/7w4oIfwkF8iNhLtnJEfVY2vn3iw==}
1731 | engines: {node: '>=16'}
1732 |
1733 | typedarray-to-buffer@3.1.5:
1734 | resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==}
1735 |
1736 | typescript@5.5.3:
1737 | resolution: {integrity: sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==}
1738 | engines: {node: '>=14.17'}
1739 | hasBin: true
1740 |
1741 | typescript@5.6.2:
1742 | resolution: {integrity: sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==}
1743 | engines: {node: '>=14.17'}
1744 | hasBin: true
1745 |
1746 | undici-types@5.26.5:
1747 | resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
1748 |
1749 | unicorn-magic@0.1.0:
1750 | resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==}
1751 | engines: {node: '>=18'}
1752 |
1753 | unique-string@3.0.0:
1754 | resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==}
1755 | engines: {node: '>=12'}
1756 |
1757 | universal-user-agent@6.0.1:
1758 | resolution: {integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==}
1759 |
1760 | universalify@0.1.2:
1761 | resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
1762 | engines: {node: '>= 4.0.0'}
1763 |
1764 | universalify@2.0.1:
1765 | resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
1766 | engines: {node: '>= 10.0.0'}
1767 |
1768 | update-notifier@7.0.0:
1769 | resolution: {integrity: sha512-Hv25Bh+eAbOLlsjJreVPOs4vd51rrtCrmhyOJtbpAojro34jS4KQaEp4/EvlHJX7jSO42VvEFpkastVyXyIsdQ==}
1770 | engines: {node: '>=18'}
1771 |
1772 | url-join@5.0.0:
1773 | resolution: {integrity: sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==}
1774 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1775 |
1776 | util-deprecate@1.0.2:
1777 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
1778 |
1779 | wcwidth@1.0.1:
1780 | resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==}
1781 |
1782 | web-streams-polyfill@3.3.3:
1783 | resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==}
1784 | engines: {node: '>= 8'}
1785 |
1786 | which-pm@2.0.0:
1787 | resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==}
1788 | engines: {node: '>=8.15'}
1789 |
1790 | which@1.3.1:
1791 | resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==}
1792 | hasBin: true
1793 |
1794 | which@2.0.2:
1795 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
1796 | engines: {node: '>= 8'}
1797 | hasBin: true
1798 |
1799 | widest-line@4.0.1:
1800 | resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==}
1801 | engines: {node: '>=12'}
1802 |
1803 | widest-line@5.0.0:
1804 | resolution: {integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==}
1805 | engines: {node: '>=18'}
1806 |
1807 | wildcard-match@5.1.3:
1808 | resolution: {integrity: sha512-a95hPUk+BNzSGLntNXYxsjz2Hooi5oL7xOfJR6CKwSsSALh7vUNuTlzsrZowtYy38JNduYFRVhFv19ocqNOZlg==}
1809 |
1810 | windows-release@5.1.1:
1811 | resolution: {integrity: sha512-NMD00arvqcq2nwqc5Q6KtrSRHK+fVD31erE5FEMahAw5PmVCgD7MUXodq3pdZSUkqA9Cda2iWx6s1XYwiJWRmw==}
1812 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1813 |
1814 | wrap-ansi@6.2.0:
1815 | resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
1816 | engines: {node: '>=8'}
1817 |
1818 | wrap-ansi@8.1.0:
1819 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
1820 | engines: {node: '>=12'}
1821 |
1822 | wrap-ansi@9.0.0:
1823 | resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==}
1824 | engines: {node: '>=18'}
1825 |
1826 | wrappy@1.0.2:
1827 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
1828 |
1829 | write-file-atomic@3.0.3:
1830 | resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==}
1831 |
1832 | ws@8.17.0:
1833 | resolution: {integrity: sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==}
1834 | engines: {node: '>=10.0.0'}
1835 | peerDependencies:
1836 | bufferutil: ^4.0.1
1837 | utf-8-validate: '>=5.0.2'
1838 | peerDependenciesMeta:
1839 | bufferutil:
1840 | optional: true
1841 | utf-8-validate:
1842 | optional: true
1843 |
1844 | xdg-basedir@5.1.0:
1845 | resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==}
1846 | engines: {node: '>=12'}
1847 |
1848 | yallist@2.1.2:
1849 | resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==}
1850 |
1851 | yargs-parser@21.1.1:
1852 | resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
1853 | engines: {node: '>=12'}
1854 |
1855 | yocto-queue@0.1.0:
1856 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
1857 | engines: {node: '>=10'}
1858 |
1859 | yoctocolors-cjs@2.1.2:
1860 | resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==}
1861 | engines: {node: '>=18'}
1862 |
1863 | yoga-wasm-web@0.3.3:
1864 | resolution: {integrity: sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA==}
1865 |
1866 | snapshots:
1867 |
1868 | '@alcalzone/ansi-tokenize@0.1.3':
1869 | dependencies:
1870 | ansi-styles: 6.2.1
1871 | is-fullwidth-code-point: 4.0.0
1872 |
1873 | '@babel/code-frame@7.24.7':
1874 | dependencies:
1875 | '@babel/highlight': 7.24.7
1876 | picocolors: 1.0.1
1877 |
1878 | '@babel/helper-validator-identifier@7.24.7': {}
1879 |
1880 | '@babel/highlight@7.24.7':
1881 | dependencies:
1882 | '@babel/helper-validator-identifier': 7.24.7
1883 | chalk: 2.4.2
1884 | js-tokens: 4.0.0
1885 | picocolors: 1.0.1
1886 |
1887 | '@babel/runtime@7.24.7':
1888 | dependencies:
1889 | regenerator-runtime: 0.14.1
1890 |
1891 | '@biomejs/biome@1.9.4':
1892 | optionalDependencies:
1893 | '@biomejs/cli-darwin-arm64': 1.9.4
1894 | '@biomejs/cli-darwin-x64': 1.9.4
1895 | '@biomejs/cli-linux-arm64': 1.9.4
1896 | '@biomejs/cli-linux-arm64-musl': 1.9.4
1897 | '@biomejs/cli-linux-x64': 1.9.4
1898 | '@biomejs/cli-linux-x64-musl': 1.9.4
1899 | '@biomejs/cli-win32-arm64': 1.9.4
1900 | '@biomejs/cli-win32-x64': 1.9.4
1901 |
1902 | '@biomejs/cli-darwin-arm64@1.9.4':
1903 | optional: true
1904 |
1905 | '@biomejs/cli-darwin-x64@1.9.4':
1906 | optional: true
1907 |
1908 | '@biomejs/cli-linux-arm64-musl@1.9.4':
1909 | optional: true
1910 |
1911 | '@biomejs/cli-linux-arm64@1.9.4':
1912 | optional: true
1913 |
1914 | '@biomejs/cli-linux-x64-musl@1.9.4':
1915 | optional: true
1916 |
1917 | '@biomejs/cli-linux-x64@1.9.4':
1918 | optional: true
1919 |
1920 | '@biomejs/cli-win32-arm64@1.9.4':
1921 | optional: true
1922 |
1923 | '@biomejs/cli-win32-x64@1.9.4':
1924 | optional: true
1925 |
1926 | '@changesets/apply-release-plan@7.0.4':
1927 | dependencies:
1928 | '@babel/runtime': 7.24.7
1929 | '@changesets/config': 3.0.2
1930 | '@changesets/get-version-range-type': 0.4.0
1931 | '@changesets/git': 3.0.0
1932 | '@changesets/should-skip-package': 0.1.0
1933 | '@changesets/types': 6.0.0
1934 | '@manypkg/get-packages': 1.1.3
1935 | detect-indent: 6.1.0
1936 | fs-extra: 7.0.1
1937 | lodash.startcase: 4.4.0
1938 | outdent: 0.5.0
1939 | prettier: 2.8.8
1940 | resolve-from: 5.0.0
1941 | semver: 7.6.2
1942 |
1943 | '@changesets/assemble-release-plan@6.0.3':
1944 | dependencies:
1945 | '@babel/runtime': 7.24.7
1946 | '@changesets/errors': 0.2.0
1947 | '@changesets/get-dependents-graph': 2.1.1
1948 | '@changesets/should-skip-package': 0.1.0
1949 | '@changesets/types': 6.0.0
1950 | '@manypkg/get-packages': 1.1.3
1951 | semver: 7.6.2
1952 |
1953 | '@changesets/changelog-git@0.2.0':
1954 | dependencies:
1955 | '@changesets/types': 6.0.0
1956 |
1957 | '@changesets/cli@2.27.7':
1958 | dependencies:
1959 | '@babel/runtime': 7.24.7
1960 | '@changesets/apply-release-plan': 7.0.4
1961 | '@changesets/assemble-release-plan': 6.0.3
1962 | '@changesets/changelog-git': 0.2.0
1963 | '@changesets/config': 3.0.2
1964 | '@changesets/errors': 0.2.0
1965 | '@changesets/get-dependents-graph': 2.1.1
1966 | '@changesets/get-release-plan': 4.0.3
1967 | '@changesets/git': 3.0.0
1968 | '@changesets/logger': 0.1.0
1969 | '@changesets/pre': 2.0.0
1970 | '@changesets/read': 0.6.0
1971 | '@changesets/should-skip-package': 0.1.0
1972 | '@changesets/types': 6.0.0
1973 | '@changesets/write': 0.3.1
1974 | '@manypkg/get-packages': 1.1.3
1975 | '@types/semver': 7.5.8
1976 | ansi-colors: 4.1.3
1977 | chalk: 2.4.2
1978 | ci-info: 3.9.0
1979 | enquirer: 2.4.1
1980 | external-editor: 3.1.0
1981 | fs-extra: 7.0.1
1982 | human-id: 1.0.2
1983 | mri: 1.2.0
1984 | outdent: 0.5.0
1985 | p-limit: 2.3.0
1986 | preferred-pm: 3.1.3
1987 | resolve-from: 5.0.0
1988 | semver: 7.6.2
1989 | spawndamnit: 2.0.0
1990 | term-size: 2.2.1
1991 |
1992 | '@changesets/config@3.0.2':
1993 | dependencies:
1994 | '@changesets/errors': 0.2.0
1995 | '@changesets/get-dependents-graph': 2.1.1
1996 | '@changesets/logger': 0.1.0
1997 | '@changesets/types': 6.0.0
1998 | '@manypkg/get-packages': 1.1.3
1999 | fs-extra: 7.0.1
2000 | micromatch: 4.0.7
2001 |
2002 | '@changesets/errors@0.2.0':
2003 | dependencies:
2004 | extendable-error: 0.1.7
2005 |
2006 | '@changesets/get-dependents-graph@2.1.1':
2007 | dependencies:
2008 | '@changesets/types': 6.0.0
2009 | '@manypkg/get-packages': 1.1.3
2010 | chalk: 2.4.2
2011 | fs-extra: 7.0.1
2012 | semver: 7.6.2
2013 |
2014 | '@changesets/get-release-plan@4.0.3':
2015 | dependencies:
2016 | '@babel/runtime': 7.24.7
2017 | '@changesets/assemble-release-plan': 6.0.3
2018 | '@changesets/config': 3.0.2
2019 | '@changesets/pre': 2.0.0
2020 | '@changesets/read': 0.6.0
2021 | '@changesets/types': 6.0.0
2022 | '@manypkg/get-packages': 1.1.3
2023 |
2024 | '@changesets/get-version-range-type@0.4.0': {}
2025 |
2026 | '@changesets/git@3.0.0':
2027 | dependencies:
2028 | '@babel/runtime': 7.24.7
2029 | '@changesets/errors': 0.2.0
2030 | '@changesets/types': 6.0.0
2031 | '@manypkg/get-packages': 1.1.3
2032 | is-subdir: 1.2.0
2033 | micromatch: 4.0.7
2034 | spawndamnit: 2.0.0
2035 |
2036 | '@changesets/logger@0.1.0':
2037 | dependencies:
2038 | chalk: 2.4.2
2039 |
2040 | '@changesets/parse@0.4.0':
2041 | dependencies:
2042 | '@changesets/types': 6.0.0
2043 | js-yaml: 3.14.1
2044 |
2045 | '@changesets/pre@2.0.0':
2046 | dependencies:
2047 | '@babel/runtime': 7.24.7
2048 | '@changesets/errors': 0.2.0
2049 | '@changesets/types': 6.0.0
2050 | '@manypkg/get-packages': 1.1.3
2051 | fs-extra: 7.0.1
2052 |
2053 | '@changesets/read@0.6.0':
2054 | dependencies:
2055 | '@babel/runtime': 7.24.7
2056 | '@changesets/git': 3.0.0
2057 | '@changesets/logger': 0.1.0
2058 | '@changesets/parse': 0.4.0
2059 | '@changesets/types': 6.0.0
2060 | chalk: 2.4.2
2061 | fs-extra: 7.0.1
2062 | p-filter: 2.1.0
2063 |
2064 | '@changesets/should-skip-package@0.1.0':
2065 | dependencies:
2066 | '@babel/runtime': 7.24.7
2067 | '@changesets/types': 6.0.0
2068 | '@manypkg/get-packages': 1.1.3
2069 |
2070 | '@changesets/types@4.1.0': {}
2071 |
2072 | '@changesets/types@6.0.0': {}
2073 |
2074 | '@changesets/write@0.3.1':
2075 | dependencies:
2076 | '@babel/runtime': 7.24.7
2077 | '@changesets/types': 6.0.0
2078 | fs-extra: 7.0.1
2079 | human-id: 1.0.2
2080 | prettier: 2.8.8
2081 |
2082 | '@iarna/toml@2.2.5': {}
2083 |
2084 | '@inquirer/figures@1.0.3': {}
2085 |
2086 | '@manypkg/find-root@1.1.0':
2087 | dependencies:
2088 | '@babel/runtime': 7.24.7
2089 | '@types/node': 12.20.55
2090 | find-up: 4.1.0
2091 | fs-extra: 8.1.0
2092 |
2093 | '@manypkg/get-packages@1.1.3':
2094 | dependencies:
2095 | '@babel/runtime': 7.24.7
2096 | '@changesets/types': 4.1.0
2097 | '@manypkg/find-root': 1.1.0
2098 | fs-extra: 8.1.0
2099 | globby: 11.1.0
2100 | read-yaml-file: 1.1.0
2101 |
2102 | '@nodelib/fs.scandir@2.1.5':
2103 | dependencies:
2104 | '@nodelib/fs.stat': 2.0.5
2105 | run-parallel: 1.2.0
2106 |
2107 | '@nodelib/fs.stat@2.0.5': {}
2108 |
2109 | '@nodelib/fs.walk@1.2.8':
2110 | dependencies:
2111 | '@nodelib/fs.scandir': 2.1.5
2112 | fastq: 1.17.1
2113 |
2114 | '@octokit/auth-token@4.0.0': {}
2115 |
2116 | '@octokit/core@5.2.0':
2117 | dependencies:
2118 | '@octokit/auth-token': 4.0.0
2119 | '@octokit/graphql': 7.1.0
2120 | '@octokit/request': 8.4.0
2121 | '@octokit/request-error': 5.1.0
2122 | '@octokit/types': 13.5.0
2123 | before-after-hook: 2.2.3
2124 | universal-user-agent: 6.0.1
2125 |
2126 | '@octokit/endpoint@9.0.5':
2127 | dependencies:
2128 | '@octokit/types': 13.5.0
2129 | universal-user-agent: 6.0.1
2130 |
2131 | '@octokit/graphql@7.1.0':
2132 | dependencies:
2133 | '@octokit/request': 8.4.0
2134 | '@octokit/types': 13.5.0
2135 | universal-user-agent: 6.0.1
2136 |
2137 | '@octokit/openapi-types@22.2.0': {}
2138 |
2139 | '@octokit/plugin-paginate-rest@11.3.1(@octokit/core@5.2.0)':
2140 | dependencies:
2141 | '@octokit/core': 5.2.0
2142 | '@octokit/types': 13.5.0
2143 |
2144 | '@octokit/plugin-request-log@4.0.1(@octokit/core@5.2.0)':
2145 | dependencies:
2146 | '@octokit/core': 5.2.0
2147 |
2148 | '@octokit/plugin-rest-endpoint-methods@13.2.2(@octokit/core@5.2.0)':
2149 | dependencies:
2150 | '@octokit/core': 5.2.0
2151 | '@octokit/types': 13.5.0
2152 |
2153 | '@octokit/request-error@5.1.0':
2154 | dependencies:
2155 | '@octokit/types': 13.5.0
2156 | deprecation: 2.3.1
2157 | once: 1.4.0
2158 |
2159 | '@octokit/request@8.4.0':
2160 | dependencies:
2161 | '@octokit/endpoint': 9.0.5
2162 | '@octokit/request-error': 5.1.0
2163 | '@octokit/types': 13.5.0
2164 | universal-user-agent: 6.0.1
2165 |
2166 | '@octokit/rest@20.1.1':
2167 | dependencies:
2168 | '@octokit/core': 5.2.0
2169 | '@octokit/plugin-paginate-rest': 11.3.1(@octokit/core@5.2.0)
2170 | '@octokit/plugin-request-log': 4.0.1(@octokit/core@5.2.0)
2171 | '@octokit/plugin-rest-endpoint-methods': 13.2.2(@octokit/core@5.2.0)
2172 |
2173 | '@octokit/types@13.5.0':
2174 | dependencies:
2175 | '@octokit/openapi-types': 22.2.0
2176 |
2177 | '@pnpm/config.env-replace@1.1.0': {}
2178 |
2179 | '@pnpm/network.ca-file@1.0.2':
2180 | dependencies:
2181 | graceful-fs: 4.2.10
2182 |
2183 | '@pnpm/npm-conf@2.2.2':
2184 | dependencies:
2185 | '@pnpm/config.env-replace': 1.1.0
2186 | '@pnpm/network.ca-file': 1.0.2
2187 | config-chain: 1.1.13
2188 |
2189 | '@release-it/bumper@6.0.1(release-it@17.5.0(typescript@5.5.3))':
2190 | dependencies:
2191 | '@iarna/toml': 2.2.5
2192 | detect-indent: 7.0.1
2193 | fast-glob: 3.3.2
2194 | ini: 4.1.3
2195 | js-yaml: 4.1.0
2196 | lodash-es: 4.17.21
2197 | release-it: 17.5.0(typescript@5.5.3)
2198 | semver: 7.6.2
2199 |
2200 | '@release-it/keep-a-changelog@5.0.0(release-it@17.5.0(typescript@5.5.3))':
2201 | dependencies:
2202 | detect-newline: 4.0.1
2203 | release-it: 17.5.0(typescript@5.5.3)
2204 | string-template: 1.0.0
2205 |
2206 | '@rescript/core@1.4.0(rescript@11.1.1)':
2207 | dependencies:
2208 | rescript: 11.1.1
2209 |
2210 | '@rescript/react@0.12.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
2211 | dependencies:
2212 | react: 18.3.1
2213 | react-dom: 18.3.1(react@18.3.1)
2214 |
2215 | '@sindresorhus/is@5.6.0': {}
2216 |
2217 | '@sindresorhus/merge-streams@2.3.0': {}
2218 |
2219 | '@szmarczak/http-timer@5.0.1':
2220 | dependencies:
2221 | defer-to-connect: 2.0.1
2222 |
2223 | '@tootallnate/quickjs-emscripten@0.23.0': {}
2224 |
2225 | '@types/http-cache-semantics@4.0.4': {}
2226 |
2227 | '@types/node@12.20.55': {}
2228 |
2229 | '@types/node@20.14.9':
2230 | dependencies:
2231 | undici-types: 5.26.5
2232 |
2233 | '@types/prop-types@15.7.12': {}
2234 |
2235 | '@types/react@18.3.3':
2236 | dependencies:
2237 | '@types/prop-types': 15.7.12
2238 | csstype: 3.1.3
2239 |
2240 | '@types/semver@7.5.8': {}
2241 |
2242 | agent-base@7.1.1:
2243 | dependencies:
2244 | debug: 4.3.5
2245 | transitivePeerDependencies:
2246 | - supports-color
2247 |
2248 | ansi-align@3.0.1:
2249 | dependencies:
2250 | string-width: 4.2.3
2251 |
2252 | ansi-colors@4.1.3: {}
2253 |
2254 | ansi-escapes@4.3.2:
2255 | dependencies:
2256 | type-fest: 0.21.3
2257 |
2258 | ansi-escapes@7.0.0:
2259 | dependencies:
2260 | environment: 1.1.0
2261 |
2262 | ansi-regex@5.0.1: {}
2263 |
2264 | ansi-regex@6.0.1: {}
2265 |
2266 | ansi-styles@3.2.1:
2267 | dependencies:
2268 | color-convert: 1.9.3
2269 |
2270 | ansi-styles@4.3.0:
2271 | dependencies:
2272 | color-convert: 2.0.1
2273 |
2274 | ansi-styles@6.2.1: {}
2275 |
2276 | argparse@1.0.10:
2277 | dependencies:
2278 | sprintf-js: 1.0.3
2279 |
2280 | argparse@2.0.1: {}
2281 |
2282 | array-union@2.1.0: {}
2283 |
2284 | ast-types@0.13.4:
2285 | dependencies:
2286 | tslib: 2.6.3
2287 |
2288 | async-retry@1.3.3:
2289 | dependencies:
2290 | retry: 0.13.1
2291 |
2292 | auto-bind@5.0.1: {}
2293 |
2294 | balanced-match@1.0.2: {}
2295 |
2296 | base64-js@1.5.1: {}
2297 |
2298 | basic-ftp@5.0.5: {}
2299 |
2300 | before-after-hook@2.2.3: {}
2301 |
2302 | better-path-resolve@1.0.0:
2303 | dependencies:
2304 | is-windows: 1.0.2
2305 |
2306 | bl@4.1.0:
2307 | dependencies:
2308 | buffer: 5.7.1
2309 | inherits: 2.0.4
2310 | readable-stream: 3.6.2
2311 |
2312 | boxen@7.1.1:
2313 | dependencies:
2314 | ansi-align: 3.0.1
2315 | camelcase: 7.0.1
2316 | chalk: 5.3.0
2317 | cli-boxes: 3.0.0
2318 | string-width: 5.1.2
2319 | type-fest: 2.19.0
2320 | widest-line: 4.0.1
2321 | wrap-ansi: 8.1.0
2322 |
2323 | brace-expansion@1.1.11:
2324 | dependencies:
2325 | balanced-match: 1.0.2
2326 | concat-map: 0.0.1
2327 |
2328 | braces@3.0.3:
2329 | dependencies:
2330 | fill-range: 7.1.1
2331 |
2332 | buffer@5.7.1:
2333 | dependencies:
2334 | base64-js: 1.5.1
2335 | ieee754: 1.2.1
2336 |
2337 | bundle-name@4.1.0:
2338 | dependencies:
2339 | run-applescript: 7.0.0
2340 |
2341 | cacheable-lookup@7.0.0: {}
2342 |
2343 | cacheable-request@10.2.14:
2344 | dependencies:
2345 | '@types/http-cache-semantics': 4.0.4
2346 | get-stream: 6.0.1
2347 | http-cache-semantics: 4.1.1
2348 | keyv: 4.5.4
2349 | mimic-response: 4.0.0
2350 | normalize-url: 8.0.1
2351 | responselike: 3.0.0
2352 |
2353 | callsites@3.1.0: {}
2354 |
2355 | camelcase@7.0.1: {}
2356 |
2357 | chalk@2.4.2:
2358 | dependencies:
2359 | ansi-styles: 3.2.1
2360 | escape-string-regexp: 1.0.5
2361 | supports-color: 5.5.0
2362 |
2363 | chalk@4.1.2:
2364 | dependencies:
2365 | ansi-styles: 4.3.0
2366 | supports-color: 7.2.0
2367 |
2368 | chalk@5.3.0: {}
2369 |
2370 | chardet@0.7.0: {}
2371 |
2372 | ci-info@3.9.0: {}
2373 |
2374 | cli-boxes@3.0.0: {}
2375 |
2376 | cli-cursor@3.1.0:
2377 | dependencies:
2378 | restore-cursor: 3.1.0
2379 |
2380 | cli-cursor@4.0.0:
2381 | dependencies:
2382 | restore-cursor: 4.0.0
2383 |
2384 | cli-spinners@2.9.2: {}
2385 |
2386 | cli-truncate@4.0.0:
2387 | dependencies:
2388 | slice-ansi: 5.0.0
2389 | string-width: 7.1.0
2390 |
2391 | cli-width@4.1.0: {}
2392 |
2393 | clone@1.0.4: {}
2394 |
2395 | code-excerpt@4.0.0:
2396 | dependencies:
2397 | convert-to-spaces: 2.0.1
2398 |
2399 | color-convert@1.9.3:
2400 | dependencies:
2401 | color-name: 1.1.3
2402 |
2403 | color-convert@2.0.1:
2404 | dependencies:
2405 | color-name: 1.1.4
2406 |
2407 | color-name@1.1.3: {}
2408 |
2409 | color-name@1.1.4: {}
2410 |
2411 | concat-map@0.0.1: {}
2412 |
2413 | config-chain@1.1.13:
2414 | dependencies:
2415 | ini: 1.3.8
2416 | proto-list: 1.2.4
2417 |
2418 | configstore@6.0.0:
2419 | dependencies:
2420 | dot-prop: 6.0.1
2421 | graceful-fs: 4.2.11
2422 | unique-string: 3.0.0
2423 | write-file-atomic: 3.0.3
2424 | xdg-basedir: 5.1.0
2425 |
2426 | convert-to-spaces@2.0.1: {}
2427 |
2428 | cosmiconfig@9.0.0(typescript@5.5.3):
2429 | dependencies:
2430 | env-paths: 2.2.1
2431 | import-fresh: 3.3.0
2432 | js-yaml: 4.1.0
2433 | parse-json: 5.2.0
2434 | optionalDependencies:
2435 | typescript: 5.5.3
2436 |
2437 | cross-spawn@5.1.0:
2438 | dependencies:
2439 | lru-cache: 4.1.5
2440 | shebang-command: 1.2.0
2441 | which: 1.3.1
2442 |
2443 | cross-spawn@7.0.3:
2444 | dependencies:
2445 | path-key: 3.1.1
2446 | shebang-command: 2.0.0
2447 | which: 2.0.2
2448 |
2449 | crypto-random-string@4.0.0:
2450 | dependencies:
2451 | type-fest: 1.4.0
2452 |
2453 | csstype@3.1.3: {}
2454 |
2455 | data-uri-to-buffer@4.0.1: {}
2456 |
2457 | data-uri-to-buffer@6.0.2: {}
2458 |
2459 | debug@4.3.5:
2460 | dependencies:
2461 | ms: 2.1.2
2462 |
2463 | decompress-response@6.0.0:
2464 | dependencies:
2465 | mimic-response: 3.1.0
2466 |
2467 | deep-extend@0.6.0: {}
2468 |
2469 | default-browser-id@5.0.0: {}
2470 |
2471 | default-browser@5.2.1:
2472 | dependencies:
2473 | bundle-name: 4.1.0
2474 | default-browser-id: 5.0.0
2475 |
2476 | defaults@1.0.4:
2477 | dependencies:
2478 | clone: 1.0.4
2479 |
2480 | defer-to-connect@2.0.1: {}
2481 |
2482 | define-lazy-prop@3.0.0: {}
2483 |
2484 | degenerator@5.0.1:
2485 | dependencies:
2486 | ast-types: 0.13.4
2487 | escodegen: 2.1.0
2488 | esprima: 4.0.1
2489 |
2490 | deprecation@2.3.1: {}
2491 |
2492 | detect-indent@6.1.0: {}
2493 |
2494 | detect-indent@7.0.1: {}
2495 |
2496 | detect-newline@4.0.1: {}
2497 |
2498 | dir-glob@3.0.1:
2499 | dependencies:
2500 | path-type: 4.0.0
2501 |
2502 | dot-prop@6.0.1:
2503 | dependencies:
2504 | is-obj: 2.0.0
2505 |
2506 | eastasianwidth@0.2.0: {}
2507 |
2508 | emoji-regex@10.3.0: {}
2509 |
2510 | emoji-regex@8.0.0: {}
2511 |
2512 | emoji-regex@9.2.2: {}
2513 |
2514 | enquirer@2.4.1:
2515 | dependencies:
2516 | ansi-colors: 4.1.3
2517 | strip-ansi: 6.0.1
2518 |
2519 | env-paths@2.2.1: {}
2520 |
2521 | environment@1.1.0: {}
2522 |
2523 | error-ex@1.3.2:
2524 | dependencies:
2525 | is-arrayish: 0.2.1
2526 |
2527 | escape-goat@4.0.0: {}
2528 |
2529 | escape-string-regexp@1.0.5: {}
2530 |
2531 | escape-string-regexp@2.0.0: {}
2532 |
2533 | escodegen@2.1.0:
2534 | dependencies:
2535 | esprima: 4.0.1
2536 | estraverse: 5.3.0
2537 | esutils: 2.0.3
2538 | optionalDependencies:
2539 | source-map: 0.6.1
2540 |
2541 | esprima@4.0.1: {}
2542 |
2543 | estraverse@5.3.0: {}
2544 |
2545 | esutils@2.0.3: {}
2546 |
2547 | execa@5.1.1:
2548 | dependencies:
2549 | cross-spawn: 7.0.3
2550 | get-stream: 6.0.1
2551 | human-signals: 2.1.0
2552 | is-stream: 2.0.1
2553 | merge-stream: 2.0.0
2554 | npm-run-path: 4.0.1
2555 | onetime: 5.1.2
2556 | signal-exit: 3.0.7
2557 | strip-final-newline: 2.0.0
2558 |
2559 | execa@8.0.1:
2560 | dependencies:
2561 | cross-spawn: 7.0.3
2562 | get-stream: 8.0.1
2563 | human-signals: 5.0.0
2564 | is-stream: 3.0.0
2565 | merge-stream: 2.0.0
2566 | npm-run-path: 5.3.0
2567 | onetime: 6.0.0
2568 | signal-exit: 4.1.0
2569 | strip-final-newline: 3.0.0
2570 |
2571 | extendable-error@0.1.7: {}
2572 |
2573 | external-editor@3.1.0:
2574 | dependencies:
2575 | chardet: 0.7.0
2576 | iconv-lite: 0.4.24
2577 | tmp: 0.0.33
2578 |
2579 | fast-glob@3.3.2:
2580 | dependencies:
2581 | '@nodelib/fs.stat': 2.0.5
2582 | '@nodelib/fs.walk': 1.2.8
2583 | glob-parent: 5.1.2
2584 | merge2: 1.4.1
2585 | micromatch: 4.0.7
2586 |
2587 | fastq@1.17.1:
2588 | dependencies:
2589 | reusify: 1.0.4
2590 |
2591 | fetch-blob@3.2.0:
2592 | dependencies:
2593 | node-domexception: 1.0.0
2594 | web-streams-polyfill: 3.3.3
2595 |
2596 | fill-range@7.1.1:
2597 | dependencies:
2598 | to-regex-range: 5.0.1
2599 |
2600 | find-up@4.1.0:
2601 | dependencies:
2602 | locate-path: 5.0.0
2603 | path-exists: 4.0.0
2604 |
2605 | find-up@5.0.0:
2606 | dependencies:
2607 | locate-path: 6.0.0
2608 | path-exists: 4.0.0
2609 |
2610 | find-yarn-workspace-root2@1.2.16:
2611 | dependencies:
2612 | micromatch: 4.0.7
2613 | pkg-dir: 4.2.0
2614 |
2615 | form-data-encoder@2.1.4: {}
2616 |
2617 | formdata-polyfill@4.0.10:
2618 | dependencies:
2619 | fetch-blob: 3.2.0
2620 |
2621 | fs-extra@11.2.0:
2622 | dependencies:
2623 | graceful-fs: 4.2.11
2624 | jsonfile: 6.1.0
2625 | universalify: 2.0.1
2626 |
2627 | fs-extra@7.0.1:
2628 | dependencies:
2629 | graceful-fs: 4.2.11
2630 | jsonfile: 4.0.0
2631 | universalify: 0.1.2
2632 |
2633 | fs-extra@8.1.0:
2634 | dependencies:
2635 | graceful-fs: 4.2.11
2636 | jsonfile: 4.0.0
2637 | universalify: 0.1.2
2638 |
2639 | fs.realpath@1.0.0: {}
2640 |
2641 | function-bind@1.1.2: {}
2642 |
2643 | get-east-asian-width@1.2.0: {}
2644 |
2645 | get-stream@6.0.1: {}
2646 |
2647 | get-stream@8.0.1: {}
2648 |
2649 | get-uri@6.0.3:
2650 | dependencies:
2651 | basic-ftp: 5.0.5
2652 | data-uri-to-buffer: 6.0.2
2653 | debug: 4.3.5
2654 | fs-extra: 11.2.0
2655 | transitivePeerDependencies:
2656 | - supports-color
2657 |
2658 | git-up@7.0.0:
2659 | dependencies:
2660 | is-ssh: 1.4.0
2661 | parse-url: 8.1.0
2662 |
2663 | git-url-parse@14.0.0:
2664 | dependencies:
2665 | git-up: 7.0.0
2666 |
2667 | glob-parent@5.1.2:
2668 | dependencies:
2669 | is-glob: 4.0.3
2670 |
2671 | glob@7.2.3:
2672 | dependencies:
2673 | fs.realpath: 1.0.0
2674 | inflight: 1.0.6
2675 | inherits: 2.0.4
2676 | minimatch: 3.1.2
2677 | once: 1.4.0
2678 | path-is-absolute: 1.0.1
2679 |
2680 | global-dirs@3.0.1:
2681 | dependencies:
2682 | ini: 2.0.0
2683 |
2684 | globby@11.1.0:
2685 | dependencies:
2686 | array-union: 2.1.0
2687 | dir-glob: 3.0.1
2688 | fast-glob: 3.3.2
2689 | ignore: 5.3.1
2690 | merge2: 1.4.1
2691 | slash: 3.0.0
2692 |
2693 | globby@14.0.2:
2694 | dependencies:
2695 | '@sindresorhus/merge-streams': 2.3.0
2696 | fast-glob: 3.3.2
2697 | ignore: 5.3.1
2698 | path-type: 5.0.0
2699 | slash: 5.1.0
2700 | unicorn-magic: 0.1.0
2701 |
2702 | got@12.6.1:
2703 | dependencies:
2704 | '@sindresorhus/is': 5.6.0
2705 | '@szmarczak/http-timer': 5.0.1
2706 | cacheable-lookup: 7.0.0
2707 | cacheable-request: 10.2.14
2708 | decompress-response: 6.0.0
2709 | form-data-encoder: 2.1.4
2710 | get-stream: 6.0.1
2711 | http2-wrapper: 2.2.1
2712 | lowercase-keys: 3.0.0
2713 | p-cancelable: 3.0.0
2714 | responselike: 3.0.0
2715 |
2716 | got@13.0.0:
2717 | dependencies:
2718 | '@sindresorhus/is': 5.6.0
2719 | '@szmarczak/http-timer': 5.0.1
2720 | cacheable-lookup: 7.0.0
2721 | cacheable-request: 10.2.14
2722 | decompress-response: 6.0.0
2723 | form-data-encoder: 2.1.4
2724 | get-stream: 6.0.1
2725 | http2-wrapper: 2.2.1
2726 | lowercase-keys: 3.0.0
2727 | p-cancelable: 3.0.0
2728 | responselike: 3.0.0
2729 |
2730 | graceful-fs@4.2.10: {}
2731 |
2732 | graceful-fs@4.2.11: {}
2733 |
2734 | has-flag@3.0.0: {}
2735 |
2736 | has-flag@4.0.0: {}
2737 |
2738 | hasown@2.0.2:
2739 | dependencies:
2740 | function-bind: 1.1.2
2741 |
2742 | http-cache-semantics@4.1.1: {}
2743 |
2744 | http-proxy-agent@7.0.2:
2745 | dependencies:
2746 | agent-base: 7.1.1
2747 | debug: 4.3.5
2748 | transitivePeerDependencies:
2749 | - supports-color
2750 |
2751 | http2-wrapper@2.2.1:
2752 | dependencies:
2753 | quick-lru: 5.1.1
2754 | resolve-alpn: 1.2.1
2755 |
2756 | https-proxy-agent@7.0.5:
2757 | dependencies:
2758 | agent-base: 7.1.1
2759 | debug: 4.3.5
2760 | transitivePeerDependencies:
2761 | - supports-color
2762 |
2763 | human-id@1.0.2: {}
2764 |
2765 | human-signals@2.1.0: {}
2766 |
2767 | human-signals@5.0.0: {}
2768 |
2769 | iconv-lite@0.4.24:
2770 | dependencies:
2771 | safer-buffer: 2.1.2
2772 |
2773 | ieee754@1.2.1: {}
2774 |
2775 | ignore@5.3.1: {}
2776 |
2777 | import-fresh@3.3.0:
2778 | dependencies:
2779 | parent-module: 1.0.1
2780 | resolve-from: 4.0.0
2781 |
2782 | import-lazy@4.0.0: {}
2783 |
2784 | imurmurhash@0.1.4: {}
2785 |
2786 | indent-string@5.0.0: {}
2787 |
2788 | inflight@1.0.6:
2789 | dependencies:
2790 | once: 1.4.0
2791 | wrappy: 1.0.2
2792 |
2793 | inherits@2.0.4: {}
2794 |
2795 | ini@1.3.8: {}
2796 |
2797 | ini@2.0.0: {}
2798 |
2799 | ini@4.1.3: {}
2800 |
2801 | ink@5.0.1(@types/react@18.3.3)(react@18.3.1):
2802 | dependencies:
2803 | '@alcalzone/ansi-tokenize': 0.1.3
2804 | ansi-escapes: 7.0.0
2805 | ansi-styles: 6.2.1
2806 | auto-bind: 5.0.1
2807 | chalk: 5.3.0
2808 | cli-boxes: 3.0.0
2809 | cli-cursor: 4.0.0
2810 | cli-truncate: 4.0.0
2811 | code-excerpt: 4.0.0
2812 | indent-string: 5.0.0
2813 | is-in-ci: 0.1.0
2814 | lodash: 4.17.21
2815 | patch-console: 2.0.0
2816 | react: 18.3.1
2817 | react-reconciler: 0.29.2(react@18.3.1)
2818 | scheduler: 0.23.2
2819 | signal-exit: 3.0.7
2820 | slice-ansi: 7.1.0
2821 | stack-utils: 2.0.6
2822 | string-width: 7.1.0
2823 | type-fest: 4.20.0
2824 | widest-line: 5.0.0
2825 | wrap-ansi: 9.0.0
2826 | ws: 8.17.0
2827 | yoga-wasm-web: 0.3.3
2828 | optionalDependencies:
2829 | '@types/react': 18.3.3
2830 | transitivePeerDependencies:
2831 | - bufferutil
2832 | - utf-8-validate
2833 |
2834 | inquirer@9.3.2:
2835 | dependencies:
2836 | '@inquirer/figures': 1.0.3
2837 | ansi-escapes: 4.3.2
2838 | cli-width: 4.1.0
2839 | external-editor: 3.1.0
2840 | mute-stream: 1.0.0
2841 | ora: 5.4.1
2842 | run-async: 3.0.0
2843 | rxjs: 7.8.1
2844 | string-width: 4.2.3
2845 | strip-ansi: 6.0.1
2846 | wrap-ansi: 6.2.0
2847 | yoctocolors-cjs: 2.1.2
2848 |
2849 | interpret@1.4.0: {}
2850 |
2851 | ip-address@9.0.5:
2852 | dependencies:
2853 | jsbn: 1.1.0
2854 | sprintf-js: 1.1.3
2855 |
2856 | is-arrayish@0.2.1: {}
2857 |
2858 | is-ci@3.0.1:
2859 | dependencies:
2860 | ci-info: 3.9.0
2861 |
2862 | is-core-module@2.14.0:
2863 | dependencies:
2864 | hasown: 2.0.2
2865 |
2866 | is-docker@3.0.0: {}
2867 |
2868 | is-extglob@2.1.1: {}
2869 |
2870 | is-fullwidth-code-point@3.0.0: {}
2871 |
2872 | is-fullwidth-code-point@4.0.0: {}
2873 |
2874 | is-fullwidth-code-point@5.0.0:
2875 | dependencies:
2876 | get-east-asian-width: 1.2.0
2877 |
2878 | is-glob@4.0.3:
2879 | dependencies:
2880 | is-extglob: 2.1.1
2881 |
2882 | is-in-ci@0.1.0: {}
2883 |
2884 | is-inside-container@1.0.0:
2885 | dependencies:
2886 | is-docker: 3.0.0
2887 |
2888 | is-installed-globally@0.4.0:
2889 | dependencies:
2890 | global-dirs: 3.0.1
2891 | is-path-inside: 3.0.3
2892 |
2893 | is-interactive@1.0.0: {}
2894 |
2895 | is-interactive@2.0.0: {}
2896 |
2897 | is-npm@6.0.0: {}
2898 |
2899 | is-number@7.0.0: {}
2900 |
2901 | is-obj@2.0.0: {}
2902 |
2903 | is-path-inside@3.0.3: {}
2904 |
2905 | is-ssh@1.4.0:
2906 | dependencies:
2907 | protocols: 2.0.1
2908 |
2909 | is-stream@2.0.1: {}
2910 |
2911 | is-stream@3.0.0: {}
2912 |
2913 | is-subdir@1.2.0:
2914 | dependencies:
2915 | better-path-resolve: 1.0.0
2916 |
2917 | is-typedarray@1.0.0: {}
2918 |
2919 | is-unicode-supported@0.1.0: {}
2920 |
2921 | is-unicode-supported@1.3.0: {}
2922 |
2923 | is-unicode-supported@2.0.0: {}
2924 |
2925 | is-windows@1.0.2: {}
2926 |
2927 | is-wsl@3.1.0:
2928 | dependencies:
2929 | is-inside-container: 1.0.0
2930 |
2931 | isexe@2.0.0: {}
2932 |
2933 | issue-parser@7.0.1:
2934 | dependencies:
2935 | lodash.capitalize: 4.2.1
2936 | lodash.escaperegexp: 4.1.2
2937 | lodash.isplainobject: 4.0.6
2938 | lodash.isstring: 4.0.1
2939 | lodash.uniqby: 4.7.0
2940 |
2941 | js-tokens@4.0.0: {}
2942 |
2943 | js-yaml@3.14.1:
2944 | dependencies:
2945 | argparse: 1.0.10
2946 | esprima: 4.0.1
2947 |
2948 | js-yaml@4.1.0:
2949 | dependencies:
2950 | argparse: 2.0.1
2951 |
2952 | jsbn@1.1.0: {}
2953 |
2954 | json-buffer@3.0.1: {}
2955 |
2956 | json-parse-even-better-errors@2.3.1: {}
2957 |
2958 | jsonfile@4.0.0:
2959 | optionalDependencies:
2960 | graceful-fs: 4.2.11
2961 |
2962 | jsonfile@6.1.0:
2963 | dependencies:
2964 | universalify: 2.0.1
2965 | optionalDependencies:
2966 | graceful-fs: 4.2.11
2967 |
2968 | keyv@4.5.4:
2969 | dependencies:
2970 | json-buffer: 3.0.1
2971 |
2972 | latest-version@7.0.0:
2973 | dependencies:
2974 | package-json: 8.1.1
2975 |
2976 | lines-and-columns@1.2.4: {}
2977 |
2978 | load-yaml-file@0.2.0:
2979 | dependencies:
2980 | graceful-fs: 4.2.11
2981 | js-yaml: 3.14.1
2982 | pify: 4.0.1
2983 | strip-bom: 3.0.0
2984 |
2985 | locate-path@5.0.0:
2986 | dependencies:
2987 | p-locate: 4.1.0
2988 |
2989 | locate-path@6.0.0:
2990 | dependencies:
2991 | p-locate: 5.0.0
2992 |
2993 | lodash-es@4.17.21: {}
2994 |
2995 | lodash.capitalize@4.2.1: {}
2996 |
2997 | lodash.escaperegexp@4.1.2: {}
2998 |
2999 | lodash.isplainobject@4.0.6: {}
3000 |
3001 | lodash.isstring@4.0.1: {}
3002 |
3003 | lodash.startcase@4.4.0: {}
3004 |
3005 | lodash.uniqby@4.7.0: {}
3006 |
3007 | lodash@4.17.21: {}
3008 |
3009 | log-symbols@4.1.0:
3010 | dependencies:
3011 | chalk: 4.1.2
3012 | is-unicode-supported: 0.1.0
3013 |
3014 | log-symbols@6.0.0:
3015 | dependencies:
3016 | chalk: 5.3.0
3017 | is-unicode-supported: 1.3.0
3018 |
3019 | loose-envify@1.4.0:
3020 | dependencies:
3021 | js-tokens: 4.0.0
3022 |
3023 | lowercase-keys@3.0.0: {}
3024 |
3025 | lru-cache@4.1.5:
3026 | dependencies:
3027 | pseudomap: 1.0.2
3028 | yallist: 2.1.2
3029 |
3030 | lru-cache@7.18.3: {}
3031 |
3032 | macos-release@3.2.0: {}
3033 |
3034 | merge-stream@2.0.0: {}
3035 |
3036 | merge2@1.4.1: {}
3037 |
3038 | micromatch@4.0.7:
3039 | dependencies:
3040 | braces: 3.0.3
3041 | picomatch: 2.3.1
3042 |
3043 | mime-db@1.52.0: {}
3044 |
3045 | mime-types@2.1.35:
3046 | dependencies:
3047 | mime-db: 1.52.0
3048 |
3049 | mimic-fn@2.1.0: {}
3050 |
3051 | mimic-fn@4.0.0: {}
3052 |
3053 | mimic-response@3.1.0: {}
3054 |
3055 | mimic-response@4.0.0: {}
3056 |
3057 | minimatch@3.1.2:
3058 | dependencies:
3059 | brace-expansion: 1.1.11
3060 |
3061 | minimist@1.2.8: {}
3062 |
3063 | mri@1.2.0: {}
3064 |
3065 | ms@2.1.2: {}
3066 |
3067 | mute-stream@1.0.0: {}
3068 |
3069 | netmask@2.0.2: {}
3070 |
3071 | new-github-release-url@2.0.0:
3072 | dependencies:
3073 | type-fest: 2.19.0
3074 |
3075 | node-domexception@1.0.0: {}
3076 |
3077 | node-fetch@3.3.2:
3078 | dependencies:
3079 | data-uri-to-buffer: 4.0.1
3080 | fetch-blob: 3.2.0
3081 | formdata-polyfill: 4.0.10
3082 |
3083 | normalize-url@8.0.1: {}
3084 |
3085 | npm-run-path@4.0.1:
3086 | dependencies:
3087 | path-key: 3.1.1
3088 |
3089 | npm-run-path@5.3.0:
3090 | dependencies:
3091 | path-key: 4.0.0
3092 |
3093 | once@1.4.0:
3094 | dependencies:
3095 | wrappy: 1.0.2
3096 |
3097 | onetime@5.1.2:
3098 | dependencies:
3099 | mimic-fn: 2.1.0
3100 |
3101 | onetime@6.0.0:
3102 | dependencies:
3103 | mimic-fn: 4.0.0
3104 |
3105 | open@10.1.0:
3106 | dependencies:
3107 | default-browser: 5.2.1
3108 | define-lazy-prop: 3.0.0
3109 | is-inside-container: 1.0.0
3110 | is-wsl: 3.1.0
3111 |
3112 | ora@5.4.1:
3113 | dependencies:
3114 | bl: 4.1.0
3115 | chalk: 4.1.2
3116 | cli-cursor: 3.1.0
3117 | cli-spinners: 2.9.2
3118 | is-interactive: 1.0.0
3119 | is-unicode-supported: 0.1.0
3120 | log-symbols: 4.1.0
3121 | strip-ansi: 6.0.1
3122 | wcwidth: 1.0.1
3123 |
3124 | ora@8.0.1:
3125 | dependencies:
3126 | chalk: 5.3.0
3127 | cli-cursor: 4.0.0
3128 | cli-spinners: 2.9.2
3129 | is-interactive: 2.0.0
3130 | is-unicode-supported: 2.0.0
3131 | log-symbols: 6.0.0
3132 | stdin-discarder: 0.2.2
3133 | string-width: 7.1.0
3134 | strip-ansi: 7.1.0
3135 |
3136 | os-name@5.1.0:
3137 | dependencies:
3138 | macos-release: 3.2.0
3139 | windows-release: 5.1.1
3140 |
3141 | os-tmpdir@1.0.2: {}
3142 |
3143 | outdent@0.5.0: {}
3144 |
3145 | p-cancelable@3.0.0: {}
3146 |
3147 | p-filter@2.1.0:
3148 | dependencies:
3149 | p-map: 2.1.0
3150 |
3151 | p-limit@2.3.0:
3152 | dependencies:
3153 | p-try: 2.2.0
3154 |
3155 | p-limit@3.1.0:
3156 | dependencies:
3157 | yocto-queue: 0.1.0
3158 |
3159 | p-locate@4.1.0:
3160 | dependencies:
3161 | p-limit: 2.3.0
3162 |
3163 | p-locate@5.0.0:
3164 | dependencies:
3165 | p-limit: 3.1.0
3166 |
3167 | p-map@2.1.0: {}
3168 |
3169 | p-try@2.2.0: {}
3170 |
3171 | pac-proxy-agent@7.0.2:
3172 | dependencies:
3173 | '@tootallnate/quickjs-emscripten': 0.23.0
3174 | agent-base: 7.1.1
3175 | debug: 4.3.5
3176 | get-uri: 6.0.3
3177 | http-proxy-agent: 7.0.2
3178 | https-proxy-agent: 7.0.5
3179 | pac-resolver: 7.0.1
3180 | socks-proxy-agent: 8.0.4
3181 | transitivePeerDependencies:
3182 | - supports-color
3183 |
3184 | pac-resolver@7.0.1:
3185 | dependencies:
3186 | degenerator: 5.0.1
3187 | netmask: 2.0.2
3188 |
3189 | package-json@8.1.1:
3190 | dependencies:
3191 | got: 12.6.1
3192 | registry-auth-token: 5.0.2
3193 | registry-url: 6.0.1
3194 | semver: 7.6.2
3195 |
3196 | parent-module@1.0.1:
3197 | dependencies:
3198 | callsites: 3.1.0
3199 |
3200 | parse-json@5.2.0:
3201 | dependencies:
3202 | '@babel/code-frame': 7.24.7
3203 | error-ex: 1.3.2
3204 | json-parse-even-better-errors: 2.3.1
3205 | lines-and-columns: 1.2.4
3206 |
3207 | parse-path@7.0.0:
3208 | dependencies:
3209 | protocols: 2.0.1
3210 |
3211 | parse-url@8.1.0:
3212 | dependencies:
3213 | parse-path: 7.0.0
3214 |
3215 | patch-console@2.0.0: {}
3216 |
3217 | path-exists@4.0.0: {}
3218 |
3219 | path-is-absolute@1.0.1: {}
3220 |
3221 | path-key@3.1.1: {}
3222 |
3223 | path-key@4.0.0: {}
3224 |
3225 | path-parse@1.0.7: {}
3226 |
3227 | path-type@4.0.0: {}
3228 |
3229 | path-type@5.0.0: {}
3230 |
3231 | picocolors@1.0.1: {}
3232 |
3233 | picomatch@2.3.1: {}
3234 |
3235 | pify@4.0.1: {}
3236 |
3237 | pkg-dir@4.2.0:
3238 | dependencies:
3239 | find-up: 4.1.0
3240 |
3241 | preferred-pm@3.1.3:
3242 | dependencies:
3243 | find-up: 5.0.0
3244 | find-yarn-workspace-root2: 1.2.16
3245 | path-exists: 4.0.0
3246 | which-pm: 2.0.0
3247 |
3248 | prettier@2.8.8: {}
3249 |
3250 | proto-list@1.2.4: {}
3251 |
3252 | protocols@2.0.1: {}
3253 |
3254 | proxy-agent@6.4.0:
3255 | dependencies:
3256 | agent-base: 7.1.1
3257 | debug: 4.3.5
3258 | http-proxy-agent: 7.0.2
3259 | https-proxy-agent: 7.0.5
3260 | lru-cache: 7.18.3
3261 | pac-proxy-agent: 7.0.2
3262 | proxy-from-env: 1.1.0
3263 | socks-proxy-agent: 8.0.4
3264 | transitivePeerDependencies:
3265 | - supports-color
3266 |
3267 | proxy-from-env@1.1.0: {}
3268 |
3269 | pseudomap@1.0.2: {}
3270 |
3271 | pupa@3.1.0:
3272 | dependencies:
3273 | escape-goat: 4.0.0
3274 |
3275 | queue-microtask@1.2.3: {}
3276 |
3277 | quick-lru@5.1.1: {}
3278 |
3279 | rc@1.2.8:
3280 | dependencies:
3281 | deep-extend: 0.6.0
3282 | ini: 1.3.8
3283 | minimist: 1.2.8
3284 | strip-json-comments: 2.0.1
3285 |
3286 | react-dom@18.3.1(react@18.3.1):
3287 | dependencies:
3288 | loose-envify: 1.4.0
3289 | react: 18.3.1
3290 | scheduler: 0.23.2
3291 |
3292 | react-reconciler@0.29.2(react@18.3.1):
3293 | dependencies:
3294 | loose-envify: 1.4.0
3295 | react: 18.3.1
3296 | scheduler: 0.23.2
3297 |
3298 | react@18.3.1:
3299 | dependencies:
3300 | loose-envify: 1.4.0
3301 |
3302 | read-yaml-file@1.1.0:
3303 | dependencies:
3304 | graceful-fs: 4.2.11
3305 | js-yaml: 3.14.1
3306 | pify: 4.0.1
3307 | strip-bom: 3.0.0
3308 |
3309 | readable-stream@3.6.2:
3310 | dependencies:
3311 | inherits: 2.0.4
3312 | string_decoder: 1.3.0
3313 | util-deprecate: 1.0.2
3314 |
3315 | rechoir@0.6.2:
3316 | dependencies:
3317 | resolve: 1.22.8
3318 |
3319 | regenerator-runtime@0.14.1: {}
3320 |
3321 | registry-auth-token@5.0.2:
3322 | dependencies:
3323 | '@pnpm/npm-conf': 2.2.2
3324 |
3325 | registry-url@6.0.1:
3326 | dependencies:
3327 | rc: 1.2.8
3328 |
3329 | release-it@17.5.0(typescript@5.5.3):
3330 | dependencies:
3331 | '@iarna/toml': 2.2.5
3332 | '@octokit/rest': 20.1.1
3333 | async-retry: 1.3.3
3334 | chalk: 5.3.0
3335 | cosmiconfig: 9.0.0(typescript@5.5.3)
3336 | execa: 8.0.1
3337 | git-url-parse: 14.0.0
3338 | globby: 14.0.2
3339 | got: 13.0.0
3340 | inquirer: 9.3.2
3341 | is-ci: 3.0.1
3342 | issue-parser: 7.0.1
3343 | lodash: 4.17.21
3344 | mime-types: 2.1.35
3345 | new-github-release-url: 2.0.0
3346 | node-fetch: 3.3.2
3347 | open: 10.1.0
3348 | ora: 8.0.1
3349 | os-name: 5.1.0
3350 | proxy-agent: 6.4.0
3351 | semver: 7.6.2
3352 | shelljs: 0.8.5
3353 | update-notifier: 7.0.0
3354 | url-join: 5.0.0
3355 | wildcard-match: 5.1.3
3356 | yargs-parser: 21.1.1
3357 | transitivePeerDependencies:
3358 | - supports-color
3359 | - typescript
3360 |
3361 | rescript-bun@0.5.0(@rescript/core@1.4.0(rescript@11.1.1))(rescript@11.1.1):
3362 | dependencies:
3363 | '@rescript/core': 1.4.0(rescript@11.1.1)
3364 | rescript: 11.1.1
3365 |
3366 | rescript@11.1.1: {}
3367 |
3368 | resolve-alpn@1.2.1: {}
3369 |
3370 | resolve-from@4.0.0: {}
3371 |
3372 | resolve-from@5.0.0: {}
3373 |
3374 | resolve@1.22.8:
3375 | dependencies:
3376 | is-core-module: 2.14.0
3377 | path-parse: 1.0.7
3378 | supports-preserve-symlinks-flag: 1.0.0
3379 |
3380 | responselike@3.0.0:
3381 | dependencies:
3382 | lowercase-keys: 3.0.0
3383 |
3384 | restore-cursor@3.1.0:
3385 | dependencies:
3386 | onetime: 5.1.2
3387 | signal-exit: 3.0.7
3388 |
3389 | restore-cursor@4.0.0:
3390 | dependencies:
3391 | onetime: 5.1.2
3392 | signal-exit: 3.0.7
3393 |
3394 | retry@0.13.1: {}
3395 |
3396 | reusify@1.0.4: {}
3397 |
3398 | run-applescript@7.0.0: {}
3399 |
3400 | run-async@3.0.0: {}
3401 |
3402 | run-parallel@1.2.0:
3403 | dependencies:
3404 | queue-microtask: 1.2.3
3405 |
3406 | rxjs@7.8.1:
3407 | dependencies:
3408 | tslib: 2.6.3
3409 |
3410 | safe-buffer@5.2.1: {}
3411 |
3412 | safer-buffer@2.1.2: {}
3413 |
3414 | scheduler@0.23.2:
3415 | dependencies:
3416 | loose-envify: 1.4.0
3417 |
3418 | semver-diff@4.0.0:
3419 | dependencies:
3420 | semver: 7.6.2
3421 |
3422 | semver@7.6.2: {}
3423 |
3424 | shebang-command@1.2.0:
3425 | dependencies:
3426 | shebang-regex: 1.0.0
3427 |
3428 | shebang-command@2.0.0:
3429 | dependencies:
3430 | shebang-regex: 3.0.0
3431 |
3432 | shebang-regex@1.0.0: {}
3433 |
3434 | shebang-regex@3.0.0: {}
3435 |
3436 | shelljs@0.8.5:
3437 | dependencies:
3438 | glob: 7.2.3
3439 | interpret: 1.4.0
3440 | rechoir: 0.6.2
3441 |
3442 | signal-exit@3.0.7: {}
3443 |
3444 | signal-exit@4.1.0: {}
3445 |
3446 | slash@3.0.0: {}
3447 |
3448 | slash@5.1.0: {}
3449 |
3450 | slice-ansi@5.0.0:
3451 | dependencies:
3452 | ansi-styles: 6.2.1
3453 | is-fullwidth-code-point: 4.0.0
3454 |
3455 | slice-ansi@7.1.0:
3456 | dependencies:
3457 | ansi-styles: 6.2.1
3458 | is-fullwidth-code-point: 5.0.0
3459 |
3460 | smart-buffer@4.2.0: {}
3461 |
3462 | socks-proxy-agent@8.0.4:
3463 | dependencies:
3464 | agent-base: 7.1.1
3465 | debug: 4.3.5
3466 | socks: 2.8.3
3467 | transitivePeerDependencies:
3468 | - supports-color
3469 |
3470 | socks@2.8.3:
3471 | dependencies:
3472 | ip-address: 9.0.5
3473 | smart-buffer: 4.2.0
3474 |
3475 | source-map@0.6.1:
3476 | optional: true
3477 |
3478 | spawndamnit@2.0.0:
3479 | dependencies:
3480 | cross-spawn: 5.1.0
3481 | signal-exit: 3.0.7
3482 |
3483 | sprintf-js@1.0.3: {}
3484 |
3485 | sprintf-js@1.1.3: {}
3486 |
3487 | stack-utils@2.0.6:
3488 | dependencies:
3489 | escape-string-regexp: 2.0.0
3490 |
3491 | stdin-discarder@0.2.2: {}
3492 |
3493 | string-template@1.0.0: {}
3494 |
3495 | string-width@4.2.3:
3496 | dependencies:
3497 | emoji-regex: 8.0.0
3498 | is-fullwidth-code-point: 3.0.0
3499 | strip-ansi: 6.0.1
3500 |
3501 | string-width@5.1.2:
3502 | dependencies:
3503 | eastasianwidth: 0.2.0
3504 | emoji-regex: 9.2.2
3505 | strip-ansi: 7.1.0
3506 |
3507 | string-width@7.1.0:
3508 | dependencies:
3509 | emoji-regex: 10.3.0
3510 | get-east-asian-width: 1.2.0
3511 | strip-ansi: 7.1.0
3512 |
3513 | string_decoder@1.3.0:
3514 | dependencies:
3515 | safe-buffer: 5.2.1
3516 |
3517 | strip-ansi@6.0.1:
3518 | dependencies:
3519 | ansi-regex: 5.0.1
3520 |
3521 | strip-ansi@7.1.0:
3522 | dependencies:
3523 | ansi-regex: 6.0.1
3524 |
3525 | strip-bom@3.0.0: {}
3526 |
3527 | strip-final-newline@2.0.0: {}
3528 |
3529 | strip-final-newline@3.0.0: {}
3530 |
3531 | strip-json-comments@2.0.1: {}
3532 |
3533 | supports-color@5.5.0:
3534 | dependencies:
3535 | has-flag: 3.0.0
3536 |
3537 | supports-color@7.2.0:
3538 | dependencies:
3539 | has-flag: 4.0.0
3540 |
3541 | supports-preserve-symlinks-flag@1.0.0: {}
3542 |
3543 | term-size@2.2.1: {}
3544 |
3545 | tmp@0.0.33:
3546 | dependencies:
3547 | os-tmpdir: 1.0.2
3548 |
3549 | to-regex-range@5.0.1:
3550 | dependencies:
3551 | is-number: 7.0.0
3552 |
3553 | tslib@2.6.3: {}
3554 |
3555 | turbo-darwin-64@2.0.4:
3556 | optional: true
3557 |
3558 | turbo-darwin-arm64@2.0.4:
3559 | optional: true
3560 |
3561 | turbo-linux-64@2.0.4:
3562 | optional: true
3563 |
3564 | turbo-linux-arm64@2.0.4:
3565 | optional: true
3566 |
3567 | turbo-windows-64@2.0.4:
3568 | optional: true
3569 |
3570 | turbo-windows-arm64@2.0.4:
3571 | optional: true
3572 |
3573 | turbo@2.0.4:
3574 | optionalDependencies:
3575 | turbo-darwin-64: 2.0.4
3576 | turbo-darwin-arm64: 2.0.4
3577 | turbo-linux-64: 2.0.4
3578 | turbo-linux-arm64: 2.0.4
3579 | turbo-windows-64: 2.0.4
3580 | turbo-windows-arm64: 2.0.4
3581 |
3582 | type-fest@0.21.3: {}
3583 |
3584 | type-fest@1.4.0: {}
3585 |
3586 | type-fest@2.19.0: {}
3587 |
3588 | type-fest@4.20.0: {}
3589 |
3590 | typedarray-to-buffer@3.1.5:
3591 | dependencies:
3592 | is-typedarray: 1.0.0
3593 |
3594 | typescript@5.5.3: {}
3595 |
3596 | typescript@5.6.2: {}
3597 |
3598 | undici-types@5.26.5: {}
3599 |
3600 | unicorn-magic@0.1.0: {}
3601 |
3602 | unique-string@3.0.0:
3603 | dependencies:
3604 | crypto-random-string: 4.0.0
3605 |
3606 | universal-user-agent@6.0.1: {}
3607 |
3608 | universalify@0.1.2: {}
3609 |
3610 | universalify@2.0.1: {}
3611 |
3612 | update-notifier@7.0.0:
3613 | dependencies:
3614 | boxen: 7.1.1
3615 | chalk: 5.3.0
3616 | configstore: 6.0.0
3617 | import-lazy: 4.0.0
3618 | is-in-ci: 0.1.0
3619 | is-installed-globally: 0.4.0
3620 | is-npm: 6.0.0
3621 | latest-version: 7.0.0
3622 | pupa: 3.1.0
3623 | semver: 7.6.2
3624 | semver-diff: 4.0.0
3625 | xdg-basedir: 5.1.0
3626 |
3627 | url-join@5.0.0: {}
3628 |
3629 | util-deprecate@1.0.2: {}
3630 |
3631 | wcwidth@1.0.1:
3632 | dependencies:
3633 | defaults: 1.0.4
3634 |
3635 | web-streams-polyfill@3.3.3: {}
3636 |
3637 | which-pm@2.0.0:
3638 | dependencies:
3639 | load-yaml-file: 0.2.0
3640 | path-exists: 4.0.0
3641 |
3642 | which@1.3.1:
3643 | dependencies:
3644 | isexe: 2.0.0
3645 |
3646 | which@2.0.2:
3647 | dependencies:
3648 | isexe: 2.0.0
3649 |
3650 | widest-line@4.0.1:
3651 | dependencies:
3652 | string-width: 5.1.2
3653 |
3654 | widest-line@5.0.0:
3655 | dependencies:
3656 | string-width: 7.1.0
3657 |
3658 | wildcard-match@5.1.3: {}
3659 |
3660 | windows-release@5.1.1:
3661 | dependencies:
3662 | execa: 5.1.1
3663 |
3664 | wrap-ansi@6.2.0:
3665 | dependencies:
3666 | ansi-styles: 4.3.0
3667 | string-width: 4.2.3
3668 | strip-ansi: 6.0.1
3669 |
3670 | wrap-ansi@8.1.0:
3671 | dependencies:
3672 | ansi-styles: 6.2.1
3673 | string-width: 5.1.2
3674 | strip-ansi: 7.1.0
3675 |
3676 | wrap-ansi@9.0.0:
3677 | dependencies:
3678 | ansi-styles: 6.2.1
3679 | string-width: 7.1.0
3680 | strip-ansi: 7.1.0
3681 |
3682 | wrappy@1.0.2: {}
3683 |
3684 | write-file-atomic@3.0.3:
3685 | dependencies:
3686 | imurmurhash: 0.1.4
3687 | is-typedarray: 1.0.0
3688 | signal-exit: 3.0.7
3689 | typedarray-to-buffer: 3.1.5
3690 |
3691 | ws@8.17.0: {}
3692 |
3693 | xdg-basedir@5.1.0: {}
3694 |
3695 | yallist@2.1.2: {}
3696 |
3697 | yargs-parser@21.1.1: {}
3698 |
3699 | yocto-queue@0.1.0: {}
3700 |
3701 | yoctocolors-cjs@2.1.2: {}
3702 |
3703 | yoga-wasm-web@0.3.3: {}
3704 |
--------------------------------------------------------------------------------
/pnpm-workspace.yaml:
--------------------------------------------------------------------------------
1 | packages:
2 | - "packages/**"
3 | - "examples"
4 |
--------------------------------------------------------------------------------
/scripts/build-cli.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Define an array of targets
4 | targets=("linux-x64" "linux-arm64" "darwin-x64" "darwin-arm64")
5 |
6 | # Navigate to the packages/cli directory
7 | cd packages/cli || {
8 | echo "Failed to navigate to packages/cli directory"
9 | exit 1
10 | }
11 |
12 | # Create the .build directory in the root if it doesn't exist
13 | mkdir -p ../../.build
14 |
15 | # Loop through each target and run the bun build command
16 | for target in "${targets[@]}"; do
17 | # Build the project for the current target
18 | bun build src/Main.res.js --target=bun-$target --compile --outfile ./better-tmux-$target
19 |
20 | # Check if the command was successful
21 | if [ $? -ne 0 ]; then
22 | echo "Failed to build better-tmux for target $target"
23 | exit 1
24 | fi
25 |
26 | echo "Successfully built better-tmux for target $target"
27 |
28 | # Move the binary to the .build directory
29 | mv ./better-tmux-$target ../../.build/
30 |
31 | # Check if the move was successful
32 | if [ $? -ne 0 ]; then
33 | echo "Failed to move the binary for target $target to .build directory"
34 | exit 1
35 | fi
36 | done
37 |
38 | echo "All binaries have been successfully built and moved to the .build directory"
39 |
40 | cd ../../
41 | # Remove files with the pattern ..bun-build in the current directory
42 | find . -type f -name ".*.bun-build" -exec rm -f {} +
43 |
--------------------------------------------------------------------------------
/scripts/bump-cli-version.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | if [ -z "$1" ]; then
4 | echo "Error: No version type provided."
5 | echo "Usage: $0 [patch|minor|major|]"
6 | exit 1
7 | fi
8 |
9 | version_type=$1
10 |
11 | cd packages/cli
12 | npm version $version_type --no-git-tag-version
13 | git add .
14 | git commit -m "bumping CLI version [skip-ci]"
15 |
16 | if [ $? -eq 0 ]; then
17 | echo "Version bumped successfully to $(npm pkg get version | tr -d '\"')"
18 | else
19 | echo "Error: Failed to bump the version."
20 | exit 1
21 | fi
22 |
23 |
--------------------------------------------------------------------------------
/scripts/install.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Set the GitHub repository and destination directory
4 | repository="bettervim/better-tmux"
5 | destination_directory="/usr/local/bin/"
6 | tmp_dir="/tmp/better-tmux-$(uuidgen)"
7 |
8 | # Create a temporary directory
9 | mkdir -p "$tmp_dir"
10 | cd "$tmp_dir" || exit 1
11 |
12 | # Determine the OS and architecture
13 | os=$(uname -s | tr '[:upper:]' '[:lower:]')
14 | arch=$(uname -m)
15 |
16 | # -------
17 | # This event is sent anonymously and contains no sensitive information.
18 | # It is used solely for analytics and insights purposes.
19 | # -------
20 | api_key="phc_tep6nTCW6RCBJsqkskTDUmF0bTpgFnRtgrRTdhV4gsn"
21 | event_name="install"
22 | id=$(uuidgen)
23 | curl -X POST https://us.i.posthog.com/capture/ \
24 | -H "Content-Type: application/json" \
25 | -d '{
26 | "api_key": "'$api_key'",
27 | "event": "'$event_name'",
28 | "properties": {
29 | "distinct_id": "'$id'",
30 | "arch": "'$arch'",
31 | "os": "'$os'"
32 | }
33 | }'
34 | clear
35 |
36 | # Set the executable name based on OS and architecture
37 | if [ "$arch" = "x86_64" ]; then
38 | executable_name="better-tmux-linux-x64"
39 | else
40 | executable_name="better-tmux-${os}-${arch}"
41 | fi
42 | download_url="https://github.com/$repository/releases/latest/download/$executable_name"
43 |
44 | # Download the executable from the latest release
45 | wget -O "$executable_name" "$download_url"
46 |
47 | # Check if the download was successful
48 | if [ $? -ne 0 ]; then
49 | echo "Failed to download $download_url"
50 | exit 1
51 | fi
52 |
53 | # Rename the downloaded file to 'better-tmux'
54 | mv "$executable_name" "better-tmux"
55 |
56 | # Move the executable to the destination directory
57 | sudo mv "better-tmux" "$destination_directory"
58 |
59 | # Set appropriate permissions (optional)
60 | sudo chmod +x "$destination_directory/better-tmux"
61 |
62 | # Clean up the temporary directory
63 | rm -rf "$tmp_dir"
64 |
65 | echo "Successfully installed better-tmux CLI."
66 |
--------------------------------------------------------------------------------
/scripts/uninstall.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Set the executable name and destination directory
4 | executable_name="better-tmux"
5 | destination_directory="/usr/local/bin"
6 |
7 | # -------
8 | # This event is sent anonymously and contains no sensitive information.
9 | # It is used solely for analytics and insights purposes.
10 | # -------
11 | api_key="phc_tep6nTCW6RCBJsqkskTDUmF0bTpgFnRtgrRTdhV4gsn"
12 | event_name="uninstall"
13 | id=$(uuidgen)
14 | curl -X POST https://us.i.posthog.com/capture/ \
15 | -H "Content-Type: application/json" \
16 | -d '{
17 | "api_key": "'$api_key'",
18 | "event": "'$event_name'",
19 | "properties": {
20 | "distinct_id": "'$id'",
21 | "arch": "'$arch'",
22 | "os": "'$os'"
23 | }
24 | }'
25 |
26 | clear
27 |
28 | # Remove the executable
29 | sudo rm "$destination_directory/$executable_name"
30 |
31 | echo "Uninstallation completed."
32 |
--------------------------------------------------------------------------------
/scripts/update.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Set the GitHub repository and destination directory
4 | repository="bettervim/better-tmux"
5 | destination_directory="/usr/local/bin/"
6 | tmp_dir="/tmp/better-tmux-$(uuidgen)"
7 |
8 | # Create a temporary directory
9 | mkdir -p "$tmp_dir"
10 | cd "$tmp_dir" || exit 1
11 |
12 | # Determine the OS and architecture
13 | os=$(uname -s | tr '[:upper:]' '[:lower:]')
14 | arch=$(uname -m)
15 |
16 | # -------
17 | # This event is sent anonymously and contains no sensitive information.
18 | # It is used solely for analytics and insights purposes.
19 | # -------
20 | api_key="phc_tep6nTCW6RCBJsqkskTDUmF0bTpgFnRtgrRTdhV4gsn"
21 | event_name="update"
22 | id=$(uuidgen)
23 | curl -X POST https://us.i.posthog.com/capture/ \
24 | -H "Content-Type: application/json" \
25 | -d '{
26 | "api_key": "'$api_key'",
27 | "event": "'$event_name'",
28 | "properties": {
29 | "distinct_id": "'$id'",
30 | "arch": "'$arch'",
31 | "os": "'$os'"
32 | }
33 | }'
34 |
35 | clear
36 |
37 | # Set the executable name based on OS and architecture
38 | if [ "$arch" = "x86_64" ]; then
39 | executable_name="better-tmux-linux-x64"
40 | else
41 | executable_name="better-tmux-${os}-${arch}"
42 | fi
43 | download_url="https://github.com/$repository/releases/latest/download/$executable_name"
44 |
45 | # Download the executable from the latest release into the temporary directory
46 | wget -O "$executable_name" "$download_url"
47 |
48 | # Check if the download was successful
49 | if [ $? -ne 0 ]; then
50 | echo "Failed to download $download_url"
51 | exit 1
52 | fi
53 |
54 | # Check if the executable already exists and remove the old version if it does
55 | if [ -f "$destination_directory/better-tmux" ]; then
56 | sudo rm "$destination_directory/better-tmux"
57 | fi
58 |
59 | # Rename the downloaded file to 'better-tmux'
60 | mv "$executable_name" "better-tmux"
61 |
62 | # Move the new executable to the destination directory
63 | sudo mv "better-tmux" "$destination_directory"
64 |
65 | # Set appropriate permissions (optional)
66 | sudo chmod +x "$destination_directory/better-tmux"
67 |
68 | # Clean up the temporary directory
69 | rm -rf "$tmp_dir"
70 |
71 | echo "Successfully updated better-tmux CLI."
72 |
--------------------------------------------------------------------------------
/turbo.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://turbo.build/schema.json",
3 | "tasks": {
4 | "build": {
5 | "dependsOn": ["^build"]
6 | },
7 | "dev": {
8 | "persistent": true,
9 | "cache": false
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------