From b36a91ec6bfb64e65ea05c423670d8999a7c3a96 Mon Sep 17 00:00:00 2001 From: Jordan Harband Date: Wed, 6 Apr 2022 22:45:36 -0700 Subject: [PATCH] [New] add `pattern-trailers` detection - https://github.com/nodejs/node/pull/39635 - https://github.com/nodejs/node/pull/39888 --- README.md | 2 ++ package.json | 5 +++-- pattern-trailers.js | 11 +++++++++++ test/index.js | 4 ++++ 4 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 pattern-trailers.js diff --git a/README.md b/README.md index 16b2628..53c43be 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,8 @@ Require or import `has-package-exports/conditional` to determine if the current Require or import `has-package-exports/pattern` to determine if the current environment supports exports patterns (as of this writing, node v12.20+ and v14.13+). +Require or import `has-package-exports/pattern-trailers` to determine if the current environment supports exports pattern trailers (as of this writing, node v14.19+ and v16.9+). + ## Tests Simply clone the repo, `npm install`, and run `npm test` diff --git a/package.json b/package.json index 336f412..c7814c7 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,8 @@ }, "./no.js" ], - "./pattern": "./pattern.js" + "./pattern": "./pattern.js", + "./pattern-trailers": "./pattern-trailers.js" }, "scripts": { "prepublish": "!(type safe-publish-latest 2>&1 >/dev/null) || not-in-publish || npm run prepublishOnly", @@ -58,7 +59,7 @@ }, "homepage": "https://github.com/inspect-js/has-package-exports#readme", "dependencies": { - "@ljharb/has-package-exports-patterns": "0.0.1" + "@ljharb/has-package-exports-patterns": "^0.0.2" }, "devDependencies": { "@ljharb/eslint-config": "^20.2.3", diff --git a/pattern-trailers.js b/pattern-trailers.js new file mode 100644 index 0000000..ddd47b1 --- /dev/null +++ b/pattern-trailers.js @@ -0,0 +1,11 @@ +'use strict'; + +var supported; +try { + /* eslint global-require: 0 */ + supported = require('@ljharb/has-package-exports-patterns/pattern-trailers/pattern') + && require('@ljharb/has-package-exports-patterns/pattern-trailers/pattern.js'); +} catch (e) { + supported = false; +} +module.exports = supported; diff --git a/test/index.js b/test/index.js index 4beae50..d4e2c31 100644 --- a/test/index.js +++ b/test/index.js @@ -5,6 +5,7 @@ var semver = require('semver'); var hasPackageExports = require('has-package-exports'); var hasConditionalPackageExports = require('has-package-exports/conditional'); var hasPackageExportPatterns = require('has-package-exports/pattern'); +var hasPackageExportPatternTrailers = require('has-package-exports/pattern-trailers'); // eslint-disable-next-line global-require var spawnSync = typeof window === 'undefined' && require('child_process').spawnSync; @@ -31,5 +32,8 @@ test('has-package-exports', function (t) { var expectedPattern = typeof window === 'undefined' ? semver.satisfies(process.version, '^12.20.0 || >= 14.13') : null; t.equal(hasPackageExportPatterns, expectedPattern, './pattern entrypoint exports expected value: ' + expectedPattern); + var expectedPatternTrailers = typeof window === 'undefined' ? semver.satisfies(process.version, '^14.19 || >= 16.9') : null; + t.equal(hasPackageExportPatternTrailers, expectedPatternTrailers, './pattern-trailers entrypoint exports expected value: ' + expectedPatternTrailers); + t.end(); });