Skip to content

Commit 1d18aec

Browse files
authored
refactor: update project to ESM (#5)
BREAKING CHANGE: migrate imports from CommonJS to ESM
1 parent 35fbb5f commit 1d18aec

File tree

8 files changed

+272
-517
lines changed

8 files changed

+272
-517
lines changed

README.md

+26-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,25 @@
11
# semantic-release-jira-notes
22

3-
[![npm latest version](https://img.shields.io/npm/v/semantic-release-jira-notes/latest.svg)](https://www.npmjs.com/package/semantic-release-jira-notes)
3+
[![ESM-only package][package]][package-url]
4+
[![NPM version][npm]][npm-url]
5+
[![Node version][node]][node-url]
6+
[![Dependencies status][deps]][deps-url]
7+
[![Install size][size]][size-url]
8+
9+
[package]: https://img.shields.io/badge/package-ESM--only-ffe536.svg
10+
[package-url]: https://nodejs.org/api/esm.html
11+
12+
[npm]: https://img.shields.io/npm/v/semantic-release-jira-notes/latest.svg
13+
[npm-url]: https://www.npmjs.com/package/semantic-release-jira-notes
14+
15+
[node]: https://img.shields.io/node/v/semantic-release-jira-notes/latest.svg
16+
[node-url]: https://nodejs.org
17+
18+
[deps]: https://img.shields.io/librariesio/release/npm/semantic-release-jira-notes
19+
[deps-url]: https://libraries.io/npm/semantic-release-jira-notes/tree
20+
21+
[size]: https://packagephobia.com/badge?p=semantic-release-jira-notes
22+
[size-url]: https://packagephobia.com/result?p=semantic-release-jira-notes
423

524
[**semantic-release**](https://github.com/semantic-release/semantic-release) plugin to add links to
625
JIRA issues in the release notes.
@@ -23,8 +42,12 @@ For each JIRA issue detected in the release notes, it will add a link that bring
2342
### Installation
2443

2544
```bash
26-
$ npm install --save-dev semantic-release-jira-notes
27-
$ yarn add --dev semantic-release-jira-notes
45+
# npm
46+
npm install --save-dev semantic-release-jira-notes
47+
# yarn
48+
yarn add --dev semantic-release-jira-notes
49+
# pnpm
50+
pnpm add --save-dev semantic-release-jira-notes
2851
```
2952

3053
### Inputs

package.json

+13-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
{
22
"name": "semantic-release-jira-notes",
33
"version": "3.0.0",
4+
"engines": {
5+
"node": ">=18"
6+
},
47
"description": "Semantic Release plugin to add JIRA issues link to the release notes",
58
"main": "src/index.js",
9+
"type": "module",
610
"author": "iamludal",
711
"homepage": "https://github.com/iamludal/semantic-release-jira-notes",
812
"repository": "https://github.com/iamludal/semantic-release-jira-notes",
@@ -14,8 +18,14 @@
1418
"changelog"
1519
],
1620
"dependencies": {
17-
"@semantic-release/error": "2.2.0",
18-
"@semantic-release/release-notes-generator": "^10.0.3",
19-
"aggregate-error": "^4.0.1"
21+
"@semantic-release/error": "4.0.0",
22+
"@semantic-release/release-notes-generator": "^13.0.0",
23+
"aggregate-error": "^5.0.0"
24+
},
25+
"scripts": {
26+
"prettier": "prettier --write src/**/*.js"
27+
},
28+
"devDependencies": {
29+
"prettier": "^3.2.5"
2030
}
2131
}

src/index.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const verifyConditions = require("./lib/verify-conditions");
2-
const generateNotes = require("./lib/generate-notes");
1+
import { verifyConditions } from "./lib/verify-conditions.js";
2+
import { generateNotes } from "./lib/generate-notes.js";
33

4-
module.exports = { verifyConditions, generateNotes };
4+
export { verifyConditions, generateNotes };

src/lib/constants.js

+4-6
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
1-
const INPUTS = { ticketPrefixes: "ticketPrefixes", jiraHost: "jiraHost" };
1+
export const INPUTS = { ticketPrefixes: "ticketPrefixes", jiraHost: "jiraHost" };
22

3-
const TICKET_PREFIX_REGEX = /^[A-Z][A-Z0-9]{0,50}$/;
4-
const ISSUE_REGEX = /([A-Z][A-Z0-9]{0,50}-[1-9][0-9]*)/;
5-
const DOMAIN_NAME_REGEX = /^((?!-)[A-Za-z0-9-]{1,63}(?<!-)\.)+[A-Za-z]{2,6}$/;
6-
7-
module.exports = { INPUTS, TICKET_PREFIX_REGEX, ISSUE_REGEX, DOMAIN_NAME_REGEX };
3+
export const TICKET_PREFIX_REGEX = /^[A-Z][A-Z0-9]{0,50}$/;
4+
export const ISSUE_REGEX = /([A-Z][A-Z0-9]{0,50}-[1-9][0-9]*)/;
5+
export const DOMAIN_NAME_REGEX = /^((?!-)[A-Za-z0-9-]{1,63}(?<!-)\.)+[A-Za-z]{2,6}$/;

src/lib/errors.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const SemanticReleaseError = require("@semantic-release/error");
1+
import SemanticReleaseError from "@semantic-release/error";
22

33
class RegexError extends SemanticReleaseError {
44
constructor(value, pattern) {
@@ -18,4 +18,4 @@ class InputRequiredError extends SemanticReleaseError {
1818
}
1919
}
2020

21-
module.exports = { RegexError, InvalidTypeError, InputRequiredError };
21+
export { RegexError, InvalidTypeError, InputRequiredError };

src/lib/generate-notes.js

+5-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
const { INPUTS, ISSUE_REGEX } = require("./constants");
2-
const { generateNotes } = require("@semantic-release/release-notes-generator");
1+
import { INPUTS, ISSUE_REGEX } from "./constants.js";
2+
import { generateNotes } from "@semantic-release/release-notes-generator";
33

4-
module.exports = async (pluginConfig, context) => {
4+
const generateJiraNotes = async (pluginConfig, context) => {
55
const ticketPrefixes = pluginConfig[INPUTS.ticketPrefixes];
66
const jiraHost = pluginConfig[INPUTS.jiraHost];
77
const notes = await generateNotes(pluginConfig, context);
@@ -18,3 +18,5 @@ module.exports = async (pluginConfig, context) => {
1818

1919
return notes?.replace(issueRegex, `[$1](https://${jiraHost}/browse/$1)`);
2020
};
21+
22+
export { generateJiraNotes as generateNotes };

src/lib/verify-conditions.js

+7-7
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
1-
const { InputRequiredError, RegexError } = require("./errors");
2-
const SemanticReleaseError = require("@semantic-release/error");
3-
const AggregateErrorPromise = import("aggregate-error");
4-
const constants = require("./constants");
1+
import { InputRequiredError, RegexError } from "./errors.js";
2+
import SemanticReleaseError from "@semantic-release/error";
3+
import AggregateErrorPromise from "aggregate-error";
4+
import { INPUTS, TICKET_PREFIX_REGEX, DOMAIN_NAME_REGEX } from "./constants.js";
55

6-
const { INPUTS, TICKET_PREFIX_REGEX, DOMAIN_NAME_REGEX } = constants;
7-
8-
module.exports = async pluginConfig => {
6+
const verifyConditions = async pluginConfig => {
97
const ticketPrefixes = pluginConfig[INPUTS.ticketPrefixes];
108
const jiraHost = pluginConfig[INPUTS.jiraHost];
119
const errors = [];
@@ -32,3 +30,5 @@ module.exports = async pluginConfig => {
3230
throw new AggregateError(errors);
3331
}
3432
};
33+
34+
export { verifyConditions };

0 commit comments

Comments
 (0)