diff --git a/.yarn/versions/d2747135.yml b/.yarn/versions/d2747135.yml new file mode 100644 index 000000000000..9c21448a565b --- /dev/null +++ b/.yarn/versions/d2747135.yml @@ -0,0 +1,35 @@ +releases: + "@yarnpkg/cli": patch + "@yarnpkg/core": patch + +declined: + - "@yarnpkg/plugin-compat" + - "@yarnpkg/plugin-constraints" + - "@yarnpkg/plugin-dlx" + - "@yarnpkg/plugin-essentials" + - "@yarnpkg/plugin-exec" + - "@yarnpkg/plugin-file" + - "@yarnpkg/plugin-git" + - "@yarnpkg/plugin-github" + - "@yarnpkg/plugin-http" + - "@yarnpkg/plugin-init" + - "@yarnpkg/plugin-interactive-tools" + - "@yarnpkg/plugin-jsr" + - "@yarnpkg/plugin-link" + - "@yarnpkg/plugin-nm" + - "@yarnpkg/plugin-npm" + - "@yarnpkg/plugin-npm-cli" + - "@yarnpkg/plugin-pack" + - "@yarnpkg/plugin-patch" + - "@yarnpkg/plugin-pnp" + - "@yarnpkg/plugin-pnpm" + - "@yarnpkg/plugin-stage" + - "@yarnpkg/plugin-typescript" + - "@yarnpkg/plugin-version" + - "@yarnpkg/plugin-workspace-tools" + - "@yarnpkg/builder" + - "@yarnpkg/doctor" + - "@yarnpkg/extensions" + - "@yarnpkg/nm" + - "@yarnpkg/pnpify" + - "@yarnpkg/sdks" diff --git a/packages/yarnpkg-core/sources/Manifest.ts b/packages/yarnpkg-core/sources/Manifest.ts index f322051c5742..4123399053ed 100644 --- a/packages/yarnpkg-core/sources/Manifest.ts +++ b/packages/yarnpkg-core/sources/Manifest.ts @@ -523,6 +523,9 @@ export class Manifest { if (typeof data.publishConfig.registry === `string`) this.publishConfig.registry = data.publishConfig.registry; + if (typeof data.publishConfig.provenance === `boolean`) + this.publishConfig.provenance = data.publishConfig.provenance; + if (typeof data.publishConfig.bin === `string`) { if (this.name !== null) { this.publishConfig.bin = new Map([[this.name.name, normalizeSlashes(data.publishConfig.bin)]]); diff --git a/packages/yarnpkg-core/tests/Manifest.test.ts b/packages/yarnpkg-core/tests/Manifest.test.ts index 9b4141bef3fa..f1be270af9ba 100644 --- a/packages/yarnpkg-core/tests/Manifest.test.ts +++ b/packages/yarnpkg-core/tests/Manifest.test.ts @@ -55,4 +55,21 @@ describe(`Manifest`, () => { expect(manifest.exportTo({}).bin).toEqual({bin2: `./bin2.js`}); }); }); + + describe(`publishConfig`, () => { + it(`should parse provenance field when set to true`, () => { + const manifest = Manifest.fromText(`{ "publishConfig": { "provenance": true } }`); + expect(manifest.publishConfig?.provenance).toBe(true); + }); + + it(`should parse provenance field when set to false`, () => { + const manifest = Manifest.fromText(`{ "publishConfig": { "provenance": false } }`); + expect(manifest.publishConfig?.provenance).toBe(false); + }); + + it(`should ignore non-boolean provenance values`, () => { + const manifest = Manifest.fromText(`{ "publishConfig": { "provenance": "true" } }`); + expect(manifest.publishConfig?.provenance).toBeUndefined(); + }); + }); });