improve typescript and linting usage across codebase
add ts-lit-plugin and eslint-typescript disable no-invalid-css rule fix a bunch of errors raised by eslint and typescript run prettier & eslint on the remaining files remove unused imports split coll-index into index and info components... and rename "coll" -> "item" for these. also includes some fixes for previously-undocumented properties used on non-ts elements. extract labeled fields into separate component... and make a few type improvements too swap custom copy button for shoelace one rename a few more missed things
This commit is contained in:
@@ -82,4 +82,3 @@ before_cache:
|
|||||||
branches:
|
branches:
|
||||||
except:
|
except:
|
||||||
- "/^v\\d+\\.\\d+\\.\\d+$/"
|
- "/^v\\d+\\.\\d+\\.\\d+$/"
|
||||||
|
|
||||||
|
|||||||
+23
-26
@@ -1,28 +1,25 @@
|
|||||||
|
/* eslint-env node */
|
||||||
module.exports = {
|
module.exports = {
|
||||||
"env": {
|
env: {
|
||||||
"browser": true,
|
browser: true,
|
||||||
"es6": true
|
es6: true,
|
||||||
},
|
},
|
||||||
"extends": [
|
extends: [
|
||||||
"eslint:recommended",
|
"eslint:recommended",
|
||||||
"plugin:lit/recommended",
|
"plugin:lit/recommended",
|
||||||
"prettier"
|
"prettier",
|
||||||
],
|
"plugin:@typescript-eslint/recommended",
|
||||||
"plugins": [
|
],
|
||||||
"lit"
|
plugins: ["@typescript-eslint", "lit"],
|
||||||
],
|
parser: "@typescript-eslint/parser",
|
||||||
"parserOptions": {
|
parserOptions: {
|
||||||
"ecmaVersion": 2018,
|
ecmaVersion: 2018,
|
||||||
"sourceType": "module"
|
sourceType: "module",
|
||||||
},
|
},
|
||||||
"rules": {
|
rules: {
|
||||||
"no-restricted-globals": [
|
"no-restricted-globals": [2, "event", "error"],
|
||||||
2,
|
"linebreak-style": ["error", "unix"],
|
||||||
"event", "error"
|
"@typescript-eslint/no-explicit-any": "warn",
|
||||||
],
|
},
|
||||||
"linebreak-style": [
|
ignorePatterns: ["ruffle/**/*", "build/**/*"],
|
||||||
"error",
|
|
||||||
"unix"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|||||||
+8
-3
@@ -1,4 +1,9 @@
|
|||||||
# Ignore everything except src
|
# Ignore everything except src
|
||||||
*
|
_includes
|
||||||
!/src/
|
.github
|
||||||
!src/*
|
.husky
|
||||||
|
assets
|
||||||
|
build
|
||||||
|
docs
|
||||||
|
examples
|
||||||
|
ruffle
|
||||||
|
|||||||
@@ -1,11 +1,14 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html class="no-overflow">
|
<html class="no-overflow">
|
||||||
<head>
|
<head> </head>
|
||||||
</head>
|
<body>
|
||||||
<body>
|
Loading SW, Please wait...
|
||||||
Loading SW, Please wait...
|
<script>
|
||||||
<script>
|
navigator.serviceWorker
|
||||||
navigator.serviceWorker.register("/swonly.js?replayPrefix=wabac&stats=true", {scope: window.location.origin + "/"}).then(() => window.location.reload());
|
.register("/swonly.js?replayPrefix=wabac&stats=true", {
|
||||||
</script>
|
scope: window.location.origin + "/",
|
||||||
</body>
|
})
|
||||||
|
.then(() => window.location.reload());
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+73
-3
@@ -1,14 +1,17 @@
|
|||||||
## CHANGES
|
## CHANGES
|
||||||
|
|
||||||
v1.8.11
|
v1.8.11
|
||||||
|
|
||||||
- Loading: Use default html index, avoid custom html injection (via wabac.js 2.16.12)
|
- Loading: Use default html index, avoid custom html injection (via wabac.js 2.16.12)
|
||||||
- Dependencies: Switch to wabac.js 2.16.12
|
- Dependencies: Switch to wabac.js 2.16.12
|
||||||
|
|
||||||
v1.8.10
|
v1.8.10
|
||||||
|
|
||||||
- Regression fix: Fix embed loading from different domain being broken in 1.8.9
|
- Regression fix: Fix embed loading from different domain being broken in 1.8.9
|
||||||
- Dependencies: Switch to wabac.js 2.16.11
|
- Dependencies: Switch to wabac.js 2.16.11
|
||||||
|
|
||||||
v1.8.9:
|
v1.8.9:
|
||||||
|
|
||||||
- Fidelity: Ignore self-redirects when loading (via wabac.js)
|
- Fidelity: Ignore self-redirects when loading (via wabac.js)
|
||||||
- Fidelity: Don't rewrite 'location = 0' as window.location (via wabac.js)
|
- Fidelity: Don't rewrite 'location = 0' as window.location (via wabac.js)
|
||||||
- API: Add /api/c/[coll]/ts/?url=... API for returning array for timestamps for given URL (via wabac.js)
|
- API: Add /api/c/[coll]/ts/?url=... API for returning array for timestamps for given URL (via wabac.js)
|
||||||
@@ -16,12 +19,14 @@ v1.8.9:
|
|||||||
- Dependencies: Switch to wabac.js 2.16.10
|
- Dependencies: Switch to wabac.js 2.16.10
|
||||||
|
|
||||||
v1.8.8
|
v1.8.8
|
||||||
|
|
||||||
- Source/Build: Format src files with Prettier, add pre-commit check, fix errors in HTML
|
- Source/Build: Format src files with Prettier, add pre-commit check, fix errors in HTML
|
||||||
- Fidelity: Fix regression from 2.16.8 for rewriting JSON in 'script' tags (via wabac.js 2.16.9)
|
- Fidelity: Fix regression from 2.16.8 for rewriting JSON in 'script' tags (via wabac.js 2.16.9)
|
||||||
- UI: Better handling of Multi WACZ collections, list collection name, description and files on info tab
|
- UI: Better handling of Multi WACZ collections, list collection name, description and files on info tab
|
||||||
- Dependencies: Switch to wabac.js 2.16.9
|
- Dependencies: Switch to wabac.js 2.16.9
|
||||||
|
|
||||||
v1.8.7
|
v1.8.7
|
||||||
|
|
||||||
- UI: Fix info tab overflow being hidden
|
- UI: Fix info tab overflow being hidden
|
||||||
- Loading: Improved support for live proxy via wabac.js 2.16.7
|
- Loading: Improved support for live proxy via wabac.js 2.16.7
|
||||||
- Fidelity: Improved support for document.write() overrides with wabac.js 2.16.7
|
- Fidelity: Improved support for document.write() overrides with wabac.js 2.16.7
|
||||||
@@ -29,6 +34,7 @@ v1.8.7
|
|||||||
- Dependencies: Switch to wabac.js 2.16.8
|
- Dependencies: Switch to wabac.js 2.16.8
|
||||||
|
|
||||||
v1.8.6
|
v1.8.6
|
||||||
|
|
||||||
- Loading: Fix improved handling of multi-wacz collections (via wabac.js 2.16.6)
|
- Loading: Fix improved handling of multi-wacz collections (via wabac.js 2.16.6)
|
||||||
- Loading: Allow embedded video/audio to play inline instead of being downloaded (via wabac.js 2.16.6)
|
- Loading: Allow embedded video/audio to play inline instead of being downloaded (via wabac.js 2.16.6)
|
||||||
- Fidelity: Add missing ruffle.js files to fix ruffle
|
- Fidelity: Add missing ruffle.js files to fix ruffle
|
||||||
@@ -37,37 +43,45 @@ v1.8.6
|
|||||||
- Dependencies: Switch to wabac.js 2.16.6
|
- Dependencies: Switch to wabac.js 2.16.6
|
||||||
|
|
||||||
v1.8.5
|
v1.8.5
|
||||||
|
|
||||||
- Loading: Improved handling of multi-wacz collections, support loading URLs cross-WACZ to support patching
|
- Loading: Improved handling of multi-wacz collections, support loading URLs cross-WACZ to support patching
|
||||||
- Dependencies: Switch to wabac.js 2.16.5
|
- Dependencies: Switch to wabac.js 2.16.5
|
||||||
|
|
||||||
v1.8.4
|
v1.8.4
|
||||||
|
|
||||||
- Fidelity: improved replay of pages with top-level 'let' and 'const' globals via script parsing (via wabac.js)
|
- Fidelity: improved replay of pages with top-level 'let' and 'const' globals via script parsing (via wabac.js)
|
||||||
- Dependencies: Switch to wabac.js 2.16.4
|
- Dependencies: Switch to wabac.js 2.16.4
|
||||||
|
|
||||||
v1.8.3
|
v1.8.3
|
||||||
|
|
||||||
- Loading: fix 'Show Non-Seed Pages' for Multi WACZ collections and after reload
|
- Loading: fix 'Show Non-Seed Pages' for Multi WACZ collections and after reload
|
||||||
- Dependencies: Switch to wabac.js 2.16.3
|
- Dependencies: Switch to wabac.js 2.16.3
|
||||||
|
|
||||||
v1.8.2
|
v1.8.2
|
||||||
|
|
||||||
- Loading: fix redirect loop on 404s (via wabac.js 2.16.2)
|
- Loading: fix redirect loop on 404s (via wabac.js 2.16.2)
|
||||||
- Misc: additional check before autoupdate, update build deps to support Node 20
|
- Misc: additional check before autoupdate, update build deps to support Node 20
|
||||||
|
|
||||||
v1.8.1
|
v1.8.1
|
||||||
|
|
||||||
- Loading: Resolve sourceUrl to absolute url when computing default id
|
- Loading: Resolve sourceUrl to absolute url when computing default id
|
||||||
- Loading: Disable ruffle on embeds by default, can enable with 'useruffle', enable on standalone by default, can disable with 'skipruffle' attr
|
- Loading: Disable ruffle on embeds by default, can enable with 'useruffle', enable on standalone by default, can disable with 'skipruffle' attr
|
||||||
- Dependencies: Switch to ruffle 2023-05-13 due to issues in later versions
|
- Dependencies: Switch to ruffle 2023-05-13 due to issues in later versions
|
||||||
|
|
||||||
v1.8.0
|
v1.8.0
|
||||||
|
|
||||||
- UI: Add 'Show All Pages' option to show non-seed pages that are previously only available via search
|
- UI: Add 'Show All Pages' option to show non-seed pages that are previously only available via search
|
||||||
- Embeds: add 'swName' option to allow customizing 'sw.js' to a different filename
|
- Embeds: add 'swName' option to allow customizing 'sw.js' to a different filename
|
||||||
- Dependencies: Update to wabac.js 2.16.1 -- varioues loading improvements related to surt
|
- Dependencies: Update to wabac.js 2.16.1 -- varioues loading improvements related to surt
|
||||||
- Dependencies: Update to electron 25.5.1, ruffle 2023-06-14
|
- Dependencies: Update to electron 25.5.1, ruffle 2023-06-14
|
||||||
|
|
||||||
v1.7.15
|
v1.7.15
|
||||||
|
|
||||||
- UI: Loading: support URLs that have query/hashes after extension
|
- UI: Loading: support URLs that have query/hashes after extension
|
||||||
- Dependencies: Update to wabac.js 2.16.0 -- improved support for Multi WACZ files
|
- Dependencies: Update to wabac.js 2.16.0 -- improved support for Multi WACZ files
|
||||||
|
|
||||||
v1.7.14
|
v1.7.14
|
||||||
|
|
||||||
- Fidelity: Support dynamic 'import()' in non-module JS (via wabac.js 2.15.4)
|
- Fidelity: Support dynamic 'import()' in non-module JS (via wabac.js 2.15.4)
|
||||||
- Fidelity: Fix dynamic iframes (via document.write / srcdoc) that fallthrough (via wombat 3.5.1, wabac.js 2.15.5)
|
- Fidelity: Fix dynamic iframes (via document.write / srcdoc) that fallthrough (via wombat 3.5.1, wabac.js 2.15.5)
|
||||||
- Fidelity: Fix loading WARCs with duplicate revisit records overriding non-revisit records (via wabac.js 2.15.5)
|
- Fidelity: Fix loading WARCs with duplicate revisit records overriding non-revisit records (via wabac.js 2.15.5)
|
||||||
@@ -77,68 +91,82 @@ v1.7.14
|
|||||||
- Dependencies: Update to wabac.js 2.15.5, wombat 3.5.1
|
- Dependencies: Update to wabac.js 2.15.5, wombat 3.5.1
|
||||||
|
|
||||||
v1.7.13
|
v1.7.13
|
||||||
|
|
||||||
- Fidelity: Improved replay via unrewriting fixes of style urls, request/response urls (via wabac.js 2.15.3)
|
- Fidelity: Improved replay via unrewriting fixes of style urls, request/response urls (via wabac.js 2.15.3)
|
||||||
- Embeds: Support updating auth headers if custom headers provided in embed 'config'
|
- Embeds: Support updating auth headers if custom headers provided in embed 'config'
|
||||||
- Dependencies: Update to wabac.js 2.15.3, wombat 3.4.6, Electron 23.1.1
|
- Dependencies: Update to wabac.js 2.15.3, wombat 3.4.6, Electron 23.1.1
|
||||||
|
|
||||||
v1.7.12
|
v1.7.12
|
||||||
|
|
||||||
- Fidelity: Improved replay of facebook/instagram pages (via wabac.js 2.15.1)
|
- Fidelity: Improved replay of facebook/instagram pages (via wabac.js 2.15.1)
|
||||||
- Loading: Fix issue with loading certain WACZ files (incorrect SURT detection fixed, via wabac.js 2.15.2)
|
- Loading: Fix issue with loading certain WACZ files (incorrect SURT detection fixed, via wabac.js 2.15.2)
|
||||||
- Dependencies: Update to wabac.js 2.15.2
|
- Dependencies: Update to wabac.js 2.15.2
|
||||||
|
|
||||||
v1.7.11
|
v1.7.11
|
||||||
|
|
||||||
- Loading: Support loading URLs without extension (including blob: urls), automated type detection of WACZ, WARC, compressed and uncompressed (via wabac.js)
|
- Loading: Support loading URLs without extension (including blob: urls), automated type detection of WACZ, WARC, compressed and uncompressed (via wabac.js)
|
||||||
- Fidelity: Improved handling of ESM modules, cookies, Vimeo videos (via wabac.js)
|
- Fidelity: Improved handling of ESM modules, cookies, Vimeo videos (via wabac.js)
|
||||||
- Dependencies: Update to wabac.js 2.15.0, wombat 3.4.3
|
- Dependencies: Update to wabac.js 2.15.0, wombat 3.4.3
|
||||||
|
|
||||||
v1.7.10
|
v1.7.10
|
||||||
|
|
||||||
- Verification: Change site used for cert verification to https://crt.sh/
|
- Verification: Change site used for cert verification to https://crt.sh/
|
||||||
|
|
||||||
v1.7.9
|
v1.7.9
|
||||||
|
|
||||||
- Fidelity: Various fidelity improvements via new wabac.js / wombat
|
- Fidelity: Various fidelity improvements via new wabac.js / wombat
|
||||||
- Dependencies: Update to wabac.js 2.14.0, wombat 3.4.2, warcio 2.0.1
|
- Dependencies: Update to wabac.js 2.14.0, wombat 3.4.2, warcio 2.0.1
|
||||||
|
|
||||||
v1.7.8
|
v1.7.8
|
||||||
|
|
||||||
- Electron App: simplified IPFS loading in app, can connect to default IPFS Desktop or IPFS in Brave automatically
|
- Electron App: simplified IPFS loading in app, can connect to default IPFS Desktop or IPFS in Brave automatically
|
||||||
- Electron App: clean up unused code, old ipfs loading paths from app, streamlined file loading
|
- Electron App: clean up unused code, old ipfs loading paths from app, streamlined file loading
|
||||||
- Dependencies: Update to wabac.js 2.13.15, wombat 3.3.13, auto-js-ipfs 2.1.0, electron 22.0
|
- Dependencies: Update to wabac.js 2.13.15, wombat 3.3.13, auto-js-ipfs 2.1.0, electron 22.0
|
||||||
|
|
||||||
v1.7.7
|
v1.7.7
|
||||||
|
|
||||||
- Bug Fix: Fix loading issue on first use due to injected script check (via wabac 2.13.14)
|
- Bug Fix: Fix loading issue on first use due to injected script check (via wabac 2.13.14)
|
||||||
- Indexing: Fix video loading, don't index partial 206 in all loading paths (via wabac 2.13.13)
|
- Indexing: Fix video loading, don't index partial 206 in all loading paths (via wabac 2.13.13)
|
||||||
- Dependencies: Update to wabac.js 2.13.14
|
- Dependencies: Update to wabac.js 2.13.14
|
||||||
|
|
||||||
v1.7.6
|
v1.7.6
|
||||||
|
|
||||||
- Bug Fix: Ensure Flash (via ruffle.js) loading is working (via wabac.js 2.13.11)
|
- Bug Fix: Ensure Flash (via ruffle.js) loading is working (via wabac.js 2.13.11)
|
||||||
- Bug Fix: Fix occasional issue in window.open (viw wombat)
|
- Bug Fix: Fix occasional issue in window.open (viw wombat)
|
||||||
- Dependencies: Update wabac.js to 2.13.12, wombat 3.3.12, update Ruffle to 2022-11-25 release
|
- Dependencies: Update wabac.js to 2.13.12, wombat 3.3.12, update Ruffle to 2022-11-25 release
|
||||||
|
|
||||||
v1.7.5
|
v1.7.5
|
||||||
|
|
||||||
- Library: Readd assets dir to package (needed for archiveweb.page)
|
- Library: Readd assets dir to package (needed for archiveweb.page)
|
||||||
|
|
||||||
v1.7.4
|
v1.7.4
|
||||||
|
|
||||||
- Embed: Support loading entire WACZ in embed via `load='eager'` flag
|
- Embed: Support loading entire WACZ in embed via `load='eager'` flag
|
||||||
- Dependencies: update to wabac.js 2.13.10 for eager loading support
|
- Dependencies: update to wabac.js 2.13.10 for eager loading support
|
||||||
- Dependencies: update to electron 21.3.1
|
- Dependencies: update to electron 21.3.1
|
||||||
- Library: Remove assets dir from npm package
|
- Library: Remove assets dir from npm package
|
||||||
|
|
||||||
v1.7.3
|
v1.7.3
|
||||||
|
|
||||||
- Fidelity: Misc fidelity improvements via latest wombat + wabac.js
|
- Fidelity: Misc fidelity improvements via latest wombat + wabac.js
|
||||||
- Dependecies: wabac.js 2.13.8, wombat 3.3.11, auto-js-ipfs 1.5.1
|
- Dependecies: wabac.js 2.13.8, wombat 3.3.11, auto-js-ipfs 1.5.1
|
||||||
- Loading: Fix occasional loading issues with multiple embeds loading on the same page
|
- Loading: Fix occasional loading issues with multiple embeds loading on the same page
|
||||||
|
|
||||||
v1.7.2
|
v1.7.2
|
||||||
|
|
||||||
- Fidelity: Fix replay of TikTok
|
- Fidelity: Fix replay of TikTok
|
||||||
- Dependencies: Update to wabac.js 2.13.4
|
- Dependencies: Update to wabac.js 2.13.4
|
||||||
- Docs: Update to embedding guide to mention new embed modes
|
- Docs: Update to embedding guide to mention new embed modes
|
||||||
|
|
||||||
v1.7.1
|
v1.7.1
|
||||||
|
|
||||||
- Electron App: Fix electron app not loading preload.js, regression in 1.7.0
|
- Electron App: Fix electron app not loading preload.js, regression in 1.7.0
|
||||||
- Fidelity: Fixed embedded tweet video issue (via wabac.js)
|
- Fidelity: Fixed embedded tweet video issue (via wabac.js)
|
||||||
- Fidelity: rewrite target="new" to not open new window
|
- Fidelity: rewrite target="new" to not open new window
|
||||||
- Dependencies: Update to wabac.js 2.13.3
|
- Dependencies: Update to wabac.js 2.13.3
|
||||||
|
|
||||||
v1.7.0
|
v1.7.0
|
||||||
|
|
||||||
- UI: Support showing WACZ verification stats on info tab, showing hashes verified, observer domain, (or public key and creation software), and certificate fingerprint, and WACZ package digest
|
- UI: Support showing WACZ verification stats on info tab, showing hashes verified, observer domain, (or public key and creation software), and certificate fingerprint, and WACZ package digest
|
||||||
- Embed UI: Add `replay-with-info` embed mode which provides an information dropdown above replay, including verification info and link to download.
|
- Embed UI: Add `replay-with-info` embed mode which provides an information dropdown above replay, including verification info and link to download.
|
||||||
- Embed UI: Add `hideOffscreen` attribute to enable hiding embed when offscreen (previously always enabled).
|
- Embed UI: Add `hideOffscreen` attribute to enable hiding embed when offscreen (previously always enabled).
|
||||||
@@ -154,6 +182,7 @@ v1.7.0
|
|||||||
- Dependencies: update to wabac.js 2.13.2 to support verification, latest wombat (3.3.9)
|
- Dependencies: update to wabac.js 2.13.2 to support verification, latest wombat (3.3.9)
|
||||||
|
|
||||||
v1.6.5
|
v1.6.5
|
||||||
|
|
||||||
- Loading: Don't ignore hashtag, eg. #.wacz to specify file type when loading (via wabac.js)
|
- Loading: Don't ignore hashtag, eg. #.wacz to specify file type when loading (via wabac.js)
|
||||||
- Documentation: Update embedding guide to mention self-hosting of embed scripts
|
- Documentation: Update embedding guide to mention self-hosting of embed scripts
|
||||||
- Embed: Use `display: block` for embed to avoid extra scrollbars
|
- Embed: Use `display: block` for embed to avoid extra scrollbars
|
||||||
@@ -161,26 +190,31 @@ v1.6.5
|
|||||||
- Dependencies: update to wabac.js 2.12.5
|
- Dependencies: update to wabac.js 2.12.5
|
||||||
|
|
||||||
v1.6.4
|
v1.6.4
|
||||||
|
|
||||||
- Embeds: Support `noCache` attribute in `<replay-web-page>` to disable cacheing any HTTP response payloads
|
- Embeds: Support `noCache` attribute in `<replay-web-page>` to disable cacheing any HTTP response payloads
|
||||||
- Dependencies: update to wabac.js 2.12.3
|
- Dependencies: update to wabac.js 2.12.3
|
||||||
|
|
||||||
v1.6.3
|
v1.6.3
|
||||||
|
|
||||||
- Loading: replay fixes for WARCs with revisit records (via wabac.js)
|
- Loading: replay fixes for WARCs with revisit records (via wabac.js)
|
||||||
- Fidelity: fix for rewriting of some JS incorrectly treated as a module (via wabac.js)
|
- Fidelity: fix for rewriting of some JS incorrectly treated as a module (via wabac.js)
|
||||||
- Loading: fix loading ipfs:// urls (via wabac.js)
|
- Loading: fix loading ipfs:// urls (via wabac.js)
|
||||||
- Dependencies: update to wabac.js 2.12.2
|
- Dependencies: update to wabac.js 2.12.2
|
||||||
|
|
||||||
v1.6.2
|
v1.6.2
|
||||||
|
|
||||||
- Library: additional fixes, make 'purge cache' configurable
|
- Library: additional fixes, make 'purge cache' configurable
|
||||||
- Library: Add index.html to npm bundle
|
- Library: Add index.html to npm bundle
|
||||||
- UI: Fix date padding
|
- UI: Fix date padding
|
||||||
|
|
||||||
v1.6.1
|
v1.6.1
|
||||||
|
|
||||||
- Embed/Library: Make embedding more extensable for use as a library (for archiveweb.page extensions)
|
- Embed/Library: Make embedding more extensable for use as a library (for archiveweb.page extensions)
|
||||||
- UI: Unified service worker error messaging for regular and embed mode, show correct error when loaded over http.
|
- UI: Unified service worker error messaging for regular and embed mode, show correct error when loaded over http.
|
||||||
- Dependencies: update ruffle to 2022-07-02
|
- Dependencies: update ruffle to 2022-07-02
|
||||||
|
|
||||||
v1.6.0
|
v1.6.0
|
||||||
|
|
||||||
- Embeds: Support embedding without using webworker with 'noWebWorker' attrib added to `<replay-web-page>`
|
- Embeds: Support embedding without using webworker with 'noWebWorker' attrib added to `<replay-web-page>`
|
||||||
- Fidelity: improved replay of pages that use eval() in global scope (via wabac.js)
|
- Fidelity: improved replay of pages that use eval() in global scope (via wabac.js)
|
||||||
- Fidelity: improved replay of twitter videos archived via browsertrix-crawler/pywb (via wabac.js)
|
- Fidelity: improved replay of twitter videos archived via browsertrix-crawler/pywb (via wabac.js)
|
||||||
@@ -190,6 +224,7 @@ v1.6.0
|
|||||||
- Dependencies: update to wabac.js 2.12.0, update to electron 19.0.4
|
- Dependencies: update to wabac.js 2.12.0, update to electron 19.0.4
|
||||||
|
|
||||||
v1.5.11
|
v1.5.11
|
||||||
|
|
||||||
- Loading: fix url lookup when no '=' in query arg, optimize loading compressed index (only load 3 blocks), via (wabac.js)
|
- Loading: fix url lookup when no '=' in query arg, optimize loading compressed index (only load 3 blocks), via (wabac.js)
|
||||||
- Loading: fix url lookup api calls
|
- Loading: fix url lookup api calls
|
||||||
- Loading: new live proxy support, per-hostname config, combined with wacz loading or main 'proxy:' config
|
- Loading: new live proxy support, per-hostname config, combined with wacz loading or main 'proxy:' config
|
||||||
@@ -197,31 +232,37 @@ v1.5.11
|
|||||||
- Dependencies: update to wabac.js 2.11.1
|
- Dependencies: update to wabac.js 2.11.1
|
||||||
|
|
||||||
v1.5.10
|
v1.5.10
|
||||||
|
|
||||||
- Fidelity: Encoding fix for non-ascii links, optimizations for utf-8 parsing (via wabac.js 2.10.3)
|
- Fidelity: Encoding fix for non-ascii links, optimizations for utf-8 parsing (via wabac.js 2.10.3)
|
||||||
- Dependencies: update to wabac.js 2.10.3
|
- Dependencies: update to wabac.js 2.10.3
|
||||||
|
|
||||||
v1.5.9
|
v1.5.9
|
||||||
|
|
||||||
- Dependencies: update to wabac.js 2.10.2
|
- Dependencies: update to wabac.js 2.10.2
|
||||||
- Loading: for experimental multi-wacz input, disable periodic reload for now
|
- Loading: for experimental multi-wacz input, disable periodic reload for now
|
||||||
|
|
||||||
v1.5.8
|
v1.5.8
|
||||||
|
|
||||||
- Loading: fix hosted replay via subpath when opening in new tab (#82)
|
- Loading: fix hosted replay via subpath when opening in new tab (#82)
|
||||||
- Loading: fix multi-wacz support in wabac.js
|
- Loading: fix multi-wacz support in wabac.js
|
||||||
- Dependencies: update to wabac.js 2.10.1
|
- Dependencies: update to wabac.js 2.10.1
|
||||||
|
|
||||||
v1.5.7
|
v1.5.7
|
||||||
|
|
||||||
- Dependencies: update to wabac.js 2.10.0 and wombat 3.3.6
|
- Dependencies: update to wabac.js 2.10.0 and wombat 3.3.6
|
||||||
- Dependencies: update to electron 16.0.6 (chromium 96)
|
- Dependencies: update to electron 16.0.6 (chromium 96)
|
||||||
- Dependencies: update ruffle to latest nightly (2022-01-08)
|
- Dependencies: update ruffle to latest nightly (2022-01-08)
|
||||||
- Dependencies: update lit to 2.1.1
|
- Dependencies: update lit to 2.1.1
|
||||||
|
|
||||||
v1.5.6
|
v1.5.6
|
||||||
|
|
||||||
- Fidelity: Fix assignment to local location causing invalid redirect (via wombat 3.3.5)
|
- Fidelity: Fix assignment to local location causing invalid redirect (via wombat 3.3.5)
|
||||||
- Loading: Optimized loading for larger WARCs (via warcio 1.5.0)
|
- Loading: Optimized loading for larger WARCs (via warcio 1.5.0)
|
||||||
- Loading: Show number of WARC records loaded (via wabac.js 2.10.0-beta.0)
|
- Loading: Show number of WARC records loaded (via wabac.js 2.10.0-beta.0)
|
||||||
- Loading: Use separate web worker for loading, then remove for possible faster loading
|
- Loading: Use separate web worker for loading, then remove for possible faster loading
|
||||||
|
|
||||||
v1.5.5
|
v1.5.5
|
||||||
|
|
||||||
- Fidelity: Only wrap JS globals if necessary (via wabac.js 2.9.5)
|
- Fidelity: Only wrap JS globals if necessary (via wabac.js 2.9.5)
|
||||||
- UI: Add download option from collection info and dropdown menu to download web archives from http.
|
- UI: Add download option from collection info and dropdown menu to download web archives from http.
|
||||||
- Dependencies: update to wabac.js 2.9.5
|
- Dependencies: update to wabac.js 2.9.5
|
||||||
@@ -229,6 +270,7 @@ v1.5.5
|
|||||||
- Dependencies: update ruffle to latest nightly (2021-10-25)
|
- Dependencies: update ruffle to latest nightly (2021-10-25)
|
||||||
|
|
||||||
v1.5.4
|
v1.5.4
|
||||||
|
|
||||||
- Fidelity: Faster rewriting of large JS files
|
- Fidelity: Faster rewriting of large JS files
|
||||||
- Fidelity: Fixes for twitter video replay
|
- Fidelity: Fixes for twitter video replay
|
||||||
- Loading: Fix IPFS loading of WARCs
|
- Loading: Fix IPFS loading of WARCs
|
||||||
@@ -237,22 +279,26 @@ v1.5.4
|
|||||||
- Dependencies: update to wabac.js 2.9.4
|
- Dependencies: update to wabac.js 2.9.4
|
||||||
|
|
||||||
v1.5.3
|
v1.5.3
|
||||||
|
|
||||||
- Fidelity: fix for some eval replay (via wombat), include http->https check for wacz sources
|
- Fidelity: fix for some eval replay (via wombat), include http->https check for wacz sources
|
||||||
- Dependencies: update to webpack 5 build, wabac.js 2.9.2, wombat 3.3.4
|
- Dependencies: update to webpack 5 build, wabac.js 2.9.2, wombat 3.3.4
|
||||||
- Search: update to latest flexsearch, faster/improved searching
|
- Search: update to latest flexsearch, faster/improved searching
|
||||||
|
|
||||||
v1.5.2
|
v1.5.2
|
||||||
|
|
||||||
- App: IPFS: Configure js-ipfs repo directory to be in existing profile directory
|
- App: IPFS: Configure js-ipfs repo directory to be in existing profile directory
|
||||||
- Loading: IPFS: Fix IPFS support for OSX M1 builds by including leveldown prebuilds
|
- Loading: IPFS: Fix IPFS support for OSX M1 builds by including leveldown prebuilds
|
||||||
- Dependencies: update to wabac.js 2.9.1, wombat 3.3.3
|
- Dependencies: update to wabac.js 2.9.1, wombat 3.3.3
|
||||||
|
|
||||||
v1.5.1
|
v1.5.1
|
||||||
|
|
||||||
- Library usage: Simplfy download options in editable mode, add warc/1.0 download opt (for archiveweb.page)
|
- Library usage: Simplfy download options in editable mode, add warc/1.0 download opt (for archiveweb.page)
|
||||||
- Library usage: Allow custom service worker init path on app init (or none)
|
- Library usage: Allow custom service worker init path on app init (or none)
|
||||||
- Library usage: Ensure page title reflects current app
|
- Library usage: Ensure page title reflects current app
|
||||||
- UI: Refresh UI after half second while waiting for service worker to load, instead of every 5.
|
- UI: Refresh UI after half second while waiting for service worker to load, instead of every 5.
|
||||||
|
|
||||||
v1.5.0
|
v1.5.0
|
||||||
|
|
||||||
- Update to wabac.js 2.9.0-beta.1, fidelity and loading improvements, smaller size (includes indexeddb data migration)
|
- Update to wabac.js 2.9.0-beta.1, fidelity and loading improvements, smaller size (includes indexeddb data migration)
|
||||||
- Update to electron 14 (latest beta), Chromium 93
|
- Update to electron 14 (latest beta), Chromium 93
|
||||||
- Update to Universal builds for OS X.
|
- Update to Universal builds for OS X.
|
||||||
@@ -260,6 +306,7 @@ v1.5.0
|
|||||||
- Embeds: Better error message for when service worker could not be loaded.
|
- Embeds: Better error message for when service worker could not be loaded.
|
||||||
|
|
||||||
v1.4.7
|
v1.4.7
|
||||||
|
|
||||||
- Loading: HAR file loading: Add messages when HAR file content is missing, don't filter out empty urls (via wabac.js)
|
- Loading: HAR file loading: Add messages when HAR file content is missing, don't filter out empty urls (via wabac.js)
|
||||||
- Loading: Fix "null" added on Not Found error page when there is no hashtag.
|
- Loading: Fix "null" added on Not Found error page when there is no hashtag.
|
||||||
- Fidelity: Disable post-to-GET conversion (no longer need in latest Chrome!)
|
- Fidelity: Disable post-to-GET conversion (no longer need in latest Chrome!)
|
||||||
@@ -268,6 +315,7 @@ v1.4.7
|
|||||||
- Dependencies: bump to wabac.js 2.8.0, wombat to 3.3.1
|
- Dependencies: bump to wabac.js 2.8.0, wombat to 3.3.1
|
||||||
|
|
||||||
v1.4.6
|
v1.4.6
|
||||||
|
|
||||||
- Fidelity: Better WS override that avoids network connection attempts, fixes to pixel ratio override (via wombat.js)
|
- Fidelity: Better WS override that avoids network connection attempts, fixes to pixel ratio override (via wombat.js)
|
||||||
- Fidelity: Better SW override, add missing members that caused errors (via wombat.js)
|
- Fidelity: Better SW override, add missing members that caused errors (via wombat.js)
|
||||||
- Fidelity: Better Storage overrides, more compatible with native Storage APIs (via wombat.js)
|
- Fidelity: Better Storage overrides, more compatible with native Storage APIs (via wombat.js)
|
||||||
@@ -276,17 +324,20 @@ v1.4.6
|
|||||||
- Dependencies: bump to wabac.js 2.7.10, wombat 3.2.2
|
- Dependencies: bump to wabac.js 2.7.10, wombat 3.2.2
|
||||||
|
|
||||||
v1.4.5
|
v1.4.5
|
||||||
|
|
||||||
- Loading: Fix IPFS loading (fixed in wabac.js 2.7.8)
|
- Loading: Fix IPFS loading (fixed in wabac.js 2.7.8)
|
||||||
- Fidelity: Support replaying localStorage/sessionStorage (if available)
|
- Fidelity: Support replaying localStorage/sessionStorage (if available)
|
||||||
- Dependencies: bump to wabac.js 2.7.7, wombat 3.2.0
|
- Dependencies: bump to wabac.js 2.7.7, wombat 3.2.0
|
||||||
|
|
||||||
v1.4.4
|
v1.4.4
|
||||||
|
|
||||||
- Loading: Fix loading from sources that don't support range requests for HEAD, don't send If-Range header (fixes in wabac.js 2.7.7)
|
- Loading: Fix loading from sources that don't support range requests for HEAD, don't send If-Range header (fixes in wabac.js 2.7.7)
|
||||||
- Loading: Cleanup of any partial data loaded when collection load fails (from wabac.js)
|
- Loading: Cleanup of any partial data loaded when collection load fails (from wabac.js)
|
||||||
- Fidelity: Improved fidelity of certain sites that use eval() (from wabac.js)
|
- Fidelity: Improved fidelity of certain sites that use eval() (from wabac.js)
|
||||||
- Dependencies: bump to wabac.js 2.7.8, wombat 3.1.8, Electron 11.4.8
|
- Dependencies: bump to wabac.js 2.7.8, wombat 3.1.8, Electron 11.4.8
|
||||||
|
|
||||||
v1.4.3
|
v1.4.3
|
||||||
|
|
||||||
- Loading: Various fixes to index loading for compessed WACZ index
|
- Loading: Various fixes to index loading for compessed WACZ index
|
||||||
- Fidelity: Fix edge-case POST-to-get conversion - binary, empty and text/plain POST payloads now handled same way here (via wabac.js/warcio.js) as in other tools (pywb, cdxj-indexer)
|
- Fidelity: Fix edge-case POST-to-get conversion - binary, empty and text/plain POST payloads now handled same way here (via wabac.js/warcio.js) as in other tools (pywb, cdxj-indexer)
|
||||||
- Customization: Support for automated redirect to live page on not found (via embed options)
|
- Customization: Support for automated redirect to live page on not found (via embed options)
|
||||||
@@ -295,15 +346,18 @@ v1.4.3
|
|||||||
- Dependencies: bump to wabac.js 2.7.4
|
- Dependencies: bump to wabac.js 2.7.4
|
||||||
|
|
||||||
v1.4.2
|
v1.4.2
|
||||||
|
|
||||||
- Loading: Optimized loading WACZ in wabac.js (cache compressed index loading to avoid duplicate loading)
|
- Loading: Optimized loading WACZ in wabac.js (cache compressed index loading to avoid duplicate loading)
|
||||||
- Loading: General fixes for WACZ loading (better format detection for newer and older versions, surt/non-surt indexes)
|
- Loading: General fixes for WACZ loading (better format detection for newer and older versions, surt/non-surt indexes)
|
||||||
- Update to latest wabac.js 2.7.3
|
- Update to latest wabac.js 2.7.3
|
||||||
|
|
||||||
v1.4.1
|
v1.4.1
|
||||||
|
|
||||||
- Replay: Remove 'download' attribute from anchor tags, which doesn't work in Chrome
|
- Replay: Remove 'download' attribute from anchor tags, which doesn't work in Chrome
|
||||||
- Loading: Fix loading of full-text search index from older wacz
|
- Loading: Fix loading of full-text search index from older wacz
|
||||||
|
|
||||||
v1.4.0
|
v1.4.0
|
||||||
|
|
||||||
- Embed: add 'noSandbox' option to not add sandbox to embed iframe
|
- Embed: add 'noSandbox' option to not add sandbox to embed iframe
|
||||||
- UI: Double-clicking on page entry causes reload.
|
- UI: Double-clicking on page entry causes reload.
|
||||||
- UI: Fix location bar enter not always reloading specified URL
|
- UI: Fix location bar enter not always reloading specified URL
|
||||||
@@ -321,18 +375,22 @@ v1.4.0
|
|||||||
- Dependencies: wabac 2.7.0, bulma 0.9.2, electron 11.4.3
|
- Dependencies: wabac 2.7.0, bulma 0.9.2, electron 11.4.3
|
||||||
|
|
||||||
v1.3.15
|
v1.3.15
|
||||||
|
|
||||||
- Fidelity: fix encoding issues with UTF-8 encoded JS/CSS introduced in 1.3.13 (fixed via wabac 2.6.9)
|
- Fidelity: fix encoding issues with UTF-8 encoded JS/CSS introduced in 1.3.13 (fixed via wabac 2.6.9)
|
||||||
- Dependencies: wabac 2.6.9
|
- Dependencies: wabac 2.6.9
|
||||||
|
|
||||||
v1.3.14
|
v1.3.14
|
||||||
|
|
||||||
- Build: Fix incorrectly packaged npm package for 1.3.13, no other changes
|
- Build: Fix incorrectly packaged npm package for 1.3.13, no other changes
|
||||||
|
|
||||||
v1.3.13
|
v1.3.13
|
||||||
|
|
||||||
- Fidelity: fix encoding issues with non-UTF-8 encoded pages (wabac 2.6.8)
|
- Fidelity: fix encoding issues with non-UTF-8 encoded pages (wabac 2.6.8)
|
||||||
- Fidelity: Better detection of JSONP, better rewriting of pages that use JSONP (wabac 2.6.7)
|
- Fidelity: Better detection of JSONP, better rewriting of pages that use JSONP (wabac 2.6.7)
|
||||||
- Dependencies: wabac 2.6.8
|
- Dependencies: wabac 2.6.8
|
||||||
|
|
||||||
v1.3.12
|
v1.3.12
|
||||||
|
|
||||||
- Loading: Fix bug with pages from WACZ files showing loading time, instead of actual timestamp.
|
- Loading: Fix bug with pages from WACZ files showing loading time, instead of actual timestamp.
|
||||||
- Loading: WACZ loading works efficiently even when HEAD method is not supported.
|
- Loading: WACZ loading works efficiently even when HEAD method is not supported.
|
||||||
- Embeds: Resolve embed source to current page instead of to replayBase
|
- Embeds: Resolve embed source to current page instead of to replayBase
|
||||||
@@ -340,12 +398,14 @@ v1.3.12
|
|||||||
- Dependencies: wabac 2.6.6
|
- Dependencies: wabac 2.6.6
|
||||||
|
|
||||||
v1.3.11
|
v1.3.11
|
||||||
|
|
||||||
- Loading: Fix regression in indexing of WARCs, including ignoring metadata records that were accidentally being indexed.
|
- Loading: Fix regression in indexing of WARCs, including ignoring metadata records that were accidentally being indexed.
|
||||||
- Loading: Add periodic ping when loading to avoid serviceworker shutdown in Firefox.
|
- Loading: Add periodic ping when loading to avoid serviceworker shutdown in Firefox.
|
||||||
- UI: On load failure, only add 'try again' option when reasonable.
|
- UI: On load failure, only add 'try again' option when reasonable.
|
||||||
- Dependencies: wabac 2.6.5
|
- Dependencies: wabac 2.6.5
|
||||||
|
|
||||||
v1.3.10
|
v1.3.10
|
||||||
|
|
||||||
- Loading: Improved loading of video, especially on Safari, cache range requests via loading
|
- Loading: Improved loading of video, especially on Safari, cache range requests via loading
|
||||||
- Loading: Improved loading stability from service worker waiting for loading event to finish!
|
- Loading: Improved loading stability from service worker waiting for loading event to finish!
|
||||||
- UI: Allow retry on loading errors even in non-embed mode.
|
- UI: Allow retry on loading errors even in non-embed mode.
|
||||||
@@ -355,10 +415,12 @@ v1.3.10
|
|||||||
- Dependencies: wabac.js 2.6.4, wombat 3.1.2, warcio 1.4.2, Electron 11.3.0
|
- Dependencies: wabac.js 2.6.4, wombat 3.1.2, warcio 1.4.2, Electron 11.3.0
|
||||||
|
|
||||||
v1.3.9
|
v1.3.9
|
||||||
|
|
||||||
- Fidelity: Upgrade to wabac.js 2.6.1, wombat 3.1.1: improved POST request rewriting for multipart/form-data, Tableau dashboard fidelity
|
- Fidelity: Upgrade to wabac.js 2.6.1, wombat 3.1.1: improved POST request rewriting for multipart/form-data, Tableau dashboard fidelity
|
||||||
- UI: editable mode: style fix on page delete spinner, don't show editing options on sidebar
|
- UI: editable mode: style fix on page delete spinner, don't show editing options on sidebar
|
||||||
|
|
||||||
v1.3.8
|
v1.3.8
|
||||||
|
|
||||||
- UI: Native files: Support asking permission when doing a full reload of a local file.
|
- UI: Native files: Support asking permission when doing a full reload of a local file.
|
||||||
- Library: Add WrModal UI element to simplify modal creation.
|
- Library: Add WrModal UI element to simplify modal creation.
|
||||||
- Library: UI: Add confirmation for page-deletion and multi page deletion when in editing mode (currently only used in ArchiveWeb.page)
|
- Library: UI: Add confirmation for page-deletion and multi page deletion when in editing mode (currently only used in ArchiveWeb.page)
|
||||||
@@ -366,33 +428,41 @@ v1.3.8
|
|||||||
- Dependencies: Update to wabac.js 2.5.6, wombat 3.0.4
|
- Dependencies: Update to wabac.js 2.5.6, wombat 3.0.4
|
||||||
|
|
||||||
v1.3.7
|
v1.3.7
|
||||||
|
|
||||||
- Library: Add missing index.js to support loading 'replaywebpage' package
|
- Library: Add missing index.js to support loading 'replaywebpage' package
|
||||||
|
|
||||||
v1.3.6
|
v1.3.6
|
||||||
|
|
||||||
- Switch back to Electron 11.2.0 / Chrome 87 to keep support for Flash plugin
|
- Switch back to Electron 11.2.0 / Chrome 87 to keep support for Flash plugin
|
||||||
|
|
||||||
v1.3.5
|
v1.3.5
|
||||||
|
|
||||||
- Dependency update: Latest wabac.js / warcio / wombat
|
- Dependency update: Latest wabac.js / warcio / wombat
|
||||||
- Electron App: Update to Chrome 88, fix for PDF rendering
|
- Electron App: Update to Chrome 88, fix for PDF rendering
|
||||||
|
|
||||||
v1.3.4
|
v1.3.4
|
||||||
|
|
||||||
- Loading: Fix loading local files in App
|
- Loading: Fix loading local files in App
|
||||||
- Fidelity: Latest wabac.js
|
- Fidelity: Latest wabac.js
|
||||||
- Autoupdate: Add initial support for auto-updating
|
- Autoupdate: Add initial support for auto-updating
|
||||||
|
|
||||||
v1.3.3
|
v1.3.3
|
||||||
|
|
||||||
- UI: Component customization improvements, update to latest wabac.js
|
- UI: Component customization improvements, update to latest wabac.js
|
||||||
- Loading: Improvements for IPFS loading, fix loading with hashtag #filename= in Electron app
|
- Loading: Improvements for IPFS loading, fix loading with hashtag #filename= in Electron app
|
||||||
|
|
||||||
v1.3.2
|
v1.3.2
|
||||||
|
|
||||||
- UI: Show navbar on all pages, include breadcrumbs with collection title current page
|
- UI: Show navbar on all pages, include breadcrumbs with collection title current page
|
||||||
- UI: Condense frontpage UI slightly
|
- UI: Condense frontpage UI slightly
|
||||||
|
|
||||||
v1.3.1
|
v1.3.1
|
||||||
|
|
||||||
- Loading: Support updated WACZ Format (1.0.0) with latest wabac.js update
|
- Loading: Support updated WACZ Format (1.0.0) with latest wabac.js update
|
||||||
- Loading: Archives loaded with via native file system can be reloaded after purge cache (chrome only)
|
- Loading: Archives loaded with via native file system can be reloaded after purge cache (chrome only)
|
||||||
|
|
||||||
v1.3.0
|
v1.3.0
|
||||||
|
|
||||||
- UI: Condense navbar and location bar: add logo to location bar, condense button spacing, add about link to context menu
|
- UI: Condense navbar and location bar: add logo to location bar, condense button spacing, add about link to context menu
|
||||||
- UI: Add collection info dropdown to be a separate tab instead
|
- UI: Add collection info dropdown to be a separate tab instead
|
||||||
- UI: Convert Terms into general About dialog
|
- UI: Convert Terms into general About dialog
|
||||||
@@ -405,22 +475,23 @@ v1.3.0
|
|||||||
- UI: Purge Cache / Full Reload reloads current frame, not parent
|
- UI: Purge Cache / Full Reload reloads current frame, not parent
|
||||||
|
|
||||||
v1.2.1
|
v1.2.1
|
||||||
|
|
||||||
- Loading/UI: Fix Google Drive Loading/Reauthorization: Only trigger when reauth is needed. For rate-limit errors, attempt reloading more slowly (exponential backoff)
|
- Loading/UI: Fix Google Drive Loading/Reauthorization: Only trigger when reauth is needed. For rate-limit errors, attempt reloading more slowly (exponential backoff)
|
||||||
- Loading: ReplayWeb.page App supports opening WACZ, WARC and HAR files via double-clicking from OS and via command-line.
|
- Loading: ReplayWeb.page App supports opening WACZ, WARC and HAR files via double-clicking from OS and via command-line.
|
||||||
|
|
||||||
v1.2.0
|
v1.2.0
|
||||||
|
|
||||||
- UI: Location bar fixes: Enter reloads same URL, Escape restores current URL, properly updated on navigation, Favicon displayed in location bar if available
|
- UI: Location bar fixes: Enter reloads same URL, Escape restores current URL, properly updated on navigation, Favicon displayed in location bar if available
|
||||||
- UI: URL search defaults to all URL query, not HTML only query
|
- UI: URL search defaults to all URL query, not HTML only query
|
||||||
- Fidelity: Rewriting system overhaul, improved youtube rules, fuzzy matching improvements (using Levenshtein distance for query args)
|
- Fidelity: Rewriting system overhaul, improved youtube rules, fuzzy matching improvements (using Levenshtein distance for query args)
|
||||||
- Backend: Support for WARC record proxy, including kiwix/zim style separate headers and payload requests: headers loaded from `<prefix>/H/<url>`, payload from `<prefix>/A/<url>`
|
- Backend: Support for WARC record proxy, including kiwix/zim style separate headers and payload requests: headers loaded from `<prefix>/H/<url>`, payload from `<prefix>/A/<url>`
|
||||||
|
|
||||||
|
|
||||||
v1.1.2
|
v1.1.2
|
||||||
|
|
||||||
- UI: Fix auto-loading of additional results on url search page when searching by mime type.
|
- UI: Fix auto-loading of additional results on url search page when searching by mime type.
|
||||||
- Fidelity: More fixes to replay of embedded "about:blank", fix replay of embedded tweets in particular.
|
- Fidelity: More fixes to replay of embedded "about:blank", fix replay of embedded tweets in particular.
|
||||||
- Fidelity: Various improvements to fuzzy matching (longer params weighed higher, numeric params weighed by difference, support for required params)
|
- Fidelity: Various improvements to fuzzy matching (longer params weighed higher, numeric params weighed by difference, support for required params)
|
||||||
|
|
||||||
|
|
||||||
v1.1.1
|
v1.1.1
|
||||||
|
|
||||||
- UI: Sort column is now remembered (for page lists, url resources and main collection lists)
|
- UI: Sort column is now remembered (for page lists, url resources and main collection lists)
|
||||||
@@ -429,7 +500,6 @@ v1.1.1
|
|||||||
- Fidelity: Fixed rewriting of web workers
|
- Fidelity: Fixed rewriting of web workers
|
||||||
- Fidelity: Fixed rewriting of embedded "about:blank" iframes, which may not have replayed correctly.
|
- Fidelity: Fixed rewriting of embedded "about:blank" iframes, which may not have replayed correctly.
|
||||||
|
|
||||||
|
|
||||||
v1.1.0
|
v1.1.0
|
||||||
|
|
||||||
- Improved UI for embedding, allow viewing all search (story/pages/url) tabs
|
- Improved UI for embedding, allow viewing all search (story/pages/url) tabs
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
# ReplayWeb.page
|
# ReplayWeb.page
|
||||||
|
|
||||||
## Serverless Web Archive Replay
|
## Serverless Web Archive Replay
|
||||||
|
|
||||||
[Embedded Viewer](https://replayweb.page/docs/embedding) Usage: [](https://www.jsdelivr.com/package/npm/replaywebpage)
|
[Embedded Viewer](https://replayweb.page/docs/embedding) Usage: [](https://www.jsdelivr.com/package/npm/replaywebpage)
|
||||||
|
|
||||||
ReplayWeb.page provides a full web archive replay system running directly in the browser,
|
ReplayWeb.page provides a full web archive replay system running directly in the browser,
|
||||||
@@ -18,7 +19,6 @@ The ReplayWeb.page App can be downloaded from the [Releases](https://replayweb.p
|
|||||||
|
|
||||||
See the [Embedding Guide](https://replayweb.page/docs/embedding) for more info on embedding web archives in other sites.
|
See the [Embedding Guide](https://replayweb.page/docs/embedding) for more info on embedding web archives in other sites.
|
||||||
|
|
||||||
|
|
||||||
## What's in this repo
|
## What's in this repo
|
||||||
|
|
||||||
ReplayWeb.page is a static web site / offline web app + Electron app.
|
ReplayWeb.page is a static web site / offline web app + Electron app.
|
||||||
@@ -29,6 +29,7 @@ implementation found at: https://github.com/webrecorder/wabac.js
|
|||||||
The frontend is loaded from `ui.js`, while the backend service/web worker is loaded from `sw.js`.
|
The frontend is loaded from `ui.js`, while the backend service/web worker is loaded from `sw.js`.
|
||||||
|
|
||||||
This repository contains:
|
This repository contains:
|
||||||
|
|
||||||
- The built assets for the site hosted at https://replayweb.page/ via GitHub Pages
|
- The built assets for the site hosted at https://replayweb.page/ via GitHub Pages
|
||||||
- The package for npm module: https://www.npmjs.com/package/replaywebpage
|
- The package for npm module: https://www.npmjs.com/package/replaywebpage
|
||||||
- A build system for https://replayweb.page and ReplayWeb.page App.
|
- A build system for https://replayweb.page and ReplayWeb.page App.
|
||||||
@@ -41,7 +42,6 @@ To run ReplayWeb.page and view web archives, a regular HTTP server is all that i
|
|||||||
|
|
||||||
ReplayWeb.page can run with any HTTP server locally. For example, you can run `http-server -p 9990` or `python -m http.server 9990` to run a static web server in the directory of this repository. Then, simply load `http://localhost:9990/` and you'll have replayweb.page running locally.
|
ReplayWeb.page can run with any HTTP server locally. For example, you can run `http-server -p 9990` or `python -m http.server 9990` to run a static web server in the directory of this repository. Then, simply load `http://localhost:9990/` and you'll have replayweb.page running locally.
|
||||||
|
|
||||||
|
|
||||||
## Developing ReplayWeb.page
|
## Developing ReplayWeb.page
|
||||||
|
|
||||||
ReplayWeb.page is built as a Node package can be installed using yarn:
|
ReplayWeb.page is built as a Node package can be installed using yarn:
|
||||||
@@ -66,29 +66,20 @@ The package provides various commands that can be used with yarn:
|
|||||||
|
|
||||||
- `yarn run start-jekyll` - to build Jekyll docs and start Jekyll static server on port 4000.
|
- `yarn run start-jekyll` - to build Jekyll docs and start Jekyll static server on port 4000.
|
||||||
|
|
||||||
|
|
||||||
The static assets are placed in the root `index.html`, `sw.js` and `ui.js`, and can be used with any HTTP server.
|
The static assets are placed in the root `index.html`, `sw.js` and `ui.js`, and can be used with any HTTP server.
|
||||||
|
|
||||||
For service workers to work, they must be served from either localhost or an HTTPS endpoint.
|
For service workers to work, they must be served from either localhost or an HTTPS endpoint.
|
||||||
|
|
||||||
See the [user docs](https://replayweb.page/docs/) for additional info about using ReplayWeb.page
|
See the [user docs](https://replayweb.page/docs/) for additional info about using ReplayWeb.page
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## LICENSE
|
## LICENSE
|
||||||
|
|
||||||
ReplayWeb.page is made available under the AGPLv3 License.
|
ReplayWeb.page is made available under the AGPLv3 License.
|
||||||
|
|
||||||
If you would like to use it under a different license or have a question, please reach out as that may be a possibility.
|
If you would like to use it under a different license or have a question, please reach out as that may be a possibility.
|
||||||
|
|
||||||
|
|
||||||
## Contributing and Bug Reports
|
## Contributing and Bug Reports
|
||||||
|
|
||||||
Contributions are definitely welcome!
|
Contributions are definitely welcome!
|
||||||
|
|
||||||
As this is still a new project and rapidly evolving, please open an issue first before submitting a pull request.
|
As this is still a new project and rapidly evolving, please open an issue first before submitting a pull request.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -42,4 +42,3 @@ exclude:
|
|||||||
- plugins-win/
|
- plugins-win/
|
||||||
- plugins-mac/
|
- plugins-mac/
|
||||||
- plugins-linux/
|
- plugins-linux/
|
||||||
|
|
||||||
|
|||||||
@@ -44,4 +44,3 @@ $nav-width-md: $nav-width;
|
|||||||
padding: 0 0 0 10px;
|
padding: 0 0 0 10px;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-4
@@ -119,9 +119,7 @@ a:focus {
|
|||||||
font-size: $body-size;
|
font-size: $body-size;
|
||||||
-moz-osx-font-smoothing: grayscale;
|
-moz-osx-font-smoothing: grayscale;
|
||||||
-webkit-font-smoothing: antialiased;
|
-webkit-font-smoothing: antialiased;
|
||||||
min-width: $body-min-width;
|
min-width: $body-min-width; // @todo(emma, 2023-11-06) investigate why this is here
|
||||||
overflow-x: $body-overflow-x;
|
|
||||||
overflow-y: $body-overflow-y;
|
|
||||||
text-rendering: $body-rendering;
|
text-rendering: $body-rendering;
|
||||||
text-size-adjust: 100%;
|
text-size-adjust: 100%;
|
||||||
|
|
||||||
@@ -132,7 +130,6 @@ a:focus {
|
|||||||
line-height: $body-line-height;
|
line-height: $body-line-height;
|
||||||
|
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
overflow: hidden;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make available to screen readers while hiding element visually:
|
// Make available to screen readers while hiding element visually:
|
||||||
|
|||||||
+16
-13
@@ -1,15 +1,18 @@
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<script src="ui.js"></script>
|
<script src="ui.js"></script>
|
||||||
<style>
|
<style>
|
||||||
body {
|
body {
|
||||||
background-color: lightgrey;
|
background-color: lightgrey;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
<replay-web-page
|
||||||
<replay-web-page replaybase="./" embed="replay-with-info" src="./docs/assets/tweet-example.wacz" url="page:0"></replay-web-page>
|
replaybase="./"
|
||||||
|
embed="replay-with-info"
|
||||||
</body>
|
src="./docs/assets/tweet-example.wacz"
|
||||||
|
url="page:0"
|
||||||
|
></replay-web-page>
|
||||||
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+10
-10
@@ -1,13 +1,13 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html class="no-overflow">
|
<html class="no-overflow">
|
||||||
<head>
|
<head>
|
||||||
<link rel="manifest" href="/webmanifest.json">
|
<link rel="manifest" href="/webmanifest.json" />
|
||||||
<link rel="icon" href="build/icon.png" type="image/png" />
|
<link rel="icon" href="build/icon.png" type="image/png" />
|
||||||
<title>ReplayWeb.page</title>
|
<title>ReplayWeb.page</title>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<script src="./ui.js"></script>
|
<script src="./ui.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<replay-app-main></replay-app-main>
|
<replay-app-main></replay-app-main>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+7
-4
@@ -30,12 +30,14 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/flexsearch": "^0.7.3",
|
"@types/flexsearch": "^0.7.3",
|
||||||
|
"@typescript-eslint/eslint-plugin": "^6.9.1",
|
||||||
|
"@typescript-eslint/parser": "^6.9.1",
|
||||||
"copy-webpack-plugin": "^9.0.1",
|
"copy-webpack-plugin": "^9.0.1",
|
||||||
"css-loader": "^6.2.0",
|
"css-loader": "^6.2.0",
|
||||||
"electron": "^25.1.1",
|
"electron": "^25.1.1",
|
||||||
"electron-builder": "^23.0.3",
|
"electron-builder": "^23.0.3",
|
||||||
"electron-notarize": "^1.1.1",
|
"electron-notarize": "^1.1.1",
|
||||||
"eslint": "^8.23.1",
|
"eslint": "^8.52.0",
|
||||||
"eslint-config-prettier": "^9.0.0",
|
"eslint-config-prettier": "^9.0.0",
|
||||||
"eslint-plugin-lit": "^1.9.1",
|
"eslint-plugin-lit": "^1.9.1",
|
||||||
"http-server": "^13.0.2",
|
"http-server": "^13.0.2",
|
||||||
@@ -48,8 +50,9 @@
|
|||||||
"sass-loader": "^13.3.2",
|
"sass-loader": "^13.3.2",
|
||||||
"style-loader": "^3.2.1",
|
"style-loader": "^3.2.1",
|
||||||
"svg-inline-loader": "^0.8.2",
|
"svg-inline-loader": "^0.8.2",
|
||||||
|
"ts-lit-plugin": "^2.0.0-pre.1",
|
||||||
"ts-loader": "^9.4.4",
|
"ts-loader": "^9.4.4",
|
||||||
"typescript": "^5.1.6",
|
"typescript": "^5.2.2",
|
||||||
"webpack": "^5.75.0",
|
"webpack": "^5.75.0",
|
||||||
"webpack-cli": "^5.0.1",
|
"webpack-cli": "^5.0.1",
|
||||||
"webpack-dev-server": "^4.11.1"
|
"webpack-dev-server": "^4.11.1"
|
||||||
@@ -76,8 +79,8 @@
|
|||||||
"dist": "yarn run build && yarn run pack",
|
"dist": "yarn run build && yarn run pack",
|
||||||
"dist-dev": "yarn run build-dev && yarn run pack",
|
"dist-dev": "yarn run build-dev && yarn run pack",
|
||||||
"release": "yarn run build && electron-builder",
|
"release": "yarn run build && electron-builder",
|
||||||
"lint": "eslint ./src/ webpack.config.js",
|
"lint": "eslint ./",
|
||||||
"format": "prettier --write ./src",
|
"format": "prettier --write ./",
|
||||||
"prepare": "husky install"
|
"prepare": "husky install"
|
||||||
},
|
},
|
||||||
"build": {
|
"build": {
|
||||||
|
|||||||
+10
-7
@@ -1,5 +1,5 @@
|
|||||||
import { LitElement, html, css } from "lit";
|
import { LitElement, html, css } from "lit";
|
||||||
import { property, state } from "lit/decorators.js";
|
import { property } from "lit/decorators.js";
|
||||||
import { ifDefined } from "lit/directives/if-defined.js";
|
import { ifDefined } from "lit/directives/if-defined.js";
|
||||||
import {
|
import {
|
||||||
wrapCss,
|
wrapCss,
|
||||||
@@ -13,6 +13,9 @@ import fasHelp from "@fortawesome/fontawesome-free/svgs/solid/question-circle.sv
|
|||||||
import fasArrowLeft from "@fortawesome/fontawesome-free/svgs/solid/arrow-left.svg";
|
import fasArrowLeft from "@fortawesome/fontawesome-free/svgs/solid/arrow-left.svg";
|
||||||
import fasArrowRight from "@fortawesome/fontawesome-free/svgs/solid/arrow-right.svg";
|
import fasArrowRight from "@fortawesome/fontawesome-free/svgs/solid/arrow-right.svg";
|
||||||
import { SWManager } from "./swmanager";
|
import { SWManager } from "./swmanager";
|
||||||
|
import "./item";
|
||||||
|
import "./item-index";
|
||||||
|
import "./chooser";
|
||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
class ReplayWebApp extends LitElement {
|
class ReplayWebApp extends LitElement {
|
||||||
@@ -157,7 +160,7 @@ class ReplayWebApp extends LitElement {
|
|||||||
min-width: 0px;
|
min-width: 0px;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
wr-coll {
|
wr-item {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
.navbar {
|
.navbar {
|
||||||
@@ -379,7 +382,7 @@ class ReplayWebApp extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
renderColl() {
|
renderColl() {
|
||||||
return html` <wr-coll
|
return html` <wr-item
|
||||||
.loadInfo="${this.loadInfo}"
|
.loadInfo="${this.loadInfo}"
|
||||||
sourceUrl="${this.sourceUrl || ""}"
|
sourceUrl="${this.sourceUrl || ""}"
|
||||||
embed="${this.embed}"
|
embed="${this.embed}"
|
||||||
@@ -390,11 +393,11 @@ class ReplayWebApp extends LitElement {
|
|||||||
@update-title=${this.onTitle}
|
@update-title=${this.onTitle}
|
||||||
@coll-loaded=${this.onCollLoaded}
|
@coll-loaded=${this.onCollLoaded}
|
||||||
@about-show=${() => (this.showAbout = true)}
|
@about-show=${() => (this.showAbout = true)}
|
||||||
></wr-coll>`;
|
></wr-item>`;
|
||||||
}
|
}
|
||||||
|
|
||||||
renderHomeIndex() {
|
renderHomeIndex() {
|
||||||
return html` <wr-coll-index>
|
return html` <wr-item-index>
|
||||||
${!IS_APP
|
${!IS_APP
|
||||||
? html`
|
? html`
|
||||||
<p slot="header" class="tagline is-size-5 has-text-centered">
|
<p slot="header" class="tagline is-size-5 has-text-centered">
|
||||||
@@ -412,7 +415,7 @@ class ReplayWebApp extends LitElement {
|
|||||||
@did-drop-file="${() => (this.droppedFile = null)}"
|
@did-drop-file="${() => (this.droppedFile = null)}"
|
||||||
@load-start=${this.onStartLoad}
|
@load-start=${this.onStartLoad}
|
||||||
></wr-chooser>
|
></wr-chooser>
|
||||||
</wr-coll-index>`;
|
</wr-item-index>`;
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
@@ -763,7 +766,7 @@ class ReplayWebApp extends LitElement {
|
|||||||
<summary>Legalese:</summary>
|
<summary>Legalese:</summary>
|
||||||
<p style="font-size: 0.8rem">DISCLAIMER OF SOFTWARE WARRANTY. WEBRECORDER SOFTWARE PROVIDES THIS SOFTWARE TO YOU "AS AVAILABLE"
|
<p style="font-size: 0.8rem">DISCLAIMER OF SOFTWARE WARRANTY. WEBRECORDER SOFTWARE PROVIDES THIS SOFTWARE TO YOU "AS AVAILABLE"
|
||||||
AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,
|
AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,
|
||||||
INCLUDING WITHOUT LIMITATION ANY WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
|
INCLUDING WITHOUT LIMITATION ANY WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.</p>
|
||||||
</details>
|
</details>
|
||||||
<div class="has-text-centered">
|
<div class="has-text-centered">
|
||||||
<a class="button is-warning" href="#" @click="${
|
<a class="button is-warning" href="#" @click="${
|
||||||
|
|||||||
+2
-1
@@ -37,7 +37,8 @@ class Chooser extends LitElement {
|
|||||||
static get properties() {
|
static get properties() {
|
||||||
return {
|
return {
|
||||||
fileDisplayName: { type: String },
|
fileDisplayName: { type: String },
|
||||||
droppedFile: { type: File },
|
/** @type File */
|
||||||
|
droppedFile: { attribute: false },
|
||||||
newFullImport: { type: Boolean },
|
newFullImport: { type: Boolean },
|
||||||
noHead: { type: Boolean },
|
noHead: { type: Boolean },
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,625 +0,0 @@
|
|||||||
import { LitElement, html, css } from "lit";
|
|
||||||
import { property, state } from "lit/decorators.js";
|
|
||||||
import { wrapCss, apiPrefix } from "./misc";
|
|
||||||
import { map } from "lit/directives/map.js";
|
|
||||||
|
|
||||||
import prettyBytes from "pretty-bytes";
|
|
||||||
|
|
||||||
import fasCopy from "@fortawesome/fontawesome-free/svgs/regular/copy.svg";
|
|
||||||
|
|
||||||
import fasArrowUp from "@fortawesome/fontawesome-free/svgs/solid/angle-double-up.svg";
|
|
||||||
import fasArrowDown from "@fortawesome/fontawesome-free/svgs/solid/angle-double-down.svg";
|
|
||||||
|
|
||||||
import fasSearch from "@fortawesome/fontawesome-free/svgs/solid/search.svg";
|
|
||||||
|
|
||||||
import type { Coll } from "./types";
|
|
||||||
|
|
||||||
// ===========================================================================
|
|
||||||
class CollIndex extends LitElement {
|
|
||||||
@property({ type: Array })
|
|
||||||
colls: Coll[] = [];
|
|
||||||
|
|
||||||
@property({ type: String })
|
|
||||||
query = "";
|
|
||||||
|
|
||||||
@property({ type: Array })
|
|
||||||
filteredColls: any[] = [];
|
|
||||||
|
|
||||||
@property({ type: Array })
|
|
||||||
sortedColls: any[] | null = null;
|
|
||||||
|
|
||||||
@property({ type: Boolean })
|
|
||||||
hideHeader: any = null;
|
|
||||||
|
|
||||||
@property({ type: String })
|
|
||||||
dateName = "Date Loaded";
|
|
||||||
|
|
||||||
@property({ type: String })
|
|
||||||
headerName = "Loaded Archives";
|
|
||||||
|
|
||||||
@state()
|
|
||||||
private _deleting: any = {};
|
|
||||||
|
|
||||||
private typeFilter = "";
|
|
||||||
private indexParams = "";
|
|
||||||
|
|
||||||
constructor() {
|
|
||||||
super();
|
|
||||||
|
|
||||||
this.hideHeader = localStorage.getItem("index:hideHeader") === "1";
|
|
||||||
}
|
|
||||||
|
|
||||||
get sortKeys() {
|
|
||||||
return [
|
|
||||||
{ key: "title", name: "Title" },
|
|
||||||
|
|
||||||
{ key: "sourceUrl", name: "Source" },
|
|
||||||
|
|
||||||
{ key: "ctime", name: this.dateName },
|
|
||||||
|
|
||||||
{ key: "size", name: "Total Size" },
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
firstUpdated() {
|
|
||||||
this.loadColls();
|
|
||||||
}
|
|
||||||
|
|
||||||
updated(changedProperties) {
|
|
||||||
if (changedProperties.has("hideHeader")) {
|
|
||||||
localStorage.setItem("index:hideHeader", this.hideHeader ? "1" : "0");
|
|
||||||
}
|
|
||||||
if (changedProperties.has("colls") || changedProperties.has("query")) {
|
|
||||||
this.filter();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
filter() {
|
|
||||||
if (!this.query) {
|
|
||||||
this.filteredColls = this.colls;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.filteredColls = [];
|
|
||||||
|
|
||||||
for (const coll of this.colls) {
|
|
||||||
if (
|
|
||||||
coll.sourceUrl.indexOf(this.query) >= 0 ||
|
|
||||||
coll.filename.indexOf(this.query) >= 0 ||
|
|
||||||
(coll.loadUrl && coll.loadUrl.indexOf(this.query) >= 0) ||
|
|
||||||
(coll.title && coll.title.indexOf(this.query) >= 0)
|
|
||||||
) {
|
|
||||||
this.filteredColls.push(coll);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async loadColls() {
|
|
||||||
const resp = await fetch(`${apiPrefix}/coll-index?${this.indexParams}`);
|
|
||||||
try {
|
|
||||||
if (resp.status !== 200) {
|
|
||||||
throw new Error("Invalid API Response, Retry");
|
|
||||||
}
|
|
||||||
const json = await resp.json();
|
|
||||||
this.colls = json.colls.map((coll) => {
|
|
||||||
coll.title = coll.title || coll.filename;
|
|
||||||
return coll;
|
|
||||||
});
|
|
||||||
|
|
||||||
this._deleting = {};
|
|
||||||
this.sortedColls = [];
|
|
||||||
} catch (e) {
|
|
||||||
// likely no sw registered yet, or waiting for new sw to register, retry again
|
|
||||||
setTimeout(() => this.loadColls(), 500);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async onDeleteColl(event) {
|
|
||||||
event.preventDefault();
|
|
||||||
event.stopPropagation();
|
|
||||||
|
|
||||||
if (!this.sortedColls) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const index = Number(event.currentTarget.getAttribute("data-coll-index"));
|
|
||||||
|
|
||||||
const coll = this.sortedColls[index];
|
|
||||||
|
|
||||||
if (!coll || this._deleting[coll.sourceUrl]) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
this._deleting[coll.sourceUrl] = true;
|
|
||||||
this.requestUpdate();
|
|
||||||
|
|
||||||
const resp = await fetch(`${apiPrefix}/c/${coll.id}`, { method: "DELETE" });
|
|
||||||
if (resp.status === 200) {
|
|
||||||
const json = await resp.json();
|
|
||||||
this.colls = json.colls;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
static get styles() {
|
|
||||||
return wrapCss(CollIndex.compStyles);
|
|
||||||
}
|
|
||||||
|
|
||||||
static get compStyles() {
|
|
||||||
return css`
|
|
||||||
:host {
|
|
||||||
overflow-y: auto;
|
|
||||||
min-width: 0;
|
|
||||||
}
|
|
||||||
.size {
|
|
||||||
margin-right: 20px;
|
|
||||||
}
|
|
||||||
.extra-padding {
|
|
||||||
padding: 2em;
|
|
||||||
}
|
|
||||||
.no-top-padding {
|
|
||||||
padding-top: 1em;
|
|
||||||
}
|
|
||||||
.panel-heading {
|
|
||||||
font-size: 0.85rem;
|
|
||||||
}
|
|
||||||
.is-loading {
|
|
||||||
line-height: 1.5em;
|
|
||||||
height: 1.5em;
|
|
||||||
border: 0px;
|
|
||||||
background-color: transparent !important;
|
|
||||||
width: auto;
|
|
||||||
}
|
|
||||||
div.panel.is-light {
|
|
||||||
margin-bottom: 2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
fa-icon {
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
|
|
||||||
.panel-color {
|
|
||||||
background-color: rgb(210, 249, 214);
|
|
||||||
}
|
|
||||||
|
|
||||||
.copy {
|
|
||||||
color: black;
|
|
||||||
margin: 0px;
|
|
||||||
margin: 0;
|
|
||||||
line-height: 0.4em;
|
|
||||||
padding: 6px;
|
|
||||||
border-radius: 10px;
|
|
||||||
position: absolute;
|
|
||||||
}
|
|
||||||
.copy:active {
|
|
||||||
background-color: lightgray;
|
|
||||||
}
|
|
||||||
.sort-header {
|
|
||||||
padding: 0.3rem 0.3rem 0.3rem 0;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: row;
|
|
||||||
flex-flow: row wrap;
|
|
||||||
}
|
|
||||||
.sort-header .control {
|
|
||||||
flex: auto;
|
|
||||||
|
|
||||||
padding-left: 0.3rem;
|
|
||||||
width: initial;
|
|
||||||
}
|
|
||||||
wr-sorter {
|
|
||||||
padding: 0.3rem;
|
|
||||||
}
|
|
||||||
a.button.is-small.collapse {
|
|
||||||
border-radius: 6px;
|
|
||||||
}
|
|
||||||
.icon.is-left {
|
|
||||||
margin-left: 0.5rem;
|
|
||||||
}
|
|
||||||
.coll-block {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
.delete-button {
|
|
||||||
width: 32px;
|
|
||||||
position: absolute;
|
|
||||||
top: 10px;
|
|
||||||
right: 10px;
|
|
||||||
}
|
|
||||||
#sort-select::after {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
header {
|
|
||||||
transform: translate(0px, 0px);
|
|
||||||
transition: all 0.5s ease 0s;
|
|
||||||
visibility: visible;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
header.closed {
|
|
||||||
transform: translate(0, -100%);
|
|
||||||
transition: all 0.5s ease 0s;
|
|
||||||
visibility: visible;
|
|
||||||
height: 269px;
|
|
||||||
margin-top: -269px;
|
|
||||||
}
|
|
||||||
`;
|
|
||||||
}
|
|
||||||
|
|
||||||
renderHeader() {
|
|
||||||
return html`<h2 class="panel-heading panel-color">
|
|
||||||
<span>${this.headerName}</span>
|
|
||||||
</h2>`;
|
|
||||||
}
|
|
||||||
|
|
||||||
renderSearchHeader() {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
render() {
|
|
||||||
const hasHeader = this.childElementCount > 0;
|
|
||||||
|
|
||||||
return html`
|
|
||||||
<header class="${this.hideHeader ? "closed" : ""}">
|
|
||||||
<slot name="header"></slot>
|
|
||||||
</header>
|
|
||||||
<section class="section no-top-padding">
|
|
||||||
<div class="sort-header is-small">
|
|
||||||
${hasHeader
|
|
||||||
? html`
|
|
||||||
<button @click=${() =>
|
|
||||||
(this.hideHeader =
|
|
||||||
!this.hideHeader)} class="collapse button is-small">
|
|
||||||
<span class="icon"><fa-icon .svg=${
|
|
||||||
this.hideHeader ? fasArrowDown : fasArrowUp
|
|
||||||
}></span>
|
|
||||||
<span>${
|
|
||||||
this.hideHeader ? "Show " : "Hide"
|
|
||||||
} <span class="is-sr-only">Header</span></span>
|
|
||||||
</button>`
|
|
||||||
: ""}
|
|
||||||
</div>
|
|
||||||
<div class="panel">
|
|
||||||
${this.renderHeader()}
|
|
||||||
${this.colls.length
|
|
||||||
? html`
|
|
||||||
<div class="panel-block sort-header is-small">
|
|
||||||
${this.renderSearchHeader()}
|
|
||||||
<div class="control has-icons-left has-addons">
|
|
||||||
<input
|
|
||||||
type="text"
|
|
||||||
class="input is-small"
|
|
||||||
@input="${(e) => (this.query = e.currentTarget.value)}"
|
|
||||||
.value="${this.query}"
|
|
||||||
placeholder="Search by Archive Title or Source"
|
|
||||||
/>
|
|
||||||
<span class="icon is-left is-small">
|
|
||||||
<fa-icon .svg="${fasSearch}"></fa-icon>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<wr-sorter
|
|
||||||
id="index"
|
|
||||||
sortKey="ctime"
|
|
||||||
?sortDesc="${true}"
|
|
||||||
.sortKeys="${this.sortKeys}"
|
|
||||||
.data="${this.filteredColls}"
|
|
||||||
@sort-changed="${(e) =>
|
|
||||||
(this.sortedColls = e.detail.sortedData)}"
|
|
||||||
>
|
|
||||||
</wr-sorter>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="coll-list">
|
|
||||||
${this.sortedColls &&
|
|
||||||
this.sortedColls.map(
|
|
||||||
(coll, i) => html`
|
|
||||||
<div class="coll-block panel-block">
|
|
||||||
${this.renderCollInfo(coll)}
|
|
||||||
${!this._deleting[coll.sourceUrl]
|
|
||||||
? html`
|
|
||||||
<button
|
|
||||||
class="delete delete-button"
|
|
||||||
aria-label="Unload Collection"
|
|
||||||
title="Unload Collection"
|
|
||||||
data-coll-index="${i}"
|
|
||||||
@click="${this.onDeleteColl}"
|
|
||||||
></button>
|
|
||||||
`
|
|
||||||
: html` <span
|
|
||||||
class="button delete-button is-loading is-static"
|
|
||||||
>
|
|
||||||
Deleting
|
|
||||||
</span>`}
|
|
||||||
</div>
|
|
||||||
`,
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
`
|
|
||||||
: html`
|
|
||||||
<div class="panel-block extra-padding">
|
|
||||||
${this.sortedColls === null
|
|
||||||
? html`<i>Loading Archives...</i>`
|
|
||||||
: this.renderEmpty()}
|
|
||||||
</div>
|
|
||||||
`}
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
`;
|
|
||||||
}
|
|
||||||
|
|
||||||
renderCollInfo(coll: Coll) {
|
|
||||||
return html`<wr-coll-info .coll=${coll}></wr-coll-info>`;
|
|
||||||
}
|
|
||||||
|
|
||||||
renderEmpty() {
|
|
||||||
return html`<i
|
|
||||||
>No Archives so far! Archives loaded in the section above will appear
|
|
||||||
here.</i
|
|
||||||
>`;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ===========================================================================
|
|
||||||
class CollInfo extends LitElement {
|
|
||||||
@property({ type: Object })
|
|
||||||
coll!: Coll | Record<string, never>;
|
|
||||||
|
|
||||||
@property({ type: Boolean })
|
|
||||||
detailed = false;
|
|
||||||
|
|
||||||
@property({ type: Boolean })
|
|
||||||
canDelete = false;
|
|
||||||
|
|
||||||
static get styles() {
|
|
||||||
return wrapCss(CollInfo.compStyles);
|
|
||||||
}
|
|
||||||
|
|
||||||
static get compStyles() {
|
|
||||||
return css`
|
|
||||||
.columns {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
.column {
|
|
||||||
word-break: break-word;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
:host {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
min-width: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
:host(.is-list) .columns {
|
|
||||||
display: flex !important;
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
|
|
||||||
:host(.is-list) .column {
|
|
||||||
width: 100% !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.col-title:hover {
|
|
||||||
}
|
|
||||||
.col-title a {
|
|
||||||
display: block;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
.column:hover > .copy,
|
|
||||||
.col-content:hover .copy,
|
|
||||||
.copy:hover {
|
|
||||||
color: inherit;
|
|
||||||
}
|
|
||||||
.copy {
|
|
||||||
color: black;
|
|
||||||
margin: 0px;
|
|
||||||
margin: -4px 0 0;
|
|
||||||
line-height: 0.4em;
|
|
||||||
padding: 6px;
|
|
||||||
border-radius: 10px;
|
|
||||||
position: absolute;
|
|
||||||
}
|
|
||||||
.copy:active {
|
|
||||||
background-color: lightgray;
|
|
||||||
}
|
|
||||||
.col-content {
|
|
||||||
font-family: monospace;
|
|
||||||
font-size: 14px;
|
|
||||||
color: #1f2937;
|
|
||||||
}
|
|
||||||
.minihead {
|
|
||||||
font-size: 12px;
|
|
||||||
line-height: 16px;
|
|
||||||
margin-bottom: 4px;
|
|
||||||
}
|
|
||||||
`;
|
|
||||||
}
|
|
||||||
|
|
||||||
renderSource() {
|
|
||||||
const coll = this.coll;
|
|
||||||
return html`
|
|
||||||
<div class="column is-4">
|
|
||||||
<p class="minihead">Source</p>
|
|
||||||
<div class="col-content">
|
|
||||||
${coll.sourceUrl &&
|
|
||||||
(coll.sourceUrl.startsWith("http://") ||
|
|
||||||
coll.sourceUrl.startsWith("https://"))
|
|
||||||
? html` <a href="${coll.sourceUrl}">${coll.sourceUrl}</a> `
|
|
||||||
: html` ${coll.sourceUrl}`}
|
|
||||||
${coll.sourceUrl && coll.sourceUrl.startsWith("googledrive://")
|
|
||||||
? html` <i>(${coll.filename})</i>`
|
|
||||||
: ""}
|
|
||||||
<a @click="${(e) => this.onCopy(e, coll.sourceUrl)}" class="copy">
|
|
||||||
<fa-icon .svg="${fasCopy}"></fa-icon>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="column">
|
|
||||||
<p class="minihead">Collection id</p>
|
|
||||||
<div class="col-content">
|
|
||||||
${coll.coll}
|
|
||||||
<a @click="${(e) => this.onCopy(e, coll.coll)}" class="copy">
|
|
||||||
<fa-icon .svg="${fasCopy}"></fa-icon>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="column is-2">
|
|
||||||
<p class="minihead">Date Loaded</p>
|
|
||||||
<div class="col-content">
|
|
||||||
${coll.ctime ? new Date(coll.ctime).toLocaleString() : ""}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="column is-2">
|
|
||||||
<p class="minihead">Total Size</p>
|
|
||||||
<div class="col-content">
|
|
||||||
${prettyBytes(Number(coll.totalSize || coll.size || 0))}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
}
|
|
||||||
|
|
||||||
renderSummaryView() {
|
|
||||||
const coll = this.coll;
|
|
||||||
|
|
||||||
return html` <div class="columns">
|
|
||||||
<div class="column col-title is-4">
|
|
||||||
<span class="subtitle has-text-weight-bold">
|
|
||||||
<a href="?source=${encodeURIComponent(coll.sourceUrl)}"
|
|
||||||
>${coll.name || coll.title || coll.filename}</a
|
|
||||||
>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
${this.renderSource()}
|
|
||||||
</div>`;
|
|
||||||
}
|
|
||||||
|
|
||||||
renderDetailed() {
|
|
||||||
const coll = this.coll;
|
|
||||||
|
|
||||||
let {
|
|
||||||
numValid,
|
|
||||||
numInvalid,
|
|
||||||
domain,
|
|
||||||
certFingerprint,
|
|
||||||
datapackageHash,
|
|
||||||
publicKey,
|
|
||||||
software,
|
|
||||||
} = this.coll.verify || {};
|
|
||||||
numValid = numValid || 0;
|
|
||||||
numInvalid = numInvalid || 0;
|
|
||||||
|
|
||||||
const certFingerprintUrl = certFingerprint
|
|
||||||
? `https://crt.sh/?q=${certFingerprint}`
|
|
||||||
: "";
|
|
||||||
|
|
||||||
return html` <div class="columns">
|
|
||||||
${coll.name || coll.title
|
|
||||||
? html`<div class="column">
|
|
||||||
<p class="minihead">Title</p>
|
|
||||||
<div class="col-content">${coll.name || coll.title}</div>
|
|
||||||
</div>`
|
|
||||||
: ""}
|
|
||||||
<div class="column">
|
|
||||||
<p class="minihead">Filename</p>
|
|
||||||
<div class="col-content">${coll.filename}</div>
|
|
||||||
</div>
|
|
||||||
${coll.resources
|
|
||||||
? html`<div class="column">
|
|
||||||
<p class="minihead">Files</p>
|
|
||||||
<ol style="padding: revert">
|
|
||||||
${map(
|
|
||||||
coll.resources,
|
|
||||||
(resource: any) =>
|
|
||||||
html`<li>
|
|
||||||
<a href="${resource.path}">${resource.name + "\n"}</a>
|
|
||||||
</li>`,
|
|
||||||
)}
|
|
||||||
</ol>
|
|
||||||
</div>`
|
|
||||||
: ""}
|
|
||||||
${this.renderSource()}
|
|
||||||
${domain
|
|
||||||
? html`
|
|
||||||
<div class="column">
|
|
||||||
<p class="minihead">Observed By</p>
|
|
||||||
<span class="col-content">
|
|
||||||
<p>${domain}</p>
|
|
||||||
${certFingerprintUrl
|
|
||||||
? html`<span
|
|
||||||
><a target="_blank" href="${certFingerprintUrl}"
|
|
||||||
>View Certificate</a
|
|
||||||
></span
|
|
||||||
>`
|
|
||||||
: ""}
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
`
|
|
||||||
: software
|
|
||||||
? html`
|
|
||||||
<div class="column">
|
|
||||||
<p class="minihead">Created With</p>
|
|
||||||
<div class="col-content">${software || "Unknown"}</div>
|
|
||||||
</div>
|
|
||||||
`
|
|
||||||
: ""}
|
|
||||||
|
|
||||||
<div class="column">
|
|
||||||
<p class="minihead">Validation</p>
|
|
||||||
<div class="col-content">
|
|
||||||
${numValid > 0 || numInvalid > 0
|
|
||||||
? html` <p>
|
|
||||||
${numValid} hashes
|
|
||||||
verified${numInvalid ? html`, ${numInvalid} invalid` : ""}
|
|
||||||
</p>`
|
|
||||||
: html` Not Available`}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="column">
|
|
||||||
<p class="minihead">Package Hash</p>
|
|
||||||
<div class="col-content">
|
|
||||||
${datapackageHash || "Not Available"}
|
|
||||||
<a @click="${(e) => this.onCopy(e, datapackageHash)}" class="copy">
|
|
||||||
<fa-icon .svg="${fasCopy}"></fa-icon>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="column">
|
|
||||||
<p class="minihead">Observer Public Key</p>
|
|
||||||
<div class="col-content">
|
|
||||||
${publicKey || "Not Available"}
|
|
||||||
<a @click="${(e) => this.onCopy(e, publicKey)}" class="copy">
|
|
||||||
<fa-icon .svg="${fasCopy}"></fa-icon>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="column">
|
|
||||||
<p class="minihead">Loading Mode</p>
|
|
||||||
<div class="col-content">
|
|
||||||
${coll.onDemand ? "Download On-Demand" : "Fully Local"}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>`;
|
|
||||||
}
|
|
||||||
|
|
||||||
render() {
|
|
||||||
return this.detailed ? this.renderDetailed() : this.renderSummaryView();
|
|
||||||
}
|
|
||||||
|
|
||||||
onCopy(event: Event, text: string | undefined) {
|
|
||||||
event.preventDefault();
|
|
||||||
event.stopPropagation();
|
|
||||||
if (text) navigator.clipboard.writeText(text);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
onPurge(reload) {
|
|
||||||
const detail = { reload };
|
|
||||||
this.dispatchEvent(new CustomEvent("coll-purge", { detail }));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
customElements.define("wr-coll-info", CollInfo);
|
|
||||||
customElements.define("wr-coll-index", CollIndex);
|
|
||||||
|
|
||||||
export { CollIndex, CollInfo };
|
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
import { LitElement, css, html, nothing } from "lit";
|
||||||
|
import { customElement, property } from "lit/decorators.js";
|
||||||
|
|
||||||
|
import { wrapCss } from "./../misc";
|
||||||
|
import "@shoelace-style/shoelace/dist/components/copy-button/copy-button.js";
|
||||||
|
|
||||||
|
@customElement("wr-labeled-field")
|
||||||
|
class LabeledField extends LitElement {
|
||||||
|
@property({ type: String })
|
||||||
|
copy?: string;
|
||||||
|
|
||||||
|
@property({ type: String })
|
||||||
|
label?: string;
|
||||||
|
|
||||||
|
@property({ type: String })
|
||||||
|
class?: string;
|
||||||
|
|
||||||
|
static get styles() {
|
||||||
|
return wrapCss(LabeledField.compStyles);
|
||||||
|
}
|
||||||
|
|
||||||
|
static get compStyles() {
|
||||||
|
return css`
|
||||||
|
:host {
|
||||||
|
min-width: unset; /* @todo(emma, 2023-11-06) see about removing this, if the min-width set on all web components is unnecessary */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* @todo(emma, 2023-11-06) add option for monospace treatment, rather than making everything mono. this could also be a class on the host element? */
|
||||||
|
.col-content {
|
||||||
|
font-family: monospace;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #1f2937;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.minihead {
|
||||||
|
font-size: 12px;
|
||||||
|
line-height: 16px;
|
||||||
|
margin-bottom: 4px;
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {
|
||||||
|
return html`${this.label
|
||||||
|
? html`<p class="minihead">${this.label}</p>`
|
||||||
|
: nothing}
|
||||||
|
<div class="col-content">
|
||||||
|
<slot></slot>
|
||||||
|
${this.copy
|
||||||
|
? html` <sl-copy-button .value=${this.copy || ""}></sl-copy-button>`
|
||||||
|
: nothing}
|
||||||
|
</div>`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export { LabeledField };
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
import { CollectionLoader } from "@webrecorder/wabac/src/loaders";
|
import { CollectionLoader } from "@webrecorder/wabac/src/loaders";
|
||||||
|
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||||
const { ipcRenderer, contextBridge } = require("electron");
|
const { ipcRenderer, contextBridge } = require("electron");
|
||||||
|
|
||||||
contextBridge.exposeInMainWorld("electron", { IS_APP: true });
|
contextBridge.exposeInMainWorld("electron", { IS_APP: true });
|
||||||
|
|||||||
@@ -466,6 +466,7 @@ class ElectronReplayApp {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getOpenUrl(argv) {
|
getOpenUrl(argv) {
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||||
argv = require("minimist")(argv.slice(process.defaultApp ? 2 : 1));
|
argv = require("minimist")(argv.slice(process.defaultApp ? 2 : 1));
|
||||||
|
|
||||||
const filename =
|
const filename =
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,2 +1,2 @@
|
|||||||
declare module "*.svg";
|
declare module "*.svg";
|
||||||
declare var __SW_NAME__: string;
|
declare let __SW_NAME__: string;
|
||||||
|
|||||||
@@ -0,0 +1,359 @@
|
|||||||
|
import { LitElement, html, css } from "lit";
|
||||||
|
import { property, state } from "lit/decorators.js";
|
||||||
|
import { wrapCss, apiPrefix } from "./misc";
|
||||||
|
|
||||||
|
import fasArrowUp from "@fortawesome/fontawesome-free/svgs/solid/angle-double-up.svg";
|
||||||
|
import fasArrowDown from "@fortawesome/fontawesome-free/svgs/solid/angle-double-down.svg";
|
||||||
|
|
||||||
|
import fasSearch from "@fortawesome/fontawesome-free/svgs/solid/search.svg";
|
||||||
|
|
||||||
|
import type { Item } from "./types";
|
||||||
|
|
||||||
|
import "./item-info";
|
||||||
|
|
||||||
|
// ===========================================================================
|
||||||
|
class ItemIndex extends LitElement {
|
||||||
|
@property({ type: Array })
|
||||||
|
items: Item[] = [];
|
||||||
|
|
||||||
|
@property({ type: String })
|
||||||
|
query = "";
|
||||||
|
|
||||||
|
@property({ type: Array })
|
||||||
|
filteredItems: any[] = [];
|
||||||
|
|
||||||
|
@property({ type: Array })
|
||||||
|
sortedItems: any[] | null = null;
|
||||||
|
|
||||||
|
@property({ type: Boolean })
|
||||||
|
hideHeader: any = null;
|
||||||
|
|
||||||
|
@property({ type: String })
|
||||||
|
dateName = "Date Loaded";
|
||||||
|
|
||||||
|
@property({ type: String })
|
||||||
|
headerName = "Loaded Archives";
|
||||||
|
|
||||||
|
@state()
|
||||||
|
private _deleting: any = {};
|
||||||
|
|
||||||
|
private typeFilter = "";
|
||||||
|
private indexParams = "";
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
super();
|
||||||
|
|
||||||
|
this.hideHeader = localStorage.getItem("index:hideHeader") === "1";
|
||||||
|
}
|
||||||
|
|
||||||
|
get sortKeys() {
|
||||||
|
return [
|
||||||
|
{ key: "title", name: "Title" },
|
||||||
|
|
||||||
|
{ key: "sourceUrl", name: "Source" },
|
||||||
|
|
||||||
|
{ key: "ctime", name: this.dateName },
|
||||||
|
|
||||||
|
{ key: "size", name: "Total Size" },
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
firstUpdated() {
|
||||||
|
this.loadItems();
|
||||||
|
}
|
||||||
|
|
||||||
|
updated(changedProperties) {
|
||||||
|
if (changedProperties.has("hideHeader")) {
|
||||||
|
localStorage.setItem("index:hideHeader", this.hideHeader ? "1" : "0");
|
||||||
|
}
|
||||||
|
if (changedProperties.has("colls") || changedProperties.has("query")) {
|
||||||
|
this.filter();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
filter() {
|
||||||
|
if (!this.query) {
|
||||||
|
this.filteredItems = this.items;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.filteredItems = [];
|
||||||
|
|
||||||
|
for (const item of this.items) {
|
||||||
|
if (
|
||||||
|
item.sourceUrl.indexOf(this.query) >= 0 ||
|
||||||
|
item.filename.indexOf(this.query) >= 0 ||
|
||||||
|
(item.loadUrl && item.loadUrl.indexOf(this.query) >= 0) ||
|
||||||
|
(item.title && item.title.indexOf(this.query) >= 0)
|
||||||
|
) {
|
||||||
|
this.filteredItems.push(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async loadItems() {
|
||||||
|
const resp = await fetch(`${apiPrefix}/coll-index?${this.indexParams}`);
|
||||||
|
try {
|
||||||
|
if (resp.status !== 200) {
|
||||||
|
throw new Error("Invalid API Response, Retry");
|
||||||
|
}
|
||||||
|
const json = await resp.json();
|
||||||
|
this.items = json.colls.map((item: Item) => {
|
||||||
|
item.title = item.title || item.filename;
|
||||||
|
return item;
|
||||||
|
});
|
||||||
|
|
||||||
|
this._deleting = {};
|
||||||
|
this.sortedItems = [];
|
||||||
|
} catch (e) {
|
||||||
|
// likely no sw registered yet, or waiting for new sw to register, retry again
|
||||||
|
setTimeout(() => this.loadItems(), 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async onDeleteItem(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
event.stopPropagation();
|
||||||
|
|
||||||
|
if (!this.sortedItems) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const index = Number(event.currentTarget.getAttribute("data-coll-index"));
|
||||||
|
|
||||||
|
const item = this.sortedItems[index];
|
||||||
|
|
||||||
|
if (!item || this._deleting[item.sourceUrl]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this._deleting[item.sourceUrl] = true;
|
||||||
|
this.requestUpdate();
|
||||||
|
|
||||||
|
const resp = await fetch(`${apiPrefix}/c/${item.id}`, { method: "DELETE" });
|
||||||
|
if (resp.status === 200) {
|
||||||
|
const json = await resp.json();
|
||||||
|
this.items = json.colls;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
static get styles() {
|
||||||
|
return wrapCss(ItemIndex.compStyles);
|
||||||
|
}
|
||||||
|
|
||||||
|
static get compStyles() {
|
||||||
|
return css`
|
||||||
|
:host {
|
||||||
|
overflow-y: auto;
|
||||||
|
min-width: 0;
|
||||||
|
}
|
||||||
|
.size {
|
||||||
|
margin-right: 20px;
|
||||||
|
}
|
||||||
|
.extra-padding {
|
||||||
|
padding: 2em;
|
||||||
|
}
|
||||||
|
.no-top-padding {
|
||||||
|
padding-top: 1em;
|
||||||
|
}
|
||||||
|
.panel-heading {
|
||||||
|
font-size: 0.85rem;
|
||||||
|
}
|
||||||
|
.is-loading {
|
||||||
|
line-height: 1.5em;
|
||||||
|
height: 1.5em;
|
||||||
|
border: 0px;
|
||||||
|
background-color: transparent !important;
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
div.panel.is-light {
|
||||||
|
margin-bottom: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
fa-icon {
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.panel-color {
|
||||||
|
background-color: rgb(210, 249, 214);
|
||||||
|
}
|
||||||
|
|
||||||
|
.copy {
|
||||||
|
color: black;
|
||||||
|
margin: 0px;
|
||||||
|
margin: 0;
|
||||||
|
line-height: 0.4em;
|
||||||
|
padding: 6px;
|
||||||
|
border-radius: 10px;
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
.copy:active {
|
||||||
|
background-color: lightgray;
|
||||||
|
}
|
||||||
|
.sort-header {
|
||||||
|
padding: 0.3rem 0.3rem 0.3rem 0;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
flex-flow: row wrap;
|
||||||
|
}
|
||||||
|
.sort-header .control {
|
||||||
|
flex: auto;
|
||||||
|
|
||||||
|
padding-left: 0.3rem;
|
||||||
|
width: initial;
|
||||||
|
}
|
||||||
|
wr-sorter {
|
||||||
|
padding: 0.3rem;
|
||||||
|
}
|
||||||
|
a.button.is-small.collapse {
|
||||||
|
border-radius: 6px;
|
||||||
|
}
|
||||||
|
.icon.is-left {
|
||||||
|
margin-left: 0.5rem;
|
||||||
|
}
|
||||||
|
.coll-block {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.delete-button {
|
||||||
|
width: 32px;
|
||||||
|
position: absolute;
|
||||||
|
top: 10px;
|
||||||
|
right: 10px;
|
||||||
|
}
|
||||||
|
#sort-select::after {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
header {
|
||||||
|
transform: translate(0px, 0px);
|
||||||
|
transition: all 0.5s ease 0s;
|
||||||
|
visibility: visible;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
header.closed {
|
||||||
|
transform: translate(0, -100%);
|
||||||
|
transition: all 0.5s ease 0s;
|
||||||
|
visibility: visible;
|
||||||
|
height: 269px;
|
||||||
|
margin-top: -269px;
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
|
||||||
|
renderHeader() {
|
||||||
|
return html`<h2 class="panel-heading panel-color">
|
||||||
|
<span>${this.headerName}</span>
|
||||||
|
</h2>`;
|
||||||
|
}
|
||||||
|
|
||||||
|
renderSearchHeader() {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {
|
||||||
|
const hasHeader = this.childElementCount > 0;
|
||||||
|
|
||||||
|
return html`
|
||||||
|
<header class="${this.hideHeader ? "closed" : ""}">
|
||||||
|
<slot name="header"></slot>
|
||||||
|
</header>
|
||||||
|
<section class="section no-top-padding">
|
||||||
|
<div class="sort-header is-small">
|
||||||
|
${hasHeader
|
||||||
|
? html`
|
||||||
|
<button @click=${() =>
|
||||||
|
(this.hideHeader =
|
||||||
|
!this.hideHeader)} class="collapse button is-small">
|
||||||
|
<span class="icon"><fa-icon .svg=${
|
||||||
|
this.hideHeader ? fasArrowDown : fasArrowUp
|
||||||
|
}></span>
|
||||||
|
<span>${
|
||||||
|
this.hideHeader ? "Show " : "Hide"
|
||||||
|
} <span class="is-sr-only">Header</span></span>
|
||||||
|
</button>`
|
||||||
|
: ""}
|
||||||
|
</div>
|
||||||
|
<div class="panel">
|
||||||
|
${this.renderHeader()}
|
||||||
|
${this.items.length
|
||||||
|
? html`
|
||||||
|
<div class="panel-block sort-header is-small">
|
||||||
|
${this.renderSearchHeader()}
|
||||||
|
<div class="control has-icons-left has-addons">
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
class="input is-small"
|
||||||
|
@input="${(e) => (this.query = e.currentTarget.value)}"
|
||||||
|
.value="${this.query}"
|
||||||
|
placeholder="Search by Archive Title or Source"
|
||||||
|
/>
|
||||||
|
<span class="icon is-left is-small">
|
||||||
|
<fa-icon .svg="${fasSearch}"></fa-icon>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<wr-sorter
|
||||||
|
id="index"
|
||||||
|
sortKey="ctime"
|
||||||
|
?sortDesc="${true}"
|
||||||
|
.sortKeys="${this.sortKeys}"
|
||||||
|
.data="${this.filteredItems}"
|
||||||
|
@sort-changed="${(e) =>
|
||||||
|
(this.sortedItems = e.detail.sortedData)}"
|
||||||
|
>
|
||||||
|
</wr-sorter>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="coll-list">
|
||||||
|
${this.sortedItems &&
|
||||||
|
this.sortedItems.map(
|
||||||
|
(item, i) => html`
|
||||||
|
<div class="coll-block panel-block">
|
||||||
|
${this.renderItemInfo(item)}
|
||||||
|
${!this._deleting[item.sourceUrl]
|
||||||
|
? html`
|
||||||
|
<button
|
||||||
|
class="delete delete-button"
|
||||||
|
aria-label="Unload Item"
|
||||||
|
title="Unload Item"
|
||||||
|
data-coll-index="${i}"
|
||||||
|
@click="${this.onDeleteItem}"
|
||||||
|
></button>
|
||||||
|
`
|
||||||
|
: html` <span
|
||||||
|
class="button delete-button is-loading is-static"
|
||||||
|
>
|
||||||
|
Deleting
|
||||||
|
</span>`}
|
||||||
|
</div>
|
||||||
|
`,
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
`
|
||||||
|
: html`
|
||||||
|
<div class="panel-block extra-padding">
|
||||||
|
${this.sortedItems === null
|
||||||
|
? html`<i>Loading Archives...</i>`
|
||||||
|
: this.renderEmpty()}
|
||||||
|
</div>
|
||||||
|
`}
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
|
||||||
|
renderItemInfo(item: Item) {
|
||||||
|
return html`<wr-item-info .item=${item}></wr-item-info>`;
|
||||||
|
}
|
||||||
|
|
||||||
|
renderEmpty() {
|
||||||
|
return html`<i
|
||||||
|
>No Archives so far! Archives loaded in the section above will appear
|
||||||
|
here.</i
|
||||||
|
>`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
customElements.define("wr-item-index", ItemIndex);
|
||||||
|
|
||||||
|
export { ItemIndex };
|
||||||
@@ -0,0 +1,249 @@
|
|||||||
|
import { LitElement, html, css, nothing } from "lit";
|
||||||
|
import { property } from "lit/decorators.js";
|
||||||
|
import { wrapCss } from "./misc";
|
||||||
|
import { map } from "lit/directives/map.js";
|
||||||
|
import prettyBytes from "pretty-bytes";
|
||||||
|
|
||||||
|
import type { Item } from "./types";
|
||||||
|
|
||||||
|
import "./components/labeled-field";
|
||||||
|
|
||||||
|
// ===========================================================================
|
||||||
|
class ItemInfo extends LitElement {
|
||||||
|
@property({ type: Object })
|
||||||
|
item!: Item | Record<string, never>;
|
||||||
|
|
||||||
|
@property({ type: Boolean })
|
||||||
|
detailed = false;
|
||||||
|
|
||||||
|
@property({ type: Boolean })
|
||||||
|
canDelete = false;
|
||||||
|
|
||||||
|
static get styles() {
|
||||||
|
return wrapCss(ItemInfo.compStyles);
|
||||||
|
}
|
||||||
|
|
||||||
|
static get compStyles() {
|
||||||
|
return css`
|
||||||
|
.columns {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.column {
|
||||||
|
word-break: break-word;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
:host {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
min-width: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
:host(.is-list) .columns {
|
||||||
|
display: flex !important;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
:host(.is-list) .column {
|
||||||
|
width: 100% !important;
|
||||||
|
flex: 1 1 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.col-title:hover {
|
||||||
|
}
|
||||||
|
.col-title a {
|
||||||
|
display: block;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
.column:hover > .copy,
|
||||||
|
.col-content:hover .copy,
|
||||||
|
.copy:hover {
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
.copy {
|
||||||
|
color: black;
|
||||||
|
margin: 0px;
|
||||||
|
margin: -4px 0 0;
|
||||||
|
line-height: 0.4em;
|
||||||
|
padding: 6px;
|
||||||
|
border-radius: 10px;
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
.copy:active {
|
||||||
|
background-color: lightgray;
|
||||||
|
}
|
||||||
|
.col-content {
|
||||||
|
font-family: monospace;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #1f2937;
|
||||||
|
}
|
||||||
|
.minihead {
|
||||||
|
font-size: 12px;
|
||||||
|
line-height: 16px;
|
||||||
|
margin-bottom: 4px;
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
|
||||||
|
renderSource(showItemID = true) {
|
||||||
|
const item = this.item;
|
||||||
|
return html`
|
||||||
|
<wr-labeled-field
|
||||||
|
label="Source"
|
||||||
|
copy="${item.sourceUrl}"
|
||||||
|
class="column is-4"
|
||||||
|
>${item.sourceUrl &&
|
||||||
|
(item.sourceUrl.startsWith("http://") ||
|
||||||
|
item.sourceUrl.startsWith("https://"))
|
||||||
|
? html` <a href="${item.sourceUrl}">${item.sourceUrl}</a> `
|
||||||
|
: html` ${item.sourceUrl}`}
|
||||||
|
${item.sourceUrl && item.sourceUrl.startsWith("googledrive://")
|
||||||
|
? html` <i>(${item.filename})</i>`
|
||||||
|
: nothing}
|
||||||
|
</wr-labeled-field>
|
||||||
|
${showItemID
|
||||||
|
? html`<wr-labeled-field
|
||||||
|
label="Archived Item ID"
|
||||||
|
.copy=${item.coll}
|
||||||
|
class="column"
|
||||||
|
>
|
||||||
|
${item.coll || "No ID"}
|
||||||
|
</wr-labeled-field>`
|
||||||
|
: nothing}
|
||||||
|
<wr-labeled-field label="Date Loaded" class="column is-2">
|
||||||
|
${item.ctime ? new Date(item.ctime).toLocaleString() : nothing}
|
||||||
|
</wr-labeled-field>
|
||||||
|
<wr-labeled-field label="Total Size" class="column is-2">
|
||||||
|
${prettyBytes(Number(item.totalSize || item.size || 0))}
|
||||||
|
</wr-labeled-field>
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
|
||||||
|
renderSummaryView() {
|
||||||
|
const item = this.item;
|
||||||
|
|
||||||
|
return html` <div class="columns">
|
||||||
|
<div class="column col-title is-4">
|
||||||
|
<span class="subtitle has-text-weight-bold">
|
||||||
|
<a href="?source=${encodeURIComponent(item.sourceUrl)}"
|
||||||
|
>${item.name || item.title || item.filename}</a
|
||||||
|
>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
${this.renderSource(false)}
|
||||||
|
</div>`;
|
||||||
|
}
|
||||||
|
|
||||||
|
renderDetailed() {
|
||||||
|
const item = this.item;
|
||||||
|
|
||||||
|
const {
|
||||||
|
numValid = 0,
|
||||||
|
numInvalid = 0,
|
||||||
|
domain,
|
||||||
|
certFingerprint,
|
||||||
|
datapackageHash,
|
||||||
|
publicKey,
|
||||||
|
software,
|
||||||
|
} = this.item.verify || {};
|
||||||
|
|
||||||
|
const certFingerprintUrl = certFingerprint
|
||||||
|
? `https://crt.sh/?q=${certFingerprint}`
|
||||||
|
: "";
|
||||||
|
|
||||||
|
return html` <div class="columns">
|
||||||
|
${item.name || item.title
|
||||||
|
? html`<wr-labeled-field label="Title" class="column">
|
||||||
|
${item.name || item.title}
|
||||||
|
</wr-labeled-field>`
|
||||||
|
: nothing}
|
||||||
|
<wr-labeled-field label="Filename" class="column">
|
||||||
|
${item.filename}
|
||||||
|
</wr-labeled-field>
|
||||||
|
${item.resources
|
||||||
|
? html`<wr-labeled-field label="Files" class="column">
|
||||||
|
<ol style="padding: revert">
|
||||||
|
${map(
|
||||||
|
item.resources,
|
||||||
|
(resource) =>
|
||||||
|
html`<li>
|
||||||
|
<a href="${resource.path}">${resource.name + "\n"}</a>
|
||||||
|
</li>`,
|
||||||
|
)}
|
||||||
|
</ol>
|
||||||
|
</wr-labeled-field>`
|
||||||
|
: nothing}
|
||||||
|
${this.renderSource()}
|
||||||
|
${domain
|
||||||
|
? html`
|
||||||
|
<wr-labeled-field label="Observed By" class="column">
|
||||||
|
<p>${domain}</p>
|
||||||
|
${certFingerprintUrl
|
||||||
|
? html`<span
|
||||||
|
><a target="_blank" href="${certFingerprintUrl}"
|
||||||
|
>View Certificate</a
|
||||||
|
></span
|
||||||
|
>`
|
||||||
|
: nothing}
|
||||||
|
</wr-labeled-field>
|
||||||
|
`
|
||||||
|
: nothing}
|
||||||
|
${software
|
||||||
|
? html`
|
||||||
|
<wr-labeled-field label="Created With" class="column">
|
||||||
|
${software || "Unknown"}
|
||||||
|
</wr-labeled-field>
|
||||||
|
`
|
||||||
|
: nothing}
|
||||||
|
|
||||||
|
<wr-labeled-field label="Validation" class="column">
|
||||||
|
${numValid > 0 || numInvalid > 0
|
||||||
|
? html` <p>
|
||||||
|
${numValid} hashes
|
||||||
|
verified${numInvalid ? html`, ${numInvalid} invalid` : nothing}
|
||||||
|
</p>`
|
||||||
|
: html` Not Available`}
|
||||||
|
</wr-labeled-field>
|
||||||
|
|
||||||
|
<wr-labeled-field
|
||||||
|
label="Package Hash"
|
||||||
|
class="column"
|
||||||
|
.copy=${datapackageHash}
|
||||||
|
>
|
||||||
|
${datapackageHash || "Not Available"}
|
||||||
|
</wr-labeled-field>
|
||||||
|
|
||||||
|
<wr-labeled-field
|
||||||
|
label="Observer Public Key"
|
||||||
|
class="column"
|
||||||
|
.copy=${publicKey}
|
||||||
|
>
|
||||||
|
${publicKey || "Not Available"}
|
||||||
|
</wr-labeled-field>
|
||||||
|
|
||||||
|
<wr-labeled-field label="Loading Mode" class="column">
|
||||||
|
${item.onDemand ? "Download On-Demand" : "Fully Local"}
|
||||||
|
</wr-labeled-field>
|
||||||
|
</div>`;
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {
|
||||||
|
return this.detailed ? this.renderDetailed() : this.renderSummaryView();
|
||||||
|
}
|
||||||
|
|
||||||
|
onCopy(event: Event, text: string | undefined) {
|
||||||
|
event.preventDefault();
|
||||||
|
event.stopPropagation();
|
||||||
|
if (text) navigator.clipboard.writeText(text);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
onPurge(reload) {
|
||||||
|
const detail = { reload };
|
||||||
|
this.dispatchEvent(new CustomEvent("item-purge", { detail }));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
customElements.define("wr-item-info", ItemInfo);
|
||||||
|
|
||||||
|
export { ItemInfo };
|
||||||
+71
-69
@@ -1,10 +1,9 @@
|
|||||||
import { LitElement, html, css } from "lit";
|
import { LitElement, html, css } from "lit";
|
||||||
import { property, state } from "lit/decorators.js";
|
import { property } from "lit/decorators.js";
|
||||||
import { ref, createRef, type Ref } from "lit/directives/ref.js";
|
import { ref, createRef, type Ref } from "lit/directives/ref.js";
|
||||||
import type {
|
import type {
|
||||||
SlDialog,
|
SlDialog,
|
||||||
SlDropdown,
|
SlDropdown,
|
||||||
SlMenu,
|
|
||||||
SlSelectEvent,
|
SlSelectEvent,
|
||||||
} from "@shoelace-style/shoelace";
|
} from "@shoelace-style/shoelace";
|
||||||
import "@shoelace-style/shoelace/dist/components/alert/alert.js";
|
import "@shoelace-style/shoelace/dist/components/alert/alert.js";
|
||||||
@@ -52,13 +51,15 @@ import fasCaretDown from "@fortawesome/fontawesome-free/svgs/solid/caret-down.sv
|
|||||||
import { RWPEmbedReceipt } from "./embed-receipt.js";
|
import { RWPEmbedReceipt } from "./embed-receipt.js";
|
||||||
import Split from "split.js";
|
import Split from "split.js";
|
||||||
|
|
||||||
import type { Coll as CollInfo } from "./types";
|
import type { Item as ItemInfo } from "./types";
|
||||||
import type { Replay } from "./replay";
|
import type { Replay } from "./replay";
|
||||||
|
|
||||||
|
import "./item-info";
|
||||||
|
|
||||||
const RWP_SCHEME = "search://";
|
const RWP_SCHEME = "search://";
|
||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
class Coll extends LitElement {
|
class Item extends LitElement {
|
||||||
@property({ type: Boolean })
|
@property({ type: Boolean })
|
||||||
inited = false;
|
inited = false;
|
||||||
|
|
||||||
@@ -72,10 +73,10 @@ class Coll extends LitElement {
|
|||||||
showSidebar: boolean | null = null;
|
showSidebar: boolean | null = null;
|
||||||
|
|
||||||
@property({ type: Object, attribute: false })
|
@property({ type: Object, attribute: false })
|
||||||
collInfo: CollInfo | Record<string, never> | null = null;
|
itemInfo: ItemInfo | Record<string, never> | null = null;
|
||||||
|
|
||||||
@property({ type: String })
|
@property({ type: String })
|
||||||
coll = "";
|
item = "";
|
||||||
|
|
||||||
@property({ type: Boolean })
|
@property({ type: Boolean })
|
||||||
hasStory = false;
|
hasStory = false;
|
||||||
@@ -172,7 +173,7 @@ class Coll extends LitElement {
|
|||||||
|
|
||||||
firstUpdated() {
|
firstUpdated() {
|
||||||
this.inited = true;
|
this.inited = true;
|
||||||
window.addEventListener("hashchange", (event) => this.onHashChange());
|
window.addEventListener("hashchange", () => this.onHashChange());
|
||||||
|
|
||||||
this.addEventListener("fullscreenchange", () => {
|
this.addEventListener("fullscreenchange", () => {
|
||||||
this.isFullscreen = !!document.fullscreenElement;
|
this.isFullscreen = !!document.fullscreenElement;
|
||||||
@@ -193,9 +194,9 @@ class Coll extends LitElement {
|
|||||||
while (
|
while (
|
||||||
this.editable &&
|
this.editable &&
|
||||||
this.autoUpdateInterval &&
|
this.autoUpdateInterval &&
|
||||||
(!this.collInfo ||
|
(!this.itemInfo ||
|
||||||
!this.collInfo.pages ||
|
!this.itemInfo.pages ||
|
||||||
this.collInfo.pages.length < 100)
|
this.itemInfo.pages.length < 100)
|
||||||
) {
|
) {
|
||||||
await new Promise((resolve) =>
|
await new Promise((resolve) =>
|
||||||
setTimeout(resolve, this.autoUpdateInterval * 1000),
|
setTimeout(resolve, this.autoUpdateInterval * 1000),
|
||||||
@@ -212,7 +213,7 @@ class Coll extends LitElement {
|
|||||||
const resp = await fetch(
|
const resp = await fetch(
|
||||||
apiPrefix +
|
apiPrefix +
|
||||||
"/c/" +
|
"/c/" +
|
||||||
this.coll +
|
this.item +
|
||||||
"/ts/?url=" +
|
"/ts/?url=" +
|
||||||
window.encodeURIComponent(this.tabData.url),
|
window.encodeURIComponent(this.tabData.url),
|
||||||
);
|
);
|
||||||
@@ -262,7 +263,7 @@ class Coll extends LitElement {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (changedProperties.has("tabData")) {
|
if (changedProperties.has("tabData")) {
|
||||||
if (!this.collInfo || !this.collInfo.coll) {
|
if (!this.itemInfo || !this.itemInfo.coll) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const newHash = "#" + new URLSearchParams(this.tabData as any).toString();
|
const newHash = "#" + new URLSearchParams(this.tabData as any).toString();
|
||||||
@@ -355,31 +356,31 @@ class Coll extends LitElement {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let coll = this.loadInfo && this.loadInfo.customColl;
|
let item = this.loadInfo && this.loadInfo.customColl; // @todo(2023-11-06) update customColl -> customItem
|
||||||
|
|
||||||
if (!coll) {
|
if (!item) {
|
||||||
const res = await sourceToId(this.sourceUrl);
|
const res = await sourceToId(this.sourceUrl);
|
||||||
coll = res.coll;
|
item = res.coll;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.coll = coll;
|
this.item = item;
|
||||||
|
|
||||||
const collApiPrefix = apiPrefix + "/c/" + coll;
|
const itemApiPrefix = apiPrefix + "/c/" + item;
|
||||||
const collReplayPrefix = replayPrefix + "/" + coll;
|
const itemReplayPrefix = replayPrefix + "/" + item;
|
||||||
|
|
||||||
const resp = await fetch(collApiPrefix + "?all=1");
|
const resp = await fetch(itemApiPrefix + "?all=1");
|
||||||
|
|
||||||
if (resp.status != 200) {
|
if (resp.status != 200) {
|
||||||
this.collInfo = {};
|
this.itemInfo = {};
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const json = await resp.json();
|
const json = await resp.json();
|
||||||
|
|
||||||
this.collInfo = {
|
this.itemInfo = {
|
||||||
apiPrefix: collApiPrefix,
|
apiPrefix: itemApiPrefix,
|
||||||
replayPrefix: collReplayPrefix,
|
replayPrefix: itemReplayPrefix,
|
||||||
coll,
|
coll: item,
|
||||||
...json,
|
...json,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -389,14 +390,14 @@ class Coll extends LitElement {
|
|||||||
this.loadInfo.extraConfig.headers
|
this.loadInfo.extraConfig.headers
|
||||||
) {
|
) {
|
||||||
const headers = this.loadInfo.extraConfig.headers;
|
const headers = this.loadInfo.extraConfig.headers;
|
||||||
await fetch(`${collApiPrefix}/updateAuth`, {
|
await fetch(`${itemApiPrefix}/updateAuth`, {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
body: JSON.stringify({ headers }),
|
body: JSON.stringify({ headers }),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this.collInfo!.title) {
|
if (!this.itemInfo!.title) {
|
||||||
this.collInfo!.title = this.collInfo!.filename;
|
this.itemInfo!.title = this.itemInfo!.filename;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.embed === "replayonly" || this.embed === "replay-with-info") {
|
if (this.embed === "replayonly" || this.embed === "replay-with-info") {
|
||||||
@@ -404,13 +405,13 @@ class Coll extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.hasStory = Boolean(
|
this.hasStory = Boolean(
|
||||||
this.collInfo!.desc || this.collInfo!.lists?.length,
|
this.itemInfo!.desc || this.itemInfo!.lists?.length,
|
||||||
);
|
);
|
||||||
|
|
||||||
this.dispatchEvent(
|
this.dispatchEvent(
|
||||||
new CustomEvent("coll-loaded", {
|
new CustomEvent("coll-loaded", {
|
||||||
detail: {
|
detail: {
|
||||||
collInfo: this.collInfo,
|
collInfo: this.itemInfo,
|
||||||
alreadyLoaded: true,
|
alreadyLoaded: true,
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
@@ -419,7 +420,7 @@ class Coll extends LitElement {
|
|||||||
this.onHashChange();
|
this.onHashChange();
|
||||||
}
|
}
|
||||||
|
|
||||||
onCollLoaded(event) {
|
onItemLoaded(event) {
|
||||||
this.doUpdateInfo();
|
this.doUpdateInfo();
|
||||||
this.loadInfo = null;
|
this.loadInfo = null;
|
||||||
if (event.detail.sourceUrl) {
|
if (event.detail.sourceUrl) {
|
||||||
@@ -429,18 +430,18 @@ class Coll extends LitElement {
|
|||||||
new CustomEvent("coll-loaded", {
|
new CustomEvent("coll-loaded", {
|
||||||
detail: {
|
detail: {
|
||||||
sourceUrl: this.sourceUrl,
|
sourceUrl: this.sourceUrl,
|
||||||
collInfo: this.collInfo,
|
collInfo: this.itemInfo,
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
onCollUpdate(event) {
|
onItemUpdate(event) {
|
||||||
if (!this.editable) {
|
if (!this.editable) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.collInfo = { ...this.collInfo, ...event.detail };
|
this.itemInfo = { ...this.itemInfo, ...event.detail };
|
||||||
}
|
}
|
||||||
|
|
||||||
onHashChange() {
|
onHashChange() {
|
||||||
@@ -453,12 +454,12 @@ class Coll extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
this.collInfo?.coll &&
|
this.itemInfo?.coll &&
|
||||||
(!this.tabData.view || !this.tabNames.includes(this.tabData.view))
|
(!this.tabData.view || !this.tabNames.includes(this.tabData.view))
|
||||||
) {
|
) {
|
||||||
const view = this.hasStory
|
const view = this.hasStory
|
||||||
? "story"
|
? "story"
|
||||||
: this.editable || this.collInfo.pages?.length
|
: this.editable || this.itemInfo.pages?.length
|
||||||
? "pages"
|
? "pages"
|
||||||
: "resources";
|
: "resources";
|
||||||
|
|
||||||
@@ -471,11 +472,11 @@ class Coll extends LitElement {
|
|||||||
if (this.tabData.url && this.tabData.url.startsWith("page:")) {
|
if (this.tabData.url && this.tabData.url.startsWith("page:")) {
|
||||||
const pageIndex = Number(this.tabData.url.slice("page:".length));
|
const pageIndex = Number(this.tabData.url.slice("page:".length));
|
||||||
if (
|
if (
|
||||||
this.collInfo?.pages &&
|
this.itemInfo?.pages &&
|
||||||
!isNaN(pageIndex) &&
|
!isNaN(pageIndex) &&
|
||||||
pageIndex < this.collInfo.pages.length
|
pageIndex < this.itemInfo.pages.length
|
||||||
) {
|
) {
|
||||||
const page = this.collInfo.pages[pageIndex];
|
const page = this.itemInfo.pages[pageIndex];
|
||||||
this.tabData.url = page.url;
|
this.tabData.url = page.url;
|
||||||
this.tabData.ts = getPageDateTS(page).timestamp;
|
this.tabData.ts = getPageDateTS(page).timestamp;
|
||||||
}
|
}
|
||||||
@@ -498,7 +499,7 @@ class Coll extends LitElement {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
onCollTabNav(event) {
|
onItemTabNav(event) {
|
||||||
if (event.detail.reload) {
|
if (event.detail.reload) {
|
||||||
this.onRefresh(null, true);
|
this.onRefresh(null, true);
|
||||||
return;
|
return;
|
||||||
@@ -533,7 +534,7 @@ class Coll extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static get styles() {
|
static get styles() {
|
||||||
return wrapCss(Coll.compStyles);
|
return wrapCss(Item.compStyles);
|
||||||
}
|
}
|
||||||
|
|
||||||
static get compStyles() {
|
static get compStyles() {
|
||||||
@@ -626,7 +627,7 @@ class Coll extends LitElement {
|
|||||||
|
|
||||||
${RWPEmbedReceipt.embedStyles}
|
${RWPEmbedReceipt.embedStyles}
|
||||||
|
|
||||||
${Coll.replayBarStyles}
|
${Item.replayBarStyles}
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -861,20 +862,20 @@ class Coll extends LitElement {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.collInfo && !this.collInfo.coll) {
|
if (this.itemInfo && !this.itemInfo.coll) {
|
||||||
return html` <wr-loader
|
return html` <wr-loader
|
||||||
.loadInfo="${this.loadInfo}"
|
.loadInfo="${this.loadInfo}"
|
||||||
embed="${this.embed || ""}"
|
embed="${this.embed || ""}"
|
||||||
swName="${this.swName}"
|
swName="${this.swName}"
|
||||||
.coll="${this.coll}"
|
.coll="${this.item}"
|
||||||
sourceUrl="${this.sourceUrl || ""}"
|
sourceUrl="${this.sourceUrl || ""}"
|
||||||
@coll-loaded=${this.onCollLoaded}
|
@coll-loaded=${this.onItemLoaded}
|
||||||
></wr-loader>`;
|
></wr-loader>`;
|
||||||
} else if (this.collInfo) {
|
} else if (this.itemInfo) {
|
||||||
return html`
|
return html`
|
||||||
${this.renderLocationBar()} ${this.renderVerifyInfo()}
|
${this.renderLocationBar()} ${this.renderVerifyInfo()}
|
||||||
<sl-dialog label="Archive Info" ${ref(this.archiveInfoDialog)}>
|
<sl-dialog label="Archive Info" ${ref(this.archiveInfoDialog)}>
|
||||||
${this.renderCollInfo()}
|
${this.renderItemInfo()}
|
||||||
<sl-button
|
<sl-button
|
||||||
slot="footer"
|
slot="footer"
|
||||||
variant="primary"
|
variant="primary"
|
||||||
@@ -894,7 +895,7 @@ class Coll extends LitElement {
|
|||||||
aria-label="${isSidebar ? "Browse Contents" : ""}"
|
aria-label="${isSidebar ? "Browse Contents" : ""}"
|
||||||
>
|
>
|
||||||
${this.renderTabHeader(isSidebar)}
|
${this.renderTabHeader(isSidebar)}
|
||||||
${isSidebar || !isReplay ? this.renderCollTabs(isSidebar) : html``}
|
${isSidebar || !isReplay ? this.renderItemTabs(isSidebar) : html``}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
${isReplay && this.isVisible
|
${isReplay && this.isVisible
|
||||||
@@ -902,11 +903,11 @@ class Coll extends LitElement {
|
|||||||
<wr-coll-replay
|
<wr-coll-replay
|
||||||
role="main"
|
role="main"
|
||||||
tabindex="-1"
|
tabindex="-1"
|
||||||
.collInfo="${this.collInfo}"
|
.collInfo="${this.itemInfo}"
|
||||||
sourceUrl="${this.sourceUrl || ""}"
|
sourceUrl="${this.sourceUrl || ""}"
|
||||||
url="${this.tabData.url || ""}"
|
url="${this.tabData.url || ""}"
|
||||||
ts="${this.tabData.ts || ""}"
|
ts="${this.tabData.ts || ""}"
|
||||||
@coll-tab-nav="${this.onCollTabNav}"
|
@coll-tab-nav="${this.onItemTabNav}"
|
||||||
id="replay"
|
id="replay"
|
||||||
@replay-loading="${(e) =>
|
@replay-loading="${(e) =>
|
||||||
(this.isLoading = e.detail.loading)}"
|
(this.isLoading = e.detail.loading)}"
|
||||||
@@ -1410,7 +1411,9 @@ class Coll extends LitElement {
|
|||||||
date,
|
date,
|
||||||
label: dateStr,
|
label: dateStr,
|
||||||
});
|
});
|
||||||
} catch {}
|
} catch {
|
||||||
|
/* empty */
|
||||||
|
}
|
||||||
});
|
});
|
||||||
const currDateStr = tsToDate(this.ts).toLocaleString();
|
const currDateStr = tsToDate(this.ts).toLocaleString();
|
||||||
return html`<div id="datetime" class="control is-hidden-mobile">
|
return html`<div id="datetime" class="control is-hidden-mobile">
|
||||||
@@ -1453,7 +1456,7 @@ class Coll extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return html`<rwp-embed-receipt
|
return html`<rwp-embed-receipt
|
||||||
.collInfo=${this.collInfo || {}}
|
.collInfo=${this.itemInfo || {}}
|
||||||
url=${this.url}
|
url=${this.url}
|
||||||
ts=${this.ts}
|
ts=${this.ts}
|
||||||
.appLogo=${this.appLogo}
|
.appLogo=${this.appLogo}
|
||||||
@@ -1475,27 +1478,27 @@ class Coll extends LitElement {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
renderCollInfo() {
|
renderItemInfo() {
|
||||||
if (!this.collInfo)
|
if (!this.itemInfo)
|
||||||
return html`<sl-alert open variant="warning">
|
return html`<sl-alert open variant="warning">
|
||||||
<sl-icon slot="icon" name="exclamation-triangle"></sl-icon>
|
<sl-icon slot="icon" name="exclamation-triangle"></sl-icon>
|
||||||
<strong>Archive info is not available</strong><br />
|
<strong>Archive info is not available</strong><br />
|
||||||
Please reload and try again.
|
Please reload and try again.
|
||||||
</sl-alert>`;
|
</sl-alert>`;
|
||||||
return html`<wr-coll-info
|
return html`<wr-item-info
|
||||||
class="is-list"
|
class="is-list"
|
||||||
.coll="${this.collInfo}"
|
.item="${this.itemInfo}"
|
||||||
?detailed="${true}"
|
?detailed="${true}"
|
||||||
?canDelete="${!this.embed}"
|
?canDelete="${!this.embed}"
|
||||||
@coll-purge="${this.onPurgeCache}"
|
@item-purge="${this.onPurgeCache}"
|
||||||
></wr-coll-info>`;
|
></wr-item-info>`;
|
||||||
}
|
}
|
||||||
|
|
||||||
renderExtraToolbar(/*isDropdown = false*/) {
|
renderExtraToolbar(/*isDropdown = false*/) {
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
renderCollTabs(isSidebar) {
|
renderItemTabs(isSidebar) {
|
||||||
const isStory = this.hasStory && this.tabData.view === "story";
|
const isStory = this.hasStory && this.tabData.view === "story";
|
||||||
const isPages = this.tabData.view === "pages";
|
const isPages = this.tabData.view === "pages";
|
||||||
const isResources = this.tabData.view === "resources";
|
const isResources = this.tabData.view === "resources";
|
||||||
@@ -1503,10 +1506,10 @@ class Coll extends LitElement {
|
|||||||
return html`
|
return html`
|
||||||
${isStory
|
${isStory
|
||||||
? html` <wr-coll-story
|
? html` <wr-coll-story
|
||||||
.collInfo="${this.collInfo || {}}"
|
.collInfo="${this.itemInfo || {}}"
|
||||||
.active="${isStory}"
|
.active="${isStory}"
|
||||||
currList="${this.tabData.currList || 0}"
|
currList="${this.tabData.currList || 0}"
|
||||||
@coll-tab-nav="${this.onCollTabNav}"
|
@coll-tab-nav="${this.onItemTabNav}"
|
||||||
id="story"
|
id="story"
|
||||||
.isSidebar="${isSidebar}"
|
.isSidebar="${isSidebar}"
|
||||||
class="${isStory ? "" : "is-hidden"} ${isSidebar ? "sidebar" : ""}"
|
class="${isStory ? "" : "is-hidden"} ${isSidebar ? "sidebar" : ""}"
|
||||||
@@ -1516,12 +1519,12 @@ class Coll extends LitElement {
|
|||||||
: ""}
|
: ""}
|
||||||
${isResources
|
${isResources
|
||||||
? html` <wr-coll-resources
|
? html` <wr-coll-resources
|
||||||
.collInfo="${this.collInfo || {}}"
|
.collInfo="${this.itemInfo || {}}"
|
||||||
.active="${isResources}"
|
.active="${isResources}"
|
||||||
query="${this.tabData.query || ""}"
|
query="${this.tabData.query || ""}"
|
||||||
urlSearchType="${this.tabData.urlSearchType || ""}"
|
urlSearchType="${this.tabData.urlSearchType || ""}"
|
||||||
.currMime="${this.tabData.currMime || ""}"
|
.currMime="${this.tabData.currMime || ""}"
|
||||||
@coll-tab-nav="${this.onCollTabNav}"
|
@coll-tab-nav="${this.onItemTabNav}"
|
||||||
id="resources"
|
id="resources"
|
||||||
.isSidebar="${isSidebar}"
|
.isSidebar="${isSidebar}"
|
||||||
class="is-paddingless ${isResources ? "" : "is-hidden"} ${isSidebar
|
class="is-paddingless ${isResources ? "" : "is-hidden"} ${isSidebar
|
||||||
@@ -1533,7 +1536,7 @@ class Coll extends LitElement {
|
|||||||
: ""}
|
: ""}
|
||||||
${isPages
|
${isPages
|
||||||
? html` <wr-page-view
|
? html` <wr-page-view
|
||||||
.collInfo="${this.collInfo}"
|
.collInfo="${this.itemInfo}"
|
||||||
.active="${isPages}"
|
.active="${isPages}"
|
||||||
.editable="${this.editable}"
|
.editable="${this.editable}"
|
||||||
.isSidebar="${isSidebar}"
|
.isSidebar="${isSidebar}"
|
||||||
@@ -1541,9 +1544,9 @@ class Coll extends LitElement {
|
|||||||
query="${this.tabData.query || ""}"
|
query="${this.tabData.query || ""}"
|
||||||
.url="${this.tabData.url || ""}"
|
.url="${this.tabData.url || ""}"
|
||||||
.ts="${this.tabData.ts || ""}"
|
.ts="${this.tabData.ts || ""}"
|
||||||
@coll-tab-nav="${this.onCollTabNav}"
|
@coll-tab-nav="${this.onItemTabNav}"
|
||||||
id="pages"
|
id="pages"
|
||||||
@coll-update="${this.onCollUpdate}"
|
@coll-update="${this.onItemUpdate}"
|
||||||
class="${isPages ? "" : "is-hidden"} ${isSidebar ? "sidebar" : ""}"
|
class="${isPages ? "" : "is-hidden"} ${isSidebar ? "sidebar" : ""}"
|
||||||
role="${(isSidebar ? "" : "main") as any}"
|
role="${(isSidebar ? "" : "main") as any}"
|
||||||
>
|
>
|
||||||
@@ -1655,7 +1658,7 @@ class Coll extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async deleteFully(reload = false) {
|
async deleteFully(reload = false) {
|
||||||
const deleteURL = this.collInfo!.apiPrefix + (reload ? "?reload=1" : "");
|
const deleteURL = this.itemInfo!.apiPrefix + (reload ? "?reload=1" : "");
|
||||||
|
|
||||||
const resp = await fetch(deleteURL, {
|
const resp = await fetch(deleteURL, {
|
||||||
method: "DELETE",
|
method: "DELETE",
|
||||||
@@ -1704,7 +1707,6 @@ class Coll extends LitElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
onSelectTimestamp(event: SlSelectEvent) {
|
onSelectTimestamp(event: SlSelectEvent) {
|
||||||
const menu = event.currentTarget as SlMenu;
|
|
||||||
const { item } = event.detail;
|
const { item } = event.detail;
|
||||||
this.updateTabData({ ts: item.value });
|
this.updateTabData({ ts: item.value });
|
||||||
}
|
}
|
||||||
@@ -1801,6 +1803,6 @@ class Coll extends LitElement {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
customElements.define("wr-coll", Coll);
|
customElements.define("wr-item", Item);
|
||||||
|
|
||||||
export { Coll };
|
export { Item };
|
||||||
+1
-1
@@ -231,5 +231,5 @@ export {
|
|||||||
unsafeCSS,
|
unsafeCSS,
|
||||||
unsafeSVG,
|
unsafeSVG,
|
||||||
apiPrefix,
|
apiPrefix,
|
||||||
replayPrefix
|
replayPrefix,
|
||||||
};
|
};
|
||||||
|
|||||||
+2
-2
@@ -320,8 +320,8 @@ class PageEntry extends LitElement {
|
|||||||
let inx = textContent.indexOf(this.query);
|
let inx = textContent.indexOf(this.query);
|
||||||
|
|
||||||
if (inx < 0) {
|
if (inx < 0) {
|
||||||
let textLower = textContent.toLowerCase();
|
const textLower = textContent.toLowerCase();
|
||||||
let queryLower = query.toLowerCase();
|
const queryLower = query.toLowerCase();
|
||||||
|
|
||||||
inx = textLower.indexOf(queryLower);
|
inx = textLower.indexOf(queryLower);
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -1,7 +1,7 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
import { LitElement, html, css, unsafeCSS } from "lit";
|
import { LitElement, html, css, unsafeCSS } from "lit";
|
||||||
import { property, state } from "lit/decorators.js";
|
import { property } from "lit/decorators.js";
|
||||||
import { wrapCss, clickOnSpacebarPress } from "./misc";
|
import { wrapCss, clickOnSpacebarPress } from "./misc";
|
||||||
import ndjson from "fetch-ndjson";
|
import ndjson from "fetch-ndjson";
|
||||||
|
|
||||||
@@ -61,7 +61,7 @@ class Pages extends LitElement {
|
|||||||
@property({ type: Boolean })
|
@property({ type: Boolean })
|
||||||
changeNeeded = false;
|
changeNeeded = false;
|
||||||
|
|
||||||
@property({ type: Set })
|
@property({ attribute: false })
|
||||||
selectedPages = new Set();
|
selectedPages = new Set();
|
||||||
|
|
||||||
@property({ type: Boolean })
|
@property({ type: Boolean })
|
||||||
|
|||||||
+3
-3
@@ -1,13 +1,13 @@
|
|||||||
import { LitElement, html, css } from "lit";
|
import { LitElement, html, css } from "lit";
|
||||||
import { property, state } from "lit/decorators.js";
|
import { property } from "lit/decorators.js";
|
||||||
|
|
||||||
import { wrapCss, rwpLogo } from "./misc";
|
import { wrapCss, rwpLogo } from "./misc";
|
||||||
import type { Coll } from "./types";
|
import type { Item } from "./types";
|
||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
class Replay extends LitElement {
|
class Replay extends LitElement {
|
||||||
@property({ type: Object })
|
@property({ type: Object })
|
||||||
collInfo: Coll | Record<string, never> | null = null;
|
collInfo: Item | Record<string, never> | null = null;
|
||||||
|
|
||||||
@property({ type: String })
|
@property({ type: String })
|
||||||
sourceUrl: any = null;
|
sourceUrl: any = null;
|
||||||
|
|||||||
+4
-1
@@ -3,8 +3,11 @@ import { wrapCss } from "./misc";
|
|||||||
|
|
||||||
import fasSortDown from "@fortawesome/fontawesome-free/svgs/solid/sort-down.svg";
|
import fasSortDown from "@fortawesome/fontawesome-free/svgs/solid/sort-down.svg";
|
||||||
import fasSortUp from "@fortawesome/fontawesome-free/svgs/solid/sort-up.svg";
|
import fasSortUp from "@fortawesome/fontawesome-free/svgs/solid/sort-up.svg";
|
||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
|
/**
|
||||||
|
* @typedef {{key: string;name: string;}[]} SortKeys
|
||||||
|
* @prop {SortKeys} sortKeys
|
||||||
|
*/
|
||||||
class Sorter extends LitElement {
|
class Sorter extends LitElement {
|
||||||
constructor() {
|
constructor() {
|
||||||
super();
|
super();
|
||||||
|
|||||||
+15
-3
@@ -1,8 +1,12 @@
|
|||||||
export interface Coll {
|
export interface Item {
|
||||||
filename: string;
|
filename: string;
|
||||||
sourceUrl: string;
|
sourceUrl: string;
|
||||||
replayPrefix: string;
|
replayPrefix: string;
|
||||||
apiPrefix: string;
|
apiPrefix: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Archived Item ID
|
||||||
|
*/
|
||||||
coll?: string;
|
coll?: string;
|
||||||
name?: string;
|
name?: string;
|
||||||
title?: string;
|
title?: string;
|
||||||
@@ -10,8 +14,16 @@ export interface Coll {
|
|||||||
desc?: string;
|
desc?: string;
|
||||||
description?: string;
|
description?: string;
|
||||||
resources?: { path: string; name: string }[];
|
resources?: { path: string; name: string }[];
|
||||||
verify?: any;
|
verify?: {
|
||||||
onDemand?: any;
|
numValid?: number;
|
||||||
|
numInvalid?: number;
|
||||||
|
domain?: string;
|
||||||
|
certFingerprint?: string;
|
||||||
|
datapackageHash?: string;
|
||||||
|
publicKey?: string;
|
||||||
|
software?: string;
|
||||||
|
};
|
||||||
|
onDemand?: boolean;
|
||||||
pages?: any[];
|
pages?: any[];
|
||||||
lists?: any[];
|
lists?: any[];
|
||||||
ctime?: string;
|
ctime?: string;
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
import { ReplayWebApp } from "./appmain";
|
import { ReplayWebApp } from "./appmain";
|
||||||
import { Chooser } from "./chooser";
|
import { Chooser } from "./chooser";
|
||||||
import { CollIndex, CollInfo } from "./coll-index";
|
import { ItemIndex } from "./item-index";
|
||||||
import { Coll } from "./coll";
|
import { ItemInfo } from "./item-info";
|
||||||
|
import { Item } from "./item";
|
||||||
import { Story } from "./story";
|
import { Story } from "./story";
|
||||||
import { GDrive } from "./gdrive";
|
import { GDrive } from "./gdrive";
|
||||||
import { Loader } from "./loader";
|
import { Loader } from "./loader";
|
||||||
@@ -16,9 +17,9 @@ import "./shoelace";
|
|||||||
export {
|
export {
|
||||||
ReplayWebApp,
|
ReplayWebApp,
|
||||||
Chooser,
|
Chooser,
|
||||||
CollIndex,
|
ItemIndex as CollIndex, // @todo(2023-11-06) complete rename
|
||||||
CollInfo,
|
ItemInfo as CollInfo, // @todo(2023-11-06) complete rename
|
||||||
Coll,
|
Item as Coll, // @todo(2023-11-06) complete rename
|
||||||
Story,
|
Story,
|
||||||
GDrive,
|
GDrive,
|
||||||
Loader,
|
Loader,
|
||||||
|
|||||||
@@ -8,6 +8,9 @@ import fasSearch from "@fortawesome/fontawesome-free/svgs/solid/search.svg";
|
|||||||
import "keyword-mark-element/lib/keyword-mark.js";
|
import "keyword-mark-element/lib/keyword-mark.js";
|
||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
|
/**
|
||||||
|
* @prop {boolean | undefined} active
|
||||||
|
*/
|
||||||
class URLResources extends LitElement {
|
class URLResources extends LitElement {
|
||||||
static get filters() {
|
static get filters() {
|
||||||
return [
|
return [
|
||||||
|
|||||||
+19
-4
@@ -14,9 +14,24 @@
|
|||||||
"inlineSources": true,
|
"inlineSources": true,
|
||||||
"paths": {
|
"paths": {
|
||||||
"flexsearch": ["./node_modules/@types/flexsearch"]
|
"flexsearch": ["./node_modules/@types/flexsearch"]
|
||||||
}
|
},
|
||||||
|
"plugins": [
|
||||||
|
{
|
||||||
|
"name": "ts-lit-plugin",
|
||||||
|
"strict": true,
|
||||||
|
"rules": {
|
||||||
|
// This seems to produce a bunch of false positives, so we've turned it off for now.
|
||||||
|
// Relevant issues:
|
||||||
|
// https://github.com/runem/lit-analyzer/issues/293
|
||||||
|
// https://github.com/runem/lit-analyzer/issues/302
|
||||||
|
// https://github.com/runem/lit-analyzer/issues/266
|
||||||
|
"no-missing-import": "off",
|
||||||
|
|
||||||
|
// ts-lit-plugin also doesn't seem to understand string interpolations in CSS, so this is also turned off.
|
||||||
|
"no-invalid-css": "off"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"include": [
|
"include": ["src/**/*.ts"]
|
||||||
"src/**/*.ts"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
@@ -18,4 +18,3 @@
|
|||||||
"display": "standalone",
|
"display": "standalone",
|
||||||
"theme_color": "#27a0ff"
|
"theme_color": "#27a0ff"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+30
-42
@@ -1,4 +1,5 @@
|
|||||||
/*eslint-env node */
|
/* eslint-env node */
|
||||||
|
/* eslint @typescript-eslint/no-var-requires: "off" */
|
||||||
|
|
||||||
const path = require("path");
|
const path = require("path");
|
||||||
const webpack = require("webpack");
|
const webpack = require("webpack");
|
||||||
@@ -7,12 +8,12 @@ const CopyPlugin = require("copy-webpack-plugin");
|
|||||||
const TerserPlugin = require("terser-webpack-plugin");
|
const TerserPlugin = require("terser-webpack-plugin");
|
||||||
const package_json = require("./package.json");
|
const package_json = require("./package.json");
|
||||||
|
|
||||||
|
|
||||||
// helper proxy URL, run locally for app
|
// helper proxy URL, run locally for app
|
||||||
const HELPER_PROXY = "https://helper-proxy.webrecorder.workers.dev";
|
const HELPER_PROXY = "https://helper-proxy.webrecorder.workers.dev";
|
||||||
|
|
||||||
// GDrive client-id
|
// GDrive client-id
|
||||||
const GDRIVE_CLIENT_ID = "160798412227-tko4c82uopud11q105b2lvbogsj77hlg.apps.googleusercontent.com";
|
const GDRIVE_CLIENT_ID =
|
||||||
|
"160798412227-tko4c82uopud11q105b2lvbogsj77hlg.apps.googleusercontent.com";
|
||||||
|
|
||||||
// Copyright banner text
|
// Copyright banner text
|
||||||
const BANNER_TEXT = `'[name].js is part of ReplayWeb.page (https://replayweb.page) Copyright (C) 2020-${new Date().getFullYear()}, Webrecorder Software. Licensed under the Affero General Public License v3.'`;
|
const BANNER_TEXT = `'[name].js is part of ReplayWeb.page (https://replayweb.page) Copyright (C) 2020-${new Date().getFullYear()}, Webrecorder Software. Licensed under the Affero General Public License v3.'`;
|
||||||
@@ -26,13 +27,12 @@ const optimization = {
|
|||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
const electronMainConfig = (/*env, argv*/) => {
|
const electronMainConfig = (/*env, argv*/) => {
|
||||||
return {
|
return {
|
||||||
target: "electron-main",
|
target: "electron-main",
|
||||||
mode: "production",
|
mode: "production",
|
||||||
entry: {
|
entry: {
|
||||||
"electron": "./src/electron-main.js",
|
electron: "./src/electron-main.js",
|
||||||
},
|
},
|
||||||
optimization,
|
optimization,
|
||||||
output: {
|
output: {
|
||||||
@@ -45,57 +45,50 @@ const electronMainConfig = (/*env, argv*/) => {
|
|||||||
},
|
},
|
||||||
plugins: [
|
plugins: [
|
||||||
new webpack.DefinePlugin({
|
new webpack.DefinePlugin({
|
||||||
__HELPER_PROXY__ : JSON.stringify(HELPER_PROXY),
|
__HELPER_PROXY__: JSON.stringify(HELPER_PROXY),
|
||||||
}),
|
}),
|
||||||
new webpack.BannerPlugin(BANNER_TEXT),
|
new webpack.BannerPlugin(BANNER_TEXT),
|
||||||
new CopyPlugin({
|
new CopyPlugin({
|
||||||
patterns: [
|
patterns: [
|
||||||
// { from: "node_modules/classic-level/prebuilds/", to: "prebuilds" },
|
// { from: "node_modules/classic-level/prebuilds/", to: "prebuilds" },
|
||||||
{ from: "build/extra_prebuilds/", to: "prebuilds" }
|
{ from: "build/extra_prebuilds/", to: "prebuilds" },
|
||||||
],
|
],
|
||||||
}),
|
}),
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
const electronPreloadConfig = (/*env, argv*/) => {
|
const electronPreloadConfig = (/*env, argv*/) => {
|
||||||
return {
|
return {
|
||||||
target: "electron-preload",
|
target: "electron-preload",
|
||||||
mode: "production",
|
mode: "production",
|
||||||
entry: {
|
entry: {
|
||||||
"preload": "./src/electron-preload.js",
|
preload: "./src/electron-preload.js",
|
||||||
},
|
},
|
||||||
|
|
||||||
optimization,
|
optimization,
|
||||||
plugins: [
|
plugins: [new webpack.BannerPlugin(BANNER_TEXT)],
|
||||||
new webpack.BannerPlugin(BANNER_TEXT),
|
|
||||||
]
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const browserConfig = (/*env, argv*/) => {
|
const browserConfig = (/*env, argv*/) => {
|
||||||
const isDevServer = process.env.WEBPACK_SERVE;
|
const isDevServer = process.env.WEBPACK_SERVE;
|
||||||
|
|
||||||
const entry = {
|
const entry = {
|
||||||
"ui": "./src/ui.ts"
|
ui: "./src/ui.ts",
|
||||||
};
|
};
|
||||||
|
|
||||||
const patterns = [
|
const patterns = [{ from: "package.json", to: "_data/package.json" }];
|
||||||
{ from: "package.json", to: "_data/package.json" }
|
|
||||||
];
|
|
||||||
|
|
||||||
if (isDevServer) {
|
if (isDevServer) {
|
||||||
entry["sw"] = "@webrecorder/wabac/src/sw.js";
|
entry["sw"] = "@webrecorder/wabac/src/sw.js";
|
||||||
} else {
|
} else {
|
||||||
patterns.push(
|
patterns.push({
|
||||||
{ from: "node_modules/@webrecorder/wabac/dist/sw.js", to: "sw.js"}
|
from: "node_modules/@webrecorder/wabac/dist/sw.js",
|
||||||
);
|
to: "sw.js",
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
target: "web",
|
target: "web",
|
||||||
mode: "production",
|
mode: "production",
|
||||||
@@ -103,7 +96,7 @@ const browserConfig = (/*env, argv*/) => {
|
|||||||
type: isDevServer ? "memory" : "filesystem",
|
type: isDevServer ? "memory" : "filesystem",
|
||||||
},
|
},
|
||||||
resolve: {
|
resolve: {
|
||||||
fallback: { "crypto": false },
|
fallback: { crypto: false },
|
||||||
extensions: [".ts", ".js"],
|
extensions: [".ts", ".js"],
|
||||||
},
|
},
|
||||||
entry,
|
entry,
|
||||||
@@ -114,28 +107,25 @@ const browserConfig = (/*env, argv*/) => {
|
|||||||
filename: "[name].js",
|
filename: "[name].js",
|
||||||
libraryTarget: "self",
|
libraryTarget: "self",
|
||||||
globalObject: "self",
|
globalObject: "self",
|
||||||
publicPath: "/"
|
publicPath: "/",
|
||||||
},
|
},
|
||||||
|
|
||||||
devServer: {
|
devServer: {
|
||||||
compress: true,
|
compress: true,
|
||||||
port: 9990,
|
port: 9990,
|
||||||
open: false,
|
open: false,
|
||||||
static: path.join(__dirname),
|
static: path.join(__dirname),
|
||||||
//publicPath: "/"
|
//publicPath: "/"
|
||||||
},
|
},
|
||||||
|
|
||||||
plugins: [
|
plugins: [
|
||||||
new webpack.NormalModuleReplacementPlugin(
|
new webpack.NormalModuleReplacementPlugin(/^node:*/, (resource) => {
|
||||||
/^node:*/,
|
switch (resource.request) {
|
||||||
(resource) => {
|
|
||||||
switch (resource.request) {
|
|
||||||
case "node:stream":
|
case "node:stream":
|
||||||
resource.request = "stream-browserify";
|
resource.request = "stream-browserify";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
},
|
}),
|
||||||
),
|
|
||||||
|
|
||||||
new webpack.optimize.LimitChunkCountPlugin({
|
new webpack.optimize.LimitChunkCountPlugin({
|
||||||
maxChunks: 1,
|
maxChunks: 1,
|
||||||
@@ -146,12 +136,12 @@ const browserConfig = (/*env, argv*/) => {
|
|||||||
new MiniCssExtractPlugin(),
|
new MiniCssExtractPlugin(),
|
||||||
new webpack.DefinePlugin({
|
new webpack.DefinePlugin({
|
||||||
__SW_NAME__: JSON.stringify("sw.js"),
|
__SW_NAME__: JSON.stringify("sw.js"),
|
||||||
__HELPER_PROXY__ : JSON.stringify(HELPER_PROXY),
|
__HELPER_PROXY__: JSON.stringify(HELPER_PROXY),
|
||||||
__GDRIVE_CLIENT_ID__ : JSON.stringify(GDRIVE_CLIENT_ID),
|
__GDRIVE_CLIENT_ID__: JSON.stringify(GDRIVE_CLIENT_ID),
|
||||||
__VERSION__: JSON.stringify(package_json.version),
|
__VERSION__: JSON.stringify(package_json.version),
|
||||||
}),
|
}),
|
||||||
new webpack.BannerPlugin(BANNER_TEXT),
|
new webpack.BannerPlugin(BANNER_TEXT),
|
||||||
new CopyPlugin({ patterns })
|
new CopyPlugin({ patterns }),
|
||||||
],
|
],
|
||||||
|
|
||||||
module: {
|
module: {
|
||||||
@@ -165,22 +155,20 @@ const browserConfig = (/*env, argv*/) => {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
test: /\.svg$/,
|
test: /\.svg$/,
|
||||||
use: ["svg-inline-loader"],
|
use: ["svg-inline-loader"],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
test: /main.scss$/,
|
test: /main.scss$/,
|
||||||
use: ["css-loader", "sass-loader"]
|
use: ["css-loader", "sass-loader"],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
test: /wombat.js|wombatWorkers.js|index.html$/i,
|
test: /wombat.js|wombatWorkers.js|index.html$/i,
|
||||||
use: ["raw-loader"],
|
use: ["raw-loader"],
|
||||||
}
|
},
|
||||||
]
|
],
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports = [ browserConfig, electronMainConfig, electronPreloadConfig ];
|
module.exports = [browserConfig, electronMainConfig, electronPreloadConfig];
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,11 @@
|
|||||||
resolved "https://registry.yarnpkg.com/7zip-bin/-/7zip-bin-5.1.1.tgz#9274ec7460652f9c632c59addf24efb1684ef876"
|
resolved "https://registry.yarnpkg.com/7zip-bin/-/7zip-bin-5.1.1.tgz#9274ec7460652f9c632c59addf24efb1684ef876"
|
||||||
integrity sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ==
|
integrity sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ==
|
||||||
|
|
||||||
|
"@aashutoshrathi/word-wrap@^1.2.3":
|
||||||
|
version "1.2.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf"
|
||||||
|
integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==
|
||||||
|
|
||||||
"@babel/code-frame@^7.0.0":
|
"@babel/code-frame@^7.0.0":
|
||||||
version "7.14.5"
|
version "7.14.5"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb"
|
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb"
|
||||||
@@ -28,6 +33,13 @@
|
|||||||
chalk "^2.0.0"
|
chalk "^2.0.0"
|
||||||
js-tokens "^4.0.0"
|
js-tokens "^4.0.0"
|
||||||
|
|
||||||
|
"@babel/runtime@^7.10.2":
|
||||||
|
version "7.23.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885"
|
||||||
|
integrity sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==
|
||||||
|
dependencies:
|
||||||
|
regenerator-runtime "^0.14.0"
|
||||||
|
|
||||||
"@ctrl/tinycolor@^3.5.0":
|
"@ctrl/tinycolor@^3.5.0":
|
||||||
version "3.6.0"
|
version "3.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/@ctrl/tinycolor/-/tinycolor-3.6.0.tgz#53fa5fe9c34faee89469e48f91d51a3766108bc8"
|
resolved "https://registry.yarnpkg.com/@ctrl/tinycolor/-/tinycolor-3.6.0.tgz#53fa5fe9c34faee89469e48f91d51a3766108bc8"
|
||||||
@@ -74,21 +86,38 @@
|
|||||||
minimatch "^3.0.4"
|
minimatch "^3.0.4"
|
||||||
plist "^3.0.4"
|
plist "^3.0.4"
|
||||||
|
|
||||||
"@eslint/eslintrc@^1.3.2":
|
"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0":
|
||||||
version "1.3.2"
|
version "4.4.0"
|
||||||
resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.2.tgz#58b69582f3b7271d8fa67fe5251767a5b38ea356"
|
resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59"
|
||||||
integrity sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ==
|
integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==
|
||||||
|
dependencies:
|
||||||
|
eslint-visitor-keys "^3.3.0"
|
||||||
|
|
||||||
|
"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1":
|
||||||
|
version "4.10.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63"
|
||||||
|
integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==
|
||||||
|
|
||||||
|
"@eslint/eslintrc@^2.1.2":
|
||||||
|
version "2.1.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.3.tgz#797470a75fe0fbd5a53350ee715e85e87baff22d"
|
||||||
|
integrity sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==
|
||||||
dependencies:
|
dependencies:
|
||||||
ajv "^6.12.4"
|
ajv "^6.12.4"
|
||||||
debug "^4.3.2"
|
debug "^4.3.2"
|
||||||
espree "^9.4.0"
|
espree "^9.6.0"
|
||||||
globals "^13.15.0"
|
globals "^13.19.0"
|
||||||
ignore "^5.2.0"
|
ignore "^5.2.0"
|
||||||
import-fresh "^3.2.1"
|
import-fresh "^3.2.1"
|
||||||
js-yaml "^4.1.0"
|
js-yaml "^4.1.0"
|
||||||
minimatch "^3.1.2"
|
minimatch "^3.1.2"
|
||||||
strip-json-comments "^3.1.1"
|
strip-json-comments "^3.1.1"
|
||||||
|
|
||||||
|
"@eslint/js@8.52.0":
|
||||||
|
version "8.52.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.52.0.tgz#78fe5f117840f69dc4a353adf9b9cd926353378c"
|
||||||
|
integrity sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA==
|
||||||
|
|
||||||
"@floating-ui/core@^1.4.1":
|
"@floating-ui/core@^1.4.1":
|
||||||
version "1.4.1"
|
version "1.4.1"
|
||||||
resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.4.1.tgz#0d633f4b76052668afb932492ac452f7ebe97f17"
|
resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.4.1.tgz#0d633f4b76052668afb932492ac452f7ebe97f17"
|
||||||
@@ -124,29 +153,24 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6"
|
resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6"
|
||||||
integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==
|
integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==
|
||||||
|
|
||||||
"@humanwhocodes/config-array@^0.10.4":
|
"@humanwhocodes/config-array@^0.11.13":
|
||||||
version "0.10.5"
|
version "0.11.13"
|
||||||
resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.10.5.tgz#bb679745224745fff1e9a41961c1d45a49f81c04"
|
resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.13.tgz#075dc9684f40a531d9b26b0822153c1e832ee297"
|
||||||
integrity sha512-XVVDtp+dVvRxMoxSiSfasYaG02VEe1qH5cKgMQJWhol6HwzbcqoCMJi8dAGoYAO57jhUyhI6cWuRiTcRaDaYug==
|
integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@humanwhocodes/object-schema" "^1.2.1"
|
"@humanwhocodes/object-schema" "^2.0.1"
|
||||||
debug "^4.1.1"
|
debug "^4.1.1"
|
||||||
minimatch "^3.0.4"
|
minimatch "^3.0.5"
|
||||||
|
|
||||||
"@humanwhocodes/gitignore-to-minimatch@^1.0.2":
|
|
||||||
version "1.0.2"
|
|
||||||
resolved "https://registry.yarnpkg.com/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz#316b0a63b91c10e53f242efb4ace5c3b34e8728d"
|
|
||||||
integrity sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==
|
|
||||||
|
|
||||||
"@humanwhocodes/module-importer@^1.0.1":
|
"@humanwhocodes/module-importer@^1.0.1":
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
|
resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
|
||||||
integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
|
integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
|
||||||
|
|
||||||
"@humanwhocodes/object-schema@^1.2.1":
|
"@humanwhocodes/object-schema@^2.0.1":
|
||||||
version "1.2.1"
|
version "2.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
|
resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz#e5211452df060fa8522b55c7b3c0c4d1981cb044"
|
||||||
integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
|
integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==
|
||||||
|
|
||||||
"@leichtgewicht/ip-codec@^2.0.1":
|
"@leichtgewicht/ip-codec@^2.0.1":
|
||||||
version "2.0.4"
|
version "2.0.4"
|
||||||
@@ -200,7 +224,7 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
|
resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
|
||||||
integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
|
integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
|
||||||
|
|
||||||
"@nodelib/fs.walk@^1.2.3":
|
"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8":
|
||||||
version "1.2.8"
|
version "1.2.8"
|
||||||
resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
|
resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
|
||||||
integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
|
integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
|
||||||
@@ -546,6 +570,11 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d"
|
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d"
|
||||||
integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==
|
integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==
|
||||||
|
|
||||||
|
"@types/json-schema@^7.0.12":
|
||||||
|
version "7.0.14"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.14.tgz#74a97a5573980802f32c8e47b663530ab3b6b7d1"
|
||||||
|
integrity sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==
|
||||||
|
|
||||||
"@types/json-schema@^7.0.9":
|
"@types/json-schema@^7.0.9":
|
||||||
version "7.0.11"
|
version "7.0.11"
|
||||||
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3"
|
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3"
|
||||||
@@ -628,6 +657,11 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91"
|
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91"
|
||||||
integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==
|
integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==
|
||||||
|
|
||||||
|
"@types/semver@^7.5.0":
|
||||||
|
version "7.5.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.4.tgz#0a41252ad431c473158b22f9bfb9a63df7541cff"
|
||||||
|
integrity sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==
|
||||||
|
|
||||||
"@types/serve-index@^1.9.1":
|
"@types/serve-index@^1.9.1":
|
||||||
version "1.9.1"
|
version "1.9.1"
|
||||||
resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.1.tgz#1b5e85370a192c01ec6cec4735cf2917337a6278"
|
resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.1.tgz#1b5e85370a192c01ec6cec4735cf2917337a6278"
|
||||||
@@ -686,6 +720,101 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@types/node" "*"
|
"@types/node" "*"
|
||||||
|
|
||||||
|
"@typescript-eslint/eslint-plugin@^6.9.1":
|
||||||
|
version "6.9.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.9.1.tgz#d8ce497dc0ed42066e195c8ecc40d45c7b1254f4"
|
||||||
|
integrity sha512-w0tiiRc9I4S5XSXXrMHOWgHgxbrBn1Ro+PmiYhSg2ZVdxrAJtQgzU5o2m1BfP6UOn7Vxcc6152vFjQfmZR4xEg==
|
||||||
|
dependencies:
|
||||||
|
"@eslint-community/regexpp" "^4.5.1"
|
||||||
|
"@typescript-eslint/scope-manager" "6.9.1"
|
||||||
|
"@typescript-eslint/type-utils" "6.9.1"
|
||||||
|
"@typescript-eslint/utils" "6.9.1"
|
||||||
|
"@typescript-eslint/visitor-keys" "6.9.1"
|
||||||
|
debug "^4.3.4"
|
||||||
|
graphemer "^1.4.0"
|
||||||
|
ignore "^5.2.4"
|
||||||
|
natural-compare "^1.4.0"
|
||||||
|
semver "^7.5.4"
|
||||||
|
ts-api-utils "^1.0.1"
|
||||||
|
|
||||||
|
"@typescript-eslint/parser@^6.9.1":
|
||||||
|
version "6.9.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.9.1.tgz#4f685f672f8b9580beb38d5fb99d52fc3e34f7a3"
|
||||||
|
integrity sha512-C7AK2wn43GSaCUZ9do6Ksgi2g3mwFkMO3Cis96kzmgudoVaKyt62yNzJOktP0HDLb/iO2O0n2lBOzJgr6Q/cyg==
|
||||||
|
dependencies:
|
||||||
|
"@typescript-eslint/scope-manager" "6.9.1"
|
||||||
|
"@typescript-eslint/types" "6.9.1"
|
||||||
|
"@typescript-eslint/typescript-estree" "6.9.1"
|
||||||
|
"@typescript-eslint/visitor-keys" "6.9.1"
|
||||||
|
debug "^4.3.4"
|
||||||
|
|
||||||
|
"@typescript-eslint/scope-manager@6.9.1":
|
||||||
|
version "6.9.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.9.1.tgz#e96afeb9a68ad1cd816dba233351f61e13956b75"
|
||||||
|
integrity sha512-38IxvKB6NAne3g/+MyXMs2Cda/Sz+CEpmm+KLGEM8hx/CvnSRuw51i8ukfwB/B/sESdeTGet1NH1Wj7I0YXswg==
|
||||||
|
dependencies:
|
||||||
|
"@typescript-eslint/types" "6.9.1"
|
||||||
|
"@typescript-eslint/visitor-keys" "6.9.1"
|
||||||
|
|
||||||
|
"@typescript-eslint/type-utils@6.9.1":
|
||||||
|
version "6.9.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.9.1.tgz#efd5db20ed35a74d3c7d8fba51b830ecba09ce32"
|
||||||
|
integrity sha512-eh2oHaUKCK58qIeYp19F5V5TbpM52680sB4zNSz29VBQPTWIlE/hCj5P5B1AChxECe/fmZlspAWFuRniep1Skg==
|
||||||
|
dependencies:
|
||||||
|
"@typescript-eslint/typescript-estree" "6.9.1"
|
||||||
|
"@typescript-eslint/utils" "6.9.1"
|
||||||
|
debug "^4.3.4"
|
||||||
|
ts-api-utils "^1.0.1"
|
||||||
|
|
||||||
|
"@typescript-eslint/types@6.9.1":
|
||||||
|
version "6.9.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.9.1.tgz#a6cfc20db0fcedcb2f397ea728ef583e0ee72459"
|
||||||
|
integrity sha512-BUGslGOb14zUHOUmDB2FfT6SI1CcZEJYfF3qFwBeUrU6srJfzANonwRYHDpLBuzbq3HaoF2XL2hcr01c8f8OaQ==
|
||||||
|
|
||||||
|
"@typescript-eslint/typescript-estree@6.9.1":
|
||||||
|
version "6.9.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.1.tgz#8c77910a49a04f0607ba94d78772da07dab275ad"
|
||||||
|
integrity sha512-U+mUylTHfcqeO7mLWVQ5W/tMLXqVpRv61wm9ZtfE5egz7gtnmqVIw9ryh0mgIlkKk9rZLY3UHygsBSdB9/ftyw==
|
||||||
|
dependencies:
|
||||||
|
"@typescript-eslint/types" "6.9.1"
|
||||||
|
"@typescript-eslint/visitor-keys" "6.9.1"
|
||||||
|
debug "^4.3.4"
|
||||||
|
globby "^11.1.0"
|
||||||
|
is-glob "^4.0.3"
|
||||||
|
semver "^7.5.4"
|
||||||
|
ts-api-utils "^1.0.1"
|
||||||
|
|
||||||
|
"@typescript-eslint/utils@6.9.1":
|
||||||
|
version "6.9.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.9.1.tgz#763da41281ef0d16974517b5f0d02d85897a1c1e"
|
||||||
|
integrity sha512-L1T0A5nFdQrMVunpZgzqPL6y2wVreSyHhKGZryS6jrEN7bD9NplVAyMryUhXsQ4TWLnZmxc2ekar/lSGIlprCA==
|
||||||
|
dependencies:
|
||||||
|
"@eslint-community/eslint-utils" "^4.4.0"
|
||||||
|
"@types/json-schema" "^7.0.12"
|
||||||
|
"@types/semver" "^7.5.0"
|
||||||
|
"@typescript-eslint/scope-manager" "6.9.1"
|
||||||
|
"@typescript-eslint/types" "6.9.1"
|
||||||
|
"@typescript-eslint/typescript-estree" "6.9.1"
|
||||||
|
semver "^7.5.4"
|
||||||
|
|
||||||
|
"@typescript-eslint/visitor-keys@6.9.1":
|
||||||
|
version "6.9.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.1.tgz#6753a9225a0ba00459b15d6456b9c2780b66707d"
|
||||||
|
integrity sha512-MUaPUe/QRLEffARsmNfmpghuQkW436DvESW+h+M52w0coICHRfD6Np9/K6PdACwnrq1HmuLl+cSPZaJmeVPkSw==
|
||||||
|
dependencies:
|
||||||
|
"@typescript-eslint/types" "6.9.1"
|
||||||
|
eslint-visitor-keys "^3.4.1"
|
||||||
|
|
||||||
|
"@ungap/structured-clone@^1.2.0":
|
||||||
|
version "1.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406"
|
||||||
|
integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==
|
||||||
|
|
||||||
|
"@vscode/web-custom-data@^0.4.2":
|
||||||
|
version "0.4.8"
|
||||||
|
resolved "https://registry.yarnpkg.com/@vscode/web-custom-data/-/web-custom-data-0.4.8.tgz#d1b7c18752361cf5b6b09a2e1cc14f34daba1a74"
|
||||||
|
integrity sha512-rRiEeEX49wipCeGZo65mQJUEuCY3IXd6bet90eY6cMMQ9jBe2g3Njw/2ctbaxuACPnEKXTdW0dB7umxDln3Rzg==
|
||||||
|
|
||||||
"@webassemblyjs/ast@1.11.1":
|
"@webassemblyjs/ast@1.11.1":
|
||||||
version "1.11.1"
|
version "1.11.1"
|
||||||
resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7"
|
resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7"
|
||||||
@@ -904,11 +1033,16 @@ acorn@^8.10.0:
|
|||||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5"
|
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5"
|
||||||
integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==
|
integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==
|
||||||
|
|
||||||
acorn@^8.7.1, acorn@^8.8.0:
|
acorn@^8.7.1:
|
||||||
version "8.8.0"
|
version "8.8.0"
|
||||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8"
|
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8"
|
||||||
integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==
|
integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==
|
||||||
|
|
||||||
|
acorn@^8.9.0:
|
||||||
|
version "8.11.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b"
|
||||||
|
integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==
|
||||||
|
|
||||||
agent-base@6, agent-base@^6.0.2:
|
agent-base@6, agent-base@^6.0.2:
|
||||||
version "6.0.2"
|
version "6.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
|
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
|
||||||
@@ -1545,7 +1679,7 @@ chalk@5.3.0:
|
|||||||
resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385"
|
resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385"
|
||||||
integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==
|
integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==
|
||||||
|
|
||||||
chalk@^2.0.0:
|
chalk@^2.0.0, chalk@^2.4.2:
|
||||||
version "2.4.2"
|
version "2.4.2"
|
||||||
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
|
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
|
||||||
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
|
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
|
||||||
@@ -2040,6 +2174,15 @@ detect-node@^2.0.4:
|
|||||||
resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1"
|
resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1"
|
||||||
integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==
|
integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==
|
||||||
|
|
||||||
|
didyoumean2@4.1.0:
|
||||||
|
version "4.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/didyoumean2/-/didyoumean2-4.1.0.tgz#f813cb7c82c249443e599be077f76e88f24b85e4"
|
||||||
|
integrity sha512-qTBmfQoXvhKO75D/05C8m+fteQmn4U46FWYiLhXtZQInzitXLWY0EQ/2oKnpAz9g2lQWW8jYcLcT+hPJGT+kig==
|
||||||
|
dependencies:
|
||||||
|
"@babel/runtime" "^7.10.2"
|
||||||
|
leven "^3.1.0"
|
||||||
|
lodash.deburr "^4.1.0"
|
||||||
|
|
||||||
dir-compare@^2.4.0:
|
dir-compare@^2.4.0:
|
||||||
version "2.4.0"
|
version "2.4.0"
|
||||||
resolved "https://registry.yarnpkg.com/dir-compare/-/dir-compare-2.4.0.tgz#785c41dc5f645b34343a4eafc50b79bac7f11631"
|
resolved "https://registry.yarnpkg.com/dir-compare/-/dir-compare-2.4.0.tgz#785c41dc5f645b34343a4eafc50b79bac7f11631"
|
||||||
@@ -2367,89 +2510,81 @@ eslint-scope@5.1.1:
|
|||||||
esrecurse "^4.3.0"
|
esrecurse "^4.3.0"
|
||||||
estraverse "^4.1.1"
|
estraverse "^4.1.1"
|
||||||
|
|
||||||
eslint-scope@^7.1.1:
|
eslint-scope@^7.2.2:
|
||||||
version "7.1.1"
|
version "7.2.2"
|
||||||
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642"
|
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f"
|
||||||
integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==
|
integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==
|
||||||
dependencies:
|
dependencies:
|
||||||
esrecurse "^4.3.0"
|
esrecurse "^4.3.0"
|
||||||
estraverse "^5.2.0"
|
estraverse "^5.2.0"
|
||||||
|
|
||||||
eslint-utils@^3.0.0:
|
|
||||||
version "3.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672"
|
|
||||||
integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==
|
|
||||||
dependencies:
|
|
||||||
eslint-visitor-keys "^2.0.0"
|
|
||||||
|
|
||||||
eslint-visitor-keys@^2.0.0:
|
|
||||||
version "2.1.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303"
|
|
||||||
integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
|
|
||||||
|
|
||||||
eslint-visitor-keys@^3.3.0:
|
eslint-visitor-keys@^3.3.0:
|
||||||
version "3.3.0"
|
version "3.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826"
|
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826"
|
||||||
integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==
|
integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==
|
||||||
|
|
||||||
eslint@^8.23.1:
|
eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3:
|
||||||
version "8.23.1"
|
version "3.4.3"
|
||||||
resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.23.1.tgz#cfd7b3f7fdd07db8d16b4ac0516a29c8d8dca5dc"
|
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800"
|
||||||
integrity sha512-w7C1IXCc6fNqjpuYd0yPlcTKKmHlHHktRkzmBPZ+7cvNBQuiNjx0xaMTjAJGCafJhQkrFJooREv0CtrVzmHwqg==
|
integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
|
||||||
|
|
||||||
|
eslint@^8.52.0:
|
||||||
|
version "8.52.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.52.0.tgz#d0cd4a1fac06427a61ef9242b9353f36ea7062fc"
|
||||||
|
integrity sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@eslint/eslintrc" "^1.3.2"
|
"@eslint-community/eslint-utils" "^4.2.0"
|
||||||
"@humanwhocodes/config-array" "^0.10.4"
|
"@eslint-community/regexpp" "^4.6.1"
|
||||||
"@humanwhocodes/gitignore-to-minimatch" "^1.0.2"
|
"@eslint/eslintrc" "^2.1.2"
|
||||||
|
"@eslint/js" "8.52.0"
|
||||||
|
"@humanwhocodes/config-array" "^0.11.13"
|
||||||
"@humanwhocodes/module-importer" "^1.0.1"
|
"@humanwhocodes/module-importer" "^1.0.1"
|
||||||
ajv "^6.10.0"
|
"@nodelib/fs.walk" "^1.2.8"
|
||||||
|
"@ungap/structured-clone" "^1.2.0"
|
||||||
|
ajv "^6.12.4"
|
||||||
chalk "^4.0.0"
|
chalk "^4.0.0"
|
||||||
cross-spawn "^7.0.2"
|
cross-spawn "^7.0.2"
|
||||||
debug "^4.3.2"
|
debug "^4.3.2"
|
||||||
doctrine "^3.0.0"
|
doctrine "^3.0.0"
|
||||||
escape-string-regexp "^4.0.0"
|
escape-string-regexp "^4.0.0"
|
||||||
eslint-scope "^7.1.1"
|
eslint-scope "^7.2.2"
|
||||||
eslint-utils "^3.0.0"
|
eslint-visitor-keys "^3.4.3"
|
||||||
eslint-visitor-keys "^3.3.0"
|
espree "^9.6.1"
|
||||||
espree "^9.4.0"
|
esquery "^1.4.2"
|
||||||
esquery "^1.4.0"
|
|
||||||
esutils "^2.0.2"
|
esutils "^2.0.2"
|
||||||
fast-deep-equal "^3.1.3"
|
fast-deep-equal "^3.1.3"
|
||||||
file-entry-cache "^6.0.1"
|
file-entry-cache "^6.0.1"
|
||||||
find-up "^5.0.0"
|
find-up "^5.0.0"
|
||||||
glob-parent "^6.0.1"
|
glob-parent "^6.0.2"
|
||||||
globals "^13.15.0"
|
globals "^13.19.0"
|
||||||
globby "^11.1.0"
|
graphemer "^1.4.0"
|
||||||
grapheme-splitter "^1.0.4"
|
|
||||||
ignore "^5.2.0"
|
ignore "^5.2.0"
|
||||||
import-fresh "^3.0.0"
|
|
||||||
imurmurhash "^0.1.4"
|
imurmurhash "^0.1.4"
|
||||||
is-glob "^4.0.0"
|
is-glob "^4.0.0"
|
||||||
js-sdsl "^4.1.4"
|
is-path-inside "^3.0.3"
|
||||||
js-yaml "^4.1.0"
|
js-yaml "^4.1.0"
|
||||||
json-stable-stringify-without-jsonify "^1.0.1"
|
json-stable-stringify-without-jsonify "^1.0.1"
|
||||||
levn "^0.4.1"
|
levn "^0.4.1"
|
||||||
lodash.merge "^4.6.2"
|
lodash.merge "^4.6.2"
|
||||||
minimatch "^3.1.2"
|
minimatch "^3.1.2"
|
||||||
natural-compare "^1.4.0"
|
natural-compare "^1.4.0"
|
||||||
optionator "^0.9.1"
|
optionator "^0.9.3"
|
||||||
regexpp "^3.2.0"
|
|
||||||
strip-ansi "^6.0.1"
|
strip-ansi "^6.0.1"
|
||||||
strip-json-comments "^3.1.0"
|
|
||||||
text-table "^0.2.0"
|
text-table "^0.2.0"
|
||||||
|
|
||||||
espree@^9.4.0:
|
espree@^9.6.0, espree@^9.6.1:
|
||||||
version "9.4.0"
|
version "9.6.1"
|
||||||
resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.0.tgz#cd4bc3d6e9336c433265fc0aa016fc1aaf182f8a"
|
resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f"
|
||||||
integrity sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==
|
integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
acorn "^8.8.0"
|
acorn "^8.9.0"
|
||||||
acorn-jsx "^5.3.2"
|
acorn-jsx "^5.3.2"
|
||||||
eslint-visitor-keys "^3.3.0"
|
eslint-visitor-keys "^3.4.1"
|
||||||
|
|
||||||
esquery@^1.4.0:
|
esquery@^1.4.2:
|
||||||
version "1.4.0"
|
version "1.5.0"
|
||||||
resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5"
|
resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b"
|
||||||
integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==
|
integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==
|
||||||
dependencies:
|
dependencies:
|
||||||
estraverse "^5.1.0"
|
estraverse "^5.1.0"
|
||||||
|
|
||||||
@@ -2599,6 +2734,17 @@ fast-glob@^3.1.1, fast-glob@^3.2.5:
|
|||||||
merge2 "^1.3.0"
|
merge2 "^1.3.0"
|
||||||
micromatch "^4.0.4"
|
micromatch "^4.0.4"
|
||||||
|
|
||||||
|
fast-glob@^3.2.11, fast-glob@^3.2.2:
|
||||||
|
version "3.3.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4"
|
||||||
|
integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==
|
||||||
|
dependencies:
|
||||||
|
"@nodelib/fs.stat" "^2.0.2"
|
||||||
|
"@nodelib/fs.walk" "^1.2.3"
|
||||||
|
glob-parent "^5.1.2"
|
||||||
|
merge2 "^1.3.0"
|
||||||
|
micromatch "^4.0.4"
|
||||||
|
|
||||||
fast-glob@^3.2.9:
|
fast-glob@^3.2.9:
|
||||||
version "3.2.12"
|
version "3.2.12"
|
||||||
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80"
|
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80"
|
||||||
@@ -2903,7 +3049,7 @@ glob-parent@^6.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
is-glob "^4.0.1"
|
is-glob "^4.0.1"
|
||||||
|
|
||||||
glob-parent@^6.0.1:
|
glob-parent@^6.0.2:
|
||||||
version "6.0.2"
|
version "6.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3"
|
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3"
|
||||||
integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
|
integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
|
||||||
@@ -2957,10 +3103,10 @@ global-dirs@^3.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
ini "2.0.0"
|
ini "2.0.0"
|
||||||
|
|
||||||
globals@^13.15.0:
|
globals@^13.19.0:
|
||||||
version "13.17.0"
|
version "13.23.0"
|
||||||
resolved "https://registry.yarnpkg.com/globals/-/globals-13.17.0.tgz#902eb1e680a41da93945adbdcb5a9f361ba69bd4"
|
resolved "https://registry.yarnpkg.com/globals/-/globals-13.23.0.tgz#ef31673c926a0976e1f61dab4dca57e0c0a8af02"
|
||||||
integrity sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==
|
integrity sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==
|
||||||
dependencies:
|
dependencies:
|
||||||
type-fest "^0.20.2"
|
type-fest "^0.20.2"
|
||||||
|
|
||||||
@@ -3048,10 +3194,10 @@ graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4,
|
|||||||
resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
|
resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
|
||||||
integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=
|
integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=
|
||||||
|
|
||||||
grapheme-splitter@^1.0.4:
|
graphemer@^1.4.0:
|
||||||
version "1.0.4"
|
version "1.4.0"
|
||||||
resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e"
|
resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6"
|
||||||
integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==
|
integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==
|
||||||
|
|
||||||
handle-thing@^2.0.0:
|
handle-thing@^2.0.0:
|
||||||
version "2.0.1"
|
version "2.0.1"
|
||||||
@@ -3326,7 +3472,12 @@ ignore@^5.2.0:
|
|||||||
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a"
|
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a"
|
||||||
integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==
|
integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==
|
||||||
|
|
||||||
import-fresh@^3.0.0, import-fresh@^3.2.1:
|
ignore@^5.2.4:
|
||||||
|
version "5.2.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324"
|
||||||
|
integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==
|
||||||
|
|
||||||
|
import-fresh@^3.2.1:
|
||||||
version "3.3.0"
|
version "3.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
|
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
|
||||||
integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
|
integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
|
||||||
@@ -3522,7 +3673,7 @@ is-obj@^2.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982"
|
resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982"
|
||||||
integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==
|
integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==
|
||||||
|
|
||||||
is-path-inside@^3.0.2:
|
is-path-inside@^3.0.2, is-path-inside@^3.0.3:
|
||||||
version "3.0.3"
|
version "3.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
|
resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
|
||||||
integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
|
integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
|
||||||
@@ -3627,11 +3778,6 @@ js-levenshtein@^1.1.6:
|
|||||||
resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d"
|
resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d"
|
||||||
integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==
|
integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==
|
||||||
|
|
||||||
js-sdsl@^4.1.4:
|
|
||||||
version "4.1.4"
|
|
||||||
resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.1.4.tgz#78793c90f80e8430b7d8dc94515b6c77d98a26a6"
|
|
||||||
integrity sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw==
|
|
||||||
|
|
||||||
js-tokens@^4.0.0:
|
js-tokens@^4.0.0:
|
||||||
version "4.0.0"
|
version "4.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
|
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
|
||||||
@@ -3745,6 +3891,11 @@ lazy-val@^1.0.4, lazy-val@^1.0.5:
|
|||||||
resolved "https://registry.yarnpkg.com/lazy-val/-/lazy-val-1.0.5.tgz#6cf3b9f5bc31cee7ee3e369c0832b7583dcd923d"
|
resolved "https://registry.yarnpkg.com/lazy-val/-/lazy-val-1.0.5.tgz#6cf3b9f5bc31cee7ee3e369c0832b7583dcd923d"
|
||||||
integrity sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==
|
integrity sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==
|
||||||
|
|
||||||
|
leven@^3.1.0:
|
||||||
|
version "3.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2"
|
||||||
|
integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==
|
||||||
|
|
||||||
levn@^0.4.1:
|
levn@^0.4.1:
|
||||||
version "0.4.1"
|
version "0.4.1"
|
||||||
resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
|
resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
|
||||||
@@ -3791,6 +3942,21 @@ listr2@6.6.1:
|
|||||||
rfdc "^1.3.0"
|
rfdc "^1.3.0"
|
||||||
wrap-ansi "^8.1.0"
|
wrap-ansi "^8.1.0"
|
||||||
|
|
||||||
|
lit-analyzer@^2.0.0-pre.3:
|
||||||
|
version "2.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/lit-analyzer/-/lit-analyzer-2.0.1.tgz#db9d67866daf3c85ea6a5a624e1987c11d06fb86"
|
||||||
|
integrity sha512-4bHJLCbxywMHd9bnVkLDkCSHXs/KrlwUks75EhYtJNdzH07O5BSVdZdadbw4T2AvuYxb0xRO4ZjqgQJCkp8Kjg==
|
||||||
|
dependencies:
|
||||||
|
"@vscode/web-custom-data" "^0.4.2"
|
||||||
|
chalk "^2.4.2"
|
||||||
|
didyoumean2 "4.1.0"
|
||||||
|
fast-glob "^3.2.11"
|
||||||
|
parse5 "5.1.0"
|
||||||
|
ts-simple-type "~2.0.0-next.0"
|
||||||
|
vscode-css-languageservice "4.3.0"
|
||||||
|
vscode-html-languageservice "3.1.0"
|
||||||
|
web-component-analyzer "^2.0.0"
|
||||||
|
|
||||||
lit-element@^3.3.0:
|
lit-element@^3.3.0:
|
||||||
version "3.3.3"
|
version "3.3.3"
|
||||||
resolved "https://registry.yarnpkg.com/lit-element/-/lit-element-3.3.3.tgz#10bc19702b96ef5416cf7a70177255bfb17b3209"
|
resolved "https://registry.yarnpkg.com/lit-element/-/lit-element-3.3.3.tgz#10bc19702b96ef5416cf7a70177255bfb17b3209"
|
||||||
@@ -3853,6 +4019,11 @@ locate-path@^6.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
p-locate "^5.0.0"
|
p-locate "^5.0.0"
|
||||||
|
|
||||||
|
lodash.deburr@^4.1.0:
|
||||||
|
version "4.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/lodash.deburr/-/lodash.deburr-4.1.0.tgz#ddb1bbb3ef07458c0177ba07de14422cb033ff9b"
|
||||||
|
integrity sha512-m/M1U1f3ddMCs6Hq2tAsYThTBDaAKFDX3dwDo97GEYzamXi9SqUpjWi/Rrj/gf3X2n8ktwgZrlP1z6E3v/IExQ==
|
||||||
|
|
||||||
lodash.escaperegexp@^4.1.2:
|
lodash.escaperegexp@^4.1.2:
|
||||||
version "4.1.2"
|
version "4.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz#64762c48618082518ac3df4ccf5d5886dae20347"
|
resolved "https://registry.yarnpkg.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz#64762c48618082518ac3df4ccf5d5886dae20347"
|
||||||
@@ -4116,7 +4287,7 @@ minimatch@3.0.4, minimatch@~3.0.2:
|
|||||||
dependencies:
|
dependencies:
|
||||||
brace-expansion "^1.1.7"
|
brace-expansion "^1.1.7"
|
||||||
|
|
||||||
minimatch@^3.0.4, minimatch@^3.1.2:
|
minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.2:
|
||||||
version "3.1.2"
|
version "3.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
|
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
|
||||||
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
|
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
|
||||||
@@ -4486,17 +4657,17 @@ opener@^1.5.1:
|
|||||||
resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598"
|
resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598"
|
||||||
integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==
|
integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==
|
||||||
|
|
||||||
optionator@^0.9.1:
|
optionator@^0.9.3:
|
||||||
version "0.9.1"
|
version "0.9.3"
|
||||||
resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499"
|
resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64"
|
||||||
integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==
|
integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==
|
||||||
dependencies:
|
dependencies:
|
||||||
|
"@aashutoshrathi/word-wrap" "^1.2.3"
|
||||||
deep-is "^0.1.3"
|
deep-is "^0.1.3"
|
||||||
fast-levenshtein "^2.0.6"
|
fast-levenshtein "^2.0.6"
|
||||||
levn "^0.4.1"
|
levn "^0.4.1"
|
||||||
prelude-ls "^1.2.1"
|
prelude-ls "^1.2.1"
|
||||||
type-check "^0.4.0"
|
type-check "^0.4.0"
|
||||||
word-wrap "^1.2.3"
|
|
||||||
|
|
||||||
p-cancelable@^1.0.0:
|
p-cancelable@^1.0.0:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
@@ -4611,6 +4782,11 @@ parse5-sax-parser@^7.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
parse5 "^7.0.0"
|
parse5 "^7.0.0"
|
||||||
|
|
||||||
|
parse5@5.1.0:
|
||||||
|
version "5.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2"
|
||||||
|
integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==
|
||||||
|
|
||||||
parse5@^6.0.1:
|
parse5@^6.0.1:
|
||||||
version "6.0.1"
|
version "6.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b"
|
resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b"
|
||||||
@@ -4999,10 +5175,10 @@ reflect-metadata@^0.1.13:
|
|||||||
resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08"
|
resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08"
|
||||||
integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==
|
integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==
|
||||||
|
|
||||||
regexpp@^3.2.0:
|
regenerator-runtime@^0.14.0:
|
||||||
version "3.2.0"
|
version "0.14.0"
|
||||||
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2"
|
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45"
|
||||||
integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==
|
integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==
|
||||||
|
|
||||||
register-service-worker@^1.7.2:
|
register-service-worker@^1.7.2:
|
||||||
version "1.7.2"
|
version "1.7.2"
|
||||||
@@ -5272,7 +5448,7 @@ semver@^6.0.0, semver@^6.2.0, semver@^6.3.0:
|
|||||||
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
|
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
|
||||||
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
|
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
|
||||||
|
|
||||||
semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7:
|
semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.5.4:
|
||||||
version "7.5.4"
|
version "7.5.4"
|
||||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e"
|
resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e"
|
||||||
integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==
|
integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==
|
||||||
@@ -5694,7 +5870,7 @@ strip-indent@^3.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
min-indent "^1.0.0"
|
min-indent "^1.0.0"
|
||||||
|
|
||||||
strip-json-comments@^3.1.0, strip-json-comments@^3.1.1:
|
strip-json-comments@^3.1.1:
|
||||||
version "3.1.1"
|
version "3.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
|
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
|
||||||
integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
|
integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
|
||||||
@@ -5880,6 +6056,19 @@ truncate-utf8-bytes@^1.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
utf8-byte-length "^1.0.1"
|
utf8-byte-length "^1.0.1"
|
||||||
|
|
||||||
|
ts-api-utils@^1.0.1:
|
||||||
|
version "1.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.3.tgz#f12c1c781d04427313dbac808f453f050e54a331"
|
||||||
|
integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==
|
||||||
|
|
||||||
|
ts-lit-plugin@^2.0.0-pre.1:
|
||||||
|
version "2.0.0-pre.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/ts-lit-plugin/-/ts-lit-plugin-2.0.0-pre.1.tgz#e0ff2607dac01595f105faece19588307fd23d8e"
|
||||||
|
integrity sha512-zXTdephVcjJ0VySiaQRbFCZegvhhePY1FHGsMYs7m/faUViPzPe8WwGryKeXmQtCaUJ7eA79areW2H/AeC7VBg==
|
||||||
|
dependencies:
|
||||||
|
lit-analyzer "^2.0.0-pre.3"
|
||||||
|
web-component-analyzer "^2.0.0-next.5"
|
||||||
|
|
||||||
ts-loader@^9.4.4:
|
ts-loader@^9.4.4:
|
||||||
version "9.4.4"
|
version "9.4.4"
|
||||||
resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.4.4.tgz#6ceaf4d58dcc6979f84125335904920884b7cee4"
|
resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.4.4.tgz#6ceaf4d58dcc6979f84125335904920884b7cee4"
|
||||||
@@ -5890,6 +6079,11 @@ ts-loader@^9.4.4:
|
|||||||
micromatch "^4.0.0"
|
micromatch "^4.0.0"
|
||||||
semver "^7.3.4"
|
semver "^7.3.4"
|
||||||
|
|
||||||
|
ts-simple-type@2.0.0-next.0, ts-simple-type@~2.0.0-next.0:
|
||||||
|
version "2.0.0-next.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/ts-simple-type/-/ts-simple-type-2.0.0-next.0.tgz#262a321ba2a17aa57f88ef31e30453beff5be246"
|
||||||
|
integrity sha512-A+hLX83gS+yH6DtzNAhzZbPfU+D9D8lHlTSd7GeoMRBjOt3GRylDqLTYbdmjA4biWvq2xSfpqfIDj2l0OA/BVg==
|
||||||
|
|
||||||
tslib@^1.10.0, tslib@^1.9.3:
|
tslib@^1.10.0, tslib@^1.9.3:
|
||||||
version "1.14.1"
|
version "1.14.1"
|
||||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
|
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
|
||||||
@@ -5976,10 +6170,10 @@ typedarray-to-buffer@^3.1.5:
|
|||||||
dependencies:
|
dependencies:
|
||||||
is-typedarray "^1.0.0"
|
is-typedarray "^1.0.0"
|
||||||
|
|
||||||
typescript@^5.1.6:
|
typescript@^5.2.2, typescript@~5.2.0:
|
||||||
version "5.1.6"
|
version "5.2.2"
|
||||||
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.6.tgz#02f8ac202b6dad2c0dd5e0913745b47a37998274"
|
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78"
|
||||||
integrity sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==
|
integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==
|
||||||
|
|
||||||
union@~0.5.0:
|
union@~0.5.0:
|
||||||
version "0.5.0"
|
version "0.5.0"
|
||||||
@@ -6131,6 +6325,46 @@ verror@^1.10.0:
|
|||||||
core-util-is "1.0.2"
|
core-util-is "1.0.2"
|
||||||
extsprintf "^1.2.0"
|
extsprintf "^1.2.0"
|
||||||
|
|
||||||
|
vscode-css-languageservice@4.3.0:
|
||||||
|
version "4.3.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-4.3.0.tgz#40c797d664ab6188cace33cfbb19b037580a9318"
|
||||||
|
integrity sha512-BkQAMz4oVHjr0oOAz5PdeE72txlLQK7NIwzmclfr+b6fj6I8POwB+VoXvrZLTbWt9hWRgfvgiQRkh5JwrjPJ5A==
|
||||||
|
dependencies:
|
||||||
|
vscode-languageserver-textdocument "^1.0.1"
|
||||||
|
vscode-languageserver-types "3.16.0-next.2"
|
||||||
|
vscode-nls "^4.1.2"
|
||||||
|
vscode-uri "^2.1.2"
|
||||||
|
|
||||||
|
vscode-html-languageservice@3.1.0:
|
||||||
|
version "3.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/vscode-html-languageservice/-/vscode-html-languageservice-3.1.0.tgz#265b53bda595e6947b16b0fb8c604e1e58685393"
|
||||||
|
integrity sha512-QAyRHI98bbEIBCqTzZVA0VblGU40na0txggongw5ZgTj9UVsVk5XbLT16O9OTcbqBGSqn0oWmFDNjK/XGIDcqg==
|
||||||
|
dependencies:
|
||||||
|
vscode-languageserver-textdocument "^1.0.1"
|
||||||
|
vscode-languageserver-types "3.16.0-next.2"
|
||||||
|
vscode-nls "^4.1.2"
|
||||||
|
vscode-uri "^2.1.2"
|
||||||
|
|
||||||
|
vscode-languageserver-textdocument@^1.0.1:
|
||||||
|
version "1.0.11"
|
||||||
|
resolved "https://registry.yarnpkg.com/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.11.tgz#0822a000e7d4dc083312580d7575fe9e3ba2e2bf"
|
||||||
|
integrity sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==
|
||||||
|
|
||||||
|
vscode-languageserver-types@3.16.0-next.2:
|
||||||
|
version "3.16.0-next.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0-next.2.tgz#940bd15c992295a65eae8ab6b8568a1e8daa3083"
|
||||||
|
integrity sha512-QjXB7CKIfFzKbiCJC4OWC8xUncLsxo19FzGVp/ADFvvi87PlmBSCAtZI5xwGjF5qE0xkLf0jjKUn3DzmpDP52Q==
|
||||||
|
|
||||||
|
vscode-nls@^4.1.2:
|
||||||
|
version "4.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-4.1.2.tgz#ca8bf8bb82a0987b32801f9fddfdd2fb9fd3c167"
|
||||||
|
integrity sha512-7bOHxPsfyuCqmP+hZXscLhiHwe7CSuFE4hyhbs22xPIhQ4jv99FcR4eBzfYYVLP356HNFpdvz63FFb/xw6T4Iw==
|
||||||
|
|
||||||
|
vscode-uri@^2.1.2:
|
||||||
|
version "2.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-2.1.2.tgz#c8d40de93eb57af31f3c715dd650e2ca2c096f1c"
|
||||||
|
integrity sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==
|
||||||
|
|
||||||
warcio@^2.2.0:
|
warcio@^2.2.0:
|
||||||
version "2.2.0"
|
version "2.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/warcio/-/warcio-2.2.0.tgz#9f307174c7b05b5546dda9e45098c4212c363561"
|
resolved "https://registry.yarnpkg.com/warcio/-/warcio-2.2.0.tgz#9f307174c7b05b5546dda9e45098c4212c363561"
|
||||||
@@ -6158,6 +6392,16 @@ wbuf@^1.1.0, wbuf@^1.7.3:
|
|||||||
dependencies:
|
dependencies:
|
||||||
minimalistic-assert "^1.0.0"
|
minimalistic-assert "^1.0.0"
|
||||||
|
|
||||||
|
web-component-analyzer@^2.0.0, web-component-analyzer@^2.0.0-next.5:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/web-component-analyzer/-/web-component-analyzer-2.0.0.tgz#38a66055ae2340fceaea84f19f9ee3f15233ba28"
|
||||||
|
integrity sha512-UEvwfpD+XQw99sLKiH5B1T4QwpwNyWJxp59cnlRwFfhUW6JsQpw5jMeMwi7580sNou8YL3kYoS7BWLm+yJ/jVQ==
|
||||||
|
dependencies:
|
||||||
|
fast-glob "^3.2.2"
|
||||||
|
ts-simple-type "2.0.0-next.0"
|
||||||
|
typescript "~5.2.0"
|
||||||
|
yargs "^17.7.2"
|
||||||
|
|
||||||
web-streams-polyfill@^3.0.3:
|
web-streams-polyfill@^3.0.3:
|
||||||
version "3.2.1"
|
version "3.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz#71c2718c52b45fd49dbeee88634b3a60ceab42a6"
|
resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz#71c2718c52b45fd49dbeee88634b3a60ceab42a6"
|
||||||
@@ -6311,11 +6555,6 @@ wildcard@^2.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec"
|
resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec"
|
||||||
integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==
|
integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==
|
||||||
|
|
||||||
word-wrap@^1.2.3:
|
|
||||||
version "1.2.4"
|
|
||||||
resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.4.tgz#cb4b50ec9aca570abd1f52f33cd45b6c61739a9f"
|
|
||||||
integrity sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==
|
|
||||||
|
|
||||||
wrap-ansi@^7.0.0:
|
wrap-ansi@^7.0.0:
|
||||||
version "7.0.0"
|
version "7.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
|
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
|
||||||
@@ -6438,6 +6677,19 @@ yargs@^17.6.2:
|
|||||||
y18n "^5.0.5"
|
y18n "^5.0.5"
|
||||||
yargs-parser "^21.1.1"
|
yargs-parser "^21.1.1"
|
||||||
|
|
||||||
|
yargs@^17.7.2:
|
||||||
|
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"
|
||||||
|
|
||||||
yauzl@^2.10.0:
|
yauzl@^2.10.0:
|
||||||
version "2.10.0"
|
version "2.10.0"
|
||||||
resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"
|
resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"
|
||||||
|
|||||||
Reference in New Issue
Block a user