mirror of
https://github.com/alexhopeoconnor/bom-local-card.git
synced 2026-10-04 04:28:11 +10:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
77ae2fefd9 | ||
|
|
3fb09ec86d | ||
|
|
88c1063393 | ||
|
|
2f50772520 | ||
|
|
593201a0f2 | ||
|
|
fd59e2512f | ||
|
|
1dea6958c8 | ||
|
|
5e456e7dd4 | ||
|
|
9d4d176013 |
+4
-6
@@ -4,14 +4,13 @@ FROM node:20-alpine
|
|||||||
|
|
||||||
WORKDIR /build
|
WORKDIR /build
|
||||||
|
|
||||||
# Copy package files first for better caching
|
# Copy the declared dependency set first for a reproducible cached build.
|
||||||
COPY package*.json ./
|
COPY package.json package-lock.json ./
|
||||||
COPY tsconfig.json ./
|
COPY tsconfig.json ./
|
||||||
COPY rollup.config.js ./
|
COPY rollup.config.js ./
|
||||||
|
|
||||||
# Install dependencies (including devDependencies)
|
# Install the exact locked dependencies, including the build-only toolchain.
|
||||||
# Use npm install since we may have updated package.json
|
RUN npm ci
|
||||||
RUN npm install
|
|
||||||
|
|
||||||
# Copy source files
|
# Copy source files
|
||||||
COPY src/ ./src/
|
COPY src/ ./src/
|
||||||
@@ -20,4 +19,3 @@ COPY src/ ./src/
|
|||||||
# This ensures the build runs when the container starts, not during image creation
|
# This ensures the build runs when the container starts, not during image creation
|
||||||
# Use BUILD_TARGET to allow running "watch" or other scripts
|
# Use BUILD_TARGET to allow running "watch" or other scripts
|
||||||
CMD ["sh", "-c", "npm run ${BUILD_TARGET:-build}"]
|
CMD ["sh", "-c", "npm run ${BUILD_TARGET:-build}"]
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,5 @@
|
|||||||
<p align="center">
|
<p align="center">
|
||||||
<img
|
<img width="256" height="auto" alt="icon" src="https://github.com/user-attachments/assets/6f712fbd-4f42-49d4-9ddb-1767bb43551a" />
|
||||||
src="https://github.com/user-attachments/assets/5f352818-aab0-4087-a604-856641abe0b2"
|
|
||||||
width="500"
|
|
||||||
/>
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
# BOM Local Card
|
# BOM Local Card
|
||||||
@@ -35,6 +32,7 @@ The Australian Bureau of Meteorology's radar API endpoint stopped working in Dec
|
|||||||
- **Home Assistant**: Version 2024.1.0 or later
|
- **Home Assistant**: Version 2024.1.0 or later
|
||||||
- **Docker**: Required to run the BOM Local Service (Docker Engine 20.10+ or Docker Desktop)
|
- **Docker**: Required to run the BOM Local Service (Docker Engine 20.10+ or Docker Desktop)
|
||||||
- **BOM Local Service**: Must be installed and running (covered in installation steps below)
|
- **BOM Local Service**: Must be installed and running (covered in installation steps below)
|
||||||
|
- **Node.js 20+**: Required only for a local frontend build; the supplied Docker builder uses Node.js 20.
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
@@ -538,7 +536,7 @@ For more advanced testing options:
|
|||||||
```
|
```
|
||||||
|
|
||||||
**Options:**
|
**Options:**
|
||||||
- `--skip-build` - Skip building the card (use existing dist file)
|
- `--skip-build` - Skip building the card (use the existing generated card bundle)
|
||||||
- `--force-build` - Force rebuild of the card (no cache)
|
- `--force-build` - Force rebuild of the card (no cache)
|
||||||
- `--docker-build` - Use Docker to build the card
|
- `--docker-build` - Use Docker to build the card
|
||||||
- `--npm-build` - Use npm to build the card (requires local Node.js)
|
- `--npm-build` - Use npm to build the card (requires local Node.js)
|
||||||
@@ -566,20 +564,31 @@ If you prefer to build manually:
|
|||||||
|
|
||||||
2. **Install dependencies:**
|
2. **Install dependencies:**
|
||||||
```bash
|
```bash
|
||||||
npm install
|
npm ci
|
||||||
```
|
```
|
||||||
|
|
||||||
3. **Build the card:**
|
3. **Build the card:**
|
||||||
```bash
|
```bash
|
||||||
npm run build
|
npm run build
|
||||||
```
|
```
|
||||||
The built file will be in `dist/bom-local-card.js`
|
The built file is `custom_components/bom_local/www/bom-local-card.js`.
|
||||||
|
|
||||||
4. **Development with watch mode:**
|
4. **Development with watch mode:**
|
||||||
```bash
|
```bash
|
||||||
npm run watch
|
npm run watch
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Release checklist
|
||||||
|
|
||||||
|
For a production card release, keep the version in `package.json`,
|
||||||
|
`package-lock.json`, `src/const.ts`, and
|
||||||
|
`custom_components/bom_local/manifest.json` aligned. Then run `npm ci`, build
|
||||||
|
both development and production bundles, review the generated
|
||||||
|
`custom_components/bom_local/www/bom-local-card.js`, commit the source and
|
||||||
|
generated bundle together, and create the matching immutable `vX.Y.Z` Git tag.
|
||||||
|
The card's frontend cache query must be updated by the consuming Home Assistant
|
||||||
|
deployment in the same reviewed change.
|
||||||
|
|
||||||
### Test Environment Details
|
### Test Environment Details
|
||||||
|
|
||||||
The test environment includes:
|
The test environment includes:
|
||||||
|
|||||||
@@ -66,6 +66,11 @@ async def _async_setup_integration(hass: HomeAssistant, service_url: str):
|
|||||||
"/local/community/bom_local/bom-local-card.js",
|
"/local/community/bom_local/bom-local-card.js",
|
||||||
hass.config.path("custom_components/bom_local/www/bom-local-card.js"),
|
hass.config.path("custom_components/bom_local/www/bom-local-card.js"),
|
||||||
True
|
True
|
||||||
|
),
|
||||||
|
StaticPathConfig(
|
||||||
|
"/local/community/bom_local/icon.png",
|
||||||
|
hass.config.path("custom_components/bom_local/icon.png"),
|
||||||
|
True
|
||||||
)
|
)
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,10 @@ class BomLocalConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
|
|||||||
|
|
||||||
async def async_step_user(self, user_input=None):
|
async def async_step_user(self, user_input=None):
|
||||||
"""Handle the initial step."""
|
"""Handle the initial step."""
|
||||||
|
# Check if YAML configuration already exists by checking if component is loaded
|
||||||
|
if DOMAIN in self.hass.config.components:
|
||||||
|
return self.async_abort(reason="already_configured")
|
||||||
|
|
||||||
errors = {}
|
errors = {}
|
||||||
if user_input is not None:
|
if user_input is not None:
|
||||||
# We could validate the URL here by trying a fetch
|
# We could validate the URL here by trying a fetch
|
||||||
@@ -39,7 +43,7 @@ class BomLocalOptionsFlow(config_entries.OptionsFlow):
|
|||||||
"""Handle options flow."""
|
"""Handle options flow."""
|
||||||
|
|
||||||
def __init__(self, config_entry):
|
def __init__(self, config_entry):
|
||||||
self.config_entry = config_entry
|
super().__init__(config_entry)
|
||||||
|
|
||||||
async def async_step_init(self, user_input=None):
|
async def async_step_init(self, user_input=None):
|
||||||
"""Manage the options."""
|
"""Manage the options."""
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 88 KiB |
@@ -3,10 +3,10 @@
|
|||||||
"name": "BOM Local Radar",
|
"name": "BOM Local Radar",
|
||||||
"codeowners": ["@alexhopeoconnor"],
|
"codeowners": ["@alexhopeoconnor"],
|
||||||
"config_flow": true,
|
"config_flow": true,
|
||||||
|
"single_config_entry": true,
|
||||||
"iot_class": "local_polling",
|
"iot_class": "local_polling",
|
||||||
"version": "0.2.0",
|
"version": "0.3.1",
|
||||||
"dependencies": ["http", "websocket_api"],
|
"dependencies": ["http", "websocket_api"],
|
||||||
"documentation": "https://github.com/alexhopeoconnor/bom-local-card",
|
"documentation": "https://github.com/alexhopeoconnor/bom-local-card",
|
||||||
"issue_tracker": "https://github.com/alexhopeoconnor/bom-local-card/issues"
|
"issue_tracker": "https://github.com/alexhopeoconnor/bom-local-card/issues"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -22,7 +22,7 @@ services:
|
|||||||
# Application configuration
|
# Application configuration
|
||||||
- CACHEDIRECTORY=/app/cache
|
- CACHEDIRECTORY=/app/cache
|
||||||
- CACHERETENTIONHOURS=24
|
- CACHERETENTIONHOURS=24
|
||||||
- TIMEZONE=Australia/Brisbane
|
- TIMEZONE=Australia/Sydney
|
||||||
# Debug output enabled by default for test environment
|
# Debug output enabled by default for test environment
|
||||||
- DEBUG__ENABLED=true
|
- DEBUG__ENABLED=true
|
||||||
- DEBUG__WAITMS=2000
|
- DEBUG__WAITMS=2000
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 2.0 MiB |
Generated
+615
-123
@@ -1,22 +1,24 @@
|
|||||||
{
|
{
|
||||||
"name": "bom-local-card",
|
"name": "bom-local-card",
|
||||||
"version": "0.0.1",
|
"version": "0.3.1",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "bom-local-card",
|
"name": "bom-local-card",
|
||||||
"version": "0.0.1",
|
"version": "0.3.1",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"custom-card-helpers": "^1.9.0",
|
"custom-card-helpers": "^1.9.0",
|
||||||
"lit": "^3.1.2"
|
"lit": "^3.1.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@rollup/plugin-commonjs": "^24.1.0",
|
"@rollup/plugin-commonjs": "^29.0.3",
|
||||||
"@rollup/plugin-node-resolve": "^15.2.3",
|
"@rollup/plugin-node-resolve": "^16.0.3",
|
||||||
"@rollup/plugin-typescript": "^11.1.6",
|
"@rollup/plugin-terser": "^1.0.0",
|
||||||
"rollup": "^2.79.1",
|
"@rollup/plugin-typescript": "^12.3.0",
|
||||||
|
"rollup": "^4.63.1",
|
||||||
|
"tslib": "^2.8.1",
|
||||||
"typescript": "~5.3.3"
|
"typescript": "~5.3.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -79,6 +81,38 @@
|
|||||||
"emojis-list": "^3.0.0"
|
"emojis-list": "^3.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@jridgewell/gen-mapping": {
|
||||||
|
"version": "0.3.13",
|
||||||
|
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
|
||||||
|
"integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@jridgewell/sourcemap-codec": "^1.5.0",
|
||||||
|
"@jridgewell/trace-mapping": "^0.3.24"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@jridgewell/resolve-uri": {
|
||||||
|
"version": "3.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
|
||||||
|
"integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@jridgewell/source-map": {
|
||||||
|
"version": "0.3.11",
|
||||||
|
"resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz",
|
||||||
|
"integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@jridgewell/gen-mapping": "^0.3.5",
|
||||||
|
"@jridgewell/trace-mapping": "^0.3.25"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@jridgewell/sourcemap-codec": {
|
"node_modules/@jridgewell/sourcemap-codec": {
|
||||||
"version": "1.5.5",
|
"version": "1.5.5",
|
||||||
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
|
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
|
||||||
@@ -86,6 +120,17 @@
|
|||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
|
"node_modules/@jridgewell/trace-mapping": {
|
||||||
|
"version": "0.3.31",
|
||||||
|
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
|
||||||
|
"integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@jridgewell/resolve-uri": "^3.1.0",
|
||||||
|
"@jridgewell/sourcemap-codec": "^1.4.14"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@lit-labs/ssr-dom-shim": {
|
"node_modules/@lit-labs/ssr-dom-shim": {
|
||||||
"version": "1.4.0",
|
"version": "1.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.4.0.tgz",
|
||||||
@@ -101,25 +146,43 @@
|
|||||||
"@lit-labs/ssr-dom-shim": "^1.4.0"
|
"@lit-labs/ssr-dom-shim": "^1.4.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@napi-rs/lzma-linux-x64-gnu": {
|
||||||
|
"version": "1.5.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@napi-rs/lzma-linux-x64-gnu/-/lzma-linux-x64-gnu-1.5.1.tgz",
|
||||||
|
"integrity": "sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": "^22.20 || ^24.12 || >=25"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@rollup/plugin-commonjs": {
|
"node_modules/@rollup/plugin-commonjs": {
|
||||||
"version": "24.1.0",
|
"version": "29.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-24.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-29.0.3.tgz",
|
||||||
"integrity": "sha512-eSL45hjhCWI0jCCXcNtLVqM5N1JlBGvlFfY0m6oOYnLCJ6N0qEXoZql4sY2MOUArzhH4SA/qBpTxvvZp2Sc+DQ==",
|
"integrity": "sha512-ZaOxZceP7SOUW7Lqw5IRVweSQYWaeIPnXIGLiB690EBA3FGJTO40EEr2L5yZplJWsgTCogILRSpcAe7+U0Otdg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@rollup/pluginutils": "^5.0.1",
|
"@rollup/pluginutils": "^5.0.1",
|
||||||
"commondir": "^1.0.1",
|
"commondir": "^1.0.1",
|
||||||
"estree-walker": "^2.0.2",
|
"estree-walker": "^2.0.2",
|
||||||
"glob": "^8.0.3",
|
"fdir": "^6.2.0",
|
||||||
"is-reference": "1.2.1",
|
"is-reference": "1.2.1",
|
||||||
"magic-string": "^0.27.0"
|
"magic-string": "^0.30.3",
|
||||||
|
"picomatch": "^4.0.2"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=14.0.0"
|
"node": ">=16.0.0 || 14 >= 14.17"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"rollup": "^2.68.0||^3.0.0"
|
"rollup": "^2.68.0||^3.0.0||^4.0.0"
|
||||||
},
|
},
|
||||||
"peerDependenciesMeta": {
|
"peerDependenciesMeta": {
|
||||||
"rollup": {
|
"rollup": {
|
||||||
@@ -128,9 +191,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@rollup/plugin-node-resolve": {
|
"node_modules/@rollup/plugin-node-resolve": {
|
||||||
"version": "15.3.1",
|
"version": "16.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-16.0.3.tgz",
|
||||||
"integrity": "sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==",
|
"integrity": "sha512-lUYM3UBGuM93CnMPG1YocWu7X802BrNF3jW2zny5gQyLQgRFJhV1Sq0Zi74+dh/6NBx1DxFC4b4GXg9wUCG5Qg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -152,10 +215,43 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@rollup/plugin-terser": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-1.0.0.tgz",
|
||||||
|
"integrity": "sha512-FnCxhTBx6bMOYQrar6C8h3scPt8/JwIzw3+AJ2K++6guogH5fYaIFia+zZuhqv0eo1RN7W1Pz630SyvLbDjhtQ==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"serialize-javascript": "^7.0.3",
|
||||||
|
"smob": "^1.0.0",
|
||||||
|
"terser": "^5.17.4"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=20.0.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"rollup": "^2.0.0||^3.0.0||^4.0.0"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"rollup": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@rollup/plugin-terser/node_modules/serialize-javascript": {
|
||||||
|
"version": "7.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-7.1.1.tgz",
|
||||||
|
"integrity": "sha512-k3CMsaIvvdSwm8oLB4MXSl0wH2/cwlH7xGcnRd2DaeRmBkbzYmyT8j0tsX60DwD1eRwHTpNpH8ljKu9oUT1MeQ==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "BSD-3-Clause",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=20.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@rollup/plugin-typescript": {
|
"node_modules/@rollup/plugin-typescript": {
|
||||||
"version": "11.1.6",
|
"version": "12.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-11.1.6.tgz",
|
"resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-12.3.0.tgz",
|
||||||
"integrity": "sha512-R92yOmIACgYdJ7dJ97p4K69I8gg6IEHt8M7dUBxN3W6nrO8uUxX5ixl0yU/N3aZTi8WhPuICvOHXQvF6FaykAA==",
|
"integrity": "sha512-7DP0/p7y3t67+NabT9f8oTBFE6gGkto4SA6Np2oudYmZE/m1dt8RB0SjL1msMxFpLo631qjRCcBlAbq1ml/Big==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -202,10 +298,360 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@rollup/rollup-android-arm-eabi": {
|
||||||
|
"version": "4.63.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.63.1.tgz",
|
||||||
|
"integrity": "sha512-UZ8sUxPTiHWYX9QNdJedb1kDZSpS1t/VPWBWGSgqHNi9w3Cu6IXvu2mzbhiTiPvtrqgTQJ+zqiAq2iPIPilpaQ==",
|
||||||
|
"cpu": [
|
||||||
|
"arm"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"android"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/@rollup/rollup-android-arm64": {
|
||||||
|
"version": "4.63.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.63.1.tgz",
|
||||||
|
"integrity": "sha512-cQ4nFQABN5cDvDpbvJ7bMStCpnaVxynZrRMfUJYgxcIk9Sh54FIO1vtfkg0B69REjER77ioZ/ov+eAApx/KmLQ==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"android"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/@rollup/rollup-darwin-arm64": {
|
||||||
|
"version": "4.63.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.63.1.tgz",
|
||||||
|
"integrity": "sha512-FQNqd1lRy/0QhDk3xeRIkSBiCpXCiDnZO3YLVdcDKN1UBiKToNftCzcXYNLshmPDUMlu2TdeS8tGcsU6f3YF1Q==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"darwin"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/@rollup/rollup-darwin-x64": {
|
||||||
|
"version": "4.63.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.63.1.tgz",
|
||||||
|
"integrity": "sha512-pvD16V939D3CloK0+qikpGaxiPrDUXTe7Y5cWOMkMSy7m1cawa8EGy/kXYi/G/cKAC4HDAbSnzCIk1WmsoOKXg==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"darwin"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/@rollup/rollup-freebsd-arm64": {
|
||||||
|
"version": "4.63.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.63.1.tgz",
|
||||||
|
"integrity": "sha512-pcFGeL2345VwdTnJhA6zLbew+YgWB0qBG2+dMtXjCicf6+rm6kO6cOoh5VnTe0ZMrMRgRyuHmCJxZWrIdzYuOw==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"freebsd"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/@rollup/rollup-freebsd-x64": {
|
||||||
|
"version": "4.63.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.63.1.tgz",
|
||||||
|
"integrity": "sha512-mRJlqSRulVzcKq/LKA6ICSIc3K/l4fzlVn/gePn2nXIHy8seRi5z/eeRE0d/XMBxcMldiXtQTSpRj0tkkC3g8Q==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"freebsd"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
|
||||||
|
"version": "4.63.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.63.1.tgz",
|
||||||
|
"integrity": "sha512-YDUNvVM85TI3g/1OpnqKP1h4NeW/j64DfWMf+G3M809xNk1bJSnpFp4sh83NpmVE5DXnkh8ULor4LTVZKoYLHw==",
|
||||||
|
"cpu": [
|
||||||
|
"arm"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/@rollup/rollup-linux-arm-musleabihf": {
|
||||||
|
"version": "4.63.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.63.1.tgz",
|
||||||
|
"integrity": "sha512-7Mcn71p9ZuQFAj+h+dhQXy/yeLePRS2yKRnmW1DijA9thKO5qap0GNOIQK4yQ6iP3SU0Mrb/yWo8h8vgRba8lw==",
|
||||||
|
"cpu": [
|
||||||
|
"arm"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/@rollup/rollup-linux-arm64-gnu": {
|
||||||
|
"version": "4.63.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.63.1.tgz",
|
||||||
|
"integrity": "sha512-4YiLQTX6U4CSl0L9cluep9A9W6UmTfqBDc2/CH6wlu54pl4E7Jn3cOD8oxzvBDEGk/JMKgJ47C8g+radF7mwvg==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/@rollup/rollup-linux-arm64-musl": {
|
||||||
|
"version": "4.63.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.63.1.tgz",
|
||||||
|
"integrity": "sha512-2ra8F7w8OquwZN9z2/fKFnli69wa8PLwaVzRMIPGb13ByMJwC28Fbp8YcVGoUhlYMTt7j5j9bNgpysrN2UM+vw==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/@rollup/rollup-linux-loong64-gnu": {
|
||||||
|
"version": "4.63.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.63.1.tgz",
|
||||||
|
"integrity": "sha512-Sy20ncyhjmBP0Ml+UvQbimjlk6VFgjW5uNP+qqwHB00mTE8Bl2C1TuHTlRwK2YoXeZbee5lP2XevBWVkAQAtSQ==",
|
||||||
|
"cpu": [
|
||||||
|
"loong64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/@rollup/rollup-linux-loong64-musl": {
|
||||||
|
"version": "4.63.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.63.1.tgz",
|
||||||
|
"integrity": "sha512-noITLp8oNjYliPnGWmLyelIHwULGqbHloQHGw1rtxbWhTuWooRpnZarZQJ1y9EUC4szuCusCc+HEpUtxpIwYvA==",
|
||||||
|
"cpu": [
|
||||||
|
"loong64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/@rollup/rollup-linux-ppc64-gnu": {
|
||||||
|
"version": "4.63.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.63.1.tgz",
|
||||||
|
"integrity": "sha512-hlxxXd+F1mWiAcaFR7Sv9ZQT6m6UfI8+Vy/kFJzztq2pDMU/0wZ9sish0iszNZvsQDo8Gc0i5yuFEOz5dDf6fA==",
|
||||||
|
"cpu": [
|
||||||
|
"ppc64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/@rollup/rollup-linux-ppc64-musl": {
|
||||||
|
"version": "4.63.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.63.1.tgz",
|
||||||
|
"integrity": "sha512-EF7OpqQTQ/BvGqLzUi4rEHuagCV9MugAUXSHemwPW5vxZ75RR+jxO/2j95Ph2dalMpFHSVECjRoioHZgA9zOYA==",
|
||||||
|
"cpu": [
|
||||||
|
"ppc64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
|
||||||
|
"version": "4.63.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.63.1.tgz",
|
||||||
|
"integrity": "sha512-wQO3JesW9PRkwlabQ27y7sPfVOOTLRG73I4F2UYHG5PXun3J9U3y+b7ezVKSYbsvSKGQ1k1cq8Qlun4C9kLt3w==",
|
||||||
|
"cpu": [
|
||||||
|
"riscv64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/@rollup/rollup-linux-riscv64-musl": {
|
||||||
|
"version": "4.63.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.63.1.tgz",
|
||||||
|
"integrity": "sha512-ouAGwhO6wHRXdnOVCOsB0tRFkA7nhNB2Nwax6oECXN0YiN8EYUTBAOudADOB1PI+yDL61TeNx/u7MVCzksNbkQ==",
|
||||||
|
"cpu": [
|
||||||
|
"riscv64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/@rollup/rollup-linux-s390x-gnu": {
|
||||||
|
"version": "4.63.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.63.1.tgz",
|
||||||
|
"integrity": "sha512-q2R38Sn+1J8RxhfJ+T54wSWmyKXWec+9jgDfqO2AtArEqHO5R2aeayp5H5OYLr5UYDVGsVaZPEFUooMhYCdz5A==",
|
||||||
|
"cpu": [
|
||||||
|
"s390x"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/@rollup/rollup-linux-x64-gnu": {
|
||||||
|
"version": "4.63.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.63.1.tgz",
|
||||||
|
"integrity": "sha512-gfI5T24WLLuFfSKw7Go/zDXjAAV0fny0swTaDv+WjK7vqcw4cRhFfdsyKL1n+ukI+ooBxn3bVQnyrn06WpI50w==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/@rollup/rollup-linux-x64-musl": {
|
||||||
|
"version": "4.63.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.63.1.tgz",
|
||||||
|
"integrity": "sha512-4h6XqthmB4Hspji84wvgk+ElodTsGj+dbZqHJHHtKxj4mYq0ANSEEPX9ys3moJueqsRjwpaJYH7874Itwnj2ow==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/@rollup/rollup-openbsd-x64": {
|
||||||
|
"version": "4.63.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.63.1.tgz",
|
||||||
|
"integrity": "sha512-dlfCOa87o1VAYegLQ9EKilx2JCeRofiyPGhTCmqnuXZ6bMPiycO1rq1+sKoulAp7pGLIsTIw+1x5R+zgh5LhhA==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"openbsd"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/@rollup/rollup-openharmony-arm64": {
|
||||||
|
"version": "4.63.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.63.1.tgz",
|
||||||
|
"integrity": "sha512-cjkLbOlfcm3QGhMM1J5zaZjsw1GggbN6rw9UTSSRrPrR1KkcXnN7Uq9rPw34xImQ9VOY9GN+6u2Zj80B9ptkcw==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"openharmony"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/@rollup/rollup-win32-arm64-msvc": {
|
||||||
|
"version": "4.63.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.63.1.tgz",
|
||||||
|
"integrity": "sha512-Li1KdUnWGE4N3e1F/B4RTB1ms+nG4WBgjByO46pkeBVX/2UBsY53xf5vK9WygVmnH3RwncIST7lkSdLSY6P9lg==",
|
||||||
|
"cpu": [
|
||||||
|
"arm64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"win32"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/@rollup/rollup-win32-ia32-msvc": {
|
||||||
|
"version": "4.63.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.63.1.tgz",
|
||||||
|
"integrity": "sha512-t4ZYOSoLTgwhuFMrmTMLx/+i1DQVK7HYqMc6kY46EApwi8X0nIVphzdNoThU3xt6n+N5urG1/gxBdCaKDLavfg==",
|
||||||
|
"cpu": [
|
||||||
|
"ia32"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"win32"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/@rollup/rollup-win32-x64-gnu": {
|
||||||
|
"version": "4.63.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.63.1.tgz",
|
||||||
|
"integrity": "sha512-RgroPfMmKlD1RzSDxvwgcPiy2HNQKoYV7OmwIXDsk73uKW5t6B/V8KIy27SMv/FNXFo/oSBtWc9J0X7t91ezZg==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"win32"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/@rollup/rollup-win32-x64-msvc": {
|
||||||
|
"version": "4.63.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.63.1.tgz",
|
||||||
|
"integrity": "sha512-at8QVep6S3h5Y6gSbdGU06bRY5WJkf6WUduM9YtvYMbYhB1MOFfUgc6kehitQXzOtMSaT70q7f9ydPhpqu821w==",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"win32"
|
||||||
|
]
|
||||||
|
},
|
||||||
"node_modules/@types/estree": {
|
"node_modules/@types/estree": {
|
||||||
"version": "1.0.8",
|
"version": "1.0.9",
|
||||||
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
|
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz",
|
||||||
"integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
|
"integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
@@ -222,22 +668,32 @@
|
|||||||
"integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
|
"integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/balanced-match": {
|
"node_modules/acorn": {
|
||||||
"version": "1.0.2",
|
"version": "8.18.0",
|
||||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.18.0.tgz",
|
||||||
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
|
"integrity": "sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"bin": {
|
||||||
|
"acorn": "bin/acorn"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.4.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/buffer-from": {
|
||||||
|
"version": "1.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
|
||||||
|
"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/brace-expansion": {
|
"node_modules/commander": {
|
||||||
"version": "2.0.2",
|
"version": "2.20.3",
|
||||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
|
||||||
"integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
|
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT"
|
||||||
"dependencies": {
|
|
||||||
"balanced-match": "^1.0.0"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"node_modules/commondir": {
|
"node_modules/commondir": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
@@ -301,6 +757,21 @@
|
|||||||
"@types/trusted-types": "^2.0.2"
|
"@types/trusted-types": "^2.0.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/custom-card-helpers/node_modules/rollup": {
|
||||||
|
"version": "2.80.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/rollup/-/rollup-2.80.0.tgz",
|
||||||
|
"integrity": "sha512-cIFJOD1DESzpjOBl763Kp1AH7UE/0fcdHe6rZXUdQ9c50uvgigvW97u3IcSeBwOkgqL/PXPBktBCh0KEu5L8XQ==",
|
||||||
|
"license": "MIT",
|
||||||
|
"bin": {
|
||||||
|
"rollup": "dist/bin/rollup"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10.0.0"
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"fsevents": "~2.3.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/custom-card-helpers/node_modules/typescript": {
|
"node_modules/custom-card-helpers/node_modules/typescript": {
|
||||||
"version": "4.9.5",
|
"version": "4.9.5",
|
||||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
|
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
|
||||||
@@ -340,12 +811,23 @@
|
|||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/fs.realpath": {
|
"node_modules/fdir": {
|
||||||
"version": "1.0.0",
|
"version": "6.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
|
||||||
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
|
"integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "ISC"
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12.0.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"picomatch": "^3 || ^4"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"picomatch": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"node_modules/fsevents": {
|
"node_modules/fsevents": {
|
||||||
"version": "2.3.3",
|
"version": "2.3.3",
|
||||||
@@ -371,27 +853,6 @@
|
|||||||
"url": "https://github.com/sponsors/ljharb"
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/glob": {
|
|
||||||
"version": "8.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
|
|
||||||
"integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
|
|
||||||
"deprecated": "Glob versions prior to v9 are no longer supported",
|
|
||||||
"dev": true,
|
|
||||||
"license": "ISC",
|
|
||||||
"dependencies": {
|
|
||||||
"fs.realpath": "^1.0.0",
|
|
||||||
"inflight": "^1.0.4",
|
|
||||||
"inherits": "2",
|
|
||||||
"minimatch": "^5.0.1",
|
|
||||||
"once": "^1.3.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=12"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/isaacs"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/hasown": {
|
"node_modules/hasown": {
|
||||||
"version": "2.0.2",
|
"version": "2.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
|
||||||
@@ -411,25 +872,6 @@
|
|||||||
"integrity": "sha512-TnZFzF4mn5F/v0XKUTK2GMQXrn/+eQpgaSDSELl6U0HSwSbFwRhGWLz330YT+hiKMspDflamsye//RPL+zwhDw==",
|
"integrity": "sha512-TnZFzF4mn5F/v0XKUTK2GMQXrn/+eQpgaSDSELl6U0HSwSbFwRhGWLz330YT+hiKMspDflamsye//RPL+zwhDw==",
|
||||||
"license": "Apache-2.0"
|
"license": "Apache-2.0"
|
||||||
},
|
},
|
||||||
"node_modules/inflight": {
|
|
||||||
"version": "1.0.6",
|
|
||||||
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
|
||||||
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
|
|
||||||
"deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
|
|
||||||
"dev": true,
|
|
||||||
"license": "ISC",
|
|
||||||
"dependencies": {
|
|
||||||
"once": "^1.3.0",
|
|
||||||
"wrappy": "1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/inherits": {
|
|
||||||
"version": "2.0.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
|
||||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "ISC"
|
|
||||||
},
|
|
||||||
"node_modules/intl-messageformat": {
|
"node_modules/intl-messageformat": {
|
||||||
"version": "9.13.0",
|
"version": "9.13.0",
|
||||||
"resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-9.13.0.tgz",
|
"resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-9.13.0.tgz",
|
||||||
@@ -507,39 +949,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/magic-string": {
|
"node_modules/magic-string": {
|
||||||
"version": "0.27.0",
|
"version": "0.30.21",
|
||||||
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz",
|
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
|
||||||
"integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==",
|
"integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@jridgewell/sourcemap-codec": "^1.4.13"
|
"@jridgewell/sourcemap-codec": "^1.5.5"
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=12"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/minimatch": {
|
|
||||||
"version": "5.1.6",
|
|
||||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
|
|
||||||
"integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "ISC",
|
|
||||||
"dependencies": {
|
|
||||||
"brace-expansion": "^2.0.1"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=10"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/once": {
|
|
||||||
"version": "1.4.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
|
||||||
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "ISC",
|
|
||||||
"dependencies": {
|
|
||||||
"wrappy": "1"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/path-parse": {
|
"node_modules/path-parse": {
|
||||||
@@ -550,11 +966,12 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/picomatch": {
|
"node_modules/picomatch": {
|
||||||
"version": "4.0.3",
|
"version": "4.0.7",
|
||||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz",
|
||||||
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
|
"integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
"peer": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12"
|
"node": ">=12"
|
||||||
},
|
},
|
||||||
@@ -584,20 +1001,83 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/rollup": {
|
"node_modules/rollup": {
|
||||||
"version": "2.79.2",
|
"version": "4.63.1",
|
||||||
"resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz",
|
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.63.1.tgz",
|
||||||
"integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==",
|
"integrity": "sha512-3Df9jsstwhccuEfmAMi9l8XUh/GOkVObmFTU7CCVBysEbcOZLl84jCtaAZMcPiMz2EGKsATzQcU+Xr3n/wU6cg==",
|
||||||
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
"peer": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@types/estree": "1.0.9"
|
||||||
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"rollup": "dist/bin/rollup"
|
"rollup": "dist/bin/rollup"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=10.0.0"
|
"node": ">=18.0.0",
|
||||||
|
"npm": ">=8.0.0"
|
||||||
},
|
},
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
|
"@napi-rs/lzma-linux-x64-gnu": "1.5.1",
|
||||||
|
"@rollup/rollup-android-arm-eabi": "4.63.1",
|
||||||
|
"@rollup/rollup-android-arm64": "4.63.1",
|
||||||
|
"@rollup/rollup-darwin-arm64": "4.63.1",
|
||||||
|
"@rollup/rollup-darwin-x64": "4.63.1",
|
||||||
|
"@rollup/rollup-freebsd-arm64": "4.63.1",
|
||||||
|
"@rollup/rollup-freebsd-x64": "4.63.1",
|
||||||
|
"@rollup/rollup-linux-arm-gnueabihf": "4.63.1",
|
||||||
|
"@rollup/rollup-linux-arm-musleabihf": "4.63.1",
|
||||||
|
"@rollup/rollup-linux-arm64-gnu": "4.63.1",
|
||||||
|
"@rollup/rollup-linux-arm64-musl": "4.63.1",
|
||||||
|
"@rollup/rollup-linux-loong64-gnu": "4.63.1",
|
||||||
|
"@rollup/rollup-linux-loong64-musl": "4.63.1",
|
||||||
|
"@rollup/rollup-linux-ppc64-gnu": "4.63.1",
|
||||||
|
"@rollup/rollup-linux-ppc64-musl": "4.63.1",
|
||||||
|
"@rollup/rollup-linux-riscv64-gnu": "4.63.1",
|
||||||
|
"@rollup/rollup-linux-riscv64-musl": "4.63.1",
|
||||||
|
"@rollup/rollup-linux-s390x-gnu": "4.63.1",
|
||||||
|
"@rollup/rollup-linux-x64-gnu": "4.63.1",
|
||||||
|
"@rollup/rollup-linux-x64-musl": "4.63.1",
|
||||||
|
"@rollup/rollup-openbsd-x64": "4.63.1",
|
||||||
|
"@rollup/rollup-openharmony-arm64": "4.63.1",
|
||||||
|
"@rollup/rollup-win32-arm64-msvc": "4.63.1",
|
||||||
|
"@rollup/rollup-win32-ia32-msvc": "4.63.1",
|
||||||
|
"@rollup/rollup-win32-x64-gnu": "4.63.1",
|
||||||
|
"@rollup/rollup-win32-x64-msvc": "4.63.1",
|
||||||
"fsevents": "~2.3.2"
|
"fsevents": "~2.3.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/smob": {
|
||||||
|
"version": "1.6.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/smob/-/smob-1.6.2.tgz",
|
||||||
|
"integrity": "sha512-RQsvleCbF8cVHEv+xuDGaA4pOizFqJ0GgjtMSRo6oP8pnN7WsigHgVGey6aILRBKv4W2YOMHLqbKdnB6hpB9fw==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=20.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/source-map": {
|
||||||
|
"version": "0.6.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
||||||
|
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "BSD-3-Clause",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/source-map-support": {
|
||||||
|
"version": "0.5.21",
|
||||||
|
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
|
||||||
|
"integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"buffer-from": "^1.0.0",
|
||||||
|
"source-map": "^0.6.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/superstruct": {
|
"node_modules/superstruct": {
|
||||||
"version": "0.15.5",
|
"version": "0.15.5",
|
||||||
"resolved": "https://registry.npmjs.org/superstruct/-/superstruct-0.15.5.tgz",
|
"resolved": "https://registry.npmjs.org/superstruct/-/superstruct-0.15.5.tgz",
|
||||||
@@ -617,6 +1097,25 @@
|
|||||||
"url": "https://github.com/sponsors/ljharb"
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/terser": {
|
||||||
|
"version": "5.51.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/terser/-/terser-5.51.2.tgz",
|
||||||
|
"integrity": "sha512-bWnjSNscmuI+GJze6ZupnHP8G/cTcsJF+bXCeQknk2SHQsgbNJnLrqiH9jZ2W4STPVXH2mDKKRX3iwPhc9Cn/Q==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "BSD-2-Clause",
|
||||||
|
"dependencies": {
|
||||||
|
"@jridgewell/source-map": "^0.3.3",
|
||||||
|
"acorn": "^8.15.0",
|
||||||
|
"commander": "^2.20.0",
|
||||||
|
"source-map-support": "~0.5.20"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"terser": "bin/terser"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/tslib": {
|
"node_modules/tslib": {
|
||||||
"version": "2.8.1",
|
"version": "2.8.1",
|
||||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
|
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
|
||||||
@@ -637,13 +1136,6 @@
|
|||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=14.17"
|
"node": ">=14.17"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"node_modules/wrappy": {
|
|
||||||
"version": "1.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
|
||||||
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "ISC"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+11
-13
@@ -1,7 +1,8 @@
|
|||||||
{
|
{
|
||||||
"name": "bom-local-card",
|
"name": "bom-local-card",
|
||||||
"version": "0.2.0",
|
"version": "0.3.1",
|
||||||
"description": "Home Assistant custom card for displaying Australian Bureau of Meteorology (BOM) rain radar data with animated slideshow and historical data support",
|
"description": "Home Assistant custom card for displaying Australian Bureau of Meteorology (BOM) rain radar data with animated slideshow and historical data support",
|
||||||
|
"type": "module",
|
||||||
"module": "bom-local-card.js",
|
"module": "bom-local-card.js",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"home-assistant",
|
"home-assistant",
|
||||||
@@ -31,13 +32,17 @@
|
|||||||
"lit": "^3.1.2"
|
"lit": "^3.1.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@rollup/plugin-commonjs": "^24.1.0",
|
"@rollup/plugin-commonjs": "^29.0.3",
|
||||||
"@rollup/plugin-node-resolve": "^15.2.3",
|
"@rollup/plugin-node-resolve": "^16.0.3",
|
||||||
"@rollup/plugin-typescript": "^11.1.6",
|
"@rollup/plugin-terser": "^1.0.0",
|
||||||
"rollup": "^2.79.1",
|
"@rollup/plugin-typescript": "^12.3.0",
|
||||||
"rollup-plugin-terser": "^7.0.2",
|
"rollup": "^4.63.1",
|
||||||
|
"tslib": "^2.8.1",
|
||||||
"typescript": "~5.3.3"
|
"typescript": "~5.3.3"
|
||||||
},
|
},
|
||||||
|
"overrides": {
|
||||||
|
"picomatch": "^4.0.4"
|
||||||
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "rollup -c",
|
"build": "rollup -c",
|
||||||
"build:docker": "bash scripts/build-docker.sh",
|
"build:docker": "bash scripts/build-docker.sh",
|
||||||
@@ -49,10 +54,3 @@
|
|||||||
},
|
},
|
||||||
"_comment": "Note: All commands can be run without npm using: ./run.sh [build|test|clean]"
|
"_comment": "Note: All commands can be run without npm using: ./run.sh [build|test|clean]"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+2
-3
@@ -1,7 +1,7 @@
|
|||||||
import resolve from '@rollup/plugin-node-resolve';
|
import resolve from '@rollup/plugin-node-resolve';
|
||||||
import commonjs from '@rollup/plugin-commonjs';
|
import commonjs from '@rollup/plugin-commonjs';
|
||||||
import typescript from '@rollup/plugin-typescript';
|
import typescript from '@rollup/plugin-typescript';
|
||||||
import { terser } from 'rollup-plugin-terser';
|
import terser from '@rollup/plugin-terser';
|
||||||
|
|
||||||
const isProd = process.env.NODE_ENV === 'production';
|
const isProd = process.env.NODE_ENV === 'production';
|
||||||
|
|
||||||
@@ -28,7 +28,7 @@ export default {
|
|||||||
declaration: false,
|
declaration: false,
|
||||||
}),
|
}),
|
||||||
isProd && terser({
|
isProd && terser({
|
||||||
output: {
|
format: {
|
||||||
comments: false,
|
comments: false,
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
@@ -42,4 +42,3 @@ export default {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ build_card() {
|
|||||||
echo "📦 Installing dependencies..."
|
echo "📦 Installing dependencies..."
|
||||||
# Ensure devDependencies are installed even if we're building for prod
|
# Ensure devDependencies are installed even if we're building for prod
|
||||||
# because we need rollup/plugins to build.
|
# because we need rollup/plugins to build.
|
||||||
npm install
|
npm ci
|
||||||
fi
|
fi
|
||||||
|
|
||||||
NODE_ENV="$target_env" npm run build
|
NODE_ENV="$target_env" npm run build
|
||||||
@@ -241,4 +241,3 @@ case "$COMMAND" in
|
|||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
|||||||
+57
-60
@@ -132,6 +132,51 @@ if [ -z "$USE_DOCKER_BUILD" ] && [ -z "$USE_NPM_BUILD" ]; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
ensure_test_ha_config() {
|
||||||
|
if [ ! -f "test-ha/configuration.yaml" ]; then
|
||||||
|
echo "❌ Error: test-ha/configuration.yaml not found"
|
||||||
|
echo " This test harness expects local Home Assistant seed data in test-ha/"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Write docker-compose override for local service build (single place; avoids create/rm/create on cold start)
|
||||||
|
write_service_compose_override() {
|
||||||
|
cat > docker-compose.test.local.yml <<EOF
|
||||||
|
services:
|
||||||
|
bom-local-service:
|
||||||
|
build:
|
||||||
|
context: $SERVICE_PATH
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
image: bom-local-service:local-test
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
sync_test_ha_file() {
|
||||||
|
local file_name="$1"
|
||||||
|
local source_path="test-ha/$file_name"
|
||||||
|
local target_path="test-ha/config/$file_name"
|
||||||
|
|
||||||
|
if [ ! -f "$source_path" ]; then
|
||||||
|
echo " ⚠️ Warning: $source_path not found, skipping..."
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if cp "$source_path" "$target_path" 2>/dev/null; then
|
||||||
|
echo " ✅ Updated $file_name"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo " 🔐 Retrying $file_name update via Docker (root-owned target)..."
|
||||||
|
docker run --rm \
|
||||||
|
-v "$(pwd)/test-ha:/workspace:rw" \
|
||||||
|
-u root \
|
||||||
|
alpine:latest \
|
||||||
|
sh -c "cp \"/workspace/$file_name\" \"/workspace/config/$file_name\"" >/dev/null
|
||||||
|
|
||||||
|
echo " ✅ Updated $file_name"
|
||||||
|
}
|
||||||
|
|
||||||
# Function to build using npm (local)
|
# Function to build using npm (local)
|
||||||
build_with_npm() {
|
build_with_npm() {
|
||||||
echo "🔨 Building card with npm (local)..."
|
echo "🔨 Building card with npm (local)..."
|
||||||
@@ -159,7 +204,6 @@ build_with_docker() {
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Pass FORCE_REBUILD if FORCE_BUILD is set
|
|
||||||
if [ "$FORCE_BUILD" = "1" ]; then
|
if [ "$FORCE_BUILD" = "1" ]; then
|
||||||
FORCE_REBUILD=1 bash scripts/build-docker.sh
|
FORCE_REBUILD=1 bash scripts/build-docker.sh
|
||||||
else
|
else
|
||||||
@@ -177,10 +221,6 @@ if [ "$SKIP_BUILD" = "1" ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
elif [ "$FORCE_BUILD" = "1" ] || [ ! -f "$CARD_BUILD_PATH" ]; then
|
elif [ "$FORCE_BUILD" = "1" ] || [ ! -f "$CARD_BUILD_PATH" ]; then
|
||||||
# If FORCE_BUILD is set, also force Docker rebuild
|
|
||||||
if [ "$FORCE_BUILD" = "1" ] && [ "$USE_DOCKER_BUILD" = "1" ]; then
|
|
||||||
export FORCE_REBUILD=1
|
|
||||||
fi
|
|
||||||
if [ "$USE_DOCKER_BUILD" = "1" ]; then
|
if [ "$USE_DOCKER_BUILD" = "1" ]; then
|
||||||
build_with_docker
|
build_with_docker
|
||||||
elif [ "$USE_NPM_BUILD" = "1" ]; then
|
elif [ "$USE_NPM_BUILD" = "1" ]; then
|
||||||
@@ -220,19 +260,6 @@ else
|
|||||||
echo " (Use --force-build to rebuild, --docker-build or --npm-build to specify method)"
|
echo " (Use --force-build to rebuild, --docker-build or --npm-build to specify method)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# If SERVICE_PATH is set, create override file for local service build
|
|
||||||
if [ -n "$SERVICE_PATH" ] && [ ! -f "docker-compose.test.local.yml" ]; then
|
|
||||||
OVERRIDE_FILE="docker-compose.test.local.yml"
|
|
||||||
cat > "$OVERRIDE_FILE" <<EOF
|
|
||||||
services:
|
|
||||||
bom-local-service:
|
|
||||||
build:
|
|
||||||
context: $SERVICE_PATH
|
|
||||||
dockerfile: Dockerfile
|
|
||||||
image: bom-local-service:local-test
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check if containers are already running
|
# Check if containers are already running
|
||||||
CONTAINERS_RUNNING=0
|
CONTAINERS_RUNNING=0
|
||||||
COMPOSE_FILES_CHECK="-f docker-compose.test.yml"
|
COMPOSE_FILES_CHECK="-f docker-compose.test.yml"
|
||||||
@@ -252,12 +279,10 @@ if [ "$CONTAINERS_RUNNING" = "1" ]; then
|
|||||||
echo "📋 Integration is mounted directly, no file copy needed."
|
echo "📋 Integration is mounted directly, no file copy needed."
|
||||||
|
|
||||||
# Copy configuration files to HA config directory (for dashboard changes)
|
# Copy configuration files to HA config directory (for dashboard changes)
|
||||||
|
ensure_test_ha_config
|
||||||
echo "📋 Updating HA configuration files..."
|
echo "📋 Updating HA configuration files..."
|
||||||
for config_file in configuration.yaml ui-lovelace.yaml; do
|
for config_file in configuration.yaml ui-lovelace.yaml; do
|
||||||
if [ -f "test-ha/$config_file" ]; then
|
sync_test_ha_file "$config_file"
|
||||||
cp "test-ha/$config_file" "test-ha/config/$config_file"
|
|
||||||
echo " ✅ Updated $config_file"
|
|
||||||
fi
|
|
||||||
done
|
done
|
||||||
|
|
||||||
# Restart HA to pick up changes
|
# Restart HA to pick up changes
|
||||||
@@ -280,19 +305,10 @@ if [ "$CONTAINERS_RUNNING" = "1" ]; then
|
|||||||
if [ -n "$SERVICE_PATH" ]; then
|
if [ -n "$SERVICE_PATH" ]; then
|
||||||
echo "🔨 Rebuilding service from local source: $SERVICE_PATH"
|
echo "🔨 Rebuilding service from local source: $SERVICE_PATH"
|
||||||
|
|
||||||
# Ensure override file exists for local service build
|
if [ ! -f "docker-compose.test.local.yml" ]; then
|
||||||
OVERRIDE_FILE="docker-compose.test.local.yml"
|
write_service_compose_override
|
||||||
if [ ! -f "$OVERRIDE_FILE" ]; then
|
|
||||||
cat > "$OVERRIDE_FILE" <<EOF
|
|
||||||
services:
|
|
||||||
bom-local-service:
|
|
||||||
build:
|
|
||||||
context: $SERVICE_PATH
|
|
||||||
dockerfile: Dockerfile
|
|
||||||
image: bom-local-service:local-test
|
|
||||||
EOF
|
|
||||||
fi
|
fi
|
||||||
COMPOSE_FILES="$COMPOSE_FILES -f $OVERRIDE_FILE"
|
COMPOSE_FILES="$COMPOSE_FILES -f docker-compose.test.local.yml"
|
||||||
|
|
||||||
# Rebuild service - Docker's cache will detect source file changes automatically
|
# Rebuild service - Docker's cache will detect source file changes automatically
|
||||||
# Only use --no-cache if explicitly needed (it's much slower)
|
# Only use --no-cache if explicitly needed (it's much slower)
|
||||||
@@ -357,16 +373,11 @@ fi
|
|||||||
# Normal mode - full setup (containers not running)
|
# Normal mode - full setup (containers not running)
|
||||||
echo "🚀 Setting up fresh test environment..."
|
echo "🚀 Setting up fresh test environment..."
|
||||||
echo "🐳 Stopping any existing containers..."
|
echo "🐳 Stopping any existing containers..."
|
||||||
# Clean up any existing override files
|
# Remove stale override so cold start always matches SERVICE_PATH handling below
|
||||||
rm -f docker-compose.test.local.yml
|
rm -f docker-compose.test.local.yml
|
||||||
|
|
||||||
# Determine compose files to use
|
# Base compose file is enough to stop this project's containers (override was just removed)
|
||||||
COMPOSE_FILES_CLEAN="-f docker-compose.test.yml"
|
COMPOSE_FILES_CLEAN="-f docker-compose.test.yml"
|
||||||
if [ -f "docker-compose.test.local.yml" ]; then
|
|
||||||
COMPOSE_FILES_CLEAN="$COMPOSE_FILES_CLEAN -f docker-compose.test.local.yml"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Stop and remove containers (preserve volumes to keep cache)
|
|
||||||
docker compose $COMPOSE_FILES_CLEAN down 2>/dev/null || docker-compose $COMPOSE_FILES_CLEAN down 2>/dev/null || true
|
docker compose $COMPOSE_FILES_CLEAN down 2>/dev/null || docker-compose $COMPOSE_FILES_CLEAN down 2>/dev/null || true
|
||||||
|
|
||||||
# Preserve .storage directory to keep user accounts and HA state
|
# Preserve .storage directory to keep user accounts and HA state
|
||||||
@@ -380,14 +391,12 @@ mkdir -p test-ha/cache
|
|||||||
# Integration is mounted directly, skipping redundant copy
|
# Integration is mounted directly, skipping redundant copy
|
||||||
echo "📋 Integration is mounted directly."
|
echo "📋 Integration is mounted directly."
|
||||||
|
|
||||||
|
ensure_test_ha_config
|
||||||
|
|
||||||
# Copy configuration files to HA config directory
|
# Copy configuration files to HA config directory
|
||||||
echo "📋 Copying HA configuration files..."
|
echo "📋 Copying HA configuration files..."
|
||||||
for config_file in configuration.yaml ui-lovelace.yaml; do
|
for config_file in configuration.yaml ui-lovelace.yaml; do
|
||||||
if [ ! -f "test-ha/$config_file" ]; then
|
sync_test_ha_file "$config_file"
|
||||||
echo " ⚠️ Warning: test-ha/$config_file not found, skipping..."
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
cp "test-ha/$config_file" "test-ha/config/$config_file"
|
|
||||||
done
|
done
|
||||||
|
|
||||||
# Create onboarding bypass - skip everything EXCEPT user creation
|
# Create onboarding bypass - skip everything EXCEPT user creation
|
||||||
@@ -424,20 +433,8 @@ fi
|
|||||||
DOCKER_COMPOSE_FILES="-f docker-compose.test.yml"
|
DOCKER_COMPOSE_FILES="-f docker-compose.test.yml"
|
||||||
if [ -n "$SERVICE_PATH" ]; then
|
if [ -n "$SERVICE_PATH" ]; then
|
||||||
echo "🔨 Building service from local source: $SERVICE_PATH"
|
echo "🔨 Building service from local source: $SERVICE_PATH"
|
||||||
|
write_service_compose_override
|
||||||
# Create docker-compose override file for local service build
|
DOCKER_COMPOSE_FILES="$DOCKER_COMPOSE_FILES -f docker-compose.test.local.yml"
|
||||||
OVERRIDE_FILE="docker-compose.test.local.yml"
|
|
||||||
cat > "$OVERRIDE_FILE" <<EOF
|
|
||||||
services:
|
|
||||||
bom-local-service:
|
|
||||||
build:
|
|
||||||
context: $SERVICE_PATH
|
|
||||||
dockerfile: Dockerfile
|
|
||||||
image: bom-local-service:local-test
|
|
||||||
# Remove image specification when building
|
|
||||||
EOF
|
|
||||||
|
|
||||||
DOCKER_COMPOSE_FILES="$DOCKER_COMPOSE_FILES -f $OVERRIDE_FILE"
|
|
||||||
|
|
||||||
# Build service - Docker's cache will detect source file changes automatically
|
# Build service - Docker's cache will detect source file changes automatically
|
||||||
# The Dockerfile is structured to cache dependencies, so only changed source files trigger rebuilds
|
# The Dockerfile is structured to cache dependencies, so only changed source files trigger rebuilds
|
||||||
|
|||||||
+9
-17
@@ -122,25 +122,18 @@ export class BomLocalRadarCard extends LitElement implements LovelaceCard {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Define grid options for HA's sections view
|
* Define grid options for HA's sections view
|
||||||
* This allows the card to integrate with HA's grid system
|
*
|
||||||
|
* The radar image and its metadata load asynchronously and have responsive
|
||||||
|
* minimum heights. Supplying rows here would make Home Assistant reserve a
|
||||||
|
* fixed, much smaller grid area, then let the completed card paint over the
|
||||||
|
* following section. Deliberately provide width guidance only and let the
|
||||||
|
* Sections view measure the card's natural height.
|
||||||
*/
|
*/
|
||||||
public getGridOptions(): GridOptions {
|
public getGridOptions(): GridOptions {
|
||||||
// Calculate based on whether controls are visible
|
|
||||||
const hasControls = this._shouldShowControls();
|
|
||||||
const hasMetadata = this._shouldShowMetadata();
|
|
||||||
|
|
||||||
// Base size: 6 columns (half width), 2 rows
|
|
||||||
// Adjust based on content
|
|
||||||
const baseRows = 2;
|
|
||||||
const additionalRows = (hasControls ? 1 : 0) + (hasMetadata ? 0.5 : 0);
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
columns: 6, // Default: half width
|
columns: 6, // Default: half width
|
||||||
rows: baseRows + additionalRows,
|
|
||||||
min_columns: 3, // Minimum: quarter width
|
min_columns: 3, // Minimum: quarter width
|
||||||
min_rows: 2, // Minimum: always show image
|
|
||||||
max_columns: 12, // Can span full width
|
max_columns: 12, // Can span full width
|
||||||
max_rows: 8, // Can be tall for detailed view
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -591,6 +584,7 @@ export class BomLocalRadarCard extends LitElement implements LovelaceCard {
|
|||||||
${this.isLoading
|
${this.isLoading
|
||||||
? html`
|
? html`
|
||||||
<div class="loading">
|
<div class="loading">
|
||||||
|
<img class="loading-icon" src="/local/community/bom_local/icon.png" alt="BOM Local Radar" />
|
||||||
<ha-circular-progress indeterminate></ha-circular-progress>
|
<ha-circular-progress indeterminate></ha-circular-progress>
|
||||||
<div class="loading-message">Loading radar data...</div>
|
<div class="loading-message">Loading radar data...</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -599,7 +593,7 @@ export class BomLocalRadarCard extends LitElement implements LovelaceCard {
|
|||||||
? html`
|
? html`
|
||||||
<img
|
<img
|
||||||
class="radar-image radar-image-${fit}"
|
class="radar-image radar-image-${fit}"
|
||||||
src="${currentFrameUrl}"
|
src="${currentFrameUrl}"
|
||||||
alt="Radar frame ${this.currentFrameIndex}"
|
alt="Radar frame ${this.currentFrameIndex}"
|
||||||
style="transform: scale(${zoom}); transform-origin: center center;"
|
style="transform: scale(${zoom}); transform-origin: center center;"
|
||||||
@error="${() => {
|
@error="${() => {
|
||||||
@@ -685,7 +679,7 @@ export class BomLocalRadarCard extends LitElement implements LovelaceCard {
|
|||||||
|
|
||||||
return html`
|
return html`
|
||||||
<ha-card
|
<ha-card
|
||||||
.header=${cardTitle}
|
.header=${cardTitle}
|
||||||
tabindex="0"
|
tabindex="0"
|
||||||
role="region"
|
role="region"
|
||||||
aria-label="BOM Radar Card"
|
aria-label="BOM Radar Card"
|
||||||
@@ -729,5 +723,3 @@ if (!customElements.get('bom-local-card')) {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ export class BomControlsSection extends LitElement {
|
|||||||
type="range"
|
type="range"
|
||||||
class="frame-slider"
|
class="frame-slider"
|
||||||
min="0"
|
min="0"
|
||||||
max="${this.frames.length - 1}"
|
max="${this.frames.length - 1}"
|
||||||
.value="${this.currentFrameIndex}"
|
.value="${this.currentFrameIndex}"
|
||||||
@input="${(e: Event) => {
|
@input="${(e: Event) => {
|
||||||
const index = parseInt((e.target as HTMLInputElement).value);
|
const index = parseInt((e.target as HTMLInputElement).value);
|
||||||
@@ -241,4 +241,3 @@ declare global {
|
|||||||
'bom-controls-section': BomControlsSection;
|
'bom-controls-section': BomControlsSection;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-2
@@ -1,4 +1,4 @@
|
|||||||
export const CARD_VERSION = '0.2.0';
|
export const CARD_VERSION = '0.3.1';
|
||||||
export const DEFAULT_FRAME_INTERVAL = 2.0; // seconds
|
export const DEFAULT_FRAME_INTERVAL = 2.0; // seconds
|
||||||
export const DEFAULT_RESTART_DELAY = 2000; // ms (pause before looping)
|
export const DEFAULT_RESTART_DELAY = 2000; // ms (pause before looping)
|
||||||
export const DEFAULT_REFRESH_INTERVAL = 30; // seconds
|
export const DEFAULT_REFRESH_INTERVAL = 30; // seconds
|
||||||
@@ -12,4 +12,3 @@ export const DEFAULT_REFRESH_INTERVAL = 30; // seconds
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -154,7 +154,7 @@ export class RadarApiService {
|
|||||||
frames: allFrames,
|
frames: allFrames,
|
||||||
lastUpdated: endTime,
|
lastUpdated: endTime,
|
||||||
observationTime: metadata.observationTime || newestCacheFolder?.observationTime || endTime,
|
observationTime: metadata.observationTime || newestCacheFolder?.observationTime || endTime,
|
||||||
forecastTime: endTime,
|
forecastTime: metadata.forecastTime || endTime,
|
||||||
weatherStation: metadata.weatherStation,
|
weatherStation: metadata.weatherStation,
|
||||||
distance: metadata.distance,
|
distance: metadata.distance,
|
||||||
cacheIsValid: metadata.cacheIsValid ?? true,
|
cacheIsValid: metadata.cacheIsValid ?? true,
|
||||||
|
|||||||
@@ -72,6 +72,25 @@ export const imageStyles: CSSResultGroup = css`
|
|||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 12px;
|
gap: 12px;
|
||||||
|
z-index: 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loading-icon {
|
||||||
|
width: 80px;
|
||||||
|
height: 80px;
|
||||||
|
animation: pulse 2s ease-in-out infinite;
|
||||||
|
opacity: 0.8;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes pulse {
|
||||||
|
0%, 100% {
|
||||||
|
opacity: 0.8;
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
opacity: 1;
|
||||||
|
transform: scale(1.05);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.loading-message {
|
.loading-message {
|
||||||
|
|||||||
+6
-3
@@ -96,8 +96,12 @@ export interface ErrorState {
|
|||||||
|
|
||||||
// Grid options for HA sections view
|
// Grid options for HA sections view
|
||||||
export interface GridOptions {
|
export interface GridOptions {
|
||||||
columns: number;
|
columns?: number;
|
||||||
rows: number;
|
/**
|
||||||
|
* A fixed row count. Omit this for content whose height changes after it is
|
||||||
|
* rendered, such as a radar image loaded asynchronously.
|
||||||
|
*/
|
||||||
|
rows?: number;
|
||||||
min_columns?: number;
|
min_columns?: number;
|
||||||
min_rows?: number;
|
min_rows?: number;
|
||||||
max_columns?: number;
|
max_columns?: number;
|
||||||
@@ -158,4 +162,3 @@ export interface BomLocalRadarCardConfig extends LovelaceCardConfig {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user