From 32d66dada5a5a55734e5482b01568fecfadad63d Mon Sep 17 00:00:00 2001 From: Benjamin Lupton Date: Wed, 27 Dec 2023 10:28:39 +0800 Subject: [PATCH] v1.89.0 - fixes and improvements --- HISTORY.md | 12 + LICENSE.md | 8 +- README.md | 89 ++-- package-lock.json | 957 +++++++++++--------------------------------- package.json | 72 ++-- source/answers.js | 11 +- source/base.js | 4 +- source/ci.js | 6 +- source/data.js | 6 + source/editions.js | 32 +- source/package.js | 46 ++- source/questions.js | 33 +- source/runtime.js | 99 ++--- source/util.js | 33 +- 14 files changed, 482 insertions(+), 926 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 083e135..3d1d5ee 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,5 +1,17 @@ # History +## v1.89.0 2023 December 27 + +- Updated for `projectz` v4.0.0 +- Fixed hidden configuration property `githubActionTestEnv` not being accepted (regression since v1.88.1) +- Updated `bevry-actions/npm` +- Improved custom bin handling, by leaving it up to `package.json` configuration rather than complex CSV answer handling as before +- For bevry projects, transfer the defunct `Bevry Pty Ltd` copyrights to @balupton +- No need for copyright years if there is only one author +- For bevry projects, add @skunkteam as a historical donor +- Remove deprecated `@bevry/github-*` dependencies (not all are deprecated, only some) +- Thank you to the sponsors: [Andrew Nesbitt](https://nesbitt.io), [Balsa](https://balsa.com), [Codecov](https://codecov.io/), [Poonacha Medappa](https://poonachamedappa.com), [Rob Morris](https://github.com/Rob-Morris), [Sentry](https://sentry.io), [Syntax](https://syntax.fm) + ## v1.88.4 2023 December 6 - fix descriptions of editions not including the full engines diff --git a/LICENSE.md b/LICENSE.md index cc08f19..876f0ff 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,16 +1,16 @@ -

License

+# License Unless stated otherwise all works are: - +- Copyright © [Benjamin Lupton](https://balupton.com) and licensed under: - +- [Artistic License 2.0](http://spdx.org/licenses/Artistic-2.0.html) -

The Artistic License 2.0

+## The Artistic License 2.0
 Copyright (c) 2000-2006, The Perl Foundation.
diff --git a/README.md b/README.md
index a31276e..4aa362f 100644
--- a/README.md
+++ b/README.md
@@ -1,10 +1,9 @@
 
 
-

boundation

+# boundation - Status of the GitHub Workflow: bevry @@ -25,7 +24,6 @@ - Automatic scaffolding and upgrading of your JavaScript ecosystem projects using Bevry's best practices @@ -79,63 +77,59 @@ It will ask you several questions about your project, then initialise or upgrade -

Install

+## Install -

npm

-

Install Globally

- -

Install Locally

- +### [npm](https://npmjs.com "npm is a package manager for javascript") -

Editions

+#### Install Globally -

This package is published with the following editions:

+- Install: `npm install --global boundation` +- Executable: `boundation` - +#### Install Locally - +- Install: `npm install --save boundation` +- Executable: `npx boundation` +- Import: `import pkg from ('boundation')` +- Require: `const pkg = require('boundation').default` +### [Editions](https://editions.bevry.me "Editions are the best way to produce and consume packages you care about.") - +This package is published with the following editions: +- `boundation` aliases `boundation/source/index.js` +- `boundation/source/index.js` is [ESNext](https://en.wikipedia.org/wiki/ECMAScript#ES.Next "ECMAScript Next") source code for [Node.js](https://nodejs.org "Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine") 18 || 20 || 21 with [Import](https://babeljs.io/docs/learn-es2015/#modules "ECMAScript Modules") for modules -

History

+ -Discover the release history by heading on over to the HISTORY.md file. + - +## History +[Discover the release history by heading on over to the `HISTORY.md` file.](https://github.com/bevry/boundation/blob/HEAD/HISTORY.md#files) - + -

Contribute

+ -Discover how you can contribute by heading on over to the CONTRIBUTING.md file. +## Backers - +### Code +[Discover how to contribute via the `CONTRIBUTING.md` file.](https://github.com/bevry/boundation/blob/HEAD/CONTRIBUTING.md#files) - +#### Authors -

Backers

+- [Benjamin Lupton](https://balupton.com) -

Maintainers

+#### Maintainers -These amazing people are maintaining this project: +- [Benjamin Lupton](https://github.com/balupton) - +#### Contributors -

Sponsors

+- [Benjamin Lupton](https://github.com/balupton) — [view contributions](https://github.com/bevry/boundation/commits?author=balupton "View the GitHub contributions of Benjamin Lupton on repository bevry/boundation") -No sponsors yet! Will you be the first? +### Finances GitHub Sponsors donate button ThanksDev donate button @@ -146,27 +140,28 @@ No sponsors yet! Will you be the first? crypto donate button PayPal donate button -

Contributors

+#### Donors -These amazing people have contributed code to this project: - - - -Discover how you can contribute by heading on over to the CONTRIBUTING.md file. +- [Chad](https://opencollective.com/chad8) +- [entroniq](https://gitlab.com/entroniq) +- [Jean-Luc Geering](https://github.com/jlgeering) +- [mikeumus](https://bevry.me) +- [serviejs](https://github.com/serviejs) +- [Skunk Team](https://skunk.team) +- [smashah](https://github.com/smashah) - -

License

+## License Unless stated otherwise all works are: - +- Copyright © [Benjamin Lupton](https://balupton.com) and licensed under: - +- [Artistic License 2.0](http://spdx.org/licenses/Artistic-2.0.html) diff --git a/package-lock.json b/package-lock.json index 3ec2773..dcb8db6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "boundation", - "version": "1.88.4", + "version": "1.89.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "boundation", - "version": "1.88.4", + "version": "1.89.0", "license": "Artistic-2.0", "dependencies": { "@bevry/ansi": "^6.7.0", @@ -22,9 +22,10 @@ "@bevry/nodejs-ecmascript-compatibility": "^5.6.0", "@bevry/nodejs-versions": "^3.3.0", "@bevry/testen": "^9.2.0", - "arrange-package-json": "^4.6.0", + "arrange-package-json": "^5.0.2", "arrangekeys": "^6.5.0", "errlop": "^8.2.0", + "fellow": "^7.0.4", "filedirname": "^3.2.0", "get-cli-arg": "^8.4.0", "inquirer": "^9.2.12", @@ -39,15 +40,14 @@ "boundation": "bin.mjs" }, "devDependencies": { - "@bevry/update-contributors": "^1.23.0", - "assert-helpers": "^11.9.0", - "eslint": "^8.55.0", + "assert-helpers": "^11.10.0", + "eslint": "^8.56.0", "eslint-config-bevry": "^5.3.0", "eslint-config-prettier": "^9.1.0", - "eslint-plugin-prettier": "^5.0.1", + "eslint-plugin-prettier": "^5.1.2", "kava": "^7.5.0", - "prettier": "^3.1.0", - "projectz": "^3.4.0", + "prettier": "^3.1.1", + "projectz": "^4.0.0", "valid-directory": "^4.7.0" }, "engines": { @@ -80,6 +80,21 @@ "url": "https://bevry.me/fund" } }, + "node_modules/@bevry/argument": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@bevry/argument/-/argument-1.0.0.tgz", + "integrity": "sha512-Wd5tlSDqv49ANautIW+yIx35d4qRVkFQIB9t089q83vnxVoNy7MTQLZ8VctuzvefA7wOjGsJ1q7V9+6ktukYdw==", + "dev": true, + "dependencies": { + "errlop": "^8.2.0" + }, + "engines": { + "node": ">=4" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, "node_modules/@bevry/ecmascript-versions": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/@bevry/ecmascript-versions/-/ecmascript-versions-4.6.0.tgz", @@ -135,30 +150,15 @@ } }, "node_modules/@bevry/fs-list": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@bevry/fs-list/-/fs-list-2.3.0.tgz", - "integrity": "sha512-n2Y9m6Zip/1Q4pz8TSUhLqdQPyA0luOMbX1SQrnguM9KEdikymyl2iOoHboBTNTbO5hH+KfxhP2KFz2TtNOByg==", - "dev": true, - "dependencies": { - "@bevry/fs-accessible": "^2.2.0", - "editions": "^6.16.0", - "errlop": "^7.4.0", - "version-compare": "^3.4.0" - }, - "engines": { - "node": ">=4" - }, - "funding": { - "url": "https://bevry.me/fund" - } - }, - "node_modules/@bevry/fs-list/node_modules/errlop": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/errlop/-/errlop-7.5.0.tgz", - "integrity": "sha512-a+Gfi8cGPEydVJ61AAflAldvShSW1zoELe39O6fOOi2QBCC9/+kIaNphyg6BIEXZ6fTSvEJBwDG6OeBYiXjZwg==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@bevry/fs-list/-/fs-list-2.4.0.tgz", + "integrity": "sha512-GPIqbxvMXWr+8183qdO+c3xW08n2qZO7/tmfzrwyedD3pPrsGwhj6eFBUaxWhrmBKJDAkdcN8gUDx7TsUp996A==", "dev": true, "dependencies": { - "editions": "^6.16.0" + "@bevry/fs-accessible": "^2.3.0", + "editions": "^6.19.0", + "errlop": "^8.2.0", + "version-compare": "^3.8.0" }, "engines": { "node": ">=4" @@ -265,41 +265,6 @@ "url": "https://bevry.me/fund" } }, - "node_modules/@bevry/github-api": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/@bevry/github-api/-/github-api-10.2.0.tgz", - "integrity": "sha512-jmTi25/DumuTbKBSZTrGTnZD2HFOfx6CaJYLxF7jZmlyKmifXPbXAt/Aia9CCAbDBmc1tI4KyN4YYiNEMuGaeg==", - "dev": true, - "dependencies": { - "@bevry/wait": "^2.1.0", - "simplytyped": "^3.3.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://bevry.me/fund" - } - }, - "node_modules/@bevry/github-contributors": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@bevry/github-contributors/-/github-contributors-4.2.0.tgz", - "integrity": "sha512-dsp9nnmsBdCD3k68pYmVPdskqDF9ZcriydbytIqnoR74Aji5vX0X5/CiLvB0Y6wOz+/tlztMDK2Q5fXMStNfzQ==", - "dev": true, - "dependencies": { - "@bevry/github-api": "^10.2.0", - "@bevry/github-repos": "^7.0.0", - "fellow": "^6.25.0", - "native-promise-pool": "^3.23.0", - "simplytyped": "^3.3.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://bevry.me/fund" - } - }, "node_modules/@bevry/github-orgs": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/@bevry/github-orgs/-/github-orgs-3.4.0.tgz", @@ -314,40 +279,10 @@ "url": "https://bevry.me/fund" } }, - "node_modules/@bevry/github-repos": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@bevry/github-repos/-/github-repos-7.0.0.tgz", - "integrity": "sha512-Io8uu1TJmfojkMeHEuURjPRbqHeIkHCzU5kxvaOYU9T09KTPCG7eF04E9rQlaFG7mI/Vov9cG3n1XUh43x2GpQ==", - "dev": true, - "dependencies": { - "@bevry/github-api": "^10.0.0", - "@bevry/list": "^1.7.0", - "native-promise-pool": "^3.19.0", - "simplytyped": "^3.3.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://bevry.me/fund" - } - }, - "node_modules/@bevry/github-repos/node_modules/@bevry/list": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@bevry/list/-/list-1.8.0.tgz", - "integrity": "sha512-qkLuLrM+AO2XDX87pySdRX31qXeB0jDBEL0PfY+LJSV56QhfDS1PGrqkCz4Ux+/eq/PfiQ/2hQhNgOHGb2HvSw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://bevry.me/fund" - } - }, "node_modules/@bevry/json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@bevry/json/-/json-2.2.0.tgz", - "integrity": "sha512-lmP/7FP9cHY2PQhrbFTxkdzOlMpIjdfe9ognyEWO4WyJlGhCoz6jTEN7b5YINeyHgQ02iUZ78TuKrJHFu/OD3g==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@bevry/json/-/json-2.2.1.tgz", + "integrity": "sha512-+MnksVThHWWGb8YOatxIs1vrtzcdAXhdk10FXcyaaxOE98eFs8uFA5RRSJVLm4bh1qaQF01XvfLxML5FTeyF3g==", "dependencies": { "@bevry/fs-read": "^1.4.0", "@bevry/fs-unlink": "^1.4.0", @@ -455,6 +390,17 @@ "url": "https://bevry.me/fund" } }, + "node_modules/@bevry/render": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@bevry/render/-/render-1.0.0.tgz", + "integrity": "sha512-HZSQcd0DkzrHqYcl1NjDksqBvxz5xu6dlBLdWmg7sBmjRgVHs7v8jE0hYEPpLaaLBQJXxMzsMFQVLld/ZlcTUg==", + "engines": { + "node": ">=4" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, "node_modules/@bevry/testen": { "version": "9.2.0", "resolved": "https://registry.npmjs.org/@bevry/testen/-/testen-9.2.0.tgz", @@ -487,58 +433,6 @@ "url": "https://bevry.me/fund" } }, - "node_modules/@bevry/update-contributors": { - "version": "1.23.0", - "resolved": "https://registry.npmjs.org/@bevry/update-contributors/-/update-contributors-1.23.0.tgz", - "integrity": "sha512-H3bWFAhZMa22IHMzlyE+JAou7n1ONsrs72Yv6Tt9V5+E/CYAltfQWz/8YJtu2/yEay3LqaW1FSAtvzQiXRu2yg==", - "dev": true, - "dependencies": { - "@bevry/github-contributors": "^4.1.0", - "@bevry/json": "^1.5.0" - }, - "bin": { - "update-contributors": "bin.cjs" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://bevry.me/fund" - } - }, - "node_modules/@bevry/update-contributors/node_modules/@bevry/json": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@bevry/json/-/json-1.10.0.tgz", - "integrity": "sha512-OdAglhqfMDeetuUqZHJe40+sKfWDSbamKimwTyv7eJu6ODWvVJNzi20V7RkgYmzeifODX0rNwCBmPn9b+j54MA==", - "dev": true, - "dependencies": { - "@bevry/fs-read": "^1.1.0", - "@bevry/fs-unlink": "^1.1.0", - "@bevry/fs-write": "^1.1.0", - "errlop": "^7.3.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://bevry.me/fund" - } - }, - "node_modules/@bevry/update-contributors/node_modules/errlop": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/errlop/-/errlop-7.5.0.tgz", - "integrity": "sha512-a+Gfi8cGPEydVJ61AAflAldvShSW1zoELe39O6fOOi2QBCC9/+kIaNphyg6BIEXZ6fTSvEJBwDG6OeBYiXjZwg==", - "dev": true, - "dependencies": { - "editions": "^6.16.0" - }, - "engines": { - "node": ">=4" - }, - "funding": { - "url": "https://bevry.me/fund" - } - }, "node_modules/@bevry/valid-filename": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/@bevry/valid-filename/-/valid-filename-2.4.0.tgz", @@ -613,9 +507,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.55.0.tgz", - "integrity": "sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -700,19 +594,82 @@ "node": ">= 8" } }, - "node_modules/@pkgr/utils": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz", - "integrity": "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==", + "node_modules/@octokit/endpoint": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.4.tgz", + "integrity": "sha512-DWPLtr1Kz3tv8L0UvXTDP1fNwM0S+z6EJpRcvH66orY6Eld4XBMCSYsaWp4xIm61jTWxK68BrR7ibO+vSDnZqw==", "dev": true, "dependencies": { - "cross-spawn": "^7.0.3", - "fast-glob": "^3.3.0", - "is-glob": "^4.0.3", - "open": "^9.1.0", - "picocolors": "^1.0.0", - "tslib": "^2.6.0" + "@octokit/types": "^12.0.0", + "universal-user-agent": "^6.0.0" }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/graphql": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.0.2.tgz", + "integrity": "sha512-OJ2iGMtj5Tg3s6RaXH22cJcxXRi7Y3EBqbHTBRq+PQAqfaS8f/236fUrWhfSn8P4jovyzqucxme7/vWSSZBX2Q==", + "dev": true, + "dependencies": { + "@octokit/request": "^8.0.1", + "@octokit/types": "^12.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/openapi-types": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-19.1.0.tgz", + "integrity": "sha512-6G+ywGClliGQwRsjvqVYpklIfa7oRPA0vyhPQG/1Feh+B+wU0vGH1JiJ5T25d3g1JZYBHzR2qefLi9x8Gt+cpw==", + "dev": true + }, + "node_modules/@octokit/request": { + "version": "8.1.6", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.1.6.tgz", + "integrity": "sha512-YhPaGml3ncZC1NfXpP3WZ7iliL1ap6tLkAp6MvbK2fTTPytzVUyUesBBogcdMm86uRYO5rHaM1xIWxigWZ17MQ==", + "dev": true, + "dependencies": { + "@octokit/endpoint": "^9.0.0", + "@octokit/request-error": "^5.0.0", + "@octokit/types": "^12.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/request-error": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.0.1.tgz", + "integrity": "sha512-X7pnyTMV7MgtGmiXBwmO6M5kIPrntOXdyKZLigNfQWSEQzVxR4a4vo49vJjTWX70mPndj8KhfT4Dx+2Ng3vnBQ==", + "dev": true, + "dependencies": { + "@octokit/types": "^12.0.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/types": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.4.0.tgz", + "integrity": "sha512-FLWs/AvZllw/AGVs+nJ+ELCDZZJk+kY0zMen118xhL2zD0s1etIUHm1odgjP7epxYU1ln7SZxEUWYop5bhsdgQ==", + "dev": true, + "dependencies": { + "@octokit/openapi-types": "^19.1.0" + } + }, + "node_modules/@pkgr/core": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.0.tgz", + "integrity": "sha512-Zwq5OCzuwJC2jwqmpEQt7Ds1DTi6BWSwoGkbb1n9pO3hzb35BoJELx7c0T23iDkBGkh2e7tvOtjF3tr3OaQHDQ==", + "dev": true, "engines": { "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, @@ -868,9 +825,9 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "node_modules/arrange-package-json": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/arrange-package-json/-/arrange-package-json-4.6.0.tgz", - "integrity": "sha512-plaQwPyAEpzJIKz9YNCjprUj0Easxi82BUlAQwmEJbNok1/B6WfyWmOzbHCv9ZmSJbSWraFdWr8PxpdIiGMOpA==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arrange-package-json/-/arrange-package-json-5.0.2.tgz", + "integrity": "sha512-fdk7dHhebrc3X8qnCKZBXm8fxk0HmkVC5z0CGGI3enXCQY4guHnkH1QUvq2wY4Bw/06Iskv3dxS4q1D7vXwbcw==", "dependencies": { "arrangekeys": "^6.5.0", "editions": "^6.19.0" @@ -894,13 +851,13 @@ } }, "node_modules/assert-helpers": { - "version": "11.9.0", - "resolved": "https://registry.npmjs.org/assert-helpers/-/assert-helpers-11.9.0.tgz", - "integrity": "sha512-nFb4nEv+E1kGppjGlPl8QPxXA+HcZqV1gX7ltbiBMiUvzT2pbv5Jfo1dIGvm+ZXkEstvn7mPUtkZIVevwmTLBA==", + "version": "11.10.0", + "resolved": "https://registry.npmjs.org/assert-helpers/-/assert-helpers-11.10.0.tgz", + "integrity": "sha512-qzpLyJ5vPslb5LAdxyKFNZFvQqwRpHfF6sTPA3YUzPs3EzsngEyxfTT1Wzsx/4rapQP5ZHZlAMO6R5xpJ8DQYg==", "dev": true, "dependencies": { "@bevry/ansi": "^6.7.0", - "editions": "^6.18.0", + "editions": "^6.19.0", "errlop": "^8.2.0" }, "engines": { @@ -911,9 +868,9 @@ } }, "node_modules/badges": { - "version": "4.37.0", - "resolved": "https://registry.npmjs.org/badges/-/badges-4.37.0.tgz", - "integrity": "sha512-bEcUJp9MwKqX14G7Qh6ZKnn6Rtyouqh7AqVPvyO6co6QeNThqJfYhTX20zp27Y9xnM2NKOETGekrnNZg+yWinA==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/badges/-/badges-4.38.0.tgz", + "integrity": "sha512-X1ESSh+HvznvX1sK3+XWX9GgOVN4C7cM1VM7TBQKzVav4KDiggunCRbuJ8JltT8zmOeBSvSpwLjnHUCHexzPQw==", "dev": true, "engines": { "node": ">=10" @@ -947,15 +904,6 @@ } ] }, - "node_modules/big-integer": { - "version": "1.6.52", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", - "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, "node_modules/bl": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", @@ -966,18 +914,6 @@ "readable-stream": "^3.4.0" } }, - "node_modules/bplist-parser": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", - "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", - "dev": true, - "dependencies": { - "big-integer": "^1.6.44" - }, - "engines": { - "node": ">= 5.10.0" - } - }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -988,18 +924,6 @@ "concat-map": "0.0.1" } }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", @@ -1023,21 +947,6 @@ "ieee754": "^1.1.13" } }, - "node_modules/bundle-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", - "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==", - "dev": true, - "dependencies": { - "run-applescript": "^5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/call-bind": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", @@ -1061,18 +970,18 @@ } }, "node_modules/caterpillar": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/caterpillar/-/caterpillar-7.0.0.tgz", - "integrity": "sha512-xZBdJ+r5SCHlmbkYs7xV4aUgUFa2Lc2MXH8gQCDg9CKLk7ui/Z2Ahq2b/LSYmyTj3XCJQRvn5ECabEU8peSQMg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/caterpillar/-/caterpillar-8.0.0.tgz", + "integrity": "sha512-kH7v5aT5sag65OMCI6Hp4sVItAeYFVWcc6iKj+k43S8tRrSS9vSD98vNcyhCWjb96ad/9Snk6CWH1AGRRtiKrg==", "dev": true, "dependencies": { - "@bevry/ansi": "^6.5.0", - "editions": "^6.15.0", - "get-current-line": "^7.0.0", - "rfc-log-levels": "^3.21.0" + "@bevry/ansi": "^6.7.0", + "editions": "^6.19.0", + "get-current-line": "^7.1.0", + "rfc-log-levels": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=4" }, "funding": { "url": "https://bevry.me/fund" @@ -1195,40 +1104,6 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, - "node_modules/default-browser": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz", - "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==", - "dev": true, - "dependencies": { - "bundle-name": "^3.0.0", - "default-browser-id": "^3.0.0", - "execa": "^7.1.1", - "titleize": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-browser-id": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", - "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", - "dev": true, - "dependencies": { - "bplist-parser": "^0.2.0", - "untildify": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/defaults": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", @@ -1253,17 +1128,11 @@ "node": ">= 0.4" } }, - "node_modules/define-lazy-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", - "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "node_modules/deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true }, "node_modules/doctrine": { "version": "3.0.0", @@ -1352,15 +1221,15 @@ } }, "node_modules/eslint": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz", - "integrity": "sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.55.0", + "@eslint/js": "8.56.0", "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -1434,23 +1303,24 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.1.tgz", - "integrity": "sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.2.tgz", + "integrity": "sha512-dhlpWc9vOwohcWmClFcA+HjlvUpuyynYs0Rf+L/P6/0iQE6vlHW9l5bkfzN62/Stm9fbq8ku46qzde76T1xlSg==", "dev": true, "dependencies": { "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.8.5" + "synckit": "^0.8.6" }, "engines": { "node": "^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://opencollective.com/prettier" + "url": "https://opencollective.com/eslint-plugin-prettier" }, "peerDependencies": { "@types/eslint": ">=8.0.0", "eslint": ">=8.0.0", + "eslint-config-prettier": "*", "prettier": ">=3.0.0" }, "peerDependenciesMeta": { @@ -1566,56 +1436,6 @@ "url": "https://bevry.me/fund" } }, - "node_modules/execa": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", - "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^4.3.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": "^14.18.0 || ^16.14.0 || >=18.0.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/execa/node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/execa/node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/extendr": { "version": "7.7.0", "resolved": "https://registry.npmjs.org/extendr/-/extendr-7.7.0.tgz", @@ -1686,34 +1506,6 @@ "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", "dev": true }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -1736,10 +1528,13 @@ } }, "node_modules/fellow": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/fellow/-/fellow-6.25.0.tgz", - "integrity": "sha512-/eYuI5Cr9hi2Llw5VHIdiDQKe4cL4Qa1a9EE8NxuT/xa7KsfsnF7pBcYXIhmqSLxPbWS1ozF1vzYcN4VTf9OwA==", - "dev": true, + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/fellow/-/fellow-7.0.4.tgz", + "integrity": "sha512-yQo/A5v7IPNo2IPRVlD/j9H2oV3Jw44Ep0X6X3kOywGwQSme3x6cjbZ6d9R8pB0kxj5AhljKek/oOZc3/nGU4A==", + "dependencies": { + "@bevry/render": "^1.0.0", + "editions": "^6.19.0" + }, "engines": { "node": ">=10" }, @@ -1801,18 +1596,6 @@ "url": "https://bevry.me/fund" } }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -1916,18 +1699,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -2049,15 +1820,6 @@ "node": ">= 0.4" } }, - "node_modules/human-signals": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", - "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", - "dev": true, - "engines": { - "node": ">=14.18.0" - } - }, "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -2191,21 +1953,6 @@ "node": ">=8" } }, - "node_modules/is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", - "dev": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -2235,24 +1982,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-inside-container": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", - "dev": true, - "dependencies": { - "is-docker": "^3.0.0" - }, - "bin": { - "is-inside-container": "cli.js" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-interactive": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", @@ -2261,15 +1990,6 @@ "node": ">=8" } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, "node_modules/is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -2279,18 +1999,6 @@ "node": ">=8" } }, - "node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-unicode-supported": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", @@ -2302,33 +2010,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-wsl/node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -2469,34 +2150,6 @@ "url": "https://bevry.me/fund" } }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, "node_modules/mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", @@ -2540,12 +2193,12 @@ } }, "node_modules/native-promise-pool": { - "version": "3.25.0", - "resolved": "https://registry.npmjs.org/native-promise-pool/-/native-promise-pool-3.25.0.tgz", - "integrity": "sha512-FrtUErgKMbshbyL3iNMm2yRywBzf2vFc/rkLPmixWTnYUaeIALjF5Os9R/D12D6PA0L8vzqrhKjuDELzhsypxg==", + "version": "3.26.0", + "resolved": "https://registry.npmjs.org/native-promise-pool/-/native-promise-pool-3.26.0.tgz", + "integrity": "sha512-vIzAV+BzQaTctUgPs2WMJmXma/0EA+lJFgwY+/ghMS5UB4U9Eq/OiUbAqsk/e9BM9DL/3QG3Rhp3xuThBh66kw==", "dev": true, "dependencies": { - "editions": "^6.16.0" + "editions": "^6.19.0" }, "engines": { "node": ">=10" @@ -2582,33 +2235,6 @@ "url": "https://bevry.me/fund" } }, - "node_modules/npm-run-path": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", - "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", - "dev": true, - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -2632,24 +2258,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/open": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", - "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==", - "dev": true, - "dependencies": { - "default-browser": "^4.0.0", - "define-lazy-prop": "^3.0.0", - "is-inside-container": "^1.0.0", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/optionator": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", @@ -2777,24 +2385,6 @@ "node": ">=8" } }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", @@ -2824,9 +2414,9 @@ } }, "node_modules/prettier": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.0.tgz", - "integrity": "sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.1.tgz", + "integrity": "sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -2851,22 +2441,25 @@ } }, "node_modules/projectz": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/projectz/-/projectz-3.4.0.tgz", - "integrity": "sha512-T3A/ioNJAhFhCxR33JBCH5OMXoJeDCTmmftC1XlfQl8wI3BTrSK7kUEym0OtbmCrpYmvxE/+x4NDoROliPkMdA==", - "dev": true, - "dependencies": { - "@bevry/fs-list": "^2.3.0", - "@bevry/fs-read": "^1.3.0", - "@bevry/fs-write": "^1.3.0", - "@bevry/json": "^2.1.0", - "badges": "^4.37.0", - "caterpillar": "^7.0.0", - "fellow": "^6.25.0", - "get-cli-arg": "^8.3.0", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/projectz/-/projectz-4.0.0.tgz", + "integrity": "sha512-bUJ5mjvTgD0bI0tbpC8AO4a7FgYkXXGtN49MRNxVNLRNxvwd4yr2oVXmbngz5XN/lHpJU3fgOYBbf+PYCd3U5A==", + "dev": true, + "dependencies": { + "@bevry/argument": "^1.0.0", + "@bevry/fs-list": "^2.4.0", + "@bevry/fs-read": "^1.4.0", + "@bevry/fs-write": "^1.4.0", + "@bevry/github-api": "^11.0.0", + "@bevry/json": "^2.2.1", + "@bevry/render": "^1.0.0", + "arrange-package-json": "^5.0.2", + "badges": "^4.38.0", + "caterpillar": "^8.0.0", "spdx-expression-parse": "^4.0.0", "spdx-license-list": "^6.8.0", - "typechecker": "^8.5.0" + "trim-empty-keys": "^1.0.1", + "typechecker": "^9.2.0" }, "bin": { "projectz": "bin.cjs" @@ -2878,16 +2471,31 @@ "url": "https://bevry.me/fund" } }, - "node_modules/projectz/node_modules/typechecker": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/typechecker/-/typechecker-8.6.0.tgz", - "integrity": "sha512-s803IhKCZLZ9ZbYArmRzI+0gqUGE9TEzz4hR2EXF0ecFaZTIHv6QFduYhwbhdTruIO+R9UkhB6hOP5SGsv9ksw==", + "node_modules/projectz/node_modules/@bevry/github-api": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/@bevry/github-api/-/github-api-11.0.0.tgz", + "integrity": "sha512-gOSFeauDKQRomaxVRCiIzI7XMRBLKTIpme1814FRiEhJr1gd82+AFAQ4rmlZL550atqkUYxU1wD9gWqYupljVQ==", "dev": true, "dependencies": { - "editions": "^6.16.0" + "@bevry/argument": "^1.0.0", + "@bevry/fs-readable": "^2.3.0", + "@bevry/json": "^2.2.1", + "@bevry/list": "^2.3.0", + "@bevry/wait": "^2.4.0", + "@octokit/graphql": "^7.0.2", + "arrange-package-json": "^5.0.1", + "errlop": "^8.2.0", + "fellow": "^7.0.4", + "js-yaml": "^4.1.0", + "native-promise-pool": "^3.26.0", + "simplytyped": "^3.3.0", + "trim-empty-keys": "^1.0.1" + }, + "bin": { + "github-backers": "bin.cjs" }, "engines": { - "node": ">=4" + "node": ">=18" }, "funding": { "url": "https://bevry.me/fund" @@ -2967,12 +2575,15 @@ } }, "node_modules/rfc-log-levels": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/rfc-log-levels/-/rfc-log-levels-3.21.0.tgz", - "integrity": "sha512-AP+S8PnysICJ8XD4MGM5yyODJFmQW30Xs37FGkheWGosUVlYsTnK1gYTytyVbc4CYzKai6Jmh//7C2aUErp79g==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/rfc-log-levels/-/rfc-log-levels-4.1.0.tgz", + "integrity": "sha512-y+fVhL1sywPejgdtM8UypjvroP+CKLdtlqCV+QkwEfFDQh4IzFZuqQS7Z9pyZLHngc3wYmuQpy4K0sS/CI9z3A==", "dev": true, + "dependencies": { + "editions": "^6.19.0" + }, "engines": { - "node": ">=10" + "node": ">=4" }, "funding": { "url": "https://bevry.me/fund" @@ -2993,86 +2604,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/run-applescript": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", - "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==", - "dev": true, - "dependencies": { - "execa": "^5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/run-applescript/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/run-applescript/node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/run-applescript/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/run-applescript/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/run-applescript/node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/run-async": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", @@ -3368,18 +2899,6 @@ "node": ">=8" } }, - "node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -3404,13 +2923,13 @@ } }, "node_modules/synckit": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", - "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz", + "integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==", "dev": true, "dependencies": { - "@pkgr/utils": "^2.3.1", - "tslib": "^2.5.0" + "@pkgr/core": "^0.1.0", + "tslib": "^2.6.2" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -3482,18 +3001,6 @@ "node": ">=0.10.0" } }, - "node_modules/titleize": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", - "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -3505,16 +3012,19 @@ "node": ">=0.6.0" } }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/trim-empty-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-empty-keys/-/trim-empty-keys-1.0.1.tgz", + "integrity": "sha512-ewq4ybzbCpezfVXZHfOE5MYP8CBGJYOka6z3xTHsIdsDmO/NGDav0OyNY4IC/N+KQZxaLU2fJDT2nDDvsRg8lg==", "dev": true, "dependencies": { - "is-number": "^7.0.0" + "typechecker": "^9.2.0" }, "engines": { - "node": ">=8.0" + "node": ">=8" + }, + "funding": { + "url": "https://bevry.me/fund" } }, "node_modules/tslib": { @@ -3600,14 +3110,11 @@ "url": "https://bevry.me/fund" } }, - "node_modules/untildify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", - "dev": true, - "engines": { - "node": ">=8" - } + "node_modules/universal-user-agent": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", + "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==", + "dev": true }, "node_modules/uri-js": { "version": "4.4.1", diff --git a/package.json b/package.json index a3b6bd4..398721d 100644 --- a/package.json +++ b/package.json @@ -1,9 +1,17 @@ { "name": "boundation", - "version": "1.88.4", + "version": "1.89.0", + "license": "Artistic-2.0", "description": "Automatic scaffolding and upgrading of your JavaScript ecosystem projects using Bevry's best practices", "homepage": "https://github.com/bevry/boundation", - "license": "Artistic-2.0", + "funding": "https://bevry.me/fund", + "repository": { + "type": "git", + "url": "https://github.com/bevry/boundation.git" + }, + "bugs": { + "url": "https://github.com/bevry/boundation/issues" + }, "keywords": [ ".travis.yml", "esnext", @@ -56,21 +64,25 @@ "npmPackageName": "boundation" } }, - "funding": "https://bevry.me/fund", - "author": "2017+ Bevry (http://bevry.me)", + "author": "Benjamin Lupton (https://balupton.com) (https://github.com/balupton)", + "authors": [ + "Benjamin Lupton (https://balupton.com) (https://github.com/balupton)" + ], "maintainers": [ - "Benjamin Lupton (https://github.com/balupton)" + "Benjamin Lupton (https://balupton.com) (https://github.com/balupton)" ], "contributors": [ - "Benjamin Lupton (https://github.com/balupton)" + "Benjamin Lupton (https://balupton.com) (https://github.com/balupton)" + ], + "donors": [ + "Chad (https://opencollective.com/chad8)", + "entroniq (https://gitlab.com/entroniq) (https://thanks.dev/d/gl/entroniq)", + "Jean-Luc Geering (https://github.com/jlgeering) (https://opencollective.com/jlgeering) (https://twitter.com/jlgeering)", + "mikeumus (https://bevry.me) (https://github.com/mikeumus) (https://opencollective.com/mikeumus) (https://twitter.com/mikeumus)", + "serviejs (https://github.com/serviejs) (https://thanks.dev/d/gh/serviejs)", + "Skunk Team (https://skunk.team) (https://github.com/skunkteam)", + "smashah (https://github.com/smashah) (https://thanks.dev/d/gh/smashah)" ], - "bugs": { - "url": "https://github.com/bevry/boundation/issues" - }, - "repository": { - "type": "git", - "url": "https://github.com/bevry/boundation.git" - }, "engines": { "node": ">=18" }, @@ -112,9 +124,10 @@ "@bevry/nodejs-ecmascript-compatibility": "^5.6.0", "@bevry/nodejs-versions": "^3.3.0", "@bevry/testen": "^9.2.0", - "arrange-package-json": "^4.6.0", + "arrange-package-json": "^5.0.2", "arrangekeys": "^6.5.0", "errlop": "^8.2.0", + "fellow": "^7.0.4", "filedirname": "^3.2.0", "get-cli-arg": "^8.4.0", "inquirer": "^9.2.12", @@ -126,15 +139,14 @@ "version-range": "^4.11.0" }, "devDependencies": { - "@bevry/update-contributors": "^1.23.0", - "assert-helpers": "^11.9.0", - "eslint": "^8.55.0", + "assert-helpers": "^11.10.0", + "eslint": "^8.56.0", "eslint-config-bevry": "^5.3.0", "eslint-config-prettier": "^9.1.0", - "eslint-plugin-prettier": "^5.0.1", + "eslint-plugin-prettier": "^5.1.2", "kava": "^7.5.0", - "prettier": "^3.1.0", - "projectz": "^3.4.0", + "prettier": "^3.1.1", + "projectz": "^4.0.0", "valid-directory": "^4.7.0" }, "scripts": { @@ -142,9 +154,8 @@ "our:clean": "rm -rf ./docs ./edition* ./es2015 ./es5 ./out ./.next", "our:compile": "printf '%s\n' 'no need for this project'", "our:deploy": "printf '%s\n' 'no need for this project'", - "our:meta": "npm run our:meta:contributors && npm run our:meta:projectz", - "our:meta:contributors": "update-contributors", - "our:meta:projectz": "projectz compile", + "our:meta": "npm run our:meta:projectz", + "our:meta:projectz": "projectz", "our:release": "npm run our:release:prepare && npm run our:release:check-changelog && npm run our:release:check-dirty && npm run our:release:tag && npm run our:release:push", "our:release:check-changelog": "cat ./HISTORY.md | grep \"v$npm_package_version\" || (printf '%s\n' \"add a changelog entry for v$npm_package_version\" && exit -1)", "our:release:check-dirty": "git diff --exit-code", @@ -154,12 +165,16 @@ "our:setup": "npm run our:setup:install", "our:setup:install": "npm install", "our:test": "npm run our:verify && npm test", - "our:verify": "npm run our:verify:directory && npm run our:verify:eslint && npm run our:verify:prettier", - "our:verify:directory": "valid-directory", + "our:verify": "npm run our:verify:eslint && npm run our:verify:prettier", "our:verify:eslint": "eslint --fix --ignore-pattern '**/*.d.ts' --ignore-pattern '**/vendor/' --ignore-pattern '**/node_modules/' --ext .mjs,.js,.jsx,.ts,.tsx ./source", "our:verify:prettier": "prettier --write .", "test": "node ./source/test.js" }, + "boundation": { + "maintainedNodeVersions": true, + "expandNodeVersions": false, + "compileNode": false + }, "eslintConfig": { "extends": [ "bevry" @@ -176,10 +191,5 @@ "singleQuote": true, "trailingComma": "all", "endOfLine": "lf" - }, - "boundation": { - "maintainedNodeVersions": true, - "expandNodeVersions": false, - "compileNode": false } -} \ No newline at end of file +} diff --git a/source/answers.js b/source/answers.js index a03528b..b3b82a2 100644 --- a/source/answers.js +++ b/source/answers.js @@ -4,6 +4,9 @@ import * as ansi from '@bevry/ansi' import Errlop from 'errlop' import getArgValue from 'get-cli-arg' +// local +import { hiddenConfigurationProperties } from './data.js' + // vars const skipAllArg = '--auto' const skipAll = process.argv.includes(skipAllArg) @@ -130,8 +133,8 @@ export default async function getAnswers(questions, user = {}) { question.type === 'password' ? '[hidden]' : typeof value === 'string' - ? value - : JSON.stringify(value), + ? value + : JSON.stringify(value), ), ), ] @@ -151,8 +154,8 @@ export default async function getAnswers(questions, user = {}) { // check if we had any unknown properties const unknownProperties = new Set(Object.keys(user)) - unknownProperties.delete('comment') - unknownProperties.delete('versions') + for (const hidden of hiddenConfigurationProperties) + unknownProperties.delete(hidden) if (unknownProperties.size) { console.log(user) throw new Error( diff --git a/source/base.js b/source/base.js index 77a246f..1b4b383 100644 --- a/source/base.js +++ b/source/base.js @@ -185,10 +185,10 @@ export async function updateBaseFiles({ answers, packageData }) { answers.deploymentStrategy === 'bevry' ? `https://cdn.bevry.me/${trimOrgName(answers.name)}/${ answers.defaultBranch - }/` + }/` : `http://${answers.defaultBranch}.${trimOrgName(answers.name)}.${ answers.githubOrganisation - }.surge.sh/` + }.surge.sh/` const newDocumentationSuffix = `docs/${ answers.deploymentStrategy === 'bevry' ? 'index.html' : '' }` // don't use globals.html, it may not always be present diff --git a/source/ci.js b/source/ci.js index be01ce5..3270b91 100644 --- a/source/ci.js +++ b/source/ci.js @@ -43,7 +43,7 @@ function generateGitHubActionsJSON(state) { actionsOperatingSystemsExperimental.length ? `contains('${actionsOperatingSystemsExperimental.join( ' ', - )}', matrix.os)` + )}', matrix.os)` : '', ] .filter((i) => i) @@ -98,7 +98,7 @@ function generateGitHubActionsJSON(state) { const npmPublishSteps = [ { name: 'publish to npm', - uses: 'bevry-actions/npm@v1.1.2', + uses: 'bevry-actions/npm@v1.1.3', with: { npmAuthToken: '${{ secrets.NPM_AUTH_TOKEN }}', npmBranchTag: answers.npm ? ':next' : null, @@ -208,7 +208,7 @@ function generateGitHubActionsJSON(state) { ...prePublishSteps, ...publishSteps, ], - } + } : null, automerge: { permissions: { diff --git a/source/data.js b/source/data.js index 88d240c..9ef53cc 100644 --- a/source/data.js +++ b/source/data.js @@ -11,6 +11,12 @@ import { export const pwd = cwd() +export const hiddenConfigurationProperties = [ + 'comment', + 'versions', + 'githubActionTestEnv', +] + // fill this with a map of dependency package names to versions that are busted // so that if they are necessary, a previous version is used instead export const bustedVersions = {} diff --git a/source/editions.js b/source/editions.js index da0c1b8..d9193f3 100644 --- a/source/editions.js +++ b/source/editions.js @@ -17,11 +17,11 @@ import { useStrict, exportOrExports, importOrRequire, - binField, cojoin, set, unjoin, } from './util.js' +import { newPackageBinEntry } from './package.js' import { allTypescriptEcmascriptTargets, languageNames, @@ -75,7 +75,7 @@ async function writeLoader({ await write(entry, lines.filter((i) => i).join('\n')) } -async function writeEntry({ +async function writeRootEntry({ entry = 'index', autoloader = false, always = false, @@ -86,7 +86,6 @@ async function writeEntry({ nodeEditionImport, }) { let resolved - if (nodeEditionRequire) { if (autoloader || always) { const entryWithExtension = entry + '.cjs' @@ -498,8 +497,8 @@ export async function generateEditions(state) { targetModule === 'import' ? answers.nodeVersionsTargetedImportRange : targetModule === 'require' - ? answers.nodeVersionsTargetedRequireRange - : undefined, + ? answers.nodeVersionsTargetedRequireRange + : undefined, }, ) .slice() @@ -886,7 +885,7 @@ export async function scaffoldEditions(state) { 'test.cjs', 'test.mjs', ], - "'editions'", + 'auto-generated by boundation', ) // export default @@ -986,7 +985,7 @@ export async function scaffoldEditions(state) { // setup paths if (nodeEdition) { - packageData.main = await writeEntry({ + packageData.main = await writeRootEntry({ entry: 'index', autoloader: state.useEditionsAutoloader, exportDefault, @@ -998,9 +997,9 @@ export async function scaffoldEditions(state) { // bin if (answers.binEntry) { - packageData.bin = binField( - answers, - await writeEntry({ + packageData.bin = newPackageBinEntry( + packageData, + await writeRootEntry({ entry: 'bin', always: true, autoloader: state.useEditionsAutoloader, @@ -1011,12 +1010,14 @@ export async function scaffoldEditions(state) { nodeEditionImport, }), ) + } else { + delete packageData.bin } // don't bother test with docpad plugins // as they hae their own testing solution if (answers.docpadPlugin === false) { - state.test = await writeEntry({ + state.test = await writeRootEntry({ entry: 'test', autoloader: state.useEditionsAutoloader, exportDefault, @@ -1059,6 +1060,13 @@ export async function scaffoldEditions(state) { if (answers.testEntry) { state.test = answers.testEntry + '.js' } - packageData.bin = binField(answers, answers.binEntry + '.js') + if (answers.binEntry) { + packageData.bin = newPackageBinEntry( + packageData, + answers.binEntry + '.js', + ) + } else { + delete packageData.bin + } } } diff --git a/source/package.js b/source/package.js index 2d82c5c..5f98681 100644 --- a/source/package.js +++ b/source/package.js @@ -13,6 +13,7 @@ import write from '@bevry/fs-write' import { defaultDeploy, ensureScript, + fixBevry, fixBalupton, repoToOrganisation, repoToWebsite, @@ -259,25 +260,33 @@ export function getPackageTestEntry(packageData) { return null } -export function getPackageBinEntry(packageData) { - const bin = packageData.bin - if (bin) { - const entry = typeof bin === 'string' ? bin : Object.values(bin)[0] - return getBasename(entry) +// return the bin entry as a string (if single bin entry), or as an object of strings that point to the same bin entry (if multiple bin names) +export function newPackageBinEntry(packageData, binEntry) { + if (!binEntry) return null + if (typeof packageData.bin === 'string') { + return binEntry + } else if (typeof packageData.bin === 'object') { + const result = {} + for (const key of Object.keys(packageData.bin)) { + result[key] = binEntry + } + return result + } else { + // not yet created, so add + return binEntry } - return null } -export function getPackageBinExecutable(packageData) { +export function getPackageBinEntry(packageData, basename = true) { const bin = packageData.bin if (bin) { - if (typeof bin === 'string') return null - return Object.keys(bin).join(', ') + const entry = typeof bin === 'string' ? bin : Object.values(bin)[0] + return basename ? getBasename(entry) : entry } return null } -export async function getPackageIndexEntry(packageData) { +export async function getPackageIndexEntry(packageData, basename = true) { if (packageData && isPackageDocPadPlugin(packageData)) { return 'index' } @@ -634,10 +643,27 @@ export async function updatePackageData(state) { } } + // correct author + packageData.author = fixBevry(packageData.author) + // correct balupton packageData.maintainers = packageData.maintainers.map(fixBalupton) packageData.contributors = packageData.contributors.map(fixBalupton) + // add skunk to donors + if (isBevryOrganisation(answers.githubOrganisation)) { + if (!packageData.donors) { + packageData.donors = [] + } + if ( + !packageData.donors.join(' ').includes('https://github.com/skunkteam') + ) { + packageData.donors.push( + 'Skunk Team (https://skunk.team) (https://github.com/skunkteam)', + ) + } + } + // remove old fields delete packageData.nakeConfiguration delete packageData.cakeConfiguration diff --git a/source/questions.js b/source/questions.js index 5a9b640..c29fc3d 100644 --- a/source/questions.js +++ b/source/questions.js @@ -31,7 +31,6 @@ import { import { getPackageAuthor, getPackageBinEntry, - getPackageBinExecutable, getPackageBrowserEntry, getPackageDescription, getPackageFlowtypeDependency, @@ -443,15 +442,15 @@ export async function getQuestions(state) { return language === 'typescript' ? ['typescript', 'babel'] : language === 'coffeescript' - ? ['babel', 'coffeescript'] - : ['babel'] + ? ['babel', 'coffeescript'] + : ['babel'] }, default({ language }) { return language === 'typescript' ? 'typescript' : language === 'coffeescript' - ? 'coffeescript' - : 'babel' + ? 'coffeescript' + : 'babel' }, when({ compileNode }) { return compileNode @@ -480,8 +479,8 @@ export async function getQuestions(state) { return language === 'typescript' ? ['typescript', 'babel'] : language === 'coffeescript' - ? ['babel', 'coffeescript'] - : ['babel'] + ? ['babel', 'coffeescript'] + : ['babel'] }, default({ language }) { return language === 'typescript' ? 'typescript' : 'babel' @@ -576,7 +575,7 @@ export async function getQuestions(state) { }, { name: 'bin', - message: 'Will there be a binary/executable file?', + message: 'Will there be a bin/executable/CLI?', type: 'confirm', default: Boolean(getPackageBinEntry(packageData)), skip({ bin }) { @@ -588,7 +587,8 @@ export async function getQuestions(state) { }, { name: 'binEntry', - message: 'What is the filename of the bin entry (without extension)?', + message: + 'What is the filename of the bin/executable/CLI entry (without extension)?', validate: isSpecified, filter: trim, default: getPackageBinEntry(packageData) || 'bin', @@ -599,21 +599,6 @@ export async function getQuestions(state) { return bin }, }, - { - name: 'binExecutable', - message: 'What is the name of the bin executable(s)?', - validate: isSpecified, - filter: trim, - default({ name }) { - return getPackageBinExecutable(packageData) || name - }, - skip() { - return getPackageBinExecutable(packageData) - }, - when({ bin }) { - return bin - }, - }, { name: 'nodeVersionsRange', message: diff --git a/source/runtime.js b/source/runtime.js index 4220765..9fcaaf7 100644 --- a/source/runtime.js +++ b/source/runtime.js @@ -17,7 +17,7 @@ import { } from './data.js' import { parse, exec, spawn } from './fs.js' import { getPreviousVersion, getDuplicateDeps, trimEmpty } from './util.js' -import { readPackage, writePackage } from './package.js' +import { readPackage, writePackage, getPackageBinEntry } from './package.js' import { scaffoldEditions, updateEditionEntries, @@ -230,19 +230,26 @@ export async function updateRuntime(state) { /** @type {Object.} */ const packages = { - projectz: 'dev', + projectz: false, + 'make-deno-edition': false, + 'valid-directory': false, + 'valid-module': false, + '@bevry/github-commit': false, // deprecated, use @bevry/github-api + '@bevry/github-contributors': false, // deprecated, use @bevry/github-api + '@bevry/github-members': false, // deprecated, use @bevry/github-api + '@bevry/github-repos': false, // deprecated, use @bevry/github-api + '@bevry/update-contributors': false, // deprecated, use projectz 'assert-helpers': false, - joe: false, kava: false, - 'joe-examples': false, - 'joe-reporter-console': false, - 'joe-reporter-list': false, + joe: false, // deprecated, use kava + 'joe-examples': false, // deprecated, use kava + 'joe-reporter-console': false, // deprecated, use kava + 'joe-reporter-list': false, // deprecated, use kava editions: state.useEditionsAutoloader, surge: false, vercel: false, now: false, next: false, - '@zeit/next-typescript': false, '@zeit/next-mdx': false, 'next-server': false, '@types/next': false, @@ -261,7 +268,6 @@ export async function updateRuntime(state) { '@babel/plugin-proposal-optional-chaining': false, 'babel-plugin-add-module-exports': false, typescript: false, - 'make-deno-edition': false, 'typescript-eslint-parser': false, '@typescript-eslint/parser': false, prettier: false, @@ -275,8 +281,7 @@ export async function updateRuntime(state) { 'eslint-plugin-react': false, 'eslint-plugin-typescript': false, '@typescript-eslint/eslint-plugin': false, - 'valid-directory': false, - 'valid-module': false, + '@zeit/next-typescript': false, documentation: false, jsdoc: false, minami: false, @@ -295,11 +300,11 @@ export async function updateRuntime(state) { packageData.devDependencies['coffee-script'] ? 'dev' : packageData.dependencies.coffeescript || - packageData.dependencies['coffee-script'] - ? true - : answers.languages === 'coffeescript' - ? 'dev' - : false, + packageData.dependencies['coffee-script'] + ? true + : answers.languages === 'coffeescript' + ? 'dev' + : false, } // ================================= @@ -428,10 +433,6 @@ export async function updateRuntime(state) { state.scripts = { 'our:setup:install': commands[answers.packageManager].install.join(' '), 'our:clean': 'rm -rf ./docs ./edition* ./es2015 ./es5 ./out ./.next', - 'our:meta:projectz': - packageData.name === 'projectz' - ? 'npm run our:bin -- compile' - : 'projectz compile', 'our:test': [[...run, 'our:verify'], test] .map((i) => i.join(' ')) .join(' && '), @@ -446,10 +447,38 @@ export async function updateRuntime(state) { 'our:release:push': 'git push origin && git push origin --tags', 'our:release': [...run, 'our:release:push'].join(' '), } + if (answers.name === 'projectz') { + state.scripts['our:meta:projectz'] = 'npm run our:bin' + } else { + state.scripts['our:meta:projectz'] = 'projectz' + if (!packages.projectz) packages.projectz = 'dev' + } + if (answers.npm) { + if (answers.name === 'valid-directory') { + // do not valid-directory, the valid-directory package + // as it deliberately has invalid files in it + // such that it tests can detect that it works + // state.scripts['our:verify:directory'] = 'npm run our:bin' + } else { + packages['valid-directory'] ??= 'dev' + if (!packages['valid-directory']) packages['valid-directory'] = 'dev' + } + if (packageData.module) { + if (answers.name === 'valid-module') { + state.scripts['our:verify:module'] = 'npm run our:bin' + } else { + state.scripts['our:verify:module'] = 'valid-module' + if (!packages['valid-module']) packages['valid-module'] = 'dev' + } + } + } // add bin script if (packageData.bin) { - state.scripts['our:bin'] = `node ./${packageData.bin}` + state.scripts['our:bin'] = `node ./${getPackageBinEntry( + packageData, + false, + )}` } // add test script @@ -762,33 +791,6 @@ export async function updateRuntime(state) { packages.kava = packages['assert-helpers'] = 'dev' } - // package - if (answers.npm) { - if (answers.name !== '@bevry/update-contributors') { - packages['@bevry/update-contributors'] = 'dev' - state.scripts['our:meta:contributors'] = 'update-contributors' - } else { - state.scripts['our:meta:directory'] = 'npm run our:bin' - } - if (answers.name !== 'valid-directory') { - packages['valid-directory'] = 'dev' - state.scripts['our:verify:directory'] = 'valid-directory' - } else { - // do not valid-directory, the valid-directory package - // as it deliberately has invalid files in it - // such that it tests can detect that it works - // state.scripts['our:verify:directory'] = 'npm run our:bin' - } - if (packageData.module) { - if (answers.name !== 'valid-module') { - packages['valid-module'] = 'dev' - state.scripts['our:verify:module'] = 'valid-module' - } else { - state.scripts['our:verify:module'] = 'npm run our:bin' - } - } - } - // keywords toggle( answers.keywords, @@ -873,7 +875,7 @@ export async function updateRuntime(state) { // https://github.com/Microsoft/TypeScript/issues/29056#issuecomment-448386794 // Only enable isolatedModules on TypeScript projects, as for JavaScript projects it will be incompatible with 'use strict' // resolveJsonModule seems to cause too many issues, so is disabled unless needed - let tsconfig + let tsconfig = {} if (await isAccessible(answers.tsconfig)) { try { tsconfig = (await parse(answers.tsconfig)) || {} @@ -887,6 +889,7 @@ export async function updateRuntime(state) { if (tsconfig.compilerOptions == null) tsconfig.compilerOptions = {} if (tsconfig.compilerOptions.lib == null) tsconfig.compilerOptions.lib = [] if (tsconfig.exclude == null) tsconfig.exclude = [] + if (tsconfig.include == null) tsconfig.include = [] // store lib const lib = new Set() diff --git a/source/util.js b/source/util.js index 6e8f8aa..fa2dd50 100644 --- a/source/util.js +++ b/source/util.js @@ -1,5 +1,6 @@ // external import * as typeChecker from 'typechecker' +import Fellow from 'Fellow' /** Delete the keys of the object which have empty values */ export function trimEmpty(obj, log = false, parents = []) { @@ -71,22 +72,6 @@ export function set(obj, key, value) { else obj[key] = value } -// return the bin entry as a string (if single bin entry), or as an object of strings that point to the same bin entry (if multiple bin names) -export function binField(answers, binEntry) { - if (answers.binExecutable) { - if (answers.binExecutable === answers.name) { - return binEntry - } else { - const result = {} - for (const executable of answers.binExecutable.split(/,\s*/)) { - result[executable] = binEntry - } - return result - } - } - return null -} - /** * Get the import/require statement text * @returns an ESM import if `isESM` is truthy, otherwise a CJS require if `isESM` is falsey @@ -163,6 +148,22 @@ export function fixTsc(editionDirectory, sourceDirectory) { ] } +export function fixBevry(input) { + const people = input + .split(', ') + .map((person) => + person + .replace('Bevry Pty Ltd', 'Benjamin Lupton') + .replace('', '') + .replace('://bevry.me', '://balupton.com'), + ) + .join(', ') + const fellows = Fellow.add(people) + if (fellows.length === 1) { + return fellows[0].toString({ displayYears: false }) // only one person, no need for the years + } +} + export function fixBalupton(person) { return person .replace(