diff --git a/AGENTS.md b/AGENTS.md index c17c492..e100d31 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -36,4 +36,7 @@ Review the `README.md` and `CONTRIBUTING.md` for all relevant repository informa - Playwright's Chromium cannot launch inside the Claude Code sandbox (`bootstrap_check_in … Permission denied`): every integration test then fails at browser launch before any assertion. Run integration tests outside the sandbox. - Harper facts the cache handlers depend on (verified in `node_modules/harper` 5.1.23): each element of an `@indexed` array attribute is indexed, so `{attribute: 'tags', comparator: 'equals', value}` is an index lookup, while `contains` is a full scan doing a *substring* match on `String(array)`. Every write — `patch` included — resets a record's expiry to now + the table's `expiration` unless `put(id, value, { expiresAt })` overrides it, and a sourceless table returns `null` for an expired record. TTL eviction emits no subscription `delete` event. `patch` on a missing record creates a partial one. Adding `@indexed` to an existing attribute backfills in the background, and on 5.2.0 the worker threads that did not run the backfill were observed to keep throwing `IndexRebuildingError` for that attribute after "Finished indexing" was logged, until a restart — which is why the sweep falls back to an exact-match scan. - Next.js `IncrementalCache` treats a handler-returned `lastModified: -1` as an on-demand (blocking) revalidation, not stale-while-revalidate. Next 16 serves tag-stale FETCH/APP_PAGE/APP_ROUTE entries stale from its `tagsManifest` (`{stale, expired}` per tag); Next 15's manifest holds a number per tag; Next 14 has none. +- `next-16-mounted` serves the app under a Harper `urlPath`, which reaches Next.js through `Request.withNodeAdapter()`. That needs harper 5.3.0 or later, and 5.3.3 or later on Node.js 26.11+; below it the plugin keeps the direct hand-off and warns once. `next-16-mounted-basepath` sets the Next.js `basePath` equal to the `urlPath`, which must keep the direct hand-off. See `src/DESIGN.md`. +- Unit tests must not load `harper` at runtime (`import type` is fine). Importing it outside a Harper process with no Harper config throws while declaring a system table, and `node --test` still reports the file as passing with none of its tests run. Inject Harper objects instead, as `withBuildLock` takes its table through `BuildLockDeps`. +- The `page`-based tests need Playwright's browser binaries (`npx playwright install chromium`); without them they fail instantly with `browserType.launch: Executable doesn't exist`. The `request`-based tests do not. - CI runs on every pull request: `unit-tests.yml` (`npm test`, Node 22/24/26) and `integration-tests.yml` (`npm run test:integration`, Node 22/24/26), plus commitlint. The integration suite needs the machine setup described above, so it is the one to re-run locally; the unit suite is self-contained. diff --git a/DESIGN.md b/DESIGN.md index bafc601..b6e7721 100644 --- a/DESIGN.md +++ b/DESIGN.md @@ -1,3 +1,3 @@ # Design notes -- [src/DESIGN.md](src/DESIGN.md) — immutable production filesystem-cache binding and read-only build seeds. +- [src/DESIGN.md](src/DESIGN.md) — immutable production filesystem-cache binding and read-only build seeds; when a request reaches Next.js through Harper's Node adapter. diff --git a/README.md b/README.md index 8b76a9c..1962733 100644 --- a/README.md +++ b/README.md @@ -194,6 +194,20 @@ The `files` option is now optional with plugins. This make configuration simpler Glob pattern specifying which files Harper should watch for changes. Example: `'/app/*'`. --> +## Serving under a `urlPath` + +Harper's `urlPath` option mounts the application at a path prefix: + +```yaml +'@harperfast/nextjs': + package: '@harperfast/nextjs' + urlPath: /shop +``` + +Set the Next.js [`basePath`](https://nextjs.org/docs/app/api-reference/config/next-config-js/basePath) to the same value. Next.js then generates its links and `/_next/*` asset URLs under the prefix, and the plugin passes requests straight through for Next.js to strip its own `basePath`. + +Without a matching `basePath`, a request under the mount still reaches the right page or route handler, because the plugin hands Next.js the path relative to the mount through Harper's `Request.withNodeAdapter()`. That needs Harper 5.3.0 or later (5.3.3 or later on Node.js 26.11+); on an older Harper the plugin logs a warning and the mounted application does not route. Everything Next.js generates is still relative to the root, outside the mount: asset URLs, links, and redirects (including its trailing-slash redirect). Client-side assets do not load and navigation leaves the mount, so `basePath` is the supported setup. + ## Versioned filesystem cache To keep Next.js's incremental render and data caches on disk while isolating deployments, use `versionedCacheHandlerPath()` in `next.config.mjs` or `next.config.ts`: diff --git a/fixtures/next-16-mounted-basepath/.npmrc b/fixtures/next-16-mounted-basepath/.npmrc new file mode 100644 index 0000000..9cf9495 --- /dev/null +++ b/fixtures/next-16-mounted-basepath/.npmrc @@ -0,0 +1 @@ +package-lock=false \ No newline at end of file diff --git a/fixtures/next-16-mounted-basepath/app/about/page.js b/fixtures/next-16-mounted-basepath/app/about/page.js new file mode 100644 index 0000000..5f2b024 --- /dev/null +++ b/fixtures/next-16-mounted-basepath/app/about/page.js @@ -0,0 +1,3 @@ +export default function Page() { + return

BasePath About

; +} diff --git a/fixtures/next-16-mounted-basepath/app/layout.js b/fixtures/next-16-mounted-basepath/app/layout.js new file mode 100644 index 0000000..34a9b3a --- /dev/null +++ b/fixtures/next-16-mounted-basepath/app/layout.js @@ -0,0 +1,11 @@ +export const metadata = { + title: 'Harper - Next.js App With a basePath Matching Its Mount', +}; + +export default function RootLayout({ children }) { + return ( + + {children} + + ); +} diff --git a/fixtures/next-16-mounted-basepath/app/page.js b/fixtures/next-16-mounted-basepath/app/page.js new file mode 100644 index 0000000..f2a9a1e --- /dev/null +++ b/fixtures/next-16-mounted-basepath/app/page.js @@ -0,0 +1,3 @@ +export default function Page() { + return

BasePath Home

; +} diff --git a/fixtures/next-16-mounted-basepath/config.yaml b/fixtures/next-16-mounted-basepath/config.yaml new file mode 100644 index 0000000..ca71c02 --- /dev/null +++ b/fixtures/next-16-mounted-basepath/config.yaml @@ -0,0 +1,3 @@ +'@harperfast/nextjs': + package: '@harperfast/nextjs' + urlPath: /mounted diff --git a/fixtures/next-16-mounted-basepath/next.config.ts b/fixtures/next-16-mounted-basepath/next.config.ts new file mode 100644 index 0000000..75764da --- /dev/null +++ b/fixtures/next-16-mounted-basepath/next.config.ts @@ -0,0 +1,3 @@ +import { withHarper } from '@harperfast/nextjs'; + +export default withHarper({ basePath: '/mounted' }); diff --git a/fixtures/next-16-mounted-basepath/package.json b/fixtures/next-16-mounted-basepath/package.json new file mode 100644 index 0000000..3f67941 --- /dev/null +++ b/fixtures/next-16-mounted-basepath/package.json @@ -0,0 +1,16 @@ +{ + "name": "next-16-mounted-basepath", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint" + }, + "dependencies": { + "@harperfast/nextjs": "file:../../", + "react": "^19", + "react-dom": "^19", + "next": "^16" + } +} diff --git a/fixtures/next-16-mounted/.npmrc b/fixtures/next-16-mounted/.npmrc new file mode 100644 index 0000000..9cf9495 --- /dev/null +++ b/fixtures/next-16-mounted/.npmrc @@ -0,0 +1 @@ +package-lock=false \ No newline at end of file diff --git a/fixtures/next-16-mounted/app/about/page.js b/fixtures/next-16-mounted/app/about/page.js new file mode 100644 index 0000000..4155839 --- /dev/null +++ b/fixtures/next-16-mounted/app/about/page.js @@ -0,0 +1,3 @@ +export default function Page() { + return

Mounted About

; +} diff --git a/fixtures/next-16-mounted/app/api/echo/route.js b/fixtures/next-16-mounted/app/api/echo/route.js new file mode 100644 index 0000000..b0a6631 --- /dev/null +++ b/fixtures/next-16-mounted/app/api/echo/route.js @@ -0,0 +1,6 @@ +export const dynamic = 'force-dynamic'; + +export async function GET(request) { + const url = new URL(request.url); + return Response.json({ pathname: url.pathname, search: url.search }); +} diff --git a/fixtures/next-16-mounted/app/layout.js b/fixtures/next-16-mounted/app/layout.js new file mode 100644 index 0000000..8c73497 --- /dev/null +++ b/fixtures/next-16-mounted/app/layout.js @@ -0,0 +1,11 @@ +export const metadata = { + title: 'Harper - Mounted Next.js App', +}; + +export default function RootLayout({ children }) { + return ( + + {children} + + ); +} diff --git a/fixtures/next-16-mounted/app/page.js b/fixtures/next-16-mounted/app/page.js new file mode 100644 index 0000000..94acfbd --- /dev/null +++ b/fixtures/next-16-mounted/app/page.js @@ -0,0 +1,3 @@ +export default function Page() { + return

Mounted Home

; +} diff --git a/fixtures/next-16-mounted/config.yaml b/fixtures/next-16-mounted/config.yaml new file mode 100644 index 0000000..ca71c02 --- /dev/null +++ b/fixtures/next-16-mounted/config.yaml @@ -0,0 +1,3 @@ +'@harperfast/nextjs': + package: '@harperfast/nextjs' + urlPath: /mounted diff --git a/fixtures/next-16-mounted/next.config.ts b/fixtures/next-16-mounted/next.config.ts new file mode 100644 index 0000000..ada3f1d --- /dev/null +++ b/fixtures/next-16-mounted/next.config.ts @@ -0,0 +1,3 @@ +import { withHarper } from '@harperfast/nextjs'; + +export default withHarper({}); diff --git a/fixtures/next-16-mounted/package.json b/fixtures/next-16-mounted/package.json new file mode 100644 index 0000000..f34c71b --- /dev/null +++ b/fixtures/next-16-mounted/package.json @@ -0,0 +1,16 @@ +{ + "name": "next-16-mounted", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint" + }, + "dependencies": { + "@harperfast/nextjs": "file:../../", + "react": "^19", + "react-dom": "^19", + "next": "^16" + } +} diff --git a/integrationTests/http2.ts b/integrationTests/http2.ts new file mode 100644 index 0000000..e7722a6 --- /dev/null +++ b/integrationTests/http2.ts @@ -0,0 +1,29 @@ +import { connect } from 'node:http2'; +import { gunzipSync } from 'node:zlib'; + +export const SECURE_PORT = 9927; + +export async function getHttp2(origin: string, path: string, headers: Record = {}) { + const client = connect(origin, { rejectUnauthorized: false }); + try { + return await new Promise<{ status: number; headers: Record; body: Buffer }>((resolve, reject) => { + client.on('error', reject); + const stream = client.request({ ':path': path, ...headers }); + const chunks: Buffer[] = []; + let responseHeaders: Record = {}; + stream.on('response', (received) => (responseHeaders = received)); + stream.on('data', (chunk: Buffer) => chunks.push(chunk)); + stream.on('end', () => + resolve({ status: responseHeaders[':status'], headers: responseHeaders, body: Buffer.concat(chunks) }) + ); + stream.on('error', reject); + stream.end(); + }); + } finally { + client.close(); + } +} + +export function decode(response: { headers: Record; body: Buffer }): string { + return (response.headers['content-encoding'] === 'gzip' ? gunzipSync(response.body) : response.body).toString(); +} diff --git a/integrationTests/next-16-http2.pw.ts b/integrationTests/next-16-http2.pw.ts index e2ac15e..03dea78 100644 --- a/integrationTests/next-16-http2.pw.ts +++ b/integrationTests/next-16-http2.pw.ts @@ -1,36 +1,8 @@ -import { connect } from 'node:http2'; -import { gunzipSync } from 'node:zlib'; import { fixture } from './fixture.ts'; +import { SECURE_PORT, decode, getHttp2 } from './http2.ts'; const { test, expect } = fixture('next-16', { http: { http2: true, mtls: false } }); -const SECURE_PORT = 9927; - -async function getHttp2(origin: string, path: string, headers: Record = {}) { - const client = connect(origin, { rejectUnauthorized: false }); - try { - return await new Promise<{ status: number; headers: Record; body: Buffer }>((resolve, reject) => { - client.on('error', reject); - const stream = client.request({ ':path': path, ...headers }); - const chunks: Buffer[] = []; - let responseHeaders: Record = {}; - stream.on('response', (received) => (responseHeaders = received)); - stream.on('data', (chunk: Buffer) => chunks.push(chunk)); - stream.on('end', () => - resolve({ status: responseHeaders[':status'], headers: responseHeaders, body: Buffer.concat(chunks) }) - ); - stream.on('error', reject); - stream.end(); - }); - } finally { - client.close(); - } -} - -function decode(response: { headers: Record; body: Buffer }): string { - return (response.headers['content-encoding'] === 'gzip' ? gunzipSync(response.body) : response.body).toString(); -} - test('home page renders over HTTP/2', async ({ harper }) => { const response = await getHttp2(`https://${harper.hostname}:${SECURE_PORT}`, '/', { accept: 'text/html', diff --git a/integrationTests/next-16-mounted-basepath.pw.ts b/integrationTests/next-16-mounted-basepath.pw.ts new file mode 100644 index 0000000..3d99791 --- /dev/null +++ b/integrationTests/next-16-mounted-basepath.pw.ts @@ -0,0 +1,30 @@ +import { fixture } from './fixture.ts'; + +const { test, expect } = fixture('next-16-mounted-basepath'); + +test.describe('basePath equal to the urlPath mount', () => { + test('mount root reaches the Next.js home page', async ({ request, harper }) => { + const response = await request.get(`${harper.httpURL}/mounted`); + expect(response.status()).toBe(200); + expect(await response.text()).toContain('BasePath Home'); + }); + + test('a nested page under the mount reaches its Next.js route', async ({ request, harper }) => { + const response = await request.get(`${harper.httpURL}/mounted/about`); + expect(response.status()).toBe(200); + expect(await response.text()).toContain('BasePath About'); + }); + + test('the page and its basePath-prefixed assets load in a browser', async ({ page, harper }) => { + const assets: { url: string; status: number }[] = []; + page.on('response', (response) => { + if (new URL(response.url()).pathname.startsWith('/mounted/_next/static/')) { + assets.push({ url: response.url(), status: response.status() }); + } + }); + await page.goto(`${harper.httpURL}/mounted`); + await expect(page.locator('h1')).toHaveText('BasePath Home'); + expect(assets.length).toBeGreaterThan(0); + expect(assets.filter(({ status }) => status !== 200)).toEqual([]); + }); +}); diff --git a/integrationTests/next-16-mounted.pw.ts b/integrationTests/next-16-mounted.pw.ts new file mode 100644 index 0000000..ef2d2a5 --- /dev/null +++ b/integrationTests/next-16-mounted.pw.ts @@ -0,0 +1,57 @@ +import { fixture } from './fixture.ts'; +import { SECURE_PORT, decode, getHttp2 } from './http2.ts'; + +const { test, expect } = fixture('next-16-mounted', { http: { http2: true, mtls: false } }); + +test.describe('served under a urlPath mount', () => { + test('mount root reaches the Next.js home page', async ({ request, harper }) => { + const response = await request.get(`${harper.httpURL}/mounted`); + expect(response.status()).toBe(200); + expect(await response.text()).toContain('Mounted Home'); + }); + + test('a nested page under the mount reaches its Next.js route', async ({ request, harper }) => { + const response = await request.get(`${harper.httpURL}/mounted/about`); + expect(response.status()).toBe(200); + expect(await response.text()).toContain('Mounted About'); + }); + + test('Next.js sees the mount-relative path, not the requested one', async ({ request, harper }) => { + const response = await request.get(`${harper.httpURL}/mounted/api/echo`); + expect(response.status()).toBe(200); + expect(await response.json()).toEqual({ pathname: '/api/echo', search: '' }); + }); + + test('the query string survives mount stripping', async ({ request, harper }) => { + const response = await request.get(`${harper.httpURL}/mounted/api/echo?q=1`); + expect(response.status()).toBe(200); + expect(await response.json()).toEqual({ pathname: '/api/echo', search: '?q=1' }); + }); + + test('an HTTP/2 request reaches Next.js with its mount-relative path', async ({ harper }) => { + const response = await getHttp2(`https://${harper.hostname}:${SECURE_PORT}`, '/mounted/api/echo?q=1'); + expect(response.status).toBe(200); + expect(JSON.parse(decode(response))).toEqual({ pathname: '/api/echo', search: '?q=1' }); + }); + + test('the mount root renders over HTTP/2 with compression', async ({ harper }) => { + const response = await getHttp2(`https://${harper.hostname}:${SECURE_PORT}`, '/mounted', { + accept: 'text/html', + 'accept-encoding': 'gzip', + }); + expect(response.status).toBe(200); + expect(response.headers['content-encoding']).toBe('gzip'); + expect(decode(response)).toContain('Mounted Home'); + }); + + test('the mount root renders in a browser', async ({ page, harper }) => { + await page.goto(`${harper.httpURL}/mounted`); + await expect(page.locator('h1')).toHaveText('Mounted Home'); + }); +}); + +test('paths outside the mount are not served by Next.js', async ({ request, harper }) => { + const response = await request.get(`${harper.httpURL}/about`); + expect(response.status()).toBe(404); + expect(await response.text()).not.toContain('Mounted About'); +}); diff --git a/package-lock.json b/package-lock.json index ef46a5a..edb3aa1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "@harperfast/integration-testing": "0.7.0", "@playwright/test": "1.62.0", "@types/node": "^26", - "harper": "5.1.23", + "harper": "5.3.4", "next-14": "npm:next@14.2.35", "next-15": "npm:next@15.5.15", "next-16": "npm:next@16.2.4", @@ -31,6 +31,90 @@ } } }, + "node_modules/@cbor-extract/cbor-extract-darwin-arm64": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-arm64/-/cbor-extract-darwin-arm64-2.2.2.tgz", + "integrity": "sha512-ZKZ/F8US7JR92J4DMct6cLW/Y66o2K576+zjlEN/MevH70bFIsB10wkZEQPLzl2oNh2SMGy55xpJ9JoBRl5DOA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@cbor-extract/cbor-extract-darwin-x64": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-x64/-/cbor-extract-darwin-x64-2.2.2.tgz", + "integrity": "sha512-32b1mgc+P61Js+KW9VZv/c+xRw5EfmOcPx990JbCBSkYJFY0l25VinvyyWfl+3KjibQmAcYwmyzKF9J4DyKP/Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@cbor-extract/cbor-extract-linux-arm": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm/-/cbor-extract-linux-arm-2.2.2.tgz", + "integrity": "sha512-tNg0za41TpQfkhWjptD+0gSD2fggMiDCSacuIeELyb2xZhr7PrhPe5h66Jc67B/5dmpIhI2QOUtv4SBsricyYQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@cbor-extract/cbor-extract-linux-arm64": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm64/-/cbor-extract-linux-arm64-2.2.2.tgz", + "integrity": "sha512-wfqgzqCAy/Vn8i6WVIh7qZd0DdBFaWBjPdB6ma+Wihcjv0gHqD/mw3ouVv7kbbUNrab6dKEx/w3xQZEdeXIlzg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@cbor-extract/cbor-extract-linux-x64": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-x64/-/cbor-extract-linux-x64-2.2.2.tgz", + "integrity": "sha512-rpiLnVEsqtPJ+mXTdx1rfz4RtUGYIUg2rUAZgd1KjiC1SehYUSkJN7Yh+aVfSjvCGtVP0/bfkQkXpPXKbmSUaA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@cbor-extract/cbor-extract-win32-x64": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-win32-x64/-/cbor-extract-win32-x64-2.2.2.tgz", + "integrity": "sha512-dI+9P7cfWxkTQ+oE+7Aa6onEn92PHgfWXZivjNheCRmTBDBf2fx6RyTi0cmgpYLnD1KLZK9ZYrMxaPZ4oiXhGA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@emnapi/runtime": { "version": "1.11.3", "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.3.tgz", @@ -41,288 +125,360 @@ "tslib": "^2.4.0" } }, - "node_modules/@harperfast/integration-testing": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@harperfast/integration-testing/-/integration-testing-0.7.0.tgz", - "integrity": "sha512-uLa+aYJpKWNzODqny9zBfsZa/5SL/qEMq3x9RxWjZYtVcKUtq76rzfc5mNjdpBPv+3MUmy8DALzF7ajShbKJjA==", + "node_modules/@epic-web/invariant": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@epic-web/invariant/-/invariant-1.0.0.tgz", + "integrity": "sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@harperfast/extended-iterable": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@harperfast/extended-iterable/-/extended-iterable-1.0.5.tgz", + "integrity": "sha512-4ScXlphaKEa49RpHmqwATq9QI9aUTdWVYDlJkzxhsD7ShJP+pHCYLznMO9n/wREY8jPjRZ59wLJY6HM5yB5Gkw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@harperfast/fulltext": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@harperfast/fulltext/-/fulltext-0.5.0.tgz", + "integrity": "sha512-rH2Q3LJLHPhxi8muzPLg00STbO7RFIqAgLA3tpBzSRdsJVuCV9ZMO2StlSZnUAPMnF5wF9SieuhHT9wi1vINBQ==", "dev": true, "license": "Apache-2.0", - "dependencies": { - "tar-fs": "3.1.2" - }, - "bin": { - "harper-integration-test-run": "dist/run.js", - "harper-integration-test-setup-loopback": "scripts/setup-loopback.sh" - }, + "optional": true, "engines": { - "node": ">=20" - }, - "peerDependencies": { - "harper": "^5.0.0" + "node": "^22.18.0 || >=24.0.0" }, - "peerDependenciesMeta": { - "harper": { - "optional": false - } + "optionalDependencies": { + "@harperfast/fulltext-darwin-arm64": "0.5.0", + "@harperfast/fulltext-linux-arm64-gnu": "0.5.0", + "@harperfast/fulltext-linux-x64-gnu": "0.5.0", + "@harperfast/fulltext-win32-x64-msvc": "0.5.0" } }, - "node_modules/@img/colour": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz", - "integrity": "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==", - "license": "MIT", + "node_modules/@harperfast/fulltext-darwin-arm64": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@harperfast/fulltext-darwin-arm64/-/fulltext-darwin-arm64-0.5.0.tgz", + "integrity": "sha512-0OtKonopmXaP0/9wvpCuo/sklNxOEiQWnVf7aUsthH0B3sKUYT7HGnGtYkzqqUxdsFNlHPBr3IShyrWx9nAWYQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=18" + "node": "^22.18.0 || >=24.0.0" } }, - "node_modules/@img/sharp-darwin-arm64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz", - "integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==", + "node_modules/@harperfast/fulltext-linux-arm64-gnu": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@harperfast/fulltext-linux-arm64-gnu/-/fulltext-linux-arm64-gnu-0.5.0.tgz", + "integrity": "sha512-QfNlYUntkal56jZejQ8cbSj8qvUlYv21V2j9xVctkFv+gmfn892kdU4oCg7dR7Qift8/huKUOyL/eGO0qYbgGw==", "cpu": [ "arm64" ], + "dev": true, + "libc": [ + "glibc" + ], "license": "Apache-2.0", "optional": true, "os": [ - "darwin" + "linux" ], "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.2.4" + "node": "^22.18.0 || >=24.0.0" } }, - "node_modules/@img/sharp-darwin-x64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz", - "integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==", + "node_modules/@harperfast/fulltext-linux-x64-gnu": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@harperfast/fulltext-linux-x64-gnu/-/fulltext-linux-x64-gnu-0.5.0.tgz", + "integrity": "sha512-+g5LMXhtODen+pGgmyTxcCuUAlk2NTeFOvr6duqUBVx542Hd/uDqPC9tUMjL12LJ9ci3LFqGwgW3FkxGedT7KA==", "cpu": [ "x64" ], + "dev": true, + "libc": [ + "glibc" + ], "license": "Apache-2.0", "optional": true, "os": [ - "darwin" + "linux" ], "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.2.4" + "node": "^22.18.0 || >=24.0.0" } }, - "node_modules/@img/sharp-freebsd-wasm32": { - "version": "0.35.5", - "resolved": "https://registry.npmjs.org/@img/sharp-freebsd-wasm32/-/sharp-freebsd-wasm32-0.35.5.tgz", - "integrity": "sha512-Y/z91nEZ4uIBX5X3nfTovjU9lHNKFYbL2lpHCLVNmXQK03VIZvXBBt0KxbPGp2SdGSF+2mQU4e+hQaWOt86iAw==", + "node_modules/@harperfast/fulltext-win32-x64-msvc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@harperfast/fulltext-win32-x64-msvc/-/fulltext-win32-x64-msvc-0.5.0.tgz", + "integrity": "sha512-PseSz47BMcIOMQdYUFoAUqAEyeHzceX+QQFun0wVCu/PtERPvtPWzzZxV4ofySzz+c9FkJHTSDu4XbAZhkaqkA==", + "cpu": [ + "x64" + ], "dev": true, "license": "Apache-2.0", "optional": true, "os": [ - "freebsd" + "win32" ], - "dependencies": { - "@img/sharp-wasm32": "0.35.5" - }, "engines": { - "node": ">=20.9.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" + "node": "^22.18.0 || >=24.0.0" } }, - "node_modules/@img/sharp-freebsd-wasm32/node_modules/@img/sharp-wasm32": { - "version": "0.35.5", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.35.5.tgz", - "integrity": "sha512-Ptsga1su4tQx+LLF1ECS9U6nz5kmrXKo6XVbtR48Ke3ZRxxgaWBu7IDtEe1quo8hiupwm6WFqxVlXaSf7IINGQ==", + "node_modules/@harperfast/hnsw": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@harperfast/hnsw/-/hnsw-0.4.0.tgz", + "integrity": "sha512-3Fp4S7Y9repL97W/OnZu6s7zQr1Gysm7+3wGMY5J/O2jRezWkx2AMfT0/WQnEZdx+m1tCjUxTzL4GrQCpODt1g==", "dev": true, - "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "hasInstallScript": true, + "license": "Apache-2.0", "optional": true, - "dependencies": { - "@emnapi/runtime": "^1.11.3" - }, "engines": { - "node": ">=20.9.0" + "node": ">=18" }, - "funding": { - "url": "https://opencollective.com/libvips" + "optionalDependencies": { + "@harperfast/hnsw-darwin-arm64": "0.4.0", + "@harperfast/hnsw-linux-arm64-glibc": "0.4.0", + "@harperfast/hnsw-linux-x64-glibc": "0.4.0", + "@harperfast/hnsw-win32-x64": "0.4.0" } }, - "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz", - "integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==", + "node_modules/@harperfast/hnsw-darwin-arm64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@harperfast/hnsw-darwin-arm64/-/hnsw-darwin-arm64-0.4.0.tgz", + "integrity": "sha512-hj310im3MIUTUfIFZMnyIWjR3o7cSq9XKdJhEPgmOwsytF/KZChHGvnSYY9nZJ60Drozd6jp+ihGtlwICXJsfw==", "cpu": [ "arm64" ], - "license": "LGPL-3.0-or-later", + "dev": true, + "license": "Apache-2.0", "optional": true, "os": [ "darwin" ], - "funding": { - "url": "https://opencollective.com/libvips" + "engines": { + "node": ">=18" } }, - "node_modules/@img/sharp-libvips-darwin-x64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz", - "integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==", + "node_modules/@harperfast/hnsw-linux-arm64-glibc": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@harperfast/hnsw-linux-arm64-glibc/-/hnsw-linux-arm64-glibc-0.4.0.tgz", + "integrity": "sha512-/wGj5jgAPPBN/mbwZkEmrJLan0gJ+4+7yNmQ8ycmCQgzKDXK2tSQKy0MSc75oBYhSC67nJzkAZeaD6og6mLMpQ==", "cpu": [ - "x64" + "arm64" ], - "license": "LGPL-3.0-or-later", + "dev": true, + "libc": [ + "glibc" + ], + "license": "Apache-2.0", "optional": true, "os": [ - "darwin" + "linux" ], - "funding": { - "url": "https://opencollective.com/libvips" + "engines": { + "node": ">=18" } }, - "node_modules/@img/sharp-libvips-linux-arm": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz", - "integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==", + "node_modules/@harperfast/hnsw-linux-x64-glibc": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@harperfast/hnsw-linux-x64-glibc/-/hnsw-linux-x64-glibc-0.4.0.tgz", + "integrity": "sha512-qSDf226/KrA42P25mKI1IjshOUFZVlNoglxbUTsKKRbpYT6XbXabtg6K3AtH/KM4/kAGigH70HDRPa8Jes7zdw==", "cpu": [ - "arm" + "x64" ], - "license": "LGPL-3.0-or-later", + "dev": true, + "libc": [ + "glibc" + ], + "license": "Apache-2.0", "optional": true, "os": [ "linux" ], - "funding": { - "url": "https://opencollective.com/libvips" + "engines": { + "node": ">=18" } }, - "node_modules/@img/sharp-libvips-linux-arm64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz", - "integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==", + "node_modules/@harperfast/hnsw-win32-x64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@harperfast/hnsw-win32-x64/-/hnsw-win32-x64-0.4.0.tgz", + "integrity": "sha512-4DUSTjmswEA+cEGhfALByDf/8qT67newuebJ3HeXaPS2IztppmhuoJfQ+GUeeAIay+ejd7hv2LH7bl1JU4+jIA==", "cpu": [ - "arm64" + "x64" ], - "license": "LGPL-3.0-or-later", + "dev": true, + "license": "Apache-2.0", "optional": true, "os": [ - "linux" + "win32" ], - "funding": { - "url": "https://opencollective.com/libvips" + "engines": { + "node": ">=18" } }, - "node_modules/@img/sharp-libvips-linux-ppc64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz", - "integrity": "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==", - "cpu": [ - "ppc64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" + "node_modules/@harperfast/integration-testing": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@harperfast/integration-testing/-/integration-testing-0.7.0.tgz", + "integrity": "sha512-uLa+aYJpKWNzODqny9zBfsZa/5SL/qEMq3x9RxWjZYtVcKUtq76rzfc5mNjdpBPv+3MUmy8DALzF7ajShbKJjA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tar-fs": "3.1.2" + }, + "bin": { + "harper-integration-test-run": "dist/run.js", + "harper-integration-test-setup-loopback": "scripts/setup-loopback.sh" + }, + "engines": { + "node": ">=20" + }, + "peerDependencies": { + "harper": "^5.0.0" + }, + "peerDependenciesMeta": { + "harper": { + "optional": false + } } }, - "node_modules/@img/sharp-libvips-linux-riscv64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz", - "integrity": "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==", + "node_modules/@harperfast/rocksdb-js": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@harperfast/rocksdb-js/-/rocksdb-js-2.11.0.tgz", + "integrity": "sha512-gTi21KHzRtL8rJN8KEMtc/7DFdgwjtUwo2onjhs2DflHQpcWTH4BNkKo8VgUn9IbbCn5c1ZBtqvD2F9lBb6haw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@harperfast/extended-iterable": "^1.0.3", + "msgpackr": "^2.0.6", + "ordered-binary": "^1.6.1" + }, + "bin": { + "rocksdb-js": "bin/rocksdb-js.mjs" + }, + "engines": { + "node": "^22.18.0 || >=24.0.0" + }, + "optionalDependencies": { + "@harperfast/rocksdb-js-darwin-arm64": "2.11.0", + "@harperfast/rocksdb-js-darwin-x64": "2.11.0", + "@harperfast/rocksdb-js-linux-arm64-glibc": "2.11.0", + "@harperfast/rocksdb-js-linux-arm64-musl": "2.11.0", + "@harperfast/rocksdb-js-linux-x64-glibc": "2.11.0", + "@harperfast/rocksdb-js-linux-x64-musl": "2.11.0", + "@harperfast/rocksdb-js-win32-arm64": "2.11.0", + "@harperfast/rocksdb-js-win32-x64": "2.11.0" + } + }, + "node_modules/@harperfast/rocksdb-js-darwin-arm64": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@harperfast/rocksdb-js-darwin-arm64/-/rocksdb-js-darwin-arm64-2.11.0.tgz", + "integrity": "sha512-MRiNs+bp7BOyYY+zCfecafQLelgmpNfyouVGJl2HD7H8phyicQ+YGD3LFgZRMMQTMGnVSSoTaMJXZV4A/31i4A==", "cpu": [ - "riscv64" + "arm64" ], - "license": "LGPL-3.0-or-later", + "dev": true, + "license": "Apache-2.0", "optional": true, "os": [ - "linux" + "darwin" ], - "funding": { - "url": "https://opencollective.com/libvips" + "engines": { + "node": "^22.18.0 || >=24.0.0" } }, - "node_modules/@img/sharp-libvips-linux-s390x": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz", - "integrity": "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==", + "node_modules/@harperfast/rocksdb-js-darwin-x64": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@harperfast/rocksdb-js-darwin-x64/-/rocksdb-js-darwin-x64-2.11.0.tgz", + "integrity": "sha512-ESWQAx1aD9idWo+gtQZoYvNcQQh3aiLhzovNAW+5fLWzIwJLe/yBT3LnzAjIVGx92Vnc6X1QkV1wudqygsK9jg==", "cpu": [ - "s390x" + "x64" ], - "license": "LGPL-3.0-or-later", + "dev": true, + "license": "Apache-2.0", "optional": true, "os": [ - "linux" + "darwin" ], - "funding": { - "url": "https://opencollective.com/libvips" + "engines": { + "node": "^22.18.0 || >=24.0.0" } }, - "node_modules/@img/sharp-libvips-linux-x64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz", - "integrity": "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==", + "node_modules/@harperfast/rocksdb-js-linux-arm64-glibc": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@harperfast/rocksdb-js-linux-arm64-glibc/-/rocksdb-js-linux-arm64-glibc-2.11.0.tgz", + "integrity": "sha512-17ecIc+5/relPJEv85LSgV7xEf3pktQxy/V2j71Un2BOgLbXyENBbvXEIXhDX0aF5f7A3ZsBdijz0Y0paj/BzQ==", "cpu": [ - "x64" + "arm64" ], - "license": "LGPL-3.0-or-later", + "dev": true, + "libc": [ + "glibc" + ], + "license": "Apache-2.0", "optional": true, "os": [ "linux" ], - "funding": { - "url": "https://opencollective.com/libvips" + "engines": { + "node": "^22.18.0 || >=24.0.0" } }, - "node_modules/@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz", - "integrity": "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==", + "node_modules/@harperfast/rocksdb-js-linux-arm64-musl": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@harperfast/rocksdb-js-linux-arm64-musl/-/rocksdb-js-linux-arm64-musl-2.11.0.tgz", + "integrity": "sha512-EkcWfwFShsFsUBgg+TgxLgdanxvBn+fqI5BR6Ucd1dsGN3RIxp67xAjmbWdnOTdrzXDgAvWor+wbyZE7Z6SmQA==", "cpu": [ "arm64" ], - "license": "LGPL-3.0-or-later", + "dev": true, + "libc": [ + "musl" + ], + "license": "Apache-2.0", "optional": true, "os": [ "linux" ], - "funding": { - "url": "https://opencollective.com/libvips" + "engines": { + "node": "^22.18.0 || >=24.0.0" } }, - "node_modules/@img/sharp-libvips-linuxmusl-x64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz", - "integrity": "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==", + "node_modules/@harperfast/rocksdb-js-linux-x64-glibc": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@harperfast/rocksdb-js-linux-x64-glibc/-/rocksdb-js-linux-x64-glibc-2.11.0.tgz", + "integrity": "sha512-lYLLrQQ+VxZqAsampUhiTK0uql/Nyd9DYhhzVnchaTBRhvBVxViPOWmvQZJWtLK/V9wRHIfo85iuYZnFTxfJew==", "cpu": [ "x64" ], - "license": "LGPL-3.0-or-later", + "dev": true, + "libc": [ + "glibc" + ], + "license": "Apache-2.0", "optional": true, "os": [ "linux" ], - "funding": { - "url": "https://opencollective.com/libvips" + "engines": { + "node": "^22.18.0 || >=24.0.0" } }, - "node_modules/@img/sharp-linux-arm": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz", - "integrity": "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==", + "node_modules/@harperfast/rocksdb-js-linux-x64-musl": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@harperfast/rocksdb-js-linux-x64-musl/-/rocksdb-js-linux-x64-musl-2.11.0.tgz", + "integrity": "sha512-LTqVTXuu6DRudjxMFrYWhCsrIOEurT1ikTeOBg8+iK8GYvfGmSG2qlf9zS7aTFMDEY+3TJQLJjsRMtD22XoTfg==", "cpu": [ - "arm" + "x64" + ], + "dev": true, + "libc": [ + "musl" ], "license": "Apache-2.0", "optional": true, @@ -330,92 +486,64 @@ "linux" ], "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm": "1.2.4" + "node": "^22.18.0 || >=24.0.0" } }, - "node_modules/@img/sharp-linux-arm64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz", - "integrity": "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==", + "node_modules/@harperfast/rocksdb-js-win32-arm64": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@harperfast/rocksdb-js-win32-arm64/-/rocksdb-js-win32-arm64-2.11.0.tgz", + "integrity": "sha512-p5CzDgFQGWZ2xxFs0CCqRIWfj5LVwda6ybEUJ9egocgdop/36v1EiZccWPPwPBTQr7VoQdemI1KLZTh/C/aZwA==", "cpu": [ "arm64" ], + "dev": true, "license": "Apache-2.0", "optional": true, "os": [ - "linux" + "win32" ], "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm64": "1.2.4" + "node": "^22.18.0 || >=24.0.0" } }, - "node_modules/@img/sharp-linux-ppc64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz", - "integrity": "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==", + "node_modules/@harperfast/rocksdb-js-win32-x64": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/@harperfast/rocksdb-js-win32-x64/-/rocksdb-js-win32-x64-2.11.0.tgz", + "integrity": "sha512-CfWwNVYSMLimp7L8eDlhfAEUt8ru39snr6yh5QSLKo6SXeDsfim512YYJUlmfEp91YFyZOKbZjYJLJWBrliZ7Q==", "cpu": [ - "ppc64" + "x64" ], + "dev": true, "license": "Apache-2.0", "optional": true, "os": [ - "linux" + "win32" ], "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-ppc64": "1.2.4" + "node": "^22.18.0 || >=24.0.0" } }, - "node_modules/@img/sharp-linux-riscv64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz", - "integrity": "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==", - "cpu": [ - "riscv64" - ], - "license": "Apache-2.0", + "node_modules/@img/colour": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz", + "integrity": "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==", + "license": "MIT", "optional": true, - "os": [ - "linux" - ], "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-riscv64": "1.2.4" + "node": ">=18" } }, - "node_modules/@img/sharp-linux-s390x": { + "node_modules/@img/sharp-darwin-arm64": { "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz", - "integrity": "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz", + "integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==", "cpu": [ - "s390x" + "arm64" ], "license": "Apache-2.0", "optional": true, "os": [ - "linux" + "darwin" ], "engines": { "node": "^18.17.0 || ^20.3.0 || >=21.0.0" @@ -424,20 +552,20 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-s390x": "1.2.4" + "@img/sharp-libvips-darwin-arm64": "1.2.4" } }, - "node_modules/@img/sharp-linux-x64": { + "node_modules/@img/sharp-darwin-x64": { "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz", - "integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz", + "integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==", "cpu": [ "x64" ], "license": "Apache-2.0", "optional": true, "os": [ - "linux" + "darwin" ], "engines": { "node": "^18.17.0 || ^20.3.0 || >=21.0.0" @@ -446,93 +574,30 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.2.4" + "@img/sharp-libvips-darwin-x64": "1.2.4" } }, - "node_modules/@img/sharp-linuxmusl-arm64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz", - "integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==", - "cpu": [ - "arm64" - ], + "node_modules/@img/sharp-freebsd-wasm32": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-freebsd-wasm32/-/sharp-freebsd-wasm32-0.35.5.tgz", + "integrity": "sha512-Y/z91nEZ4uIBX5X3nfTovjU9lHNKFYbL2lpHCLVNmXQK03VIZvXBBt0KxbPGp2SdGSF+2mQU4e+hQaWOt86iAw==", + "dev": true, "license": "Apache-2.0", "optional": true, "os": [ - "linux" + "freebsd" ], + "dependencies": { + "@img/sharp-wasm32": "0.35.5" + }, "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">=20.9.0" }, "funding": { "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" } }, - "node_modules/@img/sharp-linuxmusl-x64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz", - "integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.2.4" - } - }, - "node_modules/@img/sharp-wasm32": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz", - "integrity": "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==", - "cpu": [ - "wasm32" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", - "optional": true, - "dependencies": { - "@emnapi/runtime": "^1.7.0" - }, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-webcontainers-wasm32": { - "version": "0.35.5", - "resolved": "https://registry.npmjs.org/@img/sharp-webcontainers-wasm32/-/sharp-webcontainers-wasm32-0.35.5.tgz", - "integrity": "sha512-hfhF/FmoQyTUkA0bIKFOtw536BQSeBMe6BF6QyWlrPxT754+TFLaZ7sKKTfvvM0yJgKgaYTwnFCIZ/GuDw5SUA==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@img/sharp-wasm32": "0.35.5" - }, - "engines": { - "node": ">=20.9.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-webcontainers-wasm32/node_modules/@img/sharp-wasm32": { + "node_modules/@img/sharp-freebsd-wasm32/node_modules/@img/sharp-wasm32": { "version": "0.35.5", "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.35.5.tgz", "integrity": "sha512-Ptsga1su4tQx+LLF1ECS9U6nz5kmrXKo6XVbtR48Ke3ZRxxgaWBu7IDtEe1quo8hiupwm6WFqxVlXaSf7IINGQ==", @@ -549,5433 +614,1622 @@ "url": "https://opencollective.com/libvips" } }, - "node_modules/@img/sharp-win32-arm64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz", - "integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==", + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz", + "integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==", "cpu": [ "arm64" ], - "license": "Apache-2.0 AND LGPL-3.0-or-later", + "license": "LGPL-3.0-or-later", "optional": true, "os": [ - "win32" + "darwin" ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, "funding": { "url": "https://opencollective.com/libvips" } }, - "node_modules/@img/sharp-win32-ia32": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz", - "integrity": "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==", + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz", + "integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==", "cpu": [ - "ia32" + "x64" ], - "license": "Apache-2.0 AND LGPL-3.0-or-later", + "license": "LGPL-3.0-or-later", "optional": true, "os": [ - "win32" + "darwin" ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, "funding": { "url": "https://opencollective.com/libvips" } }, - "node_modules/@img/sharp-win32-x64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz", - "integrity": "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==", + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz", + "integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==", "cpu": [ - "x64" + "arm" ], - "license": "Apache-2.0 AND LGPL-3.0-or-later", + "license": "LGPL-3.0-or-later", "optional": true, "os": [ - "win32" + "linux" ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, "funding": { "url": "https://opencollective.com/libvips" } }, - "node_modules/@next/env": { - "version": "16.2.4", - "resolved": "https://registry.npmjs.org/@next/env/-/env-16.2.4.tgz", - "integrity": "sha512-dKkkOzOSwFYe5RX6y26fZgkSpVAlIOJKQHIiydQcrWH6y/97+RceSOAdjZ14Qa3zLduVUy0TXcn+EiM6t4rPgw==", - "license": "MIT" - }, - "node_modules/@next/swc-darwin-arm64": { - "version": "16.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.2.4.tgz", - "integrity": "sha512-OXTFFox5EKN1Ym08vfrz+OXxmCcEjT4SFMbNRsWZE99dMqt2Kcusl5MqPXcW232RYkMLQTy0hqgAMEsfEd/l2A==", + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz", + "integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==", "cpu": [ "arm64" ], - "license": "MIT", + "license": "LGPL-3.0-or-later", "optional": true, "os": [ - "darwin" + "linux" ], - "engines": { - "node": ">= 10" + "funding": { + "url": "https://opencollective.com/libvips" } }, - "node_modules/@next/swc-darwin-x64": { - "version": "16.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-16.2.4.tgz", - "integrity": "sha512-XhpVnUfmYWvD3YrXu55XdcAkQtOnvaI6wtQa8fuF5fGoKoxIUZ0kWPtcOfqJEWngFF/lOS9l3+O9CcownhiQxQ==", + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz", + "integrity": "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==", "cpu": [ - "x64" + "ppc64" ], - "license": "MIT", + "license": "LGPL-3.0-or-later", "optional": true, "os": [ - "darwin" + "linux" ], - "engines": { - "node": ">= 10" + "funding": { + "url": "https://opencollective.com/libvips" } }, - "node_modules/@next/swc-linux-arm64-gnu": { - "version": "16.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.2.4.tgz", - "integrity": "sha512-Mx/tjlNA3G8kg14QvuGAJ4xBwPk1tUHq56JxZ8CXnZwz1Etz714soCEzGQQzVMz4bEnGPowzkV6Xrp6wAkEWOQ==", + "node_modules/@img/sharp-libvips-linux-riscv64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz", + "integrity": "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==", "cpu": [ - "arm64" + "riscv64" ], - "license": "MIT", + "license": "LGPL-3.0-or-later", "optional": true, "os": [ "linux" ], - "engines": { - "node": ">= 10" + "funding": { + "url": "https://opencollective.com/libvips" } }, - "node_modules/@next/swc-linux-arm64-musl": { - "version": "16.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.2.4.tgz", - "integrity": "sha512-iVMMp14514u7Nup2umQS03nT/bN9HurK8ufylC3FZNykrwjtx7V1A7+4kvhbDSCeonTVqV3Txnv0Lu+m2oDXNg==", + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz", + "integrity": "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==", "cpu": [ - "arm64" + "s390x" ], - "license": "MIT", + "license": "LGPL-3.0-or-later", "optional": true, "os": [ "linux" ], - "engines": { - "node": ">= 10" + "funding": { + "url": "https://opencollective.com/libvips" } }, - "node_modules/@next/swc-linux-x64-gnu": { - "version": "16.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.2.4.tgz", - "integrity": "sha512-EZOvm1aQWgnI/N/xcWOlnS3RQBk0VtVav5Zo7n4p0A7UKyTDx047k8opDbXgBpHl4CulRqRfbw3QrX2w5UOXMQ==", + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz", + "integrity": "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==", "cpu": [ "x64" ], - "license": "MIT", + "license": "LGPL-3.0-or-later", "optional": true, "os": [ "linux" ], - "engines": { - "node": ">= 10" + "funding": { + "url": "https://opencollective.com/libvips" } }, - "node_modules/@next/swc-linux-x64-musl": { - "version": "16.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.2.4.tgz", - "integrity": "sha512-h9FxsngCm9cTBf71AR4fGznDEDx1hS7+kSEiIRjq5kO1oXWm07DxVGZjCvk0SGx7TSjlUqhI8oOyz7NfwAdPoA==", + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz", + "integrity": "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==", "cpu": [ - "x64" + "arm64" ], - "license": "MIT", + "license": "LGPL-3.0-or-later", "optional": true, "os": [ "linux" ], - "engines": { - "node": ">= 10" + "funding": { + "url": "https://opencollective.com/libvips" } }, - "node_modules/@next/swc-win32-arm64-msvc": { - "version": "16.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.2.4.tgz", - "integrity": "sha512-3NdJV5OXMSOeJYijX+bjaLge3mJBlh4ybydbT4GFoB/2hAojWHtMhl3CYlYoMrjPuodp0nzFVi4Tj2+WaMg+Ow==", + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz", + "integrity": "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==", "cpu": [ - "arm64" + "x64" ], - "license": "MIT", + "license": "LGPL-3.0-or-later", "optional": true, "os": [ - "win32" + "linux" ], - "engines": { - "node": ">= 10" + "funding": { + "url": "https://opencollective.com/libvips" } }, - "node_modules/@next/swc-win32-ia32-msvc": { - "version": "14.2.33", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.33.tgz", - "integrity": "sha512-pc9LpGNKhJ0dXQhZ5QMmYxtARwwmWLpeocFmVG5Z0DzWq5Uf0izcI8tLc+qOpqxO1PWqZ5A7J1blrUIKrIFc7Q==", + "node_modules/@img/sharp-linux-arm": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz", + "integrity": "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==", "cpu": [ - "ia32" + "arm" ], - "dev": true, - "license": "MIT", + "license": "Apache-2.0", "optional": true, "os": [ - "win32" + "linux" ], "engines": { - "node": ">= 10" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.2.4" } }, - "node_modules/@next/swc-win32-x64-msvc": { - "version": "16.2.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.2.4.tgz", - "integrity": "sha512-kMVGgsqhO5YTYODD9IPGGhA6iprWidQckK3LmPeW08PIFENRmgfb4MjXHO+p//d+ts2rpjvK5gXWzXSMrPl9cw==", + "node_modules/@img/sharp-linux-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz", + "integrity": "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==", "cpu": [ - "x64" + "arm64" ], - "license": "MIT", + "license": "Apache-2.0", "optional": true, "os": [ - "win32" + "linux" ], "engines": { - "node": ">= 10" - } - }, - "node_modules/@playwright/test": { - "version": "1.62.0", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.62.0.tgz", - "integrity": "sha512-9zOJ6ZQRAena31MpOH9VSzIz8Ou3YJ/wtY/eQm5T2uhfhG7/U3COrMS8xOtUrZrp9OgdmzEnIYODye3nY1VqzA==", - "devOptional": true, - "license": "Apache-2.0", - "dependencies": { - "playwright": "1.62.0" - }, - "bin": { - "playwright": "cli.js" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, - "engines": { - "node": ">=20" - } - }, - "node_modules/@swc/counter": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", - "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/@swc/helpers": { - "version": "0.5.15", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", - "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.8.0" - } - }, - "node_modules/@types/node": { - "version": "26.1.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-26.1.1.tgz", - "integrity": "sha512-nxAkRSVkN1Y0JC1W8ky/fTfkGsMmcrRsbx+3XoZE+rMOX71kLYTV7fLXpqud1GpbpP5TuffXFqfX7fH2GgZREw==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~8.3.0" - } - }, - "node_modules/bare-events": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz", - "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==", - "dev": true, - "license": "Apache-2.0", - "peerDependencies": { - "bare-abort-controller": "*" + "funding": { + "url": "https://opencollective.com/libvips" }, - "peerDependenciesMeta": { - "bare-abort-controller": { - "optional": true - } + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.2.4" } }, - "node_modules/bare-fs": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.7.1.tgz", - "integrity": "sha512-WDRsyVN52eAx/lBamKD6uyw8H4228h/x0sGGGegOamM2cd7Pag88GfMQalobXI+HaEUxpCkbKQUDOQqt9wawRw==", - "dev": true, + "node_modules/@img/sharp-linux-ppc64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz", + "integrity": "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==", + "cpu": [ + "ppc64" + ], "license": "Apache-2.0", - "dependencies": { - "bare-events": "^2.5.4", - "bare-path": "^3.0.0", - "bare-stream": "^2.6.4", - "bare-url": "^2.2.2", - "fast-fifo": "^1.3.2" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "bare": ">=1.16.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, - "peerDependencies": { - "bare-buffer": "*" + "funding": { + "url": "https://opencollective.com/libvips" }, - "peerDependenciesMeta": { - "bare-buffer": { - "optional": true - } + "optionalDependencies": { + "@img/sharp-libvips-linux-ppc64": "1.2.4" } }, - "node_modules/bare-os": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.9.0.tgz", - "integrity": "sha512-JTjuZyNIDpw+GytMO4a6TK1VXdVKKJr6DRxEHasyuYyShV2deuiHJK/ahGZlebc+SG0/wJCB9XK8gprBGDFi/Q==", - "dev": true, + "node_modules/@img/sharp-linux-riscv64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz", + "integrity": "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==", + "cpu": [ + "riscv64" + ], "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], "engines": { - "bare": ">=1.14.0" - } - }, - "node_modules/bare-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", - "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-os": "^3.0.1" - } - }, - "node_modules/bare-stream": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.13.1.tgz", - "integrity": "sha512-Vp0cnjYyrEC4whYTymQ+YZi6pBpfiICZO3cfRG8sy67ZNWe951urv1x4eW1BKNngw3U+3fPYb5JQvHbCtxH7Ow==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "streamx": "^2.25.0", - "teex": "^1.0.1" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, - "peerDependencies": { - "bare-abort-controller": "*", - "bare-buffer": "*", - "bare-events": "*" + "funding": { + "url": "https://opencollective.com/libvips" }, - "peerDependenciesMeta": { - "bare-abort-controller": { - "optional": true - }, - "bare-buffer": { - "optional": true - }, - "bare-events": { - "optional": true - } - } - }, - "node_modules/bare-url": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.4.2.tgz", - "integrity": "sha512-/9a2j4ac6ckpmAHvod/ob7x439OAHst/drc2Clnq+reRYd/ovddwcF4LfoxHyNk5AuGBnPg+HqFjmE/Zpq6v0A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-path": "^3.0.0" + "optionalDependencies": { + "@img/sharp-libvips-linux-riscv64": "1.2.4" } }, - "node_modules/baseline-browser-mapping": { - "version": "2.10.24", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.24.tgz", - "integrity": "sha512-I2NkZOOrj2XuguvWCK6OVh9GavsNjZjK908Rq3mIBK25+GD8vPX5w2WdxVqnQ7xx3SrZJiCiZFu+/Oz50oSYSA==", + "node_modules/@img/sharp-linux-s390x": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz", + "integrity": "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==", + "cpu": [ + "s390x" + ], "license": "Apache-2.0", - "bin": { - "baseline-browser-mapping": "dist/cli.cjs" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dev": true, - "dependencies": { - "streamsearch": "^1.1.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, - "engines": { - "node": ">=10.16.0" + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.2.4" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001791", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001791.tgz", - "integrity": "sha512-yk0l/YSrOnFZk3UROpDLQD9+kC1l4meK/wed583AXrzoarMGJcbRi2Q4RaUYbKxYAsZ8sWmaSa/DsLmdBeI1vQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } + "node_modules/@img/sharp-linux-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz", + "integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==", + "cpu": [ + "x64" ], - "license": "CC-BY-4.0" - }, - "node_modules/client-only": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", - "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", - "license": "MIT" - }, - "node_modules/detect-libc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", - "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", "license": "Apache-2.0", "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.2.4" } }, - "node_modules/end-of-stream": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", - "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/events-universal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz", - "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-events": "^2.7.0" - } - }, - "node_modules/fast-fifo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/harper": { - "version": "5.1.23", - "resolved": "https://registry.npmjs.org/harper/-/harper-5.1.23.tgz", - "integrity": "sha512-GlQsABq7nzPgvGJrJfGlge/TbxwiZSA0/2InSDlVII9Sx2oFrXaJ8voiWff+cjbfdC7PR17VFtzxfWX8MPlwnw==", - "dev": true, - "hasShrinkwrap": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/client-s3": "^3.1012.0", - "@aws-sdk/lib-storage": "3.1075.0", - "@endo/static-module-record": "^1.1.2", - "@fastify/autoload": "^6.3.1", - "@fastify/compress": "^8.3.1", - "@fastify/cors": "^11.2.0", - "@fastify/static": "^9.1.3", - "@harperfast/extended-iterable": "^1.0.1", - "@harperfast/rocksdb-js": "^2.3.0", - "@turf/area": "6.5.0", - "@turf/boolean-contains": "6.5.0", - "@turf/boolean-disjoint": "6.5.0", - "@turf/boolean-equal": "6.5.0", - "@turf/circle": "6.5.0", - "@turf/difference": "6.5.0", - "@turf/distance": "6.5.0", - "@turf/helpers": "6.5.0", - "@turf/length": "6.5.0", - "alasql": "4.17.3", - "amaro": "^1.1.8", - "argon2": "0.44.0", - "asn1js": "3.0.10", - "busboy": "^1.6.0", - "cbor-x": "1.6.4", - "chalk": "4.1.2", - "chokidar": "^4.0.3", - "cli-progress": "3.12.0", - "clone": "2.1.2", - "dotenv": "^16.4.7", - "easy-ocsp": "1.3.2", - "fast-glob": "3.3.3", - "fastify": "^5.8.2", - "fastify-plugin": "^5.1.0", - "fs-extra": "11.3.5", - "graphql": "^16.10.0", - "graphql-http": "^1.22.4", - "gunzip-maybe": "1.4.2", - "human-readable-ids": "1.0.4", - "inquirer": "8.2.7", - "is-number": "7.0.0", - "joi": "17.13.4", - "json-bigint-fixes": "1.1.0", - "jsonata": "1.8.7", - "jsonwebtoken": "9.0.3", - "lmdb": "3.5.6", - "lodash": "^4.17.23", - "mathjs": "11.12.0", - "micromatch": "^4.0.8", - "minimist": "1.2.8", - "moment": "2.30.1", - "mqtt-packet": "~9.0.1", - "msgpackr": "^2.0.4", - "needle": "3.5.0", - "node-forge": "^1.3.1", - "node-stream-zip": "1.15.0", - "normalize-path": "^3.0.0", - "ora": "8.2.0", - "ordered-binary": "1.6.1", - "papaparse": "5.5.4", - "passport": "0.7.0", - "passport-http": "0.3.0", - "passport-local": "1.0.0", - "pino": "8.21.0", - "pkijs": "3.4.0", - "prompt": "1.3.0", - "properties-reader": "2.3.0", - "recursive-iterator": "3.3.0", - "semver": "7.8.5", - "send": "^1.2.0", - "ses": "^1.15.0", - "stream-chain": "2.2.5", - "stream-json": "1.9.1", - "structon": "^1.0.7", - "systeminformation": "^5.31.4", - "tar-fs": "^3.1.2", - "ulidx": "0.5.0", - "uuid": "11.1.1", - "validate.js": "0.13.1", - "ws": "8.21.0", - "yaml": "2.9.0" - }, - "bin": { - "harper": "dist/bin/harper.js" - }, - "engines": { - "node": "^22.18.0 || >=24.0.0" - }, - "optionalDependencies": { - "bufferutil": "^4.0.9", - "segfault-handler": "^1.3.0", - "utf-8-validate": "^5.0.10" - }, - "peerDependencies": { - "@aws-sdk/client-bedrock-runtime": "^3.0.0" - }, - "peerDependenciesMeta": { - "@aws-sdk/client-bedrock-runtime": { - "optional": true - } - } - }, - "node_modules/harper/node_modules/@agoric/babel-generator": { - "version": "7.17.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/harper/node_modules/@agoric/babel-generator/node_modules/source-map": { - "version": "0.5.7", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/harper/node_modules/@aws-crypto/crc32": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", - "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/util": "^5.2.0", - "@aws-sdk/types": "^3.222.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/harper/node_modules/@aws-crypto/crc32c": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-5.2.0.tgz", - "integrity": "sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/util": "^5.2.0", - "@aws-sdk/types": "^3.222.0", - "tslib": "^2.6.2" - } - }, - "node_modules/harper/node_modules/@aws-crypto/sha1-browser": { - "version": "5.2.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/supports-web-crypto": "^5.2.0", - "@aws-crypto/util": "^5.2.0", - "@aws-sdk/types": "^3.222.0", - "@aws-sdk/util-locate-window": "^3.0.0", - "@smithy/util-utf8": "^2.0.0", - "tslib": "^2.6.2" - } - }, - "node_modules/harper/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/is-array-buffer": { - "version": "2.2.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/harper/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-buffer-from": { - "version": "2.2.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/is-array-buffer": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/harper/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8": { - "version": "2.3.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-buffer-from": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/harper/node_modules/@aws-crypto/sha256-browser": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", - "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-js": "^5.2.0", - "@aws-crypto/supports-web-crypto": "^5.2.0", - "@aws-crypto/util": "^5.2.0", - "@aws-sdk/types": "^3.222.0", - "@aws-sdk/util-locate-window": "^3.0.0", - "@smithy/util-utf8": "^2.0.0", - "tslib": "^2.6.2" - } - }, - "node_modules/harper/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", - "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/harper/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", - "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/is-array-buffer": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/harper/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", - "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-buffer-from": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/harper/node_modules/@aws-crypto/sha256-js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", - "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/util": "^5.2.0", - "@aws-sdk/types": "^3.222.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/harper/node_modules/@aws-crypto/supports-web-crypto": { - "version": "5.2.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - } - }, - "node_modules/harper/node_modules/@aws-crypto/util": { - "version": "5.2.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.222.0", - "@smithy/util-utf8": "^2.0.0", - "tslib": "^2.6.2" - } - }, - "node_modules/harper/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer": { - "version": "2.2.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/harper/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from": { - "version": "2.2.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/is-array-buffer": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/harper/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": { - "version": "2.3.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-buffer-from": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/harper/node_modules/@aws-sdk/checksums": { - "version": "3.1000.8", - "resolved": "https://registry.npmjs.org/@aws-sdk/checksums/-/checksums-3.1000.8.tgz", - "integrity": "sha512-v0U9S7gBIme3OTgt1LdbAF4RpvavCc+4GK1+1xqAcqtbrHsEhjQo6R45LKcjhs/+WrRJij1Y0Gztw7QPAIeUfA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/crc32": "5.2.0", - "@aws-crypto/crc32c": "5.2.0", - "@aws-crypto/util": "5.2.0", - "@aws-sdk/core": "^3.974.23", - "@aws-sdk/types": "^3.973.13", - "@smithy/core": "^3.24.6", - "@smithy/types": "^4.14.3", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/harper/node_modules/@aws-sdk/client-s3": { - "version": "3.1075.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.1075.0.tgz", - "integrity": "sha512-h1A6nIl1YX6Y45enGsTK7ef3ZrOnBiQJ1qF5R2K/nMWfsu6A9mc2Y5T66nxerABzyjjyyvign3MrzafnFoQKmA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha1-browser": "5.2.0", - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.974.23", - "@aws-sdk/credential-provider-node": "^3.972.58", - "@aws-sdk/middleware-flexible-checksums": "^3.974.33", - "@aws-sdk/middleware-sdk-s3": "^3.972.54", - "@aws-sdk/signature-v4-multi-region": "^3.996.35", - "@aws-sdk/types": "^3.973.13", - "@smithy/core": "^3.24.6", - "@smithy/fetch-http-handler": "^5.4.6", - "@smithy/node-http-handler": "^4.7.6", - "@smithy/types": "^4.14.3", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/harper/node_modules/@aws-sdk/core": { - "version": "3.974.23", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.974.23.tgz", - "integrity": "sha512-MiWR/uWjxjFXGzrE0Ghc5lWxUxzHsUWFhV+OX7M4cR9SrmrnZs6TXavnCWnzzdwJeFri34xQo81rvGNzK3c4BQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.13", - "@aws-sdk/xml-builder": "^3.972.31", - "@aws/lambda-invoke-store": "^0.2.2", - "@smithy/core": "^3.24.6", - "@smithy/signature-v4": "^5.4.6", - "@smithy/types": "^4.14.3", - "bowser": "^2.11.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/harper/node_modules/@aws-sdk/credential-provider-env": { - "version": "3.972.49", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.49.tgz", - "integrity": "sha512-liB3yQNHCM9k/gu/w36XHMKPluT7HTlnGUhRbBGSISDQkcr/Sy1zsZabiuvQj8WG5yW573u9RehrBvvnIQ9OEQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "^3.974.23", - "@aws-sdk/types": "^3.973.13", - "@smithy/core": "^3.24.6", - "@smithy/types": "^4.14.3", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/harper/node_modules/@aws-sdk/credential-provider-http": { - "version": "3.972.51", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.51.tgz", - "integrity": "sha512-XET0H2oofciJ5lMRWNIvRjAP7Q3wv2XT+JtJJEdhPWUMwe3TvQ9qcxonpu7vXmNngncvFpi4E2It+Tamas/naA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "^3.974.23", - "@aws-sdk/types": "^3.973.13", - "@smithy/core": "^3.24.6", - "@smithy/fetch-http-handler": "^5.4.6", - "@smithy/node-http-handler": "^4.7.6", - "@smithy/types": "^4.14.3", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/harper/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.972.56", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.56.tgz", - "integrity": "sha512-IAmc61hbgQiHht9U3x0tnRwz0lzdwOwD/i9voRgdJrKamF+JtmrBOsW9GwB7mfFonNWOWL4qARWYrF8veEMe3w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "^3.974.23", - "@aws-sdk/credential-provider-env": "^3.972.49", - "@aws-sdk/credential-provider-http": "^3.972.51", - "@aws-sdk/credential-provider-login": "^3.972.55", - "@aws-sdk/credential-provider-process": "^3.972.49", - "@aws-sdk/credential-provider-sso": "^3.972.55", - "@aws-sdk/credential-provider-web-identity": "^3.972.55", - "@aws-sdk/nested-clients": "^3.997.23", - "@aws-sdk/types": "^3.973.13", - "@smithy/core": "^3.24.6", - "@smithy/credential-provider-imds": "^4.3.7", - "@smithy/types": "^4.14.3", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/harper/node_modules/@aws-sdk/credential-provider-login": { - "version": "3.972.55", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.55.tgz", - "integrity": "sha512-hBBkANo3cDn+h2qxxzER4a+J8JCO9o9Z/YYmU7iky6AcaarX5RRdRcHNC6SLdwY0vAXQygn6soUbDqPn3GghaA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "^3.974.23", - "@aws-sdk/nested-clients": "^3.997.23", - "@aws-sdk/types": "^3.973.13", - "@smithy/core": "^3.24.6", - "@smithy/types": "^4.14.3", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/harper/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.972.58", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.58.tgz", - "integrity": "sha512-OyCLVmSI7pZO8hxwNVX6pXhTVlJqRBTp+ijdEfJSUj0RyjHnF602OfAarOzGq6wkGodeFkYBt8MmJ6A6ycRgWw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/credential-provider-env": "^3.972.49", - "@aws-sdk/credential-provider-http": "^3.972.51", - "@aws-sdk/credential-provider-ini": "^3.972.56", - "@aws-sdk/credential-provider-process": "^3.972.49", - "@aws-sdk/credential-provider-sso": "^3.972.55", - "@aws-sdk/credential-provider-web-identity": "^3.972.55", - "@aws-sdk/types": "^3.973.13", - "@smithy/core": "^3.24.6", - "@smithy/credential-provider-imds": "^4.3.7", - "@smithy/types": "^4.14.3", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/harper/node_modules/@aws-sdk/credential-provider-process": { - "version": "3.972.49", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.49.tgz", - "integrity": "sha512-C8h36lBuC/RnBSsjlO+dn6xZm3KbAl5vpJaVPAfQnMmz2/OISmKOc8XZcqMQgO2ADwBYNRMM6Kf3vz9G/TulMQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "^3.974.23", - "@aws-sdk/types": "^3.973.13", - "@smithy/core": "^3.24.6", - "@smithy/types": "^4.14.3", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/harper/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.972.55", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.55.tgz", - "integrity": "sha512-1FkOz74Ea5QGS9jtIoXp55T/IkSS3spv+nLTT07fRY/+T5xmEOqaYBVIaEmX4zTNvbV6g2lrtlaVKWEoNyJt3w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "^3.974.23", - "@aws-sdk/nested-clients": "^3.997.23", - "@aws-sdk/token-providers": "3.1074.0", - "@aws-sdk/types": "^3.973.13", - "@smithy/core": "^3.24.6", - "@smithy/types": "^4.14.3", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/harper/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.972.55", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.55.tgz", - "integrity": "sha512-g2BoECD1q01kTPByi56+VLVvdWDzMkKIcr77qixpqH0okw2t0U5CoPv+6S8v/D1Y2Wa6QKKtn6XAtDzP+Kfpvg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "^3.974.23", - "@aws-sdk/nested-clients": "^3.997.23", - "@aws-sdk/types": "^3.973.13", - "@smithy/core": "^3.24.6", - "@smithy/types": "^4.14.3", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/harper/node_modules/@aws-sdk/lib-storage": { - "version": "3.1075.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.1075.0.tgz", - "integrity": "sha512-Npdac3/Fv994iCdFFeqloPel+95Zv6dRiRUpfey6W/CqpB/QdnYP60U4YBhBgJj6V5020Pm3ad0HV4WzCE5hHQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.24.6", - "@smithy/types": "^4.14.3", - "buffer": "5.6.0", - "events": "3.3.0", - "stream-browserify": "3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-s3": "^3.1075.0" - } - }, - "node_modules/harper/node_modules/@aws-sdk/middleware-flexible-checksums": { - "version": "3.974.33", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.974.33.tgz", - "integrity": "sha512-qMgQSPemQq2/eW/e/0+SpY4kYR5L7dUgBiVdEc5bd+ztHNv07ZMYiI+sTiir3TgKndFfglSw/VFi7oZJ6bZ63g==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/checksums": "^3.1000.8", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/harper/node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.972.54", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.54.tgz", - "integrity": "sha512-GDfDQ0gwLFRKN9gWIKcmVrHJ3e7XagnY7N1LLzMVNgnOnuY7f/ALgmy3CuBjosWD95T/Z6e+gs1IeWmLPkyLKQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "^3.974.23", - "@aws-sdk/signature-v4-multi-region": "^3.996.35", - "@aws-sdk/types": "^3.973.13", - "@smithy/core": "^3.24.6", - "@smithy/types": "^4.14.3", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/harper/node_modules/@aws-sdk/nested-clients": { - "version": "3.997.23", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.23.tgz", - "integrity": "sha512-gO93ZPsI2bxeFZD42f1/qjDw6FAZkNZcKRO94LIiT03fzOmcJ9e/tunxjVjA1Rl69ClmVJzz8H3G9CdKef10PA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.974.23", - "@aws-sdk/signature-v4-multi-region": "^3.996.35", - "@aws-sdk/types": "^3.973.13", - "@smithy/core": "^3.24.6", - "@smithy/fetch-http-handler": "^5.4.6", - "@smithy/node-http-handler": "^4.7.6", - "@smithy/types": "^4.14.3", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/harper/node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.996.35", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.35.tgz", - "integrity": "sha512-6L/VWs+Wch2stHemCGTmUNqKLMzURxQDK5boNG3Jn3kAOp71meDUuS5sbObpEvFxHDq0uWeSLFDNSYsjNt+Dlg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.13", - "@smithy/signature-v4": "^5.4.6", - "@smithy/types": "^4.14.3", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/harper/node_modules/@aws-sdk/token-providers": { - "version": "3.1074.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1074.0.tgz", - "integrity": "sha512-pv80IzgGW4RnXWtft692chZOM9i6PhebVsLCcnaM4dBEPZva2fE6FXAHs76G7Rc7s3yGyX/68G0nZMrUy+Vmpg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "^3.974.23", - "@aws-sdk/nested-clients": "^3.997.23", - "@aws-sdk/types": "^3.973.13", - "@smithy/core": "^3.24.6", - "@smithy/types": "^4.14.3", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/harper/node_modules/@aws-sdk/types": { - "version": "3.973.13", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.13.tgz", - "integrity": "sha512-pEHZqRkAlHfnfAU9tK+WpKv/gBNjGJrHMgA3A0iYRGyswBS2t0pfez+lWlwktb3Bqa0ovh7w/QJTFwp3fDxLNg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.14.3", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/harper/node_modules/@aws-sdk/util-locate-window": { - "version": "3.965.5", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/harper/node_modules/@aws-sdk/xml-builder": { - "version": "3.972.31", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.31.tgz", - "integrity": "sha512-SzE4Pgyl+hDF+BuyuzxUSpwnuUu9lJuO1YGgteG89/4Qv0+2IQiVQqdbPV32IozLvXWQChPQcdkk/sKvb1QHiQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.14.3", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/harper/node_modules/@aws/lambda-invoke-store": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.4.tgz", - "integrity": "sha512-iY8yvjE0y651BixKNPgmv1WrQc+GZ142sb0z4gYnChDDY2YqI4P/jsSopBWrKfAt7LOJAkOXt7rC/hms+WclQQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/harper/node_modules/@babel/code-frame": { - "version": "7.29.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.28.5", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/harper/node_modules/@babel/compat-data": { - "version": "7.29.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.3.tgz", - "integrity": "sha512-LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/harper/node_modules/@babel/core": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", - "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.29.0", - "@babel/generator": "^7.29.0", - "@babel/helper-compilation-targets": "^7.28.6", - "@babel/helper-module-transforms": "^7.28.6", - "@babel/helpers": "^7.28.6", - "@babel/parser": "^7.29.0", - "@babel/template": "^7.28.6", - "@babel/traverse": "^7.29.0", - "@babel/types": "^7.29.0", - "@jridgewell/remapping": "^2.3.5", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/harper/node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/harper/node_modules/@babel/generator": { - "version": "7.29.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.29.0", - "@babel/types": "^7.29.0", - "@jridgewell/gen-mapping": "^0.3.12", - "@jridgewell/trace-mapping": "^0.3.28", - "jsesc": "^3.0.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/harper/node_modules/@babel/generator/node_modules/jsesc": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/harper/node_modules/@babel/helper-compilation-targets": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", - "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@babel/compat-data": "^7.28.6", - "@babel/helper-validator-option": "^7.27.1", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/harper/node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/harper/node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/harper/node_modules/@babel/helper-globals": { - "version": "7.28.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/harper/node_modules/@babel/helper-module-imports": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", - "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@babel/traverse": "^7.28.6", - "@babel/types": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/harper/node_modules/@babel/helper-module-transforms": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", - "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@babel/helper-module-imports": "^7.28.6", - "@babel/helper-validator-identifier": "^7.28.5", - "@babel/traverse": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/harper/node_modules/@babel/helper-plugin-utils": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", - "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/harper/node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/harper/node_modules/@babel/helper-validator-identifier": { - "version": "7.28.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/harper/node_modules/@babel/helper-validator-option": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", - "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/harper/node_modules/@babel/helpers": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", - "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@babel/template": "^7.28.6", - "@babel/types": "^7.29.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/harper/node_modules/@babel/parser": { - "version": "7.29.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.29.0" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/harper/node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/harper/node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/harper/node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/harper/node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/harper/node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", - "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/harper/node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/harper/node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/harper/node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/harper/node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/harper/node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/harper/node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/harper/node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/harper/node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/harper/node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/harper/node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/harper/node_modules/@babel/runtime": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz", - "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/harper/node_modules/@babel/template": { - "version": "7.28.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.28.6", - "@babel/parser": "^7.28.6", - "@babel/types": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/harper/node_modules/@babel/traverse": { - "version": "7.29.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.29.0", - "@babel/generator": "^7.29.0", - "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.29.0", - "@babel/template": "^7.28.6", - "@babel/types": "^7.29.0", - "debug": "^4.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/harper/node_modules/@babel/types": { - "version": "7.29.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.28.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/harper/node_modules/@cbor-extract/cbor-extract-darwin-arm64": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-arm64/-/cbor-extract-darwin-arm64-2.2.2.tgz", - "integrity": "sha512-ZKZ/F8US7JR92J4DMct6cLW/Y66o2K576+zjlEN/MevH70bFIsB10wkZEQPLzl2oNh2SMGy55xpJ9JoBRl5DOA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/harper/node_modules/@cbor-extract/cbor-extract-darwin-x64": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-darwin-x64/-/cbor-extract-darwin-x64-2.2.2.tgz", - "integrity": "sha512-32b1mgc+P61Js+KW9VZv/c+xRw5EfmOcPx990JbCBSkYJFY0l25VinvyyWfl+3KjibQmAcYwmyzKF9J4DyKP/Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/harper/node_modules/@cbor-extract/cbor-extract-linux-arm": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm/-/cbor-extract-linux-arm-2.2.2.tgz", - "integrity": "sha512-tNg0za41TpQfkhWjptD+0gSD2fggMiDCSacuIeELyb2xZhr7PrhPe5h66Jc67B/5dmpIhI2QOUtv4SBsricyYQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/harper/node_modules/@cbor-extract/cbor-extract-linux-arm64": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-arm64/-/cbor-extract-linux-arm64-2.2.2.tgz", - "integrity": "sha512-wfqgzqCAy/Vn8i6WVIh7qZd0DdBFaWBjPdB6ma+Wihcjv0gHqD/mw3ouVv7kbbUNrab6dKEx/w3xQZEdeXIlzg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/harper/node_modules/@cbor-extract/cbor-extract-linux-x64": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-linux-x64/-/cbor-extract-linux-x64-2.2.2.tgz", - "integrity": "sha512-rpiLnVEsqtPJ+mXTdx1rfz4RtUGYIUg2rUAZgd1KjiC1SehYUSkJN7Yh+aVfSjvCGtVP0/bfkQkXpPXKbmSUaA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/harper/node_modules/@cbor-extract/cbor-extract-win32-x64": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@cbor-extract/cbor-extract-win32-x64/-/cbor-extract-win32-x64-2.2.2.tgz", - "integrity": "sha512-dI+9P7cfWxkTQ+oE+7Aa6onEn92PHgfWXZivjNheCRmTBDBf2fx6RyTi0cmgpYLnD1KLZK9ZYrMxaPZ4oiXhGA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/harper/node_modules/@colors/colors": { - "version": "1.5.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/harper/node_modules/@endo/cache-map": { - "version": "1.1.0", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/harper/node_modules/@endo/env-options": { - "version": "1.1.11", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/harper/node_modules/@endo/immutable-arraybuffer": { - "version": "1.1.2", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/harper/node_modules/@endo/static-module-record": { - "version": "1.1.2", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@agoric/babel-generator": "^7.17.6", - "@babel/parser": "^7.23.6", - "@babel/traverse": "^7.23.6", - "@babel/types": "^7.24.0", - "ses": "^1.5.0" - } - }, - "node_modules/harper/node_modules/@epic-web/invariant": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/harper/node_modules/@fastify/accept-negotiator": { - "version": "2.0.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT" - }, - "node_modules/harper/node_modules/@fastify/ajv-compiler": { - "version": "4.0.5", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT", - "dependencies": { - "ajv": "^8.12.0", - "ajv-formats": "^3.0.1", - "fast-uri": "^3.0.0" - } - }, - "node_modules/harper/node_modules/@fastify/ajv-compiler/node_modules/ajv": { - "version": "8.18.0", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/harper/node_modules/@fastify/ajv-compiler/node_modules/json-schema-traverse": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/harper/node_modules/@fastify/autoload": { - "version": "6.3.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT" - }, - "node_modules/harper/node_modules/@fastify/compress": { - "version": "8.3.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT", - "dependencies": { - "@fastify/accept-negotiator": "^2.0.0", - "fastify-plugin": "^5.0.0", - "mime-db": "^1.52.0", - "minipass": "^7.0.4", - "peek-stream": "^1.1.3", - "pump": "^3.0.0", - "pumpify": "^2.0.1", - "readable-stream": "^4.5.2" - } - }, - "node_modules/harper/node_modules/@fastify/compress/node_modules/buffer": { - "version": "6.0.3", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/harper/node_modules/@fastify/compress/node_modules/readable-stream": { - "version": "4.7.0", - "dev": true, - "license": "MIT", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/harper/node_modules/@fastify/compress/node_modules/string_decoder": { - "version": "1.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/harper/node_modules/@fastify/cors": { - "version": "11.2.0", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT", - "dependencies": { - "fastify-plugin": "^5.0.0", - "toad-cache": "^3.7.0" - } - }, - "node_modules/harper/node_modules/@fastify/error": { - "version": "4.2.0", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT" - }, - "node_modules/harper/node_modules/@fastify/fast-json-stringify-compiler": { - "version": "5.0.3", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT", - "dependencies": { - "fast-json-stringify": "^6.0.0" - } - }, - "node_modules/harper/node_modules/@fastify/forwarded": { - "version": "3.0.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT" - }, - "node_modules/harper/node_modules/@fastify/merge-json-schemas": { - "version": "0.2.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT", - "dependencies": { - "dequal": "^2.0.3" - } - }, - "node_modules/harper/node_modules/@fastify/proxy-addr": { - "version": "5.1.0", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT", - "dependencies": { - "@fastify/forwarded": "^3.0.0", - "ipaddr.js": "^2.1.0" - } - }, - "node_modules/harper/node_modules/@fastify/send": { - "version": "4.1.0", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT", - "dependencies": { - "@lukeed/ms": "^2.0.2", - "escape-html": "~1.0.3", - "fast-decode-uri-component": "^1.0.1", - "http-errors": "^2.0.0", - "mime": "^3" - } - }, - "node_modules/harper/node_modules/@fastify/static": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/@fastify/static/-/static-9.1.3.tgz", - "integrity": "sha512-aXrYtsiryLhRxRNaxNqsn7FUISeb7rB9q4eHUPIot5aeQBLNahnz1m6thzm7JWC1poSGXS9XrX8DvuMivp2hkQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT", - "dependencies": { - "@fastify/accept-negotiator": "^2.0.0", - "@fastify/send": "^4.0.0", - "content-disposition": "^1.0.1", - "fastify-plugin": "^5.0.0", - "fastq": "^1.17.1", - "glob": "^13.0.0" - } - }, - "node_modules/harper/node_modules/@fastify/static/node_modules/glob": { - "version": "13.0.6", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "minimatch": "^10.2.2", - "minipass": "^7.1.3", - "path-scurry": "^2.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/harper/node_modules/@fastify/static/node_modules/lru-cache": { - "version": "11.2.7", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/harper/node_modules/@fastify/static/node_modules/path-scurry": { - "version": "2.0.2", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^11.0.0", - "minipass": "^7.1.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/harper/node_modules/@hapi/hoek": { - "version": "9.3.0", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/harper/node_modules/@hapi/topo": { - "version": "5.1.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/harper/node_modules/@harperfast/extended-iterable": { - "version": "1.0.3", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/harper/node_modules/@harperfast/rocksdb-js": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@harperfast/rocksdb-js/-/rocksdb-js-2.3.0.tgz", - "integrity": "sha512-AE0bIDjRALeqHepzrNN97ZVCCoxi2L63sYWKoD3ZHB4tAmmudguutyIH22XLjUZBSYbizA+8aNye2xcH3FOn0Q==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@harperfast/extended-iterable": "1.0.3", - "msgpackr": "2.0.4", - "ordered-binary": "1.6.1" - }, - "bin": { - "rocksdb-js": "bin/rocksdb-js.mjs" - }, - "engines": { - "node": "^22.18.0 || >=24.0.0" - }, - "optionalDependencies": { - "@harperfast/rocksdb-js-darwin-arm64": "2.3.0", - "@harperfast/rocksdb-js-darwin-x64": "2.3.0", - "@harperfast/rocksdb-js-linux-arm64-glibc": "2.3.0", - "@harperfast/rocksdb-js-linux-arm64-musl": "2.3.0", - "@harperfast/rocksdb-js-linux-x64-glibc": "2.3.0", - "@harperfast/rocksdb-js-linux-x64-musl": "2.3.0", - "@harperfast/rocksdb-js-win32-arm64": "2.3.0", - "@harperfast/rocksdb-js-win32-x64": "2.3.0" - } - }, - "node_modules/harper/node_modules/@harperfast/rocksdb-js-darwin-arm64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@harperfast/rocksdb-js-darwin-arm64/-/rocksdb-js-darwin-arm64-2.3.0.tgz", - "integrity": "sha512-FuC1sF/b5QspuT/Up/j8UR3pQeaotSYeXaWaiTLr+KxvNHabifMcWP6jvNCIq2TAPV7zxkfSdpOodJ9HhJDcRA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^22.18.0 || >=24.0.0" - } - }, - "node_modules/harper/node_modules/@harperfast/rocksdb-js-darwin-x64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@harperfast/rocksdb-js-darwin-x64/-/rocksdb-js-darwin-x64-2.3.0.tgz", - "integrity": "sha512-r/G7XiJkEKwKzYxjneAqq2YXf9oLMEyQB4VzrMKGCrF5z180LOfZZmK6ZbnEq5Tf9tostY8nc7colxX0/FmLrQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^22.18.0 || >=24.0.0" - } - }, - "node_modules/harper/node_modules/@harperfast/rocksdb-js-linux-arm64-glibc": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@harperfast/rocksdb-js-linux-arm64-glibc/-/rocksdb-js-linux-arm64-glibc-2.3.0.tgz", - "integrity": "sha512-g6vAcymhlMVQKptVOyhTTYeJfIUwyogFQXbA9ESshgaAe4BhKwdpfnty+LowXo0hSJoZChsw3HX8/5w/9pzVaA==", - "cpu": [ - "arm64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^22.18.0 || >=24.0.0" - } - }, - "node_modules/harper/node_modules/@harperfast/rocksdb-js-linux-arm64-musl": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@harperfast/rocksdb-js-linux-arm64-musl/-/rocksdb-js-linux-arm64-musl-2.3.0.tgz", - "integrity": "sha512-L/oG5TTM3RAzxZWNB0xY02S8ByYnGnwhzrQGMCycaKDqBnEyWsvMcOLESoitjBpiMdwG7lEyeW9QPO/LW1lAXQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "libc": [ - "musl" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^22.18.0 || >=24.0.0" - } - }, - "node_modules/harper/node_modules/@harperfast/rocksdb-js-linux-x64-glibc": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@harperfast/rocksdb-js-linux-x64-glibc/-/rocksdb-js-linux-x64-glibc-2.3.0.tgz", - "integrity": "sha512-PCLG+pFyBG0dbeagsCwdfH36E4VUag8PiOjglrIZcwqIXyNbxKQqpnNpJ9EqrejcrRxvGp1Dwec0YzPzuFOBLw==", - "cpu": [ - "x64" - ], - "dev": true, - "libc": [ - "glibc" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^22.18.0 || >=24.0.0" - } - }, - "node_modules/harper/node_modules/@harperfast/rocksdb-js-linux-x64-musl": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@harperfast/rocksdb-js-linux-x64-musl/-/rocksdb-js-linux-x64-musl-2.3.0.tgz", - "integrity": "sha512-Qcx5Hs5S3hkaAuxmZ17Nb6vEN6Wjzlk2IpaBZ5m56ks71JMTnqChygX/RhGwpl3GiVFLD2QCnhb8beLbaBCV+A==", - "cpu": [ - "x64" - ], - "dev": true, - "libc": [ - "musl" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^22.18.0 || >=24.0.0" - } - }, - "node_modules/harper/node_modules/@harperfast/rocksdb-js-win32-arm64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@harperfast/rocksdb-js-win32-arm64/-/rocksdb-js-win32-arm64-2.3.0.tgz", - "integrity": "sha512-bPhhGAUFXVT0rlg+Aqyw9iN9FQL7M8rDLDsA1A2LhLp2PKgLwF3X665UYF9KPEUjqCljgA48tYKIsQZdfazS1w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^22.18.0 || >=24.0.0" - } - }, - "node_modules/harper/node_modules/@harperfast/rocksdb-js-win32-x64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@harperfast/rocksdb-js-win32-x64/-/rocksdb-js-win32-x64-2.3.0.tgz", - "integrity": "sha512-oKwLf9YToA3Asa1f6YJ1FoEmY36x5ku0cHMqk2WJicy1+6HutpfexZiK60Sj2PwULgBiIowj+Kv+KxscYWuRLg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^22.18.0 || >=24.0.0" - } - }, - "node_modules/harper/node_modules/@inquirer/external-editor": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "chardet": "^2.1.1", - "iconv-lite": "^0.7.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/harper/node_modules/@isaacs/ttlcache": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz", - "integrity": "sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/harper/node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true, - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/harper/node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/harper/node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/harper/node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/harper/node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", - "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/harper/node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/harper/node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/harper/node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/harper/node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/harper/node_modules/@istanbuljs/schema": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.6.tgz", - "integrity": "sha512-+Sg6GCR/wy1oSmQDFq4LQDAhm3ETKnorxN+y5nbLULOR3P0c14f2Wurzj3/xqPXtasLFfHd5iRFQ7AJt4KH2cw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/harper/node_modules/@jest/create-cache-key-function": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz", - "integrity": "sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@jest/types": "^29.6.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/harper/node_modules/@jest/environment": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/harper/node_modules/@jest/fake-timers": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/harper/node_modules/@jest/fake-timers/node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "dev": true, - "license": "BSD-3-Clause", - "optional": true, - "peer": true, - "dependencies": { - "@sinonjs/commons": "^3.0.0" - } - }, - "node_modules/harper/node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/harper/node_modules/@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/harper/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/harper/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/harper/node_modules/@jridgewell/remapping": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", - "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/harper/node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/harper/node_modules/@jridgewell/source-map": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", - "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, - "node_modules/harper/node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "dev": true, - "license": "MIT" - }, - "node_modules/harper/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/harper/node_modules/@lmdb/lmdb-darwin-arm64": { - "version": "3.5.6", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-3.5.6.tgz", - "integrity": "sha512-mY5FG4TjPAkY4P0w+OhHaUka5mDh2TX2WKYIwuKzJ1zeW3VvRgxdam/lGJTquI+bthTx5CSHDW+BAQCnNAzkEA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/harper/node_modules/@lmdb/lmdb-darwin-x64": { - "version": "3.5.6", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-3.5.6.tgz", - "integrity": "sha512-foa+pwitysO8k+xhs7psBFfTKnVgR69NlZRRTHaFVDqphh7AdGpLeyRzKw/ofatr/sN6TiHRRW6mmop0ZrrppQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/harper/node_modules/@lmdb/lmdb-linux-arm": { - "version": "3.5.6", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-3.5.6.tgz", - "integrity": "sha512-QR4YRyR5h5Z8eGXrNQjiyo2NNDfqi3tCc9dQG5Is1blCt+qWw1ZoBWhlWAr5d+jshkifMIJjVHzHGKbkKzF8Tw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/harper/node_modules/@lmdb/lmdb-linux-arm64": { - "version": "3.5.6", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-3.5.6.tgz", - "integrity": "sha512-HmiyFFdJa38s1heCMSooSPaBSFTHJ3C+ERPp28xAPlDX1YiALJVOgbry065nXd8Y7KISWjnw05zpG1RX8IfftA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/harper/node_modules/@lmdb/lmdb-linux-x64": { - "version": "3.5.6", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-3.5.6.tgz", - "integrity": "sha512-ADzCuCF2cTNiX9kDScqcz1fjnAkxPpQNneV3KFTdV3wWtVlI2sTGzySoMTgDpinkMMFj1NTJlxA6XR8fwc4hlA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/harper/node_modules/@lmdb/lmdb-win32-arm64": { - "version": "3.5.6", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-arm64/-/lmdb-win32-arm64-3.5.6.tgz", - "integrity": "sha512-J7A9aEQsQiv0TYtBGL7NDIPp2lOS8nnl+zm4sWZm1xlsTTaQ4PgD096Adzdrk27rw3UxCkDXdCUa4ax41oztBQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/harper/node_modules/@lmdb/lmdb-win32-x64": { - "version": "3.5.6", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-3.5.6.tgz", - "integrity": "sha512-1g7G0knRX2iV/voDu54yxrGqw5Dk0w2oIYb7dgJq8IkOi+m7wbD8Q3QpPFjh0C01G58S88dqGn03len6UPCXsg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/harper/node_modules/@lukeed/ms": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/harper/node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.4.tgz", - "integrity": "sha512-LCkGo6JDfaBhgST7UpPWgNgLINpcpabaHfyz5OBx75nUYxBsaEPxjnyNjWpeb/xBup/682QnBfRBy2/LvPutZQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/harper/node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.4.tgz", - "integrity": "sha512-zExlW9zUJKZH/tOtVMttwjKa4Xm/3KcNjnE3dPN92uCktwavMxpgCA3MoJK/DOnTWsQgo224OaST27/mPNAf+w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/harper/node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.4.tgz", - "integrity": "sha512-Tg3yX65f5GbtXLkrYEHE5oibZG9epyYWas7FogTTEJeDEF9JlXJzKgXaNhT3UXlTOeA+AfZpYZYZ0uPj7Cfquw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/harper/node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.4.tgz", - "integrity": "sha512-dgX0P/9wGPJeHFBG+ZmhgE6bmtMt7NP5CRBGyyktpopdk/mW4POnrpQsSLtKI1dwpc+pPLuXHDh6vvskyQE/sw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/harper/node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.4.tgz", - "integrity": "sha512-8TNXMEjJc3QEy7R/x1INhgiU+XakDAFUzBhaz7+Rbrs8NH5UQeHQxxmzsSBJGyV6I1jW79undiQm8tOI+D+8FQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/harper/node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.4.tgz", - "integrity": "sha512-CmCXPQrkbwExx3j946/PtHWHbYJiCRBRDl4BlkRQcJB/YOwQxJRTpoo7aTsortjgoJ1x7opzTSxn7C+ASSLVjQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/harper/node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/harper/node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/harper/node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/harper/node_modules/@phc/format": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/harper/node_modules/@pinojs/redact": { - "version": "0.4.0", - "dev": true, - "license": "MIT" - }, - "node_modules/harper/node_modules/@react-native/assets-registry": { - "version": "0.82.1", - "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.82.1.tgz", - "integrity": "sha512-B1SRwpntaAcckiatxbjzylvNK562Ayza05gdJCjDQHTiDafa1OABmyB5LHt7qWDOpNkaluD+w11vHF7pBmTpzQ==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 20.19.4" - } - }, - "node_modules/harper/node_modules/@react-native/codegen": { - "version": "0.82.1", - "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.82.1.tgz", - "integrity": "sha512-ezXTN70ygVm9l2m0i+pAlct0RntoV4afftWMGUIeAWLgaca9qItQ54uOt32I/9dBJvzBibT33luIR/pBG0dQvg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@babel/core": "^7.25.2", - "@babel/parser": "^7.25.3", - "glob": "^7.1.1", - "hermes-parser": "0.32.0", - "invariant": "^2.2.4", - "nullthrows": "^1.1.1", - "yargs": "^17.6.2" - }, - "engines": { - "node": ">= 20.19.4" - }, - "peerDependencies": { - "@babel/core": "*" - } - }, - "node_modules/harper/node_modules/@react-native/codegen/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/harper/node_modules/@react-native/codegen/node_modules/brace-expansion": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", - "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/harper/node_modules/@react-native/codegen/node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/harper/node_modules/@react-native/codegen/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/harper/node_modules/@react-native/codegen/node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/harper/node_modules/@react-native/codegen/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/harper/node_modules/@react-native/codegen/node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/harper/node_modules/@react-native/community-cli-plugin": { - "version": "0.82.1", - "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.82.1.tgz", - "integrity": "sha512-H/eMdtOy9nEeX7YVeEG1N2vyCoifw3dr9OV8++xfUElNYV7LtSmJ6AqxZUUfxGJRDFPQvaU/8enmJlM/l11VxQ==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@react-native/dev-middleware": "0.82.1", - "debug": "^4.4.0", - "invariant": "^2.2.4", - "metro": "^0.83.1", - "metro-config": "^0.83.1", - "metro-core": "^0.83.1", - "semver": "^7.1.3" - }, - "engines": { - "node": ">= 20.19.4" - }, - "peerDependencies": { - "@react-native-community/cli": "*", - "@react-native/metro-config": "*" - }, - "peerDependenciesMeta": { - "@react-native-community/cli": { - "optional": true - }, - "@react-native/metro-config": { - "optional": true - } - } - }, - "node_modules/harper/node_modules/@react-native/debugger-frontend": { - "version": "0.82.1", - "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.82.1.tgz", - "integrity": "sha512-a2O6M7/OZ2V9rdavOHyCQ+10z54JX8+B+apYKCQ6a9zoEChGTxUMG2YzzJ8zZJVvYf1ByWSNxv9Se0dca1hO9A==", - "dev": true, - "license": "BSD-3-Clause", - "optional": true, - "peer": true, - "engines": { - "node": ">= 20.19.4" - } - }, - "node_modules/harper/node_modules/@react-native/debugger-shell": { - "version": "0.82.1", - "resolved": "https://registry.npmjs.org/@react-native/debugger-shell/-/debugger-shell-0.82.1.tgz", - "integrity": "sha512-fdRHAeqqPT93bSrxfX+JHPpCXHApfDUdrXMXhoxlPgSzgXQXJDykIViKhtpu0M6slX6xU/+duq+AtP/qWJRpBw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "cross-spawn": "^7.0.6", - "fb-dotslash": "0.5.8" - }, - "engines": { - "node": ">= 20.19.4" - } - }, - "node_modules/harper/node_modules/@react-native/dev-middleware": { - "version": "0.82.1", - "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.82.1.tgz", - "integrity": "sha512-wuOIzms/Qg5raBV6Ctf2LmgzEOCqdP3p1AYN4zdhMT110c39TVMbunpBaJxm0Kbt2HQ762MQViF9naxk7SBo4w==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@isaacs/ttlcache": "^1.4.1", - "@react-native/debugger-frontend": "0.82.1", - "@react-native/debugger-shell": "0.82.1", - "chrome-launcher": "^0.15.2", - "chromium-edge-launcher": "^0.2.0", - "connect": "^3.6.5", - "debug": "^4.4.0", - "invariant": "^2.2.4", - "nullthrows": "^1.1.1", - "open": "^7.0.3", - "serve-static": "^1.16.2", - "ws": "^6.2.3" - }, - "engines": { - "node": ">= 20.19.4" - } - }, - "node_modules/harper/node_modules/@react-native/dev-middleware/node_modules/ws": { - "version": "6.2.4", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.4.tgz", - "integrity": "sha512-PNIUUyLI5YpkJZj60YBzX1o0ByQ4ovvfmq9N/Kig/PAYbVlGyz4R6G0SEWrD0O9acc0sT2+IdMBVLFv8FSi0Nw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "async-limiter": "~1.0.0" - } - }, - "node_modules/harper/node_modules/@react-native/gradle-plugin": { - "version": "0.82.1", - "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.82.1.tgz", - "integrity": "sha512-KkF/2T1NSn6EJ5ALNT/gx0MHlrntFHv8YdooH9OOGl9HQn5NM0ZmQSr86o5utJsGc7ME3R6p3SaQuzlsFDrn8Q==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 20.19.4" - } - }, - "node_modules/harper/node_modules/@react-native/js-polyfills": { - "version": "0.82.1", - "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.82.1.tgz", - "integrity": "sha512-tf70X7pUodslOBdLN37J57JmDPB/yiZcNDzS2m+4bbQzo8fhx3eG9QEBv5n4fmzqfGAgSB4BWRHgDMXmmlDSVA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 20.19.4" - } - }, - "node_modules/harper/node_modules/@react-native/normalize-colors": { - "version": "0.82.1", - "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.82.1.tgz", - "integrity": "sha512-CCfTR1uX+Z7zJTdt3DNX9LUXr2zWXsNOyLbwupW2wmRzrxlHRYfmLgTABzRL/cKhh0Ubuwn15o72MQChvCRaHw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/harper/node_modules/@react-native/virtualized-lists": { - "version": "0.82.1", - "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.82.1.tgz", - "integrity": "sha512-f5zpJg9gzh7JtCbsIwV+4kP3eI0QBuA93JGmwFRd4onQ3DnCjV2J5pYqdWtM95sjSKK1dyik59Gj01lLeKqs1Q==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "invariant": "^2.2.4", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">= 20.19.4" - }, - "peerDependencies": { - "@types/react": "^19.1.1", - "react": "*", - "react-native": "*" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/harper/node_modules/@sideway/address": { - "version": "4.1.5", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/harper/node_modules/@sideway/formula": { - "version": "3.0.1", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/harper/node_modules/@sideway/pinpoint": { - "version": "2.0.0", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/harper/node_modules/@sinclair/typebox": { - "version": "0.27.10", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", - "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/harper/node_modules/@sinonjs/commons": { - "version": "3.0.1", - "dev": true, - "license": "BSD-3-Clause", - "optional": true, - "peer": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/harper/node_modules/@smithy/core": { - "version": "3.26.0", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.26.0.tgz", - "integrity": "sha512-mLUktFAn+Pa2agl1J7VgtYNFWCX8/b4GMJSK1hCu4YCvtBfM6F8Os3EP4ry+DFFlXOf3wyvlgXhuUdFoy52D3g==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/crc32": "5.2.0", - "@smithy/types": "^4.15.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/harper/node_modules/@smithy/credential-provider-imds": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.4.2.tgz", - "integrity": "sha512-18UMDMyrAbDcpmL1gLUA7ww0fRTcdCrSjSJOi2Sbld+tVjwD/pW+OAwjlScFLR7vvBnhZrIPQ7kVuTf1mnJLug==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.26.0", - "@smithy/types": "^4.15.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/harper/node_modules/@smithy/fetch-http-handler": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.5.2.tgz", - "integrity": "sha512-Ei/UK/QMhq0rKaMqGPlOAkE2yS9DZeYmZdk1RAKc3vp3zxgleZHZyBLlZv8yLsxljX4svCRuMTD6u3LLIcU4Bg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.26.0", - "@smithy/types": "^4.15.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/harper/node_modules/@smithy/node-http-handler": { - "version": "4.8.2", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.8.2.tgz", - "integrity": "sha512-wfl1uwrAqMH9/pi4kqBo5LBcFwrJLxuDLqL7p7qNcJIFcyZDUc6pzhYk4CYv+DP7fIUpQCZumwNnkhPKS52osQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.26.0", - "@smithy/types": "^4.15.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/harper/node_modules/@smithy/signature-v4": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.5.2.tgz", - "integrity": "sha512-7xHpmPY4rt0IOmeAA8EfjgEH8isT+587TCdy9H6a7d4OMi5CQ0oEHhWllunvPu4j4Cq0vTFwdxXN/kABWPjdyA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.26.0", - "@smithy/types": "^4.15.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/harper/node_modules/@smithy/types": { - "version": "4.15.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.15.0.tgz", - "integrity": "sha512-Z5TAOxygoFvybJV3igo5SloFflSokHx2hu1eFA+DxDTcn+FtKxUSui+rbTRG1pAafMA888Z3MVvCWUuvCrTXjg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/harper/node_modules/@turf/area": { - "version": "6.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/harper/node_modules/@turf/bbox": { - "version": "6.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/harper/node_modules/@turf/boolean-contains": { - "version": "6.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@turf/bbox": "^6.5.0", - "@turf/boolean-point-in-polygon": "^6.5.0", - "@turf/boolean-point-on-line": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/harper/node_modules/@turf/boolean-disjoint": { - "version": "6.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@turf/boolean-point-in-polygon": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/line-intersect": "^6.5.0", - "@turf/meta": "^6.5.0", - "@turf/polygon-to-line": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/harper/node_modules/@turf/boolean-equal": { - "version": "6.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@turf/clean-coords": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "geojson-equality": "0.1.6" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/harper/node_modules/@turf/boolean-point-in-polygon": { - "version": "6.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/harper/node_modules/@turf/boolean-point-on-line": { - "version": "6.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/harper/node_modules/@turf/circle": { - "version": "6.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@turf/destination": "^6.5.0", - "@turf/helpers": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/harper/node_modules/@turf/clean-coords": { - "version": "6.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/harper/node_modules/@turf/destination": { - "version": "6.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/harper/node_modules/@turf/difference": { - "version": "6.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "polygon-clipping": "^0.15.3" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/harper/node_modules/@turf/distance": { - "version": "6.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/harper/node_modules/@turf/helpers": { - "version": "6.5.0", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/harper/node_modules/@turf/invariant": { - "version": "6.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@turf/helpers": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/harper/node_modules/@turf/length": { - "version": "6.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@turf/distance": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/harper/node_modules/@turf/line-intersect": { - "version": "6.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/line-segment": "^6.5.0", - "@turf/meta": "^6.5.0", - "geojson-rbush": "3.x" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/harper/node_modules/@turf/line-segment": { - "version": "6.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/harper/node_modules/@turf/meta": { - "version": "6.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@turf/helpers": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/harper/node_modules/@turf/polygon-to-line": { - "version": "6.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/harper/node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/harper/node_modules/@types/babel__generator": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", - "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/harper/node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/harper/node_modules/@types/babel__traverse": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", - "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@babel/types": "^7.28.2" - } - }, - "node_modules/harper/node_modules/@types/geojson": { - "version": "7946.0.8", - "dev": true, - "license": "MIT" - }, - "node_modules/harper/node_modules/@types/graceful-fs": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", - "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/harper/node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/harper/node_modules/@types/istanbul-lib-report": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/harper/node_modules/@types/istanbul-reports": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/harper/node_modules/@types/node": { - "version": "25.4.0", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~7.18.0" - } - }, - "node_modules/harper/node_modules/@types/readable-stream": { - "version": "4.0.23", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/harper/node_modules/@types/stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/harper/node_modules/@types/yargs": { - "version": "17.0.35", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", - "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/harper/node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/harper/node_modules/abort-controller": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, - "node_modules/harper/node_modules/abstract-logging": { - "version": "2.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/harper/node_modules/accepts": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", - "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "mime-types": "^3.0.0", - "negotiator": "^1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/harper/node_modules/accepts/node_modules/mime-types": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", - "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "mime-db": "^1.54.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/harper/node_modules/acorn": { - "version": "8.16.0", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/harper/node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 14" - } - }, - "node_modules/harper/node_modules/ajv-formats": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/harper/node_modules/ajv-formats/node_modules/ajv": { - "version": "8.18.0", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/harper/node_modules/ajv-formats/node_modules/json-schema-traverse": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/harper/node_modules/alasql": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/alasql/-/alasql-4.17.3.tgz", - "integrity": "sha512-EOBD6zfZJ1u6Y76672MapJOyahzjDIQGE7nspt4yKhBWZB2k0cIHHakx6iJaolKkjB4vMPIo09ysw52aQfZ9rw==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-fetch": "4.1.0", - "yargs": "16" - }, - "bin": { - "alasql": "bin/alasql-cli.js" - }, - "engines": { - "node": ">=15" - }, - "optionalDependencies": { - "react-native-fs": "^2.20.0" - } - }, - "node_modules/harper/node_modules/amaro": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/amaro/-/amaro-1.1.10.tgz", - "integrity": "sha512-ceFv+QA3SlhFsn0hu8Q8oyj36YZdIgoJFpyS2sGJGK2dyncwcMWuBlNzhXfc1oLWtbDWM2Ol2rrzOYa+HNyEjg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=22" - } - }, - "node_modules/harper/node_modules/anser": { - "version": "1.4.10", - "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz", - "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/harper/node_modules/ansi-escapes": { - "version": "4.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/harper/node_modules/ansi-regex": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/harper/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/harper/node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/harper/node_modules/argon2": { - "version": "0.44.0", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "@phc/format": "^1.0.0", - "cross-env": "^10.0.0", - "node-addon-api": "^8.5.0", - "node-gyp-build": "^4.8.4" - }, - "engines": { - "node": ">=16.17.0" - } - }, - "node_modules/harper/node_modules/argon2/node_modules/node-gyp-build": { - "version": "4.8.4", - "dev": true, - "license": "MIT", - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/harper/node_modules/asap": { - "version": "2.0.6", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/harper/node_modules/asn1js": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.10.tgz", - "integrity": "sha512-S2s3aOytiKdFRdulw2qPE51MzjzVOisppcVv7jVFR+Kw0kxwvFrDcYA0h7Ndqbmj0HkMIXYWaoj7fli8kgx1eg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "pvtsutils": "^1.3.6", - "pvutils": "^1.1.5", - "tslib": "^2.8.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/harper/node_modules/async": { - "version": "3.2.3", - "dev": true, - "license": "MIT" - }, - "node_modules/harper/node_modules/async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/harper/node_modules/atomic-sleep": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/harper/node_modules/avvio": { - "version": "9.2.0", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT", - "dependencies": { - "@fastify/error": "^4.0.0", - "fastq": "^1.17.1" - } - }, - "node_modules/harper/node_modules/b4a": { - "version": "1.8.0", - "dev": true, - "license": "Apache-2.0", - "peerDependencies": { - "react-native-b4a": "*" - }, - "peerDependenciesMeta": { - "react-native-b4a": { - "optional": true - } - } - }, - "node_modules/harper/node_modules/babel-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", - "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@jest/transform": "^29.7.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.6.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/harper/node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "license": "BSD-3-Clause", - "optional": true, - "peer": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/harper/node_modules/babel-plugin-jest-hoist": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", - "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/harper/node_modules/babel-plugin-syntax-hermes-parser": { - "version": "0.32.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.32.0.tgz", - "integrity": "sha512-m5HthL++AbyeEA2FcdwOLfVFvWYECOBObLHNqdR8ceY4TsEdn4LdX2oTvbB2QJSSElE2AWA/b2MXZ/PF/CqLZg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "hermes-parser": "0.32.0" - } - }, - "node_modules/harper/node_modules/babel-preset-current-node-syntax": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", - "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-import-attributes": "^7.24.7", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5" - }, - "peerDependencies": { - "@babel/core": "^7.0.0 || ^8.0.0-0" - } - }, - "node_modules/harper/node_modules/babel-preset-jest": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", - "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "babel-plugin-jest-hoist": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/harper/node_modules/balanced-match": { - "version": "4.0.4", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/harper/node_modules/bare-events": { - "version": "2.8.2", - "dev": true, - "license": "Apache-2.0", - "peerDependencies": { - "bare-abort-controller": "*" - }, - "peerDependenciesMeta": { - "bare-abort-controller": { - "optional": true - } - } - }, - "node_modules/harper/node_modules/bare-fs": { - "version": "4.5.5", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-events": "^2.5.4", - "bare-path": "^3.0.0", - "bare-stream": "^2.6.4", - "bare-url": "^2.2.2", - "fast-fifo": "^1.3.2" - }, - "engines": { - "bare": ">=1.16.0" - }, - "peerDependencies": { - "bare-buffer": "*" - }, - "peerDependenciesMeta": { - "bare-buffer": { - "optional": true - } - } - }, - "node_modules/harper/node_modules/bare-os": { - "version": "3.7.1", - "dev": true, - "license": "Apache-2.0", - "engines": { - "bare": ">=1.14.0" - } - }, - "node_modules/harper/node_modules/bare-path": { - "version": "3.0.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-os": "^3.0.1" - } - }, - "node_modules/harper/node_modules/bare-stream": { - "version": "2.8.1", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "streamx": "^2.21.0", - "teex": "^1.0.1" - }, - "peerDependencies": { - "bare-buffer": "*", - "bare-events": "*" - }, - "peerDependenciesMeta": { - "bare-buffer": { - "optional": true - }, - "bare-events": { - "optional": true - } - } - }, - "node_modules/harper/node_modules/bare-url": { - "version": "2.3.2", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bare-path": "^3.0.0" - } - }, - "node_modules/harper/node_modules/base-64": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/base-64/-/base-64-0.1.0.tgz", - "integrity": "sha512-Y5gU45svrR5tI2Vt/X9GPd3L0HNIKzGu202EjxrXMpuc2V2CiKgemAbUUsqYmZJvPtCXoUKjNZwBJzsNScUbXA==", - "dev": true, - "optional": true - }, - "node_modules/harper/node_modules/base64-js": { - "version": "1.5.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/harper/node_modules/baseline-browser-mapping": { - "version": "2.10.32", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.32.tgz", - "integrity": "sha512-wbPvpyjJPC0zdfdKXxqEL3Ea+bOMD/87X4lftiJkkaBiuG6ALQy1SLmEd7BSmVCuwCQsBrCamgBoLyfFDD1EPg==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "peer": true, - "bin": { - "baseline-browser-mapping": "dist/cli.cjs" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/harper/node_modules/bignumber.js": { - "version": "9.3.1", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/harper/node_modules/bindings": { - "version": "1.5.0", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, - "node_modules/harper/node_modules/bl": { - "version": "6.1.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/readable-stream": "^4.0.0", - "buffer": "^6.0.3", - "inherits": "^2.0.4", - "readable-stream": "^4.2.0" - } - }, - "node_modules/harper/node_modules/bl/node_modules/buffer": { - "version": "6.0.3", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/harper/node_modules/bl/node_modules/readable-stream": { - "version": "4.7.0", - "dev": true, - "license": "MIT", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/harper/node_modules/bl/node_modules/string_decoder": { - "version": "1.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/harper/node_modules/bowser": { - "version": "2.14.1", - "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.14.1.tgz", - "integrity": "sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==", - "dev": true, - "license": "MIT" - }, - "node_modules/harper/node_modules/brace-expansion": { - "version": "5.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/harper/node_modules/braces": { - "version": "3.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/harper/node_modules/browserify-zlib": { - "version": "0.1.4", - "dev": true, - "license": "MIT", - "dependencies": { - "pako": "~0.2.0" - } - }, - "node_modules/harper/node_modules/browserslist": { - "version": "4.28.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", - "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz", + "integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==", + "cpu": [ + "arm64" ], - "license": "MIT", + "license": "Apache-2.0", "optional": true, - "peer": true, - "dependencies": { - "baseline-browser-mapping": "^2.10.12", - "caniuse-lite": "^1.0.30001782", - "electron-to-chromium": "^1.5.328", - "node-releases": "^2.0.36", - "update-browserslist-db": "^1.2.3" + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, - "bin": { - "browserslist": "cli.js" + "funding": { + "url": "https://opencollective.com/libvips" }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" } }, - "node_modules/harper/node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz", + "integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==", + "cpu": [ + "x64" + ], "license": "Apache-2.0", "optional": true, - "peer": true, - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/harper/node_modules/buffer": { - "version": "5.6.0", - "dev": true, - "license": "MIT", - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.2.4" } }, - "node_modules/harper/node_modules/buffer-equal-constant-time": { - "version": "1.0.1", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/harper/node_modules/buffer-from": { - "version": "1.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/harper/node_modules/bufferutil": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.1.0.tgz", - "integrity": "sha512-ZMANVnAixE6AWWnPzlW2KpUrxhm9woycYvPOo67jWHyFowASTEd9s+QN1EIMsSDtwhIxN4sWE1jotpuDUIgyIw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", + "node_modules/@img/sharp-wasm32": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz", + "integrity": "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", "optional": true, "dependencies": { - "node-gyp-build": "^4.3.0" + "@emnapi/runtime": "^1.7.0" }, "engines": { - "node": ">=6.14.2" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" } }, - "node_modules/harper/node_modules/bufferutil/node_modules/node-gyp-build": { - "version": "4.8.4", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", - "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", + "node_modules/@img/sharp-webcontainers-wasm32": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-webcontainers-wasm32/-/sharp-webcontainers-wasm32-0.35.5.tgz", + "integrity": "sha512-hfhF/FmoQyTUkA0bIKFOtw536BQSeBMe6BF6QyWlrPxT754+TFLaZ7sKKTfvvM0yJgKgaYTwnFCIZ/GuDw5SUA==", + "cpu": [ + "wasm32" + ], "dev": true, - "license": "MIT", + "license": "Apache-2.0", "optional": true, - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/harper/node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dev": true, "dependencies": { - "streamsearch": "^1.1.0" + "@img/sharp-wasm32": "0.35.5" }, "engines": { - "node": ">=10.16.0" - } - }, - "node_modules/harper/node_modules/bytestreamjs": { - "version": "2.0.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=6.0.0" + "node": ">=20.9.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" } }, - "node_modules/harper/node_modules/call-bind": { - "version": "1.0.8", + "node_modules/@img/sharp-webcontainers-wasm32/node_modules/@img/sharp-wasm32": { + "version": "0.35.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.35.5.tgz", + "integrity": "sha512-Ptsga1su4tQx+LLF1ECS9U6nz5kmrXKo6XVbtR48Ke3ZRxxgaWBu7IDtEe1quo8hiupwm6WFqxVlXaSf7IINGQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" + "@emnapi/runtime": "^1.11.3" }, "engines": { - "node": ">= 0.4" + "node": ">=20.9.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://opencollective.com/libvips" } }, - "node_modules/harper/node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, + "node_modules/@img/sharp-win32-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz", + "integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">= 0.4" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" } }, - "node_modules/harper/node_modules/call-bound": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz", + "integrity": "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">= 0.4" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://opencollective.com/libvips" } }, - "node_modules/harper/node_modules/camelcase": { - "version": "6.3.0", - "dev": true, - "license": "MIT", + "node_modules/@img/sharp-win32-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz", + "integrity": "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", "optional": true, - "peer": true, + "os": [ + "win32" + ], "engines": { - "node": ">=10" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/libvips" } }, - "node_modules/harper/node_modules/caniuse-lite": { - "version": "1.0.30001793", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001793.tgz", - "integrity": "sha512-iwSsYWaCOoh26cV8NwNRViHlrfUvYsHDfRVcbtmw0Kg6PJIZZXwMkj1442FYLBGkeUf1juAsU3DTfxW579mrPA==", + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.4.tgz", + "integrity": "sha512-LCkGo6JDfaBhgST7UpPWgNgLINpcpabaHfyz5OBx75nUYxBsaEPxjnyNjWpeb/xBup/682QnBfRBy2/LvPutZQ==", + "cpu": [ + "arm64" + ], "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.4.tgz", + "integrity": "sha512-zExlW9zUJKZH/tOtVMttwjKa4Xm/3KcNjnE3dPN92uCktwavMxpgCA3MoJK/DOnTWsQgo224OaST27/mPNAf+w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.4.tgz", + "integrity": "sha512-Tg3yX65f5GbtXLkrYEHE5oibZG9epyYWas7FogTTEJeDEF9JlXJzKgXaNhT3UXlTOeA+AfZpYZYZ0uPj7Cfquw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.4.tgz", + "integrity": "sha512-dgX0P/9wGPJeHFBG+ZmhgE6bmtMt7NP5CRBGyyktpopdk/mW4POnrpQsSLtKI1dwpc+pPLuXHDh6vvskyQE/sw==", + "cpu": [ + "arm64" ], - "license": "CC-BY-4.0", - "optional": true, - "peer": true - }, - "node_modules/harper/node_modules/cbor-extract": { - "version": "2.2.2", "dev": true, - "hasInstallScript": true, "license": "MIT", "optional": true, - "dependencies": { - "node-gyp-build-optional-packages": "5.1.1" - }, - "bin": { - "download-cbor-prebuilds": "bin/download-prebuilds.js" - }, - "optionalDependencies": { - "@cbor-extract/cbor-extract-darwin-arm64": "2.2.2", - "@cbor-extract/cbor-extract-darwin-x64": "2.2.2", - "@cbor-extract/cbor-extract-linux-arm": "2.2.2", - "@cbor-extract/cbor-extract-linux-arm64": "2.2.2", - "@cbor-extract/cbor-extract-linux-x64": "2.2.2", - "@cbor-extract/cbor-extract-win32-x64": "2.2.2" - } + "os": [ + "linux" + ] }, - "node_modules/harper/node_modules/cbor-x": { - "version": "1.6.4", + "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.4.tgz", + "integrity": "sha512-8TNXMEjJc3QEy7R/x1INhgiU+XakDAFUzBhaz7+Rbrs8NH5UQeHQxxmzsSBJGyV6I1jW79undiQm8tOI+D+8FQ==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "optionalDependencies": { - "cbor-extract": "^2.2.2" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/harper/node_modules/chalk": { - "version": "4.1.2", + "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.4.tgz", + "integrity": "sha512-CmCXPQrkbwExx3j946/PtHWHbYJiCRBRDl4BlkRQcJB/YOwQxJRTpoo7aTsortjgoJ1x7opzTSxn7C+ASSLVjQ==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } + "optional": true, + "os": [ + "win32" + ] }, - "node_modules/harper/node_modules/chardet": { - "version": "2.1.1", - "dev": true, + "node_modules/@next/env": { + "version": "16.2.4", + "resolved": "https://registry.npmjs.org/@next/env/-/env-16.2.4.tgz", + "integrity": "sha512-dKkkOzOSwFYe5RX6y26fZgkSpVAlIOJKQHIiydQcrWH6y/97+RceSOAdjZ14Qa3zLduVUy0TXcn+EiM6t4rPgw==", "license": "MIT" }, - "node_modules/harper/node_modules/chokidar": { - "version": "4.0.3", - "dev": true, + "node_modules/@next/swc-darwin-arm64": { + "version": "16.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.2.4.tgz", + "integrity": "sha512-OXTFFox5EKN1Ym08vfrz+OXxmCcEjT4SFMbNRsWZE99dMqt2Kcusl5MqPXcW232RYkMLQTy0hqgAMEsfEd/l2A==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/harper/node_modules/chrome-launcher": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz", - "integrity": "sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==", - "dev": true, - "license": "Apache-2.0", "optional": true, - "peer": true, - "dependencies": { - "@types/node": "*", - "escape-string-regexp": "^4.0.0", - "is-wsl": "^2.2.0", - "lighthouse-logger": "^1.0.0" - }, - "bin": { - "print-chrome-path": "bin/print-chrome-path.js" - }, + "os": [ + "darwin" + ], "engines": { - "node": ">=12.13.0" - } - }, - "node_modules/harper/node_modules/chromium-edge-launcher": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/chromium-edge-launcher/-/chromium-edge-launcher-0.2.0.tgz", - "integrity": "sha512-JfJjUnq25y9yg4FABRRVPmBGWPZZi+AQXT4mxupb67766/0UlhG8PAZCz6xzEMXTbW3CsSoE8PcCWA49n35mKg==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "peer": true, - "dependencies": { - "@types/node": "*", - "escape-string-regexp": "^4.0.0", - "is-wsl": "^2.2.0", - "lighthouse-logger": "^1.0.0", - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" + "node": ">= 10" } }, - "node_modules/harper/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } + "node_modules/@next/swc-darwin-x64": { + "version": "16.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-16.2.4.tgz", + "integrity": "sha512-XhpVnUfmYWvD3YrXu55XdcAkQtOnvaI6wtQa8fuF5fGoKoxIUZ0kWPtcOfqJEWngFF/lOS9l3+O9CcownhiQxQ==", + "cpu": [ + "x64" ], "license": "MIT", "optional": true, - "peer": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=8" + "node": ">= 10" } }, - "node_modules/harper/node_modules/cli-cursor": { - "version": "3.1.0", - "dev": true, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "16.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.2.4.tgz", + "integrity": "sha512-Mx/tjlNA3G8kg14QvuGAJ4xBwPk1tUHq56JxZ8CXnZwz1Etz714soCEzGQQzVMz4bEnGPowzkV6Xrp6wAkEWOQ==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "restore-cursor": "^3.1.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">= 10" } }, - "node_modules/harper/node_modules/cli-progress": { - "version": "3.12.0", - "dev": true, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "16.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.2.4.tgz", + "integrity": "sha512-iVMMp14514u7Nup2umQS03nT/bN9HurK8ufylC3FZNykrwjtx7V1A7+4kvhbDSCeonTVqV3Txnv0Lu+m2oDXNg==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "string-width": "^4.2.3" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=4" + "node": ">= 10" } }, - "node_modules/harper/node_modules/cli-spinners": { - "version": "2.9.2", - "dev": true, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "16.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.2.4.tgz", + "integrity": "sha512-EZOvm1aQWgnI/N/xcWOlnS3RQBk0VtVav5Zo7n4p0A7UKyTDx047k8opDbXgBpHl4CulRqRfbw3QrX2w5UOXMQ==", + "cpu": [ + "x64" + ], "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 10" } }, - "node_modules/harper/node_modules/cli-width": { - "version": "3.0.0", - "dev": true, - "license": "ISC", + "node_modules/@next/swc-linux-x64-musl": { + "version": "16.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.2.4.tgz", + "integrity": "sha512-h9FxsngCm9cTBf71AR4fGznDEDx1hS7+kSEiIRjq5kO1oXWm07DxVGZjCvk0SGx7TSjlUqhI8oOyz7NfwAdPoA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { "node": ">= 10" } }, - "node_modules/harper/node_modules/cliui": { - "version": "7.0.4", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/harper/node_modules/cliui/node_modules/wrap-ansi": { - "version": "7.0.0", - "dev": true, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "16.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.2.4.tgz", + "integrity": "sha512-3NdJV5OXMSOeJYijX+bjaLge3mJBlh4ybydbT4GFoB/2hAojWHtMhl3CYlYoMrjPuodp0nzFVi4Tj2+WaMg+Ow==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">= 10" } }, - "node_modules/harper/node_modules/clone": { - "version": "2.1.2", + "node_modules/@next/swc-win32-ia32-msvc": { + "version": "14.2.33", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.33.tgz", + "integrity": "sha512-pc9LpGNKhJ0dXQhZ5QMmYxtARwwmWLpeocFmVG5Z0DzWq5Uf0izcI8tLc+qOpqxO1PWqZ5A7J1blrUIKrIFc7Q==", + "cpu": [ + "ia32" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=0.8" + "node": ">= 10" } }, - "node_modules/harper/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "16.2.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.2.4.tgz", + "integrity": "sha512-kMVGgsqhO5YTYODD9IPGGhA6iprWidQckK3LmPeW08PIFENRmgfb4MjXHO+p//d+ts2rpjvK5gXWzXSMrPl9cw==", + "cpu": [ + "x64" + ], "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=7.0.0" + "node": ">= 10" } }, - "node_modules/harper/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/harper/node_modules/colors": { - "version": "1.0.3", + "node_modules/@phc/format": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@phc/format/-/format-1.0.0.tgz", + "integrity": "sha512-m7X9U6BG2+J+R1lSOdCiITLLrxm+cWlNI3HUFA92oLO77ObGNzaKdh8pMLqdZcshtkKuV84olNNXDfMc4FezBQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.1.90" + "node": ">=10" } }, - "node_modules/harper/node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, + "node_modules/@playwright/test": { + "version": "1.62.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.62.0.tgz", + "integrity": "sha512-9zOJ6ZQRAena31MpOH9VSzIz8Ou3YJ/wtY/eQm5T2uhfhG7/U3COrMS8xOtUrZrp9OgdmzEnIYODye3nY1VqzA==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "playwright": "1.62.0" + }, + "bin": { + "playwright": "cli.js" + }, "engines": { - "node": ">=18" + "node": ">=20" } }, - "node_modules/harper/node_modules/complex.js": { - "version": "2.4.3", + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", "dev": true, - "license": "MIT", - "engines": { - "node": "*" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/rawify" + "license": "Apache-2.0" + }, + "node_modules/@swc/helpers": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" } }, - "node_modules/harper/node_modules/concat-map": { - "version": "0.0.1", + "node_modules/@types/node": { + "version": "26.1.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-26.1.1.tgz", + "integrity": "sha512-nxAkRSVkN1Y0JC1W8ky/fTfkGsMmcrRsbx+3XoZE+rMOX71kLYTV7fLXpqud1GpbpP5TuffXFqfX7fH2GgZREw==", "dev": true, "license": "MIT", - "optional": true, - "peer": true + "dependencies": { + "undici-types": "~8.3.0" + } }, - "node_modules/harper/node_modules/connect": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", - "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "node_modules/argon2": { + "version": "0.45.1", + "resolved": "https://registry.npmjs.org/argon2/-/argon2-0.45.1.tgz", + "integrity": "sha512-skm+/WCjkGqCQxF7FG1LuZXM5yvbFjgbfiCGsud2oLgaDhh6b6dbH0b1EkghbM+xx4Bj8Ape+KKgixoIlWZicQ==", "dev": true, + "hasInstallScript": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { - "debug": "2.6.9", - "finalhandler": "1.1.2", - "parseurl": "~1.3.3", - "utils-merge": "1.0.1" + "@phc/format": "^1.0.0", + "cross-env": "^10.1.0", + "node-addon-api": "^8.9.0", + "node-gyp-build": "^4.8.4" }, "engines": { - "node": ">= 0.10.0" + "node": ">=16.17.0" } }, - "node_modules/harper/node_modules/connect/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/bare-events": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz", + "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==", "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "ms": "2.0.0" + "license": "Apache-2.0", + "peerDependencies": { + "bare-abort-controller": "*" + }, + "peerDependenciesMeta": { + "bare-abort-controller": { + "optional": true + } } }, - "node_modules/harper/node_modules/connect/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/harper/node_modules/content-disposition": { - "version": "1.0.1", + "node_modules/bare-fs": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.7.1.tgz", + "integrity": "sha512-WDRsyVN52eAx/lBamKD6uyw8H4228h/x0sGGGegOamM2cd7Pag88GfMQalobXI+HaEUxpCkbKQUDOQqt9wawRw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "dependencies": { + "bare-events": "^2.5.4", + "bare-path": "^3.0.0", + "bare-stream": "^2.6.4", + "bare-url": "^2.2.2", + "fast-fifo": "^1.3.2" + }, "engines": { - "node": ">=18" + "bare": ">=1.16.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "peerDependencies": { + "bare-buffer": "*" + }, + "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + } } }, - "node_modules/harper/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/harper/node_modules/cookie": { - "version": "1.1.1", + "node_modules/bare-os": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.9.0.tgz", + "integrity": "sha512-JTjuZyNIDpw+GytMO4a6TK1VXdVKKJr6DRxEHasyuYyShV2deuiHJK/ahGZlebc+SG0/wJCB9XK8gprBGDFi/Q==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "bare": ">=1.14.0" } }, - "node_modules/harper/node_modules/core-util-is": { - "version": "1.0.3", + "node_modules/bare-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", + "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", "dev": true, - "license": "MIT" + "license": "Apache-2.0", + "dependencies": { + "bare-os": "^3.0.1" + } }, - "node_modules/harper/node_modules/cross-env": { - "version": "10.1.0", + "node_modules/bare-stream": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.13.1.tgz", + "integrity": "sha512-Vp0cnjYyrEC4whYTymQ+YZi6pBpfiICZO3cfRG8sy67ZNWe951urv1x4eW1BKNngw3U+3fPYb5JQvHbCtxH7Ow==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@epic-web/invariant": "^1.0.0", - "cross-spawn": "^7.0.6" + "streamx": "^2.25.0", + "teex": "^1.0.1" }, - "bin": { - "cross-env": "dist/bin/cross-env.js", - "cross-env-shell": "dist/bin/cross-env-shell.js" + "peerDependencies": { + "bare-abort-controller": "*", + "bare-buffer": "*", + "bare-events": "*" }, - "engines": { - "node": ">=20" + "peerDependenciesMeta": { + "bare-abort-controller": { + "optional": true + }, + "bare-buffer": { + "optional": true + }, + "bare-events": { + "optional": true + } } }, - "node_modules/harper/node_modules/cross-fetch": { - "version": "4.1.0", + "node_modules/bare-url": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.4.2.tgz", + "integrity": "sha512-/9a2j4ac6ckpmAHvod/ob7x439OAHst/drc2Clnq+reRYd/ovddwcF4LfoxHyNk5AuGBnPg+HqFjmE/Zpq6v0A==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "node-fetch": "^2.7.0" + "bare-path": "^3.0.0" } }, - "node_modules/harper/node_modules/cross-spawn": { - "version": "7.0.6", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "node_modules/baseline-browser-mapping": { + "version": "2.10.24", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.24.tgz", + "integrity": "sha512-I2NkZOOrj2XuguvWCK6OVh9GavsNjZjK908Rq3mIBK25+GD8vPX5w2WdxVqnQ7xx3SrZJiCiZFu+/Oz50oSYSA==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" }, "engines": { - "node": ">= 8" + "node": ">=6.0.0" } }, - "node_modules/harper/node_modules/cycle": { - "version": "1.0.3", + "node_modules/bufferutil": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.1.0.tgz", + "integrity": "sha512-ZMANVnAixE6AWWnPzlW2KpUrxhm9woycYvPOo67jWHyFowASTEd9s+QN1EIMsSDtwhIxN4sWE1jotpuDUIgyIw==", "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, "engines": { - "node": ">=0.4.0" + "node": ">=6.14.2" } }, - "node_modules/harper/node_modules/debug": { - "version": "4.4.3", + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", "dev": true, - "license": "MIT", "dependencies": { - "ms": "^2.1.3" + "streamsearch": "^1.1.0" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=10.16.0" } }, - "node_modules/harper/node_modules/decimal.js": { - "version": "10.6.0", - "dev": true, - "license": "MIT" - }, - "node_modules/harper/node_modules/deep-equal": { - "version": "1.1.2", + "node_modules/caniuse-lite": { + "version": "1.0.30001791", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001791.tgz", + "integrity": "sha512-yk0l/YSrOnFZk3UROpDLQD9+kC1l4meK/wed583AXrzoarMGJcbRi2Q4RaUYbKxYAsZ8sWmaSa/DsLmdBeI1vQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/cbor-extract": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/cbor-extract/-/cbor-extract-2.2.2.tgz", + "integrity": "sha512-hlSxxI9XO2yQfe9g6msd3g4xCfDqK5T5P0fRMLuaLHhxn4ViPrm+a+MUfhrvH2W962RGxcBwEGzLQyjbDG1gng==", "dev": true, + "hasInstallScript": true, "license": "MIT", + "optional": true, "dependencies": { - "is-arguments": "^1.1.1", - "is-date-object": "^1.0.5", - "is-regex": "^1.1.4", - "object-is": "^1.1.5", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.5.1" + "node-gyp-build-optional-packages": "5.1.1" }, - "engines": { - "node": ">= 0.4" + "bin": { + "download-cbor-prebuilds": "bin/download-prebuilds.js" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "optionalDependencies": { + "@cbor-extract/cbor-extract-darwin-arm64": "2.2.2", + "@cbor-extract/cbor-extract-darwin-x64": "2.2.2", + "@cbor-extract/cbor-extract-linux-arm": "2.2.2", + "@cbor-extract/cbor-extract-linux-arm64": "2.2.2", + "@cbor-extract/cbor-extract-linux-x64": "2.2.2", + "@cbor-extract/cbor-extract-win32-x64": "2.2.2" } }, - "node_modules/harper/node_modules/defaults": { - "version": "1.0.4", + "node_modules/cbor-x": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/cbor-x/-/cbor-x-1.6.6.tgz", + "integrity": "sha512-8QiD9PGOxyQHo7s2pzwTBH6lTjqekxPdl9Aq6fXvZgCuCJHOht1puDEA/fTr6mciB76c+M+Gi0qT2i1a4pm4Wg==", "dev": true, "license": "MIT", - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "optionalDependencies": { + "cbor-extract": "^2.2.2" } }, - "node_modules/harper/node_modules/defaults/node_modules/clone": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "license": "MIT" }, - "node_modules/harper/node_modules/define-data-property": { - "version": "1.1.4", + "node_modules/cross-env": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-10.1.0.tgz", + "integrity": "sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==", "dev": true, "license": "MIT", "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" + "@epic-web/invariant": "^1.0.0", + "cross-spawn": "^7.0.6" }, - "engines": { - "node": ">= 0.4" + "bin": { + "cross-env": "dist/bin/cross-env.js", + "cross-env-shell": "dist/bin/cross-env-shell.js" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=20" } }, - "node_modules/harper/node_modules/define-properties": { - "version": "1.2.1", + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 8" } }, - "node_modules/harper/node_modules/depd": { - "version": "2.0.0", - "dev": true, - "license": "MIT", + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "devOptional": true, + "license": "Apache-2.0", "engines": { - "node": ">= 0.8" + "node": ">=8" } }, - "node_modules/harper/node_modules/dequal": { - "version": "2.0.3", + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", "dev": true, "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "once": "^1.4.0" } }, - "node_modules/harper/node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "node_modules/events-universal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz", + "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bare-events": "^2.7.0" + } + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", "dev": true, + "license": "MIT" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, "license": "MIT", "optional": true, - "peer": true, + "os": [ + "darwin" + ], "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/harper/node_modules/detect-libc": { - "version": "2.1.2", + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=8" - } + "license": "ISC" }, - "node_modules/harper/node_modules/dotenv": { - "version": "16.6.1", + "node_modules/harper": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/harper/-/harper-5.3.4.tgz", + "integrity": "sha512-FYRZMkiruJwQBgl0r1+OqlkDU8jvm/ustVuXaCJ+LeRnSMm7OCCauzzvfRdy68Og4ZPXv9LSWipVWXq21UuV5Q==", + "bundleDependencies": [ + "@endo/static-module-record", + "@fastify/autoload", + "@fastify/compress", + "@fastify/cors", + "@fastify/static", + "@harperfast/skills", + "@inquirer/confirm", + "@inquirer/input", + "@inquirer/password", + "@inquirer/select", + "@turf/area", + "@turf/boolean-contains", + "@turf/boolean-disjoint", + "@turf/boolean-equal", + "@turf/circle", + "@turf/difference", + "@turf/distance", + "@turf/helpers", + "@turf/length", + "alasql", + "amaro", + "asn1js", + "busboy", + "chalk", + "chokidar", + "cli-progress", + "clone", + "dotenv", + "easy-ocsp", + "fast-glob", + "fastify", + "fastify-plugin", + "fs-extra", + "graphql", + "graphql-http", + "gunzip-maybe", + "human-readable-ids", + "is-number", + "joi", + "json-bigint-fixes", + "jsonata", + "jsonwebtoken", + "lodash", + "mathjs", + "micromatch", + "minimist", + "moment", + "mqtt-packet", + "needle", + "node-forge", + "node-stream-zip", + "normalize-path", + "ora", + "papaparse", + "passport", + "passport-http", + "passport-local", + "pino", + "pkijs", + "properties-reader", + "recursive-iterator", + "semver", + "send", + "ses", + "stream-chain", + "stream-json", + "ulidx", + "uuid", + "validate.js", + "yaml" + ], "dev": true, - "license": "BSD-2-Clause", + "license": "Apache-2.0", + "dependencies": { + "@endo/static-module-record": "^1.1.2", + "@fastify/autoload": "^6.3.1", + "@fastify/compress": "^8.3.1", + "@fastify/cors": "^11.2.0", + "@fastify/static": "^9.1.3", + "@harperfast/extended-iterable": "1.0.3", + "@harperfast/rocksdb-js": "2.11.0", + "@harperfast/skills": "^1.10.8", + "@inquirer/confirm": "^6.3.2", + "@inquirer/input": "^5.1.6", + "@inquirer/password": "^5.2.2", + "@inquirer/select": "^5.2.5", + "@turf/area": "6.5.0", + "@turf/boolean-contains": "6.5.0", + "@turf/boolean-disjoint": "6.5.0", + "@turf/boolean-equal": "6.5.0", + "@turf/circle": "6.5.0", + "@turf/difference": "6.5.0", + "@turf/distance": "6.5.0", + "@turf/helpers": "6.5.0", + "@turf/length": "6.5.0", + "alasql": "4.19.1", + "amaro": "^1.1.8", + "argon2": "0.45.1", + "asn1js": "3.0.10", + "busboy": "^1.6.0", + "cbor-x": "1.6.6", + "chalk": "4.1.2", + "chokidar": "^4.0.3", + "cli-progress": "3.12.0", + "clone": "2.1.2", + "dotenv": "^16.4.7", + "easy-ocsp": "1.3.2", + "fast-glob": "3.3.3", + "fastify": "^5.8.2", + "fastify-plugin": "^5.1.0", + "fs-extra": "11.4.0", + "graphql": "^16.10.0", + "graphql-http": "^1.22.4", + "gunzip-maybe": "1.4.2", + "human-readable-ids": "1.0.4", + "is-number": "7.0.0", + "joi": "17.13.8", + "json-bigint-fixes": "1.1.0", + "jsonata": "1.8.9", + "jsonwebtoken": "9.0.3", + "lmdb": "3.5.6", + "lodash": "^4.17.23", + "mathjs": "11.12.0", + "micromatch": "^4.0.8", + "minimist": "1.2.8", + "moment": "2.31.0", + "mqtt-packet": "~9.0.1", + "msgpackr": "2.1.0", + "needle": "3.5.0", + "node-forge": "^1.3.1", + "node-stream-zip": "1.16.0", + "normalize-path": "^3.0.0", + "ora": "8.2.0", + "ordered-binary": "1.6.2", + "papaparse": "5.7.0", + "passport": "0.7.0", + "passport-http": "0.3.0", + "passport-local": "1.0.0", + "pino": "8.21.0", + "pkijs": "3.4.1", + "properties-reader": "2.3.0", + "recursive-iterator": "3.3.0", + "semver": "7.8.5", + "send": "^1.2.0", + "ses": "^1.15.0", + "stream-chain": "2.2.5", + "stream-json": "1.9.1", + "structon": "1.1.0", + "systeminformation": "5.33.13", + "tar-fs": "3.1.3", + "tar-stream": "3.2.0", + "ulidx": "0.5.0", + "uuid": "11.1.1", + "validate.js": "0.13.1", + "weak-lru-cache": "1.2.2", + "ws": "8.21.3", + "yaml": "2.9.1" + }, + "bin": { + "harper": "dist/bin/harper.js" + }, "engines": { - "node": ">=12" + "node": "^22.18.0 || >=24.0.0" }, - "funding": { - "url": "https://dotenvx.com" + "optionalDependencies": { + "@harperfast/fulltext": "0.5.0", + "@harperfast/hnsw": "0.4.0", + "bufferutil": "4.1.0", + "segfault-handler": "1.3.0", + "utf-8-validate": "5.0.10" + }, + "peerDependencies": { + "@aws-sdk/client-bedrock-runtime": "^3.0.0", + "@aws-sdk/client-s3": "^3.0.0", + "@aws-sdk/lib-storage": "^3.0.0", + "uWebSockets.js": "20.68.0" + }, + "peerDependenciesMeta": { + "@aws-sdk/client-bedrock-runtime": { + "optional": true + }, + "@aws-sdk/client-s3": { + "optional": true + }, + "@aws-sdk/lib-storage": { + "optional": true + }, + "uWebSockets.js": { + "optional": true + } } }, - "node_modules/harper/node_modules/dunder-proto": { - "version": "1.0.1", + "node_modules/harper/node_modules/@agoric/babel-generator": { + "version": "7.17.6", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" }, "engines": { - "node": ">= 0.4" + "node": ">=6.9.0" } }, - "node_modules/harper/node_modules/duplexify": { - "version": "4.1.3", + "node_modules/harper/node_modules/@agoric/babel-generator/node_modules/source-map": { + "version": "0.5.7", "dev": true, - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.4.1", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1", - "stream-shift": "^1.0.2" + "inBundle": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/harper/node_modules/duplexify/node_modules/readable-stream": { - "version": "3.6.2", + "node_modules/harper/node_modules/@babel/code-frame": { + "version": "7.29.0", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" }, "engines": { - "node": ">= 6" + "node": ">=6.9.0" } }, - "node_modules/harper/node_modules/easy-ocsp": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/easy-ocsp/-/easy-ocsp-1.3.2.tgz", - "integrity": "sha512-4TonRbfynC2IRMF9gqFA1bEEF41rp0oPJrPYf8YIBibc2QVbSSDmBbKL0+1U2nVrZ4siGA18SIKhm8B9jLGK+A==", + "node_modules/harper/node_modules/@babel/generator": { + "version": "7.29.1", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "asn1js": "^3.0.5", - "pkijs": "^3.2.4" + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" }, "engines": { - "node": ">=18.13.0" + "node": ">=6.9.0" } }, - "node_modules/harper/node_modules/ecdsa-sig-formatter": { - "version": "1.0.11", + "node_modules/harper/node_modules/@babel/generator/node_modules/jsesc": { + "version": "3.1.0", "dev": true, - "license": "Apache-2.0", - "dependencies": { - "safe-buffer": "^5.0.1" + "inBundle": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" } }, - "node_modules/harper/node_modules/ee-first": { - "version": "1.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/harper/node_modules/electron-to-chromium": { - "version": "1.5.361", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.361.tgz", - "integrity": "sha512-Q6Hts7N9FnJc5LeGRINFvLhCI9xZmNtTDe5ZbcVezQz7cU4a8Aua3GH1b8J2XY8Al9PF+OCwYqhgsOOheMdvkA==", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true - }, - "node_modules/harper/node_modules/emoji-regex": { - "version": "8.0.0", + "node_modules/harper/node_modules/@babel/helper-globals": { + "version": "7.28.0", "dev": true, - "license": "MIT" + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } }, - "node_modules/harper/node_modules/encodeurl": { - "version": "2.0.0", + "node_modules/harper/node_modules/@babel/helper-string-parser": { + "version": "7.27.1", "dev": true, + "inBundle": true, "license": "MIT", "engines": { - "node": ">= 0.8" + "node": ">=6.9.0" } }, - "node_modules/harper/node_modules/end-of-stream": { - "version": "1.4.5", + "node_modules/harper/node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", "dev": true, + "inBundle": true, "license": "MIT", - "dependencies": { - "once": "^1.4.0" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/harper/node_modules/error-stack-parser": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", - "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "node_modules/harper/node_modules/@babel/parser": { + "version": "7.29.0", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { - "stackframe": "^1.3.4" + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" } }, - "node_modules/harper/node_modules/es-define-property": { - "version": "1.0.1", + "node_modules/harper/node_modules/@babel/runtime": { + "version": "7.29.2", "dev": true, + "inBundle": true, "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=6.9.0" } }, - "node_modules/harper/node_modules/es-errors": { - "version": "1.3.0", + "node_modules/harper/node_modules/@babel/template": { + "version": "7.28.6", "dev": true, + "inBundle": true, "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" + }, "engines": { - "node": ">= 0.4" + "node": ">=6.9.0" } }, - "node_modules/harper/node_modules/es-object-atoms": { - "version": "1.1.1", + "node_modules/harper/node_modules/@babel/traverse": { + "version": "7.29.0", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "es-errors": "^1.3.0" + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" }, "engines": { - "node": ">= 0.4" + "node": ">=6.9.0" } }, - "node_modules/harper/node_modules/escalade": { - "version": "3.2.0", + "node_modules/harper/node_modules/@babel/types": { + "version": "7.29.0", "dev": true, + "inBundle": true, "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, "engines": { - "node": ">=6" + "node": ">=6.9.0" } }, - "node_modules/harper/node_modules/escape-html": { - "version": "1.0.3", + "node_modules/harper/node_modules/@endo/cache-map": { + "version": "1.1.0", "dev": true, - "license": "MIT" + "inBundle": true, + "license": "Apache-2.0" }, - "node_modules/harper/node_modules/escape-latex": { - "version": "1.2.0", + "node_modules/harper/node_modules/@endo/env-options": { + "version": "1.1.11", + "dev": true, + "inBundle": true, + "license": "Apache-2.0" + }, + "node_modules/harper/node_modules/@endo/immutable-arraybuffer": { + "version": "1.1.2", + "dev": true, + "inBundle": true, + "license": "Apache-2.0" + }, + "node_modules/harper/node_modules/@endo/static-module-record": { + "version": "1.1.2", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@agoric/babel-generator": "^7.17.6", + "@babel/parser": "^7.23.6", + "@babel/traverse": "^7.23.6", + "@babel/types": "^7.24.0", + "ses": "^1.5.0" + } + }, + "node_modules/harper/node_modules/@fastify/accept-negotiator": { + "version": "2.0.1", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "inBundle": true, "license": "MIT" }, - "node_modules/harper/node_modules/escape-string-regexp": { - "version": "4.0.0", + "node_modules/harper/node_modules/@fastify/ajv-compiler": { + "version": "4.0.5", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "ajv": "^8.12.0", + "ajv-formats": "^3.0.1", + "fast-uri": "^3.0.0" } }, - "node_modules/harper/node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "node_modules/harper/node_modules/@fastify/ajv-compiler/node_modules/ajv": { + "version": "8.18.0", "dev": true, - "license": "BSD-2-Clause", - "optional": true, - "peer": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" + "inBundle": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" }, - "engines": { - "node": ">=4" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/harper/node_modules/etag": { - "version": "1.8.1", + "node_modules/harper/node_modules/@fastify/ajv-compiler/node_modules/json-schema-traverse": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/harper/node_modules/@fastify/autoload": { + "version": "6.5.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "inBundle": true, + "license": "MIT" + }, + "node_modules/harper/node_modules/@fastify/compress": { + "version": "8.3.1", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "inBundle": true, "license": "MIT", - "engines": { - "node": ">= 0.6" + "dependencies": { + "@fastify/accept-negotiator": "^2.0.0", + "fastify-plugin": "^5.0.0", + "mime-db": "^1.52.0", + "minipass": "^7.0.4", + "peek-stream": "^1.1.3", + "pump": "^3.0.0", + "pumpify": "^2.0.1", + "readable-stream": "^4.5.2" } }, - "node_modules/harper/node_modules/event-target-shim": { - "version": "5.0.1", + "node_modules/harper/node_modules/@fastify/compress/node_modules/buffer": { + "version": "6.0.3", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "inBundle": true, "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" } }, - "node_modules/harper/node_modules/events": { - "version": "3.3.0", + "node_modules/harper/node_modules/@fastify/compress/node_modules/readable-stream": { + "version": "4.7.0", "dev": true, + "inBundle": true, "license": "MIT", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/harper/node_modules/events-universal": { - "version": "1.0.1", - "dev": true, - "license": "Apache-2.0", "dependencies": { - "bare-events": "^2.7.0" - } - }, - "node_modules/harper/node_modules/exponential-backoff": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz", - "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "peer": true - }, - "node_modules/harper/node_modules/eyes": { - "version": "0.1.8", - "dev": true, + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, "engines": { - "node": "> 0.1.90" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/harper/node_modules/fast-decode-uri-component": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/harper/node_modules/fast-deep-equal": { - "version": "3.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/harper/node_modules/fast-fifo": { - "version": "1.3.2", - "dev": true, - "license": "MIT" - }, - "node_modules/harper/node_modules/fast-glob": { - "version": "3.3.3", + "node_modules/harper/node_modules/@fastify/compress/node_modules/string_decoder": { + "version": "1.3.0", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" - }, - "engines": { - "node": ">=8.6.0" + "safe-buffer": "~5.2.0" } }, - "node_modules/harper/node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", + "node_modules/harper/node_modules/@fastify/cors": { + "version": "11.3.0", "dev": true, - "license": "ISC", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "inBundle": true, + "license": "MIT", "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" + "fastify-plugin": "^6.0.0", + "toad-cache": "^3.7.0" } }, - "node_modules/harper/node_modules/fast-json-stable-stringify": { - "version": "2.1.0", + "node_modules/harper/node_modules/@fastify/cors/node_modules/fastify-plugin": { + "version": "6.0.0", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "inBundle": true, + "license": "MIT" }, - "node_modules/harper/node_modules/fast-json-stringify": { - "version": "6.3.0", + "node_modules/harper/node_modules/@fastify/error": { + "version": "4.2.0", "dev": true, "funding": [ { @@ -5987,54 +2241,85 @@ "url": "https://opencollective.com/fastify" } ], - "license": "MIT", - "dependencies": { - "@fastify/merge-json-schemas": "^0.2.0", - "ajv": "^8.12.0", - "ajv-formats": "^3.0.1", - "fast-uri": "^3.0.0", - "json-schema-ref-resolver": "^3.0.0", - "rfdc": "^1.2.0" - } + "inBundle": true, + "license": "MIT" }, - "node_modules/harper/node_modules/fast-json-stringify/node_modules/ajv": { - "version": "8.18.0", + "node_modules/harper/node_modules/@fastify/fast-json-stringify-compiler": { + "version": "5.0.3", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "inBundle": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "fast-json-stringify": "^6.0.0" } }, - "node_modules/harper/node_modules/fast-json-stringify/node_modules/json-schema-traverse": { - "version": "1.0.0", + "node_modules/harper/node_modules/@fastify/forwarded": { + "version": "3.0.1", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "inBundle": true, "license": "MIT" }, - "node_modules/harper/node_modules/fast-querystring": { - "version": "1.1.2", + "node_modules/harper/node_modules/@fastify/merge-json-schemas": { + "version": "0.2.1", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "inBundle": true, "license": "MIT", "dependencies": { - "fast-decode-uri-component": "^1.0.1" + "dequal": "^2.0.3" } }, - "node_modules/harper/node_modules/fast-redact": { - "version": "3.5.0", + "node_modules/harper/node_modules/@fastify/proxy-addr": { + "version": "5.1.0", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "inBundle": true, "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "@fastify/forwarded": "^3.0.0", + "ipaddr.js": "^2.1.0" } }, - "node_modules/harper/node_modules/fast-uri": { - "version": "3.1.0", + "node_modules/harper/node_modules/@fastify/send": { + "version": "4.1.0", "dev": true, "funding": [ { @@ -6046,12 +2331,18 @@ "url": "https://opencollective.com/fastify" } ], - "license": "BSD-3-Clause" + "inBundle": true, + "license": "MIT", + "dependencies": { + "@lukeed/ms": "^2.0.2", + "escape-html": "~1.0.3", + "fast-decode-uri-component": "^1.0.1", + "http-errors": "^2.0.0", + "mime": "^3" + } }, - "node_modules/harper/node_modules/fastify": { - "version": "5.8.5", - "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.8.5.tgz", - "integrity": "sha512-Yqptv59pQzPgQUSIm87hMqHJmdkb1+GPxdE6vW6FRyVE9G86mt7rOghitiU4JHRaTyDUk9pfeKmDeu70lAwM4Q==", + "node_modules/harper/node_modules/@fastify/static": { + "version": "9.3.0", "dev": true, "funding": [ { @@ -6063,27 +2354,19 @@ "url": "https://opencollective.com/fastify" } ], + "inBundle": true, "license": "MIT", "dependencies": { - "@fastify/ajv-compiler": "^4.0.5", - "@fastify/error": "^4.0.0", - "@fastify/fast-json-stringify-compiler": "^5.0.0", - "@fastify/proxy-addr": "^5.0.0", - "abstract-logging": "^2.0.1", - "avvio": "^9.0.0", - "fast-json-stringify": "^6.0.0", - "find-my-way": "^9.0.0", - "light-my-request": "^6.0.0", - "pino": "^9.14.0 || ^10.1.0", - "process-warning": "^5.0.0", - "rfdc": "^1.3.1", - "secure-json-parse": "^4.0.0", - "semver": "^7.6.0", - "toad-cache": "^3.7.0" + "@fastify/accept-negotiator": "^2.0.0", + "@fastify/send": "^4.0.0", + "content-disposition": "^1.0.1", + "fastify-plugin": "^6.0.0", + "fastq": "^1.17.1", + "glob": "^13.0.0" } }, - "node_modules/harper/node_modules/fastify-plugin": { - "version": "5.1.0", + "node_modules/harper/node_modules/@fastify/static/node_modules/fastify-plugin": { + "version": "6.0.0", "dev": true, "funding": [ { @@ -6095,928 +2378,1057 @@ "url": "https://opencollective.com/fastify" } ], + "inBundle": true, "license": "MIT" }, - "node_modules/harper/node_modules/fastify/node_modules/pino": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/pino/-/pino-10.3.1.tgz", - "integrity": "sha512-r34yH/GlQpKZbU1BvFFqOjhISRo1MNx1tWYsYvmj6KIRHSPMT2+yHOEb1SG6NMvRoHRF0a07kCOox/9yakl1vg==", + "node_modules/harper/node_modules/@hapi/hoek": { + "version": "9.3.0", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "BSD-3-Clause" + }, + "node_modules/harper/node_modules/@hapi/topo": { + "version": "5.1.0", + "dev": true, + "inBundle": true, + "license": "BSD-3-Clause", "dependencies": { - "@pinojs/redact": "^0.4.0", - "atomic-sleep": "^1.0.0", - "on-exit-leak-free": "^2.1.0", - "pino-abstract-transport": "^3.0.0", - "pino-std-serializers": "^7.0.0", - "process-warning": "^5.0.0", - "quick-format-unescaped": "^4.0.3", - "real-require": "^0.2.0", - "safe-stable-stringify": "^2.3.1", - "sonic-boom": "^4.0.1", - "thread-stream": "^4.0.0" - }, - "bin": { - "pino": "bin.js" + "@hapi/hoek": "^9.0.0" } }, - "node_modules/harper/node_modules/fastify/node_modules/pino-std-serializers": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-7.1.0.tgz", - "integrity": "sha512-BndPH67/JxGExRgiX1dX0w1FvZck5Wa4aal9198SrRhZjH3GxKQUKIBnYJTdj2HDN3UQAS06HlfcSbQj2OHmaw==", + "node_modules/harper/node_modules/@harperfast/extended-iterable": { + "version": "1.0.3", "dev": true, - "license": "MIT" + "license": "Apache-2.0" }, - "node_modules/harper/node_modules/fastify/node_modules/sonic-boom": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.2.1.tgz", - "integrity": "sha512-w6AxtubXa2wTXAUsZMMWERrsIRAdrK0Sc+FUytWvYAhBJLyuI4llrMIC1DtlNSdI99EI86KZum2MMq3EAZlF9Q==", + "node_modules/harper/node_modules/@harperfast/skills": { + "version": "1.12.10", + "dev": true, + "inBundle": true, + "license": "Apache License 2.0" + }, + "node_modules/harper/node_modules/@inquirer/ansi": { + "version": "2.0.8", "dev": true, + "inBundle": true, "license": "MIT", - "dependencies": { - "atomic-sleep": "^1.0.0" + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" } }, - "node_modules/harper/node_modules/fastify/node_modules/thread-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-4.1.0.tgz", - "integrity": "sha512-Bw6h2iBDt16v6iHLChBIoVYU8CBo9GPsW8TG7h1hRVhqKhIkH6N8qkxNSmiOZTKsCLPbtWG4ViWLkU6KeKXpig==", + "node_modules/harper/node_modules/@inquirer/confirm": { + "version": "6.3.2", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "real-require": "^1.0.0" + "@inquirer/core": "^12.0.3", + "@inquirer/type": "4.1.1" }, "engines": { - "node": ">=20" + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/harper/node_modules/fastify/node_modules/thread-stream/node_modules/real-require": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/real-require/-/real-require-1.0.0.tgz", - "integrity": "sha512-P4nbQYQfePJxRSmY+v/KINxVucm4NF3p3s7pJveMTtom52FR4YGltUQLB8idDXwDDWW+eYrWDFbuzUnjoWHF7g==", + "node_modules/harper/node_modules/@inquirer/core": { + "version": "12.0.3", "dev": true, - "license": "MIT" + "inBundle": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^2.0.8", + "@inquirer/figures": "^2.0.9", + "@inquirer/type": "4.1.1", + "cli-width": "^4.1.0", + "fast-wrap-ansi": "^0.2.0", + "mute-stream": "^3.0.0", + "signal-exit": "^4.1.0" + }, + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } }, - "node_modules/harper/node_modules/fastq": { - "version": "1.20.1", + "node_modules/harper/node_modules/@inquirer/core/node_modules/cli-width": { + "version": "4.1.0", "dev": true, + "inBundle": true, "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" + "engines": { + "node": ">= 12" } }, - "node_modules/harper/node_modules/fb-dotslash": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/fb-dotslash/-/fb-dotslash-0.5.8.tgz", - "integrity": "sha512-XHYLKk9J4BupDxi9bSEhkfss0m+Vr9ChTrjhf9l2iw3jB5C7BnY4GVPoMcqbrTutsKJso6yj2nAB6BI/F2oZaA==", + "node_modules/harper/node_modules/@inquirer/core/node_modules/mute-stream": { + "version": "3.0.0", "dev": true, - "license": "(MIT OR Apache-2.0)", - "optional": true, - "peer": true, - "bin": { - "dotslash": "bin/dotslash" - }, + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=20" + "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/harper/node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "node_modules/harper/node_modules/@inquirer/figures": { + "version": "2.0.9", "dev": true, - "license": "Apache-2.0", - "optional": true, - "peer": true, - "dependencies": { - "bser": "2.1.1" + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" } }, - "node_modules/harper/node_modules/figures": { - "version": "3.2.0", + "node_modules/harper/node_modules/@inquirer/input": { + "version": "5.1.6", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "escape-string-regexp": "^1.0.5" + "@inquirer/core": "^12.0.3", + "@inquirer/type": "4.1.1" }, "engines": { - "node": ">=8" + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/harper/node_modules/figures/node_modules/escape-string-regexp": { - "version": "1.0.5", + "node_modules/harper/node_modules/@inquirer/password": { + "version": "5.2.2", "dev": true, + "inBundle": true, "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^2.0.8", + "@inquirer/core": "^12.0.3", + "@inquirer/type": "4.1.1" + }, "engines": { - "node": ">=0.8.0" + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/harper/node_modules/file-uri-to-path": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/harper/node_modules/fill-range": { - "version": "7.1.1", + "node_modules/harper/node_modules/@inquirer/select": { + "version": "5.2.5", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "to-regex-range": "^5.0.1" + "@inquirer/ansi": "^2.0.8", + "@inquirer/core": "^12.0.3", + "@inquirer/figures": "^2.0.9", + "@inquirer/type": "4.1.1" }, "engines": { - "node": ">=8" + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/harper/node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "node_modules/harper/node_modules/@inquirer/type": { + "version": "4.1.1", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, "engines": { - "node": ">= 0.8" + "node": ">=23.5.0 || ^22.13.0 || ^20.17.0" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/harper/node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/harper/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { - "ms": "2.0.0" + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/harper/node_modules/finalhandler/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "node_modules/harper/node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { - "node": ">= 0.8" + "node": ">=6.0.0" } }, - "node_modules/harper/node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "node_modules/harper/node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "inBundle": true, + "license": "MIT" }, - "node_modules/harper/node_modules/finalhandler/node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "node_modules/harper/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/harper/node_modules/finalhandler/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "node_modules/harper/node_modules/@lmdb/lmdb-darwin-arm64": { + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-3.5.6.tgz", + "integrity": "sha512-mY5FG4TjPAkY4P0w+OhHaUka5mDh2TX2WKYIwuKzJ1zeW3VvRgxdam/lGJTquI+bthTx5CSHDW+BAQCnNAzkEA==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", "optional": true, - "peer": true, - "engines": { - "node": ">= 0.6" - } + "os": [ + "darwin" + ] }, - "node_modules/harper/node_modules/find-my-way": { - "version": "9.5.0", + "node_modules/harper/node_modules/@lmdb/lmdb-darwin-x64": { + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-3.5.6.tgz", + "integrity": "sha512-foa+pwitysO8k+xhs7psBFfTKnVgR69NlZRRTHaFVDqphh7AdGpLeyRzKw/ofatr/sN6TiHRRW6mmop0ZrrppQ==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-querystring": "^1.0.0", - "safe-regex2": "^5.0.0" - }, - "engines": { - "node": ">=20" - } + "optional": true, + "os": [ + "darwin" + ] }, - "node_modules/harper/node_modules/flow-enums-runtime": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz", - "integrity": "sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==", + "node_modules/harper/node_modules/@lmdb/lmdb-linux-arm": { + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-3.5.6.tgz", + "integrity": "sha512-QR4YRyR5h5Z8eGXrNQjiyo2NNDfqi3tCc9dQG5Is1blCt+qWw1ZoBWhlWAr5d+jshkifMIJjVHzHGKbkKzF8Tw==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", "optional": true, - "peer": true + "os": [ + "linux" + ] }, - "node_modules/harper/node_modules/fraction.js": { - "version": "4.3.4", + "node_modules/harper/node_modules/@lmdb/lmdb-linux-arm64": { + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-3.5.6.tgz", + "integrity": "sha512-HmiyFFdJa38s1heCMSooSPaBSFTHJ3C+ERPp28xAPlDX1YiALJVOgbry065nXd8Y7KISWjnw05zpG1RX8IfftA==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://github.com/sponsors/rawify" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/harper/node_modules/fresh": { - "version": "2.0.0", + "node_modules/harper/node_modules/@lmdb/lmdb-linux-x64": { + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-3.5.6.tgz", + "integrity": "sha512-ADzCuCF2cTNiX9kDScqcz1fjnAkxPpQNneV3KFTdV3wWtVlI2sTGzySoMTgDpinkMMFj1NTJlxA6XR8fwc4hlA==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.8" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/harper/node_modules/fs-extra": { - "version": "11.3.5", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.5.tgz", - "integrity": "sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg==", + "node_modules/harper/node_modules/@lmdb/lmdb-win32-arm64": { + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-arm64/-/lmdb-win32-arm64-3.5.6.tgz", + "integrity": "sha512-J7A9aEQsQiv0TYtBGL7NDIPp2lOS8nnl+zm4sWZm1xlsTTaQ4PgD096Adzdrk27rw3UxCkDXdCUa4ax41oztBQ==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/harper/node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true, - "license": "ISC", "optional": true, - "peer": true + "os": [ + "win32" + ] }, - "node_modules/harper/node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "node_modules/harper/node_modules/@lmdb/lmdb-win32-x64": { + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-3.5.6.tgz", + "integrity": "sha512-1g7G0knRX2iV/voDu54yxrGqw5Dk0w2oIYb7dgJq8IkOi+m7wbD8Q3QpPFjh0C01G58S88dqGn03len6UPCXsg==", + "cpu": [ + "x64" + ], "dev": true, - "hasInstallScript": true, "license": "MIT", "optional": true, "os": [ - "darwin" - ], - "peer": true, + "win32" + ] + }, + "node_modules/harper/node_modules/@lukeed/ms": { + "version": "2.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": ">=8" } }, - "node_modules/harper/node_modules/function-bind": { - "version": "1.1.2", + "node_modules/harper/node_modules/@noble/hashes": { + "version": "1.8.0", "dev": true, + "inBundle": true, "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://paulmillr.com/funding/" } }, - "node_modules/harper/node_modules/functions-have-names": { - "version": "1.2.3", + "node_modules/harper/node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", "dev": true, + "inBundle": true, "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/harper/node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "node_modules/harper/node_modules/@nodelib/fs.stat": { + "version": "2.0.5", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { - "node": ">=6.9.0" + "node": ">= 8" } }, - "node_modules/harper/node_modules/geojson-equality": { - "version": "0.1.6", + "node_modules/harper/node_modules/@nodelib/fs.walk": { + "version": "1.2.8", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "deep-equal": "^1.0.0" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/harper/node_modules/geojson-rbush": { - "version": "3.2.0", + "node_modules/harper/node_modules/@pinojs/redact": { + "version": "0.4.0", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "MIT" + }, + "node_modules/harper/node_modules/@sideway/address": { + "version": "4.1.5", + "dev": true, + "inBundle": true, + "license": "BSD-3-Clause", "dependencies": { - "@turf/bbox": "*", - "@turf/helpers": "6.x", - "@turf/meta": "6.x", - "@types/geojson": "7946.0.8", - "rbush": "^3.0.1" + "@hapi/hoek": "^9.0.0" } }, - "node_modules/harper/node_modules/get-caller-file": { - "version": "2.0.5", + "node_modules/harper/node_modules/@sideway/formula": { + "version": "3.0.1", "dev": true, - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } + "inBundle": true, + "license": "BSD-3-Clause" }, - "node_modules/harper/node_modules/get-east-asian-width": { - "version": "1.5.0", + "node_modules/harper/node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "BSD-3-Clause" + }, + "node_modules/harper/node_modules/@turf/area": { + "version": "6.5.0", "dev": true, + "inBundle": true, "license": "MIT", - "engines": { - "node": ">=18" + "dependencies": { + "@turf/helpers": "^6.5.0", + "@turf/meta": "^6.5.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/turf" } }, - "node_modules/harper/node_modules/get-intrinsic": { - "version": "1.3.0", + "node_modules/harper/node_modules/@turf/bbox": { + "version": "6.5.0", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" + "@turf/helpers": "^6.5.0", + "@turf/meta": "^6.5.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://opencollective.com/turf" } }, - "node_modules/harper/node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "node_modules/harper/node_modules/@turf/boolean-contains": { + "version": "6.5.0", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=8.0.0" + "dependencies": { + "@turf/bbox": "^6.5.0", + "@turf/boolean-point-in-polygon": "^6.5.0", + "@turf/boolean-point-on-line": "^6.5.0", + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0" + }, + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/harper/node_modules/get-proto": { - "version": "1.0.1", + "node_modules/harper/node_modules/@turf/boolean-disjoint": { + "version": "6.5.0", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" + "@turf/boolean-point-in-polygon": "^6.5.0", + "@turf/helpers": "^6.5.0", + "@turf/line-intersect": "^6.5.0", + "@turf/meta": "^6.5.0", + "@turf/polygon-to-line": "^6.5.0" }, - "engines": { - "node": ">= 0.4" + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/harper/node_modules/gopd": { - "version": "1.2.0", + "node_modules/harper/node_modules/@turf/boolean-equal": { + "version": "6.5.0", "dev": true, + "inBundle": true, "license": "MIT", - "engines": { - "node": ">= 0.4" + "dependencies": { + "@turf/clean-coords": "^6.5.0", + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0", + "geojson-equality": "0.1.6" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://opencollective.com/turf" } }, - "node_modules/harper/node_modules/graceful-fs": { - "version": "4.2.11", + "node_modules/harper/node_modules/@turf/boolean-point-in-polygon": { + "version": "6.5.0", "dev": true, - "license": "ISC" + "inBundle": true, + "license": "MIT", + "dependencies": { + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0" + }, + "funding": { + "url": "https://opencollective.com/turf" + } }, - "node_modules/harper/node_modules/graphql": { - "version": "16.14.2", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.14.2.tgz", - "integrity": "sha512-Chq1s4CY7jmh8gO2qvLIJyfCDIN+EHLFW/9iShnp1z8FjBQMoodWP1kDC36VAMXXIvAjj4ARa7ntfAV2BrjsbA==", + "node_modules/harper/node_modules/@turf/boolean-point-on-line": { + "version": "6.5.0", "dev": true, + "inBundle": true, "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" + "dependencies": { + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0" + }, + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/harper/node_modules/graphql-http": { - "version": "1.22.4", + "node_modules/harper/node_modules/@turf/circle": { + "version": "6.5.0", "dev": true, + "inBundle": true, "license": "MIT", - "workspaces": [ - "implementations/**/*" - ], - "engines": { - "node": ">=12" + "dependencies": { + "@turf/destination": "^6.5.0", + "@turf/helpers": "^6.5.0" }, - "peerDependencies": { - "graphql": ">=0.11 <=16" + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/harper/node_modules/gunzip-maybe": { - "version": "1.4.2", + "node_modules/harper/node_modules/@turf/clean-coords": { + "version": "6.5.0", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "browserify-zlib": "^0.1.4", - "is-deflate": "^1.0.0", - "is-gzip": "^1.0.0", - "peek-stream": "^1.1.0", - "pumpify": "^1.3.3", - "through2": "^2.0.3" + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0" }, - "bin": { - "gunzip-maybe": "bin.js" + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/harper/node_modules/gunzip-maybe/node_modules/duplexify": { - "version": "3.7.1", + "node_modules/harper/node_modules/@turf/destination": { + "version": "6.5.0", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0" + }, + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/harper/node_modules/gunzip-maybe/node_modules/pump": { - "version": "2.0.1", + "node_modules/harper/node_modules/@turf/difference": { + "version": "6.5.0", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0", + "polygon-clipping": "^0.15.3" + }, + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/harper/node_modules/gunzip-maybe/node_modules/pumpify": { - "version": "1.5.1", + "node_modules/harper/node_modules/@turf/distance": { + "version": "6.5.0", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0" + }, + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/harper/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/harper/node_modules/@turf/helpers": { + "version": "6.5.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/harper/node_modules/@turf/invariant": { + "version": "6.5.0", "dev": true, + "inBundle": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "@turf/helpers": "^6.5.0" + }, + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/harper/node_modules/has-property-descriptors": { - "version": "1.0.2", + "node_modules/harper/node_modules/@turf/length": { + "version": "6.5.0", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "es-define-property": "^1.0.0" + "@turf/distance": "^6.5.0", + "@turf/helpers": "^6.5.0", + "@turf/meta": "^6.5.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://opencollective.com/turf" } }, - "node_modules/harper/node_modules/has-symbols": { - "version": "1.1.0", + "node_modules/harper/node_modules/@turf/line-intersect": { + "version": "6.5.0", "dev": true, + "inBundle": true, "license": "MIT", - "engines": { - "node": ">= 0.4" + "dependencies": { + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0", + "@turf/line-segment": "^6.5.0", + "@turf/meta": "^6.5.0", + "geojson-rbush": "3.x" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://opencollective.com/turf" } }, - "node_modules/harper/node_modules/has-tostringtag": { - "version": "1.0.2", + "node_modules/harper/node_modules/@turf/line-segment": { + "version": "6.5.0", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0", + "@turf/meta": "^6.5.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://opencollective.com/turf" } }, - "node_modules/harper/node_modules/hasown": { - "version": "2.0.2", + "node_modules/harper/node_modules/@turf/meta": { + "version": "6.5.0", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "function-bind": "^1.1.2" + "@turf/helpers": "^6.5.0" }, - "engines": { - "node": ">= 0.4" + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/harper/node_modules/hermes-compiler": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/hermes-compiler/-/hermes-compiler-0.0.0.tgz", - "integrity": "sha512-boVFutx6ME/Km2mB6vvsQcdnazEYYI/jV1pomx1wcFUG/EVqTkr5CU0CW9bKipOA/8Hyu3NYwW3THg2Q1kNCfA==", + "node_modules/harper/node_modules/@turf/polygon-to-line": { + "version": "6.5.0", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true + "dependencies": { + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0" + }, + "funding": { + "url": "https://opencollective.com/turf" + } }, - "node_modules/harper/node_modules/hermes-estree": { - "version": "0.32.0", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.32.0.tgz", - "integrity": "sha512-KWn3BqnlDOl97Xe1Yviur6NbgIZ+IP+UVSpshlZWkq+EtoHg6/cwiDj/osP9PCEgFE15KBm1O55JRwbMEm5ejQ==", + "node_modules/harper/node_modules/@types/geojson": { + "version": "7946.0.8", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "inBundle": true, + "license": "MIT" }, - "node_modules/harper/node_modules/hermes-parser": { - "version": "0.32.0", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.32.0.tgz", - "integrity": "sha512-g4nBOWFpuiTqjR3LZdRxKUkij9iyveWeuks7INEsMX741f3r9xxrOe8TeQfUxtda0eXmiIFiMQzoeSQEno33Hw==", + "node_modules/harper/node_modules/@types/node": { + "version": "25.4.0", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { - "hermes-estree": "0.32.0" + "undici-types": "~7.18.0" } }, - "node_modules/harper/node_modules/http-errors": { - "version": "2.0.1", + "node_modules/harper/node_modules/@types/readable-stream": { + "version": "4.0.23", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "depd": "~2.0.0", - "inherits": "~2.0.4", - "setprototypeof": "~1.2.0", - "statuses": "~2.0.2", - "toidentifier": "~1.0.1" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "@types/node": "*" } }, - "node_modules/harper/node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "node_modules/harper/node_modules/abort-controller": { + "version": "3.0.0", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" + "event-target-shim": "^5.0.0" }, "engines": { - "node": ">= 14" + "node": ">=6.5" } }, - "node_modules/harper/node_modules/human-readable-ids": { - "version": "1.0.4", + "node_modules/harper/node_modules/abstract-logging": { + "version": "2.0.1", "dev": true, - "license": "Apache2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/harper/node_modules/ajv-formats": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "knuth-shuffle": "^1.0.0" + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } } }, - "node_modules/harper/node_modules/iconv-lite": { - "version": "0.7.2", + "node_modules/harper/node_modules/ajv-formats/node_modules/ajv": { + "version": "8.18.0", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/harper/node_modules/ieee754": { - "version": "1.2.1", + "node_modules/harper/node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" + "inBundle": true, + "license": "MIT" }, - "node_modules/harper/node_modules/image-size": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.2.1.tgz", - "integrity": "sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==", + "node_modules/harper/node_modules/alasql": { + "version": "4.19.1", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { - "queue": "6.0.2" + "cross-fetch": "4.1.0", + "yargs": "16" }, "bin": { - "image-size": "bin/image-size.js" + "alasql": "bin/alasql-cli.js" }, "engines": { - "node": ">=16.x" + "node": ">=15" } }, - "node_modules/harper/node_modules/imurmurhash": { - "version": "0.1.4", + "node_modules/harper/node_modules/amaro": { + "version": "1.2.0", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { - "node": ">=0.8.19" + "node": ">=22" } }, - "node_modules/harper/node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "node_modules/harper/node_modules/ansi-regex": { + "version": "5.0.1", "dev": true, - "license": "ISC", - "optional": true, - "peer": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/harper/node_modules/inherits": { - "version": "2.0.4", - "dev": true, - "license": "ISC" - }, - "node_modules/harper/node_modules/inquirer": { - "version": "8.2.7", + "node_modules/harper/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "@inquirer/external-editor": "^1.0.0", - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.5.5", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6", - "wrap-ansi": "^6.0.1" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=12.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/harper/node_modules/inquirer/node_modules/bl": { - "version": "4.1.0", + "node_modules/harper/node_modules/asn1js": { + "version": "3.0.10", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "BSD-3-Clause", "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" + "pvtsutils": "^1.3.6", + "pvutils": "^1.1.5", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=12.0.0" } }, - "node_modules/harper/node_modules/inquirer/node_modules/is-interactive": { + "node_modules/harper/node_modules/atomic-sleep": { "version": "1.0.0", "dev": true, + "inBundle": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=8.0.0" } }, - "node_modules/harper/node_modules/inquirer/node_modules/ora": { - "version": "5.4.1", + "node_modules/harper/node_modules/avvio": { + "version": "9.2.0", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "inBundle": true, "license": "MIT", "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, + "@fastify/error": "^4.0.0", + "fastq": "^1.17.1" + } + }, + "node_modules/harper/node_modules/balanced-match": { + "version": "4.0.4", + "dev": true, + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "18 || 20 || >=22" } }, - "node_modules/harper/node_modules/inquirer/node_modules/readable-stream": { - "version": "3.6.2", + "node_modules/harper/node_modules/base64-js": { + "version": "1.5.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "inBundle": true, + "license": "MIT" + }, + "node_modules/harper/node_modules/bignumber.js": { + "version": "9.3.1", "dev": true, + "inBundle": true, "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, "engines": { - "node": ">= 6" + "node": "*" } }, - "node_modules/harper/node_modules/invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "node_modules/harper/node_modules/bindings": { + "version": "1.5.0", "dev": true, "license": "MIT", "optional": true, - "peer": true, "dependencies": { - "loose-envify": "^1.0.0" + "file-uri-to-path": "1.0.0" } }, - "node_modules/harper/node_modules/ipaddr.js": { - "version": "2.3.0", + "node_modules/harper/node_modules/bl": { + "version": "6.1.6", "dev": true, + "inBundle": true, "license": "MIT", - "engines": { - "node": ">= 10" + "dependencies": { + "@types/readable-stream": "^4.0.0", + "buffer": "^6.0.3", + "inherits": "^2.0.4", + "readable-stream": "^4.2.0" } }, - "node_modules/harper/node_modules/is-arguments": { - "version": "1.2.0", + "node_modules/harper/node_modules/bl/node_modules/buffer": { + "version": "6.0.3", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "inBundle": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" } }, - "node_modules/harper/node_modules/is-date-object": { - "version": "1.1.0", + "node_modules/harper/node_modules/bl/node_modules/readable-stream": { + "version": "4.7.0", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/harper/node_modules/is-deflate": { - "version": "1.0.0", + "node_modules/harper/node_modules/bl/node_modules/string_decoder": { + "version": "1.3.0", "dev": true, - "license": "MIT" + "inBundle": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } }, - "node_modules/harper/node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "node_modules/harper/node_modules/brace-expansion": { + "version": "5.0.4", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, - "bin": { - "is-docker": "cli.js" + "dependencies": { + "balanced-match": "^4.0.2" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "18 || 20 || >=22" } }, - "node_modules/harper/node_modules/is-extglob": { - "version": "2.1.1", + "node_modules/harper/node_modules/braces": { + "version": "3.0.3", "dev": true, + "inBundle": true, "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/harper/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", + "node_modules/harper/node_modules/browserify-zlib": { + "version": "0.1.4", "dev": true, + "inBundle": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "pako": "~0.2.0" } }, - "node_modules/harper/node_modules/is-glob": { - "version": "4.0.3", + "node_modules/harper/node_modules/buffer-equal-constant-time": { + "version": "1.0.1", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "BSD-3-Clause" + }, + "node_modules/harper/node_modules/buffer-from": { + "version": "1.1.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/harper/node_modules/busboy": { + "version": "1.6.0", + "dev": true, + "inBundle": true, "dependencies": { - "is-extglob": "^2.1.1" + "streamsearch": "^1.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10.16.0" } }, - "node_modules/harper/node_modules/is-gzip": { - "version": "1.0.0", + "node_modules/harper/node_modules/bytestreamjs": { + "version": "2.0.1", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "BSD-3-Clause", "engines": { - "node": ">=0.10.0" + "node": ">=6.0.0" } }, - "node_modules/harper/node_modules/is-interactive": { - "version": "2.0.0", + "node_modules/harper/node_modules/call-bind": { + "version": "1.0.8", "dev": true, + "inBundle": true, "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, "engines": { - "node": ">=12" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/harper/node_modules/is-number": { - "version": "7.0.0", + "node_modules/harper/node_modules/call-bind-apply-helpers": { + "version": "1.0.2", "dev": true, + "inBundle": true, "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, "engines": { - "node": ">=0.12.0" + "node": ">= 0.4" } }, - "node_modules/harper/node_modules/is-regex": { - "version": "1.2.1", + "node_modules/harper/node_modules/call-bound": { + "version": "1.0.4", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { "node": ">= 0.4" @@ -7025,1772 +3437,1653 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/harper/node_modules/is-unicode-supported": { - "version": "0.1.0", + "node_modules/harper/node_modules/chalk": { + "version": "4.1.2", "dev": true, + "inBundle": true, "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/harper/node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "node_modules/harper/node_modules/chokidar": { + "version": "4.0.3", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { - "is-docker": "^2.0.0" + "readdirp": "^4.0.1" }, "engines": { - "node": ">=8" - } - }, - "node_modules/harper/node_modules/isarray": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/harper/node_modules/isexe": { - "version": "2.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/harper/node_modules/isstream": { - "version": "0.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/harper/node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "dev": true, - "license": "BSD-3-Clause", - "optional": true, - "peer": true, - "engines": { - "node": ">=8" + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/harper/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "node_modules/harper/node_modules/cli-progress": { + "version": "3.12.0", "dev": true, - "license": "BSD-3-Clause", - "optional": true, - "peer": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" + "string-width": "^4.2.3" }, "engines": { - "node": ">=8" - } - }, - "node_modules/harper/node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true, - "bin": { - "semver": "bin/semver.js" + "node": ">=4" } }, - "node_modules/harper/node_modules/javascript-natural-sort": { - "version": "0.7.1", - "dev": true, - "license": "MIT" - }, - "node_modules/harper/node_modules/jest-environment-node": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", - "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "node_modules/harper/node_modules/cli-spinners": { + "version": "2.9.2", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/harper/node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "node_modules/harper/node_modules/cliui": { + "version": "7.0.4", "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "inBundle": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "node_modules/harper/node_modules/jest-haste-map": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "node_modules/harper/node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" }, - "optionalDependencies": { - "fsevents": "^2.3.2" + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/harper/node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "node_modules/harper/node_modules/clone": { + "version": "2.1.2", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.8" } }, - "node_modules/harper/node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "node_modules/harper/node_modules/color-convert": { + "version": "2.0.1", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" + "color-name": "~1.1.4" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=7.0.0" } }, - "node_modules/harper/node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "node_modules/harper/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/harper/node_modules/complex.js": { + "version": "2.4.3", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "*" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/rawify" } }, - "node_modules/harper/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "node_modules/harper/node_modules/content-disposition": { + "version": "1.0.1", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/harper/node_modules/jest-validate": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", - "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "node_modules/harper/node_modules/cookie": { + "version": "1.1.1", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@jest/types": "^29.6.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "leven": "^3.1.0", - "pretty-format": "^29.7.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/harper/node_modules/jest-worker": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "node_modules/harper/node_modules/core-util-is": { + "version": "1.0.3", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/harper/node_modules/cross-fetch": { + "version": "4.1.0", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node-fetch": "^2.7.0" } }, - "node_modules/harper/node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/harper/node_modules/debug": { + "version": "4.4.3", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { - "has-flag": "^4.0.0" + "ms": "^2.1.3" }, "engines": { - "node": ">=10" + "node": ">=6.0" }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/harper/node_modules/joi": { - "version": "17.13.4", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.4.tgz", - "integrity": "sha512-1RuuER6kmt8K8I3nIWvPZKi5RQCb568ZPyY4Pwjlua+yo+63ZTmIwxLZH0heBmiKN4uxjvCiarDrjaeH84xicQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@hapi/hoek": "^9.3.0", - "@hapi/topo": "^5.1.0", - "@sideway/address": "^4.1.5", - "@sideway/formula": "^3.0.1", - "@sideway/pinpoint": "^2.0.0" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/harper/node_modules/js-tokens": { - "version": "4.0.0", + "node_modules/harper/node_modules/decimal.js": { + "version": "10.6.0", "dev": true, + "inBundle": true, "license": "MIT" }, - "node_modules/harper/node_modules/jsc-safe-url": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/jsc-safe-url/-/jsc-safe-url-0.2.4.tgz", - "integrity": "sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==", - "dev": true, - "license": "0BSD", - "optional": true, - "peer": true - }, - "node_modules/harper/node_modules/jsesc": { - "version": "2.5.2", + "node_modules/harper/node_modules/deep-equal": { + "version": "1.1.2", "dev": true, + "inBundle": true, "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" + "dependencies": { + "is-arguments": "^1.1.1", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.5.1" }, "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/harper/node_modules/json-bigint-fixes": { - "version": "1.1.0", + "node_modules/harper/node_modules/define-data-property": { + "version": "1.1.4", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "bignumber.js": "^9.0.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/harper/node_modules/json-schema-ref-resolver": { - "version": "3.0.0", + "node_modules/harper/node_modules/define-properties": { + "version": "1.2.1", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], + "inBundle": true, "license": "MIT", "dependencies": { - "dequal": "^2.0.3" + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/harper/node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "node_modules/harper/node_modules/depd": { + "version": "2.0.0", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, - "bin": { - "json5": "lib/cli.js" - }, "engines": { - "node": ">=6" + "node": ">= 0.8" } }, - "node_modules/harper/node_modules/jsonata": { - "version": "1.8.7", + "node_modules/harper/node_modules/dequal": { + "version": "2.0.3", "dev": true, + "inBundle": true, "license": "MIT", "engines": { - "node": ">= 8" + "node": ">=6" } }, - "node_modules/harper/node_modules/jsonfile": { - "version": "6.2.0", + "node_modules/harper/node_modules/dotenv": { + "version": "16.6.1", "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" + "inBundle": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "funding": { + "url": "https://dotenvx.com" } }, - "node_modules/harper/node_modules/jsonwebtoken": { - "version": "9.0.3", + "node_modules/harper/node_modules/dunder-proto": { + "version": "1.0.1", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "jws": "^4.0.1", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1", - "semver": "^7.5.4" + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" }, "engines": { - "node": ">=12", - "npm": ">=6" - } - }, - "node_modules/harper/node_modules/jwa": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-equal-constant-time": "^1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" + "node": ">= 0.4" } }, - "node_modules/harper/node_modules/jws": { - "version": "4.0.1", + "node_modules/harper/node_modules/duplexify": { + "version": "4.1.3", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "jwa": "^2.0.1", - "safe-buffer": "^5.0.1" + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.2" } }, - "node_modules/harper/node_modules/knuth-shuffle": { - "version": "1.0.8", - "dev": true, - "license": "(MIT OR Apache-2.0)" - }, - "node_modules/harper/node_modules/layerr": { - "version": "0.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/harper/node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "node_modules/harper/node_modules/duplexify/node_modules/readable-stream": { + "version": "3.6.2", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/harper/node_modules/light-my-request": { - "version": "6.6.0", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause", "dependencies": { - "cookie": "^1.0.1", - "process-warning": "^4.0.0", - "set-cookie-parser": "^2.6.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/harper/node_modules/light-my-request/node_modules/process-warning": { - "version": "4.0.1", + "node_modules/harper/node_modules/easy-ocsp": { + "version": "1.3.2", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT" + "inBundle": true, + "license": "MIT", + "dependencies": { + "asn1js": "^3.0.5", + "pkijs": "^3.2.4" + }, + "engines": { + "node": ">=18.13.0" + } }, - "node_modules/harper/node_modules/lighthouse-logger": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz", - "integrity": "sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==", + "node_modules/harper/node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", "dev": true, + "inBundle": true, "license": "Apache-2.0", - "optional": true, - "peer": true, "dependencies": { - "debug": "^2.6.9", - "marky": "^1.2.2" + "safe-buffer": "^5.0.1" } }, - "node_modules/harper/node_modules/lighthouse-logger/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/harper/node_modules/ee-first": { + "version": "1.1.1", "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "ms": "2.0.0" - } + "inBundle": true, + "license": "MIT" + }, + "node_modules/harper/node_modules/emoji-regex": { + "version": "8.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" }, - "node_modules/harper/node_modules/lighthouse-logger/node_modules/ms": { + "node_modules/harper/node_modules/encodeurl": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true + "engines": { + "node": ">= 0.8" + } }, - "node_modules/harper/node_modules/lmdb": { - "version": "3.5.6", - "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-3.5.6.tgz", - "integrity": "sha512-j3uE8ReKNyUWDjhfEFSJqE/1DLtfTR5Z8yFzVHvBjAk37wNg7HdScjcv8ttPHRvrdgPQMPWxFFI0SsdBzI5lBw==", + "node_modules/harper/node_modules/end-of-stream": { + "version": "1.4.5", "dev": true, - "hasInstallScript": true, + "inBundle": true, "license": "MIT", "dependencies": { - "@harperfast/extended-iterable": "^1.0.3", - "msgpackr": "^1.11.2", - "node-addon-api": "^6.1.0", - "node-gyp-build-optional-packages": "5.2.2", - "ordered-binary": "^1.5.3", - "weak-lru-cache": "^1.2.2" - }, - "bin": { - "download-lmdb-prebuilds": "bin/download-prebuilds.js" - }, - "optionalDependencies": { - "@lmdb/lmdb-darwin-arm64": "3.5.6", - "@lmdb/lmdb-darwin-x64": "3.5.6", - "@lmdb/lmdb-linux-arm": "3.5.6", - "@lmdb/lmdb-linux-arm64": "3.5.6", - "@lmdb/lmdb-linux-x64": "3.5.6", - "@lmdb/lmdb-win32-arm64": "3.5.6", - "@lmdb/lmdb-win32-x64": "3.5.6" + "once": "^1.4.0" } }, - "node_modules/harper/node_modules/lmdb/node_modules/msgpackr": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.12.1.tgz", - "integrity": "sha512-4EUH9tQHnMmEgzW/MdAP0KIfa1T9AF+htl0ffe2n5vb2EKn9y2co8ccpgWko6S52Jy1PQZKwRnx5/KkYjtd9MQ==", + "node_modules/harper/node_modules/es-define-property": { + "version": "1.0.1", "dev": true, + "inBundle": true, "license": "MIT", - "optionalDependencies": { - "msgpackr-extract": "^3.0.2" + "engines": { + "node": ">= 0.4" } }, - "node_modules/harper/node_modules/lmdb/node_modules/node-addon-api": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", - "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", + "node_modules/harper/node_modules/es-errors": { + "version": "1.3.0", "dev": true, - "license": "MIT" + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } }, - "node_modules/harper/node_modules/lmdb/node_modules/node-gyp-build-optional-packages": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz", - "integrity": "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==", + "node_modules/harper/node_modules/es-object-atoms": { + "version": "1.1.1", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "detect-libc": "^2.0.1" + "es-errors": "^1.3.0" }, - "bin": { - "node-gyp-build-optional-packages": "bin.js", - "node-gyp-build-optional-packages-optional": "optional.js", - "node-gyp-build-optional-packages-test": "build-test.js" + "engines": { + "node": ">= 0.4" } }, - "node_modules/harper/node_modules/lodash": { - "version": "4.18.1", + "node_modules/harper/node_modules/escalade": { + "version": "3.2.0", "dev": true, - "license": "MIT" + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "node_modules/harper/node_modules/lodash.includes": { - "version": "4.3.0", + "node_modules/harper/node_modules/escape-html": { + "version": "1.0.3", "dev": true, + "inBundle": true, "license": "MIT" }, - "node_modules/harper/node_modules/lodash.isboolean": { - "version": "3.0.3", + "node_modules/harper/node_modules/escape-latex": { + "version": "1.2.0", "dev": true, + "inBundle": true, "license": "MIT" }, - "node_modules/harper/node_modules/lodash.isinteger": { - "version": "4.0.4", + "node_modules/harper/node_modules/etag": { + "version": "1.8.1", "dev": true, - "license": "MIT" + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } }, - "node_modules/harper/node_modules/lodash.isnumber": { - "version": "3.0.3", + "node_modules/harper/node_modules/event-target-shim": { + "version": "5.0.1", "dev": true, - "license": "MIT" + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "node_modules/harper/node_modules/lodash.isplainobject": { - "version": "4.0.6", + "node_modules/harper/node_modules/events": { + "version": "3.3.0", "dev": true, - "license": "MIT" + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } }, - "node_modules/harper/node_modules/lodash.isstring": { - "version": "4.0.1", + "node_modules/harper/node_modules/fast-decode-uri-component": { + "version": "1.0.1", "dev": true, + "inBundle": true, "license": "MIT" }, - "node_modules/harper/node_modules/lodash.once": { - "version": "4.1.1", + "node_modules/harper/node_modules/fast-deep-equal": { + "version": "3.1.3", "dev": true, + "inBundle": true, "license": "MIT" }, - "node_modules/harper/node_modules/lodash.throttle": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", - "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/harper/node_modules/log-symbols": { - "version": "4.1.0", + "node_modules/harper/node_modules/fast-glob": { + "version": "3.3.3", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8.6.0" } }, - "node_modules/harper/node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "node_modules/harper/node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", "dev": true, - "license": "MIT", - "optional": true, - "peer": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" + "is-glob": "^4.0.1" }, - "bin": { - "loose-envify": "cli.js" + "engines": { + "node": ">= 6" } }, - "node_modules/harper/node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "node_modules/harper/node_modules/fast-json-stringify": { + "version": "6.3.0", "dev": true, - "license": "BSD-3-Clause", - "optional": true, - "peer": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "inBundle": true, + "license": "MIT", "dependencies": { - "tmpl": "1.0.5" + "@fastify/merge-json-schemas": "^0.2.0", + "ajv": "^8.12.0", + "ajv-formats": "^3.0.1", + "fast-uri": "^3.0.0", + "json-schema-ref-resolver": "^3.0.0", + "rfdc": "^1.2.0" } }, - "node_modules/harper/node_modules/marky": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/marky/-/marky-1.3.0.tgz", - "integrity": "sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "peer": true - }, - "node_modules/harper/node_modules/math-intrinsics": { - "version": "1.1.0", + "node_modules/harper/node_modules/fast-json-stringify/node_modules/ajv": { + "version": "8.18.0", "dev": true, + "inBundle": true, "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/harper/node_modules/mathjs": { - "version": "11.12.0", - "dev": true, - "license": "Apache-2.0", "dependencies": { - "@babel/runtime": "^7.23.2", - "complex.js": "^2.1.1", - "decimal.js": "^10.4.3", - "escape-latex": "^1.2.0", - "fraction.js": "4.3.4", - "javascript-natural-sort": "^0.7.1", - "seedrandom": "^3.0.5", - "tiny-emitter": "^2.1.0", - "typed-function": "^4.1.1" - }, - "bin": { - "mathjs": "bin/cli.js" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" }, - "engines": { - "node": ">= 14" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/harper/node_modules/memoize-one": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", - "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==", + "node_modules/harper/node_modules/fast-json-stringify/node_modules/json-schema-traverse": { + "version": "1.0.0", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "inBundle": true, + "license": "MIT" }, - "node_modules/harper/node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "node_modules/harper/node_modules/fast-querystring": { + "version": "1.1.2", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true + "dependencies": { + "fast-decode-uri-component": "^1.0.1" + } }, - "node_modules/harper/node_modules/merge2": { - "version": "1.4.1", + "node_modules/harper/node_modules/fast-redact": { + "version": "3.5.0", "dev": true, + "inBundle": true, "license": "MIT", "engines": { - "node": ">= 8" + "node": ">=6" } }, - "node_modules/harper/node_modules/metro": { - "version": "0.83.7", - "resolved": "https://registry.npmjs.org/metro/-/metro-0.83.7.tgz", - "integrity": "sha512-SPaPEyvTsTmd0LpT7RaZciQyDw2i/JB7+iY9L5VfBo72+psescFxBqpI1TL9dnL+pmnfkU+l/J1mEEGLeF65EQ==", + "node_modules/harper/node_modules/fast-string-truncated-width": { + "version": "3.0.3", "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.29.0", - "@babel/core": "^7.25.2", - "@babel/generator": "^7.29.1", - "@babel/parser": "^7.29.0", - "@babel/template": "^7.28.6", - "@babel/traverse": "^7.29.0", - "@babel/types": "^7.29.0", - "accepts": "^2.0.0", - "ci-info": "^2.0.0", - "connect": "^3.6.5", - "debug": "^4.4.0", - "error-stack-parser": "^2.0.6", - "flow-enums-runtime": "^0.0.6", - "graceful-fs": "^4.2.4", - "hermes-parser": "0.35.0", - "image-size": "^1.0.2", - "invariant": "^2.2.4", - "jest-worker": "^29.7.0", - "jsc-safe-url": "^0.2.2", - "lodash.throttle": "^4.1.1", - "metro-babel-transformer": "0.83.7", - "metro-cache": "0.83.7", - "metro-cache-key": "0.83.7", - "metro-config": "0.83.7", - "metro-core": "0.83.7", - "metro-file-map": "0.83.7", - "metro-resolver": "0.83.7", - "metro-runtime": "0.83.7", - "metro-source-map": "0.83.7", - "metro-symbolicate": "0.83.7", - "metro-transform-plugins": "0.83.7", - "metro-transform-worker": "0.83.7", - "mime-types": "^3.0.1", - "nullthrows": "^1.1.1", - "serialize-error": "^2.1.0", - "source-map": "^0.5.6", - "throat": "^5.0.0", - "ws": "^7.5.10", - "yargs": "^17.6.2" - }, - "bin": { - "metro": "src/cli.js" - }, - "engines": { - "node": ">=20.19.4" - } + "inBundle": true, + "license": "MIT" }, - "node_modules/harper/node_modules/metro-babel-transformer": { - "version": "0.83.7", - "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.83.7.tgz", - "integrity": "sha512-sBqBkt6kNut/88bv+Ucvm4yqdPetbvAEsHzi3MAgJEifOSYYzX5Z5Kgw3TFOrwf/mHJTOBG2ONlaMHoyfP15TA==", + "node_modules/harper/node_modules/fast-string-width": { + "version": "3.0.2", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { - "@babel/core": "^7.25.2", - "flow-enums-runtime": "^0.0.6", - "hermes-parser": "0.35.0", - "metro-cache-key": "0.83.7", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">=20.19.4" + "fast-string-truncated-width": "^3.0.2" } }, - "node_modules/harper/node_modules/metro-babel-transformer/node_modules/hermes-estree": { - "version": "0.35.0", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.35.0.tgz", - "integrity": "sha512-xVx5Opwy8Oo1I5yGpVRhCvWL/iV3M+ylksSKVNlxxD90cpDpR/AR1jLYqK8HWihm065a6UI3HeyAmYzwS8NOOg==", + "node_modules/harper/node_modules/fast-uri": { + "version": "3.1.0", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "inBundle": true, + "license": "BSD-3-Clause" }, - "node_modules/harper/node_modules/metro-babel-transformer/node_modules/hermes-parser": { - "version": "0.35.0", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.35.0.tgz", - "integrity": "sha512-9JLjeHxBx8T4CAsydZR49PNZUaix+WpQJwu9p2010lu+7Kwl6D/7wYFFJxoz+aXkaaClp9Zfg6W6/zVlSJORaA==", + "node_modules/harper/node_modules/fast-wrap-ansi": { + "version": "0.2.2", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { - "hermes-estree": "0.35.0" + "fast-string-width": "^3.0.2" } }, - "node_modules/harper/node_modules/metro-cache": { - "version": "0.83.7", - "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.83.7.tgz", - "integrity": "sha512-E9SRePXQ1Zvlj79VcOk57q7VC7rMHMFQ+jhmPHBiq+dJ0bJB5BL87lWZF6oh5X76Cci5tpDuQNaDwwuSCToEeg==", + "node_modules/harper/node_modules/fastify": { + "version": "5.12.5", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { - "exponential-backoff": "^3.1.1", - "flow-enums-runtime": "^0.0.6", - "https-proxy-agent": "^7.0.5", - "metro-core": "0.83.7" - }, - "engines": { - "node": ">=20.19.4" + "@fastify/ajv-compiler": "^4.0.5", + "@fastify/error": "^4.0.0", + "@fastify/fast-json-stringify-compiler": "^5.0.0", + "@fastify/proxy-addr": "^5.0.0", + "abstract-logging": "^2.0.1", + "avvio": "^9.0.0", + "fast-json-stringify": "^7.0.0", + "find-my-way": "^9.6.0", + "light-my-request": "^6.0.0", + "pino": "^9.14.0 || ^10.1.0", + "process-warning": "^5.1.0", + "rfdc": "^1.3.1", + "secure-json-parse": "^4.0.0", + "semver": "^7.6.0", + "toad-cache": "^3.7.0" } }, - "node_modules/harper/node_modules/metro-cache-key": { - "version": "0.83.7", - "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.83.7.tgz", - "integrity": "sha512-W1c2Nmx8MiJTJt+eWhMO08z9VKi3kZOaz99IYGdqeqDgY9j+yZjXl62rUav4Di0heZfh4/n2s722PqRL1OODeg==", + "node_modules/harper/node_modules/fastify-plugin": { + "version": "5.1.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "inBundle": true, + "license": "MIT" + }, + "node_modules/harper/node_modules/fastify/node_modules/ajv": { + "version": "8.20.0", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { - "flow-enums-runtime": "^0.0.6" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" }, - "engines": { - "node": ">=20.19.4" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/harper/node_modules/metro-config": { - "version": "0.83.7", - "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.83.7.tgz", - "integrity": "sha512-83mjWFbFOt2GeJ6pFIum5mSnc1uTsZJAtD8o4ej0s4NVsYsA7fB+pHvTfHhFrpeMONaobu2riKavkPei05Er/Q==", + "node_modules/harper/node_modules/fastify/node_modules/fast-json-stringify": { + "version": "7.0.1", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { - "connect": "^3.6.5", - "flow-enums-runtime": "^0.0.6", - "jest-validate": "^29.7.0", - "metro": "0.83.7", - "metro-cache": "0.83.7", - "metro-core": "0.83.7", - "metro-runtime": "0.83.7", - "yaml": "^2.6.1" - }, - "engines": { - "node": ">=20.19.4" + "@fastify/merge-json-schemas": "^0.2.0", + "ajv": "^8.12.0", + "ajv-formats": "^3.0.1", + "fast-uri": "^4.0.0", + "json-schema-ref-resolver": "^3.0.0", + "rfdc": "^1.2.0" } }, - "node_modules/harper/node_modules/metro-core": { - "version": "0.83.7", - "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.83.7.tgz", - "integrity": "sha512-6yn3w1wnltT6RQl7p7YES2l95ArC+mWrOssEiH8p5/DDrJS65/szf9LsC9JrBv8c5DdvSY3V3f0GRYg0Ox7hCg==", + "node_modules/harper/node_modules/fastify/node_modules/fast-json-stringify/node_modules/fast-uri": { + "version": "4.2.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "inBundle": true, + "license": "BSD-3-Clause" + }, + "node_modules/harper/node_modules/fastify/node_modules/json-schema-traverse": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/harper/node_modules/fastify/node_modules/pino": { + "version": "10.3.1", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { - "flow-enums-runtime": "^0.0.6", - "lodash.throttle": "^4.1.1", - "metro-resolver": "0.83.7" + "@pinojs/redact": "^0.4.0", + "atomic-sleep": "^1.0.0", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^3.0.0", + "pino-std-serializers": "^7.0.0", + "process-warning": "^5.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.2.0", + "safe-stable-stringify": "^2.3.1", + "sonic-boom": "^4.0.1", + "thread-stream": "^4.0.0" }, - "engines": { - "node": ">=20.19.4" + "bin": { + "pino": "bin.js" } }, - "node_modules/harper/node_modules/metro-file-map": { - "version": "0.83.7", - "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.83.7.tgz", - "integrity": "sha512-+j0F1m+FQYVAQ6syf+mwhIPV5GoFQrkInX8bppuc50IzNsZbMrp8R5H/Sx/K2daQ3YEa9F/XwkeZT8gzJfgeCw==", + "node_modules/harper/node_modules/fastify/node_modules/pino-std-serializers": { + "version": "7.1.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/harper/node_modules/fastify/node_modules/sonic-boom": { + "version": "4.2.1", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { - "debug": "^4.4.0", - "fb-watchman": "^2.0.0", - "flow-enums-runtime": "^0.0.6", - "graceful-fs": "^4.2.4", - "invariant": "^2.2.4", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "nullthrows": "^1.1.1", - "walker": "^1.0.7" - }, - "engines": { - "node": ">=20.19.4" + "atomic-sleep": "^1.0.0" } }, - "node_modules/harper/node_modules/metro-minify-terser": { - "version": "0.83.7", - "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.83.7.tgz", - "integrity": "sha512-MfJar2IS4tBRuLb9svwb0Gu5l9BsH+pcRm8eGcEi/wy8MzZinfinh5dFLt2nWkocnulIgtGB5NkFDdbXqMXKhQ==", + "node_modules/harper/node_modules/fastify/node_modules/thread-stream": { + "version": "4.2.0", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { - "flow-enums-runtime": "^0.0.6", - "terser": "^5.15.0" + "real-require": "^1.0.0" }, "engines": { - "node": ">=20.19.4" + "node": ">=20" } }, - "node_modules/harper/node_modules/metro-resolver": { - "version": "0.83.7", - "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.83.7.tgz", - "integrity": "sha512-WSJIENlMcoSsuz66IfBHOkgfp3KJt2UW2TnEHPf1b8pIG2eEXNOVmo2+03A0H17WY2XGXWgxL0CG7FAopqgB1A==", + "node_modules/harper/node_modules/fastify/node_modules/thread-stream/node_modules/real-require": { + "version": "1.0.0", "dev": true, - "license": "MIT", - "optional": true, - "peer": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/harper/node_modules/fastq": { + "version": "1.20.1", + "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "flow-enums-runtime": "^0.0.6" - }, - "engines": { - "node": ">=20.19.4" + "reusify": "^1.0.4" } }, - "node_modules/harper/node_modules/metro-runtime": { - "version": "0.83.7", - "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.83.7.tgz", - "integrity": "sha512-9GKkJURaB2iyYoEExKnedzAHzxmKtSi+k0tsZUvMoU27tBZJElchYt7JH/Ai/XzYAI9lCAaV7u5HZSI8J5Z+wQ==", + "node_modules/harper/node_modules/file-uri-to-path": { + "version": "1.0.0", "dev": true, "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.25.0", - "flow-enums-runtime": "^0.0.6" - }, - "engines": { - "node": ">=20.19.4" - } + "optional": true }, - "node_modules/harper/node_modules/metro-source-map": { - "version": "0.83.7", - "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.83.7.tgz", - "integrity": "sha512-JgA1h7oc1a1jydBe1GhVFsUoMYo3wLPk7oRA32rjlDsq+sP2JLt9x2p2lWbNSxTm/u8NV4VRid3hvEJgcX8tKw==", + "node_modules/harper/node_modules/fill-range": { + "version": "7.1.1", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { - "@babel/traverse": "^7.29.0", - "@babel/types": "^7.29.0", - "flow-enums-runtime": "^0.0.6", - "invariant": "^2.2.4", - "metro-symbolicate": "0.83.7", - "nullthrows": "^1.1.1", - "ob1": "0.83.7", - "source-map": "^0.5.6", - "vlq": "^1.0.0" + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">=20.19.4" + "node": ">=8" } }, - "node_modules/harper/node_modules/metro-source-map/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/harper/node_modules/find-my-way": { + "version": "9.6.0", "dev": true, - "license": "BSD-3-Clause", - "optional": true, - "peer": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-querystring": "^1.0.0", + "safe-regex2": "^5.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=20" } }, - "node_modules/harper/node_modules/metro-symbolicate": { - "version": "0.83.7", - "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.83.7.tgz", - "integrity": "sha512-g4suyxw20WOHWI680c+Kq4wC/NF+Hx5pRH9afrMp+sMTxqLeKcPR1Xf4wMhsjlbvx7LbIREdke6q928jEjvJWw==", + "node_modules/harper/node_modules/fraction.js": { + "version": "4.3.4", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "flow-enums-runtime": "^0.0.6", - "invariant": "^2.2.4", - "metro-source-map": "0.83.7", - "nullthrows": "^1.1.1", - "source-map": "^0.5.6", - "vlq": "^1.0.0" - }, - "bin": { - "metro-symbolicate": "src/index.js" - }, "engines": { - "node": ">=20.19.4" + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" } }, - "node_modules/harper/node_modules/metro-symbolicate/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/harper/node_modules/fresh": { + "version": "2.0.0", "dev": true, - "license": "BSD-3-Clause", - "optional": true, - "peer": true, + "inBundle": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.8" } }, - "node_modules/harper/node_modules/metro-transform-plugins": { - "version": "0.83.7", - "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.83.7.tgz", - "integrity": "sha512-Ss0FpBiZDjX2kwhukMDl5sNdYK8T/06IPqxNE4H6PTlRlfs9q11cef13c/xESY/Pm4VCkp1yJUZO3kXzvMxQFA==", + "node_modules/harper/node_modules/fs-extra": { + "version": "11.4.0", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { - "@babel/core": "^7.25.2", - "@babel/generator": "^7.29.1", - "@babel/template": "^7.28.6", - "@babel/traverse": "^7.29.0", - "flow-enums-runtime": "^0.0.6", - "nullthrows": "^1.1.1" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">=20.19.4" + "node": ">=14.14" } }, - "node_modules/harper/node_modules/metro-transform-worker": { - "version": "0.83.7", - "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.83.7.tgz", - "integrity": "sha512-UegCo7ygB2fT64mRK2nbAjQVJ1zSwIIHy8d96jJv2nKZFDaViYBiughEdu5HM/Ceq0WN3LZrZk3zhl9aoiLYFw==", + "node_modules/harper/node_modules/function-bind": { + "version": "1.1.2", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@babel/core": "^7.25.2", - "@babel/generator": "^7.29.1", - "@babel/parser": "^7.29.0", - "@babel/types": "^7.29.0", - "flow-enums-runtime": "^0.0.6", - "metro": "0.83.7", - "metro-babel-transformer": "0.83.7", - "metro-cache": "0.83.7", - "metro-cache-key": "0.83.7", - "metro-minify-terser": "0.83.7", - "metro-source-map": "0.83.7", - "metro-transform-plugins": "0.83.7", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">=20.19.4" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/harper/node_modules/metro/node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "node_modules/harper/node_modules/functions-have-names": { + "version": "1.2.3", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/harper/node_modules/metro/node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "node_modules/harper/node_modules/geojson-equality": { + "version": "0.1.6", "dev": true, - "license": "ISC", - "optional": true, - "peer": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" + "deep-equal": "^1.0.0" } }, - "node_modules/harper/node_modules/metro/node_modules/hermes-estree": { - "version": "0.35.0", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.35.0.tgz", - "integrity": "sha512-xVx5Opwy8Oo1I5yGpVRhCvWL/iV3M+ylksSKVNlxxD90cpDpR/AR1jLYqK8HWihm065a6UI3HeyAmYzwS8NOOg==", + "node_modules/harper/node_modules/geojson-rbush": { + "version": "3.2.0", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true + "dependencies": { + "@turf/bbox": "*", + "@turf/helpers": "6.x", + "@turf/meta": "6.x", + "@types/geojson": "7946.0.8", + "rbush": "^3.0.1" + } + }, + "node_modules/harper/node_modules/get-caller-file": { + "version": "2.0.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } }, - "node_modules/harper/node_modules/metro/node_modules/hermes-parser": { - "version": "0.35.0", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.35.0.tgz", - "integrity": "sha512-9JLjeHxBx8T4CAsydZR49PNZUaix+WpQJwu9p2010lu+7Kwl6D/7wYFFJxoz+aXkaaClp9Zfg6W6/zVlSJORaA==", + "node_modules/harper/node_modules/get-east-asian-width": { + "version": "1.5.0", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "hermes-estree": "0.35.0" + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/harper/node_modules/metro/node_modules/mime-types": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", - "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "node_modules/harper/node_modules/get-intrinsic": { + "version": "1.3.0", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { - "mime-db": "^1.54.0" + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, "engines": { - "node": ">=18" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/harper/node_modules/metro/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "node_modules/harper/node_modules/get-proto": { + "version": "1.0.1", "dev": true, - "license": "BSD-3-Clause", - "optional": true, - "peer": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/harper/node_modules/metro/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "node_modules/harper/node_modules/glob": { + "version": "13.0.6", "dev": true, - "license": "MIT", - "optional": true, - "peer": true, + "inBundle": true, + "license": "BlueOak-1.0.0", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" }, "engines": { - "node": ">=10" + "node": "18 || 20 || >=22" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/harper/node_modules/metro/node_modules/ws": { - "version": "7.5.11", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.11.tgz", - "integrity": "sha512-zS54Oen9bITtp7kp2XM3AydrCIq1D+HwJOuH+c+e4LfpL/lotP5osijd+UoMnxwAam1GN8R4KtLAyIrIcBNpiA==", + "node_modules/harper/node_modules/gopd": { + "version": "1.2.0", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/harper/node_modules/graceful-fs": { + "version": "4.2.11", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/harper/node_modules/graphql": { + "version": "16.14.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" } }, - "node_modules/harper/node_modules/metro/node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "node_modules/harper/node_modules/graphql-http": { + "version": "1.23.0", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, + "workspaces": [ + "implementations/**/*" + ], "engines": { "node": ">=12" + }, + "peerDependencies": { + "graphql": ">=0.11 <=17" } }, - "node_modules/harper/node_modules/micromatch": { - "version": "4.0.8", + "node_modules/harper/node_modules/gunzip-maybe": { + "version": "1.4.2", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" + "browserify-zlib": "^0.1.4", + "is-deflate": "^1.0.0", + "is-gzip": "^1.0.0", + "peek-stream": "^1.1.0", + "pumpify": "^1.3.3", + "through2": "^2.0.3" }, - "engines": { - "node": ">=8.6" + "bin": { + "gunzip-maybe": "bin.js" } }, - "node_modules/harper/node_modules/mime": { - "version": "3.0.0", + "node_modules/harper/node_modules/gunzip-maybe/node_modules/duplexify": { + "version": "3.7.1", "dev": true, + "inBundle": true, "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=10.0.0" + "dependencies": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" } }, - "node_modules/harper/node_modules/mime-db": { - "version": "1.54.0", + "node_modules/harper/node_modules/gunzip-maybe/node_modules/pump": { + "version": "2.0.1", "dev": true, + "inBundle": true, "license": "MIT", - "engines": { - "node": ">= 0.6" + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, - "node_modules/harper/node_modules/mimic-fn": { - "version": "2.1.0", + "node_modules/harper/node_modules/gunzip-maybe/node_modules/pumpify": { + "version": "1.5.1", "dev": true, + "inBundle": true, "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" } }, - "node_modules/harper/node_modules/mimic-function": { - "version": "5.0.1", + "node_modules/harper/node_modules/has-flag": { + "version": "4.0.0", "dev": true, + "inBundle": true, "license": "MIT", "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/harper/node_modules/minimatch": { - "version": "10.2.4", + "node_modules/harper/node_modules/has-property-descriptors": { + "version": "1.0.2", "dev": true, - "license": "BlueOak-1.0.0", + "inBundle": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^5.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" + "es-define-property": "^1.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/harper/node_modules/minimist": { - "version": "1.2.8", + "node_modules/harper/node_modules/has-symbols": { + "version": "1.1.0", "dev": true, + "inBundle": true, "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/harper/node_modules/minipass": { - "version": "7.1.3", + "node_modules/harper/node_modules/has-tostringtag": { + "version": "1.0.2", "dev": true, - "license": "BlueOak-1.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/harper/node_modules/mkdirp": { - "version": "1.0.4", + "node_modules/harper/node_modules/hasown": { + "version": "2.0.4", "dev": true, + "inBundle": true, "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" + "dependencies": { + "function-bind": "^1.1.2" }, "engines": { - "node": ">=10" + "node": ">= 0.4" } }, - "node_modules/harper/node_modules/moment": { - "version": "2.30.1", + "node_modules/harper/node_modules/http-errors": { + "version": "2.0.1", "dev": true, + "inBundle": true, "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, "engines": { - "node": "*" + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/harper/node_modules/mqtt-packet": { - "version": "9.0.2", + "node_modules/harper/node_modules/human-readable-ids": { + "version": "1.0.4", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "Apache2", "dependencies": { - "bl": "^6.0.8", - "debug": "^4.3.4", - "process-nextick-args": "^2.0.1" + "knuth-shuffle": "^1.0.0" } }, - "node_modules/harper/node_modules/ms": { - "version": "2.1.3", + "node_modules/harper/node_modules/ieee754": { + "version": "1.2.1", "dev": true, - "license": "MIT" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "inBundle": true, + "license": "BSD-3-Clause" }, - "node_modules/harper/node_modules/msgpackr": { + "node_modules/harper/node_modules/inherits": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-2.0.4.tgz", - "integrity": "sha512-o1C5KRmuRt+apqMr1HuGSqWStZoRBUpEsCsl15uM9VdAF1qHLtvMOU2En747EnTyEl6c4pzPewRMFF31s1CNbA==", "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/harper/node_modules/ipaddr.js": { + "version": "2.3.0", + "dev": true, + "inBundle": true, "license": "MIT", - "optionalDependencies": { - "msgpackr-extract": "^3.0.4" + "engines": { + "node": ">= 10" } }, - "node_modules/harper/node_modules/msgpackr-extract": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.4.tgz", - "integrity": "sha512-4kmO/MdyUIkLIvTPr8VHLil4AtoKIoniWPIEk5+CDy0xnWC84azhSFmuJ7PxZdsYtiP5kEeQsORAVIeMgxT+Hw==", + "node_modules/harper/node_modules/is-arguments": { + "version": "1.2.0", "dev": true, - "hasInstallScript": true, + "inBundle": true, "license": "MIT", - "optional": true, "dependencies": { - "node-gyp-build-optional-packages": "5.2.2" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, - "bin": { - "download-msgpackr-prebuilds": "bin/download-prebuilds.js" + "engines": { + "node": ">= 0.4" }, - "optionalDependencies": { - "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.4", - "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.4", - "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.4", - "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.4", - "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.4", - "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.4" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/harper/node_modules/msgpackr-extract/node_modules/node-gyp-build-optional-packages": { - "version": "5.2.2", + "node_modules/harper/node_modules/is-date-object": { + "version": "1.1.0", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, "dependencies": { - "detect-libc": "^2.0.1" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, - "bin": { - "node-gyp-build-optional-packages": "bin.js", - "node-gyp-build-optional-packages-optional": "optional.js", - "node-gyp-build-optional-packages-test": "build-test.js" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/harper/node_modules/mute-stream": { - "version": "0.0.8", + "node_modules/harper/node_modules/is-deflate": { + "version": "1.0.0", "dev": true, - "license": "ISC" + "inBundle": true, + "license": "MIT" }, - "node_modules/harper/node_modules/nan": { - "version": "2.25.0", + "node_modules/harper/node_modules/is-extglob": { + "version": "2.1.1", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/harper/node_modules/needle": { - "version": "3.5.0", + "node_modules/harper/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", "dev": true, + "inBundle": true, "license": "MIT", - "dependencies": { - "iconv-lite": "^0.6.3", - "sax": "^1.2.4" - }, - "bin": { - "needle": "bin/needle" - }, "engines": { - "node": ">= 4.4.x" + "node": ">=8" } }, - "node_modules/harper/node_modules/needle/node_modules/iconv-lite": { - "version": "0.6.3", + "node_modules/harper/node_modules/is-glob": { + "version": "4.0.3", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "is-extglob": "^2.1.1" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/harper/node_modules/negotiator": { + "node_modules/harper/node_modules/is-gzip": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { - "node": ">= 0.6" + "node": ">=0.10.0" } }, - "node_modules/harper/node_modules/node-addon-api": { - "version": "8.6.0", + "node_modules/harper/node_modules/is-interactive": { + "version": "2.0.0", "dev": true, + "inBundle": true, "license": "MIT", "engines": { - "node": "^18 || ^20 || >= 21" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/harper/node_modules/node-fetch": { - "version": "2.7.0", + "node_modules/harper/node_modules/is-number": { + "version": "7.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/harper/node_modules/is-regex": { + "version": "1.2.1", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "whatwg-url": "^5.0.0" + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/harper/node_modules/node-forge": { - "version": "1.4.0", + "node_modules/harper/node_modules/isarray": { + "version": "1.0.0", "dev": true, - "license": "(BSD-3-Clause OR GPL-2.0)", - "engines": { - "node": ">= 6.13.0" - } + "inBundle": true, + "license": "MIT" }, - "node_modules/harper/node_modules/node-gyp-build-optional-packages": { - "version": "5.1.1", + "node_modules/harper/node_modules/javascript-natural-sort": { + "version": "0.7.1", "dev": true, - "license": "MIT", - "optional": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/harper/node_modules/joi": { + "version": "17.13.8", + "dev": true, + "inBundle": true, + "license": "BSD-3-Clause", "dependencies": { - "detect-libc": "^2.0.1" - }, - "bin": { - "node-gyp-build-optional-packages": "bin.js", - "node-gyp-build-optional-packages-optional": "optional.js", - "node-gyp-build-optional-packages-test": "build-test.js" + "@hapi/hoek": "^9.3.0", + "@hapi/topo": "^5.1.0", + "@sideway/address": "^4.1.5", + "@sideway/formula": "^3.0.1", + "@sideway/pinpoint": "^2.0.0" } }, - "node_modules/harper/node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "node_modules/harper/node_modules/js-tokens": { + "version": "4.0.0", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "inBundle": true, + "license": "MIT" }, - "node_modules/harper/node_modules/node-releases": { - "version": "2.0.46", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.46.tgz", - "integrity": "sha512-GYVXHE2KnrzAfsAjl4uP++evGFCrAU1jta4ubEjIG7YWt/64Gqv66a30yKwWczVjA6j3bM4nBwH7Pk1JmDHaxQ==", + "node_modules/harper/node_modules/jsesc": { + "version": "2.5.2", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, + "bin": { + "jsesc": "bin/jsesc" + }, "engines": { - "node": ">=18" + "node": ">=4" } }, - "node_modules/harper/node_modules/node-stream-zip": { - "version": "1.15.0", + "node_modules/harper/node_modules/json-bigint-fixes": { + "version": "1.1.0", "dev": true, + "inBundle": true, "license": "MIT", - "engines": { - "node": ">=0.12.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/antelle" + "dependencies": { + "bignumber.js": "^9.0.0" } }, - "node_modules/harper/node_modules/normalize-path": { + "node_modules/harper/node_modules/json-schema-ref-resolver": { "version": "3.0.0", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "inBundle": true, "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "dequal": "^2.0.3" } }, - "node_modules/harper/node_modules/nullthrows": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", - "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/harper/node_modules/ob1": { - "version": "0.83.7", - "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.83.7.tgz", - "integrity": "sha512-9M5kpuOLyTPogMtZiQUIxdAZxl7Dxs6tVBbJErSumsqGMuhVSoUbkfeZ3XNPpLpwBBtqY5QDUzGwggLHX3slQg==", + "node_modules/harper/node_modules/jsonata": { + "version": "1.8.9", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "flow-enums-runtime": "^0.0.6" - }, "engines": { - "node": ">=20.19.4" + "node": ">= 8" } }, - "node_modules/harper/node_modules/object-is": { - "version": "1.1.6", + "node_modules/harper/node_modules/jsonfile": { + "version": "6.2.0", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" + "universalify": "^2.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/harper/node_modules/object-keys": { - "version": "1.1.1", + "node_modules/harper/node_modules/jsonwebtoken": { + "version": "9.0.3", "dev": true, + "inBundle": true, "license": "MIT", + "dependencies": { + "jws": "^4.0.1", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, "engines": { - "node": ">= 0.4" + "node": ">=12", + "npm": ">=6" } }, - "node_modules/harper/node_modules/on-exit-leak-free": { - "version": "2.1.2", + "node_modules/harper/node_modules/jwa": { + "version": "2.0.1", "dev": true, + "inBundle": true, "license": "MIT", - "engines": { - "node": ">=14.0.0" + "dependencies": { + "buffer-equal-constant-time": "^1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" } }, - "node_modules/harper/node_modules/on-finished": { - "version": "2.4.1", + "node_modules/harper/node_modules/jws": { + "version": "4.0.1", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" + "jwa": "^2.0.1", + "safe-buffer": "^5.0.1" } }, - "node_modules/harper/node_modules/once": { - "version": "1.4.0", + "node_modules/harper/node_modules/knuth-shuffle": { + "version": "1.0.8", "dev": true, - "license": "ISC", + "inBundle": true, + "license": "(MIT OR Apache-2.0)" + }, + "node_modules/harper/node_modules/layerr": { + "version": "0.1.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/harper/node_modules/light-my-request": { + "version": "6.6.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "inBundle": true, + "license": "BSD-3-Clause", "dependencies": { - "wrappy": "1" + "cookie": "^1.0.1", + "process-warning": "^4.0.0", + "set-cookie-parser": "^2.6.0" } }, - "node_modules/harper/node_modules/onetime": { - "version": "5.1.2", + "node_modules/harper/node_modules/light-my-request/node_modules/process-warning": { + "version": "4.0.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "inBundle": true, + "license": "MIT" + }, + "node_modules/harper/node_modules/lmdb": { + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-3.5.6.tgz", + "integrity": "sha512-j3uE8ReKNyUWDjhfEFSJqE/1DLtfTR5Z8yFzVHvBjAk37wNg7HdScjcv8ttPHRvrdgPQMPWxFFI0SsdBzI5lBw==", "dev": true, + "hasInstallScript": true, "license": "MIT", "dependencies": { - "mimic-fn": "^2.1.0" + "@harperfast/extended-iterable": "^1.0.3", + "msgpackr": "^1.11.2", + "node-addon-api": "^6.1.0", + "node-gyp-build-optional-packages": "5.2.2", + "ordered-binary": "^1.5.3", + "weak-lru-cache": "^1.2.2" }, - "engines": { - "node": ">=6" + "bin": { + "download-lmdb-prebuilds": "bin/download-prebuilds.js" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "optionalDependencies": { + "@lmdb/lmdb-darwin-arm64": "3.5.6", + "@lmdb/lmdb-darwin-x64": "3.5.6", + "@lmdb/lmdb-linux-arm": "3.5.6", + "@lmdb/lmdb-linux-arm64": "3.5.6", + "@lmdb/lmdb-linux-x64": "3.5.6", + "@lmdb/lmdb-win32-arm64": "3.5.6", + "@lmdb/lmdb-win32-x64": "3.5.6" } }, - "node_modules/harper/node_modules/open": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", - "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "node_modules/harper/node_modules/lmdb/node_modules/msgpackr": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.12.1.tgz", + "integrity": "sha512-4EUH9tQHnMmEgzW/MdAP0KIfa1T9AF+htl0ffe2n5vb2EKn9y2co8ccpgWko6S52Jy1PQZKwRnx5/KkYjtd9MQ==", "dev": true, "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "optionalDependencies": { + "msgpackr-extract": "^3.0.2" } }, - "node_modules/harper/node_modules/ora": { - "version": "8.2.0", + "node_modules/harper/node_modules/lmdb/node_modules/node-addon-api": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", + "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", + "dev": true, + "license": "MIT" + }, + "node_modules/harper/node_modules/lmdb/node_modules/node-gyp-build-optional-packages": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz", + "integrity": "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^5.3.0", - "cli-cursor": "^5.0.0", - "cli-spinners": "^2.9.2", - "is-interactive": "^2.0.0", - "is-unicode-supported": "^2.0.0", - "log-symbols": "^6.0.0", - "stdin-discarder": "^0.2.2", - "string-width": "^7.2.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" + "detect-libc": "^2.0.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "node-gyp-build-optional-packages": "bin.js", + "node-gyp-build-optional-packages-optional": "optional.js", + "node-gyp-build-optional-packages-test": "build-test.js" } }, - "node_modules/harper/node_modules/ora/node_modules/ansi-regex": { - "version": "6.2.2", + "node_modules/harper/node_modules/lodash": { + "version": "4.18.1", "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } + "inBundle": true, + "license": "MIT" }, - "node_modules/harper/node_modules/ora/node_modules/chalk": { - "version": "5.6.2", + "node_modules/harper/node_modules/lodash.includes": { + "version": "4.3.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/harper/node_modules/lodash.isboolean": { + "version": "3.0.3", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/harper/node_modules/lodash.isinteger": { + "version": "4.0.4", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/harper/node_modules/lodash.isnumber": { + "version": "3.0.3", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/harper/node_modules/lodash.isplainobject": { + "version": "4.0.6", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/harper/node_modules/lodash.isstring": { + "version": "4.0.1", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/harper/node_modules/lodash.once": { + "version": "4.1.1", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/harper/node_modules/math-intrinsics": { + "version": "1.1.0", "dev": true, + "inBundle": true, "license": "MIT", "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">= 0.4" } }, - "node_modules/harper/node_modules/ora/node_modules/cli-cursor": { - "version": "5.0.0", + "node_modules/harper/node_modules/mathjs": { + "version": "11.12.0", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "Apache-2.0", "dependencies": { - "restore-cursor": "^5.0.0" - }, - "engines": { - "node": ">=18" + "@babel/runtime": "^7.23.2", + "complex.js": "^2.1.1", + "decimal.js": "^10.4.3", + "escape-latex": "^1.2.0", + "fraction.js": "4.3.4", + "javascript-natural-sort": "^0.7.1", + "seedrandom": "^3.0.5", + "tiny-emitter": "^2.1.0", + "typed-function": "^4.1.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "mathjs": "bin/cli.js" + }, + "engines": { + "node": ">= 14" } }, - "node_modules/harper/node_modules/ora/node_modules/emoji-regex": { - "version": "10.6.0", - "dev": true, - "license": "MIT" - }, - "node_modules/harper/node_modules/ora/node_modules/is-unicode-supported": { - "version": "2.1.0", + "node_modules/harper/node_modules/merge2": { + "version": "1.4.1", "dev": true, + "inBundle": true, "license": "MIT", "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 8" } }, - "node_modules/harper/node_modules/ora/node_modules/log-symbols": { - "version": "6.0.0", + "node_modules/harper/node_modules/micromatch": { + "version": "4.0.8", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "chalk": "^5.3.0", - "is-unicode-supported": "^1.3.0" - }, - "engines": { - "node": ">=18" + "braces": "^3.0.3", + "picomatch": "^2.3.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/harper/node_modules/ora/node_modules/log-symbols/node_modules/is-unicode-supported": { - "version": "1.3.0", - "dev": true, - "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8.6" } }, - "node_modules/harper/node_modules/ora/node_modules/onetime": { - "version": "7.0.0", + "node_modules/harper/node_modules/mime": { + "version": "3.0.0", "dev": true, + "inBundle": true, "license": "MIT", - "dependencies": { - "mimic-function": "^5.0.0" + "bin": { + "mime": "cli.js" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10.0.0" } }, - "node_modules/harper/node_modules/ora/node_modules/restore-cursor": { - "version": "5.1.0", + "node_modules/harper/node_modules/mime-db": { + "version": "1.54.0", "dev": true, + "inBundle": true, "license": "MIT", - "dependencies": { - "onetime": "^7.0.0", - "signal-exit": "^4.1.0" - }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.6" } }, - "node_modules/harper/node_modules/ora/node_modules/string-width": { - "version": "7.2.0", + "node_modules/harper/node_modules/mimic-function": { + "version": "5.0.1", "dev": true, + "inBundle": true, "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, "engines": { "node": ">=18" }, @@ -8798,475 +5091,558 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/harper/node_modules/ora/node_modules/strip-ansi": { - "version": "7.2.0", + "node_modules/harper/node_modules/minimatch": { + "version": "10.2.4", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "BlueOak-1.0.0", "dependencies": { - "ansi-regex": "^6.2.2" + "brace-expansion": "^5.0.2" }, "engines": { - "node": ">=12" + "node": "18 || 20 || >=22" }, "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/harper/node_modules/ordered-binary": { - "version": "1.6.1", - "dev": true, - "license": "MIT" - }, - "node_modules/harper/node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "node_modules/harper/node_modules/minimist": { + "version": "1.2.8", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=6" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/harper/node_modules/pako": { - "version": "0.2.9", - "dev": true, - "license": "MIT" - }, - "node_modules/harper/node_modules/papaparse": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.5.4.tgz", - "integrity": "sha512-SwzWD9gl/ElwYLCI0nUja1mFJzjq2D8ziShfNBa7zCHzkOozeOGDwHWQ+tvCzEZcewecWZ5U7kUopDnG+DFYEQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/harper/node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "node_modules/harper/node_modules/minipass": { + "version": "7.1.3", "dev": true, - "license": "MIT", - "optional": true, - "peer": true, + "inBundle": true, + "license": "BlueOak-1.0.0", "engines": { - "node": ">= 0.8" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/harper/node_modules/passport": { - "version": "0.7.0", + "node_modules/harper/node_modules/mkdirp": { + "version": "1.0.4", "dev": true, + "inBundle": true, "license": "MIT", - "dependencies": { - "passport-strategy": "1.x.x", - "pause": "0.0.1", - "utils-merge": "^1.0.1" + "bin": { + "mkdirp": "bin/cmd.js" }, "engines": { - "node": ">= 0.4.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/jaredhanson" + "node": ">=10" } }, - "node_modules/harper/node_modules/passport-http": { - "version": "0.3.0", + "node_modules/harper/node_modules/moment": { + "version": "2.31.0", "dev": true, - "dependencies": { - "passport-strategy": "1.x.x" - }, + "inBundle": true, + "license": "MIT", "engines": { - "node": ">= 0.4.0" + "node": "*" } }, - "node_modules/harper/node_modules/passport-local": { - "version": "1.0.0", + "node_modules/harper/node_modules/mqtt-packet": { + "version": "9.0.2", "dev": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "passport-strategy": "1.x.x" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/harper/node_modules/passport-strategy": { - "version": "1.0.0", - "dev": true, - "engines": { - "node": ">= 0.4.0" + "bl": "^6.0.8", + "debug": "^4.3.4", + "process-nextick-args": "^2.0.1" } }, - "node_modules/harper/node_modules/path-exists": { - "version": "4.0.0", + "node_modules/harper/node_modules/ms": { + "version": "2.1.3", "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=8" - } + "inBundle": true, + "license": "MIT" }, - "node_modules/harper/node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "node_modules/harper/node_modules/nan": { + "version": "2.25.0", "dev": true, "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } + "optional": true }, - "node_modules/harper/node_modules/path-key": { - "version": "3.1.1", + "node_modules/harper/node_modules/needle": { + "version": "3.5.0", "dev": true, + "inBundle": true, "license": "MIT", + "dependencies": { + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, "engines": { - "node": ">=8" + "node": ">= 4.4.x" } }, - "node_modules/harper/node_modules/pause": { - "version": "0.0.1", - "dev": true - }, - "node_modules/harper/node_modules/peek-stream": { - "version": "1.1.3", + "node_modules/harper/node_modules/needle/node_modules/iconv-lite": { + "version": "0.6.3", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "buffer-from": "^1.0.0", - "duplexify": "^3.5.0", - "through2": "^2.0.3" + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/harper/node_modules/peek-stream/node_modules/duplexify": { - "version": "3.7.1", + "node_modules/harper/node_modules/node-fetch": { + "version": "2.7.0", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, - "node_modules/harper/node_modules/picocolors": { - "version": "1.1.1", - "dev": true, - "license": "ISC" - }, - "node_modules/harper/node_modules/picomatch": { - "version": "2.3.1", + "node_modules/harper/node_modules/node-forge": { + "version": "1.4.0", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "node": ">= 6.13.0" } }, - "node_modules/harper/node_modules/pino": { - "version": "8.21.0", + "node_modules/harper/node_modules/node-stream-zip": { + "version": "1.16.0", "dev": true, + "inBundle": true, "license": "MIT", - "dependencies": { - "atomic-sleep": "^1.0.0", - "fast-redact": "^3.1.1", - "on-exit-leak-free": "^2.1.0", - "pino-abstract-transport": "^1.2.0", - "pino-std-serializers": "^6.0.0", - "process-warning": "^3.0.0", - "quick-format-unescaped": "^4.0.3", - "real-require": "^0.2.0", - "safe-stable-stringify": "^2.3.1", - "sonic-boom": "^3.7.0", - "thread-stream": "^2.6.0" + "engines": { + "node": ">=0.12.0" }, - "bin": { - "pino": "bin.js" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/antelle" } }, - "node_modules/harper/node_modules/pino-abstract-transport": { + "node_modules/harper/node_modules/normalize-path": { "version": "3.0.0", "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/harper/node_modules/object-is": { + "version": "1.1.6", + "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "split2": "^4.0.0" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/harper/node_modules/pino-std-serializers": { - "version": "6.2.2", + "node_modules/harper/node_modules/object-keys": { + "version": "1.1.1", "dev": true, - "license": "MIT" + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } }, - "node_modules/harper/node_modules/pino/node_modules/buffer": { - "version": "6.0.3", + "node_modules/harper/node_modules/on-exit-leak-free": { + "version": "2.1.2", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "inBundle": true, "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" + "engines": { + "node": ">=14.0.0" } }, - "node_modules/harper/node_modules/pino/node_modules/pino-abstract-transport": { - "version": "1.2.0", + "node_modules/harper/node_modules/on-finished": { + "version": "2.4.1", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "readable-stream": "^4.0.0", - "split2": "^4.0.0" + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" } }, - "node_modules/harper/node_modules/pino/node_modules/process-warning": { - "version": "3.0.0", + "node_modules/harper/node_modules/once": { + "version": "1.4.0", "dev": true, - "license": "MIT" + "inBundle": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } }, - "node_modules/harper/node_modules/pino/node_modules/readable-stream": { - "version": "4.7.0", + "node_modules/harper/node_modules/ora": { + "version": "8.2.0", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" + "chalk": "^5.3.0", + "cli-cursor": "^5.0.0", + "cli-spinners": "^2.9.2", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^2.0.0", + "log-symbols": "^6.0.0", + "stdin-discarder": "^0.2.2", + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/harper/node_modules/pino/node_modules/split2": { - "version": "4.2.0", + "node_modules/harper/node_modules/ora/node_modules/ansi-regex": { + "version": "6.2.2", "dev": true, - "license": "ISC", + "inBundle": true, + "license": "MIT", "engines": { - "node": ">= 10.x" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/harper/node_modules/pino/node_modules/string_decoder": { - "version": "1.3.0", + "node_modules/harper/node_modules/ora/node_modules/chalk": { + "version": "5.6.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/harper/node_modules/ora/node_modules/cli-cursor": { + "version": "5.0.0", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "safe-buffer": "~5.2.0" + "restore-cursor": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/harper/node_modules/pirates": { - "version": "4.0.7", + "node_modules/harper/node_modules/ora/node_modules/emoji-regex": { + "version": "10.6.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/harper/node_modules/ora/node_modules/is-unicode-supported": { + "version": "2.1.0", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { - "node": ">= 6" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/harper/node_modules/pkijs": { - "version": "3.4.0", + "node_modules/harper/node_modules/ora/node_modules/log-symbols": { + "version": "6.0.0", "dev": true, - "license": "BSD-3-Clause", + "inBundle": true, + "license": "MIT", "dependencies": { - "@noble/hashes": "1.4.0", - "asn1js": "^3.0.6", - "bytestreamjs": "^2.0.1", - "pvtsutils": "^1.3.6", - "pvutils": "^1.1.3", - "tslib": "^2.8.1" + "chalk": "^5.3.0", + "is-unicode-supported": "^1.3.0" }, "engines": { - "node": ">=16.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/harper/node_modules/pkijs/node_modules/@noble/hashes": { - "version": "1.4.0", + "node_modules/harper/node_modules/ora/node_modules/log-symbols/node_modules/is-unicode-supported": { + "version": "1.3.0", "dev": true, + "inBundle": true, "license": "MIT", "engines": { - "node": ">= 16" + "node": ">=12" }, "funding": { - "url": "https://paulmillr.com/funding/" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/harper/node_modules/polygon-clipping": { - "version": "0.15.7", + "node_modules/harper/node_modules/ora/node_modules/onetime": { + "version": "7.0.0", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "robust-predicates": "^3.0.2", - "splaytree": "^3.1.0" + "mimic-function": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/harper/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "node_modules/harper/node_modules/ora/node_modules/restore-cursor": { + "version": "5.1.0", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/harper/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/harper/node_modules/ora/node_modules/string-width": { + "version": "7.2.0", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/harper/node_modules/process": { - "version": "0.11.10", + "node_modules/harper/node_modules/ora/node_modules/strip-ansi": { + "version": "7.2.0", "dev": true, + "inBundle": true, "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, "engines": { - "node": ">= 0.6.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/harper/node_modules/process-nextick-args": { - "version": "2.0.1", + "node_modules/harper/node_modules/pako": { + "version": "0.2.9", "dev": true, + "inBundle": true, "license": "MIT" }, - "node_modules/harper/node_modules/process-warning": { - "version": "5.0.0", + "node_modules/harper/node_modules/papaparse": { + "version": "5.7.0", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], + "inBundle": true, "license": "MIT" }, - "node_modules/harper/node_modules/promise": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", - "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "node_modules/harper/node_modules/passport": { + "version": "0.7.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "passport-strategy": "1.x.x", + "pause": "0.0.1", + "utils-merge": "^1.0.1" + }, + "engines": { + "node": ">= 0.4.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/jaredhanson" + } + }, + "node_modules/harper/node_modules/passport-http": { + "version": "0.3.0", "dev": true, - "license": "MIT", - "optional": true, - "peer": true, + "inBundle": true, "dependencies": { - "asap": "~2.0.6" + "passport-strategy": "1.x.x" + }, + "engines": { + "node": ">= 0.4.0" } }, - "node_modules/harper/node_modules/prompt": { - "version": "1.3.0", + "node_modules/harper/node_modules/passport-local": { + "version": "1.0.0", "dev": true, - "license": "MIT", + "inBundle": true, "dependencies": { - "@colors/colors": "1.5.0", - "async": "3.2.3", - "read": "1.0.x", - "revalidator": "0.1.x", - "winston": "2.x" + "passport-strategy": "1.x.x" }, "engines": { - "node": ">= 6.0.0" + "node": ">= 0.4.0" } }, - "node_modules/harper/node_modules/properties-reader": { - "version": "2.3.0", + "node_modules/harper/node_modules/passport-strategy": { + "version": "1.0.0", "dev": true, - "license": "MIT", + "inBundle": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/harper/node_modules/path-scurry": { + "version": "2.0.2", + "dev": true, + "inBundle": true, + "license": "BlueOak-1.0.0", "dependencies": { - "mkdirp": "^1.0.4" + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" }, "engines": { - "node": ">=14" + "node": "18 || 20 || >=22" }, "funding": { - "type": "github", - "url": "https://github.com/steveukx/properties?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/harper/node_modules/pump": { - "version": "3.0.4", + "node_modules/harper/node_modules/path-scurry/node_modules/lru-cache": { + "version": "11.5.2", "dev": true, - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "inBundle": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" } }, - "node_modules/harper/node_modules/pumpify": { - "version": "2.0.1", + "node_modules/harper/node_modules/pause": { + "version": "0.0.1", + "dev": true, + "inBundle": true + }, + "node_modules/harper/node_modules/peek-stream": { + "version": "1.1.3", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "duplexify": "^4.1.1", - "inherits": "^2.0.3", - "pump": "^3.0.0" + "buffer-from": "^1.0.0", + "duplexify": "^3.5.0", + "through2": "^2.0.3" } }, - "node_modules/harper/node_modules/pvtsutils": { - "version": "1.3.6", + "node_modules/harper/node_modules/peek-stream/node_modules/duplexify": { + "version": "3.7.1", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "tslib": "^2.8.1" + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" } }, - "node_modules/harper/node_modules/pvutils": { - "version": "1.1.5", + "node_modules/harper/node_modules/picocolors": { + "version": "1.1.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/harper/node_modules/picomatch": { + "version": "2.3.1", "dev": true, + "inBundle": true, "license": "MIT", "engines": { - "node": ">=16.0.0" + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/harper/node_modules/queue": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", - "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", + "node_modules/harper/node_modules/pino": { + "version": "8.21.0", "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "atomic-sleep": "^1.0.0", + "fast-redact": "^3.1.1", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^1.2.0", + "pino-std-serializers": "^6.0.0", + "process-warning": "^3.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.2.0", + "safe-stable-stringify": "^2.3.1", + "sonic-boom": "^3.7.0", + "thread-stream": "^2.6.0" + }, + "bin": { + "pino": "bin.js" + } + }, + "node_modules/harper/node_modules/pino-abstract-transport": { + "version": "3.0.0", + "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { - "inherits": "~2.0.3" + "split2": "^4.0.0" } }, - "node_modules/harper/node_modules/queue-microtask": { - "version": "1.2.3", + "node_modules/harper/node_modules/pino-std-serializers": { + "version": "6.2.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/harper/node_modules/pino/node_modules/buffer": { + "version": "6.0.3", "dev": true, "funding": [ { @@ -9282,331 +5658,233 @@ "url": "https://feross.org/support" } ], - "license": "MIT" - }, - "node_modules/harper/node_modules/quick-format-unescaped": { - "version": "4.0.4", - "dev": true, - "license": "MIT" - }, - "node_modules/harper/node_modules/quickselect": { - "version": "2.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/harper/node_modules/range-parser": { - "version": "1.2.1", - "dev": true, + "inBundle": true, "license": "MIT", - "engines": { - "node": ">= 0.6" + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" } }, - "node_modules/harper/node_modules/rbush": { - "version": "3.0.1", + "node_modules/harper/node_modules/pino/node_modules/pino-abstract-transport": { + "version": "1.2.0", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "quickselect": "^2.0.0" + "readable-stream": "^4.0.0", + "split2": "^4.0.0" } }, - "node_modules/harper/node_modules/react": { - "version": "19.2.6", - "resolved": "https://registry.npmjs.org/react/-/react-19.2.6.tgz", - "integrity": "sha512-sfWGGfavi0xr8Pg0sVsyHMAOziVYKgPLNrS7ig+ivMNb3wbCBw3KxtflsGBAwD3gYQlE/AEZsTLgToRrSCjb0Q==", + "node_modules/harper/node_modules/pino/node_modules/process-warning": { + "version": "3.0.0", "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } + "inBundle": true, + "license": "MIT" }, - "node_modules/harper/node_modules/react-devtools-core": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-6.1.5.tgz", - "integrity": "sha512-ePrwPfxAnB+7hgnEr8vpKxL9cmnp7F322t8oqcPshbIQQhDKgFDW4tjhF2wjVbdXF9O/nyuy3sQWd9JGpiLPvA==", + "node_modules/harper/node_modules/pino/node_modules/readable-stream": { + "version": "4.7.0", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { - "shell-quote": "^1.6.1", - "ws": "^7" + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/harper/node_modules/react-devtools-core/node_modules/ws": { - "version": "7.5.11", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.11.tgz", - "integrity": "sha512-zS54Oen9bITtp7kp2XM3AydrCIq1D+HwJOuH+c+e4LfpL/lotP5osijd+UoMnxwAam1GN8R4KtLAyIrIcBNpiA==", + "node_modules/harper/node_modules/pino/node_modules/split2": { + "version": "4.2.0", "dev": true, - "license": "MIT", - "optional": true, - "peer": true, + "inBundle": true, + "license": "ISC", "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "node": ">= 10.x" } }, - "node_modules/harper/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "node_modules/harper/node_modules/pino/node_modules/string_decoder": { + "version": "1.3.0", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true + "dependencies": { + "safe-buffer": "~5.2.0" + } }, - "node_modules/harper/node_modules/react-native": { - "version": "0.82.1", - "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.82.1.tgz", - "integrity": "sha512-tFAqcU7Z4g49xf/KnyCEzI4nRTu1Opcx05Ov2helr8ZTg1z7AJR/3sr2rZ+AAVlAs2IXk+B0WOxXGmdD3+4czA==", + "node_modules/harper/node_modules/pkijs": { + "version": "3.4.1", "dev": true, - "license": "MIT", - "optional": true, - "peer": true, + "inBundle": true, + "license": "BSD-3-Clause", + "workspaces": [ + "website" + ], "dependencies": { - "@jest/create-cache-key-function": "^29.7.0", - "@react-native/assets-registry": "0.82.1", - "@react-native/codegen": "0.82.1", - "@react-native/community-cli-plugin": "0.82.1", - "@react-native/gradle-plugin": "0.82.1", - "@react-native/js-polyfills": "0.82.1", - "@react-native/normalize-colors": "0.82.1", - "@react-native/virtualized-lists": "0.82.1", - "abort-controller": "^3.0.0", - "anser": "^1.4.9", - "ansi-regex": "^5.0.0", - "babel-jest": "^29.7.0", - "babel-plugin-syntax-hermes-parser": "0.32.0", - "base64-js": "^1.5.1", - "commander": "^12.0.0", - "flow-enums-runtime": "^0.0.6", - "glob": "^7.1.1", - "hermes-compiler": "0.0.0", - "invariant": "^2.2.4", - "jest-environment-node": "^29.7.0", - "memoize-one": "^5.0.0", - "metro-runtime": "^0.83.1", - "metro-source-map": "^0.83.1", - "nullthrows": "^1.1.1", - "pretty-format": "^29.7.0", - "promise": "^8.3.0", - "react-devtools-core": "^6.1.5", - "react-refresh": "^0.14.0", - "regenerator-runtime": "^0.13.2", - "scheduler": "0.26.0", - "semver": "^7.1.3", - "stacktrace-parser": "^0.1.10", - "whatwg-fetch": "^3.0.0", - "ws": "^6.2.3", - "yargs": "^17.6.2" - }, - "bin": { - "react-native": "cli.js" + "@noble/hashes": "1.8.0", + "asn1js": "^3.0.6", + "bytestreamjs": "^2.0.1", + "pvtsutils": "^1.3.6", + "pvutils": "^1.1.3", + "tslib": "^2.8.1" }, "engines": { - "node": ">= 20.19.4" - }, - "peerDependencies": { - "@types/react": "^19.1.1", - "react": "^19.1.1" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "node": ">=16.0.0" } }, - "node_modules/harper/node_modules/react-native-fs": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/react-native-fs/-/react-native-fs-2.20.0.tgz", - "integrity": "sha512-VkTBzs7fIDUiy/XajOSNk0XazFE9l+QlMAce7lGuebZcag5CnjszB+u4BdqzwaQOdcYb5wsJIsqq4kxInIRpJQ==", + "node_modules/harper/node_modules/polygon-clipping": { + "version": "0.15.7", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, "dependencies": { - "base-64": "^0.1.0", - "utf8": "^3.0.0" - }, - "peerDependencies": { - "react-native": "*", - "react-native-windows": "*" - }, - "peerDependenciesMeta": { - "react-native-windows": { - "optional": true - } + "robust-predicates": "^3.0.2", + "splaytree": "^3.1.0" } }, - "node_modules/harper/node_modules/react-native/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "node_modules/harper/node_modules/process": { + "version": "0.11.10", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true + "engines": { + "node": ">= 0.6.0" + } }, - "node_modules/harper/node_modules/react-native/node_modules/brace-expansion": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", - "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", + "node_modules/harper/node_modules/process-nextick-args": { + "version": "2.0.1", "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } + "inBundle": true, + "license": "MIT" }, - "node_modules/harper/node_modules/react-native/node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "node_modules/harper/node_modules/process-warning": { + "version": "5.1.0", "dev": true, - "license": "ISC", - "optional": true, - "peer": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "inBundle": true, + "license": "MIT" }, - "node_modules/harper/node_modules/react-native/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "node_modules/harper/node_modules/properties-reader": { + "version": "2.3.0", "dev": true, - "license": "ISC", - "optional": true, - "peer": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "mkdirp": "^1.0.4" }, "engines": { - "node": "*" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "type": "github", + "url": "https://github.com/steveukx/properties?sponsor=1" } }, - "node_modules/harper/node_modules/react-native/node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "node_modules/harper/node_modules/pump": { + "version": "3.0.4", "dev": true, - "license": "ISC", - "optional": true, - "peer": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, - "node_modules/harper/node_modules/react-native/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "node_modules/harper/node_modules/pumpify": { + "version": "2.0.1", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "duplexify": "^4.1.1", + "inherits": "^2.0.3", + "pump": "^3.0.0" } }, - "node_modules/harper/node_modules/react-native/node_modules/ws": { - "version": "6.2.4", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.4.tgz", - "integrity": "sha512-PNIUUyLI5YpkJZj60YBzX1o0ByQ4ovvfmq9N/Kig/PAYbVlGyz4R6G0SEWrD0O9acc0sT2+IdMBVLFv8FSi0Nw==", + "node_modules/harper/node_modules/pvtsutils": { + "version": "1.3.6", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { - "async-limiter": "~1.0.0" + "tslib": "^2.8.1" } }, - "node_modules/harper/node_modules/react-native/node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "node_modules/harper/node_modules/pvutils": { + "version": "1.1.5", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, "engines": { - "node": ">=12" + "node": ">=16.0.0" } }, - "node_modules/harper/node_modules/react-refresh": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", - "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", + "node_modules/harper/node_modules/queue-microtask": { + "version": "1.2.3", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "inBundle": true, + "license": "MIT" + }, + "node_modules/harper/node_modules/quick-format-unescaped": { + "version": "4.0.4", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/harper/node_modules/quickselect": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/harper/node_modules/range-parser": { + "version": "1.2.1", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { - "node": ">=0.10.0" + "node": ">= 0.6" } }, - "node_modules/harper/node_modules/read": { - "version": "1.0.7", + "node_modules/harper/node_modules/rbush": { + "version": "3.0.1", "dev": true, - "license": "ISC", + "inBundle": true, + "license": "MIT", "dependencies": { - "mute-stream": "~0.0.4" - }, - "engines": { - "node": ">=0.8" + "quickselect": "^2.0.0" } }, "node_modules/harper/node_modules/readable-stream": { "version": "2.3.8", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", @@ -9621,11 +5899,13 @@ "node_modules/harper/node_modules/readable-stream/node_modules/safe-buffer": { "version": "5.1.2", "dev": true, + "inBundle": true, "license": "MIT" }, "node_modules/harper/node_modules/readdirp": { "version": "4.1.2", "dev": true, + "inBundle": true, "license": "MIT", "engines": { "node": ">= 14.18.0" @@ -9638,6 +5918,7 @@ "node_modules/harper/node_modules/real-require": { "version": "0.2.0", "dev": true, + "inBundle": true, "license": "MIT", "engines": { "node": ">= 12.13.0" @@ -9646,23 +5927,16 @@ "node_modules/harper/node_modules/recursive-iterator": { "version": "3.3.0", "dev": true, + "inBundle": true, "license": "MIT", "engines": { "node": ">=6" } }, - "node_modules/harper/node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, "node_modules/harper/node_modules/regexp.prototype.flags": { "version": "1.5.4", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", @@ -9682,6 +5956,7 @@ "node_modules/harper/node_modules/require-directory": { "version": "2.1.1", "dev": true, + "inBundle": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -9690,31 +5965,16 @@ "node_modules/harper/node_modules/require-from-string": { "version": "2.0.2", "dev": true, + "inBundle": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/harper/node_modules/restore-cursor": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/harper/node_modules/restore-cursor/node_modules/signal-exit": { - "version": "3.0.7", - "dev": true, - "license": "ISC" - }, "node_modules/harper/node_modules/ret": { "version": "0.5.0", "dev": true, + "inBundle": true, "license": "MIT", "engines": { "node": ">=10" @@ -9723,118 +5983,25 @@ "node_modules/harper/node_modules/reusify": { "version": "1.1.0", "dev": true, + "inBundle": true, "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" } }, - "node_modules/harper/node_modules/revalidator": { - "version": "0.1.8", - "dev": true, - "license": "Apache 2.0", - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/harper/node_modules/rfdc": { "version": "1.4.1", "dev": true, + "inBundle": true, "license": "MIT" }, - "node_modules/harper/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/harper/node_modules/rimraf/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/harper/node_modules/rimraf/node_modules/brace-expansion": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", - "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/harper/node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/harper/node_modules/rimraf/node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/harper/node_modules/robust-predicates": { "version": "3.0.2", "dev": true, + "inBundle": true, "license": "Unlicense" }, - "node_modules/harper/node_modules/run-async": { - "version": "2.4.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, "node_modules/harper/node_modules/run-parallel": { "version": "1.2.0", "dev": true, @@ -9852,19 +6019,12 @@ "url": "https://feross.org/support" } ], + "inBundle": true, "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } }, - "node_modules/harper/node_modules/rxjs": { - "version": "7.8.2", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, "node_modules/harper/node_modules/safe-buffer": { "version": "5.2.1", "dev": true, @@ -9882,6 +6042,7 @@ "url": "https://feross.org/support" } ], + "inBundle": true, "license": "MIT" }, "node_modules/harper/node_modules/safe-regex2": { @@ -9897,6 +6058,7 @@ "url": "https://opencollective.com/fastify" } ], + "inBundle": true, "license": "MIT", "dependencies": { "ret": "~0.5.0" @@ -9908,6 +6070,7 @@ "node_modules/harper/node_modules/safe-stable-stringify": { "version": "2.5.0", "dev": true, + "inBundle": true, "license": "MIT", "engines": { "node": ">=10" @@ -9916,25 +6079,18 @@ "node_modules/harper/node_modules/safer-buffer": { "version": "2.1.2", "dev": true, + "inBundle": true, "license": "MIT" }, "node_modules/harper/node_modules/sax": { "version": "1.5.0", "dev": true, + "inBundle": true, "license": "BlueOak-1.0.0", "engines": { "node": ">=11.0.0" } }, - "node_modules/harper/node_modules/scheduler": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", - "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, "node_modules/harper/node_modules/secure-json-parse": { "version": "4.1.0", "dev": true, @@ -9948,11 +6104,13 @@ "url": "https://opencollective.com/fastify" } ], + "inBundle": true, "license": "BSD-3-Clause" }, "node_modules/harper/node_modules/seedrandom": { "version": "3.0.5", "dev": true, + "inBundle": true, "license": "MIT" }, "node_modules/harper/node_modules/segfault-handler": { @@ -9968,9 +6126,8 @@ }, "node_modules/harper/node_modules/semver": { "version": "7.8.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", - "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", "dev": true, + "inBundle": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -9982,6 +6139,7 @@ "node_modules/harper/node_modules/send": { "version": "1.2.1", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { "debug": "^4.4.3", @@ -10007,6 +6165,7 @@ "node_modules/harper/node_modules/send/node_modules/mime-types": { "version": "3.0.2", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { "mime-db": "^1.54.0" @@ -10019,114 +6178,10 @@ "url": "https://opencollective.com/express" } }, - "node_modules/harper/node_modules/serialize-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", - "integrity": "sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/harper/node_modules/serve-static": { - "version": "1.16.3", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", - "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "~0.19.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/harper/node_modules/serve-static/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/harper/node_modules/serve-static/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/harper/node_modules/serve-static/node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/harper/node_modules/serve-static/node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/harper/node_modules/serve-static/node_modules/send": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", - "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "~0.5.2", - "http-errors": "~2.0.1", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "~2.4.1", - "range-parser": "~1.2.1", - "statuses": "~2.0.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/harper/node_modules/ses": { "version": "1.15.0", "dev": true, + "inBundle": true, "license": "Apache-2.0", "dependencies": { "@endo/cache-map": "^1.1.0", @@ -10137,11 +6192,13 @@ "node_modules/harper/node_modules/set-cookie-parser": { "version": "2.7.2", "dev": true, + "inBundle": true, "license": "MIT" }, "node_modules/harper/node_modules/set-function-length": { "version": "1.2.2", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", @@ -10158,6 +6215,7 @@ "node_modules/harper/node_modules/set-function-name": { "version": "2.0.2", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", @@ -10172,45 +6230,13 @@ "node_modules/harper/node_modules/setprototypeof": { "version": "1.2.0", "dev": true, + "inBundle": true, "license": "ISC" }, - "node_modules/harper/node_modules/shebang-command": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/harper/node_modules/shebang-regex": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/harper/node_modules/shell-quote": { - "version": "1.8.4", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.4.tgz", - "integrity": "sha512-VsC6n6vz1ihYYyZZwX7YZSF5l5x36ca17OC+a69h94YqB7X6XLwf+5MOgynYir2SLFUbl8gIYvBo8K8RoNQ6bQ==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/harper/node_modules/signal-exit": { "version": "4.1.0", "dev": true, + "inBundle": true, "license": "ISC", "engines": { "node": ">=14" @@ -10219,54 +6245,19 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/harper/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, "node_modules/harper/node_modules/sonic-boom": { "version": "3.8.1", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { "atomic-sleep": "^1.0.0" } }, - "node_modules/harper/node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/harper/node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "optional": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/harper/node_modules/splaytree": { "version": "3.2.3", "dev": true, + "inBundle": true, "license": "MIT", "engines": { "node": ">=18.20 || >=20" @@ -10274,97 +6265,17 @@ }, "node_modules/harper/node_modules/split2": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", - "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", "dev": true, + "inBundle": true, "license": "ISC", "engines": { "node": ">= 10.x" } }, - "node_modules/harper/node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true, - "license": "BSD-3-Clause", - "optional": true, - "peer": true - }, - "node_modules/harper/node_modules/stack-trace": { - "version": "0.0.10", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/harper/node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/harper/node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/harper/node_modules/stackframe": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", - "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/harper/node_modules/stacktrace-parser": { - "version": "0.1.11", - "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.11.tgz", - "integrity": "sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "type-fest": "^0.7.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/harper/node_modules/stacktrace-parser/node_modules/type-fest": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", - "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "optional": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, "node_modules/harper/node_modules/statuses": { "version": "2.0.2", "dev": true, + "inBundle": true, "license": "MIT", "engines": { "node": ">= 0.8" @@ -10373,336 +6284,125 @@ "node_modules/harper/node_modules/stdin-discarder": { "version": "0.2.2", "dev": true, + "inBundle": true, "license": "MIT", "engines": { "node": ">=18" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/harper/node_modules/stream-browserify": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "~2.0.4", - "readable-stream": "^3.5.0" - } - }, - "node_modules/harper/node_modules/stream-browserify/node_modules/readable-stream": { - "version": "3.6.2", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/harper/node_modules/stream-chain": { - "version": "2.2.5", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/harper/node_modules/stream-json": { - "version": "1.9.1", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "stream-chain": "^2.2.5" - } - }, - "node_modules/harper/node_modules/stream-shift": { - "version": "1.0.3", - "dev": true, - "license": "MIT" - }, - "node_modules/harper/node_modules/streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/harper/node_modules/streamx": { - "version": "2.23.0", - "dev": true, - "license": "MIT", - "dependencies": { - "events-universal": "^1.0.0", - "fast-fifo": "^1.3.2", - "text-decoder": "^1.1.0" - } - }, - "node_modules/harper/node_modules/string_decoder": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/harper/node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/harper/node_modules/string-width": { - "version": "4.2.3", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/harper/node_modules/strip-ansi": { - "version": "6.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/harper/node_modules/structon": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/structon/-/structon-1.0.7.tgz", - "integrity": "sha512-/6z2LmwKXmVVQhnDo1TUHmnHm5IdZxMh6w60N28y6xAwgGapOOLvANZsCjrp4GVGL26ZXi/jM8s3D14EJpY9pA==", - "dev": true, - "license": "Apache-2.0", - "peerDependencies": { - "msgpackr": ">=2.0.1" - }, - "peerDependenciesMeta": { - "msgpackr": { - "optional": true - } - } - }, - "node_modules/harper/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/harper/node_modules/systeminformation": { - "version": "5.31.9", - "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.31.9.tgz", - "integrity": "sha512-aqepyutSy94zJB552q3LGV2nPfUGZV7LoGhUUjLjs36aLzW3ghpKI7BEpEoQ/OOM+0On4RsyVp1+v6dfYQbqdw==", - "dev": true, - "license": "MIT", - "os": [ - "darwin", - "linux", - "win32", - "freebsd", - "openbsd", - "netbsd", - "sunos", - "android" - ], - "bin": { - "systeminformation": "lib/cli.js" - }, - "engines": { - "node": ">=8.0.0" - }, - "funding": { - "type": "Buy me a coffee", - "url": "https://www.buymeacoffee.com/systeminfo" - } - }, - "node_modules/harper/node_modules/tar-fs": { - "version": "3.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "pump": "^3.0.0", - "tar-stream": "^3.1.5" - }, - "optionalDependencies": { - "bare-fs": "^4.0.1", - "bare-path": "^3.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/harper/node_modules/tar-stream": { - "version": "3.1.8", + "node_modules/harper/node_modules/stream-chain": { + "version": "2.2.5", "dev": true, - "license": "MIT", - "dependencies": { - "b4a": "^1.6.4", - "bare-fs": "^4.5.5", - "fast-fifo": "^1.2.0", - "streamx": "^2.15.0" - } + "inBundle": true, + "license": "BSD-3-Clause" }, - "node_modules/harper/node_modules/teex": { - "version": "1.0.1", + "node_modules/harper/node_modules/stream-json": { + "version": "1.9.1", "dev": true, - "license": "MIT", + "inBundle": true, + "license": "BSD-3-Clause", "dependencies": { - "streamx": "^2.12.5" + "stream-chain": "^2.2.5" } }, - "node_modules/harper/node_modules/terser": { - "version": "5.48.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.48.0.tgz", - "integrity": "sha512-J/9An6vs9Us6wKRriSFXBWdRZapREHqFzdNUKk0pmu804EMR6dr6winwo7e5JDxN4xahxQsuysyYFwlwj4XN/Q==", + "node_modules/harper/node_modules/stream-shift": { + "version": "1.0.3", "dev": true, - "license": "BSD-2-Clause", - "optional": true, - "peer": true, - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.15.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, + "inBundle": true, + "license": "MIT" + }, + "node_modules/harper/node_modules/streamsearch": { + "version": "1.1.0", + "dev": true, + "inBundle": true, "engines": { - "node": ">=10" + "node": ">=10.0.0" } }, - "node_modules/harper/node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "node_modules/harper/node_modules/string_decoder": { + "version": "1.1.1", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/harper/node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true, "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" + "safe-buffer": "~5.1.0" } }, - "node_modules/harper/node_modules/test-exclude/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "node_modules/harper/node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", "dev": true, - "license": "MIT", - "optional": true, - "peer": true + "inBundle": true, + "license": "MIT" }, - "node_modules/harper/node_modules/test-exclude/node_modules/brace-expansion": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", - "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", + "node_modules/harper/node_modules/string-width": { + "version": "4.2.3", "dev": true, + "inBundle": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/harper/node_modules/test-exclude/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "node_modules/harper/node_modules/strip-ansi": { + "version": "6.0.1", "dev": true, - "license": "ISC", - "optional": true, - "peer": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=8" } }, - "node_modules/harper/node_modules/test-exclude/node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "node_modules/harper/node_modules/supports-color": { + "version": "7.2.0", "dev": true, - "license": "ISC", - "optional": true, - "peer": true, + "inBundle": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "has-flag": "^4.0.0" }, "engines": { - "node": "*" + "node": ">=8" } }, - "node_modules/harper/node_modules/text-decoder": { - "version": "1.2.7", + "node_modules/harper/node_modules/tar-fs": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.3.tgz", + "integrity": "sha512-/hU4AXnIdZu+Gvl1pk0oI5f5HxWsCJRtY2aFaJdk9VvyL48DWU6iU5WAIPG+wIi1YvWA6eTJvIviP/tMAZZNwQ==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "b4a": "^1.6.4" + "pump": "^3.0.0", + "tar-stream": "^3.1.5" + }, + "optionalDependencies": { + "bare-fs": "^4.0.1", + "bare-path": "^3.0.0" } }, "node_modules/harper/node_modules/thread-stream": { "version": "2.7.0", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { "real-require": "^0.2.0" } }, - "node_modules/harper/node_modules/throat": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", - "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/harper/node_modules/through": { - "version": "2.3.8", - "dev": true, - "license": "MIT" - }, "node_modules/harper/node_modules/through2": { "version": "2.0.5", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { "readable-stream": "~2.3.6", @@ -10712,20 +6412,13 @@ "node_modules/harper/node_modules/tiny-emitter": { "version": "2.1.0", "dev": true, + "inBundle": true, "license": "MIT" }, - "node_modules/harper/node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true, - "license": "BSD-3-Clause", - "optional": true, - "peer": true - }, "node_modules/harper/node_modules/to-regex-range": { "version": "5.0.1", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { "is-number": "^7.0.0" @@ -10737,6 +6430,7 @@ "node_modules/harper/node_modules/toad-cache": { "version": "3.7.0", "dev": true, + "inBundle": true, "license": "MIT", "engines": { "node": ">=12" @@ -10745,6 +6439,7 @@ "node_modules/harper/node_modules/toidentifier": { "version": "1.0.1", "dev": true, + "inBundle": true, "license": "MIT", "engines": { "node": ">=0.6" @@ -10753,37 +6448,19 @@ "node_modules/harper/node_modules/tr46": { "version": "0.0.3", "dev": true, + "inBundle": true, "license": "MIT" }, "node_modules/harper/node_modules/tslib": { "version": "2.8.1", "dev": true, + "inBundle": true, "license": "0BSD" }, - "node_modules/harper/node_modules/type-detect": { - "version": "4.0.8", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/harper/node_modules/type-fest": { - "version": "0.21.3", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/harper/node_modules/typed-function": { "version": "4.2.2", "dev": true, + "inBundle": true, "license": "MIT", "engines": { "node": ">= 18" @@ -10792,6 +6469,7 @@ "node_modules/harper/node_modules/ulidx": { "version": "0.5.0", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { "layerr": "^0.1.2" @@ -10800,105 +6478,28 @@ "node_modules/harper/node_modules/undici-types": { "version": "7.18.2", "dev": true, + "inBundle": true, "license": "MIT" }, "node_modules/harper/node_modules/universalify": { "version": "2.0.1", "dev": true, + "inBundle": true, "license": "MIT", "engines": { "node": ">= 10.0.0" } }, - "node_modules/harper/node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/harper/node_modules/update-browserslist-db": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", - "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/harper/node_modules/utf-8-validate": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", - "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "dependencies": { - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">=6.14.2" - } - }, - "node_modules/harper/node_modules/utf-8-validate/node_modules/node-gyp-build": { - "version": "4.8.4", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", - "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", - "dev": true, - "license": "MIT", - "optional": true, - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/harper/node_modules/utf8": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", - "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==", - "dev": true, - "license": "MIT", - "optional": true - }, "node_modules/harper/node_modules/util-deprecate": { "version": "1.0.2", "dev": true, + "inBundle": true, "license": "MIT" }, "node_modules/harper/node_modules/utils-merge": { "version": "1.0.1", "dev": true, + "inBundle": true, "license": "MIT", "engines": { "node": ">= 0.4.0" @@ -10906,13 +6507,12 @@ }, "node_modules/harper/node_modules/uuid": { "version": "11.1.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.1.tgz", - "integrity": "sha512-vIYxrBCC/N/K+Js3qSN88go7kIfNPssr/hHCesKCQNAjmgvYS2oqr69kIufEG+O4+PfezOH4EbIeHCfFov8ZgQ==", "dev": true, "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], + "inBundle": true, "license": "MIT", "bin": { "uuid": "dist/esm/bin/uuid" @@ -10921,171 +6521,40 @@ "node_modules/harper/node_modules/validate.js": { "version": "0.13.1", "dev": true, + "inBundle": true, "license": "MIT" }, - "node_modules/harper/node_modules/vlq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz", - "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/harper/node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "peer": true, - "dependencies": { - "makeerror": "1.0.12" - } - }, - "node_modules/harper/node_modules/wcwidth": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "defaults": "^1.0.3" - } - }, "node_modules/harper/node_modules/weak-lru-cache": { "version": "1.2.2", "dev": true, - "license": "MIT" - }, - "node_modules/harper/node_modules/webidl-conversions": { - "version": "3.0.1", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/harper/node_modules/whatwg-fetch": { - "version": "3.6.20", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", - "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/harper/node_modules/whatwg-url": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/harper/node_modules/which": { - "version": "2.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/harper/node_modules/winston": { - "version": "2.4.7", - "dev": true, - "license": "MIT", - "dependencies": { - "async": "^2.6.4", - "colors": "1.0.x", - "cycle": "1.0.x", - "eyes": "0.1.x", - "isstream": "0.1.x", - "stack-trace": "0.0.x" - }, - "engines": { - "node": ">= 0.10.0" - } + "license": "MIT" }, - "node_modules/harper/node_modules/winston/node_modules/async": { - "version": "2.6.4", + "node_modules/harper/node_modules/webidl-conversions": { + "version": "3.0.1", "dev": true, - "license": "MIT", - "dependencies": { - "lodash": "^4.17.14" - } + "inBundle": true, + "license": "BSD-2-Clause" }, - "node_modules/harper/node_modules/wrap-ansi": { - "version": "6.2.0", + "node_modules/harper/node_modules/whatwg-url": { + "version": "5.0.0", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } }, "node_modules/harper/node_modules/wrappy": { "version": "1.0.2", "dev": true, + "inBundle": true, "license": "ISC" }, - "node_modules/harper/node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/harper/node_modules/write-file-atomic/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true - }, - "node_modules/harper/node_modules/ws": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.0.tgz", - "integrity": "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/harper/node_modules/xtend": { "version": "4.0.2", "dev": true, + "inBundle": true, "license": "MIT", "engines": { "node": ">=0.4" @@ -11094,25 +6563,16 @@ "node_modules/harper/node_modules/y18n": { "version": "5.0.8", "dev": true, + "inBundle": true, "license": "ISC", "engines": { "node": ">=10" } }, - "node_modules/harper/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true - }, "node_modules/harper/node_modules/yaml": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz", - "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==", + "version": "2.9.1", "dev": true, + "inBundle": true, "license": "ISC", "bin": { "yaml": "bin.mjs" @@ -11127,6 +6587,7 @@ "node_modules/harper/node_modules/yargs": { "version": "16.2.0", "dev": true, + "inBundle": true, "license": "MIT", "dependencies": { "cliui": "^7.0.2", @@ -11141,24 +6602,22 @@ "node": ">=10" } }, - "node_modules/harper/node_modules/yargs-parser": { - "version": "21.1.1", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true, - "engines": { - "node": ">=12" - } - }, "node_modules/harper/node_modules/yargs/node_modules/yargs-parser": { "version": "20.2.9", "dev": true, + "inBundle": true, "license": "ISC", "engines": { "node": ">=10" } }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -11179,6 +6638,55 @@ "loose-envify": "cli.js" } }, + "node_modules/msgpackr": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-2.1.0.tgz", + "integrity": "sha512-p/pBCVO63CsvvpkomUnNNag6+n38rULuDA6HHe70o2gtC8ODI52foF/4ko2qQcp6OiErJXTmrZeXmsGGHsIQNQ==", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "msgpackr-extract": "^3.0.4" + } + }, + "node_modules/msgpackr-extract": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.4.tgz", + "integrity": "sha512-4kmO/MdyUIkLIvTPr8VHLil4AtoKIoniWPIEk5+CDy0xnWC84azhSFmuJ7PxZdsYtiP5kEeQsORAVIeMgxT+Hw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "node-gyp-build-optional-packages": "5.2.2" + }, + "bin": { + "download-msgpackr-prebuilds": "bin/download-prebuilds.js" + }, + "optionalDependencies": { + "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.4", + "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.4", + "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.4", + "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.4", + "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.4", + "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.4" + } + }, + "node_modules/msgpackr-extract/node_modules/node-gyp-build-optional-packages": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz", + "integrity": "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "detect-libc": "^2.0.1" + }, + "bin": { + "node-gyp-build-optional-packages": "bin.js", + "node-gyp-build-optional-packages-optional": "optional.js", + "node-gyp-build-optional-packages-test": "build-test.js" + } + }, "node_modules/nanoid": { "version": "3.3.20", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.20.tgz", @@ -12541,6 +8049,44 @@ } } }, + "node_modules/node-addon-api": { + "version": "8.9.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.9.2.tgz", + "integrity": "sha512-VijLXbi3UACN69I0JVXJsX4tjACjNoQDgv2gTF6sx2wWEi8tkSg2eX8p5gSIFi8z2+DL3oHmY6OyKce38SDolg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18 || ^20 || >= 21" + } + }, + "node_modules/node-gyp-build": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", + "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", + "dev": true, + "license": "MIT", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-gyp-build-optional-packages": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.1.1.tgz", + "integrity": "sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "detect-libc": "^2.0.1" + }, + "bin": { + "node-gyp-build-optional-packages": "bin.js", + "node-gyp-build-optional-packages-optional": "optional.js", + "node-gyp-build-optional-packages-test": "build-test.js" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -12551,6 +8097,23 @@ "wrappy": "1" } }, + "node_modules/ordered-binary": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.6.2.tgz", + "integrity": "sha512-BY+qgDArmYpvvmij141xbkB4Cw8RFLBQM5Zj4MODFb1SyXBRE/xO4Xj/QWbR7aUEBxbkjuNdsFVCL2TmbYrlNg==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -12723,6 +8286,29 @@ "@img/sharp-win32-x64": "0.34.5" } }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", @@ -12753,6 +8339,21 @@ "text-decoder": "^1.1.0" } }, + "node_modules/structon": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/structon/-/structon-1.1.0.tgz", + "integrity": "sha512-QveeRWPoVevondkGanTbYjxfPvrPtfSKLUXIt3rUM5EK8p4K4lJceNc0juernn+YlfhpCZDpIcJEr3oZxGcimw==", + "dev": true, + "license": "Apache-2.0", + "peerDependencies": { + "msgpackr": ">=2.0.1" + }, + "peerDependenciesMeta": { + "msgpackr": { + "optional": true + } + } + }, "node_modules/styled-jsx": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz", @@ -12776,6 +8377,33 @@ } } }, + "node_modules/systeminformation": { + "version": "5.33.13", + "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.33.13.tgz", + "integrity": "sha512-GtyakkchTQKymM1WeAB652zi3rM1q00RKdc+jZe9KGstuc/mWUwAnQGN/RE5gVYvHIR8xYOUIUD9irVKDtA0wA==", + "dev": true, + "license": "MIT", + "os": [ + "darwin", + "linux", + "win32", + "freebsd", + "openbsd", + "netbsd", + "sunos", + "android" + ], + "bin": { + "systeminformation": "lib/cli.js" + }, + "engines": { + "node": ">=10.0.0" + }, + "funding": { + "type": "Buy me a coffee", + "url": "https://www.buymeacoffee.com/systeminfo" + } + }, "node_modules/tar-fs": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.2.tgz", @@ -12881,12 +8509,65 @@ "dev": true, "license": "MIT" }, + "node_modules/utf-8-validate": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true, "license": "ISC" + }, + "node_modules/ws": { + "version": "8.21.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.3.tgz", + "integrity": "sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } } } } diff --git a/package.json b/package.json index 94f818b..4d1397e 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,7 @@ "@harperfast/integration-testing": "0.7.0", "@playwright/test": "1.62.0", "@types/node": "^26", - "harper": "5.1.23", + "harper": "5.3.4", "next-14": "npm:next@14.2.35", "next-15": "npm:next@15.5.15", "next-16": "npm:next@16.2.4", diff --git a/src/DESIGN.md b/src/DESIGN.md index c4e58e8..5079175 100644 --- a/src/DESIGN.md +++ b/src/DESIGN.md @@ -15,3 +15,9 @@ The cache root resolves existing ancestors through `realpath` before directory c Namespaces and ownership markers are retained for operator-managed cleanup after their workers stop. No automatic cache sweep is added: a pre-delete liveness check cannot exclude a concurrent activation, and removing ownership markers while a worker serves can revive older seeds after invalidation. `VersionedCacheHandler.test.ts` exercises installed Next14/15/16 caches against real files and fresh processes. `integrationTests/next-16-versioned-cache.pw.ts` holds a real regeneration across the swap and verifies the new build and persistence after restarts. + +# Request hand-off to Next.js + +`requestHandoff.ts` gives Next.js the Node request directly unless Harper's router changed the URL. Harper strips an application's `urlPath` mount by proxying its `Request`; the Node request underneath keeps the URL as it arrived. Equal URLs mean no mount, so unmounted apps never allocate an adapter. When the URLs differ, the arriving URL still goes straight to Next.js if it begins with the app's `basePath` (read once from the prepared Next.js server's config, which covers dev servers that write no routes manifest), because Next.js strips its own basePath and would 404 the stripped URL. Only the remaining requests go through `Request.withNodeAdapter()`. Its request headers come from Harper's `Request`, which on HTTP/2 keeps pseudo-headers that Next.js rejects, so they are normalized in place as `adaptHttp2ForNext` does for the direct path. + +Every 5.x Harper has `withNodeAdapter`, so its presence proves nothing: the adapter only serves Next.js from Harper 5.3.0, and from 5.3.3 on runtimes whose pipe fast path skips `write()` overrides (Node.js 26.11+). The plugin reads the running version once per worker from the documented `registration_info` operation; an unreadable version counts as too old. Below the floor a mounted request keeps the direct hand-off and the plugin warns once, without the URL, which can carry query-string secrets. diff --git a/src/buildLock.test.ts b/src/buildLock.test.ts index 4bda21c..854f59d 100644 --- a/src/buildLock.test.ts +++ b/src/buildLock.test.ts @@ -1,18 +1,9 @@ -import { databases, type Scope } from 'harper'; +import type { Scope } from 'harper'; import { describe, it } from 'node:test'; import assert from 'node:assert'; import { withBuildLock, type BuildLockDeps } from './buildLock.js'; -// The build lock coordinates through `databases.harperfast_nextjs.nextjs_build_info` (imported from -// `harper`). These unit tests run "outside Harper", so clear any real `harperfast_nextjs` database a local -// Harper install may have opened on import, then inject a mock table per test. Because `databases` is a -// shared singleton, assigning at that path is what makes the module under test see the mock — this is why -// `buildLock` imports `databases` instead of reading `globalThis`. -(databases as any).harperfast_nextjs = {}; - -const TABLE = 'nextjs_build_info'; - describe('withBuildLock', () => { /** Records as Harper returns them from `table.get`: a status/buildId plus the time last written. */ const building = (ageMs = 0) => ({ status: 'building', buildId: null, getUpdatedTime: () => Date.now() - ageMs }); @@ -38,12 +29,6 @@ describe('withBuildLock', () => { }; } - /** Install `table` as the build-info table for one test, removing it afterward so tests don't leak state. */ - function useTable(t: any, table: unknown) { - (databases as any).harperfast_nextjs[TABLE] = table; - t.after(() => delete (databases as any).harperfast_nextjs[TABLE]); - } - // A minimal Scope: `withBuildLock` only touches `appName`/`directory` (for logs) and the `logger`. const scope = { appName: 'test-app', directory: '/test/dir', logger: {} } as unknown as Scope; @@ -62,7 +47,6 @@ describe('withBuildLock', () => { } it('runs the build directly when no Harper table is available (e.g. unit tests / outside Harper)', async () => { - delete (databases as any).harperfast_nextjs[TABLE]; const events: string[] = []; await withBuildLock(scope, makeDeps(events)); @@ -70,12 +54,11 @@ describe('withBuildLock', () => { assert.deepStrictEqual(events, ['build'], 'builds without any locking when there is no table'); }); - it('claims the build, runs it, then records success when no record exists', async (t) => { + it('claims the build, runs it, then records success when no record exists', async () => { const events: string[] = []; const table = makeTable(events); // get → undefined (no existing record) - useTable(t, table); - await withBuildLock(scope, makeDeps(events, 'abc123')); + await withBuildLock(scope, { ...makeDeps(events, 'abc123'), table }); assert.deepStrictEqual( events, @@ -87,74 +70,67 @@ describe('withBuildLock', () => { assert.deepStrictEqual(table.puts.map((p) => p.key), ['test-app', 'test-app'], 'keyed by appName'); }); - it('waits without building when another worker holds a fresh claim, returning once it succeeds', async (t) => { + it('waits without building when another worker holds a fresh claim, returning once it succeeds', async () => { const events: string[] = []; // Gate sees a fresh "building" claim; after one poll the sibling has finished with a matching build. const table = makeTable(events, [building(), success('done')]); - useTable(t, table); - await withBuildLock(scope, makeDeps(events, 'ignored', () => 'done')); + await withBuildLock(scope, { ...makeDeps(events, 'ignored', () => 'done'), table }); assert.ok(!events.includes('build'), 'does not build while another worker holds the claim'); assert.deepStrictEqual(table.puts, [], 'never writes a claim of its own — the sibling produced the output'); }); - it('treats a "building" record with no recent heartbeat as abandoned and builds anyway', async (t) => { + it('treats a "building" record with no recent heartbeat as abandoned and builds anyway', async () => { const events: string[] = []; // No heartbeat for longer than the stale threshold → the holder is assumed crashed. const table = makeTable(events, [building(5 * 60 * 1000)]); - useTable(t, table); - await withBuildLock(scope, makeDeps(events)); + await withBuildLock(scope, { ...makeDeps(events), table }); assert.deepStrictEqual(events, ['put:building', 'build', 'put:success'], 'reclaims and builds past a stale claim'); }); - it('reuses a fresh successful build without building when the on-disk BUILD_ID matches', async (t) => { + it('reuses a fresh successful build without building when the on-disk BUILD_ID matches', async () => { const events: string[] = []; const table = makeTable(events, [success('match')]); - useTable(t, table); - await withBuildLock(scope, makeDeps(events, 'ignored', () => 'match')); + await withBuildLock(scope, { ...makeDeps(events, 'ignored', () => 'match'), table }); assert.deepStrictEqual(events, [], 'no build and no writes — the existing build is reused'); }); - it('rebuilds when a fresh successful record does not match the on-disk BUILD_ID', async (t) => { + it('rebuilds when a fresh successful record does not match the on-disk BUILD_ID', async () => { const events: string[] = []; const table = makeTable(events, [success('old')]); - useTable(t, table); - await withBuildLock(scope, makeDeps(events, 'fresh', () => 'different')); + await withBuildLock(scope, { ...makeDeps(events, 'fresh', () => 'different'), table }); assert.deepStrictEqual(events, ['put:building', 'build', 'put:success'], 'a BUILD_ID mismatch forces a rebuild'); }); - it('rebuilds when the last successful build is older than the fresh-build window', async (t) => { + it('rebuilds when the last successful build is older than the fresh-build window', async () => { const events: string[] = []; // Matching BUILD_ID but older than 5s → not reusable; a restart should rebuild. const table = makeTable(events, [success('match', 6000)]); - useTable(t, table); - await withBuildLock(scope, makeDeps(events, 'fresh', () => 'match')); + await withBuildLock(scope, { ...makeDeps(events, 'fresh', () => 'match'), table }); assert.deepStrictEqual(events, ['put:building', 'build', 'put:success'], 'a stale success record is rebuilt'); }); - it('skips building when a sibling just recorded a failure (avoids failing on every thread)', async (t) => { + it('skips building when a sibling just recorded a failure (avoids failing on every thread)', async () => { const events: string[] = []; const table = makeTable(events, [failure()]); - useTable(t, table); - await withBuildLock(scope, makeDeps(events)); + await withBuildLock(scope, { ...makeDeps(events), table }); assert.deepStrictEqual(events, [], 'does not rebuild while a fresh failure is recorded'); }); - it('records failure and rethrows when the build it runs throws', async (t) => { + it('records failure and rethrows when the build it runs throws', async () => { const events: string[] = []; const table = makeTable(events); - useTable(t, table); const deps: BuildLockDeps = { getBuildId: () => null, runBuild: async () => { @@ -163,7 +139,7 @@ describe('withBuildLock', () => { }, }; - await assert.rejects(withBuildLock(scope, deps), /boom/); + await assert.rejects(withBuildLock(scope, { ...deps, table }), /boom/); assert.deepStrictEqual(events, ['put:building', 'build', 'put:failure'], 'claims, fails, then records the failure'); }); @@ -173,7 +149,6 @@ describe('withBuildLock', () => { t.mock.timers.enable({ apis: ['setTimeout'] }); const events: string[] = []; const table = makeTable(events); // get → undefined (no existing record) - useTable(t, table); let finishBuild!: () => void; const deps: BuildLockDeps = { @@ -181,7 +156,7 @@ describe('withBuildLock', () => { runBuild: () => new Promise((resolve) => (finishBuild = () => resolve('hb-id'))), }; - const done = withBuildLock(scope, deps); + const done = withBuildLock(scope, { ...deps, table }); await tick(); // claim the build, start the build, and arm the heartbeat assert.deepStrictEqual(events, ['put:building'], 'claims once up front'); diff --git a/src/buildLock.ts b/src/buildLock.ts index 3f716c8..359aeba 100644 --- a/src/buildLock.ts +++ b/src/buildLock.ts @@ -1,4 +1,4 @@ -import { databases, type Scope } from 'harper'; +import type { Scope } from 'harper'; import { setTimeout as sleep } from 'node:timers/promises'; // Coordinates production builds across Harper worker threads (and processes sharing a database). Harper @@ -11,9 +11,6 @@ import { setTimeout as sleep } from 'node:timers/promises'; // heartbeat: the builder re-stamps its claim on an interval so an in-progress build of any length stays // fresh, while a crashed builder's claim still goes stale (and is reclaimed) within STALE_CLAIM_MS. -const DATABASE = 'harperfast_nextjs'; -const TABLE = 'nextjs_build_info'; - // A completed build (`success`/`failure`) is reused for this long; after it, a restart triggers a rebuild. const FRESH_BUILD_MS = 5000; // While building, the claiming worker re-stamps its `building` record on this interval (a heartbeat) so a @@ -36,16 +33,11 @@ interface BuildInfoRecord { } /** The subset of the Harper build-info table the lock uses. */ -interface BuildInfoTable { +export interface BuildInfoTable { get(key: string): Promise; put(key: string, value: { buildId: string | null; status: string }): Promise | unknown; } -/** The build-info table, or `undefined` when running outside Harper (e.g. unit tests). */ -function buildInfoTable(): BuildInfoTable | undefined { - return (databases as unknown as Record>)?.[DATABASE]?.[TABLE]; -} - /** * Re-stamp the `building` claim on an interval so a live (possibly long) build never looks abandoned to * waiting workers. Returns a stop function that halts the heartbeat and awaits any in-flight re-stamp, so @@ -90,6 +82,8 @@ export interface BuildLockDeps { getBuildId: () => string | null; /** Runs `next build` and resolves with the resulting BUILD_ID. Rejects if the build fails. */ runBuild: () => Promise; + /** The `harperfast_nextjs.nextjs_build_info` table, absent outside Harper. */ + table?: BuildInfoTable; } /** @@ -100,7 +94,7 @@ export interface BuildLockDeps { * Outside Harper (no coordination table), it simply runs the build. */ export async function withBuildLock(scope: Scope, deps: BuildLockDeps): Promise { - const table = buildInfoTable(); + const { table } = deps; if (!table) { await deps.runBuild(); return; diff --git a/src/http2Compat.test.ts b/src/http2Compat.test.ts index 5b467ea..a746912 100644 --- a/src/http2Compat.test.ts +++ b/src/http2Compat.test.ts @@ -6,7 +6,7 @@ import { connect, constants, createServer as createHttp2Server, type Http2Server import type { AddressInfo } from 'node:net'; import { gunzipSync } from 'node:zlib'; -import { adaptHttp2ForNext } from './http2Compat.js'; +import { adaptHttp2ForNext, stripHttp2PseudoHeaders } from './http2Compat.js'; const require = createRequire(import.meta.url); const compression = require('next-16/dist/compiled/compression'); @@ -234,3 +234,24 @@ describe('adaptHttp2ForNext', () => { } }); }); + +describe('stripHttp2PseudoHeaders', () => { + it('drops pseudo-headers and takes host from :authority, so Next.js can convert them', () => { + const headers: Record = { + ':method': 'GET', + ':path': '/api/echo?q=1', + ':authority': 'example.test:9927', + ':scheme': 'https', + accept: '*/*', + }; + stripHttp2PseudoHeaders(headers); + assert.deepStrictEqual(headers, { accept: '*/*', host: 'example.test:9927' }); + assert.strictEqual(nextHeadersConversion(headers), 'ok'); + }); + + it('keeps an explicit host', () => { + const headers: Record = { ':authority': 'a.test', host: 'b.test' }; + stripHttp2PseudoHeaders(headers); + assert.deepStrictEqual(headers, { host: 'b.test' }); + }); +}); diff --git a/src/http2Compat.ts b/src/http2Compat.ts index cdd90eb..4ce9443 100644 --- a/src/http2Compat.ts +++ b/src/http2Compat.ts @@ -37,3 +37,14 @@ export function adaptHttp2ForNext( function implicitHeader(this: Http2ServerResponse): void { if (!this.headersSent) this.writeHead(this.statusCode); } + +/** + * The same header shape fix, in place, for the headers `Request.withNodeAdapter()` presents: Harper builds them + * from its own `Request`, which keeps HTTP/2's pseudo-headers and has no `host`. + */ +export function stripHttp2PseudoHeaders(headers: IncomingHttpHeaders): void { + headers.host ??= headers[':authority'] as string | undefined; + for (const name in headers) { + if (name[0] === ':') delete headers[name]; + } +} diff --git a/src/plugin.ts b/src/plugin.ts index 4ff4879..59f4120 100644 --- a/src/plugin.ts +++ b/src/plugin.ts @@ -11,12 +11,11 @@ import * as harper from 'harper'; import type { Scope, Config, FilesOption } from 'harper'; import { createRequire } from 'node:module'; -import { parse as urlParse } from 'node:url'; import { join } from 'node:path'; import { existsSync, readFileSync } from 'node:fs'; -import { withBuildLock } from './buildLock.js'; -import { adaptHttp2ForNext } from './http2Compat.js'; +import { withBuildLock, type BuildInfoTable } from './buildLock.js'; +import { createNextHttpHandler, type NextRequestHandler } from './requestHandoff.js'; import { OLD_BUILD_SWEEP_DELAY_MS, oldBuildSweepEnabled, sweepOtherBuilds } from './buildSweep.js'; import type NextModule14 from 'next-14'; @@ -312,6 +311,8 @@ async function build(scope: Scope, config: NextPluginConfig, next: NextPackage) await withBuildLock(scope, { getBuildId: () => getBuildId(scope), runBuild: () => runNextBuild(scope, config, next), + table: (harper.databases as unknown as Record | undefined>) + .harperfast_nextjs?.nextjs_build_info, }); } @@ -426,30 +427,28 @@ async function serve(scope: Scope, config: NextPluginConfig, next: NextPackage) } await app.prepare(); - if (cacheBindings) { - try { - type Renderer = { getServer(): Promise<{ nextConfig: { cacheHandler?: string; distDir?: string } }> }; - const prepared = app as unknown as { server?: Renderer; renderServer?: Renderer }; - const renderer = next.version === 14 ? prepared.renderServer! : prepared.server!; - const nextConfig = typeof renderer?.getServer === 'function' ? (await renderer.getServer()).nextConfig : undefined; + let nextConfig: { basePath?: string; cacheHandler?: string; distDir?: string } | undefined; + try { + type Renderer = { getServer(): Promise<{ nextConfig: NonNullable }> }; + const prepared = app as unknown as { server?: Renderer; renderServer?: Renderer }; + const renderer = next.version === 14 ? prepared.renderServer! : prepared.server!; + nextConfig = typeof renderer?.getServer === 'function' ? (await renderer.getServer()).nextConfig : undefined; + if (cacheBindings) { if (nextConfig) cacheBindings.assertVersionedCacheConfig(scope.directory, nextConfig, cacheBinding); else if (cacheBinding) throw new Error(`Cannot verify versioned cache configuration for Next.js ${next.version}: unsupported server shape`); if (cacheBinding) await cacheBindings.assertVersionedCacheBuild(cacheBinding); - } catch (error) { - await app.close().catch(() => {}); - throw error; } + } catch (error) { + await app.close().catch(() => {}); + throw error; } - const requestHandler = app.getRequestHandler(); - scope.server?.http?.( - (request, next) => { - if (request._nodeResponse === undefined) return next(request); - adaptHttp2ForNext(request._nodeRequest, request._nodeResponse); - // @ts-expect-error - Not sure when the IncomingMessage.url could be undefined ; need to dig into it. - return requestHandler(request._nodeRequest, request._nodeResponse, urlParse(request._nodeRequest.url, true)); - }, + createNextHttpHandler(app.getRequestHandler() as NextRequestHandler, { + basePath: nextConfig?.basePath ?? '', + harperVersion: await runningHarperVersion(scope), + logger: scope.logger, + }), { runFirst: config.runFirst, port: config.port, securePort: config.securePort } ); @@ -473,6 +472,16 @@ async function serve(scope: Scope, config: NextPluginConfig, next: NextPackage) } } +async function runningHarperVersion(scope: Scope): Promise { + try { + // `registration_info` needs no permission. + return (await scope.server?.operation({ operation: 'registration_info' }, undefined, false))?.version; + } catch (error) { + scope.logger.debug?.('Could not read the running Harper version: ', error); + return undefined; + } +} + interface Next14 { version: 14; server: typeof NextModule14.default; diff --git a/src/requestHandoff.test.ts b/src/requestHandoff.test.ts new file mode 100644 index 0000000..a0ff47e --- /dev/null +++ b/src/requestHandoff.test.ts @@ -0,0 +1,142 @@ +import { describe, it } from 'node:test'; +import assert from 'node:assert'; +import type { IncomingMessage, ServerResponse } from 'node:http'; +import type { UrlWithParsedQuery } from 'node:url'; + +import { createNextHttpHandler, nodeAdapterUsable, type HarperHttpRequest } from './requestHandoff.js'; + +describe('nodeAdapterUsable', () => { + it('requires Harper 5.3.0', () => { + assert.strictEqual(nodeAdapterUsable('5.2.15', false), false); + assert.strictEqual(nodeAdapterUsable('5.3.0-beta.4', false), false); + assert.strictEqual(nodeAdapterUsable('5.3.0', false), true); + assert.strictEqual(nodeAdapterUsable('5.4.0-alpha.1', false), true); + assert.strictEqual(nodeAdapterUsable('6.0.0', false), true); + }); + + it('requires Harper 5.3.3 where the pipe fast path skips write() overrides', () => { + assert.strictEqual(nodeAdapterUsable('5.3.2', true), false); + assert.strictEqual(nodeAdapterUsable('5.3.3', true), true); + assert.strictEqual(nodeAdapterUsable('5.4.0', true), true); + }); + + it('rejects an unknown or unparseable version', () => { + assert.strictEqual(nodeAdapterUsable(undefined, false), false); + assert.strictEqual(nodeAdapterUsable('latest', false), false); + }); +}); + +describe('createNextHttpHandler', () => { + function harness(options: { basePath?: string; harperVersion?: string | undefined } = {}) { + const { basePath = '' } = options; + const harperVersion = 'harperVersion' in options ? options.harperVersion : '5.3.4'; + const handled: { url: string; pathname: string | null; search: string | null; adapted: boolean }[] = []; + const warnings: unknown[][] = []; + const handler = createNextHttpHandler( + async (request: IncomingMessage, _response: ServerResponse, parsedUrl: UrlWithParsedQuery) => { + handled.push({ + url: request.url!, + pathname: parsedUrl.pathname, + search: parsedUrl.search, + adapted: (request as { adapted?: boolean }).adapted === true, + }); + }, + { basePath, harperVersion, logger: { warn: (...args: unknown[]) => warnings.push(args) } } + ); + let adapterCalls = 0; + const send = (url: string, nodeUrl = url) => { + const request: HarperHttpRequest = { + url, + _nodeRequest: { url: nodeUrl, headers: {} } as IncomingMessage, + _nodeResponse: {} as ServerResponse, + async withNodeAdapter(adapted) { + adapterCalls++; + await adapted({ url, adapted: true } as unknown as IncomingMessage, {} as ServerResponse); + return { status: 200 }; + }, + }; + return handler(request, () => 'next layer'); + }; + return { send, handled, warnings, adapterCalls: () => adapterCalls }; + } + + it('hands an unmounted request straight to Next.js', async () => { + const { send, handled, adapterCalls } = harness(); + await send('/about?q=1'); + assert.deepStrictEqual(handled, [{ url: '/about?q=1', pathname: '/about', search: '?q=1', adapted: false }]); + assert.strictEqual(adapterCalls(), 0); + }); + + it('passes a request with no Node response to the next layer', () => { + let handled = false; + const handler = createNextHttpHandler( + async () => { + handled = true; + }, + { basePath: '', harperVersion: '5.3.4', logger: {} } + ); + const request = { url: '/x', _nodeRequest: { url: '/x' }, _nodeResponse: null } as unknown as HarperHttpRequest; + assert.strictEqual(handler(request, () => 'next layer'), 'next layer'); + assert.strictEqual(handled, false); + }); + + it('presents the mount-relative URL through the adapter on a capable Harper', async () => { + const { send, handled, warnings, adapterCalls } = harness(); + await send('/about?q=1', '/mounted/about?q=1'); + assert.deepStrictEqual(handled, [{ url: '/about?q=1', pathname: '/about', search: '?q=1', adapted: true }]); + assert.strictEqual(adapterCalls(), 1); + assert.deepStrictEqual(warnings, []); + }); + + it('keeps the direct hand-off and warns once on a Harper below the adapter floor', async () => { + const { send, handled, warnings, adapterCalls } = harness({ harperVersion: '5.2.15' }); + await send('/about?token=secret', '/mounted/about?token=secret'); + await send('/', '/mounted'); + assert.strictEqual(adapterCalls(), 0); + assert.deepStrictEqual( + handled.map(({ url, adapted }) => ({ url, adapted })), + [ + { url: '/mounted/about?token=secret', adapted: false }, + { url: '/mounted', adapted: false }, + ] + ); + assert.strictEqual(warnings.length, 1); + const warning = String(warnings[0][0]); + assert.match(warning, /Harper 5\.2\.15/); + assert.doesNotMatch(warning, /about|secret/); + }); + + it('treats an unknown Harper version as below the floor', async () => { + const { send, warnings, adapterCalls } = harness({ harperVersion: undefined }); + await send('/about', '/mounted/about'); + assert.strictEqual(adapterCalls(), 0); + assert.match(String(warnings[0][0]), /version unknown/); + }); + + it('keeps the direct hand-off when the arriving URL already carries the basePath', async () => { + const { send, handled, warnings, adapterCalls } = harness({ basePath: '/mounted', harperVersion: '5.2.15' }); + await send('/about', '/mounted/about'); + await send('/', '/mounted'); + await send('/?q=1', '/mounted?q=1'); + assert.strictEqual(adapterCalls(), 0); + assert.deepStrictEqual( + handled.map(({ url }) => url), + ['/mounted/about', '/mounted', '/mounted?q=1'] + ); + assert.deepStrictEqual(warnings, []); + }); + + it('matches the basePath only at a path segment boundary', async () => { + const { send, handled, adapterCalls } = harness({ basePath: '/app' }); + await send('/x', '/apps/x'); + assert.strictEqual(adapterCalls(), 1); + assert.strictEqual(handled[0].url, '/x'); + }); + + it('uses the adapter when the basePath sits below the mount', async () => { + const { send, handled, adapterCalls } = harness({ basePath: '/next' }); + await send('/next/about', '/mounted/next/about'); + assert.strictEqual(adapterCalls(), 1); + assert.strictEqual(handled[0].url, '/next/about'); + }); +}); diff --git a/src/requestHandoff.ts b/src/requestHandoff.ts new file mode 100644 index 0000000..cc96a3e --- /dev/null +++ b/src/requestHandoff.ts @@ -0,0 +1,97 @@ +import type { IncomingMessage, ServerResponse } from 'node:http'; +import { Http2ServerRequest, type Http2ServerResponse } from 'node:http2'; +import { Writable } from 'node:stream'; +import { parse as urlParse, type UrlWithParsedQuery } from 'node:url'; + +import { adaptHttp2ForNext, stripHttp2PseudoHeaders } from './http2Compat.js'; + +export type NextRequestHandler = ( + request: IncomingMessage, + response: ServerResponse, + parsedUrl: UrlWithParsedQuery +) => Promise; + +export interface HarperHttpRequest { + url: string; + _nodeRequest: IncomingMessage | Http2ServerRequest; + _nodeResponse?: ServerResponse | Http2ServerResponse | null; + withNodeAdapter( + handler: (request: IncomingMessage, response: ServerResponse) => void | Promise + ): Promise; +} + +interface Logger { + warn?(...args: unknown[]): void; +} + +const NODE_ADAPTER_REQUIREMENT = 'Harper 5.3.0 or later (5.3.3 or later on Node.js 26.11+)'; + +/** + * Whether this Harper's `Request.withNodeAdapter()` can serve Next.js. Every 5.x Harper has the method, but + * before 5.3.0 (harper#2528) its response was not a real Writable: Next.js 500s and responses over 16 KB hang. + * Node.js 26.11's pipe fast path also corrupted its gzip output until 5.3.3 (harper#3108); `pipeSkipsWrite` is + * Harper's own test for that runtime. + */ +export function nodeAdapterUsable( + harperVersion: string | undefined, + pipeSkipsWrite = 'writeKnownBuffer' in Writable +): boolean { + if (harperVersion === undefined) return false; + return pipeSkipsWrite ? versionAtLeast(harperVersion, 5, 3, 3) : versionAtLeast(harperVersion, 5, 3, 0); +} + +function versionAtLeast(version: string, ...floor: [number, number, number]): boolean { + const match = /^(\d+)\.(\d+)\.(\d+)(-)?/.exec(version); + if (!match) return false; + for (let index = 0; index < 3; index++) { + const part = Number(match[index + 1]); + if (part !== floor[index]) return part > floor[index]; + } + // A prerelease of the floor version predates it. + return match[4] === undefined; +} + +/** Mirrors Next.js's own basePath match. */ +function carriesBasePath(url: string, basePath: string): boolean { + if (basePath === '' || !url.startsWith(basePath)) return false; + const boundary = url[basePath.length]; + return boundary === undefined || boundary === '/' || boundary === '?' || boundary === '#'; +} + +export function createNextHttpHandler( + requestHandler: NextRequestHandler, + { basePath, harperVersion, logger }: { basePath: string; harperVersion: string | undefined; logger: Logger } +) { + const adapterUsable = nodeAdapterUsable(harperVersion); + let warnedAdapterUnusable = false; + + return (request: Request, next: (request: Request) => unknown) => { + // `== null`, not `=== undefined`: Harper's Bun and uWS requests carry a null `_nodeResponse`, and neither + // implements the Node adapter used below. + if (request._nodeResponse == null) return next(request); + const nodeRequest = request._nodeRequest as IncomingMessage; + const nodeResponse = request._nodeResponse as ServerResponse; + const nodeUrl = nodeRequest.url!; + // Harper strips a urlPath mount by proxying its `Request`; the Node request keeps the URL as it arrived. + if (request.url !== nodeUrl && !carriesBasePath(nodeUrl, basePath)) { + if (adapterUsable) { + const http2 = request._nodeRequest instanceof Http2ServerRequest; + return request.withNodeAdapter((adaptedRequest, adaptedResponse) => { + if (http2) stripHttp2PseudoHeaders(adaptedRequest.headers); + return requestHandler(adaptedRequest, adaptedResponse, urlParse(adaptedRequest.url!, true)); + }); + } + if (!warnedAdapterUnusable) { + warnedAdapterUnusable = true; + logger.warn?.( + `Harper ${harperVersion ?? '(version unknown)'} cannot hand Next.js the request URL relative to the ` + + `application's urlPath mount, which needs ${NODE_ADAPTER_REQUIREMENT}. Next.js receives the URL as it ` + + 'arrived, so this mounted application will not route correctly. Upgrade Harper, serve the application at ' + + 'the root, or build it with a Next.js basePath equal to its urlPath.' + ); + } + } + adaptHttp2ForNext(nodeRequest, nodeResponse); + return requestHandler(nodeRequest, nodeResponse, urlParse(nodeUrl, true)); + }; +}