Compare commits
No commits in common. "main" and "874110" have entirely different histories.
34 changed files with 901 additions and 1405 deletions
|
@ -30,11 +30,7 @@ Make sure the postinstall script is ran, because otherwise the filenames are to
|
||||||
|
|
||||||
## Deploying
|
## Deploying
|
||||||
|
|
||||||
To upload the firmware to the BTClock, you need to GZIP all the files. You can use the python script `gzip_build.py` for that:
|
To upload the firmware to the BTClock, you need to GZIP all the files. You can use the python script `gzip_build.py` for that.
|
||||||
|
|
||||||
```bash
|
|
||||||
python3 gzip_build.py
|
|
||||||
```
|
|
||||||
|
|
||||||
Then you can make a `LittleFS.bin` with mklittlefs:
|
Then you can make a `LittleFS.bin` with mklittlefs:
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,6 @@
|
||||||
"postinstall": "patch-package",
|
"postinstall": "patch-package",
|
||||||
"test": "npm run test:integration && npm run test:unit",
|
"test": "npm run test:integration && npm run test:unit",
|
||||||
"test:integration": "playwright test",
|
"test:integration": "playwright test",
|
||||||
"test:screenshots": "playwright test -c playwright.screenshot.config.ts",
|
|
||||||
"test:unit": "vitest"
|
"test:unit": "vitest"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
@ -33,7 +32,6 @@
|
||||||
"jsdom": "^25.0.0",
|
"jsdom": "^25.0.0",
|
||||||
"prettier": "^3.3.3",
|
"prettier": "^3.3.3",
|
||||||
"prettier-plugin-svelte": "^3.2.6",
|
"prettier-plugin-svelte": "^3.2.6",
|
||||||
"rollup-plugin-visualizer": "^5.12.0",
|
|
||||||
"sass": "^1.79.3",
|
"sass": "^1.79.3",
|
||||||
"svelte": "^4.2.19",
|
"svelte": "^4.2.19",
|
||||||
"svelte-check": "^4.0.2",
|
"svelte-check": "^4.0.2",
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
diff --git a/node_modules/@sveltejs/kit/src/exports/vite/index.js b/node_modules/@sveltejs/kit/src/exports/vite/index.js
|
diff --git a/node_modules/@sveltejs/kit/src/exports/vite/index.js b/node_modules/@sveltejs/kit/src/exports/vite/index.js
|
||||||
index ad519c9..bee1516 100644
|
index 40fa4c6..738cabf 100644
|
||||||
--- a/node_modules/@sveltejs/kit/src/exports/vite/index.js
|
--- a/node_modules/@sveltejs/kit/src/exports/vite/index.js
|
||||||
+++ b/node_modules/@sveltejs/kit/src/exports/vite/index.js
|
+++ b/node_modules/@sveltejs/kit/src/exports/vite/index.js
|
||||||
@@ -644,9 +644,9 @@ async function kit({ svelte_config }) {
|
@@ -655,9 +655,9 @@ async function kit({ svelte_config }) {
|
||||||
input,
|
input,
|
||||||
output: {
|
output: {
|
||||||
format: 'esm',
|
format: 'esm',
|
||||||
|
@ -13,18 +13,5 @@ index ad519c9..bee1516 100644
|
||||||
+ chunkFileNames: ssr ? 'chunks/[name].js' : `${prefix}/chunks/[hash].${ext}`,
|
+ chunkFileNames: ssr ? 'chunks/[name].js' : `${prefix}/chunks/[hash].${ext}`,
|
||||||
+ assetFileNames: `${prefix}/assets/[hash][extname]`,
|
+ assetFileNames: `${prefix}/assets/[hash][extname]`,
|
||||||
hoistTransitiveImports: false,
|
hoistTransitiveImports: false,
|
||||||
sourcemapIgnoreList,
|
sourcemapIgnoreList
|
||||||
manualChunks:
|
},
|
||||||
@@ -661,9 +661,9 @@ async function kit({ svelte_config }) {
|
|
||||||
worker: {
|
|
||||||
rollupOptions: {
|
|
||||||
output: {
|
|
||||||
- entryFileNames: `${prefix}/workers/[name]-[hash].js`,
|
|
||||||
- chunkFileNames: `${prefix}/workers/chunks/[name]-[hash].js`,
|
|
||||||
- assetFileNames: `${prefix}/workers/assets/[name]-[hash][extname]`,
|
|
||||||
+ entryFileNames: `${prefix}/workers/[hash].js`,
|
|
||||||
+ chunkFileNames: `${prefix}/workers/chunks/[hash].js`,
|
|
||||||
+ assetFileNames: `${prefix}/workers/assets/[hash][extname]`,
|
|
||||||
hoistTransitiveImports: false
|
|
||||||
}
|
|
||||||
}
|
|
17
patches/@sveltejs+kit+2.8.5.patch
Normal file
17
patches/@sveltejs+kit+2.8.5.patch
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
diff --git a/node_modules/@sveltejs/kit/src/exports/vite/index.js b/node_modules/@sveltejs/kit/src/exports/vite/index.js
|
||||||
|
index e6521e9..f31c28b 100644
|
||||||
|
--- a/node_modules/@sveltejs/kit/src/exports/vite/index.js
|
||||||
|
+++ b/node_modules/@sveltejs/kit/src/exports/vite/index.js
|
||||||
|
@@ -639,9 +639,9 @@ async function kit({ svelte_config }) {
|
||||||
|
input,
|
||||||
|
output: {
|
||||||
|
format: 'esm',
|
||||||
|
- entryFileNames: ssr ? '[name].js' : `${prefix}/[name].[hash].${ext}`,
|
||||||
|
- chunkFileNames: ssr ? 'chunks/[name].js' : `${prefix}/chunks/[name].[hash].${ext}`,
|
||||||
|
- assetFileNames: `${prefix}/assets/[name].[hash][extname]`,
|
||||||
|
+ entryFileNames: ssr ? '[name].js' : `${prefix}/[hash].${ext}`,
|
||||||
|
+ chunkFileNames: ssr ? 'chunks/[name].js' : `${prefix}/chunks/[hash].${ext}`,
|
||||||
|
+ assetFileNames: `${prefix}/assets/[hash][extname]`,
|
||||||
|
hoistTransitiveImports: false,
|
||||||
|
sourcemapIgnoreList
|
||||||
|
},
|
|
@ -10,7 +10,7 @@ const config: PlaywrightTestConfig = {
|
||||||
port: 4173
|
port: 4173
|
||||||
},
|
},
|
||||||
reporter: process.env.CI ? 'github' : 'list',
|
reporter: process.env.CI ? 'github' : 'list',
|
||||||
testDir: 'tests/playwright',
|
testDir: 'tests',
|
||||||
testMatch: /(.+\.)?(test|spec)\.[jt]s/
|
testMatch: /(.+\.)?(test|spec)\.[jt]s/
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,59 +0,0 @@
|
||||||
import { defineConfig, devices } from '@playwright/test';
|
|
||||||
|
|
||||||
export default defineConfig({
|
|
||||||
reporter: 'html',
|
|
||||||
use: {
|
|
||||||
locale: 'en-GB',
|
|
||||||
timezoneId: 'Europe/Amsterdam'
|
|
||||||
},
|
|
||||||
webServer: {
|
|
||||||
command: 'npm run build && npm run preview',
|
|
||||||
port: 4173
|
|
||||||
},
|
|
||||||
testDir: './tests/screenshots',
|
|
||||||
outputDir: './test-results/screenshots',
|
|
||||||
projects: [
|
|
||||||
{
|
|
||||||
name: 'MacBook Air 13 inch',
|
|
||||||
use: {
|
|
||||||
viewport: { width: 1440, height: 900 }
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'iPhone 14 Pro',
|
|
||||||
use: { ...devices['iPhone 14 Pro'] }
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'iPhone 15 Pro Landscape',
|
|
||||||
use: { ...devices['iPhone 15 Pro Landscape'] }
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'MacBook Pro 14 inch',
|
|
||||||
use: {
|
|
||||||
viewport: { width: 1512, height: 982 }
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'MacBook Pro 14 inch NL locale',
|
|
||||||
use: {
|
|
||||||
viewport: { width: 1512, height: 982 },
|
|
||||||
locale: 'nl'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'MacBook Pro 14 inch nl-NL locale',
|
|
||||||
use: {
|
|
||||||
viewport: { width: 1512, height: 982 },
|
|
||||||
locale: 'nl-NL'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'MacBook Pro 14 inch Firefox HiDPI',
|
|
||||||
use: { ...devices['Desktop Firefox HiDPI'], viewport: { width: 1512, height: 982 } }
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'MacBook Pro 14 inch Safari',
|
|
||||||
use: { ...devices['Desktop Safari'], viewport: { width: 1512, height: 982 } }
|
|
||||||
}
|
|
||||||
]
|
|
||||||
});
|
|
|
@ -1,58 +0,0 @@
|
||||||
<script lang="ts">
|
|
||||||
import {
|
|
||||||
Input,
|
|
||||||
InputGroup,
|
|
||||||
InputGroupText,
|
|
||||||
Label,
|
|
||||||
FormText,
|
|
||||||
Col,
|
|
||||||
Row
|
|
||||||
} from '@sveltestrap/sveltestrap';
|
|
||||||
|
|
||||||
export let id: string;
|
|
||||||
export let label: string;
|
|
||||||
export let value: string | number;
|
|
||||||
export let type: string = 'text';
|
|
||||||
export let size: string = 'sm';
|
|
||||||
export let required: boolean = false;
|
|
||||||
export let min: number | undefined = undefined;
|
|
||||||
export let max: number | undefined = undefined;
|
|
||||||
export let step: number | string | undefined = undefined;
|
|
||||||
export let suffix: string | undefined = undefined;
|
|
||||||
export let helpText: string | undefined = undefined;
|
|
||||||
export let disabled: boolean = false;
|
|
||||||
export let valid: boolean | undefined = undefined;
|
|
||||||
export let invalid: boolean | undefined = undefined;
|
|
||||||
export let minlength: string | undefined = undefined;
|
|
||||||
export let onChange: (() => void) | undefined = undefined;
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<Row>
|
|
||||||
<Label md={6} for={id} {size}>{label}</Label>
|
|
||||||
<Col md="6">
|
|
||||||
<InputGroup {size}>
|
|
||||||
<Input
|
|
||||||
{id}
|
|
||||||
{type}
|
|
||||||
bind:value
|
|
||||||
{required}
|
|
||||||
{min}
|
|
||||||
{max}
|
|
||||||
{step}
|
|
||||||
{disabled}
|
|
||||||
{valid}
|
|
||||||
{invalid}
|
|
||||||
{minlength}
|
|
||||||
bsSize={size}
|
|
||||||
on:change={onChange}
|
|
||||||
/>
|
|
||||||
{#if suffix}
|
|
||||||
<InputGroupText>{suffix}</InputGroupText>
|
|
||||||
{/if}
|
|
||||||
<slot />
|
|
||||||
</InputGroup>
|
|
||||||
{#if helpText}
|
|
||||||
<FormText>{helpText}</FormText>
|
|
||||||
{/if}
|
|
||||||
</Col>
|
|
||||||
</Row>
|
|
|
@ -1,34 +0,0 @@
|
||||||
<script lang="ts">
|
|
||||||
import { Input, Label, FormText, Col, Row } from '@sveltestrap/sveltestrap';
|
|
||||||
|
|
||||||
export let id: string;
|
|
||||||
export let label: string;
|
|
||||||
export let value: string | number;
|
|
||||||
export let options: Array<[string, string | number]>;
|
|
||||||
export let size: string = 'sm';
|
|
||||||
export let helpText: string | undefined = undefined;
|
|
||||||
export let selectClass: string | undefined = undefined;
|
|
||||||
export let onChange: (() => void) | undefined = undefined;
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<Row>
|
|
||||||
<Label md={6} for={id} {size}>{label}</Label>
|
|
||||||
<Col md="6">
|
|
||||||
<Input
|
|
||||||
{id}
|
|
||||||
type="select"
|
|
||||||
bind:value
|
|
||||||
name="select"
|
|
||||||
bsSize={size}
|
|
||||||
class={selectClass}
|
|
||||||
on:change={onChange}
|
|
||||||
>
|
|
||||||
{#each options as [key, val]}
|
|
||||||
<option value={val}>{key}</option>
|
|
||||||
{/each}
|
|
||||||
</Input>
|
|
||||||
{#if helpText}
|
|
||||||
<FormText>{helpText}</FormText>
|
|
||||||
{/if}
|
|
||||||
</Col>
|
|
||||||
</Row>
|
|
|
@ -1,15 +0,0 @@
|
||||||
<script lang="ts">
|
|
||||||
import { Input, Col } from '@sveltestrap/sveltestrap';
|
|
||||||
|
|
||||||
// Props
|
|
||||||
export let id: string;
|
|
||||||
export let checked: boolean;
|
|
||||||
export let label: string;
|
|
||||||
export let size: string = 'sm';
|
|
||||||
export let disabled: boolean = false;
|
|
||||||
export let col: { [key: string]: string } = { md: '6', xl: '12', xxl: '6' };
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<Col {...col}>
|
|
||||||
<Input {id} bind:checked type="switch" bsSize={size} {label} {disabled} />
|
|
||||||
</Col>
|
|
|
@ -1,5 +0,0 @@
|
||||||
export { default as SettingsSwitch } from './SettingsSwitch.svelte';
|
|
||||||
export { default as SettingsInput } from './SettingsInput.svelte';
|
|
||||||
export { default as SettingsSelect } from './SettingsSelect.svelte';
|
|
||||||
export { default as ToggleHeader } from './ToggleHeader.svelte';
|
|
||||||
export { default as ColorSchemeSwitcher } from './ColorSchemeSwitcher.svelte';
|
|
|
@ -8,23 +8,11 @@ register('nl', () => import('../locales/nl.json'));
|
||||||
register('es', () => import('../locales/es.json'));
|
register('es', () => import('../locales/es.json'));
|
||||||
register('de', () => import('../locales/de.json'));
|
register('de', () => import('../locales/de.json'));
|
||||||
|
|
||||||
const getInitialLocale = () => {
|
|
||||||
if (!browser) return defaultLocale;
|
|
||||||
|
|
||||||
// Check localStorage first
|
|
||||||
const storedLocale = localStorage.getItem('locale');
|
|
||||||
if (storedLocale) return storedLocale;
|
|
||||||
|
|
||||||
// Get browser locale and normalize it
|
|
||||||
const browserLocale = window.navigator.language;
|
|
||||||
const normalizedLocale = browserLocale.split('-')[0].toLowerCase();
|
|
||||||
|
|
||||||
// Check if we support this locale
|
|
||||||
const supportedLocales = ['en', 'nl', 'es', 'de'];
|
|
||||||
return supportedLocales.includes(normalizedLocale) ? normalizedLocale : defaultLocale;
|
|
||||||
};
|
|
||||||
|
|
||||||
init({
|
init({
|
||||||
fallbackLocale: defaultLocale,
|
fallbackLocale: defaultLocale,
|
||||||
initialLocale: getInitialLocale()
|
initialLocale: browser
|
||||||
|
? browser && localStorage.getItem('locale')
|
||||||
|
? localStorage.getItem('locale')
|
||||||
|
: window.navigator.language.slice(0, 2)
|
||||||
|
: defaultLocale
|
||||||
});
|
});
|
||||||
|
|
|
@ -57,8 +57,7 @@
|
||||||
"showAll": "Alle anzeigen",
|
"showAll": "Alle anzeigen",
|
||||||
"hideAll": "Alles ausblenden",
|
"hideAll": "Alles ausblenden",
|
||||||
"flOffWhenDark": "Displaybeleuchtung aus, wenn es dunkel ist",
|
"flOffWhenDark": "Displaybeleuchtung aus, wenn es dunkel ist",
|
||||||
"luxLightToggleText": "Zum Deaktivieren auf 0 setzen",
|
"luxLightToggleText": "Zum Deaktivieren auf 0 setzen"
|
||||||
"verticalDesc": "Vrtikale Bildschirmbeschreibung"
|
|
||||||
},
|
},
|
||||||
"control": {
|
"control": {
|
||||||
"systemInfo": "Systeminfo",
|
"systemInfo": "Systeminfo",
|
||||||
|
|
|
@ -44,9 +44,6 @@
|
||||||
"useNostr": "Use Nostr data source",
|
"useNostr": "Use Nostr data source",
|
||||||
"bitaxeHostname": "BitAxe hostname or IP",
|
"bitaxeHostname": "BitAxe hostname or IP",
|
||||||
"bitaxeEnabled": "Enable BitAxe",
|
"bitaxeEnabled": "Enable BitAxe",
|
||||||
"miningPoolStats": "Enable Mining Pool Stats",
|
|
||||||
"miningPoolName": "Mining Pool",
|
|
||||||
"miningPoolUser": "Mining Pool username or api key",
|
|
||||||
"nostrZapPubkey": "Nostr Zap pubkey",
|
"nostrZapPubkey": "Nostr Zap pubkey",
|
||||||
"invalidNostrPubkey": "Invalid Nostr pubkey, note that your pubkey does NOT start with npub.",
|
"invalidNostrPubkey": "Invalid Nostr pubkey, note that your pubkey does NOT start with npub.",
|
||||||
"convertingValidNpub": "Converting valid npub to pubkey",
|
"convertingValidNpub": "Converting valid npub to pubkey",
|
||||||
|
@ -72,8 +69,7 @@
|
||||||
"showAll": "Show all",
|
"showAll": "Show all",
|
||||||
"hideAll": "Hide all",
|
"hideAll": "Hide all",
|
||||||
"flOffWhenDark": "Frontlight off when dark",
|
"flOffWhenDark": "Frontlight off when dark",
|
||||||
"luxLightToggleText": "Set to 0 to disable",
|
"luxLightToggleText": "Set to 0 to disable"
|
||||||
"verticalDesc": "Use vertical screen description"
|
|
||||||
},
|
},
|
||||||
"control": {
|
"control": {
|
||||||
"systemInfo": "System info",
|
"systemInfo": "System info",
|
||||||
|
|
|
@ -56,8 +56,7 @@
|
||||||
"showAll": "Mostrar todo",
|
"showAll": "Mostrar todo",
|
||||||
"hideAll": "Ocultar todo",
|
"hideAll": "Ocultar todo",
|
||||||
"flOffWhenDark": "Luz de la pantalla cuando está oscuro",
|
"flOffWhenDark": "Luz de la pantalla cuando está oscuro",
|
||||||
"luxLightToggleText": "Establecer en 0 para desactivar",
|
"luxLightToggleText": "Establecer en 0 para desactivar"
|
||||||
"verticalDesc": "Descripción de pantalla vertical"
|
|
||||||
},
|
},
|
||||||
"control": {
|
"control": {
|
||||||
"turnOff": "Apagar",
|
"turnOff": "Apagar",
|
||||||
|
|
|
@ -57,8 +57,7 @@
|
||||||
"showAll": "Toon alles",
|
"showAll": "Toon alles",
|
||||||
"hideAll": "Alles verbergen",
|
"hideAll": "Alles verbergen",
|
||||||
"flOffWhenDark": "Displaylicht uit als het donker is",
|
"flOffWhenDark": "Displaylicht uit als het donker is",
|
||||||
"luxLightToggleText": "Stel in op 0 om uit te schakelen",
|
"luxLightToggleText": "Stel in op 0 om uit te schakelen"
|
||||||
"verticalDesc": "Verticale schermbeschrijving"
|
|
||||||
},
|
},
|
||||||
"control": {
|
"control": {
|
||||||
"systemInfo": "Systeeminformatie",
|
"systemInfo": "Systeeminformatie",
|
||||||
|
|
|
@ -1,23 +1,11 @@
|
||||||
@use '@fontsource/ubuntu/scss/mixins' as Ubuntu;
|
|
||||||
@use '@fontsource/antonio/scss/mixins' as Antonio;
|
|
||||||
|
|
||||||
@import '../node_modules/bootstrap/scss/functions';
|
@import '../node_modules/bootstrap/scss/functions';
|
||||||
|
@import '../node_modules/bootstrap/scss/variables';
|
||||||
|
@import '../node_modules/bootstrap/scss/variables-dark';
|
||||||
|
|
||||||
//@import "@fontsource/antonio/latin-400.css";
|
//@import "@fontsource/antonio/latin-400.css";
|
||||||
|
@import '@fontsource/ubuntu/latin-400.css';
|
||||||
@include Ubuntu.faces(
|
//@import '@fontsource/oswald/latin-400.css';
|
||||||
$subsets: latin,
|
@import '@fontsource/antonio/latin-400.css';
|
||||||
$weights: 400,
|
|
||||||
$formats: 'woff2',
|
|
||||||
$directory: '@fontsource/ubuntu/files'
|
|
||||||
);
|
|
||||||
|
|
||||||
@include Antonio.faces(
|
|
||||||
$subsets: latin,
|
|
||||||
$weights: 400,
|
|
||||||
$formats: 'woff2',
|
|
||||||
$directory: '@fontsource/antonio/files'
|
|
||||||
);
|
|
||||||
|
|
||||||
@import './satsymbol';
|
@import './satsymbol';
|
||||||
|
|
||||||
|
@ -26,8 +14,6 @@ $font-family-base: 'Ubuntu';
|
||||||
$font-size-base: 0.9rem;
|
$font-size-base: 0.9rem;
|
||||||
$input-font-size-sm: $font-size-base * 0.875;
|
$input-font-size-sm: $font-size-base * 0.875;
|
||||||
|
|
||||||
@import '../node_modules/bootstrap/scss/variables';
|
|
||||||
@import '../node_modules/bootstrap/scss/variables-dark';
|
|
||||||
// $border-radius: .675rem;
|
// $border-radius: .675rem;
|
||||||
|
|
||||||
@import '../node_modules/bootstrap/scss/mixins';
|
@import '../node_modules/bootstrap/scss/mixins';
|
||||||
|
@ -57,40 +43,6 @@ $input-font-size-sm: $font-size-base * 0.875;
|
||||||
@import '../node_modules/bootstrap/scss/helpers';
|
@import '../node_modules/bootstrap/scss/helpers';
|
||||||
@import '../node_modules/bootstrap/scss/utilities/api';
|
@import '../node_modules/bootstrap/scss/utilities/api';
|
||||||
|
|
||||||
/* Default state (xs) - sticky */
|
|
||||||
.sticky-xs-top {
|
|
||||||
position: sticky;
|
|
||||||
top: 0;
|
|
||||||
z-index: 1020;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (max-width: 576px) {
|
|
||||||
main {
|
|
||||||
margin-top: 25px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Remove sticky behavior for larger screens */
|
|
||||||
@media (min-width: 576px) {
|
|
||||||
.sticky-xs-top {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@include color-mode(dark) {
|
|
||||||
.navbar {
|
|
||||||
--bs-navbar-color: $light;
|
|
||||||
background-color: $dark;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@include color-mode(light) {
|
|
||||||
.navbar {
|
|
||||||
--bs-navbar-color: $dark;
|
|
||||||
background-color: $light;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
nav {
|
nav {
|
||||||
margin-bottom: 15px;
|
margin-bottom: 15px;
|
||||||
}
|
}
|
||||||
|
@ -101,23 +53,6 @@ nav {
|
||||||
|
|
||||||
.btn-group-sm .btn {
|
.btn-group-sm .btn {
|
||||||
font-size: 0.8rem;
|
font-size: 0.8rem;
|
||||||
// text-overflow: ellipsis;
|
|
||||||
// white-space: nowrap;
|
|
||||||
// overflow: hidden;
|
|
||||||
// width: 4rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-group-sm {
|
|
||||||
display: flex !important;
|
|
||||||
flex-wrap: wrap !important;
|
|
||||||
gap: 0.25rem !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Remove the border radius override that Bootstrap applies */
|
|
||||||
.btn-group-sm > .btn {
|
|
||||||
border-radius: 0.25rem !important;
|
|
||||||
margin: 0 !important;
|
|
||||||
position: relative !important;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#customText {
|
#customText {
|
||||||
|
@ -128,7 +63,7 @@ nav {
|
||||||
.btclock {
|
.btclock {
|
||||||
background: #000;
|
background: #000;
|
||||||
display: flex;
|
display: flex;
|
||||||
font-size: calc(2vw + 2vh);
|
font-size: calc(3vw + 3vh);
|
||||||
font-family: 'Antonio', sans-serif;
|
font-family: 'Antonio', sans-serif;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
|
@ -169,25 +104,19 @@ nav {
|
||||||
flex-direction: column; /* Stack the text and line vertically */
|
flex-direction: column; /* Stack the text and line vertically */
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: space-around; /* Distribute items with space between */
|
justify-content: space-around; /* Distribute items with space between */
|
||||||
padding: 5px;
|
padding: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.verticalDesc > .splitText:first-child {
|
.splitText div:first-child::after {
|
||||||
.textcontainer {
|
|
||||||
transform: rotate(-90deg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.splitText .textcontainer :first-child::after {
|
|
||||||
display: block;
|
display: block;
|
||||||
content: '';
|
content: '';
|
||||||
margin-top: 0px;
|
margin-top: 0px;
|
||||||
border-bottom: 2px solid;
|
border-bottom: 2px solid;
|
||||||
// margin-bottom: 3px;
|
margin-bottom: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.splitText {
|
.splitText {
|
||||||
font-size: calc(0.3vw + 1vh);
|
font-size: calc(0.5vw + 1vh);
|
||||||
|
|
||||||
.top-text,
|
.top-text,
|
||||||
.bottom-text {
|
.bottom-text {
|
||||||
|
@ -313,7 +242,3 @@ nav {
|
||||||
input[type='number'] {
|
input[type='number'] {
|
||||||
text-align: right;
|
text-align: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
.lightMode .bitaxelogo {
|
|
||||||
filter: brightness(0) saturate(100%);
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Satoshi Symbol';
|
font-family: 'Satoshi Symbol';
|
||||||
src: url('/fonts/Satoshi_Symbol.woff2') format('woff2');
|
src:
|
||||||
|
url('/fonts/Satoshi_Symbol.woff2') format('woff2'),
|
||||||
|
url('/fonts/Satoshi_Symbol.woff') format('woff');
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-display: swap;
|
font-display: swap;
|
||||||
|
|
|
@ -12,12 +12,10 @@
|
||||||
NavbarBrand,
|
NavbarBrand,
|
||||||
NavbarToggler
|
NavbarToggler
|
||||||
} from '@sveltestrap/sveltestrap';
|
} from '@sveltestrap/sveltestrap';
|
||||||
import { _ } from 'svelte-i18n';
|
|
||||||
|
|
||||||
import { page } from '$app/stores';
|
import { page } from '$app/stores';
|
||||||
import { locale, locales, isLoading } from 'svelte-i18n';
|
import { locale, locales, isLoading } from 'svelte-i18n';
|
||||||
import { ColorSchemeSwitcher } from '$lib/components';
|
import ColorSchemeSwitcher from '../components/ColorSchemeSwitcher.svelte';
|
||||||
import { derived } from 'svelte/store';
|
|
||||||
|
|
||||||
export const setLocale = (lang: string) => () => {
|
export const setLocale = (lang: string) => () => {
|
||||||
locale.set(lang);
|
locale.set(lang);
|
||||||
|
@ -40,20 +38,19 @@
|
||||||
return flagMap[lowercaseCode];
|
return flagMap[lowercaseCode];
|
||||||
} else {
|
} else {
|
||||||
// Return null for unsupported language codes
|
// Return null for unsupported language codes
|
||||||
return flagMap['en'];
|
return null;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
let languageNames = {};
|
let languageNames = {};
|
||||||
|
|
||||||
const currentLocale = derived(locale, ($locale) => $locale || 'en');
|
|
||||||
|
|
||||||
locale.subscribe(() => {
|
locale.subscribe(() => {
|
||||||
const localeToUse = $locale || 'en';
|
if ($locale) {
|
||||||
let newLanguageNames = new Intl.DisplayNames([localeToUse], { type: 'language' });
|
let newLanguageNames = new Intl.DisplayNames([$locale], { type: 'language' });
|
||||||
|
|
||||||
for (let l of $locales) {
|
for (let l of $locales) {
|
||||||
languageNames[l] = newLanguageNames.of(l) || l;
|
languageNames[l] = newLanguageNames.of(l);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -64,23 +61,8 @@
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<Navbar expand="md" sticky="xs-top" theme="auto">
|
<Navbar expand="md">
|
||||||
<NavbarBrand class="d-none d-sm-block">₿TClock</NavbarBrand>
|
<NavbarBrand>₿TClock</NavbarBrand>
|
||||||
<Nav class="d-md-none" pills>
|
|
||||||
<NavItem>
|
|
||||||
<NavLink href="#control" active>{$_('section.control.title', { default: 'Control' })}</NavLink
|
|
||||||
>
|
|
||||||
</NavItem>
|
|
||||||
<NavItem>
|
|
||||||
<NavLink href="#status">{$_('section.status.title', { default: 'Status' })}</NavLink>
|
|
||||||
</NavItem>
|
|
||||||
<NavItem>
|
|
||||||
<NavLink class="nav-link" href="#settings"
|
|
||||||
>{$_('section.settings.title', { default: 'Settings' })}</NavLink
|
|
||||||
>
|
|
||||||
</NavItem>
|
|
||||||
</Nav>
|
|
||||||
|
|
||||||
<NavbarToggler on:click={toggle} />
|
<NavbarToggler on:click={toggle} />
|
||||||
|
|
||||||
<Collapse {isOpen} navbar expand="sm">
|
<Collapse {isOpen} navbar expand="sm">
|
||||||
|
@ -97,10 +79,7 @@
|
||||||
</Nav>
|
</Nav>
|
||||||
{#if !$isLoading}
|
{#if !$isLoading}
|
||||||
<Dropdown id="nav-language-dropdown" inNavbar class="me-3">
|
<Dropdown id="nav-language-dropdown" inNavbar class="me-3">
|
||||||
<DropdownToggle nav caret
|
<DropdownToggle nav caret>{getFlagEmoji($locale)} {languageNames[$locale]}</DropdownToggle>
|
||||||
>{getFlagEmoji($currentLocale)}
|
|
||||||
{languageNames[$currentLocale] || 'English'}</DropdownToggle
|
|
||||||
>
|
|
||||||
<DropdownMenu end>
|
<DropdownMenu end>
|
||||||
{#each $locales as locale}
|
{#each $locales as locale}
|
||||||
<DropdownItem on:click={setLocale(locale)}
|
<DropdownItem on:click={setLocale(locale)}
|
||||||
|
@ -115,6 +94,4 @@
|
||||||
</Navbar>
|
</Navbar>
|
||||||
|
|
||||||
<!-- +layout.svelte -->
|
<!-- +layout.svelte -->
|
||||||
<main>
|
|
||||||
<slot />
|
<slot />
|
||||||
</main>
|
|
||||||
|
|
|
@ -6,15 +6,10 @@ import { locale, waitLocale } from 'svelte-i18n';
|
||||||
import type { LayoutLoad } from './$types';
|
import type { LayoutLoad } from './$types';
|
||||||
|
|
||||||
export const load: LayoutLoad = async () => {
|
export const load: LayoutLoad = async () => {
|
||||||
if (browser) {
|
if (browser && localStorage.getItem('locale')) {
|
||||||
if (localStorage.getItem('locale')) {
|
|
||||||
locale.set(localStorage.getItem('locale'));
|
locale.set(localStorage.getItem('locale'));
|
||||||
} else {
|
} else if (browser) {
|
||||||
// Normalize the browser locale
|
locale.set(window.navigator.language);
|
||||||
const browserLocale = window.navigator.language.split('-')[0].toLowerCase();
|
|
||||||
const supportedLocales = ['en', 'nl', 'es', 'de'];
|
|
||||||
locale.set(supportedLocales.includes(browserLocale) ? browserLocale : 'en');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
await waitLocale();
|
await waitLocale();
|
||||||
};
|
};
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
import { screenSize, updateScreenSize } from '$lib/screen';
|
import { screenSize, updateScreenSize } from '$lib/screen';
|
||||||
|
|
||||||
import { Container, Row, Toast, ToastBody } from '@sveltestrap/sveltestrap';
|
import { Container, Row, Toast, ToastBody } from '@sveltestrap/sveltestrap';
|
||||||
import { replaceState } from '$app/navigation';
|
|
||||||
|
|
||||||
import { onMount } from 'svelte';
|
import { onMount } from 'svelte';
|
||||||
import { writable } from 'svelte/store';
|
import { writable } from 'svelte/store';
|
||||||
|
@ -17,6 +16,12 @@
|
||||||
bgColor: '0'
|
bgColor: '0'
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// let uiSettings = writable({
|
||||||
|
// inputSize: 'sm',
|
||||||
|
// selectClass: '',
|
||||||
|
// btnSize: 'lg'
|
||||||
|
// });
|
||||||
|
|
||||||
let status = writable({
|
let status = writable({
|
||||||
data: ['L', 'O', 'A', 'D', 'I', 'N', 'G'],
|
data: ['L', 'O', 'A', 'D', 'I', 'N', 'G'],
|
||||||
espFreeHeap: 0,
|
espFreeHeap: 0,
|
||||||
|
@ -55,43 +60,7 @@
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
let sections: (HTMLElement | null)[];
|
|
||||||
let observer: IntersectionObserver;
|
|
||||||
const SM_BREAKPOINT = 576;
|
|
||||||
|
|
||||||
const setupObserver = () => {
|
|
||||||
if (window.innerWidth < SM_BREAKPOINT) {
|
|
||||||
observer = new IntersectionObserver(
|
|
||||||
(entries) => {
|
|
||||||
entries.forEach((entry) => {
|
|
||||||
if (entry.isIntersecting) {
|
|
||||||
const id = entry.target.id;
|
|
||||||
replaceState(`#${id}`);
|
|
||||||
|
|
||||||
// Update nav pills
|
|
||||||
document.querySelectorAll('.nav-link').forEach((link) => {
|
|
||||||
link.classList.remove('active');
|
|
||||||
if (link.getAttribute('href') === `#${id}`) {
|
|
||||||
link.classList.add('active');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
{
|
|
||||||
threshold: 0.25 // Trigger when section is 50% visible
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
sections = ['control', 'status', 'settings'].map((id) => document.getElementById(id));
|
|
||||||
|
|
||||||
sections.forEach((section) => observer.observe(section!));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
onMount(() => {
|
onMount(() => {
|
||||||
setupObserver();
|
|
||||||
|
|
||||||
fetchSettingsData();
|
fetchSettingsData();
|
||||||
fetchStatusData();
|
fetchStatusData();
|
||||||
|
|
||||||
|
@ -103,11 +72,6 @@
|
||||||
});
|
});
|
||||||
|
|
||||||
function handleResize() {
|
function handleResize() {
|
||||||
if (observer) {
|
|
||||||
observer.disconnect();
|
|
||||||
}
|
|
||||||
setupObserver();
|
|
||||||
|
|
||||||
updateScreenSize();
|
updateScreenSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -161,9 +125,7 @@
|
||||||
<Container fluid>
|
<Container fluid>
|
||||||
<Row>
|
<Row>
|
||||||
<Control bind:settings on:showToast={showToast} bind:status lg="3" xxl="4"></Control>
|
<Control bind:settings on:showToast={showToast} bind:status lg="3" xxl="4"></Control>
|
||||||
|
|
||||||
<Status bind:settings bind:status lg="6" xxl="4"></Status>
|
<Status bind:settings bind:status lg="6" xxl="4"></Status>
|
||||||
|
|
||||||
<Settings bind:settings on:showToast={showToast} on:formReset={fetchSettingsData} lg="3" xxl="4"
|
<Settings bind:settings on:showToast={showToast} on:formReset={fetchSettingsData} lg="3" xxl="4"
|
||||||
></Settings>
|
></Settings>
|
||||||
</Row>
|
</Row>
|
||||||
|
|
|
@ -105,8 +105,8 @@
|
||||||
export let xxl = xl;
|
export let xxl = xl;
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<Col {xs} {sm} {md} {lg} {xl} {xxl} class="mb-4 mb-xl-0">
|
<Col {xs} {sm} {md} {lg} {xl} {xxl}>
|
||||||
<Card id="control">
|
<Card>
|
||||||
<CardHeader>
|
<CardHeader>
|
||||||
<CardTitle>{$_('section.control.title', { default: 'Control' })}</CardTitle>
|
<CardTitle>{$_('section.control.title', { default: 'Control' })}</CardTitle>
|
||||||
</CardHeader>
|
</CardHeader>
|
||||||
|
|
|
@ -200,7 +200,7 @@
|
||||||
<p>Loading...</p>
|
<p>Loading...</p>
|
||||||
{/if}
|
{/if}
|
||||||
<section class="row row-cols-lg-auto align-items-end">
|
<section class="row row-cols-lg-auto align-items-end">
|
||||||
<div class="col flex-fill">
|
<div class="col-12">
|
||||||
<label for="firmwareFile" class="form-label">Firmware file ({getFirmwareBinaryName()})</label>
|
<label for="firmwareFile" class="form-label">Firmware file ({getFirmwareBinaryName()})</label>
|
||||||
<input
|
<input
|
||||||
type="file"
|
type="file"
|
||||||
|
@ -216,7 +216,7 @@
|
||||||
>Update firmware</Button
|
>Update firmware</Button
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
<div class="col flex-fill">
|
<div class="col mt-2">
|
||||||
<label for="webuiFile" class="form-label">WebUI file (littlefs.bin)</label>
|
<label for="webuiFile" class="form-label">WebUI file (littlefs.bin)</label>
|
||||||
<input
|
<input
|
||||||
type="file"
|
type="file"
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
export let className = 'btclock-wrapper';
|
export let className = 'btclock-wrapper';
|
||||||
export let verticalDesc = false;
|
|
||||||
// Define the currency symbols as constants
|
// Define the currency symbols as constants
|
||||||
const CURRENCY_USD = '$';
|
const CURRENCY_USD = '$';
|
||||||
const CURRENCY_EUR = '[';
|
const CURRENCY_EUR = '[';
|
||||||
|
@ -44,22 +44,21 @@
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class={className} id={className}>
|
<div class={className} id={className}>
|
||||||
<div class={'btclock' + (verticalDesc ? ' verticalDesc' : '')}>
|
<div class="btclock">
|
||||||
{#each status.data as char}
|
{#each status.data as char}
|
||||||
{#if isSplitText(char)}
|
{#if isSplitText(char)}
|
||||||
<div class="splitText">
|
<div class="splitText">
|
||||||
<div class="textcontainer">
|
|
||||||
{#if char.split('/').length}
|
{#if char.split('/').length}
|
||||||
<span class="top-text">{char.split('/')[0]}</span>
|
<span class="top-text">{char.split('/')[0]}</span>
|
||||||
|
<hr />
|
||||||
<span class="bottom-text">{char.split('/')[1]}</span>
|
<span class="bottom-text">{char.split('/')[1]}</span>
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
|
||||||
<!-- {#each char.split('/') as part}
|
<!-- {#each char.split('/') as part}
|
||||||
<div class="flex-items">{part}</div>
|
<div class="flex-items">{part}</div>
|
||||||
{/each} -->
|
{/each} -->
|
||||||
</div>
|
</div>
|
||||||
{:else if char.startsWith('mdi')}
|
{:else if char.startsWith('mdi')}
|
||||||
<div class={'digit icon' + (char.endsWith('bitaxe') ? ' icon-img' : '')}>
|
<div class="digit icon">
|
||||||
{#if char.endsWith('rocket')}
|
{#if char.endsWith('rocket')}
|
||||||
<RocketIcon></RocketIcon>
|
<RocketIcon></RocketIcon>
|
||||||
{/if}
|
{/if}
|
||||||
|
@ -69,12 +68,6 @@
|
||||||
{#if char.endsWith('bolt')}
|
{#if char.endsWith('bolt')}
|
||||||
<ZapIcon></ZapIcon>
|
<ZapIcon></ZapIcon>
|
||||||
{/if}
|
{/if}
|
||||||
{#if char.endsWith('bitaxe')}
|
|
||||||
<img src="/bitaxe.webp" class="bitaxelogo" alt="BitAxe logo" />
|
|
||||||
{/if}
|
|
||||||
{#if char.endsWith('miningpool')}
|
|
||||||
<span class="pool-logo">Mining Pool Logo</span>
|
|
||||||
{/if}
|
|
||||||
</div>
|
</div>
|
||||||
{:else if char === 'STS'}
|
{:else if char === 'STS'}
|
||||||
<div class="digit sats">S</div>
|
<div class="digit sats">S</div>
|
||||||
|
@ -89,26 +82,8 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<style lang="scss">
|
<style>
|
||||||
.icon {
|
.icon {
|
||||||
fill: currentColor;
|
fill: currentColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btclock-wrapper .btclock .icon.icon-img {
|
|
||||||
// padding: 0 15px;
|
|
||||||
aspect-ratio: 1;
|
|
||||||
width: calc(100 / 7);
|
|
||||||
|
|
||||||
img {
|
|
||||||
max-width: 95%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.bitaxelogo {
|
|
||||||
transform: rotate(-90deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.pool-logo {
|
|
||||||
font-size: 0.75rem;
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -104,8 +104,8 @@
|
||||||
export let xxl = xl;
|
export let xxl = xl;
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<Col {xs} {sm} {md} {lg} {xl} {xxl} class="mb-4 mb-xl-0">
|
<Col {xs} {sm} {md} {lg} {xl} {xxl}>
|
||||||
<Card id="status">
|
<Card>
|
||||||
<CardHeader>
|
<CardHeader>
|
||||||
<CardTitle>{$_('section.status.title', { default: 'Status' })}</CardTitle>
|
<CardTitle>{$_('section.status.title', { default: 'Status' })}</CardTitle>
|
||||||
</CardHeader>
|
</CardHeader>
|
||||||
|
@ -151,11 +151,7 @@
|
||||||
<hr />
|
<hr />
|
||||||
{#if $status.data}
|
{#if $status.data}
|
||||||
<section class={lightMode ? 'lightMode' : 'darkMode'}>
|
<section class={lightMode ? 'lightMode' : 'darkMode'}>
|
||||||
<Rendered
|
<Rendered status={$status} className="btclock-wrapper"></Rendered>
|
||||||
status={$status}
|
|
||||||
className="btclock-wrapper"
|
|
||||||
verticalDesc={$settings.verticalDesc}
|
|
||||||
></Rendered>
|
|
||||||
</section>
|
</section>
|
||||||
{$_('section.status.screenCycle')}:
|
{$_('section.status.screenCycle')}:
|
||||||
<a
|
<a
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 2.4 KiB |
BIN
static/fonts/Satoshi_Symbol.woff
Normal file
BIN
static/fonts/Satoshi_Symbol.woff
Normal file
Binary file not shown.
|
@ -1,132 +0,0 @@
|
||||||
import { test, expect } from '@playwright/test';
|
|
||||||
|
|
||||||
import { initMock, settingsJson, statusJson } from '../shared';
|
|
||||||
|
|
||||||
test.beforeEach(initMock);
|
|
||||||
|
|
||||||
// Define the translations for the headings
|
|
||||||
const headings = {
|
|
||||||
en: {
|
|
||||||
control: 'Control',
|
|
||||||
status: 'Status',
|
|
||||||
settings: 'Settings',
|
|
||||||
language: 'English'
|
|
||||||
},
|
|
||||||
de: {
|
|
||||||
control: 'Steuerung',
|
|
||||||
status: 'Status',
|
|
||||||
settings: 'Einstellungen',
|
|
||||||
language: 'Deutsch'
|
|
||||||
},
|
|
||||||
nl: {
|
|
||||||
control: 'Besturing',
|
|
||||||
status: 'Status',
|
|
||||||
settings: 'Instellingen',
|
|
||||||
language: 'Nederlands'
|
|
||||||
},
|
|
||||||
es: {
|
|
||||||
control: 'Control',
|
|
||||||
status: 'Estado',
|
|
||||||
settings: 'Ajustes',
|
|
||||||
language: 'Español'
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
test('capture screenshots across devices', async ({ page }, testInfo) => {
|
|
||||||
// Get the locale from the browser or default to 'en'
|
|
||||||
const locale = testInfo.project.use?.locale?.split('-')[0].toLowerCase() || 'en';
|
|
||||||
const translations = headings[locale] || headings.en;
|
|
||||||
|
|
||||||
await page.goto('/');
|
|
||||||
await expect(page.getByRole('heading', { name: translations.control })).toBeVisible();
|
|
||||||
await expect(page.getByRole('heading', { name: translations.status })).toBeVisible();
|
|
||||||
await expect(page.getByRole('heading', { name: translations.settings })).toBeVisible();
|
|
||||||
|
|
||||||
if (await page.locator('#nav-language-dropdown').isVisible()) {
|
|
||||||
await expect(page.getByRole('link', { name: translations.language })).toBeVisible();
|
|
||||||
}
|
|
||||||
|
|
||||||
const screenshot = await page.screenshot({
|
|
||||||
path: `./test-results/screenshots/default-${test.info().project.name.toLowerCase().replace(' ', '_')}.png`
|
|
||||||
});
|
|
||||||
|
|
||||||
await testInfo.attach(`default`, {
|
|
||||||
body: screenshot,
|
|
||||||
contentType: 'image/png'
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
test('capture screenshots across devices with bitaxe screens', async ({ page }, testInfo) => {
|
|
||||||
const locale = testInfo.project.use?.locale?.split('-')[0].toLowerCase() || 'en';
|
|
||||||
const translations = headings[locale] || headings.en;
|
|
||||||
|
|
||||||
settingsJson.screens = [
|
|
||||||
{
|
|
||||||
id: 0,
|
|
||||||
name: 'Block Height',
|
|
||||||
enabled: true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 3,
|
|
||||||
name: 'Time',
|
|
||||||
enabled: true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 4,
|
|
||||||
name: 'Halving countdown',
|
|
||||||
enabled: true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 6,
|
|
||||||
name: 'Block Fee Rate',
|
|
||||||
enabled: true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 10,
|
|
||||||
name: 'Sats per dollar',
|
|
||||||
enabled: true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 20,
|
|
||||||
name: 'Ticker',
|
|
||||||
enabled: true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 30,
|
|
||||||
name: 'Market Cap',
|
|
||||||
enabled: true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 80,
|
|
||||||
name: 'BitAxe Hashrate',
|
|
||||||
enabled: true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 81,
|
|
||||||
name: 'BitAxe Best Difficulty',
|
|
||||||
enabled: true
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
statusJson.data = ['mdi:bitaxe', '', 'mdi:pickaxe', '6', '3', '7', 'GH/S'];
|
|
||||||
statusJson.rendered = ['mdi:bitaxe', '', 'mdi:pickaxe', '6', '3', '7', 'GH/S'];
|
|
||||||
|
|
||||||
await page.goto('/');
|
|
||||||
|
|
||||||
await expect(page.getByRole('heading', { name: translations.control })).toBeVisible();
|
|
||||||
await expect(page.getByRole('heading', { name: translations.status })).toBeVisible();
|
|
||||||
await expect(page.getByRole('heading', { name: translations.settings })).toBeVisible();
|
|
||||||
|
|
||||||
if (await page.locator('#nav-language-dropdown').isVisible()) {
|
|
||||||
await expect(page.getByRole('link', { name: translations.language })).toBeVisible();
|
|
||||||
}
|
|
||||||
|
|
||||||
await page.screenshot({
|
|
||||||
path: `./test-results/screenshots/bitaxe-${test.info().project.name.toLowerCase().replace(' ', '_')}.png`
|
|
||||||
});
|
|
||||||
|
|
||||||
await testInfo.attach(`bitaxe`, {
|
|
||||||
path: `./test-results/screenshots/bitaxe-${test.info().project.name.toLowerCase().replace(' ', '_')}.png`,
|
|
||||||
contentType: 'image/png'
|
|
||||||
});
|
|
||||||
});
|
|
143
tests/shared.ts
143
tests/shared.ts
|
@ -1,143 +0,0 @@
|
||||||
export const statusJson = {
|
|
||||||
currentScreen: 0,
|
|
||||||
numScreens: 7,
|
|
||||||
timerRunning: true,
|
|
||||||
espUptime: 4479,
|
|
||||||
espFreeHeap: 58508,
|
|
||||||
espHeapSize: 342108,
|
|
||||||
connectionStatus: { price: true, blocks: true },
|
|
||||||
rssi: -66,
|
|
||||||
data: ['BLOCK/HEIGHT', '8', '1', '8', '0', '2', '6'],
|
|
||||||
rendered: ['BLOCK/HEIGHT', '8', '1', '8', '0', '2', '6'],
|
|
||||||
leds: [
|
|
||||||
{ red: 0, green: 0, blue: 0, hex: '#000000' },
|
|
||||||
{ red: 0, green: 0, blue: 0, hex: '#000000' },
|
|
||||||
{ red: 0, green: 0, blue: 0, hex: '#000000' },
|
|
||||||
{ red: 0, green: 0, blue: 0, hex: '#000000' }
|
|
||||||
]
|
|
||||||
};
|
|
||||||
|
|
||||||
export const settingsJson = {
|
|
||||||
numScreens: 7,
|
|
||||||
fgColor: 415029,
|
|
||||||
bgColor: 0,
|
|
||||||
timerSeconds: 1800,
|
|
||||||
timerRunning: true,
|
|
||||||
minSecPriceUpd: 30,
|
|
||||||
fullRefreshMin: 60,
|
|
||||||
wpTimeout: 600,
|
|
||||||
tzOffset: 0,
|
|
||||||
useBitcoinNode: false,
|
|
||||||
mempoolInstance: 'mempool.space',
|
|
||||||
ledTestOnPower: true,
|
|
||||||
ledFlashOnUpd: true,
|
|
||||||
ledBrightness: 128,
|
|
||||||
stealFocus: true,
|
|
||||||
mcapBigChar: true,
|
|
||||||
mdnsEnabled: true,
|
|
||||||
otaEnabled: true,
|
|
||||||
fetchEurPrice: false,
|
|
||||||
hostnamePrefix: 'btclock',
|
|
||||||
hostname: 'btclock-d60b14',
|
|
||||||
ip: '192.168.20.231',
|
|
||||||
txPower: 78,
|
|
||||||
gitRev: '25d8b92bcbc8938417c140355ea3ba99ff9eb4b7',
|
|
||||||
gitTag: '3.1.9',
|
|
||||||
bitaxeEnabled: false,
|
|
||||||
bitaxeHostname: 'bitaxe1',
|
|
||||||
miningPoolStats: false,
|
|
||||||
miningPoolName: 'ocean',
|
|
||||||
miningPoolUser: '38Qkkei3SuF1Eo45BaYmRHUneRD54yyTFy',
|
|
||||||
nostrZapNotify: true,
|
|
||||||
hwRev: 'REV_A_EPD_2_13',
|
|
||||||
fsRev: '4c5d9616212b27e3f05c35370f0befcf2c5a04b2',
|
|
||||||
nostrZapPubkey: 'b5127a08cf33616274800a4387881a9f98e04b9c37116e92de5250498635c422',
|
|
||||||
lastBuildTime: '1700666677',
|
|
||||||
screens: [
|
|
||||||
{
|
|
||||||
id: 0,
|
|
||||||
name: 'Block Height',
|
|
||||||
enabled: true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 3,
|
|
||||||
name: 'Time',
|
|
||||||
enabled: true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 4,
|
|
||||||
name: 'Halving countdown',
|
|
||||||
enabled: true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 6,
|
|
||||||
name: 'Block Fee Rate',
|
|
||||||
enabled: true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 10,
|
|
||||||
name: 'Sats per dollar',
|
|
||||||
enabled: true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 20,
|
|
||||||
name: 'Ticker',
|
|
||||||
enabled: true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 30,
|
|
||||||
name: 'Market Cap',
|
|
||||||
enabled: true
|
|
||||||
}
|
|
||||||
],
|
|
||||||
actCurrencies: ['USD', 'EUR'],
|
|
||||||
availableCurrencies: ['USD', 'EUR', 'GBP', 'JPY', 'AUD', 'CAD']
|
|
||||||
};
|
|
||||||
|
|
||||||
export const initMock = async ({ page }) => {
|
|
||||||
await page.route('*/**/api/status', async (route) => {
|
|
||||||
await route.fulfill({ json: statusJson });
|
|
||||||
});
|
|
||||||
|
|
||||||
await page.route('*/**/api/show/screen/1', async (route) => {
|
|
||||||
//if (route.request().url().includes('*/**/api/show/screen/1')) {
|
|
||||||
statusJson.currentScreen = 1;
|
|
||||||
statusJson.data = ['MSCW/TIME', ' ', ' ', '2', '6', '4', '4'];
|
|
||||||
statusJson.rendered = statusJson.data;
|
|
||||||
//}
|
|
||||||
|
|
||||||
await route.fulfill({ json: statusJson });
|
|
||||||
});
|
|
||||||
|
|
||||||
await page.route('*/**/api/show/screen/2', async (route) => {
|
|
||||||
statusJson.currentScreen = 2;
|
|
||||||
statusJson.data = ['BTC/USD', '$', '3', '7', '8', '2', '4'];
|
|
||||||
statusJson.rendered = statusJson.data;
|
|
||||||
|
|
||||||
await route.fulfill({ json: statusJson });
|
|
||||||
});
|
|
||||||
|
|
||||||
await page.route('*/**/api/show/screen/4', async (route) => {
|
|
||||||
statusJson.currentScreen = 4;
|
|
||||||
statusJson.data = ['BIT/COIN', 'HALV/ING', '0/YRS', '149/DAYS', '8/HRS', '30/MINS', 'TO/GO'];
|
|
||||||
statusJson.rendered = statusJson.data;
|
|
||||||
|
|
||||||
await route.fulfill({ json: statusJson });
|
|
||||||
});
|
|
||||||
|
|
||||||
await page.route('*/**/api/settings', async (route) => {
|
|
||||||
await route.fulfill({ json: settingsJson });
|
|
||||||
});
|
|
||||||
|
|
||||||
await page.route('**/events', (route) => {
|
|
||||||
const newStatus = statusJson;
|
|
||||||
newStatus.data = ['BLOCK/HEIGHT', '8', '0', '0', '8', '1', '5'];
|
|
||||||
|
|
||||||
// Respond with a custom SSE message
|
|
||||||
route.fulfill({
|
|
||||||
status: 200,
|
|
||||||
contentType: 'text/event-stream',
|
|
||||||
json: `${JSON.stringify(newStatus)}\n\n`
|
|
||||||
});
|
|
||||||
});
|
|
||||||
};
|
|
|
@ -1,7 +1,114 @@
|
||||||
import { expect, test } from '@playwright/test';
|
import { expect, test } from '@playwright/test';
|
||||||
import { initMock, settingsJson, statusJson } from '../shared';
|
|
||||||
|
|
||||||
test.beforeEach(initMock);
|
const statusJson = {
|
||||||
|
currentScreen: 0,
|
||||||
|
numScreens: 7,
|
||||||
|
timerRunning: true,
|
||||||
|
espUptime: 4479,
|
||||||
|
espFreeHeap: 58508,
|
||||||
|
espHeapSize: 342108,
|
||||||
|
connectionStatus: { price: true, blocks: true },
|
||||||
|
rssi: -66,
|
||||||
|
data: ['BLOCK/HEIGHT', '8', '1', '8', '0', '2', '6'],
|
||||||
|
rendered: ['BLOCK/HEIGHT', '8', '1', '8', '0', '2', '6'],
|
||||||
|
leds: [
|
||||||
|
{ red: 0, green: 0, blue: 0, hex: '#000000' },
|
||||||
|
{ red: 0, green: 0, blue: 0, hex: '#000000' },
|
||||||
|
{ red: 0, green: 0, blue: 0, hex: '#000000' },
|
||||||
|
{ red: 0, green: 0, blue: 0, hex: '#000000' }
|
||||||
|
]
|
||||||
|
};
|
||||||
|
|
||||||
|
const settingsJson = {
|
||||||
|
numScreens: 7,
|
||||||
|
fgColor: 415029,
|
||||||
|
bgColor: 0,
|
||||||
|
timerSeconds: 1800,
|
||||||
|
timerRunning: true,
|
||||||
|
minSecPriceUpd: 30,
|
||||||
|
fullRefreshMin: 60,
|
||||||
|
wpTimeout: 600,
|
||||||
|
tzOffset: 0,
|
||||||
|
useBitcoinNode: false,
|
||||||
|
mempoolInstance: 'mempool.space',
|
||||||
|
ledTestOnPower: true,
|
||||||
|
ledFlashOnUpd: true,
|
||||||
|
ledBrightness: 128,
|
||||||
|
stealFocus: true,
|
||||||
|
mcapBigChar: true,
|
||||||
|
mdnsEnabled: true,
|
||||||
|
otaEnabled: true,
|
||||||
|
fetchEurPrice: false,
|
||||||
|
hostnamePrefix: 'btclock',
|
||||||
|
hostname: 'btclock-d60b14',
|
||||||
|
ip: '192.168.20.231',
|
||||||
|
txPower: 78,
|
||||||
|
gitRev: '25d8b92bcbc8938417c140355ea3ba99ff9eb4b7',
|
||||||
|
gitTag: '3.1.9',
|
||||||
|
bitaxeEnabled: false,
|
||||||
|
bitaxeHostname: 'bitaxe1',
|
||||||
|
nostrZapNotify: true,
|
||||||
|
hwRev: 'REV_A_EPD_2_13',
|
||||||
|
fsRev: '4c5d9616212b27e3f05c35370f0befcf2c5a04b2',
|
||||||
|
nostrZapPubkey: 'b5127a08cf33616274800a4387881a9f98e04b9c37116e92de5250498635c422',
|
||||||
|
lastBuildTime: '1700666677',
|
||||||
|
screens: [
|
||||||
|
{ id: 0, name: 'Block Height', enabled: true },
|
||||||
|
{ id: 1, name: 'Sats per dollar', enabled: true },
|
||||||
|
{ id: 2, name: 'Ticker', enabled: true },
|
||||||
|
{ id: 3, name: 'Time', enabled: true },
|
||||||
|
{ id: 4, name: 'Halving countdown', enabled: true },
|
||||||
|
{ id: 5, name: 'Market Cap', enabled: true }
|
||||||
|
]
|
||||||
|
};
|
||||||
|
|
||||||
|
test.beforeEach(async ({ page }) => {
|
||||||
|
await page.route('*/**/api/status', async (route) => {
|
||||||
|
await route.fulfill({ json: statusJson });
|
||||||
|
});
|
||||||
|
|
||||||
|
await page.route('*/**/api/show/screen/1', async (route) => {
|
||||||
|
//if (route.request().url().includes('*/**/api/show/screen/1')) {
|
||||||
|
statusJson.currentScreen = 1;
|
||||||
|
statusJson.data = ['MSCW/TIME', ' ', ' ', '2', '6', '4', '4'];
|
||||||
|
statusJson.rendered = statusJson.data;
|
||||||
|
//}
|
||||||
|
|
||||||
|
await route.fulfill({ json: statusJson });
|
||||||
|
});
|
||||||
|
|
||||||
|
await page.route('*/**/api/show/screen/2', async (route) => {
|
||||||
|
statusJson.currentScreen = 2;
|
||||||
|
statusJson.data = ['BTC/USD', '$', '3', '7', '8', '2', '4'];
|
||||||
|
statusJson.rendered = statusJson.data;
|
||||||
|
|
||||||
|
await route.fulfill({ json: statusJson });
|
||||||
|
});
|
||||||
|
|
||||||
|
await page.route('*/**/api/show/screen/4', async (route) => {
|
||||||
|
statusJson.currentScreen = 4;
|
||||||
|
statusJson.data = ['BIT/COIN', 'HALV/ING', '0/YRS', '149/DAYS', '8/HRS', '30/MINS', 'TO/GO'];
|
||||||
|
statusJson.rendered = statusJson.data;
|
||||||
|
|
||||||
|
await route.fulfill({ json: statusJson });
|
||||||
|
});
|
||||||
|
|
||||||
|
await page.route('*/**/api/settings', async (route) => {
|
||||||
|
await route.fulfill({ json: settingsJson });
|
||||||
|
});
|
||||||
|
|
||||||
|
await page.route('**/events', (route) => {
|
||||||
|
const newStatus = statusJson;
|
||||||
|
newStatus.data = ['BLOCK/HEIGHT', '8', '0', '0', '8', '1', '5'];
|
||||||
|
|
||||||
|
// Respond with a custom SSE message
|
||||||
|
route.fulfill({
|
||||||
|
status: 200,
|
||||||
|
contentType: 'text/event-stream',
|
||||||
|
json: `${JSON.stringify(newStatus)}\n\n`
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
test('index page has expected columns control, status, settings', async ({ page }) => {
|
test('index page has expected columns control, status, settings', async ({ page }) => {
|
||||||
await page.goto('/');
|
await page.goto('/');
|
||||||
|
@ -74,8 +181,6 @@ test('time values can not be zero or negative', async ({ page }) => {
|
||||||
});
|
});
|
||||||
|
|
||||||
test('info message when fetch eur price is enabled', async ({ page }) => {
|
test('info message when fetch eur price is enabled', async ({ page }) => {
|
||||||
delete (settingsJson as { actCurrencies?: string[] }).actCurrencies;
|
|
||||||
|
|
||||||
await page.goto('/');
|
await page.goto('/');
|
||||||
await page.getByRole('button', { name: 'Show all' }).click();
|
await page.getByRole('button', { name: 'Show all' }).click();
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
import { sveltekit } from '@sveltejs/kit/vite';
|
import { sveltekit } from '@sveltejs/kit/vite';
|
||||||
import { defineConfig } from 'vite';
|
import { defineConfig } from 'vitest/config';
|
||||||
import GithubActionsReporter from 'vitest-github-actions-reporter';
|
import GithubActionsReporter from 'vitest-github-actions-reporter';
|
||||||
// import { visualizer } from 'rollup-plugin-visualizer';
|
|
||||||
|
|
||||||
import * as fs from 'fs';
|
import * as fs from 'fs';
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
|
@ -66,34 +65,14 @@ export default defineConfig({
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// visualizer({
|
|
||||||
// emitFile: true,
|
|
||||||
// filename: "stats.html",
|
|
||||||
// })
|
|
||||||
],
|
],
|
||||||
build: {
|
build: {
|
||||||
minify: 'esbuild',
|
minify: true,
|
||||||
cssCodeSplit: false,
|
cssCodeSplit: false,
|
||||||
chunkSizeWarningLimit: 550,
|
|
||||||
rollupOptions: {
|
rollupOptions: {
|
||||||
output: {
|
output: {
|
||||||
// assetFileNames: '[hash][extname]',
|
manualChunks: () => 'app',
|
||||||
entryFileNames: `[hash][extname]`,
|
assetFileNames: '[name][extname]'
|
||||||
chunkFileNames: `[hash][extname]`,
|
|
||||||
assetFileNames: `[hash][extname]`,
|
|
||||||
preserveModules: false,
|
|
||||||
|
|
||||||
manualChunks: () => {
|
|
||||||
return 'app';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
css: {
|
|
||||||
preprocessorOptions: {
|
|
||||||
scss: {
|
|
||||||
quietDeps: true,
|
|
||||||
silenceDeprecations: ['import']
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -102,8 +81,5 @@ export default defineConfig({
|
||||||
globals: true,
|
globals: true,
|
||||||
environment: 'jsdom',
|
environment: 'jsdom',
|
||||||
reporters: process.env.GITHUB_ACTIONS ? ['default', new GithubActionsReporter()] : 'default'
|
reporters: process.env.GITHUB_ACTIONS ? ['default', new GithubActionsReporter()] : 'default'
|
||||||
},
|
|
||||||
define: {
|
|
||||||
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV)
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
286
yarn.lock
286
yarn.lock
|
@ -325,10 +325,10 @@
|
||||||
minimatch "^3.1.2"
|
minimatch "^3.1.2"
|
||||||
strip-json-comments "^3.1.1"
|
strip-json-comments "^3.1.1"
|
||||||
|
|
||||||
"@eslint/js@9.17.0":
|
"@eslint/js@9.16.0":
|
||||||
version "9.17.0"
|
version "9.16.0"
|
||||||
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.17.0.tgz#1523e586791f80376a6f8398a3964455ecc651ec"
|
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.16.0.tgz#3df2b2dd3b9163056616886c86e4082f45dbf3f4"
|
||||||
integrity sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==
|
integrity sha512-tw2HxzQkrbeuvyj1tG2Yqq+0H9wGoI2IMk4EOsQeX+vmd75FtJAzf+gTA69WF+baUKRYQ3x2kbLE08js5OsTVg==
|
||||||
|
|
||||||
"@eslint/object-schema@^2.1.5":
|
"@eslint/object-schema@^2.1.5":
|
||||||
version "2.1.5"
|
version "2.1.5"
|
||||||
|
@ -769,14 +769,14 @@
|
||||||
integrity sha512-MGJcesnJWj7FxDcB/GbrdYD3q24Uk0PIL4QIX149ku+hlJuj//nxUbb0HxUTpjkecWfHjVveSUnUaQWnPRXlpg==
|
integrity sha512-MGJcesnJWj7FxDcB/GbrdYD3q24Uk0PIL4QIX149ku+hlJuj//nxUbb0HxUTpjkecWfHjVveSUnUaQWnPRXlpg==
|
||||||
|
|
||||||
"@sveltejs/kit@^2.0.0":
|
"@sveltejs/kit@^2.0.0":
|
||||||
version "2.13.0"
|
version "2.8.5"
|
||||||
resolved "https://registry.yarnpkg.com/@sveltejs/kit/-/kit-2.13.0.tgz#46cf8fe302f059242363f09268702069387cfd58"
|
resolved "https://registry.yarnpkg.com/@sveltejs/kit/-/kit-2.8.5.tgz#6eb3617547619cf38b19fb2e00da6aa00d0a44c8"
|
||||||
integrity sha512-6t6ne00vZx/TjD6s0Jvwt8wRLKBwbSAN1nhlOzcLUSTYX1hTp4eCBaTPB5Yz/lu+tYcvz4YPEEuPv3yfsNp2gw==
|
integrity sha512-5ry1jPd4r9knsphDK2eTYUFPhFZMqF0PHFfa8MdMQCqWaKwLSXdFMU/Vevih1I7C1/VNB5MvTuFl1kXu5vx8UA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/cookie" "^0.6.0"
|
"@types/cookie" "^0.6.0"
|
||||||
cookie "^0.6.0"
|
cookie "^0.6.0"
|
||||||
devalue "^5.1.0"
|
devalue "^5.1.0"
|
||||||
esm-env "^1.2.1"
|
esm-env "^1.0.0"
|
||||||
import-meta-resolve "^4.1.0"
|
import-meta-resolve "^4.1.0"
|
||||||
kleur "^4.1.5"
|
kleur "^4.1.5"
|
||||||
magic-string "^0.30.5"
|
magic-string "^0.30.5"
|
||||||
|
@ -877,62 +877,62 @@
|
||||||
resolved "https://registry.yarnpkg.com/@types/swagger-ui/-/swagger-ui-3.52.4.tgz#96c4886e8f86ae392f8d940bf7029cf490a51c72"
|
resolved "https://registry.yarnpkg.com/@types/swagger-ui/-/swagger-ui-3.52.4.tgz#96c4886e8f86ae392f8d940bf7029cf490a51c72"
|
||||||
integrity sha512-7NV7q8BfupqdQxr26OkM0g0YEPB9uXnKGzXadgcearvI9MoCHt3F72lPTX3fZZIlrr21DC0IK26wcDMZ37oFDA==
|
integrity sha512-7NV7q8BfupqdQxr26OkM0g0YEPB9uXnKGzXadgcearvI9MoCHt3F72lPTX3fZZIlrr21DC0IK26wcDMZ37oFDA==
|
||||||
|
|
||||||
"@typescript-eslint/eslint-plugin@8.18.1", "@typescript-eslint/eslint-plugin@^8.7.0":
|
"@typescript-eslint/eslint-plugin@8.18.0", "@typescript-eslint/eslint-plugin@^8.7.0":
|
||||||
version "8.18.1"
|
version "8.18.0"
|
||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.18.1.tgz#992e5ac1553ce20d0d46aa6eccd79dc36dedc805"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.18.0.tgz#0901933326aea4443b81df3f740ca7dfc45c7bea"
|
||||||
integrity sha512-Ncvsq5CT3Gvh+uJG0Lwlho6suwDfUXH0HztslDf5I+F2wAFAZMRwYLEorumpKLzmO2suAXZ/td1tBg4NZIi9CQ==
|
integrity sha512-NR2yS7qUqCL7AIxdJUQf2MKKNDVNaig/dEB0GBLU7D+ZdHgK1NoH/3wsgO3OnPVipn51tG3MAwaODEGil70WEw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@eslint-community/regexpp" "^4.10.0"
|
"@eslint-community/regexpp" "^4.10.0"
|
||||||
"@typescript-eslint/scope-manager" "8.18.1"
|
"@typescript-eslint/scope-manager" "8.18.0"
|
||||||
"@typescript-eslint/type-utils" "8.18.1"
|
"@typescript-eslint/type-utils" "8.18.0"
|
||||||
"@typescript-eslint/utils" "8.18.1"
|
"@typescript-eslint/utils" "8.18.0"
|
||||||
"@typescript-eslint/visitor-keys" "8.18.1"
|
"@typescript-eslint/visitor-keys" "8.18.0"
|
||||||
graphemer "^1.4.0"
|
graphemer "^1.4.0"
|
||||||
ignore "^5.3.1"
|
ignore "^5.3.1"
|
||||||
natural-compare "^1.4.0"
|
natural-compare "^1.4.0"
|
||||||
ts-api-utils "^1.3.0"
|
ts-api-utils "^1.3.0"
|
||||||
|
|
||||||
"@typescript-eslint/parser@8.18.1", "@typescript-eslint/parser@^8.7.0":
|
"@typescript-eslint/parser@8.18.0", "@typescript-eslint/parser@^8.7.0":
|
||||||
version "8.18.1"
|
version "8.18.0"
|
||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.18.1.tgz#c258bae062778b7696793bc492249027a39dfb95"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.18.0.tgz#a1c9456cbb6a089730bf1d3fc47946c5fb5fe67b"
|
||||||
integrity sha512-rBnTWHCdbYM2lh7hjyXqxk70wvon3p2FyaniZuey5TrcGBpfhVp0OxOa6gxr9Q9YhZFKyfbEnxc24ZnVbbUkCA==
|
integrity sha512-hgUZ3kTEpVzKaK3uNibExUYm6SKKOmTU2BOxBSvOYwtJEPdVQ70kZJpPjstlnhCHcuc2WGfSbpKlb/69ttyN5Q==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@typescript-eslint/scope-manager" "8.18.1"
|
"@typescript-eslint/scope-manager" "8.18.0"
|
||||||
"@typescript-eslint/types" "8.18.1"
|
"@typescript-eslint/types" "8.18.0"
|
||||||
"@typescript-eslint/typescript-estree" "8.18.1"
|
"@typescript-eslint/typescript-estree" "8.18.0"
|
||||||
"@typescript-eslint/visitor-keys" "8.18.1"
|
"@typescript-eslint/visitor-keys" "8.18.0"
|
||||||
debug "^4.3.4"
|
debug "^4.3.4"
|
||||||
|
|
||||||
"@typescript-eslint/scope-manager@8.18.1":
|
"@typescript-eslint/scope-manager@8.18.0":
|
||||||
version "8.18.1"
|
version "8.18.0"
|
||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.18.1.tgz#52cedc3a8178d7464a70beffed3203678648e55b"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.18.0.tgz#30b040cb4557804a7e2bcc65cf8fdb630c96546f"
|
||||||
integrity sha512-HxfHo2b090M5s2+/9Z3gkBhI6xBH8OJCFjH9MhQ+nnoZqxU3wNxkLT+VWXWSFWc3UF3Z+CfPAyqdCTdoXtDPCQ==
|
integrity sha512-PNGcHop0jkK2WVYGotk/hxj+UFLhXtGPiGtiaWgVBVP1jhMoMCHlTyJA+hEj4rszoSdLTK3fN4oOatrL0Cp+Xw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@typescript-eslint/types" "8.18.1"
|
"@typescript-eslint/types" "8.18.0"
|
||||||
"@typescript-eslint/visitor-keys" "8.18.1"
|
"@typescript-eslint/visitor-keys" "8.18.0"
|
||||||
|
|
||||||
"@typescript-eslint/type-utils@8.18.1":
|
"@typescript-eslint/type-utils@8.18.0":
|
||||||
version "8.18.1"
|
version "8.18.0"
|
||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.18.1.tgz#10f41285475c0bdee452b79ff7223f0e43a7781e"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.18.0.tgz#6f0d12cf923b6fd95ae4d877708c0adaad93c471"
|
||||||
integrity sha512-jAhTdK/Qx2NJPNOTxXpMwlOiSymtR2j283TtPqXkKBdH8OAMmhiUfP0kJjc/qSE51Xrq02Gj9NY7MwK+UxVwHQ==
|
integrity sha512-er224jRepVAVLnMF2Q7MZJCq5CsdH2oqjP4dT7K6ij09Kyd+R21r7UVJrF0buMVdZS5QRhDzpvzAxHxabQadow==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@typescript-eslint/typescript-estree" "8.18.1"
|
"@typescript-eslint/typescript-estree" "8.18.0"
|
||||||
"@typescript-eslint/utils" "8.18.1"
|
"@typescript-eslint/utils" "8.18.0"
|
||||||
debug "^4.3.4"
|
debug "^4.3.4"
|
||||||
ts-api-utils "^1.3.0"
|
ts-api-utils "^1.3.0"
|
||||||
|
|
||||||
"@typescript-eslint/types@8.18.1":
|
"@typescript-eslint/types@8.18.0":
|
||||||
version "8.18.1"
|
version "8.18.0"
|
||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.18.1.tgz#d7f4f94d0bba9ebd088de840266fcd45408a8fff"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.18.0.tgz#3afcd30def8756bc78541268ea819a043221d5f3"
|
||||||
integrity sha512-7uoAUsCj66qdNQNpH2G8MyTFlgerum8ubf21s3TSM3XmKXuIn+H2Sifh/ES2nPOPiYSRJWAk0fDkW0APBWcpfw==
|
integrity sha512-FNYxgyTCAnFwTrzpBGq+zrnoTO4x0c1CKYY5MuUTzpScqmY5fmsh2o3+57lqdI3NZucBDCzDgdEbIaNfAjAHQA==
|
||||||
|
|
||||||
"@typescript-eslint/typescript-estree@8.18.1":
|
"@typescript-eslint/typescript-estree@8.18.0":
|
||||||
version "8.18.1"
|
version "8.18.0"
|
||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.18.1.tgz#2a86cd64b211a742f78dfa7e6f4860413475367e"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.18.0.tgz#d8ca785799fbb9c700cdff1a79c046c3e633c7f9"
|
||||||
integrity sha512-z8U21WI5txzl2XYOW7i9hJhxoKKNG1kcU4RzyNvKrdZDmbjkmLBo8bgeiOJmA06kizLI76/CCBAAGlTlEeUfyg==
|
integrity sha512-rqQgFRu6yPkauz+ms3nQpohwejS8bvgbPyIDq13cgEDbkXt4LH4OkDMT0/fN1RUtzG8e8AKJyDBoocuQh8qNeg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@typescript-eslint/types" "8.18.1"
|
"@typescript-eslint/types" "8.18.0"
|
||||||
"@typescript-eslint/visitor-keys" "8.18.1"
|
"@typescript-eslint/visitor-keys" "8.18.0"
|
||||||
debug "^4.3.4"
|
debug "^4.3.4"
|
||||||
fast-glob "^3.3.2"
|
fast-glob "^3.3.2"
|
||||||
is-glob "^4.0.3"
|
is-glob "^4.0.3"
|
||||||
|
@ -940,22 +940,22 @@
|
||||||
semver "^7.6.0"
|
semver "^7.6.0"
|
||||||
ts-api-utils "^1.3.0"
|
ts-api-utils "^1.3.0"
|
||||||
|
|
||||||
"@typescript-eslint/utils@8.18.1":
|
"@typescript-eslint/utils@8.18.0":
|
||||||
version "8.18.1"
|
version "8.18.0"
|
||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.18.1.tgz#c4199ea23fc823c736e2c96fd07b1f7235fa92d5"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.18.0.tgz#48f67205d42b65d895797bb7349d1be5c39a62f7"
|
||||||
integrity sha512-8vikiIj2ebrC4WRdcAdDcmnu9Q/MXXwg+STf40BVfT8exDqBCUPdypvzcUPxEqRGKg9ALagZ0UWcYCtn+4W2iQ==
|
integrity sha512-p6GLdY383i7h5b0Qrfbix3Vc3+J2k6QWw6UMUeY5JGfm3C5LbZ4QIZzJNoNOfgyRe0uuYKjvVOsO/jD4SJO+xg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@eslint-community/eslint-utils" "^4.4.0"
|
"@eslint-community/eslint-utils" "^4.4.0"
|
||||||
"@typescript-eslint/scope-manager" "8.18.1"
|
"@typescript-eslint/scope-manager" "8.18.0"
|
||||||
"@typescript-eslint/types" "8.18.1"
|
"@typescript-eslint/types" "8.18.0"
|
||||||
"@typescript-eslint/typescript-estree" "8.18.1"
|
"@typescript-eslint/typescript-estree" "8.18.0"
|
||||||
|
|
||||||
"@typescript-eslint/visitor-keys@8.18.1":
|
"@typescript-eslint/visitor-keys@8.18.0":
|
||||||
version "8.18.1"
|
version "8.18.0"
|
||||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.18.1.tgz#344b4f6bc83f104f514676facf3129260df7610a"
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.18.0.tgz#7b6d33534fa808e33a19951907231ad2ea5c36dd"
|
||||||
integrity sha512-Vj0WLm5/ZsD013YeUKn+K0y8p1M0jPpxOkKdbD1wB0ns53a5piVY02zjf072TblEweAbcYiFiPoSMF3kp+VhhQ==
|
integrity sha512-pCh/qEA8Lb1wVIqNvBke8UaRjJ6wrAWkJO5yyIbs8Yx6TNGYyfNjOo61tLv+WwLvoLPp4BQ8B7AHKijl8NGUfw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@typescript-eslint/types" "8.18.1"
|
"@typescript-eslint/types" "8.18.0"
|
||||||
eslint-visitor-keys "^4.2.0"
|
eslint-visitor-keys "^4.2.0"
|
||||||
|
|
||||||
"@vitest/expect@2.1.8":
|
"@vitest/expect@2.1.8":
|
||||||
|
@ -1072,7 +1072,7 @@ ansi-regex@^5.0.1:
|
||||||
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
|
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
|
||||||
integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
|
integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
|
||||||
|
|
||||||
ansi-styles@^4.0.0, ansi-styles@^4.1.0:
|
ansi-styles@^4.1.0:
|
||||||
version "4.3.0"
|
version "4.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
|
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
|
||||||
integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
|
integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
|
||||||
|
@ -1220,14 +1220,7 @@ check-error@^2.1.1:
|
||||||
resolved "https://registry.yarnpkg.com/check-error/-/check-error-2.1.1.tgz#87eb876ae71ee388fa0471fe423f494be1d96ccc"
|
resolved "https://registry.yarnpkg.com/check-error/-/check-error-2.1.1.tgz#87eb876ae71ee388fa0471fe423f494be1d96ccc"
|
||||||
integrity sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==
|
integrity sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==
|
||||||
|
|
||||||
chokidar@^4.0.0:
|
chokidar@^4.0.0, chokidar@^4.0.1:
|
||||||
version "4.0.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-4.0.3.tgz#7be37a4c03c9aee1ecfe862a4a23b2c70c205d30"
|
|
||||||
integrity sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==
|
|
||||||
dependencies:
|
|
||||||
readdirp "^4.0.1"
|
|
||||||
|
|
||||||
chokidar@^4.0.1:
|
|
||||||
version "4.0.1"
|
version "4.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-4.0.1.tgz#4a6dff66798fb0f72a94f616abbd7e1a19f31d41"
|
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-4.0.1.tgz#4a6dff66798fb0f72a94f616abbd7e1a19f31d41"
|
||||||
integrity sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==
|
integrity sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==
|
||||||
|
@ -1250,15 +1243,6 @@ cli-color@^2.0.3:
|
||||||
memoizee "^0.4.15"
|
memoizee "^0.4.15"
|
||||||
timers-ext "^0.1.7"
|
timers-ext "^0.1.7"
|
||||||
|
|
||||||
cliui@^8.0.1:
|
|
||||||
version "8.0.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa"
|
|
||||||
integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==
|
|
||||||
dependencies:
|
|
||||||
string-width "^4.2.0"
|
|
||||||
strip-ansi "^6.0.1"
|
|
||||||
wrap-ansi "^7.0.0"
|
|
||||||
|
|
||||||
code-red@^1.0.3:
|
code-red@^1.0.3:
|
||||||
version "1.0.4"
|
version "1.0.4"
|
||||||
resolved "https://registry.yarnpkg.com/code-red/-/code-red-1.0.4.tgz#59ba5c9d1d320a4ef795bc10a28bd42bfebe3e35"
|
resolved "https://registry.yarnpkg.com/code-red/-/code-red-1.0.4.tgz#59ba5c9d1d320a4ef795bc10a28bd42bfebe3e35"
|
||||||
|
@ -1308,7 +1292,7 @@ cross-spawn@^7.0.3:
|
||||||
shebang-command "^2.0.0"
|
shebang-command "^2.0.0"
|
||||||
which "^2.0.1"
|
which "^2.0.1"
|
||||||
|
|
||||||
cross-spawn@^7.0.6:
|
cross-spawn@^7.0.5:
|
||||||
version "7.0.6"
|
version "7.0.6"
|
||||||
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f"
|
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f"
|
||||||
integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==
|
integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==
|
||||||
|
@ -1401,11 +1385,6 @@ define-data-property@^1.1.4:
|
||||||
es-errors "^1.3.0"
|
es-errors "^1.3.0"
|
||||||
gopd "^1.0.1"
|
gopd "^1.0.1"
|
||||||
|
|
||||||
define-lazy-prop@^2.0.0:
|
|
||||||
version "2.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f"
|
|
||||||
integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==
|
|
||||||
|
|
||||||
delayed-stream@~1.0.0:
|
delayed-stream@~1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
|
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
|
||||||
|
@ -1436,11 +1415,6 @@ dom-accessibility-api@^0.6.3:
|
||||||
resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz#993e925cc1d73f2c662e7d75dd5a5445259a8fd8"
|
resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz#993e925cc1d73f2c662e7d75dd5a5445259a8fd8"
|
||||||
integrity sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==
|
integrity sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==
|
||||||
|
|
||||||
emoji-regex@^8.0.0:
|
|
||||||
version "8.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
|
|
||||||
integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
|
|
||||||
|
|
||||||
entities@^4.4.0:
|
entities@^4.4.0:
|
||||||
version "4.5.0"
|
version "4.5.0"
|
||||||
resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48"
|
resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48"
|
||||||
|
@ -1558,11 +1532,6 @@ esbuild@^0.21.3:
|
||||||
"@esbuild/win32-ia32" "0.21.5"
|
"@esbuild/win32-ia32" "0.21.5"
|
||||||
"@esbuild/win32-x64" "0.21.5"
|
"@esbuild/win32-x64" "0.21.5"
|
||||||
|
|
||||||
escalade@^3.1.1:
|
|
||||||
version "3.2.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5"
|
|
||||||
integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==
|
|
||||||
|
|
||||||
escape-string-regexp@^4.0.0:
|
escape-string-regexp@^4.0.0:
|
||||||
version "4.0.0"
|
version "4.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
|
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
|
||||||
|
@ -1624,16 +1593,16 @@ eslint-visitor-keys@^4.2.0:
|
||||||
integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==
|
integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==
|
||||||
|
|
||||||
eslint@^9.11.0:
|
eslint@^9.11.0:
|
||||||
version "9.17.0"
|
version "9.16.0"
|
||||||
resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.17.0.tgz#faa1facb5dd042172fdc520106984b5c2421bb0c"
|
resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.16.0.tgz#66832e66258922ac0a626f803a9273e37747f2a6"
|
||||||
integrity sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA==
|
integrity sha512-whp8mSQI4C8VXd+fLgSM0lh3UlmcFtVwUQjyKCFfsp+2ItAIYhlq/hqGahGqHE6cv9unM41VlqKk2VtKYR2TaA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@eslint-community/eslint-utils" "^4.2.0"
|
"@eslint-community/eslint-utils" "^4.2.0"
|
||||||
"@eslint-community/regexpp" "^4.12.1"
|
"@eslint-community/regexpp" "^4.12.1"
|
||||||
"@eslint/config-array" "^0.19.0"
|
"@eslint/config-array" "^0.19.0"
|
||||||
"@eslint/core" "^0.9.0"
|
"@eslint/core" "^0.9.0"
|
||||||
"@eslint/eslintrc" "^3.2.0"
|
"@eslint/eslintrc" "^3.2.0"
|
||||||
"@eslint/js" "9.17.0"
|
"@eslint/js" "9.16.0"
|
||||||
"@eslint/plugin-kit" "^0.2.3"
|
"@eslint/plugin-kit" "^0.2.3"
|
||||||
"@humanfs/node" "^0.16.6"
|
"@humanfs/node" "^0.16.6"
|
||||||
"@humanwhocodes/module-importer" "^1.0.1"
|
"@humanwhocodes/module-importer" "^1.0.1"
|
||||||
|
@ -1642,7 +1611,7 @@ eslint@^9.11.0:
|
||||||
"@types/json-schema" "^7.0.15"
|
"@types/json-schema" "^7.0.15"
|
||||||
ajv "^6.12.4"
|
ajv "^6.12.4"
|
||||||
chalk "^4.0.0"
|
chalk "^4.0.0"
|
||||||
cross-spawn "^7.0.6"
|
cross-spawn "^7.0.5"
|
||||||
debug "^4.3.2"
|
debug "^4.3.2"
|
||||||
escape-string-regexp "^4.0.0"
|
escape-string-regexp "^4.0.0"
|
||||||
eslint-scope "^8.2.0"
|
eslint-scope "^8.2.0"
|
||||||
|
@ -1663,10 +1632,10 @@ eslint@^9.11.0:
|
||||||
natural-compare "^1.4.0"
|
natural-compare "^1.4.0"
|
||||||
optionator "^0.9.3"
|
optionator "^0.9.3"
|
||||||
|
|
||||||
esm-env@^1.2.1:
|
esm-env@^1.0.0:
|
||||||
version "1.2.1"
|
version "1.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/esm-env/-/esm-env-1.2.1.tgz#34c2a0ba60582948afbe7bd779bc66f9d3aece7e"
|
resolved "https://registry.yarnpkg.com/esm-env/-/esm-env-1.2.0.tgz#637c0586244c0eb14bfd7f5e96a6b43b9e8f5c2b"
|
||||||
integrity sha512-U9JedYYjCnadUlXk7e1Kr+aENQhtUaoaV9+gZm1T8LC/YBAPJx3NSPIAurFOC0U5vrdSevnUJS2/wUVxGwPhng==
|
integrity sha512-OhSQuHL3mUcaQHjGe8UMG8GsJIJHYYz0flR0h9fiTPNMupLMkb7TvcRD0EeJXW5a8GHBgfz08b6FDLNK7kkPQA==
|
||||||
|
|
||||||
esniff@^2.0.1:
|
esniff@^2.0.1:
|
||||||
version "2.0.1"
|
version "2.0.1"
|
||||||
|
@ -1881,11 +1850,6 @@ function-bind@^1.1.2:
|
||||||
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
|
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
|
||||||
integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
|
integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
|
||||||
|
|
||||||
get-caller-file@^2.0.5:
|
|
||||||
version "2.0.5"
|
|
||||||
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
|
|
||||||
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
|
|
||||||
|
|
||||||
get-intrinsic@^1.1.3, get-intrinsic@^1.2.4:
|
get-intrinsic@^1.1.3, get-intrinsic@^1.2.4:
|
||||||
version "1.2.4"
|
version "1.2.4"
|
||||||
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd"
|
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd"
|
||||||
|
@ -2070,7 +2034,7 @@ intl-messageformat@^10.5.3:
|
||||||
"@formatjs/icu-messageformat-parser" "2.8.0"
|
"@formatjs/icu-messageformat-parser" "2.8.0"
|
||||||
tslib "^2.7.0"
|
tslib "^2.7.0"
|
||||||
|
|
||||||
is-docker@^2.0.0, is-docker@^2.1.1:
|
is-docker@^2.0.0:
|
||||||
version "2.2.1"
|
version "2.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa"
|
resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa"
|
||||||
integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==
|
integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==
|
||||||
|
@ -2080,11 +2044,6 @@ is-extglob@^2.1.1:
|
||||||
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
|
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
|
||||||
integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
|
integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
|
||||||
|
|
||||||
is-fullwidth-code-point@^3.0.0:
|
|
||||||
version "3.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
|
|
||||||
integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
|
|
||||||
|
|
||||||
is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3:
|
is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3:
|
||||||
version "4.0.3"
|
version "4.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
|
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
|
||||||
|
@ -2114,7 +2073,7 @@ is-reference@^3.0.0, is-reference@^3.0.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/estree" "*"
|
"@types/estree" "*"
|
||||||
|
|
||||||
is-wsl@^2.1.1, is-wsl@^2.2.0:
|
is-wsl@^2.1.1:
|
||||||
version "2.2.0"
|
version "2.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
|
resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
|
||||||
integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==
|
integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==
|
||||||
|
@ -2300,9 +2259,9 @@ magic-string@^0.30.12:
|
||||||
"@jridgewell/sourcemap-codec" "^1.5.0"
|
"@jridgewell/sourcemap-codec" "^1.5.0"
|
||||||
|
|
||||||
magic-string@^0.30.5:
|
magic-string@^0.30.5:
|
||||||
version "0.30.17"
|
version "0.30.14"
|
||||||
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.17.tgz#450a449673d2460e5bbcfba9a61916a1714c7453"
|
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.14.tgz#e9bb29870b81cfc1ec3cc656552f5a7fcbf19077"
|
||||||
integrity sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==
|
integrity sha512-5c99P1WKTed11ZC0HMJOj6CDIue6F8ySu+bJL+85q1zBEIY8IklrJ1eiKC2NDRh3Ct3FcvmJPyQHb9erXMTJNw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@jridgewell/sourcemap-codec" "^1.5.0"
|
"@jridgewell/sourcemap-codec" "^1.5.0"
|
||||||
|
|
||||||
|
@ -2458,15 +2417,6 @@ open@^7.4.2:
|
||||||
is-docker "^2.0.0"
|
is-docker "^2.0.0"
|
||||||
is-wsl "^2.1.1"
|
is-wsl "^2.1.1"
|
||||||
|
|
||||||
open@^8.4.0:
|
|
||||||
version "8.4.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9"
|
|
||||||
integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==
|
|
||||||
dependencies:
|
|
||||||
define-lazy-prop "^2.0.0"
|
|
||||||
is-docker "^2.1.1"
|
|
||||||
is-wsl "^2.2.0"
|
|
||||||
|
|
||||||
optionator@^0.9.3:
|
optionator@^0.9.3:
|
||||||
version "0.9.4"
|
version "0.9.4"
|
||||||
resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734"
|
resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734"
|
||||||
|
@ -2693,11 +2643,6 @@ regenerator-runtime@^0.14.0:
|
||||||
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f"
|
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f"
|
||||||
integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==
|
integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==
|
||||||
|
|
||||||
require-directory@^2.1.1:
|
|
||||||
version "2.1.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
|
|
||||||
integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==
|
|
||||||
|
|
||||||
resolve-from@^4.0.0:
|
resolve-from@^4.0.0:
|
||||||
version "4.0.0"
|
version "4.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
|
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
|
||||||
|
@ -2715,16 +2660,6 @@ rimraf@^2.6.3:
|
||||||
dependencies:
|
dependencies:
|
||||||
glob "^7.1.3"
|
glob "^7.1.3"
|
||||||
|
|
||||||
rollup-plugin-visualizer@^5.12.0:
|
|
||||||
version "5.12.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.12.0.tgz#661542191ce78ee4f378995297260d0c1efb1302"
|
|
||||||
integrity sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ==
|
|
||||||
dependencies:
|
|
||||||
open "^8.4.0"
|
|
||||||
picomatch "^2.3.1"
|
|
||||||
source-map "^0.7.4"
|
|
||||||
yargs "^17.5.1"
|
|
||||||
|
|
||||||
rollup@^4.20.0:
|
rollup@^4.20.0:
|
||||||
version "4.27.4"
|
version "4.27.4"
|
||||||
resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.27.4.tgz#b23e4ef4fe4d0d87f5237dacf63f95a499503897"
|
resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.27.4.tgz#b23e4ef4fe4d0d87f5237dacf63f95a499503897"
|
||||||
|
@ -2777,9 +2712,9 @@ sade@^1.7.4, sade@^1.8.1:
|
||||||
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
|
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
|
||||||
|
|
||||||
sass@^1.79.3:
|
sass@^1.79.3:
|
||||||
version "1.83.0"
|
version "1.82.0"
|
||||||
resolved "https://registry.yarnpkg.com/sass/-/sass-1.83.0.tgz#e36842c0b88a94ed336fd16249b878a0541d536f"
|
resolved "https://registry.yarnpkg.com/sass/-/sass-1.82.0.tgz#30da277af3d0fa6042e9ceabd0d984ed6d07df70"
|
||||||
integrity sha512-qsSxlayzoOjdvXMVLkzF84DJFc2HZEL/rFyGIKbbilYtAvlCxyuzUeff9LawTn4btVnLKg75Z8MMr1lxU1lfGw==
|
integrity sha512-j4GMCTa8elGyN9A7x7bEglx0VgSpNUG4W4wNedQ33wSMdnkqQCT8HTwOaVSV4e6yQovcu/3Oc4coJP/l0xhL2Q==
|
||||||
dependencies:
|
dependencies:
|
||||||
chokidar "^4.0.0"
|
chokidar "^4.0.0"
|
||||||
immutable "^5.0.2"
|
immutable "^5.0.2"
|
||||||
|
@ -2862,11 +2797,6 @@ source-map-js@^1.0.1:
|
||||||
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af"
|
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af"
|
||||||
integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==
|
integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==
|
||||||
|
|
||||||
source-map@^0.7.4:
|
|
||||||
version "0.7.4"
|
|
||||||
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656"
|
|
||||||
integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==
|
|
||||||
|
|
||||||
stackback@0.0.2:
|
stackback@0.0.2:
|
||||||
version "0.0.2"
|
version "0.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b"
|
resolved "https://registry.yarnpkg.com/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b"
|
||||||
|
@ -2877,22 +2807,6 @@ std-env@^3.8.0:
|
||||||
resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.8.0.tgz#b56ffc1baf1a29dcc80a3bdf11d7fca7c315e7d5"
|
resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.8.0.tgz#b56ffc1baf1a29dcc80a3bdf11d7fca7c315e7d5"
|
||||||
integrity sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==
|
integrity sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==
|
||||||
|
|
||||||
string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
|
|
||||||
version "4.2.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
|
|
||||||
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
|
|
||||||
dependencies:
|
|
||||||
emoji-regex "^8.0.0"
|
|
||||||
is-fullwidth-code-point "^3.0.0"
|
|
||||||
strip-ansi "^6.0.1"
|
|
||||||
|
|
||||||
strip-ansi@^6.0.0, strip-ansi@^6.0.1:
|
|
||||||
version "6.0.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
|
|
||||||
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
|
|
||||||
dependencies:
|
|
||||||
ansi-regex "^5.0.1"
|
|
||||||
|
|
||||||
strip-indent@^3.0.0:
|
strip-indent@^3.0.0:
|
||||||
version "3.0.0"
|
version "3.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001"
|
resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001"
|
||||||
|
@ -3109,13 +3023,13 @@ type@^2.7.2:
|
||||||
integrity sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==
|
integrity sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==
|
||||||
|
|
||||||
typescript-eslint@^8.7.0:
|
typescript-eslint@^8.7.0:
|
||||||
version "8.18.1"
|
version "8.18.0"
|
||||||
resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.18.1.tgz#197b284b6769678ed77d9868df180eeaf61108eb"
|
resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.18.0.tgz#41026f27a3481185f3239d817ae5b960572145a0"
|
||||||
integrity sha512-Mlaw6yxuaDEPQvb/2Qwu3/TfgeBHy9iTJ3mTwe7OvpPmF6KPQjVOfGyEJpPv6Ez2C34OODChhXrzYw/9phI0MQ==
|
integrity sha512-Xq2rRjn6tzVpAyHr3+nmSg1/9k9aIHnJ2iZeOH7cfGOWqTkXTm3kwpQglEuLGdNrYvPF+2gtAs+/KF5rjVo+WQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@typescript-eslint/eslint-plugin" "8.18.1"
|
"@typescript-eslint/eslint-plugin" "8.18.0"
|
||||||
"@typescript-eslint/parser" "8.18.1"
|
"@typescript-eslint/parser" "8.18.0"
|
||||||
"@typescript-eslint/utils" "8.18.1"
|
"@typescript-eslint/utils" "8.18.0"
|
||||||
|
|
||||||
typescript@^5.5.4:
|
typescript@^5.5.4:
|
||||||
version "5.6.3"
|
version "5.6.3"
|
||||||
|
@ -3261,15 +3175,6 @@ word-wrap@^1.2.5:
|
||||||
resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34"
|
resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34"
|
||||||
integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==
|
integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==
|
||||||
|
|
||||||
wrap-ansi@^7.0.0:
|
|
||||||
version "7.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
|
|
||||||
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
|
|
||||||
dependencies:
|
|
||||||
ansi-styles "^4.0.0"
|
|
||||||
string-width "^4.1.0"
|
|
||||||
strip-ansi "^6.0.0"
|
|
||||||
|
|
||||||
wrappy@1:
|
wrappy@1:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
|
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
|
||||||
|
@ -3290,11 +3195,6 @@ xmlchars@^2.2.0:
|
||||||
resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb"
|
resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb"
|
||||||
integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==
|
integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==
|
||||||
|
|
||||||
y18n@^5.0.5:
|
|
||||||
version "5.0.8"
|
|
||||||
resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
|
|
||||||
integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
|
|
||||||
|
|
||||||
yaml@^1.10.2:
|
yaml@^1.10.2:
|
||||||
version "1.10.2"
|
version "1.10.2"
|
||||||
resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
|
resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
|
||||||
|
@ -3305,24 +3205,6 @@ yaml@^2.2.2:
|
||||||
resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2"
|
resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2"
|
||||||
integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==
|
integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==
|
||||||
|
|
||||||
yargs-parser@^21.1.1:
|
|
||||||
version "21.1.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35"
|
|
||||||
integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==
|
|
||||||
|
|
||||||
yargs@^17.5.1:
|
|
||||||
version "17.7.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269"
|
|
||||||
integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==
|
|
||||||
dependencies:
|
|
||||||
cliui "^8.0.1"
|
|
||||||
escalade "^3.1.1"
|
|
||||||
get-caller-file "^2.0.5"
|
|
||||||
require-directory "^2.1.1"
|
|
||||||
string-width "^4.2.3"
|
|
||||||
y18n "^5.0.5"
|
|
||||||
yargs-parser "^21.1.1"
|
|
||||||
|
|
||||||
yocto-queue@^0.1.0:
|
yocto-queue@^0.1.0:
|
||||||
version "0.1.0"
|
version "0.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
|
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
|
||||||
|
|
Loading…
Reference in a new issue