diff --git a/.github/workflows/jan-electron-linter-and-test.yml b/.github/workflows/jan-electron-linter-and-test.yml index b2105acb4..a23add3ca 100644 --- a/.github/workflows/jan-electron-linter-and-test.yml +++ b/.github/workflows/jan-electron-linter-and-test.yml @@ -44,16 +44,17 @@ jobs: - uses: actions/checkout@v3 with: ref: ${{ github.base_ref }} - - name: Use Node.js v20.9.0 + - name: Use Node.js 20.x uses: actions/setup-node@v3 with: - node-version: v20.9.0 + node-version: 20 - name: Install dependencies run: | + make config-yarn yarn - yarn build:core yarn build:joi + yarn build:core - name: Run test coverage run: yarn test:coverage @@ -66,7 +67,7 @@ jobs: test-on-macos: if: (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository) || github.event_name == 'push' || github.event_name == 'workflow_dispatch' - runs-on: [self-hosted, macOS, macos-desktop] + runs-on: macos-latest steps: - name: Getting the repo uses: actions/checkout@v3 @@ -78,6 +79,10 @@ jobs: with: node-version: 20 + - name: Set IS_TEST environment variable + run: | + echo "IS_TEST=true" >> $GITHUB_ENV + - name: 'Cleanup cache' continue-on-error: true run: | @@ -100,18 +105,13 @@ jobs: - name: Linter and test run: | - npm config set registry ${{ secrets.NPM_PROXY }} --global - yarn config set registry ${{ secrets.NPM_PROXY }} --global make test env: CSC_IDENTITY_AUTO_DISCOVERY: 'false' - # TURBO_API: '${{ secrets.TURBO_API }}' - # TURBO_TEAM: 'macos' - # TURBO_TOKEN: '${{ secrets.TURBO_TOKEN }}' test-on-macos-pr-target: if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != github.repository - runs-on: [self-hosted, macOS, macos-desktop] + runs-on: macos-latest steps: - name: Getting the repo uses: actions/checkout@v3 @@ -131,8 +131,6 @@ jobs: - name: Linter and test run: | - npm config set registry https://registry.npmjs.org --global - yarn config set registry https://registry.npmjs.org --global make test env: CSC_IDENTITY_AUTO_DISCOVERY: 'false' @@ -182,13 +180,8 @@ jobs: - name: Linter and test shell: powershell run: | - npm config set registry ${{ secrets.NPM_PROXY }} --global - yarn config set registry ${{ secrets.NPM_PROXY }} --global make test - # env: - # TURBO_API: '${{ secrets.TURBO_API }}' - # TURBO_TEAM: 'windows' - # TURBO_TOKEN: '${{ secrets.TURBO_TOKEN }}' + test-on-windows-pr: if: (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository) runs-on: windows-desktop-default-windows-security @@ -199,7 +192,7 @@ jobs: fetch-depth: 0 - name: Installing node - uses: actions/setup-node@v1 + uses: actions/setup-node@v3 with: node-version: 20 @@ -230,17 +223,11 @@ jobs: - name: Linter and test shell: powershell run: | - npm config set registry ${{ secrets.NPM_PROXY }} --global - yarn config set registry ${{ secrets.NPM_PROXY }} --global make test - # env: - # TURBO_API: '${{ secrets.TURBO_API }}' - # TURBO_TEAM: 'windows' - # TURBO_TOKEN: '${{ secrets.TURBO_TOKEN }}' test-on-windows-pr-target: if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != github.repository - runs-on: windows-desktop-default-windows-security + runs-on: windows-latest steps: - name: Getting the repo uses: actions/checkout@v3 @@ -268,12 +255,10 @@ jobs: - name: Linter and test shell: powershell run: | - npm config set registry https://registry.npmjs.org --global - yarn config set registry https://registry.npmjs.org --global make test test-on-ubuntu: - runs-on: [self-hosted, Linux, ubuntu-desktop] + runs-on: ubuntu-latest if: (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository) || github.event_name == 'push' || github.event_name == 'workflow_dispatch' steps: - name: Getting the repo @@ -311,13 +296,7 @@ jobs: run: | export DISPLAY=$(w -h | awk 'NR==1 {print $2}') echo -e "Display ID: $DISPLAY" - npm config set registry ${{ secrets.NPM_PROXY }} --global - yarn config set registry ${{ secrets.NPM_PROXY }} --global make test - # env: - # TURBO_API: '${{ secrets.TURBO_API }}' - # TURBO_TEAM: 'linux' - # TURBO_TOKEN: '${{ secrets.TURBO_TOKEN }}' - uses: actions/upload-artifact@v4 if: always() @@ -327,7 +306,7 @@ jobs: retention-days: 2 coverage-check: - runs-on: [self-hosted, Linux, ubuntu-desktop] + runs-on: ubuntu-latest needs: base_branch_cov if: (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository) || github.event_name == 'push' || github.event_name == 'workflow_dispatch' steps: @@ -341,6 +320,9 @@ jobs: with: node-version: 20 + - name: Install yarn + run: npm install -g yarn + - name: 'Cleanup cache' continue-on-error: true run: | @@ -356,15 +338,9 @@ jobs: run: | export DISPLAY=$(w -h | awk 'NR==1 {print $2}') echo -e "Display ID: $DISPLAY" - npm config set registry ${{ secrets.NPM_PROXY }} --global - yarn config set registry ${{ secrets.NPM_PROXY }} --global make lint yarn build:test yarn test:coverage - # env: - # TURBO_API: '${{ secrets.TURBO_API }}' - # TURBO_TEAM: 'linux' - # TURBO_TOKEN: '${{ secrets.TURBO_TOKEN }}' - name: Generate Code Coverage report id: code-coverage @@ -377,7 +353,7 @@ jobs: show-annotations: 'warning' test-on-ubuntu-pr-target: - runs-on: [self-hosted, Linux, ubuntu-desktop] + runs-on: ubuntu-latest if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != github.repository steps: - name: Getting the repo @@ -400,6 +376,4 @@ jobs: run: | export DISPLAY=$(w -h | awk 'NR==1 {print $2}') echo -e "Display ID: $DISPLAY" - npm config set registry https://registry.npmjs.org --global - yarn config set registry https://registry.npmjs.org --global make test diff --git a/.github/workflows/publish-npm-core.yml b/.github/workflows/publish-npm-core.yml index b6d400957..49eac8dd2 100644 --- a/.github/workflows/publish-npm-core.yml +++ b/.github/workflows/publish-npm-core.yml @@ -1,4 +1,4 @@ -name: Publish plugin models Package to npmjs +name: Publish core Package to npmjs on: push: tags: ["v[0-9]+.[0-9]+.[0-9]+-core"] @@ -45,7 +45,7 @@ jobs: node-version: "20.x" registry-url: "https://registry.npmjs.org" - - run: cd core && yarn install && yarn build + - run: cd core && corepack enable && corepack prepare yarn@4.5.3 --activate && yarn --version && yarn install && yarn build - run: cd core && yarn publish --access public if: github.event_name == 'push' diff --git a/.github/workflows/publish-npm-joi.yml b/.github/workflows/publish-npm-joi.yml index c943468d8..8c6ee6f68 100644 --- a/.github/workflows/publish-npm-joi.yml +++ b/.github/workflows/publish-npm-joi.yml @@ -1,4 +1,4 @@ -name: Publish plugin models Package to npmjs +name: Publish joi Package to npmjs on: push: tags: ["v[0-9]+.[0-9]+.[0-9]+-joi"] @@ -45,7 +45,7 @@ jobs: node-version: "20.x" registry-url: "https://registry.npmjs.org" - - run: cd joi && yarn install && yarn build + - run: cd joi && corepack enable && corepack prepare yarn@4.5.3 --activate && yarn --version && yarn install && yarn build - run: cd joi && yarn publish --access public if: github.event_name == 'push' diff --git a/.gitignore b/.gitignore index ab815678a..bbf7c059f 100644 --- a/.gitignore +++ b/.gitignore @@ -8,7 +8,6 @@ error.log node_modules *.tgz !charts/server/charts/*.tgz -yarn.lock dist build .DS_Store @@ -48,3 +47,7 @@ coverage test_results.html *.tsbuildinfo electron/shared/** + +# docs +docs/yarn.lock +electron/.version.bak diff --git a/.yarnrc.yml b/.yarnrc.yml new file mode 100644 index 000000000..74febbee3 --- /dev/null +++ b/.yarnrc.yml @@ -0,0 +1,3 @@ +nmHoistingLimits: workspaces +nodeLinker: node-modules +checksumBehavior: update diff --git a/Makefile b/Makefile index e0750f306..0c2a2ef8a 100644 --- a/Makefile +++ b/Makefile @@ -10,23 +10,23 @@ REPORT_PORTAL_DESCRIPTION ?= "Jan App report" all: @echo "Specify a target to run" -# Builds the UI kit -build-joi: -ifeq ($(OS),Windows_NT) - cd joi && yarn config set network-timeout 300000 && yarn install && yarn build -else - cd joi && yarn install && yarn build -endif +# Config yarn version + +config-yarn: + corepack enable + corepack prepare yarn@4.5.3 --activate + yarn --version + yarn config set -H enableImmutableInstalls false # Installs yarn dependencies and builds core and extensions -install-and-build: build-joi +install-and-build: config-yarn ifeq ($(OS),Windows_NT) - yarn config set network-timeout 300000 + echo "skip" endif - yarn global add turbo@1.13.2 + yarn install + yarn build:joi yarn build:core yarn build:server - yarn install yarn build:extensions check-file-counts: install-and-build @@ -117,9 +117,8 @@ build: check-file-counts clean: ifeq ($(OS),Windows_NT) - -powershell -Command "Get-ChildItem -Path . -Include node_modules, .next, dist, build, out, .turbo -Recurse -Directory | Remove-Item -Recurse -Force" - -powershell -Command "Get-ChildItem -Path . -Include package-lock.json -Recurse -File | Remove-Item -Recurse -Force" - -powershell -Command "Get-ChildItem -Path . -Include yarn.lock -Recurse -File | Remove-Item -Recurse -Force" + -powershell -Command "Get-ChildItem -Path . -Include node_modules, .next, dist, build, out, .turbo, .yarn -Recurse -Directory | Remove-Item -Recurse -Force" + -powershell -Command "Get-ChildItem -Path . -Include package-lock.json, tsconfig.tsbuildinfo -Recurse -File | Remove-Item -Recurse -Force" -powershell -Command "Remove-Item -Recurse -Force ./pre-install/*.tgz" -powershell -Command "Remove-Item -Recurse -Force ./extensions/*/*.tgz" -powershell -Command "Remove-Item -Recurse -Force ./electron/pre-install/*.tgz" @@ -131,8 +130,8 @@ else ifeq ($(shell uname -s),Linux) find . -name "build" -type d -exec rm -rf '{}' + find . -name "out" -type d -exec rm -rf '{}' + find . -name ".turbo" -type d -exec rm -rf '{}' + + find . -name ".yarn" -type d -exec rm -rf '{}' + find . -name "packake-lock.json" -type f -exec rm -rf '{}' + - find . -name "yarn.lock" -type f -exec rm -rf '{}' + find . -name "package-lock.json" -type f -exec rm -rf '{}' + rm -rf ./pre-install/*.tgz rm -rf ./extensions/*/*.tgz @@ -146,8 +145,8 @@ else find . -name "build" -type d -exec rm -rf '{}' + find . -name "out" -type d -exec rm -rf '{}' + find . -name ".turbo" -type d -exec rm -rf '{}' + + find . -name ".yarn" -type d -exec rm -rf '{}' + find . -name "package-lock.json" -type f -exec rm -rf '{}' + - find . -name "yarn.lock" -type f -exec rm -rf '{}' + rm -rf ./pre-install/*.tgz rm -rf ./extensions/*/*.tgz rm -rf ./electron/pre-install/*.tgz diff --git a/core/package.json b/core/package.json index ac3305014..d63fedb98 100644 --- a/core/package.json +++ b/core/package.json @@ -1,15 +1,16 @@ { "name": "@janhq/core", "version": "0.1.10", - "description": "Jan app core lib", + "description": "Core library for the Jan AI application framework", "keywords": [ "jan", "core" ], "homepage": "https://jan.ai", "license": "AGPL-3.0", - "main": "dist/core.es5.js", - "module": "dist/core.cjs.js", + "browser": "dist/index.js", + "main": "dist/index.js", + "module": "dist/node/index.cjs.js", "typings": "dist/types/index.d.ts", "files": [ "dist", @@ -17,13 +18,13 @@ ], "author": "Jan ", "exports": { - ".": "./dist/core.es5.js", + ".": "./dist/index.js", "./node": "./dist/node/index.cjs.js" }, "typesVersions": { "*": { ".": [ - "./dist/core.es5.js.map", + "./dist/index.js.map", "./dist/types/index.d.ts" ], "node": [ @@ -36,25 +37,25 @@ "lint": "tslint --project tsconfig.json -t codeFrame 'src/**/*.ts' 'test/**/*.ts'", "test": "jest", "prebuild": "rimraf dist", - "build": "tsc --module commonjs && rollup -c rollup.config.ts", - "start": "rollup -c rollup.config.ts -w" + "build": "tsc -p . && rolldown -c rolldown.config.mjs" }, "devDependencies": { - "@rollup/plugin-replace": "^5.0.5", - "@types/jest": "^29.5.12", - "@types/node": "^20.11.4", + "@npmcli/arborist": "^7.1.0", + "@types/jest": "^29.5.14", + "@types/node": "^22.10.0", + "@types/pacote": "^11.1.7", + "@types/request": "^2.48.12", + "electron": "33.2.1", "eslint": "8.57.0", "eslint-plugin-jest": "^27.9.0", "jest": "^29.7.0", "jest-junit": "^16.0.0", "jest-runner": "^29.7.0", + "pacote": "^21.0.0", + "request": "^2.88.2", + "request-progress": "^3.0.0", "rimraf": "^3.0.2", - "rollup": "^2.38.5", - "rollup-plugin-commonjs": "^9.1.8", - "rollup-plugin-json": "^3.1.0", - "rollup-plugin-node-resolve": "^5.2.0", - "rollup-plugin-sourcemaps": "^0.6.3", - "rollup-plugin-typescript2": "^0.36.0", + "rolldown": "1.0.0-beta.1", "ts-jest": "^29.2.5", "tslib": "^2.6.2", "typescript": "^5.3.3" @@ -62,5 +63,6 @@ "dependencies": { "rxjs": "^7.8.1", "ulidx": "^2.3.0" - } + }, + "packageManager": "yarn@4.5.3" } diff --git a/core/rolldown.config.mjs b/core/rolldown.config.mjs new file mode 100644 index 000000000..d95f8de8e --- /dev/null +++ b/core/rolldown.config.mjs @@ -0,0 +1,51 @@ +import { defineConfig } from 'rolldown' +import pkgJson from './package.json' with { type: 'json' } + +export default defineConfig([ + { + input: 'src/index.ts', + output: { + format: 'esm', + file: 'dist/index.js', + sourcemap: true, + }, + platform: 'browser', + external: ['path'], + define: { + NODE: JSON.stringify(`${pkgJson.name}/${pkgJson.node}`), + VERSION: JSON.stringify(pkgJson.version), + }, + }, + { + input: 'src/node/index.ts', + external: [ + 'fs/promises', + 'path', + 'pacote', + '@types/pacote', + '@npmcli/arborist', + 'ulidx', + 'node-fetch', + 'fs', + 'request', + 'crypto', + 'url', + 'http', + 'os', + 'util', + 'child_process', + 'electron', + 'request-progress', + ], + output: { + format: 'cjs', + file: 'dist/node/index.cjs.js', + sourcemap: true, + inlineDynamicImports: true, + }, + resolve: { + extensions: ['.js', '.ts'], + }, + platform: 'node', + }, +]) diff --git a/core/rollup.config.ts b/core/rollup.config.ts deleted file mode 100644 index e3336bfad..000000000 --- a/core/rollup.config.ts +++ /dev/null @@ -1,85 +0,0 @@ -import resolve from 'rollup-plugin-node-resolve' -import commonjs from 'rollup-plugin-commonjs' -import sourceMaps from 'rollup-plugin-sourcemaps' -import typescript from 'rollup-plugin-typescript2' -import json from 'rollup-plugin-json' -import replace from '@rollup/plugin-replace' - -const pkg = require('./package.json') - -export default [ - { - input: `src/index.ts`, - output: [ - // { file: pkg.main, name: libraryName, format: 'umd', sourcemap: true }, - { file: pkg.main, format: 'es', sourcemap: true }, - ], - // Indicate here external modules you don't wanna include in your bundle (i.e.: 'lodash') - external: ['path'], - watch: { - include: 'src/**', - }, - plugins: [ - // Allow json resolution - json(), - // Compile TypeScript files - typescript({ useTsconfigDeclarationDir: true }), - // Allow bundling cjs modules (unlike webpack, rollup doesn't understand cjs) - commonjs(), - // Allow node_modules resolution, so you can use 'external' to control - // which external modules to include in the bundle - // https://github.com/rollup/rollup-plugin-node-resolve#usage - replace({ - 'preventAssignment': true, - 'node:crypto': 'crypto', - 'delimiters': ['"', '"'], - }), - resolve({ - browser: true, - }), - - // Resolve source maps to the original source - sourceMaps(), - ], - }, - { - input: `src/node/index.ts`, - output: [{ file: 'dist/node/index.cjs.js', format: 'cjs', sourcemap: true }], - // Indicate here external modules you don't wanna include in your bundle (i.e.: 'lodash') - external: [ - 'fs/promises', - 'path', - 'pacote', - '@types/pacote', - '@npmcli/arborist', - 'ulidx', - 'node-fetch', - 'fs', - 'request', - 'crypto', - 'url', - 'http', - 'os', - 'util', - 'child_process', - ], - watch: { - include: 'src/node/**', - }, - plugins: [ - // Allow json resolution - json(), - // Compile TypeScript files - typescript({ useTsconfigDeclarationDir: true }), - // Allow bundling cjs modules (unlike webpack, rollup doesn't understand cjs) - commonjs(), - // Allow node_modules resolution, so you can use 'external' to control - // which external modules to include in the bundle - // https://github.com/rollup/rollup-plugin-node-resolve#usage - resolve(), - - // Resolve source maps to the original source - sourceMaps(), - ], - }, -] diff --git a/core/src/browser/core.ts b/core/src/browser/core.ts index 7058fc172..a0abbb43e 100644 --- a/core/src/browser/core.ts +++ b/core/src/browser/core.ts @@ -1,4 +1,9 @@ -import { DownloadRequest, FileStat, NetworkConfig, SystemInformation } from '../types' +import { + DownloadRequest, + FileStat, + NetworkConfig, + SystemInformation, +} from '../types' /** * Execute a extension module function in main process @@ -9,11 +14,12 @@ import { DownloadRequest, FileStat, NetworkConfig, SystemInformation } from '../ * @returns Promise * */ -const executeOnMain: (extension: string, method: string, ...args: any[]) => Promise = ( - extension, - method, - ...args -) => globalThis.core?.api?.invokeExtensionFunc(extension, method, ...args) +const executeOnMain: ( + extension: string, + method: string, + ...args: any[] +) => Promise = (extension, method, ...args) => + globalThis.core?.api?.invokeExtensionFunc(extension, method, ...args) /** * Downloads a file from a URL and saves it to the local file system. @@ -23,10 +29,11 @@ const executeOnMain: (extension: string, method: string, ...args: any[]) => Prom * * @returns {Promise} A promise that resolves when the file is downloaded. */ -const downloadFile: (downloadRequest: DownloadRequest, network?: NetworkConfig) => Promise = ( - downloadRequest, - network -) => globalThis.core?.api?.downloadFile(downloadRequest, network) +const downloadFile: ( + downloadRequest: DownloadRequest, + network?: NetworkConfig +) => Promise = (downloadRequest, network) => + globalThis.core?.api?.downloadFile(downloadRequest, network) /** * Aborts the download of a specific file. @@ -41,7 +48,8 @@ const abortDownload: (fileName: string) => Promise = (fileName) => * * @returns {Promise} A Promise that resolves with Jan's data folder path. */ -const getJanDataFolderPath = (): Promise => globalThis.core.api?.getJanDataFolderPath() +const getJanDataFolderPath = (): Promise => + globalThis.core.api?.getJanDataFolderPath() /** * Opens the file explorer at a specific path. @@ -64,14 +72,16 @@ const joinPath: (paths: string[]) => Promise = (paths) => * @param path - The file path to retrieve dirname. * @returns {Promise} A promise that resolves the dirname. */ -const dirName: (path: string) => Promise = (path) => globalThis.core.api?.dirName(path) +const dirName: (path: string) => Promise = (path) => + globalThis.core.api?.dirName(path) /** * Retrieve the basename from an url. * @param path - The path to retrieve. * @returns {Promise} A promise that resolves with the basename. */ -const baseName: (paths: string) => Promise = (path) => globalThis.core.api?.baseName(path) +const baseName: (paths: string) => Promise = (path) => + globalThis.core.api?.baseName(path) /** * Opens an external URL in the default web browser. @@ -87,13 +97,15 @@ const openExternalUrl: (url: string) => Promise = (url) => * * @returns {Promise} - A promise that resolves with the resource path. */ -const getResourcePath: () => Promise = () => globalThis.core.api?.getResourcePath() +const getResourcePath: () => Promise = () => + globalThis.core.api?.getResourcePath() /** * Gets the user's home path. * @returns return user's home path */ -const getUserHomePath = (): Promise => globalThis.core.api?.getUserHomePath() +const getUserHomePath = (): Promise => + globalThis.core.api?.getUserHomePath() /** * Log to file from browser processes. @@ -111,8 +123,10 @@ const log: (message: string, fileName?: string) => void = (message, fileName) => * * @returns {Promise} - A promise that resolves with a boolean indicating whether the path is a subdirectory. */ -const isSubdirectory: (from: string, to: string) => Promise = (from: string, to: string) => - globalThis.core.api?.isSubdirectory(from, to) +const isSubdirectory: (from: string, to: string) => Promise = ( + from: string, + to: string +) => globalThis.core.api?.isSubdirectory(from, to) /** * Get system information @@ -159,5 +173,4 @@ export { systemInformation, showToast, dirName, - FileStat, } diff --git a/core/src/browser/extension.ts b/core/src/browser/extension.ts index b7a9fca4e..1d641980b 100644 --- a/core/src/browser/extension.ts +++ b/core/src/browser/extension.ts @@ -11,6 +11,7 @@ export enum ExtensionTypeEnum { Model = 'model', SystemMonitoring = 'systemMonitoring', HuggingFace = 'huggingFace', + Engine = 'engine', } export interface ExtensionType { diff --git a/core/src/browser/extensions/enginesManagement.ts b/core/src/browser/extensions/enginesManagement.ts new file mode 100644 index 000000000..524546b05 --- /dev/null +++ b/core/src/browser/extensions/enginesManagement.ts @@ -0,0 +1,91 @@ +import { + InferenceEngine, + Engines, + EngineVariant, + EngineReleased, + DefaultEngineVariant, +} from '../../types' +import { BaseExtension, ExtensionTypeEnum } from '../extension' + +/** + * Engine management extension. Persists and retrieves engine management. + * @abstract + * @extends BaseExtension + */ +export abstract class EngineManagementExtension extends BaseExtension { + type(): ExtensionTypeEnum | undefined { + return ExtensionTypeEnum.Engine + } + + /** + * @returns A Promise that resolves to an object of list engines. + */ + abstract getEngines(): Promise + + /** + * @param name - Inference engine name. + * @returns A Promise that resolves to an array of installed engine. + */ + abstract getInstalledEngines(name: InferenceEngine): Promise + + /** + * @param name - Inference engine name. + * @param version - Version of the engine. + * @param platform - Optional to sort by operating system. macOS, linux, windows. + * @returns A Promise that resolves to an array of latest released engine by version. + */ + abstract getReleasedEnginesByVersion( + name: InferenceEngine, + version: string, + platform?: string + ): Promise + + /** + * @param name - Inference engine name. + * @param platform - Optional to sort by operating system. macOS, linux, windows. + * @returns A Promise that resolves to an array of latest released engine. + */ + abstract getLatestReleasedEngine( + name: InferenceEngine, + platform?: string + ): Promise + + /** + * @param name - Inference engine name. + * @returns A Promise that resolves to intall of engine. + */ + abstract installEngine( + name: InferenceEngine, + engineConfig: { variant: string; version?: string } + ): Promise<{ messages: string }> + + /** + * @param name - Inference engine name. + * @returns A Promise that resolves to unintall of engine. + */ + abstract uninstallEngine( + name: InferenceEngine, + engineConfig: { variant: string; version: string } + ): Promise<{ messages: string }> + + /** + * @param name - Inference engine name. + * @returns A Promise that resolves to an object of default engine. + */ + abstract getDefaultEngineVariant(name: InferenceEngine): Promise + + /** + * @body variant - string + * @body version - string + * @returns A Promise that resolves to set default engine. + */ + abstract setDefaultEngineVariant( + name: InferenceEngine, + engineConfig: { variant: string; version: string } + ): Promise<{ messages: string }> + + /** + * @returns A Promise that resolves to update engine. + */ + abstract updateEngine(name: InferenceEngine): Promise<{ messages: string }> +} diff --git a/core/src/browser/extensions/index.ts b/core/src/browser/extensions/index.ts index 85d5a8583..9dbfe1afe 100644 --- a/core/src/browser/extensions/index.ts +++ b/core/src/browser/extensions/index.ts @@ -28,3 +28,8 @@ export { ModelExtension } from './model' * Base AI Engines. */ export * from './engines' + +/** + * Engines Management + */ +export * from './enginesManagement' diff --git a/core/src/node/api/processors/app.test.ts b/core/src/node/api/processors/app.test.ts index f09c6cb6b..f0e45af74 100644 --- a/core/src/node/api/processors/app.test.ts +++ b/core/src/node/api/processors/app.test.ts @@ -4,16 +4,6 @@ jest.mock('../../helper', () => ({ })) import { App } from './app' -it('should call stopServer', () => { - const app = new App() - const stopServerMock = jest.fn().mockResolvedValue('Server stopped') - jest.mock('@janhq/server', () => ({ - stopServer: stopServerMock, - })) - app.stopServer() - expect(stopServerMock).toHaveBeenCalled() -}) - it('should correctly retrieve basename', () => { const app = new App() const result = app.baseName('/path/to/file.txt') @@ -23,7 +13,8 @@ it('should correctly retrieve basename', () => { it('should correctly identify subdirectories', () => { const app = new App() const basePath = process.platform === 'win32' ? 'C:\\path\\to' : '/path/to' - const subPath = process.platform === 'win32' ? 'C:\\path\\to\\subdir' : '/path/to/subdir' + const subPath = + process.platform === 'win32' ? 'C:\\path\\to\\subdir' : '/path/to/subdir' const result = app.isSubdirectory(basePath, subPath) expect(result).toBe(true) }) @@ -31,7 +22,8 @@ it('should correctly identify subdirectories', () => { it('should correctly join multiple paths', () => { const app = new App() const result = app.joinPath(['path', 'to', 'file']) - const expectedPath = process.platform === 'win32' ? 'path\\to\\file' : 'path/to/file' + const expectedPath = + process.platform === 'win32' ? 'path\\to\\file' : 'path/to/file' expect(result).toBe(expectedPath) }) @@ -52,5 +44,7 @@ it('should retrieve the directory name from a file path (Unix/Windows)', async ( it('should retrieve the directory name when using file protocol', async () => { const app = new App() const path = 'file:/models/file.txt' - expect(await app.dirName(path)).toBe(process.platform === 'win32' ? 'app\\models' : 'app/models') + expect(await app.dirName(path)).toBe( + process.platform === 'win32' ? 'app\\models' : 'app/models' + ) }) diff --git a/core/src/node/api/processors/app.ts b/core/src/node/api/processors/app.ts index 96af8468e..d86e6265c 100644 --- a/core/src/node/api/processors/app.ts +++ b/core/src/node/api/processors/app.ts @@ -44,11 +44,8 @@ export class App implements Processor { /** * Checks if the given path is a subdirectory of the given directory. * - * @param _event - The IPC event object. * @param from - The path to check. * @param to - The directory to check against. - * - * @returns {Promise} - A promise that resolves with the result. */ isSubdirectory(from: any, to: any) { const rel = relative(from, to) @@ -79,26 +76,4 @@ export class App implements Processor { async updateAppConfiguration(args: any) { await updateAppConfiguration(args) } - - /** - * Start Jan API Server. - */ - async startServer(args?: any) { - const { startServer } = require('@janhq/server') - return startServer({ - host: args?.host, - port: args?.port, - isCorsEnabled: args?.isCorsEnabled, - isVerboseEnabled: args?.isVerboseEnabled, - prefix: args?.prefix, - }) - } - - /** - * Stop Jan API Server. - */ - stopServer() { - const { stopServer } = require('@janhq/server') - return stopServer() - } } diff --git a/core/src/node/extension/extension.ts b/core/src/node/extension/extension.ts index 849f2d5f2..aea14f705 100644 --- a/core/src/node/extension/extension.ts +++ b/core/src/node/extension/extension.ts @@ -57,7 +57,10 @@ export default class Extension { * @type {string} */ get specifier() { - return this.origin + (this.installOptions.version ? '@' + this.installOptions.version : '') + return ( + this.origin + + (this.installOptions.version ? '@' + this.installOptions.version : '') + ) } /** @@ -75,8 +78,10 @@ export default class Extension { async getManifest() { // Get the package's manifest (package.json object) try { - await import('pacote').then((pacote) => { - return pacote.manifest(this.specifier, this.installOptions).then((mnf) => { + const pacote = require('pacote') + return pacote + .manifest(this.specifier, this.installOptions) + .then((mnf: any) => { // set the Package properties based on the it's manifest this.name = mnf.name this.productName = mnf.productName as string | undefined @@ -84,9 +89,10 @@ export default class Extension { this.main = mnf.main this.description = mnf.description }) - }) } catch (error) { - throw new Error(`Package ${this.origin} does not contain a valid manifest: ${error}`) + throw new Error( + `Package ${this.origin} does not contain a valid manifest: ${error}` + ) } return true @@ -103,10 +109,13 @@ export default class Extension { await this.getManifest() // Install the package in a child folder of the given folder - const pacote = await import('pacote') + const pacote = require('pacote') await pacote.extract( this.specifier, - join(ExtensionManager.instance.getExtensionsPath() ?? '', this.name ?? ''), + join( + ExtensionManager.instance.getExtensionsPath() ?? '', + this.name ?? '' + ), this.installOptions ) @@ -169,13 +178,12 @@ export default class Extension { * @returns the latest available version if a new version is available or false if not. */ async isUpdateAvailable() { - return import('pacote').then((pacote) => { - if (this.origin) { - return pacote.manifest(this.origin).then((mnf) => { - return mnf.version !== this.version ? mnf.version : false - }) - } - }) + const pacote = require('pacote') + if (this.origin) { + return pacote.manifest(this.origin).then((mnf: any) => { + return mnf.version !== this.version ? mnf.version : false + }) + } } /** diff --git a/core/src/types/api/index.ts b/core/src/types/api/index.ts index dc9afcb00..63b0eb10e 100644 --- a/core/src/types/api/index.ts +++ b/core/src/types/api/index.ts @@ -27,7 +27,10 @@ export enum NativeRoute { quickAskSizeUpdated = 'quickAskSizeUpdated', ackDeepLink = 'ackDeepLink', - factoryReset = 'factoryReset' + factoryReset = 'factoryReset', + + startServer = 'startServer', + stopServer = 'stopServer', } /** @@ -41,8 +44,6 @@ export enum AppRoute { dirName = 'dirName', isSubdirectory = 'isSubdirectory', baseName = 'baseName', - startServer = 'startServer', - stopServer = 'stopServer', log = 'log', systemInformation = 'systemInformation', showToast = 'showToast', diff --git a/core/src/types/engine/index.ts b/core/src/types/engine/index.ts new file mode 100644 index 000000000..9e6f5c9c8 --- /dev/null +++ b/core/src/types/engine/index.ts @@ -0,0 +1,28 @@ +import { InferenceEngine } from '../../types' + +export type Engines = { + [key in InferenceEngine]: EngineVariant[] +} + +export type EngineVariant = { + engine: InferenceEngine + name: string + version: string +} + +export type DefaultEngineVariant = { + engine: InferenceEngine + variant: string + version: string +} + +export type EngineReleased = { + created_at: string + download_count: number + name: string + size: number +} + +export enum EngineEvent { + OnEngineUpdate = 'OnEngineUpdate', +} diff --git a/core/src/types/index.ts b/core/src/types/index.ts index 6627ebff9..e30dd18c3 100644 --- a/core/src/types/index.ts +++ b/core/src/types/index.ts @@ -10,3 +10,4 @@ export * from './huggingface' export * from './miscellaneous' export * from './api' export * from './setting' +export * from './engine' diff --git a/core/tsconfig.json b/core/tsconfig.json index bf79a8720..3c1e7f57a 100644 --- a/core/tsconfig.json +++ b/core/tsconfig.json @@ -11,11 +11,10 @@ "experimentalDecorators": true, "emitDecoratorMetadata": true, "declarationDir": "dist/types", - "outDir": "dist/lib", + "outDir": "dist", "importHelpers": true, - "types": ["@types/jest"], - "resolveJsonModule": true + "types": ["jest", "node"] }, "include": ["src"], - "exclude": ["**/*.test.ts"] + "exclude": ["src/**/*.test.ts"] } diff --git a/docs/package.json b/docs/package.json index b2b74aba7..ac2fab87b 100644 --- a/docs/package.json +++ b/docs/package.json @@ -58,5 +58,5 @@ "prettier": "^3.2.5", "typescript": "^5" }, - "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e" + "packageManager": "yarn@1.22.22" } diff --git a/docs/yarn.lock b/docs/yarn.lock new file mode 100644 index 000000000..e69de29bb diff --git a/electron/handlers/native.ts b/electron/handlers/native.ts index 813231bd4..81a2fc7f5 100644 --- a/electron/handlers/native.ts +++ b/electron/handlers/native.ts @@ -277,4 +277,39 @@ export function handleAppIPCs() { ModuleManager.instance.clearImportedModules() return createUserSpace().then(migrate).then(setupExtensions) }) + + /** + * Handles the "startServer" IPC message to start the Jan API server. + * Initializes and starts server with provided configuration options. + * @param _event - The IPC event object. + * @param args - Configuration object containing host, port, CORS settings etc. + * @returns Promise that resolves when server starts successfully + */ + ipcMain.handle( + NativeRoute.startServer, + async (_event, args): Promise => { + const { startServer } = require('@janhq/server') + return startServer({ + host: args?.host, + port: args?.port, + isCorsEnabled: args?.isCorsEnabled, + isVerboseEnabled: args?.isVerboseEnabled, + prefix: args?.prefix, + }) + } + ) + + /** + * Handles the "stopServer" IPC message to stop the Jan API server. + * Gracefully shuts down the server instance. + * @param _event - The IPC event object + * @returns Promise that resolves when server stops successfully + */ + ipcMain.handle(NativeRoute.stopServer, async (_event): Promise => { + /** + * Stop Jan API Server. + */ + const { stopServer } = require('@janhq/server') + return stopServer() + }) } diff --git a/electron/package.json b/electron/package.json index f8611734a..c058370a7 100644 --- a/electron/package.json +++ b/electron/package.json @@ -78,9 +78,11 @@ }, "scripts": { "lint": "eslint . --ext \".js,.jsx,.ts,.tsx\"", - "test:e2e": "playwright test --workers=1", + "test:e2e": "DEBUG=pw:browser xvfb-maybe -- playwright test --workers=1", "copy:assets": "rimraf --glob \"./pre-install/*.tgz\" && cpx \"../pre-install/*.tgz\" \"./pre-install\"", - "dev": "yarn copy:assets && tsc -p . && electron .", + "version-patch": "jq '.version' package.json | tr -d '\"' > .version.bak && jq --arg ver \"0.1.$(date +%s)\" '.version = $ver' package.json > package.tmp && mv package.tmp package.json", + "version-restore": "jq --arg ver $(cat .version.bak) '.version = $ver' package.json > package.tmp && mv package.tmp package.json && rm .version.bak", + "dev": "yarn copy:assets && tsc -p . && yarn version-patch && electron . && yarn version-restore", "compile": "tsc -p .", "start": "electron .", "build": "yarn copy:assets && run-script-os", @@ -98,22 +100,23 @@ }, "dependencies": { "@alumna/reflect": "^1.1.3", - "@janhq/core": "link:./core", - "@janhq/server": "link:./server", + "@janhq/core": "link:../core", + "@janhq/server": "link:../server", + "@kirillvakalov/nut-tree__nut-js": "4.2.1-2", "@npmcli/arborist": "^7.1.0", "electron-store": "^8.1.0", "electron-updater": "^6.1.7", "fs-extra": "^11.2.0", "node-fetch": "2", - "pacote": "^17.0.4", + "pacote": "^21.0.0", "request": "^2.88.2", "request-progress": "^3.0.0", - "ulidx": "^2.3.0", - "@kirillvakalov/nut-tree__nut-js": "4.2.1-2" + "ulidx": "^2.3.0" }, "devDependencies": { "@electron/notarize": "^2.5.0", "@playwright/test": "^1.38.1", + "@reportportal/agent-js-playwright": "^5.1.7", "@types/npmcli__arborist": "^5.6.4", "@types/pacote": "^11.1.7", "@types/request": "^2.48.12", @@ -129,9 +132,10 @@ "rimraf": "^5.0.5", "run-script-os": "^1.1.6", "typescript": "^5.3.3", - "@reportportal/agent-js-playwright": "^5.1.7" + "xvfb-maybe": "^0.2.1" }, "installConfig": { "hoistingLimits": "workspaces" - } + }, + "packageManager": "yarn@4.5.3" } diff --git a/electron/tests/config/fixtures.ts b/electron/tests/config/fixtures.ts index f61eddfae..c36910161 100644 --- a/electron/tests/config/fixtures.ts +++ b/electron/tests/config/fixtures.ts @@ -36,7 +36,7 @@ export async function setupElectron() { expect(appInfo).toBeTruthy() electronApp = await electron.launch({ - args: [appInfo.main], // main file from package.json + args: [appInfo.main, '--no-sandbox'], // main file from package.json executablePath: appInfo.executable, // path to the Electron executable // recordVideo: { dir: Constants.VIDEO_DIR }, // Specify the directory for video recordings }) diff --git a/extensions/.yarnrc.yml b/extensions/.yarnrc.yml new file mode 100644 index 000000000..74febbee3 --- /dev/null +++ b/extensions/.yarnrc.yml @@ -0,0 +1,3 @@ +nmHoistingLimits: workspaces +nodeLinker: node-modules +checksumBehavior: update diff --git a/extensions/assistant-extension/package.json b/extensions/assistant-extension/package.json index ff757ccce..d65b789b1 100644 --- a/extensions/assistant-extension/package.json +++ b/extensions/assistant-extension/package.json @@ -1,7 +1,7 @@ { "name": "@janhq/assistant-extension", "productName": "Jan Assistant", - "version": "1.0.1", + "version": "1.0.2", "description": "This extension enables assistants, including Jan, a default assistant that can call all downloaded models", "main": "dist/index.js", "node": "dist/node/index.js", @@ -9,33 +9,28 @@ "license": "AGPL-3.0", "scripts": { "clean:modules": "rimraf node_modules/pdf-parse/test && cd node_modules/pdf-parse/lib/pdf.js && rimraf v1.9.426 v1.10.88 v2.0.550", - "build-universal-hnswlib": "cd node_modules/hnswlib-node && arch -x86_64 npx node-gyp rebuild --arch=x64 && mv build/Release/addon.node ./addon-amd64.node && node-gyp rebuild --arch=arm64 && mv build/Release/addon.node ./addon-arm64.node && lipo -create -output build/Release/addon.node ./addon-arm64.node ./addon-amd64.node && rm ./addon-arm64.node && rm ./addon-amd64.node", - "build": "yarn clean:modules && tsc --module commonjs && rollup -c rollup.config.ts", - "build:publish:linux": "rimraf *.tgz --glob && yarn build && npm pack && cpx *.tgz ../../pre-install", - "build:publish:darwin": "rimraf *.tgz --glob && yarn build-universal-hnswlib && yarn build && ../../.github/scripts/auto-sign.sh && npm pack && cpx *.tgz ../../pre-install", - "build:publish:win32": "rimraf *.tgz --glob && yarn build && npm pack && cpx *.tgz ../../pre-install", - "build:publish": "run-script-os" + "build-universal-hnswlib": "[ \"$IS_TEST\" = \"true\" ] && echo \"Skip universal build\" || (cd node_modules/hnswlib-node && arch -x86_64 npx node-gyp rebuild --arch=x64 && mv build/Release/addon.node ./addon-amd64.node && node-gyp rebuild --arch=arm64 && mv build/Release/addon.node ./addon-arm64.node && lipo -create -output build/Release/addon.node ./addon-arm64.node ./addon-amd64.node && rm ./addon-arm64.node && rm ./addon-amd64.node)", + "build": "yarn clean:modules && rolldown -c rolldown.config.mjs", + "build:publish:linux": "rimraf *.tgz --glob || true && yarn build && npm pack && cpx *.tgz ../../pre-install", + "build:publish:darwin": "rimraf *.tgz --glob || true && yarn build-universal-hnswlib && yarn build && ../../.github/scripts/auto-sign.sh && npm pack && cpx *.tgz ../../pre-install", + "build:publish:win32": "rimraf *.tgz --glob || true && yarn build && npm pack && cpx *.tgz ../../pre-install", + "build:publish": "run-script-os", + "build:dev": "rimraf *.tgz --glob || true && yarn build && npm pack && cpx *.tgz ../../pre-install" }, "devDependencies": { - "@rollup/plugin-commonjs": "^25.0.7", - "@rollup/plugin-json": "^6.1.0", - "@rollup/plugin-node-resolve": "^15.2.3", - "@rollup/plugin-replace": "^5.0.5", "@types/pdf-parse": "^1.1.4", "cpx": "^1.5.0", "rimraf": "^3.0.2", - "rollup": "^2.38.5", - "rollup-plugin-define": "^1.0.1", - "rollup-plugin-sourcemaps": "^0.6.3", - "rollup-plugin-typescript2": "^0.36.0", - "typescript": "^5.3.3", - "run-script-os": "^1.1.6" + "rolldown": "1.0.0-beta.1", + "run-script-os": "^1.1.6", + "typescript": "^5.3.3" }, "dependencies": { - "@janhq/core": "file:../../core", + "@janhq/core": "../../core/package.tgz", "@langchain/community": "0.0.13", "hnswlib-node": "^1.4.2", "langchain": "^0.0.214", + "node-gyp": "^11.0.0", "pdf-parse": "^1.1.1", "ts-loader": "^9.5.0" }, @@ -47,5 +42,9 @@ "bundleDependencies": [ "@janhq/core", "hnswlib-node" - ] + ], + "installConfig": { + "hoistingLimits": "workspaces" + }, + "packageManager": "yarn@4.5.3" } diff --git a/extensions/assistant-extension/rolldown.config.mjs b/extensions/assistant-extension/rolldown.config.mjs new file mode 100644 index 000000000..c8fdefd7d --- /dev/null +++ b/extensions/assistant-extension/rolldown.config.mjs @@ -0,0 +1,31 @@ +import { defineConfig } from 'rolldown' +import pkgJson from './package.json' with { type: 'json' } + +export default defineConfig([ + { + input: 'src/index.ts', + output: { + format: 'esm', + file: 'dist/index.js', + }, + platform: 'browser', + define: { + NODE: JSON.stringify(`${pkgJson.name}/${pkgJson.node}`), + VERSION: JSON.stringify(pkgJson.version), + }, + }, + { + input: 'src/node/index.ts', + external: ['@janhq/core/node', 'path', 'hnswlib-node'], + output: { + format: 'cjs', + file: 'dist/node/index.js', + sourcemap: false, + inlineDynamicImports: true, + }, + resolve: { + extensions: ['.js', '.ts'], + }, + platform: 'node', + }, +]) diff --git a/extensions/assistant-extension/rollup.config.ts b/extensions/assistant-extension/rollup.config.ts deleted file mode 100644 index 263f6cc60..000000000 --- a/extensions/assistant-extension/rollup.config.ts +++ /dev/null @@ -1,73 +0,0 @@ -import resolve from '@rollup/plugin-node-resolve' -import commonjs from '@rollup/plugin-commonjs' -import sourceMaps from 'rollup-plugin-sourcemaps' -import typescript from 'rollup-plugin-typescript2' -import json from '@rollup/plugin-json' -import replace from '@rollup/plugin-replace' - -const packageJson = require('./package.json') - -export default [ - { - input: `src/index.ts`, - output: [{ file: packageJson.main, format: 'es', sourcemap: true }], - // Indicate here external modules you don't wanna include in your bundle (i.e.: 'lodash') - external: [], - watch: { - include: 'src/**', - }, - plugins: [ - replace({ - preventAssignment: true, - NODE: JSON.stringify(`${packageJson.name}/${packageJson.node}`), - VERSION: JSON.stringify(packageJson.version), - }), - // Allow json resolution - json(), - // Compile TypeScript files - typescript({ useTsconfigDeclarationDir: true }), - // Compile TypeScript files - // Allow bundling cjs modules (unlike webpack, rollup doesn't understand cjs) - commonjs(), - // Allow node_modules resolution, so you can use 'external' to control - // which external modules to include in the bundle - // https://github.com/rollup/rollup-plugin-node-resolve#usage - resolve({ - extensions: ['.js', '.ts', '.svelte'], - browser: true, - }), - - // Resolve source maps to the original source - sourceMaps(), - ], - }, - { - input: `src/node/index.ts`, - output: [{ dir: 'dist/node', format: 'cjs', sourcemap: false }], - // Indicate here external modules you don't wanna include in your bundle (i.e.: 'lodash') - external: ['@janhq/core/node', 'path', 'hnswlib-node'], - watch: { - include: 'src/node/**', - }, - // inlineDynamicImports: true, - plugins: [ - // Allow json resolution - json(), - // Compile TypeScript files - typescript({ useTsconfigDeclarationDir: true }), - // Allow bundling cjs modules (unlike webpack, rollup doesn't understand cjs) - commonjs({ - ignoreDynamicRequires: true, - }), - // Allow node_modules resolution, so you can use 'external' to control - // which external modules to include in the bundle - // https://github.com/rollup/rollup-plugin-node-resolve#usage - resolve({ - extensions: ['.ts', '.js', '.json'], - }), - - // Resolve source maps to the original source - // sourceMaps(), - ], - }, -] diff --git a/extensions/assistant-extension/src/node/index.ts b/extensions/assistant-extension/src/node/index.ts index 11e8f49c4..731890b34 100644 --- a/extensions/assistant-extension/src/node/index.ts +++ b/extensions/assistant-extension/src/node/index.ts @@ -1,4 +1,4 @@ -import { getJanDataFolderPath, normalizeFilePath } from '@janhq/core/node' +import { getJanDataFolderPath } from '@janhq/core/node' import { retrieval } from './retrieval' import path from 'path' diff --git a/extensions/assistant-extension/tsconfig.json b/extensions/assistant-extension/tsconfig.json index 3838d1c42..7f137d347 100644 --- a/extensions/assistant-extension/tsconfig.json +++ b/extensions/assistant-extension/tsconfig.json @@ -1,10 +1,10 @@ { "compilerOptions": { "moduleResolution": "node", - "target": "ES2015", - "module": "ES2020", - "lib": ["es2015", "es2016", "es2017", "dom"], - "strict": true, + "target": "es2016", + "module": "ES6", + "esModuleInterop": true, + "strict": false, "sourceMap": true, "declaration": true, "allowSyntheticDefaultImports": true, diff --git a/extensions/conversational-extension/package.json b/extensions/conversational-extension/package.json index ea3006449..dd2283eb0 100644 --- a/extensions/conversational-extension/package.json +++ b/extensions/conversational-extension/package.json @@ -8,8 +8,8 @@ "license": "MIT", "scripts": { "test": "jest", - "build": "tsc -b . && webpack --config webpack.config.js", - "build:publish": "rimraf *.tgz --glob && yarn build && npm pack && cpx *.tgz ../../pre-install" + "build": "rolldown -c rolldown.config.mjs", + "build:publish": "rimraf *.tgz --glob || true && yarn build && npm pack && cpx *.tgz ../../pre-install" }, "exports": { ".": "./dist/index.js", @@ -18,12 +18,12 @@ "devDependencies": { "cpx": "^1.5.0", "rimraf": "^3.0.2", + "rolldown": "1.0.0-beta.1", "ts-loader": "^9.5.0", - "webpack": "^5.88.2", - "webpack-cli": "^5.1.4" + "typescript": "^5.7.2" }, "dependencies": { - "@janhq/core": "file:../../core", + "@janhq/core": "../../core/package.tgz", "ky": "^1.7.2", "p-queue": "^8.0.1" }, @@ -35,5 +35,9 @@ "package.json", "README.md" ], - "bundleDependencies": [] + "bundleDependencies": [], + "installConfig": { + "hoistingLimits": "workspaces" + }, + "packageManager": "yarn@4.5.3" } diff --git a/extensions/conversational-extension/rolldown.config.mjs b/extensions/conversational-extension/rolldown.config.mjs new file mode 100644 index 000000000..4645021a8 --- /dev/null +++ b/extensions/conversational-extension/rolldown.config.mjs @@ -0,0 +1,14 @@ +import { defineConfig } from 'rolldown' + +export default defineConfig({ + input: 'src/index.ts', + output: { + format: 'esm', + file: 'dist/index.js', + }, + platform: 'browser', + define: { + API_URL: JSON.stringify('http://127.0.0.1:39291'), + SOCKET_URL: JSON.stringify('ws://127.0.0.1:39291'), + }, +}) diff --git a/extensions/conversational-extension/src/@types/global.d.ts b/extensions/conversational-extension/src/@types/global.d.ts index 757b5eebf..813a893f4 100644 --- a/extensions/conversational-extension/src/@types/global.d.ts +++ b/extensions/conversational-extension/src/@types/global.d.ts @@ -1,14 +1,11 @@ -export {} -declare global { - declare const API_URL: string - declare const SOCKET_URL: string +declare const API_URL: string +declare const SOCKET_URL: string - interface Core { - api: APIFunctions - events: EventEmitter - } - interface Window { - core?: Core | undefined - electronAPI?: any | undefined - } +interface Core { + api: APIFunctions + events: EventEmitter +} +interface Window { + core?: Core | undefined + electronAPI?: any | undefined } diff --git a/extensions/conversational-extension/webpack.config.js b/extensions/conversational-extension/webpack.config.js deleted file mode 100644 index 0448af421..000000000 --- a/extensions/conversational-extension/webpack.config.js +++ /dev/null @@ -1,34 +0,0 @@ -const webpack = require('webpack') - -module.exports = { - experiments: { outputModule: true }, - entry: './src/index.ts', // Adjust the entry point to match your project's main file - mode: 'production', - module: { - rules: [ - { - test: /\.tsx?$/, - use: 'ts-loader', - exclude: /node_modules/, - }, - ], - }, - output: { - filename: 'index.js', // Adjust the output file name as needed - library: { type: 'module' }, // Specify ESM output format - }, - plugins: [ - new webpack.DefinePlugin({ - API_URL: JSON.stringify('http://127.0.0.1:39291'), - SOCKET_URL: JSON.stringify('ws://127.0.0.1:39291'), - }), - ], - resolve: { - extensions: ['.ts', '.js'], - }, - // Do not minify the output, otherwise it breaks the class registration - optimization: { - minimize: false, - }, - // Add loaders and other configuration as needed for your project -} diff --git a/extensions/engine-management-extension/jest.config.js b/extensions/engine-management-extension/jest.config.js new file mode 100644 index 000000000..8bb37208d --- /dev/null +++ b/extensions/engine-management-extension/jest.config.js @@ -0,0 +1,5 @@ +/** @type {import('ts-jest').JestConfigWithTsJest} */ +module.exports = { + preset: 'ts-jest', + testEnvironment: 'node', +} diff --git a/extensions/engine-management-extension/package.json b/extensions/engine-management-extension/package.json new file mode 100644 index 000000000..2a9da41ec --- /dev/null +++ b/extensions/engine-management-extension/package.json @@ -0,0 +1,44 @@ +{ + "name": "@janhq/engine-management-extension", + "productName": "Engine Management", + "version": "1.0.0", + "description": "Extension for managing engines and their configurations", + "main": "dist/index.js", + "node": "dist/node/index.cjs.js", + "author": "Jan ", + "license": "MIT", + "scripts": { + "test": "jest", + "build": "rolldown -c rolldown.config.mjs", + "build:publish": "rimraf *.tgz --glob || true && yarn build && ../../.github/scripts/auto-sign.sh && npm pack && cpx *.tgz ../../pre-install" + }, + "exports": { + ".": "./dist/index.js", + "./main": "./dist/module.js" + }, + "devDependencies": { + "cpx": "^1.5.0", + "rimraf": "^3.0.2", + "rolldown": "^1.0.0-beta.1", + "ts-loader": "^9.5.0", + "typescript": "^5.3.3" + }, + "dependencies": { + "@janhq/core": "../../core/package.tgz", + "cpu-instructions": "^0.0.13", + "ky": "^1.7.2", + "p-queue": "^8.0.1" + }, + "bundledDependencies": [ + "cpu-instructions", + "@janhq/core" + ], + "engines": { + "node": ">=18.0.0" + }, + "files": [ + "dist/*", + "package.json", + "README.md" + ] +} diff --git a/extensions/engine-management-extension/rolldown.config.mjs b/extensions/engine-management-extension/rolldown.config.mjs new file mode 100644 index 000000000..846739c08 --- /dev/null +++ b/extensions/engine-management-extension/rolldown.config.mjs @@ -0,0 +1,40 @@ +import { defineConfig } from 'rolldown' +import pkgJson from './package.json' with { type: 'json' } + +export default defineConfig([ + { + input: 'src/index.ts', + output: { + format: 'esm', + file: 'dist/index.js', + }, + define: { + NODE: JSON.stringify(`${pkgJson.name}/${pkgJson.node}`), + API_URL: JSON.stringify('http://127.0.0.1:39291'), + SOCKET_URL: JSON.stringify('ws://127.0.0.1:39291'), + CORTEX_ENGINE_VERSION: JSON.stringify('v0.1.42'), + }, + }, + { + input: 'src/node/index.ts', + external: ['@janhq/core/node'], + output: { + format: 'cjs', + file: 'dist/node/index.cjs.js', + }, + define: { + CORTEX_ENGINE_VERSION: JSON.stringify('v0.1.42'), + }, + }, + { + input: 'src/node/cpuInfo.ts', + output: { + format: 'cjs', + file: 'dist/node/cpuInfo.js', + }, + external: ['cpu-instructions'], + resolve: { + extensions: ['.ts', '.js', '.svg'], + }, + }, +]) diff --git a/extensions/engine-management-extension/src/@types/global.d.ts b/extensions/engine-management-extension/src/@types/global.d.ts new file mode 100644 index 000000000..8d0a94fef --- /dev/null +++ b/extensions/engine-management-extension/src/@types/global.d.ts @@ -0,0 +1,13 @@ +declare const API_URL: string +declare const CORTEX_ENGINE_VERSION: string +declare const SOCKET_URL: string +declare const NODE: string + +interface Core { + api: APIFunctions + events: EventEmitter +} +interface Window { + core?: Core | undefined + electronAPI?: any | undefined +} diff --git a/extensions/engine-management-extension/src/error.ts b/extensions/engine-management-extension/src/error.ts new file mode 100644 index 000000000..50c75f22f --- /dev/null +++ b/extensions/engine-management-extension/src/error.ts @@ -0,0 +1,10 @@ +/** + * Custom Engine Error + */ +export class EngineError extends Error { + message: string + constructor(message: string) { + super() + this.message = message + } +} diff --git a/extensions/engine-management-extension/src/index.ts b/extensions/engine-management-extension/src/index.ts new file mode 100644 index 000000000..334df8cc1 --- /dev/null +++ b/extensions/engine-management-extension/src/index.ts @@ -0,0 +1,219 @@ +import { + EngineManagementExtension, + InferenceEngine, + DefaultEngineVariant, + Engines, + EngineVariant, + EngineReleased, + executeOnMain, + systemInformation, +} from '@janhq/core' +import ky, { HTTPError } from 'ky' +import PQueue from 'p-queue' +import { EngineError } from './error' + +/** + * JSONEngineManagementExtension is a EngineManagementExtension implementation that provides + * functionality for managing engines. + */ +export default class JSONEngineManagementExtension extends EngineManagementExtension { + queue = new PQueue({ concurrency: 1 }) + + /** + * Called when the extension is loaded. + */ + async onLoad() { + // Symlink Engines Directory + await executeOnMain(NODE, 'symlinkEngines') + // Run Healthcheck + this.queue.add(() => this.healthz()) + try { + const variant = await this.getDefaultEngineVariant( + InferenceEngine.cortex_llamacpp + ) + // Check whether should use bundled version or installed version + // Only use larger version + if (this.compareVersions(CORTEX_ENGINE_VERSION, variant.version) > 0) { + throw new EngineError( + 'Default engine version is smaller than bundled version' + ) + } + } catch (error) { + if ( + (error instanceof HTTPError && error.response.status === 400) || + error instanceof EngineError + ) { + const systemInfo = await systemInformation() + const variant = await executeOnMain( + NODE, + 'engineVariant', + systemInfo.gpuSetting + ) + await this.setDefaultEngineVariant(InferenceEngine.cortex_llamacpp, { + variant: variant, + version: `${CORTEX_ENGINE_VERSION}`, + }) + } else { + console.error('An unexpected error occurred:', error) + } + } + } + + /** + * Called when the extension is unloaded. + */ + onUnload() {} + + /** + * @returns A Promise that resolves to an object of list engines. + */ + async getEngines(): Promise { + return this.queue.add(() => + ky + .get(`${API_URL}/v1/engines`) + .json() + .then((e) => e) + ) as Promise + } + + /** + * @param name - Inference engine name. + * @returns A Promise that resolves to an array of installed engine. + */ + async getInstalledEngines(name: InferenceEngine): Promise { + return this.queue.add(() => + ky + .get(`${API_URL}/v1/engines/${name}`) + .json() + .then((e) => e) + ) as Promise + } + + /** + * @param name - Inference engine name. + * @param version - Version of the engine. + * @param platform - Optional to sort by operating system. macOS, linux, windows. + * @returns A Promise that resolves to an array of latest released engine by version. + */ + async getReleasedEnginesByVersion( + name: InferenceEngine, + version: string, + platform?: string + ) { + return this.queue.add(() => + ky + .get(`${API_URL}/v1/engines/${name}/releases/${version}`) + .json() + .then((e) => + platform ? e.filter((r) => r.name.includes(platform)) : e + ) + ) as Promise + } + + /** + * @param name - Inference engine name. + * @param platform - Optional to sort by operating system. macOS, linux, windows. + * @returns A Promise that resolves to an array of latest released engine by version. + */ + async getLatestReleasedEngine(name: InferenceEngine, platform?: string) { + return this.queue.add(() => + ky + .get(`${API_URL}/v1/engines/${name}/releases/latest`) + .json() + .then((e) => + platform ? e.filter((r) => r.name.includes(platform)) : e + ) + ) as Promise + } + + /** + * @param name - Inference engine name. + * @returns A Promise that resolves to intall of engine. + */ + async installEngine( + name: InferenceEngine, + engineConfig: { variant: string; version?: string } + ) { + return this.queue.add(() => + ky + .post(`${API_URL}/v1/engines/${name}/install`, { json: engineConfig }) + .then((e) => e) + ) as Promise<{ messages: string }> + } + + /** + * @param name - Inference engine name. + * @returns A Promise that resolves to unintall of engine. + */ + async uninstallEngine( + name: InferenceEngine, + engineConfig: { variant: string; version: string } + ) { + return this.queue.add(() => + ky + .delete(`${API_URL}/v1/engines/${name}/install`, { json: engineConfig }) + .then((e) => e) + ) as Promise<{ messages: string }> + } + + /** + * @param name - Inference engine name. + * @returns A Promise that resolves to an object of default engine. + */ + async getDefaultEngineVariant(name: InferenceEngine) { + return this.queue.add(() => + ky + .get(`${API_URL}/v1/engines/${name}/default`) + .json<{ messages: string }>() + .then((e) => e) + ) as Promise + } + + /** + * @body variant - string + * @body version - string + * @returns A Promise that resolves to set default engine. + */ + async setDefaultEngineVariant( + name: InferenceEngine, + engineConfig: { variant: string; version: string } + ) { + return this.queue.add(() => + ky + .post(`${API_URL}/v1/engines/${name}/default`, { json: engineConfig }) + .then((e) => e) + ) as Promise<{ messages: string }> + } + + /** + * @returns A Promise that resolves to update engine. + */ + async updateEngine(name: InferenceEngine) { + return this.queue.add(() => + ky.post(`${API_URL}/v1/engines/${name}/update`).then((e) => e) + ) as Promise<{ messages: string }> + } + + /** + * Do health check on cortex.cpp + * @returns + */ + async healthz(): Promise { + return ky + .get(`${API_URL}/healthz`, { + retry: { limit: 20, delay: () => 500, methods: ['get'] }, + }) + .then(() => {}) + } + + private compareVersions(version1: string, version2: string): number { + const parseVersion = (version: string) => version.split('.').map(Number) + + const [major1, minor1, patch1] = parseVersion(version1.replace(/^v/, '')) + const [major2, minor2, patch2] = parseVersion(version2.replace(/^v/, '')) + + if (major1 !== major2) return major1 - major2 + if (minor1 !== minor2) return minor1 - minor2 + return patch1 - patch2 + } +} diff --git a/extensions/inference-cortex-extension/src/node/cpuInfo.ts b/extensions/engine-management-extension/src/node/cpuInfo.ts similarity index 100% rename from extensions/inference-cortex-extension/src/node/cpuInfo.ts rename to extensions/engine-management-extension/src/node/cpuInfo.ts diff --git a/extensions/inference-cortex-extension/src/node/execute.test.ts b/extensions/engine-management-extension/src/node/index.test.ts similarity index 63% rename from extensions/inference-cortex-extension/src/node/execute.test.ts rename to extensions/engine-management-extension/src/node/index.test.ts index 1bcefce9d..c73feb9c6 100644 --- a/extensions/inference-cortex-extension/src/node/execute.test.ts +++ b/extensions/engine-management-extension/src/node/index.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it } from '@jest/globals' -import { engineVariant, executableCortexFile } from './execute' +import engine from './index' import { GpuSetting } from '@janhq/core/node' import { cpuInfo } from 'cpu-instructions' import { fork } from 'child_process' @@ -62,20 +62,9 @@ describe('test executable cortex file', () => { Object.defineProperty(process, 'arch', { value: 'arm64', }) - expect(executableCortexFile(testSettings)).toEqual( - expect.objectContaining({ - enginePath: expect.stringContaining('shared'), - executablePath: - originalPlatform === 'darwin' - ? expect.stringContaining(`cortex-server`) - : expect.anything(), - cudaVisibleDevices: '', - vkVisibleDevices: '', - }) - ) mockFork.mockReturnValue(mockProcess) - expect(engineVariant(testSettings)).resolves.toEqual('mac-arm64') + expect(engine.engineVariant(testSettings)).resolves.toEqual('mac-arm64') }) it('executes on MacOS', () => { @@ -99,18 +88,7 @@ describe('test executable cortex file', () => { value: 'x64', }) - expect(executableCortexFile(testSettings)).toEqual( - expect.objectContaining({ - enginePath: expect.stringContaining('shared'), - executablePath: - originalPlatform === 'darwin' - ? expect.stringContaining(`cortex-server`) - : expect.anything(), - cudaVisibleDevices: '', - vkVisibleDevices: '', - }) - ) - expect(engineVariant(testSettings)).resolves.toEqual('mac-amd64') + expect(engine.engineVariant(testSettings)).resolves.toEqual('mac-amd64') }) it('executes on Windows CPU', () => { @@ -131,15 +109,7 @@ describe('test executable cortex file', () => { } mockFork.mockReturnValue(mockProcess) - expect(executableCortexFile(settings)).toEqual( - expect.objectContaining({ - enginePath: expect.stringContaining('shared'), - executablePath: expect.stringContaining(`cortex-server.exe`), - cudaVisibleDevices: '', - vkVisibleDevices: '', - }) - ) - expect(engineVariant()).resolves.toEqual('windows-amd64-avx') + expect(engine.engineVariant()).resolves.toEqual('windows-amd64-avx') }) it('executes on Windows Cuda 11', () => { @@ -176,15 +146,8 @@ describe('test executable cortex file', () => { send: jest.fn(), } mockFork.mockReturnValue(mockProcess) - expect(executableCortexFile(settings)).toEqual( - expect.objectContaining({ - enginePath: expect.stringContaining('shared'), - executablePath: expect.stringContaining(`cortex-server.exe`), - cudaVisibleDevices: '0', - vkVisibleDevices: '0', - }) - ) - expect(engineVariant(settings)).resolves.toEqual( + + expect(engine.engineVariant(settings)).resolves.toEqual( 'windows-amd64-avx2-cuda-11-7' ) }) @@ -221,15 +184,8 @@ describe('test executable cortex file', () => { }), send: jest.fn(), }) - expect(executableCortexFile(settings)).toEqual( - expect.objectContaining({ - enginePath: expect.stringContaining('shared'), - executablePath: expect.stringContaining(`cortex-server.exe`), - cudaVisibleDevices: '0', - vkVisibleDevices: '0', - }) - ) - expect(engineVariant(settings)).resolves.toEqual( + + expect(engine.engineVariant(settings)).resolves.toEqual( 'windows-amd64-noavx-cuda-12-0' ) mockFork.mockReturnValue({ @@ -240,7 +196,7 @@ describe('test executable cortex file', () => { }), send: jest.fn(), }) - expect(engineVariant(settings)).resolves.toEqual( + expect(engine.engineVariant(settings)).resolves.toEqual( 'windows-amd64-avx2-cuda-12-0' ) }) @@ -261,15 +217,8 @@ describe('test executable cortex file', () => { }), send: jest.fn(), }) - expect(executableCortexFile(settings)).toEqual( - expect.objectContaining({ - enginePath: expect.stringContaining('shared'), - executablePath: expect.stringContaining(`cortex-server`), - cudaVisibleDevices: '', - vkVisibleDevices: '', - }) - ) - expect(engineVariant()).resolves.toEqual('linux-amd64-noavx') + + expect(engine.engineVariant()).resolves.toEqual('linux-amd64-noavx') }) it('executes on Linux Cuda 11', () => { @@ -306,15 +255,9 @@ describe('test executable cortex file', () => { send: jest.fn(), }) - expect(executableCortexFile(settings)).toEqual( - expect.objectContaining({ - enginePath: expect.stringContaining('shared'), - executablePath: expect.stringContaining(`cortex-server`), - cudaVisibleDevices: '0', - vkVisibleDevices: '0', - }) + expect(engine.engineVariant(settings)).resolves.toBe( + 'linux-amd64-avx2-cuda-11-7' ) - expect(engineVariant(settings)).resolves.toBe('linux-amd64-avx2-cuda-11-7') }) it('executes on Linux Cuda 12', () => { @@ -349,15 +292,8 @@ describe('test executable cortex file', () => { }), send: jest.fn(), }) - expect(executableCortexFile(settings)).toEqual( - expect.objectContaining({ - enginePath: expect.stringContaining('shared'), - executablePath: expect.stringContaining(`cortex-server`), - cudaVisibleDevices: '0', - vkVisibleDevices: '0', - }) - ) - expect(engineVariant(settings)).resolves.toEqual( + + expect(engine.engineVariant(settings)).resolves.toEqual( 'linux-amd64-avx2-cuda-12-0' ) }) @@ -383,16 +319,7 @@ describe('test executable cortex file', () => { send: jest.fn(), }) - expect(executableCortexFile(settings)).toEqual( - expect.objectContaining({ - enginePath: expect.stringContaining('shared'), - executablePath: expect.stringContaining(`cortex-server`), - - cudaVisibleDevices: '', - vkVisibleDevices: '', - }) - ) - expect(engineVariant(settings)).resolves.toEqual( + expect(engine.engineVariant(settings)).resolves.toEqual( `linux-amd64-${instruction}` ) }) @@ -416,15 +343,7 @@ describe('test executable cortex file', () => { }), send: jest.fn(), }) - expect(executableCortexFile(settings)).toEqual( - expect.objectContaining({ - enginePath: expect.stringContaining('shared'), - executablePath: expect.stringContaining(`cortex-server.exe`), - cudaVisibleDevices: '', - vkVisibleDevices: '', - }) - ) - expect(engineVariant(settings)).resolves.toEqual( + expect(engine.engineVariant(settings)).resolves.toEqual( `windows-amd64-${instruction}` ) }) @@ -465,15 +384,7 @@ describe('test executable cortex file', () => { }), send: jest.fn(), }) - expect(executableCortexFile(settings)).toEqual( - expect.objectContaining({ - enginePath: expect.stringContaining('shared'), - executablePath: expect.stringContaining(`cortex-server.exe`), - cudaVisibleDevices: '0', - vkVisibleDevices: '0', - }) - ) - expect(engineVariant(settings)).resolves.toEqual( + expect(engine.engineVariant(settings)).resolves.toEqual( `windows-amd64-${instruction === 'avx512' || instruction === 'avx2' ? 'avx2' : 'noavx'}-cuda-12-0` ) }) @@ -514,15 +425,7 @@ describe('test executable cortex file', () => { }), send: jest.fn(), }) - expect(executableCortexFile(settings)).toEqual( - expect.objectContaining({ - enginePath: expect.stringContaining('shared'), - executablePath: expect.stringContaining(`cortex-server`), - cudaVisibleDevices: '0', - vkVisibleDevices: '0', - }) - ) - expect(engineVariant(settings)).resolves.toEqual( + expect(engine.engineVariant(settings)).resolves.toEqual( `linux-amd64-${instruction === 'avx512' || instruction === 'avx2' ? 'avx2' : 'noavx'}-cuda-12-0` ) }) @@ -564,50 +467,8 @@ describe('test executable cortex file', () => { }), send: jest.fn(), }) - expect(executableCortexFile(settings)).toEqual( - expect.objectContaining({ - enginePath: expect.stringContaining('shared'), - executablePath: expect.stringContaining(`cortex-server`), - cudaVisibleDevices: '0', - vkVisibleDevices: '0', - }) - ) - expect(engineVariant(settings)).resolves.toEqual(`linux-amd64-vulkan`) - }) - }) - - // Generate test for different cpu instructions on MacOS - it(`executes on MacOS with different instructions`, () => { - Object.defineProperty(process, 'platform', { - value: 'darwin', - }) - const cpuInstructions = ['avx512', 'avx2', 'avx', 'noavx'] - cpuInstructions.forEach(() => { - Object.defineProperty(process, 'platform', { - value: 'darwin', - }) - const settings: GpuSetting = { - ...testSettings, - run_mode: 'cpu', - } - mockFork.mockReturnValue({ - on: jest.fn((event, callback) => { - if (event === 'message') { - callback('noavx') - } - }), - send: jest.fn(), - }) - expect(executableCortexFile(settings)).toEqual( - expect.objectContaining({ - enginePath: expect.stringContaining('shared'), - executablePath: - originalPlatform === 'darwin' - ? expect.stringContaining(`cortex-server`) - : expect.anything(), - cudaVisibleDevices: '', - vkVisibleDevices: '', - }) + expect(engine.engineVariant(settings)).resolves.toEqual( + `linux-amd64-vulkan` ) }) }) diff --git a/extensions/inference-cortex-extension/src/node/execute.ts b/extensions/engine-management-extension/src/node/index.ts similarity index 68% rename from extensions/inference-cortex-extension/src/node/execute.ts rename to extensions/engine-management-extension/src/node/index.ts index 0b091d464..cf26d9290 100644 --- a/extensions/inference-cortex-extension/src/node/execute.ts +++ b/extensions/engine-management-extension/src/node/index.ts @@ -1,13 +1,13 @@ import * as path from 'path' -import { GpuSetting, appResourcePath, log } from '@janhq/core/node' +import { + appResourcePath, + getJanDataFolderPath, + GpuSetting, + log, +} from '@janhq/core/node' import { fork } from 'child_process' +import { mkdir, readdir, symlink } from 'fs/promises' -export interface CortexExecutableOptions { - enginePath: string - executablePath: string - cudaVisibleDevices: string - vkVisibleDevices: string -} /** * The GPU runMode that will be set - either 'vulkan', 'cuda', or empty for cpu. * @param settings @@ -37,14 +37,6 @@ const os = (): string => { : 'linux-amd64' } -/** - * The cortex.cpp extension based on the current platform. - * @returns .exe if on Windows, otherwise an empty string. - */ -const extension = (): '.exe' | '' => { - return process.platform === 'win32' ? '.exe' : '' -} - /** * The CUDA version that will be set - either '11-7' or '12-0'. * @param settings @@ -89,30 +81,10 @@ const cpuInstructions = async (): Promise => { }) } -/** - * The executable options for the cortex.cpp extension. - */ -export const executableCortexFile = ( - gpuSetting?: GpuSetting -): CortexExecutableOptions => { - let cudaVisibleDevices = gpuSetting?.gpus_in_use.join(',') ?? '' - let vkVisibleDevices = gpuSetting?.gpus_in_use.join(',') ?? '' - let binaryName = `cortex-server${extension()}` - const binPath = path.join(__dirname, '..', 'bin') - return { - enginePath: path.join(appResourcePath(), 'shared'), - executablePath: path.join(binPath, binaryName), - cudaVisibleDevices, - vkVisibleDevices, - } -} - /** * Find which variant to run based on the current platform. */ -export const engineVariant = async ( - gpuSetting?: GpuSetting -): Promise => { +const engineVariant = async (gpuSetting?: GpuSetting): Promise => { const cpuInstruction = await cpuInstructions() log(`[CORTEX]: CPU instruction: ${cpuInstruction}`) let engineVariant = [ @@ -135,3 +107,45 @@ export const engineVariant = async ( log(`[CORTEX]: Engine variant: ${engineVariant}`) return engineVariant } + +/** + * Create symlink to each variant for the default bundled version + */ +const symlinkEngines = async () => { + const sourceEnginePath = path.join( + appResourcePath(), + 'shared', + 'engines', + 'cortex.llamacpp' + ) + const symlinkEnginePath = path.join( + getJanDataFolderPath(), + 'engines', + 'cortex.llamacpp' + ) + const variantFolders = await readdir(sourceEnginePath) + for (const variant of variantFolders) { + const targetVariantPath = path.join( + sourceEnginePath, + variant, + CORTEX_ENGINE_VERSION + ) + const symlinkVariantPath = path.join( + symlinkEnginePath, + variant, + CORTEX_ENGINE_VERSION + ) + + await mkdir(path.join(symlinkEnginePath, variant), { + recursive: true, + }).catch(console.error) + + await symlink(targetVariantPath, symlinkVariantPath).catch(console.error) + console.log(`Symlink created: ${targetVariantPath} -> ${symlinkEnginePath}`) + } +} + +export default { + engineVariant, + symlinkEngines, +} diff --git a/extensions/engine-management-extension/tsconfig.json b/extensions/engine-management-extension/tsconfig.json new file mode 100644 index 000000000..891d28a60 --- /dev/null +++ b/extensions/engine-management-extension/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "target": "es2016", + "module": "ES6", + "moduleResolution": "node", + "outDir": "./dist", + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "strict": false, + "skipLibCheck": true, + "rootDir": "./src" + }, + "include": ["./src"], + "exclude": ["src/**/*.test.ts", "rolldown.config.mjs"] +} diff --git a/extensions/inference-anthropic-extension/package.json b/extensions/inference-anthropic-extension/package.json index 8115ba2df..cb064d2aa 100644 --- a/extensions/inference-anthropic-extension/package.json +++ b/extensions/inference-anthropic-extension/package.json @@ -4,29 +4,23 @@ "version": "1.0.3", "description": "This extension enables Anthropic chat completion API calls", "main": "dist/index.js", - "module": "dist/module.js", "engine": "anthropic", "author": "Jan ", "license": "AGPL-3.0", "scripts": { "test": "jest test", - "build": "tsc -b . && webpack --config webpack.config.js", - "build:publish": "rimraf *.tgz --glob && yarn build && npm pack && cpx *.tgz ../../pre-install", - "sync:core": "cd ../.. && yarn build:core && cd extensions && rm yarn.lock && cd inference-anthropic-extension && yarn && yarn build:publish" - }, - "exports": { - ".": "./dist/index.js", - "./main": "./dist/module.js" + "build": "rolldown -c rolldown.config.mjs", + "build:publish": "rimraf *.tgz --glob || true && yarn build && npm pack && cpx *.tgz ../../pre-install" }, "devDependencies": { "cpx": "^1.5.0", "rimraf": "^3.0.2", - "webpack": "^5.88.2", - "webpack-cli": "^5.1.4", - "ts-loader": "^9.5.0" + "rolldown": "1.0.0-beta.1", + "ts-loader": "^9.5.0", + "typescript": "^5.7.2" }, "dependencies": { - "@janhq/core": "file:../../core", + "@janhq/core": "../../core/package.tgz", "fetch-retry": "^5.0.6", "ulidx": "^2.3.0" }, @@ -40,5 +34,9 @@ ], "bundleDependencies": [ "fetch-retry" - ] + ], + "installConfig": { + "hoistingLimits": "workspaces" + }, + "packageManager": "yarn@4.5.3" } diff --git a/extensions/inference-anthropic-extension/rolldown.config.mjs b/extensions/inference-anthropic-extension/rolldown.config.mjs new file mode 100644 index 000000000..9ebaace2e --- /dev/null +++ b/extensions/inference-anthropic-extension/rolldown.config.mjs @@ -0,0 +1,18 @@ +import { defineConfig } from 'rolldown' +import pkgJson from './package.json' with { type: 'json' } +import settingJson from './resources/settings.json' with { type: 'json' } +import modelsJson from './resources/models.json' with { type: 'json' } + +export default defineConfig({ + input: 'src/index.ts', + output: { + format: 'esm', + file: 'dist/index.js', + }, + platform: 'browser', + define: { + MODELS: JSON.stringify(modelsJson), + SETTINGS: JSON.stringify(settingJson), + ENGINE: JSON.stringify(pkgJson.engine), + }, +}) diff --git a/extensions/inference-anthropic-extension/src/env.d.ts b/extensions/inference-anthropic-extension/src/env.d.ts new file mode 100644 index 000000000..40ca58094 --- /dev/null +++ b/extensions/inference-anthropic-extension/src/env.d.ts @@ -0,0 +1,2 @@ +declare const SETTINGS: SettingComponentProps[] +declare const MODELS: Model[] diff --git a/extensions/inference-anthropic-extension/src/index.ts b/extensions/inference-anthropic-extension/src/index.ts index 94da26d94..8c286d7a5 100644 --- a/extensions/inference-anthropic-extension/src/index.ts +++ b/extensions/inference-anthropic-extension/src/index.ts @@ -10,9 +10,6 @@ import { RemoteOAIEngine } from '@janhq/core' import { PayloadType } from '@janhq/core' import { ChatCompletionRole } from '@janhq/core' -declare const SETTINGS: Array -declare const MODELS: Array - export enum Settings { apiKey = 'anthropic-api-key', chatCompletionsEndPoint = 'chat-completions-endpoint', @@ -115,7 +112,7 @@ export default class JanInferenceAnthropicExtension extends RemoteOAIEngine { content: item.content as string, }) } else if (item.role === ChatCompletionRole.System) { - // When using Claude, you can dramatically improve its performance by using the system parameter to give it a role. + // When using Claude, you can dramatically improve its performance by using the system parameter to give it a role. // This technique, known as role prompting, is the most powerful way to use system prompts with Claude. convertedData.system = item.content as string } diff --git a/extensions/inference-anthropic-extension/webpack.config.js b/extensions/inference-anthropic-extension/webpack.config.js deleted file mode 100644 index cd5e65c72..000000000 --- a/extensions/inference-anthropic-extension/webpack.config.js +++ /dev/null @@ -1,37 +0,0 @@ -const webpack = require('webpack') -const packageJson = require('./package.json') -const settingJson = require('./resources/settings.json') -const modelsJson = require('./resources/models.json') - -module.exports = { - experiments: { outputModule: true }, - entry: './src/index.ts', // Adjust the entry point to match your project's main file - mode: 'production', - module: { - rules: [ - { - test: /\.tsx?$/, - use: 'ts-loader', - exclude: /node_modules/, - }, - ], - }, - plugins: [ - new webpack.DefinePlugin({ - MODELS: JSON.stringify(modelsJson), - SETTINGS: JSON.stringify(settingJson), - ENGINE: JSON.stringify(packageJson.engine), - }), - ], - output: { - filename: 'index.js', // Adjust the output file name as needed - library: { type: 'module' }, // Specify ESM output format - }, - resolve: { - extensions: ['.ts', '.js'], - }, - optimization: { - minimize: false, - }, - // Add loaders and other configuration as needed for your project -} diff --git a/extensions/inference-cohere-extension/package.json b/extensions/inference-cohere-extension/package.json index ea03bb33b..7058c0e53 100644 --- a/extensions/inference-cohere-extension/package.json +++ b/extensions/inference-cohere-extension/package.json @@ -9,9 +9,8 @@ "author": "Jan ", "license": "AGPL-3.0", "scripts": { - "build": "tsc -b . && webpack --config webpack.config.js", - "build:publish": "rimraf *.tgz --glob && yarn build && npm pack && cpx *.tgz ../../pre-install", - "sync:core": "cd ../.. && yarn build:core && cd extensions && rm yarn.lock && cd inference-cohere-extension && yarn && yarn build:publish" + "build": "rolldown -c rolldown.config.mjs", + "build:publish": "rimraf *.tgz --glob || true && yarn build && npm pack && cpx *.tgz ../../pre-install" }, "exports": { ".": "./dist/index.js", @@ -20,12 +19,12 @@ "devDependencies": { "cpx": "^1.5.0", "rimraf": "^3.0.2", - "webpack": "^5.88.2", - "webpack-cli": "^5.1.4", - "ts-loader": "^9.5.0" + "rolldown": "1.0.0-beta.1", + "ts-loader": "^9.5.0", + "typescript": "^5.7.2" }, "dependencies": { - "@janhq/core": "file:../../core", + "@janhq/core": "../../core/package.tgz", "fetch-retry": "^5.0.6", "ulidx": "^2.3.0" }, @@ -39,5 +38,9 @@ ], "bundleDependencies": [ "fetch-retry" - ] + ], + "installConfig": { + "hoistingLimits": "workspaces" + }, + "packageManager": "yarn@4.5.3" } diff --git a/extensions/inference-cohere-extension/rolldown.config.mjs b/extensions/inference-cohere-extension/rolldown.config.mjs new file mode 100644 index 000000000..9ebaace2e --- /dev/null +++ b/extensions/inference-cohere-extension/rolldown.config.mjs @@ -0,0 +1,18 @@ +import { defineConfig } from 'rolldown' +import pkgJson from './package.json' with { type: 'json' } +import settingJson from './resources/settings.json' with { type: 'json' } +import modelsJson from './resources/models.json' with { type: 'json' } + +export default defineConfig({ + input: 'src/index.ts', + output: { + format: 'esm', + file: 'dist/index.js', + }, + platform: 'browser', + define: { + MODELS: JSON.stringify(modelsJson), + SETTINGS: JSON.stringify(settingJson), + ENGINE: JSON.stringify(pkgJson.engine), + }, +}) diff --git a/extensions/inference-cohere-extension/src/env.d.ts b/extensions/inference-cohere-extension/src/env.d.ts new file mode 100644 index 000000000..40ca58094 --- /dev/null +++ b/extensions/inference-cohere-extension/src/env.d.ts @@ -0,0 +1,2 @@ +declare const SETTINGS: SettingComponentProps[] +declare const MODELS: Model[] diff --git a/extensions/inference-cohere-extension/src/index.ts b/extensions/inference-cohere-extension/src/index.ts index 2615ea893..018df60f9 100644 --- a/extensions/inference-cohere-extension/src/index.ts +++ b/extensions/inference-cohere-extension/src/index.ts @@ -10,9 +10,6 @@ import { RemoteOAIEngine } from '@janhq/core' import { PayloadType } from '@janhq/core' import { ChatCompletionRole } from '@janhq/core' -declare const SETTINGS: Array -declare const MODELS: Array - enum Settings { apiKey = 'cohere-api-key', chatCompletionsEndPoint = 'chat-completions-endpoint', diff --git a/extensions/inference-cohere-extension/webpack.config.js b/extensions/inference-cohere-extension/webpack.config.js deleted file mode 100644 index cd5e65c72..000000000 --- a/extensions/inference-cohere-extension/webpack.config.js +++ /dev/null @@ -1,37 +0,0 @@ -const webpack = require('webpack') -const packageJson = require('./package.json') -const settingJson = require('./resources/settings.json') -const modelsJson = require('./resources/models.json') - -module.exports = { - experiments: { outputModule: true }, - entry: './src/index.ts', // Adjust the entry point to match your project's main file - mode: 'production', - module: { - rules: [ - { - test: /\.tsx?$/, - use: 'ts-loader', - exclude: /node_modules/, - }, - ], - }, - plugins: [ - new webpack.DefinePlugin({ - MODELS: JSON.stringify(modelsJson), - SETTINGS: JSON.stringify(settingJson), - ENGINE: JSON.stringify(packageJson.engine), - }), - ], - output: { - filename: 'index.js', // Adjust the output file name as needed - library: { type: 'module' }, // Specify ESM output format - }, - resolve: { - extensions: ['.ts', '.js'], - }, - optimization: { - minimize: false, - }, - // Add loaders and other configuration as needed for your project -} diff --git a/extensions/inference-cortex-extension/bin/version.txt b/extensions/inference-cortex-extension/bin/version.txt index af0b7ddbf..238d6e882 100644 --- a/extensions/inference-cortex-extension/bin/version.txt +++ b/extensions/inference-cortex-extension/bin/version.txt @@ -1 +1 @@ -1.0.6 +1.0.7 diff --git a/extensions/inference-cortex-extension/download.sh b/extensions/inference-cortex-extension/download.sh index b0f3b36e3..0ccbdcb1a 100755 --- a/extensions/inference-cortex-extension/download.sh +++ b/extensions/inference-cortex-extension/download.sh @@ -30,8 +30,6 @@ if [ "$OS_TYPE" == "Linux" ]; then download "${ENGINE_DOWNLOAD_URL}-linux-amd64-vulkan.tar.gz" -e --strip 1 -o "${SHARED_PATH}/engines/cortex.llamacpp/linux-amd64-vulkan/v${ENGINE_VERSION}" 1 download "${CUDA_DOWNLOAD_URL}/cuda-12-0-linux-amd64.tar.gz" -e --strip 1 -o "${SHARED_PATH}" 1 download "${CUDA_DOWNLOAD_URL}/cuda-11-7-linux-amd64.tar.gz" -e --strip 1 -o "${SHARED_PATH}" 1 - mkdir -p "${SHARED_PATH}/engines/cortex.llamacpp/deps" - touch "${SHARED_PATH}/engines/cortex.llamacpp/deps/keep" elif [ "$OS_TYPE" == "Darwin" ]; then # macOS downloads diff --git a/extensions/inference-cortex-extension/package.json b/extensions/inference-cortex-extension/package.json index 507ab4ebc..f191f3071 100644 --- a/extensions/inference-cortex-extension/package.json +++ b/extensions/inference-cortex-extension/package.json @@ -9,12 +9,12 @@ "license": "AGPL-3.0", "scripts": { "test": "jest", - "build": "tsc --module commonjs && rollup -c rollup.config.ts", + "build": "rolldown -c rolldown.config.mjs", "downloadcortex:linux:darwin": "./download.sh", "downloadcortex:win32": "download.bat", "downloadcortex": "run-script-os", - "build:publish:darwin": "rimraf *.tgz --glob && yarn build && npm run downloadcortex && ../../.github/scripts/auto-sign.sh && cpx \"bin/**\" \"dist/bin\" && npm pack && cpx *.tgz ../../pre-install", - "build:publish:win32:linux": "rimraf *.tgz --glob && yarn build && npm run downloadcortex && cpx \"bin/**\" \"dist/bin\" && npm pack && cpx *.tgz ../../pre-install", + "build:publish:darwin": "rimraf *.tgz --glob || true && yarn build && yarn downloadcortex && ../../.github/scripts/auto-sign.sh && cpx \"bin/**\" \"dist/bin\" && npm pack && cpx *.tgz ../../pre-install", + "build:publish:win32:linux": "rimraf *.tgz --glob || true && yarn build && yarn downloadcortex && cpx \"bin/**\" \"dist/bin\" && npm pack && cpx *.tgz ../../pre-install", "build:publish": "run-script-os" }, "exports": { @@ -22,12 +22,7 @@ "./main": "./dist/node/index.cjs.js" }, "devDependencies": { - "@babel/preset-typescript": "^7.24.1", "@jest/globals": "^29.7.0", - "@rollup/plugin-commonjs": "^25.0.7", - "@rollup/plugin-json": "^6.1.0", - "@rollup/plugin-node-resolve": "^15.2.3", - "@rollup/plugin-replace": "^5.0.5", "@types/decompress": "^4.2.7", "@types/jest": "^29.5.12", "@types/node": "^20.11.4", @@ -37,17 +32,13 @@ "download-cli": "^1.1.1", "jest": "^29.7.0", "rimraf": "^3.0.2", - "rollup": "^2.38.5", - "rollup-plugin-define": "^1.0.1", - "rollup-plugin-sourcemaps": "^0.6.3", - "rollup-plugin-typescript2": "^0.36.0", + "rolldown": "1.0.0-beta.1", "run-script-os": "^1.1.6", "ts-jest": "^29.1.2", "typescript": "^5.3.3" }, "dependencies": { - "@janhq/core": "file:../../core", - "cpu-instructions": "^0.0.13", + "@janhq/core": "../../core/package.tgz", "decompress": "^4.2.1", "fetch-retry": "^5.0.6", "ky": "^1.7.2", @@ -69,7 +60,10 @@ "tcp-port-used", "fetch-retry", "@janhq/core", - "decompress", - "cpu-instructions" - ] + "decompress" + ], + "installConfig": { + "hoistingLimits": "workspaces" + }, + "packageManager": "yarn@4.5.3" } diff --git a/extensions/inference-cortex-extension/rolldown.config.mjs b/extensions/inference-cortex-extension/rolldown.config.mjs new file mode 100644 index 000000000..4f8a4ac06 --- /dev/null +++ b/extensions/inference-cortex-extension/rolldown.config.mjs @@ -0,0 +1,131 @@ +import { defineConfig } from 'rolldown' +import packageJson from './package.json' with { type: 'json' } +import defaultSettingJson from './resources/default_settings.json' with { type: 'json' } +import bakllavaJson from './resources/models/bakllava-1/model.json' with { type: 'json' } +import codeninja7bJson from './resources/models/codeninja-1.0-7b/model.json' with { type: 'json' } +import commandr34bJson from './resources/models/command-r-34b/model.json' with { type: 'json' } +import deepseekCoder13bJson from './resources/models/deepseek-coder-1.3b/model.json' with { type: 'json' } +import deepseekCoder34bJson from './resources/models/deepseek-coder-34b/model.json' with { type: 'json' } +import gemma112bJson from './resources/models/gemma-1.1-2b/model.json' with { type: 'json' } +import gemma117bJson from './resources/models/gemma-1.1-7b/model.json' with { type: 'json' } +import llama2Chat70bJson from './resources/models/llama2-chat-70b/model.json' with { type: 'json' } +import llama2Chat7bJson from './resources/models/llama2-chat-7b/model.json' with { type: 'json' } +import llamacorn1bJson from './resources/models/llamacorn-1.1b/model.json' with { type: 'json' } +import llava13bJson from './resources/models/llava-13b/model.json' with { type: 'json' } +import llava7bJson from './resources/models/llava-7b/model.json' with { type: 'json' } +import mistralIns7bq4Json from './resources/models/mistral-ins-7b-q4/model.json' with { type: 'json' } +import mixtral8x7bInstructJson from './resources/models/mixtral-8x7b-instruct/model.json' with { type: 'json' } +import noromaid7bJson from './resources/models/noromaid-7b/model.json' with { type: 'json' } +import openchat357bJson from './resources/models/openchat-3.5-7b/model.json' with { type: 'json' } +import phi3bJson from './resources/models/phi3-3.8b/model.json' with { type: 'json' } +import phind34bJson from './resources/models/phind-34b/model.json' with { type: 'json' } +import qwen7bJson from './resources/models/qwen-7b/model.json' with { type: 'json' } +import stableZephyr3bJson from './resources/models/stable-zephyr-3b/model.json' with { type: 'json' } +import stealthv127bJson from './resources/models/stealth-v1.2-7b/model.json' with { type: 'json' } +import tinyllama11bJson from './resources/models/tinyllama-1.1b/model.json' with { type: 'json' } +import trinityv127bJson from './resources/models/trinity-v1.2-7b/model.json' with { type: 'json' } +import vistral7bJson from './resources/models/vistral-7b/model.json' with { type: 'json' } +import wizardcoder13bJson from './resources/models/wizardcoder-13b/model.json' with { type: 'json' } +import yi34bJson from './resources/models/yi-34b/model.json' with { type: 'json' } +import llama3Json from './resources/models/llama3-8b-instruct/model.json' with { type: 'json' } +import llama3Hermes8bJson from './resources/models/llama3-hermes-8b/model.json' with { type: 'json' } +import aya8bJson from './resources/models/aya-23-8b/model.json' with { type: 'json' } +import aya35bJson from './resources/models/aya-23-35b/model.json' with { type: 'json' } +import phimediumJson from './resources/models/phi3-medium/model.json' with { type: 'json' } +import codestralJson from './resources/models/codestral-22b/model.json' with { type: 'json' } +import qwen2Json from './resources/models/qwen2-7b/model.json' with { type: 'json' } +import llama318bJson from './resources/models/llama3.1-8b-instruct/model.json' with { type: 'json' } +import llama3170bJson from './resources/models/llama3.1-70b-instruct/model.json' with { type: 'json' } +import gemma22bJson from './resources/models/gemma-2-2b/model.json' with { type: 'json' } +import gemma29bJson from './resources/models/gemma-2-9b/model.json' with { type: 'json' } +import gemma227bJson from './resources/models/gemma-2-27b/model.json' with { type: 'json' } +import llama321bJson from './resources/models/llama3.2-1b-instruct/model.json' with { type: 'json' } +import llama323bJson from './resources/models/llama3.2-3b-instruct/model.json' with { type: 'json' } +import qwen257bJson from './resources/models/qwen2.5-7b-instruct/model.json' with { type: 'json' } +import qwen25coder7bJson from './resources/models/qwen2.5-coder-7b-instruct/model.json' with { type: 'json' } +import qwen25coder14bJson from './resources/models/qwen2.5-coder-14b-instruct/model.json' with { type: 'json' } +import qwen25coder32bJson from './resources/models/qwen2.5-coder-32b-instruct/model.json' with { type: 'json' } +import qwen2514bJson from './resources/models/qwen2.5-14b-instruct/model.json' with { type: 'json' } +import qwen2532bJson from './resources/models/qwen2.5-32b-instruct/model.json' with { type: 'json' } +import qwen2572bJson from './resources/models/qwen2.5-72b-instruct/model.json' with { type: 'json' } + +export default defineConfig([ + { + input: 'src/index.ts', + output: { + format: 'esm', + file: 'dist/index.js', + }, + platform: 'browser', + define: { + MODELS: JSON.stringify([ + bakllavaJson, + codeninja7bJson, + commandr34bJson, + deepseekCoder13bJson, + deepseekCoder34bJson, + gemma112bJson, + gemma117bJson, + llama2Chat70bJson, + llama2Chat7bJson, + llamacorn1bJson, + llava13bJson, + llava7bJson, + mistralIns7bq4Json, + mixtral8x7bInstructJson, + noromaid7bJson, + openchat357bJson, + phi3bJson, + phind34bJson, + qwen7bJson, + stableZephyr3bJson, + stealthv127bJson, + tinyllama11bJson, + trinityv127bJson, + vistral7bJson, + wizardcoder13bJson, + yi34bJson, + llama3Json, + llama3Hermes8bJson, + phimediumJson, + aya8bJson, + aya35bJson, + codestralJson, + qwen2Json, + llama318bJson, + llama3170bJson, + gemma22bJson, + gemma29bJson, + gemma227bJson, + llama321bJson, + llama323bJson, + qwen257bJson, + qwen25coder7bJson, + qwen25coder14bJson, + qwen25coder32bJson, + qwen2514bJson, + qwen2532bJson, + qwen2572bJson, + ]), + NODE: JSON.stringify(`${packageJson.name}/${packageJson.node}`), + SETTINGS: JSON.stringify(defaultSettingJson), + CORTEX_API_URL: JSON.stringify('http://127.0.0.1:39291'), + CORTEX_SOCKET_URL: JSON.stringify('ws://127.0.0.1:39291'), + CORTEX_ENGINE_VERSION: JSON.stringify('v0.1.42'), + }, + }, + { + input: 'src/node/index.ts', + external: ['@janhq/core/node', 'cpu-instructions'], + output: { + format: 'cjs', + file: 'dist/node/index.cjs.js', + sourcemap: false, + inlineDynamicImports: true, + }, + resolve: { + extensions: ['.js', '.ts', '.json'], + }, + platform: 'node', + }, +]) diff --git a/extensions/inference-cortex-extension/rollup.config.ts b/extensions/inference-cortex-extension/rollup.config.ts deleted file mode 100644 index 266281a75..000000000 --- a/extensions/inference-cortex-extension/rollup.config.ts +++ /dev/null @@ -1,177 +0,0 @@ -import resolve from '@rollup/plugin-node-resolve' -import commonjs from '@rollup/plugin-commonjs' -import sourceMaps from 'rollup-plugin-sourcemaps' -import typescript from 'rollup-plugin-typescript2' -import json from '@rollup/plugin-json' -import replace from '@rollup/plugin-replace' -const packageJson = require('./package.json') -const defaultSettingJson = require('./resources/default_settings.json') - -const bakllavaJson = require('./resources/models/bakllava-1/model.json') -const codeninja7bJson = require('./resources/models/codeninja-1.0-7b/model.json') -const commandr34bJson = require('./resources/models/command-r-34b/model.json') -const deepseekCoder13bJson = require('./resources/models/deepseek-coder-1.3b/model.json') -const deepseekCoder34bJson = require('./resources/models/deepseek-coder-34b/model.json') -const gemma112bJson = require('./resources/models/gemma-1.1-2b/model.json') -const gemma117bJson = require('./resources/models/gemma-1.1-7b/model.json') -const llama2Chat70bJson = require('./resources/models/llama2-chat-70b/model.json') -const llama2Chat7bJson = require('./resources/models/llama2-chat-7b/model.json') -const llamacorn1bJson = require('./resources/models/llamacorn-1.1b/model.json') -const llava13bJson = require('./resources/models/llava-13b/model.json') -const llava7bJson = require('./resources/models/llava-7b/model.json') -const mistralIns7bq4Json = require('./resources/models/mistral-ins-7b-q4/model.json') -const mixtral8x7bInstructJson = require('./resources/models/mixtral-8x7b-instruct/model.json') -const noromaid7bJson = require('./resources/models/noromaid-7b/model.json') -const openchat357bJson = require('./resources/models/openchat-3.5-7b/model.json') -const phi3bJson = require('./resources/models/phi3-3.8b/model.json') -const phind34bJson = require('./resources/models/phind-34b/model.json') -const qwen7bJson = require('./resources/models/qwen-7b/model.json') -const stableZephyr3bJson = require('./resources/models/stable-zephyr-3b/model.json') -const stealthv127bJson = require('./resources/models/stealth-v1.2-7b/model.json') -const tinyllama11bJson = require('./resources/models/tinyllama-1.1b/model.json') -const trinityv127bJson = require('./resources/models/trinity-v1.2-7b/model.json') -const vistral7bJson = require('./resources/models/vistral-7b/model.json') -const wizardcoder13bJson = require('./resources/models/wizardcoder-13b/model.json') -const yi34bJson = require('./resources/models/yi-34b/model.json') -const llama3Json = require('./resources/models/llama3-8b-instruct/model.json') -const llama3Hermes8bJson = require('./resources/models/llama3-hermes-8b/model.json') -const aya8bJson = require('./resources/models/aya-23-8b/model.json') -const aya35bJson = require('./resources/models/aya-23-35b/model.json') -const phimediumJson = require('./resources/models/phi3-medium/model.json') -const codestralJson = require('./resources/models/codestral-22b/model.json') -const qwen2Json = require('./resources/models/qwen2-7b/model.json') -const llama318bJson = require('./resources/models/llama3.1-8b-instruct/model.json') -const llama3170bJson = require('./resources/models/llama3.1-70b-instruct/model.json') -const gemma22bJson = require('./resources/models/gemma-2-2b/model.json') -const gemma29bJson = require('./resources/models/gemma-2-9b/model.json') -const gemma227bJson = require('./resources/models/gemma-2-27b/model.json') -const llama321bJson = require('./resources/models/llama3.2-1b-instruct/model.json') -const llama323bJson = require('./resources/models/llama3.2-3b-instruct/model.json') -const qwen257bJson = require('./resources/models/qwen2.5-7b-instruct/model.json') -const qwen25coder7bJson = require('./resources/models/qwen2.5-coder-7b-instruct/model.json') -const qwen25coder14bJson = require('./resources/models/qwen2.5-coder-14b-instruct/model.json') -const qwen25coder32bJson = require('./resources/models/qwen2.5-coder-32b-instruct/model.json') -const qwen2514bJson = require('./resources/models/qwen2.5-14b-instruct/model.json') -const qwen2532bJson = require('./resources/models/qwen2.5-32b-instruct/model.json') -const qwen2572bJson = require('./resources/models/qwen2.5-72b-instruct/model.json') - -export default [ - { - input: `src/index.ts`, - output: [{ file: packageJson.main, format: 'es', sourcemap: true }], - // Indicate here external modules you don't wanna include in your bundle (i.e.: 'lodash') - external: [], - watch: { - include: 'src/**', - }, - plugins: [ - replace({ - preventAssignment: true, - MODELS: JSON.stringify([ - bakllavaJson, - codeninja7bJson, - commandr34bJson, - deepseekCoder13bJson, - deepseekCoder34bJson, - gemma112bJson, - gemma117bJson, - llama2Chat70bJson, - llama2Chat7bJson, - llamacorn1bJson, - llava13bJson, - llava7bJson, - mistralIns7bq4Json, - mixtral8x7bInstructJson, - noromaid7bJson, - openchat357bJson, - phi3bJson, - phind34bJson, - qwen7bJson, - stableZephyr3bJson, - stealthv127bJson, - tinyllama11bJson, - trinityv127bJson, - vistral7bJson, - wizardcoder13bJson, - yi34bJson, - llama3Json, - llama3Hermes8bJson, - phimediumJson, - aya8bJson, - aya35bJson, - codestralJson, - qwen2Json, - llama318bJson, - llama3170bJson, - gemma22bJson, - gemma29bJson, - gemma227bJson, - llama321bJson, - llama323bJson, - qwen257bJson, - qwen25coder7bJson, - qwen25coder14bJson, - qwen25coder32bJson, - qwen2514bJson, - qwen2532bJson, - qwen2572bJson, - ]), - NODE: JSON.stringify(`${packageJson.name}/${packageJson.node}`), - SETTINGS: JSON.stringify(defaultSettingJson), - CORTEX_API_URL: JSON.stringify('http://127.0.0.1:39291'), - CORTEX_SOCKET_URL: JSON.stringify('ws://127.0.0.1:39291'), - CORTEX_ENGINE_VERSION: JSON.stringify('v0.1.42'), - }), - // Allow json resolution - json(), - // Compile TypeScript files - typescript({ - useTsconfigDeclarationDir: true, - exclude: ['**/__tests__', '**/*.test.ts'], - }), - // Compile TypeScript files - // Allow bundling cjs modules (unlike webpack, rollup doesn't understand cjs) - commonjs(), - // Allow node_modules resolution, so you can use 'external' to control - // which external modules to include in the bundle - // https://github.com/rollup/rollup-plugin-node-resolve#usage - resolve({ - extensions: ['.js', '.ts', '.svelte'], - browser: true, - }), - - // Resolve source maps to the original source - sourceMaps(), - ], - }, - { - input: `src/node/index.ts`, - output: [ - { file: 'dist/node/index.cjs.js', format: 'cjs', sourcemap: true }, - ], - // Indicate here external modules you don't wanna include in your bundle (i.e.: 'lodash') - external: ['@janhq/core/node', 'cpu-instructions'], - watch: { - include: 'src/node/**', - }, - plugins: [ - // Allow json resolution - json(), - // Compile TypeScript files - typescript({ - useTsconfigDeclarationDir: true, - exclude: ['**/__tests__', '**/*.test.ts'], - }), - // Allow bundling cjs modules (unlike webpack, rollup doesn't understand cjs) - commonjs(), - // Allow node_modules resolution, so you can use 'external' to control - // which external modules to include in the bundle - // https://github.com/rollup/rollup-plugin-node-resolve#usage - resolve({ - extensions: ['.ts', '.js', '.json'], - }), - // Resolve source maps to the original source - sourceMaps(), - ], - }, -] diff --git a/extensions/inference-cortex-extension/src/@types/global.d.ts b/extensions/inference-cortex-extension/src/@types/global.d.ts index 139d836a5..907db0df1 100644 --- a/extensions/inference-cortex-extension/src/@types/global.d.ts +++ b/extensions/inference-cortex-extension/src/@types/global.d.ts @@ -2,14 +2,5 @@ declare const NODE: string declare const CORTEX_API_URL: string declare const CORTEX_SOCKET_URL: string declare const CORTEX_ENGINE_VERSION: string -declare const SETTINGS: Array -declare const MODELS: Array - -/** - * The response from the initModel function. - * @property error - An error message if the model fails to load. - */ -interface ModelOperationResponse { - error?: any - modelFile?: string -} +declare const SETTINGS: object[] +declare const MODELS: object[] diff --git a/extensions/inference-cortex-extension/src/babel.config.js b/extensions/inference-cortex-extension/src/babel.config.js deleted file mode 100644 index befbdd148..000000000 --- a/extensions/inference-cortex-extension/src/babel.config.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - presets: [ - ['@babel/preset-env', { targets: { node: 'current' } }], - '@babel/preset-typescript', - ], -} diff --git a/extensions/inference-cortex-extension/src/index.ts b/extensions/inference-cortex-extension/src/index.ts index 4cc322436..537b3bc62 100644 --- a/extensions/inference-cortex-extension/src/index.ts +++ b/extensions/inference-cortex-extension/src/index.ts @@ -9,6 +9,7 @@ import { Model, executeOnMain, + EngineEvent, systemInformation, joinPath, LocalOAIEngine, @@ -18,9 +19,7 @@ import { fs, events, ModelEvent, - SystemInformation, dirName, - AppConfigurationEventName, } from '@janhq/core' import PQueue from 'p-queue' import ky from 'ky' @@ -112,21 +111,11 @@ export default class JanInferenceCortexExtension extends LocalOAIEngine { const systemInfo = await systemInformation() this.queue.add(() => executeOnMain(NODE, 'run', systemInfo)) this.queue.add(() => this.healthz()) - this.queue.add(() => this.setDefaultEngine(systemInfo)) this.subscribeToEvents() window.addEventListener('beforeunload', () => { this.clean() }) - - const currentMode = systemInfo.gpuSetting?.run_mode - - events.on(AppConfigurationEventName.OnConfigurationUpdate, async () => { - const systemInfo = await systemInformation() - // Update run mode on settings update - if (systemInfo.gpuSetting?.run_mode !== currentMode) - this.queue.add(() => this.setDefaultEngine(systemInfo)) - }) } async onUnload() { @@ -236,7 +225,7 @@ export default class JanInferenceCortexExtension extends LocalOAIEngine { * Do health check on cortex.cpp * @returns */ - private healthz(): Promise { + private async healthz(): Promise { return ky .get(`${CORTEX_API_URL}/healthz`, { retry: { @@ -248,36 +237,11 @@ export default class JanInferenceCortexExtension extends LocalOAIEngine { .then(() => {}) } - /** - * Set default engine variant on launch - */ - private async setDefaultEngine(systemInfo: SystemInformation) { - const variant = await executeOnMain( - NODE, - 'engineVariant', - systemInfo.gpuSetting - ) - return ( - ky - // Fallback support for legacy API - .post( - `${CORTEX_API_URL}/v1/engines/${InferenceEngine.cortex_llamacpp}/default?version=${CORTEX_ENGINE_VERSION}&variant=${variant}`, - { - json: { - version: CORTEX_ENGINE_VERSION, - variant, - }, - } - ) - .then(() => {}) - ) - } - /** * Clean cortex processes * @returns */ - private clean(): Promise { + private async clean(): Promise { return ky .delete(`${CORTEX_API_URL}/processmanager/destroy`, { timeout: 2000, // maximum 2 seconds @@ -301,6 +265,7 @@ export default class JanInferenceCortexExtension extends LocalOAIEngine { this.socket.addEventListener('message', (event) => { const data = JSON.parse(event.data) + const transferred = data.task.items.reduce( (acc: number, cur: any) => acc + cur.downloadedBytes, 0 @@ -320,17 +285,26 @@ export default class JanInferenceCortexExtension extends LocalOAIEngine { transferred: transferred, total: total, }, + downloadType: data.task.type, } ) - // Update models list from Hub - if (data.type === DownloadTypes.DownloadSuccess) { - // Delay for the state update from cortex.cpp - // Just to be sure - setTimeout(() => { - events.emit(ModelEvent.OnModelsUpdate, { - fetch: true, - }) - }, 500) + + if (data.task.type === 'Engine') { + events.emit(EngineEvent.OnEngineUpdate, { + type: DownloadTypes[data.type as keyof typeof DownloadTypes], + percent: percent, + id: data.task.id, + }) + } else { + if (data.type === DownloadTypes.DownloadSuccess) { + // Delay for the state update from cortex.cpp + // Just to be sure + setTimeout(() => { + events.emit(ModelEvent.OnModelsUpdate, { + fetch: true, + }) + }, 500) + } } }) diff --git a/extensions/inference-cortex-extension/src/node/index.test.ts b/extensions/inference-cortex-extension/src/node/index.test.ts index ff9d7c2fc..bdfd99d03 100644 --- a/extensions/inference-cortex-extension/src/node/index.test.ts +++ b/extensions/inference-cortex-extension/src/node/index.test.ts @@ -54,17 +54,6 @@ jest.mock('child_process', () => ({ }, })) -jest.mock('./execute', () => ({ - executableCortexFile: () => { - return { - enginePath: 'enginePath', - executablePath: 'executablePath', - cudaVisibleDevices: 'cudaVisibleDevices', - vkVisibleDevices: 'vkVisibleDevices', - } - }, -})) - import index from './index' describe('dispose', () => { diff --git a/extensions/inference-cortex-extension/src/node/index.ts b/extensions/inference-cortex-extension/src/node/index.ts index a13bf6028..4ce35c83d 100644 --- a/extensions/inference-cortex-extension/src/node/index.ts +++ b/extensions/inference-cortex-extension/src/node/index.ts @@ -1,6 +1,5 @@ import path from 'path' import { getJanDataFolderPath, log, SystemInformation } from '@janhq/core/node' -import { engineVariant, executableCortexFile } from './execute' import { ProcessWatchdog } from './watchdog' // The HOST address to use for the Nitro subprocess @@ -15,21 +14,12 @@ function run(systemInfo?: SystemInformation): Promise { log(`[CORTEX]:: Spawning cortex subprocess...`) return new Promise(async (resolve, reject) => { - let executableOptions = executableCortexFile( - // If ngl is not set or equal to 0, run on CPU with correct instructions - systemInfo?.gpuSetting - ? { - ...systemInfo.gpuSetting, - run_mode: systemInfo.gpuSetting.run_mode, - } - : undefined - ) - + let gpuVisibleDevices = systemInfo?.gpuSetting?.gpus_in_use.join(',') ?? '' + let binaryName = `cortex-server${process.platform === 'win32' ? '.exe' : ''}` + const binPath = path.join(__dirname, '..', 'bin') + const executablePath = path.join(binPath, binaryName) // Execute the binary - log(`[CORTEX]:: Spawn cortex at path: ${executableOptions.executablePath}`) - log(`[CORTEX]:: Cortex engine path: ${executableOptions.enginePath}`) - - addEnvPaths(executableOptions.enginePath) + log(`[CORTEX]:: Spawn cortex at path: ${executablePath}`) const dataFolderPath = getJanDataFolderPath() if (watchdog) { @@ -37,7 +27,7 @@ function run(systemInfo?: SystemInformation): Promise { } watchdog = new ProcessWatchdog( - executableOptions.executablePath, + executablePath, [ '--start-server', '--port', @@ -48,14 +38,12 @@ function run(systemInfo?: SystemInformation): Promise { dataFolderPath, ], { - cwd: executableOptions.enginePath, env: { ...process.env, - ENGINE_PATH: executableOptions.enginePath, - CUDA_VISIBLE_DEVICES: executableOptions.cudaVisibleDevices, + CUDA_VISIBLE_DEVICES: gpuVisibleDevices, // Vulkan - Support 1 device at a time for now - ...(executableOptions.vkVisibleDevices?.length > 0 && { - GGML_VULKAN_DEVICE: executableOptions.vkVisibleDevices[0], + ...(gpuVisibleDevices?.length > 0 && { + GGML_VK_VISIBLE_DEVICES: gpuVisibleDevices, }), }, } @@ -96,5 +84,4 @@ export interface CortexProcessInfo { export default { run, dispose, - engineVariant, } diff --git a/extensions/inference-cortex-extension/tsconfig.json b/extensions/inference-cortex-extension/tsconfig.json index af00a035a..b10e77d83 100644 --- a/extensions/inference-cortex-extension/tsconfig.json +++ b/extensions/inference-cortex-extension/tsconfig.json @@ -5,11 +5,7 @@ "module": "esnext", "strict": true, "sourceMap": true, - "declaration": true, - "allowSyntheticDefaultImports": true, - "experimentalDecorators": true, - "emitDecoratorMetadata": true, - "declarationDir": "dist/types", + "esModuleInterop": true, "outDir": "dist", "importHelpers": true, "typeRoots": ["node_modules/@types"] diff --git a/extensions/inference-groq-extension/package.json b/extensions/inference-groq-extension/package.json index 509cb7611..e400c517b 100644 --- a/extensions/inference-groq-extension/package.json +++ b/extensions/inference-groq-extension/package.json @@ -4,26 +4,23 @@ "version": "1.0.1", "description": "This extension enables fast Groq chat completion API calls", "main": "dist/index.js", + "engine": "groq", "module": "dist/module.js", "author": "Carsen Klock & Jan", "license": "AGPL-3.0", "scripts": { - "build": "tsc -b . && webpack --config webpack.config.js", - "build:publish": "rimraf *.tgz --glob && npm run build && npm pack && cpx *.tgz ../../pre-install" - }, - "exports": { - ".": "./dist/index.js", - "./main": "./dist/module.js" + "build": "rolldown -c rolldown.config.mjs", + "build:publish": "rimraf *.tgz --glob || true && yarn build && npm pack && cpx *.tgz ../../pre-install" }, "devDependencies": { "cpx": "^1.5.0", "rimraf": "^3.0.2", - "webpack": "^5.88.2", - "webpack-cli": "^5.1.4", - "ts-loader": "^9.5.0" + "rolldown": "1.0.0-beta.1", + "ts-loader": "^9.5.0", + "typescript": "^5.7.2" }, "dependencies": { - "@janhq/core": "file:../../core", + "@janhq/core": "../../core/package.tgz", "fetch-retry": "^5.0.6", "ulidx": "^2.3.0" }, @@ -37,5 +34,9 @@ ], "bundleDependencies": [ "fetch-retry" - ] + ], + "installConfig": { + "hoistingLimits": "workspaces" + }, + "packageManager": "yarn@4.5.3" } diff --git a/extensions/inference-groq-extension/rolldown.config.mjs b/extensions/inference-groq-extension/rolldown.config.mjs new file mode 100644 index 000000000..9ebaace2e --- /dev/null +++ b/extensions/inference-groq-extension/rolldown.config.mjs @@ -0,0 +1,18 @@ +import { defineConfig } from 'rolldown' +import pkgJson from './package.json' with { type: 'json' } +import settingJson from './resources/settings.json' with { type: 'json' } +import modelsJson from './resources/models.json' with { type: 'json' } + +export default defineConfig({ + input: 'src/index.ts', + output: { + format: 'esm', + file: 'dist/index.js', + }, + platform: 'browser', + define: { + MODELS: JSON.stringify(modelsJson), + SETTINGS: JSON.stringify(settingJson), + ENGINE: JSON.stringify(pkgJson.engine), + }, +}) diff --git a/extensions/inference-groq-extension/src/env.d.ts b/extensions/inference-groq-extension/src/env.d.ts new file mode 100644 index 000000000..40ca58094 --- /dev/null +++ b/extensions/inference-groq-extension/src/env.d.ts @@ -0,0 +1,2 @@ +declare const SETTINGS: SettingComponentProps[] +declare const MODELS: Model[] diff --git a/extensions/inference-groq-extension/src/index.ts b/extensions/inference-groq-extension/src/index.ts index eafb7fe8a..d6969b48f 100644 --- a/extensions/inference-groq-extension/src/index.ts +++ b/extensions/inference-groq-extension/src/index.ts @@ -6,10 +6,7 @@ * @module inference-groq-extension/src/index */ -import { RemoteOAIEngine, SettingComponentProps } from '@janhq/core' - -declare const SETTINGS: Array -declare const MODELS: Array +import { RemoteOAIEngine } from '@janhq/core' enum Settings { apiKey = 'groq-api-key', diff --git a/extensions/inference-groq-extension/webpack.config.js b/extensions/inference-groq-extension/webpack.config.js deleted file mode 100644 index 199dee42c..000000000 --- a/extensions/inference-groq-extension/webpack.config.js +++ /dev/null @@ -1,37 +0,0 @@ -const webpack = require('webpack') -const packageJson = require('./package.json') -const settingJson = require('./resources/settings.json') -const modelsJson = require('./resources/models.json') - -module.exports = { - experiments: { outputModule: true }, - entry: './src/index.ts', // Adjust the entry point to match your project's main file - mode: 'production', - module: { - rules: [ - { - test: /\.tsx?$/, - use: 'ts-loader', - exclude: /node_modules/, - }, - ], - }, - plugins: [ - new webpack.DefinePlugin({ - MODELS: JSON.stringify(modelsJson), - SETTINGS: JSON.stringify(settingJson), - MODULE: JSON.stringify(`${packageJson.name}/${packageJson.module}`), - }), - ], - output: { - filename: 'index.js', // Adjust the output file name as needed - library: { type: 'module' }, // Specify ESM output format - }, - resolve: { - extensions: ['.ts', '.js'], - }, - optimization: { - minimize: false, - }, - // Add loaders and other configuration as needed for your project -} diff --git a/extensions/inference-martian-extension/package.json b/extensions/inference-martian-extension/package.json index 15d392b9c..c1371917c 100644 --- a/extensions/inference-martian-extension/package.json +++ b/extensions/inference-martian-extension/package.json @@ -9,22 +9,18 @@ "author": "Jan ", "license": "AGPL-3.0", "scripts": { - "build": "tsc -b . && webpack --config webpack.config.js", - "build:publish": "rimraf *.tgz --glob && yarn build && npm pack && cpx *.tgz ../../pre-install" - }, - "exports": { - ".": "./dist/index.js", - "./main": "./dist/module.js" + "build": "rolldown -c rolldown.config.mjs", + "build:publish": "rimraf *.tgz --glob || true && yarn build && npm pack && cpx *.tgz ../../pre-install" }, "devDependencies": { "cpx": "^1.5.0", "rimraf": "^3.0.2", - "webpack": "^5.88.2", - "webpack-cli": "^5.1.4", - "ts-loader": "^9.5.0" + "rolldown": "1.0.0-beta.1", + "ts-loader": "^9.5.0", + "typescript": "^5.7.2" }, "dependencies": { - "@janhq/core": "file:../../core", + "@janhq/core": "../../core/package.tgz", "fetch-retry": "^5.0.6", "ulidx": "^2.3.0" }, @@ -38,5 +34,9 @@ ], "bundleDependencies": [ "fetch-retry" - ] + ], + "installConfig": { + "hoistingLimits": "workspaces" + }, + "packageManager": "yarn@4.5.3" } diff --git a/extensions/inference-martian-extension/rolldown.config.mjs b/extensions/inference-martian-extension/rolldown.config.mjs new file mode 100644 index 000000000..9ebaace2e --- /dev/null +++ b/extensions/inference-martian-extension/rolldown.config.mjs @@ -0,0 +1,18 @@ +import { defineConfig } from 'rolldown' +import pkgJson from './package.json' with { type: 'json' } +import settingJson from './resources/settings.json' with { type: 'json' } +import modelsJson from './resources/models.json' with { type: 'json' } + +export default defineConfig({ + input: 'src/index.ts', + output: { + format: 'esm', + file: 'dist/index.js', + }, + platform: 'browser', + define: { + MODELS: JSON.stringify(modelsJson), + SETTINGS: JSON.stringify(settingJson), + ENGINE: JSON.stringify(pkgJson.engine), + }, +}) diff --git a/extensions/inference-martian-extension/src/env.d.ts b/extensions/inference-martian-extension/src/env.d.ts new file mode 100644 index 000000000..40ca58094 --- /dev/null +++ b/extensions/inference-martian-extension/src/env.d.ts @@ -0,0 +1,2 @@ +declare const SETTINGS: SettingComponentProps[] +declare const MODELS: Model[] diff --git a/extensions/inference-martian-extension/src/index.ts b/extensions/inference-martian-extension/src/index.ts index f59a6b7fc..8cbe4e52d 100644 --- a/extensions/inference-martian-extension/src/index.ts +++ b/extensions/inference-martian-extension/src/index.ts @@ -6,10 +6,7 @@ * @module inference-martian-extension/src/index */ -import { RemoteOAIEngine, SettingComponentProps } from '@janhq/core' - -declare const SETTINGS: Array -declare const MODELS: Array +import { RemoteOAIEngine } from '@janhq/core' enum Settings { apiKey = 'martian-api-key', diff --git a/extensions/inference-martian-extension/webpack.config.js b/extensions/inference-martian-extension/webpack.config.js deleted file mode 100644 index cd5e65c72..000000000 --- a/extensions/inference-martian-extension/webpack.config.js +++ /dev/null @@ -1,37 +0,0 @@ -const webpack = require('webpack') -const packageJson = require('./package.json') -const settingJson = require('./resources/settings.json') -const modelsJson = require('./resources/models.json') - -module.exports = { - experiments: { outputModule: true }, - entry: './src/index.ts', // Adjust the entry point to match your project's main file - mode: 'production', - module: { - rules: [ - { - test: /\.tsx?$/, - use: 'ts-loader', - exclude: /node_modules/, - }, - ], - }, - plugins: [ - new webpack.DefinePlugin({ - MODELS: JSON.stringify(modelsJson), - SETTINGS: JSON.stringify(settingJson), - ENGINE: JSON.stringify(packageJson.engine), - }), - ], - output: { - filename: 'index.js', // Adjust the output file name as needed - library: { type: 'module' }, // Specify ESM output format - }, - resolve: { - extensions: ['.ts', '.js'], - }, - optimization: { - minimize: false, - }, - // Add loaders and other configuration as needed for your project -} diff --git a/extensions/inference-mistral-extension/package.json b/extensions/inference-mistral-extension/package.json index 7cdb61253..504a3d613 100644 --- a/extensions/inference-mistral-extension/package.json +++ b/extensions/inference-mistral-extension/package.json @@ -9,24 +9,19 @@ "author": "Jan ", "license": "AGPL-3.0", "scripts": { - "build": "tsc -b . && webpack --config webpack.config.js", - "build:publish": "rimraf *.tgz --glob && yarn build && npm pack && cpx *.tgz ../../pre-install" - }, - "exports": { - ".": "./dist/index.js", - "./main": "./dist/module.js" + "build": "rolldown -c rolldown.config.mjs", + "build:publish": "rimraf *.tgz --glob || true && yarn build && npm pack && cpx *.tgz ../../pre-install" }, "devDependencies": { "cpx": "^1.5.0", "rimraf": "^3.0.2", - "webpack": "^5.88.2", - "webpack-cli": "^5.1.4", - "ts-loader": "^9.5.0" + "rolldown": "1.0.0-beta.1", + "ts-loader": "^9.5.0", + "typescript": "^5.7.2" }, "dependencies": { - "@janhq/core": "file:../../core", + "@janhq/core": "../../core/package.tgz", "fetch-retry": "^5.0.6", - "path-browserify": "^1.0.1", "ulidx": "^2.3.0" }, "engines": { @@ -39,5 +34,9 @@ ], "bundleDependencies": [ "fetch-retry" - ] + ], + "installConfig": { + "hoistingLimits": "workspaces" + }, + "packageManager": "yarn@4.5.3" } diff --git a/extensions/inference-mistral-extension/rolldown.config.mjs b/extensions/inference-mistral-extension/rolldown.config.mjs new file mode 100644 index 000000000..9ebaace2e --- /dev/null +++ b/extensions/inference-mistral-extension/rolldown.config.mjs @@ -0,0 +1,18 @@ +import { defineConfig } from 'rolldown' +import pkgJson from './package.json' with { type: 'json' } +import settingJson from './resources/settings.json' with { type: 'json' } +import modelsJson from './resources/models.json' with { type: 'json' } + +export default defineConfig({ + input: 'src/index.ts', + output: { + format: 'esm', + file: 'dist/index.js', + }, + platform: 'browser', + define: { + MODELS: JSON.stringify(modelsJson), + SETTINGS: JSON.stringify(settingJson), + ENGINE: JSON.stringify(pkgJson.engine), + }, +}) diff --git a/extensions/inference-mistral-extension/src/env.d.ts b/extensions/inference-mistral-extension/src/env.d.ts new file mode 100644 index 000000000..40ca58094 --- /dev/null +++ b/extensions/inference-mistral-extension/src/env.d.ts @@ -0,0 +1,2 @@ +declare const SETTINGS: SettingComponentProps[] +declare const MODELS: Model[] diff --git a/extensions/inference-mistral-extension/src/index.ts b/extensions/inference-mistral-extension/src/index.ts index 461fc326e..22b977c5a 100644 --- a/extensions/inference-mistral-extension/src/index.ts +++ b/extensions/inference-mistral-extension/src/index.ts @@ -8,9 +8,6 @@ import { RemoteOAIEngine } from '@janhq/core' -declare const SETTINGS: Array -declare const MODELS: Array - enum Settings { apiKey = 'mistral-api-key', chatCompletionsEndPoint = 'chat-completions-endpoint', diff --git a/extensions/inference-mistral-extension/webpack.config.js b/extensions/inference-mistral-extension/webpack.config.js deleted file mode 100644 index 0e35fc227..000000000 --- a/extensions/inference-mistral-extension/webpack.config.js +++ /dev/null @@ -1,42 +0,0 @@ -const path = require('path') -const webpack = require('webpack') -const packageJson = require('./package.json') -const settingJson = require('./resources/settings.json') -const modelsJson = require('./resources/models.json') - -module.exports = { - experiments: { outputModule: true }, - entry: './src/index.ts', // Adjust the entry point to match your project's main file - mode: 'production', - module: { - rules: [ - { - test: /\.tsx?$/, - use: 'ts-loader', - exclude: /node_modules/, - }, - ], - }, - plugins: [ - new webpack.DefinePlugin({ - SETTINGS: JSON.stringify(settingJson), - ENGINE: JSON.stringify(packageJson.engine), - MODELS: JSON.stringify(modelsJson), - }), - ], - output: { - filename: 'index.js', // Adjust the output file name as needed - path: path.resolve(__dirname, 'dist'), - library: { type: 'module' }, // Specify ESM output format - }, - resolve: { - extensions: ['.ts', '.js'], - fallback: { - path: require.resolve('path-browserify'), - }, - }, - optimization: { - minimize: false, - }, - // Add loaders and other configuration as needed for your project -} diff --git a/extensions/inference-nvidia-extension/package.json b/extensions/inference-nvidia-extension/package.json index 8bd7708bc..771ccec4f 100644 --- a/extensions/inference-nvidia-extension/package.json +++ b/extensions/inference-nvidia-extension/package.json @@ -9,24 +9,19 @@ "author": "Jan ", "license": "AGPL-3.0", "scripts": { - "build": "tsc -b . && webpack --config webpack.config.js", - "build:publish": "rimraf *.tgz --glob && yarn build && npm pack && cpx *.tgz ../../pre-install" - }, - "exports": { - ".": "./dist/index.js", - "./main": "./dist/module.js" + "build": "rolldown -c rolldown.config.mjs", + "build:publish": "rimraf *.tgz --glob || true && yarn build && npm pack && cpx *.tgz ../../pre-install" }, "devDependencies": { "cpx": "^1.5.0", "rimraf": "^3.0.2", - "webpack": "^5.88.2", - "webpack-cli": "^5.1.4", - "ts-loader": "^9.5.0" + "rolldown": "1.0.0-beta.1", + "ts-loader": "^9.5.0", + "typescript": "^5.7.2" }, "dependencies": { - "@janhq/core": "file:../../core", + "@janhq/core": "../../core/package.tgz", "fetch-retry": "^5.0.6", - "path-browserify": "^1.0.1", "ulidx": "^2.3.0" }, "engines": { @@ -39,5 +34,9 @@ ], "bundleDependencies": [ "fetch-retry" - ] + ], + "installConfig": { + "hoistingLimits": "workspaces" + }, + "packageManager": "yarn@4.5.3" } diff --git a/extensions/inference-nvidia-extension/rolldown.config.mjs b/extensions/inference-nvidia-extension/rolldown.config.mjs new file mode 100644 index 000000000..9ebaace2e --- /dev/null +++ b/extensions/inference-nvidia-extension/rolldown.config.mjs @@ -0,0 +1,18 @@ +import { defineConfig } from 'rolldown' +import pkgJson from './package.json' with { type: 'json' } +import settingJson from './resources/settings.json' with { type: 'json' } +import modelsJson from './resources/models.json' with { type: 'json' } + +export default defineConfig({ + input: 'src/index.ts', + output: { + format: 'esm', + file: 'dist/index.js', + }, + platform: 'browser', + define: { + MODELS: JSON.stringify(modelsJson), + SETTINGS: JSON.stringify(settingJson), + ENGINE: JSON.stringify(pkgJson.engine), + }, +}) diff --git a/extensions/inference-nvidia-extension/src/env.d.ts b/extensions/inference-nvidia-extension/src/env.d.ts new file mode 100644 index 000000000..40ca58094 --- /dev/null +++ b/extensions/inference-nvidia-extension/src/env.d.ts @@ -0,0 +1,2 @@ +declare const SETTINGS: SettingComponentProps[] +declare const MODELS: Model[] diff --git a/extensions/inference-nvidia-extension/src/index.ts b/extensions/inference-nvidia-extension/src/index.ts index 9af27d90c..0e5bb8135 100644 --- a/extensions/inference-nvidia-extension/src/index.ts +++ b/extensions/inference-nvidia-extension/src/index.ts @@ -8,9 +8,6 @@ import { RemoteOAIEngine } from '@janhq/core' -declare const SETTINGS: Array -declare const MODELS: Array - enum Settings { apiKey = 'nvidia-api-key', chatCompletionsEndPoint = 'chat-completions-endpoint', diff --git a/extensions/inference-nvidia-extension/webpack.config.js b/extensions/inference-nvidia-extension/webpack.config.js deleted file mode 100644 index 0e35fc227..000000000 --- a/extensions/inference-nvidia-extension/webpack.config.js +++ /dev/null @@ -1,42 +0,0 @@ -const path = require('path') -const webpack = require('webpack') -const packageJson = require('./package.json') -const settingJson = require('./resources/settings.json') -const modelsJson = require('./resources/models.json') - -module.exports = { - experiments: { outputModule: true }, - entry: './src/index.ts', // Adjust the entry point to match your project's main file - mode: 'production', - module: { - rules: [ - { - test: /\.tsx?$/, - use: 'ts-loader', - exclude: /node_modules/, - }, - ], - }, - plugins: [ - new webpack.DefinePlugin({ - SETTINGS: JSON.stringify(settingJson), - ENGINE: JSON.stringify(packageJson.engine), - MODELS: JSON.stringify(modelsJson), - }), - ], - output: { - filename: 'index.js', // Adjust the output file name as needed - path: path.resolve(__dirname, 'dist'), - library: { type: 'module' }, // Specify ESM output format - }, - resolve: { - extensions: ['.ts', '.js'], - fallback: { - path: require.resolve('path-browserify'), - }, - }, - optimization: { - minimize: false, - }, - // Add loaders and other configuration as needed for your project -} diff --git a/extensions/inference-openai-extension/package.json b/extensions/inference-openai-extension/package.json index d5b2a1d7a..f790b60ca 100644 --- a/extensions/inference-openai-extension/package.json +++ b/extensions/inference-openai-extension/package.json @@ -9,22 +9,18 @@ "author": "Jan ", "license": "AGPL-3.0", "scripts": { - "build": "tsc -b . && webpack --config webpack.config.js", - "build:publish": "rimraf *.tgz --glob && yarn build && npm pack && cpx *.tgz ../../pre-install" - }, - "exports": { - ".": "./dist/index.js", - "./main": "./dist/module.js" + "build": "rolldown -c rolldown.config.mjs", + "build:publish": "rimraf *.tgz --glob || true && yarn build && npm pack && cpx *.tgz ../../pre-install" }, "devDependencies": { "cpx": "^1.5.0", "rimraf": "^3.0.2", - "webpack": "^5.88.2", - "webpack-cli": "^5.1.4", - "ts-loader": "^9.5.0" + "rolldown": "1.0.0-beta.1", + "ts-loader": "^9.5.0", + "typescript": "^5.7.2" }, "dependencies": { - "@janhq/core": "file:../../core", + "@janhq/core": "../../core/package.tgz", "fetch-retry": "^5.0.6", "ulidx": "^2.3.0" }, @@ -38,5 +34,9 @@ ], "bundleDependencies": [ "fetch-retry" - ] + ], + "installConfig": { + "hoistingLimits": "workspaces" + }, + "packageManager": "yarn@4.5.3" } diff --git a/extensions/inference-openai-extension/rolldown.config.mjs b/extensions/inference-openai-extension/rolldown.config.mjs new file mode 100644 index 000000000..9ebaace2e --- /dev/null +++ b/extensions/inference-openai-extension/rolldown.config.mjs @@ -0,0 +1,18 @@ +import { defineConfig } from 'rolldown' +import pkgJson from './package.json' with { type: 'json' } +import settingJson from './resources/settings.json' with { type: 'json' } +import modelsJson from './resources/models.json' with { type: 'json' } + +export default defineConfig({ + input: 'src/index.ts', + output: { + format: 'esm', + file: 'dist/index.js', + }, + platform: 'browser', + define: { + MODELS: JSON.stringify(modelsJson), + SETTINGS: JSON.stringify(settingJson), + ENGINE: JSON.stringify(pkgJson.engine), + }, +}) diff --git a/extensions/inference-openai-extension/src/env.d.ts b/extensions/inference-openai-extension/src/env.d.ts new file mode 100644 index 000000000..40ca58094 --- /dev/null +++ b/extensions/inference-openai-extension/src/env.d.ts @@ -0,0 +1,2 @@ +declare const SETTINGS: SettingComponentProps[] +declare const MODELS: Model[] diff --git a/extensions/inference-openai-extension/src/index.ts b/extensions/inference-openai-extension/src/index.ts index 2612ed815..0996c6bef 100644 --- a/extensions/inference-openai-extension/src/index.ts +++ b/extensions/inference-openai-extension/src/index.ts @@ -8,9 +8,6 @@ import { ModelRuntimeParams, PayloadType, RemoteOAIEngine } from '@janhq/core' -declare const SETTINGS: Array -declare const MODELS: Array - export enum Settings { apiKey = 'openai-api-key', chatCompletionsEndPoint = 'chat-completions-endpoint', diff --git a/extensions/inference-openai-extension/webpack.config.js b/extensions/inference-openai-extension/webpack.config.js deleted file mode 100644 index cd5e65c72..000000000 --- a/extensions/inference-openai-extension/webpack.config.js +++ /dev/null @@ -1,37 +0,0 @@ -const webpack = require('webpack') -const packageJson = require('./package.json') -const settingJson = require('./resources/settings.json') -const modelsJson = require('./resources/models.json') - -module.exports = { - experiments: { outputModule: true }, - entry: './src/index.ts', // Adjust the entry point to match your project's main file - mode: 'production', - module: { - rules: [ - { - test: /\.tsx?$/, - use: 'ts-loader', - exclude: /node_modules/, - }, - ], - }, - plugins: [ - new webpack.DefinePlugin({ - MODELS: JSON.stringify(modelsJson), - SETTINGS: JSON.stringify(settingJson), - ENGINE: JSON.stringify(packageJson.engine), - }), - ], - output: { - filename: 'index.js', // Adjust the output file name as needed - library: { type: 'module' }, // Specify ESM output format - }, - resolve: { - extensions: ['.ts', '.js'], - }, - optimization: { - minimize: false, - }, - // Add loaders and other configuration as needed for your project -} diff --git a/extensions/inference-openrouter-extension/package.json b/extensions/inference-openrouter-extension/package.json index 9d3d68d47..fd53ad0f5 100644 --- a/extensions/inference-openrouter-extension/package.json +++ b/extensions/inference-openrouter-extension/package.json @@ -9,23 +9,18 @@ "author": "Jan ", "license": "AGPL-3.0", "scripts": { - "build": "tsc -b . && webpack --config webpack.config.js", - "build:publish": "rimraf *.tgz --glob && yarn build && npm pack && cpx *.tgz ../../pre-install", - "sync:core": "cd ../.. && yarn build:core && cd extensions && rm yarn.lock && cd inference-openrouter-extension && yarn && yarn build:publish" - }, - "exports": { - ".": "./dist/index.js", - "./main": "./dist/module.js" + "build": "rolldown -c rolldown.config.mjs", + "build:publish": "rimraf *.tgz --glob || true && yarn build && npm pack && cpx *.tgz ../../pre-install" }, "devDependencies": { "cpx": "^1.5.0", "rimraf": "^3.0.2", - "webpack": "^5.88.2", - "webpack-cli": "^5.1.4", - "ts-loader": "^9.5.0" + "rolldown": "1.0.0-beta.1", + "ts-loader": "^9.5.0", + "typescript": "^5.7.2" }, "dependencies": { - "@janhq/core": "file:../../core", + "@janhq/core": "../../core/package.tgz", "fetch-retry": "^5.0.6", "ulidx": "^2.3.0" }, @@ -39,5 +34,9 @@ ], "bundleDependencies": [ "fetch-retry" - ] + ], + "installConfig": { + "hoistingLimits": "workspaces" + }, + "packageManager": "yarn@4.5.3" } diff --git a/extensions/inference-openrouter-extension/rolldown.config.mjs b/extensions/inference-openrouter-extension/rolldown.config.mjs new file mode 100644 index 000000000..9ebaace2e --- /dev/null +++ b/extensions/inference-openrouter-extension/rolldown.config.mjs @@ -0,0 +1,18 @@ +import { defineConfig } from 'rolldown' +import pkgJson from './package.json' with { type: 'json' } +import settingJson from './resources/settings.json' with { type: 'json' } +import modelsJson from './resources/models.json' with { type: 'json' } + +export default defineConfig({ + input: 'src/index.ts', + output: { + format: 'esm', + file: 'dist/index.js', + }, + platform: 'browser', + define: { + MODELS: JSON.stringify(modelsJson), + SETTINGS: JSON.stringify(settingJson), + ENGINE: JSON.stringify(pkgJson.engine), + }, +}) diff --git a/extensions/inference-openrouter-extension/src/env.d.ts b/extensions/inference-openrouter-extension/src/env.d.ts new file mode 100644 index 000000000..40ca58094 --- /dev/null +++ b/extensions/inference-openrouter-extension/src/env.d.ts @@ -0,0 +1,2 @@ +declare const SETTINGS: SettingComponentProps[] +declare const MODELS: Model[] diff --git a/extensions/inference-openrouter-extension/src/index.ts b/extensions/inference-openrouter-extension/src/index.ts index 1b2cd014d..a34c4c38b 100644 --- a/extensions/inference-openrouter-extension/src/index.ts +++ b/extensions/inference-openrouter-extension/src/index.ts @@ -9,9 +9,6 @@ import { RemoteOAIEngine } from '@janhq/core' import { PayloadType } from '@janhq/core' -declare const SETTINGS: Array -declare const MODELS: Array - enum Settings { apiKey = 'openrouter-api-key', model = 'openrouter-model', diff --git a/extensions/inference-openrouter-extension/webpack.config.js b/extensions/inference-openrouter-extension/webpack.config.js deleted file mode 100644 index cd5e65c72..000000000 --- a/extensions/inference-openrouter-extension/webpack.config.js +++ /dev/null @@ -1,37 +0,0 @@ -const webpack = require('webpack') -const packageJson = require('./package.json') -const settingJson = require('./resources/settings.json') -const modelsJson = require('./resources/models.json') - -module.exports = { - experiments: { outputModule: true }, - entry: './src/index.ts', // Adjust the entry point to match your project's main file - mode: 'production', - module: { - rules: [ - { - test: /\.tsx?$/, - use: 'ts-loader', - exclude: /node_modules/, - }, - ], - }, - plugins: [ - new webpack.DefinePlugin({ - MODELS: JSON.stringify(modelsJson), - SETTINGS: JSON.stringify(settingJson), - ENGINE: JSON.stringify(packageJson.engine), - }), - ], - output: { - filename: 'index.js', // Adjust the output file name as needed - library: { type: 'module' }, // Specify ESM output format - }, - resolve: { - extensions: ['.ts', '.js'], - }, - optimization: { - minimize: false, - }, - // Add loaders and other configuration as needed for your project -} diff --git a/extensions/inference-triton-trtllm-extension/package.json b/extensions/inference-triton-trtllm-extension/package.json index 6612dc191..9c1f5e05f 100644 --- a/extensions/inference-triton-trtllm-extension/package.json +++ b/extensions/inference-triton-trtllm-extension/package.json @@ -4,27 +4,22 @@ "version": "1.0.0", "description": "This extension enables Nvidia's TensorRT-LLM as an inference engine option", "main": "dist/index.js", - "module": "dist/module.js", + "engine": "triton_trtllm", "author": "Jan ", "license": "AGPL-3.0", "scripts": { - "build": "tsc -b . && webpack --config webpack.config.js", - "build:publish": "rimraf *.tgz --glob && yarn build && npm pack && cpx *.tgz ../../pre-install" - }, - "exports": { - ".": "./dist/index.js", - "./main": "./dist/module.js" + "build": "rolldown -c rolldown.config.mjs", + "build:publish": "rimraf *.tgz --glob || true && yarn build && npm pack && cpx *.tgz ../../pre-install" }, "devDependencies": { "cpx": "^1.5.0", "rimraf": "^3.0.2", + "rolldown": "1.0.0-beta.1", "ts-loader": "^9.5.0", - "typescript": "5.3.3", - "webpack": "^5.88.2", - "webpack-cli": "^5.1.4" + "typescript": "^5.7.2" }, "dependencies": { - "@janhq/core": "file:../../core", + "@janhq/core": "../../core/package.tgz", "fetch-retry": "^5.0.6", "rxjs": "^7.8.1", "ulidx": "^2.3.0" @@ -39,5 +34,9 @@ ], "bundleDependencies": [ "fetch-retry" - ] + ], + "installConfig": { + "hoistingLimits": "workspaces" + }, + "packageManager": "yarn@4.5.3" } diff --git a/extensions/inference-triton-trtllm-extension/rolldown.config.mjs b/extensions/inference-triton-trtllm-extension/rolldown.config.mjs new file mode 100644 index 000000000..e0659a485 --- /dev/null +++ b/extensions/inference-triton-trtllm-extension/rolldown.config.mjs @@ -0,0 +1,16 @@ +import { defineConfig } from 'rolldown' +import pkgJson from './package.json' with { type: 'json' } +import settingJson from './resources/settings.json' with { type: 'json' } + +export default defineConfig({ + input: 'src/index.ts', + output: { + format: 'esm', + file: 'dist/index.js', + }, + platform: 'browser', + define: { + SETTINGS: JSON.stringify(settingJson), + ENGINE: JSON.stringify(pkgJson.engine), + }, +}) diff --git a/extensions/inference-triton-trtllm-extension/src/env.d.ts b/extensions/inference-triton-trtllm-extension/src/env.d.ts new file mode 100644 index 000000000..4ff21449c --- /dev/null +++ b/extensions/inference-triton-trtllm-extension/src/env.d.ts @@ -0,0 +1 @@ +declare const SETTINGS: SettingComponentProps[] diff --git a/extensions/inference-triton-trtllm-extension/src/index.ts b/extensions/inference-triton-trtllm-extension/src/index.ts index be34837ac..2f351defe 100644 --- a/extensions/inference-triton-trtllm-extension/src/index.ts +++ b/extensions/inference-triton-trtllm-extension/src/index.ts @@ -6,9 +6,8 @@ * @module inference-nvidia-triton-trt-llm-extension/src/index */ -import { RemoteOAIEngine, SettingComponentProps } from '@janhq/core' +import { RemoteOAIEngine } from '@janhq/core' -declare const SETTINGS: Array enum Settings { apiKey = 'tritonllm-api-key', chatCompletionsEndPoint = 'chat-completions-endpoint', diff --git a/extensions/inference-triton-trtllm-extension/webpack.config.js b/extensions/inference-triton-trtllm-extension/webpack.config.js deleted file mode 100644 index 6486d5efc..000000000 --- a/extensions/inference-triton-trtllm-extension/webpack.config.js +++ /dev/null @@ -1,35 +0,0 @@ -const webpack = require('webpack') -const packageJson = require('./package.json') -const settingJson = require('./resources/settings.json') - -module.exports = { - experiments: { outputModule: true }, - entry: './src/index.ts', // Adjust the entry point to match your project's main file - mode: 'production', - module: { - rules: [ - { - test: /\.tsx?$/, - use: 'ts-loader', - exclude: /node_modules/, - }, - ], - }, - plugins: [ - new webpack.DefinePlugin({ - SETTINGS: JSON.stringify(settingJson), - MODULE: JSON.stringify(`${packageJson.name}/${packageJson.module}`), - }), - ], - output: { - filename: 'index.js', // Adjust the output file name as needed - library: { type: 'module' }, // Specify ESM output format - }, - resolve: { - extensions: ['.ts', '.js'], - }, - optimization: { - minimize: false, - }, - // Add loaders and other configuration as needed for your project -} diff --git a/extensions/model-extension/package.json b/extensions/model-extension/package.json index ca563ff9f..02e9174fa 100644 --- a/extensions/model-extension/package.json +++ b/extensions/model-extension/package.json @@ -2,29 +2,19 @@ "name": "@janhq/model-extension", "productName": "Model Management", "version": "1.0.35", - "description": "Model Management Extension provides model exploration and seamless downloads", + "description": "This extension manages model lists, model details, and model configurations", "main": "dist/index.js", "author": "Jan ", "license": "AGPL-3.0", "scripts": { "test": "jest", - "build": "tsc --module commonjs && rollup -c rollup.config.ts --configPlugin @rollup/plugin-typescript --bundleConfigAsCjs", - "build:publish": "rimraf *.tgz --glob && yarn build && npm pack && cpx *.tgz ../../pre-install" + "build": "rolldown -c rolldown.config.mjs", + "build:publish": "rimraf *.tgz --glob || true && yarn build && npm pack && cpx *.tgz ../../pre-install" }, "devDependencies": { - "@rollup/plugin-commonjs": "^25.0.7", - "@rollup/plugin-json": "^6.1.0", - "@rollup/plugin-node-resolve": "^15.2.3", - "@rollup/plugin-replace": "^5.0.5", - "@rollup/plugin-typescript": "^11.1.6", - "@types/pdf-parse": "^1.1.4", "cpx": "^1.5.0", - "download-cli": "^1.1.1", "rimraf": "^3.0.2", - "rollup": "^2.38.5", - "rollup-plugin-define": "^1.0.1", - "rollup-plugin-sourcemaps": "^0.6.3", - "rollup-plugin-typescript2": "^0.36.0", + "rolldown": "1.0.0-beta.1", "run-script-os": "^1.1.6", "ts-loader": "^9.5.0", "typescript": "5.3.3" @@ -35,9 +25,13 @@ "README.md" ], "dependencies": { - "@janhq/core": "file:../../core", + "@janhq/core": "../../core/package.tgz", "ky": "^1.7.2", "p-queue": "^8.0.1" }, - "bundleDependencies": [] + "bundleDependencies": [], + "installConfig": { + "hoistingLimits": "workspaces" + }, + "packageManager": "yarn@4.5.3" } diff --git a/extensions/model-extension/rolldown.config.mjs b/extensions/model-extension/rolldown.config.mjs new file mode 100644 index 000000000..0e4c866fe --- /dev/null +++ b/extensions/model-extension/rolldown.config.mjs @@ -0,0 +1,16 @@ +import { defineConfig } from 'rolldown' +import settingJson from './resources/settings.json' with { type: 'json' } + +export default defineConfig({ + input: 'src/index.ts', + output: { + format: 'esm', + file: 'dist/index.js', + }, + platform: 'browser', + define: { + SETTINGS: JSON.stringify(settingJson), + API_URL: JSON.stringify('http://127.0.0.1:39291'), + SOCKET_URL: JSON.stringify('ws://127.0.0.1:39291'), + }, +}) diff --git a/extensions/model-extension/rollup.config.ts b/extensions/model-extension/rollup.config.ts deleted file mode 100644 index 64e62480f..000000000 --- a/extensions/model-extension/rollup.config.ts +++ /dev/null @@ -1,48 +0,0 @@ -import resolve from '@rollup/plugin-node-resolve' -import sourceMaps from 'rollup-plugin-sourcemaps' -import typescript from 'rollup-plugin-typescript2' -import json from '@rollup/plugin-json' -import replace from '@rollup/plugin-replace' -import commonjs from '@rollup/plugin-commonjs' -const settingJson = require('./resources/settings.json') -const packageJson = require('./package.json') - -export default [ - { - input: `src/index.ts`, - output: [{ file: packageJson.main, format: 'es', sourcemap: true }], - // Indicate here external modules you don't wanna include in your bundle (i.e.: 'lodash') - external: [], - watch: { - include: 'src/**', - }, - plugins: [ - replace({ - preventAssignment: true, - SETTINGS: JSON.stringify(settingJson), - API_URL: JSON.stringify('http://127.0.0.1:39291'), - SOCKET_URL: JSON.stringify('ws://127.0.0.1:39291'), - }), - // Allow json resolution - json(), - // Compile TypeScript files - typescript({ - useTsconfigDeclarationDir: true, - exclude: ['**/__tests__', '**/*.test.ts'], - }), - // Compile TypeScript files - // Allow bundling cjs modules (unlike webpack, rollup doesn't understand cjs) - commonjs(), - // Allow node_modules resolution, so you can use 'external' to control - // which external modules to include in the bundle - // https://github.com/rollup/rollup-plugin-node-resolve#usage - resolve({ - extensions: ['.js', '.ts', '.svelte'], - browser: true, - }), - - // Resolve source maps to the original source - sourceMaps(), - ], - }, -] diff --git a/extensions/model-extension/src/@types/global.d.ts b/extensions/model-extension/src/@types/global.d.ts index bff3811e3..92d9df09b 100644 --- a/extensions/model-extension/src/@types/global.d.ts +++ b/extensions/model-extension/src/@types/global.d.ts @@ -1,15 +1,13 @@ -export {} -declare global { - declare const NODE: string - declare const API_URL: string - declare const SOCKET_URL: string +declare const NODE: string +declare const API_URL: string +declare const SOCKET_URL: string +declare const SETTINGS: SettingComponentProps[] - interface Core { - api: APIFunctions - events: EventEmitter - } - interface Window { - core?: Core | undefined - electronAPI?: any | undefined - } +interface Core { + api: APIFunctions + events: EventEmitter +} +interface Window { + core?: Core | undefined + electronAPI?: any | undefined } diff --git a/extensions/model-extension/src/index.ts b/extensions/model-extension/src/index.ts index e29084bc2..832f279f9 100644 --- a/extensions/model-extension/src/index.ts +++ b/extensions/model-extension/src/index.ts @@ -18,8 +18,6 @@ import { downloadModel } from './legacy/download' import { systemInformation } from '@janhq/core' import { deleteModelFiles } from './legacy/delete' -declare const SETTINGS: Array - export enum Settings { huggingfaceToken = 'hugging-face-access-token', } diff --git a/extensions/monitoring-extension/package.json b/extensions/monitoring-extension/package.json index e728b4629..105e886b6 100644 --- a/extensions/monitoring-extension/package.json +++ b/extensions/monitoring-extension/package.json @@ -8,36 +8,29 @@ "author": "Jan ", "license": "AGPL-3.0", "scripts": { - "build": "tsc --module commonjs && rollup -c rollup.config.ts && npm run download-artifacts", + "build": "rolldown -c rolldown.config.mjs && yarn download-artifacts", "download-artifacts": "run-script-os && cpx \"bin/**\" \"dist/bin\"", "download-artifacts:darwin": "echo 'No artifacts to download for darwin'", "download-artifacts:win32": "download.bat", "download-artifacts:linux": "download https://catalog.jan.ai/vulkaninfo -o ./bin && chmod +x ./bin/vulkaninfo", - "build:publish": "rimraf *.tgz --glob && yarn build && npm pack && cpx *.tgz ../../pre-install" + "build:publish": "rimraf *.tgz --glob || true && yarn build && npm pack && cpx *.tgz ../../pre-install" }, "exports": { ".": "./dist/index.js", "./main": "./dist/node/index.cjs.js" }, "devDependencies": { - "@rollup/plugin-commonjs": "^25.0.7", - "@rollup/plugin-json": "^6.1.0", - "@rollup/plugin-node-resolve": "^15.2.3", "@types/node": "^20.11.4", "@types/node-os-utils": "^1.3.4", - "run-script-os": "^1.1.6", "cpx": "^1.5.0", + "download-cli": "^1.1.1", "rimraf": "^3.0.2", - "rollup": "^2.38.5", - "rollup-plugin-define": "^1.0.1", - "rollup-plugin-sourcemaps": "^0.6.3", - "rollup-plugin-typescript2": "^0.36.0", - "typescript": "^5.3.3", - "download-cli": "^1.1.1" + "rolldown": "1.0.0-beta.1", + "run-script-os": "^1.1.6", + "typescript": "^5.3.3" }, "dependencies": { - "@janhq/core": "file:../../core", - "@rollup/plugin-replace": "^5.0.5", + "@janhq/core": "../../core/package.tgz", "node-os-utils": "^1.3.7" }, "files": [ @@ -48,5 +41,9 @@ "bundleDependencies": [ "node-os-utils", "@janhq/core" - ] + ], + "installConfig": { + "hoistingLimits": "workspaces" + }, + "packageManager": "yarn@4.5.3" } diff --git a/extensions/monitoring-extension/rolldown.config.mjs b/extensions/monitoring-extension/rolldown.config.mjs new file mode 100644 index 000000000..3533e052b --- /dev/null +++ b/extensions/monitoring-extension/rolldown.config.mjs @@ -0,0 +1,32 @@ +import { defineConfig } from 'rolldown' +import packageJson from './package.json' with { type: 'json' } +import settingJson from './resources/settings.json' with { type: 'json' } + +export default defineConfig([ + { + input: 'src/index.ts', + output: { + format: 'esm', + file: 'dist/index.js', + }, + platform: 'browser', + define: { + NODE: JSON.stringify(`${packageJson.name}/${packageJson.node}`), + SETTINGS: JSON.stringify(settingJson), + }, + }, + { + input: 'src/node/index.ts', + external: ['@janhq/core/node'], + output: { + format: 'cjs', + file: 'dist/node/index.cjs.js', + sourcemap: false, + inlineDynamicImports: true, + }, + resolve: { + extensions: ['.js', '.ts', '.json'], + }, + platform: 'node', + }, +]) diff --git a/extensions/monitoring-extension/rollup.config.ts b/extensions/monitoring-extension/rollup.config.ts deleted file mode 100644 index b054d6291..000000000 --- a/extensions/monitoring-extension/rollup.config.ts +++ /dev/null @@ -1,71 +0,0 @@ -import resolve from '@rollup/plugin-node-resolve' -import commonjs from '@rollup/plugin-commonjs' -import sourceMaps from 'rollup-plugin-sourcemaps' -import typescript from 'rollup-plugin-typescript2' -import json from '@rollup/plugin-json' -import replace from '@rollup/plugin-replace' -const settingJson = require('./resources/settings.json') -const packageJson = require('./package.json') - -export default [ - { - input: `src/index.ts`, - output: [{ file: packageJson.main, format: 'es', sourcemap: true }], - // Indicate here external modules you don't wanna include in your bundle (i.e.: 'lodash') - external: [], - watch: { - include: 'src/**', - }, - plugins: [ - replace({ - preventAssignment: true, - NODE: JSON.stringify(`${packageJson.name}/${packageJson.node}`), - SETTINGS: JSON.stringify(settingJson), - }), - // Allow json resolution - json(), - // Compile TypeScript files - typescript({ useTsconfigDeclarationDir: true }), - // Compile TypeScript files - // Allow bundling cjs modules (unlike webpack, rollup doesn't understand cjs) - commonjs(), - // Allow node_modules resolution, so you can use 'external' to control - // which external modules to include in the bundle - // https://github.com/rollup/rollup-plugin-node-resolve#usage - resolve({ - extensions: ['.js', '.ts', '.svelte'], - }), - - // Resolve source maps to the original source - sourceMaps(), - ], - }, - { - input: `src/node/index.ts`, - output: [ - { file: 'dist/node/index.cjs.js', format: 'cjs', sourcemap: true }, - ], - // Indicate here external modules you don't wanna include in your bundle (i.e.: 'lodash') - external: ['@janhq/core/node'], - watch: { - include: 'src/node/**', - }, - plugins: [ - // Allow json resolution - json(), - // Compile TypeScript files - typescript({ useTsconfigDeclarationDir: true }), - // Allow bundling cjs modules (unlike webpack, rollup doesn't understand cjs) - commonjs(), - // Allow node_modules resolution, so you can use 'external' to control - // which external modules to include in the bundle - // https://github.com/rollup/rollup-plugin-node-resolve#usage - resolve({ - extensions: ['.ts', '.js', '.json'], - }), - - // Resolve source maps to the original source - sourceMaps(), - ], - }, -] diff --git a/extensions/monitoring-extension/src/@types/global.d.ts b/extensions/monitoring-extension/src/@types/global.d.ts index dfa96a0b1..7536fabd8 100644 --- a/extensions/monitoring-extension/src/@types/global.d.ts +++ b/extensions/monitoring-extension/src/@types/global.d.ts @@ -1,4 +1,5 @@ declare const NODE: string +declare const SETTINGS: SettingComponentProps[] type CpuGpuInfo = { cpu: { diff --git a/extensions/monitoring-extension/src/index.ts b/extensions/monitoring-extension/src/index.ts index eca71326e..5616c70a8 100644 --- a/extensions/monitoring-extension/src/index.ts +++ b/extensions/monitoring-extension/src/index.ts @@ -7,8 +7,6 @@ import { executeOnMain, } from '@janhq/core' -declare const SETTINGS: Array - enum Settings { logEnabled = 'log-enabled', logCleaningInterval = 'log-cleaning-interval', diff --git a/extensions/package.json b/extensions/package.json index b5b34bf79..df9dec545 100644 --- a/extensions/package.json +++ b/extensions/package.json @@ -3,9 +3,10 @@ "workspaces": { "packages": [ "**" - ], - "nohoist": [ - "**" ] - } + }, + "installConfig": { + "hoistingLimits": "workspaces" + }, + "packageManager": "yarn@4.5.3" } diff --git a/extensions/tensorrt-llm-extension/package.json b/extensions/tensorrt-llm-extension/package.json index 7a7ef6ef0..1cc098dde 100644 --- a/extensions/tensorrt-llm-extension/package.json +++ b/extensions/tensorrt-llm-extension/package.json @@ -23,42 +23,32 @@ "provider": "nitro-tensorrt-llm", "scripts": { "test": "jest", - "build": "tsc --module commonjs && rollup -c rollup.config.ts", - "build:publish:win32": "rimraf *.tgz --glob && yarn build && cpx \"bin/**\" \"dist/bin\" && npm pack && cpx *.tgz ../../pre-install", - "build:publish:linux": "rimraf *.tgz --glob && yarn build && cpx \"bin/**\" \"dist/bin\" && npm pack && cpx *.tgz ../../pre-install", - "build:publish:darwin": "rimraf *.tgz --glob && yarn build && cpx \"bin/**\" \"dist/bin\" && npm pack && cpx *.tgz ../../pre-install", - "build:publish": "run-script-os" + "build": "rolldown -c rolldown.config.mjs", + "build:publish": "rimraf *.tgz --glob || true && yarn build && cpx \"bin/**\" \"dist/bin\" && npm pack && cpx *.tgz ../../pre-install" }, "exports": { ".": "./dist/index.js", "./main": "./dist/node/index.cjs.js" }, "devDependencies": { - "@rollup/plugin-commonjs": "^25.0.7", - "@rollup/plugin-json": "^6.1.0", - "@rollup/plugin-node-resolve": "^15.2.3", - "@rollup/plugin-replace": "^5.0.5", "@types/decompress": "4.2.7", + "@types/jest": "^29.5.12", "@types/node": "^20.11.4", "@types/os-utils": "^0.0.4", "@types/tcp-port-used": "^1.0.4", "cpx": "^1.5.0", "download-cli": "^1.1.1", - "rimraf": "^3.0.2", - "rollup": "^2.38.5", - "rollup-plugin-define": "^1.0.1", - "rollup-plugin-sourcemaps": "^0.6.3", - "rollup-plugin-typescript2": "^0.36.0", - "run-script-os": "^1.1.6", - "typescript": "^5.2.2", - "@types/jest": "^29.5.12", "jest": "^29.7.0", "jest-junit": "^16.0.0", "jest-runner": "^29.7.0", - "ts-jest": "^29.2.5" + "rimraf": "^3.0.2", + "rolldown": "1.0.0-beta.1", + "run-script-os": "^1.1.6", + "ts-jest": "^29.2.5", + "typescript": "^5.2.2" }, "dependencies": { - "@janhq/core": "file:../../core", + "@janhq/core": "../../core/package.tgz", "decompress": "^4.2.1", "fetch-retry": "^5.0.6", "rxjs": "^7.8.1", @@ -80,5 +70,9 @@ "decompress", "@janhq/core", "terminate" - ] + ], + "installConfig": { + "hoistingLimits": "workspaces" + }, + "packageManager": "yarn@4.5.3" } diff --git a/extensions/tensorrt-llm-extension/rolldown.config.mjs b/extensions/tensorrt-llm-extension/rolldown.config.mjs new file mode 100644 index 000000000..bb02c785b --- /dev/null +++ b/extensions/tensorrt-llm-extension/rolldown.config.mjs @@ -0,0 +1,59 @@ +import { defineConfig } from 'rolldown' +import packageJson from './package.json' with { type: 'json' } +import modelsJson from './resources/models.json' with { type: 'json' } + +export default defineConfig([ + { + input: 'src/index.ts', + output: { + format: 'esm', + file: 'dist/index.js', + }, + platform: 'browser', + define: { + MODELS: JSON.stringify(modelsJson), + TENSORRT_VERSION: JSON.stringify(packageJson.tensorrtVersion), + PROVIDER: JSON.stringify(packageJson.provider), + DOWNLOAD_RUNNER_URL: + process.platform === 'win32' + ? JSON.stringify( + 'https://github.com/janhq/cortex.tensorrt-llm/releases/download/windows-v-tensorrt-llm-v0.7.1/nitro-windows-v-tensorrt-llm-v0.7.1-amd64-all-arch.tar.gz' + ) + : JSON.stringify( + 'https://github.com/janhq/cortex.tensorrt-llm/releases/download/linux-v/nitro-linux-v-amd64-tensorrt-llm-.tar.gz' + ), + NODE: JSON.stringify(`${packageJson.name}/${packageJson.node}`), + INFERENCE_URL: JSON.stringify( + process.env.INFERENCE_URL || + `${packageJson.config?.protocol ?? 'http'}://${packageJson.config?.host}:${packageJson.config?.port}/v1/chat/completions` + ), + COMPATIBILITY: JSON.stringify(packageJson.compatibility), + }, + }, + { + input: 'src/node/index.ts', + external: ['@janhq/core/node'], + output: { + format: 'cjs', + file: 'dist/node/index.cjs.js', + sourcemap: false, + inlineDynamicImports: true, + }, + replace: { + TENSORRT_VERSION: JSON.stringify(packageJson.tensorrtVersion), + PROVIDER: JSON.stringify(packageJson.provider), + LOAD_MODEL_URL: JSON.stringify( + `${packageJson.config?.protocol ?? 'http'}://${packageJson.config?.host}:${packageJson.config?.port}/inferences/tensorrtllm/loadmodel` + ), + TERMINATE_ENGINE_URL: JSON.stringify( + `${packageJson.config?.protocol ?? 'http'}://${packageJson.config?.host}:${packageJson.config?.port}/processmanager/destroy` + ), + ENGINE_HOST: JSON.stringify(packageJson.config?.host ?? '127.0.0.1'), + ENGINE_PORT: JSON.stringify(packageJson.config?.port ?? '3928'), + }, + resolve: { + extensions: ['.js', '.ts', '.json'], + }, + platform: 'node', + }, +]) diff --git a/extensions/tensorrt-llm-extension/rollup.config.ts b/extensions/tensorrt-llm-extension/rollup.config.ts deleted file mode 100644 index 50b4350e7..000000000 --- a/extensions/tensorrt-llm-extension/rollup.config.ts +++ /dev/null @@ -1,79 +0,0 @@ -import resolve from '@rollup/plugin-node-resolve' -import commonjs from '@rollup/plugin-commonjs' -import sourceMaps from 'rollup-plugin-sourcemaps' -import typescript from 'rollup-plugin-typescript2' -import json from '@rollup/plugin-json' -import replace from '@rollup/plugin-replace' -const packageJson = require('./package.json') -const modelsJson = require('./resources/models.json') - -export default [ - { - input: `src/index.ts`, - output: [{ file: packageJson.main, format: 'es', sourcemap: true }], - watch: { - include: 'src/**', - }, - plugins: [ - replace({ - preventAssignment: true, - MODELS: JSON.stringify(modelsJson), - TENSORRT_VERSION: JSON.stringify(packageJson.tensorrtVersion), - PROVIDER: JSON.stringify(packageJson.provider), - DOWNLOAD_RUNNER_URL: - process.platform === 'win32' - ? JSON.stringify( - 'https://github.com/janhq/cortex.tensorrt-llm/releases/download/windows-v-tensorrt-llm-v0.7.1/nitro-windows-v-tensorrt-llm-v0.7.1-amd64-all-arch.tar.gz' - ) - : JSON.stringify( - 'https://github.com/janhq/cortex.tensorrt-llm/releases/download/linux-v/nitro-linux-v-amd64-tensorrt-llm-.tar.gz' - ), - NODE: JSON.stringify(`${packageJson.name}/${packageJson.node}`), - INFERENCE_URL: JSON.stringify( - process.env.INFERENCE_URL || - `${packageJson.config?.protocol ?? 'http'}://${packageJson.config?.host}:${packageJson.config?.port}/v1/chat/completions` - ), - COMPATIBILITY: JSON.stringify(packageJson.compatibility), - }), - json(), - typescript({ useTsconfigDeclarationDir: true }), - commonjs(), - resolve({ - extensions: ['.js', '.ts', '.svelte'], - }), - sourceMaps(), - ], - }, - { - input: `src/node/index.ts`, - output: [ - { file: 'dist/node/index.cjs.js', format: 'cjs', sourcemap: true }, - ], - external: ['@janhq/core/node'], - watch: { - include: 'src/node/**', - }, - plugins: [ - replace({ - preventAssignment: true, - TENSORRT_VERSION: JSON.stringify(packageJson.tensorrtVersion), - PROVIDER: JSON.stringify(packageJson.provider), - LOAD_MODEL_URL: JSON.stringify( - `${packageJson.config?.protocol ?? 'http'}://${packageJson.config?.host}:${packageJson.config?.port}/inferences/tensorrtllm/loadmodel` - ), - TERMINATE_ENGINE_URL: JSON.stringify( - `${packageJson.config?.protocol ?? 'http'}://${packageJson.config?.host}:${packageJson.config?.port}/processmanager/destroy` - ), - ENGINE_HOST: JSON.stringify(packageJson.config?.host ?? '127.0.0.1'), - ENGINE_PORT: JSON.stringify(packageJson.config?.port ?? '3928'), - }), - json(), - typescript({ useTsconfigDeclarationDir: true }), - commonjs(), - resolve({ - extensions: ['.ts', '.js', '.json'], - }), - sourceMaps(), - ], - }, -] diff --git a/extensions/turbo.json b/extensions/turbo.json deleted file mode 100644 index b2e876d58..000000000 --- a/extensions/turbo.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "$schema": "https://turbo.build/schema.json", - "pipeline": { - "build": { - "dependsOn": ["^build"], - "outputs": ["dist/**"] - }, - "build:publish": { - "dependsOn": ["build"], - "outputs": ["**.tgz"] - }, - "dev": { - "cache": false - }, - "type-check": {} - } -} diff --git a/extensions/yarn.lock b/extensions/yarn.lock new file mode 100644 index 000000000..fd5377275 --- /dev/null +++ b/extensions/yarn.lock @@ -0,0 +1,8510 @@ +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + +__metadata: + version: 8 + cacheKey: 10c0 + +"@ampproject/remapping@npm:^2.2.0": + version: 2.3.0 + resolution: "@ampproject/remapping@npm:2.3.0" + dependencies: + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: 10c0/81d63cca5443e0f0c72ae18b544cc28c7c0ec2cea46e7cb888bb0e0f411a1191d0d6b7af798d54e30777d8d1488b2ec0732aac2be342d3d7d3ffd271c6f489ed + languageName: node + linkType: hard + +"@anthropic-ai/sdk@npm:^0.9.1": + version: 0.9.1 + resolution: "@anthropic-ai/sdk@npm:0.9.1" + dependencies: + "@types/node": "npm:^18.11.18" + "@types/node-fetch": "npm:^2.6.4" + abort-controller: "npm:^3.0.0" + agentkeepalive: "npm:^4.2.1" + digest-fetch: "npm:^1.3.0" + form-data-encoder: "npm:1.7.2" + formdata-node: "npm:^4.3.2" + node-fetch: "npm:^2.6.7" + web-streams-polyfill: "npm:^3.2.1" + checksum: 10c0/de00ec551a5731a30254e9a3a3ed76f05c0865da6cddf32d4010659f72ca2d25985dff7173af850f92ede1e3695e00105f9689aeb875f0e82dc93f1597be0d05 + languageName: node + linkType: hard + +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.25.9, @babel/code-frame@npm:^7.26.0, @babel/code-frame@npm:^7.26.2": + version: 7.26.2 + resolution: "@babel/code-frame@npm:7.26.2" + dependencies: + "@babel/helper-validator-identifier": "npm:^7.25.9" + js-tokens: "npm:^4.0.0" + picocolors: "npm:^1.0.0" + checksum: 10c0/7d79621a6849183c415486af99b1a20b84737e8c11cd55b6544f688c51ce1fd710e6d869c3dd21232023da272a79b91efb3e83b5bc2dc65c1187c5fcd1b72ea8 + languageName: node + linkType: hard + +"@babel/compat-data@npm:^7.25.9": + version: 7.26.3 + resolution: "@babel/compat-data@npm:7.26.3" + checksum: 10c0/d63e71845c34dfad8d7ff8c15b562e620dbf60e68e3abfa35681d24d612594e8e5ec9790d831a287ecd79ce00f48e7ffddc85c5ce94af7242d45917b9c1a5f90 + languageName: node + linkType: hard + +"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.23.9": + version: 7.26.0 + resolution: "@babel/core@npm:7.26.0" + dependencies: + "@ampproject/remapping": "npm:^2.2.0" + "@babel/code-frame": "npm:^7.26.0" + "@babel/generator": "npm:^7.26.0" + "@babel/helper-compilation-targets": "npm:^7.25.9" + "@babel/helper-module-transforms": "npm:^7.26.0" + "@babel/helpers": "npm:^7.26.0" + "@babel/parser": "npm:^7.26.0" + "@babel/template": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" + "@babel/types": "npm:^7.26.0" + convert-source-map: "npm:^2.0.0" + debug: "npm:^4.1.0" + gensync: "npm:^1.0.0-beta.2" + json5: "npm:^2.2.3" + semver: "npm:^6.3.1" + checksum: 10c0/91de73a7ff5c4049fbc747930aa039300e4d2670c2a91f5aa622f1b4868600fc89b01b6278385fbcd46f9574186fa3d9b376a9e7538e50f8d118ec13cfbcb63e + languageName: node + linkType: hard + +"@babel/generator@npm:^7.26.0, @babel/generator@npm:^7.26.3, @babel/generator@npm:^7.7.2": + version: 7.26.3 + resolution: "@babel/generator@npm:7.26.3" + dependencies: + "@babel/parser": "npm:^7.26.3" + "@babel/types": "npm:^7.26.3" + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.25" + jsesc: "npm:^3.0.2" + checksum: 10c0/54f260558e3e4ec8942da3cde607c35349bb983c3a7c5121243f96893fba3e8cd62e1f1773b2051f936f8c8a10987b758d5c7d76dbf2784e95bb63ab4843fa00 + languageName: node + linkType: hard + +"@babel/helper-compilation-targets@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-compilation-targets@npm:7.25.9" + dependencies: + "@babel/compat-data": "npm:^7.25.9" + "@babel/helper-validator-option": "npm:^7.25.9" + browserslist: "npm:^4.24.0" + lru-cache: "npm:^5.1.1" + semver: "npm:^6.3.1" + checksum: 10c0/a6b26a1e4222e69ef8e62ee19374308f060b007828bc11c65025ecc9e814aba21ff2175d6d3f8bf53c863edd728ee8f94ba7870f8f90a37d39552ad9933a8aaa + languageName: node + linkType: hard + +"@babel/helper-module-imports@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-module-imports@npm:7.25.9" + dependencies: + "@babel/traverse": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" + checksum: 10c0/078d3c2b45d1f97ffe6bb47f61961be4785d2342a4156d8b42c92ee4e1b7b9e365655dd6cb25329e8fe1a675c91eeac7e3d04f0c518b67e417e29d6e27b6aa70 + languageName: node + linkType: hard + +"@babel/helper-module-transforms@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/helper-module-transforms@npm:7.26.0" + dependencies: + "@babel/helper-module-imports": "npm:^7.25.9" + "@babel/helper-validator-identifier": "npm:^7.25.9" + "@babel/traverse": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/ee111b68a5933481d76633dad9cdab30c41df4479f0e5e1cc4756dc9447c1afd2c9473b5ba006362e35b17f4ebddd5fca090233bef8dfc84dca9d9127e56ec3a + languageName: node + linkType: hard + +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.25.9, @babel/helper-plugin-utils@npm:^7.8.0": + version: 7.25.9 + resolution: "@babel/helper-plugin-utils@npm:7.25.9" + checksum: 10c0/483066a1ba36ff16c0116cd24f93de05de746a603a777cd695ac7a1b034928a65a4ecb35f255761ca56626435d7abdb73219eba196f9aa83b6c3c3169325599d + languageName: node + linkType: hard + +"@babel/helper-string-parser@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-string-parser@npm:7.25.9" + checksum: 10c0/7244b45d8e65f6b4338a6a68a8556f2cb161b782343e97281a5f2b9b93e420cad0d9f5773a59d79f61d0c448913d06f6a2358a87f2e203cf112e3c5b53522ee6 + languageName: node + linkType: hard + +"@babel/helper-validator-identifier@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-validator-identifier@npm:7.25.9" + checksum: 10c0/4fc6f830177b7b7e887ad3277ddb3b91d81e6c4a24151540d9d1023e8dc6b1c0505f0f0628ae653601eb4388a8db45c1c14b2c07a9173837aef7e4116456259d + languageName: node + linkType: hard + +"@babel/helper-validator-option@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-validator-option@npm:7.25.9" + checksum: 10c0/27fb195d14c7dcb07f14e58fe77c44eea19a6a40a74472ec05c441478fa0bb49fa1c32b2d64be7a38870ee48ef6601bdebe98d512f0253aea0b39756c4014f3e + languageName: node + linkType: hard + +"@babel/helpers@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/helpers@npm:7.26.0" + dependencies: + "@babel/template": "npm:^7.25.9" + "@babel/types": "npm:^7.26.0" + checksum: 10c0/343333cced6946fe46617690a1d0789346960910225ce359021a88a60a65bc0d791f0c5d240c0ed46cf8cc63b5fd7df52734ff14e43b9c32feae2b61b1647097 + languageName: node + linkType: hard + +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.0, @babel/parser@npm:^7.26.3": + version: 7.26.3 + resolution: "@babel/parser@npm:7.26.3" + dependencies: + "@babel/types": "npm:^7.26.3" + bin: + parser: ./bin/babel-parser.js + checksum: 10c0/48f736374e61cfd10ddbf7b80678514ae1f16d0e88bc793d2b505d73d9b987ea786fc8c2f7ee8f8b8c467df062030eb07fd0eb2168f0f541ca1f542775852cad + languageName: node + linkType: hard + +"@babel/plugin-syntax-async-generators@npm:^7.8.4": + version: 7.8.4 + resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/d13efb282838481348c71073b6be6245b35d4f2f964a8f71e4174f235009f929ef7613df25f8d2338e2d3e44bc4265a9f8638c6aaa136d7a61fe95985f9725c8 + languageName: node + linkType: hard + +"@babel/plugin-syntax-bigint@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-bigint@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/686891b81af2bc74c39013655da368a480f17dd237bf9fbc32048e5865cb706d5a8f65438030da535b332b1d6b22feba336da8fa931f663b6b34e13147d12dde + languageName: node + linkType: hard + +"@babel/plugin-syntax-class-properties@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.12.13" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/95168fa186416195280b1264fb18afcdcdcea780b3515537b766cb90de6ce042d42dd6a204a39002f794ae5845b02afb0fd4861a3308a861204a55e68310a120 + languageName: node + linkType: hard + +"@babel/plugin-syntax-class-static-block@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-class-static-block@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/4464bf9115f4a2d02ce1454411baf9cfb665af1da53709c5c56953e5e2913745b0fcce82982a00463d6facbdd93445c691024e310b91431a1e2f024b158f6371 + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-attributes@npm:^7.24.7": + version: 7.26.0 + resolution: "@babel/plugin-syntax-import-attributes@npm:7.26.0" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e594c185b12bfe0bbe7ca78dfeebe870e6d569a12128cac86f3164a075fe0ff70e25ddbd97fd0782906b91f65560c9dc6957716b7b4a68aba2516c9b7455e352 + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-meta@npm:^7.10.4": + version: 7.10.4 + resolution: "@babel/plugin-syntax-import-meta@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/0b08b5e4c3128523d8e346f8cfc86824f0da2697b1be12d71af50a31aff7a56ceb873ed28779121051475010c28d6146a6bfea8518b150b71eeb4e46190172ee + languageName: node + linkType: hard + +"@babel/plugin-syntax-json-strings@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-json-strings@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e98f31b2ec406c57757d115aac81d0336e8434101c224edd9a5c93cefa53faf63eacc69f3138960c8b25401315af03df37f68d316c151c4b933136716ed6906e + languageName: node + linkType: hard + +"@babel/plugin-syntax-jsx@npm:^7.7.2": + version: 7.25.9 + resolution: "@babel/plugin-syntax-jsx@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/d56597aff4df39d3decda50193b6dfbe596ca53f437ff2934622ce19a743bf7f43492d3fb3308b0289f5cee2b825d99ceb56526a2b9e7b68bf04901546c5618c + languageName: node + linkType: hard + +"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4": + version: 7.10.4 + resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/2594cfbe29411ad5bc2ad4058de7b2f6a8c5b86eda525a993959438615479e59c012c14aec979e538d60a584a1a799b60d1b8942c3b18468cb9d99b8fd34cd0b + languageName: node + linkType: hard + +"@babel/plugin-syntax-nullish-coalescing-operator@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/2024fbb1162899094cfc81152449b12bd0cc7053c6d4bda8ac2852545c87d0a851b1b72ed9560673cbf3ef6248257262c3c04aabf73117215c1b9cc7dd2542ce + languageName: node + linkType: hard + +"@babel/plugin-syntax-numeric-separator@npm:^7.10.4": + version: 7.10.4 + resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/c55a82b3113480942c6aa2fcbe976ff9caa74b7b1109ff4369641dfbc88d1da348aceb3c31b6ed311c84d1e7c479440b961906c735d0ab494f688bf2fd5b9bb9 + languageName: node + linkType: hard + +"@babel/plugin-syntax-object-rest-spread@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-object-rest-spread@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/ee1eab52ea6437e3101a0a7018b0da698545230015fc8ab129d292980ec6dff94d265e9e90070e8ae5fed42f08f1622c14c94552c77bcac784b37f503a82ff26 + languageName: node + linkType: hard + +"@babel/plugin-syntax-optional-catch-binding@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-optional-catch-binding@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/27e2493ab67a8ea6d693af1287f7e9acec206d1213ff107a928e85e173741e1d594196f99fec50e9dde404b09164f39dec5864c767212154ffe1caa6af0bc5af + languageName: node + linkType: hard + +"@babel/plugin-syntax-optional-chaining@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-optional-chaining@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/46edddf2faa6ebf94147b8e8540dfc60a5ab718e2de4d01b2c0bdf250a4d642c2bd47cbcbb739febcb2bf75514dbcefad3c52208787994b8d0f8822490f55e81 + languageName: node + linkType: hard + +"@babel/plugin-syntax-private-property-in-object@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-private-property-in-object@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/69822772561706c87f0a65bc92d0772cea74d6bc0911537904a676d5ff496a6d3ac4e05a166d8125fce4a16605bace141afc3611074e170a994e66e5397787f3 + languageName: node + linkType: hard + +"@babel/plugin-syntax-top-level-await@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/14bf6e65d5bc1231ffa9def5f0ef30b19b51c218fcecaa78cd1bdf7939dfdf23f90336080b7f5196916368e399934ce5d581492d8292b46a2fb569d8b2da106f + languageName: node + linkType: hard + +"@babel/plugin-syntax-typescript@npm:^7.7.2": + version: 7.25.9 + resolution: "@babel/plugin-syntax-typescript@npm:7.25.9" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.25.9" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/5192ebe11bd46aea68b7a60fd9555465c59af7e279e71126788e59121b86e00b505816685ab4782abe159232b0f73854e804b54449820b0d950b397ee158caa2 + languageName: node + linkType: hard + +"@babel/template@npm:^7.25.9, @babel/template@npm:^7.3.3": + version: 7.25.9 + resolution: "@babel/template@npm:7.25.9" + dependencies: + "@babel/code-frame": "npm:^7.25.9" + "@babel/parser": "npm:^7.25.9" + "@babel/types": "npm:^7.25.9" + checksum: 10c0/ebe677273f96a36c92cc15b7aa7b11cc8bc8a3bb7a01d55b2125baca8f19cae94ff3ce15f1b1880fb8437f3a690d9f89d4e91f16fc1dc4d3eb66226d128983ab + languageName: node + linkType: hard + +"@babel/traverse@npm:^7.25.9": + version: 7.26.4 + resolution: "@babel/traverse@npm:7.26.4" + dependencies: + "@babel/code-frame": "npm:^7.26.2" + "@babel/generator": "npm:^7.26.3" + "@babel/parser": "npm:^7.26.3" + "@babel/template": "npm:^7.25.9" + "@babel/types": "npm:^7.26.3" + debug: "npm:^4.3.1" + globals: "npm:^11.1.0" + checksum: 10c0/cf25d0eda9505daa0f0832ad786b9e28c9d967e823aaf7fbe425250ab198c656085495aa6bed678b27929e095c84eea9fd778b851a31803da94c9bc4bf4eaef7 + languageName: node + linkType: hard + +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.0, @babel/types@npm:^7.26.3, @babel/types@npm:^7.3.3": + version: 7.26.3 + resolution: "@babel/types@npm:7.26.3" + dependencies: + "@babel/helper-string-parser": "npm:^7.25.9" + "@babel/helper-validator-identifier": "npm:^7.25.9" + checksum: 10c0/966c5242c5e55c8704bf7a7418e7be2703a0afa4d19a8480999d5a4ef13d095dd60686615fe5983cb7593b4b06ba3a7de8d6ca501c1d78bdd233a10d90be787b + languageName: node + linkType: hard + +"@bcoe/v8-coverage@npm:^0.2.3": + version: 0.2.3 + resolution: "@bcoe/v8-coverage@npm:0.2.3" + checksum: 10c0/6b80ae4cb3db53f486da2dc63b6e190a74c8c3cca16bb2733f234a0b6a9382b09b146488ae08e2b22cf00f6c83e20f3e040a2f7894f05c045c946d6a090b1d52 + languageName: node + linkType: hard + +"@emnapi/core@npm:^1.3.1": + version: 1.3.1 + resolution: "@emnapi/core@npm:1.3.1" + dependencies: + "@emnapi/wasi-threads": "npm:1.0.1" + tslib: "npm:^2.4.0" + checksum: 10c0/d3be1044ad704e2c486641bc18908523490f28c7d38bd12d9c1d4ce37d39dae6c4aecd2f2eaf44c6e3bd90eaf04e0591acc440b1b038cdf43cce078a355a0ea0 + languageName: node + linkType: hard + +"@emnapi/runtime@npm:^1.3.1": + version: 1.3.1 + resolution: "@emnapi/runtime@npm:1.3.1" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/060ffede50f1b619c15083312b80a9e62a5b0c87aa8c1b54854c49766c9d69f8d1d3d87bd963a647071263a320db41b25eaa50b74d6a80dcc763c23dbeaafd6c + languageName: node + linkType: hard + +"@emnapi/wasi-threads@npm:1.0.1": + version: 1.0.1 + resolution: "@emnapi/wasi-threads@npm:1.0.1" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/1e0c8036b8d53e9b07cc9acf021705ef6c86ab6b13e1acda7fffaf541a2d3565072afb92597419173ced9ea14f6bf32fce149106e669b5902b825e8b499e5c6c + languageName: node + linkType: hard + +"@isaacs/cliui@npm:^8.0.2": + version: 8.0.2 + resolution: "@isaacs/cliui@npm:8.0.2" + dependencies: + string-width: "npm:^5.1.2" + string-width-cjs: "npm:string-width@^4.2.0" + strip-ansi: "npm:^7.0.1" + strip-ansi-cjs: "npm:strip-ansi@^6.0.1" + wrap-ansi: "npm:^8.1.0" + wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" + checksum: 10c0/b1bf42535d49f11dc137f18d5e4e63a28c5569de438a221c369483731e9dac9fb797af554e8bf02b6192d1e5eba6e6402cf93900c3d0ac86391d00d04876789e + languageName: node + linkType: hard + +"@isaacs/fs-minipass@npm:^4.0.0": + version: 4.0.1 + resolution: "@isaacs/fs-minipass@npm:4.0.1" + dependencies: + minipass: "npm:^7.0.4" + checksum: 10c0/c25b6dc1598790d5b55c0947a9b7d111cfa92594db5296c3b907e2f533c033666f692a3939eadac17b1c7c40d362d0b0635dc874cbfe3e70db7c2b07cc97a5d2 + languageName: node + linkType: hard + +"@istanbuljs/load-nyc-config@npm:^1.0.0": + version: 1.1.0 + resolution: "@istanbuljs/load-nyc-config@npm:1.1.0" + dependencies: + camelcase: "npm:^5.3.1" + find-up: "npm:^4.1.0" + get-package-type: "npm:^0.1.0" + js-yaml: "npm:^3.13.1" + resolve-from: "npm:^5.0.0" + checksum: 10c0/dd2a8b094887da5a1a2339543a4933d06db2e63cbbc2e288eb6431bd832065df0c099d091b6a67436e71b7d6bf85f01ce7c15f9253b4cbebcc3b9a496165ba42 + languageName: node + linkType: hard + +"@istanbuljs/schema@npm:^0.1.2, @istanbuljs/schema@npm:^0.1.3": + version: 0.1.3 + resolution: "@istanbuljs/schema@npm:0.1.3" + checksum: 10c0/61c5286771676c9ca3eb2bd8a7310a9c063fb6e0e9712225c8471c582d157392c88f5353581c8c9adbe0dff98892317d2fdfc56c3499aa42e0194405206a963a + languageName: node + linkType: hard + +"@janhq/assistant-extension@workspace:assistant-extension": + version: 0.0.0-use.local + resolution: "@janhq/assistant-extension@workspace:assistant-extension" + dependencies: + "@janhq/core": ../../core/package.tgz + "@langchain/community": "npm:0.0.13" + "@types/pdf-parse": "npm:^1.1.4" + cpx: "npm:^1.5.0" + hnswlib-node: "npm:^1.4.2" + langchain: "npm:^0.0.214" + node-gyp: "npm:^11.0.0" + pdf-parse: "npm:^1.1.1" + rimraf: "npm:^3.0.2" + rolldown: "npm:1.0.0-beta.1" + run-script-os: "npm:^1.1.6" + ts-loader: "npm:^9.5.0" + typescript: "npm:^5.3.3" + languageName: unknown + linkType: soft + +"@janhq/conversational-extension@workspace:conversational-extension": + version: 0.0.0-use.local + resolution: "@janhq/conversational-extension@workspace:conversational-extension" + dependencies: + "@janhq/core": ../../core/package.tgz + cpx: "npm:^1.5.0" + ky: "npm:^1.7.2" + p-queue: "npm:^8.0.1" + rimraf: "npm:^3.0.2" + rolldown: "npm:1.0.0-beta.1" + ts-loader: "npm:^9.5.0" + typescript: "npm:^5.7.2" + languageName: unknown + linkType: soft + +"@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Fassistant-extension%40workspace%3Aassistant-extension": + version: 0.1.10 + resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=663527&locator=%40janhq%2Fassistant-extension%40workspace%3Aassistant-extension" + dependencies: + rxjs: "npm:^7.8.1" + ulidx: "npm:^2.3.0" + checksum: 10c0/1297917d8be757142645a76657af16193ea3ac58de53a2cc60142ef7c2a5900b461e84c237da0f13be58f6ce70155d53d1d1745702d8d9fdf8b177a5c67b09b5 + languageName: node + linkType: hard + +"@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Fconversational-extension%40workspace%3Aconversational-extension": + version: 0.1.10 + resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=663527&locator=%40janhq%2Fconversational-extension%40workspace%3Aconversational-extension" + dependencies: + rxjs: "npm:^7.8.1" + ulidx: "npm:^2.3.0" + checksum: 10c0/1297917d8be757142645a76657af16193ea3ac58de53a2cc60142ef7c2a5900b461e84c237da0f13be58f6ce70155d53d1d1745702d8d9fdf8b177a5c67b09b5 + languageName: node + linkType: hard + +"@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Fengine-management-extension%40workspace%3Aengine-management-extension": + version: 0.1.10 + resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=663527&locator=%40janhq%2Fengine-management-extension%40workspace%3Aengine-management-extension" + dependencies: + rxjs: "npm:^7.8.1" + ulidx: "npm:^2.3.0" + checksum: 10c0/1297917d8be757142645a76657af16193ea3ac58de53a2cc60142ef7c2a5900b461e84c237da0f13be58f6ce70155d53d1d1745702d8d9fdf8b177a5c67b09b5 + languageName: node + linkType: hard + +"@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Finference-anthropic-extension%40workspace%3Ainference-anthropic-extension": + version: 0.1.10 + resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=663527&locator=%40janhq%2Finference-anthropic-extension%40workspace%3Ainference-anthropic-extension" + dependencies: + rxjs: "npm:^7.8.1" + ulidx: "npm:^2.3.0" + checksum: 10c0/1297917d8be757142645a76657af16193ea3ac58de53a2cc60142ef7c2a5900b461e84c237da0f13be58f6ce70155d53d1d1745702d8d9fdf8b177a5c67b09b5 + languageName: node + linkType: hard + +"@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Finference-cohere-extension%40workspace%3Ainference-cohere-extension": + version: 0.1.10 + resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=663527&locator=%40janhq%2Finference-cohere-extension%40workspace%3Ainference-cohere-extension" + dependencies: + rxjs: "npm:^7.8.1" + ulidx: "npm:^2.3.0" + checksum: 10c0/1297917d8be757142645a76657af16193ea3ac58de53a2cc60142ef7c2a5900b461e84c237da0f13be58f6ce70155d53d1d1745702d8d9fdf8b177a5c67b09b5 + languageName: node + linkType: hard + +"@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Finference-cortex-extension%40workspace%3Ainference-cortex-extension": + version: 0.1.10 + resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=663527&locator=%40janhq%2Finference-cortex-extension%40workspace%3Ainference-cortex-extension" + dependencies: + rxjs: "npm:^7.8.1" + ulidx: "npm:^2.3.0" + checksum: 10c0/1297917d8be757142645a76657af16193ea3ac58de53a2cc60142ef7c2a5900b461e84c237da0f13be58f6ce70155d53d1d1745702d8d9fdf8b177a5c67b09b5 + languageName: node + linkType: hard + +"@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Finference-groq-extension%40workspace%3Ainference-groq-extension": + version: 0.1.10 + resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=663527&locator=%40janhq%2Finference-groq-extension%40workspace%3Ainference-groq-extension" + dependencies: + rxjs: "npm:^7.8.1" + ulidx: "npm:^2.3.0" + checksum: 10c0/1297917d8be757142645a76657af16193ea3ac58de53a2cc60142ef7c2a5900b461e84c237da0f13be58f6ce70155d53d1d1745702d8d9fdf8b177a5c67b09b5 + languageName: node + linkType: hard + +"@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Finference-martian-extension%40workspace%3Ainference-martian-extension": + version: 0.1.10 + resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=663527&locator=%40janhq%2Finference-martian-extension%40workspace%3Ainference-martian-extension" + dependencies: + rxjs: "npm:^7.8.1" + ulidx: "npm:^2.3.0" + checksum: 10c0/1297917d8be757142645a76657af16193ea3ac58de53a2cc60142ef7c2a5900b461e84c237da0f13be58f6ce70155d53d1d1745702d8d9fdf8b177a5c67b09b5 + languageName: node + linkType: hard + +"@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Finference-mistral-extension%40workspace%3Ainference-mistral-extension": + version: 0.1.10 + resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=663527&locator=%40janhq%2Finference-mistral-extension%40workspace%3Ainference-mistral-extension" + dependencies: + rxjs: "npm:^7.8.1" + ulidx: "npm:^2.3.0" + checksum: 10c0/1297917d8be757142645a76657af16193ea3ac58de53a2cc60142ef7c2a5900b461e84c237da0f13be58f6ce70155d53d1d1745702d8d9fdf8b177a5c67b09b5 + languageName: node + linkType: hard + +"@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Finference-nvidia-extension%40workspace%3Ainference-nvidia-extension": + version: 0.1.10 + resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=663527&locator=%40janhq%2Finference-nvidia-extension%40workspace%3Ainference-nvidia-extension" + dependencies: + rxjs: "npm:^7.8.1" + ulidx: "npm:^2.3.0" + checksum: 10c0/1297917d8be757142645a76657af16193ea3ac58de53a2cc60142ef7c2a5900b461e84c237da0f13be58f6ce70155d53d1d1745702d8d9fdf8b177a5c67b09b5 + languageName: node + linkType: hard + +"@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Finference-openai-extension%40workspace%3Ainference-openai-extension": + version: 0.1.10 + resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=663527&locator=%40janhq%2Finference-openai-extension%40workspace%3Ainference-openai-extension" + dependencies: + rxjs: "npm:^7.8.1" + ulidx: "npm:^2.3.0" + checksum: 10c0/1297917d8be757142645a76657af16193ea3ac58de53a2cc60142ef7c2a5900b461e84c237da0f13be58f6ce70155d53d1d1745702d8d9fdf8b177a5c67b09b5 + languageName: node + linkType: hard + +"@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Finference-openrouter-extension%40workspace%3Ainference-openrouter-extension": + version: 0.1.10 + resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=663527&locator=%40janhq%2Finference-openrouter-extension%40workspace%3Ainference-openrouter-extension" + dependencies: + rxjs: "npm:^7.8.1" + ulidx: "npm:^2.3.0" + checksum: 10c0/1297917d8be757142645a76657af16193ea3ac58de53a2cc60142ef7c2a5900b461e84c237da0f13be58f6ce70155d53d1d1745702d8d9fdf8b177a5c67b09b5 + languageName: node + linkType: hard + +"@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Finference-triton-trt-llm-extension%40workspace%3Ainference-triton-trtllm-extension": + version: 0.1.10 + resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=663527&locator=%40janhq%2Finference-triton-trt-llm-extension%40workspace%3Ainference-triton-trtllm-extension" + dependencies: + rxjs: "npm:^7.8.1" + ulidx: "npm:^2.3.0" + checksum: 10c0/1297917d8be757142645a76657af16193ea3ac58de53a2cc60142ef7c2a5900b461e84c237da0f13be58f6ce70155d53d1d1745702d8d9fdf8b177a5c67b09b5 + languageName: node + linkType: hard + +"@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Fmodel-extension%40workspace%3Amodel-extension": + version: 0.1.10 + resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=663527&locator=%40janhq%2Fmodel-extension%40workspace%3Amodel-extension" + dependencies: + rxjs: "npm:^7.8.1" + ulidx: "npm:^2.3.0" + checksum: 10c0/1297917d8be757142645a76657af16193ea3ac58de53a2cc60142ef7c2a5900b461e84c237da0f13be58f6ce70155d53d1d1745702d8d9fdf8b177a5c67b09b5 + languageName: node + linkType: hard + +"@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Fmonitoring-extension%40workspace%3Amonitoring-extension": + version: 0.1.10 + resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=663527&locator=%40janhq%2Fmonitoring-extension%40workspace%3Amonitoring-extension" + dependencies: + rxjs: "npm:^7.8.1" + ulidx: "npm:^2.3.0" + checksum: 10c0/1297917d8be757142645a76657af16193ea3ac58de53a2cc60142ef7c2a5900b461e84c237da0f13be58f6ce70155d53d1d1745702d8d9fdf8b177a5c67b09b5 + languageName: node + linkType: hard + +"@janhq/core@file:../../core/package.tgz::locator=%40janhq%2Ftensorrt-llm-extension%40workspace%3Atensorrt-llm-extension": + version: 0.1.10 + resolution: "@janhq/core@file:../../core/package.tgz#../../core/package.tgz::hash=663527&locator=%40janhq%2Ftensorrt-llm-extension%40workspace%3Atensorrt-llm-extension" + dependencies: + rxjs: "npm:^7.8.1" + ulidx: "npm:^2.3.0" + checksum: 10c0/1297917d8be757142645a76657af16193ea3ac58de53a2cc60142ef7c2a5900b461e84c237da0f13be58f6ce70155d53d1d1745702d8d9fdf8b177a5c67b09b5 + languageName: node + linkType: hard + +"@janhq/engine-management-extension@workspace:engine-management-extension": + version: 0.0.0-use.local + resolution: "@janhq/engine-management-extension@workspace:engine-management-extension" + dependencies: + "@janhq/core": ../../core/package.tgz + cpu-instructions: "npm:^0.0.13" + cpx: "npm:^1.5.0" + ky: "npm:^1.7.2" + p-queue: "npm:^8.0.1" + rimraf: "npm:^3.0.2" + rolldown: "npm:^1.0.0-beta.1" + ts-loader: "npm:^9.5.0" + typescript: "npm:^5.3.3" + languageName: unknown + linkType: soft + +"@janhq/inference-anthropic-extension@workspace:inference-anthropic-extension": + version: 0.0.0-use.local + resolution: "@janhq/inference-anthropic-extension@workspace:inference-anthropic-extension" + dependencies: + "@janhq/core": ../../core/package.tgz + cpx: "npm:^1.5.0" + fetch-retry: "npm:^5.0.6" + rimraf: "npm:^3.0.2" + rolldown: "npm:1.0.0-beta.1" + ts-loader: "npm:^9.5.0" + typescript: "npm:^5.7.2" + ulidx: "npm:^2.3.0" + languageName: unknown + linkType: soft + +"@janhq/inference-cohere-extension@workspace:inference-cohere-extension": + version: 0.0.0-use.local + resolution: "@janhq/inference-cohere-extension@workspace:inference-cohere-extension" + dependencies: + "@janhq/core": ../../core/package.tgz + cpx: "npm:^1.5.0" + fetch-retry: "npm:^5.0.6" + rimraf: "npm:^3.0.2" + rolldown: "npm:1.0.0-beta.1" + ts-loader: "npm:^9.5.0" + typescript: "npm:^5.7.2" + ulidx: "npm:^2.3.0" + languageName: unknown + linkType: soft + +"@janhq/inference-cortex-extension@workspace:inference-cortex-extension": + version: 0.0.0-use.local + resolution: "@janhq/inference-cortex-extension@workspace:inference-cortex-extension" + dependencies: + "@janhq/core": ../../core/package.tgz + "@jest/globals": "npm:^29.7.0" + "@types/decompress": "npm:^4.2.7" + "@types/jest": "npm:^29.5.12" + "@types/node": "npm:^20.11.4" + "@types/os-utils": "npm:^0.0.4" + "@types/tcp-port-used": "npm:^1.0.4" + cpx: "npm:^1.5.0" + decompress: "npm:^4.2.1" + download-cli: "npm:^1.1.1" + fetch-retry: "npm:^5.0.6" + jest: "npm:^29.7.0" + ky: "npm:^1.7.2" + p-queue: "npm:^8.0.1" + rimraf: "npm:^3.0.2" + rolldown: "npm:1.0.0-beta.1" + run-script-os: "npm:^1.1.6" + rxjs: "npm:^7.8.1" + tcp-port-used: "npm:^1.0.2" + terminate: "npm:2.6.1" + ts-jest: "npm:^29.1.2" + typescript: "npm:^5.3.3" + ulidx: "npm:^2.3.0" + languageName: unknown + linkType: soft + +"@janhq/inference-groq-extension@workspace:inference-groq-extension": + version: 0.0.0-use.local + resolution: "@janhq/inference-groq-extension@workspace:inference-groq-extension" + dependencies: + "@janhq/core": ../../core/package.tgz + cpx: "npm:^1.5.0" + fetch-retry: "npm:^5.0.6" + rimraf: "npm:^3.0.2" + rolldown: "npm:1.0.0-beta.1" + ts-loader: "npm:^9.5.0" + typescript: "npm:^5.7.2" + ulidx: "npm:^2.3.0" + languageName: unknown + linkType: soft + +"@janhq/inference-martian-extension@workspace:inference-martian-extension": + version: 0.0.0-use.local + resolution: "@janhq/inference-martian-extension@workspace:inference-martian-extension" + dependencies: + "@janhq/core": ../../core/package.tgz + cpx: "npm:^1.5.0" + fetch-retry: "npm:^5.0.6" + rimraf: "npm:^3.0.2" + rolldown: "npm:1.0.0-beta.1" + ts-loader: "npm:^9.5.0" + typescript: "npm:^5.7.2" + ulidx: "npm:^2.3.0" + languageName: unknown + linkType: soft + +"@janhq/inference-mistral-extension@workspace:inference-mistral-extension": + version: 0.0.0-use.local + resolution: "@janhq/inference-mistral-extension@workspace:inference-mistral-extension" + dependencies: + "@janhq/core": ../../core/package.tgz + cpx: "npm:^1.5.0" + fetch-retry: "npm:^5.0.6" + rimraf: "npm:^3.0.2" + rolldown: "npm:1.0.0-beta.1" + ts-loader: "npm:^9.5.0" + typescript: "npm:^5.7.2" + ulidx: "npm:^2.3.0" + languageName: unknown + linkType: soft + +"@janhq/inference-nvidia-extension@workspace:inference-nvidia-extension": + version: 0.0.0-use.local + resolution: "@janhq/inference-nvidia-extension@workspace:inference-nvidia-extension" + dependencies: + "@janhq/core": ../../core/package.tgz + cpx: "npm:^1.5.0" + fetch-retry: "npm:^5.0.6" + rimraf: "npm:^3.0.2" + rolldown: "npm:1.0.0-beta.1" + ts-loader: "npm:^9.5.0" + typescript: "npm:^5.7.2" + ulidx: "npm:^2.3.0" + languageName: unknown + linkType: soft + +"@janhq/inference-openai-extension@workspace:inference-openai-extension": + version: 0.0.0-use.local + resolution: "@janhq/inference-openai-extension@workspace:inference-openai-extension" + dependencies: + "@janhq/core": ../../core/package.tgz + cpx: "npm:^1.5.0" + fetch-retry: "npm:^5.0.6" + rimraf: "npm:^3.0.2" + rolldown: "npm:1.0.0-beta.1" + ts-loader: "npm:^9.5.0" + typescript: "npm:^5.7.2" + ulidx: "npm:^2.3.0" + languageName: unknown + linkType: soft + +"@janhq/inference-openrouter-extension@workspace:inference-openrouter-extension": + version: 0.0.0-use.local + resolution: "@janhq/inference-openrouter-extension@workspace:inference-openrouter-extension" + dependencies: + "@janhq/core": ../../core/package.tgz + cpx: "npm:^1.5.0" + fetch-retry: "npm:^5.0.6" + rimraf: "npm:^3.0.2" + rolldown: "npm:1.0.0-beta.1" + ts-loader: "npm:^9.5.0" + typescript: "npm:^5.7.2" + ulidx: "npm:^2.3.0" + languageName: unknown + linkType: soft + +"@janhq/inference-triton-trt-llm-extension@workspace:inference-triton-trtllm-extension": + version: 0.0.0-use.local + resolution: "@janhq/inference-triton-trt-llm-extension@workspace:inference-triton-trtllm-extension" + dependencies: + "@janhq/core": ../../core/package.tgz + cpx: "npm:^1.5.0" + fetch-retry: "npm:^5.0.6" + rimraf: "npm:^3.0.2" + rolldown: "npm:1.0.0-beta.1" + rxjs: "npm:^7.8.1" + ts-loader: "npm:^9.5.0" + typescript: "npm:^5.7.2" + ulidx: "npm:^2.3.0" + languageName: unknown + linkType: soft + +"@janhq/model-extension@workspace:model-extension": + version: 0.0.0-use.local + resolution: "@janhq/model-extension@workspace:model-extension" + dependencies: + "@janhq/core": ../../core/package.tgz + cpx: "npm:^1.5.0" + ky: "npm:^1.7.2" + p-queue: "npm:^8.0.1" + rimraf: "npm:^3.0.2" + rolldown: "npm:1.0.0-beta.1" + run-script-os: "npm:^1.1.6" + ts-loader: "npm:^9.5.0" + typescript: "npm:5.3.3" + languageName: unknown + linkType: soft + +"@janhq/monitoring-extension@workspace:monitoring-extension": + version: 0.0.0-use.local + resolution: "@janhq/monitoring-extension@workspace:monitoring-extension" + dependencies: + "@janhq/core": ../../core/package.tgz + "@types/node": "npm:^20.11.4" + "@types/node-os-utils": "npm:^1.3.4" + cpx: "npm:^1.5.0" + download-cli: "npm:^1.1.1" + node-os-utils: "npm:^1.3.7" + rimraf: "npm:^3.0.2" + rolldown: "npm:1.0.0-beta.1" + run-script-os: "npm:^1.1.6" + typescript: "npm:^5.3.3" + languageName: unknown + linkType: soft + +"@janhq/tensorrt-llm-extension@workspace:tensorrt-llm-extension": + version: 0.0.0-use.local + resolution: "@janhq/tensorrt-llm-extension@workspace:tensorrt-llm-extension" + dependencies: + "@janhq/core": ../../core/package.tgz + "@types/decompress": "npm:4.2.7" + "@types/jest": "npm:^29.5.12" + "@types/node": "npm:^20.11.4" + "@types/os-utils": "npm:^0.0.4" + "@types/tcp-port-used": "npm:^1.0.4" + cpx: "npm:^1.5.0" + decompress: "npm:^4.2.1" + download-cli: "npm:^1.1.1" + fetch-retry: "npm:^5.0.6" + jest: "npm:^29.7.0" + jest-junit: "npm:^16.0.0" + jest-runner: "npm:^29.7.0" + rimraf: "npm:^3.0.2" + rolldown: "npm:1.0.0-beta.1" + run-script-os: "npm:^1.1.6" + rxjs: "npm:^7.8.1" + tcp-port-used: "npm:^1.0.2" + terminate: "npm:^2.6.1" + ts-jest: "npm:^29.2.5" + typescript: "npm:^5.2.2" + ulidx: "npm:^2.3.0" + languageName: unknown + linkType: soft + +"@jest/console@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/console@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + slash: "npm:^3.0.0" + checksum: 10c0/7be408781d0a6f657e969cbec13b540c329671819c2f57acfad0dae9dbfe2c9be859f38fe99b35dba9ff1536937dc6ddc69fdcd2794812fa3c647a1619797f6c + languageName: node + linkType: hard + +"@jest/core@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/core@npm:29.7.0" + dependencies: + "@jest/console": "npm:^29.7.0" + "@jest/reporters": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + ansi-escapes: "npm:^4.2.1" + chalk: "npm:^4.0.0" + ci-info: "npm:^3.2.0" + exit: "npm:^0.1.2" + graceful-fs: "npm:^4.2.9" + jest-changed-files: "npm:^29.7.0" + jest-config: "npm:^29.7.0" + jest-haste-map: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-regex-util: "npm:^29.6.3" + jest-resolve: "npm:^29.7.0" + jest-resolve-dependencies: "npm:^29.7.0" + jest-runner: "npm:^29.7.0" + jest-runtime: "npm:^29.7.0" + jest-snapshot: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-validate: "npm:^29.7.0" + jest-watcher: "npm:^29.7.0" + micromatch: "npm:^4.0.4" + pretty-format: "npm:^29.7.0" + slash: "npm:^3.0.0" + strip-ansi: "npm:^6.0.0" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + checksum: 10c0/934f7bf73190f029ac0f96662c85cd276ec460d407baf6b0dbaec2872e157db4d55a7ee0b1c43b18874602f662b37cb973dda469a4e6d88b4e4845b521adeeb2 + languageName: node + linkType: hard + +"@jest/environment@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/environment@npm:29.7.0" + dependencies: + "@jest/fake-timers": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + jest-mock: "npm:^29.7.0" + checksum: 10c0/c7b1b40c618f8baf4d00609022d2afa086d9c6acc706f303a70bb4b67275868f620ad2e1a9efc5edd418906157337cce50589a627a6400bbdf117d351b91ef86 + languageName: node + linkType: hard + +"@jest/expect-utils@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/expect-utils@npm:29.7.0" + dependencies: + jest-get-type: "npm:^29.6.3" + checksum: 10c0/60b79d23a5358dc50d9510d726443316253ecda3a7fb8072e1526b3e0d3b14f066ee112db95699b7a43ad3f0b61b750c72e28a5a1cac361d7a2bb34747fa938a + languageName: node + linkType: hard + +"@jest/expect@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/expect@npm:29.7.0" + dependencies: + expect: "npm:^29.7.0" + jest-snapshot: "npm:^29.7.0" + checksum: 10c0/b41f193fb697d3ced134349250aed6ccea075e48c4f803159db102b826a4e473397c68c31118259868fd69a5cba70e97e1c26d2c2ff716ca39dc73a2ccec037e + languageName: node + linkType: hard + +"@jest/fake-timers@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/fake-timers@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + "@sinonjs/fake-timers": "npm:^10.0.2" + "@types/node": "npm:*" + jest-message-util: "npm:^29.7.0" + jest-mock: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + checksum: 10c0/cf0a8bcda801b28dc2e2b2ba36302200ee8104a45ad7a21e6c234148932f826cb3bc57c8df3b7b815aeea0861d7b6ca6f0d4778f93b9219398ef28749e03595c + languageName: node + linkType: hard + +"@jest/globals@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/globals@npm:29.7.0" + dependencies: + "@jest/environment": "npm:^29.7.0" + "@jest/expect": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + jest-mock: "npm:^29.7.0" + checksum: 10c0/a385c99396878fe6e4460c43bd7bb0a5cc52befb462cc6e7f2a3810f9e7bcce7cdeb51908fd530391ee452dc856c98baa2c5f5fa8a5b30b071d31ef7f6955cea + languageName: node + linkType: hard + +"@jest/reporters@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/reporters@npm:29.7.0" + dependencies: + "@bcoe/v8-coverage": "npm:^0.2.3" + "@jest/console": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@jridgewell/trace-mapping": "npm:^0.3.18" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + collect-v8-coverage: "npm:^1.0.0" + exit: "npm:^0.1.2" + glob: "npm:^7.1.3" + graceful-fs: "npm:^4.2.9" + istanbul-lib-coverage: "npm:^3.0.0" + istanbul-lib-instrument: "npm:^6.0.0" + istanbul-lib-report: "npm:^3.0.0" + istanbul-lib-source-maps: "npm:^4.0.0" + istanbul-reports: "npm:^3.1.3" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-worker: "npm:^29.7.0" + slash: "npm:^3.0.0" + string-length: "npm:^4.0.1" + strip-ansi: "npm:^6.0.0" + v8-to-istanbul: "npm:^9.0.1" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + checksum: 10c0/a754402a799541c6e5aff2c8160562525e2a47e7d568f01ebfc4da66522de39cbb809bbb0a841c7052e4270d79214e70aec3c169e4eae42a03bc1a8a20cb9fa2 + languageName: node + linkType: hard + +"@jest/schemas@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/schemas@npm:29.6.3" + dependencies: + "@sinclair/typebox": "npm:^0.27.8" + checksum: 10c0/b329e89cd5f20b9278ae1233df74016ebf7b385e0d14b9f4c1ad18d096c4c19d1e687aa113a9c976b16ec07f021ae53dea811fb8c1248a50ac34fbe009fdf6be + languageName: node + linkType: hard + +"@jest/source-map@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/source-map@npm:29.6.3" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.18" + callsites: "npm:^3.0.0" + graceful-fs: "npm:^4.2.9" + checksum: 10c0/a2f177081830a2e8ad3f2e29e20b63bd40bade294880b595acf2fc09ec74b6a9dd98f126a2baa2bf4941acd89b13a4ade5351b3885c224107083a0059b60a219 + languageName: node + linkType: hard + +"@jest/test-result@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/test-result@npm:29.7.0" + dependencies: + "@jest/console": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/istanbul-lib-coverage": "npm:^2.0.0" + collect-v8-coverage: "npm:^1.0.0" + checksum: 10c0/7de54090e54a674ca173470b55dc1afdee994f2d70d185c80236003efd3fa2b753fff51ffcdda8e2890244c411fd2267529d42c4a50a8303755041ee493e6a04 + languageName: node + linkType: hard + +"@jest/test-sequencer@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/test-sequencer@npm:29.7.0" + dependencies: + "@jest/test-result": "npm:^29.7.0" + graceful-fs: "npm:^4.2.9" + jest-haste-map: "npm:^29.7.0" + slash: "npm:^3.0.0" + checksum: 10c0/593a8c4272797bb5628984486080cbf57aed09c7cfdc0a634e8c06c38c6bef329c46c0016e84555ee55d1cd1f381518cf1890990ff845524c1123720c8c1481b + languageName: node + linkType: hard + +"@jest/transform@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/transform@npm:29.7.0" + dependencies: + "@babel/core": "npm:^7.11.6" + "@jest/types": "npm:^29.6.3" + "@jridgewell/trace-mapping": "npm:^0.3.18" + babel-plugin-istanbul: "npm:^6.1.1" + chalk: "npm:^4.0.0" + convert-source-map: "npm:^2.0.0" + fast-json-stable-stringify: "npm:^2.1.0" + graceful-fs: "npm:^4.2.9" + jest-haste-map: "npm:^29.7.0" + jest-regex-util: "npm:^29.6.3" + jest-util: "npm:^29.7.0" + micromatch: "npm:^4.0.4" + pirates: "npm:^4.0.4" + slash: "npm:^3.0.0" + write-file-atomic: "npm:^4.0.2" + checksum: 10c0/7f4a7f73dcf45dfdf280c7aa283cbac7b6e5a904813c3a93ead7e55873761fc20d5c4f0191d2019004fac6f55f061c82eb3249c2901164ad80e362e7a7ede5a6 + languageName: node + linkType: hard + +"@jest/types@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/types@npm:29.6.3" + dependencies: + "@jest/schemas": "npm:^29.6.3" + "@types/istanbul-lib-coverage": "npm:^2.0.0" + "@types/istanbul-reports": "npm:^3.0.0" + "@types/node": "npm:*" + "@types/yargs": "npm:^17.0.8" + chalk: "npm:^4.0.0" + checksum: 10c0/ea4e493dd3fb47933b8ccab201ae573dcc451f951dc44ed2a86123cd8541b82aa9d2b1031caf9b1080d6673c517e2dcc25a44b2dc4f3fbc37bfc965d444888c0 + languageName: node + linkType: hard + +"@jridgewell/gen-mapping@npm:^0.3.5": + version: 0.3.8 + resolution: "@jridgewell/gen-mapping@npm:0.3.8" + dependencies: + "@jridgewell/set-array": "npm:^1.2.1" + "@jridgewell/sourcemap-codec": "npm:^1.4.10" + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: 10c0/c668feaf86c501d7c804904a61c23c67447b2137b813b9ce03eca82cb9d65ac7006d766c218685d76e3d72828279b6ee26c347aa1119dab23fbaf36aed51585a + languageName: node + linkType: hard + +"@jridgewell/resolve-uri@npm:^3.1.0": + version: 3.1.2 + resolution: "@jridgewell/resolve-uri@npm:3.1.2" + checksum: 10c0/d502e6fb516b35032331406d4e962c21fe77cdf1cbdb49c6142bcbd9e30507094b18972778a6e27cbad756209cfe34b1a27729e6fa08a2eb92b33943f680cf1e + languageName: node + linkType: hard + +"@jridgewell/set-array@npm:^1.2.1": + version: 1.2.1 + resolution: "@jridgewell/set-array@npm:1.2.1" + checksum: 10c0/2a5aa7b4b5c3464c895c802d8ae3f3d2b92fcbe84ad12f8d0bfbb1f5ad006717e7577ee1fd2eac00c088abe486c7adb27976f45d2941ff6b0b92b2c3302c60f4 + languageName: node + linkType: hard + +"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14": + version: 1.5.0 + resolution: "@jridgewell/sourcemap-codec@npm:1.5.0" + checksum: 10c0/2eb864f276eb1096c3c11da3e9bb518f6d9fc0023c78344cdc037abadc725172c70314bdb360f2d4b7bffec7f5d657ce006816bc5d4ecb35e61b66132db00c18 + languageName: node + linkType: hard + +"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": + version: 0.3.25 + resolution: "@jridgewell/trace-mapping@npm:0.3.25" + dependencies: + "@jridgewell/resolve-uri": "npm:^3.1.0" + "@jridgewell/sourcemap-codec": "npm:^1.4.14" + checksum: 10c0/3d1ce6ebc69df9682a5a8896b414c6537e428a1d68b02fcc8363b04284a8ca0df04d0ee3013132252ab14f2527bc13bea6526a912ecb5658f0e39fd2860b4df4 + languageName: node + linkType: hard + +"@langchain/community@npm:0.0.13": + version: 0.0.13 + resolution: "@langchain/community@npm:0.0.13" + dependencies: + "@langchain/core": "npm:~0.1.5" + "@langchain/openai": "npm:~0.0.9" + flat: "npm:^5.0.2" + langsmith: "npm:~0.0.48" + uuid: "npm:^9.0.0" + zod: "npm:^3.22.3" + peerDependencies: + "@aws-crypto/sha256-js": ^5.0.0 + "@aws-sdk/client-bedrock-runtime": ^3.422.0 + "@aws-sdk/client-dynamodb": ^3.310.0 + "@aws-sdk/client-kendra": ^3.352.0 + "@aws-sdk/client-lambda": ^3.310.0 + "@aws-sdk/client-sagemaker-runtime": ^3.310.0 + "@aws-sdk/client-sfn": ^3.310.0 + "@aws-sdk/credential-provider-node": ^3.388.0 + "@clickhouse/client": ^0.2.5 + "@cloudflare/ai": ^1.0.12 + "@datastax/astra-db-ts": 0.1.2 + "@elastic/elasticsearch": ^8.4.0 + "@getmetal/metal-sdk": "*" + "@getzep/zep-js": ^0.9.0 + "@gomomento/sdk": ^1.51.1 + "@gomomento/sdk-core": ^1.51.1 + "@google-ai/generativelanguage": ^0.2.1 + "@gradientai/nodejs-sdk": ^1.2.0 + "@huggingface/inference": ^2.6.4 + "@mozilla/readability": "*" + "@opensearch-project/opensearch": "*" + "@pinecone-database/pinecone": ^1.1.0 + "@planetscale/database": ^1.8.0 + "@qdrant/js-client-rest": ^1.2.0 + "@raycast/api": ^1.55.2 + "@rockset/client": ^0.9.1 + "@smithy/eventstream-codec": ^2.0.5 + "@smithy/protocol-http": ^3.0.6 + "@smithy/signature-v4": ^2.0.10 + "@smithy/util-utf8": ^2.0.0 + "@supabase/postgrest-js": ^1.1.1 + "@supabase/supabase-js": ^2.10.0 + "@tensorflow-models/universal-sentence-encoder": "*" + "@tensorflow/tfjs-converter": "*" + "@tensorflow/tfjs-core": "*" + "@upstash/redis": ^1.20.6 + "@vercel/kv": ^0.2.3 + "@vercel/postgres": ^0.5.0 + "@writerai/writer-sdk": ^0.40.2 + "@xata.io/client": ^0.28.0 + "@xenova/transformers": ^2.5.4 + "@zilliz/milvus2-sdk-node": ">=2.2.7" + cassandra-driver: ^4.7.2 + chromadb: "*" + closevector-common: 0.1.0-alpha.1 + closevector-node: 0.1.0-alpha.10 + closevector-web: 0.1.0-alpha.16 + cohere-ai: ">=6.0.0" + convex: ^1.3.1 + discord.js: ^14.14.1 + faiss-node: ^0.5.1 + firebase-admin: ^11.9.0 + google-auth-library: ^8.9.0 + googleapis: ^126.0.1 + hnswlib-node: ^1.4.2 + html-to-text: ^9.0.5 + ioredis: ^5.3.2 + jsdom: "*" + llmonitor: ^0.5.9 + lodash: ^4.17.21 + mongodb: ^5.2.0 + mysql2: ^3.3.3 + neo4j-driver: "*" + node-llama-cpp: "*" + pg: ^8.11.0 + pg-copy-streams: ^6.0.5 + pickleparser: ^0.2.1 + portkey-ai: ^0.1.11 + redis: ^4.6.4 + replicate: ^0.18.0 + typeorm: ^0.3.12 + typesense: ^1.5.3 + usearch: ^1.1.1 + vectordb: ^0.1.4 + voy-search: 0.6.2 + weaviate-ts-client: ^1.4.0 + web-auth-library: ^1.0.3 + ws: ^8.14.2 + peerDependenciesMeta: + "@aws-crypto/sha256-js": + optional: true + "@aws-sdk/client-bedrock-runtime": + optional: true + "@aws-sdk/client-dynamodb": + optional: true + "@aws-sdk/client-kendra": + optional: true + "@aws-sdk/client-lambda": + optional: true + "@aws-sdk/client-sagemaker-runtime": + optional: true + "@aws-sdk/client-sfn": + optional: true + "@aws-sdk/credential-provider-node": + optional: true + "@clickhouse/client": + optional: true + "@cloudflare/ai": + optional: true + "@datastax/astra-db-ts": + optional: true + "@elastic/elasticsearch": + optional: true + "@getmetal/metal-sdk": + optional: true + "@getzep/zep-js": + optional: true + "@gomomento/sdk": + optional: true + "@gomomento/sdk-core": + optional: true + "@google-ai/generativelanguage": + optional: true + "@gradientai/nodejs-sdk": + optional: true + "@huggingface/inference": + optional: true + "@mozilla/readability": + optional: true + "@opensearch-project/opensearch": + optional: true + "@pinecone-database/pinecone": + optional: true + "@planetscale/database": + optional: true + "@qdrant/js-client-rest": + optional: true + "@raycast/api": + optional: true + "@rockset/client": + optional: true + "@smithy/eventstream-codec": + optional: true + "@smithy/protocol-http": + optional: true + "@smithy/signature-v4": + optional: true + "@smithy/util-utf8": + optional: true + "@supabase/postgrest-js": + optional: true + "@supabase/supabase-js": + optional: true + "@tensorflow-models/universal-sentence-encoder": + optional: true + "@tensorflow/tfjs-converter": + optional: true + "@tensorflow/tfjs-core": + optional: true + "@upstash/redis": + optional: true + "@vercel/kv": + optional: true + "@vercel/postgres": + optional: true + "@writerai/writer-sdk": + optional: true + "@xata.io/client": + optional: true + "@xenova/transformers": + optional: true + "@zilliz/milvus2-sdk-node": + optional: true + cassandra-driver: + optional: true + chromadb: + optional: true + closevector-common: + optional: true + closevector-node: + optional: true + closevector-web: + optional: true + cohere-ai: + optional: true + convex: + optional: true + discord.js: + optional: true + faiss-node: + optional: true + firebase-admin: + optional: true + google-auth-library: + optional: true + googleapis: + optional: true + hnswlib-node: + optional: true + html-to-text: + optional: true + ioredis: + optional: true + jsdom: + optional: true + llmonitor: + optional: true + lodash: + optional: true + mongodb: + optional: true + mysql2: + optional: true + neo4j-driver: + optional: true + node-llama-cpp: + optional: true + pg: + optional: true + pg-copy-streams: + optional: true + pickleparser: + optional: true + portkey-ai: + optional: true + redis: + optional: true + replicate: + optional: true + typeorm: + optional: true + typesense: + optional: true + usearch: + optional: true + vectordb: + optional: true + voy-search: + optional: true + weaviate-ts-client: + optional: true + web-auth-library: + optional: true + ws: + optional: true + checksum: 10c0/384926b577f9815cd24f2afea175a256d2e4deb09ac767e76daf293689870bef9c4c4bd3909428878b997de6cadd277cf3c585bb3f6f7e0672d57119a31c5b47 + languageName: node + linkType: hard + +"@langchain/community@npm:~0.0.13": + version: 0.0.57 + resolution: "@langchain/community@npm:0.0.57" + dependencies: + "@langchain/core": "npm:~0.1.60" + "@langchain/openai": "npm:~0.0.28" + expr-eval: "npm:^2.0.2" + flat: "npm:^5.0.2" + langsmith: "npm:~0.1.1" + uuid: "npm:^9.0.0" + zod: "npm:^3.22.3" + zod-to-json-schema: "npm:^3.22.5" + peerDependencies: + "@aws-crypto/sha256-js": ^5.0.0 + "@aws-sdk/client-bedrock-agent-runtime": ^3.485.0 + "@aws-sdk/client-bedrock-runtime": ^3.422.0 + "@aws-sdk/client-dynamodb": ^3.310.0 + "@aws-sdk/client-kendra": ^3.352.0 + "@aws-sdk/client-lambda": ^3.310.0 + "@aws-sdk/client-sagemaker-runtime": ^3.310.0 + "@aws-sdk/client-sfn": ^3.310.0 + "@aws-sdk/credential-provider-node": ^3.388.0 + "@azure/search-documents": ^12.0.0 + "@clickhouse/client": ^0.2.5 + "@cloudflare/ai": "*" + "@datastax/astra-db-ts": ^1.0.0 + "@elastic/elasticsearch": ^8.4.0 + "@getmetal/metal-sdk": "*" + "@getzep/zep-js": ^0.9.0 + "@gomomento/sdk": ^1.51.1 + "@gomomento/sdk-core": ^1.51.1 + "@google-ai/generativelanguage": ^0.2.1 + "@gradientai/nodejs-sdk": ^1.2.0 + "@huggingface/inference": ^2.6.4 + "@mlc-ai/web-llm": ^0.2.35 + "@mozilla/readability": "*" + "@neondatabase/serverless": "*" + "@opensearch-project/opensearch": "*" + "@pinecone-database/pinecone": "*" + "@planetscale/database": ^1.8.0 + "@premai/prem-sdk": ^0.3.25 + "@qdrant/js-client-rest": ^1.8.2 + "@raycast/api": ^1.55.2 + "@rockset/client": ^0.9.1 + "@smithy/eventstream-codec": ^2.0.5 + "@smithy/protocol-http": ^3.0.6 + "@smithy/signature-v4": ^2.0.10 + "@smithy/util-utf8": ^2.0.0 + "@supabase/postgrest-js": ^1.1.1 + "@supabase/supabase-js": ^2.10.0 + "@tensorflow-models/universal-sentence-encoder": "*" + "@tensorflow/tfjs-converter": "*" + "@tensorflow/tfjs-core": "*" + "@upstash/redis": ^1.20.6 + "@upstash/vector": ^1.0.7 + "@vercel/kv": ^0.2.3 + "@vercel/postgres": ^0.5.0 + "@writerai/writer-sdk": ^0.40.2 + "@xata.io/client": ^0.28.0 + "@xenova/transformers": ^2.5.4 + "@zilliz/milvus2-sdk-node": ">=2.2.7" + better-sqlite3: ^9.4.0 + cassandra-driver: ^4.7.2 + cborg: ^4.1.1 + chromadb: "*" + closevector-common: 0.1.3 + closevector-node: 0.1.6 + closevector-web: 0.1.6 + cohere-ai: "*" + convex: ^1.3.1 + couchbase: ^4.3.0 + discord.js: ^14.14.1 + dria: ^0.0.3 + duck-duck-scrape: ^2.2.5 + faiss-node: ^0.5.1 + firebase-admin: ^11.9.0 || ^12.0.0 + google-auth-library: ^8.9.0 + googleapis: ^126.0.1 + hnswlib-node: ^3.0.0 + html-to-text: ^9.0.5 + interface-datastore: ^8.2.11 + ioredis: ^5.3.2 + it-all: ^3.0.4 + jsdom: "*" + jsonwebtoken: ^9.0.2 + llmonitor: ^0.5.9 + lodash: ^4.17.21 + lunary: ^0.6.11 + mongodb: ">=5.2.0" + mysql2: ^3.3.3 + neo4j-driver: "*" + node-llama-cpp: "*" + pg: ^8.11.0 + pg-copy-streams: ^6.0.5 + pickleparser: ^0.2.1 + portkey-ai: ^0.1.11 + redis: "*" + replicate: ^0.18.0 + typeorm: ^0.3.12 + typesense: ^1.5.3 + usearch: ^1.1.1 + vectordb: ^0.1.4 + voy-search: 0.6.2 + weaviate-ts-client: "*" + web-auth-library: ^1.0.3 + ws: ^8.14.2 + peerDependenciesMeta: + "@aws-crypto/sha256-js": + optional: true + "@aws-sdk/client-bedrock-agent-runtime": + optional: true + "@aws-sdk/client-bedrock-runtime": + optional: true + "@aws-sdk/client-dynamodb": + optional: true + "@aws-sdk/client-kendra": + optional: true + "@aws-sdk/client-lambda": + optional: true + "@aws-sdk/client-sagemaker-runtime": + optional: true + "@aws-sdk/client-sfn": + optional: true + "@aws-sdk/credential-provider-node": + optional: true + "@azure/search-documents": + optional: true + "@clickhouse/client": + optional: true + "@cloudflare/ai": + optional: true + "@datastax/astra-db-ts": + optional: true + "@elastic/elasticsearch": + optional: true + "@getmetal/metal-sdk": + optional: true + "@getzep/zep-js": + optional: true + "@gomomento/sdk": + optional: true + "@gomomento/sdk-core": + optional: true + "@google-ai/generativelanguage": + optional: true + "@gradientai/nodejs-sdk": + optional: true + "@huggingface/inference": + optional: true + "@mlc-ai/web-llm": + optional: true + "@mozilla/readability": + optional: true + "@neondatabase/serverless": + optional: true + "@opensearch-project/opensearch": + optional: true + "@pinecone-database/pinecone": + optional: true + "@planetscale/database": + optional: true + "@premai/prem-sdk": + optional: true + "@qdrant/js-client-rest": + optional: true + "@raycast/api": + optional: true + "@rockset/client": + optional: true + "@smithy/eventstream-codec": + optional: true + "@smithy/protocol-http": + optional: true + "@smithy/signature-v4": + optional: true + "@smithy/util-utf8": + optional: true + "@supabase/postgrest-js": + optional: true + "@supabase/supabase-js": + optional: true + "@tensorflow-models/universal-sentence-encoder": + optional: true + "@tensorflow/tfjs-converter": + optional: true + "@tensorflow/tfjs-core": + optional: true + "@upstash/redis": + optional: true + "@upstash/vector": + optional: true + "@vercel/kv": + optional: true + "@vercel/postgres": + optional: true + "@writerai/writer-sdk": + optional: true + "@xata.io/client": + optional: true + "@xenova/transformers": + optional: true + "@zilliz/milvus2-sdk-node": + optional: true + better-sqlite3: + optional: true + cassandra-driver: + optional: true + cborg: + optional: true + chromadb: + optional: true + closevector-common: + optional: true + closevector-node: + optional: true + closevector-web: + optional: true + cohere-ai: + optional: true + convex: + optional: true + couchbase: + optional: true + discord.js: + optional: true + dria: + optional: true + duck-duck-scrape: + optional: true + faiss-node: + optional: true + firebase-admin: + optional: true + google-auth-library: + optional: true + googleapis: + optional: true + hnswlib-node: + optional: true + html-to-text: + optional: true + interface-datastore: + optional: true + ioredis: + optional: true + it-all: + optional: true + jsdom: + optional: true + jsonwebtoken: + optional: true + llmonitor: + optional: true + lodash: + optional: true + lunary: + optional: true + mongodb: + optional: true + mysql2: + optional: true + neo4j-driver: + optional: true + node-llama-cpp: + optional: true + pg: + optional: true + pg-copy-streams: + optional: true + pickleparser: + optional: true + portkey-ai: + optional: true + redis: + optional: true + replicate: + optional: true + typeorm: + optional: true + typesense: + optional: true + usearch: + optional: true + vectordb: + optional: true + voy-search: + optional: true + weaviate-ts-client: + optional: true + web-auth-library: + optional: true + ws: + optional: true + checksum: 10c0/7d42470c5c42d97c9e9b4925de3fa8a558d785e2c96c347d4a48f97f6396c64e54f3730340c2d262e09440fc664ef44496a9ce09894e75b2e4362017e6bc478c + languageName: node + linkType: hard + +"@langchain/core@npm:>0.1.56 <0.3.0": + version: 0.2.36 + resolution: "@langchain/core@npm:0.2.36" + dependencies: + ansi-styles: "npm:^5.0.0" + camelcase: "npm:6" + decamelize: "npm:1.2.0" + js-tiktoken: "npm:^1.0.12" + langsmith: "npm:^0.1.56-rc.1" + mustache: "npm:^4.2.0" + p-queue: "npm:^6.6.2" + p-retry: "npm:4" + uuid: "npm:^10.0.0" + zod: "npm:^3.22.4" + zod-to-json-schema: "npm:^3.22.3" + checksum: 10c0/ff49119a295e9605258c5e4fbb0628824f6532937f4f5ca4d141f2f5a10856f3d0890be0fc12b0ebba7ab84d9e66839094780d8e6299f46ddce8751fd8a96d1f + languageName: node + linkType: hard + +"@langchain/core@npm:~0.1.5, @langchain/core@npm:~0.1.60": + version: 0.1.63 + resolution: "@langchain/core@npm:0.1.63" + dependencies: + ansi-styles: "npm:^5.0.0" + camelcase: "npm:6" + decamelize: "npm:1.2.0" + js-tiktoken: "npm:^1.0.12" + langsmith: "npm:~0.1.7" + ml-distance: "npm:^4.0.0" + mustache: "npm:^4.2.0" + p-queue: "npm:^6.6.2" + p-retry: "npm:4" + uuid: "npm:^9.0.0" + zod: "npm:^3.22.4" + zod-to-json-schema: "npm:^3.22.3" + checksum: 10c0/44f8b0846439f55e2137fe150275682978b91cf4c2516320c1a17b3180558c3fb709eafc974d5b23dd356006bed542390f52bc7b5a10f8f4284836556a921614 + languageName: node + linkType: hard + +"@langchain/openai@npm:~0.0.28, @langchain/openai@npm:~0.0.9": + version: 0.0.34 + resolution: "@langchain/openai@npm:0.0.34" + dependencies: + "@langchain/core": "npm:>0.1.56 <0.3.0" + js-tiktoken: "npm:^1.0.12" + openai: "npm:^4.41.1" + zod: "npm:^3.22.4" + zod-to-json-schema: "npm:^3.22.3" + checksum: 10c0/16a909b23340d680f3b1de09a56868b0cf00123e992412287987d39e5bf92c40c4247c7113b491f99a98623d12f1c578c3e874a4011d0af5e57212637ceb6328 + languageName: node + linkType: hard + +"@napi-rs/wasm-runtime@npm:^0.2.4": + version: 0.2.6 + resolution: "@napi-rs/wasm-runtime@npm:0.2.6" + dependencies: + "@emnapi/core": "npm:^1.3.1" + "@emnapi/runtime": "npm:^1.3.1" + "@tybys/wasm-util": "npm:^0.9.0" + checksum: 10c0/f921676c1d5c75494bd704c6c0837fd05fe95f5d1cb7373e32987ef5e00c3a1e90b5052352bd4b60ee20c3fe592af2dbba3b0de0c637218c25590828dbc4067e + languageName: node + linkType: hard + +"@npmcli/agent@npm:^3.0.0": + version: 3.0.0 + resolution: "@npmcli/agent@npm:3.0.0" + dependencies: + agent-base: "npm:^7.1.0" + http-proxy-agent: "npm:^7.0.0" + https-proxy-agent: "npm:^7.0.1" + lru-cache: "npm:^10.0.1" + socks-proxy-agent: "npm:^8.0.3" + checksum: 10c0/efe37b982f30740ee77696a80c196912c274ecd2cb243bc6ae7053a50c733ce0f6c09fda085145f33ecf453be19654acca74b69e81eaad4c90f00ccffe2f9271 + languageName: node + linkType: hard + +"@npmcli/fs@npm:^4.0.0": + version: 4.0.0 + resolution: "@npmcli/fs@npm:4.0.0" + dependencies: + semver: "npm:^7.3.5" + checksum: 10c0/c90935d5ce670c87b6b14fab04a965a3b8137e585f8b2a6257263bd7f97756dd736cb165bb470e5156a9e718ecd99413dccc54b1138c1a46d6ec7cf325982fe5 + languageName: node + linkType: hard + +"@pkgjs/parseargs@npm:^0.11.0": + version: 0.11.0 + resolution: "@pkgjs/parseargs@npm:0.11.0" + checksum: 10c0/5bd7576bb1b38a47a7fc7b51ac9f38748e772beebc56200450c4a817d712232b8f1d3ef70532c80840243c657d491cf6a6be1e3a214cff907645819fdc34aadd + languageName: node + linkType: hard + +"@rolldown/binding-darwin-arm64@npm:1.0.0-beta.1": + version: 1.0.0-beta.1 + resolution: "@rolldown/binding-darwin-arm64@npm:1.0.0-beta.1" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@rolldown/binding-darwin-arm64@npm:1.0.0-beta.1-commit.f90856a": + version: 1.0.0-beta.1-commit.f90856a + resolution: "@rolldown/binding-darwin-arm64@npm:1.0.0-beta.1-commit.f90856a" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@rolldown/binding-darwin-x64@npm:1.0.0-beta.1": + version: 1.0.0-beta.1 + resolution: "@rolldown/binding-darwin-x64@npm:1.0.0-beta.1" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@rolldown/binding-darwin-x64@npm:1.0.0-beta.1-commit.f90856a": + version: 1.0.0-beta.1-commit.f90856a + resolution: "@rolldown/binding-darwin-x64@npm:1.0.0-beta.1-commit.f90856a" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@rolldown/binding-freebsd-x64@npm:1.0.0-beta.1": + version: 1.0.0-beta.1 + resolution: "@rolldown/binding-freebsd-x64@npm:1.0.0-beta.1" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@rolldown/binding-freebsd-x64@npm:1.0.0-beta.1-commit.f90856a": + version: 1.0.0-beta.1-commit.f90856a + resolution: "@rolldown/binding-freebsd-x64@npm:1.0.0-beta.1-commit.f90856a" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@rolldown/binding-linux-arm-gnueabihf@npm:1.0.0-beta.1": + version: 1.0.0-beta.1 + resolution: "@rolldown/binding-linux-arm-gnueabihf@npm:1.0.0-beta.1" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@rolldown/binding-linux-arm-gnueabihf@npm:1.0.0-beta.1-commit.f90856a": + version: 1.0.0-beta.1-commit.f90856a + resolution: "@rolldown/binding-linux-arm-gnueabihf@npm:1.0.0-beta.1-commit.f90856a" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@rolldown/binding-linux-arm64-gnu@npm:1.0.0-beta.1": + version: 1.0.0-beta.1 + resolution: "@rolldown/binding-linux-arm64-gnu@npm:1.0.0-beta.1" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@rolldown/binding-linux-arm64-gnu@npm:1.0.0-beta.1-commit.f90856a": + version: 1.0.0-beta.1-commit.f90856a + resolution: "@rolldown/binding-linux-arm64-gnu@npm:1.0.0-beta.1-commit.f90856a" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@rolldown/binding-linux-arm64-musl@npm:1.0.0-beta.1": + version: 1.0.0-beta.1 + resolution: "@rolldown/binding-linux-arm64-musl@npm:1.0.0-beta.1" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@rolldown/binding-linux-arm64-musl@npm:1.0.0-beta.1-commit.f90856a": + version: 1.0.0-beta.1-commit.f90856a + resolution: "@rolldown/binding-linux-arm64-musl@npm:1.0.0-beta.1-commit.f90856a" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@rolldown/binding-linux-x64-gnu@npm:1.0.0-beta.1": + version: 1.0.0-beta.1 + resolution: "@rolldown/binding-linux-x64-gnu@npm:1.0.0-beta.1" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@rolldown/binding-linux-x64-gnu@npm:1.0.0-beta.1-commit.f90856a": + version: 1.0.0-beta.1-commit.f90856a + resolution: "@rolldown/binding-linux-x64-gnu@npm:1.0.0-beta.1-commit.f90856a" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@rolldown/binding-linux-x64-musl@npm:1.0.0-beta.1": + version: 1.0.0-beta.1 + resolution: "@rolldown/binding-linux-x64-musl@npm:1.0.0-beta.1" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@rolldown/binding-linux-x64-musl@npm:1.0.0-beta.1-commit.f90856a": + version: 1.0.0-beta.1-commit.f90856a + resolution: "@rolldown/binding-linux-x64-musl@npm:1.0.0-beta.1-commit.f90856a" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@rolldown/binding-wasm32-wasi@npm:1.0.0-beta.1": + version: 1.0.0-beta.1 + resolution: "@rolldown/binding-wasm32-wasi@npm:1.0.0-beta.1" + dependencies: + "@napi-rs/wasm-runtime": "npm:^0.2.4" + conditions: cpu=wasm32 + languageName: node + linkType: hard + +"@rolldown/binding-wasm32-wasi@npm:1.0.0-beta.1-commit.f90856a": + version: 1.0.0-beta.1-commit.f90856a + resolution: "@rolldown/binding-wasm32-wasi@npm:1.0.0-beta.1-commit.f90856a" + dependencies: + "@napi-rs/wasm-runtime": "npm:^0.2.4" + conditions: cpu=wasm32 + languageName: node + linkType: hard + +"@rolldown/binding-win32-arm64-msvc@npm:1.0.0-beta.1": + version: 1.0.0-beta.1 + resolution: "@rolldown/binding-win32-arm64-msvc@npm:1.0.0-beta.1" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@rolldown/binding-win32-arm64-msvc@npm:1.0.0-beta.1-commit.f90856a": + version: 1.0.0-beta.1-commit.f90856a + resolution: "@rolldown/binding-win32-arm64-msvc@npm:1.0.0-beta.1-commit.f90856a" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@rolldown/binding-win32-ia32-msvc@npm:1.0.0-beta.1": + version: 1.0.0-beta.1 + resolution: "@rolldown/binding-win32-ia32-msvc@npm:1.0.0-beta.1" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@rolldown/binding-win32-ia32-msvc@npm:1.0.0-beta.1-commit.f90856a": + version: 1.0.0-beta.1-commit.f90856a + resolution: "@rolldown/binding-win32-ia32-msvc@npm:1.0.0-beta.1-commit.f90856a" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@rolldown/binding-win32-x64-msvc@npm:1.0.0-beta.1": + version: 1.0.0-beta.1 + resolution: "@rolldown/binding-win32-x64-msvc@npm:1.0.0-beta.1" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@rolldown/binding-win32-x64-msvc@npm:1.0.0-beta.1-commit.f90856a": + version: 1.0.0-beta.1-commit.f90856a + resolution: "@rolldown/binding-win32-x64-msvc@npm:1.0.0-beta.1-commit.f90856a" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@sinclair/typebox@npm:^0.27.8": + version: 0.27.8 + resolution: "@sinclair/typebox@npm:0.27.8" + checksum: 10c0/ef6351ae073c45c2ac89494dbb3e1f87cc60a93ce4cde797b782812b6f97da0d620ae81973f104b43c9b7eaa789ad20ba4f6a1359f1cc62f63729a55a7d22d4e + languageName: node + linkType: hard + +"@sinonjs/commons@npm:^3.0.0": + version: 3.0.1 + resolution: "@sinonjs/commons@npm:3.0.1" + dependencies: + type-detect: "npm:4.0.8" + checksum: 10c0/1227a7b5bd6c6f9584274db996d7f8cee2c8c350534b9d0141fc662eaf1f292ea0ae3ed19e5e5271c8fd390d27e492ca2803acd31a1978be2cdc6be0da711403 + languageName: node + linkType: hard + +"@sinonjs/fake-timers@npm:^10.0.2": + version: 10.3.0 + resolution: "@sinonjs/fake-timers@npm:10.3.0" + dependencies: + "@sinonjs/commons": "npm:^3.0.0" + checksum: 10c0/2e2fb6cc57f227912814085b7b01fede050cd4746ea8d49a1e44d5a0e56a804663b0340ae2f11af7559ea9bf4d087a11f2f646197a660ea3cb04e19efc04aa63 + languageName: node + linkType: hard + +"@tybys/wasm-util@npm:^0.9.0": + version: 0.9.0 + resolution: "@tybys/wasm-util@npm:0.9.0" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/f9fde5c554455019f33af6c8215f1a1435028803dc2a2825b077d812bed4209a1a64444a4ca0ce2ea7e1175c8d88e2f9173a36a33c199e8a5c671aa31de8242d + languageName: node + linkType: hard + +"@types/babel__core@npm:^7.1.14": + version: 7.20.5 + resolution: "@types/babel__core@npm:7.20.5" + dependencies: + "@babel/parser": "npm:^7.20.7" + "@babel/types": "npm:^7.20.7" + "@types/babel__generator": "npm:*" + "@types/babel__template": "npm:*" + "@types/babel__traverse": "npm:*" + checksum: 10c0/bdee3bb69951e833a4b811b8ee9356b69a61ed5b7a23e1a081ec9249769117fa83aaaf023bb06562a038eb5845155ff663e2d5c75dd95c1d5ccc91db012868ff + languageName: node + linkType: hard + +"@types/babel__generator@npm:*": + version: 7.6.8 + resolution: "@types/babel__generator@npm:7.6.8" + dependencies: + "@babel/types": "npm:^7.0.0" + checksum: 10c0/f0ba105e7d2296bf367d6e055bb22996886c114261e2cb70bf9359556d0076c7a57239d019dee42bb063f565bade5ccb46009bce2044b2952d964bf9a454d6d2 + languageName: node + linkType: hard + +"@types/babel__template@npm:*": + version: 7.4.4 + resolution: "@types/babel__template@npm:7.4.4" + dependencies: + "@babel/parser": "npm:^7.1.0" + "@babel/types": "npm:^7.0.0" + checksum: 10c0/cc84f6c6ab1eab1427e90dd2b76ccee65ce940b778a9a67be2c8c39e1994e6f5bbc8efa309f6cea8dc6754994524cd4d2896558df76d92e7a1f46ecffee7112b + languageName: node + linkType: hard + +"@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": + version: 7.20.6 + resolution: "@types/babel__traverse@npm:7.20.6" + dependencies: + "@babel/types": "npm:^7.20.7" + checksum: 10c0/7ba7db61a53e28cac955aa99af280d2600f15a8c056619c05b6fc911cbe02c61aa4f2823299221b23ce0cce00b294c0e5f618ec772aa3f247523c2e48cf7b888 + languageName: node + linkType: hard + +"@types/decompress@npm:4.2.7, @types/decompress@npm:^4.2.7": + version: 4.2.7 + resolution: "@types/decompress@npm:4.2.7" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/29f7d150c43a15a34f026fc04cd7e38c7717aeaecd8b3121a842560ac6f57f1df330b6401c326c9068e42c993c3bc23c1bb540aa3b89cc5f5323748634380967 + languageName: node + linkType: hard + +"@types/graceful-fs@npm:^4.1.3": + version: 4.1.9 + resolution: "@types/graceful-fs@npm:4.1.9" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/235d2fc69741448e853333b7c3d1180a966dd2b8972c8cbcd6b2a0c6cd7f8d582ab2b8e58219dbc62cce8f1b40aa317ff78ea2201cdd8249da5025adebed6f0b + languageName: node + linkType: hard + +"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": + version: 2.0.6 + resolution: "@types/istanbul-lib-coverage@npm:2.0.6" + checksum: 10c0/3948088654f3eeb45363f1db158354fb013b362dba2a5c2c18c559484d5eb9f6fd85b23d66c0a7c2fcfab7308d0a585b14dadaca6cc8bf89ebfdc7f8f5102fb7 + languageName: node + linkType: hard + +"@types/istanbul-lib-report@npm:*": + version: 3.0.3 + resolution: "@types/istanbul-lib-report@npm:3.0.3" + dependencies: + "@types/istanbul-lib-coverage": "npm:*" + checksum: 10c0/247e477bbc1a77248f3c6de5dadaae85ff86ac2d76c5fc6ab1776f54512a745ff2a5f791d22b942e3990ddbd40f3ef5289317c4fca5741bedfaa4f01df89051c + languageName: node + linkType: hard + +"@types/istanbul-reports@npm:^3.0.0": + version: 3.0.4 + resolution: "@types/istanbul-reports@npm:3.0.4" + dependencies: + "@types/istanbul-lib-report": "npm:*" + checksum: 10c0/1647fd402aced5b6edac87274af14ebd6b3a85447ef9ad11853a70fd92a98d35f81a5d3ea9fcb5dbb5834e800c6e35b64475e33fcae6bfa9acc70d61497c54ee + languageName: node + linkType: hard + +"@types/jest@npm:^29.5.12": + version: 29.5.14 + resolution: "@types/jest@npm:29.5.14" + dependencies: + expect: "npm:^29.0.0" + pretty-format: "npm:^29.0.0" + checksum: 10c0/18e0712d818890db8a8dab3d91e9ea9f7f19e3f83c2e50b312f557017dc81466207a71f3ed79cf4428e813ba939954fa26ffa0a9a7f153181ba174581b1c2aed + languageName: node + linkType: hard + +"@types/keyv@npm:^3.1.1": + version: 3.1.4 + resolution: "@types/keyv@npm:3.1.4" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/ff8f54fc49621210291f815fe5b15d809fd7d032941b3180743440bd507ecdf08b9e844625fa346af568c84bf34114eb378dcdc3e921a08ba1e2a08d7e3c809c + languageName: node + linkType: hard + +"@types/node-fetch@npm:^2.6.4": + version: 2.6.12 + resolution: "@types/node-fetch@npm:2.6.12" + dependencies: + "@types/node": "npm:*" + form-data: "npm:^4.0.0" + checksum: 10c0/7693acad5499b7df2d1727d46cff092a63896dc04645f36b973dd6dd754a59a7faba76fcb777bdaa35d80625c6a9dd7257cca9c401a4bab03b04480cda7fd1af + languageName: node + linkType: hard + +"@types/node-os-utils@npm:^1.3.4": + version: 1.3.4 + resolution: "@types/node-os-utils@npm:1.3.4" + checksum: 10c0/d57bfa84862ee388f538e2bf38b5a6e6a555aebf6e50573ad5700f5858f657ee72388833aa7ed6c9d0b68ce0a6763802366326617b0d5f4d56cc3fe61dd617e1 + languageName: node + linkType: hard + +"@types/node@npm:*": + version: 22.10.2 + resolution: "@types/node@npm:22.10.2" + dependencies: + undici-types: "npm:~6.20.0" + checksum: 10c0/2c7b71a040f1ef5320938eca8ebc946e6905caa9bbf3d5665d9b3774a8d15ea9fab1582b849a6d28c7fc80756a62c5666bc66b69f42f4d5dafd1ccb193cdb4ac + languageName: node + linkType: hard + +"@types/node@npm:^18.11.18": + version: 18.19.68 + resolution: "@types/node@npm:18.19.68" + dependencies: + undici-types: "npm:~5.26.4" + checksum: 10c0/8c7f01be218c6e3c1e643173662af27e9a2b568f36c0fe83e4295cf7674fe2a0abb4a1c5d7c7abd3345b9114581387dfd3f14b6d0338daebdce9273cd7ba59ab + languageName: node + linkType: hard + +"@types/node@npm:^20.11.4": + version: 20.17.10 + resolution: "@types/node@npm:20.17.10" + dependencies: + undici-types: "npm:~6.19.2" + checksum: 10c0/458ec725319e57d4692cbb56d81f1a90f9074cef9ec185c59e6f6c557a3d2ded57c5e443b1e82eba923d53dda4db18797fb131ee6e46fdb3d7d2f54d54aaebe3 + languageName: node + linkType: hard + +"@types/os-utils@npm:^0.0.4": + version: 0.0.4 + resolution: "@types/os-utils@npm:0.0.4" + checksum: 10c0/e8bbec5a2a62c20ac65c6c509e76f552121a354e9b8b8feb6bdb9ec7f0bad2f4645398926d314a03b0f0324f1f415744b37788177c804eb2389f6e23f7bc8f67 + languageName: node + linkType: hard + +"@types/pdf-parse@npm:^1.1.4": + version: 1.1.4 + resolution: "@types/pdf-parse@npm:1.1.4" + checksum: 10c0/1192e0a40bae935428a7f02a56d1313474f0d735820824e1d00f06a0330cf89cc18e34d63864202ae997fbd7806952fa68a47a1f0cbc81f8d03000f942543d5c + languageName: node + linkType: hard + +"@types/responselike@npm:^1.0.0": + version: 1.0.3 + resolution: "@types/responselike@npm:1.0.3" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/a58ba341cb9e7d74f71810a88862da7b2a6fa42e2a1fc0ce40498f6ea1d44382f0640117057da779f74c47039f7166bf48fad02dc876f94e005c7afa50f5e129 + languageName: node + linkType: hard + +"@types/retry@npm:0.12.0": + version: 0.12.0 + resolution: "@types/retry@npm:0.12.0" + checksum: 10c0/7c5c9086369826f569b83a4683661557cab1361bac0897a1cefa1a915ff739acd10ca0d62b01071046fe3f5a3f7f2aec80785fe283b75602dc6726781ea3e328 + languageName: node + linkType: hard + +"@types/stack-utils@npm:^2.0.0": + version: 2.0.3 + resolution: "@types/stack-utils@npm:2.0.3" + checksum: 10c0/1f4658385ae936330581bcb8aa3a066df03867d90281cdf89cc356d404bd6579be0f11902304e1f775d92df22c6dd761d4451c804b0a4fba973e06211e9bd77c + languageName: node + linkType: hard + +"@types/tcp-port-used@npm:^1.0.4": + version: 1.0.4 + resolution: "@types/tcp-port-used@npm:1.0.4" + checksum: 10c0/530406515460126ad9c28aa57560171f574a62b9000675bd2fdc4a6acb6e2be0992c4b4221572e1076b36f354026938a4ffe530215f6b042569772a28b6167cf + languageName: node + linkType: hard + +"@types/uuid@npm:^10.0.0": + version: 10.0.0 + resolution: "@types/uuid@npm:10.0.0" + checksum: 10c0/9a1404bf287164481cb9b97f6bb638f78f955be57c40c6513b7655160beb29df6f84c915aaf4089a1559c216557dc4d2f79b48d978742d3ae10b937420ddac60 + languageName: node + linkType: hard + +"@types/uuid@npm:^9.0.1": + version: 9.0.8 + resolution: "@types/uuid@npm:9.0.8" + checksum: 10c0/b411b93054cb1d4361919579ef3508a1f12bf15b5fdd97337d3d351bece6c921b52b6daeef89b62340fd73fd60da407878432a1af777f40648cbe53a01723489 + languageName: node + linkType: hard + +"@types/yargs-parser@npm:*": + version: 21.0.3 + resolution: "@types/yargs-parser@npm:21.0.3" + checksum: 10c0/e71c3bd9d0b73ca82e10bee2064c384ab70f61034bbfb78e74f5206283fc16a6d85267b606b5c22cb2a3338373586786fed595b2009825d6a9115afba36560a0 + languageName: node + linkType: hard + +"@types/yargs@npm:^17.0.8": + version: 17.0.33 + resolution: "@types/yargs@npm:17.0.33" + dependencies: + "@types/yargs-parser": "npm:*" + checksum: 10c0/d16937d7ac30dff697801c3d6f235be2166df42e4a88bf730fa6dc09201de3727c0a9500c59a672122313341de5f24e45ee0ff579c08ce91928e519090b7906b + languageName: node + linkType: hard + +"abbrev@npm:^2.0.0": + version: 2.0.0 + resolution: "abbrev@npm:2.0.0" + checksum: 10c0/f742a5a107473946f426c691c08daba61a1d15942616f300b5d32fd735be88fef5cba24201757b6c407fd564555fb48c751cfa33519b2605c8a7aadd22baf372 + languageName: node + linkType: hard + +"abort-controller@npm:^3.0.0": + version: 3.0.0 + resolution: "abort-controller@npm:3.0.0" + dependencies: + event-target-shim: "npm:^5.0.0" + checksum: 10c0/90ccc50f010250152509a344eb2e71977fbf8db0ab8f1061197e3275ddf6c61a41a6edfd7b9409c664513131dd96e962065415325ef23efa5db931b382d24ca5 + languageName: node + linkType: hard + +"agent-base@npm:^7.1.0, agent-base@npm:^7.1.2": + version: 7.1.3 + resolution: "agent-base@npm:7.1.3" + checksum: 10c0/6192b580c5b1d8fb399b9c62bf8343d76654c2dd62afcb9a52b2cf44a8b6ace1e3b704d3fe3547d91555c857d3df02603341ff2cb961b9cfe2b12f9f3c38ee11 + languageName: node + linkType: hard + +"agentkeepalive@npm:^4.2.1": + version: 4.5.0 + resolution: "agentkeepalive@npm:4.5.0" + dependencies: + humanize-ms: "npm:^1.2.1" + checksum: 10c0/394ea19f9710f230722996e156607f48fdf3a345133b0b1823244b7989426c16019a428b56c82d3eabef616e938812981d9009f4792ecc66bd6a59e991c62612 + languageName: node + linkType: hard + +"ansi-escapes@npm:^4.2.1": + version: 4.3.2 + resolution: "ansi-escapes@npm:4.3.2" + dependencies: + type-fest: "npm:^0.21.3" + checksum: 10c0/da917be01871525a3dfcf925ae2977bc59e8c513d4423368645634bf5d4ceba5401574eb705c1e92b79f7292af5a656f78c5725a4b0e1cec97c4b413705c1d50 + languageName: node + linkType: hard + +"ansi-regex@npm:^5.0.1": + version: 5.0.1 + resolution: "ansi-regex@npm:5.0.1" + checksum: 10c0/9a64bb8627b434ba9327b60c027742e5d17ac69277960d041898596271d992d4d52ba7267a63ca10232e29f6107fc8a835f6ce8d719b88c5f8493f8254813737 + languageName: node + linkType: hard + +"ansi-regex@npm:^6.0.1": + version: 6.1.0 + resolution: "ansi-regex@npm:6.1.0" + checksum: 10c0/a91daeddd54746338478eef88af3439a7edf30f8e23196e2d6ed182da9add559c601266dbef01c2efa46a958ad6f1f8b176799657616c702b5b02e799e7fd8dc + languageName: node + linkType: hard + +"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": + version: 4.3.0 + resolution: "ansi-styles@npm:4.3.0" + dependencies: + color-convert: "npm:^2.0.1" + checksum: 10c0/895a23929da416f2bd3de7e9cb4eabd340949328ab85ddd6e484a637d8f6820d485f53933446f5291c3b760cbc488beb8e88573dd0f9c7daf83dccc8fe81b041 + languageName: node + linkType: hard + +"ansi-styles@npm:^5.0.0": + version: 5.2.0 + resolution: "ansi-styles@npm:5.2.0" + checksum: 10c0/9c4ca80eb3c2fb7b33841c210d2f20807f40865d27008d7c3f707b7f95cab7d67462a565e2388ac3285b71cb3d9bb2173de8da37c57692a362885ec34d6e27df + languageName: node + linkType: hard + +"ansi-styles@npm:^6.1.0": + version: 6.2.1 + resolution: "ansi-styles@npm:6.2.1" + checksum: 10c0/5d1ec38c123984bcedd996eac680d548f31828bd679a66db2bdf11844634dde55fec3efa9c6bb1d89056a5e79c1ac540c4c784d592ea1d25028a92227d2f2d5c + languageName: node + linkType: hard + +"anymatch@npm:^1.3.0": + version: 1.3.2 + resolution: "anymatch@npm:1.3.2" + dependencies: + micromatch: "npm:^2.1.5" + normalize-path: "npm:^2.0.0" + checksum: 10c0/aa1eae8ef5076cfecefef1983811b4666b365513d60dfcb30756556cc7e8547fae2654328509beedb812b211da4785df5d42ca720aa24d52e745509ad3a4b2a8 + languageName: node + linkType: hard + +"anymatch@npm:^3.0.3": + version: 3.1.3 + resolution: "anymatch@npm:3.1.3" + dependencies: + normalize-path: "npm:^3.0.0" + picomatch: "npm:^2.0.4" + checksum: 10c0/57b06ae984bc32a0d22592c87384cd88fe4511b1dd7581497831c56d41939c8a001b28e7b853e1450f2bf61992dfcaa8ae2d0d161a0a90c4fb631ef07098fbac + languageName: node + linkType: hard + +"argparse@npm:^1.0.7": + version: 1.0.10 + resolution: "argparse@npm:1.0.10" + dependencies: + sprintf-js: "npm:~1.0.2" + checksum: 10c0/b2972c5c23c63df66bca144dbc65d180efa74f25f8fd9b7d9a0a6c88ae839db32df3d54770dcb6460cf840d232b60695d1a6b1053f599d84e73f7437087712de + languageName: node + linkType: hard + +"argparse@npm:^2.0.1": + version: 2.0.1 + resolution: "argparse@npm:2.0.1" + checksum: 10c0/c5640c2d89045371c7cedd6a70212a04e360fd34d6edeae32f6952c63949e3525ea77dbec0289d8213a99bbaeab5abfa860b5c12cf88a2e6cf8106e90dd27a7e + languageName: node + linkType: hard + +"arr-diff@npm:^2.0.0": + version: 2.0.0 + resolution: "arr-diff@npm:2.0.0" + dependencies: + arr-flatten: "npm:^1.0.1" + checksum: 10c0/d79592bf2b621b9c038e7a697357174409fceb63658529ea3b2d2d53a2918160e6bebb2e6ae756eb53330f07c11b052752377905d743a8928f9d3858598cafa2 + languageName: node + linkType: hard + +"arr-diff@npm:^4.0.0": + version: 4.0.0 + resolution: "arr-diff@npm:4.0.0" + checksum: 10c0/67b80067137f70c89953b95f5c6279ad379c3ee39f7143578e13bd51580a40066ee2a55da066e22d498dce10f68c2d70056d7823f972fab99dfbf4c78d0bc0f7 + languageName: node + linkType: hard + +"arr-flatten@npm:^1.0.1, arr-flatten@npm:^1.1.0": + version: 1.1.0 + resolution: "arr-flatten@npm:1.1.0" + checksum: 10c0/bef53be02ed3bc58f202b3861a5b1eb6e1ae4fecf39c3ad4d15b1e0433f941077d16e019a33312d820844b0661777322acbb7d0c447b04d9bdf7d6f9c532548a + languageName: node + linkType: hard + +"arr-union@npm:^3.1.0": + version: 3.1.0 + resolution: "arr-union@npm:3.1.0" + checksum: 10c0/7d5aa05894e54aa93c77c5726c1dd5d8e8d3afe4f77983c0aa8a14a8a5cbe8b18f0cf4ecaa4ac8c908ef5f744d2cbbdaa83fd6e96724d15fea56cfa7f5efdd51 + languageName: node + linkType: hard + +"array-find-index@npm:^1.0.1": + version: 1.0.2 + resolution: "array-find-index@npm:1.0.2" + checksum: 10c0/86b9485c74ddd324feab807e10a6de3f9c1683856267236fac4bb4d4667ada6463e106db3f6c540ae6b720e0442b590ec701d13676df4c6af30ebf4da09b4f57 + languageName: node + linkType: hard + +"array-unique@npm:^0.2.1": + version: 0.2.1 + resolution: "array-unique@npm:0.2.1" + checksum: 10c0/e72f4c45a432b44f9785b24bb5742648ed68f074a74f7bcf65b3f47630cd6aea05e532ab921f1a5f57266512a02183440b42f683dab95636bb81c8d6e2758641 + languageName: node + linkType: hard + +"array-unique@npm:^0.3.2": + version: 0.3.2 + resolution: "array-unique@npm:0.3.2" + checksum: 10c0/dbf4462cdba8a4b85577be07705210b3d35be4b765822a3f52962d907186617638ce15e0603a4fefdcf82f4cbbc9d433f8cbbd6855148a68872fa041b6474121 + languageName: node + linkType: hard + +"assign-symbols@npm:^1.0.0": + version: 1.0.0 + resolution: "assign-symbols@npm:1.0.0" + checksum: 10c0/29a654b8a6da6889a190d0d0efef4b1bfb5948fa06cbc245054aef05139f889f2f7c75b989917e3fde853fc4093b88048e4de8578a73a76f113d41bfd66e5775 + languageName: node + linkType: hard + +"async-each@npm:^1.0.0": + version: 1.0.6 + resolution: "async-each@npm:1.0.6" + checksum: 10c0/d4e45e8f077e20e015952c065ceae75f82b30ee2d4a8e56a5c454ae44331aaa009d8c94fe043ba254c177bffae9f6ebeefebb7daf9f7ce4d27fac0274dc328ae + languageName: node + linkType: hard + +"async@npm:^3.2.3": + version: 3.2.6 + resolution: "async@npm:3.2.6" + checksum: 10c0/36484bb15ceddf07078688d95e27076379cc2f87b10c03b6dd8a83e89475a3c8df5848859dd06a4c95af1e4c16fc973de0171a77f18ea00be899aca2a4f85e70 + languageName: node + linkType: hard + +"asynckit@npm:^0.4.0": + version: 0.4.0 + resolution: "asynckit@npm:0.4.0" + checksum: 10c0/d73e2ddf20c4eb9337e1b3df1a0f6159481050a5de457c55b14ea2e5cb6d90bb69e004c9af54737a5ee0917fcf2c9e25de67777bbe58261847846066ba75bc9d + languageName: node + linkType: hard + +"atob@npm:^2.1.2": + version: 2.1.2 + resolution: "atob@npm:2.1.2" + bin: + atob: bin/atob.js + checksum: 10c0/ada635b519dc0c576bb0b3ca63a73b50eefacf390abb3f062558342a8d68f2db91d0c8db54ce81b0d89de3b0f000de71f3ae7d761fd7d8cc624278fe443d6c7e + languageName: node + linkType: hard + +"babel-jest@npm:^29.7.0": + version: 29.7.0 + resolution: "babel-jest@npm:29.7.0" + dependencies: + "@jest/transform": "npm:^29.7.0" + "@types/babel__core": "npm:^7.1.14" + babel-plugin-istanbul: "npm:^6.1.1" + babel-preset-jest: "npm:^29.6.3" + chalk: "npm:^4.0.0" + graceful-fs: "npm:^4.2.9" + slash: "npm:^3.0.0" + peerDependencies: + "@babel/core": ^7.8.0 + checksum: 10c0/2eda9c1391e51936ca573dd1aedfee07b14c59b33dbe16ef347873ddd777bcf6e2fc739681e9e9661ab54ef84a3109a03725be2ac32cd2124c07ea4401cbe8c1 + languageName: node + linkType: hard + +"babel-plugin-istanbul@npm:^6.1.1": + version: 6.1.1 + resolution: "babel-plugin-istanbul@npm:6.1.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.0.0" + "@istanbuljs/load-nyc-config": "npm:^1.0.0" + "@istanbuljs/schema": "npm:^0.1.2" + istanbul-lib-instrument: "npm:^5.0.4" + test-exclude: "npm:^6.0.0" + checksum: 10c0/1075657feb705e00fd9463b329921856d3775d9867c5054b449317d39153f8fbcebd3e02ebf00432824e647faff3683a9ca0a941325ef1afe9b3c4dd51b24beb + languageName: node + linkType: hard + +"babel-plugin-jest-hoist@npm:^29.6.3": + version: 29.6.3 + resolution: "babel-plugin-jest-hoist@npm:29.6.3" + dependencies: + "@babel/template": "npm:^7.3.3" + "@babel/types": "npm:^7.3.3" + "@types/babel__core": "npm:^7.1.14" + "@types/babel__traverse": "npm:^7.0.6" + checksum: 10c0/7e6451caaf7dce33d010b8aafb970e62f1b0c0b57f4978c37b0d457bbcf0874d75a395a102daf0bae0bd14eafb9f6e9a165ee5e899c0a4f1f3bb2e07b304ed2e + languageName: node + linkType: hard + +"babel-preset-current-node-syntax@npm:^1.0.0": + version: 1.1.0 + resolution: "babel-preset-current-node-syntax@npm:1.1.0" + dependencies: + "@babel/plugin-syntax-async-generators": "npm:^7.8.4" + "@babel/plugin-syntax-bigint": "npm:^7.8.3" + "@babel/plugin-syntax-class-properties": "npm:^7.12.13" + "@babel/plugin-syntax-class-static-block": "npm:^7.14.5" + "@babel/plugin-syntax-import-attributes": "npm:^7.24.7" + "@babel/plugin-syntax-import-meta": "npm:^7.10.4" + "@babel/plugin-syntax-json-strings": "npm:^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" + "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" + "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" + "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" + "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" + "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" + "@babel/plugin-syntax-top-level-await": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/0b838d4412e3322cb4436f246e24e9c00bebcedfd8f00a2f51489db683bd35406bbd55a700759c28d26959c6e03f84dd6a1426f576f440267c1d7a73c5717281 + languageName: node + linkType: hard + +"babel-preset-jest@npm:^29.6.3": + version: 29.6.3 + resolution: "babel-preset-jest@npm:29.6.3" + dependencies: + babel-plugin-jest-hoist: "npm:^29.6.3" + babel-preset-current-node-syntax: "npm:^1.0.0" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/ec5fd0276b5630b05f0c14bb97cc3815c6b31600c683ebb51372e54dcb776cff790bdeeabd5b8d01ede375a040337ccbf6a3ccd68d3a34219125945e167ad943 + languageName: node + linkType: hard + +"babel-runtime@npm:^6.9.2": + version: 6.26.0 + resolution: "babel-runtime@npm:6.26.0" + dependencies: + core-js: "npm:^2.4.0" + regenerator-runtime: "npm:^0.11.0" + checksum: 10c0/caa752004936b1463765ed3199c52f6a55d0613b9bed108743d6f13ca532b821d4ea9decc4be1b583193164462b1e3e7eefdfa36b15c72e7daac58dd72c1772f + languageName: node + linkType: hard + +"balanced-match@npm:^1.0.0": + version: 1.0.2 + resolution: "balanced-match@npm:1.0.2" + checksum: 10c0/9308baf0a7e4838a82bbfd11e01b1cb0f0cf2893bc1676c27c2a8c0e70cbae1c59120c3268517a8ae7fb6376b4639ef81ca22582611dbee4ed28df945134aaee + languageName: node + linkType: hard + +"base-64@npm:^0.1.0": + version: 0.1.0 + resolution: "base-64@npm:0.1.0" + checksum: 10c0/fe0dcf076e823f04db7ee9b02495be08a91c445fbc6db03cb9913be9680e2fcc0af8b74459041fe08ad16800b1f65a549501d8f08696a8a6d32880789b7de69d + languageName: node + linkType: hard + +"base64-js@npm:^1.3.1, base64-js@npm:^1.5.1": + version: 1.5.1 + resolution: "base64-js@npm:1.5.1" + checksum: 10c0/f23823513b63173a001030fae4f2dabe283b99a9d324ade3ad3d148e218134676f1ee8568c877cd79ec1c53158dcf2d2ba527a97c606618928ba99dd930102bf + languageName: node + linkType: hard + +"base@npm:^0.11.1": + version: 0.11.2 + resolution: "base@npm:0.11.2" + dependencies: + cache-base: "npm:^1.0.1" + class-utils: "npm:^0.3.5" + component-emitter: "npm:^1.2.1" + define-property: "npm:^1.0.0" + isobject: "npm:^3.0.1" + mixin-deep: "npm:^1.2.0" + pascalcase: "npm:^0.1.1" + checksum: 10c0/30a2c0675eb52136b05ef496feb41574d9f0bb2d6d677761da579c00a841523fccf07f1dbabec2337b5f5750f428683b8ca60d89e56a1052c4ae1c0cd05de64d + languageName: node + linkType: hard + +"binary-extensions@npm:^1.0.0": + version: 1.13.1 + resolution: "binary-extensions@npm:1.13.1" + checksum: 10c0/2d616938ac23d828ec3fbe0dea429b566fd2c137ddc38f166f16561ccd58029deac3fa9fddb489ab13d679c8fb5f1bd0e82824041299e5e39d8dd3cc68fbb9f9 + languageName: node + linkType: hard + +"binary-extensions@npm:^2.2.0": + version: 2.3.0 + resolution: "binary-extensions@npm:2.3.0" + checksum: 10c0/75a59cafc10fb12a11d510e77110c6c7ae3f4ca22463d52487709ca7f18f69d886aa387557cc9864fbdb10153d0bdb4caacabf11541f55e89ed6e18d12ece2b5 + languageName: node + linkType: hard + +"binary-search@npm:^1.3.5": + version: 1.3.6 + resolution: "binary-search@npm:1.3.6" + checksum: 10c0/786a770e3411cf563c9c7829e2854d79583a207b8faaa5022f93352893e1d06035ae5d80de1b168dcbd9d346fdb0dd2e3d7fcdf309b3a63dc027e92624da32a0 + languageName: node + linkType: hard + +"bindings@npm:^1.5.0": + version: 1.5.0 + resolution: "bindings@npm:1.5.0" + dependencies: + file-uri-to-path: "npm:1.0.0" + checksum: 10c0/3dab2491b4bb24124252a91e656803eac24292473e56554e35bbfe3cc1875332cfa77600c3bac7564049dc95075bf6fcc63a4609920ff2d64d0fe405fcf0d4ba + languageName: node + linkType: hard + +"bl@npm:^1.0.0": + version: 1.2.3 + resolution: "bl@npm:1.2.3" + dependencies: + readable-stream: "npm:^2.3.5" + safe-buffer: "npm:^5.1.1" + checksum: 10c0/ee6478864d3b1295614f269f3fbabeb2362a2f2fc7f8dc2f6c1f944a278d84e0572ecefd6d0b0736d7418763f98dc3b2738253191ea9e98e4b08de211cfac0a6 + languageName: node + linkType: hard + +"bl@npm:^4.0.3": + version: 4.1.0 + resolution: "bl@npm:4.1.0" + dependencies: + buffer: "npm:^5.5.0" + inherits: "npm:^2.0.4" + readable-stream: "npm:^3.4.0" + checksum: 10c0/02847e1d2cb089c9dc6958add42e3cdeaf07d13f575973963335ac0fdece563a50ac770ac4c8fa06492d2dd276f6cc3b7f08c7cd9c7a7ad0f8d388b2a28def5f + languageName: node + linkType: hard + +"brace-expansion@npm:^1.1.7": + version: 1.1.11 + resolution: "brace-expansion@npm:1.1.11" + dependencies: + balanced-match: "npm:^1.0.0" + concat-map: "npm:0.0.1" + checksum: 10c0/695a56cd058096a7cb71fb09d9d6a7070113c7be516699ed361317aca2ec169f618e28b8af352e02ab4233fb54eb0168460a40dc320bab0034b36ab59aaad668 + languageName: node + linkType: hard + +"brace-expansion@npm:^2.0.1": + version: 2.0.1 + resolution: "brace-expansion@npm:2.0.1" + dependencies: + balanced-match: "npm:^1.0.0" + checksum: 10c0/b358f2fe060e2d7a87aa015979ecea07f3c37d4018f8d6deb5bd4c229ad3a0384fe6029bb76cd8be63c81e516ee52d1a0673edbe2023d53a5191732ae3c3e49f + languageName: node + linkType: hard + +"braces@npm:^1.8.2": + version: 1.8.5 + resolution: "braces@npm:1.8.5" + dependencies: + expand-range: "npm:^1.8.1" + preserve: "npm:^0.2.0" + repeat-element: "npm:^1.1.2" + checksum: 10c0/41092fe0f5dbb522f013963fa4432fbef3323a92ee8c1a6b9b6681fc05525b8541968b525632aa9df217daa6307fe526e9ce994054d4308abd0627a7d26e4745 + languageName: node + linkType: hard + +"braces@npm:^2.3.1": + version: 2.3.2 + resolution: "braces@npm:2.3.2" + dependencies: + arr-flatten: "npm:^1.1.0" + array-unique: "npm:^0.3.2" + extend-shallow: "npm:^2.0.1" + fill-range: "npm:^4.0.0" + isobject: "npm:^3.0.1" + repeat-element: "npm:^1.1.2" + snapdragon: "npm:^0.8.1" + snapdragon-node: "npm:^2.0.1" + split-string: "npm:^3.0.2" + to-regex: "npm:^3.0.1" + checksum: 10c0/72b27ea3ea2718f061c29e70fd6e17606e37c65f5801abddcf0b0052db1de7d60f3bf92cfc220ab57b44bd0083a5f69f9d03b3461d2816cfe9f9398207acc728 + languageName: node + linkType: hard + +"braces@npm:^3.0.3": + version: 3.0.3 + resolution: "braces@npm:3.0.3" + dependencies: + fill-range: "npm:^7.1.1" + checksum: 10c0/7c6dfd30c338d2997ba77500539227b9d1f85e388a5f43220865201e407e076783d0881f2d297b9f80951b4c957fcf0b51c1d2d24227631643c3f7c284b0aa04 + languageName: node + linkType: hard + +"browserslist@npm:^4.24.0": + version: 4.24.3 + resolution: "browserslist@npm:4.24.3" + dependencies: + caniuse-lite: "npm:^1.0.30001688" + electron-to-chromium: "npm:^1.5.73" + node-releases: "npm:^2.0.19" + update-browserslist-db: "npm:^1.1.1" + bin: + browserslist: cli.js + checksum: 10c0/bab261ef7b6e1656a719a9fa31240ae7ce4d5ba68e479f6b11e348d819346ab4c0ff6f4821f43adcc9c193a734b186775a83b37979e70a69d182965909fe569a + languageName: node + linkType: hard + +"bs-logger@npm:^0.2.6": + version: 0.2.6 + resolution: "bs-logger@npm:0.2.6" + dependencies: + fast-json-stable-stringify: "npm:2.x" + checksum: 10c0/80e89aaaed4b68e3374ce936f2eb097456a0dddbf11f75238dbd53140b1e39259f0d248a5089ed456f1158984f22191c3658d54a713982f676709fbe1a6fa5a0 + languageName: node + linkType: hard + +"bser@npm:2.1.1": + version: 2.1.1 + resolution: "bser@npm:2.1.1" + dependencies: + node-int64: "npm:^0.4.0" + checksum: 10c0/24d8dfb7b6d457d73f32744e678a60cc553e4ec0e9e1a01cf614b44d85c3c87e188d3cc78ef0442ce5032ee6818de20a0162ba1074725c0d08908f62ea979227 + languageName: node + linkType: hard + +"buffer-alloc-unsafe@npm:^1.1.0": + version: 1.1.0 + resolution: "buffer-alloc-unsafe@npm:1.1.0" + checksum: 10c0/06b9298c9369621a830227c3797ceb3ff5535e323946d7b39a7398fed8b3243798259b3c85e287608c5aad35ccc551cec1a0a5190cc8f39652e8eee25697fc9c + languageName: node + linkType: hard + +"buffer-alloc@npm:^1.2.0": + version: 1.2.0 + resolution: "buffer-alloc@npm:1.2.0" + dependencies: + buffer-alloc-unsafe: "npm:^1.1.0" + buffer-fill: "npm:^1.0.0" + checksum: 10c0/09d87dd53996342ccfbeb2871257d8cdb25ce9ee2259adc95c6490200cd6e528c5fbae8f30bcc323fe8d8efb0fe541e4ac3bbe9ee3f81c6b7c4b27434cc02ab4 + languageName: node + linkType: hard + +"buffer-crc32@npm:~0.2.3": + version: 0.2.13 + resolution: "buffer-crc32@npm:0.2.13" + checksum: 10c0/cb0a8ddf5cf4f766466db63279e47761eb825693eeba6a5a95ee4ec8cb8f81ede70aa7f9d8aeec083e781d47154290eb5d4d26b3f7a465ec57fb9e7d59c47150 + languageName: node + linkType: hard + +"buffer-fill@npm:^1.0.0": + version: 1.0.0 + resolution: "buffer-fill@npm:1.0.0" + checksum: 10c0/55b5654fbbf2d7ceb4991bb537f5e5b5b5b9debca583fee416a74fcec47c16d9e7a90c15acd27577da7bd750b7fa6396e77e7c221e7af138b6d26242381c6e4d + languageName: node + linkType: hard + +"buffer-from@npm:^1.0.0": + version: 1.1.2 + resolution: "buffer-from@npm:1.1.2" + checksum: 10c0/124fff9d66d691a86d3b062eff4663fe437a9d9ee4b47b1b9e97f5a5d14f6d5399345db80f796827be7c95e70a8e765dd404b7c3ff3b3324f98e9b0c8826cc34 + languageName: node + linkType: hard + +"buffer@npm:^5.2.1, buffer@npm:^5.5.0": + version: 5.7.1 + resolution: "buffer@npm:5.7.1" + dependencies: + base64-js: "npm:^1.3.1" + ieee754: "npm:^1.1.13" + checksum: 10c0/27cac81cff434ed2876058d72e7c4789d11ff1120ef32c9de48f59eab58179b66710c488987d295ae89a228f835fc66d088652dffeb8e3ba8659f80eb091d55e + languageName: node + linkType: hard + +"cacache@npm:^19.0.1": + version: 19.0.1 + resolution: "cacache@npm:19.0.1" + dependencies: + "@npmcli/fs": "npm:^4.0.0" + fs-minipass: "npm:^3.0.0" + glob: "npm:^10.2.2" + lru-cache: "npm:^10.0.1" + minipass: "npm:^7.0.3" + minipass-collect: "npm:^2.0.1" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + p-map: "npm:^7.0.2" + ssri: "npm:^12.0.0" + tar: "npm:^7.4.3" + unique-filename: "npm:^4.0.0" + checksum: 10c0/01f2134e1bd7d3ab68be851df96c8d63b492b1853b67f2eecb2c37bb682d37cb70bb858a16f2f0554d3c0071be6dfe21456a1ff6fa4b7eed996570d6a25ffe9c + languageName: node + linkType: hard + +"cache-base@npm:^1.0.1": + version: 1.0.1 + resolution: "cache-base@npm:1.0.1" + dependencies: + collection-visit: "npm:^1.0.0" + component-emitter: "npm:^1.2.1" + get-value: "npm:^2.0.6" + has-value: "npm:^1.0.0" + isobject: "npm:^3.0.1" + set-value: "npm:^2.0.0" + to-object-path: "npm:^0.3.0" + union-value: "npm:^1.0.0" + unset-value: "npm:^1.0.0" + checksum: 10c0/a7142e25c73f767fa520957dcd179b900b86eac63b8cfeaa3b2a35e18c9ca5968aa4e2d2bed7a3e7efd10f13be404344cfab3a4156217e71f9bdb95940bb9c8c + languageName: node + linkType: hard + +"callsites@npm:^3.0.0": + version: 3.1.0 + resolution: "callsites@npm:3.1.0" + checksum: 10c0/fff92277400eb06c3079f9e74f3af120db9f8ea03bad0e84d9aede54bbe2d44a56cccb5f6cf12211f93f52306df87077ecec5b712794c5a9b5dac6d615a3f301 + languageName: node + linkType: hard + +"camelcase-keys@npm:^2.0.0": + version: 2.1.0 + resolution: "camelcase-keys@npm:2.1.0" + dependencies: + camelcase: "npm:^2.0.0" + map-obj: "npm:^1.0.0" + checksum: 10c0/d9431f8b5ac52644cfc45377c0d3897f045137d645c8890bd2bfb48c282d22e76644974198dbba3a2d96b33f9bf3af07aacb712b0dd6d2671330a7e2531b72f9 + languageName: node + linkType: hard + +"camelcase@npm:6, camelcase@npm:^6.2.0": + version: 6.3.0 + resolution: "camelcase@npm:6.3.0" + checksum: 10c0/0d701658219bd3116d12da3eab31acddb3f9440790c0792e0d398f0a520a6a4058018e546862b6fba89d7ae990efaeb97da71e1913e9ebf5a8b5621a3d55c710 + languageName: node + linkType: hard + +"camelcase@npm:^2.0.0": + version: 2.1.1 + resolution: "camelcase@npm:2.1.1" + checksum: 10c0/610db65fa7dd50a400525ec2188fd65a1939dda4afe5de7d08608670013269c3743c3737fb0f138d1df8aa74e257cc83e3b756e776b604af16dac297b4a0d054 + languageName: node + linkType: hard + +"camelcase@npm:^5.3.1": + version: 5.3.1 + resolution: "camelcase@npm:5.3.1" + checksum: 10c0/92ff9b443bfe8abb15f2b1513ca182d16126359ad4f955ebc83dc4ddcc4ef3fdd2c078bc223f2673dc223488e75c99b16cc4d056624374b799e6a1555cf61b23 + languageName: node + linkType: hard + +"caniuse-lite@npm:^1.0.30001688": + version: 1.0.30001690 + resolution: "caniuse-lite@npm:1.0.30001690" + checksum: 10c0/646bd469032afa90400a84dec30a2b00a6eda62c03ead358117e3f884cda8aacec02ec058a6dbee5eaf9714f83e483b9b0eb4fb42febb8076569f5ca40f1d347 + languageName: node + linkType: hard + +"caw@npm:^2.0.0": + version: 2.0.1 + resolution: "caw@npm:2.0.1" + dependencies: + get-proxy: "npm:^2.0.0" + isurl: "npm:^1.0.0-alpha5" + tunnel-agent: "npm:^0.6.0" + url-to-options: "npm:^1.0.1" + checksum: 10c0/ba9f6560920be553451298e34d417a4e47e914f0feefbd45acf66471d3d989f669379d04b2e76d29dbca7a923b0b94b988aab7e8512b915a74b1affe7160b2e7 + languageName: node + linkType: hard + +"chalk@npm:^4.0.0, chalk@npm:^4.0.2, chalk@npm:^4.1.0": + version: 4.1.2 + resolution: "chalk@npm:4.1.2" + dependencies: + ansi-styles: "npm:^4.1.0" + supports-color: "npm:^7.1.0" + checksum: 10c0/4a3fef5cc34975c898ffe77141450f679721df9dde00f6c304353fa9c8b571929123b26a0e4617bde5018977eb655b31970c297b91b63ee83bb82aeb04666880 + languageName: node + linkType: hard + +"char-regex@npm:^1.0.2": + version: 1.0.2 + resolution: "char-regex@npm:1.0.2" + checksum: 10c0/57a09a86371331e0be35d9083ba429e86c4f4648ecbe27455dbfb343037c16ee6fdc7f6b61f433a57cc5ded5561d71c56a150e018f40c2ffb7bc93a26dae341e + languageName: node + linkType: hard + +"charenc@npm:0.0.2": + version: 0.0.2 + resolution: "charenc@npm:0.0.2" + checksum: 10c0/a45ec39363a16799d0f9365c8dd0c78e711415113c6f14787a22462ef451f5013efae8a28f1c058f81fc01f2a6a16955f7a5fd0cd56247ce94a45349c89877d8 + languageName: node + linkType: hard + +"chokidar@npm:^1.6.0": + version: 1.7.0 + resolution: "chokidar@npm:1.7.0" + dependencies: + anymatch: "npm:^1.3.0" + async-each: "npm:^1.0.0" + fsevents: "npm:^1.0.0" + glob-parent: "npm:^2.0.0" + inherits: "npm:^2.0.1" + is-binary-path: "npm:^1.0.0" + is-glob: "npm:^2.0.0" + path-is-absolute: "npm:^1.0.0" + readdirp: "npm:^2.0.0" + dependenciesMeta: + fsevents: + optional: true + checksum: 10c0/d3f82bc7fba1d5793a05ae494c30536cf6e4b23364a610e8bee8ae49dbaf963a67f70c627a943ab538cab252f6ac1862c6012885bccd06a10487438de5ae8a15 + languageName: node + linkType: hard + +"chownr@npm:^1.1.1": + version: 1.1.4 + resolution: "chownr@npm:1.1.4" + checksum: 10c0/ed57952a84cc0c802af900cf7136de643d3aba2eecb59d29344bc2f3f9bf703a301b9d84cdc71f82c3ffc9ccde831b0d92f5b45f91727d6c9da62f23aef9d9db + languageName: node + linkType: hard + +"chownr@npm:^3.0.0": + version: 3.0.0 + resolution: "chownr@npm:3.0.0" + checksum: 10c0/43925b87700f7e3893296c8e9c56cc58f926411cce3a6e5898136daaf08f08b9a8eb76d37d3267e707d0dcc17aed2e2ebdf5848c0c3ce95cf910a919935c1b10 + languageName: node + linkType: hard + +"ci-info@npm:^3.2.0": + version: 3.9.0 + resolution: "ci-info@npm:3.9.0" + checksum: 10c0/6f0109e36e111684291d46123d491bc4e7b7a1934c3a20dea28cba89f1d4a03acd892f5f6a81ed3855c38647e285a150e3c9ba062e38943bef57fee6c1554c3a + languageName: node + linkType: hard + +"cjs-module-lexer@npm:^1.0.0": + version: 1.4.1 + resolution: "cjs-module-lexer@npm:1.4.1" + checksum: 10c0/5a7d8279629c9ba8ccf38078c2fed75b7737973ced22b9b5a54180efa57fb2fe2bb7bec6aec55e3b8f3f5044f5d7b240347ad9bd285e7c3d0ee5b0a1d0504dfc + languageName: node + linkType: hard + +"class-utils@npm:^0.3.5": + version: 0.3.6 + resolution: "class-utils@npm:0.3.6" + dependencies: + arr-union: "npm:^3.1.0" + define-property: "npm:^0.2.5" + isobject: "npm:^3.0.0" + static-extend: "npm:^0.1.1" + checksum: 10c0/d44f4afc7a3e48dba4c2d3fada5f781a1adeeff371b875c3b578bc33815c6c29d5d06483c2abfd43a32d35b104b27b67bfa39c2e8a422fa858068bd756cfbd42 + languageName: node + linkType: hard + +"cliui@npm:^8.0.1": + version: 8.0.1 + resolution: "cliui@npm:8.0.1" + dependencies: + string-width: "npm:^4.2.0" + strip-ansi: "npm:^6.0.1" + wrap-ansi: "npm:^7.0.0" + checksum: 10c0/4bda0f09c340cbb6dfdc1ed508b3ca080f12992c18d68c6be4d9cf51756033d5266e61ec57529e610dacbf4da1c634423b0c1b11037709cc6b09045cbd815df5 + languageName: node + linkType: hard + +"co@npm:^4.6.0": + version: 4.6.0 + resolution: "co@npm:4.6.0" + checksum: 10c0/c0e85ea0ca8bf0a50cbdca82efc5af0301240ca88ebe3644a6ffb8ffe911f34d40f8fbcf8f1d52c5ddd66706abd4d3bfcd64259f1e8e2371d4f47573b0dc8c28 + languageName: node + linkType: hard + +"collect-v8-coverage@npm:^1.0.0": + version: 1.0.2 + resolution: "collect-v8-coverage@npm:1.0.2" + checksum: 10c0/ed7008e2e8b6852c5483b444a3ae6e976e088d4335a85aa0a9db2861c5f1d31bd2d7ff97a60469b3388deeba661a619753afbe201279fb159b4b9548ab8269a1 + languageName: node + linkType: hard + +"collection-visit@npm:^1.0.0": + version: 1.0.0 + resolution: "collection-visit@npm:1.0.0" + dependencies: + map-visit: "npm:^1.0.0" + object-visit: "npm:^1.0.0" + checksum: 10c0/add72a8d1c37cb90e53b1aaa2c31bf1989bfb733f0b02ce82c9fa6828c7a14358dba2e4f8e698c02f69e424aeccae1ffb39acdeaf872ade2f41369e84a2fcf8a + languageName: node + linkType: hard + +"color-convert@npm:^2.0.1": + version: 2.0.1 + resolution: "color-convert@npm:2.0.1" + dependencies: + color-name: "npm:~1.1.4" + checksum: 10c0/37e1150172f2e311fe1b2df62c6293a342ee7380da7b9cfdba67ea539909afbd74da27033208d01d6d5cfc65ee7868a22e18d7e7648e004425441c0f8a15a7d7 + languageName: node + linkType: hard + +"color-name@npm:~1.1.4": + version: 1.1.4 + resolution: "color-name@npm:1.1.4" + checksum: 10c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95 + languageName: node + linkType: hard + +"combined-stream@npm:^1.0.8": + version: 1.0.8 + resolution: "combined-stream@npm:1.0.8" + dependencies: + delayed-stream: "npm:~1.0.0" + checksum: 10c0/0dbb829577e1b1e839fa82b40c07ffaf7de8a09b935cadd355a73652ae70a88b4320db322f6634a4ad93424292fa80973ac6480986247f1734a1137debf271d5 + languageName: node + linkType: hard + +"commander@npm:^10.0.1": + version: 10.0.1 + resolution: "commander@npm:10.0.1" + checksum: 10c0/53f33d8927758a911094adadda4b2cbac111a5b377d8706700587650fd8f45b0bbe336de4b5c3fe47fd61f420a3d9bd452b6e0e6e5600a7e74d7bf0174f6efe3 + languageName: node + linkType: hard + +"commander@npm:^2.8.1": + version: 2.20.3 + resolution: "commander@npm:2.20.3" + checksum: 10c0/74c781a5248c2402a0a3e966a0a2bba3c054aad144f5c023364be83265e796b20565aa9feff624132ff629aa64e16999fa40a743c10c12f7c61e96a794b99288 + languageName: node + linkType: hard + +"component-emitter@npm:^1.2.1": + version: 1.3.1 + resolution: "component-emitter@npm:1.3.1" + checksum: 10c0/e4900b1b790b5e76b8d71b328da41482118c0f3523a516a41be598dc2785a07fd721098d9bf6e22d89b19f4fa4e1025160dc00317ea111633a3e4f75c2b86032 + languageName: node + linkType: hard + +"concat-map@npm:0.0.1": + version: 0.0.1 + resolution: "concat-map@npm:0.0.1" + checksum: 10c0/c996b1cfdf95b6c90fee4dae37e332c8b6eb7d106430c17d538034c0ad9a1630cb194d2ab37293b1bdd4d779494beee7786d586a50bd9376fd6f7bcc2bd4c98f + languageName: node + linkType: hard + +"config-chain@npm:^1.1.11": + version: 1.1.13 + resolution: "config-chain@npm:1.1.13" + dependencies: + ini: "npm:^1.3.4" + proto-list: "npm:~1.2.1" + checksum: 10c0/39d1df18739d7088736cc75695e98d7087aea43646351b028dfabd5508d79cf6ef4c5bcd90471f52cd87ae470d1c5490c0a8c1a292fbe6ee9ff688061ea0963e + languageName: node + linkType: hard + +"content-disposition@npm:^0.5.2": + version: 0.5.4 + resolution: "content-disposition@npm:0.5.4" + dependencies: + safe-buffer: "npm:5.2.1" + checksum: 10c0/bac0316ebfeacb8f381b38285dc691c9939bf0a78b0b7c2d5758acadad242d04783cee5337ba7d12a565a19075af1b3c11c728e1e4946de73c6ff7ce45f3f1bb + languageName: node + linkType: hard + +"convert-source-map@npm:^2.0.0": + version: 2.0.0 + resolution: "convert-source-map@npm:2.0.0" + checksum: 10c0/8f2f7a27a1a011cc6cc88cc4da2d7d0cfa5ee0369508baae3d98c260bb3ac520691464e5bbe4ae7cdf09860c1d69ecc6f70c63c6e7c7f7e3f18ec08484dc7d9b + languageName: node + linkType: hard + +"copy-descriptor@npm:^0.1.0": + version: 0.1.1 + resolution: "copy-descriptor@npm:0.1.1" + checksum: 10c0/161f6760b7348c941007a83df180588fe2f1283e0867cc027182734e0f26134e6cc02de09aa24a95dc267b2e2025b55659eef76c8019df27bc2d883033690181 + languageName: node + linkType: hard + +"core-js@npm:^2.4.0": + version: 2.6.12 + resolution: "core-js@npm:2.6.12" + checksum: 10c0/00128efe427789120a06b819adc94cc72b96955acb331cb71d09287baf9bd37bebd191d91f1ee4939c893a050307ead4faea08876f09115112612b6a05684b63 + languageName: node + linkType: hard + +"core-util-is@npm:~1.0.0": + version: 1.0.3 + resolution: "core-util-is@npm:1.0.3" + checksum: 10c0/90a0e40abbddfd7618f8ccd63a74d88deea94e77d0e8dbbea059fa7ebebb8fbb4e2909667fe26f3a467073de1a542ebe6ae4c73a73745ac5833786759cd906c9 + languageName: node + linkType: hard + +"cpu-instructions@npm:^0.0.13": + version: 0.0.13 + resolution: "cpu-instructions@npm:0.0.13" + dependencies: + bindings: "npm:^1.5.0" + node-addon-api: "npm:^8.0.0" + node-gyp-build: "npm:^4.8.1" + prebuildify: "npm:^6.0.1" + peerDependencies: + node-gyp: ^10 + checksum: 10c0/60860df7eee1d4f9c7cd710e634c9f0fdb461a5e90ce2a563e691ed23a290eeb9957562bf5149bf72dea8d2ddaacfdc8b0a824754faae8bc397dccc2902839a5 + languageName: node + linkType: hard + +"cpx@npm:^1.5.0": + version: 1.5.0 + resolution: "cpx@npm:1.5.0" + dependencies: + babel-runtime: "npm:^6.9.2" + chokidar: "npm:^1.6.0" + duplexer: "npm:^0.1.1" + glob: "npm:^7.0.5" + glob2base: "npm:^0.0.12" + minimatch: "npm:^3.0.2" + mkdirp: "npm:^0.5.1" + resolve: "npm:^1.1.7" + safe-buffer: "npm:^5.0.1" + shell-quote: "npm:^1.6.1" + subarg: "npm:^1.0.0" + bin: + cpx: bin/index.js + checksum: 10c0/ab927bad88cfaedcc5257ec4ce9f0ce41a582d878b920b40faeaeb798fc876104006918b9921ac7355b8677976ab63b7b12f5861f8257c96398842508676dbad + languageName: node + linkType: hard + +"create-jest@npm:^29.7.0": + version: 29.7.0 + resolution: "create-jest@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + chalk: "npm:^4.0.0" + exit: "npm:^0.1.2" + graceful-fs: "npm:^4.2.9" + jest-config: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + prompts: "npm:^2.0.1" + bin: + create-jest: bin/create-jest.js + checksum: 10c0/e7e54c280692470d3398f62a6238fd396327e01c6a0757002833f06d00afc62dd7bfe04ff2b9cd145264460e6b4d1eb8386f2925b7e567f97939843b7b0e812f + languageName: node + linkType: hard + +"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.3": + version: 7.0.6 + resolution: "cross-spawn@npm:7.0.6" + dependencies: + path-key: "npm:^3.1.0" + shebang-command: "npm:^2.0.0" + which: "npm:^2.0.1" + checksum: 10c0/053ea8b2135caff68a9e81470e845613e374e7309a47731e81639de3eaeb90c3d01af0e0b44d2ab9d50b43467223b88567dfeb3262db942dc063b9976718ffc1 + languageName: node + linkType: hard + +"crypt@npm:0.0.2": + version: 0.0.2 + resolution: "crypt@npm:0.0.2" + checksum: 10c0/adbf263441dd801665d5425f044647533f39f4612544071b1471962209d235042fb703c27eea2795c7c53e1dfc242405173003f83cf4f4761a633d11f9653f18 + languageName: node + linkType: hard + +"currently-unhandled@npm:^0.4.1": + version: 0.4.1 + resolution: "currently-unhandled@npm:0.4.1" + dependencies: + array-find-index: "npm:^1.0.1" + checksum: 10c0/32d197689ec32f035910202c1abb0dc6424dce01d7b51779c685119b380d98535c110ffff67a262fc7e367612a7dfd30d3d3055f9a6634b5a9dd1302de7ef11c + languageName: node + linkType: hard + +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.4": + version: 4.4.0 + resolution: "debug@npm:4.4.0" + dependencies: + ms: "npm:^2.1.3" + peerDependenciesMeta: + supports-color: + optional: true + checksum: 10c0/db94f1a182bf886f57b4755f85b3a74c39b5114b9377b7ab375dc2cfa3454f09490cc6c30f829df3fc8042bc8b8995f6567ce5cd96f3bc3688bd24027197d9de + languageName: node + linkType: hard + +"debug@npm:4.3.1": + version: 4.3.1 + resolution: "debug@npm:4.3.1" + dependencies: + ms: "npm:2.1.2" + peerDependenciesMeta: + supports-color: + optional: true + checksum: 10c0/610bcc2eb07c533d6a9964478422f7d741095d67301888ee0b77b8f2ad0a15d115c93fb2adb13d10a9eda3d81f2d4d335405540b09596fb23aca070e77497d95 + languageName: node + linkType: hard + +"debug@npm:^2.2.0, debug@npm:^2.3.3": + version: 2.6.9 + resolution: "debug@npm:2.6.9" + dependencies: + ms: "npm:2.0.0" + checksum: 10c0/121908fb839f7801180b69a7e218a40b5a0b718813b886b7d6bdb82001b931c938e2941d1e4450f33a1b1df1da653f5f7a0440c197f29fbf8a6e9d45ff6ef589 + languageName: node + linkType: hard + +"debug@npm:^3.1.0": + version: 3.2.7 + resolution: "debug@npm:3.2.7" + dependencies: + ms: "npm:^2.1.1" + checksum: 10c0/37d96ae42cbc71c14844d2ae3ba55adf462ec89fd3a999459dec3833944cd999af6007ff29c780f1c61153bcaaf2c842d1e4ce1ec621e4fc4923244942e4a02a + languageName: node + linkType: hard + +"decamelize@npm:1.2.0, decamelize@npm:^1.1.2": + version: 1.2.0 + resolution: "decamelize@npm:1.2.0" + checksum: 10c0/85c39fe8fbf0482d4a1e224ef0119db5c1897f8503bcef8b826adff7a1b11414972f6fef2d7dec2ee0b4be3863cf64ac1439137ae9e6af23a3d8dcbe26a5b4b2 + languageName: node + linkType: hard + +"decode-uri-component@npm:^0.2.0": + version: 0.2.2 + resolution: "decode-uri-component@npm:0.2.2" + checksum: 10c0/1f4fa54eb740414a816b3f6c24818fbfcabd74ac478391e9f4e2282c994127db02010ce804f3d08e38255493cfe68608b3f5c8e09fd6efc4ae46c807691f7a31 + languageName: node + linkType: hard + +"decompress-response@npm:^3.2.0": + version: 3.3.0 + resolution: "decompress-response@npm:3.3.0" + dependencies: + mimic-response: "npm:^1.0.0" + checksum: 10c0/5ffaf1d744277fd51c68c94ddc3081cd011b10b7de06637cccc6ecba137d45304a09ba1a776dee1c47fccc60b4a056c4bc74468eeea798ff1f1fca0024b45c9d + languageName: node + linkType: hard + +"decompress-tar@npm:^4.0.0, decompress-tar@npm:^4.1.0, decompress-tar@npm:^4.1.1": + version: 4.1.1 + resolution: "decompress-tar@npm:4.1.1" + dependencies: + file-type: "npm:^5.2.0" + is-stream: "npm:^1.1.0" + tar-stream: "npm:^1.5.2" + checksum: 10c0/92d86c5dfe2a89f9b5db584668f8ed2a3107339083872c7f78b5f7d55222d954545e018c10346a50991542ad6d1406128bf1c97a24f023810993a1dcfb3c3f21 + languageName: node + linkType: hard + +"decompress-tarbz2@npm:^4.0.0": + version: 4.1.1 + resolution: "decompress-tarbz2@npm:4.1.1" + dependencies: + decompress-tar: "npm:^4.1.0" + file-type: "npm:^6.1.0" + is-stream: "npm:^1.1.0" + seek-bzip: "npm:^1.0.5" + unbzip2-stream: "npm:^1.0.9" + checksum: 10c0/d5ab2c2435a53f45da8348ffdb5ae0a3ff8fec55948b7890a1c55413de4d1e539a22978e7dcd8bd3561985878c9778253fe146cbdea429f04fa4529abb57c54e + languageName: node + linkType: hard + +"decompress-targz@npm:^4.0.0": + version: 4.1.1 + resolution: "decompress-targz@npm:4.1.1" + dependencies: + decompress-tar: "npm:^4.1.1" + file-type: "npm:^5.2.0" + is-stream: "npm:^1.1.0" + checksum: 10c0/42514fb2df6248c56b2b115494b7d1d046bc582e960354ba4faad5792f261782a61d17d9ef53845abe78c0f0ecafc195cb0754c00227fa0bd0642a1bfd8eafad + languageName: node + linkType: hard + +"decompress-unzip@npm:^4.0.1": + version: 4.0.1 + resolution: "decompress-unzip@npm:4.0.1" + dependencies: + file-type: "npm:^3.8.0" + get-stream: "npm:^2.2.0" + pify: "npm:^2.3.0" + yauzl: "npm:^2.4.2" + checksum: 10c0/896f88e1c23b59cdce022227a8910c06158bd4b296c21d61af7167bd50d00e9e4355b605bdbfd7ba75d46ad277d4f881cdd037aec7165a40ccd0ee4ef59443a8 + languageName: node + linkType: hard + +"decompress@npm:^4.0.0, decompress@npm:^4.2.1": + version: 4.2.1 + resolution: "decompress@npm:4.2.1" + dependencies: + decompress-tar: "npm:^4.0.0" + decompress-tarbz2: "npm:^4.0.0" + decompress-targz: "npm:^4.0.0" + decompress-unzip: "npm:^4.0.1" + graceful-fs: "npm:^4.1.10" + make-dir: "npm:^1.0.0" + pify: "npm:^2.3.0" + strip-dirs: "npm:^2.0.0" + checksum: 10c0/6730279fa206aad04a8338a88ab49c596034c502b2d5f23a28d0a28290b82d9217f9e60c8b5739805474ca842fc856e08e2d64ed759f2118c2bcabe42fa9eece + languageName: node + linkType: hard + +"dedent@npm:^1.0.0": + version: 1.5.3 + resolution: "dedent@npm:1.5.3" + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + checksum: 10c0/d94bde6e6f780be4da4fd760288fcf755ec368872f4ac5218197200d86430aeb8d90a003a840bff1c20221188e3f23adced0119cb811c6873c70d0ac66d12832 + languageName: node + linkType: hard + +"deep-is@npm:^0.1.3": + version: 0.1.4 + resolution: "deep-is@npm:0.1.4" + checksum: 10c0/7f0ee496e0dff14a573dc6127f14c95061b448b87b995fc96c017ce0a1e66af1675e73f1d6064407975bc4ea6ab679497a29fff7b5b9c4e99cb10797c1ad0b4c + languageName: node + linkType: hard + +"deepmerge@npm:^4.2.2": + version: 4.3.1 + resolution: "deepmerge@npm:4.3.1" + checksum: 10c0/e53481aaf1aa2c4082b5342be6b6d8ad9dfe387bc92ce197a66dea08bd4265904a087e75e464f14d1347cf2ac8afe1e4c16b266e0561cc5df29382d3c5f80044 + languageName: node + linkType: hard + +"define-property@npm:^0.2.5": + version: 0.2.5 + resolution: "define-property@npm:0.2.5" + dependencies: + is-descriptor: "npm:^0.1.0" + checksum: 10c0/9986915c0893818dedc9ca23eaf41370667762fd83ad8aa4bf026a28563120dbaacebdfbfbf2b18d3b929026b9c6ee972df1dbf22de8fafb5fe6ef18361e4750 + languageName: node + linkType: hard + +"define-property@npm:^1.0.0": + version: 1.0.0 + resolution: "define-property@npm:1.0.0" + dependencies: + is-descriptor: "npm:^1.0.0" + checksum: 10c0/d7cf09db10d55df305f541694ed51dafc776ad9bb8a24428899c9f2d36b11ab38dce5527a81458d1b5e7c389f8cbe803b4abad6e91a0037a329d153b84fc975e + languageName: node + linkType: hard + +"define-property@npm:^2.0.2": + version: 2.0.2 + resolution: "define-property@npm:2.0.2" + dependencies: + is-descriptor: "npm:^1.0.2" + isobject: "npm:^3.0.1" + checksum: 10c0/f91a08ad008fa764172a2c072adc7312f10217ade89ddaea23018321c6d71b2b68b8c229141ed2064179404e345c537f1a2457c379824813695b51a6ad3e4969 + languageName: node + linkType: hard + +"delayed-stream@npm:~1.0.0": + version: 1.0.0 + resolution: "delayed-stream@npm:1.0.0" + checksum: 10c0/d758899da03392e6712f042bec80aa293bbe9e9ff1b2634baae6a360113e708b91326594c8a486d475c69d6259afb7efacdc3537bfcda1c6c648e390ce601b19 + languageName: node + linkType: hard + +"detect-newline@npm:^3.0.0": + version: 3.1.0 + resolution: "detect-newline@npm:3.1.0" + checksum: 10c0/c38cfc8eeb9fda09febb44bcd85e467c970d4e3bf526095394e5a4f18bc26dd0cf6b22c69c1fa9969261521c593836db335c2795218f6d781a512aea2fb8209d + languageName: node + linkType: hard + +"diff-sequences@npm:^29.6.3": + version: 29.6.3 + resolution: "diff-sequences@npm:29.6.3" + checksum: 10c0/32e27ac7dbffdf2fb0eb5a84efd98a9ad084fbabd5ac9abb8757c6770d5320d2acd172830b28c4add29bb873d59420601dfc805ac4064330ce59b1adfd0593b2 + languageName: node + linkType: hard + +"digest-fetch@npm:^1.3.0": + version: 1.3.0 + resolution: "digest-fetch@npm:1.3.0" + dependencies: + base-64: "npm:^0.1.0" + md5: "npm:^2.3.0" + checksum: 10c0/0fb389e33b9c6baf5e6a9ed287aa9d0d8b373d59b49d49c62c261e1ab24eaaf1d5aea3a105c1b31ba4a23e29e129365d839ce4c5974fa004a85d1a4568bc3585 + languageName: node + linkType: hard + +"download-cli@npm:^1.1.1": + version: 1.1.1 + resolution: "download-cli@npm:1.1.1" + dependencies: + download: "npm:^6.2.1" + meow: "npm:^3.3.0" + bin: + download: cli.js + checksum: 10c0/95bdc26e18f9d49cdae30fe5e7a18912555b96df48807ecb605bac157f86fe60be2a6a58380df38d4958178fab283543a3d9ed54397c89f03c799a2186b8aba5 + languageName: node + linkType: hard + +"download@npm:^6.2.1": + version: 6.2.5 + resolution: "download@npm:6.2.5" + dependencies: + caw: "npm:^2.0.0" + content-disposition: "npm:^0.5.2" + decompress: "npm:^4.0.0" + ext-name: "npm:^5.0.0" + file-type: "npm:5.2.0" + filenamify: "npm:^2.0.0" + get-stream: "npm:^3.0.0" + got: "npm:^7.0.0" + make-dir: "npm:^1.0.0" + p-event: "npm:^1.0.0" + pify: "npm:^3.0.0" + checksum: 10c0/46a1f17064968590d72908294ef7875a0e1fcecf9a3a0e2c51f86eee32498dcbf92aec2c976b632e397a69bed86e0a1dac4ddf48aa63895ad7d603745db9e1cb + languageName: node + linkType: hard + +"duplexer3@npm:^0.1.4": + version: 0.1.5 + resolution: "duplexer3@npm:0.1.5" + checksum: 10c0/02195030d61c4d6a2a34eca71639f2ea5e05cb963490e5bd9527623c2ac7f50c33842a34d14777ea9cbfd9bc2be5a84065560b897d9fabb99346058a5b86ca98 + languageName: node + linkType: hard + +"duplexer@npm:^0.1.1, duplexer@npm:~0.1.1": + version: 0.1.2 + resolution: "duplexer@npm:0.1.2" + checksum: 10c0/c57bcd4bdf7e623abab2df43a7b5b23d18152154529d166c1e0da6bee341d84c432d157d7e97b32fecb1bf3a8b8857dd85ed81a915789f550637ed25b8e64fc2 + languageName: node + linkType: hard + +"eastasianwidth@npm:^0.2.0": + version: 0.2.0 + resolution: "eastasianwidth@npm:0.2.0" + checksum: 10c0/26f364ebcdb6395f95124fda411f63137a4bfb5d3a06453f7f23dfe52502905bd84e0488172e0f9ec295fdc45f05c23d5d91baf16bd26f0fe9acd777a188dc39 + languageName: node + linkType: hard + +"ejs@npm:^3.1.10": + version: 3.1.10 + resolution: "ejs@npm:3.1.10" + dependencies: + jake: "npm:^10.8.5" + bin: + ejs: bin/cli.js + checksum: 10c0/52eade9e68416ed04f7f92c492183340582a36482836b11eab97b159fcdcfdedc62233a1bf0bf5e5e1851c501f2dca0e2e9afd111db2599e4e7f53ee29429ae1 + languageName: node + linkType: hard + +"electron-to-chromium@npm:^1.5.73": + version: 1.5.76 + resolution: "electron-to-chromium@npm:1.5.76" + checksum: 10c0/5a977be9fd5810769a7b4eae0e4b41b6beca65f2b3f3b7442819f6c93366d767d183cfbf408714f944a9bf3aa304f8c9ab9d0cdfd8e878ab8f2cbb61f8b22acd + languageName: node + linkType: hard + +"emittery@npm:^0.13.1": + version: 0.13.1 + resolution: "emittery@npm:0.13.1" + checksum: 10c0/1573d0ae29ab34661b6c63251ff8f5facd24ccf6a823f19417ae8ba8c88ea450325788c67f16c99edec8de4b52ce93a10fe441ece389fd156e88ee7dab9bfa35 + languageName: node + linkType: hard + +"emoji-regex@npm:^8.0.0": + version: 8.0.0 + resolution: "emoji-regex@npm:8.0.0" + checksum: 10c0/b6053ad39951c4cf338f9092d7bfba448cdfd46fe6a2a034700b149ac9ffbc137e361cbd3c442297f86bed2e5f7576c1b54cc0a6bf8ef5106cc62f496af35010 + languageName: node + linkType: hard + +"emoji-regex@npm:^9.2.2": + version: 9.2.2 + resolution: "emoji-regex@npm:9.2.2" + checksum: 10c0/af014e759a72064cf66e6e694a7fc6b0ed3d8db680427b021a89727689671cefe9d04151b2cad51dbaf85d5ba790d061cd167f1cf32eb7b281f6368b3c181639 + languageName: node + linkType: hard + +"encoding@npm:^0.1.13": + version: 0.1.13 + resolution: "encoding@npm:0.1.13" + dependencies: + iconv-lite: "npm:^0.6.2" + checksum: 10c0/36d938712ff00fe1f4bac88b43bcffb5930c1efa57bbcdca9d67e1d9d6c57cfb1200fb01efe0f3109b2ce99b231f90779532814a81370a1bd3274a0f58585039 + languageName: node + linkType: hard + +"end-of-stream@npm:^1.0.0, end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.1": + version: 1.4.4 + resolution: "end-of-stream@npm:1.4.4" + dependencies: + once: "npm:^1.4.0" + checksum: 10c0/870b423afb2d54bb8d243c63e07c170409d41e20b47eeef0727547aea5740bd6717aca45597a9f2745525667a6b804c1e7bede41f856818faee5806dd9ff3975 + languageName: node + linkType: hard + +"enhanced-resolve@npm:^5.0.0": + version: 5.18.0 + resolution: "enhanced-resolve@npm:5.18.0" + dependencies: + graceful-fs: "npm:^4.2.4" + tapable: "npm:^2.2.0" + checksum: 10c0/5fcc264a6040754ab5b349628cac2bb5f89cee475cbe340804e657a5b9565f70e6aafb338d5895554eb0ced9f66c50f38a255274a0591dcb64ee17c549c459ce + languageName: node + linkType: hard + +"env-paths@npm:^2.2.0": + version: 2.2.1 + resolution: "env-paths@npm:2.2.1" + checksum: 10c0/285325677bf00e30845e330eec32894f5105529db97496ee3f598478e50f008c5352a41a30e5e72ec9de8a542b5a570b85699cd63bd2bc646dbcb9f311d83bc4 + languageName: node + linkType: hard + +"err-code@npm:^2.0.2": + version: 2.0.3 + resolution: "err-code@npm:2.0.3" + checksum: 10c0/b642f7b4dd4a376e954947550a3065a9ece6733ab8e51ad80db727aaae0817c2e99b02a97a3d6cecc648a97848305e728289cf312d09af395403a90c9d4d8a66 + languageName: node + linkType: hard + +"error-ex@npm:^1.2.0, error-ex@npm:^1.3.1": + version: 1.3.2 + resolution: "error-ex@npm:1.3.2" + dependencies: + is-arrayish: "npm:^0.2.1" + checksum: 10c0/ba827f89369b4c93382cfca5a264d059dfefdaa56ecc5e338ffa58a6471f5ed93b71a20add1d52290a4873d92381174382658c885ac1a2305f7baca363ce9cce + languageName: node + linkType: hard + +"escalade@npm:^3.1.1, escalade@npm:^3.2.0": + version: 3.2.0 + resolution: "escalade@npm:3.2.0" + checksum: 10c0/ced4dd3a78e15897ed3be74e635110bbf3b08877b0a41be50dcb325ee0e0b5f65fc2d50e9845194d7c4633f327e2e1c6cce00a71b617c5673df0374201d67f65 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^1.0.2": + version: 1.0.5 + resolution: "escape-string-regexp@npm:1.0.5" + checksum: 10c0/a968ad453dd0c2724e14a4f20e177aaf32bb384ab41b674a8454afe9a41c5e6fe8903323e0a1052f56289d04bd600f81278edf140b0fcc02f5cac98d0f5b5371 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^2.0.0": + version: 2.0.0 + resolution: "escape-string-regexp@npm:2.0.0" + checksum: 10c0/2530479fe8db57eace5e8646c9c2a9c80fa279614986d16dcc6bcaceb63ae77f05a851ba6c43756d816c61d7f4534baf56e3c705e3e0d884818a46808811c507 + languageName: node + linkType: hard + +"esprima@npm:^4.0.0": + version: 4.0.1 + resolution: "esprima@npm:4.0.1" + bin: + esparse: ./bin/esparse.js + esvalidate: ./bin/esvalidate.js + checksum: 10c0/ad4bab9ead0808cf56501750fd9d3fb276f6b105f987707d059005d57e182d18a7c9ec7f3a01794ebddcca676773e42ca48a32d67a250c9d35e009ca613caba3 + languageName: node + linkType: hard + +"event-stream@npm:=3.3.4": + version: 3.3.4 + resolution: "event-stream@npm:3.3.4" + dependencies: + duplexer: "npm:~0.1.1" + from: "npm:~0" + map-stream: "npm:~0.1.0" + pause-stream: "npm:0.0.11" + split: "npm:0.3" + stream-combiner: "npm:~0.0.4" + through: "npm:~2.3.1" + checksum: 10c0/c3ec4e1efc27ab3e73a98923f0a2fa9a19051b87068fea2f3d53d2e4e8c5cfdadf8c8a115b17f3d90b16a46432d396bad91b6e8d0cceb3e449be717a03b75209 + languageName: node + linkType: hard + +"event-target-shim@npm:^5.0.0": + version: 5.0.1 + resolution: "event-target-shim@npm:5.0.1" + checksum: 10c0/0255d9f936215fd206156fd4caa9e8d35e62075d720dc7d847e89b417e5e62cf1ce6c9b4e0a1633a9256de0efefaf9f8d26924b1f3c8620cffb9db78e7d3076b + languageName: node + linkType: hard + +"eventemitter3@npm:^4.0.4": + version: 4.0.7 + resolution: "eventemitter3@npm:4.0.7" + checksum: 10c0/5f6d97cbcbac47be798e6355e3a7639a84ee1f7d9b199a07017f1d2f1e2fe236004d14fa5dfaeba661f94ea57805385e326236a6debbc7145c8877fbc0297c6b + languageName: node + linkType: hard + +"eventemitter3@npm:^5.0.1": + version: 5.0.1 + resolution: "eventemitter3@npm:5.0.1" + checksum: 10c0/4ba5c00c506e6c786b4d6262cfbce90ddc14c10d4667e5c83ae993c9de88aa856033994dd2b35b83e8dc1170e224e66a319fa80adc4c32adcd2379bbc75da814 + languageName: node + linkType: hard + +"execa@npm:^5.0.0": + version: 5.1.1 + resolution: "execa@npm:5.1.1" + dependencies: + cross-spawn: "npm:^7.0.3" + get-stream: "npm:^6.0.0" + human-signals: "npm:^2.1.0" + is-stream: "npm:^2.0.0" + merge-stream: "npm:^2.0.0" + npm-run-path: "npm:^4.0.1" + onetime: "npm:^5.1.2" + signal-exit: "npm:^3.0.3" + strip-final-newline: "npm:^2.0.0" + checksum: 10c0/c8e615235e8de4c5addf2fa4c3da3e3aa59ce975a3e83533b4f6a71750fb816a2e79610dc5f1799b6e28976c9ae86747a36a606655bf8cb414a74d8d507b304f + languageName: node + linkType: hard + +"exit@npm:^0.1.2": + version: 0.1.2 + resolution: "exit@npm:0.1.2" + checksum: 10c0/71d2ad9b36bc25bb8b104b17e830b40a08989be7f7d100b13269aaae7c3784c3e6e1e88a797e9e87523993a25ba27c8958959a554535370672cfb4d824af8989 + languageName: node + linkType: hard + +"expand-brackets@npm:^0.1.4": + version: 0.1.5 + resolution: "expand-brackets@npm:0.1.5" + dependencies: + is-posix-bracket: "npm:^0.1.0" + checksum: 10c0/49b7fc1250f5f60ffe640be03777471ce63420eaa9850ce897b32bcf874e7be16b00917c7e2266a310e674ddb4ffe499ca964115bbc3f8c881288a280740aa6f + languageName: node + linkType: hard + +"expand-brackets@npm:^2.1.4": + version: 2.1.4 + resolution: "expand-brackets@npm:2.1.4" + dependencies: + debug: "npm:^2.3.3" + define-property: "npm:^0.2.5" + extend-shallow: "npm:^2.0.1" + posix-character-classes: "npm:^0.1.0" + regex-not: "npm:^1.0.0" + snapdragon: "npm:^0.8.1" + to-regex: "npm:^3.0.1" + checksum: 10c0/3e2fb95d2d7d7231486493fd65db913927b656b6fcdfcce41e139c0991a72204af619ad4acb1be75ed994ca49edb7995ef241dbf8cf44dc3c03d211328428a87 + languageName: node + linkType: hard + +"expand-range@npm:^1.8.1": + version: 1.8.2 + resolution: "expand-range@npm:1.8.2" + dependencies: + fill-range: "npm:^2.1.0" + checksum: 10c0/ad7911af12f026953c57e3d7b7fe9f750ce2a1d45f7f7d717de890ed6429baf5e8a7224540cd648eeb603d409be0b7a7df09f951693cc83e98dcdc1e0043c23e + languageName: node + linkType: hard + +"expect@npm:^29.0.0, expect@npm:^29.7.0": + version: 29.7.0 + resolution: "expect@npm:29.7.0" + dependencies: + "@jest/expect-utils": "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + jest-matcher-utils: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + checksum: 10c0/2eddeace66e68b8d8ee5f7be57f3014b19770caaf6815c7a08d131821da527fb8c8cb7b3dcd7c883d2d3d8d184206a4268984618032d1e4b16dc8d6596475d41 + languageName: node + linkType: hard + +"exponential-backoff@npm:^3.1.1": + version: 3.1.1 + resolution: "exponential-backoff@npm:3.1.1" + checksum: 10c0/160456d2d647e6019640bd07111634d8c353038d9fa40176afb7cd49b0548bdae83b56d05e907c2cce2300b81cae35d800ef92fefb9d0208e190fa3b7d6bb579 + languageName: node + linkType: hard + +"expr-eval@npm:^2.0.2": + version: 2.0.2 + resolution: "expr-eval@npm:2.0.2" + checksum: 10c0/642f112ff28ea34574c595c3ad73ccd8e638498879a4dd28620c4dabebab2e11987a851266ba81883dae85a5800e0c93b3d06f81718b71a215f831534646e4f2 + languageName: node + linkType: hard + +"ext-list@npm:^2.0.0": + version: 2.2.2 + resolution: "ext-list@npm:2.2.2" + dependencies: + mime-db: "npm:^1.28.0" + checksum: 10c0/bfdb435f333dccbf3f9698dc9d8e38eb47b42d756800bfafa9ec0c1c8aace877c40095baf36f691bcfd09bb88ed247c6e51596e75a158280fa19cf8588a7e258 + languageName: node + linkType: hard + +"ext-name@npm:^5.0.0": + version: 5.0.0 + resolution: "ext-name@npm:5.0.0" + dependencies: + ext-list: "npm:^2.0.0" + sort-keys-length: "npm:^1.0.0" + checksum: 10c0/6750b34636bb6dca78e1bcc797615af68ecf50d62cf774624a32ee7879da99c949b5c41e8aa56ede4eb15c6abad6b1a8858d0934faab75ff6e2fd6f408debe18 + languageName: node + linkType: hard + +"extend-shallow@npm:^2.0.1": + version: 2.0.1 + resolution: "extend-shallow@npm:2.0.1" + dependencies: + is-extendable: "npm:^0.1.0" + checksum: 10c0/ee1cb0a18c9faddb42d791b2d64867bd6cfd0f3affb711782eb6e894dd193e2934a7f529426aac7c8ddb31ac5d38000a00aa2caf08aa3dfc3e1c8ff6ba340bd9 + languageName: node + linkType: hard + +"extend-shallow@npm:^3.0.0, extend-shallow@npm:^3.0.2": + version: 3.0.2 + resolution: "extend-shallow@npm:3.0.2" + dependencies: + assign-symbols: "npm:^1.0.0" + is-extendable: "npm:^1.0.1" + checksum: 10c0/f39581b8f98e3ad94995e33214fff725b0297cf09f2725b6f624551cfb71e0764accfd0af80becc0182af5014d2a57b31b85ec999f9eb8a6c45af81752feac9a + languageName: node + linkType: hard + +"extglob@npm:^0.3.1": + version: 0.3.2 + resolution: "extglob@npm:0.3.2" + dependencies: + is-extglob: "npm:^1.0.0" + checksum: 10c0/9fcca7651e5c50fc970ec402476fb7a150e27cc2d8b415de8a6719fc111b2e03a9fabbff4fbed51221853f720ad734e842dfaef087ef57bdeb2456dcf0369029 + languageName: node + linkType: hard + +"extglob@npm:^2.0.4": + version: 2.0.4 + resolution: "extglob@npm:2.0.4" + dependencies: + array-unique: "npm:^0.3.2" + define-property: "npm:^1.0.0" + expand-brackets: "npm:^2.1.4" + extend-shallow: "npm:^2.0.1" + fragment-cache: "npm:^0.2.1" + regex-not: "npm:^1.0.0" + snapdragon: "npm:^0.8.1" + to-regex: "npm:^3.0.1" + checksum: 10c0/e1a891342e2010d046143016c6c03d58455c2c96c30bf5570ea07929984ee7d48fad86b363aee08f7a8a638f5c3a66906429b21ecb19bc8e90df56a001cd282c + languageName: node + linkType: hard + +"fast-json-stable-stringify@npm:2.x, fast-json-stable-stringify@npm:^2.1.0": + version: 2.1.0 + resolution: "fast-json-stable-stringify@npm:2.1.0" + checksum: 10c0/7f081eb0b8a64e0057b3bb03f974b3ef00135fbf36c1c710895cd9300f13c94ba809bb3a81cf4e1b03f6e5285610a61abbd7602d0652de423144dfee5a389c9b + languageName: node + linkType: hard + +"fb-watchman@npm:^2.0.0": + version: 2.0.2 + resolution: "fb-watchman@npm:2.0.2" + dependencies: + bser: "npm:2.1.1" + checksum: 10c0/feae89ac148adb8f6ae8ccd87632e62b13563e6fb114cacb5265c51f585b17e2e268084519fb2edd133872f1d47a18e6bfd7e5e08625c0d41b93149694187581 + languageName: node + linkType: hard + +"fd-slicer@npm:~1.1.0": + version: 1.1.0 + resolution: "fd-slicer@npm:1.1.0" + dependencies: + pend: "npm:~1.2.0" + checksum: 10c0/304dd70270298e3ffe3bcc05e6f7ade2511acc278bc52d025f8918b48b6aa3b77f10361bddfadfe2a28163f7af7adbdce96f4d22c31b2f648ba2901f0c5fc20e + languageName: node + linkType: hard + +"fetch-retry@npm:^5.0.6": + version: 5.0.6 + resolution: "fetch-retry@npm:5.0.6" + checksum: 10c0/349f50db631039630e915f70c763469cb696f3ac92ca6f63823109334a2bc62f63670b8c5a5c7e0195c39df517e60ef385cc5264f4c4904d0c6707d371fa8999 + languageName: node + linkType: hard + +"file-type@npm:5.2.0, file-type@npm:^5.2.0": + version: 5.2.0 + resolution: "file-type@npm:5.2.0" + checksum: 10c0/c16c2f4e484a838c12b63e08637277905f08aebb1afbc291086029210aea17ded5ed701c9a4588313446ae0c1da71566b58df9a9c758a1ec300c4f80b9713cbf + languageName: node + linkType: hard + +"file-type@npm:^3.8.0": + version: 3.9.0 + resolution: "file-type@npm:3.9.0" + checksum: 10c0/7ae074b350c2300807a99d428600a8ee6b2ace901400898706a20ddc2c43c9abb7e05177ff55ed67a2fd26dfa9b91857b21ec9c0ab3202b9cabebc7e65900240 + languageName: node + linkType: hard + +"file-type@npm:^6.1.0": + version: 6.2.0 + resolution: "file-type@npm:6.2.0" + checksum: 10c0/3d7fe85a10bd97ca0c35fd9a20d21f5b20849bbb70985d37c34475051433f3c6109c76a3e5893bff6773037b769be9730a2db762789ecf25def9b62a4c2ee953 + languageName: node + linkType: hard + +"file-uri-to-path@npm:1.0.0": + version: 1.0.0 + resolution: "file-uri-to-path@npm:1.0.0" + checksum: 10c0/3b545e3a341d322d368e880e1c204ef55f1d45cdea65f7efc6c6ce9e0c4d22d802d5629320eb779d006fe59624ac17b0e848d83cc5af7cd101f206cb704f5519 + languageName: node + linkType: hard + +"filelist@npm:^1.0.4": + version: 1.0.4 + resolution: "filelist@npm:1.0.4" + dependencies: + minimatch: "npm:^5.0.1" + checksum: 10c0/426b1de3944a3d153b053f1c0ebfd02dccd0308a4f9e832ad220707a6d1f1b3c9784d6cadf6b2f68f09a57565f63ebc7bcdc913ccf8012d834f472c46e596f41 + languageName: node + linkType: hard + +"filename-regex@npm:^2.0.0": + version: 2.0.1 + resolution: "filename-regex@npm:2.0.1" + checksum: 10c0/c669fe758641e4830641a9df1d387f14080d96ddde0ef9525439c6d16f4492ea167109362ea69eedd0eef39ae2739586b71daf5f4dab0847d1d07a01a1190ab3 + languageName: node + linkType: hard + +"filename-reserved-regex@npm:^2.0.0": + version: 2.0.0 + resolution: "filename-reserved-regex@npm:2.0.0" + checksum: 10c0/453740b7f9fd126e508da555b37e38c1f7ff19f5e9f3d297b2de1beb09854957baddd74c83235e87b16e9ce27a2368798896669edad5a81b5b7bd8cb57c942fc + languageName: node + linkType: hard + +"filenamify@npm:^2.0.0": + version: 2.1.0 + resolution: "filenamify@npm:2.1.0" + dependencies: + filename-reserved-regex: "npm:^2.0.0" + strip-outer: "npm:^1.0.0" + trim-repeated: "npm:^1.0.0" + checksum: 10c0/47f107f94f69f89b7490bbead2a03ab2aa6ea7d07733afc169b24ad4bac7193c0bef40c3e23c9505bc5eaf93bea2cfbce460fb6073e580d7675fa0cbdce225fd + languageName: node + linkType: hard + +"fill-range@npm:^2.1.0": + version: 2.2.4 + resolution: "fill-range@npm:2.2.4" + dependencies: + is-number: "npm:^2.1.0" + isobject: "npm:^2.0.0" + randomatic: "npm:^3.0.0" + repeat-element: "npm:^1.1.2" + repeat-string: "npm:^1.5.2" + checksum: 10c0/1cfd1329311d778a844d5806bd06a5d297047e5ff352c45b4f9fadcda68eb272c8ef2196f1c44224f3fe66c672234453ce89aca94fb00122874bdb3978de5f71 + languageName: node + linkType: hard + +"fill-range@npm:^4.0.0": + version: 4.0.0 + resolution: "fill-range@npm:4.0.0" + dependencies: + extend-shallow: "npm:^2.0.1" + is-number: "npm:^3.0.0" + repeat-string: "npm:^1.6.1" + to-regex-range: "npm:^2.1.0" + checksum: 10c0/ccd57b7c43d7e28a1f8a60adfa3c401629c08e2f121565eece95e2386ebc64dedc7128d8c3448342aabf19db0c55a34f425f148400c7a7be9a606ba48749e089 + languageName: node + linkType: hard + +"fill-range@npm:^7.1.1": + version: 7.1.1 + resolution: "fill-range@npm:7.1.1" + dependencies: + to-regex-range: "npm:^5.0.1" + checksum: 10c0/b75b691bbe065472f38824f694c2f7449d7f5004aa950426a2c28f0306c60db9b880c0b0e4ed819997ffb882d1da02cfcfc819bddc94d71627f5269682edf018 + languageName: node + linkType: hard + +"find-index@npm:^0.1.1": + version: 0.1.1 + resolution: "find-index@npm:0.1.1" + checksum: 10c0/12e65ff1d9925874b6d1c81419f57336be2bc6b1c241fd5e0454256198c3d7b4b4da8cd3eaa2fa4f1c3851cc047ea7828dc5acb0ca51948c7e8b550f521b51d1 + languageName: node + linkType: hard + +"find-up@npm:^1.0.0": + version: 1.1.2 + resolution: "find-up@npm:1.1.2" + dependencies: + path-exists: "npm:^2.0.0" + pinkie-promise: "npm:^2.0.0" + checksum: 10c0/51e35c62d9b7efe82d7d5cce966bfe10c2eaa78c769333f8114627e3a8a4a4f50747f5f50bff50b1094cbc6527776f0d3b9ff74d3561ef714a5290a17c80c2bc + languageName: node + linkType: hard + +"find-up@npm:^4.0.0, find-up@npm:^4.1.0": + version: 4.1.0 + resolution: "find-up@npm:4.1.0" + dependencies: + locate-path: "npm:^5.0.0" + path-exists: "npm:^4.0.0" + checksum: 10c0/0406ee89ebeefa2d507feb07ec366bebd8a6167ae74aa4e34fb4c4abd06cf782a3ce26ae4194d70706f72182841733f00551c209fe575cb00bd92104056e78c1 + languageName: node + linkType: hard + +"flat@npm:^5.0.2": + version: 5.0.2 + resolution: "flat@npm:5.0.2" + bin: + flat: cli.js + checksum: 10c0/f178b13482f0cd80c7fede05f4d10585b1f2fdebf26e12edc138e32d3150c6ea6482b7f12813a1091143bad52bb6d3596bca51a162257a21163c0ff438baa5fe + languageName: node + linkType: hard + +"for-in@npm:^1.0.1, for-in@npm:^1.0.2": + version: 1.0.2 + resolution: "for-in@npm:1.0.2" + checksum: 10c0/42bb609d564b1dc340e1996868b67961257fd03a48d7fdafd4f5119530b87f962be6b4d5b7e3a3fc84c9854d149494b1d358e0b0ce9837e64c4c6603a49451d6 + languageName: node + linkType: hard + +"for-own@npm:^0.1.4": + version: 0.1.5 + resolution: "for-own@npm:0.1.5" + dependencies: + for-in: "npm:^1.0.1" + checksum: 10c0/3f82c2ea489ce2eb74c0eb8634d89b30a620801c2cb5f2a83d2d797fe6990d40c1aeac8968783e157b1404cf35bac9acb0a6c46065ec37b38a21b5d896e500bd + languageName: node + linkType: hard + +"foreground-child@npm:^3.1.0": + version: 3.3.0 + resolution: "foreground-child@npm:3.3.0" + dependencies: + cross-spawn: "npm:^7.0.0" + signal-exit: "npm:^4.0.1" + checksum: 10c0/028f1d41000553fcfa6c4bb5c372963bf3d9bf0b1f25a87d1a6253014343fb69dfb1b42d9625d7cf44c8ba429940f3d0ff718b62105d4d4a4f6ef8ca0a53faa2 + languageName: node + linkType: hard + +"form-data-encoder@npm:1.7.2": + version: 1.7.2 + resolution: "form-data-encoder@npm:1.7.2" + checksum: 10c0/56553768037b6d55d9de524f97fe70555f0e415e781cb56fc457a68263de3d40fadea2304d4beef2d40b1a851269bd7854e42c362107071892cb5238debe9464 + languageName: node + linkType: hard + +"form-data@npm:^4.0.0": + version: 4.0.1 + resolution: "form-data@npm:4.0.1" + dependencies: + asynckit: "npm:^0.4.0" + combined-stream: "npm:^1.0.8" + mime-types: "npm:^2.1.12" + checksum: 10c0/bb102d570be8592c23f4ea72d7df9daa50c7792eb0cf1c5d7e506c1706e7426a4e4ae48a35b109e91c85f1c0ec63774a21ae252b66f4eb981cb8efef7d0463c8 + languageName: node + linkType: hard + +"formdata-node@npm:^4.3.2": + version: 4.4.1 + resolution: "formdata-node@npm:4.4.1" + dependencies: + node-domexception: "npm:1.0.0" + web-streams-polyfill: "npm:4.0.0-beta.3" + checksum: 10c0/74151e7b228ffb33b565cec69182694ad07cc3fdd9126a8240468bb70a8ba66e97e097072b60bcb08729b24c7ce3fd3e0bd7f1f80df6f9f662b9656786e76f6a + languageName: node + linkType: hard + +"fragment-cache@npm:^0.2.1": + version: 0.2.1 + resolution: "fragment-cache@npm:0.2.1" + dependencies: + map-cache: "npm:^0.2.2" + checksum: 10c0/5891d1c1d1d5e1a7fb3ccf28515c06731476fa88f7a50f4ede8a0d8d239a338448e7f7cc8b73db48da19c229fa30066104fe6489862065a4f1ed591c42fbeabf + languageName: node + linkType: hard + +"from@npm:~0": + version: 0.1.7 + resolution: "from@npm:0.1.7" + checksum: 10c0/3aab5aea8fe8e1f12a5dee7f390d46a93431ce691b6222dcd5701c5d34378e51ca59b44967da1105a0f90fcdf5d7629d963d51e7ccd79827d19693bdcfb688d4 + languageName: node + linkType: hard + +"fs-constants@npm:^1.0.0": + version: 1.0.0 + resolution: "fs-constants@npm:1.0.0" + checksum: 10c0/a0cde99085f0872f4d244e83e03a46aa387b74f5a5af750896c6b05e9077fac00e9932fdf5aef84f2f16634cd473c63037d7a512576da7d5c2b9163d1909f3a8 + languageName: node + linkType: hard + +"fs-minipass@npm:^3.0.0": + version: 3.0.3 + resolution: "fs-minipass@npm:3.0.3" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/63e80da2ff9b621e2cb1596abcb9207f1cf82b968b116ccd7b959e3323144cce7fb141462200971c38bbf2ecca51695069db45265705bed09a7cd93ae5b89f94 + languageName: node + linkType: hard + +"fs.realpath@npm:^1.0.0": + version: 1.0.0 + resolution: "fs.realpath@npm:1.0.0" + checksum: 10c0/444cf1291d997165dfd4c0d58b69f0e4782bfd9149fd72faa4fe299e68e0e93d6db941660b37dd29153bf7186672ececa3b50b7e7249477b03fdf850f287c948 + languageName: node + linkType: hard + +"fsevents@npm:^1.0.0": + version: 1.2.13 + resolution: "fsevents@npm:1.2.13" + dependencies: + bindings: "npm:^1.5.0" + nan: "npm:^2.12.1" + checksum: 10c0/4427ff08db9ee7327f2c3ad58ec56f9096a917eed861bfffaa2e2be419479cdf37d00750869ab9ecbf5f59f32ad999bd59577d73fc639193e6c0ce52bb253e02 + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@npm:^2.3.2": + version: 2.3.3 + resolution: "fsevents@npm:2.3.3" + dependencies: + node-gyp: "npm:latest" + checksum: 10c0/a1f0c44595123ed717febbc478aa952e47adfc28e2092be66b8ab1635147254ca6cfe1df792a8997f22716d4cbafc73309899ff7bfac2ac3ad8cf2e4ecc3ec60 + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@patch:fsevents@npm%3A^1.0.0#optional!builtin": + version: 1.2.13 + resolution: "fsevents@patch:fsevents@npm%3A1.2.13#optional!builtin::version=1.2.13&hash=d11327" + dependencies: + bindings: "npm:^1.5.0" + nan: "npm:^2.12.1" + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@patch:fsevents@npm%3A^2.3.2#optional!builtin": + version: 2.3.3 + resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" + dependencies: + node-gyp: "npm:latest" + conditions: os=darwin + languageName: node + linkType: hard + +"function-bind@npm:^1.1.2": + version: 1.1.2 + resolution: "function-bind@npm:1.1.2" + checksum: 10c0/d8680ee1e5fcd4c197e4ac33b2b4dce03c71f4d91717292785703db200f5c21f977c568d28061226f9b5900cbcd2c84463646134fd5337e7925e0942bc3f46d5 + languageName: node + linkType: hard + +"gensync@npm:^1.0.0-beta.2": + version: 1.0.0-beta.2 + resolution: "gensync@npm:1.0.0-beta.2" + checksum: 10c0/782aba6cba65b1bb5af3b095d96249d20edbe8df32dbf4696fd49be2583faf676173bf4809386588828e4dd76a3354fcbeb577bab1c833ccd9fc4577f26103f8 + languageName: node + linkType: hard + +"get-caller-file@npm:^2.0.5": + version: 2.0.5 + resolution: "get-caller-file@npm:2.0.5" + checksum: 10c0/c6c7b60271931fa752aeb92f2b47e355eac1af3a2673f47c9589e8f8a41adc74d45551c1bc57b5e66a80609f10ffb72b6f575e4370d61cc3f7f3aaff01757cde + languageName: node + linkType: hard + +"get-package-type@npm:^0.1.0": + version: 0.1.0 + resolution: "get-package-type@npm:0.1.0" + checksum: 10c0/e34cdf447fdf1902a1f6d5af737eaadf606d2ee3518287abde8910e04159368c268568174b2e71102b87b26c2020486f126bfca9c4fb1ceb986ff99b52ecd1be + languageName: node + linkType: hard + +"get-proxy@npm:^2.0.0": + version: 2.1.0 + resolution: "get-proxy@npm:2.1.0" + dependencies: + npm-conf: "npm:^1.1.0" + checksum: 10c0/48a677061f90fea7a4fede28edb854d2433901b80beb1d240a42889092a7c38f23081de936e12048c55ed35e1f64d701ee8c07817469b3a916f03d9a2d78b8c0 + languageName: node + linkType: hard + +"get-stdin@npm:^4.0.1": + version: 4.0.1 + resolution: "get-stdin@npm:4.0.1" + checksum: 10c0/68fc39a0af6050bcad791fb3df72999e7636401f11f574bf24af07b1c640d30c01cf38aa39ee55665a93ee7a7753eeb6d1fce6c434dd1f458ee0f8fd02775809 + languageName: node + linkType: hard + +"get-stream@npm:^2.2.0": + version: 2.3.1 + resolution: "get-stream@npm:2.3.1" + dependencies: + object-assign: "npm:^4.0.1" + pinkie-promise: "npm:^2.0.0" + checksum: 10c0/46c12f496e7edec688a1cc570fe7556ce91e91201fa7efb146853fb9f0a8f0b0bb9a02cf9d9e4e9d4e2097f98c83b09621d9034c25ca0cf80ae6f4dace9c3465 + languageName: node + linkType: hard + +"get-stream@npm:^3.0.0": + version: 3.0.0 + resolution: "get-stream@npm:3.0.0" + checksum: 10c0/003f5f3b8870da59c6aafdf6ed7e7b07b48c2f8629cd461bd3900726548b6b8cfa2e14d6b7814fbb08f07a42f4f738407fa70b989928b2783a76b278505bba22 + languageName: node + linkType: hard + +"get-stream@npm:^6.0.0": + version: 6.0.1 + resolution: "get-stream@npm:6.0.1" + checksum: 10c0/49825d57d3fd6964228e6200a58169464b8e8970489b3acdc24906c782fb7f01f9f56f8e6653c4a50713771d6658f7cfe051e5eb8c12e334138c9c918b296341 + languageName: node + linkType: hard + +"get-value@npm:^2.0.3, get-value@npm:^2.0.6": + version: 2.0.6 + resolution: "get-value@npm:2.0.6" + checksum: 10c0/f069c132791b357c8fc4adfe9e2929b0a2c6e95f98ca7bc6fcbc27f8a302e552f86b4ae61ec56d9e9ac2544b93b6a39743d479866a37b43fcc104088ba74f0d9 + languageName: node + linkType: hard + +"glob-base@npm:^0.3.0": + version: 0.3.0 + resolution: "glob-base@npm:0.3.0" + dependencies: + glob-parent: "npm:^2.0.0" + is-glob: "npm:^2.0.0" + checksum: 10c0/4ce785c1dac2ff1e4660c010fa43ed2f1b38993dfd004023a3e7080b20bc61f29fbfe5d265b7e64cc84096ecf44e8ca876c7c1aad8f1f995d4c0f33034f3ae8c + languageName: node + linkType: hard + +"glob-parent@npm:^2.0.0": + version: 2.0.0 + resolution: "glob-parent@npm:2.0.0" + dependencies: + is-glob: "npm:^2.0.0" + checksum: 10c0/b9d59dc532d47aaaa4841046ff631b325a707f738445300b83b7a1ee603dd060c041a378e8a195c887d479bb703685cee4725c8f54b8dacef65355375f57d32a + languageName: node + linkType: hard + +"glob2base@npm:^0.0.12": + version: 0.0.12 + resolution: "glob2base@npm:0.0.12" + dependencies: + find-index: "npm:^0.1.1" + checksum: 10c0/6a8326079e62375300507e28a23ac6d7a8fb0f00fe60653e44bad3b4f86bc66984338d5b86a8708dc9adec748192f19e96028e981d24371a2cfc6ba372d46cb8 + languageName: node + linkType: hard + +"glob@npm:^10.2.2, glob@npm:^10.3.10, glob@npm:^10.3.7": + version: 10.4.5 + resolution: "glob@npm:10.4.5" + dependencies: + foreground-child: "npm:^3.1.0" + jackspeak: "npm:^3.1.2" + minimatch: "npm:^9.0.4" + minipass: "npm:^7.1.2" + package-json-from-dist: "npm:^1.0.0" + path-scurry: "npm:^1.11.1" + bin: + glob: dist/esm/bin.mjs + checksum: 10c0/19a9759ea77b8e3ca0a43c2f07ecddc2ad46216b786bb8f993c445aee80d345925a21e5280c7b7c6c59e860a0154b84e4b2b60321fea92cd3c56b4a7489f160e + languageName: node + linkType: hard + +"glob@npm:^7.0.5, glob@npm:^7.1.3, glob@npm:^7.1.4": + version: 7.2.3 + resolution: "glob@npm:7.2.3" + dependencies: + fs.realpath: "npm:^1.0.0" + inflight: "npm:^1.0.4" + inherits: "npm:2" + minimatch: "npm:^3.1.1" + once: "npm:^1.3.0" + path-is-absolute: "npm:^1.0.0" + checksum: 10c0/65676153e2b0c9095100fe7f25a778bf45608eeb32c6048cf307f579649bcc30353277b3b898a3792602c65764e5baa4f643714dfbdfd64ea271d210c7a425fe + languageName: node + linkType: hard + +"globals@npm:^11.1.0": + version: 11.12.0 + resolution: "globals@npm:11.12.0" + checksum: 10c0/758f9f258e7b19226bd8d4af5d3b0dcf7038780fb23d82e6f98932c44e239f884847f1766e8fa9cc5635ccb3204f7fa7314d4408dd4002a5e8ea827b4018f0a1 + languageName: node + linkType: hard + +"got@npm:^7.0.0": + version: 7.1.0 + resolution: "got@npm:7.1.0" + dependencies: + decompress-response: "npm:^3.2.0" + duplexer3: "npm:^0.1.4" + get-stream: "npm:^3.0.0" + is-plain-obj: "npm:^1.1.0" + is-retry-allowed: "npm:^1.0.0" + is-stream: "npm:^1.0.0" + isurl: "npm:^1.0.0-alpha5" + lowercase-keys: "npm:^1.0.0" + p-cancelable: "npm:^0.3.0" + p-timeout: "npm:^1.1.1" + safe-buffer: "npm:^5.0.1" + timed-out: "npm:^4.0.0" + url-parse-lax: "npm:^1.0.0" + url-to-options: "npm:^1.0.1" + checksum: 10c0/e5faeeb3763cc0c249581407d5e99beb289cef0253ebe17c1e7c68fc10fe213b1fa10a3a9ca7b0a91bf3e1ee756daf451499bb583481f12131a4afb6a29394fd + languageName: node + linkType: hard + +"graceful-fs@npm:^4.1.10, graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": + version: 4.2.11 + resolution: "graceful-fs@npm:4.2.11" + checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 + languageName: node + linkType: hard + +"has-flag@npm:^4.0.0": + version: 4.0.0 + resolution: "has-flag@npm:4.0.0" + checksum: 10c0/2e789c61b7888d66993e14e8331449e525ef42aac53c627cc53d1c3334e768bcb6abdc4f5f0de1478a25beec6f0bd62c7549058b7ac53e924040d4f301f02fd1 + languageName: node + linkType: hard + +"has-symbol-support-x@npm:^1.4.1": + version: 1.4.2 + resolution: "has-symbol-support-x@npm:1.4.2" + checksum: 10c0/993f0e1a7a2c8f41f356b20c33cda49bc2f5c4442f858b0fa58b4852f4ba50e7d7400a2734822c415975114e6f768bba9bb6063dd687026baaeeed6453d94a03 + languageName: node + linkType: hard + +"has-to-string-tag-x@npm:^1.2.0": + version: 1.4.1 + resolution: "has-to-string-tag-x@npm:1.4.1" + dependencies: + has-symbol-support-x: "npm:^1.4.1" + checksum: 10c0/e7197e830fe55afe596fc3fe4ab23fa455f69a1ba850b493e527c728d1e6d2ecc7197ab38b8bdc7ae8a7669e23c19a8b9f52f853a509639c70e0efbdc5d175e5 + languageName: node + linkType: hard + +"has-value@npm:^0.3.1": + version: 0.3.1 + resolution: "has-value@npm:0.3.1" + dependencies: + get-value: "npm:^2.0.3" + has-values: "npm:^0.1.4" + isobject: "npm:^2.0.0" + checksum: 10c0/7a7c2e9d07bc9742c81806150adb154d149bc6155267248c459cd1ce2a64b0759980d26213260e4b7599c8a3754551179f155ded88d0533a0d2bc7bc29028432 + languageName: node + linkType: hard + +"has-value@npm:^1.0.0": + version: 1.0.0 + resolution: "has-value@npm:1.0.0" + dependencies: + get-value: "npm:^2.0.6" + has-values: "npm:^1.0.0" + isobject: "npm:^3.0.0" + checksum: 10c0/17cdccaf50f8aac80a109dba2e2ee5e800aec9a9d382ef9deab66c56b34269e4c9ac720276d5ffa722764304a1180ae436df077da0dd05548cfae0209708ba4d + languageName: node + linkType: hard + +"has-values@npm:^0.1.4": + version: 0.1.4 + resolution: "has-values@npm:0.1.4" + checksum: 10c0/a8f00ad862c20289798c35243d5bd0b0a97dd44b668c2204afe082e0265f2d0bf3b89fc8cc0ef01a52b49f10aa35cf85c336ee3a5f1cac96ed490f5e901cdbf2 + languageName: node + linkType: hard + +"has-values@npm:^1.0.0": + version: 1.0.0 + resolution: "has-values@npm:1.0.0" + dependencies: + is-number: "npm:^3.0.0" + kind-of: "npm:^4.0.0" + checksum: 10c0/a6f2a1cc6b2e43eacc68e62e71ad6890def7f4b13d2ef06b4ad3ee156c23e470e6df144b9b467701908e17633411f1075fdff0cab45fb66c5e0584d89b25f35e + languageName: node + linkType: hard + +"hasown@npm:^2.0.0, hasown@npm:^2.0.2": + version: 2.0.2 + resolution: "hasown@npm:2.0.2" + dependencies: + function-bind: "npm:^1.1.2" + checksum: 10c0/3769d434703b8ac66b209a4cca0737519925bbdb61dd887f93a16372b14694c63ff4e797686d87c90f08168e81082248b9b028bad60d4da9e0d1148766f56eb9 + languageName: node + linkType: hard + +"hnswlib-node@npm:^1.4.2": + version: 1.4.2 + resolution: "hnswlib-node@npm:1.4.2" + dependencies: + bindings: "npm:^1.5.0" + node-addon-api: "npm:^6.0.0" + node-gyp: "npm:latest" + checksum: 10c0/562946c2bfa803080f8b5f67e9e7dd519a3ce5bf8de311bb247fd141eaa43a064d70d7ad5f6f85f98f1d78d6970e4ae2912d0a73039f7968328605c14184f953 + languageName: node + linkType: hard + +"hosted-git-info@npm:^2.1.4": + version: 2.8.9 + resolution: "hosted-git-info@npm:2.8.9" + checksum: 10c0/317cbc6b1bbbe23c2a40ae23f3dafe9fa349ce42a89a36f930e3f9c0530c179a3882d2ef1e4141a4c3674d6faaea862138ec55b43ad6f75e387fda2483a13c70 + languageName: node + linkType: hard + +"html-escaper@npm:^2.0.0": + version: 2.0.2 + resolution: "html-escaper@npm:2.0.2" + checksum: 10c0/208e8a12de1a6569edbb14544f4567e6ce8ecc30b9394fcaa4e7bb1e60c12a7c9a1ed27e31290817157e8626f3a4f29e76c8747030822eb84a6abb15c255f0a0 + languageName: node + linkType: hard + +"http-cache-semantics@npm:^4.1.1": + version: 4.1.1 + resolution: "http-cache-semantics@npm:4.1.1" + checksum: 10c0/ce1319b8a382eb3cbb4a37c19f6bfe14e5bb5be3d09079e885e8c513ab2d3cd9214902f8a31c9dc4e37022633ceabfc2d697405deeaf1b8f3552bb4ed996fdfc + languageName: node + linkType: hard + +"http-proxy-agent@npm:^7.0.0": + version: 7.0.2 + resolution: "http-proxy-agent@npm:7.0.2" + dependencies: + agent-base: "npm:^7.1.0" + debug: "npm:^4.3.4" + checksum: 10c0/4207b06a4580fb85dd6dff521f0abf6db517489e70863dca1a0291daa7f2d3d2d6015a57bd702af068ea5cf9f1f6ff72314f5f5b4228d299c0904135d2aef921 + languageName: node + linkType: hard + +"https-proxy-agent@npm:^7.0.1": + version: 7.0.6 + resolution: "https-proxy-agent@npm:7.0.6" + dependencies: + agent-base: "npm:^7.1.2" + debug: "npm:4" + checksum: 10c0/f729219bc735edb621fa30e6e84e60ee5d00802b8247aac0d7b79b0bd6d4b3294737a337b93b86a0bd9e68099d031858a39260c976dc14cdbba238ba1f8779ac + languageName: node + linkType: hard + +"human-signals@npm:^2.1.0": + version: 2.1.0 + resolution: "human-signals@npm:2.1.0" + checksum: 10c0/695edb3edfcfe9c8b52a76926cd31b36978782062c0ed9b1192b36bebc75c4c87c82e178dfcb0ed0fc27ca59d434198aac0bd0be18f5781ded775604db22304a + languageName: node + linkType: hard + +"humanize-ms@npm:^1.2.1": + version: 1.2.1 + resolution: "humanize-ms@npm:1.2.1" + dependencies: + ms: "npm:^2.0.0" + checksum: 10c0/f34a2c20161d02303c2807badec2f3b49cbfbbb409abd4f95a07377ae01cfe6b59e3d15ac609cffcd8f2521f0eb37b7e1091acf65da99aa2a4f1ad63c21e7e7a + languageName: node + linkType: hard + +"iconv-lite@npm:^0.6.2": + version: 0.6.3 + resolution: "iconv-lite@npm:0.6.3" + dependencies: + safer-buffer: "npm:>= 2.1.2 < 3.0.0" + checksum: 10c0/98102bc66b33fcf5ac044099d1257ba0b7ad5e3ccd3221f34dd508ab4070edff183276221684e1e0555b145fce0850c9f7d2b60a9fcac50fbb4ea0d6e845a3b1 + languageName: node + linkType: hard + +"ieee754@npm:^1.1.13": + version: 1.2.1 + resolution: "ieee754@npm:1.2.1" + checksum: 10c0/b0782ef5e0935b9f12883a2e2aa37baa75da6e66ce6515c168697b42160807d9330de9a32ec1ed73149aea02e0d822e572bca6f1e22bdcbd2149e13b050b17bb + languageName: node + linkType: hard + +"import-local@npm:^3.0.2": + version: 3.2.0 + resolution: "import-local@npm:3.2.0" + dependencies: + pkg-dir: "npm:^4.2.0" + resolve-cwd: "npm:^3.0.0" + bin: + import-local-fixture: fixtures/cli.js + checksum: 10c0/94cd6367a672b7e0cb026970c85b76902d2710a64896fa6de93bd5c571dd03b228c5759308959de205083e3b1c61e799f019c9e36ee8e9c523b993e1057f0433 + languageName: node + linkType: hard + +"imurmurhash@npm:^0.1.4": + version: 0.1.4 + resolution: "imurmurhash@npm:0.1.4" + checksum: 10c0/8b51313850dd33605c6c9d3fd9638b714f4c4c40250cff658209f30d40da60f78992fb2df5dabee4acf589a6a82bbc79ad5486550754bd9ec4e3fc0d4a57d6a6 + languageName: node + linkType: hard + +"indent-string@npm:^2.1.0": + version: 2.1.0 + resolution: "indent-string@npm:2.1.0" + dependencies: + repeating: "npm:^2.0.0" + checksum: 10c0/d38e04bbd9b0e1843164d06e9ac1e106ead5a6f7b5714c94ecebc2555b2d3af075b3ddc4d6f92ac87d5319c0935df60d571d3f45f17a6f0ec707be65f26ae924 + languageName: node + linkType: hard + +"inflight@npm:^1.0.4": + version: 1.0.6 + resolution: "inflight@npm:1.0.6" + dependencies: + once: "npm:^1.3.0" + wrappy: "npm:1" + checksum: 10c0/7faca22584600a9dc5b9fca2cd5feb7135ac8c935449837b315676b4c90aa4f391ec4f42240178244b5a34e8bede1948627fda392ca3191522fc46b34e985ab2 + languageName: node + linkType: hard + +"inherits@npm:2, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.3": + version: 2.0.4 + resolution: "inherits@npm:2.0.4" + checksum: 10c0/4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2 + languageName: node + linkType: hard + +"ini@npm:^1.3.4": + version: 1.3.8 + resolution: "ini@npm:1.3.8" + checksum: 10c0/ec93838d2328b619532e4f1ff05df7909760b6f66d9c9e2ded11e5c1897d6f2f9980c54dd638f88654b00919ce31e827040631eab0a3969e4d1abefa0719516a + languageName: node + linkType: hard + +"ip-address@npm:^9.0.5": + version: 9.0.5 + resolution: "ip-address@npm:9.0.5" + dependencies: + jsbn: "npm:1.1.0" + sprintf-js: "npm:^1.1.3" + checksum: 10c0/331cd07fafcb3b24100613e4b53e1a2b4feab11e671e655d46dc09ee233da5011284d09ca40c4ecbdfe1d0004f462958675c224a804259f2f78d2465a87824bc + languageName: node + linkType: hard + +"ip-regex@npm:^4.1.0": + version: 4.3.0 + resolution: "ip-regex@npm:4.3.0" + checksum: 10c0/f9ef1f5d0df05b9133a882974e572ae525ccd205260cb103dae337f1fc7451ed783391acc6ad688e56dd2598f769e8e72ecbb650ec34763396af822a91768562 + languageName: node + linkType: hard + +"is-accessor-descriptor@npm:^1.0.1": + version: 1.0.1 + resolution: "is-accessor-descriptor@npm:1.0.1" + dependencies: + hasown: "npm:^2.0.0" + checksum: 10c0/d034034074c5ffeb6c868e091083182279db1a956f49f8d1494cecaa0f8b99d706556ded2a9b20d9aa290549106eef8204d67d8572902e06dcb1add6db6b524d + languageName: node + linkType: hard + +"is-any-array@npm:^2.0.0": + version: 2.0.1 + resolution: "is-any-array@npm:2.0.1" + checksum: 10c0/f9807458a51e63ca1ac27fd6f3a3ace8200f077094e00d9b05b24cfbc9d5594d586d6ecf3416271f26939d5cb93fc52ca869cb5744e77318c3f53ec70b08d61f + languageName: node + linkType: hard + +"is-arrayish@npm:^0.2.1": + version: 0.2.1 + resolution: "is-arrayish@npm:0.2.1" + checksum: 10c0/e7fb686a739068bb70f860b39b67afc62acc62e36bb61c5f965768abce1873b379c563e61dd2adad96ebb7edf6651111b385e490cf508378959b0ed4cac4e729 + languageName: node + linkType: hard + +"is-binary-path@npm:^1.0.0": + version: 1.0.1 + resolution: "is-binary-path@npm:1.0.1" + dependencies: + binary-extensions: "npm:^1.0.0" + checksum: 10c0/16e456fa3782eaf3d8e28d382b750507e3d54ff6694df8a1b2c6498da321e2ead311de9c42e653d8fb3213de72bac204b5f97e4a110cda8a72f17b1c1b4eb643 + languageName: node + linkType: hard + +"is-buffer@npm:^1.1.5, is-buffer@npm:~1.1.6": + version: 1.1.6 + resolution: "is-buffer@npm:1.1.6" + checksum: 10c0/ae18aa0b6e113d6c490ad1db5e8df9bdb57758382b313f5a22c9c61084875c6396d50bbf49315f5b1926d142d74dfb8d31b40d993a383e0a158b15fea7a82234 + languageName: node + linkType: hard + +"is-core-module@npm:^2.16.0": + version: 2.16.1 + resolution: "is-core-module@npm:2.16.1" + dependencies: + hasown: "npm:^2.0.2" + checksum: 10c0/898443c14780a577e807618aaae2b6f745c8538eca5c7bc11388a3f2dc6de82b9902bcc7eb74f07be672b11bbe82dd6a6edded44a00cb3d8f933d0459905eedd + languageName: node + linkType: hard + +"is-data-descriptor@npm:^1.0.1": + version: 1.0.1 + resolution: "is-data-descriptor@npm:1.0.1" + dependencies: + hasown: "npm:^2.0.0" + checksum: 10c0/ad3acc372e3227f87eb8cdba112c343ca2a67f1885aecf64f02f901cb0858a1fc9488ad42135ab102e9d9e71a62b3594740790bb103a9ba5da830a131a89e3e8 + languageName: node + linkType: hard + +"is-descriptor@npm:^0.1.0": + version: 0.1.7 + resolution: "is-descriptor@npm:0.1.7" + dependencies: + is-accessor-descriptor: "npm:^1.0.1" + is-data-descriptor: "npm:^1.0.1" + checksum: 10c0/f5960b9783f508aec570465288cb673d4b3cc4aae4e6de970c3afd9a8fc1351edcb85d78b2cce2ec5251893a423f73263cab3bb94cf365a8d71b5d510a116392 + languageName: node + linkType: hard + +"is-descriptor@npm:^1.0.0, is-descriptor@npm:^1.0.2": + version: 1.0.3 + resolution: "is-descriptor@npm:1.0.3" + dependencies: + is-accessor-descriptor: "npm:^1.0.1" + is-data-descriptor: "npm:^1.0.1" + checksum: 10c0/b4ee667ea787d3a0be4e58536087fd0587de2b0b6672fbfe288f5b8d831ac4b79fd987f31d6c2d4e5543a42c97a87428bc5215ce292a1a47070147793878226f + languageName: node + linkType: hard + +"is-dotfile@npm:^1.0.0": + version: 1.0.3 + resolution: "is-dotfile@npm:1.0.3" + checksum: 10c0/aa6bb345aa06555f46eedd491bdd039b95d3fa80b899ee7d6b30628e309d705d403e445fd8a126ff70962adc1252171dbe0d72884afa323fb3c817387faf10ed + languageName: node + linkType: hard + +"is-equal-shallow@npm:^0.1.3": + version: 0.1.3 + resolution: "is-equal-shallow@npm:0.1.3" + dependencies: + is-primitive: "npm:^2.0.0" + checksum: 10c0/ae623698cdfeeec0688b2e6128d76cabe1cc5957d533bf7f7596caf3f2993d4c50a20c97420e60a0d58745fc4b2709dfb62e653e054cf948c5834615b715f05f + languageName: node + linkType: hard + +"is-extendable@npm:^0.1.0, is-extendable@npm:^0.1.1": + version: 0.1.1 + resolution: "is-extendable@npm:0.1.1" + checksum: 10c0/dd5ca3994a28e1740d1e25192e66eed128e0b2ff161a7ea348e87ae4f616554b486854de423877a2a2c171d5f7cd6e8093b91f54533bc88a59ee1c9838c43879 + languageName: node + linkType: hard + +"is-extendable@npm:^1.0.1": + version: 1.0.1 + resolution: "is-extendable@npm:1.0.1" + dependencies: + is-plain-object: "npm:^2.0.4" + checksum: 10c0/1d6678a5be1563db6ecb121331c819c38059703f0179f52aa80c242c223ee9c6b66470286636c0e63d7163e4d905c0a7d82a096e0b5eaeabb51b9f8d0af0d73f + languageName: node + linkType: hard + +"is-extglob@npm:^1.0.0": + version: 1.0.0 + resolution: "is-extglob@npm:1.0.0" + checksum: 10c0/1ce5366d19958f36069a45ca996c1e51ab607f42a01eb0505f0ccffe8f9c91f5bcba6e971605efd8b4d4dfd0111afa3c8df3e1746db5b85b9a8f933f5e7286b7 + languageName: node + linkType: hard + +"is-finite@npm:^1.0.0": + version: 1.1.0 + resolution: "is-finite@npm:1.1.0" + checksum: 10c0/ca6bc7a0321b339f098e657bd4cbf4bb2410f5a11f1b9adb1a1a9ab72288b64368e8251326cb1f74e985f2779299cec3e1f1e558b68ce7e1e2c9be17b7cfd626 + languageName: node + linkType: hard + +"is-fullwidth-code-point@npm:^3.0.0": + version: 3.0.0 + resolution: "is-fullwidth-code-point@npm:3.0.0" + checksum: 10c0/bb11d825e049f38e04c06373a8d72782eee0205bda9d908cc550ccb3c59b99d750ff9537982e01733c1c94a58e35400661f57042158ff5e8f3e90cf936daf0fc + languageName: node + linkType: hard + +"is-generator-fn@npm:^2.0.0": + version: 2.1.0 + resolution: "is-generator-fn@npm:2.1.0" + checksum: 10c0/2957cab387997a466cd0bf5c1b6047bd21ecb32bdcfd8996b15747aa01002c1c88731802f1b3d34ac99f4f6874b626418bd118658cf39380fe5fff32a3af9c4d + languageName: node + linkType: hard + +"is-glob@npm:^2.0.0, is-glob@npm:^2.0.1": + version: 2.0.1 + resolution: "is-glob@npm:2.0.1" + dependencies: + is-extglob: "npm:^1.0.0" + checksum: 10c0/ef156806af0924983325c9218a8b8a838fa50e1a104ed2a11fe94829a5b27c1b05a4c8cf98d96cb3a7fea539c21f14ae2081e1a248f3d5a9eea62f2d4e9f8b0c + languageName: node + linkType: hard + +"is-natural-number@npm:^4.0.1": + version: 4.0.1 + resolution: "is-natural-number@npm:4.0.1" + checksum: 10c0/f05c544cb0ad39d4410e2ae2244282bf61918ebbb808b665436ffca4f6bbe908d3ae3a8d21fe143d302951f157d969986dd432098b63899561639fcd1ce1c280 + languageName: node + linkType: hard + +"is-number@npm:^2.1.0": + version: 2.1.0 + resolution: "is-number@npm:2.1.0" + dependencies: + kind-of: "npm:^3.0.2" + checksum: 10c0/f9d2079a0dbfbce6f9f3b6644f6eb60d0211ee56bb26db3963ef4d514e2444f87e3f56c8169896c90544c501ed5e510c5b83abae6748a57d15f6ac8d85efd602 + languageName: node + linkType: hard + +"is-number@npm:^3.0.0": + version: 3.0.0 + resolution: "is-number@npm:3.0.0" + dependencies: + kind-of: "npm:^3.0.2" + checksum: 10c0/e639c54640b7f029623df24d3d103901e322c0c25ea5bde97cd723c2d0d4c05857a8364ab5c58d963089dbed6bf1d0ffe975cb6aef917e2ad0ccbca653d31b4f + languageName: node + linkType: hard + +"is-number@npm:^4.0.0": + version: 4.0.0 + resolution: "is-number@npm:4.0.0" + checksum: 10c0/bb17a331f357eb59a7f8db848086c41886715b2ea1db03f284a99d14001cda094083a5b6a7b343b5bcf410ccef668a70bc626d07bc2032cc4ab46dd264cea244 + languageName: node + linkType: hard + +"is-number@npm:^7.0.0": + version: 7.0.0 + resolution: "is-number@npm:7.0.0" + checksum: 10c0/b4686d0d3053146095ccd45346461bc8e53b80aeb7671cc52a4de02dbbf7dc0d1d2a986e2fe4ae206984b4d34ef37e8b795ebc4f4295c978373e6575e295d811 + languageName: node + linkType: hard + +"is-object@npm:^1.0.1": + version: 1.0.2 + resolution: "is-object@npm:1.0.2" + checksum: 10c0/9cfb80c3a850f453d4a77297e0556bc2040ac6bea5b6e418aee208654938b36bab768169bef3945ccfac7a9bb460edd8034e7c6d8973bcf147d7571e1b53e764 + languageName: node + linkType: hard + +"is-plain-obj@npm:^1.0.0, is-plain-obj@npm:^1.1.0": + version: 1.1.0 + resolution: "is-plain-obj@npm:1.1.0" + checksum: 10c0/daaee1805add26f781b413fdf192fc91d52409583be30ace35c82607d440da63cc4cac0ac55136716688d6c0a2c6ef3edb2254fecbd1fe06056d6bd15975ee8c + languageName: node + linkType: hard + +"is-plain-object@npm:^2.0.3, is-plain-object@npm:^2.0.4": + version: 2.0.4 + resolution: "is-plain-object@npm:2.0.4" + dependencies: + isobject: "npm:^3.0.1" + checksum: 10c0/f050fdd5203d9c81e8c4df1b3ff461c4bc64e8b5ca383bcdde46131361d0a678e80bcf00b5257646f6c636197629644d53bd8e2375aea633de09a82d57e942f4 + languageName: node + linkType: hard + +"is-posix-bracket@npm:^0.1.0": + version: 0.1.1 + resolution: "is-posix-bracket@npm:0.1.1" + checksum: 10c0/13ef3f466700fd63c1c348e647edfa22b73bb89cf8d993fb7820824ea2ddc7119975e64861fe1d52c3c4e881a7dcf2538faa05e3f700e9d2ea56eeeb4ba26a25 + languageName: node + linkType: hard + +"is-primitive@npm:^2.0.0": + version: 2.0.0 + resolution: "is-primitive@npm:2.0.0" + checksum: 10c0/bb84a2f05eca29f560aafc3bca9173e4c06d74dc24a6fc7faee6e61c70a00bae95e08f0d3d217d61e646b521378d4326103d124bb469d1de0240c8722b56a3fd + languageName: node + linkType: hard + +"is-retry-allowed@npm:^1.0.0": + version: 1.2.0 + resolution: "is-retry-allowed@npm:1.2.0" + checksum: 10c0/a80f14e1e11c27a58f268f2927b883b635703e23a853cb7b8436e3456bf2ea3efd5082a4e920093eec7bd372c1ce6ea7cea78a9376929c211039d0cc4a393a44 + languageName: node + linkType: hard + +"is-stream@npm:^1.0.0, is-stream@npm:^1.1.0": + version: 1.1.0 + resolution: "is-stream@npm:1.1.0" + checksum: 10c0/b8ae7971e78d2e8488d15f804229c6eed7ed36a28f8807a1815938771f4adff0e705218b7dab968270433f67103e4fef98062a0beea55d64835f705ee72c7002 + languageName: node + linkType: hard + +"is-stream@npm:^2.0.0": + version: 2.0.1 + resolution: "is-stream@npm:2.0.1" + checksum: 10c0/7c284241313fc6efc329b8d7f08e16c0efeb6baab1b4cd0ba579eb78e5af1aa5da11e68559896a2067cd6c526bd29241dda4eb1225e627d5aa1a89a76d4635a5 + languageName: node + linkType: hard + +"is-url@npm:^1.2.4": + version: 1.2.4 + resolution: "is-url@npm:1.2.4" + checksum: 10c0/0157a79874f8f95fdd63540e3f38c8583c2ef572661cd0693cda80ae3e42dfe8e9a4a972ec1b827f861d9a9acf75b37f7d58a37f94a8a053259642912c252bc3 + languageName: node + linkType: hard + +"is-utf8@npm:^0.2.0": + version: 0.2.1 + resolution: "is-utf8@npm:0.2.1" + checksum: 10c0/3ed45e5b4ddfa04ed7e32c63d29c61b980ecd6df74698f45978b8c17a54034943bcbffb6ae243202e799682a66f90fef526f465dd39438745e9fe70794c1ef09 + languageName: node + linkType: hard + +"is-windows@npm:^1.0.2": + version: 1.0.2 + resolution: "is-windows@npm:1.0.2" + checksum: 10c0/b32f418ab3385604a66f1b7a3ce39d25e8881dee0bd30816dc8344ef6ff9df473a732bcc1ec4e84fe99b2f229ae474f7133e8e93f9241686cfcf7eebe53ba7a5 + languageName: node + linkType: hard + +"is2@npm:^2.0.6": + version: 2.0.9 + resolution: "is2@npm:2.0.9" + dependencies: + deep-is: "npm:^0.1.3" + ip-regex: "npm:^4.1.0" + is-url: "npm:^1.2.4" + checksum: 10c0/51090a2ad046651c1523e6aec98843c2be4b61fdafa5a68d89966b7d3b7116fdc68cfb218cfc3825eb20175fa741de2f89249546352dbc4ac1d86847fa4a084a + languageName: node + linkType: hard + +"isarray@npm:1.0.0, isarray@npm:~1.0.0": + version: 1.0.0 + resolution: "isarray@npm:1.0.0" + checksum: 10c0/18b5be6669be53425f0b84098732670ed4e727e3af33bc7f948aac01782110eb9a18b3b329c5323bcdd3acdaae547ee077d3951317e7f133bff7105264b3003d + languageName: node + linkType: hard + +"isexe@npm:^2.0.0": + version: 2.0.0 + resolution: "isexe@npm:2.0.0" + checksum: 10c0/228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d + languageName: node + linkType: hard + +"isexe@npm:^3.1.1": + version: 3.1.1 + resolution: "isexe@npm:3.1.1" + checksum: 10c0/9ec257654093443eb0a528a9c8cbba9c0ca7616ccb40abd6dde7202734d96bb86e4ac0d764f0f8cd965856aacbff2f4ce23e730dc19dfb41e3b0d865ca6fdcc7 + languageName: node + linkType: hard + +"isobject@npm:^2.0.0": + version: 2.1.0 + resolution: "isobject@npm:2.1.0" + dependencies: + isarray: "npm:1.0.0" + checksum: 10c0/c4cafec73b3b2ee11be75dff8dafd283b5728235ac099b07d7873d5182553a707768e208327bbc12931b9422d8822280bf88d894a0024ff5857b3efefb480e7b + languageName: node + linkType: hard + +"isobject@npm:^3.0.0, isobject@npm:^3.0.1": + version: 3.0.1 + resolution: "isobject@npm:3.0.1" + checksum: 10c0/03344f5064a82f099a0cd1a8a407f4c0d20b7b8485e8e816c39f249e9416b06c322e8dec5b842b6bb8a06de0af9cb48e7bc1b5352f0fadc2f0abac033db3d4db + languageName: node + linkType: hard + +"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": + version: 3.2.2 + resolution: "istanbul-lib-coverage@npm:3.2.2" + checksum: 10c0/6c7ff2106769e5f592ded1fb418f9f73b4411fd5a084387a5410538332b6567cd1763ff6b6cadca9b9eb2c443cce2f7ea7d7f1b8d315f9ce58539793b1e0922b + languageName: node + linkType: hard + +"istanbul-lib-instrument@npm:^5.0.4": + version: 5.2.1 + resolution: "istanbul-lib-instrument@npm:5.2.1" + dependencies: + "@babel/core": "npm:^7.12.3" + "@babel/parser": "npm:^7.14.7" + "@istanbuljs/schema": "npm:^0.1.2" + istanbul-lib-coverage: "npm:^3.2.0" + semver: "npm:^6.3.0" + checksum: 10c0/8a1bdf3e377dcc0d33ec32fe2b6ecacdb1e4358fd0eb923d4326bb11c67622c0ceb99600a680f3dad5d29c66fc1991306081e339b4d43d0b8a2ab2e1d910a6ee + languageName: node + linkType: hard + +"istanbul-lib-instrument@npm:^6.0.0": + version: 6.0.3 + resolution: "istanbul-lib-instrument@npm:6.0.3" + dependencies: + "@babel/core": "npm:^7.23.9" + "@babel/parser": "npm:^7.23.9" + "@istanbuljs/schema": "npm:^0.1.3" + istanbul-lib-coverage: "npm:^3.2.0" + semver: "npm:^7.5.4" + checksum: 10c0/a1894e060dd2a3b9f046ffdc87b44c00a35516f5e6b7baf4910369acca79e506fc5323a816f811ae23d82334b38e3ddeb8b3b331bd2c860540793b59a8689128 + languageName: node + linkType: hard + +"istanbul-lib-report@npm:^3.0.0": + version: 3.0.1 + resolution: "istanbul-lib-report@npm:3.0.1" + dependencies: + istanbul-lib-coverage: "npm:^3.0.0" + make-dir: "npm:^4.0.0" + supports-color: "npm:^7.1.0" + checksum: 10c0/84323afb14392de8b6a5714bd7e9af845cfbd56cfe71ed276cda2f5f1201aea673c7111901227ee33e68e4364e288d73861eb2ed48f6679d1e69a43b6d9b3ba7 + languageName: node + linkType: hard + +"istanbul-lib-source-maps@npm:^4.0.0": + version: 4.0.1 + resolution: "istanbul-lib-source-maps@npm:4.0.1" + dependencies: + debug: "npm:^4.1.1" + istanbul-lib-coverage: "npm:^3.0.0" + source-map: "npm:^0.6.1" + checksum: 10c0/19e4cc405016f2c906dff271a76715b3e881fa9faeb3f09a86cb99b8512b3a5ed19cadfe0b54c17ca0e54c1142c9c6de9330d65506e35873994e06634eebeb66 + languageName: node + linkType: hard + +"istanbul-reports@npm:^3.1.3": + version: 3.1.7 + resolution: "istanbul-reports@npm:3.1.7" + dependencies: + html-escaper: "npm:^2.0.0" + istanbul-lib-report: "npm:^3.0.0" + checksum: 10c0/a379fadf9cf8dc5dfe25568115721d4a7eb82fbd50b005a6672aff9c6989b20cc9312d7865814e0859cd8df58cbf664482e1d3604be0afde1f7fc3ccc1394a51 + languageName: node + linkType: hard + +"isurl@npm:^1.0.0-alpha5": + version: 1.0.0 + resolution: "isurl@npm:1.0.0" + dependencies: + has-to-string-tag-x: "npm:^1.2.0" + is-object: "npm:^1.0.1" + checksum: 10c0/137e377cd72fefdbc950a226a08e7b35d53672c3b7173b03e72194c3e78a03109aa44c15390b26445b90b7708acb89ca89ed3cd7cc55a6afc7c37cbc88fc581a + languageName: node + linkType: hard + +"jackspeak@npm:^3.1.2": + version: 3.4.3 + resolution: "jackspeak@npm:3.4.3" + dependencies: + "@isaacs/cliui": "npm:^8.0.2" + "@pkgjs/parseargs": "npm:^0.11.0" + dependenciesMeta: + "@pkgjs/parseargs": + optional: true + checksum: 10c0/6acc10d139eaefdbe04d2f679e6191b3abf073f111edf10b1de5302c97ec93fffeb2fdd8681ed17f16268aa9dd4f8c588ed9d1d3bffbbfa6e8bf897cbb3149b9 + languageName: node + linkType: hard + +"jake@npm:^10.8.5": + version: 10.9.2 + resolution: "jake@npm:10.9.2" + dependencies: + async: "npm:^3.2.3" + chalk: "npm:^4.0.2" + filelist: "npm:^1.0.4" + minimatch: "npm:^3.1.2" + bin: + jake: bin/cli.js + checksum: 10c0/c4597b5ed9b6a908252feab296485a4f87cba9e26d6c20e0ca144fb69e0c40203d34a2efddb33b3d297b8bd59605e6c1f44f6221ca1e10e69175ecbf3ff5fe31 + languageName: node + linkType: hard + +"jest-changed-files@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-changed-files@npm:29.7.0" + dependencies: + execa: "npm:^5.0.0" + jest-util: "npm:^29.7.0" + p-limit: "npm:^3.1.0" + checksum: 10c0/e071384d9e2f6bb462231ac53f29bff86f0e12394c1b49ccafbad225ce2ab7da226279a8a94f421949920bef9be7ef574fd86aee22e8adfa149be73554ab828b + languageName: node + linkType: hard + +"jest-circus@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-circus@npm:29.7.0" + dependencies: + "@jest/environment": "npm:^29.7.0" + "@jest/expect": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + co: "npm:^4.6.0" + dedent: "npm:^1.0.0" + is-generator-fn: "npm:^2.0.0" + jest-each: "npm:^29.7.0" + jest-matcher-utils: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-runtime: "npm:^29.7.0" + jest-snapshot: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + p-limit: "npm:^3.1.0" + pretty-format: "npm:^29.7.0" + pure-rand: "npm:^6.0.0" + slash: "npm:^3.0.0" + stack-utils: "npm:^2.0.3" + checksum: 10c0/8d15344cf7a9f14e926f0deed64ed190c7a4fa1ed1acfcd81e4cc094d3cc5bf7902ebb7b874edc98ada4185688f90c91e1747e0dfd7ac12463b097968ae74b5e + languageName: node + linkType: hard + +"jest-cli@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-cli@npm:29.7.0" + dependencies: + "@jest/core": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + chalk: "npm:^4.0.0" + create-jest: "npm:^29.7.0" + exit: "npm:^0.1.2" + import-local: "npm:^3.0.2" + jest-config: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-validate: "npm:^29.7.0" + yargs: "npm:^17.3.1" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + bin: + jest: bin/jest.js + checksum: 10c0/a658fd55050d4075d65c1066364595962ead7661711495cfa1dfeecf3d6d0a8ffec532f3dbd8afbb3e172dd5fd2fb2e813c5e10256e7cf2fea766314942fb43a + languageName: node + linkType: hard + +"jest-config@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-config@npm:29.7.0" + dependencies: + "@babel/core": "npm:^7.11.6" + "@jest/test-sequencer": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + babel-jest: "npm:^29.7.0" + chalk: "npm:^4.0.0" + ci-info: "npm:^3.2.0" + deepmerge: "npm:^4.2.2" + glob: "npm:^7.1.3" + graceful-fs: "npm:^4.2.9" + jest-circus: "npm:^29.7.0" + jest-environment-node: "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + jest-regex-util: "npm:^29.6.3" + jest-resolve: "npm:^29.7.0" + jest-runner: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-validate: "npm:^29.7.0" + micromatch: "npm:^4.0.4" + parse-json: "npm:^5.2.0" + pretty-format: "npm:^29.7.0" + slash: "npm:^3.0.0" + strip-json-comments: "npm:^3.1.1" + peerDependencies: + "@types/node": "*" + ts-node: ">=9.0.0" + peerDependenciesMeta: + "@types/node": + optional: true + ts-node: + optional: true + checksum: 10c0/bab23c2eda1fff06e0d104b00d6adfb1d1aabb7128441899c9bff2247bd26710b050a5364281ce8d52b46b499153bf7e3ee88b19831a8f3451f1477a0246a0f1 + languageName: node + linkType: hard + +"jest-diff@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-diff@npm:29.7.0" + dependencies: + chalk: "npm:^4.0.0" + diff-sequences: "npm:^29.6.3" + jest-get-type: "npm:^29.6.3" + pretty-format: "npm:^29.7.0" + checksum: 10c0/89a4a7f182590f56f526443dde69acefb1f2f0c9e59253c61d319569856c4931eae66b8a3790c443f529267a0ddba5ba80431c585deed81827032b2b2a1fc999 + languageName: node + linkType: hard + +"jest-docblock@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-docblock@npm:29.7.0" + dependencies: + detect-newline: "npm:^3.0.0" + checksum: 10c0/d932a8272345cf6b6142bb70a2bb63e0856cc0093f082821577ea5bdf4643916a98744dfc992189d2b1417c38a11fa42466f6111526bc1fb81366f56410f3be9 + languageName: node + linkType: hard + +"jest-each@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-each@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + chalk: "npm:^4.0.0" + jest-get-type: "npm:^29.6.3" + jest-util: "npm:^29.7.0" + pretty-format: "npm:^29.7.0" + checksum: 10c0/f7f9a90ebee80cc688e825feceb2613627826ac41ea76a366fa58e669c3b2403d364c7c0a74d862d469b103c843154f8456d3b1c02b487509a12afa8b59edbb4 + languageName: node + linkType: hard + +"jest-environment-node@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-environment-node@npm:29.7.0" + dependencies: + "@jest/environment": "npm:^29.7.0" + "@jest/fake-timers": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + jest-mock: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + checksum: 10c0/61f04fec077f8b1b5c1a633e3612fc0c9aa79a0ab7b05600683428f1e01a4d35346c474bde6f439f9fcc1a4aa9a2861ff852d079a43ab64b02105d1004b2592b + languageName: node + linkType: hard + +"jest-get-type@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-get-type@npm:29.6.3" + checksum: 10c0/552e7a97a983d3c2d4e412a44eb7de0430ff773dd99f7500962c268d6dfbfa431d7d08f919c9d960530e5f7f78eb47f267ad9b318265e5092b3ff9ede0db7c2b + languageName: node + linkType: hard + +"jest-haste-map@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-haste-map@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + "@types/graceful-fs": "npm:^4.1.3" + "@types/node": "npm:*" + anymatch: "npm:^3.0.3" + fb-watchman: "npm:^2.0.0" + fsevents: "npm:^2.3.2" + graceful-fs: "npm:^4.2.9" + jest-regex-util: "npm:^29.6.3" + jest-util: "npm:^29.7.0" + jest-worker: "npm:^29.7.0" + micromatch: "npm:^4.0.4" + walker: "npm:^1.0.8" + dependenciesMeta: + fsevents: + optional: true + checksum: 10c0/2683a8f29793c75a4728787662972fedd9267704c8f7ef9d84f2beed9a977f1cf5e998c07b6f36ba5603f53cb010c911fe8cd0ac9886e073fe28ca66beefd30c + languageName: node + linkType: hard + +"jest-junit@npm:^16.0.0": + version: 16.0.0 + resolution: "jest-junit@npm:16.0.0" + dependencies: + mkdirp: "npm:^1.0.4" + strip-ansi: "npm:^6.0.1" + uuid: "npm:^8.3.2" + xml: "npm:^1.0.1" + checksum: 10c0/d813d4d142341c2b51b634db7ad6ceb9849514cb58f96ec5e7e4cf4031a557133490452710c2d9dec9b1dd546334d9ca663e042d3070c3e8f102ce6217bd8e2e + languageName: node + linkType: hard + +"jest-leak-detector@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-leak-detector@npm:29.7.0" + dependencies: + jest-get-type: "npm:^29.6.3" + pretty-format: "npm:^29.7.0" + checksum: 10c0/71bb9f77fc489acb842a5c7be030f2b9acb18574dc9fb98b3100fc57d422b1abc55f08040884bd6e6dbf455047a62f7eaff12aa4058f7cbdc11558718ca6a395 + languageName: node + linkType: hard + +"jest-matcher-utils@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-matcher-utils@npm:29.7.0" + dependencies: + chalk: "npm:^4.0.0" + jest-diff: "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + pretty-format: "npm:^29.7.0" + checksum: 10c0/0d0e70b28fa5c7d4dce701dc1f46ae0922102aadc24ed45d594dd9b7ae0a8a6ef8b216718d1ab79e451291217e05d4d49a82666e1a3cc2b428b75cd9c933244e + languageName: node + linkType: hard + +"jest-message-util@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-message-util@npm:29.7.0" + dependencies: + "@babel/code-frame": "npm:^7.12.13" + "@jest/types": "npm:^29.6.3" + "@types/stack-utils": "npm:^2.0.0" + chalk: "npm:^4.0.0" + graceful-fs: "npm:^4.2.9" + micromatch: "npm:^4.0.4" + pretty-format: "npm:^29.7.0" + slash: "npm:^3.0.0" + stack-utils: "npm:^2.0.3" + checksum: 10c0/850ae35477f59f3e6f27efac5215f706296e2104af39232bb14e5403e067992afb5c015e87a9243ec4d9df38525ef1ca663af9f2f4766aa116f127247008bd22 + languageName: node + linkType: hard + +"jest-mock@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-mock@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + jest-util: "npm:^29.7.0" + checksum: 10c0/7b9f8349ee87695a309fe15c46a74ab04c853369e5c40952d68061d9dc3159a0f0ed73e215f81b07ee97a9faaf10aebe5877a9d6255068a0977eae6a9ff1d5ac + languageName: node + linkType: hard + +"jest-pnp-resolver@npm:^1.2.2": + version: 1.2.3 + resolution: "jest-pnp-resolver@npm:1.2.3" + peerDependencies: + jest-resolve: "*" + peerDependenciesMeta: + jest-resolve: + optional: true + checksum: 10c0/86eec0c78449a2de733a6d3e316d49461af6a858070e113c97f75fb742a48c2396ea94150cbca44159ffd4a959f743a47a8b37a792ef6fdad2cf0a5cba973fac + languageName: node + linkType: hard + +"jest-regex-util@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-regex-util@npm:29.6.3" + checksum: 10c0/4e33fb16c4f42111159cafe26397118dcfc4cf08bc178a67149fb05f45546a91928b820894572679d62559839d0992e21080a1527faad65daaae8743a5705a3b + languageName: node + linkType: hard + +"jest-resolve-dependencies@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-resolve-dependencies@npm:29.7.0" + dependencies: + jest-regex-util: "npm:^29.6.3" + jest-snapshot: "npm:^29.7.0" + checksum: 10c0/b6e9ad8ae5b6049474118ea6441dfddd385b6d1fc471db0136f7c8fbcfe97137a9665e4f837a9f49f15a29a1deb95a14439b7aec812f3f99d08f228464930f0d + languageName: node + linkType: hard + +"jest-resolve@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-resolve@npm:29.7.0" + dependencies: + chalk: "npm:^4.0.0" + graceful-fs: "npm:^4.2.9" + jest-haste-map: "npm:^29.7.0" + jest-pnp-resolver: "npm:^1.2.2" + jest-util: "npm:^29.7.0" + jest-validate: "npm:^29.7.0" + resolve: "npm:^1.20.0" + resolve.exports: "npm:^2.0.0" + slash: "npm:^3.0.0" + checksum: 10c0/59da5c9c5b50563e959a45e09e2eace783d7f9ac0b5dcc6375dea4c0db938d2ebda97124c8161310082760e8ebbeff9f6b177c15ca2f57fb424f637a5d2adb47 + languageName: node + linkType: hard + +"jest-runner@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-runner@npm:29.7.0" + dependencies: + "@jest/console": "npm:^29.7.0" + "@jest/environment": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + emittery: "npm:^0.13.1" + graceful-fs: "npm:^4.2.9" + jest-docblock: "npm:^29.7.0" + jest-environment-node: "npm:^29.7.0" + jest-haste-map: "npm:^29.7.0" + jest-leak-detector: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-resolve: "npm:^29.7.0" + jest-runtime: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-watcher: "npm:^29.7.0" + jest-worker: "npm:^29.7.0" + p-limit: "npm:^3.1.0" + source-map-support: "npm:0.5.13" + checksum: 10c0/2194b4531068d939f14c8d3274fe5938b77fa73126aedf9c09ec9dec57d13f22c72a3b5af01ac04f5c1cf2e28d0ac0b4a54212a61b05f10b5d6b47f2a1097bb4 + languageName: node + linkType: hard + +"jest-runtime@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-runtime@npm:29.7.0" + dependencies: + "@jest/environment": "npm:^29.7.0" + "@jest/fake-timers": "npm:^29.7.0" + "@jest/globals": "npm:^29.7.0" + "@jest/source-map": "npm:^29.6.3" + "@jest/test-result": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + cjs-module-lexer: "npm:^1.0.0" + collect-v8-coverage: "npm:^1.0.0" + glob: "npm:^7.1.3" + graceful-fs: "npm:^4.2.9" + jest-haste-map: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-mock: "npm:^29.7.0" + jest-regex-util: "npm:^29.6.3" + jest-resolve: "npm:^29.7.0" + jest-snapshot: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + slash: "npm:^3.0.0" + strip-bom: "npm:^4.0.0" + checksum: 10c0/7cd89a1deda0bda7d0941835434e44f9d6b7bd50b5c5d9b0fc9a6c990b2d4d2cab59685ab3cb2850ed4cc37059f6de903af5a50565d7f7f1192a77d3fd6dd2a6 + languageName: node + linkType: hard + +"jest-snapshot@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-snapshot@npm:29.7.0" + dependencies: + "@babel/core": "npm:^7.11.6" + "@babel/generator": "npm:^7.7.2" + "@babel/plugin-syntax-jsx": "npm:^7.7.2" + "@babel/plugin-syntax-typescript": "npm:^7.7.2" + "@babel/types": "npm:^7.3.3" + "@jest/expect-utils": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + babel-preset-current-node-syntax: "npm:^1.0.0" + chalk: "npm:^4.0.0" + expect: "npm:^29.7.0" + graceful-fs: "npm:^4.2.9" + jest-diff: "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + jest-matcher-utils: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + natural-compare: "npm:^1.4.0" + pretty-format: "npm:^29.7.0" + semver: "npm:^7.5.3" + checksum: 10c0/6e9003c94ec58172b4a62864a91c0146513207bedf4e0a06e1e2ac70a4484088a2683e3a0538d8ea913bcfd53dc54a9b98a98cdfa562e7fe1d1339aeae1da570 + languageName: node + linkType: hard + +"jest-util@npm:^29.0.0, jest-util@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-util@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + ci-info: "npm:^3.2.0" + graceful-fs: "npm:^4.2.9" + picomatch: "npm:^2.2.3" + checksum: 10c0/bc55a8f49fdbb8f51baf31d2a4f312fb66c9db1483b82f602c9c990e659cdd7ec529c8e916d5a89452ecbcfae4949b21b40a7a59d4ffc0cd813a973ab08c8150 + languageName: node + linkType: hard + +"jest-validate@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-validate@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + camelcase: "npm:^6.2.0" + chalk: "npm:^4.0.0" + jest-get-type: "npm:^29.6.3" + leven: "npm:^3.1.0" + pretty-format: "npm:^29.7.0" + checksum: 10c0/a20b930480c1ed68778c739f4739dce39423131bc070cd2505ddede762a5570a256212e9c2401b7ae9ba4d7b7c0803f03c5b8f1561c62348213aba18d9dbece2 + languageName: node + linkType: hard + +"jest-watcher@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-watcher@npm:29.7.0" + dependencies: + "@jest/test-result": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + ansi-escapes: "npm:^4.2.1" + chalk: "npm:^4.0.0" + emittery: "npm:^0.13.1" + jest-util: "npm:^29.7.0" + string-length: "npm:^4.0.1" + checksum: 10c0/ec6c75030562fc8f8c727cb8f3b94e75d831fc718785abfc196e1f2a2ebc9a2e38744a15147170039628a853d77a3b695561ce850375ede3a4ee6037a2574567 + languageName: node + linkType: hard + +"jest-worker@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-worker@npm:29.7.0" + dependencies: + "@types/node": "npm:*" + jest-util: "npm:^29.7.0" + merge-stream: "npm:^2.0.0" + supports-color: "npm:^8.0.0" + checksum: 10c0/5570a3a005b16f46c131968b8a5b56d291f9bbb85ff4217e31c80bd8a02e7de799e59a54b95ca28d5c302f248b54cbffde2d177c2f0f52ffcee7504c6eabf660 + languageName: node + linkType: hard + +"jest@npm:^29.7.0": + version: 29.7.0 + resolution: "jest@npm:29.7.0" + dependencies: + "@jest/core": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + import-local: "npm:^3.0.2" + jest-cli: "npm:^29.7.0" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + bin: + jest: bin/jest.js + checksum: 10c0/f40eb8171cf147c617cc6ada49d062fbb03b4da666cb8d39cdbfb739a7d75eea4c3ca150fb072d0d273dce0c753db4d0467d54906ad0293f59c54f9db4a09d8b + languageName: node + linkType: hard + +"js-tiktoken@npm:^1.0.12, js-tiktoken@npm:^1.0.7": + version: 1.0.16 + resolution: "js-tiktoken@npm:1.0.16" + dependencies: + base64-js: "npm:^1.5.1" + checksum: 10c0/9c3b7ff9b675334eb939f97fb83da31bb499b2a34cc7da42ee7c1a72f4286b40d2c78c7dca375eece5cc20c35a00f2b6b343387fa14f2472e615cf09b755cfdd + languageName: node + linkType: hard + +"js-tokens@npm:^4.0.0": + version: 4.0.0 + resolution: "js-tokens@npm:4.0.0" + checksum: 10c0/e248708d377aa058eacf2037b07ded847790e6de892bbad3dac0abba2e759cb9f121b00099a65195616badcb6eca8d14d975cb3e89eb1cfda644756402c8aeed + languageName: node + linkType: hard + +"js-yaml@npm:^3.13.1": + version: 3.14.1 + resolution: "js-yaml@npm:3.14.1" + dependencies: + argparse: "npm:^1.0.7" + esprima: "npm:^4.0.0" + bin: + js-yaml: bin/js-yaml.js + checksum: 10c0/6746baaaeac312c4db8e75fa22331d9a04cccb7792d126ed8ce6a0bbcfef0cedaddd0c5098fade53db067c09fe00aa1c957674b4765610a8b06a5a189e46433b + languageName: node + linkType: hard + +"js-yaml@npm:^4.1.0": + version: 4.1.0 + resolution: "js-yaml@npm:4.1.0" + dependencies: + argparse: "npm:^2.0.1" + bin: + js-yaml: bin/js-yaml.js + checksum: 10c0/184a24b4eaacfce40ad9074c64fd42ac83cf74d8c8cd137718d456ced75051229e5061b8633c3366b8aada17945a7a356b337828c19da92b51ae62126575018f + languageName: node + linkType: hard + +"jsbn@npm:1.1.0": + version: 1.1.0 + resolution: "jsbn@npm:1.1.0" + checksum: 10c0/4f907fb78d7b712e11dea8c165fe0921f81a657d3443dde75359ed52eb2b5d33ce6773d97985a089f09a65edd80b11cb75c767b57ba47391fee4c969f7215c96 + languageName: node + linkType: hard + +"jsesc@npm:^3.0.2": + version: 3.1.0 + resolution: "jsesc@npm:3.1.0" + bin: + jsesc: bin/jsesc + checksum: 10c0/531779df5ec94f47e462da26b4cbf05eb88a83d9f08aac2ba04206508fc598527a153d08bd462bae82fc78b3eaa1a908e1a4a79f886e9238641c4cdefaf118b1 + languageName: node + linkType: hard + +"json-parse-even-better-errors@npm:^2.3.0": + version: 2.3.1 + resolution: "json-parse-even-better-errors@npm:2.3.1" + checksum: 10c0/140932564c8f0b88455432e0f33c4cb4086b8868e37524e07e723f4eaedb9425bdc2bafd71bd1d9765bd15fd1e2d126972bc83990f55c467168c228c24d665f3 + languageName: node + linkType: hard + +"json5@npm:^2.2.3": + version: 2.2.3 + resolution: "json5@npm:2.2.3" + bin: + json5: lib/cli.js + checksum: 10c0/5a04eed94810fa55c5ea138b2f7a5c12b97c3750bc63d11e511dcecbfef758003861522a070c2272764ee0f4e3e323862f386945aeb5b85b87ee43f084ba586c + languageName: node + linkType: hard + +"jsonpointer@npm:^5.0.1": + version: 5.0.1 + resolution: "jsonpointer@npm:5.0.1" + checksum: 10c0/89929e58b400fcb96928c0504fcf4fc3f919d81e9543ceb055df125538470ee25290bb4984251e172e6ef8fcc55761eb998c118da763a82051ad89d4cb073fe7 + languageName: node + linkType: hard + +"kind-of@npm:^3.0.2, kind-of@npm:^3.0.3, kind-of@npm:^3.2.0": + version: 3.2.2 + resolution: "kind-of@npm:3.2.2" + dependencies: + is-buffer: "npm:^1.1.5" + checksum: 10c0/7e34bc29d4b02c997f92f080de34ebb92033a96736bbb0bb2410e033a7e5ae6571f1fa37b2d7710018f95361473b816c604234197f4f203f9cf149d8ef1574d9 + languageName: node + linkType: hard + +"kind-of@npm:^4.0.0": + version: 4.0.0 + resolution: "kind-of@npm:4.0.0" + dependencies: + is-buffer: "npm:^1.1.5" + checksum: 10c0/d6c44c75ee36898142dfc7106afbd50593216c37f96acb81a7ab33ca1a6938ce97d5692b8fc8fccd035f83811a9d97749d68771116441a48eedd0b68e2973165 + languageName: node + linkType: hard + +"kind-of@npm:^6.0.0, kind-of@npm:^6.0.2": + version: 6.0.3 + resolution: "kind-of@npm:6.0.3" + checksum: 10c0/61cdff9623dabf3568b6445e93e31376bee1cdb93f8ba7033d86022c2a9b1791a1d9510e026e6465ebd701a6dd2f7b0808483ad8838341ac52f003f512e0b4c4 + languageName: node + linkType: hard + +"kleur@npm:^3.0.3": + version: 3.0.3 + resolution: "kleur@npm:3.0.3" + checksum: 10c0/cd3a0b8878e7d6d3799e54340efe3591ca787d9f95f109f28129bdd2915e37807bf8918bb295ab86afb8c82196beec5a1adcaf29042ce3f2bd932b038fe3aa4b + languageName: node + linkType: hard + +"ky@npm:^1.7.2": + version: 1.7.4 + resolution: "ky@npm:1.7.4" + checksum: 10c0/8b28b85cbee6d3e073ff796b92661f4bf155ec9b9a131411de1c34fb2f89f8507e67ff3df369e3c6d18714134774e8735e88cba72b19d005a09112b800d14474 + languageName: node + linkType: hard + +"langchain@npm:^0.0.214": + version: 0.0.214 + resolution: "langchain@npm:0.0.214" + dependencies: + "@anthropic-ai/sdk": "npm:^0.9.1" + "@langchain/community": "npm:~0.0.13" + "@langchain/core": "npm:~0.1.5" + "@langchain/openai": "npm:~0.0.9" + binary-extensions: "npm:^2.2.0" + expr-eval: "npm:^2.0.2" + js-tiktoken: "npm:^1.0.7" + js-yaml: "npm:^4.1.0" + jsonpointer: "npm:^5.0.1" + langchainhub: "npm:~0.0.6" + langsmith: "npm:~0.0.48" + ml-distance: "npm:^4.0.0" + openapi-types: "npm:^12.1.3" + p-retry: "npm:4" + uuid: "npm:^9.0.0" + yaml: "npm:^2.2.1" + zod: "npm:^3.22.3" + zod-to-json-schema: "npm:3.20.3" + peerDependencies: + "@aws-sdk/client-s3": ^3.310.0 + "@aws-sdk/client-sagemaker-runtime": ^3.310.0 + "@aws-sdk/client-sfn": ^3.310.0 + "@aws-sdk/credential-provider-node": ^3.388.0 + "@azure/storage-blob": ^12.15.0 + "@gomomento/sdk": ^1.51.1 + "@gomomento/sdk-core": ^1.51.1 + "@gomomento/sdk-web": ^1.51.1 + "@google-ai/generativelanguage": ^0.2.1 + "@google-cloud/storage": ^6.10.1 + "@notionhq/client": ^2.2.10 + "@pinecone-database/pinecone": ^1.1.0 + "@supabase/supabase-js": ^2.10.0 + "@vercel/kv": ^0.2.3 + "@xata.io/client": ^0.28.0 + apify-client: ^2.7.1 + assemblyai: ^4.0.0 + axios: "*" + cheerio: ^1.0.0-rc.12 + chromadb: "*" + convex: ^1.3.1 + d3-dsv: ^2.0.0 + epub2: ^3.0.1 + fast-xml-parser: ^4.2.7 + google-auth-library: ^8.9.0 + googleapis: ^126.0.1 + html-to-text: ^9.0.5 + ignore: ^5.2.0 + ioredis: ^5.3.2 + jsdom: "*" + mammoth: ^1.6.0 + mongodb: ^5.2.0 + node-llama-cpp: "*" + notion-to-md: ^3.1.0 + officeparser: ^4.0.4 + pdf-parse: 1.1.1 + peggy: ^3.0.2 + playwright: ^1.32.1 + puppeteer: ^19.7.2 + pyodide: ^0.24.1 + redis: ^4.6.4 + sonix-speech-recognition: ^2.1.1 + srt-parser-2: ^1.2.2 + typeorm: ^0.3.12 + vectordb: ^0.1.4 + weaviate-ts-client: ^1.4.0 + web-auth-library: ^1.0.3 + ws: ^8.14.2 + youtube-transcript: ^1.0.6 + youtubei.js: ^5.8.0 + peerDependenciesMeta: + "@aws-sdk/client-s3": + optional: true + "@aws-sdk/client-sagemaker-runtime": + optional: true + "@aws-sdk/client-sfn": + optional: true + "@aws-sdk/credential-provider-node": + optional: true + "@azure/storage-blob": + optional: true + "@gomomento/sdk": + optional: true + "@gomomento/sdk-core": + optional: true + "@gomomento/sdk-web": + optional: true + "@google-ai/generativelanguage": + optional: true + "@google-cloud/storage": + optional: true + "@notionhq/client": + optional: true + "@pinecone-database/pinecone": + optional: true + "@supabase/supabase-js": + optional: true + "@vercel/kv": + optional: true + "@xata.io/client": + optional: true + apify-client: + optional: true + assemblyai: + optional: true + axios: + optional: true + cheerio: + optional: true + chromadb: + optional: true + convex: + optional: true + d3-dsv: + optional: true + epub2: + optional: true + faiss-node: + optional: true + fast-xml-parser: + optional: true + google-auth-library: + optional: true + googleapis: + optional: true + html-to-text: + optional: true + ignore: + optional: true + ioredis: + optional: true + jsdom: + optional: true + mammoth: + optional: true + mongodb: + optional: true + node-llama-cpp: + optional: true + notion-to-md: + optional: true + officeparser: + optional: true + pdf-parse: + optional: true + peggy: + optional: true + playwright: + optional: true + puppeteer: + optional: true + pyodide: + optional: true + redis: + optional: true + sonix-speech-recognition: + optional: true + srt-parser-2: + optional: true + typeorm: + optional: true + vectordb: + optional: true + weaviate-ts-client: + optional: true + web-auth-library: + optional: true + ws: + optional: true + youtube-transcript: + optional: true + youtubei.js: + optional: true + checksum: 10c0/4c70acd1d7ad8b999a7fa2b86bba15ebe4de74339cba0028141e03f8d38f08f1ee5369a707a5597044321d36e4bafe72eed95c04ebb410aa7e881e833d87c201 + languageName: node + linkType: hard + +"langchainhub@npm:~0.0.6": + version: 0.0.11 + resolution: "langchainhub@npm:0.0.11" + checksum: 10c0/6ed781b9e8165bfb5cedc822a25bc70df0f3fc02662061d19a5e2044243cfae797857a05d139de8f326539b1f3fe03f2662060eed82669e405181f1f0f435c47 + languageName: node + linkType: hard + +"langsmith@npm:^0.1.56-rc.1, langsmith@npm:~0.1.1, langsmith@npm:~0.1.7": + version: 0.1.68 + resolution: "langsmith@npm:0.1.68" + dependencies: + "@types/uuid": "npm:^10.0.0" + commander: "npm:^10.0.1" + p-queue: "npm:^6.6.2" + p-retry: "npm:4" + semver: "npm:^7.6.3" + uuid: "npm:^10.0.0" + peerDependencies: + openai: "*" + peerDependenciesMeta: + openai: + optional: true + checksum: 10c0/ec5f70155ce7c95f2326a3d38b313c404debe954890c1623aa07be3db25aa3d7f5381267ed5f456a2bd814ab7bdebdf467ad5dc89bbc78bcc74f5a60e93c09c1 + languageName: node + linkType: hard + +"langsmith@npm:~0.0.48": + version: 0.0.70 + resolution: "langsmith@npm:0.0.70" + dependencies: + "@types/uuid": "npm:^9.0.1" + commander: "npm:^10.0.1" + p-queue: "npm:^6.6.2" + p-retry: "npm:4" + uuid: "npm:^9.0.0" + bin: + langsmith: dist/cli/main.cjs + checksum: 10c0/54e35456db842630e9a3b93b372636bf5f0ffce0af1711dd647095d9359650cfac7d5f1a0e13a1b7d691ae1dd4884d9e2e85373883542da50e1339ad3ccd1f34 + languageName: node + linkType: hard + +"layerr@npm:^3.0.0": + version: 3.0.0 + resolution: "layerr@npm:3.0.0" + checksum: 10c0/320c9b9cf1392c73c9ff8f8d1bb7a782093ac7341fe5d7fea6ebfeea6d785af8e0fc573541431b6ffcb268577f8aea66168757e73a15035568a00ab9e4370705 + languageName: node + linkType: hard + +"leven@npm:^3.1.0": + version: 3.1.0 + resolution: "leven@npm:3.1.0" + checksum: 10c0/cd778ba3fbab0f4d0500b7e87d1f6e1f041507c56fdcd47e8256a3012c98aaee371d4c15e0a76e0386107af2d42e2b7466160a2d80688aaa03e66e49949f42df + languageName: node + linkType: hard + +"lines-and-columns@npm:^1.1.6": + version: 1.2.4 + resolution: "lines-and-columns@npm:1.2.4" + checksum: 10c0/3da6ee62d4cd9f03f5dc90b4df2540fb85b352081bee77fe4bbcd12c9000ead7f35e0a38b8d09a9bb99b13223446dd8689ff3c4959807620726d788701a83d2d + languageName: node + linkType: hard + +"load-json-file@npm:^1.0.0": + version: 1.1.0 + resolution: "load-json-file@npm:1.1.0" + dependencies: + graceful-fs: "npm:^4.1.2" + parse-json: "npm:^2.2.0" + pify: "npm:^2.0.0" + pinkie-promise: "npm:^2.0.0" + strip-bom: "npm:^2.0.0" + checksum: 10c0/2a5344c2d88643735a938fdca8582c0504e1c290577faa74f56b9cc187fa443832709a15f36e5771f779ec0878215a03abc8faf97ec57bb86092ceb7e0caef22 + languageName: node + linkType: hard + +"locate-path@npm:^5.0.0": + version: 5.0.0 + resolution: "locate-path@npm:5.0.0" + dependencies: + p-locate: "npm:^4.1.0" + checksum: 10c0/33a1c5247e87e022f9713e6213a744557a3e9ec32c5d0b5efb10aa3a38177615bf90221a5592674857039c1a0fd2063b82f285702d37b792d973e9e72ace6c59 + languageName: node + linkType: hard + +"lodash.memoize@npm:^4.1.2": + version: 4.1.2 + resolution: "lodash.memoize@npm:4.1.2" + checksum: 10c0/c8713e51eccc650422716a14cece1809cfe34bc5ab5e242b7f8b4e2241c2483697b971a604252807689b9dd69bfe3a98852e19a5b89d506b000b4187a1285df8 + languageName: node + linkType: hard + +"loud-rejection@npm:^1.0.0": + version: 1.6.0 + resolution: "loud-rejection@npm:1.6.0" + dependencies: + currently-unhandled: "npm:^0.4.1" + signal-exit: "npm:^3.0.0" + checksum: 10c0/aa060b3fe55ad96b97890f1b0a24bf81a2d612e397d6cc0374ce1cf7e021cd0247f0ddb68134499882d0843c2776371d5221b80b0b3beeca5133a6e7f27a3845 + languageName: node + linkType: hard + +"lowercase-keys@npm:^1.0.0": + version: 1.0.1 + resolution: "lowercase-keys@npm:1.0.1" + checksum: 10c0/56776a8e1ef1aca98ecf6c19b30352ae1cf257b65b8ac858b7d8a0e8b348774d12a9b41aa7f59bfea51bff44bc7a198ab63ba4406bfba60dba008799618bef66 + languageName: node + linkType: hard + +"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": + version: 10.4.3 + resolution: "lru-cache@npm:10.4.3" + checksum: 10c0/ebd04fbca961e6c1d6c0af3799adcc966a1babe798f685bb84e6599266599cd95d94630b10262f5424539bc4640107e8a33aa28585374abf561d30d16f4b39fb + languageName: node + linkType: hard + +"lru-cache@npm:^5.1.1": + version: 5.1.1 + resolution: "lru-cache@npm:5.1.1" + dependencies: + yallist: "npm:^3.0.2" + checksum: 10c0/89b2ef2ef45f543011e38737b8a8622a2f8998cddf0e5437174ef8f1f70a8b9d14a918ab3e232cb3ba343b7abddffa667f0b59075b2b80e6b4d63c3de6127482 + languageName: node + linkType: hard + +"make-dir@npm:^1.0.0": + version: 1.3.0 + resolution: "make-dir@npm:1.3.0" + dependencies: + pify: "npm:^3.0.0" + checksum: 10c0/5eb94f47d7ef41d89d1b8eef6539b8950d5bd99eeba093a942bfd327faa37d2d62227526b88b73633243a2ec7972d21eb0f4e5d62ae4e02a79e389f4a7bb3022 + languageName: node + linkType: hard + +"make-dir@npm:^4.0.0": + version: 4.0.0 + resolution: "make-dir@npm:4.0.0" + dependencies: + semver: "npm:^7.5.3" + checksum: 10c0/69b98a6c0b8e5c4fe9acb61608a9fbcfca1756d910f51e5dbe7a9e5cfb74fca9b8a0c8a0ffdf1294a740826c1ab4871d5bf3f62f72a3049e5eac6541ddffed68 + languageName: node + linkType: hard + +"make-error@npm:^1.3.6": + version: 1.3.6 + resolution: "make-error@npm:1.3.6" + checksum: 10c0/171e458d86854c6b3fc46610cfacf0b45149ba043782558c6875d9f42f222124384ad0b468c92e996d815a8a2003817a710c0a160e49c1c394626f76fa45396f + languageName: node + linkType: hard + +"make-fetch-happen@npm:^14.0.3": + version: 14.0.3 + resolution: "make-fetch-happen@npm:14.0.3" + dependencies: + "@npmcli/agent": "npm:^3.0.0" + cacache: "npm:^19.0.1" + http-cache-semantics: "npm:^4.1.1" + minipass: "npm:^7.0.2" + minipass-fetch: "npm:^4.0.0" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + negotiator: "npm:^1.0.0" + proc-log: "npm:^5.0.0" + promise-retry: "npm:^2.0.1" + ssri: "npm:^12.0.0" + checksum: 10c0/c40efb5e5296e7feb8e37155bde8eb70bc57d731b1f7d90e35a092fde403d7697c56fb49334d92d330d6f1ca29a98142036d6480a12681133a0a1453164cb2f0 + languageName: node + linkType: hard + +"makeerror@npm:1.0.12": + version: 1.0.12 + resolution: "makeerror@npm:1.0.12" + dependencies: + tmpl: "npm:1.0.5" + checksum: 10c0/b0e6e599780ce6bab49cc413eba822f7d1f0dfebd1c103eaa3785c59e43e22c59018323cf9e1708f0ef5329e94a745d163fcbb6bff8e4c6742f9be9e86f3500c + languageName: node + linkType: hard + +"map-cache@npm:^0.2.2": + version: 0.2.2 + resolution: "map-cache@npm:0.2.2" + checksum: 10c0/05e3eb005c1b80b9f949ca007687640e8c5d0fc88dc45c3c3ab4902a3bec79d66a58f3e3b04d6985d90cd267c629c7b46c977e9c34433e8c11ecfcbb9f0fa290 + languageName: node + linkType: hard + +"map-obj@npm:^1.0.0, map-obj@npm:^1.0.1": + version: 1.0.1 + resolution: "map-obj@npm:1.0.1" + checksum: 10c0/ccca88395e7d38671ed9f5652ecf471ecd546924be2fb900836b9da35e068a96687d96a5f93dcdfa94d9a27d649d2f10a84595590f89a347fb4dda47629dcc52 + languageName: node + linkType: hard + +"map-stream@npm:~0.1.0": + version: 0.1.0 + resolution: "map-stream@npm:0.1.0" + checksum: 10c0/7dd6debe511c1b55d9da75e1efa65a28b1252a2d8357938d2e49b412713c478efbaefb0cdf0ee0533540c3bf733e8f9f71e1a15aa0fe74bf71b64e75bf1576bd + languageName: node + linkType: hard + +"map-visit@npm:^1.0.0": + version: 1.0.0 + resolution: "map-visit@npm:1.0.0" + dependencies: + object-visit: "npm:^1.0.0" + checksum: 10c0/fb3475e5311939a6147e339999113db607adc11c7c3cd3103e5e9dbf502898416ecba6b1c7c649c6d4d12941de00cee58b939756bdf20a9efe7d4fa5a5738b73 + languageName: node + linkType: hard + +"math-random@npm:^1.0.1": + version: 1.0.4 + resolution: "math-random@npm:1.0.4" + checksum: 10c0/7b0ddc17f5dfe3b426c1e92505122e6a32f884dd50f5e0bb3898e5ce2da60b4ffb47c9b607809cf0beb5b8bf253b9dcc3b6f7331b20ce59b8bd7e8dbbbb1e347 + languageName: node + linkType: hard + +"md5@npm:^2.3.0": + version: 2.3.0 + resolution: "md5@npm:2.3.0" + dependencies: + charenc: "npm:0.0.2" + crypt: "npm:0.0.2" + is-buffer: "npm:~1.1.6" + checksum: 10c0/14a21d597d92e5b738255fbe7fe379905b8cb97e0a49d44a20b58526a646ec5518c337b817ce0094ca94d3e81a3313879c4c7b510d250c282d53afbbdede9110 + languageName: node + linkType: hard + +"meow@npm:^3.3.0": + version: 3.7.0 + resolution: "meow@npm:3.7.0" + dependencies: + camelcase-keys: "npm:^2.0.0" + decamelize: "npm:^1.1.2" + loud-rejection: "npm:^1.0.0" + map-obj: "npm:^1.0.1" + minimist: "npm:^1.1.3" + normalize-package-data: "npm:^2.3.4" + object-assign: "npm:^4.0.1" + read-pkg-up: "npm:^1.0.1" + redent: "npm:^1.0.0" + trim-newlines: "npm:^1.0.0" + checksum: 10c0/e5ba4632b6558006b5f4df64b5a35e777d75629ab08d84f7bbc967e7603a396e16baa8f67aae26c7833a6a117e4857afef393e0b9aee21f52320e54812d9ae09 + languageName: node + linkType: hard + +"merge-stream@npm:^2.0.0": + version: 2.0.0 + resolution: "merge-stream@npm:2.0.0" + checksum: 10c0/867fdbb30a6d58b011449b8885601ec1690c3e41c759ecd5a9d609094f7aed0096c37823ff4a7190ef0b8f22cc86beb7049196ff68c016e3b3c671d0dac91ce5 + languageName: node + linkType: hard + +"micromatch@npm:^2.1.5": + version: 2.3.11 + resolution: "micromatch@npm:2.3.11" + dependencies: + arr-diff: "npm:^2.0.0" + array-unique: "npm:^0.2.1" + braces: "npm:^1.8.2" + expand-brackets: "npm:^0.1.4" + extglob: "npm:^0.3.1" + filename-regex: "npm:^2.0.0" + is-extglob: "npm:^1.0.0" + is-glob: "npm:^2.0.1" + kind-of: "npm:^3.0.2" + normalize-path: "npm:^2.0.1" + object.omit: "npm:^2.0.0" + parse-glob: "npm:^3.0.4" + regex-cache: "npm:^0.4.2" + checksum: 10c0/56864f45f5a76523a3b3fe7c07c1a19cb9e6a2078b1e5dd036bacdd6e65f5d8adc00679ebb785ab88d577fce80197f2d8fd6f5565188643f87d8a47f64f6127a + languageName: node + linkType: hard + +"micromatch@npm:^3.1.10": + version: 3.1.10 + resolution: "micromatch@npm:3.1.10" + dependencies: + arr-diff: "npm:^4.0.0" + array-unique: "npm:^0.3.2" + braces: "npm:^2.3.1" + define-property: "npm:^2.0.2" + extend-shallow: "npm:^3.0.2" + extglob: "npm:^2.0.4" + fragment-cache: "npm:^0.2.1" + kind-of: "npm:^6.0.2" + nanomatch: "npm:^1.2.9" + object.pick: "npm:^1.3.0" + regex-not: "npm:^1.0.0" + snapdragon: "npm:^0.8.1" + to-regex: "npm:^3.0.2" + checksum: 10c0/531a32e7ac92bef60657820202be71b63d0f945c08a69cc4c239c0b19372b751483d464a850a2e3a5ff6cc9060641e43d44c303af104c1a27493d137d8af017f + languageName: node + linkType: hard + +"micromatch@npm:^4.0.0, micromatch@npm:^4.0.4": + version: 4.0.8 + resolution: "micromatch@npm:4.0.8" + dependencies: + braces: "npm:^3.0.3" + picomatch: "npm:^2.3.1" + checksum: 10c0/166fa6eb926b9553f32ef81f5f531d27b4ce7da60e5baf8c021d043b27a388fb95e46a8038d5045877881e673f8134122b59624d5cecbd16eb50a42e7a6b5ca8 + languageName: node + linkType: hard + +"mime-db@npm:1.52.0": + version: 1.52.0 + resolution: "mime-db@npm:1.52.0" + checksum: 10c0/0557a01deebf45ac5f5777fe7740b2a5c309c6d62d40ceab4e23da9f821899ce7a900b7ac8157d4548ddbb7beffe9abc621250e6d182b0397ec7f10c7b91a5aa + languageName: node + linkType: hard + +"mime-db@npm:^1.28.0": + version: 1.53.0 + resolution: "mime-db@npm:1.53.0" + checksum: 10c0/1dcc37ba8ed5d1c179f5c6f0837e8db19371d5f2ea3690c3c2f3fa8c3858f976851d3460b172b4dee78ebd606762cbb407aa398545fbacd539e519f858cd7bf4 + languageName: node + linkType: hard + +"mime-types@npm:^2.1.12": + version: 2.1.35 + resolution: "mime-types@npm:2.1.35" + dependencies: + mime-db: "npm:1.52.0" + checksum: 10c0/82fb07ec56d8ff1fc999a84f2f217aa46cb6ed1033fefaabd5785b9a974ed225c90dc72fff460259e66b95b73648596dbcc50d51ed69cdf464af2d237d3149b2 + languageName: node + linkType: hard + +"mimic-fn@npm:^2.1.0": + version: 2.1.0 + resolution: "mimic-fn@npm:2.1.0" + checksum: 10c0/b26f5479d7ec6cc2bce275a08f146cf78f5e7b661b18114e2506dd91ec7ec47e7a25bf4360e5438094db0560bcc868079fb3b1fb3892b833c1ecbf63f80c95a4 + languageName: node + linkType: hard + +"mimic-response@npm:^1.0.0": + version: 1.0.1 + resolution: "mimic-response@npm:1.0.1" + checksum: 10c0/c5381a5eae997f1c3b5e90ca7f209ed58c3615caeee850e85329c598f0c000ae7bec40196580eef1781c60c709f47258131dab237cad8786f8f56750594f27fa + languageName: node + linkType: hard + +"minimatch@npm:^3.0.2, minimatch@npm:^3.0.4, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": + version: 3.1.2 + resolution: "minimatch@npm:3.1.2" + dependencies: + brace-expansion: "npm:^1.1.7" + checksum: 10c0/0262810a8fc2e72cca45d6fd86bd349eee435eb95ac6aa45c9ea2180e7ee875ef44c32b55b5973ceabe95ea12682f6e3725cbb63d7a2d1da3ae1163c8b210311 + languageName: node + linkType: hard + +"minimatch@npm:^5.0.1": + version: 5.1.6 + resolution: "minimatch@npm:5.1.6" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10c0/3defdfd230914f22a8da203747c42ee3c405c39d4d37ffda284dac5e45b7e1f6c49aa8be606509002898e73091ff2a3bbfc59c2c6c71d4660609f63aa92f98e3 + languageName: node + linkType: hard + +"minimatch@npm:^9.0.4": + version: 9.0.5 + resolution: "minimatch@npm:9.0.5" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10c0/de96cf5e35bdf0eab3e2c853522f98ffbe9a36c37797778d2665231ec1f20a9447a7e567cb640901f89e4daaa95ae5d70c65a9e8aa2bb0019b6facbc3c0575ed + languageName: node + linkType: hard + +"minimist@npm:^1.1.0, minimist@npm:^1.1.3, minimist@npm:^1.2.5, minimist@npm:^1.2.6": + version: 1.2.8 + resolution: "minimist@npm:1.2.8" + checksum: 10c0/19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6 + languageName: node + linkType: hard + +"minipass-collect@npm:^2.0.1": + version: 2.0.1 + resolution: "minipass-collect@npm:2.0.1" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/5167e73f62bb74cc5019594709c77e6a742051a647fe9499abf03c71dca75515b7959d67a764bdc4f8b361cf897fbf25e2d9869ee039203ed45240f48b9aa06e + languageName: node + linkType: hard + +"minipass-fetch@npm:^4.0.0": + version: 4.0.0 + resolution: "minipass-fetch@npm:4.0.0" + dependencies: + encoding: "npm:^0.1.13" + minipass: "npm:^7.0.3" + minipass-sized: "npm:^1.0.3" + minizlib: "npm:^3.0.1" + dependenciesMeta: + encoding: + optional: true + checksum: 10c0/7fa30ce7c373fb6f94c086b374fff1589fd7e78451855d2d06c2e2d9df936d131e73e952163063016592ed3081444bd8d1ea608533313b0149156ce23311da4b + languageName: node + linkType: hard + +"minipass-flush@npm:^1.0.5": + version: 1.0.5 + resolution: "minipass-flush@npm:1.0.5" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/2a51b63feb799d2bb34669205eee7c0eaf9dce01883261a5b77410c9408aa447e478efd191b4de6fc1101e796ff5892f8443ef20d9544385819093dbb32d36bd + languageName: node + linkType: hard + +"minipass-pipeline@npm:^1.2.4": + version: 1.2.4 + resolution: "minipass-pipeline@npm:1.2.4" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/cbda57cea20b140b797505dc2cac71581a70b3247b84480c1fed5ca5ba46c25ecc25f68bfc9e6dcb1a6e9017dab5c7ada5eab73ad4f0a49d84e35093e0c643f2 + languageName: node + linkType: hard + +"minipass-sized@npm:^1.0.3": + version: 1.0.3 + resolution: "minipass-sized@npm:1.0.3" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/298f124753efdc745cfe0f2bdfdd81ba25b9f4e753ca4a2066eb17c821f25d48acea607dfc997633ee5bf7b6dfffb4eee4f2051eb168663f0b99fad2fa4829cb + languageName: node + linkType: hard + +"minipass@npm:^3.0.0": + version: 3.3.6 + resolution: "minipass@npm:3.3.6" + dependencies: + yallist: "npm:^4.0.0" + checksum: 10c0/a114746943afa1dbbca8249e706d1d38b85ed1298b530f5808ce51f8e9e941962e2a5ad2e00eae7dd21d8a4aae6586a66d4216d1a259385e9d0358f0c1eba16c + languageName: node + linkType: hard + +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4, minipass@npm:^7.1.2": + version: 7.1.2 + resolution: "minipass@npm:7.1.2" + checksum: 10c0/b0fd20bb9fb56e5fa9a8bfac539e8915ae07430a619e4b86ff71f5fc757ef3924b23b2c4230393af1eda647ed3d75739e4e0acb250a6b1eb277cf7f8fe449557 + languageName: node + linkType: hard + +"minizlib@npm:^3.0.1": + version: 3.0.1 + resolution: "minizlib@npm:3.0.1" + dependencies: + minipass: "npm:^7.0.4" + rimraf: "npm:^5.0.5" + checksum: 10c0/82f8bf70da8af656909a8ee299d7ed3b3372636749d29e105f97f20e88971be31f5ed7642f2e898f00283b68b701cc01307401cdc209b0efc5dd3818220e5093 + languageName: node + linkType: hard + +"mixin-deep@npm:^1.2.0": + version: 1.3.2 + resolution: "mixin-deep@npm:1.3.2" + dependencies: + for-in: "npm:^1.0.2" + is-extendable: "npm:^1.0.1" + checksum: 10c0/cb39ffb73c377222391af788b4c83d1a6cecb2d9fceb7015384f8deb46e151a9b030c21ef59a79cb524d4557e3f74c7248ab948a62a6e7e296b42644863d183b + languageName: node + linkType: hard + +"mkdirp-classic@npm:^0.5.2, mkdirp-classic@npm:^0.5.3": + version: 0.5.3 + resolution: "mkdirp-classic@npm:0.5.3" + checksum: 10c0/95371d831d196960ddc3833cc6907e6b8f67ac5501a6582f47dfae5eb0f092e9f8ce88e0d83afcae95d6e2b61a01741ba03714eeafb6f7a6e9dcc158ac85b168 + languageName: node + linkType: hard + +"mkdirp@npm:^0.5.1": + version: 0.5.6 + resolution: "mkdirp@npm:0.5.6" + dependencies: + minimist: "npm:^1.2.6" + bin: + mkdirp: bin/cmd.js + checksum: 10c0/e2e2be789218807b58abced04e7b49851d9e46e88a2f9539242cc8a92c9b5c3a0b9bab360bd3014e02a140fc4fbc58e31176c408b493f8a2a6f4986bd7527b01 + languageName: node + linkType: hard + +"mkdirp@npm:^1.0.4": + version: 1.0.4 + resolution: "mkdirp@npm:1.0.4" + bin: + mkdirp: bin/cmd.js + checksum: 10c0/46ea0f3ffa8bc6a5bc0c7081ffc3907777f0ed6516888d40a518c5111f8366d97d2678911ad1a6882bf592fa9de6c784fea32e1687bb94e1f4944170af48a5cf + languageName: node + linkType: hard + +"mkdirp@npm:^3.0.1": + version: 3.0.1 + resolution: "mkdirp@npm:3.0.1" + bin: + mkdirp: dist/cjs/src/bin.js + checksum: 10c0/9f2b975e9246351f5e3a40dcfac99fcd0baa31fbfab615fe059fb11e51f10e4803c63de1f384c54d656e4db31d000e4767e9ef076a22e12a641357602e31d57d + languageName: node + linkType: hard + +"ml-array-mean@npm:^1.1.6": + version: 1.1.6 + resolution: "ml-array-mean@npm:1.1.6" + dependencies: + ml-array-sum: "npm:^1.1.6" + checksum: 10c0/41ab68308e3472702f775a49c8ab9ee1e678e01cd59dbc59424c0f1017a37df1bb638e702831305f0e6366300eca48353f526773ab8f4d8d142a64d0461f9944 + languageName: node + linkType: hard + +"ml-array-sum@npm:^1.1.6": + version: 1.1.6 + resolution: "ml-array-sum@npm:1.1.6" + dependencies: + is-any-array: "npm:^2.0.0" + checksum: 10c0/fb3973ce2bfa19ab4f5e657f722494425b57025547657d332bf5bafe3e4e7e4bd1e082dfb970bcc0bfa87efa345b80a20a596dbb204be7b4802b52c35fd6cf77 + languageName: node + linkType: hard + +"ml-distance-euclidean@npm:^2.0.0": + version: 2.0.0 + resolution: "ml-distance-euclidean@npm:2.0.0" + checksum: 10c0/877aef472e134f79be9540b02f889b2a27976ca45d77f5d4ef7d8dd24058a60cf4637365b40a5aba1ab5490348a0fb1b3803143b25af88cdc66137fbfd665442 + languageName: node + linkType: hard + +"ml-distance@npm:^4.0.0": + version: 4.0.1 + resolution: "ml-distance@npm:4.0.1" + dependencies: + ml-array-mean: "npm:^1.1.6" + ml-distance-euclidean: "npm:^2.0.0" + ml-tree-similarity: "npm:^1.0.0" + checksum: 10c0/8c2eb077d2ba61437f2414f3b9ca1091c43fcabe2282ecc31d8ebf9e083c1df068e43c67f59a4674e7c8f473201ace4f02779b446427d6169a5d669cae94c816 + languageName: node + linkType: hard + +"ml-tree-similarity@npm:^1.0.0": + version: 1.0.0 + resolution: "ml-tree-similarity@npm:1.0.0" + dependencies: + binary-search: "npm:^1.3.5" + num-sort: "npm:^2.0.0" + checksum: 10c0/e3ecd07bead5d18bc7b6fed1dfefbe65aea4008d5556181b94b7d70550fba543d2501b224f12a9f5197c1d23d95faef2accc7fd265c5afd15ef55a38190ffc6e + languageName: node + linkType: hard + +"ms@npm:2.0.0": + version: 2.0.0 + resolution: "ms@npm:2.0.0" + checksum: 10c0/f8fda810b39fd7255bbdc451c46286e549794fcc700dc9cd1d25658bbc4dc2563a5de6fe7c60f798a16a60c6ceb53f033cb353f493f0cf63e5199b702943159d + languageName: node + linkType: hard + +"ms@npm:2.1.2": + version: 2.1.2 + resolution: "ms@npm:2.1.2" + checksum: 10c0/a437714e2f90dbf881b5191d35a6db792efbca5badf112f87b9e1c712aace4b4b9b742dd6537f3edf90fd6f684de897cec230abde57e87883766712ddda297cc + languageName: node + linkType: hard + +"ms@npm:^2.0.0, ms@npm:^2.1.1, ms@npm:^2.1.3": + version: 2.1.3 + resolution: "ms@npm:2.1.3" + checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 + languageName: node + linkType: hard + +"mustache@npm:^4.2.0": + version: 4.2.0 + resolution: "mustache@npm:4.2.0" + bin: + mustache: bin/mustache + checksum: 10c0/1f8197e8a19e63645a786581d58c41df7853da26702dbc005193e2437c98ca49b255345c173d50c08fe4b4dbb363e53cb655ecc570791f8deb09887248dd34a2 + languageName: node + linkType: hard + +"nan@npm:^2.12.1": + version: 2.22.0 + resolution: "nan@npm:2.22.0" + dependencies: + node-gyp: "npm:latest" + checksum: 10c0/d5d31aefdb218deba308d44867c5f432b4d3aabeb57c70a2b236d62652e9fee7044e5d5afd380d9fef022fe7ebb2f2d6c85ca3cbcac5031aaca3592c844526bb + languageName: node + linkType: hard + +"nanomatch@npm:^1.2.9": + version: 1.2.13 + resolution: "nanomatch@npm:1.2.13" + dependencies: + arr-diff: "npm:^4.0.0" + array-unique: "npm:^0.3.2" + define-property: "npm:^2.0.2" + extend-shallow: "npm:^3.0.2" + fragment-cache: "npm:^0.2.1" + is-windows: "npm:^1.0.2" + kind-of: "npm:^6.0.2" + object.pick: "npm:^1.3.0" + regex-not: "npm:^1.0.0" + snapdragon: "npm:^0.8.1" + to-regex: "npm:^3.0.1" + checksum: 10c0/0f5cefa755ca2e20c86332821995effb24acb79551ddaf51c1b9112628cad234a0d8fd9ac6aa56ad1f8bfad6ff6ae86e851acb960943249d9fa44b091479953a + languageName: node + linkType: hard + +"natural-compare@npm:^1.4.0": + version: 1.4.0 + resolution: "natural-compare@npm:1.4.0" + checksum: 10c0/f5f9a7974bfb28a91afafa254b197f0f22c684d4a1731763dda960d2c8e375b36c7d690e0d9dc8fba774c537af14a7e979129bca23d88d052fbeb9466955e447 + languageName: node + linkType: hard + +"negotiator@npm:^1.0.0": + version: 1.0.0 + resolution: "negotiator@npm:1.0.0" + checksum: 10c0/4c559dd52669ea48e1914f9d634227c561221dd54734070791f999c52ed0ff36e437b2e07d5c1f6e32909fc625fe46491c16e4a8f0572567d4dd15c3a4fda04b + languageName: node + linkType: hard + +"node-abi@npm:^3.3.0": + version: 3.71.0 + resolution: "node-abi@npm:3.71.0" + dependencies: + semver: "npm:^7.3.5" + checksum: 10c0/dbd0792ea729329cd9d099f28a5681ff9e8a6db48cf64e1437bf6a7fd669009d1e758a784619a1c4cc8bfd1ed17162f042c787654edf19a1f64b5018457c9c1f + languageName: node + linkType: hard + +"node-addon-api@npm:^6.0.0": + version: 6.1.0 + resolution: "node-addon-api@npm:6.1.0" + dependencies: + node-gyp: "npm:latest" + checksum: 10c0/d2699c4ad15740fd31482a3b6fca789af7723ab9d393adc6ac45250faaee72edad8f0b10b2b9d087df0de93f1bdc16d97afdd179b26b9ebc9ed68b569faa4bac + languageName: node + linkType: hard + +"node-addon-api@npm:^8.0.0": + version: 8.3.0 + resolution: "node-addon-api@npm:8.3.0" + dependencies: + node-gyp: "npm:latest" + checksum: 10c0/0ed4206cb68921b33fc637c6f7ffcb91fcde85aea88ea60fadb7b0537bf177226a5600584eac9db2aff93600041d42796fb20576b3299b9be6ff7539592b2180 + languageName: node + linkType: hard + +"node-domexception@npm:1.0.0": + version: 1.0.0 + resolution: "node-domexception@npm:1.0.0" + checksum: 10c0/5e5d63cda29856402df9472335af4bb13875e1927ad3be861dc5ebde38917aecbf9ae337923777af52a48c426b70148815e890a5d72760f1b4d758cc671b1a2b + languageName: node + linkType: hard + +"node-ensure@npm:^0.0.0": + version: 0.0.0 + resolution: "node-ensure@npm:0.0.0" + checksum: 10c0/7af391aee024a8b7df77c239ed8b90417e3f2539824fa06b60f243ce14c75ee455766464c7c3ba9407d5b1e4d1d74ed5cf5f8af10c67b0fc05aa6e29f5d2462b + languageName: node + linkType: hard + +"node-fetch@npm:^2.6.7": + version: 2.7.0 + resolution: "node-fetch@npm:2.7.0" + dependencies: + whatwg-url: "npm:^5.0.0" + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + checksum: 10c0/b55786b6028208e6fbe594ccccc213cab67a72899c9234eb59dba51062a299ea853210fcf526998eaa2867b0963ad72338824450905679ff0fa304b8c5093ae8 + languageName: node + linkType: hard + +"node-gyp-build@npm:^4.8.1": + version: 4.8.4 + resolution: "node-gyp-build@npm:4.8.4" + bin: + node-gyp-build: bin.js + node-gyp-build-optional: optional.js + node-gyp-build-test: build-test.js + checksum: 10c0/444e189907ece2081fe60e75368784f7782cfddb554b60123743dfb89509df89f1f29c03bbfa16b3a3e0be3f48799a4783f487da6203245fa5bed239ba7407e1 + languageName: node + linkType: hard + +"node-gyp@npm:^11.0.0, node-gyp@npm:latest": + version: 11.0.0 + resolution: "node-gyp@npm:11.0.0" + dependencies: + env-paths: "npm:^2.2.0" + exponential-backoff: "npm:^3.1.1" + glob: "npm:^10.3.10" + graceful-fs: "npm:^4.2.6" + make-fetch-happen: "npm:^14.0.3" + nopt: "npm:^8.0.0" + proc-log: "npm:^5.0.0" + semver: "npm:^7.3.5" + tar: "npm:^7.4.3" + which: "npm:^5.0.0" + bin: + node-gyp: bin/node-gyp.js + checksum: 10c0/a3b885bbee2d271f1def32ba2e30ffcf4562a3db33af06b8b365e053153e2dd2051b9945783c3c8e852d26a0f20f65b251c7e83361623383a99635c0280ee573 + languageName: node + linkType: hard + +"node-int64@npm:^0.4.0": + version: 0.4.0 + resolution: "node-int64@npm:0.4.0" + checksum: 10c0/a6a4d8369e2f2720e9c645255ffde909c0fbd41c92ea92a5607fc17055955daac99c1ff589d421eee12a0d24e99f7bfc2aabfeb1a4c14742f6c099a51863f31a + languageName: node + linkType: hard + +"node-os-utils@npm:^1.3.7": + version: 1.3.7 + resolution: "node-os-utils@npm:1.3.7" + checksum: 10c0/88b8a4c7ed99ca0ca8f077f4f4672026e732605d5afb125e856de9ba1880b842facefa4c38f732f5cce20a34f9f471ce18a20c677dcdb702b4b68c17bacf9584 + languageName: node + linkType: hard + +"node-releases@npm:^2.0.19": + version: 2.0.19 + resolution: "node-releases@npm:2.0.19" + checksum: 10c0/52a0dbd25ccf545892670d1551690fe0facb6a471e15f2cfa1b20142a5b255b3aa254af5f59d6ecb69c2bec7390bc643c43aa63b13bf5e64b6075952e716b1aa + languageName: node + linkType: hard + +"nopt@npm:^8.0.0": + version: 8.0.0 + resolution: "nopt@npm:8.0.0" + dependencies: + abbrev: "npm:^2.0.0" + bin: + nopt: bin/nopt.js + checksum: 10c0/19cb986f79abaca2d0f0b560021da7b32ee6fcc3de48f3eaeb0c324d36755c17754f886a754c091f01f740c17caf7d6aea8237b7fbaf39f476ae5e30a249f18f + languageName: node + linkType: hard + +"normalize-package-data@npm:^2.3.2, normalize-package-data@npm:^2.3.4": + version: 2.5.0 + resolution: "normalize-package-data@npm:2.5.0" + dependencies: + hosted-git-info: "npm:^2.1.4" + resolve: "npm:^1.10.0" + semver: "npm:2 || 3 || 4 || 5" + validate-npm-package-license: "npm:^3.0.1" + checksum: 10c0/357cb1646deb42f8eb4c7d42c4edf0eec312f3628c2ef98501963cc4bbe7277021b2b1d977f982b2edce78f5a1014613ce9cf38085c3df2d76730481357ca504 + languageName: node + linkType: hard + +"normalize-path@npm:^2.0.0, normalize-path@npm:^2.0.1": + version: 2.1.1 + resolution: "normalize-path@npm:2.1.1" + dependencies: + remove-trailing-separator: "npm:^1.0.1" + checksum: 10c0/db814326ff88057437233361b4c7e9cac7b54815b051b57f2d341ce89b1d8ec8cbd43e7fa95d7652b3b69ea8fcc294b89b8530d556a84d1bdace94229e1e9a8b + languageName: node + linkType: hard + +"normalize-path@npm:^3.0.0": + version: 3.0.0 + resolution: "normalize-path@npm:3.0.0" + checksum: 10c0/e008c8142bcc335b5e38cf0d63cfd39d6cf2d97480af9abdbe9a439221fd4d749763bab492a8ee708ce7a194bb00c9da6d0a115018672310850489137b3da046 + languageName: node + linkType: hard + +"npm-conf@npm:^1.1.0": + version: 1.1.3 + resolution: "npm-conf@npm:1.1.3" + dependencies: + config-chain: "npm:^1.1.11" + pify: "npm:^3.0.0" + checksum: 10c0/4a54540e1e5ade9afe4b3be2e651a1198172015f8c51293c7124c4dfae402f2b67549cdf1d0eb918f3ef66016ba63672520b4bb3afaef815f5e98b52a74f5848 + languageName: node + linkType: hard + +"npm-run-path@npm:^3.1.0": + version: 3.1.0 + resolution: "npm-run-path@npm:3.1.0" + dependencies: + path-key: "npm:^3.0.0" + checksum: 10c0/8399f01239e9a5bf5a10bddbc71ecac97e0b7890e5b78abe9731fc759db48865b0686cc86ec079cd254a98ba119a3fa08f1b23f9de1a5428c19007bbc7b5a728 + languageName: node + linkType: hard + +"npm-run-path@npm:^4.0.1": + version: 4.0.1 + resolution: "npm-run-path@npm:4.0.1" + dependencies: + path-key: "npm:^3.0.0" + checksum: 10c0/6f9353a95288f8455cf64cbeb707b28826a7f29690244c1e4bb61ec573256e021b6ad6651b394eb1ccfd00d6ec50147253aba2c5fe58a57ceb111fad62c519ac + languageName: node + linkType: hard + +"num-sort@npm:^2.0.0": + version: 2.1.0 + resolution: "num-sort@npm:2.1.0" + checksum: 10c0/cc1d43adbc9adfd5d208a8eb653827277376ff2e6eb75379f96e6a23d481040e317e63505e075b84ce49e19b9d960570646096428a715d12c5ef1381504d5135 + languageName: node + linkType: hard + +"object-assign@npm:^4.0.1": + version: 4.1.1 + resolution: "object-assign@npm:4.1.1" + checksum: 10c0/1f4df9945120325d041ccf7b86f31e8bcc14e73d29171e37a7903050e96b81323784ec59f93f102ec635bcf6fa8034ba3ea0a8c7e69fa202b87ae3b6cec5a414 + languageName: node + linkType: hard + +"object-copy@npm:^0.1.0": + version: 0.1.0 + resolution: "object-copy@npm:0.1.0" + dependencies: + copy-descriptor: "npm:^0.1.0" + define-property: "npm:^0.2.5" + kind-of: "npm:^3.0.3" + checksum: 10c0/79314b05e9d626159a04f1d913f4c4aba9eae8848511cf5f4c8e3b04bb3cc313b65f60357f86462c959a14c2d58380fedf89b6b32ecec237c452a5ef3900a293 + languageName: node + linkType: hard + +"object-visit@npm:^1.0.0": + version: 1.0.1 + resolution: "object-visit@npm:1.0.1" + dependencies: + isobject: "npm:^3.0.0" + checksum: 10c0/086b475bda24abd2318d2b187c3e928959b89f5cb5883d6fe5a42d03719b61fc18e765f658de9ac8730e67ba9ff26d61e73d991215948ff9ecefe771e0071029 + languageName: node + linkType: hard + +"object.omit@npm:^2.0.0": + version: 2.0.1 + resolution: "object.omit@npm:2.0.1" + dependencies: + for-own: "npm:^0.1.4" + is-extendable: "npm:^0.1.1" + checksum: 10c0/219549087650a1dce1990bbb9c207aa9e0c5302372cbcb363b4a7a36a7b1655a80287d290bebcaff5ae4b5ab7e5859a57f49e3f766cade65bc149fe15c0ba38d + languageName: node + linkType: hard + +"object.pick@npm:^1.3.0": + version: 1.3.0 + resolution: "object.pick@npm:1.3.0" + dependencies: + isobject: "npm:^3.0.1" + checksum: 10c0/cd316ec986e49895a28f2df9182de9cdeee57cd2a952c122aacc86344c28624fe002d9affc4f48b5014ec7c033da9942b08821ddb44db8c5bac5b3ec54bdc31e + languageName: node + linkType: hard + +"once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0": + version: 1.4.0 + resolution: "once@npm:1.4.0" + dependencies: + wrappy: "npm:1" + checksum: 10c0/5d48aca287dfefabd756621c5dfce5c91a549a93e9fdb7b8246bc4c4790aa2ec17b34a260530474635147aeb631a2dcc8b32c613df0675f96041cbb8244517d0 + languageName: node + linkType: hard + +"onetime@npm:^5.1.2": + version: 5.1.2 + resolution: "onetime@npm:5.1.2" + dependencies: + mimic-fn: "npm:^2.1.0" + checksum: 10c0/ffcef6fbb2692c3c40749f31ea2e22677a876daea92959b8a80b521d95cca7a668c884d8b2045d1d8ee7d56796aa405c405462af112a1477594cc63531baeb8f + languageName: node + linkType: hard + +"openai@npm:^4.41.1": + version: 4.77.0 + resolution: "openai@npm:4.77.0" + dependencies: + "@types/node": "npm:^18.11.18" + "@types/node-fetch": "npm:^2.6.4" + abort-controller: "npm:^3.0.0" + agentkeepalive: "npm:^4.2.1" + form-data-encoder: "npm:1.7.2" + formdata-node: "npm:^4.3.2" + node-fetch: "npm:^2.6.7" + peerDependencies: + zod: ^3.23.8 + peerDependenciesMeta: + zod: + optional: true + bin: + openai: bin/cli + checksum: 10c0/438e5acbcdc592ff192f294e936c10a8b71edf898b53afacb937da45f8d4e221e041bfcc84d6174c8dcb9ed4080b32760f8d94de1fcec7ab889046f1e1173f68 + languageName: node + linkType: hard + +"openapi-types@npm:^12.1.3": + version: 12.1.3 + resolution: "openapi-types@npm:12.1.3" + checksum: 10c0/4ad4eb91ea834c237edfa6ab31394e87e00c888fc2918009763389c00d02342345195d6f302d61c3fd807f17723cd48df29b47b538b68375b3827b3758cd520f + languageName: node + linkType: hard + +"p-cancelable@npm:^0.3.0": + version: 0.3.0 + resolution: "p-cancelable@npm:0.3.0" + checksum: 10c0/b8b2c8425b3d284b72097f1b97081ff3f431fd5680f8dfc2344e4f8544f6d8d9f9b545a737bca6a32a319cca1921a44cfd234602e58911dc5d3e144cbe685ea6 + languageName: node + linkType: hard + +"p-event@npm:^1.0.0": + version: 1.3.0 + resolution: "p-event@npm:1.3.0" + dependencies: + p-timeout: "npm:^1.1.1" + checksum: 10c0/72755ae05cc4965015a9ee00ea6a8755f71e90cfc5554c0509a336e8a0f71e0b551eec4bdad52e1c922e8375d7ff9b673c8c3f55ad5e0114424333c0e727f4e8 + languageName: node + linkType: hard + +"p-finally@npm:^1.0.0": + version: 1.0.0 + resolution: "p-finally@npm:1.0.0" + checksum: 10c0/6b8552339a71fe7bd424d01d8451eea92d379a711fc62f6b2fe64cad8a472c7259a236c9a22b4733abca0b5666ad503cb497792a0478c5af31ded793d00937e7 + languageName: node + linkType: hard + +"p-limit@npm:^2.2.0": + version: 2.3.0 + resolution: "p-limit@npm:2.3.0" + dependencies: + p-try: "npm:^2.0.0" + checksum: 10c0/8da01ac53efe6a627080fafc127c873da40c18d87b3f5d5492d465bb85ec7207e153948df6b9cbaeb130be70152f874229b8242ee2be84c0794082510af97f12 + languageName: node + linkType: hard + +"p-limit@npm:^3.1.0": + version: 3.1.0 + resolution: "p-limit@npm:3.1.0" + dependencies: + yocto-queue: "npm:^0.1.0" + checksum: 10c0/9db675949dbdc9c3763c89e748d0ef8bdad0afbb24d49ceaf4c46c02c77d30db4e0652ed36d0a0a7a95154335fab810d95c86153105bb73b3a90448e2bb14e1a + languageName: node + linkType: hard + +"p-locate@npm:^4.1.0": + version: 4.1.0 + resolution: "p-locate@npm:4.1.0" + dependencies: + p-limit: "npm:^2.2.0" + checksum: 10c0/1b476ad69ad7f6059744f343b26d51ce091508935c1dbb80c4e0a2f397ffce0ca3a1f9f5cd3c7ce19d7929a09719d5c65fe70d8ee289c3f267cd36f2881813e9 + languageName: node + linkType: hard + +"p-map@npm:^7.0.2": + version: 7.0.3 + resolution: "p-map@npm:7.0.3" + checksum: 10c0/46091610da2b38ce47bcd1d8b4835a6fa4e832848a6682cf1652bc93915770f4617afc844c10a77d1b3e56d2472bb2d5622353fa3ead01a7f42b04fc8e744a5c + languageName: node + linkType: hard + +"p-queue@npm:^6.6.2": + version: 6.6.2 + resolution: "p-queue@npm:6.6.2" + dependencies: + eventemitter3: "npm:^4.0.4" + p-timeout: "npm:^3.2.0" + checksum: 10c0/5739ecf5806bbeadf8e463793d5e3004d08bb3f6177bd1a44a005da8fd81bb90f80e4633e1fb6f1dfd35ee663a5c0229abe26aebb36f547ad5a858347c7b0d3e + languageName: node + linkType: hard + +"p-queue@npm:^8.0.1": + version: 8.0.1 + resolution: "p-queue@npm:8.0.1" + dependencies: + eventemitter3: "npm:^5.0.1" + p-timeout: "npm:^6.1.2" + checksum: 10c0/fe185bc8bbd32d17a5f6dba090077b1bb326b008b4ec9b0646c57a32a6984035aa8ece909a6d0de7f6c4640296dc288197f430e7394cdc76a26d862339494616 + languageName: node + linkType: hard + +"p-retry@npm:4": + version: 4.6.2 + resolution: "p-retry@npm:4.6.2" + dependencies: + "@types/retry": "npm:0.12.0" + retry: "npm:^0.13.1" + checksum: 10c0/d58512f120f1590cfedb4c2e0c42cb3fa66f3cea8a4646632fcb834c56055bb7a6f138aa57b20cc236fb207c9d694e362e0b5c2b14d9b062f67e8925580c73b0 + languageName: node + linkType: hard + +"p-timeout@npm:^1.1.1": + version: 1.2.1 + resolution: "p-timeout@npm:1.2.1" + dependencies: + p-finally: "npm:^1.0.0" + checksum: 10c0/09177278c4bc060f9cc1d2f06bf0b8deac29acc53415c093dfd2cc7f4844526c5657a506eb7cd879b6a41c262742551dc2b0f3e90c047f2bd0354b7bd17a5d73 + languageName: node + linkType: hard + +"p-timeout@npm:^3.2.0": + version: 3.2.0 + resolution: "p-timeout@npm:3.2.0" + dependencies: + p-finally: "npm:^1.0.0" + checksum: 10c0/524b393711a6ba8e1d48137c5924749f29c93d70b671e6db761afa784726572ca06149c715632da8f70c090073afb2af1c05730303f915604fd38ee207b70a61 + languageName: node + linkType: hard + +"p-timeout@npm:^6.1.2": + version: 6.1.3 + resolution: "p-timeout@npm:6.1.3" + checksum: 10c0/6dcd1efc1a18afac08dd4f8e09797bbe635110e597d27026b478f884b867616871499427643a6b2e11f0404b2936d17db69da2b5e58d5fe99e1fac80a53f0250 + languageName: node + linkType: hard + +"p-try@npm:^2.0.0": + version: 2.2.0 + resolution: "p-try@npm:2.2.0" + checksum: 10c0/c36c19907734c904b16994e6535b02c36c2224d433e01a2f1ab777237f4d86e6289fd5fd464850491e940379d4606ed850c03e0f9ab600b0ebddb511312e177f + languageName: node + linkType: hard + +"package-json-from-dist@npm:^1.0.0": + version: 1.0.1 + resolution: "package-json-from-dist@npm:1.0.1" + checksum: 10c0/62ba2785eb655fec084a257af34dbe24292ab74516d6aecef97ef72d4897310bc6898f6c85b5cd22770eaa1ce60d55a0230e150fb6a966e3ecd6c511e23d164b + languageName: node + linkType: hard + +"parse-glob@npm:^3.0.4": + version: 3.0.4 + resolution: "parse-glob@npm:3.0.4" + dependencies: + glob-base: "npm:^0.3.0" + is-dotfile: "npm:^1.0.0" + is-extglob: "npm:^1.0.0" + is-glob: "npm:^2.0.0" + checksum: 10c0/4faf2e81ca85bc545777a1210ab770e0305c9e095680c219e5635e1a439d763feaf761e055b136425c3d6dcd3ec9431b77fd20f7411525b21031620125dc1dbc + languageName: node + linkType: hard + +"parse-json@npm:^2.2.0": + version: 2.2.0 + resolution: "parse-json@npm:2.2.0" + dependencies: + error-ex: "npm:^1.2.0" + checksum: 10c0/7a90132aa76016f518a3d5d746a21b3f1ad0f97a68436ed71b6f995b67c7151141f5464eea0c16c59aec9b7756519a0e3007a8f98cf3714632d509ec07736df6 + languageName: node + linkType: hard + +"parse-json@npm:^5.2.0": + version: 5.2.0 + resolution: "parse-json@npm:5.2.0" + dependencies: + "@babel/code-frame": "npm:^7.0.0" + error-ex: "npm:^1.3.1" + json-parse-even-better-errors: "npm:^2.3.0" + lines-and-columns: "npm:^1.1.6" + checksum: 10c0/77947f2253005be7a12d858aedbafa09c9ae39eb4863adf330f7b416ca4f4a08132e453e08de2db46459256fb66afaac5ee758b44fe6541b7cdaf9d252e59585 + languageName: node + linkType: hard + +"pascalcase@npm:^0.1.1": + version: 0.1.1 + resolution: "pascalcase@npm:0.1.1" + checksum: 10c0/48dfe90618e33810bf58211d8f39ad2c0262f19ad6354da1ba563935b5f429f36409a1fb9187c220328f7a4dc5969917f8e3e01ee089b5f1627b02aefe39567b + languageName: node + linkType: hard + +"path-exists@npm:^2.0.0": + version: 2.1.0 + resolution: "path-exists@npm:2.1.0" + dependencies: + pinkie-promise: "npm:^2.0.0" + checksum: 10c0/87352f1601c085d5a6eb202f60e5c016c1b790bd0bc09398af446ed3f5c4510b4531ff99cf8acac2d91868886e792927b4292f768b35a83dce12588fb7cbb46e + languageName: node + linkType: hard + +"path-exists@npm:^4.0.0": + version: 4.0.0 + resolution: "path-exists@npm:4.0.0" + checksum: 10c0/8c0bd3f5238188197dc78dced15207a4716c51cc4e3624c44fc97acf69558f5ebb9a2afff486fe1b4ee148e0c133e96c5e11a9aa5c48a3006e3467da070e5e1b + languageName: node + linkType: hard + +"path-is-absolute@npm:^1.0.0": + version: 1.0.1 + resolution: "path-is-absolute@npm:1.0.1" + checksum: 10c0/127da03c82172a2a50099cddbf02510c1791fc2cc5f7713ddb613a56838db1e8168b121a920079d052e0936c23005562059756d653b7c544c53185efe53be078 + languageName: node + linkType: hard + +"path-key@npm:^3.0.0, path-key@npm:^3.1.0": + version: 3.1.1 + resolution: "path-key@npm:3.1.1" + checksum: 10c0/748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c + languageName: node + linkType: hard + +"path-parse@npm:^1.0.7": + version: 1.0.7 + resolution: "path-parse@npm:1.0.7" + checksum: 10c0/11ce261f9d294cc7a58d6a574b7f1b935842355ec66fba3c3fd79e0f036462eaf07d0aa95bb74ff432f9afef97ce1926c720988c6a7451d8a584930ae7de86e1 + languageName: node + linkType: hard + +"path-scurry@npm:^1.11.1": + version: 1.11.1 + resolution: "path-scurry@npm:1.11.1" + dependencies: + lru-cache: "npm:^10.2.0" + minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" + checksum: 10c0/32a13711a2a505616ae1cc1b5076801e453e7aae6ac40ab55b388bb91b9d0547a52f5aaceff710ea400205f18691120d4431e520afbe4266b836fadede15872d + languageName: node + linkType: hard + +"path-type@npm:^1.0.0": + version: 1.1.0 + resolution: "path-type@npm:1.1.0" + dependencies: + graceful-fs: "npm:^4.1.2" + pify: "npm:^2.0.0" + pinkie-promise: "npm:^2.0.0" + checksum: 10c0/2b8c348cb52bbc0c0568afa10a0a5d8f6233adfe5ae75feb56064f6aed6324ab74185c61c2545f4e52ca08acdc76005f615da4e127ed6eecb866002cf491f350 + languageName: node + linkType: hard + +"pause-stream@npm:0.0.11": + version: 0.0.11 + resolution: "pause-stream@npm:0.0.11" + dependencies: + through: "npm:~2.3" + checksum: 10c0/86f12c64cdaaa8e45ebaca4e39a478e1442db8b4beabc280b545bfaf79c0e2f33c51efb554aace5c069cc441c7b924ba484837b345eaa4ba6fc940d62f826802 + languageName: node + linkType: hard + +"pdf-parse@npm:^1.1.1": + version: 1.1.1 + resolution: "pdf-parse@npm:1.1.1" + dependencies: + debug: "npm:^3.1.0" + node-ensure: "npm:^0.0.0" + checksum: 10c0/cba2b6ddfbfa73d94ff0cd342cbe8ef2ef0501863ada687eddf99487a4d06766e00fc44525c40cef3b01f04376cb99d5873ab789bd3e2379a28c3ae5377f3298 + languageName: node + linkType: hard + +"pend@npm:~1.2.0": + version: 1.2.0 + resolution: "pend@npm:1.2.0" + checksum: 10c0/8a87e63f7a4afcfb0f9f77b39bb92374afc723418b9cb716ee4257689224171002e07768eeade4ecd0e86f1fa3d8f022994219fb45634f2dbd78c6803e452458 + languageName: node + linkType: hard + +"picocolors@npm:^1.0.0, picocolors@npm:^1.1.0": + version: 1.1.1 + resolution: "picocolors@npm:1.1.1" + checksum: 10c0/e2e3e8170ab9d7c7421969adaa7e1b31434f789afb9b3f115f6b96d91945041ac3ceb02e9ec6fe6510ff036bcc0bf91e69a1772edc0b707e12b19c0f2d6bcf58 + languageName: node + linkType: hard + +"picomatch@npm:^2.0.4, picomatch@npm:^2.2.3, picomatch@npm:^2.3.1": + version: 2.3.1 + resolution: "picomatch@npm:2.3.1" + checksum: 10c0/26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be + languageName: node + linkType: hard + +"pify@npm:^2.0.0, pify@npm:^2.3.0": + version: 2.3.0 + resolution: "pify@npm:2.3.0" + checksum: 10c0/551ff8ab830b1052633f59cb8adc9ae8407a436e06b4a9718bcb27dc5844b83d535c3a8512b388b6062af65a98c49bdc0dd523d8b2617b188f7c8fee457158dc + languageName: node + linkType: hard + +"pify@npm:^3.0.0": + version: 3.0.0 + resolution: "pify@npm:3.0.0" + checksum: 10c0/fead19ed9d801f1b1fcd0638a1ac53eabbb0945bf615f2f8806a8b646565a04a1b0e7ef115c951d225f042cca388fdc1cd3add46d10d1ed6951c20bd2998af10 + languageName: node + linkType: hard + +"pinkie-promise@npm:^2.0.0": + version: 2.0.1 + resolution: "pinkie-promise@npm:2.0.1" + dependencies: + pinkie: "npm:^2.0.0" + checksum: 10c0/11b5e5ce2b090c573f8fad7b517cbca1bb9a247587306f05ae71aef6f9b2cd2b923c304aa9663c2409cfde27b367286179f1379bc4ec18a3fbf2bb0d473b160a + languageName: node + linkType: hard + +"pinkie@npm:^2.0.0": + version: 2.0.4 + resolution: "pinkie@npm:2.0.4" + checksum: 10c0/25228b08b5597da42dc384221aa0ce56ee0fbf32965db12ba838e2a9ca0193c2f0609c45551ee077ccd2060bf109137fdb185b00c6d7e0ed7e35006d20fdcbc6 + languageName: node + linkType: hard + +"pirates@npm:^4.0.4": + version: 4.0.6 + resolution: "pirates@npm:4.0.6" + checksum: 10c0/00d5fa51f8dded94d7429700fb91a0c1ead00ae2c7fd27089f0c5b63e6eca36197fe46384631872690a66f390c5e27198e99006ab77ae472692ab9c2ca903f36 + languageName: node + linkType: hard + +"pkg-dir@npm:^4.2.0": + version: 4.2.0 + resolution: "pkg-dir@npm:4.2.0" + dependencies: + find-up: "npm:^4.0.0" + checksum: 10c0/c56bda7769e04907a88423feb320babaed0711af8c436ce3e56763ab1021ba107c7b0cafb11cde7529f669cfc22bffcaebffb573645cbd63842ea9fb17cd7728 + languageName: node + linkType: hard + +"posix-character-classes@npm:^0.1.0": + version: 0.1.1 + resolution: "posix-character-classes@npm:0.1.1" + checksum: 10c0/cce88011548a973b4af58361cd8f5f7b5a6faff8eef0901565802f067bcabf82597e920d4c97c22068464be3cbc6447af589f6cc8a7d813ea7165be60a0395bc + languageName: node + linkType: hard + +"prebuildify@npm:^6.0.1": + version: 6.0.1 + resolution: "prebuildify@npm:6.0.1" + dependencies: + minimist: "npm:^1.2.5" + mkdirp-classic: "npm:^0.5.3" + node-abi: "npm:^3.3.0" + npm-run-path: "npm:^3.1.0" + pump: "npm:^3.0.0" + tar-fs: "npm:^2.1.0" + bin: + prebuildify: bin.js + checksum: 10c0/869a02fefe17ac5263194fa16db903640eeaaf2af68d52957016dbcfff6718cdf7909f3146bb420d39653f06d19edf9770a461226682304f743b9ddbb49c14a3 + languageName: node + linkType: hard + +"prepend-http@npm:^1.0.1": + version: 1.0.4 + resolution: "prepend-http@npm:1.0.4" + checksum: 10c0/c6c173ca439e58163ba7bea7cbba52a1ed11e3e3da1c048da296f37d4b7654f78f7304e03f76d5923f4b83af7e2d55533e0f79064209c75b743ccddee13904f8 + languageName: node + linkType: hard + +"preserve@npm:^0.2.0": + version: 0.2.0 + resolution: "preserve@npm:0.2.0" + checksum: 10c0/21154ae0e53e3a338bcdf61dd6859a62f12f198961509fe07ac4f7f59b6f97de0b60c0dda2cce18e57894c77fa22544c8941c4e6f41fc30ed36753763fba6f19 + languageName: node + linkType: hard + +"pretty-format@npm:^29.0.0, pretty-format@npm:^29.7.0": + version: 29.7.0 + resolution: "pretty-format@npm:29.7.0" + dependencies: + "@jest/schemas": "npm:^29.6.3" + ansi-styles: "npm:^5.0.0" + react-is: "npm:^18.0.0" + checksum: 10c0/edc5ff89f51916f036c62ed433506b55446ff739358de77207e63e88a28ca2894caac6e73dcb68166a606e51c8087d32d400473e6a9fdd2dbe743f46c9c0276f + languageName: node + linkType: hard + +"proc-log@npm:^5.0.0": + version: 5.0.0 + resolution: "proc-log@npm:5.0.0" + checksum: 10c0/bbe5edb944b0ad63387a1d5b1911ae93e05ce8d0f60de1035b218cdcceedfe39dbd2c697853355b70f1a090f8f58fe90da487c85216bf9671f9499d1a897e9e3 + languageName: node + linkType: hard + +"process-nextick-args@npm:~2.0.0": + version: 2.0.1 + resolution: "process-nextick-args@npm:2.0.1" + checksum: 10c0/bec089239487833d46b59d80327a1605e1c5287eaad770a291add7f45fda1bb5e28b38e0e061add0a1d0ee0984788ce74fa394d345eed1c420cacf392c554367 + languageName: node + linkType: hard + +"promise-retry@npm:^2.0.1": + version: 2.0.1 + resolution: "promise-retry@npm:2.0.1" + dependencies: + err-code: "npm:^2.0.2" + retry: "npm:^0.12.0" + checksum: 10c0/9c7045a1a2928094b5b9b15336dcd2a7b1c052f674550df63cc3f36cd44028e5080448175b6f6ca32b642de81150f5e7b1a98b728f15cb069f2dd60ac2616b96 + languageName: node + linkType: hard + +"prompts@npm:^2.0.1": + version: 2.4.2 + resolution: "prompts@npm:2.4.2" + dependencies: + kleur: "npm:^3.0.3" + sisteransi: "npm:^1.0.5" + checksum: 10c0/16f1ac2977b19fe2cf53f8411cc98db7a3c8b115c479b2ca5c82b5527cd937aa405fa04f9a5960abeb9daef53191b53b4d13e35c1f5d50e8718c76917c5f1ea4 + languageName: node + linkType: hard + +"proto-list@npm:~1.2.1": + version: 1.2.4 + resolution: "proto-list@npm:1.2.4" + checksum: 10c0/b9179f99394ec8a68b8afc817690185f3b03933f7b46ce2e22c1930dc84b60d09f5ad222beab4e59e58c6c039c7f7fcf620397235ef441a356f31f9744010e12 + languageName: node + linkType: hard + +"ps-tree@npm:^1.2.0": + version: 1.2.0 + resolution: "ps-tree@npm:1.2.0" + dependencies: + event-stream: "npm:=3.3.4" + bin: + ps-tree: ./bin/ps-tree.js + checksum: 10c0/9d1c159e0890db5aa05f84d125193c2190a6c4ecd457596fd25e7611f8f747292a846459dcc0244e27d45529d4cea6d1010c3a2a087fad02624d12fdb7d97c22 + languageName: node + linkType: hard + +"pump@npm:^3.0.0": + version: 3.0.2 + resolution: "pump@npm:3.0.2" + dependencies: + end-of-stream: "npm:^1.1.0" + once: "npm:^1.3.1" + checksum: 10c0/5ad655cb2a7738b4bcf6406b24ad0970d680649d996b55ad20d1be8e0c02394034e4c45ff7cd105d87f1e9b96a0e3d06fd28e11fae8875da26e7f7a8e2c9726f + languageName: node + linkType: hard + +"pure-rand@npm:^6.0.0": + version: 6.1.0 + resolution: "pure-rand@npm:6.1.0" + checksum: 10c0/1abe217897bf74dcb3a0c9aba3555fe975023147b48db540aa2faf507aee91c03bf54f6aef0eb2bf59cc259a16d06b28eca37f0dc426d94f4692aeff02fb0e65 + languageName: node + linkType: hard + +"randomatic@npm:^3.0.0": + version: 3.1.1 + resolution: "randomatic@npm:3.1.1" + dependencies: + is-number: "npm:^4.0.0" + kind-of: "npm:^6.0.0" + math-random: "npm:^1.0.1" + checksum: 10c0/4b1da4b8e234d3d0bd2294a42541dfa03edbde85ee06fa0722e2b004e845da197d72fa7995723d32ea7d7402823ea62550034118cf22e94638560a509cec5bfc + languageName: node + linkType: hard + +"react-is@npm:^18.0.0": + version: 18.3.1 + resolution: "react-is@npm:18.3.1" + checksum: 10c0/f2f1e60010c683479e74c63f96b09fb41603527cd131a9959e2aee1e5a8b0caf270b365e5ca77d4a6b18aae659b60a86150bb3979073528877029b35aecd2072 + languageName: node + linkType: hard + +"read-pkg-up@npm:^1.0.1": + version: 1.0.1 + resolution: "read-pkg-up@npm:1.0.1" + dependencies: + find-up: "npm:^1.0.0" + read-pkg: "npm:^1.0.0" + checksum: 10c0/36c4fc8bd73edf77a4eeb497b6e43010819ea4aef64cbf8e393439fac303398751c5a299feab84e179a74507e3a1416e1ed033a888b1dac3463bf46d1765f7ac + languageName: node + linkType: hard + +"read-pkg@npm:^1.0.0": + version: 1.1.0 + resolution: "read-pkg@npm:1.1.0" + dependencies: + load-json-file: "npm:^1.0.0" + normalize-package-data: "npm:^2.3.2" + path-type: "npm:^1.0.0" + checksum: 10c0/51fce9f7066787dc7688ea7014324cedeb9f38daa7dace4f1147d526f22354a07189ef728710bc97e27fcf5ed3a03b68ad8b60afb4251984640b6f09c180d572 + languageName: node + linkType: hard + +"readable-stream@npm:^2.0.2, readable-stream@npm:^2.3.0, readable-stream@npm:^2.3.5": + version: 2.3.8 + resolution: "readable-stream@npm:2.3.8" + dependencies: + core-util-is: "npm:~1.0.0" + inherits: "npm:~2.0.3" + isarray: "npm:~1.0.0" + process-nextick-args: "npm:~2.0.0" + safe-buffer: "npm:~5.1.1" + string_decoder: "npm:~1.1.1" + util-deprecate: "npm:~1.0.1" + checksum: 10c0/7efdb01f3853bc35ac62ea25493567bf588773213f5f4a79f9c365e1ad13bab845ac0dae7bc946270dc40c3929483228415e92a3fc600cc7e4548992f41ee3fa + languageName: node + linkType: hard + +"readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0": + version: 3.6.2 + resolution: "readable-stream@npm:3.6.2" + dependencies: + inherits: "npm:^2.0.3" + string_decoder: "npm:^1.1.1" + util-deprecate: "npm:^1.0.1" + checksum: 10c0/e37be5c79c376fdd088a45fa31ea2e423e5d48854be7a22a58869b4e84d25047b193f6acb54f1012331e1bcd667ffb569c01b99d36b0bd59658fb33f513511b7 + languageName: node + linkType: hard + +"readdirp@npm:^2.0.0": + version: 2.2.1 + resolution: "readdirp@npm:2.2.1" + dependencies: + graceful-fs: "npm:^4.1.11" + micromatch: "npm:^3.1.10" + readable-stream: "npm:^2.0.2" + checksum: 10c0/770d177372ff2212d382d425d55ca48301fcbf3231ab3827257bbcca7ff44fb51fe4af6acc2dda8512dc7f29da390e9fbea5b2b3fc724b86e85cc828395b7797 + languageName: node + linkType: hard + +"redent@npm:^1.0.0": + version: 1.0.0 + resolution: "redent@npm:1.0.0" + dependencies: + indent-string: "npm:^2.1.0" + strip-indent: "npm:^1.0.1" + checksum: 10c0/9fa48d250d4e645acac9de57cb82dc29cd7f5f27257ec367461e3dd0c9f14c55f1c40fd3d9cf7f9a3ed337f209ad4e0370abfcf5cf75569ebd31c97a7949b8a2 + languageName: node + linkType: hard + +"regenerator-runtime@npm:^0.11.0": + version: 0.11.1 + resolution: "regenerator-runtime@npm:0.11.1" + checksum: 10c0/69cfa839efcf2d627fe358bf302ab8b24e5f182cb69f13e66f0612d3640d7838aad1e55662135e3ef2c1cc4322315b757626094fab13a48f9a64ab4bdeb8795b + languageName: node + linkType: hard + +"regex-cache@npm:^0.4.2": + version: 0.4.4 + resolution: "regex-cache@npm:0.4.4" + dependencies: + is-equal-shallow: "npm:^0.1.3" + checksum: 10c0/d3e374638b577ae560a445c7f36b801cab4815f7d25e1a9afc2328c01d5c0d203ea0d24e95635843e25ebc54e061f1790f7d47aa3839c49f67bbc53358ad9066 + languageName: node + linkType: hard + +"regex-not@npm:^1.0.0, regex-not@npm:^1.0.2": + version: 1.0.2 + resolution: "regex-not@npm:1.0.2" + dependencies: + extend-shallow: "npm:^3.0.2" + safe-regex: "npm:^1.1.0" + checksum: 10c0/a0f8d6045f63b22e9759db10e248369c443b41cedd7dba0922d002b66c2734bc2aef0d98c4d45772d1f756245f4c5203856b88b9624bba2a58708858a8d485d6 + languageName: node + linkType: hard + +"remove-trailing-separator@npm:^1.0.1": + version: 1.1.0 + resolution: "remove-trailing-separator@npm:1.1.0" + checksum: 10c0/3568f9f8f5af3737b4aee9e6e1e8ec4be65a92da9cb27f989e0893714d50aa95ed2ff02d40d1fa35e1b1a234dc9c2437050ef356704a3999feaca6667d9e9bfc + languageName: node + linkType: hard + +"repeat-element@npm:^1.1.2": + version: 1.1.4 + resolution: "repeat-element@npm:1.1.4" + checksum: 10c0/81aa8d82bc845780803ef52df3533fa399974b99df571d0bb86e91f0ffca9ee4b9c4e8e5e72af087938cc28d2aef93d106a6d01da685d72ce96455b90a9f9f69 + languageName: node + linkType: hard + +"repeat-string@npm:^1.5.2, repeat-string@npm:^1.6.1": + version: 1.6.1 + resolution: "repeat-string@npm:1.6.1" + checksum: 10c0/87fa21bfdb2fbdedc44b9a5b118b7c1239bdd2c2c1e42742ef9119b7d412a5137a1d23f1a83dc6bb686f4f27429ac6f542e3d923090b44181bafa41e8ac0174d + languageName: node + linkType: hard + +"repeating@npm:^2.0.0": + version: 2.0.1 + resolution: "repeating@npm:2.0.1" + dependencies: + is-finite: "npm:^1.0.0" + checksum: 10c0/7f5cd293ec47d9c074ef0852800d5ff5c49028ce65242a7528d84f32bd2fe200b142930562af58c96d869c5a3046e87253030058e45231acaa129c1a7087d2e7 + languageName: node + linkType: hard + +"require-directory@npm:^2.1.1": + version: 2.1.1 + resolution: "require-directory@npm:2.1.1" + checksum: 10c0/83aa76a7bc1531f68d92c75a2ca2f54f1b01463cb566cf3fbc787d0de8be30c9dbc211d1d46be3497dac5785fe296f2dd11d531945ac29730643357978966e99 + languageName: node + linkType: hard + +"resolve-cwd@npm:^3.0.0": + version: 3.0.0 + resolution: "resolve-cwd@npm:3.0.0" + dependencies: + resolve-from: "npm:^5.0.0" + checksum: 10c0/e608a3ebd15356264653c32d7ecbc8fd702f94c6703ea4ac2fb81d9c359180cba0ae2e6b71faa446631ed6145454d5a56b227efc33a2d40638ac13f8beb20ee4 + languageName: node + linkType: hard + +"resolve-from@npm:^5.0.0": + version: 5.0.0 + resolution: "resolve-from@npm:5.0.0" + checksum: 10c0/b21cb7f1fb746de8107b9febab60095187781137fd803e6a59a76d421444b1531b641bba5857f5dc011974d8a5c635d61cec49e6bd3b7fc20e01f0fafc4efbf2 + languageName: node + linkType: hard + +"resolve-url@npm:^0.2.1": + version: 0.2.1 + resolution: "resolve-url@npm:0.2.1" + checksum: 10c0/c285182cfcddea13a12af92129ce0569be27fb0074ffaefbd3ba3da2eac2acecdfc996d435c4982a9fa2b4708640e52837c9153a5ab9255886a00b0b9e8d2a54 + languageName: node + linkType: hard + +"resolve.exports@npm:^2.0.0": + version: 2.0.3 + resolution: "resolve.exports@npm:2.0.3" + checksum: 10c0/1ade1493f4642a6267d0a5e68faeac20b3d220f18c28b140343feb83694d8fed7a286852aef43689d16042c61e2ddb270be6578ad4a13990769e12065191200d + languageName: node + linkType: hard + +"resolve@npm:^1.1.7, resolve@npm:^1.10.0, resolve@npm:^1.20.0": + version: 1.22.10 + resolution: "resolve@npm:1.22.10" + dependencies: + is-core-module: "npm:^2.16.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/8967e1f4e2cc40f79b7e080b4582b9a8c5ee36ffb46041dccb20e6461161adf69f843b43067b4a375de926a2cd669157e29a29578191def399dd5ef89a1b5203 + languageName: node + linkType: hard + +"resolve@patch:resolve@npm%3A^1.1.7#optional!builtin, resolve@patch:resolve@npm%3A^1.10.0#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin": + version: 1.22.10 + resolution: "resolve@patch:resolve@npm%3A1.22.10#optional!builtin::version=1.22.10&hash=c3c19d" + dependencies: + is-core-module: "npm:^2.16.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/52a4e505bbfc7925ac8f4cd91fd8c4e096b6a89728b9f46861d3b405ac9a1ccf4dcbf8befb4e89a2e11370dacd0160918163885cbc669369590f2f31f4c58939 + languageName: node + linkType: hard + +"ret@npm:~0.1.10": + version: 0.1.15 + resolution: "ret@npm:0.1.15" + checksum: 10c0/01f77cad0f7ea4f955852c03d66982609893edc1240c0c964b4c9251d0f9fb6705150634060d169939b096d3b77f4c84d6b6098a5b5d340160898c8581f1f63f + languageName: node + linkType: hard + +"retry@npm:^0.12.0": + version: 0.12.0 + resolution: "retry@npm:0.12.0" + checksum: 10c0/59933e8501727ba13ad73ef4a04d5280b3717fd650408460c987392efe9d7be2040778ed8ebe933c5cbd63da3dcc37919c141ef8af0a54a6e4fca5a2af177bfe + languageName: node + linkType: hard + +"retry@npm:^0.13.1": + version: 0.13.1 + resolution: "retry@npm:0.13.1" + checksum: 10c0/9ae822ee19db2163497e074ea919780b1efa00431d197c7afdb950e42bf109196774b92a49fc9821f0b8b328a98eea6017410bfc5e8a0fc19c85c6d11adb3772 + languageName: node + linkType: hard + +"rimraf@npm:^3.0.2": + version: 3.0.2 + resolution: "rimraf@npm:3.0.2" + dependencies: + glob: "npm:^7.1.3" + bin: + rimraf: bin.js + checksum: 10c0/9cb7757acb489bd83757ba1a274ab545eafd75598a9d817e0c3f8b164238dd90eba50d6b848bd4dcc5f3040912e882dc7ba71653e35af660d77b25c381d402e8 + languageName: node + linkType: hard + +"rimraf@npm:^5.0.5": + version: 5.0.10 + resolution: "rimraf@npm:5.0.10" + dependencies: + glob: "npm:^10.3.7" + bin: + rimraf: dist/esm/bin.mjs + checksum: 10c0/7da4fd0e15118ee05b918359462cfa1e7fe4b1228c7765195a45b55576e8c15b95db513b8466ec89129666f4af45ad978a3057a02139afba1a63512a2d9644cc + languageName: node + linkType: hard + +"rolldown@npm:1.0.0-beta.1": + version: 1.0.0-beta.1 + resolution: "rolldown@npm:1.0.0-beta.1" + dependencies: + "@rolldown/binding-darwin-arm64": "npm:1.0.0-beta.1" + "@rolldown/binding-darwin-x64": "npm:1.0.0-beta.1" + "@rolldown/binding-freebsd-x64": "npm:1.0.0-beta.1" + "@rolldown/binding-linux-arm-gnueabihf": "npm:1.0.0-beta.1" + "@rolldown/binding-linux-arm64-gnu": "npm:1.0.0-beta.1" + "@rolldown/binding-linux-arm64-musl": "npm:1.0.0-beta.1" + "@rolldown/binding-linux-x64-gnu": "npm:1.0.0-beta.1" + "@rolldown/binding-linux-x64-musl": "npm:1.0.0-beta.1" + "@rolldown/binding-wasm32-wasi": "npm:1.0.0-beta.1" + "@rolldown/binding-win32-arm64-msvc": "npm:1.0.0-beta.1" + "@rolldown/binding-win32-ia32-msvc": "npm:1.0.0-beta.1" + "@rolldown/binding-win32-x64-msvc": "npm:1.0.0-beta.1" + zod: "npm:^3.23.8" + peerDependencies: + "@babel/runtime": ">=7" + dependenciesMeta: + "@rolldown/binding-darwin-arm64": + optional: true + "@rolldown/binding-darwin-x64": + optional: true + "@rolldown/binding-freebsd-x64": + optional: true + "@rolldown/binding-linux-arm-gnueabihf": + optional: true + "@rolldown/binding-linux-arm64-gnu": + optional: true + "@rolldown/binding-linux-arm64-musl": + optional: true + "@rolldown/binding-linux-x64-gnu": + optional: true + "@rolldown/binding-linux-x64-musl": + optional: true + "@rolldown/binding-wasm32-wasi": + optional: true + "@rolldown/binding-win32-arm64-msvc": + optional: true + "@rolldown/binding-win32-ia32-msvc": + optional: true + "@rolldown/binding-win32-x64-msvc": + optional: true + peerDependenciesMeta: + "@babel/runtime": + optional: true + bin: + rolldown: bin/cli.js + checksum: 10c0/170feec3d87ea4c129d63f8b5999266cf09e8889402d014ebdcd18f36d1ac4ca270d16b2cfaf5c6b80adb4d3c1d5537b8caa6a0ba30bac6387fccb4bf573d91c + languageName: node + linkType: hard + +"rolldown@npm:^1.0.0-beta.1": + version: 1.0.0-beta.1-commit.f90856a + resolution: "rolldown@npm:1.0.0-beta.1-commit.f90856a" + dependencies: + "@rolldown/binding-darwin-arm64": "npm:1.0.0-beta.1-commit.f90856a" + "@rolldown/binding-darwin-x64": "npm:1.0.0-beta.1-commit.f90856a" + "@rolldown/binding-freebsd-x64": "npm:1.0.0-beta.1-commit.f90856a" + "@rolldown/binding-linux-arm-gnueabihf": "npm:1.0.0-beta.1-commit.f90856a" + "@rolldown/binding-linux-arm64-gnu": "npm:1.0.0-beta.1-commit.f90856a" + "@rolldown/binding-linux-arm64-musl": "npm:1.0.0-beta.1-commit.f90856a" + "@rolldown/binding-linux-x64-gnu": "npm:1.0.0-beta.1-commit.f90856a" + "@rolldown/binding-linux-x64-musl": "npm:1.0.0-beta.1-commit.f90856a" + "@rolldown/binding-wasm32-wasi": "npm:1.0.0-beta.1-commit.f90856a" + "@rolldown/binding-win32-arm64-msvc": "npm:1.0.0-beta.1-commit.f90856a" + "@rolldown/binding-win32-ia32-msvc": "npm:1.0.0-beta.1-commit.f90856a" + "@rolldown/binding-win32-x64-msvc": "npm:1.0.0-beta.1-commit.f90856a" + zod: "npm:^3.23.8" + peerDependencies: + "@babel/runtime": ">=7" + dependenciesMeta: + "@rolldown/binding-darwin-arm64": + optional: true + "@rolldown/binding-darwin-x64": + optional: true + "@rolldown/binding-freebsd-x64": + optional: true + "@rolldown/binding-linux-arm-gnueabihf": + optional: true + "@rolldown/binding-linux-arm64-gnu": + optional: true + "@rolldown/binding-linux-arm64-musl": + optional: true + "@rolldown/binding-linux-x64-gnu": + optional: true + "@rolldown/binding-linux-x64-musl": + optional: true + "@rolldown/binding-wasm32-wasi": + optional: true + "@rolldown/binding-win32-arm64-msvc": + optional: true + "@rolldown/binding-win32-ia32-msvc": + optional: true + "@rolldown/binding-win32-x64-msvc": + optional: true + peerDependenciesMeta: + "@babel/runtime": + optional: true + bin: + rolldown: bin/cli.js + checksum: 10c0/e9018052d305374b85b330357c65ad41ee94c3dd4f92827f03eaddc6998fb9fb6611fa21be248f1a18d233dfca9c6d268e5305403a1d0d61789ae646555bded6 + languageName: node + linkType: hard + +"root-workspace-0b6124@workspace:.": + version: 0.0.0-use.local + resolution: "root-workspace-0b6124@workspace:." + languageName: unknown + linkType: soft + +"run-script-os@npm:^1.1.6": + version: 1.1.6 + resolution: "run-script-os@npm:1.1.6" + bin: + run-os: index.js + run-script-os: index.js + checksum: 10c0/620e240a650c666bb8e3f5437680d88c522366e6c68d4867300caf6cad010c85ff36a016de2c71010debaf10e968966b2c6aaa8816bab8298381e5620d41d8aa + languageName: node + linkType: hard + +"rxjs@npm:^7.8.1": + version: 7.8.1 + resolution: "rxjs@npm:7.8.1" + dependencies: + tslib: "npm:^2.1.0" + checksum: 10c0/3c49c1ecd66170b175c9cacf5cef67f8914dcbc7cd0162855538d365c83fea631167cacb644b3ce533b2ea0e9a4d0b12175186985f89d75abe73dbd8f7f06f68 + languageName: node + linkType: hard + +"safe-buffer@npm:5.2.1, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.1, safe-buffer@npm:~5.2.0": + version: 5.2.1 + resolution: "safe-buffer@npm:5.2.1" + checksum: 10c0/6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 + languageName: node + linkType: hard + +"safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": + version: 5.1.2 + resolution: "safe-buffer@npm:5.1.2" + checksum: 10c0/780ba6b5d99cc9a40f7b951d47152297d0e260f0df01472a1b99d4889679a4b94a13d644f7dbc4f022572f09ae9005fa2fbb93bbbd83643316f365a3e9a45b21 + languageName: node + linkType: hard + +"safe-regex@npm:^1.1.0": + version: 1.1.0 + resolution: "safe-regex@npm:1.1.0" + dependencies: + ret: "npm:~0.1.10" + checksum: 10c0/547d58aa5184cbef368fd5ed5f28d20f911614748c5da6b35f53fd6626396707587251e6e3d1e3010fd3ff1212e413841b8825eaa5f317017ca62a30899af31a + languageName: node + linkType: hard + +"safer-buffer@npm:>= 2.1.2 < 3.0.0": + version: 2.1.2 + resolution: "safer-buffer@npm:2.1.2" + checksum: 10c0/7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4 + languageName: node + linkType: hard + +"seek-bzip@npm:^1.0.5": + version: 1.0.6 + resolution: "seek-bzip@npm:1.0.6" + dependencies: + commander: "npm:^2.8.1" + bin: + seek-bunzip: bin/seek-bunzip + seek-table: bin/seek-bzip-table + checksum: 10c0/e4019e4498bb725ff855603595c4116ca003674b13d29cb9ed9891b2ceec884ccf7c1cb5dba0d6b50fe6ce760a011078f5744efb79823f4ddb9decb1571e9912 + languageName: node + linkType: hard + +"semver@npm:2 || 3 || 4 || 5": + version: 5.7.2 + resolution: "semver@npm:5.7.2" + bin: + semver: bin/semver + checksum: 10c0/e4cf10f86f168db772ae95d86ba65b3fd6c5967c94d97c708ccb463b778c2ee53b914cd7167620950fc07faf5a564e6efe903836639e512a1aa15fbc9667fa25 + languageName: node + linkType: hard + +"semver@npm:^6.3.0, semver@npm:^6.3.1": + version: 6.3.1 + resolution: "semver@npm:6.3.1" + bin: + semver: bin/semver.js + checksum: 10c0/e3d79b609071caa78bcb6ce2ad81c7966a46a7431d9d58b8800cfa9cb6a63699b3899a0e4bcce36167a284578212d9ae6942b6929ba4aa5015c079a67751d42d + languageName: node + linkType: hard + +"semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.3": + version: 7.6.3 + resolution: "semver@npm:7.6.3" + bin: + semver: bin/semver.js + checksum: 10c0/88f33e148b210c153873cb08cfe1e281d518aaa9a666d4d148add6560db5cd3c582f3a08ccb91f38d5f379ead256da9931234ed122057f40bb5766e65e58adaf + languageName: node + linkType: hard + +"set-value@npm:^2.0.0, set-value@npm:^2.0.1": + version: 2.0.1 + resolution: "set-value@npm:2.0.1" + dependencies: + extend-shallow: "npm:^2.0.1" + is-extendable: "npm:^0.1.1" + is-plain-object: "npm:^2.0.3" + split-string: "npm:^3.0.1" + checksum: 10c0/4c40573c4f6540456e4b38b95f570272c4cfbe1d12890ad4057886da8535047cd772dfadf5b58e2e87aa244dfb4c57e3586f6716b976fc47c5144b6b09e1811b + languageName: node + linkType: hard + +"shebang-command@npm:^2.0.0": + version: 2.0.0 + resolution: "shebang-command@npm:2.0.0" + dependencies: + shebang-regex: "npm:^3.0.0" + checksum: 10c0/a41692e7d89a553ef21d324a5cceb5f686d1f3c040759c50aab69688634688c5c327f26f3ecf7001ebfd78c01f3c7c0a11a7c8bfd0a8bc9f6240d4f40b224e4e + languageName: node + linkType: hard + +"shebang-regex@npm:^3.0.0": + version: 3.0.0 + resolution: "shebang-regex@npm:3.0.0" + checksum: 10c0/1dbed0726dd0e1152a92696c76c7f06084eb32a90f0528d11acd764043aacf76994b2fb30aa1291a21bd019d6699164d048286309a278855ee7bec06cf6fb690 + languageName: node + linkType: hard + +"shell-quote@npm:^1.6.1": + version: 1.8.2 + resolution: "shell-quote@npm:1.8.2" + checksum: 10c0/85fdd44f2ad76e723d34eb72c753f04d847ab64e9f1f10677e3f518d0e5b0752a176fd805297b30bb8c3a1556ebe6e77d2288dbd7b7b0110c7e941e9e9c20ce1 + languageName: node + linkType: hard + +"signal-exit@npm:^3.0.0, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": + version: 3.0.7 + resolution: "signal-exit@npm:3.0.7" + checksum: 10c0/25d272fa73e146048565e08f3309d5b942c1979a6f4a58a8c59d5fa299728e9c2fcd1a759ec870863b1fd38653670240cd420dad2ad9330c71f36608a6a1c912 + languageName: node + linkType: hard + +"signal-exit@npm:^4.0.1": + version: 4.1.0 + resolution: "signal-exit@npm:4.1.0" + checksum: 10c0/41602dce540e46d599edba9d9860193398d135f7ff72cab629db5171516cfae628d21e7bfccde1bbfdf11c48726bc2a6d1a8fb8701125852fbfda7cf19c6aa83 + languageName: node + linkType: hard + +"sisteransi@npm:^1.0.5": + version: 1.0.5 + resolution: "sisteransi@npm:1.0.5" + checksum: 10c0/230ac975cca485b7f6fe2b96a711aa62a6a26ead3e6fb8ba17c5a00d61b8bed0d7adc21f5626b70d7c33c62ff4e63933017a6462942c719d1980bb0b1207ad46 + languageName: node + linkType: hard + +"slash@npm:^3.0.0": + version: 3.0.0 + resolution: "slash@npm:3.0.0" + checksum: 10c0/e18488c6a42bdfd4ac5be85b2ced3ccd0224773baae6ad42cfbb9ec74fc07f9fa8396bd35ee638084ead7a2a0818eb5e7151111544d4731ce843019dab4be47b + languageName: node + linkType: hard + +"smart-buffer@npm:^4.2.0": + version: 4.2.0 + resolution: "smart-buffer@npm:4.2.0" + checksum: 10c0/a16775323e1404dd43fabafe7460be13a471e021637bc7889468eb45ce6a6b207261f454e4e530a19500cc962c4cc5348583520843b363f4193cee5c00e1e539 + languageName: node + linkType: hard + +"snapdragon-node@npm:^2.0.1": + version: 2.1.1 + resolution: "snapdragon-node@npm:2.1.1" + dependencies: + define-property: "npm:^1.0.0" + isobject: "npm:^3.0.0" + snapdragon-util: "npm:^3.0.1" + checksum: 10c0/7616e6a1ca054afe3ad8defda17ebe4c73b0800d2e0efd635c44ee1b286f8ac7900517314b5330862ce99b28cd2782348ee78bae573ff0f55832ad81d9657f3f + languageName: node + linkType: hard + +"snapdragon-util@npm:^3.0.1": + version: 3.0.1 + resolution: "snapdragon-util@npm:3.0.1" + dependencies: + kind-of: "npm:^3.2.0" + checksum: 10c0/4441856d343399ba7f37f79681949d51b922e290fcc07e7bc94655a50f584befa4fb08f40c3471cd160e004660161964d8ff140cba49baa59aa6caba774240e3 + languageName: node + linkType: hard + +"snapdragon@npm:^0.8.1": + version: 0.8.2 + resolution: "snapdragon@npm:0.8.2" + dependencies: + base: "npm:^0.11.1" + debug: "npm:^2.2.0" + define-property: "npm:^0.2.5" + extend-shallow: "npm:^2.0.1" + map-cache: "npm:^0.2.2" + source-map: "npm:^0.5.6" + source-map-resolve: "npm:^0.5.0" + use: "npm:^3.1.0" + checksum: 10c0/dfdac1f73d47152d72fc07f4322da09bbddfa31c1c9c3ae7346f252f778c45afa5b03e90813332f02f04f6de8003b34a168c456f8bb719024d092f932520ffca + languageName: node + linkType: hard + +"socks-proxy-agent@npm:^8.0.3": + version: 8.0.5 + resolution: "socks-proxy-agent@npm:8.0.5" + dependencies: + agent-base: "npm:^7.1.2" + debug: "npm:^4.3.4" + socks: "npm:^2.8.3" + checksum: 10c0/5d2c6cecba6821389aabf18728325730504bf9bb1d9e342e7987a5d13badd7a98838cc9a55b8ed3cb866ad37cc23e1086f09c4d72d93105ce9dfe76330e9d2a6 + languageName: node + linkType: hard + +"socks@npm:^2.8.3": + version: 2.8.3 + resolution: "socks@npm:2.8.3" + dependencies: + ip-address: "npm:^9.0.5" + smart-buffer: "npm:^4.2.0" + checksum: 10c0/d54a52bf9325165770b674a67241143a3d8b4e4c8884560c4e0e078aace2a728dffc7f70150660f51b85797c4e1a3b82f9b7aa25e0a0ceae1a243365da5c51a7 + languageName: node + linkType: hard + +"sort-keys-length@npm:^1.0.0": + version: 1.0.1 + resolution: "sort-keys-length@npm:1.0.1" + dependencies: + sort-keys: "npm:^1.0.0" + checksum: 10c0/4567d08aa859c7e48b7e2cba14a8ae09a100f6a3bd7cf5d21dccd808d6332c945b9a7e2230a95c16e0e6eac1a943cd050ae51a5d1b4c8ec4b1e89a5801be9aa2 + languageName: node + linkType: hard + +"sort-keys@npm:^1.0.0": + version: 1.1.2 + resolution: "sort-keys@npm:1.1.2" + dependencies: + is-plain-obj: "npm:^1.0.0" + checksum: 10c0/5dd383b0299a40277051f7498c3999520138e2eb50d422962f658738341c9e82349fad4a3024d5ba1a3122688fbaf958f2a472d4c53bade55515097c2ce15420 + languageName: node + linkType: hard + +"source-map-resolve@npm:^0.5.0": + version: 0.5.3 + resolution: "source-map-resolve@npm:0.5.3" + dependencies: + atob: "npm:^2.1.2" + decode-uri-component: "npm:^0.2.0" + resolve-url: "npm:^0.2.1" + source-map-url: "npm:^0.4.0" + urix: "npm:^0.1.0" + checksum: 10c0/410acbe93882e058858d4c1297be61da3e1533f95f25b95903edddc1fb719654e705663644677542d1fb78a66390238fad1a57115fc958a0724cf9bb509caf57 + languageName: node + linkType: hard + +"source-map-support@npm:0.5.13": + version: 0.5.13 + resolution: "source-map-support@npm:0.5.13" + dependencies: + buffer-from: "npm:^1.0.0" + source-map: "npm:^0.6.0" + checksum: 10c0/137539f8c453fa0f496ea42049ab5da4569f96781f6ac8e5bfda26937be9494f4e8891f523c5f98f0e85f71b35d74127a00c46f83f6a4f54672b58d53202565e + languageName: node + linkType: hard + +"source-map-url@npm:^0.4.0": + version: 0.4.1 + resolution: "source-map-url@npm:0.4.1" + checksum: 10c0/f8af0678500d536c7f643e32094d6718a4070ab4ca2d2326532512cfbe2d5d25a45849b4b385879326f2d7523bb3b686d0360dd347a3cda09fd89a5c28d4bc58 + languageName: node + linkType: hard + +"source-map@npm:^0.5.6": + version: 0.5.7 + resolution: "source-map@npm:0.5.7" + checksum: 10c0/904e767bb9c494929be013017380cbba013637da1b28e5943b566031e29df04fba57edf3f093e0914be094648b577372bd8ad247fa98cfba9c600794cd16b599 + languageName: node + linkType: hard + +"source-map@npm:^0.6.0, source-map@npm:^0.6.1": + version: 0.6.1 + resolution: "source-map@npm:0.6.1" + checksum: 10c0/ab55398007c5e5532957cb0beee2368529618ac0ab372d789806f5718123cc4367d57de3904b4e6a4170eb5a0b0f41373066d02ca0735a0c4d75c7d328d3e011 + languageName: node + linkType: hard + +"source-map@npm:^0.7.4": + version: 0.7.4 + resolution: "source-map@npm:0.7.4" + checksum: 10c0/dc0cf3768fe23c345ea8760487f8c97ef6fca8a73c83cd7c9bf2fde8bc2c34adb9c0824d6feb14bc4f9e37fb522e18af621543f1289038a66ac7586da29aa7dc + languageName: node + linkType: hard + +"spdx-correct@npm:^3.0.0": + version: 3.2.0 + resolution: "spdx-correct@npm:3.2.0" + dependencies: + spdx-expression-parse: "npm:^3.0.0" + spdx-license-ids: "npm:^3.0.0" + checksum: 10c0/49208f008618b9119208b0dadc9208a3a55053f4fd6a0ae8116861bd22696fc50f4142a35ebfdb389e05ccf2de8ad142573fefc9e26f670522d899f7b2fe7386 + languageName: node + linkType: hard + +"spdx-exceptions@npm:^2.1.0": + version: 2.5.0 + resolution: "spdx-exceptions@npm:2.5.0" + checksum: 10c0/37217b7762ee0ea0d8b7d0c29fd48b7e4dfb94096b109d6255b589c561f57da93bf4e328c0290046115961b9209a8051ad9f525e48d433082fc79f496a4ea940 + languageName: node + linkType: hard + +"spdx-expression-parse@npm:^3.0.0": + version: 3.0.1 + resolution: "spdx-expression-parse@npm:3.0.1" + dependencies: + spdx-exceptions: "npm:^2.1.0" + spdx-license-ids: "npm:^3.0.0" + checksum: 10c0/6f8a41c87759fa184a58713b86c6a8b028250f158159f1d03ed9d1b6ee4d9eefdc74181c8ddc581a341aa971c3e7b79e30b59c23b05d2436d5de1c30bdef7171 + languageName: node + linkType: hard + +"spdx-license-ids@npm:^3.0.0": + version: 3.0.20 + resolution: "spdx-license-ids@npm:3.0.20" + checksum: 10c0/bdff7534fad6ef59be49becda1edc3fb7f5b3d6f296a715516ab9d972b8ad59af2c34b2003e01db8970d4c673d185ff696ba74c6b61d3bf327e2b3eac22c297c + languageName: node + linkType: hard + +"split-string@npm:^3.0.1, split-string@npm:^3.0.2": + version: 3.1.0 + resolution: "split-string@npm:3.1.0" + dependencies: + extend-shallow: "npm:^3.0.0" + checksum: 10c0/72d7cd625445c7af215130e1e2bc183013bb9dd48a074eda1d35741e2b0dcb355e6df5b5558a62543a24dcec37dd1d6eb7a6228ff510d3c9de0f3dc1d1da8a70 + languageName: node + linkType: hard + +"split@npm:0.3": + version: 0.3.3 + resolution: "split@npm:0.3.3" + dependencies: + through: "npm:2" + checksum: 10c0/88c09b1b4de84953bf5d6c153123a1fbb20addfea9381f70d27b4eb6b2bfbadf25d313f8f5d3fd727d5679b97bfe54da04766b91010f131635bf49e51d5db3fc + languageName: node + linkType: hard + +"sprintf-js@npm:^1.1.3": + version: 1.1.3 + resolution: "sprintf-js@npm:1.1.3" + checksum: 10c0/09270dc4f30d479e666aee820eacd9e464215cdff53848b443964202bf4051490538e5dd1b42e1a65cf7296916ca17640aebf63dae9812749c7542ee5f288dec + languageName: node + linkType: hard + +"sprintf-js@npm:~1.0.2": + version: 1.0.3 + resolution: "sprintf-js@npm:1.0.3" + checksum: 10c0/ecadcfe4c771890140da5023d43e190b7566d9cf8b2d238600f31bec0fc653f328da4450eb04bd59a431771a8e9cc0e118f0aa3974b683a4981b4e07abc2a5bb + languageName: node + linkType: hard + +"ssri@npm:^12.0.0": + version: 12.0.0 + resolution: "ssri@npm:12.0.0" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/caddd5f544b2006e88fa6b0124d8d7b28208b83c72d7672d5ade44d794525d23b540f3396108c4eb9280dcb7c01f0bef50682f5b4b2c34291f7c5e211fd1417d + languageName: node + linkType: hard + +"stack-utils@npm:^2.0.3": + version: 2.0.6 + resolution: "stack-utils@npm:2.0.6" + dependencies: + escape-string-regexp: "npm:^2.0.0" + checksum: 10c0/651c9f87667e077584bbe848acaecc6049bc71979f1e9a46c7b920cad4431c388df0f51b8ad7cfd6eed3db97a2878d0fc8b3122979439ea8bac29c61c95eec8a + languageName: node + linkType: hard + +"static-extend@npm:^0.1.1": + version: 0.1.2 + resolution: "static-extend@npm:0.1.2" + dependencies: + define-property: "npm:^0.2.5" + object-copy: "npm:^0.1.0" + checksum: 10c0/284f5865a9e19d079f1badbcd70d5f9f82e7a08393f818a220839cd5f71729e89105e1c95322bd28e833161d484cee671380ca443869ae89578eef2bf55c0653 + languageName: node + linkType: hard + +"stream-combiner@npm:~0.0.4": + version: 0.0.4 + resolution: "stream-combiner@npm:0.0.4" + dependencies: + duplexer: "npm:~0.1.1" + checksum: 10c0/8075a94c0eb0f20450a8236cb99d4ce3ea6e6a4b36d8baa7440b1a08cde6ffd227debadffaecd80993bd334282875d0e927ab5b88484625e01970dd251004ff5 + languageName: node + linkType: hard + +"string-length@npm:^4.0.1": + version: 4.0.2 + resolution: "string-length@npm:4.0.2" + dependencies: + char-regex: "npm:^1.0.2" + strip-ansi: "npm:^6.0.0" + checksum: 10c0/1cd77409c3d7db7bc59406f6bcc9ef0783671dcbabb23597a1177c166906ef2ee7c8290f78cae73a8aec858768f189d2cb417797df5e15ec4eb5e16b3346340c + languageName: node + linkType: hard + +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": + version: 4.2.3 + resolution: "string-width@npm:4.2.3" + dependencies: + emoji-regex: "npm:^8.0.0" + is-fullwidth-code-point: "npm:^3.0.0" + strip-ansi: "npm:^6.0.1" + checksum: 10c0/1e525e92e5eae0afd7454086eed9c818ee84374bb80328fc41217ae72ff5f065ef1c9d7f72da41de40c75fa8bb3dee63d92373fd492c84260a552c636392a47b + languageName: node + linkType: hard + +"string-width@npm:^5.0.1, string-width@npm:^5.1.2": + version: 5.1.2 + resolution: "string-width@npm:5.1.2" + dependencies: + eastasianwidth: "npm:^0.2.0" + emoji-regex: "npm:^9.2.2" + strip-ansi: "npm:^7.0.1" + checksum: 10c0/ab9c4264443d35b8b923cbdd513a089a60de339216d3b0ed3be3ba57d6880e1a192b70ae17225f764d7adbf5994e9bb8df253a944736c15a0240eff553c678ca + languageName: node + linkType: hard + +"string_decoder@npm:^1.1.1": + version: 1.3.0 + resolution: "string_decoder@npm:1.3.0" + dependencies: + safe-buffer: "npm:~5.2.0" + checksum: 10c0/810614ddb030e271cd591935dcd5956b2410dd079d64ff92a1844d6b7588bf992b3e1b69b0f4d34a3e06e0bd73046ac646b5264c1987b20d0601f81ef35d731d + languageName: node + linkType: hard + +"string_decoder@npm:~1.1.1": + version: 1.1.1 + resolution: "string_decoder@npm:1.1.1" + dependencies: + safe-buffer: "npm:~5.1.0" + checksum: 10c0/b4f89f3a92fd101b5653ca3c99550e07bdf9e13b35037e9e2a1c7b47cec4e55e06ff3fc468e314a0b5e80bfbaf65c1ca5a84978764884ae9413bec1fc6ca924e + languageName: node + linkType: hard + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": + version: 6.0.1 + resolution: "strip-ansi@npm:6.0.1" + dependencies: + ansi-regex: "npm:^5.0.1" + checksum: 10c0/1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952 + languageName: node + linkType: hard + +"strip-ansi@npm:^7.0.1": + version: 7.1.0 + resolution: "strip-ansi@npm:7.1.0" + dependencies: + ansi-regex: "npm:^6.0.1" + checksum: 10c0/a198c3762e8832505328cbf9e8c8381de14a4fa50a4f9b2160138158ea88c0f5549fb50cb13c651c3088f47e63a108b34622ec18c0499b6c8c3a5ddf6b305ac4 + languageName: node + linkType: hard + +"strip-bom@npm:^2.0.0": + version: 2.0.0 + resolution: "strip-bom@npm:2.0.0" + dependencies: + is-utf8: "npm:^0.2.0" + checksum: 10c0/4fcbb248af1d5c1f2d710022b7d60245077e7942079bfb7ef3fc8c1ae78d61e96278525ba46719b15ab12fced5c7603777105bc898695339d7c97c64d300ed0b + languageName: node + linkType: hard + +"strip-bom@npm:^4.0.0": + version: 4.0.0 + resolution: "strip-bom@npm:4.0.0" + checksum: 10c0/26abad1172d6bc48985ab9a5f96c21e440f6e7e476686de49be813b5a59b3566dccb5c525b831ec54fe348283b47f3ffb8e080bc3f965fde12e84df23f6bb7ef + languageName: node + linkType: hard + +"strip-dirs@npm:^2.0.0": + version: 2.1.0 + resolution: "strip-dirs@npm:2.1.0" + dependencies: + is-natural-number: "npm:^4.0.1" + checksum: 10c0/073d6d08331ec2e87afc2c2535d7336fee1d63797384045e4ecb9908a5ac6615022ee000cc278d6bbc94147bed7350f7cf4657b6d18c377813f37e7ae329fb52 + languageName: node + linkType: hard + +"strip-final-newline@npm:^2.0.0": + version: 2.0.0 + resolution: "strip-final-newline@npm:2.0.0" + checksum: 10c0/bddf8ccd47acd85c0e09ad7375409d81653f645fda13227a9d459642277c253d877b68f2e5e4d819fe75733b0e626bac7e954c04f3236f6d196f79c94fa4a96f + languageName: node + linkType: hard + +"strip-indent@npm:^1.0.1": + version: 1.0.1 + resolution: "strip-indent@npm:1.0.1" + dependencies: + get-stdin: "npm:^4.0.1" + bin: + strip-indent: cli.js + checksum: 10c0/671370d44105b63daf4582a42f0a0168d58a351f6558eb913d1ede05d0ad5f964548b99f15c63fa6c7415c3980aad72f28c62997fd98fbb6da2eee1051d3c21a + languageName: node + linkType: hard + +"strip-json-comments@npm:^3.1.1": + version: 3.1.1 + resolution: "strip-json-comments@npm:3.1.1" + checksum: 10c0/9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd + languageName: node + linkType: hard + +"strip-outer@npm:^1.0.0": + version: 1.0.1 + resolution: "strip-outer@npm:1.0.1" + dependencies: + escape-string-regexp: "npm:^1.0.2" + checksum: 10c0/c0f38e6f37563d878a221b1c76f0822f180ec5fc39be5ada30ee637a7d5b59d19418093bad2b4db1e69c40d7a7a7ac50828afce07276cf3d51ac8965cb140dfb + languageName: node + linkType: hard + +"subarg@npm:^1.0.0": + version: 1.0.0 + resolution: "subarg@npm:1.0.0" + dependencies: + minimist: "npm:^1.1.0" + checksum: 10c0/8ecdfa682e50b98272b283f1094ae2f82e5c84b258fd3ac6e47a69149059bd786ef6586305243a5b60746ce23e3e738de7ed8277c76f3363fa351bbfe9c71f37 + languageName: node + linkType: hard + +"supports-color@npm:^7.1.0": + version: 7.2.0 + resolution: "supports-color@npm:7.2.0" + dependencies: + has-flag: "npm:^4.0.0" + checksum: 10c0/afb4c88521b8b136b5f5f95160c98dee7243dc79d5432db7efc27efb219385bbc7d9427398e43dd6cc730a0f87d5085ce1652af7efbe391327bc0a7d0f7fc124 + languageName: node + linkType: hard + +"supports-color@npm:^8.0.0": + version: 8.1.1 + resolution: "supports-color@npm:8.1.1" + dependencies: + has-flag: "npm:^4.0.0" + checksum: 10c0/ea1d3c275dd604c974670f63943ed9bd83623edc102430c05adb8efc56ba492746b6e95386e7831b872ec3807fd89dd8eb43f735195f37b5ec343e4234cc7e89 + languageName: node + linkType: hard + +"supports-preserve-symlinks-flag@npm:^1.0.0": + version: 1.0.0 + resolution: "supports-preserve-symlinks-flag@npm:1.0.0" + checksum: 10c0/6c4032340701a9950865f7ae8ef38578d8d7053f5e10518076e6554a9381fa91bd9c6850193695c141f32b21f979c985db07265a758867bac95de05f7d8aeb39 + languageName: node + linkType: hard + +"tapable@npm:^2.2.0": + version: 2.2.1 + resolution: "tapable@npm:2.2.1" + checksum: 10c0/bc40e6efe1e554d075469cedaba69a30eeb373552aaf41caeaaa45bf56ffacc2674261b106245bd566b35d8f3329b52d838e851ee0a852120acae26e622925c9 + languageName: node + linkType: hard + +"tar-fs@npm:^2.1.0": + version: 2.1.1 + resolution: "tar-fs@npm:2.1.1" + dependencies: + chownr: "npm:^1.1.1" + mkdirp-classic: "npm:^0.5.2" + pump: "npm:^3.0.0" + tar-stream: "npm:^2.1.4" + checksum: 10c0/871d26a934bfb7beeae4c4d8a09689f530b565f79bd0cf489823ff0efa3705da01278160da10bb006d1a793fa0425cf316cec029b32a9159eacbeaff4965fb6d + languageName: node + linkType: hard + +"tar-stream@npm:^1.5.2": + version: 1.6.2 + resolution: "tar-stream@npm:1.6.2" + dependencies: + bl: "npm:^1.0.0" + buffer-alloc: "npm:^1.2.0" + end-of-stream: "npm:^1.0.0" + fs-constants: "npm:^1.0.0" + readable-stream: "npm:^2.3.0" + to-buffer: "npm:^1.1.1" + xtend: "npm:^4.0.0" + checksum: 10c0/ab8528d2cc9ccd0906d1ce6d8089030b2c92a578c57645ff4971452c8c5388b34c7152c04ed64b8510d22a66ffaf0fee58bada7d6ab41ad1e816e31993d59cf3 + languageName: node + linkType: hard + +"tar-stream@npm:^2.1.4": + version: 2.2.0 + resolution: "tar-stream@npm:2.2.0" + dependencies: + bl: "npm:^4.0.3" + end-of-stream: "npm:^1.4.1" + fs-constants: "npm:^1.0.0" + inherits: "npm:^2.0.3" + readable-stream: "npm:^3.1.1" + checksum: 10c0/2f4c910b3ee7196502e1ff015a7ba321ec6ea837667220d7bcb8d0852d51cb04b87f7ae471008a6fb8f5b1a1b5078f62f3a82d30c706f20ada1238ac797e7692 + languageName: node + linkType: hard + +"tar@npm:^7.4.3": + version: 7.4.3 + resolution: "tar@npm:7.4.3" + dependencies: + "@isaacs/fs-minipass": "npm:^4.0.0" + chownr: "npm:^3.0.0" + minipass: "npm:^7.1.2" + minizlib: "npm:^3.0.1" + mkdirp: "npm:^3.0.1" + yallist: "npm:^5.0.0" + checksum: 10c0/d4679609bb2a9b48eeaf84632b6d844128d2412b95b6de07d53d8ee8baf4ca0857c9331dfa510390a0727b550fd543d4d1a10995ad86cdf078423fbb8d99831d + languageName: node + linkType: hard + +"tcp-port-used@npm:^1.0.2": + version: 1.0.2 + resolution: "tcp-port-used@npm:1.0.2" + dependencies: + debug: "npm:4.3.1" + is2: "npm:^2.0.6" + checksum: 10c0/a5fb29e35f1e452f1064e3671d02b6d65e7d9bffad98d8da688270b6ffdaa9a8351fe8321aedf131f3904af70b569d9c5f6d9fe75d57dda19c466abac2bc025a + languageName: node + linkType: hard + +"terminate@npm:2.6.1": + version: 2.6.1 + resolution: "terminate@npm:2.6.1" + dependencies: + ps-tree: "npm:^1.2.0" + checksum: 10c0/1174aa66462da601248d09a29243d81722b65d6b8ff198d7a9fdb50a4e90182ea2ea012ab73e19775538a09f01c99e52107654fd425b8048562ddf70d810886a + languageName: node + linkType: hard + +"terminate@npm:^2.6.1": + version: 2.8.0 + resolution: "terminate@npm:2.8.0" + dependencies: + ps-tree: "npm:^1.2.0" + checksum: 10c0/ae5956b48e34d3c0da3d74eebfcfc20ed49e735ce008c3b7260368bc96b69249c97089982e88da3c649f6827c8f91ddb2dd8f8597cef1da564035827af6b74e4 + languageName: node + linkType: hard + +"test-exclude@npm:^6.0.0": + version: 6.0.0 + resolution: "test-exclude@npm:6.0.0" + dependencies: + "@istanbuljs/schema": "npm:^0.1.2" + glob: "npm:^7.1.4" + minimatch: "npm:^3.0.4" + checksum: 10c0/019d33d81adff3f9f1bfcff18125fb2d3c65564f437d9be539270ee74b994986abb8260c7c2ce90e8f30162178b09dbbce33c6389273afac4f36069c48521f57 + languageName: node + linkType: hard + +"through@npm:2, through@npm:^2.3.8, through@npm:~2.3, through@npm:~2.3.1": + version: 2.3.8 + resolution: "through@npm:2.3.8" + checksum: 10c0/4b09f3774099de0d4df26d95c5821a62faee32c7e96fb1f4ebd54a2d7c11c57fe88b0a0d49cf375de5fee5ae6bf4eb56dbbf29d07366864e2ee805349970d3cc + languageName: node + linkType: hard + +"timed-out@npm:^4.0.0": + version: 4.0.1 + resolution: "timed-out@npm:4.0.1" + checksum: 10c0/86f03ffce5b80c5a066e02e59e411d3fbbfcf242b19290ba76817b4180abd1b85558489586b6022b798fb1cf26fc644c0ce0efb9c271d67ec83fada4b9542a56 + languageName: node + linkType: hard + +"tmpl@npm:1.0.5": + version: 1.0.5 + resolution: "tmpl@npm:1.0.5" + checksum: 10c0/f935537799c2d1922cb5d6d3805f594388f75338fe7a4a9dac41504dd539704ca4db45b883b52e7b0aa5b2fd5ddadb1452bf95cd23a69da2f793a843f9451cc9 + languageName: node + linkType: hard + +"to-buffer@npm:^1.1.1": + version: 1.1.1 + resolution: "to-buffer@npm:1.1.1" + checksum: 10c0/fb9fc6a0103f2b06e2e01c3d291586d0148759d5584f35d0973376434d1b58bd6ee5df9273f0bb1190eb2a5747c894bf49fed571325a7ac10208a48f31736439 + languageName: node + linkType: hard + +"to-object-path@npm:^0.3.0": + version: 0.3.0 + resolution: "to-object-path@npm:0.3.0" + dependencies: + kind-of: "npm:^3.0.2" + checksum: 10c0/731832a977614c03a770363ad2bd9e9c82f233261861724a8e612bb90c705b94b1a290a19f52958e8e179180bb9b71121ed65e245691a421467726f06d1d7fc3 + languageName: node + linkType: hard + +"to-regex-range@npm:^2.1.0": + version: 2.1.1 + resolution: "to-regex-range@npm:2.1.1" + dependencies: + is-number: "npm:^3.0.0" + repeat-string: "npm:^1.6.1" + checksum: 10c0/440d82dbfe0b2e24f36dd8a9467240406ad1499fc8b2b0f547372c22ed1d092ace2a3eb522bb09bfd9c2f39bf1ca42eb78035cf6d2b8c9f5c78da3abc96cd949 + languageName: node + linkType: hard + +"to-regex-range@npm:^5.0.1": + version: 5.0.1 + resolution: "to-regex-range@npm:5.0.1" + dependencies: + is-number: "npm:^7.0.0" + checksum: 10c0/487988b0a19c654ff3e1961b87f471702e708fa8a8dd02a298ef16da7206692e8552a0250e8b3e8759270f62e9d8314616f6da274734d3b558b1fc7b7724e892 + languageName: node + linkType: hard + +"to-regex@npm:^3.0.1, to-regex@npm:^3.0.2": + version: 3.0.2 + resolution: "to-regex@npm:3.0.2" + dependencies: + define-property: "npm:^2.0.2" + extend-shallow: "npm:^3.0.2" + regex-not: "npm:^1.0.2" + safe-regex: "npm:^1.1.0" + checksum: 10c0/99d0b8ef397b3f7abed4bac757b0f0bb9f52bfd39167eb7105b144becfaa9a03756892352d01ac6a911f0c1ceef9f81db68c46899521a3eed054082042796120 + languageName: node + linkType: hard + +"tr46@npm:~0.0.3": + version: 0.0.3 + resolution: "tr46@npm:0.0.3" + checksum: 10c0/047cb209a6b60c742f05c9d3ace8fa510bff609995c129a37ace03476a9b12db4dbf975e74600830ef0796e18882b2381fb5fb1f6b4f96b832c374de3ab91a11 + languageName: node + linkType: hard + +"trim-newlines@npm:^1.0.0": + version: 1.0.0 + resolution: "trim-newlines@npm:1.0.0" + checksum: 10c0/ae859c83d0dbcbde32245509f7c51a4bc9696d56e080bc19acc95c4188381e34fba05a4b2fefb47b4ee4537150a11d57a0fd3cd1179837c06210795d7f62e795 + languageName: node + linkType: hard + +"trim-repeated@npm:^1.0.0": + version: 1.0.0 + resolution: "trim-repeated@npm:1.0.0" + dependencies: + escape-string-regexp: "npm:^1.0.2" + checksum: 10c0/89acada0142ed0cdb113615a3e82fdb09e7fdb0e3504ded62762dd935bc27debfcc38edefa497dc7145d8dc8602d40dd9eec891e0ea6c28fa0cc384200b692db + languageName: node + linkType: hard + +"ts-jest@npm:^29.1.2, ts-jest@npm:^29.2.5": + version: 29.2.5 + resolution: "ts-jest@npm:29.2.5" + dependencies: + bs-logger: "npm:^0.2.6" + ejs: "npm:^3.1.10" + fast-json-stable-stringify: "npm:^2.1.0" + jest-util: "npm:^29.0.0" + json5: "npm:^2.2.3" + lodash.memoize: "npm:^4.1.2" + make-error: "npm:^1.3.6" + semver: "npm:^7.6.3" + yargs-parser: "npm:^21.1.1" + peerDependencies: + "@babel/core": ">=7.0.0-beta.0 <8" + "@jest/transform": ^29.0.0 + "@jest/types": ^29.0.0 + babel-jest: ^29.0.0 + jest: ^29.0.0 + typescript: ">=4.3 <6" + peerDependenciesMeta: + "@babel/core": + optional: true + "@jest/transform": + optional: true + "@jest/types": + optional: true + babel-jest: + optional: true + esbuild: + optional: true + bin: + ts-jest: cli.js + checksum: 10c0/acb62d168faec073e64b20873b583974ba8acecdb94681164eb346cef82ade8fb481c5b979363e01a97ce4dd1e793baf64d9efd90720bc941ad7fc1c3d6f3f68 + languageName: node + linkType: hard + +"ts-loader@npm:^9.5.0": + version: 9.5.1 + resolution: "ts-loader@npm:9.5.1" + dependencies: + chalk: "npm:^4.1.0" + enhanced-resolve: "npm:^5.0.0" + micromatch: "npm:^4.0.0" + semver: "npm:^7.3.4" + source-map: "npm:^0.7.4" + peerDependencies: + typescript: "*" + webpack: ^5.0.0 + checksum: 10c0/7dc1e3e5d3d032b6ef27836032f02c57077dfbcdf5817cbbc16b7b8609e7ed1d0ec157a03eaac07960161d8ad4a9e030c4d6722fe33540cf6ee75156c7f9c33d + languageName: node + linkType: hard + +"tslib@npm:^2.1.0, tslib@npm:^2.4.0": + version: 2.8.1 + resolution: "tslib@npm:2.8.1" + checksum: 10c0/9c4759110a19c53f992d9aae23aac5ced636e99887b51b9e61def52611732872ff7668757d4e4c61f19691e36f4da981cd9485e869b4a7408d689f6bf1f14e62 + languageName: node + linkType: hard + +"tunnel-agent@npm:^0.6.0": + version: 0.6.0 + resolution: "tunnel-agent@npm:0.6.0" + dependencies: + safe-buffer: "npm:^5.0.1" + checksum: 10c0/4c7a1b813e7beae66fdbf567a65ec6d46313643753d0beefb3c7973d66fcec3a1e7f39759f0a0b4465883499c6dc8b0750ab8b287399af2e583823e40410a17a + languageName: node + linkType: hard + +"type-detect@npm:4.0.8": + version: 4.0.8 + resolution: "type-detect@npm:4.0.8" + checksum: 10c0/8fb9a51d3f365a7de84ab7f73b653534b61b622aa6800aecdb0f1095a4a646d3f5eb295322127b6573db7982afcd40ab492d038cf825a42093a58b1e1353e0bd + languageName: node + linkType: hard + +"type-fest@npm:^0.21.3": + version: 0.21.3 + resolution: "type-fest@npm:0.21.3" + checksum: 10c0/902bd57bfa30d51d4779b641c2bc403cdf1371fb9c91d3c058b0133694fcfdb817aef07a47f40faf79039eecbaa39ee9d3c532deff244f3a19ce68cea71a61e8 + languageName: node + linkType: hard + +"typescript@npm:5.3.3": + version: 5.3.3 + resolution: "typescript@npm:5.3.3" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/e33cef99d82573624fc0f854a2980322714986bc35b9cb4d1ce736ed182aeab78e2cb32b385efa493b2a976ef52c53e20d6c6918312353a91850e2b76f1ea44f + languageName: node + linkType: hard + +"typescript@npm:^5.2.2, typescript@npm:^5.3.3, typescript@npm:^5.7.2": + version: 5.7.2 + resolution: "typescript@npm:5.7.2" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/a873118b5201b2ef332127ef5c63fb9d9c155e6fdbe211cbd9d8e65877283797cca76546bad742eea36ed7efbe3424a30376818f79c7318512064e8625d61622 + languageName: node + linkType: hard + +"typescript@patch:typescript@npm%3A5.3.3#optional!builtin": + version: 5.3.3 + resolution: "typescript@patch:typescript@npm%3A5.3.3#optional!builtin::version=5.3.3&hash=e012d7" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/1d0a5f4ce496c42caa9a30e659c467c5686eae15d54b027ee7866744952547f1be1262f2d40de911618c242b510029d51d43ff605dba8fb740ec85ca2d3f9500 + languageName: node + linkType: hard + +"typescript@patch:typescript@npm%3A^5.2.2#optional!builtin, typescript@patch:typescript@npm%3A^5.3.3#optional!builtin, typescript@patch:typescript@npm%3A^5.7.2#optional!builtin": + version: 5.7.2 + resolution: "typescript@patch:typescript@npm%3A5.7.2#optional!builtin::version=5.7.2&hash=5786d5" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/f3b8082c9d1d1629a215245c9087df56cb784f9fb6f27b5d55577a20e68afe2a889c040aacff6d27e35be165ecf9dca66e694c42eb9a50b3b2c451b36b5675cb + languageName: node + linkType: hard + +"ulidx@npm:^2.3.0": + version: 2.4.1 + resolution: "ulidx@npm:2.4.1" + dependencies: + layerr: "npm:^3.0.0" + checksum: 10c0/3cbe05123b4b49d262e26cd0edd3ac38a4f9e97f043d47ae7daa88502748881d1615d832e3bcb29698ca2429947c24494929ba35b40d6bf38df891cb15642d2e + languageName: node + linkType: hard + +"unbzip2-stream@npm:^1.0.9": + version: 1.4.3 + resolution: "unbzip2-stream@npm:1.4.3" + dependencies: + buffer: "npm:^5.2.1" + through: "npm:^2.3.8" + checksum: 10c0/2ea2048f3c9db3499316ccc1d95ff757017ccb6f46c812d7c42466247e3b863fb178864267482f7f178254214247779daf68e85f50bd7736c3c97ba2d58b910a + languageName: node + linkType: hard + +"undici-types@npm:~5.26.4": + version: 5.26.5 + resolution: "undici-types@npm:5.26.5" + checksum: 10c0/bb673d7876c2d411b6eb6c560e0c571eef4a01c1c19925175d16e3a30c4c428181fb8d7ae802a261f283e4166a0ac435e2f505743aa9e45d893f9a3df017b501 + languageName: node + linkType: hard + +"undici-types@npm:~6.19.2": + version: 6.19.8 + resolution: "undici-types@npm:6.19.8" + checksum: 10c0/078afa5990fba110f6824823ace86073b4638f1d5112ee26e790155f481f2a868cc3e0615505b6f4282bdf74a3d8caad715fd809e870c2bb0704e3ea6082f344 + languageName: node + linkType: hard + +"undici-types@npm:~6.20.0": + version: 6.20.0 + resolution: "undici-types@npm:6.20.0" + checksum: 10c0/68e659a98898d6a836a9a59e6adf14a5d799707f5ea629433e025ac90d239f75e408e2e5ff086afc3cace26f8b26ee52155293564593fbb4a2f666af57fc59bf + languageName: node + linkType: hard + +"union-value@npm:^1.0.0": + version: 1.0.1 + resolution: "union-value@npm:1.0.1" + dependencies: + arr-union: "npm:^3.1.0" + get-value: "npm:^2.0.6" + is-extendable: "npm:^0.1.1" + set-value: "npm:^2.0.1" + checksum: 10c0/8758d880cb9545f62ce9cfb9b791b2b7a206e0ff5cc4b9d7cd6581da2c6839837fbb45e639cf1fd8eef3cae08c0201b614b7c06dd9f5f70d9dbe7c5fe2fbf592 + languageName: node + linkType: hard + +"unique-filename@npm:^4.0.0": + version: 4.0.0 + resolution: "unique-filename@npm:4.0.0" + dependencies: + unique-slug: "npm:^5.0.0" + checksum: 10c0/38ae681cceb1408ea0587b6b01e29b00eee3c84baee1e41fd5c16b9ed443b80fba90c40e0ba69627e30855570a34ba8b06702d4a35035d4b5e198bf5a64c9ddc + languageName: node + linkType: hard + +"unique-slug@npm:^5.0.0": + version: 5.0.0 + resolution: "unique-slug@npm:5.0.0" + dependencies: + imurmurhash: "npm:^0.1.4" + checksum: 10c0/d324c5a44887bd7e105ce800fcf7533d43f29c48757ac410afd42975de82cc38ea2035c0483f4de82d186691bf3208ef35c644f73aa2b1b20b8e651be5afd293 + languageName: node + linkType: hard + +"unset-value@npm:^1.0.0": + version: 1.0.0 + resolution: "unset-value@npm:1.0.0" + dependencies: + has-value: "npm:^0.3.1" + isobject: "npm:^3.0.0" + checksum: 10c0/68a796dde4a373afdbf017de64f08490a3573ebee549136da0b3a2245299e7f65f647ef70dc13c4ac7f47b12fba4de1646fa0967a365638578fedce02b9c0b1f + languageName: node + linkType: hard + +"update-browserslist-db@npm:^1.1.1": + version: 1.1.1 + resolution: "update-browserslist-db@npm:1.1.1" + dependencies: + escalade: "npm:^3.2.0" + picocolors: "npm:^1.1.0" + peerDependencies: + browserslist: ">= 4.21.0" + bin: + update-browserslist-db: cli.js + checksum: 10c0/536a2979adda2b4be81b07e311bd2f3ad5e978690987956bc5f514130ad50cac87cd22c710b686d79731e00fbee8ef43efe5fcd72baa241045209195d43dcc80 + languageName: node + linkType: hard + +"urix@npm:^0.1.0": + version: 0.1.0 + resolution: "urix@npm:0.1.0" + checksum: 10c0/264f1b29360c33c0aec5fb9819d7e28f15d1a3b83175d2bcc9131efe8583f459f07364957ae3527f1478659ec5b2d0f1ad401dfb625f73e4d424b3ae35fc5fc0 + languageName: node + linkType: hard + +"url-parse-lax@npm:^1.0.0": + version: 1.0.0 + resolution: "url-parse-lax@npm:1.0.0" + dependencies: + prepend-http: "npm:^1.0.1" + checksum: 10c0/7578d90d18297c0896ab3c98350b61b59be56211baad543ea55eb570dfbd403b0987e499a817abb55d755df6f47ec2e748a49bd09f8d39766066a6871853cea1 + languageName: node + linkType: hard + +"url-to-options@npm:^1.0.1": + version: 1.0.1 + resolution: "url-to-options@npm:1.0.1" + checksum: 10c0/3d8143bbc2ab0ead3cbc0c60803c274847bf69aa3ef8b2b77a7d58b1739de01efbfbcd7d7b15c8b6b540bb266ae10895a50a1477ce2d9895dfa2c67243e39c51 + languageName: node + linkType: hard + +"use@npm:^3.1.0": + version: 3.1.1 + resolution: "use@npm:3.1.1" + checksum: 10c0/75b48673ab80d5139c76922630d5a8a44e72ed58dbaf54dee1b88352d10e1c1c1fc332066c782d8ae9a56503b85d3dc67ff6d2ffbd9821120466d1280ebb6d6e + languageName: node + linkType: hard + +"util-deprecate@npm:^1.0.1, util-deprecate@npm:~1.0.1": + version: 1.0.2 + resolution: "util-deprecate@npm:1.0.2" + checksum: 10c0/41a5bdd214df2f6c3ecf8622745e4a366c4adced864bc3c833739791aeeeb1838119af7daed4ba36428114b5c67dcda034a79c882e97e43c03e66a4dd7389942 + languageName: node + linkType: hard + +"uuid@npm:^10.0.0": + version: 10.0.0 + resolution: "uuid@npm:10.0.0" + bin: + uuid: dist/bin/uuid + checksum: 10c0/eab18c27fe4ab9fb9709a5d5f40119b45f2ec8314f8d4cf12ce27e4c6f4ffa4a6321dc7db6c515068fa373c075b49691ba969f0010bf37f44c37ca40cd6bf7fe + languageName: node + linkType: hard + +"uuid@npm:^8.3.2": + version: 8.3.2 + resolution: "uuid@npm:8.3.2" + bin: + uuid: dist/bin/uuid + checksum: 10c0/bcbb807a917d374a49f475fae2e87fdca7da5e5530820ef53f65ba1d12131bd81a92ecf259cc7ce317cbe0f289e7d79fdfebcef9bfa3087c8c8a2fa304c9be54 + languageName: node + linkType: hard + +"uuid@npm:^9.0.0": + version: 9.0.1 + resolution: "uuid@npm:9.0.1" + bin: + uuid: dist/bin/uuid + checksum: 10c0/1607dd32ac7fc22f2d8f77051e6a64845c9bce5cd3dd8aa0070c074ec73e666a1f63c7b4e0f4bf2bc8b9d59dc85a15e17807446d9d2b17c8485fbc2147b27f9b + languageName: node + linkType: hard + +"v8-to-istanbul@npm:^9.0.1": + version: 9.3.0 + resolution: "v8-to-istanbul@npm:9.3.0" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.12" + "@types/istanbul-lib-coverage": "npm:^2.0.1" + convert-source-map: "npm:^2.0.0" + checksum: 10c0/968bcf1c7c88c04df1ffb463c179558a2ec17aa49e49376120504958239d9e9dad5281aa05f2a78542b8557f2be0b0b4c325710262f3b838b40d703d5ed30c23 + languageName: node + linkType: hard + +"validate-npm-package-license@npm:^3.0.1": + version: 3.0.4 + resolution: "validate-npm-package-license@npm:3.0.4" + dependencies: + spdx-correct: "npm:^3.0.0" + spdx-expression-parse: "npm:^3.0.0" + checksum: 10c0/7b91e455a8de9a0beaa9fe961e536b677da7f48c9a493edf4d4d4a87fd80a7a10267d438723364e432c2fcd00b5650b5378275cded362383ef570276e6312f4f + languageName: node + linkType: hard + +"walker@npm:^1.0.8": + version: 1.0.8 + resolution: "walker@npm:1.0.8" + dependencies: + makeerror: "npm:1.0.12" + checksum: 10c0/a17e037bccd3ca8a25a80cb850903facdfed0de4864bd8728f1782370715d679fa72e0a0f5da7c1c1379365159901e5935f35be531229da53bbfc0efdabdb48e + languageName: node + linkType: hard + +"web-streams-polyfill@npm:4.0.0-beta.3": + version: 4.0.0-beta.3 + resolution: "web-streams-polyfill@npm:4.0.0-beta.3" + checksum: 10c0/a9596779db2766990117ed3a158e0b0e9f69b887a6d6ba0779940259e95f99dc3922e534acc3e5a117b5f5905300f527d6fbf8a9f0957faf1d8e585ce3452e8e + languageName: node + linkType: hard + +"web-streams-polyfill@npm:^3.2.1": + version: 3.3.3 + resolution: "web-streams-polyfill@npm:3.3.3" + checksum: 10c0/64e855c47f6c8330b5436147db1c75cb7e7474d924166800e8e2aab5eb6c76aac4981a84261dd2982b3e754490900b99791c80ae1407a9fa0dcff74f82ea3a7f + languageName: node + linkType: hard + +"webidl-conversions@npm:^3.0.0": + version: 3.0.1 + resolution: "webidl-conversions@npm:3.0.1" + checksum: 10c0/5612d5f3e54760a797052eb4927f0ddc01383550f542ccd33d5238cfd65aeed392a45ad38364970d0a0f4fea32e1f4d231b3d8dac4a3bdd385e5cf802ae097db + languageName: node + linkType: hard + +"whatwg-url@npm:^5.0.0": + version: 5.0.0 + resolution: "whatwg-url@npm:5.0.0" + dependencies: + tr46: "npm:~0.0.3" + webidl-conversions: "npm:^3.0.0" + checksum: 10c0/1588bed84d10b72d5eec1d0faa0722ba1962f1821e7539c535558fb5398d223b0c50d8acab950b8c488b4ba69043fd833cc2697056b167d8ad46fac3995a55d5 + languageName: node + linkType: hard + +"which@npm:^2.0.1": + version: 2.0.2 + resolution: "which@npm:2.0.2" + dependencies: + isexe: "npm:^2.0.0" + bin: + node-which: ./bin/node-which + checksum: 10c0/66522872a768b60c2a65a57e8ad184e5372f5b6a9ca6d5f033d4b0dc98aff63995655a7503b9c0a2598936f532120e81dd8cc155e2e92ed662a2b9377cc4374f + languageName: node + linkType: hard + +"which@npm:^5.0.0": + version: 5.0.0 + resolution: "which@npm:5.0.0" + dependencies: + isexe: "npm:^3.1.1" + bin: + node-which: bin/which.js + checksum: 10c0/e556e4cd8b7dbf5df52408c9a9dd5ac6518c8c5267c8953f5b0564073c66ed5bf9503b14d876d0e9c7844d4db9725fb0dcf45d6e911e17e26ab363dc3965ae7b + languageName: node + linkType: hard + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": + version: 7.0.0 + resolution: "wrap-ansi@npm:7.0.0" + dependencies: + ansi-styles: "npm:^4.0.0" + string-width: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + checksum: 10c0/d15fc12c11e4cbc4044a552129ebc75ee3f57aa9c1958373a4db0292d72282f54373b536103987a4a7594db1ef6a4f10acf92978f79b98c49306a4b58c77d4da + languageName: node + linkType: hard + +"wrap-ansi@npm:^8.1.0": + version: 8.1.0 + resolution: "wrap-ansi@npm:8.1.0" + dependencies: + ansi-styles: "npm:^6.1.0" + string-width: "npm:^5.0.1" + strip-ansi: "npm:^7.0.1" + checksum: 10c0/138ff58a41d2f877eae87e3282c0630fc2789012fc1af4d6bd626eeb9a2f9a65ca92005e6e69a75c7b85a68479fe7443c7dbe1eb8fbaa681a4491364b7c55c60 + languageName: node + linkType: hard + +"wrappy@npm:1": + version: 1.0.2 + resolution: "wrappy@npm:1.0.2" + checksum: 10c0/56fece1a4018c6a6c8e28fbc88c87e0fbf4ea8fd64fc6c63b18f4acc4bd13e0ad2515189786dd2c30d3eec9663d70f4ecf699330002f8ccb547e4a18231fc9f0 + languageName: node + linkType: hard + +"write-file-atomic@npm:^4.0.2": + version: 4.0.2 + resolution: "write-file-atomic@npm:4.0.2" + dependencies: + imurmurhash: "npm:^0.1.4" + signal-exit: "npm:^3.0.7" + checksum: 10c0/a2c282c95ef5d8e1c27b335ae897b5eca00e85590d92a3fd69a437919b7b93ff36a69ea04145da55829d2164e724bc62202cdb5f4b208b425aba0807889375c7 + languageName: node + linkType: hard + +"xml@npm:^1.0.1": + version: 1.0.1 + resolution: "xml@npm:1.0.1" + checksum: 10c0/04bcc9b8b5e7b49392072fbd9c6b0f0958bd8e8f8606fee460318e43991349a68cbc5384038d179ff15aef7d222285f69ca0f067f53d071084eb14c7fdb30411 + languageName: node + linkType: hard + +"xtend@npm:^4.0.0": + version: 4.0.2 + resolution: "xtend@npm:4.0.2" + checksum: 10c0/366ae4783eec6100f8a02dff02ac907bf29f9a00b82ac0264b4d8b832ead18306797e283cf19de776538babfdcb2101375ec5646b59f08c52128ac4ab812ed0e + languageName: node + linkType: hard + +"y18n@npm:^5.0.5": + version: 5.0.8 + resolution: "y18n@npm:5.0.8" + checksum: 10c0/4df2842c36e468590c3691c894bc9cdbac41f520566e76e24f59401ba7d8b4811eb1e34524d57e54bc6d864bcb66baab7ffd9ca42bf1eda596618f9162b91249 + languageName: node + linkType: hard + +"yallist@npm:^3.0.2": + version: 3.1.1 + resolution: "yallist@npm:3.1.1" + checksum: 10c0/c66a5c46bc89af1625476f7f0f2ec3653c1a1791d2f9407cfb4c2ba812a1e1c9941416d71ba9719876530e3340a99925f697142989371b72d93b9ee628afd8c1 + languageName: node + linkType: hard + +"yallist@npm:^4.0.0": + version: 4.0.0 + resolution: "yallist@npm:4.0.0" + checksum: 10c0/2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a + languageName: node + linkType: hard + +"yallist@npm:^5.0.0": + version: 5.0.0 + resolution: "yallist@npm:5.0.0" + checksum: 10c0/a499c81ce6d4a1d260d4ea0f6d49ab4da09681e32c3f0472dee16667ed69d01dae63a3b81745a24bd78476ec4fcf856114cb4896ace738e01da34b2c42235416 + languageName: node + linkType: hard + +"yaml@npm:^2.2.1": + version: 2.6.1 + resolution: "yaml@npm:2.6.1" + bin: + yaml: bin.mjs + checksum: 10c0/aebf07f61c72b38c74d2b60c3a3ccf89ee4da45bcd94b2bfb7899ba07a5257625a7c9f717c65a6fc511563d48001e01deb1d9e55f0133f3e2edf86039c8c1be7 + languageName: node + linkType: hard + +"yargs-parser@npm:^21.1.1": + version: 21.1.1 + resolution: "yargs-parser@npm:21.1.1" + checksum: 10c0/f84b5e48169479d2f402239c59f084cfd1c3acc197a05c59b98bab067452e6b3ea46d4dd8ba2985ba7b3d32a343d77df0debd6b343e5dae3da2aab2cdf5886b2 + languageName: node + linkType: hard + +"yargs@npm:^17.3.1": + version: 17.7.2 + resolution: "yargs@npm:17.7.2" + dependencies: + cliui: "npm:^8.0.1" + escalade: "npm:^3.1.1" + get-caller-file: "npm:^2.0.5" + require-directory: "npm:^2.1.1" + string-width: "npm:^4.2.3" + y18n: "npm:^5.0.5" + yargs-parser: "npm:^21.1.1" + checksum: 10c0/ccd7e723e61ad5965fffbb791366db689572b80cca80e0f96aad968dfff4156cd7cd1ad18607afe1046d8241e6fb2d6c08bf7fa7bfb5eaec818735d8feac8f05 + languageName: node + linkType: hard + +"yauzl@npm:^2.4.2": + version: 2.10.0 + resolution: "yauzl@npm:2.10.0" + dependencies: + buffer-crc32: "npm:~0.2.3" + fd-slicer: "npm:~1.1.0" + checksum: 10c0/f265002af7541b9ec3589a27f5fb8f11cf348b53cc15e2751272e3c062cd73f3e715bc72d43257de71bbaecae446c3f1b14af7559e8ab0261625375541816422 + languageName: node + linkType: hard + +"yocto-queue@npm:^0.1.0": + version: 0.1.0 + resolution: "yocto-queue@npm:0.1.0" + checksum: 10c0/dceb44c28578b31641e13695d200d34ec4ab3966a5729814d5445b194933c096b7ced71494ce53a0e8820685d1d010df8b2422e5bf2cdea7e469d97ffbea306f + languageName: node + linkType: hard + +"zod-to-json-schema@npm:3.20.3": + version: 3.20.3 + resolution: "zod-to-json-schema@npm:3.20.3" + peerDependencies: + zod: ^3.20.0 + checksum: 10c0/02e343df79936323482fd153c4e4ab68c0ced02fc2fdd8711cb6b21d158179e44202aa490c66bcd0bece99080fcd4ca5993d08a7bf2dcf4dcff2502239c5e6a0 + languageName: node + linkType: hard + +"zod-to-json-schema@npm:^3.22.3, zod-to-json-schema@npm:^3.22.5": + version: 3.24.1 + resolution: "zod-to-json-schema@npm:3.24.1" + peerDependencies: + zod: ^3.24.1 + checksum: 10c0/dd4e72085003e41a3f532bd00061f27041418a4eb176aa6ce33042db08d141bd37707017ee9117d97738ae3f22fc3e1404ea44e6354634ac5da79d7d3173b4ee + languageName: node + linkType: hard + +"zod@npm:^3.22.3, zod@npm:^3.22.4, zod@npm:^3.23.8": + version: 3.24.1 + resolution: "zod@npm:3.24.1" + checksum: 10c0/0223d21dbaa15d8928fe0da3b54696391d8e3e1e2d0283a1a070b5980a1dbba945ce631c2d1eccc088fdbad0f2dfa40155590bf83732d3ac4fcca2cc9237591b + languageName: node + linkType: hard diff --git a/joi/package.json b/joi/package.json index 8de32f820..f54df1a25 100644 --- a/joi/package.json +++ b/joi/package.json @@ -1,8 +1,7 @@ { "name": "@janhq/joi", "version": "0.0.0", - "main": "dist/cjs/index.js", - "module": "dist/esm/index.js", + "main": "dist/esm/index.js", "types": "dist/index.d.ts", "description": "A collection of UI component", "files": [ @@ -20,7 +19,7 @@ "bugs": "https://github.com/codecentrum/piksel/issues", "scripts": { "dev": "rollup -c -w", - "build": "rimraf ./dist && rollup -c", + "build": "rimraf ./dist || true && rollup -c", "test": "jest" }, "peerDependencies": { @@ -41,29 +40,38 @@ "@types/jest": "^29.5.12", "autoprefixer": "10.4.16", "jest": "^29.7.0", + "rollup-plugin-sass": "^1.14.0", "tailwind-merge": "^2.2.0", "tailwindcss": "^3.4.1", "ts-jest": "^29.2.5" }, "devDependencies": { - "@rollup/plugin-node-resolve": "^15.2.3", - "@rollup/plugin-terser": "^0.4.4", - "@testing-library/dom": "^10.4.0", + "@rollup/plugin-node-resolve": "15.2.3", + "@rollup/plugin-terser": "0.4.4", + "@testing-library/dom": "10.4.0", "@testing-library/jest-dom": "^6.5.0", "@testing-library/react": "^16.0.1", "@testing-library/user-event": "^14.5.2", "@types/jest": "^29.5.12", + "@types/react": "^18.3.12", + "@types/react-dom": "^19", + "class-variance-authority": "^0.7.0", "jest-environment-jsdom": "^29.7.0", "jest-transform-css": "^6.0.1", "prettier": "^3.0.3", "prettier-plugin-tailwindcss": "^0.5.6", - "rollup": "^4.12.0", - "rollup-plugin-bundle-size": "^1.0.3", - "rollup-plugin-commonjs": "^10.1.0", - "rollup-plugin-copy": "^3.5.0", - "rollup-plugin-dts": "^6.1.0", - "rollup-plugin-peer-deps-external": "^2.2.4", - "rollup-plugin-postcss": "^4.0.2", - "rollup-plugin-typescript2": "^0.36.0" - } + "react": "^19.0.0", + "react-dom": "^19.0.0", + "rimraf": "^6.0.1", + "rollup": "4.12.0", + "rollup-plugin-bundle-size": "1.0.3", + "rollup-plugin-commonjs": "10.1.0", + "rollup-plugin-copy": "3.5.0", + "rollup-plugin-dts": "6.1.0", + "rollup-plugin-peer-deps-external": "2.2.4", + "rollup-plugin-postcss": "4.0.2", + "rollup-plugin-typescript2": "0.36.0", + "typescript": "^5.7.2" + }, + "packageManager": "yarn@4.5.3" } diff --git a/joi/rollup.config.mjs b/joi/rollup.config.mjs index 8f20635a5..e372bd1c8 100644 --- a/joi/rollup.config.mjs +++ b/joi/rollup.config.mjs @@ -11,6 +11,7 @@ import tailwindcss from 'tailwindcss' import typescriptEngine from 'typescript' import resolve from '@rollup/plugin-node-resolve' import copy from 'rollup-plugin-copy' +import sass from 'rollup-plugin-sass' const packageJson = JSON.parse(readFileSync('./package.json')) @@ -22,18 +23,12 @@ export default [ output: [ { file: packageJson.main, - format: 'cjs', - sourcemap: false, - exports: 'named', - name: packageJson.name, - }, - { - file: packageJson.module, format: 'es', exports: 'named', sourcemap: false, }, ], + external: ['react', 'typescript', 'class-variance-authority'], plugins: [ postcss({ plugins: [autoprefixer(), tailwindcss(tailwindConfig)], @@ -46,16 +41,24 @@ export default [ minimize: true, extract: 'main.css', }), + peerDepsExternal({ includeDependencies: true }), - resolve(), commonjs(), + resolve(), typescript({ tsconfig: './tsconfig.json', typescript: typescriptEngine, sourceMap: false, - exclude: ['docs', 'dist', 'node_modules/**'], + exclude: [ + 'docs', + 'dist', + 'node_modules/**', + '**/*.test.ts', + '**/*.test.tsx', + ], }), terser(), + sass(), ], watch: { clearScreen: false, diff --git a/joi/tsconfig.json b/joi/tsconfig.json index 25e2ee66f..4aed01c50 100644 --- a/joi/tsconfig.json +++ b/joi/tsconfig.json @@ -13,5 +13,5 @@ "esModuleInterop": true }, "include": ["src/**/*"], - "exclude": ["node_modules"] + "exclude": ["node_modules", "*.test.ts"] } diff --git a/package.json b/package.json index 8b24f14ba..174b39d96 100644 --- a/package.json +++ b/package.json @@ -8,13 +8,6 @@ "electron", "web", "server" - ], - "nohoist": [ - "joi", - "core", - "electron", - "web", - "server" ] }, "scripts": { @@ -23,35 +16,40 @@ "test:coverage": "jest --coverage", "test": "yarn workspace jan test:e2e", "test-local": "yarn lint && yarn build:test && yarn test", - "pre-install:darwin": "find extensions -type f -path \"**/*.tgz\" -exec cp {} pre-install \\;", - "pre-install:linux": "find extensions -type f -path \"**/*.tgz\" -exec cp {} pre-install \\;", - "pre-install:win32": "powershell -Command \"Get-ChildItem -Path \"extensions\" -Recurse -File -Filter \"*.tgz\" | ForEach-Object { Copy-Item -Path $_.FullName -Destination \"pre-install\" }\"", - "pre-install": "run-script-os", "copy:assets": "cpx \"pre-install/*.tgz\" \"electron/pre-install/\" && cpx \"themes/**\" \"electron/themes\"", "dev:electron": "yarn copy:assets && yarn workspace jan dev", "dev:web": "yarn workspace @janhq/web dev", "dev:server": "yarn workspace @janhq/server dev", - "dev": "turbo run dev --parallel --filter=!@janhq/server", - "build:server": "cd server && yarn install && yarn run build", - "build:core": "cd core && yarn install && yarn run build", + "dev": "concurrently -n \"NEXT,ELECTRON\" -c \"yellow,blue\" --kill-others \"yarn dev:web\" \"yarn dev:electron\"", + "build:server": "cd server && yarn build", + "build:core": "cd core && yarn build && yarn pack", "build:web": "yarn workspace @janhq/web build && cpx \"web/out/**\" \"electron/renderer/\"", "build:electron": "yarn copy:assets && yarn workspace jan build", "build:electron:test": "yarn workspace jan build:test", - "build:extensions": "rimraf ./pre-install/*.tgz && turbo run @janhq/core#build && cd extensions && yarn install && turbo run build:publish && cd .. && yarn pre-install", - "build:test": "yarn copy:assets && turbo run @janhq/web#build && cpx \"web/out/**\" \"electron/renderer/\" && turbo run build:test", + "build:extensions": "rimraf ./pre-install/*.tgz || true && yarn workspace @janhq/core build && cd extensions && yarn install && yarn workspaces foreach -Apt run build:publish", + "build:test": "yarn copy:assets && yarn workspace @janhq/web build && cpx \"web/out/**\" \"electron/renderer/\" && yarn workspace jan build:test", "build": "yarn build:web && yarn build:electron", "build:publish": "yarn copy:assets && yarn build:web && yarn workspace jan build:publish", "dev:joi": "yarn workspace @janhq/joi install && yarn workspace @janhq/joi dev", - "build:joi": "yarn workspace @janhq/joi install && yarn workspace @janhq/joi build", + "build:joi": "yarn workspace @janhq/joi build", "prepare": "husky" }, "devDependencies": { - "concurrently": "^8.2.1", + "concurrently": "^9.1.0", "cpx": "^1.5.0", "husky": "^9.1.5", + "jest": "^29.7.0", + "jest-environment-jsdom": "^29.7.0", "rimraf": "^3.0.2", "run-script-os": "^1.1.6", "wait-on": "^7.0.1" }, - "version": "0.0.0" + "version": "0.0.0", + "installConfig": { + "hoistingLimits": "workspaces" + }, + "resolutions": { + "yallist": "4.0.0" + }, + "packageManager": "yarn@4.5.3" } diff --git a/server/main.ts b/server/main.ts deleted file mode 100644 index b69197d15..000000000 --- a/server/main.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { setup } from './helpers/setup' -import { startServer as start } from './index' -/** - * Setup extensions and start the server - */ -setup().then(() => start()) diff --git a/server/package.json b/server/package.json index 634c91fe0..fed08a3e7 100644 --- a/server/package.json +++ b/server/package.json @@ -1,38 +1,28 @@ { "name": "@janhq/server", "version": "0.1.3", - "main": "build/index.js", - "types": "build/index.d.ts", + "main": "dist/index.js", "author": "Jan ", "license": "AGPL-3.0", "homepage": "https://jan.ai", - "description": "Use offline LLMs with your own data. Run open source models like Llama2 or Falcon on your internal computers/servers.", + "description": "Jan API Server proxies route all requests to cortex.cpp server with customized configurations.", "files": [ "build/**", "cortex.json" ], "scripts": { "lint": "eslint . --ext \".js,.jsx,.ts,.tsx\"", - "test:e2e": "playwright test --workers=1", - "dev": "tsc --watch & node --watch build/main.js", - "build": "tsc" + "build": "rolldown -c rolldown.config.mjs" }, "dependencies": { - "@alumna/reflect": "^1.1.3", - "@cyclic.sh/s3fs": "^1.2.9", "@fastify/cors": "^10.0.1", "@fastify/http-proxy": "^10.0.0", "@fastify/static": "^6.12.0", "@fastify/swagger": "^9.4.0", "@fastify/swagger-ui": "5.2.0", - "@janhq/core": "link:./core", - "@npmcli/arborist": "^7.3.1", + "@janhq/core": "link:../core", "dotenv": "^16.3.1", "fastify": "^5.2.0", - "fetch-retry": "^5.0.6", - "node-fetch": "2", - "request": "^2.88.2", - "request-progress": "^3.0.0", "tcp-port-used": "^1.0.2" }, "devDependencies": { @@ -42,7 +32,12 @@ "@typescript-eslint/eslint-plugin": "^6.7.3", "@typescript-eslint/parser": "^6.7.3", "eslint-plugin-react": "^7.34.0", + "rolldown": "1.0.0-beta.1", "run-script-os": "^1.1.6", "typescript": "^5.3.3" - } + }, + "bundleDependencies": [ + "@fastify/swagger-ui" + ], + "packageManager": "yarn@4.5.3" } diff --git a/server/rolldown.config.mjs b/server/rolldown.config.mjs new file mode 100644 index 000000000..c74655577 --- /dev/null +++ b/server/rolldown.config.mjs @@ -0,0 +1,18 @@ +import { defineConfig } from 'rolldown' + +export default defineConfig([ + { + input: 'index.ts', + output: { + format: 'cjs', + file: 'dist/index.js', + sourcemap: true, + inlineDynamicImports: true, + }, + resolve: { + extensions: ['.js', '.ts'], + }, + external: ['@fastify/swagger-ui'], + platform: 'node', + }, +]) diff --git a/server/tsconfig.json b/server/tsconfig.json index d70798403..98ea8f886 100644 --- a/server/tsconfig.json +++ b/server/tsconfig.json @@ -4,8 +4,8 @@ "module": "commonjs", "noImplicitAny": true, "sourceMap": true, - "strict": true, - "outDir": "./build", + "strict": false, + "outDir": "./dist", "rootDir": "./", "noEmitOnError": true, "esModuleInterop": true, diff --git a/turbo.json b/turbo.json deleted file mode 100644 index bfb6b0893..000000000 --- a/turbo.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "$schema": "https://turbo.build/schema.json", - "pipeline": { - "build": { - "outputs": [".next/**", "!.next/cache/**", "dist/**"] - }, - "dev": { - "cache": false - }, - "@janhq/web#dev": { - "cache": false, - "persistent": true, - "dependsOn": ["@janhq/core#build", "@janhq/joi#build"] - }, - "@janhq/server#build": { - "outputs": ["dist/**"], - "dependsOn": ["@janhq/core#build"] - }, - "jan#dev": { - "cache": false, - "persistent": true, - "dependsOn": ["@janhq/core#build", "@janhq/server#build"] - }, - "@janhq/core#build": { - "outputs": ["dist/**"] - }, - "@janhq/web#build": { - "outputs": ["out/**"], - "dependsOn": ["@janhq/core#build", "@janhq/joi#build"] - }, - "jan#build": { - "outputs": ["dist/**"], - "dependsOn": [ - "@janhq/core#build", - "@janhq/server#build", - "@janhq/web#build" - ] - }, - "jan#build:test": { - "outputs": ["dist/**"], - "cache": false, - "dependsOn": [ - "@janhq/core#build", - "@janhq/server#build", - "@janhq/web#build" - ] - }, - "type-check": {} - } -} diff --git a/web/containers/CopyInstruction/index.test.tsx b/web/containers/CopyInstruction/index.test.tsx index 2f00e4e37..957decec7 100644 --- a/web/containers/CopyInstruction/index.test.tsx +++ b/web/containers/CopyInstruction/index.test.tsx @@ -6,6 +6,7 @@ import CopyOverInstruction from './index' // Mock the `useAtom` hook from jotai jest.mock('jotai', () => ({ useAtom: jest.fn(), + atom: jest.fn(), })) describe('CopyOverInstruction', () => { diff --git a/web/containers/CopyInstruction/index.tsx b/web/containers/CopyInstruction/index.tsx index 227e0b240..4ce00507d 100644 --- a/web/containers/CopyInstruction/index.tsx +++ b/web/containers/CopyInstruction/index.tsx @@ -2,14 +2,8 @@ import { ChangeEvent, useCallback } from 'react' import { Switch } from '@janhq/joi' import { useAtom } from 'jotai' -import { atomWithStorage } from 'jotai/utils' -const COPY_OVER_INSTRUCTION_ENABLED = 'copy_over_instruction_enabled' - -export const copyOverInstructionEnabledAtom = atomWithStorage( - COPY_OVER_INSTRUCTION_ENABLED, - false -) +import { copyOverInstructionEnabledAtom } from '@/helpers/atoms/App.atom' const CopyOverInstruction: React.FC = () => { const [copyOverInstructionEnabled, setCopyOverInstructionEnabled] = useAtom( diff --git a/web/containers/Layout/BottomPanel/SystemMonitor/SystemMonitor.test.tsx b/web/containers/Layout/BottomPanel/SystemMonitor/SystemMonitor.test.tsx index dce55b595..2eba5edbb 100644 --- a/web/containers/Layout/BottomPanel/SystemMonitor/SystemMonitor.test.tsx +++ b/web/containers/Layout/BottomPanel/SystemMonitor/SystemMonitor.test.tsx @@ -1,3 +1,6 @@ +/** + * @jest-environment jsdom + */ import '@testing-library/jest-dom' import React from 'react' import { render, screen, waitFor } from '@testing-library/react' diff --git a/web/containers/Providers/EventListener.tsx b/web/containers/Providers/EventListener.tsx index bad1afda9..55c172beb 100644 --- a/web/containers/Providers/EventListener.tsx +++ b/web/containers/Providers/EventListener.tsx @@ -108,6 +108,12 @@ const EventListener = () => { ...model.parameters, } as Partial) .catch((e) => console.debug(e)) + + toaster({ + title: 'Download Completed', + description: `Download ${state.modelId} completed`, + type: 'success', + }) } state.downloadState = 'end' setDownloadState(state) diff --git a/web/containers/Providers/ModelHandler.tsx b/web/containers/Providers/ModelHandler.tsx index 8c565bab1..42376c081 100644 --- a/web/containers/Providers/ModelHandler.tsx +++ b/web/containers/Providers/ModelHandler.tsx @@ -56,7 +56,7 @@ export default function ModelHandler() { const activeModel = useAtomValue(activeModelAtom) const setActiveModel = useSetAtom(activeModelAtom) const setStateModel = useSetAtom(stateModelAtom) - const [subscribedGeneratingMessage, setSubscribedGeneratingMessage] = useAtom( + const subscribedGeneratingMessage = useAtomValue( subscribedGeneratingMessageAtom ) const activeThread = useAtomValue(activeThreadAtom) diff --git a/web/helpers/atoms/App.atom.ts b/web/helpers/atoms/App.atom.ts index bd1e4f7aa..7321fd9b4 100644 --- a/web/helpers/atoms/App.atom.ts +++ b/web/helpers/atoms/App.atom.ts @@ -23,3 +23,10 @@ export const showRightPanelAtom = atomWithStorage( export const showSystemMonitorPanelAtom = atom(false) export const appDownloadProgressAtom = atom(-1) export const updateVersionErrorAtom = atom(undefined) + +const COPY_OVER_INSTRUCTION_ENABLED = 'copy_over_instruction_enabled' + +export const copyOverInstructionEnabledAtom = atomWithStorage( + COPY_OVER_INSTRUCTION_ENABLED, + false +) diff --git a/web/helpers/atoms/Extension.atom.ts b/web/helpers/atoms/Extension.atom.ts index 28b8a6bc1..257d42996 100644 --- a/web/helpers/atoms/Extension.atom.ts +++ b/web/helpers/atoms/Extension.atom.ts @@ -43,5 +43,15 @@ export const removeInstallingExtensionAtom = atom( const INACTIVE_ENGINE_PROVIDER = 'inActiveEngineProvider' export const inActiveEngineProviderAtom = atomWithStorage( INACTIVE_ENGINE_PROVIDER, - [] + [], + undefined, + { getOnInit: true } +) + +const SHOW_SETTING_ACTIVE_LOCAL_ENGINE = 'showSettingActiveLocalEngine' +export const showSettingActiveLocalEngineAtom = atomWithStorage( + SHOW_SETTING_ACTIVE_LOCAL_ENGINE, + [], + undefined, + { getOnInit: true } ) diff --git a/web/helpers/atoms/Thread.atom.ts b/web/helpers/atoms/Thread.atom.ts index c94d287b5..6704f8e57 100644 --- a/web/helpers/atoms/Thread.atom.ts +++ b/web/helpers/atoms/Thread.atom.ts @@ -1,7 +1,7 @@ import { Thread, ThreadContent, ThreadState } from '@janhq/core' import { atom } from 'jotai' -import { atomWithStorage } from 'jotai/utils' +import { atomWithStorage, selectAtom } from 'jotai/utils' import { ModelParams } from '@/types/model' @@ -34,6 +34,22 @@ export const threadStatesAtom = atomWithStorage>( {} ) +/** + * Returns whether there is a thread waiting for response or not + */ +const isWaitingForResponseAtom = selectAtom(threadStatesAtom, (threads) => + Object.values(threads).some((t) => t.waitingForResponse) +) + +/** + * Combine 2 states to reduce rerender + * 1. isWaitingForResponse + * 2. isGenerating + */ +export const isBlockingSendAtom = atom( + (get) => get(isWaitingForResponseAtom) || get(isGeneratingResponseAtom) +) + /** * Stores all threads for the current user */ @@ -173,6 +189,29 @@ export const updateThreadWaitingForResponseAtom = atom( } ) +/** + * Reset the thread waiting for response state + */ +export const resetThreadWaitingForResponseAtom = atom(null, (get, set) => { + const currentState = { ...get(threadStatesAtom) } + Object.keys(currentState).forEach((threadId) => { + currentState[threadId] = { + ...currentState[threadId], + waitingForResponse: false, + error: undefined, + } + }) + set(threadStatesAtom, currentState) +}) + +/** + * Reset all generating states + **/ +export const resetGeneratingResponseAtom = atom(null, (get, set) => { + set(resetThreadWaitingForResponseAtom) + set(isGeneratingResponseAtom, false) +}) + /** * Update the thread last message */ diff --git a/web/hooks/useActiveModel.ts b/web/hooks/useActiveModel.ts index ed704dd61..67023d1d3 100644 --- a/web/hooks/useActiveModel.ts +++ b/web/hooks/useActiveModel.ts @@ -10,6 +10,10 @@ import { LAST_USED_MODEL_ID } from './useRecommendedModel' import { vulkanEnabledAtom } from '@/helpers/atoms/AppConfig.atom' import { activeAssistantAtom } from '@/helpers/atoms/Assistant.atom' import { downloadedModelsAtom } from '@/helpers/atoms/Model.atom' +import { + isGeneratingResponseAtom, + resetThreadWaitingForResponseAtom, +} from '@/helpers/atoms/Thread.atom' export const activeModelAtom = atom(undefined) export const loadModelErrorAtom = atom(undefined) diff --git a/web/hooks/useCreateNewThread.test.ts b/web/hooks/useCreateNewThread.test.ts index d98983830..0ef8ef195 100644 --- a/web/hooks/useCreateNewThread.test.ts +++ b/web/hooks/useCreateNewThread.test.ts @@ -67,7 +67,6 @@ describe('useCreateNewThread', () => { } as any) }) - expect(mockSetAtom).toHaveBeenCalledTimes(1) expect(extensionManager.get).toHaveBeenCalled() }) @@ -113,7 +112,6 @@ describe('useCreateNewThread', () => { } as any) }) - expect(mockSetAtom).toHaveBeenCalledTimes(1) // Check if all the necessary atoms were set expect(extensionManager.get).toHaveBeenCalled() }) @@ -158,7 +156,6 @@ describe('useCreateNewThread', () => { } as any) }) - expect(mockSetAtom).toHaveBeenCalledTimes(1) // Check if all the necessary atoms were set expect(extensionManager.get).toHaveBeenCalled() }) diff --git a/web/hooks/useCreateNewThread.ts b/web/hooks/useCreateNewThread.ts index 1094ec621..b57384344 100644 --- a/web/hooks/useCreateNewThread.ts +++ b/web/hooks/useCreateNewThread.ts @@ -14,19 +14,17 @@ import { atom, useAtom, useAtomValue, useSetAtom } from 'jotai' import { useDebouncedCallback } from 'use-debounce' -import { copyOverInstructionEnabledAtom } from '@/containers/CopyInstruction' import { fileUploadAtom } from '@/containers/Providers/Jotai' import { toaster } from '@/containers/Toast' import { isLocalEngine } from '@/utils/modelEngine' -import { useActiveModel } from './useActiveModel' - import useRecommendedModel from './useRecommendedModel' import useSetActiveThread from './useSetActiveThread' import { extensionManager } from '@/extension' +import { copyOverInstructionEnabledAtom } from '@/helpers/atoms/App.atom' import { experimentalFeatureEnabledAtom } from '@/helpers/atoms/AppConfig.atom' import { activeAssistantAtom } from '@/helpers/atoms/Assistant.atom' @@ -52,10 +50,8 @@ export const useCreateNewThread = () => { const [activeAssistant, setActiveAssistant] = useAtom(activeAssistantAtom) const experimentalEnabled = useAtomValue(experimentalFeatureEnabledAtom) - const setIsGeneratingResponse = useSetAtom(isGeneratingResponseAtom) const threads = useAtomValue(threadsAtom) - const { stopInference } = useActiveModel() const { recommendedModel } = useRecommendedModel() @@ -63,10 +59,6 @@ export const useCreateNewThread = () => { assistant: (ThreadAssistantInfo & { id: string; name: string }) | Assistant, model?: Model | undefined ) => { - // Stop generating if any - setIsGeneratingResponse(false) - stopInference() - const defaultModel = model || recommendedModel if (!model) { diff --git a/web/hooks/useDeleteThread.test.ts b/web/hooks/useDeleteThread.test.ts index e9e434164..4a1b4e5a2 100644 --- a/web/hooks/useDeleteThread.test.ts +++ b/web/hooks/useDeleteThread.test.ts @@ -1,3 +1,7 @@ +/** + * @jest-environment jsdom + */ + import { renderHook, act } from '@testing-library/react' import { useAtom, useAtomValue, useSetAtom } from 'jotai' import useDeleteThread from './useDeleteThread' diff --git a/web/hooks/useDeleteThread.ts b/web/hooks/useDeleteThread.ts index 1ea6c7579..29b509631 100644 --- a/web/hooks/useDeleteThread.ts +++ b/web/hooks/useDeleteThread.ts @@ -48,6 +48,7 @@ export default function useDeleteThread() { if (thread) { const updatedThread = { ...thread, + title: 'New Thread', metadata: { ...thread.metadata, title: 'New Thread', diff --git a/web/hooks/useDownloadState.ts b/web/hooks/useDownloadState.ts index 32a9d3255..632ca31a8 100644 --- a/web/hooks/useDownloadState.ts +++ b/web/hooks/useDownloadState.ts @@ -54,11 +54,6 @@ export const setDownloadStateAtom = atom( (e) => e.id === state.modelId ) if (model) set(downloadedModelsAtom, (prev) => [...prev, model]) - toaster({ - title: 'Download Completed', - description: `Download ${state.modelId} completed`, - type: 'success', - }) } } else if (state.downloadState === 'error') { // download error diff --git a/web/hooks/useEngineManagement.ts b/web/hooks/useEngineManagement.ts new file mode 100644 index 000000000..1272da81a --- /dev/null +++ b/web/hooks/useEngineManagement.ts @@ -0,0 +1,328 @@ +import { useMemo } from 'react' + +import { + ExtensionTypeEnum, + EngineManagementExtension, + InferenceEngine, + EngineReleased, +} from '@janhq/core' +import { useAtom } from 'jotai' +import { atomWithStorage } from 'jotai/utils' +import useSWR from 'swr' + +import { extensionManager } from '@/extension/ExtensionManager' + +export const releasedEnginesCacheAtom = atomWithStorage<{ + data: EngineReleased[] + timestamp: number +} | null>('releasedEnginesCache', null, undefined, { getOnInit: true }) + +export const releasedEnginesLatestCacheAtom = atomWithStorage<{ + data: EngineReleased[] + timestamp: number +} | null>('releasedEnginesLatestCache', null, undefined, { getOnInit: true }) + +// fetcher function +async function fetchExtensionData( + extension: EngineManagementExtension | null, + method: (extension: EngineManagementExtension) => Promise +): Promise { + if (!extension) { + throw new Error('Extension not found') + } + return method(extension) +} + +/** + * @returns A Promise that resolves to an object of list engines. + */ +export function useGetEngines() { + const extension = useMemo( + () => + extensionManager.get( + ExtensionTypeEnum.Engine + ) ?? null, + [] + ) + + const { + data: engines, + error, + mutate, + } = useSWR( + extension ? 'engines' : null, + () => fetchExtensionData(extension, (ext) => ext.getEngines()), + { + revalidateOnFocus: false, + revalidateOnReconnect: true, + } + ) + + return { engines, error, mutate } +} + +/** + * @param name - Inference engine name. + * @returns A Promise that resolves to an array of installed engine. + */ +export function useGetInstalledEngines(name: InferenceEngine) { + const extension = useMemo( + () => + extensionManager.get( + ExtensionTypeEnum.Engine + ) ?? null, + [] + ) + + const { + data: installedEngines, + error, + mutate, + } = useSWR( + extension ? 'installedEngines' : null, + () => fetchExtensionData(extension, (ext) => ext.getInstalledEngines(name)), + { + revalidateOnFocus: false, + revalidateOnReconnect: true, + } + ) + + return { installedEngines, error, mutate } +} + +/** + * @param name - Inference engine name. + * @param version - Version of the engine. + * @param platform - Optional to sort by operating system. macOS, linux, windows. + * @returns A Promise that resolves to an array of latest released engine by version. + */ +export function useGetReleasedEnginesByVersion( + engine: InferenceEngine, + version: string | undefined, + platform: string +) { + const extension = useMemo( + () => + extensionManager.get( + ExtensionTypeEnum.Engine + ) ?? null, + [] + ) + + const [cache, setCache] = useAtom(releasedEnginesCacheAtom) + + const shouldFetch = Boolean(extension && version) + + const fetcher = async () => { + const now = Date.now() + const fifteenMinutes = 15 * 60 * 1000 + if (cache && cache.timestamp + fifteenMinutes > now) { + return cache.data // Use cached data + } + + const newData = await fetchExtensionData(extension, (ext) => + ext.getReleasedEnginesByVersion(engine, version!, platform) + ) + + setCache({ data: newData, timestamp: now }) + return newData + } + + const { data, error, mutate } = useSWR( + shouldFetch + ? `releasedEnginesByVersion-${engine}-${version}-${platform}` + : null, + fetcher, + { + revalidateOnFocus: false, + revalidateOnReconnect: true, + } + ) + + return { + releasedEnginesByVersion: data, + error, + mutate, + } +} + +/** + * @param name - Inference engine name. + * @param platform - Optional to sort by operating system. macOS, linux, windows. + * @returns A Promise that resolves to an array of latest released engine. + */ + +export function useGetLatestReleasedEngine( + engine: InferenceEngine, + platform: string +) { + const extension = useMemo( + () => + extensionManager.get( + ExtensionTypeEnum.Engine + ) ?? null, + [] + ) + + const [cache, setCache] = useAtom(releasedEnginesLatestCacheAtom) + + const fetcher = async () => { + const now = Date.now() + const fifteenMinutes = 15 * 60 * 1000 + + if (cache && cache.timestamp + fifteenMinutes > now) { + return cache.data // Use cached data + } + + const newData = await fetchExtensionData(extension, (ext) => + ext.getLatestReleasedEngine(engine, platform) + ) + + setCache({ data: newData, timestamp: now }) + return newData + } + + const { data, error, mutate } = useSWR( + extension ? 'latestReleasedEngine' : null, + fetcher, + { + revalidateOnFocus: false, + revalidateOnReconnect: true, + } + ) + + return { + latestReleasedEngine: data, + error, + mutate, + } +} + +/** + * @param name - Inference engine name. + * @returns A Promise that resolves to an object of default engine. + */ +export function useGetDefaultEngineVariant(name: InferenceEngine) { + const extension = useMemo( + () => + extensionManager.get(ExtensionTypeEnum.Engine), + [] + ) + + const { + data: defaultEngineVariant, + error, + mutate, + } = useSWR( + extension ? 'defaultEngineVariant' : null, + () => + fetchExtensionData(extension ?? null, (ext) => + ext.getDefaultEngineVariant(name) + ), + { + revalidateOnFocus: false, + revalidateOnReconnect: true, + } + ) + + return { defaultEngineVariant, error, mutate } +} + +const getExtension = () => + extensionManager.get(ExtensionTypeEnum.Engine) ?? + null + +/** + * @body variant - string + * @body version - string + * @returns A Promise that resolves to set default engine. + */ +export const setDefaultEngineVariant = async ( + name: InferenceEngine, + engineConfig: { variant: string; version: string } +) => { + const extension = getExtension() + + if (!extension) { + throw new Error('Extension is not available') + } + + try { + // Call the extension's method + const response = await extension.setDefaultEngineVariant(name, engineConfig) + return response + } catch (error) { + console.error('Failed to set default engine variant:', error) + throw error + } +} + +/** + * @body variant - string + * @body version - string + * @returns A Promise that resolves to set default engine. + */ +export const updateEngine = async (name: InferenceEngine) => { + const extension = getExtension() + + if (!extension) { + throw new Error('Extension is not available') + } + + try { + // Call the extension's method + const response = await extension.updateEngine(name) + return response + } catch (error) { + console.error('Failed to set default engine variant:', error) + throw error + } +} + +/** + * @param name - Inference engine name. + * @returns A Promise that resolves to intall of engine. + */ +export const installEngine = async ( + name: InferenceEngine, + engineConfig: { variant: string; version?: string } +) => { + const extension = getExtension() + + if (!extension) { + throw new Error('Extension is not available') + } + + try { + // Call the extension's method + const response = await extension.installEngine(name, engineConfig) + return response + } catch (error) { + console.error('Failed to install engine variant:', error) + throw error + } +} + +/** + * @param name - Inference engine name. + * @returns A Promise that resolves to unintall of engine. + */ +export const uninstallEngine = async ( + name: InferenceEngine, + engineConfig: { variant: string; version: string } +) => { + const extension = getExtension() + + if (!extension) { + throw new Error('Extension is not available') + } + + try { + // Call the extension's method + const response = await extension.uninstallEngine(name, engineConfig) + return response + } catch (error) { + console.error('Failed to install engine variant:', error) + throw error + } +} diff --git a/web/jest.config.js b/web/jest.config.js index 27e8d0bda..96bfb2356 100644 --- a/web/jest.config.js +++ b/web/jest.config.js @@ -18,6 +18,9 @@ const config = { 'rehype-katex': '/mock/empty-mock.tsx', 'rehype-raw': '/mock/empty-mock.tsx', 'remark-math': '/mock/empty-mock.tsx', + '^react$': '/node_modules/react', + '^react/jsx-runtime$': '/node_modules/react/jsx-runtime', + '^react-dom$': '/node_modules/react-dom', }, // Add more setup options before each test is run // setupFilesAfterEnv: ['/jest.setup.ts'], diff --git a/web/package.json b/web/package.json index b0411e779..598c748d9 100644 --- a/web/package.json +++ b/web/package.json @@ -14,8 +14,9 @@ "test": "jest" }, "dependencies": { - "@janhq/core": "link:./core", - "@janhq/joi": "link:./joi", + "@janhq/core": "link:../core", + "@janhq/joi": "link:../joi", + "@radix-ui/react-icons": "^1.3.2", "@tanstack/react-virtual": "^3.10.9", "@uppy/core": "^4.3.0", "@uppy/react": "^4.0.4", @@ -51,6 +52,7 @@ "slate-dom": "0.111.0", "slate-history": "0.110.3", "slate-react": "0.110.3", + "swr": "^2.2.5", "tailwind-merge": "^2.0.0", "tailwindcss": "3.3.5", "ulidx": "^2.3.0", @@ -59,7 +61,10 @@ }, "devDependencies": { "@next/eslint-plugin-next": "^14.0.1", + "@testing-library/dom": "^10.4.0", + "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.0.1", + "@testing-library/user-event": "^14.5.2", "@types/jest": "^29.5.12", "@types/lodash": "^4.14.200", "@types/node": "20.8.10", @@ -89,5 +94,6 @@ }, "resolutions": { "highlight.js": "11.10.0" - } + }, + "packageManager": "yarn@4.5.3" } diff --git a/web/screens/Settings/CoreExtensions/index.tsx b/web/screens/Settings/CoreExtensions/index.tsx index 65bc74ba8..57dd49eda 100644 --- a/web/screens/Settings/CoreExtensions/index.tsx +++ b/web/screens/Settings/CoreExtensions/index.tsx @@ -1,34 +1,23 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -import React, { useState, useEffect, useRef, useCallback } from 'react' +import React, { useState, useEffect, useRef } from 'react' -import { InferenceEngine } from '@janhq/core' +import { Button, ScrollArea, Badge, Input } from '@janhq/joi' -import { Button, ScrollArea, Badge, Switch, Input } from '@janhq/joi' -import { useAtom } from 'jotai' import { SearchIcon } from 'lucide-react' import { Marked, Renderer } from 'marked' import Loader from '@/containers/Loader' -import SetupRemoteModel from '@/containers/SetupRemoteModel' - import { formatExtensionsName } from '@/utils/converter' import { extensionManager } from '@/extension' import Extension from '@/extension/Extension' -import { inActiveEngineProviderAtom } from '@/helpers/atoms/Extension.atom' - -type EngineExtension = { - provider: InferenceEngine -} & Extension const ExtensionCatalog = () => { const [coreActiveExtensions, setCoreActiveExtensions] = useState( [] ) - const [engineActiveExtensions, setEngineActiveExtensions] = useState< - EngineExtension[] - >([]) + const [searchText, setSearchText] = useState('') const [showLoading, setShowLoading] = useState(false) const fileInputRef = useRef(null) @@ -67,7 +56,6 @@ const ExtensionCatalog = () => { } setCoreActiveExtensions(extensionsMenu) - setEngineActiveExtensions(engineMenu as any) } getAllSettings() }, []) @@ -113,23 +101,6 @@ const ExtensionCatalog = () => { } } - const [inActiveEngineProvider, setInActiveEngineProvider] = useAtom( - inActiveEngineProviderAtom - ) - - const onSwitchChange = useCallback( - (name: string) => { - if (inActiveEngineProvider.includes(name)) { - setInActiveEngineProvider( - [...inActiveEngineProvider].filter((x) => x !== name) - ) - } else { - setInActiveEngineProvider([...inActiveEngineProvider, name]) - } - }, - [inActiveEngineProvider, setInActiveEngineProvider] - ) - return ( <> @@ -158,61 +129,6 @@ const ExtensionCatalog = () => {
- {engineActiveExtensions.length !== 0 && ( -
-
- Model Providers -
-
- )} - {engineActiveExtensions - .filter((x) => x.name.includes(searchText.toLowerCase().trim())) - .sort((a, b) => a.provider.localeCompare(b.provider)) - .map((item, i) => { - return ( -
-
-
-
-
- {item.productName?.replace('Inference Engine', '') ?? - formatExtensionsName(item.name)} -
- - v{item.version} - -

{item.provider}

-
-
- {!inActiveEngineProvider.includes(item.provider) && ( - - )} - onSwitchChange(item.provider)} - /> -
-
- { -
- } -
-
- ) - })} - {coreActiveExtensions.length > 0 && (
diff --git a/web/screens/Settings/Engines/DeleteEngineVariant.tsx b/web/screens/Settings/Engines/DeleteEngineVariant.tsx new file mode 100644 index 000000000..12e30590c --- /dev/null +++ b/web/screens/Settings/Engines/DeleteEngineVariant.tsx @@ -0,0 +1,77 @@ +import { memo, useState } from 'react' + +import { EngineReleased, InferenceEngine } from '@janhq/core' +import { Button, Modal, ModalClose } from '@janhq/joi' + +import { Trash2Icon } from 'lucide-react' + +import { + uninstallEngine, + useGetDefaultEngineVariant, + useGetInstalledEngines, +} from '@/hooks/useEngineManagement' + +const DeleteEngineVariant = ({ + variant, + engine, +}: { + variant: EngineReleased + engine: InferenceEngine +}) => { + const [open, setOpen] = useState(false) + + const { mutate: mutateInstalledEngines } = useGetInstalledEngines(engine) + const { defaultEngineVariant, mutate: mutateDefaultEngineVariant } = + useGetDefaultEngineVariant(engine) + + return ( + Delete {variant.name}} + open={open} + onOpenChange={() => setOpen(!open)} + trigger={ + + } + content={ +
+

+ Are you sure you want to delete this variant? +

+
+ { + setOpen(!open) + e.stopPropagation() + }} + > + + + + + +
+
+ } + /> + ) +} + +export default memo(DeleteEngineVariant) diff --git a/web/screens/Settings/Engines/Settings.tsx b/web/screens/Settings/Engines/Settings.tsx new file mode 100644 index 000000000..6332ebfb8 --- /dev/null +++ b/web/screens/Settings/Engines/Settings.tsx @@ -0,0 +1,334 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import React, { useCallback, useEffect, useMemo, useState } from 'react' + +import { + DownloadEvent, + EngineEvent, + events, + InferenceEngine, +} from '@janhq/core' +import { Button, ScrollArea, Badge, Select, Progress } from '@janhq/joi' +import { Trash2Icon } from 'lucide-react' +import { twMerge } from 'tailwind-merge' + +import { + useGetDefaultEngineVariant, + useGetInstalledEngines, + useGetLatestReleasedEngine, + setDefaultEngineVariant, + installEngine, + updateEngine, + uninstallEngine, + useGetReleasedEnginesByVersion, +} from '@/hooks/useEngineManagement' + +import { formatDownloadPercentage } from '@/utils/converter' + +import DeleteEngineVariant from './DeleteEngineVariant' +const os = () => { + switch (PLATFORM) { + case 'win32': + return 'windows' + case 'linux': + return 'linux' + + default: + return 'mac' + } +} + +const EngineSettings = ({ engine }: { engine: InferenceEngine }) => { + const { installedEngines, mutate: mutateInstalledEngines } = + useGetInstalledEngines(engine) + const { defaultEngineVariant, mutate: mutateDefaultEngineVariant } = + useGetDefaultEngineVariant(engine) + const { latestReleasedEngine } = useGetLatestReleasedEngine(engine, os()) + const { releasedEnginesByVersion } = useGetReleasedEnginesByVersion( + engine, + defaultEngineVariant?.version as string, + os() + ) + const [installingEngines, setInstallingEngines] = useState< + Map + >(new Map()) + + const isEngineUpdated = + latestReleasedEngine && + latestReleasedEngine.every((item) => + item.name.includes( + defaultEngineVariant?.version.replace(/^v/, '') as string + ) + ) + + const availableVariants = useMemo( + () => + latestReleasedEngine?.map((e) => + e.name.replace( + `${defaultEngineVariant?.version.replace(/^v/, '') as string}-`, + '' + ) + ), + [latestReleasedEngine, defaultEngineVariant] + ) + const options = + installedEngines && + installedEngines + .filter((x: any) => x.version === defaultEngineVariant?.version) + .map((x: any) => ({ + name: x.name, + value: x.name, + })) + + const installedEngineByVersion = installedEngines?.filter( + (x: any) => x.version === defaultEngineVariant?.version + ) + + const [selectedVariants, setSelectedVariants] = useState( + defaultEngineVariant?.variant + ) + + const selectedVariant = useMemo( + () => + options?.map((e) => e.value).includes(selectedVariants) + ? selectedVariants + : undefined, + [selectedVariants, options] + ) + + useEffect(() => { + if (defaultEngineVariant?.variant) { + setSelectedVariants(defaultEngineVariant.variant || '') + } + }, [defaultEngineVariant]) + + const handleEngineUpdate = useCallback( + (event: { id: string; type: DownloadEvent; percent: number }) => { + mutateInstalledEngines() + mutateDefaultEngineVariant() + // Backward compatible support - cortex.cpp returns full variant file name + const variant: string | undefined = event.id.includes('.tar.gz') + ? availableVariants?.find((e) => event.id.includes(`${e}.tar.gz`)) + : availableVariants?.find((e) => event.id.includes(e)) + if (!variant) return + setInstallingEngines((prev) => { + prev.set(variant, event.percent) + return prev + }) + if ( + event.type === DownloadEvent.onFileDownloadError || + event.type === DownloadEvent.onFileDownloadStopped || + event.type === DownloadEvent.onFileDownloadSuccess + ) { + setInstallingEngines((prev) => { + prev.delete(variant) + return prev + }) + } + }, + [ + mutateDefaultEngineVariant, + mutateInstalledEngines, + setInstallingEngines, + availableVariants, + ] + ) + + useEffect(() => { + events.on(EngineEvent.OnEngineUpdate, handleEngineUpdate) + return () => { + events.off(EngineEvent.OnEngineUpdate, handleEngineUpdate) + } + }, [handleEngineUpdate]) + + const handleChangeVariant = (e: string) => { + setSelectedVariants(e) + setDefaultEngineVariant(engine, { + variant: e, + version: String(defaultEngineVariant?.version), + }) + } + return ( + +
+
+
+
+
+
+
Engine Version
+
+
+ + {defaultEngineVariant?.version} + +
+
+
+
+
+
+ +
+
+
+
+
+
+
Check Updates
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+
+ {engine} Backend +
+
+

+ Choose the default variant that best suited for your + hardware. See more information here. +

+
+
+
+
+ } + placeholder="Search" + value={searchText} + onChange={(e) => setSearchText(e.target.value)} + clearable={searchText.length > 0} + onClear={() => setSearchText('')} + /> +
+ {/*
+ + +
*/} +
+ +
+
+
+ Local Engine +
+ {engines && + Object.entries(engines) + // eslint-disable-next-line @typescript-eslint/no-unused-vars + .filter(([_, value]) => !(value as { type?: string }).type) + .map(([key]) => { + return + })} +
+
+ + {engineActiveExtensions.length !== 0 && ( +
+
+
+ Remote Engine +
+ {engineActiveExtensions + .filter((x) => x.name.includes(searchText.toLowerCase().trim())) + .sort((a, b) => a.provider.localeCompare(b.provider)) + .map((item, i) => { + return ( +
+
+
+
+
+ {item.productName?.replace( + 'Inference Engine', + '' + ) ?? formatExtensionsName(item.name)} +
+ + v{item.version} + +

{item.provider}

+
+
+ onSwitchChange(item.provider)} + /> + {!inActiveEngineProvider.includes(item.provider) && ( + + )} +
+
+ { +
+ } +
+
+ ) + })} +
+
+ )} + + ) +} + +export default Engines diff --git a/web/screens/Settings/SettingDetail/index.tsx b/web/screens/Settings/SettingDetail/index.tsx index 993303955..f183aaff5 100644 --- a/web/screens/Settings/SettingDetail/index.tsx +++ b/web/screens/Settings/SettingDetail/index.tsx @@ -1,8 +1,11 @@ +import { InferenceEngine } from '@janhq/core' import { useAtomValue } from 'jotai' import Advanced from '@/screens/Settings/Advanced' import AppearanceOptions from '@/screens/Settings/Appearance' import ExtensionCatalog from '@/screens/Settings/CoreExtensions' +import Engines from '@/screens/Settings/Engines' +import EngineSettings from '@/screens/Settings/Engines/Settings' import ExtensionSetting from '@/screens/Settings/ExtensionSetting' import Hotkeys from '@/screens/Settings/Hotkeys' import MyModels from '@/screens/Settings/MyModels' @@ -14,6 +17,9 @@ const SettingDetail = () => { const selectedSetting = useAtomValue(selectedSettingAtom) switch (selectedSetting) { + case 'Engines': + return + case 'Extensions': return @@ -32,6 +38,9 @@ const SettingDetail = () => { case 'My Models': return + case InferenceEngine.cortex_llamacpp: + return + default: return } diff --git a/web/screens/Settings/SettingLeftPanel/SettingItem/index.tsx b/web/screens/Settings/SettingLeftPanel/SettingItem/index.tsx index b8c1994c5..a5da18674 100644 --- a/web/screens/Settings/SettingLeftPanel/SettingItem/index.tsx +++ b/web/screens/Settings/SettingLeftPanel/SettingItem/index.tsx @@ -29,7 +29,7 @@ const SettingItem = ({ name, setting }: Props) => { > diff --git a/web/screens/Settings/SettingLeftPanel/index.tsx b/web/screens/Settings/SettingLeftPanel/index.tsx index 87ddde4d4..a8b2a148f 100644 --- a/web/screens/Settings/SettingLeftPanel/index.tsx +++ b/web/screens/Settings/SettingLeftPanel/index.tsx @@ -1,18 +1,28 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ import { memo, useEffect, useState } from 'react' import { useAtomValue } from 'jotai' import LeftPanelContainer from '@/containers/LeftPanelContainer' +import { useGetEngines } from '@/hooks/useEngineManagement' + import SettingItem from './SettingItem' import { extensionManager } from '@/extension' -import { inActiveEngineProviderAtom } from '@/helpers/atoms/Extension.atom' +import { + inActiveEngineProviderAtom, + showSettingActiveLocalEngineAtom, +} from '@/helpers/atoms/Extension.atom' import { janSettingScreenAtom } from '@/helpers/atoms/Setting.atom' const SettingLeftPanel = () => { + const { engines } = useGetEngines() const settingScreens = useAtomValue(janSettingScreenAtom) const inActiveEngineProvider = useAtomValue(inActiveEngineProviderAtom) + const showSettingActiveLocalEngine = useAtomValue( + showSettingActiveLocalEngineAtom + ) const [extensionHasSettings, setExtensionHasSettings] = useState< { name?: string; setting: string }[] @@ -84,12 +94,36 @@ const SettingLeftPanel = () => { /> ))} + {engines && + Object.entries(engines) + .filter(([key]) => !showSettingActiveLocalEngine.includes(key)) + .filter(([_, value]) => !(value as { type?: string }).type).length > + 0 && ( + <> +
+ +
+ + {engines && + Object.entries(engines) + .filter(([_, value]) => !(value as { type?: string }).type) + .filter( + ([key]) => !showSettingActiveLocalEngine.includes(key) + ) + .map(([key]) => { + return + })} + + )} + {engineHasSettings.filter( (x) => !inActiveEngineProvider.includes(x.provider) ).length > 0 && (
)} diff --git a/web/screens/Settings/index.tsx b/web/screens/Settings/index.tsx index 5003babcd..66e11d07e 100644 --- a/web/screens/Settings/index.tsx +++ b/web/screens/Settings/index.tsx @@ -17,6 +17,7 @@ export const SettingScreenList = [ 'Keyboard Shortcuts', 'Privacy', 'Advanced Settings', + 'Engines', 'Extensions', ] as const diff --git a/web/screens/Thread/ThreadCenterPanel/AssistantSetting/index.tsx b/web/screens/Thread/ThreadCenterPanel/AssistantSetting/index.tsx index 19ec3328a..d04f9b233 100644 --- a/web/screens/Thread/ThreadCenterPanel/AssistantSetting/index.tsx +++ b/web/screens/Thread/ThreadCenterPanel/AssistantSetting/index.tsx @@ -12,6 +12,7 @@ import { activeAssistantAtom } from '@/helpers/atoms/Assistant.atom' import { activeThreadAtom, engineParamsUpdateAtom, + resetGeneratingResponseAtom, } from '@/helpers/atoms/Thread.atom' type Props = { @@ -24,6 +25,7 @@ const AssistantSetting: React.FC = ({ componentData }) => { const { updateThreadMetadata } = useCreateNewThread() const { stopModel } = useActiveModel() const setEngineParamsUpdate = useSetAtom(engineParamsUpdateAtom) + const resetGenerating = useSetAtom(resetGeneratingResponseAtom) const onValueChanged = useCallback( (key: string, value: string | number | boolean | string[]) => { @@ -32,6 +34,7 @@ const AssistantSetting: React.FC = ({ componentData }) => { componentData.find((x) => x.key === key)?.requireModelReload ?? false if (shouldReloadModel) { setEngineParamsUpdate(true) + resetGenerating() stopModel() } diff --git a/web/screens/Thread/ThreadCenterPanel/ChatBody/index.tsx b/web/screens/Thread/ThreadCenterPanel/ChatBody/index.tsx index f384611c5..c47d19d67 100644 --- a/web/screens/Thread/ThreadCenterPanel/ChatBody/index.tsx +++ b/web/screens/Thread/ThreadCenterPanel/ChatBody/index.tsx @@ -16,8 +16,7 @@ import EmptyThread from './EmptyThread' import { getCurrentChatMessagesAtom } from '@/helpers/atoms/ChatMessage.atom' import { activeThreadAtom, - isGeneratingResponseAtom, - threadStatesAtom, + isBlockingSendAtom, } from '@/helpers/atoms/Thread.atom' const ChatConfigurator = memo(() => { @@ -65,12 +64,7 @@ const ChatBody = memo( const prevScrollTop = useRef(0) const isUserManuallyScrollingUp = useRef(false) const currentThread = useAtomValue(activeThreadAtom) - const threadStates = useAtomValue(threadStatesAtom) - const isGeneratingResponse = useAtomValue(isGeneratingResponseAtom) - - const isStreamingResponse = Object.values(threadStates).some( - (threadState) => threadState.waitingForResponse - ) + const isBlockingSend = useAtomValue(isBlockingSendAtom) const count = useMemo( () => (messages?.length ?? 0) + (loadModelError ? 1 : 0), @@ -85,34 +79,13 @@ const ChatBody = memo( overscan: 5, }) - useEffect(() => { - if (parentRef.current) { - parentRef.current.scrollTo({ top: parentRef.current.scrollHeight }) - virtualizer.scrollToIndex(count - 1) - } - }, [count, virtualizer]) - - useEffect(() => { - if (parentRef.current && isGeneratingResponse) { - parentRef.current.scrollTo({ top: parentRef.current.scrollHeight }) - virtualizer.scrollToIndex(count - 1) - } - }, [count, virtualizer, isGeneratingResponse]) - - useEffect(() => { - if (parentRef.current && isGeneratingResponse) { - parentRef.current.scrollTo({ top: parentRef.current.scrollHeight }) - virtualizer.scrollToIndex(count - 1) - } - }, [count, virtualizer, isGeneratingResponse, currentThread?.id]) - useEffect(() => { isUserManuallyScrollingUp.current = false - if (parentRef.current) { + if (parentRef.current && isBlockingSend) { parentRef.current.scrollTo({ top: parentRef.current.scrollHeight }) virtualizer.scrollToIndex(count - 1) } - }, [count, currentThread?.id, virtualizer]) + }, [count, virtualizer, isBlockingSend, currentThread?.id]) const items = virtualizer.getVirtualItems() @@ -121,7 +94,7 @@ const ChatBody = memo( _, instance ) => { - if (isUserManuallyScrollingUp.current === true && isStreamingResponse) + if (isUserManuallyScrollingUp.current === true && isBlockingSend) return false return ( // item.start < (instance.scrollOffset ?? 0) && @@ -133,7 +106,7 @@ const ChatBody = memo( (event: React.UIEvent) => { const currentScrollTop = event.currentTarget.scrollTop - if (prevScrollTop.current > currentScrollTop && isStreamingResponse) { + if (prevScrollTop.current > currentScrollTop && isBlockingSend) { isUserManuallyScrollingUp.current = true } else { const currentScrollTop = event.currentTarget.scrollTop @@ -151,7 +124,7 @@ const ChatBody = memo( } prevScrollTop.current = currentScrollTop }, - [isStreamingResponse] + [isBlockingSend] ) return ( diff --git a/web/screens/Thread/ThreadCenterPanel/ChatInput/index.tsx b/web/screens/Thread/ThreadCenterPanel/ChatInput/index.tsx index 0ba50880b..990d24c7a 100644 --- a/web/screens/Thread/ThreadCenterPanel/ChatInput/index.tsx +++ b/web/screens/Thread/ThreadCenterPanel/ChatInput/index.tsx @@ -35,22 +35,19 @@ import RichTextEditor from './RichTextEditor' import { showRightPanelAtom } from '@/helpers/atoms/App.atom' import { experimentalFeatureEnabledAtom } from '@/helpers/atoms/AppConfig.atom' import { activeAssistantAtom } from '@/helpers/atoms/Assistant.atom' -import { getCurrentChatMessagesAtom } from '@/helpers/atoms/ChatMessage.atom' import { selectedModelAtom } from '@/helpers/atoms/Model.atom' import { spellCheckAtom } from '@/helpers/atoms/Setting.atom' import { activeSettingInputBoxAtom, activeThreadAtom, getActiveThreadIdAtom, - isGeneratingResponseAtom, - threadStatesAtom, + isBlockingSendAtom, } from '@/helpers/atoms/Thread.atom' import { activeTabThreadRightPanelAtom } from '@/helpers/atoms/ThreadRightPanel.atom' const ChatInput = () => { const activeThread = useAtomValue(activeThreadAtom) const { stateModel } = useActiveModel() - const messages = useAtomValue(getCurrentChatMessagesAtom) const spellCheck = useAtomValue(spellCheckAtom) const [currentPrompt, setCurrentPrompt] = useAtom(currentPromptAtom) @@ -67,8 +64,7 @@ const ChatInput = () => { const fileInputRef = useRef(null) const imageInputRef = useRef(null) const experimentalFeature = useAtomValue(experimentalFeatureEnabledAtom) - const isGeneratingResponse = useAtomValue(isGeneratingResponseAtom) - const threadStates = useAtomValue(threadStatesAtom) + const isBlockingSend = useAtomValue(isBlockingSendAtom) const activeAssistant = useAtomValue(activeAssistantAtom) const { stopInference } = useActiveModel() @@ -77,10 +73,6 @@ const ChatInput = () => { activeTabThreadRightPanelAtom ) - const isStreamingResponse = Object.values(threadStates).some( - (threadState) => threadState.waitingForResponse - ) - const refAttachmentMenus = useClickOutside(() => setShowAttacmentMenus(false)) const [showRightPanel, setShowRightPanel] = useAtom(showRightPanelAtom) @@ -302,9 +294,7 @@ const ChatInput = () => {
)} - {messages[messages.length - 1]?.status !== MessageStatus.Pending && - !isGeneratingResponse && - !isStreamingResponse ? ( + {!isBlockingSend ? ( <> {currentPrompt.length !== 0 && (