@yawlabs/npmjs-mcp 0.11.12 → 0.11.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +50 -4
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -31105,8 +31105,12 @@ async function request(baseUrl, path, options) {
|
|
|
31105
31105
|
debug(`${method} ${url2} -> ${res.status} ${elapsed}ms`);
|
|
31106
31106
|
return { ok: true, status: res.status };
|
|
31107
31107
|
}
|
|
31108
|
-
const
|
|
31108
|
+
const text = await res.text();
|
|
31109
31109
|
debug(`${method} ${url2} -> ${res.status} ${elapsed}ms`);
|
|
31110
|
+
if (text.length === 0) {
|
|
31111
|
+
return { ok: true, status: res.status };
|
|
31112
|
+
}
|
|
31113
|
+
const data = JSON.parse(text);
|
|
31110
31114
|
return { ok: true, status: res.status, data };
|
|
31111
31115
|
} catch (err) {
|
|
31112
31116
|
const message = err instanceof Error ? err.message : String(err);
|
|
@@ -32153,6 +32157,15 @@ function classifyHookTarget(target) {
|
|
|
32153
32157
|
return { type: "package", name: target };
|
|
32154
32158
|
}
|
|
32155
32159
|
function validateHookTarget(target) {
|
|
32160
|
+
if (typeof target !== "string" || target.length === 0) {
|
|
32161
|
+
return "Hook target is empty.";
|
|
32162
|
+
}
|
|
32163
|
+
if (target === "~") {
|
|
32164
|
+
return "Hook target '~' is missing the username (use '~your-username').";
|
|
32165
|
+
}
|
|
32166
|
+
if (target === "@") {
|
|
32167
|
+
return "Hook target '@' is missing the scope (use '@scope' or '@scope/pkg').";
|
|
32168
|
+
}
|
|
32156
32169
|
const { type, name } = classifyHookTarget(target);
|
|
32157
32170
|
if (type === "owner") return validateUsername(name);
|
|
32158
32171
|
if (type === "scope") return validateScope(name);
|
|
@@ -32675,6 +32688,8 @@ var packageTools = [
|
|
|
32675
32688
|
version: external_exports.string().optional().describe("Semver version or dist-tag (default: 'latest')")
|
|
32676
32689
|
}),
|
|
32677
32690
|
handler: async (input) => {
|
|
32691
|
+
const nameErr = validatePackageName(input.name);
|
|
32692
|
+
if (nameErr) return { ok: false, status: 400, error: nameErr };
|
|
32678
32693
|
const ver = input.version ?? "latest";
|
|
32679
32694
|
let typesPackage;
|
|
32680
32695
|
if (input.name.startsWith("@")) {
|
|
@@ -33254,6 +33269,13 @@ var workflowTools = [
|
|
|
33254
33269
|
});
|
|
33255
33270
|
canPublishHeadless = false;
|
|
33256
33271
|
}
|
|
33272
|
+
} else if (twoFactorAuth === "disabled" && readWriteTokens.length === 0) {
|
|
33273
|
+
checks.push({
|
|
33274
|
+
check: "Token capability",
|
|
33275
|
+
status: "fail",
|
|
33276
|
+
detail: `2FA is disabled but no read-write tokens found out of ${totalTokens} total. Need a token with publish permissions.`
|
|
33277
|
+
});
|
|
33278
|
+
canPublishHeadless = false;
|
|
33257
33279
|
}
|
|
33258
33280
|
if (isScoped && scope) {
|
|
33259
33281
|
checks.push({
|
|
@@ -33425,7 +33447,19 @@ var writeTools = [
|
|
|
33425
33447
|
for (const v of affected) {
|
|
33426
33448
|
packument.versions[v].deprecated = input.message;
|
|
33427
33449
|
}
|
|
33428
|
-
|
|
33450
|
+
if (!packument._rev) {
|
|
33451
|
+
return {
|
|
33452
|
+
ok: false,
|
|
33453
|
+
status: 500,
|
|
33454
|
+
error: `Packument for ${input.name} missing _rev -- cannot deprecate. Try again; this is usually transient.`
|
|
33455
|
+
};
|
|
33456
|
+
}
|
|
33457
|
+
delete packument._revisions;
|
|
33458
|
+
delete packument._attachments;
|
|
33459
|
+
const putRes = await registryPutAuth(
|
|
33460
|
+
`/${encPkg(input.name)}/-rev/${encodeURIComponent(packument._rev)}`,
|
|
33461
|
+
packument
|
|
33462
|
+
);
|
|
33429
33463
|
if (!putRes.ok) return translateError(putRes, { pkg: input.name, op: "deprecate (write)" });
|
|
33430
33464
|
return {
|
|
33431
33465
|
ok: true,
|
|
@@ -33475,7 +33509,19 @@ var writeTools = [
|
|
|
33475
33509
|
for (const v of affected) {
|
|
33476
33510
|
packument.versions[v].deprecated = "";
|
|
33477
33511
|
}
|
|
33478
|
-
|
|
33512
|
+
if (!packument._rev) {
|
|
33513
|
+
return {
|
|
33514
|
+
ok: false,
|
|
33515
|
+
status: 500,
|
|
33516
|
+
error: `Packument for ${input.name} missing _rev -- cannot undeprecate. Try again; this is usually transient.`
|
|
33517
|
+
};
|
|
33518
|
+
}
|
|
33519
|
+
delete packument._revisions;
|
|
33520
|
+
delete packument._attachments;
|
|
33521
|
+
const putRes = await registryPutAuth(
|
|
33522
|
+
`/${encPkg(input.name)}/-rev/${encodeURIComponent(packument._rev)}`,
|
|
33523
|
+
packument
|
|
33524
|
+
);
|
|
33479
33525
|
if (!putRes.ok) return translateError(putRes, { pkg: input.name, op: "undeprecate (write)" });
|
|
33480
33526
|
return {
|
|
33481
33527
|
ok: true,
|
|
@@ -34247,7 +34293,7 @@ var writeTools = [
|
|
|
34247
34293
|
];
|
|
34248
34294
|
|
|
34249
34295
|
// src/index.ts
|
|
34250
|
-
var version2 = true ? "0.11.
|
|
34296
|
+
var version2 = true ? "0.11.13" : (await null).createRequire(import.meta.url)("../package.json").version;
|
|
34251
34297
|
var subcommand = process.argv[2];
|
|
34252
34298
|
if (subcommand === "version" || subcommand === "--version" || subcommand === "-v" || subcommand === "-V") {
|
|
34253
34299
|
console.log(version2);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yawlabs/npmjs-mcp",
|
|
3
|
-
"version": "0.11.
|
|
3
|
+
"version": "0.11.13",
|
|
4
4
|
"mcpName": "io.github.YawLabs/npmjs-mcp",
|
|
5
5
|
"description": "npm registry MCP server — package intelligence, security audits, and dependency analysis for AI assistants",
|
|
6
6
|
"license": "MIT",
|