diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index f7e91016..759c2422 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -10,7 +10,7 @@ You do not need AWS, an Apple developer account, or an AI API key. | macOS | 26.6 (arm64) | Verified. Linux and Windows are not verified. | | Node.js | 24.21.0 | Verified. Development builds, tests, and the unpackaged app use it. | | Yarn | 3.2.4 | The repository contains this version (`.yarnrc.yml` `yarnPath`). Any global `yarn` starts it. | -| Electron | 26.3.0 | Installed by Yarn. | +| Electron | 44.6.0 | Supported until 2027-03-02. The binary downloads on first use (see Setup). | No native compiler is necessary. The install does not build `canvas`. @@ -24,7 +24,7 @@ the built-in `node:sqlite` module. Compatibility note: Angular 14 officially supports Node.js 14.15+ and 16.10+ only. Node.js 24 builds and runs this branch, but it is outside the official range. -Electron 26 is end-of-life. Upgrade these in a separate step. +Upgrade Angular in a separate step (see [docs/follow-ups.md](docs/follow-ups.md)). ## Setup @@ -36,6 +36,11 @@ yarn start `yarn start-dev` does the build and the start in one command. +Since Electron 42, `yarn install` does not download the Electron binary. +The first `yarn start` (or the first end-to-end test) downloads it and +checks it against `node_modules/electron/checksums.json`. To download it +before you go offline: `node -e 'require("electron")'`. + ## Architecture | Part | Location | Runs in | Owns | @@ -337,6 +342,9 @@ The end-to-end tests start the real app with new, empty profiles in thumbnail and extract text from the managed copy, export the library, restore it into a second profile through Settings > Backup, and show the PDF there. +- `e2e/embedded-browser.e2e.mjs`: opens a website source in the desktop + Browser tab (`WebContentsView`), checks its URL, resizing, and navigation + state, and checks that closing removes it. - `e2e/isolation.e2e.mjs`: two profiles at the same time get different chat and storage addresses and tokens. Each server rejects the other instance's requests. A second start of the same profile exits. diff --git a/docs/electron-upgrade.md b/docs/electron-upgrade.md new file mode 100644 index 00000000..d222282f --- /dev/null +++ b/docs/electron-upgrade.md @@ -0,0 +1,79 @@ +# Electron Upgrade (Milestone 4) + +## Selected version + +Electron **44.6.0** (Chromium 152, Node.js 24.18 inside Electron). + +| Major | Stable since | End of support | Decision | +| --- | --- | --- | --- | +| 44 | 2026-08-25 | 2027-03-02 | Selected: newest stable, longest support | +| 43 | 2026-06-30 | 2027-01-05 | Shorter support | +| 42 | 2026-05-05 | 2026-10-20 | Support ends in two weeks | +| 45 | Planned 2026-10-20 | — | Not stable yet | + +Sources: [Electron release schedule](https://releases.electronjs.org/schedule), +[Electron breaking changes](https://www.electronjs.org/docs/latest/breaking-changes). + +## Breaking changes that affect this app (26 → 44) + +| Version | Change | Action | +| --- | --- | --- | +| 32 | `File.path` removed | The preload script exposes `api.pathForFile(file)` with `webUtils.getPathForFile`. `NativeFiles.pathOf` uses it. | +| 30 | `BrowserView` deprecated | The embedded browser uses `WebContentsView`, `contentView.addChildView`, and `webContents.close()`. A window resize listener replaces `setAutoResize`. | +| 32 | `webContents.canGoBack()` and related methods deprecated | Use `webContents.navigationHistory`. | +| 21 | `printToPDF` options changed | Removed the old `marginType` option (default margins). | +| 42 | No binary download at install | The binary downloads on first use. Tests resolve it with `require("electron")`. | +| 41 | PDFs render in the same WebContents (OOPIF) | Verified: PDF view in the desktop app. | +| 20 | Renderer sandbox on by default | Already on. The preload script uses only `electron` modules. | +| 44 | `clipboard` removed from renderers | Not used in the renderer. | +| 44 | macOS 13 or later | The app requires macOS 13+. | + +Not affected: `crashed` events (not used), `new-window` (not used), +`ipcRenderer.sendTo` (not used), protocol registration (not used). + +## Other changes + +- A latent bug became visible on Node.js 24: PDF text extraction passed the + whole pooled `Buffer.buffer` to pdf.js. It now copies the file bytes. +- electron-builder no longer rebuilds native modules (`npmRebuild: false`). + No runtime native module needs it: `fsevents` uses Node-API, and + `canvas` is not built or used. +- Removed the root `postinstall` key. It was outside `scripts`, so it never + ran, and its rebuild step is no longer needed. +- The bundled Node.js 24.21.0 for the storage service stays. The service + must run without Electron. + +## Removed dependencies + +Each one had no source, script, or configuration reference, or its only +use was removed. Clean install, builds, and all tests pass without them. + +| Package | Reason | +| --- | --- | +| `@adobe/css-tools`, `ejs`, `follow-redirects`, `got`, `minimist`, `multer`, `node-fetch`, `node-forge`, `plist`, `postcss`, `terser`, `url` | No direct use. Packages that other packages need stay as transitive dependencies. `url` was shadowed by the Node.js built-in. | +| `@types/ejs`, `@types/follow-redirects`, `@types/minimist`, `@types/multer`, `@types/node-forge`, `@types/plist`, `@types/prettier`, `@types/eslint` | Types for packages that the code does not use. | +| `loader-utils`, `worker-loader` | Not used by any build. | +| `node-loader` and its webpack rule | Only loaded the old bundled `canvas` binary. | + +Kept: `@angular/cli` and `@angular-devkit/architect` at the root (part of +the Angular upgrade), `electron-notarize` (used by `Resources/notarize.js`; +replace with `@electron/notarize` when signing is in scope), +`standard-version` (used by `yarn release`). + +## Verified (2026-10-07, macOS 26.6 arm64) + +| Command | Result | +| --- | --- | +| `yarn install --immutable` (clean copy) | Pass | +| `node -e 'require("electron")'` (clean copy) | Pass: v44.6.0 binary downloaded and checked | +| `yarn build-dev` | Pass | +| `yarn test` | 8 of 8 pass | +| `yarn test-storage` | 28 of 28 pass | +| `yarn workspace kc_storage typecheck` | Pass | +| `yarn e2e` | 3 of 3 pass: embedded browser (new), instance isolation, library workflow | +| `yarn e2e-browser` | 1 of 1 pass | +| `yarn package-local` | Pass: Electron 44.6.0, no native rebuild, unsigned | +| `yarn e2e-packaged` | 1 of 1 pass: copy outside the repository, scratch profiles, `PATH` without Node.js, bundled runtime | + +Known warning: the main process prints a Node.js `punycode` deprecation +warning. It comes from a bundled third-party package, not from app code. diff --git a/docs/follow-ups.md b/docs/follow-ups.md index 04e679b4..64a4575c 100644 --- a/docs/follow-ups.md +++ b/docs/follow-ups.md @@ -1,6 +1,6 @@ # Follow-up Work -Work found during the recovery, storage, and desktop completion +Work found during the recovery, storage, desktop, browser, and Electron milestones. Not started. ## Storage service @@ -28,7 +28,8 @@ milestones. Not started. | Item | Reason | | --- | --- | -| Upgrade Electron (26 is end-of-life) | Replace `File.path` with `webUtils.getPathForFile` (removed in Electron 32). | +| Keep Electron supported | Electron 44 support ends 2027-03-02. Move to the next supported major before then. | +| `punycode` deprecation warning | Comes from a bundled third-party package in the main process (probably the OpenAI SDK's older HTTP stack). | | Upgrade Angular 14 and TypeScript 4.8 | Node.js 24 is outside Angular 14's supported range. | | Bind the browser extension server to loopback with a token | It listens on port 9000 on all interfaces when enabled. | | Replace the fixed API key passphrase | The key file is obfuscated, not encrypted. | @@ -51,3 +52,78 @@ milestones. Not started. - Full-text search over extracted text. - Notes editor for the existing `notes` field. - Verification of AI chat with a real API key. + +## Recommendations for the next milestones + +### 1. Upgrade Angular, TypeScript, and UI libraries + +| Item | Now | Target | Notes | +| --- | --- | --- | --- | +| Angular (core, CLI, CDK, youtube-player) | 14.2 | 22.x (supported: 20, 21, 22) | Use `ng update` one major at a time (14 → 15 → … → 22). Run the builds and all end-to-end tests after each step. | +| TypeScript | 4.8 | 6.0 for Angular 22 (5.9 for 21) | The storage service already uses TypeScript 5.9 separately. | +| Node.js | 24.21 | 24.21 | Angular 22 supports `^24.15.0`. No change. | +| RxJS | 7.5 / 7.8 | 7.x | Compatible with all targets. | +| PrimeNG, PrimeFlex, PrimeIcons | 14 | Version that matches the Angular major | PrimeNG 17 and later change theming (styled mode and `@primeng/themes`). The theme files in `src/styles/themes` will need replacement. Highest effort. | +| FullCalendar Angular | 5 | 6 | API and CSS import changes. | +| chart.js, marked, cytoscape | 3, 4, 3 | Current | Independent of Angular. Upgrade after Angular. | +| `@angular-eslint`, `@typescript-eslint` | 14, 5 | Matching versions | Lint only. | + +Affected areas: every component template that uses PrimeNG, the theme +service, the build configuration (`angular.json` moves to the application +builder), and `tsconfig.json`. The capability interfaces in `platform/` and +the browser and desktop tests protect the library workflow during the work. + +### 2. Remove additional dependencies + +- `axios` in the chat server: Node.js 24 has `fetch`. +- `openai` 4.25: update or replace; it is the likely source of the + `punycode` warning. +- `electron-notarize`: replace with `@electron/notarize` when signing is in + scope. +- Root `@angular/cli` and `@angular-devkit/architect`: remove during the + Angular upgrade (the Angular workspace has its own). +- `chokidar`, `cors`, `express`, `express-rate-limit`, `rxjs` in + `kc_electron`: reduce when chat moves to the backend. + +### 3. Move chat and extraction into the backend + +- Move `kc_electron/src/local` (chat routes, controllers, tokenizer, OpenAI + calls, `SourceParser`, `SourceLoader`) into `kc_storage` behind the same + token and session checks. +- Keep the API key in the library data directory, not in the profile + `data/` folder. Do not include it in backups. +- Move website fetching and metadata extraction to the backend. Then the + browser client can save websites. Apply an allow-list and size and time + limits to outgoing requests (server-side request forgery risk). +- Move the extracted-text cache from `data/storage/sources/` into the + library. This is also the base for full-text search later. +- Affected: `ChatService`, `ExtractorService`, `KsFactoryService` (website + path), `BackendService` (chat endpoint), the Electron chat server, and the + `tiktoken` resource. + +### 4. Move durable user data out of renderer storage + +| Data | Now | Target | +| --- | --- | --- | +| Chat history (`chat-`) | Renderer local storage | Library (with chat) | +| Inbox (`ingest-queue`) | Renderer local storage | Library: inbox sources without a project | +| Topics list, favicon cache | Renderer local storage | Library, or derive again | +| Settings | Electron file (desktop), local storage (browser) | Library settings for user data; platform settings stay local | +| UI preferences (table, theme) | Renderer local storage | Can stay local | + +After this, one library backup can hold all user data. + +### 5. Separate local deployment from future hosted deployment + +- Keep two modes with separate entry points. Local: loopback, bearer + token, launch-link sessions, one OS user (current). Hosted: accounts, + TLS, `Secure` cookies, server-side authorization per library, rate + limits, and audit logs. +- Do not reuse the local launch-link session as hosted authentication. +- Make the storage layer support more than one library per service before + hosting. +- Managed files need an object-storage option for hosting. The `AssetStore` + interface is the place to add it. +- Website fetching in a hosted service needs strict outgoing-request + controls. + diff --git a/e2e/embedded-browser.e2e.mjs b/e2e/embedded-browser.e2e.mjs new file mode 100644 index 00000000..d09ceb1d --- /dev/null +++ b/e2e/embedded-browser.e2e.mjs @@ -0,0 +1,119 @@ +/* + * Desktop embedded browser (WebContentsView since the Electron 44 upgrade): + * open a website source in the Browser tab, check the view, its URL, + * resizing, and navigation state, then close it. + * + * Run: yarn build-dev && yarn e2e + */ + +import { test } from "node:test"; +import assert from "node:assert/strict"; +import path from "node:path"; +import { close, launch, newRun, shot, startFixtureSite } from "./lib.mjs"; +import * as ui from "./steps.mjs"; + +const SITE_TITLE = "Knowledge Fixture Site"; + +/** Child views of the main window, with their URLs and bounds. */ +function views(app) { + return app.evaluate(({ BrowserWindow }) => { + const win = BrowserWindow.getAllWindows()[0]; + return win.contentView.children.map((v) => ({ + url: v.webContents?.getURL(), + bounds: v.getBounds(), + })); + }); +} + +async function waitFor(fn, check, timeout = 15000) { + const end = Date.now() + timeout; + let value; + while (Date.now() < end) { + value = await fn(); + if (check(value)) return value; + await new Promise((r) => setTimeout(r, 250)); + } + return value; +} + +test( + "embedded browser opens, resizes, navigates, and closes", + { timeout: 180000 }, + async () => { + const run = newRun("embedded-browser"); + const site = await startFixtureSite(); + const ctx = await launch( + path.join(run, "profile"), + path.join(run, "app.log") + ); + try { + await ui.createProject(ctx.page, "Browser View Project"); + await ui.addLinkToProject(ctx.page, site.url, SITE_TITLE); + await ui.openTable(ctx.page); + await ui.openSource(ctx.page, SITE_TITLE); + await ctx.page.getByText("Browser", { exact: true }).click(); + + const open = await waitFor( + () => views(ctx.app), + (v) => v.length === 1 && v[0].url === site.url + ); + assert.equal(open.length, 1, JSON.stringify(open)); + assert.equal(open[0].url, site.url); + await ctx.page.waitForTimeout(1000); + + // The view follows the window size. The app may replace the view with + // a new one at the new size; wait for one view again. + const before = open[0].bounds; + await ctx.app.evaluate(({ BrowserWindow }) => { + const win = BrowserWindow.getAllWindows()[0]; + const [w, h] = win.getContentSize(); + win.setContentSize(w - 100, h - 50); + }); + await ctx.page.waitForTimeout(1500); + const after = await waitFor( + () => views(ctx.app), + (v) => + v.length === 1 && + v[0].bounds.width < before.width && + v[0].url === site.url + ); + assert.equal(after.length, 1, JSON.stringify(after)); + assert.ok( + after[0].bounds.width < before.width, + JSON.stringify({ before, after }) + ); + assert.ok( + after[0].bounds.height < before.height, + JSON.stringify({ before, after }) + ); + + // Navigation state through navigationHistory + const history = await waitFor( + () => + ctx.app.evaluate(({ BrowserWindow }) => { + const view = + BrowserWindow.getAllWindows()[0].contentView.children[0]; + if (!view) return null; + return { + back: view.webContents.navigationHistory.canGoBack(), + forward: view.webContents.navigationHistory.canGoForward(), + }; + }), + (h) => h !== null + ); + assert.deepEqual(history, { back: false, forward: false }); + await shot(ctx.page, run, "browser-tab"); + + // Closing the source dialog removes the view + await ui.closeDialog(ctx.page); + const closed = await waitFor( + () => views(ctx.app), + (v) => v.length === 0 + ); + assert.deepEqual(closed, []); + } finally { + await close(ctx); + site.close(); + } + } +); diff --git a/e2e/lib.mjs b/e2e/lib.mjs index eba6a7a6..94eada9b 100644 --- a/e2e/lib.mjs +++ b/e2e/lib.mjs @@ -10,14 +10,16 @@ import { _electron as electron } from "playwright-core"; import fs from "node:fs"; import http from "node:http"; import path from "node:path"; +import { createRequire } from "node:module"; export const REPO = path.resolve(import.meta.dirname, ".."); export const FIXTURES = path.join(REPO, "e2e", "fixtures"); -export const ELECTRON = path.join( - REPO, - "node_modules/electron/dist/Electron.app/Contents/MacOS/Electron" -); +/** + * The Electron binary. Since Electron 42 the package downloads it on first + * use (checked against the package's checksums.json), not at install. + */ +export const ELECTRON = createRequire(import.meta.url)("electron"); /** * Environment for the app. The Node test runner sets NODE_TEST_CONTEXT in diff --git a/package.json b/package.json index b2c99f2d..81d4f3f6 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,6 @@ "author": "Rob Royce (https://robroyce.dev)", "license": "Apache-2.0", "private": true, - "postinstall": "electron-builder install-app-deps", "type": "commonjs", "workspaces": [ "src/kc_electron", @@ -58,55 +57,33 @@ } }, "dependencies": { - "@adobe/css-tools": "^4.3.2", "async": "^3.2.5", "axios": "^1.6.5", - "ejs": "^3.1.9", "express": "^4.18.2", - "follow-redirects": "^1.15.5", - "got": "^13.0.0", "highlight.js": "^11.9.0", "html-to-text": "^9.0.5", - "minimist": "^1.2.8", - "multer": "^1.4.5-lts.1", - "node-fetch": "^3.3.2", - "node-forge": "^1.3.1", - "pdfjs-dist": "^3.11.174", - "plist": "^3.1.0", - "postcss": "^8.4.33", - "terser": "^5.27.0", - "url": "^0.11.3" + "pdfjs-dist": "^3.11.174" }, "devDependencies": { "@angular-devkit/architect": "^0.1402.13", "@angular/cli": "^14.2.13", "@types/async": "^3.2.24", - "@types/ejs": "^3.1.4", - "@types/eslint": "^8", "@types/express": "^4.17.21", - "@types/follow-redirects": "^1.14.4", "@types/html-to-text": "^9.0.4", - "@types/minimist": "^1.2.5", - "@types/multer": "^1.4.11", "@types/node": "^17.0.45", - "@types/node-forge": "^1.3.11", - "@types/plist": "^3.0.5", - "@types/prettier": "^2.7.3", "@types/uuid": "^9.0.7", "electron-builder": "^24.6.4", "electron-notarize": "^1.2.2", "eslint": "^8.38.0", "eslint-plugin-html": "^7.1.0", - "loader-utils": "^3.2.1", - "node-loader": "^2.0.0", "playwright-core": "^1.63.0", "prettier": "^2.8.8", - "standard-version": "^9.5.0", - "worker-loader": "^3.0.8" + "standard-version": "^9.5.0" }, "build": { "appId": "com.knowledge.canvas.app", "productName": "Knowledge", + "npmRebuild": false, "directories": { "buildResources": "Resources" }, diff --git a/src/kc_angular/src/app/platform/native-files.ts b/src/kc_angular/src/app/platform/native-files.ts index bdaf8ade..a272d2fb 100644 --- a/src/kc_angular/src/app/platform/native-files.ts +++ b/src/kc_angular/src/app/platform/native-files.ts @@ -40,7 +40,7 @@ export class DesktopNativeFiles extends NativeFiles { readonly available = true; pathOf(file: File) { - const path = (file as any).path; + const path = window.api.pathForFile(file); return typeof path === 'string' && path ? path : null; } diff --git a/src/kc_electron/package.json b/src/kc_electron/package.json index fc218f1d..99cfcded 100755 --- a/src/kc_electron/package.json +++ b/src/kc_electron/package.json @@ -21,7 +21,7 @@ "cors": "^2.8.5", "crypto-js": "^4.2.0", "dotenv": "^16.3.2", - "electron": "^26.3.0", + "electron": "~44.6.0", "electron-updater": "^6.1.4", "express-rate-limit": "^6.11.2", "fs-extra": "^10.1.0", diff --git a/src/kc_electron/src/app/ipc/ipc-browser.ts b/src/kc_electron/src/app/ipc/ipc-browser.ts index a665322f..19b7d02a 100755 --- a/src/kc_electron/src/app/ipc/ipc-browser.ts +++ b/src/kc_electron/src/app/ipc/ipc-browser.ts @@ -19,13 +19,13 @@ import { IpcMessage, } from "../../../../kc_shared/models/electron.ipc.model"; import { - BrowserView, BrowserWindow, dialog, ipcMain, Menu, MenuItem, shell, + WebContentsView, } from "electron"; import path from "path"; import fs from "fs"; @@ -47,9 +47,13 @@ const browserViewEventListeners = [ "A2E:BrowserView:CurrentUrl", "A2E:BrowserView:GoBack", "A2E:BrowserView:GoForward", + "A2E:BrowserView:Invert", "A2E:BrowserView:Refresh", ]; +/** The embedded browser view, if one is open. One at a time. */ +let currentView: { view: WebContentsView; onResize: () => void } | undefined; + /** * * @@ -155,9 +159,6 @@ extractWebsite = ipcMain.on( width: 12, height: 32, }, - margins: { - marginType: "printableArea", - }, printBackground: true, preferCSSPageSize: false, @@ -223,10 +224,15 @@ extractWebsite = ipcMain.on( */ destroyBrowserViews = (kcMainWindow: any) => { - const allViews = kcMainWindow.getBrowserViews(); - kcMainWindow.setBrowserView(null); - for (const view of allViews) { - view.webContents.destroy(); + if (!currentView) { + return; + } + const { view, onResize } = currentView; + currentView = undefined; + kcMainWindow.off("resize", onResize); + kcMainWindow.contentView.removeChildView(view); + if (!view.webContents.isDestroyed()) { + view.webContents.close(); } }; @@ -303,16 +309,30 @@ openBrowserView = ipcMain.on( y = args.y, width = args.width, height = args.height; - const kcBrowserView = new BrowserView(); + // One view at a time. Opening a new view replaces the old one. + destroyBrowserViews(kcMainWindow); + for (const bvEventListener of browserViewEventListeners) { + ipcMain.removeAllListeners(bvEventListener); + } - kcMainWindow.setBrowserView(kcBrowserView); + const kcBrowserView = new WebContentsView(); + kcMainWindow.contentView.addChildView(kcBrowserView); kcBrowserView.setBounds({ x: x, y: y, width: width, height: height }); - kcBrowserView.setAutoResize({ - width: true, - height: true, - horizontal: true, - vertical: true, - }); + + // The view grows and shrinks with the window, like the old BrowserView auto-resize + const [startWidth, startHeight] = kcMainWindow.getContentSize(); + const onResize = () => { + const [w, h] = kcMainWindow.getContentSize(); + kcBrowserView.setBounds({ + x, + y, + width: Math.max(0, width + w - startWidth), + height: Math.max(0, height + h - startHeight), + }); + }; + kcMainWindow.on("resize", onResize); + currentView = { view: kcBrowserView, onResize }; + kcBrowserView.webContents.loadURL(viewUrl.href); /** @@ -440,7 +460,7 @@ openBrowserView = ipcMain.on( e.preventDefault(); console.log("Context menu event: ", e.session); selectedText = params.selectionText; - menu.popup(kcBrowserView as any); + menu.popup({ window: kcMainWindow }); }); /** @@ -448,25 +468,29 @@ openBrowserView = ipcMain.on( * These MUST be removed when the browser view is closed (see above function for browser-view-close) */ ipcMain.on("A2E:BrowserView:CanGoBack", () => { - if (!kcBrowserView.webContents) return; + if (kcBrowserView.webContents.isDestroyed()) return; const response: IpcMessage = { error: undefined, - success: { data: kcBrowserView.webContents.canGoBack() }, + success: { + data: kcBrowserView.webContents.navigationHistory.canGoBack(), + }, }; kcMainWindow.webContents.send("E2A:BrowserView:CanGoBack", response); }); ipcMain.on("A2E:BrowserView:CanGoForward", () => { - if (!kcBrowserView.webContents) return; + if (kcBrowserView.webContents.isDestroyed()) return; const response: IpcMessage = { error: undefined, - success: { data: kcBrowserView.webContents.canGoForward() }, + success: { + data: kcBrowserView.webContents.navigationHistory.canGoForward(), + }, }; kcMainWindow.webContents.send("E2A:BrowserView:CanGoForward", response); }); ipcMain.on("A2E:BrowserView:CurrentUrl", () => { - if (!kcBrowserView.webContents) return; + if (kcBrowserView.webContents.isDestroyed()) return; const response: IpcMessage = { error: undefined, success: { data: kcBrowserView.webContents.getURL() }, @@ -475,22 +499,22 @@ openBrowserView = ipcMain.on( }); ipcMain.on("A2E:BrowserView:GoBack", () => { - if (!kcBrowserView.webContents) return; + if (kcBrowserView.webContents.isDestroyed()) return; if (kcBrowserView.webContents) { - kcBrowserView.webContents.goBack(); + kcBrowserView.webContents.navigationHistory.goBack(); } }); ipcMain.on("A2E:BrowserView:GoForward", () => { - if (!kcBrowserView.webContents) return; + if (kcBrowserView.webContents.isDestroyed()) return; if (kcBrowserView.webContents) { - kcBrowserView.webContents.goForward(); + kcBrowserView.webContents.navigationHistory.goForward(); } }); ipcMain.on("A2E:BrowserView:Invert", () => { // Add CSS to the BrowserView to invert the colors - if (!kcBrowserView.webContents) return; + if (kcBrowserView.webContents.isDestroyed()) return; if (kcBrowserView.webContents) { // This should eventually be made more robust (e.g. do not invert images) const css = inverted @@ -502,7 +526,7 @@ openBrowserView = ipcMain.on( }); ipcMain.on("A2E:BrowserView:Refresh", () => { - if (!kcBrowserView.webContents) return; + if (kcBrowserView.webContents.isDestroyed()) return; if (kcBrowserView.webContents) { kcBrowserView.webContents.reload(); } diff --git a/src/kc_electron/src/local/middleware/SourceParser.ts b/src/kc_electron/src/local/middleware/SourceParser.ts index aaaa1318..8eafdad5 100644 --- a/src/kc_electron/src/local/middleware/SourceParser.ts +++ b/src/kc_electron/src/local/middleware/SourceParser.ts @@ -117,7 +117,8 @@ export class SourceParser { static async fromPdf(filePath: string) { const dataBuffer = fs.readFileSync(filePath); - const uint8Array = new Uint8Array(dataBuffer.buffer); + // Copy the bytes. A Buffer can be a view into a larger shared pool. + const uint8Array = new Uint8Array(dataBuffer); try { // Load the PDF file using PDF.js diff --git a/src/kc_electron/src/main.ts b/src/kc_electron/src/main.ts index 4c8ff08e..d9fa3827 100755 --- a/src/kc_electron/src/main.ts +++ b/src/kc_electron/src/main.ts @@ -21,7 +21,6 @@ import { autoUpdater, UpdateCheckResult } from "electron-updater"; import { app, - BrowserView, BrowserWindow, dialog, ipcMain, @@ -56,7 +55,6 @@ const MAIN_ENTRY: string = path.join( ); (global as any).share = { - BrowserView, BrowserWindow, app, autoUpdater, diff --git a/src/kc_electron/src/preload.js b/src/kc_electron/src/preload.js index f5d8ea9a..9ce89937 100755 --- a/src/kc_electron/src/preload.js +++ b/src/kc_electron/src/preload.js @@ -14,7 +14,7 @@ * limitations under the License. */ -import { contextBridge, ipcRenderer } from "electron"; +import { contextBridge, ipcRenderer, webUtils } from "electron"; /** * IPC Channels must be placed in one of the following lists before it @@ -96,6 +96,11 @@ let datetime = () => { }; contextBridge.exposeInMainWorld("api", { + /** + * Local path of a File the user selected or dropped. Electron removed + * File.path in version 32. Returns "" for files without a local path. + */ + pathForFile: (file) => webUtils.getPathForFile(file), invoke: (channel, data) => { if (ipcInvokeChannels.includes(channel)) { console.debug( diff --git a/src/kc_electron/webpack.common.js b/src/kc_electron/webpack.common.js index 370328f5..5b30b4d0 100755 --- a/src/kc_electron/webpack.common.js +++ b/src/kc_electron/webpack.common.js @@ -28,10 +28,6 @@ let webpack_config = { test: /\.ts$/, // This particular rule matches all .ts files use: [{ loader: "ts-loader" }], // Which loader to use when the rule matches }, - { - test: /\.node$/, - loader: "node-loader", - }, ], }, output: { diff --git a/yarn.lock b/yarn.lock index 4f4c9344..60c0dbb7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -19,13 +19,6 @@ __metadata: languageName: node linkType: hard -"@adobe/css-tools@npm:^4.3.2": - version: 4.3.2 - resolution: "@adobe/css-tools@npm:4.3.2" - checksum: 9667d61d55dc3b0a315c530ae84e016ce5267c4dd8ac00abb40108dc98e07b98e3090ce8b87acd51a41a68d9e84dcccb08cdf21c902572a9cf9dcaf830da4ae3 - languageName: node - linkType: hard - "@ampproject/remapping@npm:2.2.0": version: 2.2.0 resolution: "@ampproject/remapping@npm:2.2.0" @@ -2124,6 +2117,13 @@ __metadata: languageName: node linkType: hard +"@electron-internal/extract-zip@npm:^1.0.1": + version: 1.0.5 + resolution: "@electron-internal/extract-zip@npm:1.0.5" + checksum: 941b78e62fc44e68ca6bc7f38f59c29064d1c3a007db3422087c4392292205721820f95f81fa2f16da0661dece00ed5f45892917a2a71e5f925e9fda9d96515f + languageName: node + linkType: hard + "@electron/asar@npm:^3.2.1": version: 3.2.7 resolution: "@electron/asar@npm:3.2.7" @@ -2137,22 +2137,21 @@ __metadata: languageName: node linkType: hard -"@electron/get@npm:^2.0.0": - version: 2.0.3 - resolution: "@electron/get@npm:2.0.3" +"@electron/get@npm:^5.0.0": + version: 5.1.0 + resolution: "@electron/get@npm:5.1.0" dependencies: debug: ^4.1.1 - env-paths: ^2.2.0 - fs-extra: ^8.1.0 - global-agent: ^3.0.0 - got: ^11.8.5 + env-paths: ^3.0.0 + graceful-fs: ^4.2.11 progress: ^2.0.3 - semver: ^6.2.0 + semver: ^7.6.3 sumchecker: ^3.0.1 + undici: ^7.24.4 dependenciesMeta: - global-agent: + undici: optional: true - checksum: 98f7713e1dda6d1b9d1598890e4e12e38e2d2cb7634e44c31bd494c60a1e97583cdfe4a38408985daaa8deee0a1ea3b6b1add3520874bdb00b6bffba86e7e30d + checksum: 88b85ec30689c6743c2d9655d68dd1b82d9e7c814b47cea87193cdf3482e48391421c4e268f8ed572b267fe2e4228788689288f7ea9d64e21a4bc15b38499d23 languageName: node linkType: hard @@ -2441,16 +2440,6 @@ __metadata: languageName: node linkType: hard -"@jridgewell/source-map@npm:^0.3.3": - version: 0.3.5 - resolution: "@jridgewell/source-map@npm:0.3.5" - dependencies: - "@jridgewell/gen-mapping": ^0.3.0 - "@jridgewell/trace-mapping": ^0.3.9 - checksum: 1ad4dec0bdafbade57920a50acec6634f88a0eb735851e0dda906fa9894e7f0549c492678aad1a10f8e144bfe87f238307bf2a914a1bc85b7781d345417e9f6f - languageName: node - linkType: hard - "@jridgewell/sourcemap-codec@npm:1.4.14": version: 1.4.14 resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" @@ -2699,22 +2688,6 @@ __metadata: languageName: node linkType: hard -"@sindresorhus/is@npm:^5.2.0": - version: 5.3.0 - resolution: "@sindresorhus/is@npm:5.3.0" - checksum: b31cebabcdece3d5322de2a4dbc8c0f004e04147a00f2606787bcaf5655ad4b1954f6727fc6914c524009b2b9a2cc01c42835b55f651ce69fd2a0083b60bb852 - languageName: node - linkType: hard - -"@szmarczak/http-timer@npm:^5.0.1": - version: 5.0.1 - resolution: "@szmarczak/http-timer@npm:5.0.1" - dependencies: - defer-to-connect: ^2.0.1 - checksum: fc9cb993e808806692e4a3337c90ece0ec00c89f4b67e3652a356b89730da98bc824273a6d67ca84d5f33cd85f317dcd5ce39d8cc0a2f060145a608a7cb8ce92 - languageName: node - linkType: hard - "@tootallnate/once@npm:2": version: 2.0.0 resolution: "@tootallnate/once@npm:2.0.0" @@ -2833,13 +2806,6 @@ __metadata: languageName: node linkType: hard -"@types/ejs@npm:^3.1.4": - version: 3.1.4 - resolution: "@types/ejs@npm:3.1.4" - checksum: 7e61b59a4a1a5232e081f0f2408b99ee5664446406004da088b29ac849b1490fbd6fbdf2c2a1aeb5049e690edb80f6c0cbe8387930a114e2c1c7dc0e67d0bc04 - languageName: node - linkType: hard - "@types/eslint-scope@npm:^3.7.3": version: 3.7.4 resolution: "@types/eslint-scope@npm:3.7.4" @@ -2850,7 +2816,7 @@ __metadata: languageName: node linkType: hard -"@types/eslint@npm:*, @types/eslint@npm:^8": +"@types/eslint@npm:*": version: 8.37.0 resolution: "@types/eslint@npm:8.37.0" dependencies: @@ -2917,15 +2883,6 @@ __metadata: languageName: node linkType: hard -"@types/follow-redirects@npm:^1.14.4": - version: 1.14.4 - resolution: "@types/follow-redirects@npm:1.14.4" - dependencies: - "@types/node": "*" - checksum: 8d5e4a7efa3602d26a2e0a2ff8970d29ba900c13874b29038faebc69adc89b0c78b34cd1100fac638c686848a52916c0310fb27c6e5300c0e19830e7f4f63094 - languageName: node - linkType: hard - "@types/fs-extra@npm:9.0.13, @types/fs-extra@npm:^9.0.11": version: 9.0.13 resolution: "@types/fs-extra@npm:9.0.13" @@ -2942,13 +2899,6 @@ __metadata: languageName: node linkType: hard -"@types/http-cache-semantics@npm:^4.0.1": - version: 4.0.1 - resolution: "@types/http-cache-semantics@npm:4.0.1" - checksum: 1048aacf627829f0d5f00184e16548205cd9f964bf0841c29b36bc504509230c40bc57c39778703a1c965a6f5b416ae2cbf4c1d4589c889d2838dd9dbfccf6e9 - languageName: node - linkType: hard - "@types/http-proxy@npm:^1.17.8": version: 1.17.11 resolution: "@types/http-proxy@npm:1.17.11" @@ -3007,13 +2957,6 @@ __metadata: languageName: node linkType: hard -"@types/minimist@npm:^1.2.5": - version: 1.2.5 - resolution: "@types/minimist@npm:1.2.5" - checksum: 477047b606005058ab0263c4f58097136268007f320003c348794f74adedc3166ffc47c80ec3e94687787f2ab7f4e72c468223946e79892cf0fd9e25e9970a90 - languageName: node - linkType: hard - "@types/ms@npm:*": version: 0.7.31 resolution: "@types/ms@npm:0.7.31" @@ -3021,15 +2964,6 @@ __metadata: languageName: node linkType: hard -"@types/multer@npm:^1.4.11": - version: 1.4.11 - resolution: "@types/multer@npm:1.4.11" - dependencies: - "@types/express": "*" - checksum: 3d80b2acdfbc9f3e9027d4467e948925810b67e5622a3017f42f58a3598d34b25376890801e55d0c03973ccc34573abf5218af334e8292ec455832f4ade3e5f5 - languageName: node - linkType: hard - "@types/node-fetch@npm:^2.6.4": version: 2.6.4 resolution: "@types/node-fetch@npm:2.6.4" @@ -3040,15 +2974,6 @@ __metadata: languageName: node linkType: hard -"@types/node-forge@npm:^1.3.11": - version: 1.3.11 - resolution: "@types/node-forge@npm:1.3.11" - dependencies: - "@types/node": "*" - checksum: 1e86bd55b92a492eaafd75f6d01f31e7d86a5cdadd0c6bcdc0b1df4103b7f99bb75b832efd5217c7ddda5c781095dc086a868e20b9de00f5a427ddad4c296cd5 - languageName: node - linkType: hard - "@types/node@npm:*": version: 20.1.2 resolution: "@types/node@npm:20.1.2" @@ -3070,7 +2995,7 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:^24.0.0": +"@types/node@npm:^24.0.0, @types/node@npm:^24.9.0": version: 24.19.1 resolution: "@types/node@npm:24.19.1" dependencies: @@ -3103,23 +3028,6 @@ __metadata: languageName: node linkType: hard -"@types/plist@npm:^3.0.5": - version: 3.0.5 - resolution: "@types/plist@npm:3.0.5" - dependencies: - "@types/node": "*" - xmlbuilder: ">=11.0.1" - checksum: 71417189c9bc0d0cb4595106cea7c7a8a7274f64d2e9c4dd558efd7993bcfdada58be6917189e3be7c455fe4e5557004658fd13bd12254eafed8c56e0868b59e - languageName: node - linkType: hard - -"@types/prettier@npm:^2.7.3": - version: 2.7.3 - resolution: "@types/prettier@npm:2.7.3" - checksum: 705384209cea6d1433ff6c187c80dcc0b95d99d5c5ce21a46a9a58060c527973506822e428789d842761e0280d25e3359300f017fbe77b9755bc772ab3dc2f83 - languageName: node - linkType: hard - "@types/qs@npm:*": version: 6.9.7 resolution: "@types/qs@npm:6.9.7" @@ -3218,15 +3126,6 @@ __metadata: languageName: node linkType: hard -"@types/yauzl@npm:^2.9.1": - version: 2.10.0 - resolution: "@types/yauzl@npm:2.10.0" - dependencies: - "@types/node": "*" - checksum: 55d27ae5d346ea260e40121675c24e112ef0247649073848e5d4e03182713ae4ec8142b98f61a1c6cbe7d3b72fa99bbadb65d8b01873e5e605cdc30f1ff70ef2 - languageName: node - linkType: hard - "@types/youtube@npm:^0.0.42": version: 0.0.42 resolution: "@types/youtube@npm:0.0.42" @@ -3876,15 +3775,6 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.8.2": - version: 8.10.0 - resolution: "acorn@npm:8.10.0" - bin: - acorn: bin/acorn - checksum: 538ba38af0cc9e5ef983aee196c4b8b4d87c0c94532334fa7e065b2c8a1f85863467bb774231aae91613fcda5e68740c15d97b1967ae3394d20faddddd8af61d - languageName: node - linkType: hard - "add-stream@npm:^1.0.0": version: 1.0.0 resolution: "add-stream@npm:1.0.0" @@ -4105,13 +3995,6 @@ __metadata: languageName: node linkType: hard -"append-field@npm:^1.0.0": - version: 1.0.0 - resolution: "append-field@npm:1.0.0" - checksum: 482ba08acc0ecef00fe7da6bf2f8e48359a9905ee1af525f3120c9260c02e91eedf0579b59d898e8d8455b6c199e340bc0a2fd4b9e02adaa29a8a86c722b37f9 - languageName: node - linkType: hard - "aproba@npm:^1.0.3 || ^2.0.0": version: 2.0.0 resolution: "aproba@npm:2.0.0" @@ -4484,13 +4367,6 @@ __metadata: languageName: node linkType: hard -"boolean@npm:^3.0.1": - version: 3.2.0 - resolution: "boolean@npm:3.2.0" - checksum: fb29535b8bf710ef45279677a86d14f5185d604557204abd2ca5fa3fb2a5c80e04d695c8dbf13ab269991977a79bb6c04b048220a6b2a3849853faa94f4a7d77 - languageName: node - linkType: hard - "brace-expansion@npm:^1.1.7": version: 1.1.11 resolution: "brace-expansion@npm:1.1.11" @@ -4533,13 +4409,6 @@ __metadata: languageName: node linkType: hard -"buffer-crc32@npm:~0.2.3": - version: 0.2.13 - resolution: "buffer-crc32@npm:0.2.13" - checksum: 06252347ae6daca3453b94e4b2f1d3754a3b146a111d81c68924c22d91889a40623264e95e67955b1cb4a68cbedf317abeabb5140a9766ed248973096db5ce1c - languageName: node - linkType: hard - "buffer-equal@npm:^1.0.0": version: 1.0.1 resolution: "buffer-equal@npm:1.0.1" @@ -4614,15 +4483,6 @@ __metadata: languageName: node linkType: hard -"busboy@npm:^1.0.0": - version: 1.6.0 - resolution: "busboy@npm:1.6.0" - dependencies: - streamsearch: ^1.1.0 - checksum: 32801e2c0164e12106bf236291a00795c3c4e4b709ae02132883fe8478ba2ae23743b11c5735a0aae8afe65ac4b6ca4568b91f0d9fed1fdbc32ede824a73746e - languageName: node - linkType: hard - "bytes@npm:3.0.0": version: 3.0.0 resolution: "bytes@npm:3.0.0" @@ -4689,28 +4549,6 @@ __metadata: languageName: node linkType: hard -"cacheable-lookup@npm:^7.0.0": - version: 7.0.0 - resolution: "cacheable-lookup@npm:7.0.0" - checksum: 9e2856763fc0a7347ab34d704c010440b819d4bb5e3593b664381b7433e942dd22e67ee5581f12256f908e79b82d30b86ebbacf40a081bfe10ee93fbfbc2d6a9 - languageName: node - linkType: hard - -"cacheable-request@npm:^10.2.8": - version: 10.2.10 - resolution: "cacheable-request@npm:10.2.10" - dependencies: - "@types/http-cache-semantics": ^4.0.1 - get-stream: ^6.0.1 - http-cache-semantics: ^4.1.1 - keyv: ^4.5.2 - mimic-response: ^4.0.0 - normalize-url: ^8.0.0 - responselike: ^3.0.0 - checksum: 6f56cf6dc88c000936c89e386fdfd65c9a7833f6a4f73314f546287352efca50ef8c7ccc80c64d5c51fe104f5a60356366e190846f56abf3f2e90c1bacec7eee - languageName: node - linkType: hard - "call-bind@npm:^1.0.0, call-bind@npm:^1.0.2": version: 1.0.2 resolution: "call-bind@npm:1.0.2" @@ -5074,18 +4912,6 @@ __metadata: languageName: node linkType: hard -"concat-stream@npm:^1.5.2": - version: 1.6.2 - resolution: "concat-stream@npm:1.6.2" - dependencies: - buffer-from: ^1.0.0 - inherits: ^2.0.3 - readable-stream: ^2.2.2 - typedarray: ^0.0.6 - checksum: 1ef77032cb4459dcd5187bd710d6fc962b067b64ec6a505810de3d2b8cc0605638551b42f8ec91edf6fcd26141b32ef19ad749239b58fae3aba99187adc32285 - languageName: node - linkType: hard - "concat-stream@npm:^2.0.0": version: 2.0.0 resolution: "concat-stream@npm:2.0.0" @@ -5706,13 +5532,6 @@ __metadata: languageName: node linkType: hard -"data-uri-to-buffer@npm:^4.0.0": - version: 4.0.1 - resolution: "data-uri-to-buffer@npm:4.0.1" - checksum: 0d0790b67ffec5302f204c2ccca4494f70b4e2d940fea3d36b09f0bb2b8539c2e86690429eb1f1dc4bcc9e4df0644193073e63d9ee48ac9fce79ec1506e4aa4c - languageName: node - linkType: hard - "dateformat@npm:^3.0.0": version: 3.0.3 resolution: "dateformat@npm:3.0.3" @@ -5783,15 +5602,6 @@ __metadata: languageName: node linkType: hard -"decompress-response@npm:^6.0.0": - version: 6.0.0 - resolution: "decompress-response@npm:6.0.0" - dependencies: - mimic-response: ^3.1.0 - checksum: d377cf47e02d805e283866c3f50d3d21578b779731e8c5072d6ce8c13cc31493db1c2f6784da9d1d5250822120cefa44f1deab112d5981015f2e17444b763812 - languageName: node - linkType: hard - "deep-equal@npm:^2.0.5": version: 2.2.2 resolution: "deep-equal@npm:2.2.2" @@ -5850,13 +5660,6 @@ __metadata: languageName: node linkType: hard -"defer-to-connect@npm:^2.0.1": - version: 2.0.1 - resolution: "defer-to-connect@npm:2.0.1" - checksum: 8a9b50d2f25446c0bfefb55a48e90afd58f85b21bcf78e9207cd7b804354f6409032a1705c2491686e202e64fc05f147aa5aa45f9aa82627563f045937f5791b - languageName: node - linkType: hard - "define-data-property@npm:^1.0.1": version: 1.1.1 resolution: "define-data-property@npm:1.1.1" @@ -6172,7 +5975,7 @@ __metadata: languageName: node linkType: hard -"ejs@npm:^3.1.8, ejs@npm:^3.1.9": +"ejs@npm:^3.1.8": version: 3.1.9 resolution: "ejs@npm:3.1.9" dependencies: @@ -6253,16 +6056,17 @@ __metadata: languageName: node linkType: hard -"electron@npm:^26.3.0": - version: 26.3.0 - resolution: "electron@npm:26.3.0" +"electron@npm:~44.6.0": + version: 44.6.0 + resolution: "electron@npm:44.6.0" dependencies: - "@electron/get": ^2.0.0 - "@types/node": ^18.11.18 - extract-zip: ^2.0.1 + "@electron-internal/extract-zip": ^1.0.1 + "@electron/get": ^5.0.0 + "@types/node": ^24.9.0 bin: electron: cli.js - checksum: e904f7a7a3281d0cbf899ce06199f71dd7db9553f6650a7a2dda5001e3a4026933554ce44da2f3106500623aa28a10e4b5f9b42599f5442af11983f032d18275 + install-electron: install.js + checksum: f2b6143886e10cb39ce93eae3b59ac9d655a85bbc9b0e4639af37426c06d5464a592640f08d61524871bd5ffb8205eedc067b73cb109046fd5b6491ed19a2442 languageName: node linkType: hard @@ -6296,15 +6100,6 @@ __metadata: languageName: node linkType: hard -"end-of-stream@npm:^1.1.0": - version: 1.4.4 - resolution: "end-of-stream@npm:1.4.4" - dependencies: - once: ^1.4.0 - checksum: 530a5a5a1e517e962854a31693dbb5c0b2fc40b46dad2a56a2deec656ca040631124f4795823acc68238147805f8b021abbe221f4afed5ef3c8e8efc2024908b - languageName: node - linkType: hard - "enhanced-resolve@npm:^5.0.0, enhanced-resolve@npm:^5.10.0": version: 5.14.0 resolution: "enhanced-resolve@npm:5.14.0" @@ -6346,6 +6141,13 @@ __metadata: languageName: node linkType: hard +"env-paths@npm:^3.0.0": + version: 3.0.0 + resolution: "env-paths@npm:3.0.0" + checksum: b2b0a0d0d9931a13d279c22ed94d78648a1cc5f408f05d47ff3e0c1616f0aa0c38fb33deec5e5be50497225d500607d57f9c8652c4d39c2f2b7608cd45768128 + languageName: node + linkType: hard + "envinfo@npm:^7.7.3": version: 7.8.1 resolution: "envinfo@npm:7.8.1" @@ -6413,13 +6215,6 @@ __metadata: languageName: node linkType: hard -"es6-error@npm:^4.1.1": - version: 4.1.1 - resolution: "es6-error@npm:4.1.1" - checksum: ae41332a51ec1323da6bbc5d75b7803ccdeddfae17c41b6166ebbafc8e8beb7a7b80b884b7fab1cc80df485860ac3c59d78605e860bb4f8cd816b3d6ade0d010 - languageName: node - linkType: hard - "esbuild-android-64@npm:0.15.18": version: 0.15.18 resolution: "esbuild-android-64@npm:0.15.18" @@ -7215,23 +7010,6 @@ __metadata: languageName: node linkType: hard -"extract-zip@npm:^2.0.1": - version: 2.0.1 - resolution: "extract-zip@npm:2.0.1" - dependencies: - "@types/yauzl": ^2.9.1 - debug: ^4.1.1 - get-stream: ^5.1.0 - yauzl: ^2.10.0 - dependenciesMeta: - "@types/yauzl": - optional: true - bin: - extract-zip: cli.js - checksum: 8cbda9debdd6d6980819cc69734d874ddd71051c9fe5bde1ef307ebcedfe949ba57b004894b585f758b7c9eeeea0e3d87f2dda89b7d25320459c2c9643ebb635 - languageName: node - linkType: hard - "extsprintf@npm:^1.2.0": version: 1.4.1 resolution: "extsprintf@npm:1.4.1" @@ -7305,25 +7083,6 @@ __metadata: languageName: node linkType: hard -"fd-slicer@npm:~1.1.0": - version: 1.1.0 - resolution: "fd-slicer@npm:1.1.0" - dependencies: - pend: ~1.2.0 - checksum: c8585fd5713f4476eb8261150900d2cb7f6ff2d87f8feb306ccc8a1122efd152f1783bdb2b8dc891395744583436bfd8081d8e63ece0ec8687eeefea394d4ff2 - languageName: node - linkType: hard - -"fetch-blob@npm:^3.1.2, fetch-blob@npm:^3.1.4": - version: 3.2.0 - resolution: "fetch-blob@npm:3.2.0" - dependencies: - node-domexception: ^1.0.0 - web-streams-polyfill: ^3.0.3 - checksum: f19bc28a2a0b9626e69fd7cf3a05798706db7f6c7548da657cbf5026a570945f5eeaedff52007ea35c8bcd3d237c58a20bf1543bc568ab2422411d762dd3d5bf - languageName: node - linkType: hard - "figures@npm:^3.0.0, figures@npm:^3.1.0": version: 3.2.0 resolution: "figures@npm:3.2.0" @@ -7460,7 +7219,7 @@ __metadata: languageName: node linkType: hard -"follow-redirects@npm:^1.15.4, follow-redirects@npm:^1.15.5": +"follow-redirects@npm:^1.15.4": version: 1.15.5 resolution: "follow-redirects@npm:1.15.5" peerDependenciesMeta: @@ -7486,13 +7245,6 @@ __metadata: languageName: node linkType: hard -"form-data-encoder@npm:^2.1.2": - version: 2.1.4 - resolution: "form-data-encoder@npm:2.1.4" - checksum: e0b3e5950fb69b3f32c273944620f9861f1933df9d3e42066e038e26dfb343d0f4465de9f27e0ead1a09d9df20bc2eed06a63c2ca2f8f00949e7202bae9e29dd - languageName: node - linkType: hard - "form-data@npm:^3.0.0": version: 3.0.1 resolution: "form-data@npm:3.0.1" @@ -7525,15 +7277,6 @@ __metadata: languageName: node linkType: hard -"formdata-polyfill@npm:^4.0.10": - version: 4.0.10 - resolution: "formdata-polyfill@npm:4.0.10" - dependencies: - fetch-blob: ^3.1.2 - checksum: 82a34df292afadd82b43d4a740ce387bc08541e0a534358425193017bf9fb3567875dc5f69564984b1da979979b70703aa73dee715a17b6c229752ae736dd9db - languageName: node - linkType: hard - "forwarded@npm:0.2.0": version: 0.2.0 resolution: "forwarded@npm:0.2.0" @@ -7566,17 +7309,6 @@ __metadata: languageName: node linkType: hard -"fs-extra@npm:^8.1.0": - version: 8.1.0 - resolution: "fs-extra@npm:8.1.0" - dependencies: - graceful-fs: ^4.2.0 - jsonfile: ^4.0.0 - universalify: ^0.1.0 - checksum: bf44f0e6cea59d5ce071bba4c43ca76d216f89e402dc6285c128abc0902e9b8525135aa808adad72c9d5d218e9f4bcc63962815529ff2f684ad532172a284880 - languageName: node - linkType: hard - "fs-extra@npm:^9.0.0, fs-extra@npm:^9.0.1": version: 9.1.0 resolution: "fs-extra@npm:9.1.0" @@ -7750,16 +7482,7 @@ __metadata: languageName: node linkType: hard -"get-stream@npm:^5.1.0": - version: 5.2.0 - resolution: "get-stream@npm:5.2.0" - dependencies: - pump: ^3.0.0 - checksum: 8bc1a23174a06b2b4ce600df38d6c98d2ef6d84e020c1ddad632ad75bac4e092eeb40e4c09e0761c35fc2dbc5e7fff5dab5e763a383582c4a167dd69a905bd12 - languageName: node - linkType: hard - -"get-stream@npm:^6.0.0, get-stream@npm:^6.0.1": +"get-stream@npm:^6.0.0": version: 6.0.1 resolution: "get-stream@npm:6.0.1" checksum: e04ecece32c92eebf5b8c940f51468cd53554dcbb0ea725b2748be583c9523d00128137966afce410b9b051eb2ef16d657cd2b120ca8edafcf5a65e81af63cad @@ -7877,20 +7600,6 @@ __metadata: languageName: node linkType: hard -"global-agent@npm:^3.0.0": - version: 3.0.0 - resolution: "global-agent@npm:3.0.0" - dependencies: - boolean: ^3.0.1 - es6-error: ^4.1.1 - matcher: ^3.0.0 - roarr: ^2.15.3 - semver: ^7.3.2 - serialize-error: ^7.0.1 - checksum: 75074d80733b4bd5386c47f5df028e798018025beac0ab310e9908c72bf5639e408203e7bca0130d5ee01b5f4abc6d34385d96a9f950ea5fe1979bb431c808f7 - languageName: node - linkType: hard - "globals@npm:^11.1.0": version: 11.12.0 resolution: "globals@npm:11.12.0" @@ -7907,15 +7616,6 @@ __metadata: languageName: node linkType: hard -"globalthis@npm:^1.0.1": - version: 1.0.3 - resolution: "globalthis@npm:1.0.3" - dependencies: - define-properties: ^1.1.3 - checksum: fbd7d760dc464c886d0196166d92e5ffb4c84d0730846d6621a39fbbc068aeeb9c8d1421ad330e94b7bca4bb4ea092f5f21f3d36077812af5d098b4dc006c998 - languageName: node - linkType: hard - "globby@npm:^11.1.0": version: 11.1.0 resolution: "globby@npm:11.1.0" @@ -7952,26 +7652,7 @@ __metadata: languageName: node linkType: hard -"got@npm:^11.8.5, got@npm:^13.0.0": - version: 13.0.0 - resolution: "got@npm:13.0.0" - dependencies: - "@sindresorhus/is": ^5.2.0 - "@szmarczak/http-timer": ^5.0.1 - cacheable-lookup: ^7.0.0 - cacheable-request: ^10.2.8 - decompress-response: ^6.0.0 - form-data-encoder: ^2.1.2 - get-stream: ^6.0.1 - http2-wrapper: ^2.1.10 - lowercase-keys: ^3.0.0 - p-cancelable: ^3.0.0 - responselike: ^3.0.0 - checksum: bcae6601efd710bc6c5b454c5e44bcb16fcfe57a1065e2d61ff918c1d69c3cf124984ebf509ca64ed10f0da2d2b5531b77da05aa786e75849d084fb8fbea711b - languageName: node - linkType: hard - -"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": +"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: ac85f94da92d8eb6b7f5a8b20ce65e43d66761c55ce85ac96df6865308390da45a8d3f0296dd3a663de65d30ba497bd46c696cc1e248c72b13d6d567138a4fc7 @@ -8196,7 +7877,7 @@ __metadata: languageName: node linkType: hard -"http-cache-semantics@npm:^4.1.0, http-cache-semantics@npm:^4.1.1": +"http-cache-semantics@npm:^4.1.0": version: 4.1.1 resolution: "http-cache-semantics@npm:4.1.1" checksum: 83ac0bc60b17a3a36f9953e7be55e5c8f41acc61b22583060e8dedc9dd5e3607c823a88d0926f9150e571f90946835c7fe150732801010845c72cd8bbff1a236 @@ -8282,16 +7963,6 @@ __metadata: languageName: node linkType: hard -"http2-wrapper@npm:^2.1.10": - version: 2.2.0 - resolution: "http2-wrapper@npm:2.2.0" - dependencies: - quick-lru: ^5.1.1 - resolve-alpn: ^1.2.0 - checksum: 6fd20e5cb6a58151715b3581e06a62a47df943187d2d1f69e538a50cccb7175dd334ecfde7900a37d18f3e13a1a199518a2c211f39860e81e9a16210c199cfaa - languageName: node - linkType: hard - "https-proxy-agent@npm:5.0.1, https-proxy-agent@npm:^5.0.0, https-proxy-agent@npm:^5.0.1": version: 5.0.1 resolution: "https-proxy-agent@npm:5.0.1" @@ -9025,13 +8696,6 @@ __metadata: languageName: node linkType: hard -"json-buffer@npm:3.0.1": - version: 3.0.1 - resolution: "json-buffer@npm:3.0.1" - checksum: 9026b03edc2847eefa2e37646c579300a1f3a4586cfb62bf857832b60c852042d0d6ae55d1afb8926163fa54c2b01d83ae24705f34990348bdac6273a29d4581 - languageName: node - linkType: hard - "json-parse-better-errors@npm:^1.0.1": version: 1.0.2 resolution: "json-parse-better-errors@npm:1.0.2" @@ -9097,18 +8761,6 @@ __metadata: languageName: node linkType: hard -"jsonfile@npm:^4.0.0": - version: 4.0.0 - resolution: "jsonfile@npm:4.0.0" - dependencies: - graceful-fs: ^4.1.6 - dependenciesMeta: - graceful-fs: - optional: true - checksum: 6447d6224f0d31623eef9b51185af03ac328a7553efcee30fa423d98a9e276ca08db87d71e17f2310b0263fd3ffa6c2a90a6308367f661dc21580f9469897c9e - languageName: node - linkType: hard - "jsonfile@npm:^6.0.1": version: 6.1.0 resolution: "jsonfile@npm:6.1.0" @@ -9210,7 +8862,7 @@ __metadata: cors: ^2.8.5 crypto-js: ^4.2.0 dotenv: ^16.3.2 - electron: ^26.3.0 + electron: ~44.6.0 electron-builder: ^24.6.4 electron-updater: ^6.1.4 express-rate-limit: ^6.11.2 @@ -9237,15 +8889,6 @@ __metadata: languageName: unknown linkType: soft -"keyv@npm:^4.5.2": - version: 4.5.2 - resolution: "keyv@npm:4.5.2" - dependencies: - json-buffer: 3.0.1 - checksum: 13ad58303acd2261c0d4831b4658451603fd159e61daea2121fcb15feb623e75ee328cded0572da9ca76b7b3ceaf8e614f1806c6b3af5db73c9c35a345259651 - languageName: node - linkType: hard - "kind-of@npm:^6.0.2, kind-of@npm:^6.0.3": version: 6.0.3 resolution: "kind-of@npm:6.0.3" @@ -9271,49 +8914,26 @@ __metadata: version: 0.0.0-use.local resolution: "knowledge-canvas@workspace:." dependencies: - "@adobe/css-tools": ^4.3.2 "@angular-devkit/architect": ^0.1402.13 "@angular/cli": ^14.2.13 "@types/async": ^3.2.24 - "@types/ejs": ^3.1.4 - "@types/eslint": ^8 "@types/express": ^4.17.21 - "@types/follow-redirects": ^1.14.4 "@types/html-to-text": ^9.0.4 - "@types/minimist": ^1.2.5 - "@types/multer": ^1.4.11 "@types/node": ^17.0.45 - "@types/node-forge": ^1.3.11 - "@types/plist": ^3.0.5 - "@types/prettier": ^2.7.3 "@types/uuid": ^9.0.7 async: ^3.2.5 axios: ^1.6.5 - ejs: ^3.1.9 electron-builder: ^24.6.4 electron-notarize: ^1.2.2 eslint: ^8.38.0 eslint-plugin-html: ^7.1.0 express: ^4.18.2 - follow-redirects: ^1.15.5 - got: ^13.0.0 highlight.js: ^11.9.0 html-to-text: ^9.0.5 - loader-utils: ^3.2.1 - minimist: ^1.2.8 - multer: ^1.4.5-lts.1 - node-fetch: ^3.3.2 - node-forge: ^1.3.1 - node-loader: ^2.0.0 pdfjs-dist: ^3.11.174 playwright-core: ^1.63.0 - plist: ^3.1.0 - postcss: ^8.4.33 prettier: ^2.8.8 standard-version: ^9.5.0 - terser: ^5.27.0 - url: ^0.11.3 - worker-loader: ^3.0.8 dependenciesMeta: canvas: built: false @@ -9438,7 +9058,7 @@ __metadata: languageName: node linkType: hard -"loader-utils@npm:3.2.1, loader-utils@npm:^3.2.1": +"loader-utils@npm:3.2.1": version: 3.2.1 resolution: "loader-utils@npm:3.2.1" checksum: 4e3ea054cdc8be1ab1f1238f49f42fdf0483039eff920fb1d442039f3f0ad4ebd11fb8e584ccdf2cb7e3c56b3d40c1832416e6408a55651b843da288960cc792 @@ -9546,13 +9166,6 @@ __metadata: languageName: node linkType: hard -"lowercase-keys@npm:^3.0.0": - version: 3.0.0 - resolution: "lowercase-keys@npm:3.0.0" - checksum: 67a3f81409af969bc0c4ca0e76cd7d16adb1e25aa1c197229587eaf8671275c8c067cd421795dbca4c81be0098e4c426a086a05e30de8a9c587b7a13c0c7ccc5 - languageName: node - linkType: hard - "lru-cache@npm:^5.1.1": version: 5.1.1 resolution: "lru-cache@npm:5.1.1" @@ -9662,15 +9275,6 @@ __metadata: languageName: node linkType: hard -"matcher@npm:^3.0.0": - version: 3.0.0 - resolution: "matcher@npm:3.0.0" - dependencies: - escape-string-regexp: ^4.0.0 - checksum: 8bee1a7ab7609c2c21d9c9254b6785fa708eadf289032b556d57a34e98fcd4c537659a004dafee6ce80ab157099e645c199dc52678dff1e7fb0a6684e0da4dbe - languageName: node - linkType: hard - "md5@npm:^2.3.0": version: 2.3.0 resolution: "md5@npm:2.3.0" @@ -9812,20 +9416,6 @@ __metadata: languageName: node linkType: hard -"mimic-response@npm:^3.1.0": - version: 3.1.0 - resolution: "mimic-response@npm:3.1.0" - checksum: 25739fee32c17f433626bf19f016df9036b75b3d84a3046c7d156e72ec963dd29d7fc8a302f55a3d6c5a4ff24259676b15d915aad6480815a969ff2ec0836867 - languageName: node - linkType: hard - -"mimic-response@npm:^4.0.0": - version: 4.0.0 - resolution: "mimic-response@npm:4.0.0" - checksum: 33b804cc961efe206efdb1fca6a22540decdcfce6c14eb5c0c50e5ae9022267ab22ce8f5568b1f7247ba67500fe20d523d81e0e9f009b321ccd9d472e78d1850 - languageName: node - linkType: hard - "min-indent@npm:^1.0.0": version: 1.0.1 resolution: "min-indent@npm:1.0.1" @@ -9898,7 +9488,7 @@ __metadata: languageName: node linkType: hard -"minimist@npm:^1.2.5, minimist@npm:^1.2.6, minimist@npm:^1.2.8": +"minimist@npm:^1.2.5, minimist@npm:^1.2.6": version: 1.2.8 resolution: "minimist@npm:1.2.8" checksum: 75a6d645fb122dad29c06a7597bddea977258957ed88d7a6df59b5cd3fe4a527e253e9bbf2e783e4b73657f9098b96a5fe96ab8a113655d4109108577ecf85b0 @@ -9992,17 +9582,6 @@ __metadata: languageName: node linkType: hard -"mkdirp@npm:^0.5.4": - version: 0.5.6 - resolution: "mkdirp@npm:0.5.6" - dependencies: - minimist: ^1.2.6 - bin: - mkdirp: bin/cmd.js - checksum: 0c91b721bb12c3f9af4b77ebf73604baf350e64d80df91754dc509491ae93bf238581e59c7188360cec7cb62fc4100959245a42cfe01834efedc5e9d068376c2 - languageName: node - linkType: hard - "mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4": version: 1.0.4 resolution: "mkdirp@npm:1.0.4" @@ -10040,21 +9619,6 @@ __metadata: languageName: node linkType: hard -"multer@npm:^1.4.5-lts.1": - version: 1.4.5-lts.1 - resolution: "multer@npm:1.4.5-lts.1" - dependencies: - append-field: ^1.0.0 - busboy: ^1.0.0 - concat-stream: ^1.5.2 - mkdirp: ^0.5.4 - object-assign: ^4.1.1 - type-is: ^1.6.4 - xtend: ^4.0.0 - checksum: d6dfa78a6ec592b74890412f8962da8a87a3dcfe20f612e039b735b8e0faa72c735516c447f7de694ee0d981eb0a1b892fb9e2402a0348dc6091d18c38d89ecc - languageName: node - linkType: hard - "multicast-dns@npm:^7.2.5": version: 7.2.5 resolution: "multicast-dns@npm:7.2.5" @@ -10092,15 +9656,6 @@ __metadata: languageName: node linkType: hard -"nanoid@npm:^3.3.7": - version: 3.3.7 - resolution: "nanoid@npm:3.3.7" - bin: - nanoid: bin/nanoid.cjs - checksum: d36c427e530713e4ac6567d488b489a36582ef89da1d6d4e3b87eded11eb10d7042a877958c6f104929809b2ab0bafa17652b076cdf84324aa75b30b722204f2 - languageName: node - linkType: hard - "natural-compare@npm:^1.4.0": version: 1.4.0 resolution: "natural-compare@npm:1.4.0" @@ -10206,7 +9761,7 @@ __metadata: languageName: node linkType: hard -"node-domexception@npm:1.0.0, node-domexception@npm:^1.0.0": +"node-domexception@npm:1.0.0": version: 1.0.0 resolution: "node-domexception@npm:1.0.0" checksum: ee1d37dd2a4eb26a8a92cd6b64dfc29caec72bff5e1ed9aba80c294f57a31ba4895a60fd48347cf17dd6e766da0ae87d75657dfd1f384ebfa60462c2283f5c7f @@ -10227,18 +9782,7 @@ __metadata: languageName: node linkType: hard -"node-fetch@npm:^3.3.2": - version: 3.3.2 - resolution: "node-fetch@npm:3.3.2" - dependencies: - data-uri-to-buffer: ^4.0.0 - fetch-blob: ^3.1.4 - formdata-polyfill: ^4.0.10 - checksum: 06a04095a2ddf05b0830a0d5302699704d59bda3102894ea64c7b9d4c865ecdff2d90fd042df7f5bc40337266961cb6183dcc808ea4f3000d024f422b462da92 - languageName: node - linkType: hard - -"node-forge@npm:^1, node-forge@npm:^1.3.1": +"node-forge@npm:^1": version: 1.3.1 resolution: "node-forge@npm:1.3.1" checksum: 08fb072d3d670599c89a1704b3e9c649ff1b998256737f0e06fbd1a5bf41cae4457ccaee32d95052d80bbafd9ffe01284e078c8071f0267dc9744e51c5ed42a9 @@ -10276,17 +9820,6 @@ __metadata: languageName: node linkType: hard -"node-loader@npm:^2.0.0": - version: 2.0.0 - resolution: "node-loader@npm:2.0.0" - dependencies: - loader-utils: ^2.0.0 - peerDependencies: - webpack: ^5.0.0 - checksum: 9252a92b226c0e6fdd29fef92d9853d6c389a4c65119a32306dc12cee7886f2ab4dde333dda5e37df92283c34bd0267e98c384be6d548dbe69676e3343f549ea - languageName: node - linkType: hard - "node-releases@npm:^2.0.8": version: 2.0.10 resolution: "node-releases@npm:2.0.10" @@ -10366,13 +9899,6 @@ __metadata: languageName: node linkType: hard -"normalize-url@npm:^8.0.0": - version: 8.0.0 - resolution: "normalize-url@npm:8.0.0" - checksum: 24c20b75ebfd526d8453084692720b49d111c63c0911f1b7447427829597841eef5a8ba3f6bb93d6654007b991c1f5cd85da2c907800e439e2e2ec6c2abd0fc0 - languageName: node - linkType: hard - "npm-bundled@npm:^1.1.1": version: 1.1.2 resolution: "npm-bundled@npm:1.1.2" @@ -10599,7 +10125,7 @@ __metadata: languageName: node linkType: hard -"once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0": +"once@npm:^1.3.0, once@npm:^1.3.1": version: 1.4.0 resolution: "once@npm:1.4.0" dependencies: @@ -10696,13 +10222,6 @@ __metadata: languageName: node linkType: hard -"p-cancelable@npm:^3.0.0": - version: 3.0.0 - resolution: "p-cancelable@npm:3.0.0" - checksum: 2b5ae34218f9c2cf7a7c18e5d9a726ef9b165ef07e6c959f6738371509e747334b5f78f3bcdeb03d8a12dcb978faf641fd87eb21486ed7d36fb823b8ddef3219 - languageName: node - linkType: hard - "p-limit@npm:^1.1.0": version: 1.3.0 resolution: "p-limit@npm:1.3.0" @@ -11021,13 +10540,6 @@ __metadata: languageName: node linkType: hard -"pend@npm:~1.2.0": - version: 1.2.0 - resolution: "pend@npm:1.2.0" - checksum: 6c72f5243303d9c60bd98e6446ba7d30ae29e3d56fdb6fae8767e8ba6386f33ee284c97efe3230a0d0217e2b1723b8ab490b1bbf34fcbb2180dbc8a9de47850d - languageName: node - linkType: hard - "picocolors@npm:^1.0.0": version: 1.0.0 resolution: "picocolors@npm:1.0.0" @@ -11106,7 +10618,7 @@ __metadata: languageName: node linkType: hard -"plist@npm:^3.0.5, plist@npm:^3.1.0": +"plist@npm:^3.0.5": version: 3.1.0 resolution: "plist@npm:3.1.0" dependencies: @@ -11643,17 +11155,6 @@ __metadata: languageName: node linkType: hard -"postcss@npm:^8.4.33": - version: 8.4.33 - resolution: "postcss@npm:8.4.33" - dependencies: - nanoid: ^3.3.7 - picocolors: ^1.0.0 - source-map-js: ^1.0.2 - checksum: 6f98b2af4b76632a3de20c4f47bf0e984a1ce1a531cf11adcb0b1d63a6cbda0aae4165e578b66c32ca4879038e3eaad386a6be725a8fb4429c78e3c1ab858fe9 - languageName: node - linkType: hard - "preact@npm:~10.12.1": version: 10.12.1 resolution: "preact@npm:10.12.1" @@ -11785,23 +11286,6 @@ __metadata: languageName: node linkType: hard -"pump@npm:^3.0.0": - version: 3.0.0 - resolution: "pump@npm:3.0.0" - dependencies: - end-of-stream: ^1.1.0 - once: ^1.3.1 - checksum: e42e9229fba14732593a718b04cb5e1cfef8254544870997e0ecd9732b189a48e1256e4e5478148ecb47c8511dca2b09eae56b4d0aad8009e6fac8072923cfc9 - languageName: node - linkType: hard - -"punycode@npm:^1.4.1": - version: 1.4.1 - resolution: "punycode@npm:1.4.1" - checksum: fa6e698cb53db45e4628559e557ddaf554103d2a96a1d62892c8f4032cd3bc8871796cae9eabc1bc700e2b6677611521ce5bb1d9a27700086039965d0cf34518 - languageName: node - linkType: hard - "punycode@npm:^2.1.0": version: 2.3.0 resolution: "punycode@npm:2.3.0" @@ -11825,15 +11309,6 @@ __metadata: languageName: node linkType: hard -"qs@npm:^6.11.2": - version: 6.11.2 - resolution: "qs@npm:6.11.2" - dependencies: - side-channel: ^1.0.4 - checksum: e812f3c590b2262548647d62f1637b6989cc56656dc960b893fe2098d96e1bd633f36576f4cd7564dfbff9db42e17775884db96d846bebe4f37420d073ecdc0b - languageName: node - linkType: hard - "queue-microtask@npm:^1.2.2": version: 1.2.3 resolution: "queue-microtask@npm:1.2.3" @@ -11848,13 +11323,6 @@ __metadata: languageName: node linkType: hard -"quick-lru@npm:^5.1.1": - version: 5.1.1 - resolution: "quick-lru@npm:5.1.1" - checksum: a516faa25574be7947969883e6068dbe4aa19e8ef8e8e0fd96cddd6d36485e9106d85c0041a27153286b0770b381328f4072aa40d3b18a19f5f7d2b78b94b5ed - languageName: node - linkType: hard - "randombytes@npm:^2.1.0": version: 2.1.0 resolution: "randombytes@npm:2.1.0" @@ -11983,7 +11451,7 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:^2.0.1, readable-stream@npm:^2.2.2, readable-stream@npm:~2.3.6": +"readable-stream@npm:^2.0.1, readable-stream@npm:~2.3.6": version: 2.3.8 resolution: "readable-stream@npm:2.3.8" dependencies: @@ -12143,13 +11611,6 @@ __metadata: languageName: node linkType: hard -"resolve-alpn@npm:^1.2.0": - version: 1.2.1 - resolution: "resolve-alpn@npm:1.2.1" - checksum: f558071fcb2c60b04054c99aebd572a2af97ef64128d59bef7ab73bd50d896a222a056de40ffc545b633d99b304c259ea9d0c06830d5c867c34f0bfa60b8eae0 - languageName: node - linkType: hard - "resolve-cwd@npm:^3.0.0": version: 3.0.0 resolution: "resolve-cwd@npm:3.0.0" @@ -12238,15 +11699,6 @@ __metadata: languageName: node linkType: hard -"responselike@npm:^3.0.0": - version: 3.0.0 - resolution: "responselike@npm:3.0.0" - dependencies: - lowercase-keys: ^3.0.0 - checksum: e0cc9be30df4f415d6d83cdede3c5c887cd4a73e7cc1708bcaab1d50a28d15acb68460ac5b02bcc55a42f3d493729c8856427dcf6e57e6e128ad05cba4cfb95e - languageName: node - linkType: hard - "restore-cursor@npm:^3.1.0": version: 3.1.0 resolution: "restore-cursor@npm:3.1.0" @@ -12289,20 +11741,6 @@ __metadata: languageName: node linkType: hard -"roarr@npm:^2.15.3": - version: 2.15.4 - resolution: "roarr@npm:2.15.4" - dependencies: - boolean: ^3.0.1 - detect-node: ^2.0.4 - globalthis: ^1.0.1 - json-stringify-safe: ^5.0.1 - semver-compare: ^1.0.0 - sprintf-js: ^1.1.2 - checksum: 682e28d5491e3ae99728a35ba188f4f0ccb6347dbd492f95dc9f4bfdfe8ee63d8203ad234766ee2db88c8d7a300714304976eb095ce5c9366fe586c03a21586c - languageName: node - linkType: hard - "rollup-plugin-sourcemaps@npm:^0.6.3": version: 0.6.3 resolution: "rollup-plugin-sourcemaps@npm:0.6.3" @@ -12475,25 +11913,25 @@ __metadata: languageName: node linkType: hard -"schema-utils@npm:^3.0.0, schema-utils@npm:^3.2.0": - version: 3.3.0 - resolution: "schema-utils@npm:3.3.0" +"schema-utils@npm:^3.1.0, schema-utils@npm:^3.1.1": + version: 3.1.2 + resolution: "schema-utils@npm:3.1.2" dependencies: "@types/json-schema": ^7.0.8 ajv: ^6.12.5 ajv-keywords: ^3.5.2 - checksum: ea56971926fac2487f0757da939a871388891bc87c6a82220d125d587b388f1704788f3706e7f63a7b70e49fc2db974c41343528caea60444afd5ce0fe4b85c0 + checksum: 39683edfe3beff018cdb1ae4fa296fc55cea13a080aa2b4d9351895cd64b22ba4d87e2e548c2a2ac1bc76e60980670adb0f413a58104479f1a0c12e5663cb8ca languageName: node linkType: hard -"schema-utils@npm:^3.1.0, schema-utils@npm:^3.1.1": - version: 3.1.2 - resolution: "schema-utils@npm:3.1.2" +"schema-utils@npm:^3.2.0": + version: 3.3.0 + resolution: "schema-utils@npm:3.3.0" dependencies: "@types/json-schema": ^7.0.8 ajv: ^6.12.5 ajv-keywords: ^3.5.2 - checksum: 39683edfe3beff018cdb1ae4fa296fc55cea13a080aa2b4d9351895cd64b22ba4d87e2e548c2a2ac1bc76e60980670adb0f413a58104479f1a0c12e5663cb8ca + checksum: ea56971926fac2487f0757da939a871388891bc87c6a82220d125d587b388f1704788f3706e7f63a7b70e49fc2db974c41343528caea60444afd5ce0fe4b85c0 languageName: node linkType: hard @@ -12534,13 +11972,6 @@ __metadata: languageName: node linkType: hard -"semver-compare@npm:^1.0.0": - version: 1.0.0 - resolution: "semver-compare@npm:1.0.0" - checksum: dd1d7e2909744cf2cf71864ac718efc990297f9de2913b68e41a214319e70174b1d1793ac16e31183b128c2b9812541300cb324db8168e6cf6b570703b171c68 - languageName: node - linkType: hard - "semver@npm:2 || 3 || 4 || 5, semver@npm:^5.6.0": version: 5.7.2 resolution: "semver@npm:5.7.2" @@ -12561,7 +11992,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^6.0.0, semver@npm:^6.1.1, semver@npm:^6.1.2, semver@npm:^6.2.0, semver@npm:^6.3.0": +"semver@npm:^6.0.0, semver@npm:^6.1.1, semver@npm:^6.1.2, semver@npm:^6.3.0": version: 6.3.1 resolution: "semver@npm:6.3.1" bin: @@ -12570,7 +12001,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.3": +"semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.3": version: 7.5.4 resolution: "semver@npm:7.5.4" dependencies: @@ -12581,6 +12012,15 @@ __metadata: languageName: node linkType: hard +"semver@npm:^7.6.3": + version: 7.8.5 + resolution: "semver@npm:7.8.5" + bin: + semver: bin/semver.js + checksum: 0c580f17e88e2b45806dc5cf3d824f719c946999d3554bf30307c2b68b3300ab3c8bfcd84d8f489b93b4cbb5362f5fc8de4d2858954f18d834253c4450fc9f6b + languageName: node + linkType: hard + "send@npm:0.18.0": version: 0.18.0 resolution: "send@npm:0.18.0" @@ -12602,15 +12042,6 @@ __metadata: languageName: node linkType: hard -"serialize-error@npm:^7.0.1": - version: 7.0.1 - resolution: "serialize-error@npm:7.0.1" - dependencies: - type-fest: ^0.13.1 - checksum: e0aba4dca2fc9fe74ae1baf38dbd99190e1945445a241ba646290f2176cdb2032281a76443b02ccf0caf30da5657d510746506368889a593b9835a497fc0732e - languageName: node - linkType: hard - "serialize-javascript@npm:^6.0.0, serialize-javascript@npm:^6.0.1": version: 6.0.1 resolution: "serialize-javascript@npm:6.0.1" @@ -12953,13 +12384,6 @@ __metadata: languageName: node linkType: hard -"sprintf-js@npm:^1.1.2": - version: 1.1.2 - resolution: "sprintf-js@npm:1.1.2" - checksum: d4bb46464632b335e5faed381bd331157e0af64915a98ede833452663bc672823db49d7531c32d58798e85236581fb7342fd0270531ffc8f914e186187bf1c90 - languageName: node - linkType: hard - "sprintf-js@npm:~1.0.2": version: 1.0.3 resolution: "sprintf-js@npm:1.0.3" @@ -13030,13 +12454,6 @@ __metadata: languageName: node linkType: hard -"streamsearch@npm:^1.1.0": - version: 1.1.0 - resolution: "streamsearch@npm:1.1.0" - checksum: 1cce16cea8405d7a233d32ca5e00a00169cc0e19fbc02aa839959985f267335d435c07f96e5e0edd0eadc6d39c98d5435fb5bbbdefc62c41834eadc5622ad942 - languageName: node - linkType: hard - "string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": version: 4.2.3 resolution: "string-width@npm:4.2.3" @@ -13286,20 +12703,6 @@ __metadata: languageName: node linkType: hard -"terser@npm:^5.27.0": - version: 5.27.0 - resolution: "terser@npm:5.27.0" - dependencies: - "@jridgewell/source-map": ^0.3.3 - acorn: ^8.8.2 - commander: ^2.20.0 - source-map-support: ~0.5.20 - bin: - terser: bin/terser - checksum: c165052cfea061e8512e9b9ba42a098c2ff6382886ae122b040fd5b6153443070cc2dcb4862269f1669c09c716763e856125a355ff984aa72be525d6fffd8729 - languageName: node - linkType: hard - "test-exclude@npm:^6.0.0": version: 6.0.0 resolution: "test-exclude@npm:6.0.0" @@ -13511,13 +12914,6 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^0.13.1": - version: 0.13.1 - resolution: "type-fest@npm:0.13.1" - checksum: e6bf2e3c449f27d4ef5d56faf8b86feafbc3aec3025fc9a5fbe2db0a2587c44714521f9c30d8516a833c8c506d6263f5cc11267522b10c6ccdb6cc55b0a9d1c4 - languageName: node - linkType: hard - "type-fest@npm:^0.18.0": version: 0.18.1 resolution: "type-fest@npm:0.18.1" @@ -13553,7 +12949,7 @@ __metadata: languageName: node linkType: hard -"type-is@npm:^1.6.4, type-is@npm:~1.6.18": +"type-is@npm:~1.6.18": version: 1.6.18 resolution: "type-is@npm:1.6.18" dependencies: @@ -13653,6 +13049,13 @@ __metadata: languageName: node linkType: hard +"undici@npm:^7.24.4": + version: 7.30.0 + resolution: "undici@npm:7.30.0" + checksum: 9138ee032f1d9133ee0cae068147a1c7eb9e514f07f012450a30d48896ee922c6cc2ad5c292cc35805712b80d7be3d5365af1af7df9f6aed1fd7a49175fc6105 + languageName: node + linkType: hard + "unicode-canonical-property-names-ecmascript@npm:^2.0.0": version: 2.0.0 resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.0" @@ -13720,13 +13123,6 @@ __metadata: languageName: node linkType: hard -"universalify@npm:^0.1.0": - version: 0.1.2 - resolution: "universalify@npm:0.1.2" - checksum: 40cdc60f6e61070fe658ca36016a8f4ec216b29bf04a55dce14e3710cc84c7448538ef4dad3728d0bfe29975ccd7bfb5f414c45e7b78883567fb31b246f02dff - languageName: node - linkType: hard - "universalify@npm:^2.0.0": version: 2.0.0 resolution: "universalify@npm:2.0.0" @@ -13764,16 +13160,6 @@ __metadata: languageName: node linkType: hard -"url@npm:^0.11.3": - version: 0.11.3 - resolution: "url@npm:0.11.3" - dependencies: - punycode: ^1.4.1 - qs: ^6.11.2 - checksum: f9e7886f46a16f96d2e42fbcc5d682c231c55ef5442c1ff66150c0f6556f6e3a97d094a84f51be15ec2432711d212eb60426659ce418f5fcadeaa3f601532c4e - languageName: node - linkType: hard - "utf8-byte-length@npm:^1.0.1": version: 1.0.4 resolution: "utf8-byte-length@npm:1.0.4" @@ -13885,7 +13271,7 @@ __metadata: languageName: node linkType: hard -"web-streams-polyfill@npm:^3.0.3, web-streams-polyfill@npm:^3.2.1": +"web-streams-polyfill@npm:^3.2.1": version: 3.2.1 resolution: "web-streams-polyfill@npm:3.2.1" checksum: b119c78574b6d65935e35098c2afdcd752b84268e18746606af149e3c424e15621b6f1ff0b42b2676dc012fc4f0d313f964b41a4b5031e525faa03997457da02 @@ -14234,18 +13620,6 @@ __metadata: languageName: node linkType: hard -"worker-loader@npm:^3.0.8": - version: 3.0.8 - resolution: "worker-loader@npm:3.0.8" - dependencies: - loader-utils: ^2.0.0 - schema-utils: ^3.0.0 - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - checksum: 84f4a7eeb2a1d8b9704425837e017c91eedfae67ac89e0b866a2dcf283323c1dcabe0258196278b7d5fd0041392da895c8a0c59ddf3a94f1b2e003df68ddfec3 - languageName: node - linkType: hard - "wrap-ansi@npm:^7.0.0": version: 7.0.0 resolution: "wrap-ansi@npm:7.0.0" @@ -14286,7 +13660,7 @@ __metadata: languageName: node linkType: hard -"xtend@npm:^4.0.0, xtend@npm:~4.0.1": +"xtend@npm:~4.0.1": version: 4.0.2 resolution: "xtend@npm:4.0.2" checksum: ac5dfa738b21f6e7f0dd6e65e1b3155036d68104e67e5d5d1bde74892e327d7e5636a076f625599dc394330a731861e87343ff184b0047fef1360a7ec0a5a36a @@ -14389,16 +13763,6 @@ __metadata: languageName: node linkType: hard -"yauzl@npm:^2.10.0": - version: 2.10.0 - resolution: "yauzl@npm:2.10.0" - dependencies: - buffer-crc32: ~0.2.3 - fd-slicer: ~1.1.0 - checksum: 7f21fe0bbad6e2cb130044a5d1d0d5a0e5bf3d8d4f8c4e6ee12163ce798fee3de7388d22a7a0907f563ac5f9d40f8699a223d3d5c1718da90b0156da6904022b - languageName: node - linkType: hard - "yocto-queue@npm:^0.1.0": version: 0.1.0 resolution: "yocto-queue@npm:0.1.0"