UNPKG

@sebbo2002/semantic-release-jsr

Version:

Small `semantic-release` plugin, which adjusts the version in the `jsr.json` file and executes `jsr publish` to publish the module on jsr.io as well.

2 lines 3.6 kB
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let c=require(`@semantic-release/error`);c=s(c,1);let l=require(`jsr`),u=require(`node:fs`),d=require(`node:fs/promises`),f=require(`node:os`),p=require(`node:path`);async function m(e,t){let n=e.cwd||t?.cwd||process.cwd(),r=e.pkgJsonPath||(0,p.join)(n,`package.json`);!e.pkgJsonPath&&!(0,u.existsSync)(r)&&(r=null);let i,a=[],o=(0,p.join)(n,`jsr.json`),s=(0,p.join)(n,`deno.json`);(0,u.existsSync)(o)&&a.push(o),(0,u.existsSync)(s)&&a.push(s),r&&a.push(r);for(let e of a){let t=await(0,d.readFile)(e,`utf8`),n=JSON.parse(t);!i&&n.name&&(i=n.name)}if(!i)throw new c.default(`No name found in jsr.json or deno.json`,`ERR_NO_NAME`,`A package name is required to publish to JSR.io`);let l=e.publishArgs?.slice(0)||[];return(e.allowDirty===void 0||e.allowDirty)&&!l.includes(`--allow-dirty`)&&l.push(`--allow-dirty`),{cwd:n,name:i,prepare:{versionJsonPaths:a},publish:{binFolder:_(),canary:!1,pkgJsonPath:r,publishArgs:l}}}let h;function g(e,t){let n=`https://jsr.io/${e.name}/versions`;return t.nextRelease&&(n=`https://jsr.io/${e.name}@${t.nextRelease.version}`),{name:`JSR.io`,url:n}}function _(){if(h)return h;let e=(0,u.mkdtempSync)((0,p.join)((0,f.tmpdir)(),`semantic-release-jsr-`));return h=e,e}async function v(e,t){t.logger.log(`Run jsr publish in ${e.cwd} with ${JSON.stringify(e.publish)}`);let n=Date.now();try{await(0,l.publish)(e.cwd,e.publish),t.logger.log(`jsr publish run successfully (took ${Date.now()-n} ms)`)}catch(e){throw t.logger.log(`jsr publish failed after ${Date.now()-n} ms:`),t.logger.error(e instanceof Error?e.stack:e),e}}async function y(){h&&=(await(0,d.rm)(h,{force:!0,recursive:!0}),void 0)}async function b(e,t){if(!t.nextRelease)return;t.logger.log(`Updating version in ${e}`);let n=t.nextRelease.version,r=await(0,d.readFile)(e,`utf8`);if(JSON.parse(r).version===n){t.logger.log(`Skipped, ${e} is already up to date`);return}let i=r.replace(/^([\s\S]*"version"\s*:\s*")([^"]+)("[\s\S]*$)/,`$1${n}$3`);if(JSON.parse(i).version!==n)throw new c.default(`Failed to replace version in ${e}`,`ERR_VERSION_REPLACE`,`The version in ${e} could not be updated to ${n}. Please check if the file is valid JSON and contains a "version" field.`);await(0,d.writeFile)(e,i,`utf8`),t.logger.log(`Wrote new version to ${e}`)}async function x(e,t){t.logger.log(`Removing temporary folder`),await y()}async function S(e,t){let n=await m(e,t);for(let e of n.prepare.versionJsonPaths)await b(e,t)}async function C(e,t){let n=await m(e,t);return await v(n,t),g(n,t)}async function w(e,t){t.logger.log(`Removing temporary folder`),await y()}async function T(e,t){let n=await m(e,t);t.logger.info(`Run jsr publish --dry-run to verify configuration`),await v({...n,publish:{...n.publish,publishArgs:[...n.publish.publishArgs,`--dry-run`]}},t)}exports.fail=x,exports.generatePublishResponse=g,exports.getTemporaryBinFolder=_,exports.jsrPublish=v,exports.parseConfig=m,exports.prepare=S,exports.publish=C,exports.removeTemporaryBinFolder=y,exports.success=w,exports.updateVersionJson=b,exports.verifyConditions=T; //# sourceMappingURL=index.cjs.map