{"_id":"pattern-key-compare","_rev":"3-6386435476ebca8831c5e51f627a5171","name":"pattern-key-compare","dist-tags":{"latest":"2.0.1"},"versions":{"1.0.0":{"name":"pattern-key-compare","version":"1.0.0","keywords":["resolve","esm","fields","nodejs"],"author":{"url":"unional","name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","_id":"pattern-key-compare@1.0.0","maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"homepage":"https://github.com/cyberuni/resolve.imports","bugs":{"url":"https://github.com/cyberuni/resolve.imports/issues"},"dist":{"shasum":"eb564d520cc8a25d9fe0c2dc57bc969a946fc45c","tarball":"https://registry.npmjs.org/pattern-key-compare/-/pattern-key-compare-1.0.0.tgz","fileCount":9,"integrity":"sha512-7wi8a7OFmdx4Hx31+KY9kcD7gO+MWWupXtlAx7ANqoE8Pypl501FsDAPX2tSYLOuafED82A0Mv3lzeNfn82Jlg==","signatures":[{"sig":"MEUCIQCqKnNKlA0vCzXFZZp/r5VQdwXweK37L0HSs8gjZzeLPAIgfgkE0yh+q2RIXlsSQfSwCYDRwpR8mfxEHCWUURjchnc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjshc/ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqFKg/8CfMTumwFHcID4Wwd35ptKtH+LA5GDYD1t2swmWpdFxJg6K27\r\nQbnMfPNloU+BqIU2PQzfVGJnKj4+WHgn9vFe60AxvD+4KPtBYuGZTaIZkR7W\r\nqk8g3/lYVHAfliJcnR98E0D29IyM967kjXWitFM1qELUA5MRFbaOn3VKQYZE\r\nAi45brcBaHbLcQ+3zc42yKvvT+AB6GeSTtvvSrUZXH2X8b0l8WNul4nbrj3Z\r\nNL/Slbbiib+gQD0bFonCDhv0JfsMENfoOcUrW7WiiVw7uX7qcqzVa9FWtrHW\r\n3cpAqu91+PAITBQ526LAM5OtH/mm9cd+vuYsH1THaUzV2T8TLqSUk/YWaKnJ\r\ngnq0k1OhEvRfb2mOj4MGyIRQtwui0VwtRt/Z+7HrwAtmtrpRm0e8unwOV+31\r\nN3At5VpxzANt3Zzljm/yaz3BG7EvF+WSoswyZzqJpySIuTjblJ4biDEgCjCQ\r\nl0JsIBwSWafQQGdrOA4/g1+g/Fz3kOTWC/vxaJPb1ZK61rxC3p/ac7SvKjyt\r\nPuLfpZqMV8vAo5eGr876GJ8od7gScZvFzMZfbIi7iyPYgAp8/xLR3vrAXn1F\r\nuqTf8HCTHdomguM2ZZT5OB8+dtPvAeUVoWG3+iMtNBedK9JQvNTRgnpgTXBH\r\nkHP0ju9AcmcWi5HUKDomaTpRexg3oCVmq+0=\r\n=jr1T\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./cjs/index.js","type":"module","_from":"file:pattern-key-compare-1.0.0.tgz","types":"./esm/index.d.ts","exports":{".":{"types":"./esm/index.d.ts","import":"./esm/index.js","default":"./cjs/index.js"},"./package.json":"./package.json"},"scripts":{"size":"size-limit","test":"cross-env NODE_OPTIONS=--experimental-vm-modules NODE_OPTIONS=--experimental-import-meta-resolve jest","build":"run-p build:cjs build:esm","clean":"rimraf cjs esm tslib *.tsbuildinfo","verify":"npm-run-all -p build -p test depcheck size","coverage":"cross-env NODE_OPTIONS=--experimental-vm-modules NODE_OPTIONS=--experimental-import-meta-resolve NODE_NO_WARNINGS=1 jest --coverage","depcheck":"depcheck","build:cjs":"tsc --project tsconfig.cjs.json && ncp package.cjs.json cjs/package.json","build:esm":"tsc --project tsconfig.esm.json","test:watch":"cross-env NODE_OPTIONS=--experimental-vm-modules NODE_OPTIONS=--experimental-import-meta-resolve jest --watch"},"_npmUser":{"name":"unional","email":"homawong@gmail.com"},"_resolved":"/tmp/cb6a97ad9b90f6c6543e2240289846c8/pattern-key-compare-1.0.0.tgz","_integrity":"sha512-7wi8a7OFmdx4Hx31+KY9kcD7gO+MWWupXtlAx7ANqoE8Pypl501FsDAPX2tSYLOuafED82A0Mv3lzeNfn82Jlg==","repository":{"url":"git+https://github.com/cyberuni/resolve.imports.git","type":"git","directory":"packages/pattern-key-compare"},"_npmVersion":"8.19.2","description":"PATTERN_KEY_COMPARE implementation","directories":{},"sideEffects":false,"_nodeVersion":"16.18.1","_hasShrinkwrap":false,"devDependencies":{"ncp":"^2.0.0","jest":"^29.3.1","rimraf":"^3.0.2","ts-jest":"^29.0.3","depcheck":"^1.4.3","cross-env":"^7.0.3","size-limit":"^8.1.0","typescript":"^4.9.4","@types/node":"^14","npm-run-all":"^4.1.5","@jest/globals":"^29.3.1","@repobuddy/jest":"^2.3.0","jest-watch-suspend":"^1.1.2","jest-watch-typeahead":"^2.2.1","jest-watch-toggle-config-2":"^2.1.0","@size-limit/preset-small-lib":"^8.1.0"},"_npmOperationalInternal":{"tmp":"tmp/pattern-key-compare_1.0.0_1672615742953_0.9552087301542795","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"pattern-key-compare","version":"2.0.0","keywords":["resolve","esm","fields","nodejs"],"author":{"url":"unional","name":"Homa Wong","email":"homawong@gmail.com"},"license":"MIT","_id":"pattern-key-compare@2.0.0","maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"homepage":"https://github.com/cyberuni/resolve.imports","bugs":{"url":"https://github.com/cyberuni/resolve.imports/issues"},"dist":{"shasum":"07403005f1098c4fb6379c83f718662bcabbcf8a","tarball":"https://registry.npmjs.org/pattern-key-compare/-/pattern-key-compare-2.0.0.tgz","fileCount":9,"integrity":"sha512-b+yp/Q0KwFotxRgemVsNQ4qyqcA/LxzyfSjqJ7maKSlYTRmaUffwfX07l7KdxkVdc89k6WYtC3SwFCEo8GhbWQ==","signatures":[{"sig":"MEYCIQCIlhduNg4aXrGDG+SaPPsc/GTDCL/jG03VPmzw8RwLagIhAJbIriHZ7SGiz/+1VGk88OKzKr+iYHJR8JLbsua4cw6j","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8671,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjs9YlACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrnQg/+L3qVIdKMQcpeJZly2VhpOaI4fPI/dDq8aUed/ZLkgAPe0B8H\r\nbgGlCupAbcvqUvwKga7lR+46CVPYcZKAAAdcmsvX6KlLe9Uu7z3sOkKoRjod\r\neVJnBtrnzaTDHJubVlx8/E+2YVF6JlK7AISAZBQQIsc0Pi4idp07Hi0MjJVU\r\n0okAvy48QmZk7T38THz61nkb16UQ7cuXzJjAhJdZl/K2xcIrWLE/Qe+4Ra9v\r\nGisQRGknD7FSQHIzohL0+1hc6d182sXVkZjTWeLabMEo/NbDc6R2TEHIFp7K\r\ndWEKnV21EpFq3pF4URFiMdIlhkNnOJXRM9PEiAiujkeVrDaEodRgIv5Daw1Q\r\n4cmVyK9iZKc7LjsORdxeOdKGWUsDxN4FZJ6lvMmctxurWtRZJVPNtsqTrwPe\r\n3IHyJinM3UFWiQSdxiLlsgT31tjZ4JFYXFzITP6/FF0AfE7FiABQN9uxsrxD\r\nU4+Tkdv7fIN9Lr3Jdo7U0RlIXcj17ROqYK7T1txhB5pTeP+MCJM9c3FUI+c6\r\n7j3XpCxxpFgT5+96iYq/Nh54IxPcKoyO8h7GByL0ThihK0zsEDekzPRLT6eJ\r\niCKFjh2pptkLhdZrPkK5eGBksIIS4hZJOPmgZQ4iOrhKOc0S79+PN02Q5NBs\r\n3uT3RWkT8pW5zqel94JEOIxhOeGwSfQDJLw=\r\n=2JuI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./cjs/index.js","type":"module","_from":"file:pattern-key-compare-2.0.0.tgz","types":"./esm/index.d.ts","exports":{".":{"types":"./esm/index.d.ts","import":"./esm/index.js","default":"./cjs/index.js"},"./package.json":"./package.json"},"scripts":{"size":"size-limit","test":"cross-env NODE_OPTIONS=--experimental-vm-modules NODE_OPTIONS=--experimental-import-meta-resolve jest","build":"run-p build:cjs build:esm","clean":"rimraf cjs esm tslib *.tsbuildinfo","verify":"npm-run-all -p build -p test depcheck size","coverage":"cross-env NODE_OPTIONS=--experimental-vm-modules NODE_OPTIONS=--experimental-import-meta-resolve NODE_NO_WARNINGS=1 jest --coverage","depcheck":"depcheck","build:cjs":"tsc --project tsconfig.cjs.json && ncp package.cjs.json cjs/package.json","build:esm":"tsc --project tsconfig.esm.json","test:watch":"cross-env NODE_OPTIONS=--experimental-vm-modules NODE_OPTIONS=--experimental-import-meta-resolve jest --watch"},"_npmUser":{"name":"unional","email":"homawong@gmail.com"},"_resolved":"/tmp/78d1ec8d2a5990dbf72083263ff0c5c3/pattern-key-compare-2.0.0.tgz","_integrity":"sha512-b+yp/Q0KwFotxRgemVsNQ4qyqcA/LxzyfSjqJ7maKSlYTRmaUffwfX07l7KdxkVdc89k6WYtC3SwFCEo8GhbWQ==","repository":{"url":"git+https://github.com/cyberuni/resolve.imports.git","type":"git","directory":"packages/pattern-key-compare"},"_npmVersion":"8.19.2","description":"PATTERN_KEY_COMPARE implementation","directories":{},"sideEffects":false,"_nodeVersion":"16.18.1","_hasShrinkwrap":false,"devDependencies":{"ncp":"^2.0.0","jest":"^29.3.1","rimraf":"^3.0.2","ts-jest":"^29.0.3","depcheck":"^1.4.3","cross-env":"^7.0.3","size-limit":"^8.1.0","typescript":"^4.9.4","@types/node":"^14","npm-run-all":"^4.1.5","@jest/globals":"^29.3.1","@repobuddy/jest":"^2.3.0","jest-watch-suspend":"^1.1.2","jest-watch-typeahead":"^2.2.1","jest-watch-toggle-config-2":"^2.1.0","@size-limit/preset-small-lib":"^8.1.0"},"_npmOperationalInternal":{"tmp":"tmp/pattern-key-compare_2.0.0_1672730148850_0.7847794794624952","host":"s3://npm-registry-packages"}},"2.0.1":{"name":"pattern-key-compare","version":"2.0.1","description":"PATTERN_KEY_COMPARE implementation","keywords":["resolve","esm","fields","nodejs"],"homepage":"https://github.com/cyberuni/resolve.imports","bugs":{"url":"https://github.com/cyberuni/resolve.imports/issues"},"repository":{"type":"git","url":"https://github.com/cyberuni/resolve.imports.git","directory":"packages/pattern-key-compare"},"license":"MIT","author":{"name":"Homa Wong (unional)","email":"homawong@gmail.com"},"sideEffects":false,"type":"module","exports":{".":{"types":"./esm/index.d.ts","import":"./esm/index.js","default":"./cjs/index.js"},"./package.json":"./package.json"},"main":"./cjs/index.js","types":"./esm/index.d.ts","devDependencies":{"@types/node":"^26.4.0","@vitest/coverage-v8":"^4.1.11","depcheck":"^1.4.7","rimraf":"^6.1.3","tsdown":"^0.22.14","typescript":"^7.0.2","vitest":"^4.1.11"},"engines":{"node":">=20"},"scripts":{"build":"tsdown","clean":"rimraf cjs esm coverage","coverage":"vitest run --coverage","depcheck":"depcheck","nuke":"pnpm clean && rimraf node_modules","test":"vitest run","typecheck":"tsc","watch":"vitest"},"_nodeVersion":"24.19.0","_id":"pattern-key-compare@2.0.1","dist":{"integrity":"sha512-U7TlQh5UNim9KG3hTPj1nb13OF+qlpMOOuUrCDyF0yV1qCl83hLOIwPnx6JJ2QQJAzFiZfYyfbeFsIVp+SgKHQ==","shasum":"864c6bcf48880c5b97e38c4a9507a3392f681536","tarball":"https://registry.npmjs.org/pattern-key-compare/-/pattern-key-compare-2.0.1.tgz","fileCount":8,"unpackedSize":7638,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/pattern-key-compare@2.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDYZizajwLkvXfvtElZhBtmoSewSZoGpwe7BroKMmRlogIgRgVfaME233ZDB+LLhPrfk8brn2I+6NYrF848W1PzH+I="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:65f912e3-685a-461f-9145-9f8054062980"}},"directories":{},"maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pattern-key-compare_2.0.1_1788280546593_0.07027849714389167"},"_hasShrinkwrap":false}},"time":{"created":"2023-01-01T23:29:02.892Z","modified":"2026-09-01T16:35:47.039Z","1.0.0":"2023-01-01T23:29:03.120Z","2.0.0":"2023-01-03T07:15:49.004Z","2.0.1":"2026-09-01T16:35:46.730Z"},"bugs":{"url":"https://github.com/cyberuni/resolve.imports/issues"},"author":{"name":"Homa Wong (unional)","email":"homawong@gmail.com"},"license":"MIT","homepage":"https://github.com/cyberuni/resolve.imports","keywords":["resolve","esm","fields","nodejs"],"repository":{"type":"git","url":"https://github.com/cyberuni/resolve.imports.git","directory":"packages/pattern-key-compare"},"description":"PATTERN_KEY_COMPARE implementation","maintainers":[{"name":"unional","email":"homawong@gmail.com"}],"readme":"# pattern-key-compare\n\n[![NPM version][npm-image]][npm-url]\n[![NPM downloads][downloads-image]][downloads-url]\n[![Codecov][codecov-image]][codecov-url]\n\nImplementation of `PATTERN_KEY_COMPARE` of [Node.js resolver algorithm][resolver-algorithm].\n\nIt implements the [updated algorithm](https://github.com/nodejs/node/pull/46068):\n\n`PATTERN_KEY_COMPARE(keyA, keyB)`\n\n1. Assert: `keyA` contains only a single `\"*\"`.\n2. Assert: `keyB` contains only a single `\"*\"`.\n3. Let `baseLengthA` be the index of `\"*\"` in `keyA` plus one.\n4. Let `baseLengthB` be the index of `\"*\"` in `keyB` plus one.\n5. If `baseLengthA` is greater than `baseLengthB`, return `-1`.\n6. If `baseLengthB` is greater than `baseLengthA`, return `1`.\n7. If the length of `keyA` is greater than the length of `keyB`, return `-1`.\n8. If the length of `keyB` is greater than the length of `keyA`, return `1`.\n9. Return `0`.\n\n## Notes\n\n> Assert: keyA/B ends with \"/\" or contains only a single \"*\"\n\nNote that this is not correct as nowadays it supports file extensions. e.g.:\n\n- `#a/b.js`\n- `./foo/*.js`\n\n## Install\n\n```sh\n# npm\nnpm install pattern-key-compare\n\n# yarn\nyarn add pattern-key-compare\n\n# pnpm\npnpm add pattern-key-compare\n\n# rush\nrush add -p pattern-key-compare\n```\n\n## Usage\n\n```ts\nimport { patternKeyCompare } from 'pattern-key-compare'\n\n[...].sort(patternKeyCompare)\n```\n\n[codecov-image]: https://codecov.io/gh/cyberuni/resolve.imports/branch/main/graph/badge.svg\n[codecov-url]: https://codecov.io/gh/cyberuni/resolve.imports\n[downloads-image]: https://img.shields.io/npm/dm/pattern-key-compare.svg?style=flat\n[downloads-url]: https://npmjs.org/package/pattern-key-compare\n[npm-image]: https://img.shields.io/npm/v/pattern-key-compare.svg?style=flat\n[npm-url]: https://npmjs.org/package/pattern-key-compare\n[resolver-algorithm]: https://nodejs.org/api/esm.html#resolver-algorithm-specification\n","readmeFilename":""}