@kb-labs/marketplace-npm 2.60.0 → 2.61.0
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 +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/npm-source.ts"],"names":["versionSep"],"mappings":";;;;;;AAgBO,IAAM,mBAAA,GAAN,cAAkC,KAAA,CAAM;AAAA,EACpC,IAAA;AAAA,EACA,IAAA;AAAA,EACT,WAAA,CAAY,IAAA,EAAmC,IAAA,EAAc,OAAA,EAAiB;AAC5E,IAAA,KAAA,CAAM,OAAO,CAAA;AACb,IAAA,IAAA,CAAK,IAAA,GAAO,qBAAA;AACZ,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AAAA,EACd;AACF;AAEO,IAAM,mBAAN,MAAgD;AAAA,EACrD,MAAM,QAAQ,IAAA,EAAwC;AACpD,IAAA,MAAM,EAAA,GAAK,mBAAmB,IAAI,CAAA;AAClC,IAAA,IAAI,CAAC,EAAA,EAAI;AACP,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,sBAAA,EAAyB,IAAI,CAAA,CAAE,CAAA;AAAA,IACjD;AAEA,IAAA,OAAO;AAAA,MACL,EAAA;AAAA,MACA,OAAA,EAAS,cAAA,CAAe,IAAI,CAAA,IAAK,QAAA;AAAA,MACjC,SAAA,EAAW,EAAA;AAAA;AAAA,MACX,MAAA,EAAQ;AAAA,KACV;AAAA,EACF;AAAA,EAEA,MAAM,OAAA,CACJ,GAAA,EACA,IAAA,EACA,IAAA,EAC2B;AAC3B,IAAA,MAAM,IAAA,GAAO,GAAA,CAAI,OAAA,KAAY,QAAA,GAAW,GAAA,CAAI,EAAA,GAAK,CAAA,EAAG,GAAA,CAAI,EAAE,CAAA,CAAA,EAAI,GAAA,CAAI,OAAO,CAAA,CAAA;AACzE,IAAA,MAAM,IAAA,GAAO,CAAC,KAAA,EAAO,IAAI,CAAA;AACzB,IAAA,IAAI,MAAM,GAAA,EAAK;AAAC,MAAA,IAAA,CAAK,KAAK,YAAY,CAAA;AAAA,IAAE;
|
|
1
|
+
{"version":3,"sources":["../src/npm-source.ts"],"names":["versionSep"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * @module @kb-labs/marketplace-npm/npm-source\n * pnpm-based PackageSource implementation.\n * This is the ONLY place in the marketplace codebase that calls pnpm.\n */\n\nimport { execa } from 'execa';\nimport * as path from 'node:path';\nimport * as fs from 'node:fs/promises';\nimport * as crypto from 'node:crypto';\nimport type {\n PackageSource,\n ResolvedPackage,\n InstalledPackage,\n} from '@kb-labs/marketplace-contracts';\n\nexport class PackageInstallError extends Error {\n readonly code: 'NOT_FOUND' | 'INSTALL_FAILED';\n readonly spec: string;\n constructor(code: PackageInstallError['code'], spec: string, message: string) {\n super(message);\n this.name = 'PackageInstallError';\n this.code = code;\n this.spec = spec;\n }\n}\n\nexport class NpmPackageSource implements PackageSource {\n async resolve(spec: string): Promise<ResolvedPackage> {\n const id = extractPackageName(spec);\n if (!id) {\n throw new Error(`Invalid package spec: ${spec}`);\n }\n\n return {\n id,\n version: extractVersion(spec) ?? 'latest',\n integrity: '', // computed after install\n source: 'marketplace',\n };\n }\n\n async install(\n pkg: ResolvedPackage,\n root: string,\n opts?: { dev?: boolean },\n ): Promise<InstalledPackage> {\n const spec = pkg.version === 'latest' ? pkg.id : `${pkg.id}@${pkg.version}`;\n const args = ['add', spec];\n if (opts?.dev) {args.push('--save-dev');}\n // Bypass the pnpm workspace-root guard: kb-create projects are flat (single-package),\n // so adding to the project root is intentional. Without this flag pnpm throws\n // ERR_PNPM_ADDING_TO_ROOT when a pnpm-workspace.yaml exists in the project directory.\n args.push('--ignore-workspace-root-check');\n\n try {\n await execa('pnpm', args, { cwd: root, timeout: 5 * 60 * 1000 });\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n const code = msg.includes('ERR_PNPM_FETCH_404') || msg.includes('Not Found - 404')\n ? 'NOT_FOUND'\n : 'INSTALL_FAILED';\n throw new PackageInstallError(code, spec, `pnpm add ${spec} failed: ${msg}`);\n }\n\n const packageRoot = path.join(root, 'node_modules', pkg.id);\n\n // Read actual installed version\n let version = pkg.version;\n try {\n const pkgJson = JSON.parse(await fs.readFile(path.join(packageRoot, 'package.json'), 'utf-8'));\n version = pkgJson.version ?? version;\n } catch { /* use spec version */ }\n\n // Compute integrity\n const integrity = await computeIntegrity(packageRoot);\n\n return {\n id: pkg.id,\n version,\n packageRoot,\n integrity,\n };\n }\n\n async remove(packageId: string, root: string): Promise<void> {\n await execa('pnpm', ['remove', packageId], { cwd: root, timeout: 2 * 60 * 1000 });\n }\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction extractPackageName(spec: string): string | null {\n if (!spec || spec.startsWith('.') || spec.startsWith('/')) {return null;}\n\n if (spec.startsWith('@')) {\n const slashIndex = spec.indexOf('/');\n if (slashIndex === -1) {return null;}\n const versionSep = spec.lastIndexOf('@');\n return versionSep > slashIndex ? spec.slice(0, versionSep) : spec;\n }\n\n const versionSep = spec.indexOf('@');\n return versionSep > 0 ? spec.slice(0, versionSep) : spec;\n}\n\nfunction extractVersion(spec: string): string | null {\n if (spec.startsWith('@')) {\n const slashIndex = spec.indexOf('/');\n const lastAt = spec.lastIndexOf('@');\n return lastAt > slashIndex ? spec.slice(lastAt + 1) : null;\n }\n const atIndex = spec.indexOf('@');\n return atIndex > 0 ? spec.slice(atIndex + 1) : null;\n}\n\nasync function computeIntegrity(packageRoot: string): Promise<string> {\n try {\n const content = await fs.readFile(path.join(packageRoot, 'package.json'));\n const hash = crypto.createHash('sha256').update(content).digest('base64');\n return `sha256-${hash}`;\n } catch {\n return '';\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kb-labs/marketplace-npm",
|
|
3
3
|
"description": "npm/pnpm package source for KB Labs marketplace",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.61.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"types": "./dist/index.d.ts",
|
|
@@ -18,13 +18,13 @@
|
|
|
18
18
|
],
|
|
19
19
|
"dependencies": {
|
|
20
20
|
"execa": "^9.5.3",
|
|
21
|
-
"@kb-labs/marketplace-contracts": "2.
|
|
21
|
+
"@kb-labs/marketplace-contracts": "2.61.0"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
24
|
"tsup": "^8.5.0",
|
|
25
25
|
"typescript": "^5",
|
|
26
26
|
"vitest": "^3.2.4",
|
|
27
|
-
"@kb-labs/devkit": "2.
|
|
27
|
+
"@kb-labs/devkit": "2.61.0"
|
|
28
28
|
},
|
|
29
29
|
"engines": {
|
|
30
30
|
"node": ">=20.0.0",
|