From 3c424ba1fbe41446e160f9040b64a5c9c374e042 Mon Sep 17 00:00:00 2001 From: literat Date: Tue, 3 Dec 2024 19:50:32 +0100 Subject: [PATCH] Feat(ci): Introduce posting changelog into the Slack channel refs #1781 --- package.json | 4 + scripts/post-changelog.mjs | 156 +++++++++++++ yarn.lock | 461 ++++++++++++++++++++++++++++++++++++- 3 files changed, 618 insertions(+), 3 deletions(-) create mode 100644 scripts/post-changelog.mjs diff --git a/package.json b/package.json index 39dbcc2ac5..af17d0a577 100644 --- a/package.json +++ b/package.json @@ -73,12 +73,14 @@ "babel-loader": "9.2.1", "core-js": "3.39.0", "css-loader": "7.1.2", + "dotenv-safe": "^9.1.0", "eslint": "8.57.1", "eslint-plugin-jsx-a11y": "6.10.2", "eslint-plugin-prettier": "5.2.1", "eslint-plugin-react": "7.37.2", "eslint-plugin-react-hooks": "4.6.2", "eslint-plugin-storybook": "0.11.1", + "gitdiff-parser": "^0.3.1", "husky": "9.1.7", "is-ci": "3.0.1", "lerna": "8.1.8", @@ -96,6 +98,8 @@ "remark-frontmatter": "5.0.0", "remark-lint-heading-capitalization": "1.2.0", "sass-loader": "14.2.1", + "simple-git": "^3.27.0", + "slackify-markdown": "^4.4.0", "style-loader": "4.0.0", "typescript": "4.7.4", "vite-raw-plugin": "1.0.2", diff --git a/scripts/post-changelog.mjs b/scripts/post-changelog.mjs new file mode 100644 index 0000000000..db0c51ded3 --- /dev/null +++ b/scripts/post-changelog.mjs @@ -0,0 +1,156 @@ +import { $, fetch, argv } from 'zx'; +import dotenv from 'dotenv-safe'; +import slackifyMarkdown from 'slackify-markdown'; +import { simpleGit } from 'simple-git'; +import gitDiffParser from 'gitdiff-parser'; + +/* eslint-disable no-console */ + +const CHANNEL = '#spirit-design-system-notifications_en'; +const COLOR_CORE = '#00A58E'; +const PACKAGES = [/* 'web', */ 'web-react' /* 'design-tokens', 'icons', 'codemods', 'analytics' */]; +const SLACK_CHANGELOG_WEBHOOK_URL = process.env.SLACK_CHANGELOG_WEBHOOK_URL ?? ''; + +function getTitle(pkg) { + return `๐Ÿš€ New ${pkg + .split('-') + .map((part) => part.charAt(0).toUpperCase() + part.slice(1)) + .join(' ')} package release`; +} +async function sendToWebhook({ content, webhookUrl }) { + await fetch(webhookUrl, { + method: 'POST', + body: JSON.stringify(content), + }) + .then((res) => { + if (res.status !== 200) { + throw new Error(`${res.status} ${res.statusText}`); + } + }) + .catch((err) => { + console.error(err); + process.exit(1); + }); +} + +function format(str, package_, prefix = '@lmc-eu') { + const output = str + .replace( + /^#+ /, + `# ๐Ÿ“ฆ ${package_ + .split('-') + .map((part) => part.charAt(0).toUpperCase() + part.slice(1)) + .join(' ')} \`${prefix}/spirit-${package_}\` `, + ) + .replace('Bug Fixes', '๐Ÿ› Bug Fixes') + .replace('Features', 'โšก Features') + .replace('BREAKING CHANGES', '๐Ÿšจ BREAKING CHANGES') + .replace('Dependencies', '๐Ÿ“ฆ Dependencies') + .replace('Documentation', '๐Ÿ“œ Documentation') + .replace('Tests', '๐Ÿงช Tests') + .replace('Code Refactoring', '๐Ÿ› ๏ธ Code Refactoring') + .replace('Chores', '๐Ÿ”จ Chores') + .replace('Styles', '๐Ÿ’… Styles') + .replaceAll('https://github.com/lmc-eu/spirit-design-system/issues/', 'https://jira.almacareer.tech/browse/'); + + return output; +} + +function getChangelogFromDiff(files) { + // Only one file as we're only looking at the changelog + const versionPattern = /<\/a>/; + const [changelogFile] = files; + const changelog = changelogFile.hunks + .flatMap((hunk) => hunk.changes.filter(({ isInsert }) => isInsert).map(({ content }) => content)) + .filter((line) => !versionPattern.test(line)) + .join('\n') + .trim(); + + return changelog; +} + +function getDiff(tag, path) { + return simpleGit().show([tag, path]); +} + +function changelogPath(package_) { + return `packages/${package_}/CHANGELOG.md`; +} + +async function postSlackNotification(changelog, package_) { + try { + $.verbose = false; + const res = await sendToWebhook({ + webhookUrl: SLACK_CHANGELOG_WEBHOOK_URL, + content: { + attachments: [ + { + title: getTitle(package_), + text: changelog, + color: COLOR_CORE, + }, + ], + }, + }); + + return res; + } catch (err) { + console.log('Error posting to Slack'); + console.error(err); + } + + return undefined; +} + +async function configureWebhookURL() { + try { + dotenv.config({ + allowEmptyValues: true, + example: '.env.example', + }); + } catch (err) { + if (/SLACK_CHANGELOG_WEBHOOK_URL/g.test(err.message)) { + throw new Error('SLACK_CHANGELOG_WEBHOOK_URL is not set'); + } + } +} + +async function publishChangelog(package_) { + try { + await simpleGit().fetch(['origin', 'main', '--tags']); + const tags = await simpleGit().tags({ '--sort': '-taggerdate' }); + console.log(tags.latest); + const diff = await getDiff( + '@lmc-eu/spirit-web-react@3.0.0-alpha.0' /* tags.latest */ ?? '', + changelogPath(package_), + ); + const files = gitDiffParser.parse(diff); + if (files.length === 0) { + console.log(`No changes in ${package_}`); + + return; + } + const changelog = getChangelogFromDiff(files); + const formattedChangelog = format(changelog, package_); + const slackifiedChangelog = slackifyMarkdown(formattedChangelog); + + if (false /* argv.dry */) { + console.info(formattedChangelog); + } else { + await configureWebhookURL(); + await postSlackNotification(slackifiedChangelog, package_); + } + } catch (err) { + console.error(err); + process.exit(1); + } +} + +(async () => { + await Promise.all( + PACKAGES.map(async (package_) => { + await publishChangelog(package_); + }), + ); + process.exit(0); +})(); diff --git a/yarn.lock b/yarn.lock index 58c90541ac..acde01708e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4687,6 +4687,22 @@ __metadata: languageName: node linkType: hard +"@kwsites/file-exists@npm:^1.1.1": + version: 1.1.1 + resolution: "@kwsites/file-exists@npm:1.1.1" + dependencies: + debug: "npm:^4.1.1" + checksum: 10/4ff945de7293285133aeae759caddc71e73c4a44a12fac710fdd4f574cce2671a3f89d8165fdb03d383cfc97f3f96f677d8de3c95133da3d0e12a123a23109fe + languageName: node + linkType: hard + +"@kwsites/promise-deferred@npm:^1.1.1": + version: 1.1.1 + resolution: "@kwsites/promise-deferred@npm:1.1.1" + checksum: 10/07455477a0123d9a38afb503739eeff2c5424afa8d3dbdcc7f9502f13604488a4b1d9742fc7288832a52a6422cf1e1c0a1d51f69a39052f14d27c9a0420b6629 + languageName: node + linkType: hard + "@lerna/create@npm:8.1.8": version: 8.1.8 resolution: "@lerna/create@npm:8.1.8" @@ -8663,6 +8679,15 @@ __metadata: languageName: node linkType: hard +"@types/mdast@npm:^3.0.0": + version: 3.0.15 + resolution: "@types/mdast@npm:3.0.15" + dependencies: + "@types/unist": "npm:^2" + checksum: 10/050a5c1383928b2688dd145382a22535e2af87dc3fd592c843abb7851bcc99893a1ee0f63be19fc4e89779387ec26a57486cfb425b016c0b2a98a17fc4a1e8b3 + languageName: node + linkType: hard + "@types/mdast@npm:^4.0.0": version: 4.0.4 resolution: "@types/mdast@npm:4.0.4" @@ -8907,7 +8932,7 @@ __metadata: languageName: node linkType: hard -"@types/unist@npm:^2.0.0": +"@types/unist@npm:^2, @types/unist@npm:^2.0.0, @types/unist@npm:^2.0.2": version: 2.0.11 resolution: "@types/unist@npm:2.0.11" checksum: 10/6d436e832bc35c6dde9f056ac515ebf2b3384a1d7f63679d12358766f9b313368077402e9c1126a14d827f10370a5485e628bf61aa91117cf4fc882423191a4e @@ -11006,6 +11031,13 @@ __metadata: languageName: node linkType: hard +"bail@npm:^1.0.0": + version: 1.0.5 + resolution: "bail@npm:1.0.5" + checksum: 10/6c334940d7eaa4e656a12fb12407b6555649b6deb6df04270fa806e0da82684ebe4a4e47815b271c794b40f8d6fa286e0c248b14ddbabb324a917fab09b7301a + languageName: node + linkType: hard + "bail@npm:^2.0.0": version: 2.0.2 resolution: "bail@npm:2.0.2" @@ -11593,6 +11625,13 @@ __metadata: languageName: node linkType: hard +"ccount@npm:^1.0.0": + version: 1.1.0 + resolution: "ccount@npm:1.1.0" + checksum: 10/b335a79d0aa4308919cf7507babcfa04ac63d389ebed49dbf26990d4607c8a4713cde93cc83e707d84571ddfe1e7615dad248be9bc422ae4c188210f71b08b78 + languageName: node + linkType: hard + "ccount@npm:^2.0.0": version: 2.0.1 resolution: "ccount@npm:2.0.1" @@ -11708,6 +11747,13 @@ __metadata: languageName: node linkType: hard +"character-entities-legacy@npm:^1.0.0": + version: 1.1.4 + resolution: "character-entities-legacy@npm:1.1.4" + checksum: 10/fe03a82c154414da3a0c8ab3188e4237ec68006cbcd681cf23c7cfb9502a0e76cd30ab69a2e50857ca10d984d57de3b307680fff5328ccd427f400e559c3a811 + languageName: node + linkType: hard + "character-entities-legacy@npm:^3.0.0": version: 3.0.0 resolution: "character-entities-legacy@npm:3.0.0" @@ -11715,6 +11761,13 @@ __metadata: languageName: node linkType: hard +"character-entities@npm:^1.0.0": + version: 1.2.4 + resolution: "character-entities@npm:1.2.4" + checksum: 10/7c11641c48d1891aaba7bc800d4500804d91a28f46d64e88c001c38e6ab2e7eae28873a77ae16e6c55d24cac35ddfbb15efe56c3012b86684a3c4e95c70216b7 + languageName: node + linkType: hard + "character-entities@npm:^2.0.0": version: 2.0.2 resolution: "character-entities@npm:2.0.2" @@ -11722,6 +11775,13 @@ __metadata: languageName: node linkType: hard +"character-reference-invalid@npm:^1.0.0": + version: 1.1.4 + resolution: "character-reference-invalid@npm:1.1.4" + checksum: 10/812ebc5e6e8d08fd2fa5245ae78c1e1a4bea4692e93749d256a135c4a442daf931ca18e067cc61ff4a58a419eae52677126a0bc4f05a511290427d60d3057805 + languageName: node + linkType: hard + "character-reference-invalid@npm:^2.0.0": version: 2.0.1 resolution: "character-reference-invalid@npm:2.0.1" @@ -13915,6 +13975,15 @@ __metadata: languageName: node linkType: hard +"dotenv-safe@npm:^9.1.0": + version: 9.1.0 + resolution: "dotenv-safe@npm:9.1.0" + peerDependencies: + dotenv: ">= 8.2.0" + checksum: 10/b0b04bbce80f4ddcb359faea35fdc58d3aac2db4a06f705601e16fb8528a2f44d6664715b74cf79c1a42e4ee59f6f0df1b5e856f67710b1baa6926439c02622a + languageName: node + linkType: hard + "dotenv@npm:16.4.5, dotenv@npm:^16.3.1, dotenv@npm:^16.4.4, dotenv@npm:~16.4.5": version: 16.4.5 resolution: "dotenv@npm:16.4.5" @@ -16923,6 +16992,13 @@ __metadata: languageName: node linkType: hard +"gitdiff-parser@npm:^0.3.1": + version: 0.3.1 + resolution: "gitdiff-parser@npm:0.3.1" + checksum: 10/bcd2eeb5fe6bb5dd631e1c5c70cbb59cc9c4475d3a7df15c8dd41bf9d9b489981b18f5cf428f634461d6d92f5d726661772079cbc784214f6c957a573446cd1b + languageName: node + linkType: hard + "github-from-package@npm:0.0.0": version: 0.0.0 resolution: "github-from-package@npm:0.0.0" @@ -18120,6 +18196,13 @@ __metadata: languageName: node linkType: hard +"is-alphabetical@npm:^1.0.0": + version: 1.0.4 + resolution: "is-alphabetical@npm:1.0.4" + checksum: 10/6508cce44fd348f06705d377b260974f4ce68c74000e7da4045f0d919e568226dc3ce9685c5a2af272195384df6930f748ce9213fc9f399b5d31b362c66312cb + languageName: node + linkType: hard + "is-alphabetical@npm:^2.0.0": version: 2.0.1 resolution: "is-alphabetical@npm:2.0.1" @@ -18127,6 +18210,16 @@ __metadata: languageName: node linkType: hard +"is-alphanumerical@npm:^1.0.0": + version: 1.0.4 + resolution: "is-alphanumerical@npm:1.0.4" + dependencies: + is-alphabetical: "npm:^1.0.0" + is-decimal: "npm:^1.0.0" + checksum: 10/e2e491acc16fcf5b363f7c726f666a9538dba0a043665740feb45bba1652457a73441e7c5179c6768a638ed396db3437e9905f403644ec7c468fb41f4813d03f + languageName: node + linkType: hard + "is-alphanumerical@npm:^2.0.0": version: 2.0.1 resolution: "is-alphanumerical@npm:2.0.1" @@ -18289,6 +18382,13 @@ __metadata: languageName: node linkType: hard +"is-decimal@npm:^1.0.0": + version: 1.0.4 + resolution: "is-decimal@npm:1.0.4" + checksum: 10/ed483a387517856dc395c68403a10201fddcc1b63dc56513fbe2fe86ab38766120090ecdbfed89223d84ca8b1cd28b0641b93cb6597b6e8f4c097a7c24e3fb96 + languageName: node + linkType: hard + "is-decimal@npm:^2.0.0": version: 2.0.1 resolution: "is-decimal@npm:2.0.1" @@ -18402,6 +18502,13 @@ __metadata: languageName: node linkType: hard +"is-hexadecimal@npm:^1.0.0": + version: 1.0.4 + resolution: "is-hexadecimal@npm:1.0.4" + checksum: 10/a452e047587b6069332d83130f54d30da4faf2f2ebaa2ce6d073c27b5703d030d58ed9e0b729c8e4e5b52c6f1dab26781bb77b7bc6c7805f14f320e328ff8cd5 + languageName: node + linkType: hard + "is-hexadecimal@npm:^2.0.0": version: 2.0.1 resolution: "is-hexadecimal@npm:2.0.1" @@ -18549,7 +18656,7 @@ __metadata: languageName: node linkType: hard -"is-plain-obj@npm:^2.1.0": +"is-plain-obj@npm:^2.0.0, is-plain-obj@npm:^2.1.0": version: 2.1.0 resolution: "is-plain-obj@npm:2.1.0" checksum: 10/cec9100678b0a9fe0248a81743041ed990c2d4c99f893d935545cfbc42876cbe86d207f3b895700c690ad2fa520e568c44afc1605044b535a7820c1d40e38daa @@ -20812,6 +20919,13 @@ __metadata: languageName: node linkType: hard +"longest-streak@npm:^2.0.0": + version: 2.0.4 + resolution: "longest-streak@npm:2.0.4" + checksum: 10/28b8234a14963002c5c71035dee13a0a11e9e9d18ffa320fdc8796ed7437399204495702ed69cd2a7087b0af041a2a8b562829b7c1e2042e73a3374d1ecf6580 + languageName: node + linkType: hard + "longest-streak@npm:^3.0.0": version: 3.1.0 resolution: "longest-streak@npm:3.1.0" @@ -21083,6 +21197,15 @@ __metadata: languageName: node linkType: hard +"markdown-table@npm:^2.0.0": + version: 2.0.0 + resolution: "markdown-table@npm:2.0.0" + dependencies: + repeat-string: "npm:^1.0.0" + checksum: 10/8018cd1a1733ffda916a0548438e50f3d21b6c6b71fb23696b33c0b5922a8cc46035eb4b204a59c6054f063076f934461ae094599656a63f87c1c3a80bd3c229 + languageName: node + linkType: hard + "mathml-tag-names@npm:^2.1.3": version: 2.1.3 resolution: "mathml-tag-names@npm:2.1.3" @@ -21144,6 +21267,30 @@ __metadata: languageName: node linkType: hard +"mdast-util-find-and-replace@npm:^1.1.0": + version: 1.1.1 + resolution: "mdast-util-find-and-replace@npm:1.1.1" + dependencies: + escape-string-regexp: "npm:^4.0.0" + unist-util-is: "npm:^4.0.0" + unist-util-visit-parents: "npm:^3.0.0" + checksum: 10/e4c9e50d9bce5ae4c728a925bd60080b94d16aaa312c27e2b70b16ddc29a5d0a0844d6e18efaef08aeb22c68303ec528f20183d1b0420504a0c2c1710cebd76f + languageName: node + linkType: hard + +"mdast-util-from-markdown@npm:^0.8.0": + version: 0.8.5 + resolution: "mdast-util-from-markdown@npm:0.8.5" + dependencies: + "@types/mdast": "npm:^3.0.0" + mdast-util-to-string: "npm:^2.0.0" + micromark: "npm:~2.11.0" + parse-entities: "npm:^2.0.0" + unist-util-stringify-position: "npm:^2.0.0" + checksum: 10/f42166eb7a3c2a8cf17dffd868a6dfdab6a77d4e4c8f35d7c3d63247a16ddfeae45a59d9f5fa5eacc48d76d82d18cb0157961d03d1732bc616f9ddf3bb450984 + languageName: node + linkType: hard + "mdast-util-from-markdown@npm:^2.0.0": version: 2.0.1 resolution: "mdast-util-from-markdown@npm:2.0.1" @@ -21178,6 +21325,58 @@ __metadata: languageName: node linkType: hard +"mdast-util-gfm-autolink-literal@npm:^0.1.0": + version: 0.1.3 + resolution: "mdast-util-gfm-autolink-literal@npm:0.1.3" + dependencies: + ccount: "npm:^1.0.0" + mdast-util-find-and-replace: "npm:^1.1.0" + micromark: "npm:^2.11.3" + checksum: 10/9f7b888678631fd8c0a522b0689a750aead2b05d57361dbdf02c10381557f1ce874f746226141f3ace1e0e7952495e8d5ce8f9af423a7a66bb300d4635a918eb + languageName: node + linkType: hard + +"mdast-util-gfm-strikethrough@npm:^0.2.0": + version: 0.2.3 + resolution: "mdast-util-gfm-strikethrough@npm:0.2.3" + dependencies: + mdast-util-to-markdown: "npm:^0.6.0" + checksum: 10/51aa11ca8f1a5745f1eb9ccddb0eca797b3ede6f0c7bf355d594ad57c02c98d95260f00b1c4b07504018e0b22708531eabb76037841f09ce8465444706a06522 + languageName: node + linkType: hard + +"mdast-util-gfm-table@npm:^0.1.0": + version: 0.1.6 + resolution: "mdast-util-gfm-table@npm:0.1.6" + dependencies: + markdown-table: "npm:^2.0.0" + mdast-util-to-markdown: "npm:~0.6.0" + checksum: 10/06fe08f74fab934845280a289a0439335a1ae3fd0988f2a655afa8189ad109c4debd28b0865e16f9d0fba6fb5fc3769f5f397bade73607537735987411b5da67 + languageName: node + linkType: hard + +"mdast-util-gfm-task-list-item@npm:^0.1.0": + version: 0.1.6 + resolution: "mdast-util-gfm-task-list-item@npm:0.1.6" + dependencies: + mdast-util-to-markdown: "npm:~0.6.0" + checksum: 10/da5ae0d621862502068792947502a6452a10593f5625561b093dd99557280f7ab2dc3280fc124aaf7581311d4a88f1ab0d1307dab3b8bf7c35b47d1d54293c06 + languageName: node + linkType: hard + +"mdast-util-gfm@npm:^0.1.0": + version: 0.1.2 + resolution: "mdast-util-gfm@npm:0.1.2" + dependencies: + mdast-util-gfm-autolink-literal: "npm:^0.1.0" + mdast-util-gfm-strikethrough: "npm:^0.2.0" + mdast-util-gfm-table: "npm:^0.1.0" + mdast-util-gfm-task-list-item: "npm:^0.1.0" + mdast-util-to-markdown: "npm:^0.6.1" + checksum: 10/64cd342f70d9da4abc11a24ce3e80f09866360081cb7056119726b94c8358b0ca8af60f83399ce39edc76247ce4eb49677d95f5a834d0d9646457a0e5f236410 + languageName: node + linkType: hard + "mdast-util-heading-style@npm:^3.0.0": version: 3.0.0 resolution: "mdast-util-heading-style@npm:3.0.0" @@ -21258,6 +21457,20 @@ __metadata: languageName: node linkType: hard +"mdast-util-to-markdown@npm:^0.6.0, mdast-util-to-markdown@npm:^0.6.1, mdast-util-to-markdown@npm:^0.6.2, mdast-util-to-markdown@npm:~0.6.0": + version: 0.6.5 + resolution: "mdast-util-to-markdown@npm:0.6.5" + dependencies: + "@types/unist": "npm:^2.0.0" + longest-streak: "npm:^2.0.0" + mdast-util-to-string: "npm:^2.0.0" + parse-entities: "npm:^2.0.0" + repeat-string: "npm:^1.0.0" + zwitch: "npm:^1.0.0" + checksum: 10/e1fdb7a75f59166abe5d9d26fed5e04cd40bc6ab54cba239350f70c92df093106b9462660a1891210e9d52b2729c14fc107605127e25837b0a4ad74fbdfbd328 + languageName: node + linkType: hard + "mdast-util-to-markdown@npm:^2.0.0": version: 2.1.0 resolution: "mdast-util-to-markdown@npm:2.1.0" @@ -21274,6 +21487,13 @@ __metadata: languageName: node linkType: hard +"mdast-util-to-string@npm:^2.0.0": + version: 2.0.0 + resolution: "mdast-util-to-string@npm:2.0.0" + checksum: 10/0b2113ada10e002fbccb014170506dabe2f2ddacaacbe4bc1045c33f986652c5a162732a2c057c5335cdb58419e2ad23e368e5be226855d4d4e280b81c4e9ec2 + languageName: node + linkType: hard + "mdast-util-to-string@npm:^4.0.0": version: 4.0.0 resolution: "mdast-util-to-string@npm:4.0.0" @@ -21480,6 +21700,63 @@ __metadata: languageName: node linkType: hard +"micromark-extension-gfm-autolink-literal@npm:~0.5.0": + version: 0.5.7 + resolution: "micromark-extension-gfm-autolink-literal@npm:0.5.7" + dependencies: + micromark: "npm:~2.11.3" + checksum: 10/107e4aa3926f5e77acbf47b0568985acae173c5190610c7c5356da613d5c957cc4a5a3ed43ee51ae6be146445fbb612861f9d0c7c9b388265fc6abfe6c2df1e2 + languageName: node + linkType: hard + +"micromark-extension-gfm-strikethrough@npm:~0.6.5": + version: 0.6.5 + resolution: "micromark-extension-gfm-strikethrough@npm:0.6.5" + dependencies: + micromark: "npm:~2.11.0" + checksum: 10/67711633590d3e688759a46aaed9f9d04bcaf29b6615eec17af082eabe1059fbca4beb41ba13db418ae7be3ac90198742fbabe519a70f9b6bb615598c5d6ef1a + languageName: node + linkType: hard + +"micromark-extension-gfm-table@npm:~0.4.0": + version: 0.4.3 + resolution: "micromark-extension-gfm-table@npm:0.4.3" + dependencies: + micromark: "npm:~2.11.0" + checksum: 10/aa1f583966164a57b516cc5690e92a487cbc676936d48f9cecc39fc009c342691588b0793455e166c6c5499804f25306ce8313259b6e36a9d9fd07769b17a5fd + languageName: node + linkType: hard + +"micromark-extension-gfm-tagfilter@npm:~0.3.0": + version: 0.3.0 + resolution: "micromark-extension-gfm-tagfilter@npm:0.3.0" + checksum: 10/9369736a203836b2933dfdeacab863e7a4976139b9dd46fa5bd6c2feeef50c7dbbcdd641ae95f0481f577d8aa22396bfa7ed9c38515647d4cf3f2c727cc094a3 + languageName: node + linkType: hard + +"micromark-extension-gfm-task-list-item@npm:~0.3.0": + version: 0.3.3 + resolution: "micromark-extension-gfm-task-list-item@npm:0.3.3" + dependencies: + micromark: "npm:~2.11.0" + checksum: 10/e4ccbe6b440234c8ee05d89315e1204c78773724241af31ac328194470a8a61bc6606eab3ce2d9a83da4401b06e07936038654493da715d40522133d1556dda4 + languageName: node + linkType: hard + +"micromark-extension-gfm@npm:^0.3.0": + version: 0.3.3 + resolution: "micromark-extension-gfm@npm:0.3.3" + dependencies: + micromark: "npm:~2.11.0" + micromark-extension-gfm-autolink-literal: "npm:~0.5.0" + micromark-extension-gfm-strikethrough: "npm:~0.6.5" + micromark-extension-gfm-table: "npm:~0.4.0" + micromark-extension-gfm-tagfilter: "npm:~0.3.0" + micromark-extension-gfm-task-list-item: "npm:~0.3.0" + checksum: 10/653102f7a61de43f9308ae34d70b195710f0bd3dc97a39e392c9ab81ffc975ccccc4cd29dfa0ec5bdad931634f055155314a5e96579ff6f805896fc173c707ac + languageName: node + linkType: hard + "micromark-factory-destination@npm:^2.0.0": version: 2.0.0 resolution: "micromark-factory-destination@npm:2.0.0" @@ -21667,6 +21944,16 @@ __metadata: languageName: node linkType: hard +"micromark@npm:^2.11.3, micromark@npm:~2.11.0, micromark@npm:~2.11.3": + version: 2.11.4 + resolution: "micromark@npm:2.11.4" + dependencies: + debug: "npm:^4.0.0" + parse-entities: "npm:^2.0.0" + checksum: 10/cd3bcbc4c113c74d0897e7787103eb9c92c86974b0af1f87d2079b34f1543511a1e72face3f80c1d47c6614c2eaf860d94eee8c06f80dc48bc2441691576364b + languageName: node + linkType: hard + "micromark@npm:^4.0.0": version: 4.0.0 resolution: "micromark@npm:4.0.0" @@ -23765,6 +24052,20 @@ __metadata: languageName: node linkType: hard +"parse-entities@npm:^2.0.0": + version: 2.0.0 + resolution: "parse-entities@npm:2.0.0" + dependencies: + character-entities: "npm:^1.0.0" + character-entities-legacy: "npm:^1.0.0" + character-reference-invalid: "npm:^1.0.0" + is-alphanumerical: "npm:^1.0.0" + is-decimal: "npm:^1.0.0" + is-hexadecimal: "npm:^1.0.0" + checksum: 10/feb46b516722474797d72331421f3e62856750cfb4f70ba098b36447bf0b169e819cc4fdee53e022874d5f0c81b605d86e1912b9842a70e59a54de2fee81589d + languageName: node + linkType: hard + "parse-entities@npm:^4.0.0": version: 4.0.1 resolution: "parse-entities@npm:4.0.1" @@ -25591,6 +25892,16 @@ __metadata: languageName: node linkType: hard +"remark-gfm@npm:^1.0.0": + version: 1.0.0 + resolution: "remark-gfm@npm:1.0.0" + dependencies: + mdast-util-gfm: "npm:^0.1.0" + micromark-extension-gfm: "npm:^0.3.0" + checksum: 10/a37823a762c0862dd4c048bc425d584e56fa7862f6c38bf41334ee0b85e11a90bf7a075863fb09aa23993e2d3ec977b4a32994f2b869e26f44625c136b7b2996 + languageName: node + linkType: hard + "remark-lint-blockquote-indentation@npm:^4.0.0": version: 4.0.0 resolution: "remark-lint-blockquote-indentation@npm:4.0.0" @@ -26299,6 +26610,15 @@ __metadata: languageName: node linkType: hard +"remark-parse@npm:^9.0.0": + version: 9.0.0 + resolution: "remark-parse@npm:9.0.0" + dependencies: + mdast-util-from-markdown: "npm:^0.8.0" + checksum: 10/67c22c29f61d0af3812d4e076ebcbf9895bfeec3868299b514c25d46cb6d820ac132b71f51adab7ae756c910d6dd95a2040beeda6165b0a85ea153aa77fb3a83 + languageName: node + linkType: hard + "remark-preset-lint-consistent@npm:^6.0.0": version: 6.0.0 resolution: "remark-preset-lint-consistent@npm:6.0.0" @@ -26408,6 +26728,15 @@ __metadata: languageName: node linkType: hard +"remark-stringify@npm:^9.0.1": + version: 9.0.1 + resolution: "remark-stringify@npm:9.0.1" + dependencies: + mdast-util-to-markdown: "npm:^0.6.0" + checksum: 10/81b0b8170fa34f02ab60b7907f69e78f060e1c7d6a02fb8577c374ed99ba785f740c8fb3e385d4be789ed37fd3ced23bf59c8a876493662f24d9507dde42c425 + languageName: node + linkType: hard + "remark@npm:^15.0.0": version: 15.0.1 resolution: "remark@npm:15.0.1" @@ -26427,7 +26756,7 @@ __metadata: languageName: node linkType: hard -"repeat-string@npm:^1.5.0, repeat-string@npm:^1.6.1": +"repeat-string@npm:^1.0.0, repeat-string@npm:^1.5.0, repeat-string@npm:^1.6.1": version: 1.6.1 resolution: "repeat-string@npm:1.6.1" checksum: 10/1b809fc6db97decdc68f5b12c4d1a671c8e3f65ec4a40c238bc5200e44e85bcc52a54f78268ab9c29fcf5fe4f1343e805420056d1f30fa9a9ee4c2d93e3cc6c0 @@ -27655,6 +27984,17 @@ __metadata: languageName: node linkType: hard +"simple-git@npm:^3.27.0": + version: 3.27.0 + resolution: "simple-git@npm:3.27.0" + dependencies: + "@kwsites/file-exists": "npm:^1.1.1" + "@kwsites/promise-deferred": "npm:^1.1.1" + debug: "npm:^4.3.5" + checksum: 10/c56c88dd1b5f6ad45c6034eb44f25ee61929a2a5832bd015b8b1b71331071e43bf631edbcc4a8529fa692f9b17576595d95c89218bc5d67be66ed0c1aedc7a76 + languageName: node + linkType: hard + "simple-swizzle@npm:^0.2.2": version: 0.2.2 resolution: "simple-swizzle@npm:0.2.2" @@ -27671,6 +28011,21 @@ __metadata: languageName: node linkType: hard +"slackify-markdown@npm:^4.4.0": + version: 4.4.0 + resolution: "slackify-markdown@npm:4.4.0" + dependencies: + mdast-util-to-markdown: "npm:^0.6.2" + remark-gfm: "npm:^1.0.0" + remark-parse: "npm:^9.0.0" + remark-stringify: "npm:^9.0.1" + unified: "npm:^9.0.0" + unist-util-remove: "npm:^2.0.1" + unist-util-visit: "npm:^2.0.3" + checksum: 10/ac9b3836a84ab7c6a85ec7bccc95fa5022a44cec57a9c98a29ff2fbe9da5578674ded04f16fe361c9bc05e2acf8a7d45ad0ba448980416fc69a50377576b47a6 + languageName: node + linkType: hard + "slash@npm:3.0.0, slash@npm:^3.0.0": version: 3.0.0 resolution: "slash@npm:3.0.0" @@ -27924,12 +28279,14 @@ __metadata: babel-loader: "npm:9.2.1" core-js: "npm:3.39.0" css-loader: "npm:7.1.2" + dotenv-safe: "npm:^9.1.0" eslint: "npm:8.57.1" eslint-plugin-jsx-a11y: "npm:6.10.2" eslint-plugin-prettier: "npm:5.2.1" eslint-plugin-react: "npm:7.37.2" eslint-plugin-react-hooks: "npm:4.6.2" eslint-plugin-storybook: "npm:0.11.1" + gitdiff-parser: "npm:^0.3.1" husky: "npm:9.1.7" is-ci: "npm:3.0.1" lerna: "npm:8.1.8" @@ -27947,6 +28304,8 @@ __metadata: remark-frontmatter: "npm:5.0.0" remark-lint-heading-capitalization: "npm:1.2.0" sass-loader: "npm:14.2.1" + simple-git: "npm:^3.27.0" + slackify-markdown: "npm:^4.4.0" style-loader: "npm:4.0.0" typescript: "npm:4.7.4" vite-raw-plugin: "npm:1.0.2" @@ -29542,6 +29901,13 @@ __metadata: languageName: node linkType: hard +"trough@npm:^1.0.0": + version: 1.0.5 + resolution: "trough@npm:1.0.5" + checksum: 10/2209753fda70516f990c33f5d573361ccd896f81aaee0378ef6dae5c753b724d75a70b40a741e55edc188db51cfd9cd753ee1a3382687b17f04348860405d6b2 + languageName: node + linkType: hard + "trough@npm:^2.0.0": version: 2.2.0 resolution: "trough@npm:2.2.0" @@ -30170,6 +30536,20 @@ __metadata: languageName: node linkType: hard +"unified@npm:^9.0.0": + version: 9.2.2 + resolution: "unified@npm:9.2.2" + dependencies: + bail: "npm:^1.0.0" + extend: "npm:^3.0.0" + is-buffer: "npm:^2.0.0" + is-plain-obj: "npm:^2.0.0" + trough: "npm:^1.0.0" + vfile: "npm:^4.0.0" + checksum: 10/871bb5fb0c2de4b16353734563075729f6782dffa58ddc80ff6c84750b8a1cd27d597685bfaf4dafe697b6a6433437e56b46999e7b6c9aa800ce64cb0797eb09 + languageName: node + linkType: hard + "unique-filename@npm:^3.0.0": version: 3.0.0 resolution: "unique-filename@npm:3.0.0" @@ -30215,6 +30595,13 @@ __metadata: languageName: node linkType: hard +"unist-util-is@npm:^4.0.0": + version: 4.1.0 + resolution: "unist-util-is@npm:4.1.0" + checksum: 10/c046cc87c0a4f797b2afce76d917218e6a9af946a56cb5a88cb7f82be34f16c11050a10ddc4c66a3297dbb2782ca7d72a358cd77900b439ea9c683ba003ffe90 + languageName: node + linkType: hard + "unist-util-is@npm:^6.0.0": version: 6.0.0 resolution: "unist-util-is@npm:6.0.0" @@ -30233,6 +30620,24 @@ __metadata: languageName: node linkType: hard +"unist-util-remove@npm:^2.0.1": + version: 2.1.0 + resolution: "unist-util-remove@npm:2.1.0" + dependencies: + unist-util-is: "npm:^4.0.0" + checksum: 10/99e54f3ea0523f8cf957579a6e84e5b58427bffab929cc7f6aa5119581f929db683dd4691ea5483df0c272f486dda9dbd04f4ab74dca6cae1f3ebe8e4261a4d9 + languageName: node + linkType: hard + +"unist-util-stringify-position@npm:^2.0.0": + version: 2.0.3 + resolution: "unist-util-stringify-position@npm:2.0.3" + dependencies: + "@types/unist": "npm:^2.0.2" + checksum: 10/affbfd151f0df055ce0dddf443fc41353ab3870cdba6b3805865bd6a41ce22d9d8e65be0ed8839a8731d05b61421d2df9fd8c35b67adf86040bf4b1f8a04a42c + languageName: node + linkType: hard + "unist-util-stringify-position@npm:^3.0.0": version: 3.0.3 resolution: "unist-util-stringify-position@npm:3.0.3" @@ -30251,6 +30656,16 @@ __metadata: languageName: node linkType: hard +"unist-util-visit-parents@npm:^3.0.0": + version: 3.1.1 + resolution: "unist-util-visit-parents@npm:3.1.1" + dependencies: + "@types/unist": "npm:^2.0.0" + unist-util-is: "npm:^4.0.0" + checksum: 10/1b18343d88a0ad9cafaf8164ff8a1d3e3903328b3936b1565d61731f0b5778b9b9f400c455d3ad5284eeebcfdd7558ce24eb15c303a9cc0bd9218d01b2116923 + languageName: node + linkType: hard + "unist-util-visit-parents@npm:^6.0.0": version: 6.0.1 resolution: "unist-util-visit-parents@npm:6.0.1" @@ -30261,6 +30676,17 @@ __metadata: languageName: node linkType: hard +"unist-util-visit@npm:^2.0.3": + version: 2.0.3 + resolution: "unist-util-visit@npm:2.0.3" + dependencies: + "@types/unist": "npm:^2.0.0" + unist-util-is: "npm:^4.0.0" + unist-util-visit-parents: "npm:^3.0.0" + checksum: 10/1fe19d500e212128f96d8c3cfa3312846e586b797748a1fd195fe6479f06bc90a6f6904deb08eefc00dd58e83a1c8a32fb8677252d2273ad7a5e624525b69b8f + languageName: node + linkType: hard + "unist-util-visit@npm:^5.0.0": version: 5.0.0 resolution: "unist-util-visit@npm:5.0.0" @@ -30701,6 +31127,16 @@ __metadata: languageName: node linkType: hard +"vfile-message@npm:^2.0.0": + version: 2.0.4 + resolution: "vfile-message@npm:2.0.4" + dependencies: + "@types/unist": "npm:^2.0.0" + unist-util-stringify-position: "npm:^2.0.0" + checksum: 10/fad3d5a3a1b1415f30c6cd433df9971df28032c8cb93f15e7132693ac616e256afe76750d4e4810afece6fff20160f2a7f397c3eac46cf43ade21950a376fe3c + languageName: node + linkType: hard + "vfile-message@npm:^3.0.0": version: 3.1.4 resolution: "vfile-message@npm:3.1.4" @@ -30757,6 +31193,18 @@ __metadata: languageName: node linkType: hard +"vfile@npm:^4.0.0": + version: 4.2.1 + resolution: "vfile@npm:4.2.1" + dependencies: + "@types/unist": "npm:^2.0.0" + is-buffer: "npm:^2.0.0" + unist-util-stringify-position: "npm:^2.0.0" + vfile-message: "npm:^2.0.0" + checksum: 10/f0de0b50df77344a6d653e0c2967edf310c154f58627a8a423bc7a67f4041c884a6716af1b60013cae180218bac7eed8244bed74d3267c596d0ebd88801663a5 + languageName: node + linkType: hard + "vfile@npm:^5.0.0": version: 5.3.7 resolution: "vfile@npm:5.3.7" @@ -31760,6 +32208,13 @@ __metadata: languageName: node linkType: hard +"zwitch@npm:^1.0.0": + version: 1.0.5 + resolution: "zwitch@npm:1.0.5" + checksum: 10/28a1bebacab3bc60150b6b0a2ba1db2ad033f068e81f05e4892ec0ea13ae63f5d140a1d692062ac0657840c8da076f35b94433b5f1c329d7803b247de80f064a + languageName: node + linkType: hard + "zwitch@npm:^2.0.0": version: 2.0.4 resolution: "zwitch@npm:2.0.4"