diff --git a/README.md b/README.md index 5c360dc..b34dd58 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,15 @@ Next generation SDK for publications in Web Apps -## Install +## Usage + +Three packages are made available by this repository, which are published on NPM. +They are: +- [@readium/shared](https://www.npmjs.com/package/@readium/shared) +- [@readium/navigator-html-injectables](https://www.npmjs.com/package/@readium/navigator-html-injectables) +- [@readium/navigator](https://www.npmjs.com/package/@readium/navigator) + +# Development You need `pnpm` installed as this is a monorepo using workspaces. diff --git a/navigator-html-injectables/CHANGELOG.MD b/navigator-html-injectables/CHANGELOG.MD new file mode 100644 index 0000000..3ca5b27 --- /dev/null +++ b/navigator-html-injectables/CHANGELOG.MD @@ -0,0 +1,20 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [1.3.0] - 2024-11-22 + +### Added + +- (`epubReadingSystem`)[https://www.w3.org/TR/epub-rs-33/#app-epubReadingSystem] is available to publications. + +### Fixed + +- Ensure CSS-only locator ranges are correct, especially relevant when using the `go_text` command (#77). + +### Changed + +- The `ColumnSnapper` and `ScrollSnapper` report progress that now includes a reference progression – a.k.a. progression by a ReadiumWindow viewport – in addition to the current one (#62). \ No newline at end of file diff --git a/navigator-html-injectables/package.json b/navigator-html-injectables/package.json index bca9cbf..6a20e2f 100644 --- a/navigator-html-injectables/package.json +++ b/navigator-html-injectables/package.json @@ -1,6 +1,6 @@ { "name": "@readium/navigator-html-injectables", - "version": "1.2.0", + "version": "1.3.0", "type": "module", "description": "An embeddable solution for connecting frames of HTML publications with a Readium Navigator", "author": "readium", @@ -53,6 +53,6 @@ "css-selector-generator": "^3.6.4", "tslib": "^2.6.1", "typescript": "^5.4.5", - "vite": "^4.4.9" + "vite": "^4.5.5" } } diff --git a/navigator-html-injectables/src/helpers/dom.ts b/navigator-html-injectables/src/helpers/dom.ts index fbc1c2b..cb2a78c 100644 --- a/navigator-html-injectables/src/helpers/dom.ts +++ b/navigator-html-injectables/src/helpers/dom.ts @@ -5,6 +5,13 @@ import type { getCssSelector } from "css-selector-generator"; type BlockedEventData = [0, Function, any[], any[]] | [1, Event, EventTarget]; +export interface EPUBReadingSystem { + name: string; + version: string; + layoutStyle: "paginated" | "scrolling"; // Technically, more are allowed + hasFeature: (feature: string, version?: string) => boolean; +} + // This is what is injected into the HTML documents export interface ReadiumWindow extends Window { _readium_blockEvents: boolean; @@ -13,6 +20,7 @@ export interface ReadiumWindow extends Window { _readium_cssSelectorGenerator: { getCssSelector: typeof getCssSelector; }; + navigator: Navigator & { epubReadingSystem: EPUBReadingSystem }; } export function deselect(wnd: ReadiumWindow) { diff --git a/navigator-html-injectables/src/helpers/locator.ts b/navigator-html-injectables/src/helpers/locator.ts index 6fa64a6..a4d1d8b 100644 --- a/navigator-html-injectables/src/helpers/locator.ts +++ b/navigator-html-injectables/src/helpers/locator.ts @@ -1,67 +1,69 @@ import { Locator } from "@readium/shared"; import { TextQuoteAnchor } from "../vendor/hypothesis/anchoring/types"; +function isReplacedLikeElement(element: Element): boolean { + const tagName = element.tagName.toUpperCase(); + return tagName === "IMG" || tagName === "VIDEO" || tagName === "AUDIO" || tagName === "IFRAME" || tagName === "OBJECT" || tagName === "EMBED" || tagName === "CANVAS"; +} + // Based on the kotlin-toolkit code export function rangeFromLocator(doc: Document, locator: Locator) { try { - let locations = locator.locations; - let text = locator.text; - if (text && text.highlight) { - let root; - if (locations && locations.getCssSelector()) { - root = doc.querySelector(locations.getCssSelector()!); - } - if (!root) { - root = doc.body; - } - - let anchor = new TextQuoteAnchor(root, text.highlight, { - prefix: text.before, - suffix: text.after, - }); - try { - return anchor.toRange(); - } catch (error) { - // We don't watch to "crash" when the quote is not found - console.warn("Quote not found:", anchor); - return null; - } - } - - if (locations) { - var element = null; - - if (!element && locations.getCssSelector()) { - element = doc.querySelector(locations.getCssSelector()!); - } - - if (!element && locations.fragments) { - for (const htmlId of locations.fragments) { - element = doc.getElementById(htmlId); - if (element) { - break; + const locations = locator.locations; + const text = locator.text; + if (text && text.highlight) { + let root; + if (locations && locations.getCssSelector()) { + root = doc.querySelector(locations.getCssSelector()!); + } + if (!root) { + root = doc.body; + } + + const anchor = new TextQuoteAnchor(root, text.highlight, { + prefix: text.before, + suffix: text.after, + }); + try { + return anchor.toRange(); + } catch (error) { + // We don't watch to "crash" when the quote is not found + console.warn("Quote not found:", anchor); + return null; } - } } - - if (element) { - let range = doc.createRange(); - // This is a special case where the node is - // a single element with no children. Not sure - // yet how effective this is yet, may remove in future. - if(element.childNodes.length === 0) { - range.selectNodeContents(element); - return range; - } + if (locations) { + let element = null; - range.setStartBefore(element); - range.setEndAfter(element); - return range; + if (!element && locations.getCssSelector()) { + element = doc.querySelector(locations.getCssSelector()!); + } + + if (!element && locations.fragments) { + for (const htmlId of locations.fragments) { + element = doc.getElementById(htmlId); + if (element) { + break; + } + } + } + + if (element) { + const range = doc.createRange(); + + if (element.childNodes.length === 0 || isReplacedLikeElement(element)) { + range.selectNode(element); + return range; + } + + range.setStartBefore(element); + range.setEndAfter(element); + return range; + } } - } } catch (e) { - console.error(e); + console.error(e); } return null; - } \ No newline at end of file +} \ No newline at end of file diff --git a/navigator-html-injectables/src/modules/setup/FixedSetup.ts b/navigator-html-injectables/src/modules/setup/FixedSetup.ts index 83929f1..381457b 100644 --- a/navigator-html-injectables/src/modules/setup/FixedSetup.ts +++ b/navigator-html-injectables/src/modules/setup/FixedSetup.ts @@ -12,6 +12,8 @@ export class FixedSetup extends Setup { mount(wnd: ReadiumWindow, comms: Comms): boolean { if(!super.mount(wnd, comms)) return false; + wnd.navigator.epubReadingSystem.layoutStyle = "paginated"; // TODO: what if we support scrolling? + const style = wnd.document.createElement("style"); style.id = FIXED_STYLE_ID; style.dataset.readium = "true"; diff --git a/navigator-html-injectables/src/modules/setup/Setup.ts b/navigator-html-injectables/src/modules/setup/Setup.ts index 13d870b..a2f048f 100644 --- a/navigator-html-injectables/src/modules/setup/Setup.ts +++ b/navigator-html-injectables/src/modules/setup/Setup.ts @@ -1,5 +1,5 @@ import { Comms } from "../../comms/comms"; -import { ReadiumWindow } from "../../helpers/dom"; +import { ReadiumWindow, EPUBReadingSystem } from "../../helpers/dom"; import { Module } from "../Module"; import { ModuleName } from "../ModuleLibrary"; @@ -72,6 +72,35 @@ export abstract class Setup extends Module { false ); + // Add reading system property to navigator + Reflect.defineProperty(wnd.navigator, "epubReadingSystem", { + value: { + name: "readium-ts-toolkit", + version: import.meta.env.PACKAGE_VERSION, + hasFeature: (feature: string, _version = "") => { + switch (feature) { + case "dom-manipulation": + return true; + case "layout-changes": + return true; + case "touch-events": + return true; + case "mouse-events": + return true; + case "keyboard-events": + return true; + case "spine-scripting": + return true; + case "embedded-web-content": + return true; + default: + return false; + } + } + } as EPUBReadingSystem, + writable: false + }); + // Add all currently active animations and cancel them if("getAnimations" in wnd.document) { wnd.document.getAnimations().forEach((a) => { diff --git a/navigator-html-injectables/src/modules/snapper/ColumnSnapper.ts b/navigator-html-injectables/src/modules/snapper/ColumnSnapper.ts index c2d3dcd..d63cd20 100644 --- a/navigator-html-injectables/src/modules/snapper/ColumnSnapper.ts +++ b/navigator-html-injectables/src/modules/snapper/ColumnSnapper.ts @@ -40,7 +40,7 @@ export class ColumnSnapper extends Snapper { } reportProgress() { - this.comms.send("progress", this.wnd.scrollX / this.cachedScrollWidth); + this.comms.send("progress", { progress: this.wnd.scrollX / this.cachedScrollWidth, reference: this.wnd.innerWidth / this.doc().scrollWidth }); } private shakeTimeout = 0; @@ -229,6 +229,8 @@ export class ColumnSnapper extends Snapper { this.comms = comms; if(!super.mount(wnd, comms)) return false; + wnd.navigator.epubReadingSystem.layoutStyle = "paginated"; + // Add styling to hide the scrollbar const d = wnd.document.createElement("style"); d.dataset.readium = "true"; diff --git a/navigator-html-injectables/src/modules/snapper/ScrollSnapper.ts b/navigator-html-injectables/src/modules/snapper/ScrollSnapper.ts index edea423..d18fdde 100644 --- a/navigator-html-injectables/src/modules/snapper/ScrollSnapper.ts +++ b/navigator-html-injectables/src/modules/snapper/ScrollSnapper.ts @@ -30,14 +30,16 @@ export class ScrollSnapper extends Snapper { customElements.define("anchor-observer", AnchorObserver); } - private reportProgress(progress: number) { - this.comms.send("progress", progress); + private reportProgress(data: { progress: number, reference: number }) { + this.comms.send("progress", data); } mount(wnd: ReadiumWindow, comms: Comms): boolean { this.wnd = wnd; this.comms = comms; + wnd.navigator.epubReadingSystem.layoutStyle = "scrolling"; + // Add styling to hide the scrollbar const style = wnd.document.createElement("style"); style.dataset.readium = "true"; @@ -66,7 +68,7 @@ export class ScrollSnapper extends Snapper { this.wnd.requestAnimationFrame(() => { this.doc().scrollTop = this.doc().offsetHeight * position; - this.reportProgress(position); + this.reportProgress({ progress: position, reference: this.wnd.innerHeight / this.doc().scrollHeight }); deselect(this.wnd); ack(true); }); @@ -80,7 +82,8 @@ export class ScrollSnapper extends Snapper { } this.wnd.requestAnimationFrame(() => { this.doc().scrollTop = element.getBoundingClientRect().top + wnd.scrollY - wnd.innerHeight / 2; - this.reportProgress(this.doc().scrollTop / this.doc().offsetHeight); + const progress = this.doc().scrollTop / this.doc().offsetHeight; + this.reportProgress({ progress: progress, reference: this.wnd.innerHeight / this.doc().scrollHeight }); deselect(this.wnd); ack(true); }); @@ -111,7 +114,8 @@ export class ScrollSnapper extends Snapper { } this.wnd.requestAnimationFrame(() => { this.doc().scrollTop = r.getBoundingClientRect().top + wnd.scrollY - wnd.innerHeight / 2; - this.reportProgress(this.doc().scrollTop / this.doc().offsetHeight); + const progress = this.doc().scrollTop / this.doc().offsetHeight + this.reportProgress({ progress: progress, reference: this.wnd.innerHeight / this.doc().scrollHeight }); deselect(this.wnd); ack(true); }); @@ -120,14 +124,14 @@ export class ScrollSnapper extends Snapper { comms.register("go_start", ScrollSnapper.moduleName, (_, ack) => { if (this.doc().scrollTop === 0) return ack(false); this.doc().scrollTop = 0; - this.reportProgress(0); + this.reportProgress({ progress: 0, reference: this.wnd.innerHeight / this.doc().scrollHeight }); ack(true); }); comms.register("go_end", ScrollSnapper.moduleName, (_, ack) => { if (this.doc().scrollTop === 0) return ack(false); this.doc().scrollTop = 0; - this.reportProgress(0); + this.reportProgress({ progress: 0, reference: this.wnd.innerHeight / this.doc().scrollHeight }); ack(true); }) @@ -142,7 +146,8 @@ export class ScrollSnapper extends Snapper { ], ScrollSnapper.moduleName, (_, ack) => ack(false)); comms.register("focus", ScrollSnapper.moduleName, (_, ack) => { - this.reportProgress(this.doc().scrollTop / this.doc().offsetHeight); + const progress = this.doc().scrollTop / this.doc().offsetHeight + this.reportProgress({ progress: progress, reference: this.wnd.innerHeight / this.doc().scrollHeight }); ack(true); }); diff --git a/navigator-html-injectables/tsconfig.json b/navigator-html-injectables/tsconfig.json index c9f8759..65f5c37 100644 --- a/navigator-html-injectables/tsconfig.json +++ b/navigator-html-injectables/tsconfig.json @@ -35,6 +35,7 @@ "forceConsistentCasingInFileNames": true, // emit only .d.ts "noEmit": false, - "emitDeclarationOnly": true + "emitDeclarationOnly": true, + "types": ["vite/client"] }, } diff --git a/navigator-html-injectables/vite.config.js b/navigator-html-injectables/vite.config.js index 2ff691e..f48031f 100644 --- a/navigator-html-injectables/vite.config.js +++ b/navigator-html-injectables/vite.config.js @@ -1,5 +1,6 @@ import { resolve } from "path"; import { defineConfig } from "vite"; +import packageJson from "./package.json"; export default defineConfig({ build: { @@ -8,5 +9,9 @@ export default defineConfig({ name: "navigator-html-injectables", fileName: "index" } + }, + define: { + "import.meta.env.PACKAGE_NAME": JSON.stringify(packageJson.name), + "import.meta.env.PACKAGE_VERSION": JSON.stringify(packageJson.version), } }); \ No newline at end of file diff --git a/navigator/CHANGELOG.MD b/navigator/CHANGELOG.MD new file mode 100644 index 0000000..b54f30b --- /dev/null +++ b/navigator/CHANGELOG.MD @@ -0,0 +1,13 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [1.3.0] - 2024-11-22 + +### Changed + +- `findNearestPosition` in the (`EPUBNavigator`)[https://github.com/readium/ts-toolkit/blob/develop/navigator/src/epub/EpubNavigator.ts] has been replaced by `findLastPositionInProgressionRange` and `findNearestPositions` (#62). +- The Readium CSS dependency is now on the latest 1.x version, and added as a dependency using the `@readium/css` NPM package. \ No newline at end of file diff --git a/navigator/package.json b/navigator/package.json index 458dece..63c94a4 100644 --- a/navigator/package.json +++ b/navigator/package.json @@ -1,6 +1,6 @@ { "name": "@readium/navigator", - "version": "1.2.0", + "version": "1.3.0", "type": "module", "description": "Next generation SDK for publications in Web Apps", "author": "readium", @@ -48,18 +48,16 @@ "build": "tsc && vite build" }, "devDependencies": { - "@laynezh/vite-plugin-lib-assets": "^0.5.24", - "@readium/navigator-html-injectables": "workspace:0.0.1", - "@readium/shared": "workspace:1.2.0", - "@types/path-browserify": "^1.0.0", - "css-selector-generator": "^3.6.4", - "readium-css": "github:readium/readium-css", - "tslib": "^2.5.2", - "typescript": "^5.4.5", + "@laynezh/vite-plugin-lib-assets": "^0.5.25", + "@readium/navigator-html-injectables": "workspace:*", + "@readium/shared": "workspace:*", + "@types/path-browserify": "^1.0.3", + "css-selector-generator": "^3.6.9", + "path-browserify": "^1.0.1", + "@readium/css": "^1.1.0", + "tslib": "^2.8.1", + "typescript": "^5.6.3", "typescript-plugin-css-modules": "^5.1.0", - "vite": "^4.4.9" - }, - "dependencies": { - "path-browserify": "^1.0.1" + "vite": "^4.5.5" } } diff --git a/navigator/src/epub/EpubNavigator.ts b/navigator/src/epub/EpubNavigator.ts index d8c5ae4..f2de6b2 100644 --- a/navigator/src/epub/EpubNavigator.ts +++ b/navigator/src/epub/EpubNavigator.ts @@ -42,6 +42,7 @@ export class EpubNavigator extends VisualNavigator { private framePool!: FramePoolManager | FXLFramePoolManager; private positions!: Locator[]; private currentLocation!: Locator; + private lastLocationInView: Locator | undefined; private currentProgression: ReadingProgression; public readonly layout: EPUBLayout; @@ -216,7 +217,7 @@ export class EpubNavigator extends VisualNavigator { this.listeners.zoom(data as number); break; case "progress": - this.syncLocation(data as number); + this.syncLocation(data as { progress: number, reference: number }); break; case "log": console.log(this._cframes[0]?.source?.split("/")[3], ...(data as any[])); @@ -336,30 +337,51 @@ export class EpubNavigator extends VisualNavigator { return true; } - private findNearestPosition(fromProgression: number): Locator { + private findLastPositionInProgressionRange(positions: Locator[], range: number[]): Locator | undefined { + const match = positions.findLastIndex((p) => { + const pr = p.locations.progression; + if (pr && pr > Math.min(...range) && pr <= Math.max(...range)) { + return true; + } else { + return false; + } + }); + return match !== -1 ? positions[match] : undefined; + } + + private findNearestPositions(fromProgression: { progress: number, reference: number }): { first: Locator, last: Locator | undefined } { // TODO replace with locator service const potentialPositions = this.positions.filter( (p) => p.href === this.currentLocation.href ); - let pos = this.currentLocation; + let first = this.currentLocation; + let last = undefined; - // Find the last locator with a progrssion that's + // Find the last locator with a progression that's // smaller than or equal to the requested progression. - potentialPositions.some((p) => { + potentialPositions.some((p, idx) => { const pr = p.locations.progression ?? 0; - if (fromProgression <= pr) { - pos = p; + if (fromProgression.progress <= pr) { + first = p; + + // If there’s a match, check the last in view, from the next progression + const nextPositions = potentialPositions.splice(idx + 1, potentialPositions.length); + const range = [fromProgression.progress, fromProgression.progress + fromProgression.reference]; + last = this.findLastPositionInProgressionRange(nextPositions, range); + return true; } else return false; }); - return pos; + return { first: first, last: last } } - private async syncLocation(iframeProgress: number) { - this.currentLocation = this.findNearestPosition(iframeProgress).copyWithLocations({ - progression: iframeProgress // Most accurate progression in resource + private async syncLocation(iframeProgress: { progress: number, reference: number }) { + const nearestPositions = this.findNearestPositions(iframeProgress) + this.currentLocation = nearestPositions.first.copyWithLocations({ + progression: iframeProgress.progress // Most accurate progression in resource }); + this.lastLocationInView = nearestPositions.last; this.listeners.positionChanged(this.currentLocation); await this.framePool.update(this.pub, this.currentLocation, this.determineModules()); } @@ -410,7 +432,7 @@ export class EpubNavigator extends VisualNavigator { if(this.layout === EPUBLayout.fixed) return (this.framePool as FXLFramePoolManager).currentNumbers; - return [this.currentLocator?.locations.position ?? 0]; + return [this.currentLocator?.locations.position ?? 0, ...(this.lastLocationInView?.locations.position ? [this.lastLocationInView.locations.position] : [])]; } // TODO: This is temporary until user settings are implemented. diff --git a/navigator/src/epub/frame/FrameBlobBuilder.ts b/navigator/src/epub/frame/FrameBlobBuilder.ts index 3ecb54e..af3c539 100644 --- a/navigator/src/epub/frame/FrameBlobBuilder.ts +++ b/navigator/src/epub/frame/FrameBlobBuilder.ts @@ -4,11 +4,11 @@ import { Link, Publication } from "@readium/shared"; // Readium CSS imports // The "?inline" query is to prevent some bundlers from injecting these into the page (e.g. vite) // @ts-ignore -import readiumCSSAfter from "readium-css/css/dist/ReadiumCSS-after.css?inline"; +import readiumCSSAfter from "@readium/css/css/dist/ReadiumCSS-after.css?inline"; // @ts-ignore -import readiumCSSBefore from "readium-css/css/dist/ReadiumCSS-before.css?inline"; +import readiumCSSBefore from "@readium/css/css/dist/ReadiumCSS-before.css?inline"; // @ts-ignore -import readiumCSSDefault from "readium-css/css/dist/ReadiumCSS-default.css?inline"; +import readiumCSSDefault from "@readium/css/css/dist/ReadiumCSS-default.css?inline"; // Utilities const blobify = (source: string, type: string) => URL.createObjectURL(new Blob([source], { type })); diff --git a/navigator/tsconfig.json b/navigator/tsconfig.json index 6bfa179..cb7facf 100644 --- a/navigator/tsconfig.json +++ b/navigator/tsconfig.json @@ -36,6 +36,7 @@ "forceConsistentCasingInFileNames": true, // emit only .d.ts "noEmit": false, - "emitDeclarationOnly": true + "emitDeclarationOnly": true, + "types": ["vite/client"] } } diff --git a/navigator/vite.config.js b/navigator/vite.config.js index 36a3136..c674f90 100644 --- a/navigator/vite.config.js +++ b/navigator/vite.config.js @@ -1,6 +1,7 @@ import { resolve } from "path"; import { defineConfig } from "vite"; import libAssetsPlugin from "@laynezh/vite-plugin-lib-assets"; +import packageJson from "./package.json"; export default defineConfig({ plugins: [ @@ -15,5 +16,9 @@ export default defineConfig({ name: "navigator", fileName: "index" } + }, + define: { + "import.meta.env.PACKAGE_NAME": JSON.stringify(packageJson.name), + "import.meta.env.PACKAGE_VERSION": JSON.stringify(packageJson.version), } }); \ No newline at end of file diff --git a/package.json b/package.json index 902be78..ef31394 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "devDependencies": { "tslib": "^2.7.0", "typescript": "^5.4.5", - "vite": "^4.5.3" + "vite": "^4.5.5" }, "workspaces": [ "navigator", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2bb3cd5..986d1ab 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,45 +15,44 @@ importers: specifier: ^5.4.5 version: 5.4.5 vite: - specifier: ^4.5.3 - version: 4.5.3 + specifier: ^4.5.5 + version: 4.5.5(@types/node@20.4.8)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0) navigator: - dependencies: - path-browserify: - specifier: ^1.0.1 - version: 1.0.1 devDependencies: '@laynezh/vite-plugin-lib-assets': - specifier: ^0.5.24 - version: 0.5.24(vite@4.5.3) + specifier: ^0.5.25 + version: 0.5.25(vite@4.5.5(@types/node@20.4.8)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0)) + '@readium/css': + specifier: ^1.1.0 + version: 1.1.0 '@readium/navigator-html-injectables': - specifier: workspace:0.0.1 + specifier: workspace:* version: link:../navigator-html-injectables '@readium/shared': - specifier: workspace:1.2.0 + specifier: workspace:* version: link:../shared '@types/path-browserify': - specifier: ^1.0.0 - version: 1.0.0 + specifier: ^1.0.3 + version: 1.0.3 css-selector-generator: - specifier: ^3.6.4 - version: 3.6.4 - readium-css: - specifier: github:readium/readium-css - version: https://codeload.github.com/readium/readium-css/tar.gz/583011453612e6f695056ab6c086a2c4f4cac9c0 + specifier: ^3.6.9 + version: 3.6.9 + path-browserify: + specifier: ^1.0.1 + version: 1.0.1 tslib: - specifier: ^2.5.2 - version: 2.5.2 + specifier: ^2.8.1 + version: 2.8.1 typescript: - specifier: ^5.4.5 - version: 5.4.5 + specifier: ^5.6.3 + version: 5.6.3 typescript-plugin-css-modules: specifier: ^5.1.0 - version: 5.1.0(typescript@5.4.5) + version: 5.1.0(typescript@5.6.3) vite: - specifier: ^4.4.9 - version: 4.5.3 + specifier: ^4.5.5 + version: 4.5.5(@types/node@20.4.8)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0) navigator-html-injectables: devDependencies: @@ -73,8 +72,8 @@ importers: specifier: ^5.4.5 version: 5.4.5 vite: - specifier: ^4.4.9 - version: 4.5.3 + specifier: ^4.5.5 + version: 4.5.5(@types/node@20.4.8)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0) shared: devDependencies: @@ -101,7 +100,7 @@ importers: version: 3.6.4 jest: specifier: ^29.7.0 - version: 29.7.0 + version: 29.7.0(@types/node@20.4.8) size-limit: specifier: ^11.1.4 version: 11.1.5 @@ -112,8 +111,8 @@ importers: specifier: ^5.4.5 version: 5.4.5 vite: - specifier: ^4.4.9 - version: 4.5.3 + specifier: ^4.5.5 + version: 4.5.5(@types/node@20.4.8)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0) testapp/vanilla: devDependencies: @@ -121,29 +120,29 @@ importers: specifier: ^3.4.0 version: 3.4.0 '@material/web': - specifier: ^1.4.1 - version: 1.5.0 + specifier: ^1.5.1 + version: 1.5.1 + '@readium/css': + specifier: ^1.1.0 + version: 1.1.0 '@readium/navigator': - specifier: workspace:1.2.0 + specifier: workspace:* version: link:../../navigator '@readium/navigator-html-injectables': - specifier: workspace:0.0.1 + specifier: workspace:* version: link:../../navigator-html-injectables '@readium/shared': - specifier: workspace:1.2.0 + specifier: workspace:* version: link:../../shared css-selector-generator: - specifier: ^3.6.4 - version: 3.6.7 - readium-css: - specifier: github:readium/readium-css - version: https://codeload.github.com/readium/readium-css/tar.gz/583011453612e6f695056ab6c086a2c4f4cac9c0 + specifier: ^3.6.9 + version: 3.6.9 typescript: - specifier: ^5.4.5 - version: 5.4.5 + specifier: ^5.6.3 + version: 5.6.3 vite: - specifier: ^4.4.9 - version: 4.5.3 + specifier: ^4.5.5 + version: 4.5.5(@types/node@20.4.8)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0) packages: @@ -1143,19 +1142,104 @@ packages: '@juggle/resize-observer@3.4.0': resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==} - '@laynezh/vite-plugin-lib-assets@0.5.24': - resolution: {integrity: sha512-z1M8reWte/xP7xw+aFN0Euh9OinCjCzJ8HhLkvpz+6h6MSTyyA54xrxGmECx5QNd3bCwQlkGd7WAgkozjublCg==} + '@laynezh/vite-plugin-lib-assets@0.5.25': + resolution: {integrity: sha512-fzQiZPxLTVNoUgT4BC7LgHr9jWJtNf0yb8UDc2srDwMZ6I2VAEN6AK5K0hk4pyn0eQo8jFvpY3T1DfCAHSLqHw==} peerDependencies: vite: ^3.0.0 || ^4.0.0 || ^5.0.0 - '@lit-labs/ssr-dom-shim@1.2.0': - resolution: {integrity: sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g==} + '@lit-labs/ssr-dom-shim@1.2.1': + resolution: {integrity: sha512-wx4aBmgeGvFmOKucFKY+8VFJSYZxs9poN3SDNQFF6lT6NrQUnHiPB2PWz2sc4ieEcAaYYzN+1uWahEeTq2aRIQ==} '@lit/reactive-element@2.0.4': resolution: {integrity: sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==} - '@material/web@1.5.0': - resolution: {integrity: sha512-aM2TVCU8Ozh3QS5cckRalmWkNCKK3Y6uhB3skIozP6jIqYX1PDhme/URrHGcWk44k2qqmR7R+X8GEBAu8N/NCQ==} + '@material/web@1.5.1': + resolution: {integrity: sha512-S9iQV1Biq6JhNpAkqXcsFdVrLW0BC1Tez8C36MEQ/VuhT3YLQySbJkUiG+1U+J1jUqlsG8fT5XsEFbhomCY39w==} + + '@parcel/watcher-android-arm64@2.5.0': + resolution: {integrity: sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] + + '@parcel/watcher-darwin-arm64@2.5.0': + resolution: {integrity: sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] + + '@parcel/watcher-darwin-x64@2.5.0': + resolution: {integrity: sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] + + '@parcel/watcher-freebsd-x64@2.5.0': + resolution: {integrity: sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] + + '@parcel/watcher-linux-arm-glibc@2.5.0': + resolution: {integrity: sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + + '@parcel/watcher-linux-arm-musl@2.5.0': + resolution: {integrity: sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + + '@parcel/watcher-linux-arm64-glibc@2.5.0': + resolution: {integrity: sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-arm64-musl@2.5.0': + resolution: {integrity: sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-x64-glibc@2.5.0': + resolution: {integrity: sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-linux-x64-musl@2.5.0': + resolution: {integrity: sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-win32-arm64@2.5.0': + resolution: {integrity: sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + + '@parcel/watcher-win32-ia32@2.5.0': + resolution: {integrity: sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==} + engines: {node: '>= 10.0.0'} + cpu: [ia32] + os: [win32] + + '@parcel/watcher-win32-x64@2.5.0': + resolution: {integrity: sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + + '@parcel/watcher@2.5.0': + resolution: {integrity: sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==} + engines: {node: '>= 10.0.0'} + + '@readium/css@1.1.0': + resolution: {integrity: sha512-vcUx/+UYlWXuG6ioZNVBFDlKCuyH+65x9dNJM9jLlA8yT5ReH0k2UR9DN8cwx5/BgJhoQLUsA9s2DPhGaMhX6A==} '@sinclair/typebox@0.24.51': resolution: {integrity: sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==} @@ -1205,8 +1289,8 @@ packages: '@types/node@20.4.8': resolution: {integrity: sha512-0mHckf6D2DiIAzh8fM8f3HQCvMKDpK94YQ0DSVkfWTG9BZleYIWudw9cJxX8oCk9bM+vAkDyujDV6dmKHbvQpg==} - '@types/path-browserify@1.0.0': - resolution: {integrity: sha512-XMCcyhSvxcch8b7rZAtFAaierBYdeHXVvg2iYnxOV0MCQHmPuRRmGZPFDRzPayxcGiiSL1Te9UIO+f3cuj0tfw==} + '@types/path-browserify@1.0.3': + resolution: {integrity: sha512-ZmHivEbNCBtAfcrFeBCiTjdIc2dey0l7oCGNGpSuRTy8jP6UVND7oUowlvDujBy8r2Hoa8bfFUOCiPWfmtkfxw==} '@types/postcss-modules-local-by-default@4.0.2': resolution: {integrity: sha512-CtYCcD+L+trB3reJPny+bKWKMzPfxEyQpKIwit7kErnOexf5/faaGpkFy4I5AwbV4hp1sk7/aTg0tt0B67VkLQ==} @@ -1323,6 +1407,10 @@ packages: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + browserslist@4.23.3: resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -1369,8 +1457,8 @@ packages: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} - chokidar@4.0.0: - resolution: {integrity: sha512-mxIojEAQcuEvT/lyXq+jf/3cO/KoA6z4CeNDGGevTybECPOMFCnQy3OPahluUkbqgPNGw5Bi78UC7Po6Lhy+NA==} + chokidar@4.0.1: + resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==} engines: {node: '>= 14.16.0'} ci-info@3.8.0: @@ -1431,8 +1519,8 @@ packages: css-selector-generator@3.6.4: resolution: {integrity: sha512-/VDUW5KAoxGXJPNcn+5Y0DLJMQumLk9zNMWl2NChuTwGLEFeqfnddCpRhY6uZ77ar0uyM7W7ilvIWsk7DpjKxQ==} - css-selector-generator@3.6.7: - resolution: {integrity: sha512-3j3pRqYla21kRfmcEZZTypHNPWgptq1U8uMGfg69tBFoBn9iqaEwTnLqrH8uX2oAba1WJ3JEhsf2iBITFc4cfA==} + css-selector-generator@3.6.9: + resolution: {integrity: sha512-OXV+a4wlKs+8TGxTZ8g96mQOKz5QDVE52QYdYusdbcmt0XkJd6F9zkXpMZbRk3pwwRF+K2pJkj1DINpWm7Isqw==} cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} @@ -1448,6 +1536,15 @@ packages: supports-color: optional: true + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dedent@1.5.3: resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} peerDependencies: @@ -1460,6 +1557,11 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} + detect-libc@1.0.3: + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + engines: {node: '>=0.10'} + hasBin: true + detect-newline@3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} @@ -1553,6 +1655,10 @@ packages: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} @@ -1590,6 +1696,7 @@ packages: glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} @@ -1632,8 +1739,8 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - immutable@4.3.0: - resolution: {integrity: sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==} + immutable@5.0.2: + resolution: {integrity: sha512-1NU7hWZDkV7hJ4PJ9dur9gTNQ4ePNPN4k9/0YhwjzykTi/+3Q5pF93YU5QoVj8BuOnhLgaY8gs0U2pj4kSYVcw==} import-local@3.1.0: resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} @@ -1646,6 +1753,7 @@ packages: inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -1923,14 +2031,14 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - lit-element@4.0.5: - resolution: {integrity: sha512-iTWskWZEtn9SyEf4aBG6rKT8GABZMrTWop1+jopsEOgEcugcXJGKuX5bEbkq9qfzY+XB4MAgCaSPwnNpdsNQ3Q==} + lit-element@4.1.1: + resolution: {integrity: sha512-HO9Tkkh34QkTeUmEdNYhMT8hzLid7YlMlATSi1q4q17HE5d9mrrEHJ/o8O2D0cMi182zK1F3v7x0PWFjrhXFew==} - lit-html@3.1.3: - resolution: {integrity: sha512-FwIbqDD8O/8lM4vUZ4KvQZjPPNx7V1VhT7vmRB8RBAO0AU6wuTVdoXiu2CivVjEGdugvcbPNBLtPE1y0ifplHA==} + lit-html@3.2.1: + resolution: {integrity: sha512-qI/3lziaPMSKsrwlxH/xMgikhQ0EGOX2ICU73Bi/YHFvz2j/yMCIrw4+puF2IpQ4+upd3EWbvnHM9+PnJn48YA==} - lit@3.1.3: - resolution: {integrity: sha512-l4slfspEsnCcHVRTvaP7YnkTZEZggNFywLEIhQaGhYDczG+tu/vlgm/KaWIEjIp+ZyV20r2JnZctMb8LeLCG7Q==} + lit@3.2.1: + resolution: {integrity: sha512-1BBa1E/z0O9ye5fZprPtdqnc0BFzxIxTTOO/tQFmyC/hj1O3jL4TfmLBw0WEwjAokdLwpclkvGgDJwTIh0/22w==} loader-utils@3.3.1: resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==} @@ -1971,6 +2079,10 @@ packages: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + mime@1.6.0: resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} engines: {node: '>=4'} @@ -1993,6 +2105,9 @@ packages: ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + nanoid@3.3.7: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -2009,6 +2124,9 @@ packages: engines: {node: '>= 4.4.x'} hasBin: true + node-addon-api@7.1.1: + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} @@ -2078,6 +2196,9 @@ packages: picocolors@1.1.0: resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} @@ -2110,26 +2231,26 @@ packages: ts-node: optional: true - postcss-modules-extract-imports@3.0.0: - resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} + postcss-modules-extract-imports@3.1.0: + resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 - postcss-modules-local-by-default@4.0.5: - resolution: {integrity: sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==} + postcss-modules-local-by-default@4.1.0: + resolution: {integrity: sha512-rm0bdSv4jC3BDma3s9H19ZddW0aHX6EoqwDYU2IfZhRN+53QrufTRo2IdkAbRqLx4R2IYbZnbjKKxg4VN5oU9Q==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 - postcss-modules-scope@3.2.0: - resolution: {integrity: sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==} + postcss-modules-scope@3.2.1: + resolution: {integrity: sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 - postcss-selector-parser@6.0.13: - resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} + postcss-selector-parser@7.0.0: + resolution: {integrity: sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==} engines: {node: '>=4'} postcss-value-parser@4.2.0: @@ -2139,6 +2260,10 @@ packages: resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} engines: {node: ^10 || ^12 || >=14} + postcss@8.4.49: + resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} + engines: {node: ^10 || ^12 || >=14} + pretty-format@27.5.1: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -2167,15 +2292,10 @@ packages: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} - readdirp@4.0.1: - resolution: {integrity: sha512-GkMg9uOTpIWWKbSsgwb5fA4EavTR+SG/PMPoAY8hkhHfEEY0/vqljY+XHqtDf2cr2IJtoNRDbrrEpZUiZCkYRw==} + readdirp@4.0.2: + resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} engines: {node: '>= 14.16.0'} - readium-css@https://codeload.github.com/readium/readium-css/tar.gz/583011453612e6f695056ab6c086a2c4f4cac9c0: - resolution: {tarball: https://codeload.github.com/readium/readium-css/tar.gz/583011453612e6f695056ab6c086a2c4f4cac9c0} - name: readium-css - version: 1.0.0-beta.1 - regenerate-unicode-properties@10.1.0: resolution: {integrity: sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==} engines: {node: '>=4'} @@ -2228,17 +2348,17 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sass@1.79.3: - resolution: {integrity: sha512-m7dZxh0W9EZ3cw50Me5GOuYm/tVAJAn91SUnohLRo9cXBixGUOdvmryN+dXpwR831bhoY3Zv7rEFt85PUwTmzA==} + sass@1.81.0: + resolution: {integrity: sha512-Q4fOxRfhmv3sqCLoGfvrC9pRV8btc0UtqL9mN6Yrv6Qi9ScL55CVH1vlPP863ISLEEMNLLuu9P+enCeGHlnzhA==} engines: {node: '>=14.0.0'} hasBin: true - sax@1.2.4: - resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} - sax@1.3.0: resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} + sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true @@ -2284,6 +2404,10 @@ packages: resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} engines: {node: '>=0.10.0'} + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + source-map-support@0.5.13: resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} @@ -2373,9 +2497,6 @@ packages: resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} engines: {node: '>=6'} - tslib@2.5.2: - resolution: {integrity: sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==} - tslib@2.6.1: resolution: {integrity: sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==} @@ -2385,6 +2506,9 @@ packages: tslib@2.7.0: resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + type-detect@4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} @@ -2403,6 +2527,11 @@ packages: engines: {node: '>=14.17'} hasBin: true + typescript@5.6.3: + resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} + engines: {node: '>=14.17'} + hasBin: true + unicode-canonical-property-names-ecmascript@2.0.0: resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} engines: {node: '>=4'} @@ -2432,8 +2561,8 @@ packages: resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} engines: {node: '>=10.12.0'} - vite@4.5.3: - resolution: {integrity: sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg==} + vite@4.5.5: + resolution: {integrity: sha512-ifW3Lb2sMdX+WU91s3R0FyQlAyLxOzCSCP37ujw0+r5POeHPwe6udWVIElKQq8gk3t7b8rkmvqC6IHBpCff4GQ==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -2521,7 +2650,7 @@ snapshots: '@babel/code-frame@7.24.6': dependencies: '@babel/highlight': 7.24.6 - picocolors: 1.0.1 + picocolors: 1.1.1 '@babel/code-frame@7.24.7': dependencies: @@ -2789,14 +2918,14 @@ snapshots: '@babel/helper-validator-identifier': 7.24.6 chalk: 2.4.2 js-tokens: 4.0.0 - picocolors: 1.0.1 + picocolors: 1.1.1 '@babel/highlight@7.24.7': dependencies: '@babel/helper-validator-identifier': 7.24.7 chalk: 2.4.2 js-tokens: 4.0.0 - picocolors: 1.0.1 + picocolors: 1.1.0 '@babel/parser@7.22.7': dependencies: @@ -3759,24 +3888,87 @@ snapshots: '@juggle/resize-observer@3.4.0': {} - '@laynezh/vite-plugin-lib-assets@0.5.24(vite@4.5.3)': + '@laynezh/vite-plugin-lib-assets@0.5.25(vite@4.5.5(@types/node@20.4.8)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0))': dependencies: escape-string-regexp: 4.0.0 loader-utils: 3.3.1 mrmime: 1.0.1 semver: 7.6.3 - vite: 4.5.3 + vite: 4.5.5(@types/node@20.4.8)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0) - '@lit-labs/ssr-dom-shim@1.2.0': {} + '@lit-labs/ssr-dom-shim@1.2.1': {} '@lit/reactive-element@2.0.4': dependencies: - '@lit-labs/ssr-dom-shim': 1.2.0 + '@lit-labs/ssr-dom-shim': 1.2.1 + + '@material/web@1.5.1': + dependencies: + lit: 3.2.1 + tslib: 2.8.1 + + '@parcel/watcher-android-arm64@2.5.0': + optional: true + + '@parcel/watcher-darwin-arm64@2.5.0': + optional: true + + '@parcel/watcher-darwin-x64@2.5.0': + optional: true + + '@parcel/watcher-freebsd-x64@2.5.0': + optional: true + + '@parcel/watcher-linux-arm-glibc@2.5.0': + optional: true + + '@parcel/watcher-linux-arm-musl@2.5.0': + optional: true + + '@parcel/watcher-linux-arm64-glibc@2.5.0': + optional: true + + '@parcel/watcher-linux-arm64-musl@2.5.0': + optional: true + + '@parcel/watcher-linux-x64-glibc@2.5.0': + optional: true + + '@parcel/watcher-linux-x64-musl@2.5.0': + optional: true - '@material/web@1.5.0': + '@parcel/watcher-win32-arm64@2.5.0': + optional: true + + '@parcel/watcher-win32-ia32@2.5.0': + optional: true + + '@parcel/watcher-win32-x64@2.5.0': + optional: true + + '@parcel/watcher@2.5.0': dependencies: - lit: 3.1.3 - tslib: 2.7.0 + detect-libc: 1.0.3 + is-glob: 4.0.3 + micromatch: 4.0.8 + node-addon-api: 7.1.1 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.5.0 + '@parcel/watcher-darwin-arm64': 2.5.0 + '@parcel/watcher-darwin-x64': 2.5.0 + '@parcel/watcher-freebsd-x64': 2.5.0 + '@parcel/watcher-linux-arm-glibc': 2.5.0 + '@parcel/watcher-linux-arm-musl': 2.5.0 + '@parcel/watcher-linux-arm64-glibc': 2.5.0 + '@parcel/watcher-linux-arm64-musl': 2.5.0 + '@parcel/watcher-linux-x64-glibc': 2.5.0 + '@parcel/watcher-linux-x64-musl': 2.5.0 + '@parcel/watcher-win32-arm64': 2.5.0 + '@parcel/watcher-win32-ia32': 2.5.0 + '@parcel/watcher-win32-x64': 2.5.0 + optional: true + + '@readium/css@1.1.0': {} '@sinclair/typebox@0.24.51': {} @@ -3836,15 +4028,15 @@ snapshots: '@types/node@20.4.8': {} - '@types/path-browserify@1.0.0': {} + '@types/path-browserify@1.0.3': {} '@types/postcss-modules-local-by-default@4.0.2': dependencies: - postcss: 8.4.38 + postcss: 8.4.49 '@types/postcss-modules-scope@3.0.4': dependencies: - postcss: 8.4.38 + postcss: 8.4.49 '@types/stack-utils@2.0.3': {} @@ -3996,6 +4188,11 @@ snapshots: dependencies: fill-range: 7.0.1 + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + optional: true + browserslist@4.23.3: dependencies: caniuse-lite: 1.0.30001662 @@ -4044,9 +4241,9 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - chokidar@4.0.0: + chokidar@4.0.1: dependencies: - readdirp: 4.0.1 + readdirp: 4.0.2 ci-info@3.8.0: {} @@ -4088,7 +4285,7 @@ snapshots: dependencies: browserslist: 4.23.3 - create-jest@29.7.0: + create-jest@29.7.0(@types/node@20.4.8): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 @@ -4111,7 +4308,7 @@ snapshots: css-selector-generator@3.6.4: {} - css-selector-generator@3.6.7: {} + css-selector-generator@3.6.9: {} cssesc@3.0.0: {} @@ -4119,10 +4316,17 @@ snapshots: dependencies: ms: 2.1.2 + debug@4.3.7: + dependencies: + ms: 2.1.3 + dedent@1.5.3: {} deepmerge@4.3.1: {} + detect-libc@1.0.3: + optional: true + detect-newline@3.1.0: {} diff-sequences@27.5.1: {} @@ -4212,13 +4416,18 @@ snapshots: bser: 2.1.1 fdir@6.3.0(picomatch@4.0.2): - dependencies: + optionalDependencies: picomatch: 4.0.2 fill-range@7.0.1: dependencies: to-regex-range: 5.0.1 + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + optional: true + find-up@4.1.0: dependencies: locate-path: 5.0.0 @@ -4273,14 +4482,14 @@ snapshots: safer-buffer: 2.1.2 optional: true - icss-utils@5.1.0(postcss@8.4.38): + icss-utils@5.1.0(postcss@8.4.49): dependencies: - postcss: 8.4.38 + postcss: 8.4.49 image-size@0.5.5: optional: true - immutable@4.3.0: {} + immutable@5.0.2: {} import-local@3.1.0: dependencies: @@ -4354,7 +4563,7 @@ snapshots: istanbul-lib-source-maps@4.0.1: dependencies: - debug: 4.3.4 + debug: 4.3.7 istanbul-lib-coverage: 3.2.0 source-map: 0.6.1 transitivePeerDependencies: @@ -4397,13 +4606,13 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0: + jest-cli@29.7.0(@types/node@20.4.8): dependencies: '@jest/core': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0 + create-jest: 29.7.0(@types/node@20.4.8) exit: 0.1.2 import-local: 3.1.0 jest-config: 29.7.0(@types/node@20.4.8) @@ -4421,7 +4630,6 @@ snapshots: '@babel/core': 7.25.2 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.4.8 babel-jest: 29.7.0(@babel/core@7.25.2) chalk: 4.1.2 ci-info: 3.8.0 @@ -4441,6 +4649,8 @@ snapshots: pretty-format: 29.7.0 slash: 3.0.0 strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 20.4.8 transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -4554,7 +4764,7 @@ snapshots: jest-util: 29.7.0 jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): - dependencies: + optionalDependencies: jest-resolve: 29.7.0 jest-regex-util@28.0.2: {} @@ -4709,12 +4919,12 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0: + jest@29.7.0(@types/node@20.4.8): dependencies: '@jest/core': 29.7.0 '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.7.0 + jest-cli: 29.7.0(@types/node@20.4.8) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -4744,7 +4954,7 @@ snapshots: dependencies: copy-anything: 2.0.6 parse-node-version: 1.0.1 - tslib: 2.7.0 + tslib: 2.8.1 optionalDependencies: errno: 0.1.8 graceful-fs: 4.2.11 @@ -4762,21 +4972,21 @@ snapshots: lines-and-columns@1.2.4: {} - lit-element@4.0.5: + lit-element@4.1.1: dependencies: - '@lit-labs/ssr-dom-shim': 1.2.0 + '@lit-labs/ssr-dom-shim': 1.2.1 '@lit/reactive-element': 2.0.4 - lit-html: 3.1.3 + lit-html: 3.2.1 - lit-html@3.1.3: + lit-html@3.2.1: dependencies: '@types/trusted-types': 2.0.7 - lit@3.1.3: + lit@3.2.1: dependencies: '@lit/reactive-element': 2.0.4 - lit-element: 4.0.5 - lit-html: 3.1.3 + lit-element: 4.1.1 + lit-html: 3.2.1 loader-utils@3.3.1: {} @@ -4817,6 +5027,12 @@ snapshots: braces: 3.0.2 picomatch: 2.3.1 + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + optional: true + mime@1.6.0: optional: true @@ -4832,6 +5048,8 @@ snapshots: ms@2.1.2: {} + ms@2.1.3: {} + nanoid@3.3.7: {} nanospinner@1.1.0: @@ -4843,7 +5061,10 @@ snapshots: needle@3.3.1: dependencies: iconv-lite: 0.6.3 - sax: 1.2.4 + sax: 1.4.1 + optional: true + + node-addon-api@7.1.1: optional: true node-int64@0.4.0: {} @@ -4901,6 +5122,8 @@ snapshots: picocolors@1.1.0: {} + picocolors@1.1.1: {} + picomatch@2.3.1: {} picomatch@4.0.2: {} @@ -4914,29 +5137,30 @@ snapshots: dependencies: find-up: 4.1.0 - postcss-load-config@3.1.4(postcss@8.4.38): + postcss-load-config@3.1.4(postcss@8.4.49): dependencies: lilconfig: 2.1.0 - postcss: 8.4.38 yaml: 1.10.2 + optionalDependencies: + postcss: 8.4.49 - postcss-modules-extract-imports@3.0.0(postcss@8.4.38): + postcss-modules-extract-imports@3.1.0(postcss@8.4.49): dependencies: - postcss: 8.4.38 + postcss: 8.4.49 - postcss-modules-local-by-default@4.0.5(postcss@8.4.38): + postcss-modules-local-by-default@4.1.0(postcss@8.4.49): dependencies: - icss-utils: 5.1.0(postcss@8.4.38) - postcss: 8.4.38 - postcss-selector-parser: 6.0.13 + icss-utils: 5.1.0(postcss@8.4.49) + postcss: 8.4.49 + postcss-selector-parser: 7.0.0 postcss-value-parser: 4.2.0 - postcss-modules-scope@3.2.0(postcss@8.4.38): + postcss-modules-scope@3.2.1(postcss@8.4.49): dependencies: - postcss: 8.4.38 - postcss-selector-parser: 6.0.13 + postcss: 8.4.49 + postcss-selector-parser: 7.0.0 - postcss-selector-parser@6.0.13: + postcss-selector-parser@7.0.0: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 @@ -4946,9 +5170,15 @@ snapshots: postcss@8.4.38: dependencies: nanoid: 3.3.7 - picocolors: 1.0.1 + picocolors: 1.1.0 source-map-js: 1.2.0 + postcss@8.4.49: + dependencies: + nanoid: 3.3.7 + picocolors: 1.1.1 + source-map-js: 1.2.1 + pretty-format@27.5.1: dependencies: ansi-regex: 5.0.1 @@ -4979,9 +5209,7 @@ snapshots: dependencies: picomatch: 2.3.1 - readdirp@4.0.1: {} - - readium-css@https://codeload.github.com/readium/readium-css/tar.gz/583011453612e6f695056ab6c086a2c4f4cac9c0: {} + readdirp@4.0.2: {} regenerate-unicode-properties@10.1.0: dependencies: @@ -5033,17 +5261,19 @@ snapshots: safer-buffer@2.1.2: optional: true - sass@1.79.3: + sass@1.81.0: dependencies: - chokidar: 4.0.0 - immutable: 4.3.0 - source-map-js: 1.2.0 - - sax@1.2.4: - optional: true + chokidar: 4.0.1 + immutable: 5.0.2 + source-map-js: 1.2.1 + optionalDependencies: + '@parcel/watcher': 2.5.0 sax@1.3.0: {} + sax@1.4.1: + optional: true + semver@5.7.2: optional: true @@ -5079,6 +5309,8 @@ snapshots: source-map-js@1.2.0: {} + source-map-js@1.2.1: {} + source-map-support@0.5.13: dependencies: buffer-from: 1.1.2 @@ -5120,7 +5352,7 @@ snapshots: stylus@0.62.0: dependencies: '@adobe/css-tools': 4.3.3 - debug: 4.3.4 + debug: 4.3.7 glob: 7.2.3 sax: 1.3.0 source-map: 0.7.4 @@ -5166,43 +5398,45 @@ snapshots: minimist: 1.2.8 strip-bom: 3.0.0 - tslib@2.5.2: {} - tslib@2.6.1: {} tslib@2.6.2: {} tslib@2.7.0: {} + tslib@2.8.1: {} + type-detect@4.0.8: {} type-fest@0.21.3: {} - typescript-plugin-css-modules@5.1.0(typescript@5.4.5): + typescript-plugin-css-modules@5.1.0(typescript@5.6.3): dependencies: '@types/postcss-modules-local-by-default': 4.0.2 '@types/postcss-modules-scope': 3.0.4 dotenv: 16.4.5 - icss-utils: 5.1.0(postcss@8.4.38) + icss-utils: 5.1.0(postcss@8.4.49) less: 4.2.0 lodash.camelcase: 4.3.0 - postcss: 8.4.38 - postcss-load-config: 3.1.4(postcss@8.4.38) - postcss-modules-extract-imports: 3.0.0(postcss@8.4.38) - postcss-modules-local-by-default: 4.0.5(postcss@8.4.38) - postcss-modules-scope: 3.2.0(postcss@8.4.38) + postcss: 8.4.49 + postcss-load-config: 3.1.4(postcss@8.4.49) + postcss-modules-extract-imports: 3.1.0(postcss@8.4.49) + postcss-modules-local-by-default: 4.1.0(postcss@8.4.49) + postcss-modules-scope: 3.2.1(postcss@8.4.49) reserved-words: 0.1.2 - sass: 1.79.3 - source-map-js: 1.2.0 + sass: 1.81.0 + source-map-js: 1.2.1 stylus: 0.62.0 tsconfig-paths: 4.2.0 - typescript: 5.4.5 + typescript: 5.6.3 transitivePeerDependencies: - supports-color - ts-node typescript@5.4.5: {} + typescript@5.6.3: {} + unicode-canonical-property-names-ecmascript@2.0.0: {} unicode-match-property-ecmascript@2.0.0: @@ -5218,7 +5452,7 @@ snapshots: dependencies: browserslist: 4.23.3 escalade: 3.1.2 - picocolors: 1.0.1 + picocolors: 1.1.0 util-deprecate@1.0.2: {} @@ -5228,13 +5462,17 @@ snapshots: '@types/istanbul-lib-coverage': 2.0.4 convert-source-map: 2.0.0 - vite@4.5.3: + vite@4.5.5(@types/node@20.4.8)(less@4.2.0)(sass@1.81.0)(stylus@0.62.0): dependencies: esbuild: 0.18.20 postcss: 8.4.38 rollup: 3.29.4 optionalDependencies: + '@types/node': 20.4.8 fsevents: 2.3.3 + less: 4.2.0 + sass: 1.81.0 + stylus: 0.62.0 walker@1.0.8: dependencies: diff --git a/shared/package.json b/shared/package.json index d7624ac..04b0739 100644 --- a/shared/package.json +++ b/shared/package.json @@ -68,6 +68,6 @@ "size-limit": "^11.1.4", "tslib": "^2.6.2", "typescript": "^5.4.5", - "vite": "^4.4.9" + "vite": "^4.5.5" } } diff --git a/shared/tsconfig.json b/shared/tsconfig.json index c9f8759..65f5c37 100644 --- a/shared/tsconfig.json +++ b/shared/tsconfig.json @@ -35,6 +35,7 @@ "forceConsistentCasingInFileNames": true, // emit only .d.ts "noEmit": false, - "emitDeclarationOnly": true + "emitDeclarationOnly": true, + "types": ["vite/client"] }, } diff --git a/shared/vite.config.js b/shared/vite.config.js index 3bdca6a..ff8c49d 100644 --- a/shared/vite.config.js +++ b/shared/vite.config.js @@ -1,5 +1,6 @@ import { resolve } from "path"; import { defineConfig } from "vite"; +import packageJson from "./package.json"; export default defineConfig({ build: { @@ -8,5 +9,9 @@ export default defineConfig({ name: "shared", fileName: "index" } + }, + define: { + "import.meta.env.PACKAGE_NAME": JSON.stringify(packageJson.name), + "import.meta.env.PACKAGE_VERSION": JSON.stringify(packageJson.version), } }); \ No newline at end of file diff --git a/testapp/vanilla/package.json b/testapp/vanilla/package.json index 6ebe848..f104906 100644 --- a/testapp/vanilla/package.json +++ b/testapp/vanilla/package.json @@ -11,13 +11,13 @@ }, "devDependencies": { "@juggle/resize-observer": "^3.4.0", - "@material/web": "^1.4.1", - "@readium/navigator": "workspace:1.2.0", - "@readium/navigator-html-injectables": "workspace:0.0.1", - "@readium/shared": "workspace:1.2.0", - "css-selector-generator": "^3.6.4", - "readium-css": "github:readium/readium-css", - "typescript": "^5.4.5", - "vite": "^4.4.9" + "@material/web": "^1.5.1", + "@readium/navigator": "workspace:*", + "@readium/navigator-html-injectables": "workspace:*", + "@readium/shared": "workspace:*", + "css-selector-generator": "^3.6.9", + "@readium/css": "^1.1.0", + "typescript": "^5.6.3", + "vite": "^4.5.5" } }