From 2fd2c68bbe1ffe9896a42a8d691a4ada0d8fd509 Mon Sep 17 00:00:00 2001 From: Aaron de Mello Date: Fri, 9 Jan 2026 11:49:14 -0500 Subject: [PATCH 1/3] chore: update @nylas/web-elements to 2.3.2 --- .changeset/grumpy-ears-grow.md | 5 +++++ packages/react/package.json | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/grumpy-ears-grow.md diff --git a/.changeset/grumpy-ears-grow.md b/.changeset/grumpy-ears-grow.md new file mode 100644 index 0000000..f4ceff4 --- /dev/null +++ b/.changeset/grumpy-ears-grow.md @@ -0,0 +1,5 @@ +--- +"@nylas/react": patch +--- + +Update @nylas/web-elements dependency from 2.3.0 to 2.3.2 diff --git a/packages/react/package.json b/packages/react/package.json index 54cdbbe..d01b14a 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -78,7 +78,7 @@ "dependencies": { "@nylas/connect": "workspace:^", "@nylas/core": "^1.2.0", - "@nylas/web-elements": "2.3.0", + "@nylas/web-elements": "2.3.2", "@stencil/react-output-target": "^1.2.0", "axios": "^1.7.7", "dayjs": "1.11.7", From 3a1c4ba3cb3913ac1807e40fdf76c90674de90f8 Mon Sep 17 00:00:00 2001 From: Aaron de Mello Date: Fri, 9 Jan 2026 11:55:56 -0500 Subject: [PATCH 2/3] chore: update package.json and pnpm-lock.yaml to add zx dependency and Slack notification script --- .github/workflows/release.yml | 34 +++- package.json | 6 +- pnpm-lock.yaml | 260 ++++++++++++++++++++++++++-- scripts/send-slack-notification.mjs | 154 ++++++++++++++++ 4 files changed, 442 insertions(+), 12 deletions(-) create mode 100644 scripts/send-slack-notification.mjs diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 01af19e..2991e00 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -21,6 +21,9 @@ jobs: pull-requests: write # to create release PRs id-token: write # for NPM provenance timeout-minutes: 15 + outputs: + published: ${{ steps.changesets.outputs.published }} + publishedPackages: ${{ steps.changesets.outputs.publishedPackages }} steps: - name: Checkout code @@ -87,4 +90,33 @@ jobs: createGithubReleases: true env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} # Only needed for installing private dependencies + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} # do not remove this line (https://github.com/changesets/action/issues/98) + PM_CONFIG_PROVENANCE: true + + # Slack notification job (only when packages are published) + notify: + name: Notify Slack + runs-on: ubuntu-latest + needs: release + if: needs.release.outputs.published == 'true' + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + + - name: Setup pnpm + uses: pnpm/action-setup@v4 + with: + run_install: false + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Send Slack notification + run: pnpm slack:notify '${{ needs.release.outputs.publishedPackages }}' ${{ vars.SLACK_WEBHOOK_URL }} diff --git a/package.json b/package.json index 2b975b0..de5c7ee 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,8 @@ "publish": "nx run-many -t build && changeset publish", "publish:dry-run": "nx run-many -t build && changeset publish --dry-run", "publish:no-build": "changeset publish", - "postinstall": "husky install" + "postinstall": "husky install", + "slack:notify": "node ./scripts/send-slack-notification.mjs" }, "keywords": [ "nylas", @@ -68,5 +69,8 @@ "nx": "21.5.2", "oxlint": "^1.16.0", "prettier": "^3.4.2" + }, + "dependencies": { + "zx": "^7.2.3" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d5ded98..bfa0af3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,10 +7,14 @@ settings: importers: .: + dependencies: + zx: + specifier: ^7.2.3 + version: 7.2.4 devDependencies: '@changesets/cli': specifier: ^2.27.9 - version: 2.29.7(@types/node@22.18.8) + version: 2.29.7(@types/node@24.10.4) husky: specifier: ^8.0.3 version: 8.0.3 @@ -1182,6 +1186,9 @@ packages: '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/fs-extra@11.0.4': + resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} + '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} @@ -1200,14 +1207,23 @@ packages: '@types/jsdom@21.1.7': resolution: {integrity: sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==} + '@types/jsonfile@6.1.4': + resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==} + + '@types/minimist@1.2.5': + resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} + '@types/node@12.20.55': resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} '@types/node@20.19.13': resolution: {integrity: sha512-yCAeZl7a0DxgNVteXFHt9+uyFbqXGy/ShC4BlcHkoE0AfGXYv/BUiplV72DjMYXHDBXFjhvr6DD1NiRVfB4j8g==} - '@types/node@22.18.8': - resolution: {integrity: sha512-pAZSHMiagDR7cARo/cch1f3rXy0AEXwsVsVH09FcyeJVAzCnGgmYis7P3JidtTUjyadhTeSo8TgRPswstghDaw==} + '@types/node@24.10.4': + resolution: {integrity: sha512-vnDVpYPMzs4wunl27jHrfmwojOGKya0xyM3sH+UE5iv5uPS6vX7UIoh6m+vQc5LGBq52HBKPIn/zcSZVzeDEZg==} + + '@types/ps-tree@1.1.6': + resolution: {integrity: sha512-PtrlVaOaI44/3pl3cvnlK+GxOM3re2526TJvPvh7W+keHIXdV4TE0ylpPBAcvFQCbGitaTXwL9u+RF7qtVeazQ==} '@types/react-dom@19.2.0': resolution: {integrity: sha512-brtBs0MnE9SMx7px208g39lRmC5uHZs96caOJfTjFcYSLHNamvaSMfJNagChVNkup2SdtOxKX1FDBkRSJe1ZAg==} @@ -1229,6 +1245,9 @@ packages: '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + '@types/which@3.0.4': + resolution: {integrity: sha512-liyfuo/106JdlgSchJzXEQCVArk0CvevqPote8F8HgWgJ3dRCcTHgJIsLDuee0kxk/mhbInzIZk3QWSZJ8R+2w==} + '@types/yargs-parser@21.0.3': resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} @@ -1440,6 +1459,10 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + chalk@5.6.2: + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + chardet@2.1.0: resolution: {integrity: sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==} @@ -1524,6 +1547,10 @@ packages: resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} engines: {node: '>=12'} + data-uri-to-buffer@4.0.1: + resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} + engines: {node: '>= 12'} + data-urls@5.0.0: resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} engines: {node: '>=18'} @@ -1613,6 +1640,9 @@ packages: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} + duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} @@ -1699,6 +1729,9 @@ packages: estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + event-stream@3.3.4: + resolution: {integrity: sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==} + expect-type@1.2.2: resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==} engines: {node: '>=12.0.0'} @@ -1723,6 +1756,10 @@ packages: fastq@1.19.1: resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + fetch-blob@3.2.0: + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} + engines: {node: ^12.20 || >= 14.13} + figures@3.2.0: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} @@ -1756,12 +1793,23 @@ packages: resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} engines: {node: '>= 6'} + formdata-polyfill@4.0.10: + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} + engines: {node: '>=12.20.0'} + + from@0.1.7: + resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==} + front-matter@4.0.2: resolution: {integrity: sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==} fs-constants@1.0.0: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + fs-extra@11.3.3: + resolution: {integrity: sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==} + engines: {node: '>=14.14'} + fs-extra@7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} @@ -1778,6 +1826,10 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + fx@39.2.0: + resolution: {integrity: sha512-z4HgJGGBD8ZWI6sdHs2N5JT0gEyVvl8SLOdmedKOkom9LDeqMHAUt0y2GBdI2tNgTalWhdO7Wd9KdeRZF6UwQA==} + hasBin: true + gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -1806,6 +1858,10 @@ packages: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} + globby@13.2.2: + resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -2059,6 +2115,9 @@ packages: jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + jsonfile@6.2.0: + resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} + jwt-decode@3.1.2: resolution: {integrity: sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==} @@ -2197,6 +2256,9 @@ packages: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} + map-stream@0.1.0: + resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==} + markdown-it@14.1.0: resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} hasBin: true @@ -2277,6 +2339,15 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + node-domexception@1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + deprecated: Use your platform's native DOMException instead + + node-fetch@3.3.2: + resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + node-machine-id@1.1.12: resolution: {integrity: sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==} @@ -2391,6 +2462,9 @@ packages: resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} engines: {node: '>= 14.16'} + pause-stream@0.0.11: + resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -2438,6 +2512,11 @@ packages: proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + ps-tree@1.2.0: + resolution: {integrity: sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==} + engines: {node: '>= 0.10'} + hasBin: true + punycode.js@2.3.1: resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} engines: {node: '>=6'} @@ -2588,6 +2667,10 @@ packages: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} + slash@4.0.0: + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} + sortablejs@1.15.6: resolution: {integrity: sha512-aNfiuwMEpfBM/CN6LY0ibyhxPfPbyFeBTYJKCvzkJ2GkUpazIt3H+QIPAMHwqQ7tMKaHz1Qj+rJJCqljnf4p3A==} @@ -2602,6 +2685,9 @@ packages: spawndamnit@3.0.1: resolution: {integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==} + split@0.3.3: + resolution: {integrity: sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==} + sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} @@ -2615,6 +2701,9 @@ packages: std-env@3.9.0: resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} + stream-combiner@0.0.4: + resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==} + string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} @@ -2703,6 +2792,9 @@ packages: resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} engines: {node: '>=18'} + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} @@ -2787,10 +2879,17 @@ packages: undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + undici-types@7.16.0: + resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} + universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + update-browserslist-db@1.1.3: resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} hasBin: true @@ -2898,10 +2997,18 @@ packages: wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + web-streams-polyfill@3.3.3: + resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} + engines: {node: '>= 8'} + webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} + webpod@0.0.2: + resolution: {integrity: sha512-cSwwQIeg8v4i3p4ajHhwgR7N6VyxAf+KYSSsY6Pd3aETE+xEU4vbitz7qQkB0I321xnhDdgtxuiSfk5r/FVtjg==} + hasBin: true + whatwg-encoding@3.1.1: resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} engines: {node: '>=18'} @@ -2923,6 +3030,11 @@ packages: engines: {node: '>= 8'} hasBin: true + which@3.0.1: + resolution: {integrity: sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + why-is-node-running@2.3.0: resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} engines: {node: '>=8'} @@ -3008,6 +3120,11 @@ packages: use-sync-external-store: optional: true + zx@7.2.4: + resolution: {integrity: sha512-gDBp2doPvjzQiR5+d1AEuqTC/4TJq84WFHk3XiAZtO1XRUB0XRG0OYie8CdLPT8kJp085TpQ8NzPge7A+3aFgg==} + engines: {node: '>= 16.0.0'} + hasBin: true + snapshots: '@adobe/css-tools@4.4.4': {} @@ -3170,7 +3287,7 @@ snapshots: dependencies: '@changesets/types': 6.1.0 - '@changesets/cli@2.29.7(@types/node@22.18.8)': + '@changesets/cli@2.29.7(@types/node@24.10.4)': dependencies: '@changesets/apply-release-plan': 7.0.13 '@changesets/assemble-release-plan': 6.0.9 @@ -3186,7 +3303,7 @@ snapshots: '@changesets/should-skip-package': 0.1.2 '@changesets/types': 6.1.0 '@changesets/write': 0.4.0 - '@inquirer/external-editor': 1.0.2(@types/node@22.18.8) + '@inquirer/external-editor': 1.0.2(@types/node@24.10.4) '@manypkg/get-packages': 1.1.3 ansi-colors: 4.1.3 ci-info: 3.9.0 @@ -3419,12 +3536,12 @@ snapshots: '@shikijs/types': 3.13.0 '@shikijs/vscode-textmate': 10.0.2 - '@inquirer/external-editor@1.0.2(@types/node@22.18.8)': + '@inquirer/external-editor@1.0.2(@types/node@24.10.4)': dependencies: chardet: 2.1.0 iconv-lite: 0.7.0 optionalDependencies: - '@types/node': 22.18.8 + '@types/node': 24.10.4 '@isaacs/cliui@8.0.2': dependencies: @@ -4069,6 +4186,11 @@ snapshots: '@types/estree@1.0.8': {} + '@types/fs-extra@11.0.4': + dependencies: + '@types/jsonfile': 6.1.4 + '@types/node': 20.19.13 + '@types/hast@3.0.4': dependencies: '@types/unist': 3.0.3 @@ -4094,16 +4216,23 @@ snapshots: '@types/tough-cookie': 4.0.5 parse5: 7.3.0 + '@types/jsonfile@6.1.4': + dependencies: + '@types/node': 20.19.13 + + '@types/minimist@1.2.5': {} + '@types/node@12.20.55': {} '@types/node@20.19.13': dependencies: undici-types: 6.21.0 - '@types/node@22.18.8': + '@types/node@24.10.4': dependencies: - undici-types: 6.21.0 - optional: true + undici-types: 7.16.0 + + '@types/ps-tree@1.1.6': {} '@types/react-dom@19.2.0(@types/react@19.2.0)': dependencies: @@ -4123,6 +4252,8 @@ snapshots: '@types/unist@3.0.3': {} + '@types/which@3.0.4': {} + '@types/yargs-parser@21.0.3': {} '@types/yargs@17.0.33': @@ -4383,6 +4514,8 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 + chalk@5.6.2: {} + chardet@2.1.0: {} check-error@2.1.1: {} @@ -4451,6 +4584,8 @@ snapshots: dependencies: d3-array: 3.2.4 + data-uri-to-buffer@4.0.1: {} + data-urls@5.0.0: dependencies: whatwg-mimetype: 4.0.0 @@ -4522,6 +4657,8 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 + duplexer@0.1.2: {} + eastasianwidth@0.2.0: {} electron-to-chromium@1.5.228: {} @@ -4611,6 +4748,16 @@ snapshots: dependencies: '@types/estree': 1.0.8 + event-stream@3.3.4: + dependencies: + duplexer: 0.1.2 + from: 0.1.7 + map-stream: 0.1.0 + pause-stream: 0.0.11 + split: 0.3.3 + stream-combiner: 0.0.4 + through: 2.3.8 + expect-type@1.2.2: {} expect@30.2.0: @@ -4640,6 +4787,11 @@ snapshots: dependencies: reusify: 1.1.0 + fetch-blob@3.2.0: + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 3.3.3 + figures@3.2.0: dependencies: escape-string-regexp: 1.0.5 @@ -4670,12 +4822,24 @@ snapshots: hasown: 2.0.2 mime-types: 2.1.35 + formdata-polyfill@4.0.10: + dependencies: + fetch-blob: 3.2.0 + + from@0.1.7: {} + front-matter@4.0.2: dependencies: js-yaml: 3.14.1 fs-constants@1.0.0: {} + fs-extra@11.3.3: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.2.0 + universalify: 2.0.1 + fs-extra@7.0.1: dependencies: graceful-fs: 4.2.11 @@ -4693,6 +4857,8 @@ snapshots: function-bind@1.1.2: {} + fx@39.2.0: {} + gensync@1.0.0-beta.2: {} get-caller-file@2.0.5: {} @@ -4737,6 +4903,14 @@ snapshots: merge2: 1.4.1 slash: 3.0.0 + globby@13.2.2: + dependencies: + dir-glob: 3.0.1 + fast-glob: 3.3.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 4.0.0 + gopd@1.2.0: {} graceful-fs@4.2.11: {} @@ -5004,6 +5178,12 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 + jsonfile@6.2.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + jwt-decode@3.1.2: {} kolorist@1.8.0: {} @@ -5114,6 +5294,8 @@ snapshots: dependencies: semver: 7.7.2 + map-stream@0.1.0: {} + markdown-it@14.1.0: dependencies: argparse: 2.0.1 @@ -5176,6 +5358,14 @@ snapshots: nanoid@3.3.11: {} + node-domexception@1.0.0: {} + + node-fetch@3.3.2: + dependencies: + data-uri-to-buffer: 4.0.1 + fetch-blob: 3.2.0 + formdata-polyfill: 4.0.10 + node-machine-id@1.1.12: {} node-releases@2.0.21: {} @@ -5323,6 +5513,10 @@ snapshots: pathval@2.0.1: {} + pause-stream@0.0.11: + dependencies: + through: 2.3.8 + picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -5363,6 +5557,10 @@ snapshots: proxy-from-env@1.1.0: {} + ps-tree@1.2.0: + dependencies: + event-stream: 3.3.4 + punycode.js@2.3.1: {} punycode@2.3.1: {} @@ -5514,6 +5712,8 @@ snapshots: slash@3.0.0: {} + slash@4.0.0: {} + sortablejs@1.15.6: {} source-map-js@1.2.1: {} @@ -5525,6 +5725,10 @@ snapshots: cross-spawn: 7.0.6 signal-exit: 4.1.0 + split@0.3.3: + dependencies: + through: 2.3.8 + sprintf-js@1.0.3: {} stack-utils@2.0.6: @@ -5535,6 +5739,10 @@ snapshots: std-env@3.9.0: {} + stream-combiner@0.0.4: + dependencies: + duplexer: 0.1.2 + string-argv@0.3.2: {} string-width@4.2.3: @@ -5624,6 +5832,8 @@ snapshots: glob: 10.4.5 minimatch: 9.0.5 + through@2.3.8: {} + tinybench@2.9.0: {} tinyexec@0.3.2: {} @@ -5690,8 +5900,12 @@ snapshots: undici-types@6.21.0: {} + undici-types@7.16.0: {} + universalify@0.1.2: {} + universalify@2.0.1: {} + update-browserslist-db@1.1.3(browserslist@4.26.3): dependencies: browserslist: 4.26.3 @@ -5810,8 +6024,12 @@ snapshots: dependencies: defaults: 1.0.4 + web-streams-polyfill@3.3.3: {} + webidl-conversions@7.0.0: {} + webpod@0.0.2: {} + whatwg-encoding@3.1.1: dependencies: iconv-lite: 0.6.3 @@ -5830,6 +6048,10 @@ snapshots: dependencies: isexe: 2.0.0 + which@3.0.1: + dependencies: + isexe: 2.0.0 + why-is-node-running@2.3.0: dependencies: siginfo: 2.0.0 @@ -5889,3 +6111,21 @@ snapshots: optionalDependencies: '@types/react': 19.2.0 react: 19.2.0 + + zx@7.2.4: + dependencies: + '@types/fs-extra': 11.0.4 + '@types/minimist': 1.2.5 + '@types/node': 24.10.4 + '@types/ps-tree': 1.1.6 + '@types/which': 3.0.4 + chalk: 5.6.2 + fs-extra: 11.3.3 + fx: 39.2.0 + globby: 13.2.2 + minimist: 1.2.8 + node-fetch: 3.3.2 + ps-tree: 1.2.0 + webpod: 0.0.2 + which: 3.0.1 + yaml: 2.8.1 diff --git a/scripts/send-slack-notification.mjs b/scripts/send-slack-notification.mjs new file mode 100644 index 0000000..b5b2827 --- /dev/null +++ b/scripts/send-slack-notification.mjs @@ -0,0 +1,154 @@ +import path from 'node:path'; +import { $ } from 'zx'; + +function markdownToSlackBlocks(markdown) { + return markdown + .split('\n') + .map(line => { + if (line.startsWith('## ')) { + return { type: 'header', text: { type: 'plain_text', text: line.replace('## ', '') } }; + } + + if (line.startsWith('### ')) { + return { type: 'context', elements: [{ type: 'plain_text', text: line.replace('### ', ''), emoji: true }] }; + } + + // Change links to slack links e.g. + line = line.replace(/\[(.*?)\]\((.*?)\)/g, '<$2|$1>'); + + // Remove empty lines + if (line === '') { + return; + } + + return { type: 'section', text: { type: 'mrkdwn', text: line } }; + }) + .filter(Boolean); +} + +// Get our arguments +const [publishedPackages, slackWebhookUrl] = process.argv.slice(2); + +// If no packages are provided, throw an error +if (!publishedPackages) { + console.error('No packages that were published provided'); + process.exit(1); +} + +if (!slackWebhookUrl) { + console.error('No Slack webhook URL provided'); + process.exit(1); +} + +// Get a list of packages via pnpm nx projects +const _packageNames = await $`pnpm nx show projects --json`.quiet(); +const packageNames = JSON.parse(_packageNames.stdout.split('\n').slice(4).join('\n')); + +// Get the package root for each package via pnpm nx show project [packageName] +const pkgs = {}; +for (const packageName of packageNames) { + // Remove the first 3 lines of the output + const _nxPackageInfo = await $`pnpm nx show project ${packageName} --json`.quiet(); + const nxPackageInfo = JSON.parse(_nxPackageInfo.stdout.split('\n').slice(4).join('\n')); + + // Only include the packages that were published + if (!publishedPackages.includes(packageName)) { + continue; + } + + // pkgs[packageName] = nxPackageInfo; + const packageSourceRoot = nxPackageInfo.sourceRoot; + // Get the package.json for the package + const pkgPath = path.resolve(path.join(packageSourceRoot, '..', 'package.json')); + const _pkg = await $`cat ${pkgPath}`.quiet(); + const pkg = JSON.parse(_pkg.stdout); + + // Add the package to the packages object + pkgs[packageName] = { ...pkg, root: path.dirname(pkgPath) }; +} + +// Filter the package list to the packages that have publishConfig.access set to public +const publicPackages = Object.entries(pkgs).filter(([_, pkg]) => pkg.publishConfig?.access === 'public'); + +// Get the package names for the public packages +const publicPackageNames = publicPackages.map(([name, _]) => name); + +// Get the CHANGELOG.md for each package +const changelogs = {}; +for (const packageName of publicPackageNames) { + const packageRoot = pkgs[packageName].root; + const changelogPath = path.resolve(path.join(packageRoot, 'CHANGELOG.md')); + const _changelog = await $`cat ${changelogPath}`.quiet(); + + // Modify the changelog to only include the latest version + const changelog = _changelog.stdout.split('\n'); + const latestVersionIndex = changelog.findIndex(line => line.startsWith('## ')); + const latestVersion = changelog[latestVersionIndex].replace('## ', ''); + + // Now get the next version index + const nextVersionIndex = changelog.findIndex((line, index) => { + return index > latestVersionIndex && line.startsWith('## '); + }); + + // If the next version index is -1, then we are at the end of the file + let latestVersionChangelog = changelog.slice(latestVersionIndex + 1, nextVersionIndex === -1 ? undefined : nextVersionIndex).join('\n'); + + // Remove the section for updated dependencies, e.g: + // - Updated dependencies + // - @nrwl/workspace: 13.0.0 => 13.0.1 + // - @nrwl/tao: 13.0.0 => 13.0.1 + latestVersionChangelog = latestVersionChangelog.replace(/- Updated dependencies.*(?:\n\s+-.*)*/g, ''); + + changelogs[packageName] = { + version: latestVersion, + changelog: latestVersionChangelog, + }; +} + +// Construct a slack block for each package +const allSlackBlocks = [ + { type: 'header', text: { type: 'plain_text', emoji: true, text: ':tada: New packages published :tada:' } }, + { type: 'divider' }, + ...publicPackageNames.flatMap(packageName => { + const { version, changelog } = changelogs[packageName]; + + return [ + { + type: 'section', + text: { + type: 'mrkdwn', + text: `:package: **`, + }, + }, + { type: 'divider' }, + ...markdownToSlackBlocks(changelog), + { type: 'divider' }, + ]; + }), +]; + +// Chunk the blocks into groups of 50 or fewer +const MAX_BLOCKS_PER_MESSAGE = 50; +const chunkedBlocks = []; + +for (let i = 0; i < allSlackBlocks.length; i += MAX_BLOCKS_PER_MESSAGE) { + chunkedBlocks.push(allSlackBlocks.slice(i, i + MAX_BLOCKS_PER_MESSAGE)); +} + +// Send the slack notification(s) +for (const blocks of chunkedBlocks) { + await fetch(slackWebhookUrl, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + blocks: blocks, + }), + }).then(async res => { + if (!res.ok) { + console.error('Failed to send slack notification:', await res.text()); + process.exit(1); + } + }); +} From 74c02e33e58b1caef8a700b90a1f11c49708f12d Mon Sep 17 00:00:00 2001 From: Aaron de Mello Date: Fri, 9 Jan 2026 12:03:20 -0500 Subject: [PATCH 3/3] fix lock file --- pnpm-lock.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bfa0af3..96afc2f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -61,8 +61,8 @@ importers: specifier: ^1.2.0 version: 1.2.0(@stencil/core@4.36.3) '@nylas/web-elements': - specifier: 2.3.0 - version: 2.3.0(rollup@4.50.1) + specifier: 2.3.2 + version: 2.3.2(rollup@4.50.1) '@stencil/react-output-target': specifier: ^1.2.0 version: 1.2.0(@stencil/core@4.36.3)(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) @@ -676,8 +676,8 @@ packages: '@nylas/identity@3.1.0': resolution: {integrity: sha512-EBW17UBAvsj1cT+BEbawdce9Uy04IsElr8hJJRB3lf8Aod/icdn0mxWdWCyCNrjW6fhRwz0Cv3Sh88DbTbC7yA==} - '@nylas/web-elements@2.3.0': - resolution: {integrity: sha512-4Ye4tQQeU5+al4bCL1MoCsyiU4HzLMHsIlJgbwaGiq4Sm/QoorN2BhvpQ4hv8V2nStiPQHP5bbKN36vabx5MgQ==} + '@nylas/web-elements@2.3.2': + resolution: {integrity: sha512-JH64tka6/xSBaKRgqcTJQuyauQd1eKmh3+sZ3bgN4lS9VBZccBqSIjTA7LImB88XvnuImxNRHCVicp2muXiaew==} '@oxlint/darwin-arm64@1.16.0': resolution: {integrity: sha512-t9sBjbcG15Jgwgw2wY+rtfKEazdkKM/YhcdyjmGYeSjBXaczLfp/gZe03taC2qUHK+t6cxSYNkOLXRLWxaf3tw==} @@ -3731,7 +3731,7 @@ snapshots: react: 18.2.0 uuid: 8.3.2 - '@nylas/web-elements@2.3.0(rollup@4.50.1)': + '@nylas/web-elements@2.3.2(rollup@4.50.1)': dependencies: '@fullcalendar/core': 6.1.8 '@fullcalendar/daygrid': 6.1.8(@fullcalendar/core@6.1.8)