@anolilab/semantic-release-pnpm 1.0.0-alpha.6 → 1.0.0-alpha.8
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 +19 -0
- package/dist/index.js +12 -11
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,22 @@
|
|
|
1
|
+
## [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
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* improved rc handling ([7de7677](https://github.com/anolilab/semantic-release-pnpm/commit/7de7677b5a38b641f0d9f7490debc830209aeda6))
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* fixed test ([6f8dfc7](https://github.com/anolilab/semantic-release-pnpm/commit/6f8dfc77b7e509555955e757a50687bc5bb1d160))
|
|
12
|
+
|
|
13
|
+
## [1.0.0-alpha.7](https://github.com/anolilab/semantic-release-pnpm/compare/v1.0.0-alpha.6...v1.0.0-alpha.7) (2024-05-16)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
### Bug Fixes
|
|
17
|
+
|
|
18
|
+
* remove hack fix for npm 8.5 ([591bf1d](https://github.com/anolilab/semantic-release-pnpm/commit/591bf1d0971c74f25153ec927c3c9072c7ccc99b))
|
|
19
|
+
|
|
1
20
|
## [1.0.0-alpha.6](https://github.com/anolilab/semantic-release-pnpm/compare/v1.0.0-alpha.5...v1.0.0-alpha.6) (2024-05-16)
|
|
2
21
|
|
|
3
22
|
|
package/dist/index.js
CHANGED
|
@@ -3,18 +3,19 @@ import { validRange, gte } from 'semver';
|
|
|
3
3
|
import { isAccessibleSync, ensureFile, readFileSync, findUpSync, writeFile } from '@visulima/fs';
|
|
4
4
|
import { findPackageJson, findCacheDirectorySync, getPackageManagerVersion } from '@visulima/package';
|
|
5
5
|
import { resolve, join } from '@visulima/path';
|
|
6
|
-
import
|
|
6
|
+
import fe from '@semantic-release/error';
|
|
7
7
|
import { homedir } from 'os';
|
|
8
|
-
import { cwd } from 'process';
|
|
8
|
+
import { cwd, env } from 'process';
|
|
9
|
+
import { parseJson, stripJsonComments } from '@visulima/fs/utils';
|
|
9
10
|
import { parse, stringify } from 'ini';
|
|
10
11
|
import { merge } from 'ts-deepmerge';
|
|
11
|
-
import
|
|
12
|
+
import H from 'normalize-url';
|
|
12
13
|
import { moveFile } from 'move-file';
|
|
13
|
-
import
|
|
14
|
-
import
|
|
14
|
+
import Z from 'aggregate-error';
|
|
15
|
+
import Ve from 'registry-auth-token';
|
|
15
16
|
import { URL } from 'url';
|
|
16
17
|
|
|
17
|
-
var
|
|
18
|
+
var w=e=>e?validRange(e)?`release-${e}`:e:"latest";var U={name:"@anolilab/semantic-release-pnpm",version:"1.0.0-alpha.7",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 h=e=>`${U.homepage}/blob/main/${e}`,K={EINVALIDBRANCHES:e=>({details:`The [branches option](${h("README.md#branches")}) option, if defined, must be an array of \`String\`.
|
|
18
19
|
Your configuration for the \`branches\` option is \`${e}\`.`,message:"Invalid `branches` option."}),EINVALIDNPMPUBLISH:({npmPublish:e})=>({details:`The [npmPublish option](${h("README.md#npmpublish")}) option, if defined, must be a \`Boolean\`.
|
|
19
20
|
Your configuration for the \`npmPublish\` option is \`${e}\`.`,message:"Invalid `npmPublish` option."}),EINVALIDNPMTOKEN:({registry:e})=>({details:`The [npm token](${h("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}\`.
|
|
20
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.
|
|
@@ -24,12 +25,12 @@ Your configuration for the \`pkgRoot\` option is \`${e}\`.`,message:"Invalid `pk
|
|
|
24
25
|
Your version of Pnpm is "${e}".`,message:"Incompatible Pnpm version detected."}),EINVALIDPUBLISHBRANCH:({publishBranch:e})=>({details:`The [publishBranch option](${h("README.md#publishBranch")}) option, if defined, must be a \`String\`.
|
|
25
26
|
Your configuration for the \`publishBranch\` option is \`${e}\`.`,message:"Invalid `publishBranch` option."}),EINVALIDTARBALLDIR:({tarballDir:e})=>({details:`The [tarballDir option](${h("README.md#tarballdir")}) option, if defined, must be a \`String\`.
|
|
26
27
|
Your configuration for the \`tarballDir\` option is \`${e}\`.`,message:"Invalid `tarballDir` option."}),ENONPMTOKEN:({registry:e})=>({details:`An [npm token](${h("README.md#npm-registry-authentication")}) must be created and set in the \`NPM_TOKEN\` environment variable on your CI environment.
|
|
27
|
-
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 g=(e,t={})=>{let{details:r,message:o}=K[e](t);return new
|
|
28
|
-
`).pop(),y=resolve(r,
|
|
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 g=(e,t={})=>{let{details:r,message:o}=K[e](t);return new fe(o,e,r)};var ye=(e,t)=>{let r=t.NPM_CONFIG_USERCONFIG,o=resolve(e,".npmrc");if(!r&&isAccessibleSync(o))r=o;else if(!r){let n=findCacheDirectorySync("semantic-release-pnpm",{create:!0,cwd:e});n&&(ensureFile(n),r=n);}if(!r)throw new AggregateError([g("ENOPNPMRC",{npmrc:o})]);return r},R=ye;var C="https://registry.npmjs.org/";var be=e=>{try{JSON.parse(e);}catch{return !1}return !0},Y=be;var Ce=(e,t=env)=>{let r={},o=e.length;for(let n in t)if(n.toLowerCase().indexOf(e.toLowerCase())===0){let i=n.slice(Math.max(0,o)).split("__"),a;for(;(a=i.indexOf(""))>-1;)i.splice(a,1);let s=r;i.forEach((l,p)=>{!l||typeof s!="object"||(p===i.length-1&&(s[l]=t[n]),s[l]===void 0&&(s[l]={}),s=s[l]);});}return r},Ae=(e,t,r,o,n)=>{let i=new Set;n&&isAccessibleSync(n)&&i.add(n);for(let a of [`/etc/${e}rc`,`/etc/${e}/config`])isAccessibleSync(a)&&i.add(a);for(let a of [join(t,".config",e,"config"),join(t,".config",e),join(t,`.${e}`,"config"),join(t,`.${e}rc`)])isAccessibleSync(a)&&i.add(a),isAccessibleSync(`${a}.json`)&&i.add(`${a}.json`);for(let a of [`.${e}rc.json`,`.${e}rc`,`.${e}`,"config.json","config"]){let s=findUpSync(a,{cwd:r,type:"file"});s&&i.add(s);}return typeof o=="string"&&isAccessibleSync(o)&&i.add(o),[...i].reverse()},$=(e,t={})=>{t={cwd:cwd(),home:homedir(),...t};let{config:r,...o}=Ce(`${e}_`),n=Ae(e,t.home,t.cwd,env[`${e}_config`]??r,t.config),i=[t.defaults??{}];for(let a of n){let s=readFileSync(a);Y(s)?i.push(parseJson(stripJsonComments(s))):i.push(parse(s));}return o&&i.push(o),{config:merge(...i),files:n}};var Ie=(e,t)=>{let r=C;if(t){let o=t[`${e}:registry`]??t.registry;o&&(r=o);}return r.slice(-1)==="/"?r:`${r}/`},b=({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,n)=>({channel:o,name:`pnpm package (@${o} dist-tag)`,url:H(n)===H(t)?`https://www.npmjs.com/package/${e}/v/${r}`:void 0});var x=(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,P=(e,t)=>x(e,t)===null;var W=async(e,t,r)=>{let{cwd:o,env:n,logger:i,nextRelease:{channel:a,version:s},stderr:l,stdout:p}=r;if(P(e,t)){let f=b(t,r),u=w(a);i.log(`Adding version ${s} to npm registry on dist-tag ${u}`);let y=R(o,n),d=execa("pnpm",["dist-tag","add",`${t.name}@${s}`,u,"--userconfig",y,"--registry",f],{cwd:o,env:n,preferLocal:!0});return d.stdout.pipe(p,{end:!1}),d.stderr.pipe(l,{end:!1}),await d,i.log(`Added ${t.name}@${s} to dist-tag @${u} on ${f}`),I(t,r,u,f)}return i.log(`Skip adding to npm channel as ${x(e,t)}`),!1};var O=async({pkgRoot:e,tarballDir:t},{cwd:r,env:o,logger:n,nextRelease:{version:i},stderr:a,stdout:s})=>{let l=e?resolve(r,e):r;n.log("Write version %s to package.json in %s",i,l);let p=execa("pnpm",["version",i,"--no-git-tag-version","--allow-same-version"],{cwd:l,env:o,preferLocal:!0});if(p.stdout.pipe(s,{end:!1}),p.stderr.pipe(a,{end:!1}),await p,t){n.log("Creating npm package version %s",i);let f=execa("pnpm",["pack",l],{cwd:r,env:o,preferLocal:!0});f.stdout.pipe(s,{end:!1}),f.stderr.pipe(a,{end:!1});let u=(await f).stdout.split(`
|
|
29
|
+
`).pop(),y=resolve(r,u),d=resolve(r,t.trim(),u);y!==d&&await moveFile(y,d);}};var X=async(e,t,r)=>{let{cwd:o,env:n,logger:i,nextRelease:{channel:a,version:s},stderr:l,stdout:p}=r,{pkgRoot:f,publishBranch:u}=e;if(P(e,t)){let y=f?resolve(o,f):o,d=b(t,r),E=w(a),{stdout:V}=await execa("git",["rev-parse","--abbrev-ref","HEAD"],{cwd:o,env:n,preferLocal:!0}),F=typeof u=="string"&&u.split("|"),G=F&&F?.includes(V)?V:"main";i.log(`Publishing version ${s} on branch ${G} to npm registry on dist-tag ${E}`);let B=["publish",y,"--publish-branch",G,"--tag",E,"--registry",d,"--no-git-checks"];e.disableScripts&&B.push("--ignore-scripts");let D=execa("pnpm",B,{cwd:o,env:n,preferLocal:!0});D.stdout.pipe(p,{end:!1}),D.stderr.pipe(l,{end:!1});try{await D;}catch(_){throw i.log(`Failed to publish ${t.name}@${s} to dist-tag @${E} on ${d}: ${_.message??_}`),new Z([_])}return i.log(`Published ${t.name}@${s} to dist-tag @${E} on ${d}`),I(t,r,E,d)}return i.log(`Skip publishing to npm registry as ${x(e,t)}`),!1};var N=async({pkgRoot:e},{cwd:t})=>{try{let{packageJson:r}=await findPackageJson(e?resolve(t,e):t);if(!r.name)throw new Z([g("ENOPKGNAME")]);return r}catch(r){throw r.code==="ENOENT"?new Z([g("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}`},te=Te;var re=async(e,t,{cwd:r,env:{NPM_CONFIG_USERCONFIG:o,NPM_EMAIL:n,NPM_PASSWORD:i,NPM_TOKEN:a,NPM_USERNAME:s},logger:l})=>{l.log("Verify authentication for registry %s",t);let{config:p,files:f}=$("npm",{config:o??resolve(r,".npmrc"),cwd:r,defaults:{registry:C}});if(f&&l.log("Reading npm config from %s",f.join(", ")),Ve(t,{npmrc:p})){await writeFile(e,stringify(p));return}if(s&&i&&n)await writeFile(e,`${p?`${stringify(p)}
|
|
29
30
|
`:""}_auth = \${LEGACY_TOKEN}
|
|
30
|
-
email = \${NPM_EMAIL}`),
|
|
31
|
-
`:""}${
|
|
31
|
+
email = \${NPM_EMAIL}`),l.log(`Wrote NPM_USERNAME, NPM_PASSWORD, and NPM_EMAIL to ${e}`);else if(a)await writeFile(e,`${p?`${stringify(p)}
|
|
32
|
+
`:""}${te(t)}:_authToken = \${NPM_TOKEN}`),l.log(`Wrote NPM_TOKEN to ${e}`);else throw new Z([g("ENONPMTOKEN",{registry:t})])};var ne=async(e,t,r)=>{let{cwd:o,env:{DEFAULT_NPM_REGISTRY:n="https://registry.npmjs.org/",...i},logger:a,stderr:s,stdout:l}=r,p=b(t,r);if(await re(e,p,r),H(p)===H(n))try{a.log(`Running "pnpm whoami" to verify authentication on registry "${p}"`);let f=execa("pnpm",["whoami","--userconfig",e,"--registry",p],{cwd:o,env:i,preferLocal:!0});f.stdout.pipe(l,{end:!1}),f.stderr.pipe(s,{end:!1}),await f;}catch{throw new Z([g("EINVALIDNPMTOKEN",{registry:p})])}else a.log(`Skipping authentication verification for non-default registry "${p}"`);};var Be=e=>typeof e=="string",Ue=e=>e==null,L=e=>Be(e)?e.trim()!=="":!1,ie={branches:Array.isArray,npmPublish:e=>typeof e=="boolean",pkgRoot:L,publishBranch:L,tarballDir:L},se=e=>Object.entries(e).reduce((t,[r,o])=>Ue(o)||!(r in ie)||ie[r]?.(o)?t:[...t,g(`EINVALID${r.toUpperCase()}`,{[r]:o})],[]);var pe="8.0.0";async function J({logger:e}){e.log(`Verify pnpm version is >= ${pe}`);let t=await getPackageManagerVersion("pnpm");if(t===void 0)throw new Z([new Error("pnpm is not installed")]);if(gte(pe,t))throw new Z([g("EINVALIDPNPM",{version:String(t)})])}var He=async(e,t)=>{let r=se(e);try{J(t);}catch(o){let n=o;r=[...r,...n.errors??[o]];}try{let o=await N(e,t);if(P(e,o)){let n=R(t.cwd,t.env);await ne(n,o,t);}}catch(o){let n=o;r=[...r,...n.errors??[o]];}if(r.length>0)throw new Z(r)},k=He;var We="semantic-release-pnpm",M,le,oo=async(e,t)=>{if(t.options?.publish){let o=(Array.isArray(t.options?.publish)?t.options?.publish:[t.options?.publish]).find(n=>n.path&&n.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 k(e,t),M=!0;},no=async(e,t)=>{M||await k(e,t),await O(e,t),le=!0;},io=async(e,t)=>{let r=await N(e,t);return M||await k(e,t),le||await O(e,t),X(e,r,t)},so=async(e,t)=>{M||await k(e,t);let r=await N(e,t);return W(e,r,t)};
|
|
32
33
|
|
|
33
|
-
export {
|
|
34
|
+
export { so as addChannel, no as prepare, io as publish, oo as verifyConditions };
|
|
34
35
|
//# sourceMappingURL=out.js.map
|
|
35
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","findUpSync","readFileSync","join","parse","merge","isJson","value","is_json_default","getEnvironment","prefix","returnValue","l","k","keypath","emptyStringIndex","cursor","subkey","index","getConfigFiles","name","home","internalCwd","defaultHomeFiles","configFiles","foundConfigFile","rc_default","options","uniqueConfigFiles","configs","content","getRegistryUrl","scope","url","registryUrl","get_registry_default","env","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.5\",\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.3\",\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.2.4\"\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 } from \"node:process\";\n\nimport { findUpSync, isAccessibleSync, readFileSync } from \"@visulima/fs\";\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\nconst getEnvironment = (prefix: string, environment = process.env): Record<string, boolean | string> => {\n const returnValue = {};\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 let cursor = 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\nconst getConfigFiles = (name: string, home: string, internalCwd: string) => {\n const defaultHomeFiles = [join(home, \".config\", name, \"config\"), join(home, \".config\", name), join(home, `.${name}`, \"config\"), join(home, `.${name}rc`)];\n\n const configFiles = new Set<string>();\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const file of defaultHomeFiles) {\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 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 },\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 environment = getEnvironment(`${name}_`);\n\n const configFiles = new Set<string>(getConfigFiles(name, options.home as string, options.cwd as string));\n\n if (typeof environment.config === \"string\" && isAccessibleSync(environment.config)) {\n configFiles.add(environment.config);\n }\n\n if (options.config && isAccessibleSync(options.config)) {\n configFiles.add(options.config);\n }\n\n const uniqueConfigFiles = [...configFiles];\n const configs: object[] = [];\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const file of uniqueConfigFiles) {\n const content = readFileSync(file);\n\n if (isJson(content)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n configs.push(JSON.parse(content));\n } else {\n configs.push(parse(content));\n }\n }\n\n return { config: merge(...configs), files: uniqueConfigFiles };\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.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":"AACA,OAAS,SAAAA,OAAa,QCDtB,OAAS,cAAAC,OAAkB,SAE3B,IAAOC,EAASC,GAAgDA,EAAWF,GAAWE,CAAO,EAAI,WAAWA,CAAO,GAAKA,EAAW,SCFnI,OAAS,cAAAC,GAAY,oBAAAC,OAAwB,eAC7C,OAAS,0BAAAC,OAA8B,oBACvC,OAAS,WAAAC,OAAe,iBCFxB,OAAOC,OAA0B,0BCAjC,IAAAC,EAAA,CACI,KAAQ,kCACR,QAAW,gBACX,YAAe,8DACf,SAAY,CACR,WACA,MACA,UACA,mBACA,OACA,UACJ,EACA,SAAY,oDACZ,WAAc,CACV,KAAQ,MACR,IAAO,uDACX,EACA,QAAW,MACX,OAAU,CACN,KAAQ,iBACR,MAAS,uBACb,EACA,KAAQ,SACR,QAAW,kBACX,KAAQ,gBACR,MAAS,kBACT,MAAS,CACL,OACA,YACA,cACJ,EACA,QAAW,CACP,MAAS,sCACT,aAAc,qCACd,cAAe,oGACf,kBAAmB,6BACnB,WAAY,yDACZ,mBAAoB,mBACpB,gBAAiB,8CACjB,oBAAqB,8CACrB,eAAgB,kBAChB,cAAe,mDACf,YAAa,2FACb,gBAAiB,+EACjB,aAAc,eACd,QAAW,mFACX,oBAAqB,mCACrB,KAAQ,aACR,aAAc,eACd,gBAAiB,wBACjB,aAAc,SACd,cAAe,MACnB,EACA,aAAgB,CACZ,0BAA2B,SAC3B,eAAgB,SAChB,oBAAqB,QACrB,iBAAkB,SAClB,kBAAmB,SACnB,MAAS,SACT,IAAO,QACP,YAAa,SACb,gBAAiB,SACjB,sBAAuB,SACvB,OAAU,SACV,eAAgB,QACpB,EACA,gBAAmB,CACf,8BAA+B,SAC/B,0BAA2B,UAC3B,+BAAgC,SAChC,4BAA6B,UAC7B,4BAA6B,UAC7B,cAAe,UACf,uBAAwB,SACxB,kBAAmB,UACnB,kCAAmC,UACnC,+CAAgD,SAChD,8BAA+B,SAC/B,wBAAyB,UACzB,2BAA4B,UAC5B,mBAAoB,UACpB,aAAc,SACd,cAAe,YACf,iCAAkC,QAClC,gBAAiB,QACjB,wBAAyB,SACzB,sBAAuB,SACvB,WAAc,SACd,WAAc,UACd,YAAa,SACb,4BAA6B,SAC7B,UAAa,QACb,OAAU,SACV,4BAA6B,SAC7B,6BAA8B,SAC9B,uBAAwB,6BACxB,oBAAqB,SACrB,kBAAmB,UACnB,uBAAwB,SACxB,+BAAgC,SAChC,gDAAiD,UACjD,aAAc,QACd,IAAO,UACP,MAAS,UACT,QAAS,SACT,cAAe,UACf,UAAW,SACX,SAAY,SACZ,QAAW,SACX,OAAU,SACV,WAAc,QACd,mBAAoB,UACpB,oBAAqB,UACrB,iBAAkB,SAClB,KAAQ,UACR,MAAS,SACT,SAAY,UACZ,KAAQ,SACR,WAAc,SACd,OAAU,QACd,EACA,iBAAoB,CAChB,mBAAoB,4BACxB,EACA,eAAkB,aAClB,QAAW,CACP,KAAQ,kBACZ,EACA,cAAiB,CACb,OAAU,SACV,WAAc,EAClB,EACA,KAAQ,CACJ,UAAa,CACT,qBAAsB,SAC1B,CACJ,EACA,SAAY,CACR,gBAAiB,CACb,OAAU,CACN,IAAO,GACP,MAAS,EACb,EACA,uCAA0C,GAC1C,iCAAoC,GACpC,yCAA4C,GAC5C,uCAA0C,GAC1C,sBAAyB,CACrB,WACA,yBACJ,CACJ,CACJ,CACJ,ECxJA,IAAMC,EAAWC,GAAiB,GAAGF,EAAS,QAAQ,cAAcE,CAAI,GAmB3DC,EAAS,CAClB,iBAAmBC,IACR,CACH,QAAS,yBAAyBH,EAAQ,oBAAoB,CAAC;AAAA,sDACrBG,CAAQ,MAClD,QAAS,4BACb,GAEJ,mBAAoB,CAAC,CAAE,WAAAC,CAAW,KACvB,CACH,QAAS,2BAA2BJ,EAAQ,sBAAsB,CAAC;AAAA,wDACvBI,CAAU,MACtD,QAAS,8BACb,GAEJ,iBAAkB,CAAC,CAAE,SAAAC,CAAS,KACnB,CACH,QAAS,mBAAmBL,EACxB,uCACJ,CAAC,oLAAoLK,CAAQ;AAAA;AAAA,kHAG7L,QAAS,oBACb,GAEJ,gBAAiB,CAAC,CAAE,QAAAC,CAAQ,KACjB,CACH,QAAS,wBAAwBN,EAAQ,mBAAmB,CAAC;AAAA,qDACpBM,CAAO,MAChD,QAAS,2BACb,GAEJ,aAAc,CAAC,CAAE,QAAAC,CAAQ,KACd,CACH,QAAS,0FAA0FP,EAC/F,mBACJ,CAAC;AAAA;AAAA,2BAEcO,CAAO,KACtB,QAAS,qCACb,GAEJ,sBAAuB,CAAC,CAAE,cAAAC,CAAc,KAC7B,CACH,QAAS,8BAA8BR,EAAQ,yBAAyB,CAAC;AAAA,2DAC1BQ,CAAa,MAC5D,QAAS,iCACb,GAEJ,mBAAoB,CAAC,CAAE,WAAAC,CAAW,KACvB,CACH,QAAS,2BAA2BT,EAAQ,sBAAsB,CAAC;AAAA,wDACvBS,CAAU,MACtD,QAAS,8BACb,GAEJ,YAAa,CAAC,CAAE,SAAAJ,CAAS,KACd,CACH,QAAS,kBAAkBL,EACvB,uCACJ,CAAC;AAAA,mQACsPK,CAAQ,MAC/P,QAAS,yBACb,GAEJ,OAAQ,KACG,CACH,QAAS,sQAET,QAAS,8BACb,GAEJ,WAAY,KACD,CACH,QAAS,uOAET,QAAS,4CACb,GAEJ,QAAS,KACE,CACH,QAAS,2FACT,QAAS,iBACb,GAEJ,UAAW,KACA,CACH,QAAS,6FACT,QAAS,wBACb,EAER,EF3GA,IAAOK,EAAQ,CAAgCC,EAASC,EAAwB,CAAC,IAA4B,CACzG,GAAM,CAAE,QAAAC,EAAS,QAAAC,CAAQ,EAA4CZ,EAAOS,CAAI,EAAsBC,CAAO,EAE7G,OAAO,IAAId,GAAqBgB,EAASH,EAAME,CAAO,CAC1D,EDHA,IAAME,GAAW,CAACC,EAAaC,IAA2C,CACtE,IAAIC,EAAQD,EAAY,sBAElBE,EAAYtB,GAAQmB,EAAK,QAAQ,EAEvC,GAAI,CAACE,GAASvB,GAAiBwB,CAAS,EACpCD,EAAQC,UACD,CAACD,EAAO,CACf,IAAME,EAAqBxB,GAAuB,wBAAyB,CAAE,OAAQ,GAAM,IAAAoB,CAAI,CAAC,EAE5FI,IACA1B,GAAW0B,CAAkB,EAE7BF,EAAQE,EAEhB,CAEA,GAAI,CAACF,EAED,MAAM,IAAI,eAAe,CACrBR,EAAS,YAAa,CAClB,MAAOS,CACX,CAAC,CACL,CAAC,EAGL,OAAOD,CACX,EAEOG,EAAQN,GIlCf,OAAS,WAAAlB,OAAe,iBCAjB,IAAMyB,EAAuB,8BCDpC,OAAS,WAAAC,OAAe,KACxB,OAAS,OAAAP,GAAK,OAAAQ,MAAW,UAEzB,OAAS,cAAAC,GAAY,oBAAA9B,EAAkB,gBAAA+B,OAAoB,eAC3D,OAAS,aAAAC,GAAW,qBAAAC,OAAyB,qBAC7C,OAAS,QAAAC,MAAY,iBACrB,OAAS,SAAAC,OAAa,MACtB,OAAS,SAAAC,OAAa,eCDtB,IAAMC,GAAUC,GAA2B,CACvC,GAAI,CACA,KAAK,MAAMA,CAAK,CACpB,MAAQ,CACJ,MAAO,EACX,CAEA,MAAO,EACX,EAEOC,EAAQF,GDJf,IAAMG,GAAiB,CAACC,EAAgBnB,EAAcO,IAA6B,CAE/E,IAAMa,EAAmC,CAAC,EACpCC,EAAIF,EAAO,OAGjB,QAAWG,KAAKtB,EACZ,GAAIsB,EAAE,YAAY,EAAE,QAAQH,EAAO,YAAY,CAAC,IAAM,EAAG,CACrD,IAAMI,EAAUD,EAAE,MAAM,KAAK,IAAI,EAAGD,CAAC,CAAC,EAAE,MAAM,IAAI,EAG9CG,EAGJ,MAAQA,EAAmBD,EAAQ,QAAQ,EAAE,GAAK,IAC9CA,EAAQ,OAAOC,EAAkB,CAAC,EAItC,IAAIC,EAA8BL,EAElCG,EAAQ,QAAQ,CAACG,EAAQC,IAAU,CAG3B,CAACD,GAAU,OAAOD,GAAW,WAO7BE,IAAUJ,EAAQ,OAAS,IAC3BE,EAAOC,CAAM,EAAI1B,EAAYsB,CAAC,GAI9BG,EAAOC,CAAM,IAAM,SACnBD,EAAOC,CAAM,EAAI,CAAC,GAItBD,EAASA,EAAOC,CAAM,EAC1B,CAAC,CACL,CAGJ,OAAON,CACX,EAsBMQ,GAAiB,CAACC,EAAcC,EAAcC,EAAqBC,EAA4BC,IAA0B,CAC3H,IAAMC,EAAc,IAAI,IAEpBD,GAAgBvD,EAAiBuD,CAAY,GAC7CC,EAAY,IAAID,CAAY,EAIhC,QAAWjD,IAAQ,CAAC,QAAQ6C,CAAI,KAAM,QAAQA,CAAI,SAAS,EACnDnD,EAAiBM,CAAI,GACrBkD,EAAY,IAAIlD,CAAI,EAK5B,QAAWA,IAAQ,CAAC4B,EAAKkB,EAAM,UAAWD,EAAM,QAAQ,EAAGjB,EAAKkB,EAAM,UAAWD,CAAI,EAAGjB,EAAKkB,EAAM,IAAID,CAAI,GAAI,QAAQ,EAAGjB,EAAKkB,EAAM,IAAID,CAAI,IAAI,CAAC,EAC1InD,EAAiBM,CAAI,GACrBkD,EAAY,IAAIlD,CAAI,EAGpBN,EAAiB,GAAGM,CAAI,OAAO,GAC/BkD,EAAY,IAAI,GAAGlD,CAAI,OAAO,EAKtC,QAAWA,IAAQ,CAAC,IAAI6C,CAAI,UAAW,IAAIA,CAAI,KAAM,IAAIA,CAAI,GAAI,cAAe,QAAQ,EAAG,CAEvF,IAAMM,EAAkB3B,GAAWxB,EAAM,CACrC,IAAK+C,EACL,KAAM,MACV,CAAC,EAEGI,GACAD,EAAY,IAAIC,CAAe,CAEvC,CAEA,OAAI,OAAOH,GAAsB,UAAYtD,EAAiBsD,CAAiB,GAC3EE,EAAY,IAAIF,CAAiB,EAI9B,CAAC,GAAGE,CAAW,EAAE,QAAQ,CACpC,EAEOE,EAAQ,CACXP,EACAQ,EAMI,CAAC,IAE8C,CAEnDA,EAAU,CACN,IAAKtC,GAAI,EACT,KAAMO,GAAQ,EACd,GAAG+B,CACP,EAEA,GAAM,CAAE,OAAQL,EAAmB,GAAGhC,CAAY,EAAIkB,GAAe,GAAGW,CAAI,GAAG,EAEzEK,EAAcN,GAChBC,EACAQ,EAAQ,KACRA,EAAQ,IACR9B,EAAI,GAAGsB,CAAI,SAAS,GAAMG,EAC1BK,EAAQ,MACZ,EAEMC,EAAoB,CAACD,EAAQ,UAAY,CAAC,CAAC,EAGjD,QAAWrD,KAAQkD,EAAa,CAC5B,IAAMK,EAAU9B,GAAazB,CAAI,EAE7BiC,EAAOsB,CAAO,EACdD,EAAQ,KAAK5B,GAAUC,GAAkB4B,CAAO,CAAC,CAAC,EAElDD,EAAQ,KAAKzB,GAAM0B,CAAO,CAAC,CAEnC,CAEA,OAAIvC,GACAsC,EAAQ,KAAKtC,CAAW,EAGrB,CAAE,OAAQc,GAAM,GAAGwB,CAAO,EAAG,MAAOJ,CAAY,CAC3D,EFrKA,IAAMM,GAAiB,CAACC,EAAexC,IAAwC,CAC3E,IAAIyC,EAAcrC,EAElB,GAAIJ,EAAO,CACP,IAAM0C,EAAc1C,EAAM,GAAGwC,CAAK,WAAW,GAAKxC,EAAM,SAEpD0C,IACAD,EAAMC,EAEd,CAEA,OAAOD,EAAI,MAAM,EAAE,IAAM,IAAMA,EAAM,GAAGA,CAAG,GAC/C,EAEOE,EAAQ,CAAC,CAAE,KAAAf,EAAM,cAAe,CAAE,SAAAzC,CAAS,EAAI,CAAC,CAAE,EAAgB,CAAE,IAAAW,EAAK,IAAAQ,CAAI,IAChFnB,GACAmB,EAAI,qBACJiC,GACKX,EAAgB,MAAM,GAAG,EAAE,CAAC,EAC7BO,EAAG,MAAO,CACN,OAAQ7B,EAAI,uBAAyB3B,GAAQmB,EAAK,QAAQ,EAC1D,IAAAA,EACA,SAAU,CAAE,SAAU,6BAA8B,CACxD,CAAC,EAAE,MACP,EI/BJ,OAAO8C,MAAkB,gBAUlB,IAAMC,EAAiB,CAC1B,CAAE,KAAAjB,CAAK,EACP,CAAE,IAAK,CAAE,qBAAAxB,EAAuB,6BAA8B,EAAG,YAAa,CAAE,QAAAf,CAAQ,CAAE,EAC1FyD,EACA3D,KAEO,CACH,QAAS2D,EACT,KAAM,kBAAkBA,CAAe,aACvC,IAAKF,EAAazD,CAAQ,IAAMyD,EAAaxC,CAAoB,EAAI,iCAAiCwB,CAAI,MAAMvC,CAAO,GAAK,MAChI,GCZG,IAAM0D,EAAqB,CAACC,EAA4BC,IAC1DD,EAAa,aAAe,GACvB,oCACAC,EAAS,UAAY,IAAQA,EAAS,aAAe,OACjD,2CACA,KAEDC,EAAgB,CAACF,EAA4BC,IAAmCF,EAAmBC,EAAcC,CAAQ,IAAM,KXJ5I,IAAOE,EAAQ,MAAOH,EAA4BC,EAAuBvD,IAA6D,CAClI,GAAM,CACF,IAAAI,EACA,IAAAQ,EACA,OAAA8C,EACA,YAAa,CAAE,QAAA7E,EAAS,QAAAc,CAAQ,EAChC,OAAAgE,EACA,OAAAC,CACJ,EAAI5D,EAEJ,GAAIwD,EAAcF,EAAcC,CAAQ,EAAG,CACvC,IAAM9D,EAAWwD,EAAYM,EAAUvD,CAAO,EACxCoD,EAAkBxE,EAAWC,CAAO,EAE1C6E,EAAO,IAAI,kBAAkB/D,CAAO,gCAAgCyD,CAAe,EAAE,EAErF,IAAM9C,EAAQG,EAASL,EAAKQ,CAAG,EAEzBiD,EAASnF,GAAM,OAAQ,CAAC,WAAY,MAAO,GAAG6E,EAAS,IAAI,IAAI5D,CAAO,GAAIyD,EAAiB,eAAgB9C,EAAO,aAAcb,CAAQ,EAAG,CAC7I,IAAAW,EACA,IAAAQ,EACA,YAAa,EACjB,CAAC,EAED,OAAAiD,EAAO,OAAO,KAAKD,EAAQ,CAAE,IAAK,EAAM,CAAC,EACzCC,EAAO,OAAO,KAAKF,EAAQ,CAAE,IAAK,EAAM,CAAC,EAEzC,MAAME,EAENH,EAAO,IAAI,SAASH,EAAS,IAAI,IAAI5D,CAAO,iBAAiByD,CAAe,OAAO3D,CAAQ,EAAE,EAEtF0D,EAAeI,EAAUvD,EAASoD,EAAiB3D,CAAQ,CACtE,CAEA,OAAAiE,EAAO,IAAI,iCAAiCL,EAAmBC,EAAcC,CAAQ,CAAC,EAAE,EAEjF,EACX,EYjDA,OAAS,WAAAtE,MAAe,iBACxB,OAAS,SAAAP,MAAa,QACtB,OAAS,YAAAoF,OAAgB,YAKzB,IAAOC,EAAQ,MAAO,CAAE,QAAArE,EAAS,WAAAG,CAAW,EAAiB,CAAE,IAAAO,EAAK,IAAAQ,EAAK,OAAA8C,EAAQ,YAAa,CAAE,QAAA/D,CAAQ,EAAG,OAAAgE,EAAQ,OAAAC,CAAO,IAAqC,CAC3J,IAAMI,EAAWtE,EAAUT,EAAQmB,EAAKV,CAAO,EAAIU,EAEnDsD,EAAO,IAAI,yCAA0C/D,EAASqE,CAAQ,EAEtE,IAAMC,EAAgBvF,EAAM,OAAQ,CAAC,UAAWiB,EAAS,uBAAwB,sBAAsB,EAAG,CACtG,IAAKqE,EACL,IAAApD,EACA,YAAa,EACjB,CAAC,EAOD,GALAqD,EAAc,OAAO,KAAKL,EAAQ,CAAE,IAAK,EAAM,CAAC,EAChDK,EAAc,OAAO,KAAKN,EAAQ,CAAE,IAAK,EAAM,CAAC,EAEhD,MAAMM,EAEFpE,EAAY,CACZ6D,EAAO,IAAI,kCAAmC/D,CAAO,EAErD,IAAMuE,EAAaxF,EAAM,OAAQ,CAAC,OAAQsF,CAAQ,EAAG,CAAE,IAAA5D,EAAK,IAAAQ,EAAK,YAAa,EAAK,CAAC,EAEpFsD,EAAW,OAAO,KAAKN,EAAQ,CAAE,IAAK,EAAM,CAAC,EAC7CM,EAAW,OAAO,KAAKP,EAAQ,CAAE,IAAK,EAAM,CAAC,EAG7C,IAAMQ,GAAW,MAAMD,GAAY,OAAO,MAAM;AAAA,CAAI,EAAE,IAAI,EACpDE,EAAgBnF,EAAQmB,EAAK+D,CAAO,EACpCE,EAAqBpF,EAAQmB,EAAKP,EAAW,KAAK,EAAGsE,CAAO,EAI9DC,IAAkBC,GAClB,MAAMP,GAASM,EAAeC,CAAkB,CAExD,CACJ,ECzCA,OAAS,WAAApF,OAAe,iBACxB,OAAOqF,OAAoB,kBAC3B,OAAS,SAAA5F,MAAa,QAUtB,IAAO6F,EAAQ,MAAOjB,EAA4BC,EAAuBvD,IAA0D,CAC/H,GAAM,CACF,IAAAI,EACA,IAAAQ,EACA,OAAA8C,EACA,YAAa,CAAE,QAAA7E,EAAS,QAAAc,CAAQ,EAChC,OAAAgE,EACA,OAAAC,CACJ,EAAI5D,EACE,CAAE,QAAAN,EAAS,cAAe8E,CAAoB,EAAIlB,EAExD,GAAIE,EAAcF,EAAcC,CAAQ,EAAG,CACvC,IAAMS,EAAWtE,EAAUT,GAAQmB,EAAKV,CAAO,EAAIU,EAC7CX,EAAWwD,EAAYM,EAAUvD,CAAO,EACxCoD,EAAkBxE,EAAWC,CAAO,EAEpC,CAAE,OAAQ4F,CAAc,EAAI,MAAM/F,EAAM,MAAO,CAAC,YAAa,eAAgB,MAAM,EAAG,CACxF,IAAA0B,EACA,IAAAQ,EACA,YAAa,EACjB,CAAC,EACK8D,EAAkB,OAAOF,GAAwB,UAAYA,EAAoB,MAAM,GAAG,EAE1F5E,EADkB8E,GAAmBA,GAAiB,SAASD,CAAa,EAC1CA,EAAgB,OAExDf,EAAO,IAAI,sBAAsB/D,CAAO,cAAcC,CAAa,gCAAgCwD,CAAe,EAAE,EAEpH,IAAMuB,EAAgB,CAAC,UAAWX,EAAU,mBAAoBpE,EAAe,QAASwD,EAAiB,aAAc3D,EAAU,iBAAiB,EAE9I6D,EAAa,gBACbqB,EAAc,KAAK,kBAAkB,EAGzC,IAAMd,EAASnF,EAAM,OAAQiG,EAAe,CACxC,IAAAvE,EACA,IAAAQ,EACA,YAAa,EACjB,CAAC,EAEDiD,EAAO,OAAO,KAAKD,EAAQ,CAAE,IAAK,EAAM,CAAC,EACzCC,EAAO,OAAO,KAAKF,EAAQ,CAAE,IAAK,EAAM,CAAC,EAEzC,GAAI,CACA,MAAME,CAEV,OAASe,EAAY,CAEjB,MAAAlB,EAAO,IAAI,qBAAqBH,EAAS,IAAI,IAAI5D,CAAO,iBAAiByD,CAAe,OAAO3D,CAAQ,KAAKmF,EAAM,SAAWA,CAAK,EAAE,EAE9H,IAAIN,GAAe,CAACM,CAAK,CAAC,CACpC,CAEA,OAAAlB,EAAO,IAAI,aAAaH,EAAS,IAAI,IAAI5D,CAAO,iBAAiByD,CAAe,OAAO3D,CAAQ,EAAE,EAE1F0D,EAAeI,EAAUvD,EAASoD,EAAiB3D,CAAQ,CACtE,CAEA,OAAAiE,EAAO,IAAI,sCAAsCL,EAAmBC,EAAcC,CAAQ,CAAC,EAAE,EAEtF,EACX,ECvEA,OAAS,mBAAAsB,OAAuB,oBAChC,OAAS,WAAA5F,OAAe,iBACxB,OAAOqF,MAAoB,kBAS3B,IAAOQ,EAAQ,MAAO,CAAE,QAAApF,CAAQ,EAAY,CAAE,IAAAU,CAAI,IAA2D,CACzG,GAAI,CACA,GAAM,CAAE,YAAA2E,CAAY,EAAI,MAAMF,GAAgBnF,EAAUT,GAAQmB,EAAKV,CAAO,EAAIU,CAAG,EAEnF,GAAI,CAAC2E,EAAY,KACb,MAAM,IAAIT,EAAe,CAACxE,EAAS,YAAY,CAAC,CAAC,EAGrD,OAAOiF,CAEX,OAASH,EAAY,CAEjB,MAAIA,EAAM,OAAS,SACT,IAAIN,EAAe,CAACxE,EAAS,QAAQ,CAAC,CAAC,EAG3C8E,CACV,CACJ,EC/BA,OAAON,OAAoB,kBCC3B,OAAOA,OAAoB,kBAC3B,OAAS,SAAA5F,OAAa,QACtB,OAAOwE,OAAkB,gBCHzB,OAAS,aAAA8B,MAAiB,eAC1B,OAAS,WAAA/F,OAAe,iBACxB,OAAOqF,OAAoB,kBAC3B,OAAS,aAAAW,MAAiB,MAE1B,OAAOC,OAAkB,sBCLzB,OAAS,OAAAC,OAAW,MAcpB,IAAMC,GAAYrC,GAAwB,CACtC,IAAMsC,EAAS,IAAIF,GAAIpC,CAAG,EACpBuC,EAAO,GAAGD,EAAO,QAAQ,KAAKA,EAAO,IAAI,GAAGA,EAAO,QAAQ,GAC3DE,EAAO,IAAIJ,GAAI,IAAKG,CAAI,EAE9B,MAAO,KAAKC,EAAK,IAAI,GAAGA,EAAK,QAAQ,EACzC,EAEOC,GAAQJ,GDTf,IAAOK,GAAQ,MACXnF,EACAb,EACA,CAAE,IAAAW,EAAK,IAAK,CAAE,sBAAAsF,EAAuB,UAAAC,EAAW,aAAAC,EAAc,UAAAC,EAAW,aAAAC,CAAa,EAAG,OAAApC,CAAO,IAChF,CAChBA,EAAO,IAAI,wCAAyCjE,CAAQ,EAE5D,GAAM,CAAE,OAAAsG,EAAQ,MAAAC,CAAM,EAAIvD,EAAG,MAAO,CAChC,OAAQiD,GAAyBzG,GAAQmB,EAAK,QAAQ,EACtD,IAAAA,EACA,SAAU,CAAE,SAAUM,CAAqB,CAC/C,CAAC,EAMD,GAJIsF,GACAtC,EAAO,IAAI,6BAA8BsC,EAAM,KAAK,IAAI,CAAC,EAGzDd,GAAazF,EAAU,CAAE,MAAOsG,CAAO,CAAgB,EAAG,CAC1D,MAAMf,EAAU1E,EAAO2E,EAAUc,CAAM,CAAC,EAExC,MACJ,CAEA,GAAID,GAAgBF,GAAgBD,EAChC,MAAMX,EAAU1E,EAAO,GAAGyF,EAAS,GAAGd,EAAUc,CAAM,CAAC;AAAA,EAAO,EAAE;AAAA,sBAAiD,EAEjHrC,EAAO,IAAI,sDAAsDpD,CAAK,EAAE,UACjEuF,EACP,MAAMb,EAAU1E,EAAO,GAAGyF,EAAS,GAAGd,EAAUc,CAAM,CAAC;AAAA,EAAO,EAAE,GAAGP,GAAS/F,CAAQ,CAAC,6BAA6B,EAElHiE,EAAO,IAAI,sBAAsBpD,CAAK,EAAE,MAExC,OAAM,IAAIgE,GAAe,CAACxE,EAAS,cAAe,CAAE,SAAAL,CAAS,CAAC,CAAC,CAAC,CAExE,EDrCA,IAAOwG,GAAQ,MAAO3F,EAAeiD,EAAuBvD,IAA0C,CAClG,GAAM,CACF,IAAAI,EACA,IAAK,CAAE,qBAAAM,EAAuB,8BAA+B,GAAGL,CAAY,EAC5E,OAAAqD,EACA,OAAAC,EACA,OAAAC,CACJ,EAAI5D,EACEP,EAAWwD,EAAYM,EAAUvD,CAAO,EAI9C,GAFA,MAAMyF,GAAanF,EAAOb,EAAUO,CAAO,EAEvCkD,GAAazD,CAAQ,IAAMyD,GAAaxC,CAAoB,EAC5D,GAAI,CACAgD,EAAO,IAAI,+DAA+DjE,CAAQ,GAAG,EAErF,IAAMyG,EAAexH,GAAM,OAAQ,CAAC,SAAU,eAAgB4B,EAAO,aAAcb,CAAQ,EAAG,CAC1F,IAAAW,EACA,IAAKC,EACL,YAAa,EACjB,CAAC,EAED6F,EAAa,OAAO,KAAKtC,EAAQ,CAAE,IAAK,EAAM,CAAC,EAC/CsC,EAAa,OAAO,KAAKvC,EAAQ,CAAE,IAAK,EAAM,CAAC,EAE/C,MAAMuC,CACV,MAAQ,CACJ,MAAM,IAAI5B,GAAe,CAACxE,EAAS,mBAAoB,CAAE,SAAAL,CAAS,CAAC,CAAC,CAAC,CACzE,MAEAiE,EAAO,IAAI,kEAAkEjE,CAAQ,GAAG,CAEhG,EGpCA,IAAM0G,GAAY9E,GAAwB,OAAOA,GAAU,SAGrD+E,GAAS/E,GAAwBA,GAAU,KAG3CgF,EAAoBhF,GACjB8E,GAAS9E,CAAK,EAIXA,EAAiB,KAAK,IAAM,GAHzB,GASTiF,GAAgD,CAClD,SAAU,MAAM,QAEhB,WAAajF,GAAwB,OAAOA,GAAU,UACtD,QAASgF,EACT,cAAeA,EACf,WAAYA,CAChB,EAEOE,GAASR,GAEZ,OAAO,QAAQA,CAAM,EAAE,OAAO,CAACzG,EAAQ,CAACkH,EAAQnF,CAAK,IAC7C+E,GAAM/E,CAAK,GAIX,EAAEmF,KAAUF,KAIZA,GAAWE,CAAM,IAAInF,CAAK,EACnB/B,EAIJ,CAAC,GAAGA,EAAQQ,EAAS,WAAW0G,EAAO,YAAY,CAAC,GAAW,CAAE,CAACA,CAAM,EAAGnF,CAAM,CAAC,CAAC,EAC3F,CAAC,CAA2B,ECjDnC,OAAS,4BAAAoF,OAAgC,oBACzC,OAAOnC,OAAoB,kBAC3B,OAAS,OAAAoC,OAAW,SAKpB,IAAMC,GAAmB,QAEzB,eAAOC,EAAkC,CAAE,OAAAlD,CAAO,EAAiC,CAC/EA,EAAO,IAAI,6BAA6BiD,EAAgB,EAAE,EAE1D,IAAMhH,EAAU,MAAM8G,GAAyB,MAAM,EAErD,GAAI9G,IAAY,OACZ,MAAM,IAAI2E,GAAe,CAAC,IAAI,MAAM,uBAAuB,CAAC,CAAC,EAGjE,GAAIoC,GAAIC,GAAkBhH,CAAO,EAC7B,MAAM,IAAI2E,GAAe,CAACxE,EAAS,eAAgB,CAAE,QAAS,OAAOH,CAAO,CAAE,CAAC,CAAC,CAAC,CAEzF,CLVA,IAAMkH,GAAS,MAAOvD,EAA4BtD,IAAoD,CAClG,IAAIV,EAAkBiH,GAAajD,CAAY,EAE/C,GAAI,CACAsD,EAAW5G,CAAO,CAEtB,OAAS4E,EAAY,CACjB,IAAMkC,EAAalC,EAEnBtF,EAAS,CAAC,GAAGA,EAAQ,GAAIwH,EAAW,QAAU,CAAClC,CAAK,CAAE,CAC1D,CAEA,GAAI,CACA,IAAMG,EAAc,MAAMD,EAAWxB,EAActD,CAAO,EAE1D,GAAIwD,EAAcF,EAAcyB,CAAW,EAAG,CAC1C,IAAMzE,EAAQG,EAAST,EAAQ,IAAKA,EAAQ,GAAG,EAE/C,MAAMiG,GAAW3F,EAAOyE,EAAa/E,CAAO,CAChD,CAEJ,OAAS4E,EAAY,CACjB,IAAMkC,EAAalC,EAEnBtF,EAAS,CAAC,GAAGA,EAAQ,GAAIwH,EAAW,QAAU,CAAClC,CAAK,CAAE,CAC1D,CAEA,GAAItF,EAAO,OAAS,EAChB,MAAM,IAAIgF,GAAehF,CAAM,CAEvC,EAEOyH,EAAQF,GMlCf,IAAMG,GAAc,wBAEhBC,EACAC,GAESC,GAAmB,MAAO7D,EAA4BtD,IAAoD,CAMnH,GAAIA,EAAQ,SAAU,QAAY,CAI9B,IAAMoH,GAHU,MAAM,QAAQpH,EAAQ,SAAU,OAAU,EAAIA,EAAQ,SAAU,QAAa,CAACA,EAAQ,SAAU,OAAU,GAG5F,KAAM+F,GAAWA,EAAO,MAAQA,EAAO,OAASiB,EAAW,GAAK,CAAC,EAG/F1D,EAAa,WAAaA,EAAa,YAAc8D,EAAc,WAEnE9D,EAAa,WAAaA,EAAa,YAAc8D,EAAc,WAEnE9D,EAAa,QAAUA,EAAa,SAAW8D,EAAc,QAE7D9D,EAAa,eAAiBA,EAAa,gBAAkB8D,EAAc,eAE3E9D,EAAa,SAAWA,EAAa,UAAY8D,EAAc,QACnE,CAEA,MAAML,EAAOzD,EAActD,CAAO,EAElCiH,EAAW,EACf,EAEaI,GAAU,MAAO/D,EAA4BtD,IAA2C,CAC5FiH,GACD,MAAMF,EAAOzD,EAActD,CAAO,EAGtC,MAAM+D,EAAWT,EAActD,CAAO,EAEtCkH,GAAW,EACf,EAEaI,GAAU,MAAOhE,EAA4BtD,IAA0D,CAChH,IAAM+E,EAAc,MAAMD,EAAWxB,EAActD,CAAO,EAE1D,OAAKiH,GACD,MAAMF,EAAOzD,EAActD,CAAO,EAGjCkH,IACD,MAAMnD,EAAWT,EAActD,CAAO,EAGnCuE,EAAWjB,EAAcyB,EAAa/E,CAAO,CACxD,EAEauH,GAAa,MAAOjE,EAA4BtD,IAA6D,CACjHiH,GACD,MAAMF,EAAOzD,EAActD,CAAO,EAGtC,IAAM+E,EAAc,MAAMD,EAAWxB,EAActD,CAAO,EAE1D,OAAOyD,EAAcH,EAAcyB,EAAa/E,CAAO,CAC3D","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"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@anolilab/semantic-release-pnpm",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.8",
|
|
4
4
|
"description": "Semantic-release plugin to publish a npm package with pnpm.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"anolilab",
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"@secretlint/secretlint-rule-preset-recommend": "^8.2.4",
|
|
57
57
|
"@semantic-release/changelog": "^6.0.3",
|
|
58
58
|
"@semantic-release/git": "^10.0.1",
|
|
59
|
-
"@semantic-release/github": "^10.0.
|
|
59
|
+
"@semantic-release/github": "^10.0.4",
|
|
60
60
|
"@types/dockerode": "^3.3.29",
|
|
61
61
|
"@types/ini": "^4.1.0",
|
|
62
62
|
"@types/node": "^20.12.12",
|