mirror of
https://github.com/quine-global/hyper.git
synced 2026-01-12 20:18:41 -09:00
Compare commits
15 commits
v4.0.0-q-c
...
canary
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1d2feae11c | ||
|
|
098176dafb | ||
|
|
6331c14df9 | ||
|
|
3c4b7f30f4 | ||
|
|
a495a38db3 | ||
|
|
40cece79ba | ||
|
|
47ff892422 | ||
|
|
a7dc9ce8f3 | ||
|
|
06f040a566 | ||
|
|
fa460d697c | ||
|
|
d65dfba445 | ||
|
|
25bbf4082f | ||
|
|
36e5c150a8 | ||
|
|
e46ef31d88 | ||
|
|
f432f61964 |
23 changed files with 221 additions and 116 deletions
5
.github/actions/build-linux-arm/action.yml
vendored
5
.github/actions/build-linux-arm/action.yml
vendored
|
|
@ -73,6 +73,11 @@ runs:
|
|||
copy_artifact_path: target
|
||||
copy_artifact_dest: target
|
||||
commands: |
|
||||
# Install Python distutils in the ARM container
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y python3-pip python3-setuptools python3-dev
|
||||
pip3 install setuptools --break-system-packages || pip3 install setuptools
|
||||
|
||||
cd target
|
||||
# TODO upgrade node to 20.11.0 to match NODE_VERSION
|
||||
wget https://nodejs.org/dist/v18.16.0/node-v18.16.0-linux-${{ inputs.matrix-name }}.tar.xz
|
||||
|
|
|
|||
24
.github/workflows/ci.yml
vendored
24
.github/workflows/ci.yml
vendored
|
|
@ -79,8 +79,6 @@ jobs:
|
|||
env:
|
||||
NODE_VERSION: ${{ env.NODE_VERSION }}
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
# Due to permissions issues, Windows needs cache turned off
|
||||
AVA_CACHE: false
|
||||
with:
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
matrix-os: windows-latest
|
||||
|
|
@ -99,6 +97,28 @@ jobs:
|
|||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up QEMU and binfmt
|
||||
run: |
|
||||
# Install qemu-user-static
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y qemu-user-static binfmt-support python3-setuptools
|
||||
|
||||
# Install distutils for node-gyp
|
||||
sudo apt-get install -y python3-distutils || sudo apt-get install -y python3-dev python-is-python3
|
||||
|
||||
|
||||
# Download and install binfmt configurations
|
||||
wget https://github.com/qemu/qemu/raw/master/scripts/qemu-binfmt-conf.sh
|
||||
chmod +x qemu-binfmt-conf.sh
|
||||
sudo ./qemu-binfmt-conf.sh --qemu-path /usr/bin --qemu-suffix -static --debian
|
||||
|
||||
# Import the binfmt configurations
|
||||
sudo update-binfmts --import qemu-arm
|
||||
sudo update-binfmts --import qemu-aarch64
|
||||
|
||||
# Verify they exist
|
||||
ls -la /proc/sys/fs/binfmt_misc/qemu-arm* || true
|
||||
|
||||
- name: Build ARMv7l
|
||||
uses: ./.github/actions/build-linux-arm
|
||||
env:
|
||||
|
|
|
|||
23
.github/workflows/release.yml
vendored
23
.github/workflows/release.yml
vendored
|
|
@ -69,8 +69,6 @@ jobs:
|
|||
env:
|
||||
NODE_VERSION: ${{ env.NODE_VERSION }}
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
# Due to permissions issues, Windows needs cache turned off
|
||||
AVA_CACHE: false
|
||||
with:
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
matrix-os: windows-latest
|
||||
|
|
@ -86,6 +84,27 @@ jobs:
|
|||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up QEMU and binfmt
|
||||
run: |
|
||||
# Install qemu-user-static
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y qemu-user-static binfmt-support python3-setuptools
|
||||
|
||||
# Install distutils for node-gyp
|
||||
sudo apt-get install -y python3-distutils || sudo apt-get install -y python3-dev python-is-python3
|
||||
|
||||
# Download and install binfmt configurations
|
||||
wget https://github.com/qemu/qemu/raw/master/scripts/qemu-binfmt-conf.sh
|
||||
chmod +x qemu-binfmt-conf.sh
|
||||
sudo ./qemu-binfmt-conf.sh --qemu-path /usr/bin --qemu-suffix -static --debian
|
||||
|
||||
# Import the binfmt configurations
|
||||
sudo update-binfmts --import qemu-arm
|
||||
sudo update-binfmts --import qemu-aarch64
|
||||
|
||||
# Verify they exist
|
||||
ls -la /proc/sys/fs/binfmt_misc/qemu-arm* || true
|
||||
|
||||
- name: Build ARMv7l
|
||||
uses: ./.github/actions/build-linux-arm
|
||||
env:
|
||||
|
|
|
|||
14
README.md
14
README.md
|
|
@ -3,12 +3,14 @@
|
|||
</p>
|
||||
|
||||
<p>
|
||||
<a aria-label="Vercel logo" href="https://vercel.com">
|
||||
<img src="https://img.shields.io/badge/MADE%20BY%20Vercel-000000.svg?style=for-the-badge&logo=vercel&labelColor=000000&logoWidth=20">
|
||||
</a>
|
||||
</p>
|
||||
<a aria-label="Vercel logo" href="https://vercel.com"><img
|
||||
src="https://img.shields.io/badge/MADE%20BY%20Vercel-000000.svg?style=for-the-badge&logo=vercel&labelColor=000000&logoWidth=20"
|
||||
/></a> <a aria-label="Quine logo" href="https://quineglobal.com"><img
|
||||
width="143" height="28" alt="forked-by-quine" src="https://github.com/user-attachments/assets/57decaa2-7d8c-4d13-ada7-ff6b964346f7"
|
||||
/></a>
|
||||
</p>
|
||||
|
||||
[](https://github.com/quine-global/hyper/actions/workflows/nodejs.yml)
|
||||
[](https://github.com/quine-global/hyper/actions/workflows/ci.yml)
|
||||
|
||||
[](https://changelog.com/213)
|
||||
|
||||
|
|
@ -16,7 +18,7 @@ For more details, head to: https://hyper.is
|
|||
|
||||
## Project goals
|
||||
|
||||
The goal of the project is to create a beautiful and extensible experience for command-line interface users, built on open web standards. In the beginning, our focus will be primarily around speed, stability and the development of the correct API for extension authors.
|
||||
The goal of the project is to create a beautiful and customizable experience for command-line interface users, built on open web standards. We have picked up where Vercel left off, and intend to first offer stability, followed by a more tailored experience. We will still support customizability, but stability of theming APIs is not a goal.
|
||||
|
||||
In the future, we anticipate the community will come up with innovative additions to enhance what could be the simplest, most powerful and well-tested interface for productivity.
|
||||
|
||||
|
|
|
|||
|
|
@ -190,7 +190,7 @@ app.on('ready', () =>
|
|||
}
|
||||
}
|
||||
]);
|
||||
app.dock.setMenu(dockMenu);
|
||||
app.dock?.setMenu(dockMenu);
|
||||
}
|
||||
|
||||
Menu.setApplicationMenu(AppMenu.buildMenu(menu));
|
||||
|
|
|
|||
|
|
@ -65,7 +65,10 @@ export const createMenu = (
|
|||
|
||||
Created by Guillermo Rauch
|
||||
Copyright © 2022 Vercel, Inc.
|
||||
`.split('\n').map(z => z.trim()).join('\n'),
|
||||
`
|
||||
.split('\n')
|
||||
.map((z) => z.trim())
|
||||
.join('\n'),
|
||||
buttons: [],
|
||||
icon: icon as any
|
||||
});
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
"name": "hyper",
|
||||
"productName": "Hyper",
|
||||
"description": "A terminal built on web technologies",
|
||||
"version": "4.0.0-q-canary.6",
|
||||
"version": "4.0.0-q-canary.8",
|
||||
"license": "MIT",
|
||||
"author": {
|
||||
"name": "ZEIT, Inc.",
|
||||
|
|
@ -13,19 +13,18 @@
|
|||
"postinstall": "npx patch-package"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/parser": "7.25.4",
|
||||
"@babel/parser": "7.27.0",
|
||||
"@electron/remote": "2.1.2",
|
||||
"ast-types": "^0.16.1",
|
||||
"async-retry": "1.3.3",
|
||||
"chokidar": "^3.6.0",
|
||||
"color": "4.2.3",
|
||||
"default-shell": "1.0.1",
|
||||
"electron-devtools-installer": "3.2.0",
|
||||
"quine-electron-drag-click": "1.0.6d",
|
||||
"electron-devtools-installer": "3.2.1",
|
||||
"electron-fetch": "1.9.1",
|
||||
"electron-is-dev": "2.0.0",
|
||||
"electron-store": "8.2.0",
|
||||
"fs-extra": "11.2.0",
|
||||
"fs-extra": "11.3.0",
|
||||
"git-describe": "4.1.1",
|
||||
"lodash": "4.17.21",
|
||||
"ms": "2.1.3",
|
||||
|
|
@ -34,10 +33,11 @@
|
|||
"os-locale": "5.0.0",
|
||||
"parse-url": "9.2.0",
|
||||
"queue": "6.0.2",
|
||||
"quine-electron-drag-click": "2.0.0",
|
||||
"react": "18.3.1",
|
||||
"react-dom": "18.3.1",
|
||||
"recast": "0.23.9",
|
||||
"semver": "7.6.3",
|
||||
"recast": "0.23.11",
|
||||
"semver": "7.7.1",
|
||||
"shell-env": "3.0.1",
|
||||
"sudo-prompt": "^9.2.1",
|
||||
"uuid": "10.0.0"
|
||||
|
|
|
|||
|
|
@ -27,7 +27,9 @@ import toElectronBackgroundColor from '../utils/to-electron-background-color';
|
|||
|
||||
import contextMenuTemplate from './contextmenu';
|
||||
|
||||
electronDragClick();
|
||||
if (process.platform === 'darwin') {
|
||||
electronDragClick();
|
||||
}
|
||||
|
||||
export function newWindow(
|
||||
options_: BrowserWindowConstructorOptions,
|
||||
|
|
|
|||
|
|
@ -12,14 +12,14 @@
|
|||
resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7"
|
||||
integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==
|
||||
|
||||
"@babel/parser@7.25.4":
|
||||
version "7.25.4"
|
||||
resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.25.4.tgz#af4f2df7d02440286b7de57b1c21acfb2a6f257a"
|
||||
integrity sha512-nq+eWrOgdtu3jG5Os4TQP3x3cLA8hR8TvJNjD8vnPa20WGycimcparWnLK4jJhElTK6SDyuJo1weMKO/5LpmLA==
|
||||
"@babel/parser@7.27.0":
|
||||
version "7.27.0"
|
||||
resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz#3d7d6ee268e41d2600091cbd4e145ffee85a44ec"
|
||||
integrity sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==
|
||||
dependencies:
|
||||
"@babel/types" "^7.25.4"
|
||||
"@babel/types" "^7.27.0"
|
||||
|
||||
"@babel/types@^7.25.4":
|
||||
"@babel/types@^7.27.0":
|
||||
version "7.27.0"
|
||||
resolved "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz#ef9acb6b06c3173f6632d993ecb6d4ae470b4559"
|
||||
integrity sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==
|
||||
|
|
@ -353,10 +353,10 @@ eastasianwidth@^0.2.0:
|
|||
resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb"
|
||||
integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
|
||||
|
||||
electron-devtools-installer@3.2.0:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.npmjs.org/electron-devtools-installer/-/electron-devtools-installer-3.2.0.tgz#acc48d24eb7033fe5af284a19667e73b78d406d0"
|
||||
integrity sha512-t3UczsYugm4OAbqvdImMCImIMVdFzJAHgbwHpkl5jmfu1izVgUcP/mnrPqJIpEeCK1uZGpt+yHgWEN+9EwoYhQ==
|
||||
electron-devtools-installer@3.2.1:
|
||||
version "3.2.1"
|
||||
resolved "https://registry.npmjs.org/electron-devtools-installer/-/electron-devtools-installer-3.2.1.tgz#338a0ada7b4232ee42cd88fe5cf305c6be95cfe9"
|
||||
integrity sha512-FaCi+oDCOBTw0gJUsuw5dXW32b2Ekh5jO8lI1NRCQigo3azh2VogsIi0eelMVrP1+LkN/bewyH3Xoo1USjO0eQ==
|
||||
dependencies:
|
||||
rimraf "^3.0.2"
|
||||
semver "^7.2.1"
|
||||
|
|
@ -492,10 +492,10 @@ foreground-child@^3.1.0:
|
|||
cross-spawn "^7.0.6"
|
||||
signal-exit "^4.0.1"
|
||||
|
||||
fs-extra@11.2.0:
|
||||
version "11.2.0"
|
||||
resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b"
|
||||
integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==
|
||||
fs-extra@11.3.0:
|
||||
version "11.3.0"
|
||||
resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz#0daced136bbaf65a555a326719af931adc7a314d"
|
||||
integrity sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==
|
||||
dependencies:
|
||||
graceful-fs "^4.2.0"
|
||||
jsonfile "^6.0.1"
|
||||
|
|
@ -1219,10 +1219,10 @@ queue@6.0.2:
|
|||
dependencies:
|
||||
inherits "~2.0.3"
|
||||
|
||||
quine-electron-drag-click@1.0.6d:
|
||||
version "1.0.6-d"
|
||||
resolved "https://registry.npmjs.org/quine-electron-drag-click/-/quine-electron-drag-click-1.0.6-d.tgz#210fc244fdf3a11b3ad1b2e2d7d7670176b5e19b"
|
||||
integrity sha512-2geemTnPP3GuEGzOR/IbbXbTf+JX/VERjerA4r2TuXYHSanNiEbMWSSZ2wD8RllOnp/tBIE+O4CmmPfJ86rYQQ==
|
||||
quine-electron-drag-click@2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.npmjs.org/quine-electron-drag-click/-/quine-electron-drag-click-2.0.0.tgz#c6694a706b4c4eca75277ef2c34d7773476700e1"
|
||||
integrity sha512-pieh1HawezFDn+cpBgs+RQXeR8wj0h/gZafB3sB9rYRQAHTs9V1R8gIq6u7SjGrn1esiM+iP4cknpzsbk/KQ9w==
|
||||
dependencies:
|
||||
bindings "^1.5.0"
|
||||
node-addon-api "^3.0.2"
|
||||
|
|
@ -1262,10 +1262,10 @@ readdirp@~3.6.0:
|
|||
dependencies:
|
||||
picomatch "^2.2.1"
|
||||
|
||||
recast@0.23.9:
|
||||
version "0.23.9"
|
||||
resolved "https://registry.npmjs.org/recast/-/recast-0.23.9.tgz#587c5d3a77c2cfcb0c18ccce6da4361528c2587b"
|
||||
integrity sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==
|
||||
recast@0.23.11:
|
||||
version "0.23.11"
|
||||
resolved "https://registry.npmjs.org/recast/-/recast-0.23.11.tgz#8885570bb28cf773ba1dc600da7f502f7883f73f"
|
||||
integrity sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==
|
||||
dependencies:
|
||||
ast-types "^0.16.1"
|
||||
esprima "~4.0.0"
|
||||
|
|
@ -1312,21 +1312,16 @@ scheduler@^0.23.2:
|
|||
dependencies:
|
||||
loose-envify "^1.1.0"
|
||||
|
||||
semver@7.6.3:
|
||||
version "7.6.3"
|
||||
resolved "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143"
|
||||
integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==
|
||||
semver@7.7.1, semver@^7.2.1, semver@^7.3.5:
|
||||
version "7.7.1"
|
||||
resolved "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f"
|
||||
integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==
|
||||
|
||||
semver@^5.5.0, semver@^5.6.0:
|
||||
version "5.7.2"
|
||||
resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8"
|
||||
integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
|
||||
|
||||
semver@^7.2.1, semver@^7.3.5:
|
||||
version "7.7.1"
|
||||
resolved "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f"
|
||||
integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==
|
||||
|
||||
setimmediate@^1.0.5:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
|
||||
|
|
|
|||
|
|
@ -2,5 +2,8 @@ module.exports = {
|
|||
files: ['test/*'],
|
||||
extensions: ['ts'],
|
||||
require: ['ts-node/register/transpile-only'],
|
||||
timeout: '2m'
|
||||
timeout: '2m',
|
||||
verbose: true,
|
||||
// Due to permissions issues, Windows needs cache turned off
|
||||
cache: false
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,5 +1,8 @@
|
|||
module.exports = {
|
||||
files: ['test/unit/*'],
|
||||
extensions: ['ts'],
|
||||
require: ['ts-node/register/transpile-only']
|
||||
require: ['ts-node/register/transpile-only'],
|
||||
verbose: true,
|
||||
// Due to permissions issues, Windows needs cache turned off
|
||||
cache: false
|
||||
};
|
||||
|
|
|
|||
13
bin/cp-snapshot.js
vendored
13
bin/cp-snapshot.js
vendored
|
|
@ -1,3 +1,4 @@
|
|||
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
const fsPromises = require('fs/promises');
|
||||
|
|
@ -10,24 +11,30 @@ function copySnapshot(pathToElectron, archToCopy) {
|
|||
const pathToBlobV8 = path.resolve(__dirname, '..', 'cache', archToCopy, v8ContextFileName);
|
||||
|
||||
console.log('Copying v8 snapshots from', pathToBlob, 'to', pathToElectron);
|
||||
fs.mkdirSync(pathToElectron, { recursive: true });
|
||||
fs.copyFileSync(pathToBlob, path.join(pathToElectron, snapshotFileName));
|
||||
fs.copyFileSync(pathToBlobV8, path.join(pathToElectron, v8ContextFileName));
|
||||
}
|
||||
|
||||
function getPathToElectron() {
|
||||
const electronPath = require.resolve('electron');
|
||||
|
||||
switch (process.platform) {
|
||||
case 'darwin':
|
||||
return path.resolve(
|
||||
__dirname,
|
||||
electronPath,
|
||||
'..',
|
||||
'node_modules/electron/dist/Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources'
|
||||
'..',
|
||||
'..',
|
||||
'dist/Electron.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources'
|
||||
);
|
||||
case 'win32':
|
||||
case 'linux':
|
||||
return path.resolve(__dirname, '..', 'node_modules', 'electron', 'dist');
|
||||
return path.resolve(electronPath, '..', '..', '..', 'dist');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function getV8ContextFileName(archToCopy) {
|
||||
return `snapshot_blob.bin`;
|
||||
}
|
||||
|
|
|
|||
26
bin/mk-snapshot.js
vendored
26
bin/mk-snapshot.js
vendored
|
|
@ -15,6 +15,12 @@ const archMap = {
|
|||
};
|
||||
|
||||
async function main() {
|
||||
const npmConfigArch = process.env.npm_config_arch;
|
||||
if (!npmConfigArch) {
|
||||
throw new Error('env var npm_config_arch is not specified')
|
||||
}
|
||||
|
||||
|
||||
const baseDirPath = path.resolve(__dirname, '..');
|
||||
|
||||
console.log('Creating a linked script..');
|
||||
|
|
@ -32,11 +38,25 @@ async function main() {
|
|||
// Verify if we will be able to use this in `mksnapshot`
|
||||
vm.runInNewContext(result.snapshotScript, undefined, {filename: snapshotScriptPath, displayErrors: true});
|
||||
|
||||
const outputBlobPath = `${baseDirPath}/cache/${process.env.npm_config_arch}`;
|
||||
const outputBlobPath = `${baseDirPath}/cache/${npmConfigArch}`;
|
||||
await mkdirp(outputBlobPath);
|
||||
|
||||
let mksnapshotBinPath
|
||||
if (process.platform === 'win32') {
|
||||
mksnapshotBinPath =
|
||||
require.resolve(
|
||||
path.join("electron-mksnapshot", "bin", "mksnapshot.exe")
|
||||
);
|
||||
} else {
|
||||
mksnapshotBinPath =
|
||||
require.resolve(
|
||||
path.join("electron-mksnapshot", "bin", "mksnapshot")
|
||||
);
|
||||
}
|
||||
|
||||
mksnapshotBinPath = path.dirname(mksnapshotBinPath);
|
||||
|
||||
if (process.platform !== 'darwin') {
|
||||
const mksnapshotBinPath = `${baseDirPath}/node_modules/electron-mksnapshot/bin`;
|
||||
const matchingDirs = crossArchDirs.map((dir) => `${mksnapshotBinPath}/${dir}`).filter((dir) => fs.existsSync(dir));
|
||||
for (const dir of matchingDirs) {
|
||||
if (fs.existsSync(`${mksnapshotBinPath}/gen/v8/embedded.S`)) {
|
||||
|
|
@ -50,7 +70,7 @@ async function main() {
|
|||
|
||||
console.log(`Generating startup blob in "${outputBlobPath}"`);
|
||||
const res = childProcess.execFileSync(
|
||||
path.resolve(__dirname, '..', 'node_modules', 'electron-mksnapshot', 'bin', 'mksnapshot' + (process.platform === 'win32' ? '.exe' : '')),
|
||||
require.resolve(`electron-mksnapshot/bin/mksnapshot${process.platform === 'win32' ? '.exe' : ''}`),
|
||||
[
|
||||
'--startup-src=' + snapshotScriptPath,
|
||||
'--startup-blob=' + startupBlobPath,
|
||||
|
|
|
|||
5
bin/notarize.js
vendored
5
bin/notarize.js
vendored
|
|
@ -1,11 +1,12 @@
|
|||
const { notarize } = require("@electron/notarize");
|
||||
|
||||
exports.default = async function notarizing(context) {
|
||||
|
||||
const { electronPlatformName, appOutDir } = context;
|
||||
if (electronPlatformName !== "darwin" || !process.env.APPLE_ID || !process.env.APPLE_PASSWORD) {
|
||||
return;
|
||||
}
|
||||
|
||||
const { notarize } = await import('@electron/notarize');
|
||||
|
||||
const appName = context.packager.appInfo.productFilename;
|
||||
return await notarize({
|
||||
appBundleId: "com.quineglobal.hyper",
|
||||
|
|
|
|||
|
|
@ -141,7 +141,7 @@ export function openSearch(uid?: string) {
|
|||
dispatch({
|
||||
type: SESSION_SEARCH,
|
||||
uid: targetUid,
|
||||
value: true
|
||||
value: new Date()
|
||||
});
|
||||
};
|
||||
}
|
||||
|
|
@ -153,7 +153,7 @@ export function closeSearch(uid?: string, keyEvent?: any) {
|
|||
dispatch({
|
||||
type: SESSION_SEARCH,
|
||||
uid: targetUid,
|
||||
value: false
|
||||
value: null
|
||||
});
|
||||
} else {
|
||||
if (keyEvent) {
|
||||
|
|
|
|||
|
|
@ -87,6 +87,7 @@ const SearchButton = ({
|
|||
const SearchBox = forwardRef<HTMLDivElement, SearchBoxProps>((props, ref) => {
|
||||
const {
|
||||
caseSensitive,
|
||||
dateFocused,
|
||||
wholeWord,
|
||||
regex,
|
||||
results,
|
||||
|
|
@ -122,6 +123,14 @@ const SearchBox = forwardRef<HTMLDivElement, SearchBoxProps>((props, ref) => {
|
|||
inputRef.current?.focus();
|
||||
}, [inputRef.current]);
|
||||
|
||||
useEffect(() => {
|
||||
if (!dateFocused) {
|
||||
return;
|
||||
}
|
||||
inputRef.current?.focus();
|
||||
inputRef.current?.select();
|
||||
}, [dateFocused]);
|
||||
|
||||
const searchButtonColors: SearchButtonColors = {
|
||||
backgroundColor: borderColor,
|
||||
selectionColor,
|
||||
|
|
|
|||
|
|
@ -1,14 +1,18 @@
|
|||
import React, {forwardRef} from 'react';
|
||||
|
||||
import {useDevicePixelRatio} from 'use-device-pixel-ratio';
|
||||
|
||||
import type {StyleSheetProps} from '../../typings/hyper';
|
||||
|
||||
const StyleSheet = forwardRef<HTMLStyleElement, StyleSheetProps>((props, ref) => {
|
||||
const {borderColor} = props;
|
||||
|
||||
const dpr = useDevicePixelRatio();
|
||||
|
||||
return (
|
||||
<style jsx global ref={ref}>{`
|
||||
::-webkit-scrollbar {
|
||||
width: 5px;
|
||||
width: ${5 * dpr}px;
|
||||
}
|
||||
::-webkit-scrollbar-thumb {
|
||||
-webkit-border-radius: 10px;
|
||||
|
|
|
|||
|
|
@ -518,6 +518,7 @@ export default class Term extends React.PureComponent<
|
|||
{this.props.customChildren}
|
||||
{this.props.search ? (
|
||||
<SearchBox
|
||||
dateFocused={this.props.search}
|
||||
next={this.searchNext}
|
||||
prev={this.searchPrevious}
|
||||
close={this.closeSearchBox}
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ function Session(obj: Immutable.DeepPartial<session>) {
|
|||
cols: null,
|
||||
rows: null,
|
||||
cleared: false,
|
||||
search: false,
|
||||
search: null,
|
||||
shell: '',
|
||||
pid: null,
|
||||
profile: ''
|
||||
|
|
|
|||
39
package.json
39
package.json
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"name": "hyper",
|
||||
"name": "hyper-root",
|
||||
"version": "4.0.0-q-canary.8",
|
||||
"repository": "quine-global/hyper",
|
||||
"engines": {
|
||||
|
|
@ -13,9 +13,9 @@
|
|||
"build": "cross-env NODE_ENV=production webpack && tsc -b -v && cross-env BABEL_ENV=production babel target/renderer/bundle.js --out-file target/renderer/bundle.js --no-comments --minified",
|
||||
"lint": "eslint . --fix --ext .js,.jsx,.ts,.tsx,.json",
|
||||
"test": "yarn run lint && yarn run test:unit",
|
||||
"test:unit": "ava",
|
||||
"test:unit": "cross-env DEBUG=ava:watcher ava",
|
||||
"test:unit:watch": "yarn run test:unit -- --watch",
|
||||
"test:e2e": "ava --config ava-e2e.config.js",
|
||||
"test:e2e": "cross-env DEBUG=ava:watcher ava --config ava-e2e.config.js",
|
||||
"postinstall": "yarn run v8-snapshot && webpack --config-name hyper-app && yarn run install-app-deps-with-retry && yarn run rebuild-node-pty && cpy --cwd=target node_modules \"../../app/\" && husky && yarn run generate-schema",
|
||||
"install-app-deps-with-retry": "electron-builder install-app-deps || electron-builder install-app-deps || electron-builder install-app-deps",
|
||||
"rebuild-node-pty": "electron-rebuild -f -o node-pty -m target",
|
||||
|
|
@ -38,13 +38,23 @@
|
|||
"@electron/remote": "2.1.2",
|
||||
"@react-icons/all-files": "4.1.0",
|
||||
"@redux-devtools/extension": "^3.3.0",
|
||||
"@xterm/addon-canvas": "0.7.0",
|
||||
"@xterm/addon-fit": "0.10.0",
|
||||
"@xterm/addon-image": "0.8.0",
|
||||
"@xterm/addon-ligatures": "0.9.0",
|
||||
"@xterm/addon-search": "0.15.0",
|
||||
"@xterm/addon-unicode11": "0.8.0",
|
||||
"@xterm/addon-web-links": "0.11.0",
|
||||
"@xterm/addon-webgl": "0.18.0",
|
||||
"@xterm/xterm": "5.5.0",
|
||||
"args": "5.0.3",
|
||||
"ava": "https://github.com/quine-global/ava#38aebe3badef8d54f68e8315e9849cfa83d531fe",
|
||||
"chalk": "5.3.0",
|
||||
"clsx": "2.1.1",
|
||||
"color": "4.2.3",
|
||||
"columnify": "1.6.0",
|
||||
"electron-rebuild": "^3.2.9",
|
||||
"css-loader": "7.1.2",
|
||||
"electron-rebuild": "^3.2.9",
|
||||
"got": "12.4.1",
|
||||
"json-loader": "0.5.7",
|
||||
"lodash": "4.17.21",
|
||||
|
|
@ -67,17 +77,9 @@
|
|||
"styled-jsx": "5.1.6",
|
||||
"stylis": "3.5.4",
|
||||
"typescript-json-schema": "0.65.1",
|
||||
"use-device-pixel-ratio": "^1.1.2",
|
||||
"uuid": "10.0.0",
|
||||
"webpack-cli": "5.1.4",
|
||||
"@xterm/xterm": "5.5.0",
|
||||
"@xterm/addon-canvas": "0.7.0",
|
||||
"@xterm/addon-fit": "0.10.0",
|
||||
"@xterm/addon-image": "0.8.0",
|
||||
"@xterm/addon-ligatures": "0.9.0",
|
||||
"@xterm/addon-search": "0.15.0",
|
||||
"@xterm/addon-unicode11": "0.8.0",
|
||||
"@xterm/addon-web-links": "0.11.0",
|
||||
"@xterm/addon-webgl": "0.18.0"
|
||||
"webpack-cli": "5.1.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@ava/babel": "2.0.0",
|
||||
|
|
@ -90,7 +92,7 @@
|
|||
"@babel/plugin-proposal-optional-chaining": "7.21.0",
|
||||
"@babel/preset-react": "7.25.9",
|
||||
"@babel/preset-typescript": "7.26.0",
|
||||
"@electron/rebuild": "^3.7.1",
|
||||
"@electron/rebuild": "^3.7.2",
|
||||
"@types/args": "5.0.3",
|
||||
"@types/async-retry": "1.4.9",
|
||||
"@types/color": "3.0.6",
|
||||
|
|
@ -108,16 +110,15 @@
|
|||
"@types/uuid": "10.0.0",
|
||||
"@typescript-eslint/eslint-plugin": "7.0.0",
|
||||
"@typescript-eslint/parser": "6.21.0",
|
||||
"ava": "6.2.0",
|
||||
"babel-loader": "9.2.1",
|
||||
"concurrently": "9.1.0",
|
||||
"copy-webpack-plugin": "12.0.2",
|
||||
"cpy-cli": "^5.0.0",
|
||||
"cross-env": "7.0.3",
|
||||
"electron": "34.5.1",
|
||||
"electron-mksnapshot": "34.5.1",
|
||||
"electron": "38.6.0",
|
||||
"electron-builder": "26.0.13",
|
||||
"electron-link": "^0.6.0",
|
||||
"electron-mksnapshot": "38.6.0",
|
||||
"electronmon": "^2.0.3",
|
||||
"eslint": "8.57.0",
|
||||
"eslint-config-prettier": "9.1.0",
|
||||
|
|
@ -157,7 +158,7 @@
|
|||
},
|
||||
"resolutions": {
|
||||
"@types/retry": "0.12.5",
|
||||
"node-abi": "^3.67.0"
|
||||
"node-abi": "^3.81.0"
|
||||
},
|
||||
"packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
|
||||
}
|
||||
|
|
|
|||
2
typings/constants/sessions.d.ts
vendored
2
typings/constants/sessions.d.ts
vendored
|
|
@ -74,7 +74,7 @@ export interface SessionSetCwdAction {
|
|||
export interface SessionSearchAction {
|
||||
type: typeof SESSION_SEARCH;
|
||||
uid: string;
|
||||
value: boolean;
|
||||
value: Date | null;
|
||||
}
|
||||
|
||||
export type SessionActions =
|
||||
|
|
|
|||
7
typings/hyper.d.ts
vendored
7
typings/hyper.d.ts
vendored
|
|
@ -1,6 +1,6 @@
|
|||
// eslint-disable-next-line eslint-comments/disable-enable-pair
|
||||
/* eslint-disable import/order */
|
||||
import type {Immutable} from 'seamless-immutable';
|
||||
import type {Immutable, ImmutableDate} from 'seamless-immutable';
|
||||
import type Client from '../lib/utils/rpc';
|
||||
|
||||
declare global {
|
||||
|
|
@ -118,7 +118,7 @@ export type session = {
|
|||
pid: number | null;
|
||||
resizeAt?: number;
|
||||
rows: number | null;
|
||||
search: boolean;
|
||||
search: ImmutableDate | null;
|
||||
shell: string | null;
|
||||
title: string;
|
||||
uid: string;
|
||||
|
|
@ -326,6 +326,7 @@ import type {TermGroupConnectedProps} from '../lib/components/term-group';
|
|||
export type TermGroupProps = TermGroupConnectedProps & TermGroupOwnProps;
|
||||
|
||||
export type SearchBoxProps = {
|
||||
dateFocused: ImmutableDate | null;
|
||||
caseSensitive: boolean;
|
||||
wholeWord: boolean;
|
||||
regex: boolean;
|
||||
|
|
@ -386,7 +387,7 @@ export type TermProps = {
|
|||
rows: number | null;
|
||||
screenReaderMode: boolean;
|
||||
scrollback: number;
|
||||
search: boolean;
|
||||
search: ImmutableDate | null;
|
||||
searchAddon: SearchAddon | null;
|
||||
selectionColor: string;
|
||||
term: Terminal | null;
|
||||
|
|
|
|||
57
yarn.lock
57
yarn.lock
|
|
@ -571,7 +571,7 @@
|
|||
minimist "^1.2.6"
|
||||
plist "^3.0.5"
|
||||
|
||||
"@electron/rebuild@3.7.2", "@electron/rebuild@^3.7.1":
|
||||
"@electron/rebuild@3.7.2", "@electron/rebuild@^3.7.2":
|
||||
version "3.7.2"
|
||||
resolved "https://registry.npmjs.org/@electron/rebuild/-/rebuild-3.7.2.tgz#8d808b29159c50086d27a5dec72b40bf16b4b582"
|
||||
integrity sha512-19/KbIR/DAxbsCkiaGMXIdPnMCJLkcf8AvGnduJtWBs/CBwiAjY1apCqOLVxrXg+rtXFCngbXhBanWjxLUt1Mg==
|
||||
|
|
@ -1285,12 +1285,12 @@
|
|||
dependencies:
|
||||
undici-types "~5.26.4"
|
||||
|
||||
"@types/node@^20.9.0":
|
||||
version "20.17.30"
|
||||
resolved "https://registry.npmjs.org/@types/node/-/node-20.17.30.tgz#1d93f656d3b869dbef7b796568ac457606ba58d0"
|
||||
integrity sha512-7zf4YyHA+jvBNfVrk2Gtvs6x7E8V+YDW05bNfG2XkWDJfYRXrTiP/DsB2zSYTaHX0bGIujTBQdMVAhb+j7mwpg==
|
||||
"@types/node@^22.7.7":
|
||||
version "22.19.1"
|
||||
resolved "https://registry.npmjs.org/@types/node/-/node-22.19.1.tgz#1188f1ddc9f46b4cc3aec76749050b4e1f459b7b"
|
||||
integrity sha512-LCCV0HdSZZZb34qifBsyWlUmok6W7ouER+oQIGBScS8EsZsQbrtFTUrDX4hOl+CS6p7cnNC4td+qrSVGSCTUfQ==
|
||||
dependencies:
|
||||
undici-types "~6.19.2"
|
||||
undici-types "~6.21.0"
|
||||
|
||||
"@types/parse-path@^7.0.0":
|
||||
version "7.0.3"
|
||||
|
|
@ -2255,10 +2255,9 @@ at-least-node@^1.0.0:
|
|||
resolved "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
|
||||
integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
|
||||
|
||||
ava@6.2.0:
|
||||
"ava@https://github.com/quine-global/ava#38aebe3badef8d54f68e8315e9849cfa83d531fe":
|
||||
version "6.2.0"
|
||||
resolved "https://registry.npmjs.org/ava/-/ava-6.2.0.tgz#77be81e745ae219dd835c4e0941f6cf236bb23aa"
|
||||
integrity sha512-+GZk5PbyepjiO/68hzCZCUepQOQauKfNnI7sA4JukBTg97jD7E+tDKEA7OhGOGr6EorNNMM9+jqvgHVOTOzG4w==
|
||||
resolved "https://github.com/quine-global/ava#38aebe3badef8d54f68e8315e9849cfa83d531fe"
|
||||
dependencies:
|
||||
"@vercel/nft" "^0.27.5"
|
||||
acorn "^8.13.0"
|
||||
|
|
@ -3207,7 +3206,12 @@ delegates@^1.0.0:
|
|||
resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
|
||||
integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==
|
||||
|
||||
detect-libc@^2.0.0, detect-libc@^2.0.1:
|
||||
detect-libc@^2.0.0:
|
||||
version "2.0.4"
|
||||
resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz#f04715b8ba815e53b4d8109655b6508a6865a7e8"
|
||||
integrity sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==
|
||||
|
||||
detect-libc@^2.0.1:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700"
|
||||
integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==
|
||||
|
|
@ -3350,10 +3354,10 @@ electron-link@^0.6.0:
|
|||
resolve "^1.19.0"
|
||||
source-map "^0.7.3"
|
||||
|
||||
electron-mksnapshot@34.5.1:
|
||||
version "34.5.1"
|
||||
resolved "https://registry.npmjs.org/electron-mksnapshot/-/electron-mksnapshot-34.5.1.tgz#25fd5e935e9566d8ce157cb173643b0a9cf904e4"
|
||||
integrity sha512-kD8VQLe/7vMw3ddAnJqcnseFQohTdZJSUgyoQpPwRa9fUf2Ko1sXBP9mriQjjw4Ho5SmKqaAz4rJMAUgsxf51Q==
|
||||
electron-mksnapshot@38.6.0:
|
||||
version "38.6.0"
|
||||
resolved "https://registry.npmjs.org/electron-mksnapshot/-/electron-mksnapshot-38.6.0.tgz#ae9b20caa38087e157aba01607a85326d14d26d9"
|
||||
integrity sha512-2/TpAa4iZ9roln5fTcAEsZrgaUSliglbWkyow/ae+yij6RHJO0dFzKihynSynLnEXgOPRQT6zrqKV53TTQOufA==
|
||||
dependencies:
|
||||
"@electron/get" "^2.0.1"
|
||||
extract-zip "^2.0.0"
|
||||
|
|
@ -3399,13 +3403,13 @@ electron-to-chromium@^1.5.73:
|
|||
resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.139.tgz#56ae7d42439e2967a54badbadaeb12f748987f37"
|
||||
integrity sha512-GGnRYOTdN5LYpwbIr0rwP/ZHOQSvAF6TG0LSzp28uCBb9JiXHJGmaaKw29qjNJc5bGnnp6kXJqRnGMQoELwi5w==
|
||||
|
||||
electron@34.5.1:
|
||||
version "34.5.1"
|
||||
resolved "https://registry.npmjs.org/electron/-/electron-34.5.1.tgz#c7ce7b6f054eae6c7ef2d4ee933277db5bf069b3"
|
||||
integrity sha512-z2Wm7QjhnJ5592fLITynj8UwIk1mBiT402mOakxSYiADrERIci3IOPk7xWHAFOMvt/eoG5RW16PPhgJiedZcGA==
|
||||
electron@38.6.0:
|
||||
version "38.6.0"
|
||||
resolved "https://registry.npmjs.org/electron/-/electron-38.6.0.tgz#c862bff41d42776e307bf5cc92503dda23612339"
|
||||
integrity sha512-68OFNxJlrEStA+t8k5atzf4frJddvRR1N1oalr49Ll8YZ0+0nEsDhw4UNhTCoZKTjSYcxFF/4rt+sco+OlnB3g==
|
||||
dependencies:
|
||||
"@electron/get" "^2.0.0"
|
||||
"@types/node" "^20.9.0"
|
||||
"@types/node" "^22.7.7"
|
||||
extract-zip "^2.0.1"
|
||||
|
||||
electronmon@^2.0.3:
|
||||
|
|
@ -6081,10 +6085,10 @@ nested-error-stacks@^2.1.1:
|
|||
resolved "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.1.tgz#26c8a3cee6cc05fbcf1e333cd2fc3e003326c0b5"
|
||||
integrity sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==
|
||||
|
||||
node-abi@^3.0.0, node-abi@^3.45.0, node-abi@^3.67.0:
|
||||
version "3.74.0"
|
||||
resolved "https://registry.npmjs.org/node-abi/-/node-abi-3.74.0.tgz#5bfb4424264eaeb91432d2adb9da23c63a301ed0"
|
||||
integrity sha512-c5XK0MjkGBrQPGYG24GBADZud0NCbznxNx0ZkS+ebUTrmV1qTDxPxSL8zEAPURXSbLRWVexxmP4986BziahL5w==
|
||||
node-abi@^3.0.0, node-abi@^3.45.0, node-abi@^3.81.0:
|
||||
version "3.81.0"
|
||||
resolved "https://registry.npmjs.org/node-abi/-/node-abi-3.81.0.tgz#176a80904b2d382f5e5d1abcfb44d681cf9105c5"
|
||||
integrity sha512-I+SHs7vmUV9ooMDHVzFfUxFQRWeiBCGbI02+XB503WBS8RCDJl4vXSoAXzcnSWpzgItirp2EraDq7jQ2c7CIiA==
|
||||
dependencies:
|
||||
semver "^7.3.5"
|
||||
|
||||
|
|
@ -8270,7 +8274,7 @@ undici-types@~5.26.4:
|
|||
resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617"
|
||||
integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
|
||||
|
||||
undici-types@~6.19.2, undici-types@~6.19.8:
|
||||
undici-types@~6.19.8:
|
||||
version "6.19.8"
|
||||
resolved "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02"
|
||||
integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==
|
||||
|
|
@ -8369,6 +8373,11 @@ uri-js@^4.2.2:
|
|||
dependencies:
|
||||
punycode "^2.1.0"
|
||||
|
||||
use-device-pixel-ratio@^1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.npmjs.org/use-device-pixel-ratio/-/use-device-pixel-ratio-1.1.2.tgz#e936b99d4037ff1028ac1ac2b5b2ef02ac55f91d"
|
||||
integrity sha512-nFxV0HwLdRUt20kvIgqHYZe6PK/v4mU1X8/eLsT1ti5ck0l2ob0HDRziaJPx+YWzBo6dMm4cTac3mcyk68Gh+A==
|
||||
|
||||
use-sync-external-store@^1.0.0:
|
||||
version "1.5.0"
|
||||
resolved "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz#55122e2a3edd2a6c106174c27485e0fd59bcfca0"
|
||||
|
|
|
|||
Loading…
Reference in a new issue