From 00451c31ba40cf4afa8d61a6676d42665d07f8fa Mon Sep 17 00:00:00 2001 From: Alexander Sklar Date: Tue, 10 Feb 2026 15:59:01 -0800 Subject: [PATCH 1/4] feat: Create separate cli and schemas packages --- CLI.md | 2 +- README.md | 14 +++- jest.config.js | 9 +- package.json | 82 +++---------------- packages/cli/package.json | 48 +++++++++++ {src => packages/cli/src}/cli.ts | 5 -- {src => packages/cli/src}/cli/cli.ts | 0 {src => packages/cli/src}/cli/init.ts | 4 +- {src => packages/cli/src}/cli/pack.ts | 6 +- {src => packages/cli/src}/cli/unpack.ts | 0 {src => packages/cli/src}/index.ts | 5 -- packages/cli/src/node.ts | 4 + {src => packages/cli/src}/node/files.ts | 0 {src => packages/cli/src}/node/sign.ts | 2 +- {src => packages/cli/src}/node/validate.ts | 8 +- {src => packages/cli/src}/shared/log.ts | 0 packages/cli/tsconfig.json | 18 ++++ packages/schemas/package.json | 59 +++++++++++++ .../schemas}/mcpb-manifest-latest.schema.json | 0 .../schemas}/mcpb-manifest-v0.1.schema.json | 0 .../schemas}/mcpb-manifest-v0.2.schema.json | 0 .../schemas}/mcpb-manifest-v0.3.schema.json | 0 .../schemas}/mcpb-manifest-v0.4.schema.json | 0 .../schemas/scripts}/build-mcpb-schema.js | 0 {src => packages/schemas/src}/browser.ts | 1 + packages/schemas/src/index.ts | 7 ++ {src => packages/schemas/src}/schemas/0.1.ts | 0 {src => packages/schemas/src}/schemas/0.2.ts | 0 {src => packages/schemas/src}/schemas/0.3.ts | 0 {src => packages/schemas/src}/schemas/0.4.ts | 0 {src => packages/schemas/src}/schemas/any.ts | 0 .../schemas/src}/schemas/index.ts | 0 .../schemas/src}/schemas_loose/0.1.ts | 0 .../schemas/src}/schemas_loose/0.2.ts | 0 .../schemas/src}/schemas_loose/0.3.ts | 0 .../schemas/src}/schemas_loose/0.4.ts | 0 .../schemas/src}/schemas_loose/index.ts | 0 .../schemas/src}/shared/common.ts | 0 .../schemas/src}/shared/config.ts | 0 .../schemas/src}/shared/constants.ts | 0 .../src}/shared/manifestVersionResolve.ts | 0 {src => packages/schemas/src}/types.ts | 0 packages/schemas/tsconfig.json | 18 ++++ scripts/create-dev-version.js | 25 ++++-- src/node.ts | 9 -- test/cli.test.ts | 4 +- test/config.test.ts | 4 +- test/icon-validation.test.ts | 2 +- test/init.test.ts | 4 +- test/mcpbignore.test.ts | 2 +- test/schemas.test.ts | 2 +- test/sign.e2e.test.ts | 2 +- tsconfig.jest.json | 7 ++ tsconfig.json | 22 ++--- tsconfig.test.json | 13 ++- yarn.lock | 82 +++++++++++-------- 56 files changed, 298 insertions(+), 172 deletions(-) create mode 100644 packages/cli/package.json rename {src => packages/cli/src}/cli.ts (62%) rename {src => packages/cli/src}/cli/cli.ts (100%) rename {src => packages/cli/src}/cli/init.ts (99%) rename {src => packages/cli/src}/cli/pack.ts (98%) rename {src => packages/cli/src}/cli/unpack.ts (100%) rename {src => packages/cli/src}/index.ts (59%) create mode 100644 packages/cli/src/node.ts rename {src => packages/cli/src}/node/files.ts (100%) rename {src => packages/cli/src}/node/sign.ts (99%) rename {src => packages/cli/src}/node/validate.ts (98%) rename {src => packages/cli/src}/shared/log.ts (100%) create mode 100644 packages/cli/tsconfig.json create mode 100644 packages/schemas/package.json rename {schemas => packages/schemas/schemas}/mcpb-manifest-latest.schema.json (100%) rename {schemas => packages/schemas/schemas}/mcpb-manifest-v0.1.schema.json (100%) rename {schemas => packages/schemas/schemas}/mcpb-manifest-v0.2.schema.json (100%) rename {schemas => packages/schemas/schemas}/mcpb-manifest-v0.3.schema.json (100%) rename {schemas => packages/schemas/schemas}/mcpb-manifest-v0.4.schema.json (100%) rename {scripts => packages/schemas/scripts}/build-mcpb-schema.js (100%) rename {src => packages/schemas/src}/browser.ts (79%) create mode 100644 packages/schemas/src/index.ts rename {src => packages/schemas/src}/schemas/0.1.ts (100%) rename {src => packages/schemas/src}/schemas/0.2.ts (100%) rename {src => packages/schemas/src}/schemas/0.3.ts (100%) rename {src => packages/schemas/src}/schemas/0.4.ts (100%) rename {src => packages/schemas/src}/schemas/any.ts (100%) rename {src => packages/schemas/src}/schemas/index.ts (100%) rename {src => packages/schemas/src}/schemas_loose/0.1.ts (100%) rename {src => packages/schemas/src}/schemas_loose/0.2.ts (100%) rename {src => packages/schemas/src}/schemas_loose/0.3.ts (100%) rename {src => packages/schemas/src}/schemas_loose/0.4.ts (100%) rename {src => packages/schemas/src}/schemas_loose/index.ts (100%) rename {src => packages/schemas/src}/shared/common.ts (100%) rename {src => packages/schemas/src}/shared/config.ts (100%) rename {src => packages/schemas/src}/shared/constants.ts (100%) rename {src => packages/schemas/src}/shared/manifestVersionResolve.ts (100%) rename {src => packages/schemas/src}/types.ts (100%) create mode 100644 packages/schemas/tsconfig.json delete mode 100644 src/node.ts create mode 100644 tsconfig.jest.json diff --git a/CLI.md b/CLI.md index 02787f8..ddee00d 100644 --- a/CLI.md +++ b/CLI.md @@ -5,7 +5,7 @@ The MCPB CLI provides tools for building MCP Bundles. ## Installation ```bash -npm install -g @anthropic-ai/mcpb +npm install -g @modelcontextprotocol/mcpb-cli ``` ``` diff --git a/README.md b/README.md index f47446c..ca4678f 100644 --- a/README.md +++ b/README.md @@ -6,11 +6,11 @@ > > - `dxt` CLI is now `mcpb` > - `.dxt` files are now `.mcpb` files -> - `@anthropic-ai/dxt` package will be moved to `@anthropic-ai/mcpb` +> - `@anthropic-ai/dxt` package will be moved to `@modelcontextprotocol/mcpb-cli` MCP Bundles (`.mcpb`) are zip archives containing a local MCP server and a `manifest.json` that describes the server and its capabilities. The format is spiritually similar to Chrome extensions (`.crx`) or VS Code extensions (`.vsix`), enabling end users to install local MCP servers with a single click. -This repository provides three components: The bundle specification in [MANIFEST.md](MANIFEST.md), a CLI tool for creating bundles (see [CLI.md](CLI.md)), and the code used by Claude for macOS and Windows to load and verify MCPB bundles ([src/index.ts](src/index.ts)). +This repository provides three components: The bundle specification in [MANIFEST.md](MANIFEST.md), a CLI tool for creating bundles (see [CLI.md](CLI.md)), and the code used by Claude for macOS and Windows to load and verify MCPB bundles ([packages/cli/src/index.ts](packages/cli/src/index.ts)). - For developers of local MCP servers, we aim to make distribution and installation of said servers convenient - For developers of apps supporting local MCP servers, we aim to make it easy to add support for MCPB bundles @@ -24,7 +24,15 @@ At the core, MCPB are simple zip files containing your entire MCP server and a ` To make this process easier, this package offers a CLI that helps you with the creation of both the `manifest.json` and the final `.mcpb` file. To install it, run: ```sh -npm install -g @anthropic-ai/mcpb +npm install -g @modelcontextprotocol/mcpb-cli +``` + +# For App Developers + +To validate MCPB manifests and reuse the schema helpers directly, install the schemas package: + +```sh +npm install @modelcontextprotocol/mcpb-schemas ``` 1. In a folder containing your local MCP server, run `mcpb init`. This command will guide you through the creation of a `manifest.json`. diff --git a/jest.config.js b/jest.config.js index ed3a60e..072595b 100644 --- a/jest.config.js +++ b/jest.config.js @@ -1,18 +1,21 @@ -export default { +module.exports = { preset: "ts-jest", testEnvironment: "node", testMatch: ["**/test/**/*.test.ts"], - collectCoverageFrom: ["src/**/*.ts", "!src/**/*.d.ts"], + collectCoverageFrom: ["packages/**/src/**/*.ts", "!**/*.d.ts"], moduleFileExtensions: ["ts", "js", "json"], transform: { "^.+\\.ts$": [ "ts-jest", { - tsConfig: "tsconfig.test.json", + tsconfig: "tsconfig.jest.json", }, ], }, moduleNameMapper: { + "^@modelcontextprotocol/mcpb-schemas$": + "/packages/schemas/src/index.ts", + "^@modelcontextprotocol/mcpb-cli$": "/packages/cli/src/index.ts", "^(\\.{1,2}/.*)\\.js$": "$1", }, }; diff --git a/package.json b/package.json index 09a33ee..d053282 100644 --- a/package.json +++ b/package.json @@ -1,70 +1,21 @@ { - "name": "@anthropic-ai/mcpb", - "description": "Tools for building MCP Bundles", - "version": "2.1.2", - "type": "module", - "main": "dist/index.js", - "module": "dist/index.js", - "types": "dist/index.d.ts", - "exports": { - ".": { - "types": "./dist/index.d.ts", - "import": "./dist/index.js", - "require": "./dist/index.js" - }, - "./browser": { - "types": "./dist/browser.d.ts", - "import": "./dist/browser.js", - "require": "./dist/browser.js" - }, - "./node": { - "types": "./dist/node.d.ts", - "import": "./dist/node.js", - "require": "./dist/node.js" - }, - "./cli": { - "types": "./dist/cli.d.ts", - "import": "./dist/cli.js", - "require": "./dist/cli.js" - }, - "./mcpb-manifest-v0.1.schema.json": "./dist/mcpb-manifest-v0.1.schema.json", - "./mcpb-manifest-v0.2.schema.json": "./dist/mcpb-manifest-v0.2.schema.json", - "./mcpb-manifest-v0.3.schema.json": "./dist/mcpb-manifest-v0.3.schema.json", - "./mcpb-manifest-latest.schema.json": "./dist/mcpb-manifest-latest.schema.json", - "./schemas": { - "types": "./dist/schemas/index.d.ts", - "import": "./dist/schemas/index.js", - "require": "./dist/schemas/index.js" - }, - "./schemas/*": { - "types": "./dist/schemas/*.d.ts", - "import": "./dist/schemas/*.js", - "require": "./dist/schemas/*.js" - }, - "./schemas-loose": { - "types": "./dist/schemas-loose.d.ts", - "import": "./dist/schemas-loose.js", - "require": "./dist/schemas-loose.js" - } - }, - "bin": "dist/cli/cli.js", - "files": [ - "dist", - "schemas" + "name": "mcpb-workspace", + "private": true, + "workspaces": [ + "packages/*" ], "scripts": { - "build": "yarn run build:code && yarn run build:schema", - "build:code": "tsc", - "build:schema": "node ./scripts/build-mcpb-schema.js", - "dev": "tsc --watch", + "build": "yarn workspace @modelcontextprotocol/mcpb-schemas run build && yarn workspace @modelcontextprotocol/mcpb-cli run build", + "build:cli": "yarn workspace @modelcontextprotocol/mcpb-cli run build", + "build:schemas": "yarn workspace @modelcontextprotocol/mcpb-schemas run build", + "dev": "yarn workspace @modelcontextprotocol/mcpb-cli run dev", "test": "jest", "test:watch": "jest --watch", - "prepublishOnly": "npm run build", + "prepublishOnly": "yarn run build", "fix": "eslint --ext .ts . --fix && prettier -w .", - "lint": "tsc -p ./tsconfig.json && eslint --ext .ts .", + "lint": "tsc -p ./packages/cli/tsconfig.json && tsc -p ./packages/schemas/tsconfig.json && eslint --ext .ts .", "dev-version": "./scripts/create-dev-version.js" }, - "author": "Anthropic ", "license": "MIT", "devDependencies": { "@types/jest": "^29.5.14", @@ -83,20 +34,9 @@ "ts-jest": "^29.3.2", "typescript": "^5.6.3" }, - "dependencies": { - "@inquirer/prompts": "^6.0.1", - "commander": "^13.1.0", - "fflate": "^0.8.2", - "galactus": "^1.0.0", - "ignore": "^7.0.5", - "node-forge": "^1.3.2", - "pretty-bytes": "^5.6.0", - "zod": "^3.25.67", - "zod-to-json-schema": "^3.24.6" - }, "resolutions": { "@babel/helpers": "7.27.1", "@babel/parser": "7.27.3" }, "packageManager": "yarn@4.10.3+sha512.c38cafb5c7bb273f3926d04e55e1d8c9dfa7d9c3ea1f36a4868fa028b9e5f72298f0b7f401ad5eb921749eb012eb1c3bb74bf7503df3ee43fd600d14a018266f" -} +} \ No newline at end of file diff --git a/packages/cli/package.json b/packages/cli/package.json new file mode 100644 index 0000000..e9ed027 --- /dev/null +++ b/packages/cli/package.json @@ -0,0 +1,48 @@ +{ + "name": "@modelcontextprotocol/mcpb-cli", + "description": "Tools for building MCP Bundles", + "version": "2.1.2", + "type": "module", + "main": "dist/index.js", + "module": "dist/index.js", + "types": "dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js", + "require": "./dist/index.js" + }, + "./cli": { + "types": "./dist/cli.d.ts", + "import": "./dist/cli.js", + "require": "./dist/cli.js" + }, + "./node": { + "types": "./dist/node.d.ts", + "import": "./dist/node.js", + "require": "./dist/node.js" + } + }, + "bin": "dist/cli/cli.js", + "files": [ + "dist" + ], + "scripts": { + "build": "yarn run build:code", + "build:code": "tsc -p tsconfig.json", + "dev": "tsc -p tsconfig.json --watch" + }, + "author": "Anthropic ", + "license": "MIT", + "dependencies": { + "@inquirer/prompts": "^6.0.1", + "@modelcontextprotocol/mcpb-schemas": "workspace:*", + "commander": "^13.1.0", + "fflate": "^0.8.2", + "galactus": "^1.0.0", + "ignore": "^7.0.5", + "node-forge": "^1.3.2", + "pretty-bytes": "^5.6.0", + "zod": "^3.25.67" + } +} \ No newline at end of file diff --git a/src/cli.ts b/packages/cli/src/cli.ts similarity index 62% rename from src/cli.ts rename to packages/cli/src/cli.ts index c5266d4..8d5cb81 100644 --- a/src/cli.ts +++ b/packages/cli/src/cli.ts @@ -2,11 +2,6 @@ export * from "./cli/init.js"; export * from "./cli/pack.js"; -// Include all shared exports -export * from "./schemas/index.js"; -export * from "./shared/config.js"; -export * from "./shared/constants.js"; - // Include node exports since CLI needs them export * from "./node/files.js"; export * from "./node/sign.js"; diff --git a/src/cli/cli.ts b/packages/cli/src/cli/cli.ts similarity index 100% rename from src/cli/cli.ts rename to packages/cli/src/cli/cli.ts diff --git a/src/cli/init.ts b/packages/cli/src/cli/init.ts similarity index 99% rename from src/cli/init.ts rename to packages/cli/src/cli/init.ts index f2dfb53..f3ad9b4 100644 --- a/src/cli/init.ts +++ b/packages/cli/src/cli/init.ts @@ -5,8 +5,8 @@ import { basename, join, resolve } from "path"; import { DEFAULT_MANIFEST_VERSION, MANIFEST_SCHEMAS, -} from "../shared/constants.js"; -import type { McpbManifestAny } from "../types.js"; + type McpbManifestAny, +} from "@modelcontextprotocol/mcpb-schemas"; interface PackageJson { name?: string; diff --git a/src/cli/pack.ts b/packages/cli/src/cli/pack.ts similarity index 98% rename from src/cli/pack.ts rename to packages/cli/src/cli/pack.ts index e2411bf..cc74008 100644 --- a/src/cli/pack.ts +++ b/packages/cli/src/cli/pack.ts @@ -11,11 +11,13 @@ import { } from "fs"; import { basename, join, relative, resolve, sep } from "path"; +import { + MANIFEST_SCHEMAS, + getManifestVersionFromRawData, +} from "@modelcontextprotocol/mcpb-schemas"; import { getAllFilesWithCount, readMcpbIgnorePatterns } from "../node/files.js"; import { validateManifest } from "../node/validate.js"; -import { MANIFEST_SCHEMAS } from "../shared/constants.js"; import { getLogger } from "../shared/log.js"; -import { getManifestVersionFromRawData } from "../shared/manifestVersionResolve.js"; import { initExtension } from "./init.js"; interface PackOptions { diff --git a/src/cli/unpack.ts b/packages/cli/src/cli/unpack.ts similarity index 100% rename from src/cli/unpack.ts rename to packages/cli/src/cli/unpack.ts diff --git a/src/index.ts b/packages/cli/src/index.ts similarity index 59% rename from src/index.ts rename to packages/cli/src/index.ts index ca55908..902d914 100644 --- a/src/index.ts +++ b/packages/cli/src/index.ts @@ -5,8 +5,3 @@ export * from "./cli/unpack.js"; export * from "./node/files.js"; export * from "./node/sign.js"; export * from "./node/validate.js"; -export * from "./schemas/index.js"; -export * from "./shared/common.js"; -export * from "./shared/config.js"; -export * from "./shared/constants.js"; -export * from "./types.js"; diff --git a/packages/cli/src/node.ts b/packages/cli/src/node.ts new file mode 100644 index 0000000..be555e7 --- /dev/null +++ b/packages/cli/src/node.ts @@ -0,0 +1,4 @@ +// Node.js-specific exports +export * from "./node/files.js"; +export * from "./node/sign.js"; +export * from "./node/validate.js"; diff --git a/src/node/files.ts b/packages/cli/src/node/files.ts similarity index 100% rename from src/node/files.ts rename to packages/cli/src/node/files.ts diff --git a/src/node/sign.ts b/packages/cli/src/node/sign.ts similarity index 99% rename from src/node/sign.ts rename to packages/cli/src/node/sign.ts index e0ed5ce..bccb88b 100644 --- a/src/node/sign.ts +++ b/packages/cli/src/node/sign.ts @@ -7,7 +7,7 @@ import { join } from "path"; import { promisify } from "util"; import type { z } from "zod"; -import type { McpbSignatureInfoSchema } from "../shared/common.js"; +import type { McpbSignatureInfoSchema } from "@modelcontextprotocol/mcpb-schemas"; // Signature block markers const SIGNATURE_HEADER = "MCPB_SIG_V1"; diff --git a/src/node/validate.ts b/packages/cli/src/node/validate.ts similarity index 98% rename from src/node/validate.ts rename to packages/cli/src/node/validate.ts index d1ee8fd..5f33404 100644 --- a/src/node/validate.ts +++ b/packages/cli/src/node/validate.ts @@ -1,16 +1,15 @@ import { existsSync, readFileSync, statSync } from "fs"; import * as fs from "fs/promises"; -import { DestroyerOfModules } from "galactus"; import * as os from "os"; import { dirname, isAbsolute, join, resolve } from "path"; import prettyBytes from "pretty-bytes"; -import { unpackExtension } from "../cli/unpack.js"; import { MANIFEST_SCHEMAS, MANIFEST_SCHEMAS_LOOSE, -} from "../shared/constants.js"; -import { getManifestVersionFromRawData } from "../shared/manifestVersionResolve.js"; + getManifestVersionFromRawData, +} from "@modelcontextprotocol/mcpb-schemas"; +import { unpackExtension } from "../cli/unpack.js"; /** * Check if a buffer contains a valid PNG file signature @@ -225,6 +224,7 @@ export async function cleanMcpb(inputPath: string) { if (existsSync(nodeModulesPath)) { console.log(" -- node_modules found, deleting development dependencies"); + const { DestroyerOfModules } = await import("galactus"); const destroyer = new DestroyerOfModules({ rootDirectory: unpackPath, }); diff --git a/src/shared/log.ts b/packages/cli/src/shared/log.ts similarity index 100% rename from src/shared/log.ts rename to packages/cli/src/shared/log.ts diff --git a/packages/cli/tsconfig.json b/packages/cli/tsconfig.json new file mode 100644 index 0000000..3190724 --- /dev/null +++ b/packages/cli/tsconfig.json @@ -0,0 +1,18 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./dist", + "types": [ + "node" + ] + }, + "include": [ + "src/**/*.ts", + "src/*.ts" + ], + "exclude": [ + "node_modules", + "dist" + ] +} \ No newline at end of file diff --git a/packages/schemas/package.json b/packages/schemas/package.json new file mode 100644 index 0000000..97e3b1e --- /dev/null +++ b/packages/schemas/package.json @@ -0,0 +1,59 @@ +{ + "name": "@modelcontextprotocol/mcpb-schemas", + "description": "MCPB manifest schemas and helpers", + "version": "2.1.2", + "type": "module", + "main": "dist/index.js", + "module": "dist/index.js", + "types": "dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js", + "require": "./dist/index.js" + }, + "./browser": { + "types": "./dist/browser.d.ts", + "import": "./dist/browser.js", + "require": "./dist/browser.js" + }, + "./schemas": { + "types": "./dist/schemas/index.d.ts", + "import": "./dist/schemas/index.js", + "require": "./dist/schemas/index.js" + }, + "./schemas/*": { + "types": "./dist/schemas/*.d.ts", + "import": "./dist/schemas/*.js", + "require": "./dist/schemas/*.js" + }, + "./schemas-loose": { + "types": "./dist/schemas_loose/index.d.ts", + "import": "./dist/schemas_loose/index.js", + "require": "./dist/schemas_loose/index.js" + }, + "./mcpb-manifest-v0.1.schema.json": "./dist/mcpb-manifest-v0.1.schema.json", + "./mcpb-manifest-v0.2.schema.json": "./dist/mcpb-manifest-v0.2.schema.json", + "./mcpb-manifest-v0.3.schema.json": "./dist/mcpb-manifest-v0.3.schema.json", + "./mcpb-manifest-v0.4.schema.json": "./dist/mcpb-manifest-v0.4.schema.json", + "./mcpb-manifest-latest.schema.json": "./dist/mcpb-manifest-latest.schema.json" + }, + "files": [ + "dist", + "schemas" + ], + "scripts": { + "build": "yarn run build:code && yarn run build:schema", + "build:code": "tsc -p tsconfig.json", + "build:schema": "node ./scripts/build-mcpb-schema.js", + "dev": "tsc -p tsconfig.json --watch" + }, + "author": "Anthropic ", + "license": "MIT", + "dependencies": { + "zod": "^3.25.67" + }, + "devDependencies": { + "zod-to-json-schema": "^3.24.6" + } +} \ No newline at end of file diff --git a/schemas/mcpb-manifest-latest.schema.json b/packages/schemas/schemas/mcpb-manifest-latest.schema.json similarity index 100% rename from schemas/mcpb-manifest-latest.schema.json rename to packages/schemas/schemas/mcpb-manifest-latest.schema.json diff --git a/schemas/mcpb-manifest-v0.1.schema.json b/packages/schemas/schemas/mcpb-manifest-v0.1.schema.json similarity index 100% rename from schemas/mcpb-manifest-v0.1.schema.json rename to packages/schemas/schemas/mcpb-manifest-v0.1.schema.json diff --git a/schemas/mcpb-manifest-v0.2.schema.json b/packages/schemas/schemas/mcpb-manifest-v0.2.schema.json similarity index 100% rename from schemas/mcpb-manifest-v0.2.schema.json rename to packages/schemas/schemas/mcpb-manifest-v0.2.schema.json diff --git a/schemas/mcpb-manifest-v0.3.schema.json b/packages/schemas/schemas/mcpb-manifest-v0.3.schema.json similarity index 100% rename from schemas/mcpb-manifest-v0.3.schema.json rename to packages/schemas/schemas/mcpb-manifest-v0.3.schema.json diff --git a/schemas/mcpb-manifest-v0.4.schema.json b/packages/schemas/schemas/mcpb-manifest-v0.4.schema.json similarity index 100% rename from schemas/mcpb-manifest-v0.4.schema.json rename to packages/schemas/schemas/mcpb-manifest-v0.4.schema.json diff --git a/scripts/build-mcpb-schema.js b/packages/schemas/scripts/build-mcpb-schema.js similarity index 100% rename from scripts/build-mcpb-schema.js rename to packages/schemas/scripts/build-mcpb-schema.js diff --git a/src/browser.ts b/packages/schemas/src/browser.ts similarity index 79% rename from src/browser.ts rename to packages/schemas/src/browser.ts index 92c9ab8..ac03faf 100644 --- a/src/browser.ts +++ b/packages/schemas/src/browser.ts @@ -3,4 +3,5 @@ export * from "./schemas/index.js"; export * from "./shared/common.js"; export * from "./shared/config.js"; export * from "./shared/constants.js"; +export * from "./shared/manifestVersionResolve.js"; export * from "./types.js"; diff --git a/packages/schemas/src/index.ts b/packages/schemas/src/index.ts new file mode 100644 index 0000000..2dff0af --- /dev/null +++ b/packages/schemas/src/index.ts @@ -0,0 +1,7 @@ +// Public exports for MCPB schemas and helpers +export * from "./schemas/index.js"; +export * from "./shared/common.js"; +export * from "./shared/config.js"; +export * from "./shared/constants.js"; +export * from "./shared/manifestVersionResolve.js"; +export * from "./types.js"; diff --git a/src/schemas/0.1.ts b/packages/schemas/src/schemas/0.1.ts similarity index 100% rename from src/schemas/0.1.ts rename to packages/schemas/src/schemas/0.1.ts diff --git a/src/schemas/0.2.ts b/packages/schemas/src/schemas/0.2.ts similarity index 100% rename from src/schemas/0.2.ts rename to packages/schemas/src/schemas/0.2.ts diff --git a/src/schemas/0.3.ts b/packages/schemas/src/schemas/0.3.ts similarity index 100% rename from src/schemas/0.3.ts rename to packages/schemas/src/schemas/0.3.ts diff --git a/src/schemas/0.4.ts b/packages/schemas/src/schemas/0.4.ts similarity index 100% rename from src/schemas/0.4.ts rename to packages/schemas/src/schemas/0.4.ts diff --git a/src/schemas/any.ts b/packages/schemas/src/schemas/any.ts similarity index 100% rename from src/schemas/any.ts rename to packages/schemas/src/schemas/any.ts diff --git a/src/schemas/index.ts b/packages/schemas/src/schemas/index.ts similarity index 100% rename from src/schemas/index.ts rename to packages/schemas/src/schemas/index.ts diff --git a/src/schemas_loose/0.1.ts b/packages/schemas/src/schemas_loose/0.1.ts similarity index 100% rename from src/schemas_loose/0.1.ts rename to packages/schemas/src/schemas_loose/0.1.ts diff --git a/src/schemas_loose/0.2.ts b/packages/schemas/src/schemas_loose/0.2.ts similarity index 100% rename from src/schemas_loose/0.2.ts rename to packages/schemas/src/schemas_loose/0.2.ts diff --git a/src/schemas_loose/0.3.ts b/packages/schemas/src/schemas_loose/0.3.ts similarity index 100% rename from src/schemas_loose/0.3.ts rename to packages/schemas/src/schemas_loose/0.3.ts diff --git a/src/schemas_loose/0.4.ts b/packages/schemas/src/schemas_loose/0.4.ts similarity index 100% rename from src/schemas_loose/0.4.ts rename to packages/schemas/src/schemas_loose/0.4.ts diff --git a/src/schemas_loose/index.ts b/packages/schemas/src/schemas_loose/index.ts similarity index 100% rename from src/schemas_loose/index.ts rename to packages/schemas/src/schemas_loose/index.ts diff --git a/src/shared/common.ts b/packages/schemas/src/shared/common.ts similarity index 100% rename from src/shared/common.ts rename to packages/schemas/src/shared/common.ts diff --git a/src/shared/config.ts b/packages/schemas/src/shared/config.ts similarity index 100% rename from src/shared/config.ts rename to packages/schemas/src/shared/config.ts diff --git a/src/shared/constants.ts b/packages/schemas/src/shared/constants.ts similarity index 100% rename from src/shared/constants.ts rename to packages/schemas/src/shared/constants.ts diff --git a/src/shared/manifestVersionResolve.ts b/packages/schemas/src/shared/manifestVersionResolve.ts similarity index 100% rename from src/shared/manifestVersionResolve.ts rename to packages/schemas/src/shared/manifestVersionResolve.ts diff --git a/src/types.ts b/packages/schemas/src/types.ts similarity index 100% rename from src/types.ts rename to packages/schemas/src/types.ts diff --git a/packages/schemas/tsconfig.json b/packages/schemas/tsconfig.json new file mode 100644 index 0000000..3190724 --- /dev/null +++ b/packages/schemas/tsconfig.json @@ -0,0 +1,18 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./dist", + "types": [ + "node" + ] + }, + "include": [ + "src/**/*.ts", + "src/*.ts" + ], + "exclude": [ + "node_modules", + "dist" + ] +} \ No newline at end of file diff --git a/scripts/create-dev-version.js b/scripts/create-dev-version.js index 8de366a..f480561 100755 --- a/scripts/create-dev-version.js +++ b/scripts/create-dev-version.js @@ -2,12 +2,21 @@ import fs from "fs"; +const packagePaths = [ + "packages/cli/package.json", + "packages/schemas/package.json", +]; + try { - // Read current package.json - const packageJson = JSON.parse(fs.readFileSync("package.json", "utf8")); + const packageJsons = packagePaths.map((packagePath) => { + return { + path: packagePath, + data: JSON.parse(fs.readFileSync(packagePath, "utf8")), + }; + }); // Get current version and strip any existing prerelease - const baseVersion = packageJson.version.split("-")[0]; + const baseVersion = packageJsons[0].data.version.split("-")[0]; // Generate timestamp (YYYYMMDDHHMMSS) const now = new Date(); @@ -24,9 +33,13 @@ try { console.log(`Publishing ${devVersion}...`); - // Update package.json version - packageJson.version = devVersion; - fs.writeFileSync("package.json", JSON.stringify(packageJson, null, 2) + "\n"); + for (const packageJson of packageJsons) { + packageJson.data.version = devVersion; + fs.writeFileSync( + packageJson.path, + JSON.stringify(packageJson.data, null, 2) + "\n", + ); + } } catch (error) { console.error("Failed to publish:", error.message); process.exit(1); diff --git a/src/node.ts b/src/node.ts deleted file mode 100644 index f7f48a0..0000000 --- a/src/node.ts +++ /dev/null @@ -1,9 +0,0 @@ -// Node.js-specific exports -export * from "./node/files.js"; -export * from "./node/sign.js"; -export * from "./node/validate.js"; - -// Include all shared exports -export * from "./schemas/index.js"; -export * from "./shared/config.js"; -export * from "./shared/constants.js"; diff --git a/test/cli.test.ts b/test/cli.test.ts index e7757ac..649c667 100644 --- a/test/cli.test.ts +++ b/test/cli.test.ts @@ -2,7 +2,7 @@ import { execSync } from "node:child_process"; import fs from "node:fs"; import { join } from "node:path"; -import { DEFAULT_MANIFEST_VERSION } from "../src/shared/constants"; +import { DEFAULT_MANIFEST_VERSION } from "@modelcontextprotocol/mcpb-schemas"; interface ExecSyncError extends Error { stdout: Buffer; @@ -12,7 +12,7 @@ interface ExecSyncError extends Error { } describe("DXT CLI", () => { - const cliPath = join(__dirname, "../dist/cli/cli.js"); + const cliPath = join(__dirname, "../packages/cli/dist/cli/cli.js"); const validManifestPath = join(__dirname, "valid-manifest.json"); const invalidManifestPath = join(__dirname, "invalid-manifest.json"); diff --git a/test/config.test.ts b/test/config.test.ts index 1c34faf..b495b22 100644 --- a/test/config.test.ts +++ b/test/config.test.ts @@ -2,8 +2,8 @@ import { getMcpConfigForManifest, hasRequiredConfigMissing, replaceVariables, -} from "../src/shared/config"; -import type { Logger, McpbManifestAny } from "../src/types"; +} from "@modelcontextprotocol/mcpb-schemas"; +import type { Logger, McpbManifestAny } from "@modelcontextprotocol/mcpb-schemas"; describe("replaceVariables", () => { it("should replace variables in strings", () => { diff --git a/test/icon-validation.test.ts b/test/icon-validation.test.ts index b55abd4..da2af8a 100644 --- a/test/icon-validation.test.ts +++ b/test/icon-validation.test.ts @@ -3,7 +3,7 @@ import fs from "node:fs"; import { join } from "node:path"; describe("Icon Validation", () => { - const cliPath = join(__dirname, "../dist/cli/cli.js"); + const cliPath = join(__dirname, "../packages/cli/dist/cli/cli.js"); const testFixturesDir = join(__dirname, "fixtures", "icon-validation"); beforeAll(() => { diff --git a/test/init.test.ts b/test/init.test.ts index 7acd57a..a7110d1 100644 --- a/test/init.test.ts +++ b/test/init.test.ts @@ -9,8 +9,8 @@ import { getDefaultEntryPoint, getDefaultRepositoryUrl, readPackageJson, -} from "../src/cli/init.js"; -import { DEFAULT_MANIFEST_VERSION } from "../src/shared/constants.js"; +} from "@modelcontextprotocol/mcpb-cli"; +import { DEFAULT_MANIFEST_VERSION } from "@modelcontextprotocol/mcpb-schemas"; // Mock the fs module jest.mock("fs", () => ({ diff --git a/test/mcpbignore.test.ts b/test/mcpbignore.test.ts index 26e5ee1..ca74beb 100644 --- a/test/mcpbignore.test.ts +++ b/test/mcpbignore.test.ts @@ -6,7 +6,7 @@ import { getAllFiles, readMcpbIgnorePatterns, shouldExclude, -} from "../src/node/files.js"; +} from "@modelcontextprotocol/mcpb-cli"; describe("McpbIgnore functionality", () => { let tempDir: string; diff --git a/test/schemas.test.ts b/test/schemas.test.ts index 52943e0..5f88b3e 100644 --- a/test/schemas.test.ts +++ b/test/schemas.test.ts @@ -1,7 +1,7 @@ import { readFileSync } from "fs"; import { join } from "path"; -import { v0_2, v0_3 } from "../src/schemas/index.js"; +import { v0_2, v0_3 } from "@modelcontextprotocol/mcpb-schemas"; describe("McpbManifestSchema", () => { it("should validate a valid manifest", () => { diff --git a/test/sign.e2e.test.ts b/test/sign.e2e.test.ts index cbf1c4f..f2bb5f2 100755 --- a/test/sign.e2e.test.ts +++ b/test/sign.e2e.test.ts @@ -17,7 +17,7 @@ import { signMcpbFile, unsignMcpbFile, verifyMcpbFile, -} from "../src/node/sign.js"; +} from "@modelcontextprotocol/mcpb-cli"; // Test directory const TEST_DIR = path.join(__dirname, "test-output"); diff --git a/tsconfig.jest.json b/tsconfig.jest.json new file mode 100644 index 0000000..7416e41 --- /dev/null +++ b/tsconfig.jest.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig.test.json", + "compilerOptions": { + "module": "commonjs", + "moduleResolution": "node" + } +} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index db0f965..4bebe99 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,34 +3,28 @@ "display": "Default", "compilerOptions": { "target": "es2024", - "lib": ["ES2023"], - + "lib": [ + "ES2023" + ], "module": "node18", "moduleResolution": "node16", "esModuleInterop": true, - - // Path settings - "rootDir": "./src", - "outDir": "./dist", - // Type checking "strict": true, "skipLibCheck": true, "forceConsistentCasingInFileNames": true, - // Emit settings "declaration": true, "noEmit": false, "inlineSources": false, "isolatedModules": false, - // Other settings "allowJs": true, "resolveJsonModule": true, "incremental": true, "preserveWatchOutput": true, - "types": ["node"] - }, - "include": ["src/**/*.ts", "src/*.ts"], - "exclude": ["node_modules", "dist"] -} + "types": [ + "node" + ] + } +} \ No newline at end of file diff --git a/tsconfig.test.json b/tsconfig.test.json index 6e6b840..745f762 100644 --- a/tsconfig.test.json +++ b/tsconfig.test.json @@ -2,9 +2,16 @@ "extends": "./tsconfig.json", "compilerOptions": { "noEmit": true, + "isolatedModules": true, "module": "node18", "moduleResolution": "node16", - "types": ["node", "jest"] + "types": [ + "node", + "jest" + ] }, - "include": ["src/**/*.ts", "test/**/*.ts"] -} + "include": [ + "packages/**/src/**/*.ts", + "test/**/*.ts" + ] +} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 538dc22..34d1dd5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15,39 +15,6 @@ __metadata: languageName: node linkType: hard -"@anthropic-ai/mcpb@workspace:.": - version: 0.0.0-use.local - resolution: "@anthropic-ai/mcpb@workspace:." - dependencies: - "@inquirer/prompts": "npm:^6.0.1" - "@types/jest": "npm:^29.5.14" - "@types/node": "npm:^22.15.3" - "@types/node-forge": "npm:1.3.11" - "@typescript-eslint/eslint-plugin": "npm:^5.62.0" - "@typescript-eslint/parser": "npm:^5.62.0" - commander: "npm:^13.1.0" - eslint: "npm:^8.43.0" - eslint-config-prettier: "npm:^8.10.0" - eslint-import-resolver-typescript: "npm:^3.6.1" - eslint-plugin-import: "npm:^2.29.1" - eslint-plugin-prettier: "npm:^5.1.3" - eslint-plugin-simple-import-sort: "npm:^10.0.0" - fflate: "npm:^0.8.2" - galactus: "npm:^1.0.0" - ignore: "npm:^7.0.5" - jest: "npm:^29.7.0" - node-forge: "npm:^1.3.2" - prettier: "npm:^3.3.3" - pretty-bytes: "npm:^5.6.0" - ts-jest: "npm:^29.3.2" - typescript: "npm:^5.6.3" - zod: "npm:^3.25.67" - zod-to-json-schema: "npm:^3.24.6" - bin: - mcpb: dist/cli/cli.js - languageName: unknown - linkType: soft - "@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.27.1": version: 7.27.1 resolution: "@babel/code-frame@npm:7.27.1" @@ -993,6 +960,33 @@ __metadata: languageName: node linkType: hard +"@modelcontextprotocol/mcpb-cli@workspace:packages/cli": + version: 0.0.0-use.local + resolution: "@modelcontextprotocol/mcpb-cli@workspace:packages/cli" + dependencies: + "@inquirer/prompts": "npm:^6.0.1" + "@modelcontextprotocol/mcpb-schemas": "workspace:*" + commander: "npm:^13.1.0" + fflate: "npm:^0.8.2" + galactus: "npm:^1.0.0" + ignore: "npm:^7.0.5" + node-forge: "npm:^1.3.2" + pretty-bytes: "npm:^5.6.0" + zod: "npm:^3.25.67" + bin: + mcpb-cli: dist/cli/cli.js + languageName: unknown + linkType: soft + +"@modelcontextprotocol/mcpb-schemas@workspace:*, @modelcontextprotocol/mcpb-schemas@workspace:packages/schemas": + version: 0.0.0-use.local + resolution: "@modelcontextprotocol/mcpb-schemas@workspace:packages/schemas" + dependencies: + zod: "npm:^3.25.67" + zod-to-json-schema: "npm:^3.24.6" + languageName: unknown + linkType: soft + "@napi-rs/wasm-runtime@npm:^0.2.11": version: 0.2.11 resolution: "@napi-rs/wasm-runtime@npm:0.2.11" @@ -4554,6 +4548,28 @@ __metadata: languageName: node linkType: hard +"mcpb-workspace@workspace:.": + version: 0.0.0-use.local + resolution: "mcpb-workspace@workspace:." + dependencies: + "@types/jest": "npm:^29.5.14" + "@types/node": "npm:^22.15.3" + "@types/node-forge": "npm:1.3.11" + "@typescript-eslint/eslint-plugin": "npm:^5.62.0" + "@typescript-eslint/parser": "npm:^5.62.0" + eslint: "npm:^8.43.0" + eslint-config-prettier: "npm:^8.10.0" + eslint-import-resolver-typescript: "npm:^3.6.1" + eslint-plugin-import: "npm:^2.29.1" + eslint-plugin-prettier: "npm:^5.1.3" + eslint-plugin-simple-import-sort: "npm:^10.0.0" + jest: "npm:^29.7.0" + prettier: "npm:^3.3.3" + ts-jest: "npm:^29.3.2" + typescript: "npm:^5.6.3" + languageName: unknown + linkType: soft + "merge-stream@npm:^2.0.0": version: 2.0.0 resolution: "merge-stream@npm:2.0.0" From c0de9da26bb127d3e5a8a398777c3ac4475a1714 Mon Sep 17 00:00:00 2001 From: Alexander Sklar Date: Tue, 10 Feb 2026 16:03:09 -0800 Subject: [PATCH 2/4] add build:code script to streamline build process --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index d053282..23c0e08 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ ], "scripts": { "build": "yarn workspace @modelcontextprotocol/mcpb-schemas run build && yarn workspace @modelcontextprotocol/mcpb-cli run build", + "build:code": "yarn run build:schemas && yarn run build:cli", "build:cli": "yarn workspace @modelcontextprotocol/mcpb-cli run build", "build:schemas": "yarn workspace @modelcontextprotocol/mcpb-schemas run build", "dev": "yarn workspace @modelcontextprotocol/mcpb-cli run dev", From 0709f2300585a1342fe9bfd62a268cafe9235425 Mon Sep 17 00:00:00 2001 From: Alexander Sklar Date: Tue, 10 Feb 2026 16:07:21 -0800 Subject: [PATCH 3/4] update test.yml --- .github/workflows/test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8bc8e7a..79d788d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -59,12 +59,12 @@ jobs: run: yarn build:schema - name: Check for schema changes run: | - if ! git diff --exit-code schemas/; then + if ! git diff --exit-code packages/schemas/schemas/; then echo "Error: JSON schemas in schemas/ directory are out of sync!" echo "Please run 'yarn build:schema' and commit the changes." echo "" echo "Changes detected:" - git diff schemas/ + git diff packages/schemas/schemas/; exit 1 fi echo "✓ All schemas are up to date" From 6d186bab5b198e0f1f8462bd0e90f09ab24a39d6 Mon Sep 17 00:00:00 2001 From: Alexander Sklar Date: Tue, 10 Feb 2026 17:07:06 -0800 Subject: [PATCH 4/4] lint --- .eslintrc.json | 4 +- package.json | 6 +- packages/cli/package.json | 2 +- packages/cli/src/cli/init.ts | 5 +- packages/cli/src/cli/pack.ts | 8 +- packages/cli/src/node/sign.ts | 3 +- packages/cli/src/node/validate.ts | 10 +- packages/schemas/package.json | 2 +- test/config.test.ts | 5 +- test/init.test.ts | 3 +- test/mcpbignore.test.ts | 7 +- test/schemas.test.ts | 3 +- test/sign.e2e.test.ts | 7 +- yarn.lock | 375 ++++++++++++------------------ 14 files changed, 186 insertions(+), 254 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 6df6b4c..2dc33e6 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -12,7 +12,7 @@ ], "plugins": ["@typescript-eslint", "import", "prettier", "simple-import-sort"], "parser": "@typescript-eslint/parser", - "ignorePatterns": ["dist/*", "node_modules/*", "*.js"], + "ignorePatterns": ["dist/**", "node_modules/**", "*.js", "*.d.ts"], "parserOptions": { "project": "./tsconfig.json" }, @@ -28,7 +28,7 @@ "import/no-extraneous-dependencies": [ "error", { - "packageDir": "./" + "packageDir": ["./", "./packages/cli", "./packages/schemas"] } ], // Imports must not cause cyclical dependencies diff --git a/package.json b/package.json index 23c0e08..8a102e4 100644 --- a/package.json +++ b/package.json @@ -22,8 +22,8 @@ "@types/jest": "^29.5.14", "@types/node": "^22.15.3", "@types/node-forge": "1.3.11", - "@typescript-eslint/eslint-plugin": "^5.62.0", - "@typescript-eslint/parser": "^5.62.0", + "@typescript-eslint/eslint-plugin": "^8.55.0", + "@typescript-eslint/parser": "^8.55.0", "eslint": "^8.43.0", "eslint-config-prettier": "^8.10.0", "eslint-import-resolver-typescript": "^3.6.1", @@ -40,4 +40,4 @@ "@babel/parser": "7.27.3" }, "packageManager": "yarn@4.10.3+sha512.c38cafb5c7bb273f3926d04e55e1d8c9dfa7d9c3ea1f36a4868fa028b9e5f72298f0b7f401ad5eb921749eb012eb1c3bb74bf7503df3ee43fd600d14a018266f" -} \ No newline at end of file +} diff --git a/packages/cli/package.json b/packages/cli/package.json index e9ed027..25d7500 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -45,4 +45,4 @@ "pretty-bytes": "^5.6.0", "zod": "^3.25.67" } -} \ No newline at end of file +} diff --git a/packages/cli/src/cli/init.ts b/packages/cli/src/cli/init.ts index f3ad9b4..279e3b9 100644 --- a/packages/cli/src/cli/init.ts +++ b/packages/cli/src/cli/init.ts @@ -1,12 +1,11 @@ import { confirm, input, select } from "@inquirer/prompts"; -import { existsSync, readFileSync, writeFileSync } from "fs"; -import { basename, join, resolve } from "path"; - import { DEFAULT_MANIFEST_VERSION, MANIFEST_SCHEMAS, type McpbManifestAny, } from "@modelcontextprotocol/mcpb-schemas"; +import { existsSync, readFileSync, writeFileSync } from "fs"; +import { basename, join, resolve } from "path"; interface PackageJson { name?: string; diff --git a/packages/cli/src/cli/pack.ts b/packages/cli/src/cli/pack.ts index cc74008..72b5002 100644 --- a/packages/cli/src/cli/pack.ts +++ b/packages/cli/src/cli/pack.ts @@ -1,4 +1,8 @@ import { confirm } from "@inquirer/prompts"; +import { + getManifestVersionFromRawData, + MANIFEST_SCHEMAS, +} from "@modelcontextprotocol/mcpb-schemas"; import { createHash } from "crypto"; import type { Zippable } from "fflate"; import { zipSync } from "fflate"; @@ -11,10 +15,6 @@ import { } from "fs"; import { basename, join, relative, resolve, sep } from "path"; -import { - MANIFEST_SCHEMAS, - getManifestVersionFromRawData, -} from "@modelcontextprotocol/mcpb-schemas"; import { getAllFilesWithCount, readMcpbIgnorePatterns } from "../node/files.js"; import { validateManifest } from "../node/validate.js"; import { getLogger } from "../shared/log.js"; diff --git a/packages/cli/src/node/sign.ts b/packages/cli/src/node/sign.ts index bccb88b..1b83d01 100644 --- a/packages/cli/src/node/sign.ts +++ b/packages/cli/src/node/sign.ts @@ -1,3 +1,4 @@ +import type { McpbSignatureInfoSchema } from "@modelcontextprotocol/mcpb-schemas"; import { execFile } from "child_process"; import { readFileSync, writeFileSync } from "fs"; import { mkdtemp, rm, writeFile } from "fs/promises"; @@ -7,8 +8,6 @@ import { join } from "path"; import { promisify } from "util"; import type { z } from "zod"; -import type { McpbSignatureInfoSchema } from "@modelcontextprotocol/mcpb-schemas"; - // Signature block markers const SIGNATURE_HEADER = "MCPB_SIG_V1"; const SIGNATURE_FOOTER = "MCPB_SIG_END"; diff --git a/packages/cli/src/node/validate.ts b/packages/cli/src/node/validate.ts index 5f33404..3e77a51 100644 --- a/packages/cli/src/node/validate.ts +++ b/packages/cli/src/node/validate.ts @@ -1,14 +1,14 @@ +import { + getManifestVersionFromRawData, + MANIFEST_SCHEMAS, + MANIFEST_SCHEMAS_LOOSE, +} from "@modelcontextprotocol/mcpb-schemas"; import { existsSync, readFileSync, statSync } from "fs"; import * as fs from "fs/promises"; import * as os from "os"; import { dirname, isAbsolute, join, resolve } from "path"; import prettyBytes from "pretty-bytes"; -import { - MANIFEST_SCHEMAS, - MANIFEST_SCHEMAS_LOOSE, - getManifestVersionFromRawData, -} from "@modelcontextprotocol/mcpb-schemas"; import { unpackExtension } from "../cli/unpack.js"; /** diff --git a/packages/schemas/package.json b/packages/schemas/package.json index 97e3b1e..c9428ae 100644 --- a/packages/schemas/package.json +++ b/packages/schemas/package.json @@ -56,4 +56,4 @@ "devDependencies": { "zod-to-json-schema": "^3.24.6" } -} \ No newline at end of file +} diff --git a/test/config.test.ts b/test/config.test.ts index b495b22..1de3641 100644 --- a/test/config.test.ts +++ b/test/config.test.ts @@ -1,9 +1,12 @@ +import type { + Logger, + McpbManifestAny, +} from "@modelcontextprotocol/mcpb-schemas"; import { getMcpConfigForManifest, hasRequiredConfigMissing, replaceVariables, } from "@modelcontextprotocol/mcpb-schemas"; -import type { Logger, McpbManifestAny } from "@modelcontextprotocol/mcpb-schemas"; describe("replaceVariables", () => { it("should replace variables in strings", () => { diff --git a/test/init.test.ts b/test/init.test.ts index a7110d1..fa4a6a1 100644 --- a/test/init.test.ts +++ b/test/init.test.ts @@ -1,5 +1,3 @@ -import { existsSync, readFileSync } from "fs"; - import { buildManifest, createMcpConfig, @@ -11,6 +9,7 @@ import { readPackageJson, } from "@modelcontextprotocol/mcpb-cli"; import { DEFAULT_MANIFEST_VERSION } from "@modelcontextprotocol/mcpb-schemas"; +import { existsSync, readFileSync } from "fs"; // Mock the fs module jest.mock("fs", () => ({ diff --git a/test/mcpbignore.test.ts b/test/mcpbignore.test.ts index ca74beb..d667374 100644 --- a/test/mcpbignore.test.ts +++ b/test/mcpbignore.test.ts @@ -1,12 +1,11 @@ -import * as fs from "fs"; -import * as os from "os"; -import * as path from "path"; - import { getAllFiles, readMcpbIgnorePatterns, shouldExclude, } from "@modelcontextprotocol/mcpb-cli"; +import * as fs from "fs"; +import * as os from "os"; +import * as path from "path"; describe("McpbIgnore functionality", () => { let tempDir: string; diff --git a/test/schemas.test.ts b/test/schemas.test.ts index 5f88b3e..398cca4 100644 --- a/test/schemas.test.ts +++ b/test/schemas.test.ts @@ -1,8 +1,7 @@ +import { v0_2, v0_3 } from "@modelcontextprotocol/mcpb-schemas"; import { readFileSync } from "fs"; import { join } from "path"; -import { v0_2, v0_3 } from "@modelcontextprotocol/mcpb-schemas"; - describe("McpbManifestSchema", () => { it("should validate a valid manifest", () => { const manifestPath = join(__dirname, "valid-manifest.json"); diff --git a/test/sign.e2e.test.ts b/test/sign.e2e.test.ts index f2bb5f2..fd0141c 100755 --- a/test/sign.e2e.test.ts +++ b/test/sign.e2e.test.ts @@ -9,15 +9,14 @@ * 5. Tests various failure scenarios */ -import * as fs from "fs"; -import forge from "node-forge"; -import * as path from "path"; - import { signMcpbFile, unsignMcpbFile, verifyMcpbFile, } from "@modelcontextprotocol/mcpb-cli"; +import * as fs from "fs"; +import forge from "node-forge"; +import * as path from "path"; // Test directory const TEST_DIR = path.join(__dirname, "test-output"); diff --git a/yarn.lock b/yarn.lock index 34d1dd5..c0096f2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -423,7 +423,25 @@ __metadata: languageName: node linkType: hard -"@eslint-community/regexpp@npm:^4.4.0, @eslint-community/regexpp@npm:^4.6.1": +"@eslint-community/eslint-utils@npm:^4.9.1": + version: 4.9.1 + resolution: "@eslint-community/eslint-utils@npm:4.9.1" + dependencies: + eslint-visitor-keys: "npm:^3.4.3" + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + checksum: 10c0/dc4ab5e3e364ef27e33666b11f4b86e1a6c1d7cbf16f0c6ff87b1619b3562335e9201a3d6ce806221887ff780ec9d828962a290bb910759fd40a674686503f02 + languageName: node + linkType: hard + +"@eslint-community/regexpp@npm:^4.12.2": + version: 4.12.2 + resolution: "@eslint-community/regexpp@npm:4.12.2" + checksum: 10c0/fddcbc66851b308478d04e302a4d771d6917a0b3740dc351513c0da9ca2eab8a1adf99f5e0aa7ab8b13fa0df005c81adeee7e63a92f3effd7d367a163b721c2d + languageName: node + linkType: hard + +"@eslint-community/regexpp@npm:^4.6.1": version: 4.12.1 resolution: "@eslint-community/regexpp@npm:4.12.1" checksum: 10c0/a03d98c246bcb9109aec2c08e4d10c8d010256538dcb3f56610191607214523d4fb1b00aa81df830b6dffb74c5fa0be03642513a289c567949d3e550ca11cdf6 @@ -1008,14 +1026,14 @@ __metadata: languageName: node linkType: hard -"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": +"@nodelib/fs.stat@npm:2.0.5": version: 2.0.5 resolution: "@nodelib/fs.stat@npm:2.0.5" checksum: 10c0/88dafe5e3e29a388b07264680dc996c17f4bda48d163a9d4f5c1112979f0ce8ec72aa7116122c350b4e7976bc5566dc3ddb579be1ceaacc727872eb4ed93926d languageName: node linkType: hard -"@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8": +"@nodelib/fs.walk@npm:^1.2.8": version: 1.2.8 resolution: "@nodelib/fs.walk@npm:1.2.8" dependencies: @@ -1194,13 +1212,6 @@ __metadata: languageName: node linkType: hard -"@types/json-schema@npm:^7.0.9": - version: 7.0.15 - resolution: "@types/json-schema@npm:7.0.15" - checksum: 10c0/a996a745e6c5d60292f36731dd41341339d4eeed8180bb09226e5c8d23759067692b1d88e5d91d72ee83dfc00d3aca8e7bd43ea120516c17922cbcb7c3e252db - languageName: node - linkType: hard - "@types/json5@npm:^0.0.29": version: 0.0.29 resolution: "@types/json5@npm:0.0.29" @@ -1244,13 +1255,6 @@ __metadata: languageName: node linkType: hard -"@types/semver@npm:^7.3.12": - version: 7.7.0 - resolution: "@types/semver@npm:7.7.0" - checksum: 10c0/6b5f65f647474338abbd6ee91a6bbab434662ddb8fe39464edcbcfc96484d388baad9eb506dff217b6fc1727a88894930eb1f308617161ac0f376fe06be4e1ee - languageName: node - linkType: hard - "@types/stack-utils@npm:^2.0.0": version: 2.0.3 resolution: "@types/stack-utils@npm:2.0.3" @@ -1281,124 +1285,138 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:^5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/eslint-plugin@npm:5.62.0" +"@typescript-eslint/eslint-plugin@npm:^8.55.0": + version: 8.55.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.55.0" dependencies: - "@eslint-community/regexpp": "npm:^4.4.0" - "@typescript-eslint/scope-manager": "npm:5.62.0" - "@typescript-eslint/type-utils": "npm:5.62.0" - "@typescript-eslint/utils": "npm:5.62.0" - debug: "npm:^4.3.4" - graphemer: "npm:^1.4.0" - ignore: "npm:^5.2.0" - natural-compare-lite: "npm:^1.4.0" - semver: "npm:^7.3.7" - tsutils: "npm:^3.21.0" + "@eslint-community/regexpp": "npm:^4.12.2" + "@typescript-eslint/scope-manager": "npm:8.55.0" + "@typescript-eslint/type-utils": "npm:8.55.0" + "@typescript-eslint/utils": "npm:8.55.0" + "@typescript-eslint/visitor-keys": "npm:8.55.0" + ignore: "npm:^7.0.5" + natural-compare: "npm:^1.4.0" + ts-api-utils: "npm:^2.4.0" peerDependencies: - "@typescript-eslint/parser": ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/3f40cb6bab5a2833c3544e4621b9fdacd8ea53420cadc1c63fac3b89cdf5c62be1e6b7bcf56976dede5db4c43830de298ced3db60b5494a3b961ca1b4bff9f2a + "@typescript-eslint/parser": ^8.55.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <6.0.0" + checksum: 10c0/e15973dfc822f6a455142433fa393ea2dd9fd4ba443e0d2fb68c6be7cd9a36e13412f061ccfe436a2c90fa070c4538bdd50985d374e85606c98800d372c17eb9 languageName: node linkType: hard -"@typescript-eslint/parser@npm:^5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/parser@npm:5.62.0" +"@typescript-eslint/parser@npm:^8.55.0": + version: 8.55.0 + resolution: "@typescript-eslint/parser@npm:8.55.0" dependencies: - "@typescript-eslint/scope-manager": "npm:5.62.0" - "@typescript-eslint/types": "npm:5.62.0" - "@typescript-eslint/typescript-estree": "npm:5.62.0" - debug: "npm:^4.3.4" + "@typescript-eslint/scope-manager": "npm:8.55.0" + "@typescript-eslint/types": "npm:8.55.0" + "@typescript-eslint/typescript-estree": "npm:8.55.0" + "@typescript-eslint/visitor-keys": "npm:8.55.0" + debug: "npm:^4.4.3" peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/315194b3bf39beb9bd16c190956c46beec64b8371e18d6bb72002108b250983eb1e186a01d34b77eb4045f4941acbb243b16155fbb46881105f65e37dc9e24d4 + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <6.0.0" + checksum: 10c0/8b8f8caf64a43b98bff8e7bb99cd62d7c72daeee44e80e0a5f693dd376d9c898997e0b9fd5521604d1445bcb24552f54aed5cae022072f8c354a2baf2a452284 languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/scope-manager@npm:5.62.0" +"@typescript-eslint/project-service@npm:8.55.0": + version: 8.55.0 + resolution: "@typescript-eslint/project-service@npm:8.55.0" dependencies: - "@typescript-eslint/types": "npm:5.62.0" - "@typescript-eslint/visitor-keys": "npm:5.62.0" - checksum: 10c0/861253235576c1c5c1772d23cdce1418c2da2618a479a7de4f6114a12a7ca853011a1e530525d0931c355a8fd237b9cd828fac560f85f9623e24054fd024726f + "@typescript-eslint/tsconfig-utils": "npm:^8.55.0" + "@typescript-eslint/types": "npm:^8.55.0" + debug: "npm:^4.4.3" + peerDependencies: + typescript: ">=4.8.4 <6.0.0" + checksum: 10c0/f35273a63635d2de84409f68dfcea901ed2cd3f08206abb825d742b929c8fce66e0a6a32524d87ce895a7c4c2549e4388baa08644c0a5244c9708151b0f62f52 languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/type-utils@npm:5.62.0" +"@typescript-eslint/scope-manager@npm:8.55.0": + version: 8.55.0 + resolution: "@typescript-eslint/scope-manager@npm:8.55.0" dependencies: - "@typescript-eslint/typescript-estree": "npm:5.62.0" - "@typescript-eslint/utils": "npm:5.62.0" - debug: "npm:^4.3.4" - tsutils: "npm:^3.21.0" + "@typescript-eslint/types": "npm:8.55.0" + "@typescript-eslint/visitor-keys": "npm:8.55.0" + checksum: 10c0/c42bd6b8e4936cac8bee3adbc2f707e3aee5f16af3dd18c1d095f4a1b881471b58de73abc0ad176db98654683a808946902e51d86efff39dc7610d29152c3078 + languageName: node + linkType: hard + +"@typescript-eslint/tsconfig-utils@npm:8.55.0, @typescript-eslint/tsconfig-utils@npm:^8.55.0": + version: 8.55.0 + resolution: "@typescript-eslint/tsconfig-utils@npm:8.55.0" peerDependencies: - eslint: "*" - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/93112e34026069a48f0484b98caca1c89d9707842afe14e08e7390af51cdde87378df29d213d3bbd10a7cfe6f91b228031b56218515ce077bdb62ddea9d9f474 + typescript: ">=4.8.4 <6.0.0" + checksum: 10c0/77b9a0d0b1d6ab0ce26c81394bb1aa969649016d2857e5f915a15b88012ac3dccec9fc5ff65535e1cc373434e1462513f7964e416a8d7a695f7277dcd39ec2af + languageName: node + linkType: hard + +"@typescript-eslint/type-utils@npm:8.55.0": + version: 8.55.0 + resolution: "@typescript-eslint/type-utils@npm:8.55.0" + dependencies: + "@typescript-eslint/types": "npm:8.55.0" + "@typescript-eslint/typescript-estree": "npm:8.55.0" + "@typescript-eslint/utils": "npm:8.55.0" + debug: "npm:^4.4.3" + ts-api-utils: "npm:^2.4.0" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <6.0.0" + checksum: 10c0/4987440d6e1ee2ae8024259796381612ab2fc81821ff93c45400f803726ea4894a25d07afa5f80cdf3081a189d99dc83a3a8dcd94ff9a4cab81461fe28ab9aef languageName: node linkType: hard -"@typescript-eslint/types@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/types@npm:5.62.0" - checksum: 10c0/7febd3a7f0701c0b927e094f02e82d8ee2cada2b186fcb938bc2b94ff6fbad88237afc304cbaf33e82797078bbbb1baf91475f6400912f8b64c89be79bfa4ddf +"@typescript-eslint/types@npm:8.55.0, @typescript-eslint/types@npm:^8.55.0": + version: 8.55.0 + resolution: "@typescript-eslint/types@npm:8.55.0" + checksum: 10c0/dc572f55966e2f0fee149e5d5e42a91cedcdeac451bff29704eb701f9336f123bbc7d7abcfbda717f9e1ef6b402fa24679908bc6032e67513287403037ef345f languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/typescript-estree@npm:5.62.0" +"@typescript-eslint/typescript-estree@npm:8.55.0": + version: 8.55.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.55.0" dependencies: - "@typescript-eslint/types": "npm:5.62.0" - "@typescript-eslint/visitor-keys": "npm:5.62.0" - debug: "npm:^4.3.4" - globby: "npm:^11.1.0" - is-glob: "npm:^4.0.3" - semver: "npm:^7.3.7" - tsutils: "npm:^3.21.0" - peerDependenciesMeta: - typescript: - optional: true - checksum: 10c0/d7984a3e9d56897b2481940ec803cb8e7ead03df8d9cfd9797350be82ff765dfcf3cfec04e7355e1779e948da8f02bc5e11719d07a596eb1cb995c48a95e38cf + "@typescript-eslint/project-service": "npm:8.55.0" + "@typescript-eslint/tsconfig-utils": "npm:8.55.0" + "@typescript-eslint/types": "npm:8.55.0" + "@typescript-eslint/visitor-keys": "npm:8.55.0" + debug: "npm:^4.4.3" + minimatch: "npm:^9.0.5" + semver: "npm:^7.7.3" + tinyglobby: "npm:^0.2.15" + ts-api-utils: "npm:^2.4.0" + peerDependencies: + typescript: ">=4.8.4 <6.0.0" + checksum: 10c0/2db3ff9489945ad04508b14009eb0f6b2b7c6c2469805327fa09ffa460af354cd181ff2e8153f9008bd60254efb54a004a59ccacbdbc9c963956e2c2c1189dbc languageName: node linkType: hard -"@typescript-eslint/utils@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/utils@npm:5.62.0" +"@typescript-eslint/utils@npm:8.55.0": + version: 8.55.0 + resolution: "@typescript-eslint/utils@npm:8.55.0" dependencies: - "@eslint-community/eslint-utils": "npm:^4.2.0" - "@types/json-schema": "npm:^7.0.9" - "@types/semver": "npm:^7.3.12" - "@typescript-eslint/scope-manager": "npm:5.62.0" - "@typescript-eslint/types": "npm:5.62.0" - "@typescript-eslint/typescript-estree": "npm:5.62.0" - eslint-scope: "npm:^5.1.1" - semver: "npm:^7.3.7" + "@eslint-community/eslint-utils": "npm:^4.9.1" + "@typescript-eslint/scope-manager": "npm:8.55.0" + "@typescript-eslint/types": "npm:8.55.0" + "@typescript-eslint/typescript-estree": "npm:8.55.0" peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 10c0/f09b7d9952e4a205eb1ced31d7684dd55cee40bf8c2d78e923aa8a255318d97279825733902742c09d8690f37a50243f4c4d383ab16bd7aefaf9c4b438f785e1 + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <6.0.0" + checksum: 10c0/b57b86ac531e433c8057279805e6c903250460bc937cea46ec3b9284181a38f23b7c1ef092e8a1e37179432b39bd587c33db7f031b4243b1207ef37f23e4f24f languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/visitor-keys@npm:5.62.0" +"@typescript-eslint/visitor-keys@npm:8.55.0": + version: 8.55.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.55.0" dependencies: - "@typescript-eslint/types": "npm:5.62.0" - eslint-visitor-keys: "npm:^3.3.0" - checksum: 10c0/7c3b8e4148e9b94d9b7162a596a1260d7a3efc4e65199693b8025c71c4652b8042501c0bc9f57654c1e2943c26da98c0f77884a746c6ae81389fcb0b513d995d + "@typescript-eslint/types": "npm:8.55.0" + eslint-visitor-keys: "npm:^4.2.1" + checksum: 10c0/995c5ca91f7c7c1f3c4fdb4f98654abdff55efa570076b9b012da4cc203ebe7e2aee57ba83208ae51c2aef496c45cb8f6909560349131b779f31ce6f8758da23 languageName: node linkType: hard @@ -1686,13 +1704,6 @@ __metadata: languageName: node linkType: hard -"array-union@npm:^2.1.0": - version: 2.1.0 - resolution: "array-union@npm:2.1.0" - checksum: 10c0/429897e68110374f39b771ec47a7161fc6a8fc33e196857c0a396dc75df0b5f65e4d046674db764330b6bb66b39ef48dd7c53b6a2ee75cfb0681e0c1a7033962 - languageName: node - linkType: hard - "array.prototype.findlastindex@npm:^1.2.6": version: 1.2.6 resolution: "array.prototype.findlastindex@npm:1.2.6" @@ -2178,7 +2189,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4": +"debug@npm:4, debug@npm:^4.4.3": version: 4.4.3 resolution: "debug@npm:4.4.3" dependencies: @@ -2273,15 +2284,6 @@ __metadata: languageName: node linkType: hard -"dir-glob@npm:^3.0.1": - version: 3.0.1 - resolution: "dir-glob@npm:3.0.1" - dependencies: - path-type: "npm:^4.0.0" - checksum: 10c0/dcac00920a4d503e38bb64001acb19df4efc14536ada475725e12f52c16777afdee4db827f55f13a908ee7efc0cb282e2e3dbaeeb98c0993dd93d1802d3bf00c - languageName: node - linkType: hard - "doctrine@npm:^2.1.0": version: 2.1.0 resolution: "doctrine@npm:2.1.0" @@ -2643,16 +2645,6 @@ __metadata: languageName: node linkType: hard -"eslint-scope@npm:^5.1.1": - version: 5.1.1 - resolution: "eslint-scope@npm:5.1.1" - dependencies: - esrecurse: "npm:^4.3.0" - estraverse: "npm:^4.1.1" - checksum: 10c0/d30ef9dc1c1cbdece34db1539a4933fe3f9b14e1ffb27ecc85987902ee663ad7c9473bbd49a9a03195a373741e62e2f807c4938992e019b511993d163450e70a - languageName: node - linkType: hard - "eslint-scope@npm:^7.2.2": version: 7.2.2 resolution: "eslint-scope@npm:7.2.2" @@ -2663,13 +2655,20 @@ __metadata: languageName: node linkType: hard -"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": +"eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": version: 3.4.3 resolution: "eslint-visitor-keys@npm:3.4.3" checksum: 10c0/92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820 languageName: node linkType: hard +"eslint-visitor-keys@npm:^4.2.1": + version: 4.2.1 + resolution: "eslint-visitor-keys@npm:4.2.1" + checksum: 10c0/fcd43999199d6740db26c58dbe0c2594623e31ca307e616ac05153c9272f12f1364f5a0b1917a8e962268fdecc6f3622c1c2908b4fcc2e047a106fe6de69dc43 + languageName: node + linkType: hard + "eslint@npm:^8.43.0": version: 8.57.1 resolution: "eslint@npm:8.57.1" @@ -2757,13 +2756,6 @@ __metadata: languageName: node linkType: hard -"estraverse@npm:^4.1.1": - version: 4.3.0 - resolution: "estraverse@npm:4.3.0" - checksum: 10c0/9cb46463ef8a8a4905d3708a652d60122a0c20bb58dec7e0e12ab0e7235123d74214fc0141d743c381813e1b992767e2708194f6f6e0f9fd00c1b4e0887b8b6d - languageName: node - linkType: hard - "estraverse@npm:^5.1.0, estraverse@npm:^5.2.0": version: 5.3.0 resolution: "estraverse@npm:5.3.0" @@ -2847,19 +2839,6 @@ __metadata: languageName: node linkType: hard -"fast-glob@npm:^3.2.9": - version: 3.3.3 - resolution: "fast-glob@npm:3.3.3" - dependencies: - "@nodelib/fs.stat": "npm:^2.0.2" - "@nodelib/fs.walk": "npm:^1.2.3" - glob-parent: "npm:^5.1.2" - merge2: "npm:^1.3.0" - micromatch: "npm:^4.0.8" - checksum: 10c0/f6aaa141d0d3384cf73cbcdfc52f475ed293f6d5b65bfc5def368b09163a9f7e5ec2b3014d80f733c405f58e470ee0cc451c2937685045cddcdeaa24199c43fe - languageName: node - linkType: hard - "fast-json-stable-stringify@npm:2.x, fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" @@ -3178,15 +3157,6 @@ __metadata: languageName: node linkType: hard -"glob-parent@npm:^5.1.2": - version: 5.1.2 - resolution: "glob-parent@npm:5.1.2" - dependencies: - is-glob: "npm:^4.0.1" - checksum: 10c0/cab87638e2112bee3f839ef5f6e0765057163d39c66be8ec1602f3823da4692297ad4e972de876ea17c44d652978638d2fd583c6713d0eb6591706825020c9ee - languageName: node - linkType: hard - "glob-parent@npm:^6.0.2": version: 6.0.2 resolution: "glob-parent@npm:6.0.2" @@ -3252,20 +3222,6 @@ __metadata: languageName: node linkType: hard -"globby@npm:^11.1.0": - version: 11.1.0 - resolution: "globby@npm:11.1.0" - dependencies: - array-union: "npm:^2.1.0" - dir-glob: "npm:^3.0.1" - fast-glob: "npm:^3.2.9" - ignore: "npm:^5.2.0" - merge2: "npm:^1.4.1" - slash: "npm:^3.0.0" - checksum: 10c0/b39511b4afe4bd8a7aead3a27c4ade2b9968649abab0a6c28b1a90141b96ca68ca5db1302f7c7bd29eab66bf51e13916b8e0a3d0ac08f75e1e84a39b35691189 - languageName: node - linkType: hard - "gopd@npm:^1.0.1, gopd@npm:^1.2.0": version: 1.2.0 resolution: "gopd@npm:1.2.0" @@ -3619,7 +3575,7 @@ __metadata: languageName: node linkType: hard -"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3": +"is-glob@npm:^4.0.0, is-glob@npm:^4.0.3": version: 4.0.3 resolution: "is-glob@npm:4.0.3" dependencies: @@ -4555,8 +4511,8 @@ __metadata: "@types/jest": "npm:^29.5.14" "@types/node": "npm:^22.15.3" "@types/node-forge": "npm:1.3.11" - "@typescript-eslint/eslint-plugin": "npm:^5.62.0" - "@typescript-eslint/parser": "npm:^5.62.0" + "@typescript-eslint/eslint-plugin": "npm:^8.55.0" + "@typescript-eslint/parser": "npm:^8.55.0" eslint: "npm:^8.43.0" eslint-config-prettier: "npm:^8.10.0" eslint-import-resolver-typescript: "npm:^3.6.1" @@ -4577,14 +4533,7 @@ __metadata: languageName: node linkType: hard -"merge2@npm:^1.3.0, merge2@npm:^1.4.1": - version: 1.4.1 - resolution: "merge2@npm:1.4.1" - checksum: 10c0/254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb - languageName: node - linkType: hard - -"micromatch@npm:^4.0.4, micromatch@npm:^4.0.8": +"micromatch@npm:^4.0.4": version: 4.0.8 resolution: "micromatch@npm:4.0.8" dependencies: @@ -4619,7 +4568,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^9.0.4": +"minimatch@npm:^9.0.4, minimatch@npm:^9.0.5": version: 9.0.5 resolution: "minimatch@npm:9.0.5" dependencies: @@ -4734,13 +4683,6 @@ __metadata: languageName: node linkType: hard -"natural-compare-lite@npm:^1.4.0": - version: 1.4.0 - resolution: "natural-compare-lite@npm:1.4.0" - checksum: 10c0/f6cef26f5044515754802c0fc475d81426f3b90fe88c20fabe08771ce1f736ce46e0397c10acb569a4dd0acb84c7f1ee70676122f95d5bfdd747af3a6c6bbaa8 - languageName: node - linkType: hard - "natural-compare@npm:^1.4.0": version: 1.4.0 resolution: "natural-compare@npm:1.4.0" @@ -5052,13 +4994,6 @@ __metadata: languageName: node linkType: hard -"path-type@npm:^4.0.0": - version: 4.0.0 - resolution: "path-type@npm:4.0.0" - checksum: 10c0/666f6973f332f27581371efaf303fd6c272cc43c2057b37aa99e3643158c7e4b2626549555d88626e99ea9e046f82f32e41bbde5f1508547e9a11b149b52387c - languageName: node - linkType: hard - "picocolors@npm:^1.1.1": version: 1.1.1 resolution: "picocolors@npm:1.1.1" @@ -5401,7 +5336,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.3.7, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.7.1, semver@npm:^7.7.2": +"semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.7.1, semver@npm:^7.7.2": version: 7.7.2 resolution: "semver@npm:7.7.2" bin: @@ -5410,6 +5345,15 @@ __metadata: languageName: node linkType: hard +"semver@npm:^7.7.3": + version: 7.7.4 + resolution: "semver@npm:7.7.4" + bin: + semver: bin/semver.js + checksum: 10c0/5215ad0234e2845d4ea5bb9d836d42b03499546ddafb12075566899fc617f68794bb6f146076b6881d755de17d6c6cc73372555879ec7dce2c2feee947866ad2 + languageName: node + linkType: hard + "set-function-length@npm:^1.2.2": version: 1.2.2 resolution: "set-function-length@npm:1.2.2" @@ -5807,7 +5751,7 @@ __metadata: languageName: node linkType: hard -"tinyglobby@npm:^0.2.12": +"tinyglobby@npm:^0.2.12, tinyglobby@npm:^0.2.15": version: 0.2.15 resolution: "tinyglobby@npm:0.2.15" dependencies: @@ -5852,6 +5796,15 @@ __metadata: languageName: node linkType: hard +"ts-api-utils@npm:^2.4.0": + version: 2.4.0 + resolution: "ts-api-utils@npm:2.4.0" + peerDependencies: + typescript: ">=4.8.4" + checksum: 10c0/ed185861aef4e7124366a3f6561113557a57504267d4d452a51e0ba516a9b6e713b56b4aeaab9fa13de9db9ab755c65c8c13a777dba9133c214632cb7b65c083 + languageName: node + linkType: hard + "ts-jest@npm:^29.3.2": version: 29.4.0 resolution: "ts-jest@npm:29.4.0" @@ -5904,13 +5857,6 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^1.8.1": - version: 1.14.1 - resolution: "tslib@npm:1.14.1" - checksum: 10c0/69ae09c49eea644bc5ebe1bca4fa4cc2c82b7b3e02f43b84bd891504edf66dbc6b2ec0eef31a957042de2269139e4acff911e6d186a258fb14069cd7f6febce2 - languageName: node - linkType: hard - "tslib@npm:^2.4.0": version: 2.8.1 resolution: "tslib@npm:2.8.1" @@ -5918,17 +5864,6 @@ __metadata: languageName: node linkType: hard -"tsutils@npm:^3.21.0": - version: 3.21.0 - resolution: "tsutils@npm:3.21.0" - dependencies: - tslib: "npm:^1.8.1" - peerDependencies: - typescript: ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - checksum: 10c0/02f19e458ec78ead8fffbf711f834ad8ecd2cc6ade4ec0320790713dccc0a412b99e7fd907c4cda2a1dc602c75db6f12e0108e87a5afad4b2f9e90a24cabd5a2 - languageName: node - linkType: hard - "type-check@npm:^0.4.0, type-check@npm:~0.4.0": version: 0.4.0 resolution: "type-check@npm:0.4.0"