diff --git a/cli/package.json b/cli/package.json
index e9dd53df..00ea85b2 100644
--- a/cli/package.json
+++ b/cli/package.json
@@ -36,6 +36,9 @@
"dotenv": "^16.0.0",
"fs-extra": "^10.1.0",
"got": "11.8.5",
+ "ink": "^3.2.0",
+ "ink-tab": "^4.2.0",
+ "ink-text-input": "^4.0.3",
"inquirer": "^8.2.2",
"lodash": "^4.17.21",
"node-plop": "^0.26.3",
@@ -44,7 +47,9 @@
"p-series": "2.1.0",
"plop": "^3.0.5",
"pretty-ms": "7.0.1",
+ "react": "17.0.2",
"tailchat-server-sdk": "^0.0.12",
+ "tailchat-shared": "workspace:*",
"yargs": "^17.4.0"
},
"devDependencies": {
@@ -52,6 +57,7 @@
"@types/inquirer": "^8.2.1",
"@types/lodash": "^4.14.170",
"@types/node": "16.11.7",
+ "@types/react": "^17.0.39",
"@types/yargs": "^17.0.10",
"ts-node": "^10.7.0",
"typescript": "^4.6.3"
diff --git a/cli/src/app/App.tsx b/cli/src/app/App.tsx
new file mode 100644
index 00000000..5e61b17b
--- /dev/null
+++ b/cli/src/app/App.tsx
@@ -0,0 +1,45 @@
+import React, { useLayoutEffect, useState } from 'react';
+import { Box, Text, useStdout } from 'ink';
+import { Tabs, Tab } from 'ink-tab';
+import TextInput from 'ink-text-input';
+import { useScreenSize } from './hooks/useScreenSize';
+
+export const App: React.FC = React.memo(() => {
+ const [text, setText] = useState('');
+ const { height, width } = useScreenSize();
+ const { stdout } = useStdout();
+
+ useLayoutEffect(() => {
+ stdout?.write('\x1b[?1049h');
+
+ return () => {
+ stdout?.write('\x1b[?1049l');
+ };
+ }, [stdout]);
+
+ return (
+
+
+
+
+
+
+ {}}>
+
+ Foo
+
+
+ Bar
+
+
+
+
+ );
+});
+App.displayName = 'App';
diff --git a/cli/src/app/hooks/useScreenSize.ts b/cli/src/app/hooks/useScreenSize.ts
new file mode 100644
index 00000000..bb83e29a
--- /dev/null
+++ b/cli/src/app/hooks/useScreenSize.ts
@@ -0,0 +1,25 @@
+import { useCallback, useEffect, useState } from 'react';
+import { useStdout } from 'ink';
+
+export function useScreenSize() {
+ const { stdout } = useStdout();
+ const getSize = useCallback(
+ () => ({
+ height: stdout?.rows ?? 0,
+ width: stdout?.columns ?? 0,
+ }),
+ [stdout]
+ );
+ const [size, setSize] = useState(getSize);
+
+ useEffect(() => {
+ const onResize = () => setSize(getSize());
+ stdout?.on('resize', onResize);
+
+ return () => {
+ stdout?.off('resize', onResize);
+ };
+ }, [stdout, getSize]);
+
+ return size;
+}
diff --git a/cli/src/app/index.tsx b/cli/src/app/index.tsx
new file mode 100644
index 00000000..d06ed2c4
--- /dev/null
+++ b/cli/src/app/index.tsx
@@ -0,0 +1,9 @@
+import React from 'react';
+import { App } from './App';
+import { render } from 'ink';
+
+export function run() {
+ const ins = render();
+
+ return ins;
+}
diff --git a/cli/src/commands/app.ts b/cli/src/commands/app.ts
new file mode 100644
index 00000000..2452604a
--- /dev/null
+++ b/cli/src/commands/app.ts
@@ -0,0 +1,11 @@
+import { CommandModule } from 'yargs';
+import { run } from '../app';
+
+export const appCommand: CommandModule = {
+ command: 'app',
+ describe: 'Tailchat cli 版本',
+ builder: undefined,
+ async handler() {
+ await run();
+ },
+};
diff --git a/cli/src/index.ts b/cli/src/index.ts
index 381cf943..57e2df79 100644
--- a/cli/src/index.ts
+++ b/cli/src/index.ts
@@ -1,6 +1,7 @@
import yargs from 'yargs';
import { createCommand } from './commands/create';
import { connectCommand } from './commands/connect';
+import { appCommand } from './commands/app';
import { declarationCommand } from './commands/declaration';
import { benchCommand } from './commands/bench';
@@ -8,6 +9,7 @@ yargs
.demandCommand()
.command(createCommand)
.command(connectCommand)
+ .command(appCommand)
.command(benchCommand)
.command(declarationCommand)
.alias('h', 'help')
diff --git a/cli/tsconfig.json b/cli/tsconfig.json
index fa3e4906..b0425a31 100644
--- a/cli/tsconfig.json
+++ b/cli/tsconfig.json
@@ -4,6 +4,7 @@
"module": "commonjs",
"rootDir": "src",
"outDir": "lib",
+ "jsx": "react",
"allowSyntheticDefaultImports": true,
"strict": true,
"esModuleInterop": true,
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 08603d7d..a918db1e 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -62,11 +62,14 @@ importers:
'@types/inquirer': ^8.2.1
'@types/lodash': ^4.14.170
'@types/node': 16.11.7
- '@types/pretty-hrtime': ^1.0.1
+ '@types/react': ^17.0.39
'@types/yargs': ^17.0.10
dotenv: ^16.0.0
fs-extra: ^10.1.0
got: 11.8.5
+ ink: ^3.2.0
+ ink-tab: ^4.2.0
+ ink-text-input: ^4.0.3
inquirer: ^8.2.2
lodash: ^4.17.21
node-plop: ^0.26.3
@@ -75,7 +78,9 @@ importers:
p-series: 2.1.0
plop: ^3.0.5
pretty-ms: 7.0.1
+ react: 17.0.2
tailchat-server-sdk: ^0.0.12
+ tailchat-shared: workspace:*
ts-node: ^10.7.0
typescript: ^4.6.3
yargs: ^17.4.0
@@ -83,6 +88,9 @@ importers:
dotenv: 16.0.2
fs-extra: 10.1.0
got: 11.8.5
+ ink: 3.2.0_skqlhrap4das3cz5b6iqdn2lqi
+ ink-tab: 4.2.0_ink@3.2.0+react@17.0.2
+ ink-text-input: 4.0.3_ink@3.2.0+react@17.0.2
inquirer: 8.2.4
lodash: 4.17.21
node-plop: 0.26.3
@@ -91,14 +99,16 @@ importers:
p-series: 2.1.0
plop: 3.1.1
pretty-ms: 7.0.1
+ react: 17.0.2
tailchat-server-sdk: link:../server/packages/sdk
+ tailchat-shared: link:../client/shared
yargs: 17.5.1
devDependencies:
'@types/fs-extra': 9.0.13
'@types/inquirer': 8.2.3
'@types/lodash': 4.14.184
'@types/node': 16.11.7
- '@types/pretty-hrtime': 1.0.1
+ '@types/react': 17.0.48
'@types/yargs': 17.0.12
ts-node: 10.9.1_rk33jgomelnuriwr3foeinccb4
typescript: 4.8.2
@@ -2944,7 +2954,7 @@ packages:
react-dom: '*'
dependencies:
'@docusaurus/types': 2.0.0-beta.18
- '@types/react': 18.0.17
+ '@types/react': 18.0.20
'@types/react-router-config': 5.0.6
'@types/react-router-dom': 5.3.3
react: 17.0.2
@@ -2966,7 +2976,7 @@ packages:
'@docusaurus/react-loadable': 5.5.2_react@17.0.2
'@docusaurus/types': 2.0.1_sfoxds7t5ydpegc3knd667wn6m
'@types/history': 4.7.11
- '@types/react': 18.0.17
+ '@types/react': 18.0.20
'@types/react-router-config': 5.0.6
'@types/react-router-dom': 5.3.3
react: 17.0.2
@@ -3256,7 +3266,7 @@ packages:
peerDependencies:
react: '*'
dependencies:
- '@types/react': 18.0.17
+ '@types/react': 18.0.20
prop-types: 15.8.1
react: 17.0.2
@@ -3411,7 +3421,7 @@ packages:
react-dom: ^16.8.4 || ^17.0.0
dependencies:
'@types/history': 4.7.11
- '@types/react': 18.0.17
+ '@types/react': 18.0.20
commander: 5.1.0
joi: 17.6.0
react: 17.0.2
@@ -5866,7 +5876,7 @@ packages:
optional: true
dependencies:
'@babel/runtime': 7.18.9
- '@types/react': 18.0.17
+ '@types/react': 18.0.20
'@types/react-dom': 17.0.17
'@types/react-test-renderer': 18.0.0
react: 17.0.2
@@ -6098,7 +6108,7 @@ packages:
/@types/emoji-mart/3.0.9:
resolution: {integrity: sha512-qdBo/2Y8MXaJ/2spKjDZocuq79GpnOhkwMHnK2GnVFa8WYFgfA+ei6sil3aeWQPCreOKIx9ogPpR5+7MaOqYAA==}
dependencies:
- '@types/react': 18.0.17
+ '@types/react': 18.0.20
dev: true
/@types/eslint-scope/3.7.4:
@@ -6180,7 +6190,7 @@ packages:
/@types/hoist-non-react-statics/3.3.1:
resolution: {integrity: sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==}
dependencies:
- '@types/react': 18.0.17
+ '@types/react': 18.0.20
hoist-non-react-statics: 3.3.2
/@types/html-minifier-terser/5.1.2:
@@ -6328,7 +6338,7 @@ packages:
/@types/loadable__component/5.13.4:
resolution: {integrity: sha512-YhoCCxyuvP2XeZNbHbi8Wb9EMaUJuA2VGHxJffcQYrJKIKSkymJrhbzsf9y4zpTmr5pExAAEh5hbF628PAZ8Dg==}
dependencies:
- '@types/react': 18.0.17
+ '@types/react': 18.0.20
dev: true
/@types/lodash/4.14.184:
@@ -6476,7 +6486,7 @@ packages:
/@types/react-helmet/6.1.5:
resolution: {integrity: sha512-/ICuy7OHZxR0YCAZLNg9r7I9aijWUWvxaPR6uTuyxe8tAj5RL4Sw1+R6NhXUtOsarkGYPmaHdBDvuXh2DIN/uA==}
dependencies:
- '@types/react': 18.0.17
+ '@types/react': 18.0.20
dev: true
/@types/react-highlight/0.12.5:
@@ -6488,7 +6498,7 @@ packages:
/@types/react-mentions/4.1.6:
resolution: {integrity: sha512-f4/BdnjlMxT47q+WqlcYYwFABbBMVQrDoFFeMeljtFC5nnR9/x8TOFmN18BJKgNuWMgivy9uE5EKtsjlay751w==}
dependencies:
- '@types/react': 18.0.17
+ '@types/react': 18.0.20
dev: true
/@types/react-redux/7.1.24:
@@ -6503,14 +6513,14 @@ packages:
resolution: {integrity: sha512-db1mx37a1EJDf1XeX8jJN7R3PZABmJQXR8r28yUjVMFSjkmnQo6X6pOEEmNl+Tp2gYQOGPdYbFIipBtdElZ3Yg==}
dependencies:
'@types/history': 4.7.11
- '@types/react': 18.0.17
+ '@types/react': 18.0.20
'@types/react-router': 5.1.18
/@types/react-router-dom/5.3.3:
resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==}
dependencies:
'@types/history': 4.7.11
- '@types/react': 18.0.17
+ '@types/react': 18.0.20
'@types/react-router': 5.1.18
/@types/react-router/5.1.18:
@@ -6522,19 +6532,19 @@ packages:
/@types/react-test-renderer/18.0.0:
resolution: {integrity: sha512-C7/5FBJ3g3sqUahguGi03O79b8afNeSD6T8/GU50oQrJCU0bVCCGQHaGKUbg2Ce8VQEEqTw8/HiS6lXHHdgkdQ==}
dependencies:
- '@types/react': 18.0.17
+ '@types/react': 18.0.20
dev: true
/@types/react-transition-group/4.4.5:
resolution: {integrity: sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==}
dependencies:
- '@types/react': 18.0.17
+ '@types/react': 18.0.20
dev: true
/@types/react-virtualized-auto-sizer/1.0.1:
resolution: {integrity: sha512-GH8sAnBEM5GV9LTeiz56r4ZhMOUSrP43tAQNSRVxNexDjcNKLCEtnxusAItg1owFUFE6k0NslV26gqVClVvong==}
dependencies:
- '@types/react': 18.0.17
+ '@types/react': 18.0.20
dev: true
/@types/react-virtualized/9.21.21:
@@ -6558,6 +6568,13 @@ packages:
'@types/scheduler': 0.16.2
csstype: 3.1.0
+ /@types/react/18.0.20:
+ resolution: {integrity: sha512-MWul1teSPxujEHVwZl4a5HxQ9vVNsjTchVA+xRqv/VYGCuKGAU6UhfrTdF5aBefwD1BHUD8i/zq+O/vyCm/FrA==}
+ dependencies:
+ '@types/prop-types': 15.7.5
+ '@types/scheduler': 0.16.2
+ csstype: 3.1.0
+
/@types/resolve/1.17.1:
resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==}
dependencies:
@@ -6738,6 +6755,10 @@ packages:
'@types/yargs-parser': 21.0.0
dev: true
+ /@types/yoga-layout/1.9.2:
+ resolution: {integrity: sha512-S9q47ByT2pPvD65IvrWp7qppVMpk9WGMbVq9wbWZOHg6tnXSD4vyhao6nOSBwwfDdV2p3Kx9evA9vI+XWTfDvw==}
+ dev: false
+
/@typescript-eslint/eslint-plugin/5.35.1_4kgehhvxgrxdvptdn2db7re534:
resolution: {integrity: sha512-RBZZXZlI4XCY4Wzgy64vB+0slT9+yAPQRjj/HSaRwUot33xbDjF1oN9BLwOLTewoOI0jothIltZRe9uJCHf8gg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -7865,6 +7886,11 @@ packages:
hasBin: true
dev: true
+ /auto-bind/4.0.0:
+ resolution: {integrity: sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==}
+ engines: {node: '>=8'}
+ dev: false
+
/autoprefixer/10.4.8_postcss@8.4.16:
resolution: {integrity: sha512-75Jr6Q/XpTqEf6D2ltS5uMewJIx5irCU1oBYJrWjFenq/m12WRRrz6g15L1EIoYvPLXTbEry7rDOwrcYNj77xw==}
engines: {node: ^10 || ^12 || >=14}
@@ -9129,7 +9155,6 @@ packages:
dependencies:
slice-ansi: 3.0.0
string-width: 4.2.3
- dev: true
/cli-truncate/3.1.0:
resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==}
@@ -9240,6 +9265,13 @@ packages:
chalk: 2.4.2
q: 1.5.1
+ /code-excerpt/3.0.0:
+ resolution: {integrity: sha512-VHNTVhd7KsLGOqfX3SyeO8RyYPMp1GJOg194VITk04WMYCv4plV68YWe6TJZxd9MhobjtpMRnVky01gqZsalaw==}
+ engines: {node: '>=10'}
+ dependencies:
+ convert-to-spaces: 1.0.2
+ dev: false
+
/collapse-white-space/1.0.6:
resolution: {integrity: sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==}
@@ -9727,6 +9759,11 @@ packages:
dependencies:
safe-buffer: 5.1.2
+ /convert-to-spaces/1.0.2:
+ resolution: {integrity: sha512-cj09EBuObp9gZNQCzc7hByQyrs6jVGE+o9kSJmeUoj+GiPiJvi5LYqEH/Hmme4+MTLHM+Ejtq+FChpjjEnsPdQ==}
+ engines: {node: '>= 4'}
+ dev: false
+
/convert-units/3.0.0-beta.4:
resolution: {integrity: sha512-n/hYi+a2bj5PU0PJRn96Nv2wnJozXlWsVCpWTfbc2Yrl3M293u9Z/2NI5LelYpfyWpGTZaouZkOzHpBFGdk/UQ==}
dev: true
@@ -11759,7 +11796,6 @@ packages:
/escape-string-regexp/2.0.0:
resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==}
engines: {node: '>=8'}
- dev: true
/escape-string-regexp/4.0.0:
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
@@ -14189,6 +14225,70 @@ packages:
engines: {node: '>=10'}
dev: false
+ /ink-tab/4.2.0_ink@3.2.0+react@17.0.2:
+ resolution: {integrity: sha512-KrvNWrebGCXWbGf74QE0XYKYGUCa0dEgHGa3B4VJK3PQh8+wXycQeGnl1s/kq3OokWOmMyfkc/BTPgulxjXspQ==}
+ peerDependencies:
+ ink: ^3.0.0
+ react: ^16.8.0
+ dependencies:
+ ink: 3.2.0_skqlhrap4das3cz5b6iqdn2lqi
+ prop-types: 15.8.1
+ react: 17.0.2
+ dev: false
+
+ /ink-text-input/4.0.3_ink@3.2.0+react@17.0.2:
+ resolution: {integrity: sha512-eQD01ik9ltmNoHmkeQ2t8LszYkv2XwuPSUz3ie/85qer6Ll/j0QSlSaLNl6ENHZakBHdCBVZY04iOXcLLXA0PQ==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ ink: ^3.0.0-3
+ react: ^16.5.2 || ^17.0.0
+ dependencies:
+ chalk: 4.1.2
+ ink: 3.2.0_skqlhrap4das3cz5b6iqdn2lqi
+ react: 17.0.2
+ type-fest: 0.15.1
+ dev: false
+
+ /ink/3.2.0_skqlhrap4das3cz5b6iqdn2lqi:
+ resolution: {integrity: sha512-firNp1q3xxTzoItj/eOOSZQnYSlyrWks5llCTVX37nJ59K3eXbQ8PtzCguqo8YI19EELo5QxaKnJd4VxzhU8tg==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ '@types/react': '>=16.8.0'
+ react: '>=16.8.0'
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@types/react': 17.0.48
+ ansi-escapes: 4.3.2
+ auto-bind: 4.0.0
+ chalk: 4.1.2
+ cli-boxes: 2.2.1
+ cli-cursor: 3.1.0
+ cli-truncate: 2.1.0
+ code-excerpt: 3.0.0
+ indent-string: 4.0.0
+ is-ci: 2.0.0
+ lodash: 4.17.21
+ patch-console: 1.0.0
+ react: 17.0.2
+ react-devtools-core: 4.25.0
+ react-reconciler: 0.26.2_react@17.0.2
+ scheduler: 0.20.2
+ signal-exit: 3.0.7
+ slice-ansi: 3.0.0
+ stack-utils: 2.0.5
+ string-width: 4.2.3
+ type-fest: 0.12.0
+ widest-line: 3.1.0
+ wrap-ansi: 6.2.0
+ ws: 7.5.9
+ yoga-layout-prebuilt: 1.10.0
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+ dev: false
+
/inline-style-parser/0.1.1:
resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==}
@@ -15098,7 +15198,7 @@ packages:
pretty-format: 27.5.1
slash: 3.0.0
strip-json-comments: 3.1.1
- ts-node: 10.9.1_bqee57coj3oib6dw4m24wknwqe
+ ts-node: 10.9.1_t4lrjbt3sxauai4t5o275zsepa
transitivePeerDependencies:
- bufferutil
- canvas
@@ -18491,6 +18591,11 @@ packages:
dev: false
optional: true
+ /patch-console/1.0.0:
+ resolution: {integrity: sha512-nxl9nrnLQmh64iTzMfyylSlRozL7kAXIaxw1fVcLYdyhNkJCRUzirRZTikXGJsg+hc4fqpneTK6iU2H1Q8THSA==}
+ engines: {node: '>=10'}
+ dev: false
+
/path-browserify/0.0.1:
resolution: {integrity: sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==}
dev: true
@@ -20457,6 +20562,16 @@ packages:
- vue-template-compiler
dev: false
+ /react-devtools-core/4.25.0:
+ resolution: {integrity: sha512-iewRrnu0ZnmfL+jJayKphXj04CFh6i3ezVnpCtcnZbTPSQgN09XqHAzXbKbqNDl7aTg9QLNkQRP6M3DvdrinWA==}
+ dependencies:
+ shell-quote: 1.7.3
+ ws: 7.5.9
+ transitivePeerDependencies:
+ - bufferutil
+ - utf-8-validate
+ dev: false
+
/react-docgen-typescript/2.2.2_typescript@4.7.4:
resolution: {integrity: sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==}
peerDependencies:
@@ -20722,6 +20837,18 @@ packages:
react: 17.0.2
dev: false
+ /react-reconciler/0.26.2_react@17.0.2:
+ resolution: {integrity: sha512-nK6kgY28HwrMNwDnMui3dvm3rCFjZrcGiuwLc5COUipBK5hWHLOxMJhSnSomirqWwjPBJKV1QcbkI0VJr7Gl1Q==}
+ engines: {node: '>=0.10.0'}
+ peerDependencies:
+ react: ^17.0.2
+ dependencies:
+ loose-envify: 1.4.0
+ object-assign: 4.1.1
+ react: 17.0.2
+ scheduler: 0.20.2
+ dev: false
+
/react-redux/7.2.8_react@17.0.2:
resolution: {integrity: sha512-6+uDjhs3PSIclqoCk0kd6iX74gzrGc3W5zcAjbrFgEdIjRSQObdIwfx80unTkVUYvbQ95Y8Av3OvFHq1w5EOUw==}
peerDependencies:
@@ -22108,7 +22235,6 @@ packages:
ansi-styles: 4.3.0
astral-regex: 2.0.0
is-fullwidth-code-point: 3.0.0
- dev: true
/slice-ansi/4.0.0:
resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==}
@@ -22475,7 +22601,6 @@ packages:
engines: {node: '>=10'}
dependencies:
escape-string-regexp: 2.0.0
- dev: true
/stackframe/1.3.4:
resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==}
@@ -23679,7 +23804,6 @@ packages:
typescript: 4.7.4
v8-compile-cache-lib: 3.0.1
yn: 3.1.1
- dev: false
/ts-pnp/1.2.0_typescript@4.7.4:
resolution: {integrity: sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==}
@@ -23775,6 +23899,16 @@ packages:
engines: {node: '>=4'}
dev: true
+ /type-fest/0.12.0:
+ resolution: {integrity: sha512-53RyidyjvkGpnWPMF9bQgFtWp+Sl8O2Rp13VavmJgfAP9WWG6q6TkrKU8iyJdnwnfgHI6k2hTlgqH4aSdjoTbg==}
+ engines: {node: '>=10'}
+ dev: false
+
+ /type-fest/0.15.1:
+ resolution: {integrity: sha512-n+UXrN8i5ioo7kqT/nF8xsEzLaqFra7k32SEsSPwvXVGyAcRgV/FUQN/sgfptJTR1oRmmq7z4IXMFSM7im7C9A==}
+ engines: {node: '>=10'}
+ dev: false
+
/type-fest/0.16.0:
resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==}
engines: {node: '>=10'}
@@ -25313,7 +25447,6 @@ packages:
ansi-styles: 4.3.0
string-width: 4.2.3
strip-ansi: 6.0.1
- dev: true
/wrap-ansi/7.0.0:
resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
@@ -25550,6 +25683,13 @@ packages:
engines: {node: '>=4'}
dev: false
+ /yoga-layout-prebuilt/1.10.0:
+ resolution: {integrity: sha512-YnOmtSbv4MTf7RGJMK0FvZ+KD8OEe/J5BNnR0GHhD8J/XcG/Qvxgszm0Un6FTHWW4uHlTgP0IztiXQnGyIR45g==}
+ engines: {node: '>=8'}
+ dependencies:
+ '@types/yoga-layout': 1.9.2
+ dev: false
+
/yup/0.32.11:
resolution: {integrity: sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg==}
engines: {node: '>=10'}