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
-
@@ -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:
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
-
+### [npm](https://npmjs.com "npm is a package manager for javascript")
-
+#### Install Globally
-
This package is published with the following editions:
+- Install: `npm install --global boundation`
+- Executable: `boundation`
-boundation
aliases boundation/source/index.js
-boundation/source/index.js
is ESNext source code for Node.js 18 || 20 || 21 with Import for modules
+#### 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
@@ -146,27 +140,28 @@ No sponsors yet! Will you be the first?
-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(