From 18c48e9284872a02c1de93e84964dc01eea1578d Mon Sep 17 00:00:00 2001 From: GENTILHOMME Thomas Date: Sat, 14 Feb 2026 05:35:27 +0100 Subject: [PATCH] refactor(tree-walker): use ManifestManager to walk the manifest --- .changeset/clever-dodos-stand.md | 6 ++++++ tsconfig.base.json | 3 ++- workspaces/mama/src/ManifestManager.class.ts | 8 ++++++++ workspaces/tree-walker/package.json | 1 + workspaces/tree-walker/src/npm/walker.ts | 13 +++++++++---- workspaces/tree-walker/tsconfig.json | 3 +++ 6 files changed, 29 insertions(+), 5 deletions(-) create mode 100644 .changeset/clever-dodos-stand.md diff --git a/.changeset/clever-dodos-stand.md b/.changeset/clever-dodos-stand.md new file mode 100644 index 00000000..892bebd3 --- /dev/null +++ b/.changeset/clever-dodos-stand.md @@ -0,0 +1,6 @@ +--- +"@nodesecure/tree-walker": minor +"@nodesecure/mama": minor +--- + +Use ManifestManager in NPM TreeWalker class diff --git a/tsconfig.base.json b/tsconfig.base.json index 76422932..49ec359c 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -1,6 +1,7 @@ { "extends": "@openally/config.typescript/esm-ts-next", "compilerOptions": { - "composite": true + "composite": true, + "types": ["node"] } } diff --git a/workspaces/mama/src/ManifestManager.class.ts b/workspaces/mama/src/ManifestManager.class.ts index 225d0f48..b056493e 100644 --- a/workspaces/mama/src/ManifestManager.class.ts +++ b/workspaces/mama/src/ManifestManager.class.ts @@ -120,6 +120,14 @@ export class ManifestManager< .some((script) => kUnsafeNPMScripts.has(script.toLowerCase())); } + get name() { + return this.document.name ?? "workspace"; + } + + get version() { + return this.document.version ?? "1.0.0"; + } + get moduleType() { return inspectModuleType(this.document); } diff --git a/workspaces/tree-walker/package.json b/workspaces/tree-walker/package.json index 3d53d402..5d0d14b0 100644 --- a/workspaces/tree-walker/package.json +++ b/workspaces/tree-walker/package.json @@ -38,6 +38,7 @@ "homepage": "https://github.com/NodeSecure/tree/master/workspaces/tree-walker#readme", "dependencies": { "@nodesecure/js-x-ray": "14.2.0", + "@nodesecure/mama": "2.1.1", "@nodesecure/npm-registry-sdk": "^4.0.0", "@nodesecure/npm-types": "^1.1.0", "@npmcli/arborist": "9.4.0", diff --git a/workspaces/tree-walker/src/npm/walker.ts b/workspaces/tree-walker/src/npm/walker.ts index 970ccc53..6119b675 100644 --- a/workspaces/tree-walker/src/npm/walker.ts +++ b/workspaces/tree-walker/src/npm/walker.ts @@ -2,6 +2,7 @@ import os from "node:os"; // Import Third-party Dependencies +import { ManifestManager } from "@nodesecure/mama"; import * as iter from "itertools"; import combineAsyncIterators from "combine-async-iterators"; import pacote from "pacote"; @@ -308,6 +309,8 @@ export class TreeWalker { manifest: PackageJSON | WorkspacesPackageJSON | ManifestVersion, options: WalkOptions = {} ): AsyncIterableIterator { + const mama = new ManifestManager(manifest); + this.relationsMap.clear(); const { maxDepth = Infinity, @@ -315,10 +318,12 @@ export class TreeWalker { includeDevDeps = false } = options; - const { dependencies, customResolvers, alias } = utils.mergeDependencies(manifest); + const { dependencies, customResolvers, alias } = utils.mergeDependencies( + mama.document + ); const rootDependency = new Dependency( - manifest?.name ?? "workspace", - manifest?.version ?? "1.0.0", + mama.name, + mama.version, { alias: Object.fromEntries(alias) } @@ -326,7 +331,7 @@ export class TreeWalker { try { const { _integrity: integrity } = await this.providers.pacote.manifest( - `${manifest.name}@${manifest.version}`, + mama.spec, this.registryOptions ); rootDependency.integrity = integrity; diff --git a/workspaces/tree-walker/tsconfig.json b/workspaces/tree-walker/tsconfig.json index d58c844e..c6d47ca4 100644 --- a/workspaces/tree-walker/tsconfig.json +++ b/workspaces/tree-walker/tsconfig.json @@ -8,6 +8,9 @@ "references": [ { "path": "../npm-types" + }, + { + "path": "../mama" } ] }