@anolilab/semantic-release-pnpm 1.0.0-alpha.8 → 1.0.0-alpha.9
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/CHANGELOG.md +7 -0
- package/dist/index.js +19 -19
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
## [1.0.0-alpha.9](https://github.com/anolilab/semantic-release-pnpm/compare/v1.0.0-alpha.8...v1.0.0-alpha.9) (2024-05-19)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* fixed issues with rc, added more tests ([c5af9c9](https://github.com/anolilab/semantic-release-pnpm/commit/c5af9c9c36f92480d159ec5010dfc87002249e96))
|
|
7
|
+
|
|
1
8
|
## [1.0.0-alpha.8](https://github.com/anolilab/semantic-release-pnpm/compare/v1.0.0-alpha.7...v1.0.0-alpha.8) (2024-05-18)
|
|
2
9
|
|
|
3
10
|
|
package/dist/index.js
CHANGED
|
@@ -1,36 +1,36 @@
|
|
|
1
1
|
import { execa } from 'execa';
|
|
2
2
|
import { validRange, gte } from 'semver';
|
|
3
|
-
import { isAccessibleSync, ensureFile, readFileSync,
|
|
3
|
+
import { isAccessibleSync, ensureFile, readFileSync, writeFile } from '@visulima/fs';
|
|
4
4
|
import { findPackageJson, findCacheDirectorySync, getPackageManagerVersion } from '@visulima/package';
|
|
5
|
-
import { resolve, join } from '@visulima/path';
|
|
6
|
-
import
|
|
5
|
+
import { resolve, join, dirname } from '@visulima/path';
|
|
6
|
+
import de from '@semantic-release/error';
|
|
7
7
|
import { homedir } from 'os';
|
|
8
8
|
import { cwd, env } from 'process';
|
|
9
9
|
import { parseJson, stripJsonComments } from '@visulima/fs/utils';
|
|
10
10
|
import { parse, stringify } from 'ini';
|
|
11
11
|
import { merge } from 'ts-deepmerge';
|
|
12
|
-
import
|
|
12
|
+
import q from 'normalize-url';
|
|
13
13
|
import { moveFile } from 'move-file';
|
|
14
|
-
import
|
|
15
|
-
import
|
|
14
|
+
import te from 'aggregate-error';
|
|
15
|
+
import Je from 'registry-auth-token';
|
|
16
16
|
import { URL } from 'url';
|
|
17
17
|
|
|
18
|
-
var
|
|
19
|
-
Your configuration for the \`branches\` option is \`${e}\`.`,message:"Invalid `branches` option."}),EINVALIDNPMPUBLISH:({npmPublish:e})=>({details:`The [npmPublish option](${
|
|
20
|
-
Your configuration for the \`npmPublish\` option is \`${e}\`.`,message:"Invalid `npmPublish` option."}),EINVALIDNPMTOKEN:({registry:e})=>({details:`The [npm token](${
|
|
18
|
+
var C=e=>e?validRange(e)?`release-${e}`:e:"latest";var U={name:"@anolilab/semantic-release-pnpm",version:"1.0.0-alpha.8",description:"Semantic-release plugin to publish a npm package with pnpm.",keywords:["anolilab","npm","publish","semantic-release","pnpm","monorepo"],homepage:"https://github.com/anolilab/semantic-release-pnpm",repository:{type:"git",url:"https://github.com/anolilab/semantic-release-pnpm.git"},license:"MIT",author:{name:"Daniel Bannert",email:"d.bannert@anolilab.de"},type:"module",exports:"./dist/index.js",main:"dist/index.js",types:"dist/index.d.ts",files:["dist","README.md","CHANGELOG.md"],scripts:{build:"cross-env NODE_ENV=development tsup","build:prod":"cross-env NODE_ENV=production tsup","lint:eslint":"eslint . --ext js,cjs,mjs,jsx,ts,tsx,json,yaml,yml,md,mdx --max-warnings=0 --config .eslintrc.cjs","lint:eslint:fix":"pnpm run lint:eslint --fix","lint:fix":"pnpm run lint:prettier:fix && pnpm run lint:eslint:fix","lint:packagejson":"publint --strict","lint:prettier":"prettier --config=.prettierrc.cjs --check .","lint:prettier:fix":"prettier --config=.prettierrc.cjs --write .","lint:secrets":"secretlint **/*","lint:staged":"lint-staged --verbose --concurrent false --debug","lint:text":"textlint ./.github/ ./README.md ./UPGRADE.md --parallel --experimental --cache --dry-run","lint:text:fix":"textlint ./.github/ ./README.md ./UPGRADE.md --parallel --experimental --fix","lint:types":"tsc --noEmit",prepare:"is-ci || (node verify-node-version.cjs && pnpx only-allow pnpm && husky install)","sort-package-json":"sort-package-json ./package.json",test:"vitest run","test:bench":"vitest bench","test:coverage":"vitest run --coverage","test:watch":"vitest","update:deps":"taze"},dependencies:{"@semantic-release/error":"^4.0.0","@visulima/fs":"^2.1.1","@visulima/package":"1.8.1","@visulima/path":"^1.0.0","aggregate-error":"^5.0.0",execa:"^9.1.0",ini:"4.1.2","move-file":"^3.1.0","normalize-url":"^8.0.1","registry-auth-token":"^5.0.2",semver:"^7.6.2","ts-deepmerge":"^7.0.0"},devDependencies:{"@anolilab/commitlint-config":"^5.0.3","@anolilab/eslint-config":"^15.0.3","@anolilab/lint-staged-config":"^2.1.7","@anolilab/prettier-config":"^5.0.14","@anolilab/textlint-config":"^8.0.16","@babel/core":"^7.24.5","@babel/eslint-parser":"7.24.5","@commitlint/cli":"^19.3.0","@commitlint/config-conventional":"^19.2.2","@secretlint/secretlint-rule-preset-recommend":"^8.2.4","@semantic-release/changelog":"^6.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^10.0.4","@types/dockerode":"^3.3.29","@types/ini":"^4.1.0","@types/node":"^20.12.12","@types/semantic-release__error":"3.0.3","@types/semver":"7.5.8","@types/stream-buffers":"^3.0.7","@vitest/coverage-v8":"^1.6.0",commitizen:"^4.3.0",commitlint:"^19.3.0","cross-env":"^7.0.3","cz-conventional-changelog":"^3.3.0",dockerode:"4.0.2",eslint:"8.55.0","eslint-plugin-deprecation":"^2.0.0","eslint-plugin-editorconfig":"^4.0.3","eslint-plugin-import":"npm:eslint-plugin-i@2.29.1","eslint-plugin-mdx":"^3.1.5","eslint-plugin-n":"^17.7.0","eslint-plugin-vitest":"^0.4.1","eslint-plugin-vitest-globals":"^1.5.0","eslint-plugin-you-dont-need-lodash-underscore":"^6.14.0","get-stream":"9.0.1",got:"^14.2.1",husky:"^9.0.11","is-ci":"^3.0.1","lint-staged":"^15.2.2","p-retry":"^6.2.0",prettier:"^3.2.5",publint:"^0.2.7",rimraf:"^5.0.7",secretlint:"8.2.4","semantic-release":"^23.1.1","sort-package-json":"^2.10.0","stream-buffers":"^3.0.2",taze:"^0.13.8",tempy:"^3.1.0",textlint:"^14.0.4",tsup:"^8.0.2",typescript:"^5.4.5",vitest:"^1.6.0"},peerDependencies:{"semantic-release":"^20.0 || ^21.0 || >=22.0.3"},packageManager:"pnpm@9.1.1",engines:{node:">=18 || >=20.6.1"},publishConfig:{access:"public",provenance:!0},pnpm:{overrides:{"chrono-node@<2.2.4":">=2.7.5"}},anolilab:{"eslint-config":{plugin:{etc:!1,tsdoc:!1},warn_on_unsupported_typescript_version:!1,info_on_disabling_jsx_react_rule:!1,info_on_disabling_prettier_conflict_rule:!1,info_on_disabling_jsonc_sort_keys_rule:!1,import_ignore_exports:["**/*.cjs","verify-node-version.cjs"]}}};var b=e=>`${U.homepage}/blob/main/${e}`,K={EINVALIDBRANCHES:e=>({details:`The [branches option](${b("README.md#branches")}) option, if defined, must be an array of \`String\`.
|
|
19
|
+
Your configuration for the \`branches\` option is \`${e}\`.`,message:"Invalid `branches` option."}),EINVALIDNPMPUBLISH:({npmPublish:e})=>({details:`The [npmPublish option](${b("README.md#npmpublish")}) option, if defined, must be a \`Boolean\`.
|
|
20
|
+
Your configuration for the \`npmPublish\` option is \`${e}\`.`,message:"Invalid `npmPublish` option."}),EINVALIDNPMTOKEN:({registry:e})=>({details:`The [npm token](${b("README.md#npm-registry-authentication")}) configured in the \`NPM_TOKEN\` environment variable must be a valid [token](https://docs.npmjs.com/getting-started/working_with_tokens) allowing to publish to the registry \`${e}\`.
|
|
21
21
|
If you are using Two Factor Authentication for your account, set its level to ["Authorization only"](https://docs.npmjs.com/getting-started/using-two-factor-authentication#levels-of-authentication) in your account settings. **semantic-release** cannot publish with the default "Authorization and writes" level.
|
|
22
|
-
Please make sure to set the \`NPM_TOKEN\` environment variable in your CI with the exact value of the npm token.`,message:"Invalid npm token."}),EINVALIDPKGROOT:({pkgRoot:e})=>({details:`The [pkgRoot option](${
|
|
23
|
-
Your configuration for the \`pkgRoot\` option is \`${e}\`.`,message:"Invalid `pkgRoot` option."}),EINVALIDPNPM:({version:e})=>({details:`The version of Pnpm that you are using is not compatible. Please refer to [the README](${
|
|
22
|
+
Please make sure to set the \`NPM_TOKEN\` environment variable in your CI with the exact value of the npm token.`,message:"Invalid npm token."}),EINVALIDPKGROOT:({pkgRoot:e})=>({details:`The [pkgRoot option](${b("README.md#pkgroot")}) option, if defined, must be a \`String\`.
|
|
23
|
+
Your configuration for the \`pkgRoot\` option is \`${e}\`.`,message:"Invalid `pkgRoot` option."}),EINVALIDPNPM:({version:e})=>({details:`The version of Pnpm that you are using is not compatible. Please refer to [the README](${b("README.md#install")}) to review which versions of Pnpm are currently supported
|
|
24
24
|
|
|
25
|
-
Your version of Pnpm is "${e}".`,message:"Incompatible Pnpm version detected."}),EINVALIDPUBLISHBRANCH:({publishBranch:e})=>({details:`The [publishBranch option](${
|
|
26
|
-
Your configuration for the \`publishBranch\` option is \`${e}\`.`,message:"Invalid `publishBranch` option."}),EINVALIDTARBALLDIR:({tarballDir:e})=>({details:`The [tarballDir option](${
|
|
27
|
-
Your configuration for the \`tarballDir\` option is \`${e}\`.`,message:"Invalid `tarballDir` option."}),ENONPMTOKEN:({registry:e})=>({details:`An [npm token](${
|
|
28
|
-
Please make sure to create an [npm token](https://docs.npmjs.com/getting-started/working_with_tokens#how-to-create-new-tokens) and to set it in the \`NPM_TOKEN\` environment variable on your CI environment. The token must allow to publish to the registry \`${e}\`.`,message:"No npm token specified."}),ENOPKG:()=>({details:"A [package.json file](https://docs.npmjs.com/files/package.json) at the root of your project is required to release on npm.\nPlease follow the [npm guideline](https://docs.npmjs.com/getting-started/creating-node-modules) to create a valid `package.json` file.",message:"Missing `package.json` file."}),ENOPKGNAME:()=>({details:"The `package.json`'s [name](https://docs.npmjs.com/files/package.json#name) property is required in order to publish a package to the npm registry.\nPlease make sure to add a valid `name` for your package in your `package.json`.",message:"Missing `name` property in `package.json`."}),ENOPNPM:()=>({details:"The Pnpm CLI could not be found in your PATH. Make sure Pnpm is installed and try again.",message:"Pnpm not found."}),ENOPNPMRC:()=>({details:"Didnt find a `.npmrc` file or it was not possible to create , in the root of your project.",message:"Missing `.npmrc` file."})};var
|
|
29
|
-
`).pop(),
|
|
25
|
+
Your version of Pnpm is "${e}".`,message:"Incompatible Pnpm version detected."}),EINVALIDPUBLISHBRANCH:({publishBranch:e})=>({details:`The [publishBranch option](${b("README.md#publishBranch")}) option, if defined, must be a \`String\`.
|
|
26
|
+
Your configuration for the \`publishBranch\` option is \`${e}\`.`,message:"Invalid `publishBranch` option."}),EINVALIDTARBALLDIR:({tarballDir:e})=>({details:`The [tarballDir option](${b("README.md#tarballdir")}) option, if defined, must be a \`String\`.
|
|
27
|
+
Your configuration for the \`tarballDir\` option is \`${e}\`.`,message:"Invalid `tarballDir` option."}),ENONPMTOKEN:({registry:e})=>({details:`An [npm token](${b("README.md#npm-registry-authentication")}) must be created and set in the \`NPM_TOKEN\` environment variable on your CI environment.
|
|
28
|
+
Please make sure to create an [npm token](https://docs.npmjs.com/getting-started/working_with_tokens#how-to-create-new-tokens) and to set it in the \`NPM_TOKEN\` environment variable on your CI environment. The token must allow to publish to the registry \`${e}\`.`,message:"No npm token specified."}),ENOPKG:()=>({details:"A [package.json file](https://docs.npmjs.com/files/package.json) at the root of your project is required to release on npm.\nPlease follow the [npm guideline](https://docs.npmjs.com/getting-started/creating-node-modules) to create a valid `package.json` file.",message:"Missing `package.json` file."}),ENOPKGNAME:()=>({details:"The `package.json`'s [name](https://docs.npmjs.com/files/package.json#name) property is required in order to publish a package to the npm registry.\nPlease make sure to add a valid `name` for your package in your `package.json`.",message:"Missing `name` property in `package.json`."}),ENOPNPM:()=>({details:"The Pnpm CLI could not be found in your PATH. Make sure Pnpm is installed and try again.",message:"Pnpm not found."}),ENOPNPMRC:()=>({details:"Didnt find a `.npmrc` file or it was not possible to create , in the root of your project.",message:"Missing `.npmrc` file."})};var d=(e,t={})=>{let{details:r,message:o}=K[e](t);return new de(o,e,r)};var be=(e,t)=>{let r,o=resolve(e,".npmrc");if(t.NPM_CONFIG_USERCONFIG&&isAccessibleSync(t.NPM_CONFIG_USERCONFIG))r=t.NPM_CONFIG_USERCONFIG;else if(isAccessibleSync(o))r=o;else {let i=findCacheDirectorySync("semantic-release-pnpm",{create:!0,cwd:e});i&&(ensureFile(i),r=i);}if(r===void 0)throw new AggregateError([d("ENOPNPMRC",{npmrc:o})]);return r},R=be;var A="https://registry.npmjs.org/";var Pe=e=>{try{JSON.parse(e);}catch{return !1}return !0},z=Pe;var Re=(e,t=env)=>{let r={},o=e.length;for(let i in t)if(i.toLowerCase().indexOf(e.toLowerCase())===0){let s=i.slice(Math.max(0,o)).split("__"),p;for(;(p=s.indexOf(""))>-1;)s.splice(p,1);let n=r;s.forEach((l,a)=>{!l||typeof n!="object"||(a===s.length-1&&(n[l]=t[i]),n[l]===void 0&&(n[l]={}),n=n[l]);});}return r},Ae=(e,t,r,o,i,s)=>{let p=new Set;for(let m of [`/etc/${e}/config`,`/etc/${e}rc`])isAccessibleSync(m)&&p.add(m);for(let m of [join(t,".config",e,"config"),join(t,".config",e),join(t,`.${e}`,"config"),join(t,`.${e}rc`)])isAccessibleSync(m)&&p.add(m),isAccessibleSync(`${m}.json`)&&p.add(`${m}.json`);let n=r,l=!1,a=[join("."+e,"config.json"),join("."+e,"config"),join("."+e+"rc.json"),join("."+e+"rc")],c=[];do{for(let m of a){let h=join(n,m);isAccessibleSync(h)&&c.push(h);}if(n=dirname(n),l)break;l=dirname(n)===n;}while(!o||n===o);for(let m of c.reverse())p.add(m);return typeof i=="string"&&isAccessibleSync(i)&&p.add(i),s&&isAccessibleSync(s)&&p.add(s),[...p]},$=(e,t={})=>{t={cwd:cwd(),home:homedir(),...t};let{config:r,...o}=Re(`${e}_`),i=Ae(e,t.home,t.cwd,t.stopAt,env[`${e}_config`],t.config),s=[];for(let p of i){let n=readFileSync(p);z(n)?s.push(parseJson(stripJsonComments(n))):s.push(parse(n));}return o&&s.push(o),{config:merge(t.defaults??{},...s),files:i}};var Ie=(e,t)=>{let r=A;if(t){let o=t[`${e}:registry`]??t.registry;o&&(r=o);}return r.slice(-1)==="/"?r:`${r}/`},E=({name:e,publishConfig:{registry:t}={}},{cwd:r,env:o})=>t??o.NPM_CONFIG_REGISTRY??Ie(e.split("/")[0],$("npm",{config:o.NPM_CONFIG_USERCONFIG??resolve(r,".npmrc"),cwd:r,defaults:{registry:"https://registry.npmjs.org/"}}).config);var I=({name:e},{env:{DEFAULT_NPM_REGISTRY:t="https://registry.npmjs.org/"},nextRelease:{version:r}},o,i)=>({channel:o,name:`pnpm package (@${o} dist-tag)`,url:q(i)===q(t)?`https://www.npmjs.com/package/${e}/v/${r}`:void 0});var N=(e,t)=>e.npmPublish===!1?"npmPublish plugin option is false":t.private===!0&&t.workspaces===void 0?"package is private and has no workspaces":null,v=(e,t)=>N(e,t)===null;var Q=async(e,t,r)=>{let{cwd:o,env:i,logger:s,nextRelease:{channel:p,version:n},stderr:l,stdout:a}=r;if(v(e,t)){let c=E(t,r),m=C(p);s.log(`Adding version ${n} to npm registry on dist-tag ${m}`);let h=R(o,i),u=execa("pnpm",["dist-tag","add",`${t.name}@${n}`,m,"--userconfig",h,"--registry",c],{cwd:o,env:i,preferLocal:!0});return u.stdout.pipe(a,{end:!1}),u.stderr.pipe(l,{end:!1}),await u,s.log(`Added ${t.name}@${n} to dist-tag @${m} on ${c}`),I(t,r,m,c)}return s.log(`Skip adding to npm channel as ${N(e,t)}`),!1};var O=async({pkgRoot:e,tarballDir:t},{cwd:r,env:o,logger:i,nextRelease:{version:s},stderr:p,stdout:n})=>{let l=e?resolve(r,e):r;i.log("Write version %s to package.json in %s",s,l);let a=execa("pnpm",["version",s,"--no-git-tag-version","--allow-same-version"],{cwd:l,env:o,preferLocal:!0});if(a.stdout.pipe(n,{end:!1}),a.stderr.pipe(p,{end:!1}),await a,t){i.log("Creating npm package version %s",s);let c=execa("pnpm",["pack",l],{cwd:r,env:o,preferLocal:!0});c.stdout.pipe(n,{end:!1}),c.stderr.pipe(p,{end:!1});let m=(await c).stdout.split(`
|
|
29
|
+
`).pop(),h=resolve(r,m),u=resolve(r,t.trim(),m);h!==u&&await moveFile(h,u);}};var ee=async(e,t,r)=>{let{cwd:o,env:i,logger:s,nextRelease:{channel:p,version:n},stderr:l,stdout:a}=r,{pkgRoot:c,publishBranch:m}=e;if(v(e,t)){let h=c?resolve(o,c):o,u=E(t,r),x=C(p),{stdout:J}=await execa("git",["rev-parse","--abbrev-ref","HEAD"],{cwd:o,env:i,preferLocal:!0}),G=typeof m=="string"&&m.split("|"),V=G&&G?.includes(J)?J:"main";s.log(`Publishing version ${n} on branch ${V} to npm registry on dist-tag ${x}`);let B=["publish",h,"--publish-branch",V,"--tag",x,"--registry",u,"--no-git-checks"];e.disableScripts&&B.push("--ignore-scripts");let M=execa("pnpm",B,{cwd:o,env:i,preferLocal:!0});M.stdout.pipe(a,{end:!1}),M.stderr.pipe(l,{end:!1});try{await M;}catch(D){throw s.log(`Failed to publish ${t.name}@${n} to dist-tag @${x} on ${u}: ${D.message??D}`),new te([D])}return s.log(`Published ${t.name}@${n} to dist-tag @${x} on ${u}`),I(t,r,x,u)}return s.log(`Skip publishing to npm registry as ${N(e,t)}`),!1};var k=async({pkgRoot:e},{cwd:t})=>{try{let{packageJson:r}=await findPackageJson(e?resolve(t,e):t);if(!r.name)throw new te([d("ENOPKGNAME")]);return r}catch(r){throw r.code==="ENOENT"?new te([d("ENOPKG")]):r}};var Te=e=>{let t=new URL(e),r=`${t.protocol}//${t.host}${t.pathname}`,o=new URL(".",r);return `//${o.host}${o.pathname}`},oe=Te;var ie=async(e,t,{cwd:r,env:{NPM_CONFIG_USERCONFIG:o,NPM_EMAIL:i,NPM_PASSWORD:s,NPM_TOKEN:p,NPM_USERNAME:n},logger:l})=>{l.log("Verify authentication for registry %s",t);let{config:a,files:c}=$("npm",{config:o??resolve(r,".npmrc"),cwd:r,defaults:{registry:A}});if(c&&l.log("Reading npm config from %s",c.join(", ")),Je(t,{npmrc:a})){await writeFile(e,stringify(a));return}if(n&&s&&i)await writeFile(e,`${a?`${stringify(a)}
|
|
30
30
|
`:""}_auth = \${LEGACY_TOKEN}
|
|
31
|
-
email = \${NPM_EMAIL}`),l.log(`Wrote NPM_USERNAME, NPM_PASSWORD, and NPM_EMAIL to ${e}`);else if(
|
|
32
|
-
`:""}${
|
|
31
|
+
email = \${NPM_EMAIL}`),l.log(`Wrote NPM_USERNAME, NPM_PASSWORD, and NPM_EMAIL to ${e}`);else if(p)await writeFile(e,`${a?`${stringify(a)}
|
|
32
|
+
`:""}${oe(t)}:_authToken = \${NPM_TOKEN}`),l.log(`Wrote NPM_TOKEN to ${e}`);else throw new te([d("ENONPMTOKEN",{registry:t})])};var se=async(e,t,r)=>{let{cwd:o,env:{DEFAULT_NPM_REGISTRY:i="https://registry.npmjs.org/",...s},logger:p,stderr:n,stdout:l}=r,a=E(t,r);if(await ie(e,a,r),q(a)===q(i))try{p.log(`Running "pnpm whoami" to verify authentication on registry "${a}"`);let c=execa("pnpm",["whoami","--userconfig",e,"--registry",a],{cwd:o,env:s,preferLocal:!0});c.stdout.pipe(l,{end:!1}),c.stderr.pipe(n,{end:!1}),await c;}catch{throw new te([d("EINVALIDNPMTOKEN",{registry:a})])}else p.log(`Skipping authentication verification for non-default registry "${a}"`);};var Be=e=>typeof e=="string",Ue=e=>e==null,L=e=>Be(e)?e.trim()!=="":!1,ae={branches:Array.isArray,npmPublish:e=>typeof e=="boolean",pkgRoot:L,publishBranch:L,tarballDir:L},pe=e=>Object.entries(e).reduce((t,[r,o])=>Ue(o)||!(r in ae)||ae[r]?.(o)?t:[...t,d(`EINVALID${r.toUpperCase()}`,{[r]:o})],[]);var me="8.0.0";async function F({logger:e}){e.log(`Verify pnpm version is >= ${me}`);let t=await getPackageManagerVersion("pnpm");if(t===void 0)throw new te([new Error("pnpm is not installed")]);if(gte(me,t))throw new te([d("EINVALIDPNPM",{version:String(t)})])}var He=async(e,t)=>{let r=pe(e);try{F(t);}catch(o){let i=o;r=[...r,...i.errors??[o]];}try{let o=await k(e,t);if(v(e,o)){let i=R(t.cwd,t.env);await se(i,o,t);}}catch(o){let i=o;r=[...r,...i.errors??[o]];}if(r.length>0)throw new te(r)},w=He;var We="semantic-release-pnpm",_,ce,oo=async(e,t)=>{if(t.options?.publish){let o=(Array.isArray(t.options?.publish)?t.options?.publish:[t.options?.publish]).find(i=>i.path&&i.path===We)||{};e.npmPublish=e.npmPublish??o.npmPublish,e.tarballDir=e.tarballDir??o.tarballDir,e.pkgRoot=e.pkgRoot??o.pkgRoot,e.disableScripts=e.disableScripts??o.disableScripts,e.branches=e.branches??o.branches;}await w(e,t),_=!0;},io=async(e,t)=>{_||await w(e,t),await O(e,t),ce=!0;},no=async(e,t)=>{let r=await k(e,t);return _||await w(e,t),ce||await O(e,t),ee(e,r,t)},so=async(e,t)=>{_||await w(e,t);let r=await k(e,t);return Q(e,r,t)};
|
|
33
33
|
|
|
34
|
-
export { so as addChannel,
|
|
34
|
+
export { so as addChannel, io as prepare, no as publish, oo as verifyConditions };
|
|
35
35
|
//# sourceMappingURL=out.js.map
|
|
36
36
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/add-channel.ts","../src/utils/get-channel.ts","../src/utils/get-npmrc.ts","../src/utils/get-error.ts","../package.json","../src/definitions/errors.ts","../src/utils/get-registry.ts","../src/definitions/constants.ts","../src/utils/rc.ts","../src/utils/is-json.ts","../src/utils/get-release-info.ts","../src/utils/should-publish.ts","../src/prepare.ts","../src/publish.ts","../src/utils/get-pkg.ts","../src/verify/index.ts","../src/verify/verify-auth.ts","../src/utils/set-npmrc-auth.ts","../src/utils/nerf-dart.ts","../src/verify/verify-config.ts","../src/verify/verify-pnpm.ts","../src/index.ts"],"names":["execa","validRange","get_channel_default","channel","ensureFile","isAccessibleSync","findCacheDirectorySync","resolve","SemanticReleaseError","package_default","linkify","file","errors","branches","npmPublish","registry","pkgRoot","version","publishBranch","tarballDir","get_error_default","code","context","details","message","getNpmrc","cwd","environment","npmrc","npmrcPath","temporaryNpmrcPath","get_npmrc_default","DEFAULT_NPM_REGISTRY","homedir","env","findUpSync","readFileSync","parseJson","stripJsonComments","join","parse","merge","isJson","value","is_json_default","getEnvironment","prefix","returnValue","l","k","keypath","emptyStringIndex","cursor","subkey","index","getConfigFiles","name","home","internalCwd","environmentConfig","optionConfig","configFiles","foundConfigFile","rc_default","options","configs","content","getRegistryUrl","scope","url","registryUrl","get_registry_default","normalizeUrl","getReleaseInfo","distributionTag","reasonToNotPublish","pluginConfig","package_","shouldPublish","add_channel_default","logger","stderr","stdout","result","moveFile","prepare_default","basePath","versionResult","packResult","tarball","tarballSource","tarballDestination","AggregateError","publish_default","publishBranchConfig","currentBranch","publishBranches","pnpmArguments","error","findPackageJson","get_pkg_default","packageJson","writeFile","stringify","getAuthToken","URL","nerfDart","parsed","from","real","nerf_dart_default","set_npmrc_auth_default","NPM_CONFIG_USERCONFIG","NPM_EMAIL","NPM_PASSWORD","NPM_TOKEN","NPM_USERNAME","config","files","verify_auth_default","whoamiResult","isString","isNil","isNonEmptyString","VALIDATORS","verify_config_default","option","getPackageManagerVersion","gte","MIN_PNPM_VERSION","verifyPnpm","verify","typedError","verify_default","PLUGIN_NAME","verified","prepared","verifyConditions","publishPlugin","prepare","publish","addChannel"],"mappings":"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","sourcesContent":["import type { PackageJson } from \"@visulima/package\";\nimport { execa } from \"execa\";\n\nimport type { AddChannelContext } from \"./definitions/context\";\nimport type { PluginConfig } from \"./definitions/plugin-config\";\nimport getChannel from \"./utils/get-channel\";\nimport getNpmrc from \"./utils/get-npmrc\";\nimport getRegistry from \"./utils/get-registry\";\nimport type { ReleaseInfo } from \"./utils/get-release-info\";\nimport { getReleaseInfo } from \"./utils/get-release-info\";\nimport { reasonToNotPublish, shouldPublish } from \"./utils/should-publish\";\n\nexport default async (pluginConfig: PluginConfig, package_: PackageJson, context: AddChannelContext): Promise<ReleaseInfo | false> => {\n const {\n cwd,\n env,\n logger,\n nextRelease: { channel, version },\n stderr,\n stdout,\n } = context;\n\n if (shouldPublish(pluginConfig, package_)) {\n const registry = getRegistry(package_, context);\n const distributionTag = getChannel(channel);\n\n logger.log(`Adding version ${version} to npm registry on dist-tag ${distributionTag}`);\n\n const npmrc = getNpmrc(cwd, env);\n\n const result = execa(\"pnpm\", [\"dist-tag\", \"add\", `${package_.name}@${version}`, distributionTag, \"--userconfig\", npmrc, \"--registry\", registry], {\n cwd,\n env,\n preferLocal: true,\n });\n\n result.stdout.pipe(stdout, { end: false });\n result.stderr.pipe(stderr, { end: false });\n\n await result;\n\n logger.log(`Added ${package_.name}@${version} to dist-tag @${distributionTag} on ${registry}`);\n\n return getReleaseInfo(package_, context, distributionTag, registry);\n }\n\n logger.log(`Skip adding to npm channel as ${reasonToNotPublish(pluginConfig, package_)}`);\n\n return false;\n};\n","import { validRange } from \"semver\";\n\nexport default (channel: string | null | undefined): string => (channel ? (validRange(channel) ? `release-${channel}` : channel) : \"latest\");\n","import { ensureFile, isAccessibleSync } from \"@visulima/fs\";\nimport { findCacheDirectorySync } from \"@visulima/package\";\nimport { resolve } from \"@visulima/path\";\n\nimport getError from \"./get-error\";\n\nconst getNpmrc = (cwd: string, environment: NodeJS.ProcessEnv): string => {\n let npmrc = environment.NPM_CONFIG_USERCONFIG;\n\n const npmrcPath = resolve(cwd, \".npmrc\");\n\n if (!npmrc && isAccessibleSync(npmrcPath)) {\n npmrc = npmrcPath;\n } else if (!npmrc) {\n const temporaryNpmrcPath = findCacheDirectorySync(\"semantic-release-pnpm\", { create: true, cwd });\n\n if (temporaryNpmrcPath) {\n ensureFile(temporaryNpmrcPath);\n\n npmrc = temporaryNpmrcPath;\n }\n }\n\n if (!npmrc) {\n // eslint-disable-next-line unicorn/error-message\n throw new AggregateError([\n getError(\"ENOPNPMRC\", {\n npmrc: npmrcPath,\n }),\n ]);\n }\n\n return npmrc;\n};\n\nexport default getNpmrc;\n","import SemanticReleaseError from \"@semantic-release/error\";\n\nimport type { ErrorContext, ErrorDefinition } from \"../definitions/errors\";\nimport { errors } from \"../definitions/errors\";\n\nexport default <T extends keyof typeof errors>(code: T, context: ErrorContext = {}): SemanticReleaseError => {\n const { details, message }: { details?: string; message: string } = (errors[code] as ErrorDefinition)(context);\n\n return new SemanticReleaseError(message, code, details);\n};\n","{\n \"name\": \"@anolilab/semantic-release-pnpm\",\n \"version\": \"1.0.0-alpha.7\",\n \"description\": \"Semantic-release plugin to publish a npm package with pnpm.\",\n \"keywords\": [\n \"anolilab\",\n \"npm\",\n \"publish\",\n \"semantic-release\",\n \"pnpm\",\n \"monorepo\"\n ],\n \"homepage\": \"https://github.com/anolilab/semantic-release-pnpm\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/anolilab/semantic-release-pnpm.git\"\n },\n \"license\": \"MIT\",\n \"author\": {\n \"name\": \"Daniel Bannert\",\n \"email\": \"d.bannert@anolilab.de\"\n },\n \"type\": \"module\",\n \"exports\": \"./dist/index.js\",\n \"main\": \"dist/index.js\",\n \"types\": \"dist/index.d.ts\",\n \"files\": [\n \"dist\",\n \"README.md\",\n \"CHANGELOG.md\"\n ],\n \"scripts\": {\n \"build\": \"cross-env NODE_ENV=development tsup\",\n \"build:prod\": \"cross-env NODE_ENV=production tsup\",\n \"lint:eslint\": \"eslint . --ext js,cjs,mjs,jsx,ts,tsx,json,yaml,yml,md,mdx --max-warnings=0 --config .eslintrc.cjs\",\n \"lint:eslint:fix\": \"pnpm run lint:eslint --fix\",\n \"lint:fix\": \"pnpm run lint:prettier:fix && pnpm run lint:eslint:fix\",\n \"lint:packagejson\": \"publint --strict\",\n \"lint:prettier\": \"prettier --config=.prettierrc.cjs --check .\",\n \"lint:prettier:fix\": \"prettier --config=.prettierrc.cjs --write .\",\n \"lint:secrets\": \"secretlint **/*\",\n \"lint:staged\": \"lint-staged --verbose --concurrent false --debug\",\n \"lint:text\": \"textlint ./.github/ ./README.md ./UPGRADE.md --parallel --experimental --cache --dry-run\",\n \"lint:text:fix\": \"textlint ./.github/ ./README.md ./UPGRADE.md --parallel --experimental --fix\",\n \"lint:types\": \"tsc --noEmit\",\n \"prepare\": \"is-ci || (node verify-node-version.cjs && pnpx only-allow pnpm && husky install)\",\n \"sort-package-json\": \"sort-package-json ./package.json\",\n \"test\": \"vitest run\",\n \"test:bench\": \"vitest bench\",\n \"test:coverage\": \"vitest run --coverage\",\n \"test:watch\": \"vitest\",\n \"update:deps\": \"taze\"\n },\n \"dependencies\": {\n \"@semantic-release/error\": \"^4.0.0\",\n \"@visulima/fs\": \"^2.1.1\",\n \"@visulima/package\": \"1.8.1\",\n \"@visulima/path\": \"^1.0.0\",\n \"aggregate-error\": \"^5.0.0\",\n \"execa\": \"^9.1.0\",\n \"ini\": \"4.1.2\",\n \"move-file\": \"^3.1.0\",\n \"normalize-url\": \"^8.0.1\",\n \"registry-auth-token\": \"^5.0.2\",\n \"semver\": \"^7.6.2\",\n \"ts-deepmerge\": \"^7.0.0\"\n },\n \"devDependencies\": {\n \"@anolilab/commitlint-config\": \"^5.0.3\",\n \"@anolilab/eslint-config\": \"^15.0.3\",\n \"@anolilab/lint-staged-config\": \"^2.1.7\",\n \"@anolilab/prettier-config\": \"^5.0.14\",\n \"@anolilab/textlint-config\": \"^8.0.16\",\n \"@babel/core\": \"^7.24.5\",\n \"@babel/eslint-parser\": \"7.24.5\",\n \"@commitlint/cli\": \"^19.3.0\",\n \"@commitlint/config-conventional\": \"^19.2.2\",\n \"@secretlint/secretlint-rule-preset-recommend\": \"^8.2.4\",\n \"@semantic-release/changelog\": \"^6.0.3\",\n \"@semantic-release/git\": \"^10.0.1\",\n \"@semantic-release/github\": \"^10.0.4\",\n \"@types/dockerode\": \"^3.3.29\",\n \"@types/ini\": \"^4.1.0\",\n \"@types/node\": \"^20.12.12\",\n \"@types/semantic-release__error\": \"3.0.3\",\n \"@types/semver\": \"7.5.8\",\n \"@types/stream-buffers\": \"^3.0.7\",\n \"@vitest/coverage-v8\": \"^1.6.0\",\n \"commitizen\": \"^4.3.0\",\n \"commitlint\": \"^19.3.0\",\n \"cross-env\": \"^7.0.3\",\n \"cz-conventional-changelog\": \"^3.3.0\",\n \"dockerode\": \"4.0.2\",\n \"eslint\": \"8.55.0\",\n \"eslint-plugin-deprecation\": \"^2.0.0\",\n \"eslint-plugin-editorconfig\": \"^4.0.3\",\n \"eslint-plugin-import\": \"npm:eslint-plugin-i@2.29.1\",\n \"eslint-plugin-mdx\": \"^3.1.5\",\n \"eslint-plugin-n\": \"^17.7.0\",\n \"eslint-plugin-vitest\": \"^0.4.1\",\n \"eslint-plugin-vitest-globals\": \"^1.5.0\",\n \"eslint-plugin-you-dont-need-lodash-underscore\": \"^6.14.0\",\n \"get-stream\": \"9.0.1\",\n \"got\": \"^14.2.1\",\n \"husky\": \"^9.0.11\",\n \"is-ci\": \"^3.0.1\",\n \"lint-staged\": \"^15.2.2\",\n \"p-retry\": \"^6.2.0\",\n \"prettier\": \"^3.2.5\",\n \"publint\": \"^0.2.7\",\n \"rimraf\": \"^5.0.7\",\n \"secretlint\": \"8.2.4\",\n \"semantic-release\": \"^23.1.1\",\n \"sort-package-json\": \"^2.10.0\",\n \"stream-buffers\": \"^3.0.2\",\n \"taze\": \"^0.13.8\",\n \"tempy\": \"^3.1.0\",\n \"textlint\": \"^14.0.4\",\n \"tsup\": \"^8.0.2\",\n \"typescript\": \"^5.4.5\",\n \"vitest\": \"^1.6.0\"\n },\n \"peerDependencies\": {\n \"semantic-release\": \"^20.0 || ^21.0 || >=22.0.3\"\n },\n \"packageManager\": \"pnpm@9.1.1\",\n \"engines\": {\n \"node\": \">=18 || >=20.6.1\"\n },\n \"publishConfig\": {\n \"access\": \"public\",\n \"provenance\": true\n },\n \"pnpm\": {\n \"overrides\": {\n \"chrono-node@<2.2.4\": \">=2.7.5\"\n }\n },\n \"anolilab\": {\n \"eslint-config\": {\n \"plugin\": {\n \"etc\": false,\n \"tsdoc\": false\n },\n \"warn_on_unsupported_typescript_version\": false,\n \"info_on_disabling_jsx_react_rule\": false,\n \"info_on_disabling_prettier_conflict_rule\": false,\n \"info_on_disabling_jsonc_sort_keys_rule\": false,\n \"import_ignore_exports\": [\n \"**/*.cjs\",\n \"verify-node-version.cjs\"\n ]\n }\n }\n}\n","import package_ from \"../../package.json\";\n\nconst linkify = (file: string) => `${package_.homepage}/blob/main/${file}`;\n\ninterface ErrorDetails {\n details: string;\n message: string;\n}\n\nexport type ErrorDefinition = (context: ErrorContext) => ErrorDetails;\n\nexport interface ErrorContext {\n npmPublish?: boolean;\n npmrc?: string;\n pkgRoot?: string;\n publishBranch?: string;\n registry?: string;\n tarballDir?: string;\n version?: string;\n}\n\nexport const errors = {\n EINVALIDBRANCHES: (branches: string[]) => {\n return {\n details: `The [branches option](${linkify(\"README.md#branches\")}) option, if defined, must be an array of \\`String\\`.\nYour configuration for the \\`branches\\` option is \\`${branches}\\`.`,\n message: \"Invalid `branches` option.\",\n };\n },\n EINVALIDNPMPUBLISH: ({ npmPublish }: ErrorContext) => {\n return {\n details: `The [npmPublish option](${linkify(\"README.md#npmpublish\")}) option, if defined, must be a \\`Boolean\\`.\nYour configuration for the \\`npmPublish\\` option is \\`${npmPublish}\\`.`,\n message: \"Invalid `npmPublish` option.\",\n };\n },\n EINVALIDNPMTOKEN: ({ registry }: ErrorContext) => {\n return {\n details: `The [npm token](${linkify(\n \"README.md#npm-registry-authentication\",\n )}) configured in the \\`NPM_TOKEN\\` environment variable must be a valid [token](https://docs.npmjs.com/getting-started/working_with_tokens) allowing to publish to the registry \\`${registry}\\`.\nIf you are using Two Factor Authentication for your account, set its level to [\"Authorization only\"](https://docs.npmjs.com/getting-started/using-two-factor-authentication#levels-of-authentication) in your account settings. **semantic-release** cannot publish with the default \"Authorization and writes\" level.\nPlease make sure to set the \\`NPM_TOKEN\\` environment variable in your CI with the exact value of the npm token.`,\n message: \"Invalid npm token.\",\n };\n },\n EINVALIDPKGROOT: ({ pkgRoot }: ErrorContext) => {\n return {\n details: `The [pkgRoot option](${linkify(\"README.md#pkgroot\")}) option, if defined, must be a \\`String\\`.\nYour configuration for the \\`pkgRoot\\` option is \\`${pkgRoot}\\`.`,\n message: \"Invalid `pkgRoot` option.\",\n };\n },\n EINVALIDPNPM: ({ version }: ErrorContext) => {\n return {\n details: `The version of Pnpm that you are using is not compatible. Please refer to [the README](${linkify(\n \"README.md#install\",\n )}) to review which versions of Pnpm are currently supported\n\nYour version of Pnpm is \"${version}\".`,\n message: \"Incompatible Pnpm version detected.\",\n };\n },\n EINVALIDPUBLISHBRANCH: ({ publishBranch }: ErrorContext) => {\n return {\n details: `The [publishBranch option](${linkify(\"README.md#publishBranch\")}) option, if defined, must be a \\`String\\`.\nYour configuration for the \\`publishBranch\\` option is \\`${publishBranch}\\`.`,\n message: \"Invalid `publishBranch` option.\",\n };\n },\n EINVALIDTARBALLDIR: ({ tarballDir }: ErrorContext) => {\n return {\n details: `The [tarballDir option](${linkify(\"README.md#tarballdir\")}) option, if defined, must be a \\`String\\`.\nYour configuration for the \\`tarballDir\\` option is \\`${tarballDir}\\`.`,\n message: \"Invalid `tarballDir` option.\",\n };\n },\n ENONPMTOKEN: ({ registry }: ErrorContext) => {\n return {\n details: `An [npm token](${linkify(\n \"README.md#npm-registry-authentication\",\n )}) must be created and set in the \\`NPM_TOKEN\\` environment variable on your CI environment.\nPlease make sure to create an [npm token](https://docs.npmjs.com/getting-started/working_with_tokens#how-to-create-new-tokens) and to set it in the \\`NPM_TOKEN\\` environment variable on your CI environment. The token must allow to publish to the registry \\`${registry}\\`.`,\n message: \"No npm token specified.\",\n };\n },\n ENOPKG: () => {\n return {\n details: `A [package.json file](https://docs.npmjs.com/files/package.json) at the root of your project is required to release on npm.\nPlease follow the [npm guideline](https://docs.npmjs.com/getting-started/creating-node-modules) to create a valid \\`package.json\\` file.`,\n message: \"Missing `package.json` file.\",\n };\n },\n ENOPKGNAME: () => {\n return {\n details: `The \\`package.json\\`'s [name](https://docs.npmjs.com/files/package.json#name) property is required in order to publish a package to the npm registry.\nPlease make sure to add a valid \\`name\\` for your package in your \\`package.json\\`.`,\n message: \"Missing `name` property in `package.json`.\",\n };\n },\n ENOPNPM: () => {\n return {\n details: `The Pnpm CLI could not be found in your PATH. Make sure Pnpm is installed and try again.`,\n message: \"Pnpm not found.\",\n };\n },\n ENOPNPMRC: () => {\n return {\n details: `Didnt find a \\`.npmrc\\` file or it was not possible to create , in the root of your project.`,\n message: \"Missing `.npmrc` file.\",\n };\n },\n};\n","import type { PackageJson } from \"@visulima/package\";\nimport { resolve } from \"@visulima/path\";\nimport type { AuthOptions } from \"registry-auth-token\";\n\nimport { DEFAULT_NPM_REGISTRY } from \"../definitions/constants\";\nimport type { CommonContext } from \"../definitions/context\";\nimport rc from \"./rc\";\n\nconst getRegistryUrl = (scope: string, npmrc: AuthOptions[\"npmrc\"]): string => {\n let url: string = DEFAULT_NPM_REGISTRY;\n\n if (npmrc) {\n const registryUrl = npmrc[`${scope}:registry`] ?? npmrc[\"registry\"];\n\n if (registryUrl) {\n url = registryUrl;\n }\n }\n\n return url.slice(-1) === \"/\" ? url : `${url}/`;\n};\n\nexport default ({ name, publishConfig: { registry } = {} }: PackageJson, { cwd, env }: CommonContext): string =>\n registry ??\n env.NPM_CONFIG_REGISTRY ??\n getRegistryUrl(\n (name as string).split(\"/\")[0] as string,\n rc(\"npm\", {\n config: env.NPM_CONFIG_USERCONFIG ?? resolve(cwd, \".npmrc\"),\n cwd,\n defaults: { registry: \"https://registry.npmjs.org/\" },\n }).config as AuthOptions[\"npmrc\"],\n );\n","// eslint-disable-next-line import/prefer-default-export\nexport const DEFAULT_NPM_REGISTRY = \"https://registry.npmjs.org/\";\n","import { homedir } from \"node:os\";\nimport { cwd, env } from \"node:process\";\n\nimport { findUpSync, isAccessibleSync, readFileSync } from \"@visulima/fs\";\nimport { parseJson, stripJsonComments } from \"@visulima/fs/utils\";\nimport { join } from \"@visulima/path\";\nimport { parse } from \"ini\";\nimport { merge } from \"ts-deepmerge\";\n\nimport isJson from \"./is-json\";\n\n// eslint-disable-next-line sonarjs/cognitive-complexity,@typescript-eslint/no-explicit-any\nconst getEnvironment = (prefix: string, environment = env): Record<string, any> => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const returnValue: Record<string, any> = {};\n const l = prefix.length;\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const k in environment) {\n if (k.toLowerCase().indexOf(prefix.toLowerCase()) === 0) {\n const keypath = k.slice(Math.max(0, l)).split(\"__\");\n\n // Trim empty strings from keypath array\n let emptyStringIndex;\n\n // eslint-disable-next-line no-loops/no-loops,no-cond-assign\n while ((emptyStringIndex = keypath.indexOf(\"\")) > -1) {\n keypath.splice(emptyStringIndex, 1);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let cursor: Record<string, any> = returnValue;\n\n keypath.forEach((subkey, index) => {\n // (check for subkey first so we ignore empty strings)\n // (check for cursor to avoid assignment to primitive objects)\n if (!subkey || typeof cursor !== \"object\") {\n return;\n }\n\n // If this is the last key, just stuff the value in there\n // Assigns actual value from env variable to final key\n // (unless it's just an empty string- in that case use the last valid key)\n if (index === keypath.length - 1) {\n cursor[subkey] = environment[k];\n }\n\n // Build sub-object if nothing already exists at the keypath\n if (cursor[subkey] === undefined) {\n cursor[subkey] = {};\n }\n\n // Increment cursor used to track the object at the current depth\n cursor = cursor[subkey];\n });\n }\n }\n\n return returnValue;\n};\n\n/**\n * Will look in all the obvious places for configuration:\n *\n * - The defaults object you passed in\n * - `$HOME/.${appname}rc`\n * - `$HOME/.${appname}/config`\n * - `$HOME/.config/${appname}`\n * - `$HOME/.config/${appname}/config`\n * - a local `.${appname}/config` and `.${appname}rc` and all found looking in `./ ../ ../../ ../../../` etc.\n * - if you passed environment variable `${appname}_config` then from that file\n * - environment variables prefixed with `${appname}_`\n * or use \"\\_\\_\" to indicate nested properties <br/> _(e.g. `appname_foo__bar__baz` => `foo.bar.baz`)_\n *\n * @param {string} name\n * @param {string} home\n * @param {string} internalCwd\n * @param {string} environmentConfig\n * @param {string} optionConfig\n * @returns {Array<string>}\n */\nconst getConfigFiles = (name: string, home: string, internalCwd: string, environmentConfig?: string, optionConfig?: string) => {\n const configFiles = new Set<string>();\n\n if (optionConfig && isAccessibleSync(optionConfig)) {\n configFiles.add(optionConfig);\n }\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const file of [`/etc/${name}rc`, `/etc/${name}/config`]) {\n if (isAccessibleSync(file)) {\n configFiles.add(file);\n }\n }\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const file of [join(home, \".config\", name, \"config\"), join(home, \".config\", name), join(home, `.${name}`, \"config\"), join(home, `.${name}rc`)]) {\n if (isAccessibleSync(file)) {\n configFiles.add(file);\n }\n\n if (isAccessibleSync(`${file}.json`)) {\n configFiles.add(`${file}.json`);\n }\n }\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const file of [`.${name}rc.json`, `.${name}rc`, `.${name}`, \"config.json\", \"config\"]) {\n // TODO: use later findsUpSync\n const foundConfigFile = findUpSync(file, {\n cwd: internalCwd,\n type: \"file\",\n });\n\n if (foundConfigFile) {\n configFiles.add(foundConfigFile);\n }\n }\n\n if (typeof environmentConfig === \"string\" && isAccessibleSync(environmentConfig)) {\n configFiles.add(environmentConfig);\n }\n\n // This is to ensure that the user's config file is the last one to be read\n return [...configFiles].reverse();\n};\n\nexport default (\n name: string,\n options: {\n config?: string;\n cwd?: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n defaults?: Record<string, any>;\n home?: string;\n } = {},\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): { config: Record<string, any>; files: string[] } => {\n // eslint-disable-next-line no-param-reassign\n options = {\n cwd: cwd(),\n home: homedir(),\n ...options,\n };\n\n const { config: environmentConfig, ...environment } = getEnvironment(`${name}_`);\n\n const configFiles = getConfigFiles(\n name,\n options.home as string,\n options.cwd as string,\n env[`${name}_config`] ?? (environmentConfig as string | undefined),\n options.config,\n );\n\n const configs: object[] = [options.defaults ?? {}];\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const file of configFiles) {\n const content = readFileSync(file);\n\n if (isJson(content)) {\n configs.push(parseJson(stripJsonComments(content)));\n } else {\n configs.push(parse(content));\n }\n }\n\n if (environment) {\n configs.push(environment);\n }\n\n return { config: merge(...configs), files: configFiles };\n};\n","/**\n * Checks if string is a parseable JSON string.\n *\n * @param {string} value\n * @returns {boolean}\n */\nconst isJson = (value: string): boolean => {\n try {\n JSON.parse(value);\n } catch {\n return false;\n }\n\n return true;\n};\n\nexport default isJson;\n","import type { PackageJson } from \"@visulima/package\";\nimport normalizeUrl from \"normalize-url\";\n\nimport type { PublishContext } from \"../definitions/context\";\n\nexport interface ReleaseInfo {\n channel: string;\n name: string;\n url?: string;\n}\n\nexport const getReleaseInfo = (\n { name }: PackageJson,\n { env: { DEFAULT_NPM_REGISTRY = \"https://registry.npmjs.org/\" }, nextRelease: { version } }: PublishContext,\n distributionTag: string,\n registry: string,\n): ReleaseInfo => {\n return {\n channel: distributionTag,\n name: `pnpm package (@${distributionTag} dist-tag)`,\n url: normalizeUrl(registry) === normalizeUrl(DEFAULT_NPM_REGISTRY) ? `https://www.npmjs.com/package/${name}/v/${version}` : undefined,\n };\n};\n","import type { PackageJson } from \"@visulima/package\";\n\nimport type { PluginConfig } from \"../definitions/plugin-config\";\n\n/**\n * Returns null if `npmPublish` is not `false` and `pkg.private` is not\n * `true` or `pkg.workspaces` is not `undefined`.\n * Returns reason otherwise.\n */\nexport const reasonToNotPublish = (pluginConfig: PluginConfig, package_: PackageJson): string | null =>\n (pluginConfig.npmPublish === false\n ? \"npmPublish plugin option is false\"\n : package_.private === true && package_.workspaces === undefined\n ? \"package is private and has no workspaces\"\n : null);\n\nexport const shouldPublish = (pluginConfig: PluginConfig, package_: PackageJson): boolean => reasonToNotPublish(pluginConfig, package_) === null;\n","import { resolve } from \"@visulima/path\";\nimport { execa } from \"execa\";\nimport { moveFile } from \"move-file\";\n\nimport type { PrepareContext } from \"./definitions/context\";\nimport type { PluginConfig } from \"./definitions/plugin-config\";\n\nexport default async ({ pkgRoot, tarballDir }: PluginConfig, { cwd, env, logger, nextRelease: { version }, stderr, stdout }: PrepareContext): Promise<void> => {\n const basePath = pkgRoot ? resolve(cwd, pkgRoot) : cwd;\n\n logger.log(\"Write version %s to package.json in %s\", version, basePath);\n\n const versionResult = execa(\"pnpm\", [\"version\", version, \"--no-git-tag-version\", \"--allow-same-version\"], {\n cwd: basePath,\n env,\n preferLocal: true,\n });\n\n versionResult.stdout.pipe(stdout, { end: false });\n versionResult.stderr.pipe(stderr, { end: false });\n\n await versionResult;\n\n if (tarballDir) {\n logger.log(\"Creating npm package version %s\", version);\n\n const packResult = execa(\"pnpm\", [\"pack\", basePath], { cwd, env, preferLocal: true });\n\n packResult.stdout.pipe(stdout, { end: false });\n packResult.stderr.pipe(stderr, { end: false });\n\n // eslint-disable-next-line unicorn/no-await-expression-member\n const tarball = (await packResult).stdout.split(\"\\n\").pop() as string;\n const tarballSource = resolve(cwd, tarball);\n const tarballDestination = resolve(cwd, tarballDir.trim(), tarball);\n\n // Only move the tarball if we need to\n // Fixes: https://github.com/semantic-release/npm/issues/169\n if (tarballSource !== tarballDestination) {\n await moveFile(tarballSource, tarballDestination);\n }\n }\n};\n","import type { PackageJson } from \"@visulima/package\";\nimport { resolve } from \"@visulima/path\";\nimport AggregateError from \"aggregate-error\";\nimport { execa } from \"execa\";\n\nimport type { PublishContext } from \"./definitions/context\";\nimport type { PluginConfig } from \"./definitions/plugin-config\";\nimport getChannel from \"./utils/get-channel\";\nimport getRegistry from \"./utils/get-registry\";\nimport type { ReleaseInfo } from \"./utils/get-release-info\";\nimport { getReleaseInfo } from \"./utils/get-release-info\";\nimport { reasonToNotPublish, shouldPublish } from \"./utils/should-publish\";\n\nexport default async (pluginConfig: PluginConfig, package_: PackageJson, context: PublishContext): Promise<ReleaseInfo | false> => {\n const {\n cwd,\n env,\n logger,\n nextRelease: { channel, version },\n stderr,\n stdout,\n } = context;\n const { pkgRoot, publishBranch: publishBranchConfig } = pluginConfig;\n\n if (shouldPublish(pluginConfig, package_)) {\n const basePath = pkgRoot ? resolve(cwd, pkgRoot) : cwd;\n const registry = getRegistry(package_, context);\n const distributionTag = getChannel(channel);\n\n const { stdout: currentBranch } = await execa(\"git\", [\"rev-parse\", \"--abbrev-ref\", \"HEAD\"], {\n cwd,\n env,\n preferLocal: true,\n });\n const publishBranches = typeof publishBranchConfig === \"string\" && publishBranchConfig.split(\"|\");\n const isPublishBranch = publishBranches && publishBranches?.includes(currentBranch);\n const publishBranch = isPublishBranch ? currentBranch : \"main\";\n\n logger.log(`Publishing version ${version} on branch ${publishBranch} to npm registry on dist-tag ${distributionTag}`);\n\n const pnpmArguments = [\"publish\", basePath, \"--publish-branch\", publishBranch, \"--tag\", distributionTag, \"--registry\", registry, \"--no-git-checks\"];\n\n if (pluginConfig.disableScripts) {\n pnpmArguments.push(\"--ignore-scripts\");\n }\n\n const result = execa(\"pnpm\", pnpmArguments, {\n cwd,\n env,\n preferLocal: true,\n });\n\n result.stdout.pipe(stdout, { end: false });\n result.stderr.pipe(stderr, { end: false });\n\n try {\n await result;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n logger.log(`Failed to publish ${package_.name}@${version} to dist-tag @${distributionTag} on ${registry}: ${error.message ?? error}`);\n\n throw new AggregateError([error]);\n }\n\n logger.log(`Published ${package_.name}@${version} to dist-tag @${distributionTag} on ${registry}`);\n\n return getReleaseInfo(package_, context, distributionTag, registry);\n }\n\n logger.log(`Skip publishing to npm registry as ${reasonToNotPublish(pluginConfig, package_)}`);\n\n return false;\n};\n","// eslint-disable-next-line unicorn/prevent-abbreviations\nimport type { PackageJson } from \"@visulima/package\";\nimport { findPackageJson } from \"@visulima/package\";\nimport { resolve } from \"@visulima/path\";\nimport AggregateError from \"aggregate-error\";\n\nimport type { CommonContext } from \"../definitions/context\";\nimport getError from \"./get-error\";\n\ninterface Options {\n pkgRoot?: string;\n}\n\nexport default async ({ pkgRoot }: Options, { cwd }: { cwd: CommonContext[\"cwd\"] }): Promise<PackageJson> => {\n try {\n const { packageJson } = await findPackageJson(pkgRoot ? resolve(cwd, pkgRoot) : cwd);\n\n if (!packageJson.name) {\n throw new AggregateError([getError(\"ENOPKGNAME\")]);\n }\n\n return packageJson;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (error.code === \"ENOENT\") {\n throw new AggregateError([getError(\"ENOPKG\")]);\n }\n\n throw error;\n }\n};\n","import AggregateError from \"aggregate-error\";\n\nimport type { VerifyConditionsContext } from \"../definitions/context\";\nimport type { PluginConfig } from \"../definitions/plugin-config\";\nimport getNpmrc from \"../utils/get-npmrc\";\nimport getPackage from \"../utils/get-pkg\";\nimport { shouldPublish } from \"../utils/should-publish\";\nimport verifyAuth from \"./verify-auth\";\nimport verifyConfig from \"./verify-config\";\nimport verifyPnpm from \"./verify-pnpm\";\n\nconst verify = async (pluginConfig: PluginConfig, context: VerifyConditionsContext): Promise<void> => {\n let errors: Error[] = verifyConfig(pluginConfig);\n\n try {\n verifyPnpm(context);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n const typedError = error as AggregateError;\n\n errors = [...errors, ...(typedError.errors ?? [error])];\n }\n\n try {\n const packageJson = await getPackage(pluginConfig, context);\n\n if (shouldPublish(pluginConfig, packageJson)) {\n const npmrc = getNpmrc(context.cwd, context.env);\n\n await verifyAuth(npmrc, packageJson, context);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n const typedError = error as AggregateError;\n\n errors = [...errors, ...(typedError.errors ?? [error])];\n }\n\n if (errors.length > 0) {\n throw new AggregateError(errors);\n }\n};\n\nexport default verify;\n","import type { PackageJson } from \"@visulima/package\";\nimport AggregateError from \"aggregate-error\";\nimport { execa } from \"execa\";\nimport normalizeUrl from \"normalize-url\";\n\nimport type { CommonContext } from \"../definitions/context\";\nimport getError from \"../utils/get-error\";\nimport getRegistry from \"../utils/get-registry\";\nimport setNpmrcAuth from \"../utils/set-npmrc-auth\";\n\nexport default async (npmrc: string, package_: PackageJson, context: CommonContext): Promise<void> => {\n const {\n cwd,\n env: { DEFAULT_NPM_REGISTRY = \"https://registry.npmjs.org/\", ...environment },\n logger,\n stderr,\n stdout,\n } = context;\n const registry = getRegistry(package_, context);\n\n await setNpmrcAuth(npmrc, registry, context);\n\n if (normalizeUrl(registry) === normalizeUrl(DEFAULT_NPM_REGISTRY)) {\n try {\n logger.log(`Running \"pnpm whoami\" to verify authentication on registry \"${registry}\"`);\n\n const whoamiResult = execa(\"pnpm\", [\"whoami\", \"--userconfig\", npmrc, \"--registry\", registry], {\n cwd,\n env: environment,\n preferLocal: true,\n });\n\n whoamiResult.stdout.pipe(stdout, { end: false });\n whoamiResult.stderr.pipe(stderr, { end: false });\n\n await whoamiResult;\n } catch {\n throw new AggregateError([getError(\"EINVALIDNPMTOKEN\", { registry })]);\n }\n } else {\n logger.log(`Skipping authentication verification for non-default registry \"${registry}\"`);\n }\n};\n","import { writeFile } from \"@visulima/fs\";\nimport { resolve } from \"@visulima/path\";\nimport AggregateError from \"aggregate-error\";\nimport { stringify } from \"ini\";\nimport type { AuthOptions } from \"registry-auth-token\";\nimport getAuthToken from \"registry-auth-token\";\n\nimport { DEFAULT_NPM_REGISTRY } from \"../definitions/constants\";\nimport type { CommonContext } from \"../definitions/context\";\nimport getError from \"./get-error\";\nimport nerfDart from \"./nerf-dart\";\nimport rc from \"./rc\";\n\nexport default async (\n npmrc: string,\n registry: string,\n { cwd, env: { NPM_CONFIG_USERCONFIG, NPM_EMAIL, NPM_PASSWORD, NPM_TOKEN, NPM_USERNAME }, logger }: CommonContext,\n): Promise<void> => {\n logger.log(\"Verify authentication for registry %s\", registry);\n\n const { config, files } = rc(\"npm\", {\n config: NPM_CONFIG_USERCONFIG ?? resolve(cwd, \".npmrc\"),\n cwd,\n defaults: { registry: DEFAULT_NPM_REGISTRY },\n });\n\n if (files) {\n logger.log(\"Reading npm config from %s\", files.join(\", \"));\n }\n\n if (getAuthToken(registry, { npmrc: config } as AuthOptions)) {\n await writeFile(npmrc, stringify(config));\n\n return;\n }\n\n if (NPM_USERNAME && NPM_PASSWORD && NPM_EMAIL) {\n await writeFile(npmrc, `${config ? `${stringify(config)}\\n` : \"\"}_auth = \\${LEGACY_TOKEN}\\nemail = \\${NPM_EMAIL}`);\n\n logger.log(`Wrote NPM_USERNAME, NPM_PASSWORD, and NPM_EMAIL to ${npmrc}`);\n } else if (NPM_TOKEN) {\n await writeFile(npmrc, `${config ? `${stringify(config)}\\n` : \"\"}${nerfDart(registry)}:_authToken = \\${NPM_TOKEN}`);\n\n logger.log(`Wrote NPM_TOKEN to ${npmrc}`);\n } else {\n throw new AggregateError([getError(\"ENONPMTOKEN\", { registry })]);\n }\n};\n","import { URL } from \"node:url\";\n\n/**\n * Maps a URL to an identifier.\n *\n * The ISC License\n * Copyright (c) npm, Inc.\n *\n * Name courtesy schiffertronix media LLC, a New Jersey corporation\n *\n * @param {String} url The URL to be nerfed.\n *\n * @returns {String} A nerfed URL.\n */\nconst nerfDart = (url: string): string => {\n const parsed = new URL(url);\n const from = `${parsed.protocol}//${parsed.host}${parsed.pathname}`;\n const real = new URL(\".\", from);\n\n return `//${real.host}${real.pathname}`;\n};\n\nexport default nerfDart;\n","import type SemanticReleaseError from \"@semantic-release/error\";\n\nimport type { PluginConfig } from \"../definitions/plugin-config\";\nimport getError from \"../utils/get-error\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst isString = (value: any): boolean => typeof value === \"string\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst isNil = (value: any): boolean => value === null || value === undefined;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst isNonEmptyString = (value: any): boolean => {\n if (!isString(value)) {\n return false;\n }\n\n return (value as string).trim() !== \"\";\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype ValidatorFunction = (value: any) => boolean;\n\nconst VALIDATORS: Record<string, ValidatorFunction> = {\n branches: Array.isArray,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n npmPublish: (value: any): boolean => typeof value === \"boolean\",\n pkgRoot: isNonEmptyString,\n publishBranch: isNonEmptyString,\n tarballDir: isNonEmptyString,\n};\n\nexport default (config: PluginConfig): SemanticReleaseError[] =>\n // eslint-disable-next-line unicorn/no-array-reduce\n Object.entries(config).reduce((errors, [option, value]) => {\n if (isNil(value)) {\n return errors;\n }\n\n if (!(option in VALIDATORS)) {\n return errors;\n }\n\n if (VALIDATORS[option]?.(value)) {\n return errors;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return [...errors, getError(`EINVALID${option.toUpperCase()}` as any, { [option]: value })];\n }, [] as SemanticReleaseError[]);\n","import { getPackageManagerVersion } from \"@visulima/package\";\nimport AggregateError from \"aggregate-error\";\nimport { gte } from \"semver\";\n\nimport type { CommonContext } from \"../definitions/context\";\nimport getError from \"../utils/get-error\";\n\nconst MIN_PNPM_VERSION = \"8.0.0\";\n\nexport default async function verifyPnpm({ logger }: CommonContext): Promise<void> {\n logger.log(`Verify pnpm version is >= ${MIN_PNPM_VERSION}`);\n\n const version = await getPackageManagerVersion(\"pnpm\");\n\n if (version === undefined) {\n throw new AggregateError([new Error(\"pnpm is not installed\")]);\n }\n\n if (gte(MIN_PNPM_VERSION, version)) {\n throw new AggregateError([getError(\"EINVALIDPNPM\", { version: String(version) })]);\n }\n}\n","import addChannelNpm from \"./add-channel\";\nimport type { AddChannelContext, PrepareContext, PublishContext, VerifyConditionsContext } from \"./definitions/context\";\nimport type { PluginConfig } from \"./definitions/plugin-config\";\nimport prepareNpm from \"./prepare\";\nimport publishNpm from \"./publish\";\nimport getPackage from \"./utils/get-pkg\";\nimport type { ReleaseInfo } from \"./utils/get-release-info\";\nimport verify from \"./verify\";\n\nconst PLUGIN_NAME = \"semantic-release-pnpm\";\n\nlet verified: boolean;\nlet prepared: boolean;\n\nexport const verifyConditions = async (pluginConfig: PluginConfig, context: VerifyConditionsContext): Promise<void> => {\n /**\n * If the plugin is used and has `npmPublish`, `tarballDir` or\n * `pkgRoot` configured, validate them now in order to prevent any release if\n * the configuration is wrong\n */\n if (context.options?.[\"publish\"]) {\n const publish = Array.isArray(context.options?.[\"publish\"]) ? context.options?.[\"publish\"] : [context.options?.[\"publish\"]];\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const publishPlugin = publish.find((config) => config.path && config.path === PLUGIN_NAME) || {};\n\n // eslint-disable-next-line no-param-reassign,@typescript-eslint/no-unsafe-member-access\n pluginConfig.npmPublish = pluginConfig.npmPublish ?? publishPlugin.npmPublish;\n // eslint-disable-next-line no-param-reassign,@typescript-eslint/no-unsafe-member-access\n pluginConfig.tarballDir = pluginConfig.tarballDir ?? publishPlugin.tarballDir;\n // eslint-disable-next-line no-param-reassign,@typescript-eslint/no-unsafe-member-access\n pluginConfig.pkgRoot = pluginConfig.pkgRoot ?? publishPlugin.pkgRoot;\n // eslint-disable-next-line no-param-reassign,@typescript-eslint/no-unsafe-member-access\n pluginConfig.disableScripts = pluginConfig.disableScripts ?? publishPlugin.disableScripts;\n // eslint-disable-next-line no-param-reassign,@typescript-eslint/no-unsafe-member-access\n pluginConfig.branches = pluginConfig.branches ?? publishPlugin.branches;\n }\n\n await verify(pluginConfig, context);\n\n verified = true;\n};\n\nexport const prepare = async (pluginConfig: PluginConfig, context: PrepareContext): Promise<void> => {\n if (!verified) {\n await verify(pluginConfig, context);\n }\n\n await prepareNpm(pluginConfig, context);\n\n prepared = true;\n};\n\nexport const publish = async (pluginConfig: PluginConfig, context: PublishContext): Promise<ReleaseInfo | false> => {\n const packageJson = await getPackage(pluginConfig, context);\n\n if (!verified) {\n await verify(pluginConfig, context);\n }\n\n if (!prepared) {\n await prepareNpm(pluginConfig, context);\n }\n\n return publishNpm(pluginConfig, packageJson, context);\n};\n\nexport const addChannel = async (pluginConfig: PluginConfig, context: AddChannelContext): Promise<ReleaseInfo | false> => {\n if (!verified) {\n await verify(pluginConfig, context);\n }\n\n const packageJson = await getPackage(pluginConfig, context);\n\n return addChannelNpm(pluginConfig, packageJson, context);\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/add-channel.ts","../src/utils/get-channel.ts","../src/utils/get-npmrc-path.ts","../src/utils/get-error.ts","../package.json","../src/definitions/errors.ts","../src/utils/get-registry.ts","../src/definitions/constants.ts","../src/utils/rc.ts","../src/utils/is-json.ts","../src/utils/get-release-info.ts","../src/utils/should-publish.ts","../src/prepare.ts","../src/publish.ts","../src/utils/get-pkg.ts","../src/verify/index.ts","../src/verify/verify-auth.ts","../src/utils/set-npmrc-auth.ts","../src/utils/nerf-dart.ts","../src/verify/verify-config.ts","../src/verify/verify-pnpm.ts","../src/index.ts"],"names":["execa","validRange","get_channel_default","channel","ensureFile","isAccessibleSync","findCacheDirectorySync","resolve","SemanticReleaseError","package_default","linkify","file","errors","branches","npmPublish","registry","pkgRoot","version","publishBranch","tarballDir","get_error_default","code","context","details","message","getNpmrcPath","cwd","environment","npmrc","npmrcPath","temporaryNpmrcPath","get_npmrc_path_default","DEFAULT_NPM_REGISTRY","homedir","env","readFileSync","parseJson","stripJsonComments","dirname","join","parse","merge","isJson","value","is_json_default","getEnvironment","prefix","returnValue","l","k","keypath","emptyStringIndex","cursor","subkey","index","getConfigFiles","name","home","internalCwd","stopAt","environmentConfig","optionConfig","configFiles","start","endOfLoop","files","traversedFiles","traverseFile","rc_default","options","configs","content","getRegistryUrl","scope","url","registryUrl","get_registry_default","normalizeUrl","getReleaseInfo","distributionTag","reasonToNotPublish","pluginConfig","package_","shouldPublish","add_channel_default","logger","stderr","stdout","result","moveFile","prepare_default","basePath","versionResult","packResult","tarball","tarballSource","tarballDestination","AggregateError","publish_default","publishBranchConfig","currentBranch","publishBranches","pnpmArguments","error","findPackageJson","get_pkg_default","packageJson","writeFile","stringify","getAuthToken","URL","nerfDart","parsed","from","real","nerf_dart_default","set_npmrc_auth_default","NPM_CONFIG_USERCONFIG","NPM_EMAIL","NPM_PASSWORD","NPM_TOKEN","NPM_USERNAME","config","verify_auth_default","whoamiResult","isString","isNil","isNonEmptyString","VALIDATORS","verify_config_default","option","getPackageManagerVersion","gte","MIN_PNPM_VERSION","verifyPnpm","verify","typedError","verify_default","PLUGIN_NAME","verified","prepared","verifyConditions","publishPlugin","prepare","publish","addChannel"],"mappings":"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","sourcesContent":["import type { PackageJson } from \"@visulima/package\";\nimport { execa } from \"execa\";\n\nimport type { AddChannelContext } from \"./definitions/context\";\nimport type { PluginConfig } from \"./definitions/plugin-config\";\nimport getChannel from \"./utils/get-channel\";\nimport getNpmrcPath from \"./utils/get-npmrc-path\";\nimport getRegistry from \"./utils/get-registry\";\nimport type { ReleaseInfo } from \"./utils/get-release-info\";\nimport { getReleaseInfo } from \"./utils/get-release-info\";\nimport { reasonToNotPublish, shouldPublish } from \"./utils/should-publish\";\n\nexport default async (pluginConfig: PluginConfig, package_: PackageJson, context: AddChannelContext): Promise<ReleaseInfo | false> => {\n const {\n cwd,\n env,\n logger,\n nextRelease: { channel, version },\n stderr,\n stdout,\n } = context;\n\n if (shouldPublish(pluginConfig, package_)) {\n const registry = getRegistry(package_, context);\n const distributionTag = getChannel(channel);\n\n logger.log(`Adding version ${version} to npm registry on dist-tag ${distributionTag}`);\n\n const npmrc = getNpmrcPath(cwd, env);\n\n const result = execa(\"pnpm\", [\"dist-tag\", \"add\", `${package_.name}@${version}`, distributionTag, \"--userconfig\", npmrc, \"--registry\", registry], {\n cwd,\n env,\n preferLocal: true,\n });\n\n result.stdout.pipe(stdout, { end: false });\n result.stderr.pipe(stderr, { end: false });\n\n await result;\n\n logger.log(`Added ${package_.name}@${version} to dist-tag @${distributionTag} on ${registry}`);\n\n return getReleaseInfo(package_, context, distributionTag, registry);\n }\n\n logger.log(`Skip adding to npm channel as ${reasonToNotPublish(pluginConfig, package_)}`);\n\n return false;\n};\n","import { validRange } from \"semver\";\n\nexport default (channel: string | null | undefined): string => (channel ? (validRange(channel) ? `release-${channel}` : channel) : \"latest\");\n","import { ensureFile, isAccessibleSync } from \"@visulima/fs\";\nimport { findCacheDirectorySync } from \"@visulima/package\";\nimport { resolve } from \"@visulima/path\";\n\nimport getError from \"./get-error\";\n\nconst getNpmrcPath = (cwd: string, environment: NodeJS.ProcessEnv): string => {\n let npmrc: string | undefined;\n\n const npmrcPath = resolve(cwd, \".npmrc\");\n\n if (environment.NPM_CONFIG_USERCONFIG && isAccessibleSync(environment.NPM_CONFIG_USERCONFIG)) {\n npmrc = environment.NPM_CONFIG_USERCONFIG;\n } else if (isAccessibleSync(npmrcPath)) {\n npmrc = npmrcPath;\n } else {\n const temporaryNpmrcPath = findCacheDirectorySync(\"semantic-release-pnpm\", { create: true, cwd });\n\n if (temporaryNpmrcPath) {\n ensureFile(temporaryNpmrcPath);\n\n npmrc = temporaryNpmrcPath;\n }\n }\n\n if (npmrc === undefined) {\n // eslint-disable-next-line unicorn/error-message\n throw new AggregateError([\n getError(\"ENOPNPMRC\", {\n npmrc: npmrcPath,\n }),\n ]);\n }\n\n return npmrc;\n};\n\nexport default getNpmrcPath;\n","import SemanticReleaseError from \"@semantic-release/error\";\n\nimport type { ErrorContext, ErrorDefinition } from \"../definitions/errors\";\nimport { errors } from \"../definitions/errors\";\n\nexport default <T extends keyof typeof errors>(code: T, context: ErrorContext = {}): SemanticReleaseError => {\n const { details, message }: { details?: string; message: string } = (errors[code] as ErrorDefinition)(context);\n\n return new SemanticReleaseError(message, code, details);\n};\n","{\n \"name\": \"@anolilab/semantic-release-pnpm\",\n \"version\": \"1.0.0-alpha.8\",\n \"description\": \"Semantic-release plugin to publish a npm package with pnpm.\",\n \"keywords\": [\n \"anolilab\",\n \"npm\",\n \"publish\",\n \"semantic-release\",\n \"pnpm\",\n \"monorepo\"\n ],\n \"homepage\": \"https://github.com/anolilab/semantic-release-pnpm\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/anolilab/semantic-release-pnpm.git\"\n },\n \"license\": \"MIT\",\n \"author\": {\n \"name\": \"Daniel Bannert\",\n \"email\": \"d.bannert@anolilab.de\"\n },\n \"type\": \"module\",\n \"exports\": \"./dist/index.js\",\n \"main\": \"dist/index.js\",\n \"types\": \"dist/index.d.ts\",\n \"files\": [\n \"dist\",\n \"README.md\",\n \"CHANGELOG.md\"\n ],\n \"scripts\": {\n \"build\": \"cross-env NODE_ENV=development tsup\",\n \"build:prod\": \"cross-env NODE_ENV=production tsup\",\n \"lint:eslint\": \"eslint . --ext js,cjs,mjs,jsx,ts,tsx,json,yaml,yml,md,mdx --max-warnings=0 --config .eslintrc.cjs\",\n \"lint:eslint:fix\": \"pnpm run lint:eslint --fix\",\n \"lint:fix\": \"pnpm run lint:prettier:fix && pnpm run lint:eslint:fix\",\n \"lint:packagejson\": \"publint --strict\",\n \"lint:prettier\": \"prettier --config=.prettierrc.cjs --check .\",\n \"lint:prettier:fix\": \"prettier --config=.prettierrc.cjs --write .\",\n \"lint:secrets\": \"secretlint **/*\",\n \"lint:staged\": \"lint-staged --verbose --concurrent false --debug\",\n \"lint:text\": \"textlint ./.github/ ./README.md ./UPGRADE.md --parallel --experimental --cache --dry-run\",\n \"lint:text:fix\": \"textlint ./.github/ ./README.md ./UPGRADE.md --parallel --experimental --fix\",\n \"lint:types\": \"tsc --noEmit\",\n \"prepare\": \"is-ci || (node verify-node-version.cjs && pnpx only-allow pnpm && husky install)\",\n \"sort-package-json\": \"sort-package-json ./package.json\",\n \"test\": \"vitest run\",\n \"test:bench\": \"vitest bench\",\n \"test:coverage\": \"vitest run --coverage\",\n \"test:watch\": \"vitest\",\n \"update:deps\": \"taze\"\n },\n \"dependencies\": {\n \"@semantic-release/error\": \"^4.0.0\",\n \"@visulima/fs\": \"^2.1.1\",\n \"@visulima/package\": \"1.8.1\",\n \"@visulima/path\": \"^1.0.0\",\n \"aggregate-error\": \"^5.0.0\",\n \"execa\": \"^9.1.0\",\n \"ini\": \"4.1.2\",\n \"move-file\": \"^3.1.0\",\n \"normalize-url\": \"^8.0.1\",\n \"registry-auth-token\": \"^5.0.2\",\n \"semver\": \"^7.6.2\",\n \"ts-deepmerge\": \"^7.0.0\"\n },\n \"devDependencies\": {\n \"@anolilab/commitlint-config\": \"^5.0.3\",\n \"@anolilab/eslint-config\": \"^15.0.3\",\n \"@anolilab/lint-staged-config\": \"^2.1.7\",\n \"@anolilab/prettier-config\": \"^5.0.14\",\n \"@anolilab/textlint-config\": \"^8.0.16\",\n \"@babel/core\": \"^7.24.5\",\n \"@babel/eslint-parser\": \"7.24.5\",\n \"@commitlint/cli\": \"^19.3.0\",\n \"@commitlint/config-conventional\": \"^19.2.2\",\n \"@secretlint/secretlint-rule-preset-recommend\": \"^8.2.4\",\n \"@semantic-release/changelog\": \"^6.0.3\",\n \"@semantic-release/git\": \"^10.0.1\",\n \"@semantic-release/github\": \"^10.0.4\",\n \"@types/dockerode\": \"^3.3.29\",\n \"@types/ini\": \"^4.1.0\",\n \"@types/node\": \"^20.12.12\",\n \"@types/semantic-release__error\": \"3.0.3\",\n \"@types/semver\": \"7.5.8\",\n \"@types/stream-buffers\": \"^3.0.7\",\n \"@vitest/coverage-v8\": \"^1.6.0\",\n \"commitizen\": \"^4.3.0\",\n \"commitlint\": \"^19.3.0\",\n \"cross-env\": \"^7.0.3\",\n \"cz-conventional-changelog\": \"^3.3.0\",\n \"dockerode\": \"4.0.2\",\n \"eslint\": \"8.55.0\",\n \"eslint-plugin-deprecation\": \"^2.0.0\",\n \"eslint-plugin-editorconfig\": \"^4.0.3\",\n \"eslint-plugin-import\": \"npm:eslint-plugin-i@2.29.1\",\n \"eslint-plugin-mdx\": \"^3.1.5\",\n \"eslint-plugin-n\": \"^17.7.0\",\n \"eslint-plugin-vitest\": \"^0.4.1\",\n \"eslint-plugin-vitest-globals\": \"^1.5.0\",\n \"eslint-plugin-you-dont-need-lodash-underscore\": \"^6.14.0\",\n \"get-stream\": \"9.0.1\",\n \"got\": \"^14.2.1\",\n \"husky\": \"^9.0.11\",\n \"is-ci\": \"^3.0.1\",\n \"lint-staged\": \"^15.2.2\",\n \"p-retry\": \"^6.2.0\",\n \"prettier\": \"^3.2.5\",\n \"publint\": \"^0.2.7\",\n \"rimraf\": \"^5.0.7\",\n \"secretlint\": \"8.2.4\",\n \"semantic-release\": \"^23.1.1\",\n \"sort-package-json\": \"^2.10.0\",\n \"stream-buffers\": \"^3.0.2\",\n \"taze\": \"^0.13.8\",\n \"tempy\": \"^3.1.0\",\n \"textlint\": \"^14.0.4\",\n \"tsup\": \"^8.0.2\",\n \"typescript\": \"^5.4.5\",\n \"vitest\": \"^1.6.0\"\n },\n \"peerDependencies\": {\n \"semantic-release\": \"^20.0 || ^21.0 || >=22.0.3\"\n },\n \"packageManager\": \"pnpm@9.1.1\",\n \"engines\": {\n \"node\": \">=18 || >=20.6.1\"\n },\n \"publishConfig\": {\n \"access\": \"public\",\n \"provenance\": true\n },\n \"pnpm\": {\n \"overrides\": {\n \"chrono-node@<2.2.4\": \">=2.7.5\"\n }\n },\n \"anolilab\": {\n \"eslint-config\": {\n \"plugin\": {\n \"etc\": false,\n \"tsdoc\": false\n },\n \"warn_on_unsupported_typescript_version\": false,\n \"info_on_disabling_jsx_react_rule\": false,\n \"info_on_disabling_prettier_conflict_rule\": false,\n \"info_on_disabling_jsonc_sort_keys_rule\": false,\n \"import_ignore_exports\": [\n \"**/*.cjs\",\n \"verify-node-version.cjs\"\n ]\n }\n }\n}\n","import package_ from \"../../package.json\";\n\nconst linkify = (file: string) => `${package_.homepage}/blob/main/${file}`;\n\ninterface ErrorDetails {\n details: string;\n message: string;\n}\n\nexport type ErrorDefinition = (context: ErrorContext) => ErrorDetails;\n\nexport interface ErrorContext {\n npmPublish?: boolean;\n npmrc?: string;\n pkgRoot?: string;\n publishBranch?: string;\n registry?: string;\n tarballDir?: string;\n version?: string;\n}\n\nexport const errors = {\n EINVALIDBRANCHES: (branches: string[]) => {\n return {\n details: `The [branches option](${linkify(\"README.md#branches\")}) option, if defined, must be an array of \\`String\\`.\nYour configuration for the \\`branches\\` option is \\`${branches}\\`.`,\n message: \"Invalid `branches` option.\",\n };\n },\n EINVALIDNPMPUBLISH: ({ npmPublish }: ErrorContext) => {\n return {\n details: `The [npmPublish option](${linkify(\"README.md#npmpublish\")}) option, if defined, must be a \\`Boolean\\`.\nYour configuration for the \\`npmPublish\\` option is \\`${npmPublish}\\`.`,\n message: \"Invalid `npmPublish` option.\",\n };\n },\n EINVALIDNPMTOKEN: ({ registry }: ErrorContext) => {\n return {\n details: `The [npm token](${linkify(\n \"README.md#npm-registry-authentication\",\n )}) configured in the \\`NPM_TOKEN\\` environment variable must be a valid [token](https://docs.npmjs.com/getting-started/working_with_tokens) allowing to publish to the registry \\`${registry}\\`.\nIf you are using Two Factor Authentication for your account, set its level to [\"Authorization only\"](https://docs.npmjs.com/getting-started/using-two-factor-authentication#levels-of-authentication) in your account settings. **semantic-release** cannot publish with the default \"Authorization and writes\" level.\nPlease make sure to set the \\`NPM_TOKEN\\` environment variable in your CI with the exact value of the npm token.`,\n message: \"Invalid npm token.\",\n };\n },\n EINVALIDPKGROOT: ({ pkgRoot }: ErrorContext) => {\n return {\n details: `The [pkgRoot option](${linkify(\"README.md#pkgroot\")}) option, if defined, must be a \\`String\\`.\nYour configuration for the \\`pkgRoot\\` option is \\`${pkgRoot}\\`.`,\n message: \"Invalid `pkgRoot` option.\",\n };\n },\n EINVALIDPNPM: ({ version }: ErrorContext) => {\n return {\n details: `The version of Pnpm that you are using is not compatible. Please refer to [the README](${linkify(\n \"README.md#install\",\n )}) to review which versions of Pnpm are currently supported\n\nYour version of Pnpm is \"${version}\".`,\n message: \"Incompatible Pnpm version detected.\",\n };\n },\n EINVALIDPUBLISHBRANCH: ({ publishBranch }: ErrorContext) => {\n return {\n details: `The [publishBranch option](${linkify(\"README.md#publishBranch\")}) option, if defined, must be a \\`String\\`.\nYour configuration for the \\`publishBranch\\` option is \\`${publishBranch}\\`.`,\n message: \"Invalid `publishBranch` option.\",\n };\n },\n EINVALIDTARBALLDIR: ({ tarballDir }: ErrorContext) => {\n return {\n details: `The [tarballDir option](${linkify(\"README.md#tarballdir\")}) option, if defined, must be a \\`String\\`.\nYour configuration for the \\`tarballDir\\` option is \\`${tarballDir}\\`.`,\n message: \"Invalid `tarballDir` option.\",\n };\n },\n ENONPMTOKEN: ({ registry }: ErrorContext) => {\n return {\n details: `An [npm token](${linkify(\n \"README.md#npm-registry-authentication\",\n )}) must be created and set in the \\`NPM_TOKEN\\` environment variable on your CI environment.\nPlease make sure to create an [npm token](https://docs.npmjs.com/getting-started/working_with_tokens#how-to-create-new-tokens) and to set it in the \\`NPM_TOKEN\\` environment variable on your CI environment. The token must allow to publish to the registry \\`${registry}\\`.`,\n message: \"No npm token specified.\",\n };\n },\n ENOPKG: () => {\n return {\n details: `A [package.json file](https://docs.npmjs.com/files/package.json) at the root of your project is required to release on npm.\nPlease follow the [npm guideline](https://docs.npmjs.com/getting-started/creating-node-modules) to create a valid \\`package.json\\` file.`,\n message: \"Missing `package.json` file.\",\n };\n },\n ENOPKGNAME: () => {\n return {\n details: `The \\`package.json\\`'s [name](https://docs.npmjs.com/files/package.json#name) property is required in order to publish a package to the npm registry.\nPlease make sure to add a valid \\`name\\` for your package in your \\`package.json\\`.`,\n message: \"Missing `name` property in `package.json`.\",\n };\n },\n ENOPNPM: () => {\n return {\n details: `The Pnpm CLI could not be found in your PATH. Make sure Pnpm is installed and try again.`,\n message: \"Pnpm not found.\",\n };\n },\n ENOPNPMRC: () => {\n return {\n details: `Didnt find a \\`.npmrc\\` file or it was not possible to create , in the root of your project.`,\n message: \"Missing `.npmrc` file.\",\n };\n },\n};\n","import type { PackageJson } from \"@visulima/package\";\nimport { resolve } from \"@visulima/path\";\nimport type { AuthOptions } from \"registry-auth-token\";\n\nimport { DEFAULT_NPM_REGISTRY } from \"../definitions/constants\";\nimport type { CommonContext } from \"../definitions/context\";\nimport rc from \"./rc\";\n\nconst getRegistryUrl = (scope: string, npmrc: AuthOptions[\"npmrc\"]): string => {\n let url: string = DEFAULT_NPM_REGISTRY;\n\n if (npmrc) {\n const registryUrl = npmrc[`${scope}:registry`] ?? npmrc[\"registry\"];\n\n if (registryUrl) {\n url = registryUrl;\n }\n }\n\n return url.slice(-1) === \"/\" ? url : `${url}/`;\n};\n\nexport default ({ name, publishConfig: { registry } = {} }: PackageJson, { cwd, env }: CommonContext): string =>\n registry ??\n env.NPM_CONFIG_REGISTRY ??\n getRegistryUrl(\n (name as string).split(\"/\")[0] as string,\n rc(\"npm\", {\n config: env.NPM_CONFIG_USERCONFIG ?? resolve(cwd, \".npmrc\"),\n cwd,\n defaults: { registry: \"https://registry.npmjs.org/\" },\n }).config as AuthOptions[\"npmrc\"],\n );\n","// eslint-disable-next-line import/prefer-default-export\nexport const DEFAULT_NPM_REGISTRY = \"https://registry.npmjs.org/\";\n","import { homedir } from \"node:os\";\nimport { cwd, env } from \"node:process\";\n\nimport { isAccessibleSync, readFileSync } from \"@visulima/fs\";\nimport { parseJson, stripJsonComments } from \"@visulima/fs/utils\";\nimport { dirname, join } from \"@visulima/path\";\nimport { parse } from \"ini\";\nimport { merge } from \"ts-deepmerge\";\n\nimport isJson from \"./is-json\";\n\n// eslint-disable-next-line sonarjs/cognitive-complexity,@typescript-eslint/no-explicit-any\nconst getEnvironment = (prefix: string, environment = env): Record<string, any> => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const returnValue: Record<string, any> = {};\n const l = prefix.length;\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const k in environment) {\n if (k.toLowerCase().indexOf(prefix.toLowerCase()) === 0) {\n const keypath = k.slice(Math.max(0, l)).split(\"__\");\n\n // Trim empty strings from keypath array\n let emptyStringIndex;\n\n // eslint-disable-next-line no-loops/no-loops,no-cond-assign\n while ((emptyStringIndex = keypath.indexOf(\"\")) > -1) {\n keypath.splice(emptyStringIndex, 1);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let cursor: Record<string, any> = returnValue;\n\n keypath.forEach((subkey, index) => {\n // (check for subkey first so we ignore empty strings)\n // (check for cursor to avoid assignment to primitive objects)\n if (!subkey || typeof cursor !== \"object\") {\n return;\n }\n\n // If this is the last key, just stuff the value in there\n // Assigns actual value from env variable to final key\n // (unless it's just an empty string- in that case use the last valid key)\n if (index === keypath.length - 1) {\n cursor[subkey] = environment[k];\n }\n\n // Build sub-object if nothing already exists at the keypath\n if (cursor[subkey] === undefined) {\n cursor[subkey] = {};\n }\n\n // Increment cursor used to track the object at the current depth\n cursor = cursor[subkey];\n });\n }\n }\n\n return returnValue;\n};\n\n/**\n * Will look in all the obvious places for configuration:\n *\n * - The defaults object you passed in\n * - `/etc/${appname}/config`\n * - `/etc/${appname}rc`\n * - `$HOME/.config/${appname}/config`\n * - `$HOME/.config/${appname}`\n * - `$HOME/.${appname}/config`\n * - `$HOME/.${appname}rc`\n * - a local `.${appname}/config` and `.${appname}rc` and all found looking in `../../../ ../../ ../ ./` etc.\n * - if you passed environment variable `${appname}_config` then from that file\n * - if you passed options.config variable, then from that file\n * - environment variables prefixed with `${appname}_`\n * or use \"\\_\\_\" to indicate nested properties <br/> _(e.g. `appname_foo__bar__baz` => `foo.bar.baz`)_\n *\n * @param {string} name\n * @param {string} home\n * @param {string} internalCwd\n * @param {string | undefined} stopAt\n * @param {string | undefined} environmentConfig\n * @param {string | undefined} optionConfig\n * @returns {Array<string>}\n */\n// eslint-disable-next-line sonarjs/cognitive-complexity\nconst getConfigFiles = (name: string, home: string, internalCwd: string, stopAt?: string, environmentConfig?: string, optionConfig?: string): string[] => {\n const configFiles = new Set<string>();\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const file of [`/etc/${name}/config`, `/etc/${name}rc`]) {\n if (isAccessibleSync(file)) {\n configFiles.add(file);\n }\n }\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const file of [join(home, \".config\", name, \"config\"), join(home, \".config\", name), join(home, `.${name}`, \"config\"), join(home, `.${name}rc`)]) {\n if (isAccessibleSync(file)) {\n configFiles.add(file);\n }\n\n if (isAccessibleSync(`${file}.json`)) {\n configFiles.add(`${file}.json`);\n }\n }\n\n let start = internalCwd;\n let endOfLoop = false;\n\n const files = [join(\".\" + name, \"config.json\"), join(\".\" + name, \"config\"), join(\".\" + name + \"rc.json\"), join(\".\" + name + \"rc\")];\n\n const traversedFiles: string[] = [];\n\n // eslint-disable-next-line no-loops/no-loops\n do {\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const file of files) {\n const traverseFile = join(start, file);\n\n if (isAccessibleSync(traverseFile)) {\n traversedFiles.push(traverseFile);\n }\n }\n\n start = dirname(start);\n\n if (endOfLoop) {\n break;\n }\n\n endOfLoop = dirname(start) === start;\n } while (stopAt ? start === stopAt : true); // root\n\n // reverse the traversedFiles so its starts with root\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const file of traversedFiles.reverse()) {\n configFiles.add(file);\n }\n\n if (typeof environmentConfig === \"string\" && isAccessibleSync(environmentConfig)) {\n configFiles.add(environmentConfig);\n }\n\n if (optionConfig && isAccessibleSync(optionConfig)) {\n configFiles.add(optionConfig);\n }\n\n return [...configFiles];\n};\n\nexport default (\n name: string,\n options: {\n config?: string;\n cwd?: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n defaults?: Record<string, any>;\n home?: string;\n stopAt?: string;\n } = {},\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): { config: Record<string, any>; files: string[] } => {\n // eslint-disable-next-line no-param-reassign\n options = {\n cwd: cwd(),\n home: homedir(),\n ...options,\n };\n\n const { config: environmentConfig, ...environment } = getEnvironment(`${name}_`);\n\n const configFiles = getConfigFiles(name, options.home as string, options.cwd as string, options.stopAt, env[`${name}_config`], options.config);\n\n const configs: object[] = [];\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const file of configFiles) {\n const content = readFileSync(file);\n\n if (isJson(content)) {\n configs.push(parseJson(stripJsonComments(content)));\n } else {\n configs.push(parse(content));\n }\n }\n\n if (environment) {\n configs.push(environment);\n }\n\n return { config: merge(options.defaults ?? {}, ...configs), files: configFiles };\n};\n","/**\n * Checks if string is a parseable JSON string.\n *\n * @param {string} value\n * @returns {boolean}\n */\nconst isJson = (value: string): boolean => {\n try {\n JSON.parse(value);\n } catch {\n return false;\n }\n\n return true;\n};\n\nexport default isJson;\n","import type { PackageJson } from \"@visulima/package\";\nimport normalizeUrl from \"normalize-url\";\n\nimport type { PublishContext } from \"../definitions/context\";\n\nexport interface ReleaseInfo {\n channel: string;\n name: string;\n url?: string;\n}\n\nexport const getReleaseInfo = (\n { name }: PackageJson,\n { env: { DEFAULT_NPM_REGISTRY = \"https://registry.npmjs.org/\" }, nextRelease: { version } }: PublishContext,\n distributionTag: string,\n registry: string,\n): ReleaseInfo => {\n return {\n channel: distributionTag,\n name: `pnpm package (@${distributionTag} dist-tag)`,\n url: normalizeUrl(registry) === normalizeUrl(DEFAULT_NPM_REGISTRY) ? `https://www.npmjs.com/package/${name}/v/${version}` : undefined,\n };\n};\n","import type { PackageJson } from \"@visulima/package\";\n\nimport type { PluginConfig } from \"../definitions/plugin-config\";\n\n/**\n * Returns null if `npmPublish` is not `false` and `pkg.private` is not\n * `true` or `pkg.workspaces` is not `undefined`.\n * Returns reason otherwise.\n */\nexport const reasonToNotPublish = (pluginConfig: PluginConfig, package_: PackageJson): string | null =>\n (pluginConfig.npmPublish === false\n ? \"npmPublish plugin option is false\"\n : package_.private === true && package_.workspaces === undefined\n ? \"package is private and has no workspaces\"\n : null);\n\nexport const shouldPublish = (pluginConfig: PluginConfig, package_: PackageJson): boolean => reasonToNotPublish(pluginConfig, package_) === null;\n","import { resolve } from \"@visulima/path\";\nimport { execa } from \"execa\";\nimport { moveFile } from \"move-file\";\n\nimport type { PrepareContext } from \"./definitions/context\";\nimport type { PluginConfig } from \"./definitions/plugin-config\";\n\nexport default async ({ pkgRoot, tarballDir }: PluginConfig, { cwd, env, logger, nextRelease: { version }, stderr, stdout }: PrepareContext): Promise<void> => {\n const basePath = pkgRoot ? resolve(cwd, pkgRoot) : cwd;\n\n logger.log(\"Write version %s to package.json in %s\", version, basePath);\n\n const versionResult = execa(\"pnpm\", [\"version\", version, \"--no-git-tag-version\", \"--allow-same-version\"], {\n cwd: basePath,\n env,\n preferLocal: true,\n });\n\n versionResult.stdout.pipe(stdout, { end: false });\n versionResult.stderr.pipe(stderr, { end: false });\n\n await versionResult;\n\n if (tarballDir) {\n logger.log(\"Creating npm package version %s\", version);\n\n const packResult = execa(\"pnpm\", [\"pack\", basePath], { cwd, env, preferLocal: true });\n\n packResult.stdout.pipe(stdout, { end: false });\n packResult.stderr.pipe(stderr, { end: false });\n\n // eslint-disable-next-line unicorn/no-await-expression-member\n const tarball = (await packResult).stdout.split(\"\\n\").pop() as string;\n const tarballSource = resolve(cwd, tarball);\n const tarballDestination = resolve(cwd, tarballDir.trim(), tarball);\n\n // Only move the tarball if we need to\n // Fixes: https://github.com/semantic-release/npm/issues/169\n if (tarballSource !== tarballDestination) {\n await moveFile(tarballSource, tarballDestination);\n }\n }\n};\n","import type { PackageJson } from \"@visulima/package\";\nimport { resolve } from \"@visulima/path\";\nimport AggregateError from \"aggregate-error\";\nimport { execa } from \"execa\";\n\nimport type { PublishContext } from \"./definitions/context\";\nimport type { PluginConfig } from \"./definitions/plugin-config\";\nimport getChannel from \"./utils/get-channel\";\nimport getRegistry from \"./utils/get-registry\";\nimport type { ReleaseInfo } from \"./utils/get-release-info\";\nimport { getReleaseInfo } from \"./utils/get-release-info\";\nimport { reasonToNotPublish, shouldPublish } from \"./utils/should-publish\";\n\nexport default async (pluginConfig: PluginConfig, package_: PackageJson, context: PublishContext): Promise<ReleaseInfo | false> => {\n const {\n cwd,\n env,\n logger,\n nextRelease: { channel, version },\n stderr,\n stdout,\n } = context;\n const { pkgRoot, publishBranch: publishBranchConfig } = pluginConfig;\n\n if (shouldPublish(pluginConfig, package_)) {\n const basePath = pkgRoot ? resolve(cwd, pkgRoot) : cwd;\n const registry = getRegistry(package_, context);\n const distributionTag = getChannel(channel);\n\n const { stdout: currentBranch } = await execa(\"git\", [\"rev-parse\", \"--abbrev-ref\", \"HEAD\"], {\n cwd,\n env,\n preferLocal: true,\n });\n const publishBranches = typeof publishBranchConfig === \"string\" && publishBranchConfig.split(\"|\");\n const isPublishBranch = publishBranches && publishBranches?.includes(currentBranch);\n const publishBranch = isPublishBranch ? currentBranch : \"main\";\n\n logger.log(`Publishing version ${version} on branch ${publishBranch} to npm registry on dist-tag ${distributionTag}`);\n\n const pnpmArguments = [\"publish\", basePath, \"--publish-branch\", publishBranch, \"--tag\", distributionTag, \"--registry\", registry, \"--no-git-checks\"];\n\n if (pluginConfig.disableScripts) {\n pnpmArguments.push(\"--ignore-scripts\");\n }\n\n const result = execa(\"pnpm\", pnpmArguments, {\n cwd,\n env,\n preferLocal: true,\n });\n\n result.stdout.pipe(stdout, { end: false });\n result.stderr.pipe(stderr, { end: false });\n\n try {\n await result;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n logger.log(`Failed to publish ${package_.name}@${version} to dist-tag @${distributionTag} on ${registry}: ${error.message ?? error}`);\n\n throw new AggregateError([error]);\n }\n\n logger.log(`Published ${package_.name}@${version} to dist-tag @${distributionTag} on ${registry}`);\n\n return getReleaseInfo(package_, context, distributionTag, registry);\n }\n\n logger.log(`Skip publishing to npm registry as ${reasonToNotPublish(pluginConfig, package_)}`);\n\n return false;\n};\n","// eslint-disable-next-line unicorn/prevent-abbreviations\nimport type { PackageJson } from \"@visulima/package\";\nimport { findPackageJson } from \"@visulima/package\";\nimport { resolve } from \"@visulima/path\";\nimport AggregateError from \"aggregate-error\";\n\nimport type { CommonContext } from \"../definitions/context\";\nimport getError from \"./get-error\";\n\ninterface Options {\n pkgRoot?: string;\n}\n\nexport default async ({ pkgRoot }: Options, { cwd }: { cwd: CommonContext[\"cwd\"] }): Promise<PackageJson> => {\n try {\n const { packageJson } = await findPackageJson(pkgRoot ? resolve(cwd, pkgRoot) : cwd);\n\n if (!packageJson.name) {\n throw new AggregateError([getError(\"ENOPKGNAME\")]);\n }\n\n return packageJson;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (error.code === \"ENOENT\") {\n throw new AggregateError([getError(\"ENOPKG\")]);\n }\n\n throw error;\n }\n};\n","import AggregateError from \"aggregate-error\";\n\nimport type { VerifyConditionsContext } from \"../definitions/context\";\nimport type { PluginConfig } from \"../definitions/plugin-config\";\nimport getNpmrcPath from \"../utils/get-npmrc-path\";\nimport getPackage from \"../utils/get-pkg\";\nimport { shouldPublish } from \"../utils/should-publish\";\nimport verifyAuth from \"./verify-auth\";\nimport verifyConfig from \"./verify-config\";\nimport verifyPnpm from \"./verify-pnpm\";\n\nconst verify = async (pluginConfig: PluginConfig, context: VerifyConditionsContext): Promise<void> => {\n let errors: Error[] = verifyConfig(pluginConfig);\n\n try {\n verifyPnpm(context);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n const typedError = error as AggregateError;\n\n errors = [...errors, ...(typedError.errors ?? [error])];\n }\n\n try {\n const packageJson = await getPackage(pluginConfig, context);\n\n if (shouldPublish(pluginConfig, packageJson)) {\n const npmrc = getNpmrcPath(context.cwd, context.env);\n\n await verifyAuth(npmrc, packageJson, context);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n const typedError = error as AggregateError;\n\n errors = [...errors, ...(typedError.errors ?? [error])];\n }\n\n if (errors.length > 0) {\n throw new AggregateError(errors);\n }\n};\n\nexport default verify;\n","import type { PackageJson } from \"@visulima/package\";\nimport AggregateError from \"aggregate-error\";\nimport { execa } from \"execa\";\nimport normalizeUrl from \"normalize-url\";\n\nimport type { CommonContext } from \"../definitions/context\";\nimport getError from \"../utils/get-error\";\nimport getRegistry from \"../utils/get-registry\";\nimport setNpmrcAuth from \"../utils/set-npmrc-auth\";\n\nexport default async (npmrc: string, package_: PackageJson, context: CommonContext): Promise<void> => {\n const {\n cwd,\n env: { DEFAULT_NPM_REGISTRY = \"https://registry.npmjs.org/\", ...environment },\n logger,\n stderr,\n stdout,\n } = context;\n const registry = getRegistry(package_, context);\n\n await setNpmrcAuth(npmrc, registry, context);\n\n if (normalizeUrl(registry) === normalizeUrl(DEFAULT_NPM_REGISTRY)) {\n try {\n logger.log(`Running \"pnpm whoami\" to verify authentication on registry \"${registry}\"`);\n\n const whoamiResult = execa(\"pnpm\", [\"whoami\", \"--userconfig\", npmrc, \"--registry\", registry], {\n cwd,\n env: environment,\n preferLocal: true,\n });\n\n whoamiResult.stdout.pipe(stdout, { end: false });\n whoamiResult.stderr.pipe(stderr, { end: false });\n\n await whoamiResult;\n } catch {\n throw new AggregateError([getError(\"EINVALIDNPMTOKEN\", { registry })]);\n }\n } else {\n logger.log(`Skipping authentication verification for non-default registry \"${registry}\"`);\n }\n};\n","import { writeFile } from \"@visulima/fs\";\nimport { resolve } from \"@visulima/path\";\nimport AggregateError from \"aggregate-error\";\nimport { stringify } from \"ini\";\nimport type { AuthOptions } from \"registry-auth-token\";\nimport getAuthToken from \"registry-auth-token\";\n\nimport { DEFAULT_NPM_REGISTRY } from \"../definitions/constants\";\nimport type { CommonContext } from \"../definitions/context\";\nimport getError from \"./get-error\";\nimport nerfDart from \"./nerf-dart\";\nimport rc from \"./rc\";\n\nexport default async (\n npmrc: string,\n registry: string,\n { cwd, env: { NPM_CONFIG_USERCONFIG, NPM_EMAIL, NPM_PASSWORD, NPM_TOKEN, NPM_USERNAME }, logger }: CommonContext,\n): Promise<void> => {\n logger.log(\"Verify authentication for registry %s\", registry);\n\n const { config, files } = rc(\"npm\", {\n config: NPM_CONFIG_USERCONFIG ?? resolve(cwd, \".npmrc\"),\n cwd,\n defaults: { registry: DEFAULT_NPM_REGISTRY },\n });\n\n if (files) {\n logger.log(\"Reading npm config from %s\", files.join(\", \"));\n }\n\n if (getAuthToken(registry, { npmrc: config } as AuthOptions)) {\n await writeFile(npmrc, stringify(config));\n\n return;\n }\n\n if (NPM_USERNAME && NPM_PASSWORD && NPM_EMAIL) {\n await writeFile(npmrc, `${config ? `${stringify(config)}\\n` : \"\"}_auth = \\${LEGACY_TOKEN}\\nemail = \\${NPM_EMAIL}`);\n\n logger.log(`Wrote NPM_USERNAME, NPM_PASSWORD, and NPM_EMAIL to ${npmrc}`);\n } else if (NPM_TOKEN) {\n await writeFile(npmrc, `${config ? `${stringify(config)}\\n` : \"\"}${nerfDart(registry)}:_authToken = \\${NPM_TOKEN}`);\n\n logger.log(`Wrote NPM_TOKEN to ${npmrc}`);\n } else {\n throw new AggregateError([getError(\"ENONPMTOKEN\", { registry })]);\n }\n};\n","import { URL } from \"node:url\";\n\n/**\n * Maps a URL to an identifier.\n *\n * The ISC License\n * Copyright (c) npm, Inc.\n *\n * Name courtesy schiffertronix media LLC, a New Jersey corporation\n *\n * @param {String} url The URL to be nerfed.\n *\n * @returns {String} A nerfed URL.\n */\nconst nerfDart = (url: string): string => {\n const parsed = new URL(url);\n const from = `${parsed.protocol}//${parsed.host}${parsed.pathname}`;\n const real = new URL(\".\", from);\n\n return `//${real.host}${real.pathname}`;\n};\n\nexport default nerfDart;\n","import type SemanticReleaseError from \"@semantic-release/error\";\n\nimport type { PluginConfig } from \"../definitions/plugin-config\";\nimport getError from \"../utils/get-error\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst isString = (value: any): boolean => typeof value === \"string\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst isNil = (value: any): boolean => value === null || value === undefined;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst isNonEmptyString = (value: any): boolean => {\n if (!isString(value)) {\n return false;\n }\n\n return (value as string).trim() !== \"\";\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype ValidatorFunction = (value: any) => boolean;\n\nconst VALIDATORS: Record<string, ValidatorFunction> = {\n branches: Array.isArray,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n npmPublish: (value: any): boolean => typeof value === \"boolean\",\n pkgRoot: isNonEmptyString,\n publishBranch: isNonEmptyString,\n tarballDir: isNonEmptyString,\n};\n\nexport default (config: PluginConfig): SemanticReleaseError[] =>\n // eslint-disable-next-line unicorn/no-array-reduce\n Object.entries(config).reduce((errors, [option, value]) => {\n if (isNil(value)) {\n return errors;\n }\n\n if (!(option in VALIDATORS)) {\n return errors;\n }\n\n if (VALIDATORS[option]?.(value)) {\n return errors;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return [...errors, getError(`EINVALID${option.toUpperCase()}` as any, { [option]: value })];\n }, [] as SemanticReleaseError[]);\n","import { getPackageManagerVersion } from \"@visulima/package\";\nimport AggregateError from \"aggregate-error\";\nimport { gte } from \"semver\";\n\nimport type { CommonContext } from \"../definitions/context\";\nimport getError from \"../utils/get-error\";\n\nconst MIN_PNPM_VERSION = \"8.0.0\";\n\nexport default async function verifyPnpm({ logger }: CommonContext): Promise<void> {\n logger.log(`Verify pnpm version is >= ${MIN_PNPM_VERSION}`);\n\n const version = await getPackageManagerVersion(\"pnpm\");\n\n if (version === undefined) {\n throw new AggregateError([new Error(\"pnpm is not installed\")]);\n }\n\n if (gte(MIN_PNPM_VERSION, version)) {\n throw new AggregateError([getError(\"EINVALIDPNPM\", { version: String(version) })]);\n }\n}\n","import addChannelNpm from \"./add-channel\";\nimport type { AddChannelContext, PrepareContext, PublishContext, VerifyConditionsContext } from \"./definitions/context\";\nimport type { PluginConfig } from \"./definitions/plugin-config\";\nimport prepareNpm from \"./prepare\";\nimport publishNpm from \"./publish\";\nimport getPackage from \"./utils/get-pkg\";\nimport type { ReleaseInfo } from \"./utils/get-release-info\";\nimport verify from \"./verify\";\n\nconst PLUGIN_NAME = \"semantic-release-pnpm\";\n\nlet verified: boolean;\nlet prepared: boolean;\n\nexport const verifyConditions = async (pluginConfig: PluginConfig, context: VerifyConditionsContext): Promise<void> => {\n /**\n * If the plugin is used and has `npmPublish`, `tarballDir` or\n * `pkgRoot` configured, validate them now in order to prevent any release if\n * the configuration is wrong\n */\n if (context.options?.[\"publish\"]) {\n const publish = Array.isArray(context.options?.[\"publish\"]) ? context.options?.[\"publish\"] : [context.options?.[\"publish\"]];\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const publishPlugin = publish.find((config) => config.path && config.path === PLUGIN_NAME) || {};\n\n // eslint-disable-next-line no-param-reassign,@typescript-eslint/no-unsafe-member-access\n pluginConfig.npmPublish = pluginConfig.npmPublish ?? publishPlugin.npmPublish;\n // eslint-disable-next-line no-param-reassign,@typescript-eslint/no-unsafe-member-access\n pluginConfig.tarballDir = pluginConfig.tarballDir ?? publishPlugin.tarballDir;\n // eslint-disable-next-line no-param-reassign,@typescript-eslint/no-unsafe-member-access\n pluginConfig.pkgRoot = pluginConfig.pkgRoot ?? publishPlugin.pkgRoot;\n // eslint-disable-next-line no-param-reassign,@typescript-eslint/no-unsafe-member-access\n pluginConfig.disableScripts = pluginConfig.disableScripts ?? publishPlugin.disableScripts;\n // eslint-disable-next-line no-param-reassign,@typescript-eslint/no-unsafe-member-access\n pluginConfig.branches = pluginConfig.branches ?? publishPlugin.branches;\n }\n\n await verify(pluginConfig, context);\n\n verified = true;\n};\n\nexport const prepare = async (pluginConfig: PluginConfig, context: PrepareContext): Promise<void> => {\n if (!verified) {\n await verify(pluginConfig, context);\n }\n\n await prepareNpm(pluginConfig, context);\n\n prepared = true;\n};\n\nexport const publish = async (pluginConfig: PluginConfig, context: PublishContext): Promise<ReleaseInfo | false> => {\n const packageJson = await getPackage(pluginConfig, context);\n\n if (!verified) {\n await verify(pluginConfig, context);\n }\n\n if (!prepared) {\n await prepareNpm(pluginConfig, context);\n }\n\n return publishNpm(pluginConfig, packageJson, context);\n};\n\nexport const addChannel = async (pluginConfig: PluginConfig, context: AddChannelContext): Promise<ReleaseInfo | false> => {\n if (!verified) {\n await verify(pluginConfig, context);\n }\n\n const packageJson = await getPackage(pluginConfig, context);\n\n return addChannelNpm(pluginConfig, packageJson, context);\n};\n"]}
|