{"_id":"create-esm-loader","_rev":"12-f555224bfaf64b52ddfc409b5adc07dd","name":"create-esm-loader","dist-tags":{"latest":"0.2.5"},"versions":{"0.0.1-alpha.0":{"name":"create-esm-loader","version":"0.0.1-alpha.0","description":"A utility library for creating Node loader hooks","type":"module","main":"lib/create-loader.js","exports":{".":"./lib/create-loader.js"},"engines":{"node":">=14.x"},"scripts":{"test":"mocha"},"repository":{"type":"git","url":"git+https://github.com/sebamarynissen/create-esm-loader.git"},"keywords":["esm","loader","node"],"author":{"name":"Sebastiaan Marynissen","email":"sebastiaan.marynissen@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/sebamarynissen/create-esm-loader/issues"},"homepage":"https://github.com/sebamarynissen/create-esm-loader#readme","devDependencies":{"chai":"^4.2.0","chai-spies":"^1.0.0","mocha":"^8.2.1"},"gitHead":"f0ad1662fcb141a5eeffeeaa35083dff27c1a83e","_id":"create-esm-loader@0.0.1-alpha.0","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-T3KH68/KwQDqT+smTaJB+Rb7urKphZXmvjvjJGEqLWQPzH0Jlw+12iVx/oS2KVuJ0M4pjPVxkBBw447gcwH2pg==","shasum":"7439d565f20d2450e7c8e3829396dfb613a3b370","tarball":"https://registry.npmjs.org/create-esm-loader/-/create-esm-loader-0.0.1-alpha.0.tgz","fileCount":5,"unpackedSize":14590,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfsoHSCRA9TVsSAnZWagAAXrMP/RP4cS/XztFXJW7OHjht\nw9Gj2RCk5sV8Y317MXpiBmvojCRNWLAfPpuHy1KzEsdnxwaBFMhuES9zG6BZ\nwYfqU9Vn+UTWCZyaof5mn7TFP7WwYOm/ORqkWWIsEVFbzTiIc2jYIIBokg/+\nY4wPyUmcqY87rhaXfZI1GT9rKL03qaXxIVXca5BCPIgPu+BmvbFzP/XZVu8z\nXyLA1OrRut1kpCqJJgX313baLP3276KXMvbq/tZeKHsBfBxrfGUo6LR37skb\nXMnD2Jtus8C5+d1t/XfAuA860jXSCCxNIZbm/qq3LK+BYJmkS80vjJK2jeu2\nQgDWIZ8yjElaczXsjjE+ZVmOXlOB00313+OS4xaz2emJ5T/7lQZS0+kqeWw6\n+9nZ73eOdKZDTjxDFt8CzpVlYYVpKW+Ib2rzzGlYpgKhWBEiQiH6llu/cbci\n+VPxrMkmVnD7GpRbyjYsvLVpU+TQTLs2vELR+uEnYkzCqN57DLfF8cvEFfS5\nJXPTX5BIPVmBUExxYMH293aSZE/I6tYkfW8FFT0Um4ShwCEZ60i5o72By/2r\nguNASUX9tpggWXWjKSK4ar/diirptlj2b8liyEgUvkaCrZBj1kIcvGNGvwE6\nKKbhb6pI38y1YqlR5K/H5sVvjMr67thDLqafE1UlPHN/uti0pZ+KK6oSOhX8\n9T62\r\n=A3Ya\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHIUOGIXA9vJOVeqcNppT4bFxl1K5TxRn4bRdXjNjlFgAiEAnR0QiqSZRvFL4P/Z7BxkLMu25ppLd1e55hMO4XHTXf4="}]},"_npmUser":{"name":"sebamarynissen","email":"sebastiaan.marynissen@gmail.com"},"directories":{},"maintainers":[{"name":"sebamarynissen","email":"sebastiaan.marynissen@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/create-esm-loader_0.0.1-alpha.0_1605534161539_0.15448114205628705"},"_hasShrinkwrap":false},"0.0.1":{"name":"create-esm-loader","version":"0.0.1","description":"A utility library for creating Node loader hooks","type":"module","main":"lib/create-loader.js","exports":{".":"./lib/create-loader.js"},"engines":{"node":">=14.x"},"scripts":{"test":"mocha"},"repository":{"type":"git","url":"git+https://github.com/sebamarynissen/create-esm-loader.git"},"keywords":["esm","loader","node"],"author":{"name":"Sebastiaan Marynissen","email":"sebastiaan.marynissen@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/sebamarynissen/create-esm-loader/issues"},"homepage":"https://github.com/sebamarynissen/create-esm-loader#readme","devDependencies":{"chai":"^4.3.4","chai-spies":"^1.0.0","mocha":"^9.1.3","typescript":"^4.4.4"},"dependencies":{"semver":"^7.3.5"},"gitHead":"6952b1ae4b03c46d8e00cf4468d13578b6582947","_id":"create-esm-loader@0.0.1","_nodeVersion":"16.12.0","_npmVersion":"8.1.0","dist":{"integrity":"sha512-35mMPDHFQefDhyYJqvBS2jnI6otfLDtic6HkB88ri8Mo59hSZJJU5R/3f7tIjeDuLE5/shs6g8qTu/Nl+hj+hg==","shasum":"00c4274cda041b58a2f9a6d0efa6e14db6f121b7","tarball":"https://registry.npmjs.org/create-esm-loader/-/create-esm-loader-0.0.1.tgz","fileCount":5,"unpackedSize":17687,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBF5+9j5LQ2DDQPYoFHfJJs8v1TnG+YMDC7fUGVUvHF2AiEAj7Mih9/uGHgV9sKBvp9QDUnuPhSO7MUe7UK8RNkLsp0="}]},"_npmUser":{"name":"sebamarynissen","email":"sebastiaan.marynissen@gmail.com"},"directories":{},"maintainers":[{"name":"sebamarynissen","email":"sebastiaan.marynissen@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/create-esm-loader_0.0.1_1635184703324_0.3718981813886115"},"_hasShrinkwrap":false},"0.1.0":{"name":"create-esm-loader","version":"0.1.0","description":"A utility library for creating Node loader hooks","type":"module","main":"lib/create-loader.js","exports":{".":"./lib/create-loader.js"},"engines":{"node":">=14.x"},"scripts":{"test":"mocha"},"repository":{"type":"git","url":"git+https://github.com/sebamarynissen/create-esm-loader.git"},"keywords":["esm","loader","node"],"author":{"name":"Sebastiaan Marynissen","email":"sebastiaan.marynissen@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/sebamarynissen/create-esm-loader/issues"},"homepage":"https://github.com/sebamarynissen/create-esm-loader#readme","devDependencies":{"chai":"^4.3.4","chai-spies":"^1.0.0","mocha":"^9.1.3","typescript":"^4.4.4"},"dependencies":{"semver":"^7.3.5"},"gitHead":"8977450c84d0065d9a8bcd669a7d1663bd4d2b09","_id":"create-esm-loader@0.1.0","_nodeVersion":"16.12.0","_npmVersion":"8.1.0","dist":{"integrity":"sha512-CAXjX26ZavWLt0Wj6tIOWagL4JUhgtFqfbQykK171Su/CLvFGlS52R33TO0ze70BECu4LaYLDYL8Kpng3eXhMQ==","shasum":"6448db46308e9029780469ae065a2de4beed0bb6","tarball":"https://registry.npmjs.org/create-esm-loader/-/create-esm-loader-0.1.0.tgz","fileCount":5,"unpackedSize":17819,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICNpbR4SdDLsSPbwnp8T8iWitqvn4LvrzFQ/SBf0pAkoAiBZYx6veByMHxz6E1mnWntzrA7T89zYc5f79C8VtdMWQQ=="}]},"_npmUser":{"name":"sebamarynissen","email":"sebastiaan.marynissen@gmail.com"},"directories":{},"maintainers":[{"name":"sebamarynissen","email":"sebastiaan.marynissen@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/create-esm-loader_0.1.0_1635234352652_0.5735451897942936"},"_hasShrinkwrap":false},"0.1.1":{"name":"create-esm-loader","version":"0.1.1","description":"A utility library for creating Node loader hooks","type":"module","main":"lib/create-loader.js","exports":{".":"./lib/create-loader.js"},"engines":{"node":">=14.x"},"scripts":{"test":"mocha"},"repository":{"type":"git","url":"git+https://github.com/sebamarynissen/create-esm-loader.git"},"keywords":["esm","loader","node"],"author":{"name":"Sebastiaan Marynissen","email":"sebastiaan.marynissen@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/sebamarynissen/create-esm-loader/issues"},"homepage":"https://github.com/sebamarynissen/create-esm-loader#readme","devDependencies":{"chai":"^4.3.4","chai-spies":"^1.0.0","mocha":"^9.1.3","typescript":"^4.4.4"},"dependencies":{"semver":"^7.3.5"},"gitHead":"be4a62e2d2258f99c0ab5ac8f673bf4ae7aeb2bd","_id":"create-esm-loader@0.1.1","_nodeVersion":"16.13.0","_npmVersion":"8.1.0","dist":{"integrity":"sha512-WpTsvVJ+g5Ngx6YtmpGITRzX2l0n5EUaSXM7ES6Tn2UTCpVB7x5LmWPeRu+khLH/ConDWKMV1L3+nZoVsJMGHw==","shasum":"a28588700e8d50e7e727cd4cd0e19b6531085216","tarball":"https://registry.npmjs.org/create-esm-loader/-/create-esm-loader-0.1.1.tgz","fileCount":4,"unpackedSize":19048,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2nGtCRA9TVsSAnZWagAAB6gP/RDcqmljEbniiSbB0qi2\nQQ9Wu+FhksYQ3uh6zCIzg7rx3F5H4T5hOZsEKh+AMxQ3NJtpYhUajsXAhT9M\nLmZcIb4j4ZnbAzCFh9BG2AR5fDfsWdCGLAjPTLbh4Kcko2+adeI7+fvUJj/i\nrtKFVJABedkbsoYeamxz2jg+fvAfWEahTgbriI359mI/ryP2oe5FiYPBjjN6\nNxbMGXlvwbrMSO9Hg6YFgyONkuo0MAPb6OlwSPvduSzdhkCGt7VwvbeUouez\n8clId/emUfICAN4/WvvEvW4GJ2mxaaO0/R1++bVFNhjE+enMQo1lZ7OjsdpE\n4+X83Ib0toeGaN0OSZcEJeHGlDDuVedaMh3dnjVORsIskWMRlakvWxRc0sNQ\nxtksQatzb+5xd3U73mNYQ1rRSZ7sNCf2KJJT/N4OO1veqVnRgefzfXapUxq5\nkcMAhBwRUUXe1wV19DeZaL2XQc2qyXCHAdm3ddsifbE+wLNKnlZ6k1sk1C0C\nH2AnJ2yXEKbDvCdGG1yFxyjeOZcJBNLY9gwArEeVnX//mTqmgCsv5ooWURlT\n1QPWiLXIdZT9S3jrl8p33/b+Hl/5SugpReQxwmt9zFO7pmifDnrVXICV1wXy\nzUjrTkKDxyFWKE6dI9wx0bXU5uas8Tl6w8bedhONT+Sm0zhWUZ2yxt8S4mdS\npf1E\r\n=Tavg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDfJhUNcN0MqrE10Ps/Mnvxo5jMZ+pbEmT++rTOPv7fRAIgNVsU7eYeOt5sfWAtJtsRShKxEgAxUlGhI7NR7DGNwMs="}]},"_npmUser":{"name":"sebamarynissen","email":"sebastiaan.marynissen@gmail.com"},"directories":{},"maintainers":[{"name":"sebamarynissen","email":"sebastiaan.marynissen@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/create-esm-loader_0.1.1_1635318917998_0.6065798095244137"},"_hasShrinkwrap":false},"0.1.2":{"name":"create-esm-loader","version":"0.1.2","description":"A utility library for creating Node loader hooks","type":"module","main":"lib/create-loader.js","exports":{".":"./lib/create-loader.js"},"engines":{"node":">=14.x"},"scripts":{"test":"mocha"},"repository":{"type":"git","url":"git+https://github.com/sebamarynissen/create-esm-loader.git"},"keywords":["esm","loader","node"],"author":{"name":"Sebastiaan Marynissen","email":"sebastiaan.marynissen@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/sebamarynissen/create-esm-loader/issues"},"homepage":"https://github.com/sebamarynissen/create-esm-loader#readme","devDependencies":{"chai":"^4.3.4","chai-spies":"^1.0.0","mocha":"^9.1.3","typescript":"^4.4.4"},"dependencies":{"semver":"^7.3.5"},"gitHead":"aee9d21878c669c42ee99f811375f726d034c511","_id":"create-esm-loader@0.1.2","_nodeVersion":"16.17.0","_npmVersion":"8.1.4","dist":{"integrity":"sha512-5AVD7/0UOtO7uMDpkvY7Lo5KeBQ7auOLg/vXfHqiDCGqE1cvMWvHl/h9NOMphh7Pgei5/w9czkOh4Ysx03260A==","shasum":"76fdd667d8593a0ea7efdda2e142d4853c5e4399","tarball":"https://registry.npmjs.org/create-esm-loader/-/create-esm-loader-0.1.2.tgz","fileCount":4,"unpackedSize":19727,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICtcLirdeYmw1PLe4zIntAk0dWULwwgrmmdz61PdcucAAiEA94T95kHCtXzsWTjNLaCfxK3QL1UEj95K/91c1sLN4RQ="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjCKvGACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqlpw//Yi51CBvb/zqLAjLBz416HW1eUFC/mAZgiECZ8Rnw9Q4bbVkJ\r\nTSFfy13IfzVQkMN4DSQgH0aXYAgISmej2m/sggt0qXsDRvDujKN75PoR3gBm\r\nH9egCGTFDt7FC3DV5tk3EULVJ4v6kQ0DFz9RcVAwisuz+mvsoZA1sd871JxP\r\nDg2eQC7MKlPlNtbDl7mX6HprsL+TS6pTDB1Fnp1hPlDV9kmKj34siZncB4YA\r\nzWeFAmn+9xMHUfnIjxlswBPT8rENUtW3sf9OwmvO10qsNbjZH1nkVJMEXv5g\r\n79Z9AnyEbjM17dZngySUfeehjZwApSjq5Dm7Owir3CZMFOc3EAa9wIpjdPmD\r\njOWLAPWD8ragY0hm2xwacI/FRUPQurT5xQlRvdURuP9cP/6OMz5gt01QpRBF\r\n14WaUtPV8Q6rZstKX14T7Prt+SRrORpt2OWdM+sdGR9KocuYmA9WMFsidthq\r\nmdIjkMYOGyUVCmaioheNme6MvlkMSJ+FIvWOhtsi96du1PM3HawwNOeLFZO3\r\n/arOzztOCOtvG9UVfxOggmUSgFx+NIOdoWX1onM8UiMwJnYvy1t1XtG5DXzh\r\nE17DXJM1S3CoeblNfK/59QffJ+lcpl5xBqO7eF76zmCu/A9iC07FtI/g2wDF\r\nC7jlOXPg6HMdgekJSQG5pVDsx0fndqOHFD4=\r\n=NeNR\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"sebamarynissen","email":"sebastiaan.marynissen@gmail.com"},"directories":{},"maintainers":[{"name":"sebamarynissen","email":"sebastiaan.marynissen@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/create-esm-loader_0.1.2_1661512646295_0.52198943720526"},"_hasShrinkwrap":false},"0.2.0":{"name":"create-esm-loader","version":"0.2.0","description":"A utility library for creating Node loader hooks","type":"module","main":"lib/create-loader.js","exports":{".":"./lib/create-loader.js"},"engines":{"node":">=14.x"},"scripts":{"test":"mocha"},"repository":{"type":"git","url":"git+https://github.com/sebamarynissen/create-esm-loader.git"},"keywords":["esm","loader","node"],"author":{"name":"Sebastiaan Marynissen","email":"sebastiaan.marynissen@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/sebamarynissen/create-esm-loader/issues"},"homepage":"https://github.com/sebamarynissen/create-esm-loader#readme","devDependencies":{"chai":"^4.3.4","chai-spies":"^1.0.0","mocha":"^9.1.3","ts-loader":"^9.4.2","typescript":"^4.4.4","webpack":"^5.75.0"},"dependencies":{"semver":"^7.3.5"},"gitHead":"d99783cb4b2738952d6a2f4549e97f5e759509c0","_id":"create-esm-loader@0.2.0","_nodeVersion":"18.13.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-o2807yJphHq4ZmRNE2VMQGTjUa0A+9umEw5TTTxNfgl/1mfOMz5lbOuLtcYhKbEFldGleg3Eg82l3hSRkO9HeQ==","shasum":"d92a8ee74170b87be1356febe5295cc50ffe2379","tarball":"https://registry.npmjs.org/create-esm-loader/-/create-esm-loader-0.2.0.tgz","fileCount":5,"unpackedSize":30022,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHe6ghXynVkj/y8Y3zml1559MkQTM25yKhEXYpkU2JG5AiAXdBT73tREck+rcdpgp8jZAUIbNkH9d36rf2GRfwKsng=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkGyVVACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr2Gg/9HUwCxPO4HUQZy68q3kCJAbbUdEFKoyMK37KFF3nP74I6oJFV\r\nFAWUi9SbNXwCwpJFegvf7PFEC1ylRnINfIyfY7Sbay5NPW9vYuj0BBSp3UqJ\r\nMJTOWDnJDH27QBjosdWKeALZ23JyWOAs1hF68r9QdztJPyxTnonyqVCxTQei\r\nbLjEzIyuOkFbGYxyANrnk5rAlA1nkYJ0L8MxnBfG9hhnmW6TpeOPgU+H527B\r\nlAuuC7d0NvYr8UGRyGsuWAbe1nAdbIewA1uBQITUXTY1WPtF8uZLT18Hoeoi\r\nrzKhyJVEfcO/coVHlBBqrnyUxKR7qKLvoCxUij6jYcHCy3CfpIGsfLbFhIAF\r\nXWHdrqa5kyAX1h1vClvN0GbB+rtu8XRAfAS1VRZIY1iaehtEVHt4LMXdJpgL\r\nHuMMxPlXaOG06uXBjGNrkwBWsH5CFtSJ3GXL4YVj5jUFlPbSP0Bmswt0ZYBT\r\nwKD7Ae9/CnDpowxD8WDGUQXK7Gpvdrv0sMHXY6jhZ7cerOGoWK4wIeygJSG2\r\nz2F5r19g2Y+vnWvRHJD/tp08xIo0ZGxw+lTlabJbUJc1yIQ+U0oOSkCzhCRa\r\nAHK/Utao5INgDXDx3b6YzPsT8PyZAcaOXK+Ga06HDwfRsrTnehSZ/Ff1mgyT\r\nP+SnOU6Me7tqcdM9Ch4Xn51Cw99igw8d9JY=\r\n=V7/X\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"sebamarynissen","email":"sebastiaan.marynissen@gmail.com"},"directories":{},"maintainers":[{"name":"sebamarynissen","email":"sebastiaan.marynissen@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/create-esm-loader_0.2.0_1679500629784_0.8015749920593576"},"_hasShrinkwrap":false},"0.2.1":{"name":"create-esm-loader","version":"0.2.1","description":"A utility library for creating Node loader hooks","type":"module","main":"lib/create-loader.js","exports":{".":"./lib/create-loader.js"},"engines":{"node":">=14.x"},"scripts":{"test":"mocha"},"repository":{"type":"git","url":"git+https://github.com/sebamarynissen/create-esm-loader.git"},"keywords":["esm","loader","node"],"author":{"name":"Sebastiaan Marynissen","email":"sebastiaan.marynissen@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/sebamarynissen/create-esm-loader/issues"},"homepage":"https://github.com/sebamarynissen/create-esm-loader#readme","devDependencies":{"chai":"^4.3.4","chai-spies":"^1.0.0","mocha":"^9.1.3","ts-loader":"^9.4.2","typescript":"^4.4.4","webpack":"^5.75.0"},"dependencies":{"semver":"^7.3.5"},"gitHead":"bde605405876d077149173644a451f95518930a0","_id":"create-esm-loader@0.2.1","_nodeVersion":"18.13.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-QOPXPdsE6APRGXMjrA7C8CMizSgQBCJgGpnXwM9oV8NHjdfOjelLk8MWcDq2m4krq9lFoMiiRdKrsA9uNbfFcA==","shasum":"52666d84b0d57b2271208121708828537f08a240","tarball":"https://registry.npmjs.org/create-esm-loader/-/create-esm-loader-0.2.1.tgz","fileCount":5,"unpackedSize":30027,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBTMXNSCj88vrcZQ6PIyBAjqAoP8sGRYq+anTpgHKumVAiEA+l1LXVKEL7QE7BvazbQ62gHSX2DiGLeKwo4j8+R4S1c="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkGyc2ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmob5hAAoBv03p7j3EtwlYaFo2xYvNm5aY29tNZ42oyEgwo+yFjl/Due\r\nDADFoFNLcPgjIoygblbaJgeTZMvhvATAUY++Vt6HW0qjFbwHpoXgsWMflE5h\r\neHFBL1oeDihIJ4sSciKpD+UnzSuPtUdt5MXHrqs3p9RMcYMgkpQNvInWfUsu\r\n0SimEHEV+uHG/276ykHd033yP52rj2hiX0H90Ciw7Ae8bbpXJSXcg2j2ZVyt\r\nEGS4PbfMkkWNrOkLqWCTH/PhRVfojwL2fFVdJJCOAhydcERoa8S316nxtCnE\r\nB5GQmAfUbI9cGd0C+MuaRGsfBQPMViuCFFrUGq1VJUfaNLsDaFmD6ZPHyIlZ\r\nzUrou6cdUJAFGC882ruuwLoG+NQIvKcJSjt5yEH9dUIewFV1IRAY5BVE86Ss\r\n8t8fsSO+URYO8E9cwoNe9gWBdo1TbFUTgllxELByx20iAVMYuwrr1vKqo5C8\r\nEd9uvFoidYUb2ZJdlBeHGM20dTLcGaqnO5841N56OyepaQ61S9zBVWbDJVTc\r\nAwAWb7/zLBxCeTUjqhavVjCrRzkPOvp0RlMYCJGaOtXuFsBzk1oIhEIGKmVj\r\n2bER/jWD9wqMH0oVpO6F6XIrrUQLsbYv6BIYxLkgKvl8fLzAJ4hl8YvWC6Mk\r\nLYwK55ABESXCrdBBAizPCBnkoc0p2vXZQoU=\r\n=YiQL\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"sebamarynissen","email":"sebastiaan.marynissen@gmail.com"},"directories":{},"maintainers":[{"name":"sebamarynissen","email":"sebastiaan.marynissen@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/create-esm-loader_0.2.1_1679501110010_0.9108303433467773"},"_hasShrinkwrap":false},"0.2.2":{"name":"create-esm-loader","version":"0.2.2","description":"A utility library for creating Node loader hooks","type":"module","main":"lib/create-loader.js","exports":{".":"./lib/create-loader.js"},"imports":{"#test/files/*":"./test/files/*"},"engines":{"node":">=14.x"},"scripts":{"test":"mocha"},"repository":{"type":"git","url":"git+https://github.com/sebamarynissen/create-esm-loader.git"},"keywords":["esm","loader","node"],"author":{"name":"Sebastiaan Marynissen","email":"sebastiaan.marynissen@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/sebamarynissen/create-esm-loader/issues"},"homepage":"https://github.com/sebamarynissen/create-esm-loader#readme","devDependencies":{"chai":"^4.3.4","chai-spies":"^1.0.0","mocha":"^9.1.3","ts-loader":"^9.4.2","typescript":"^4.4.4","webpack":"^5.75.0"},"dependencies":{"semver":"^7.3.5"},"gitHead":"1eb3790e94792a7cecf1fbed88b02fb63de1c38c","_id":"create-esm-loader@0.2.2","_nodeVersion":"18.13.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-9S6FHZ9e+iJ1O4FcrW8N+TSWsppmsIHKFCXXP1NYrfcVVEfcIiAc7FruZdZsjJNwJY6IKG8Qb6YIJ+YMgWeHkw==","shasum":"d514238bff4c41e757b3674a07f26f5f29850ace","tarball":"https://registry.npmjs.org/create-esm-loader/-/create-esm-loader-0.2.2.tgz","fileCount":5,"unpackedSize":30336,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC0WXUJ0yaa5OnHfV8/LEj+it/JhrKg/5usmYN2K3URqgIhAMNPlad7BPTmtdeJisCXtQ0hqGRtDkf1njuJWDJYTGKO"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkGzCRACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoeCw//UyUovXndAs7ACXkuxf6t7dxtgWV5JiIAMwIrfQeowBXedsIT\r\nBP6aPWIFqziZAtWoLrk9esahhYR4TqqyUqeh3Xk4bITWf1DoJtmo7GzQGrYQ\r\nBsJ4qti0+HYYQSUNNRQKm7/AWdjlXcmHBY0py3Kewx48VTZ46cJuyEDv7qZw\r\nrT71WeV3OUpz72m/yl0FKXKluceXPjjo57gSx/m1/9lrqZUfW1gi+qgDBv8y\r\nAkNdQhnGIoMQEy6gvn9XXsTISzI3o+T4bxQGNUuQKM8FMvZRcdkxUbddVgJK\r\nzECTJsKX3Vf1z0ExY6CXbfKwaK2N1tkXap/nuxmQDaqcLTfuDUnoIyOKn+Xg\r\nHo36iVcq1Y2QOBzQWKS3hUaMQc0S4EeYkSnu2kY/0V9+pVNhposKsM5m0F9e\r\nu1xWjVwGworXdjruaheykOX83QCXovmBT/E0oZSOv5ERxjarvJvhs1oDVLn2\r\nzPsAfShqWCpRzd4X6woed2f67UuVYgEIqmXs3Asj8FADzgcgyG0NJwp3iCs2\r\n/aJ4D1If+oqRMo9W9NNctJbzNF1XoezL04jB2caCC0vbl0SPxu9lG9frorLx\r\n/9PE5AdFGVddNXJkd5wi+a95njrfqdCcATVBK1s9b4aKxZzeSYP59Fg7Gtzr\r\nSWulaXwtmv56x6EpxCOmQXTmeD6zBOJtdOQ=\r\n=f0eG\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"sebamarynissen","email":"sebastiaan.marynissen@gmail.com"},"directories":{},"maintainers":[{"name":"sebamarynissen","email":"sebastiaan.marynissen@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/create-esm-loader_0.2.2_1679503505149_0.4748546722895639"},"_hasShrinkwrap":false},"0.2.3":{"name":"create-esm-loader","version":"0.2.3","description":"A utility library for creating Node loader hooks","type":"module","main":"lib/create-loader.js","exports":{".":"./lib/create-loader.js"},"imports":{"#test/files/*":"./test/files/*"},"engines":{"node":">=14.x"},"scripts":{"test":"mocha","lint":"eslint lib test"},"repository":{"type":"git","url":"git+https://github.com/sebamarynissen/create-esm-loader.git"},"keywords":["esm","loader","node"],"author":{"name":"Sebastiaan Marynissen","email":"sebastiaan.marynissen@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/sebamarynissen/create-esm-loader/issues"},"homepage":"https://github.com/sebamarynissen/create-esm-loader#readme","devDependencies":{"@whisthub/eslint-config":"^1.0.2","chai":"^4.3.4","chai-spies":"^1.0.0","eslint":"^8.36.0","mocha":"^9.1.3","ts-loader":"^9.4.2","typescript":"^4.4.4","webpack":"^5.75.0"},"dependencies":{"semver":"^7.3.5"},"gitHead":"a0541c35f36dcd2afe352b6a023ddbe77cdf97bb","_id":"create-esm-loader@0.2.3","_nodeVersion":"18.12.0","_npmVersion":"8.19.2","dist":{"integrity":"sha512-cllzD6IU/mzXBs5OdQVWL3+ne5Elpu3Wdm7h5OldMbGXk76yr9XzHlQXWJ4zfs0ZAibe26rkbs4KvMAJm7fIZA==","shasum":"cf7d5b4f46206b9030bdb15987efa2bb74dbfa7b","tarball":"https://registry.npmjs.org/create-esm-loader/-/create-esm-loader-0.2.3.tgz","fileCount":5,"unpackedSize":31179,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD2yYzNJN1c1nZ6t01JNOP+BS9izn9UYOVpMtfzHbSFawIhALASp0X1xD/70ULjgNVjuDiys/UN9qAwjdGARz5Z0qIh"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkG2m+ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr5fA/+IUoPeIRBsZubdBNAyPxMti5A1hLH8zIbhPyvwsz8YA83QDen\r\nWLGd2uuKPHv9yMrQCtuXZanGpI9fT0/bCetNLpYiPNhcZ4I7plaXvXcb6cvb\r\nbvG3P81efsRUGhR3tJ6Fv5vIOwn0cYClQvunRmmrF50nMFAY4FLwbCGVz1mJ\r\ngGiSknCgDUd6OCnV04mzWVfdXbf44YolWUsLXz3Czpud0OpFs34XQ0qQbUR5\r\nodjyT/GK7xYHRbALw8elBD3hssKVA5d2Gx/LGsAAIX4/MKeDOxnwXTueZZVb\r\nx16cULMO/IQzawMWjxZFOZ5h7VtFhugmac6DlyeDKTDD+atVzGNCRdZKf3iw\r\nc6cWMuLO5hr/ey2UpvPt02pVHEE8/uA+xcgEbPqa7GimU3bRLgYs/bY6MTBL\r\nu/I5TGKHFMgcsfEl+zGC/uhvPfklkfgkcRr8/AdJm1cc+PRLBFySyYJV0/dD\r\nFvOTMyi6oe59BqGgepGyegsYe/kQoQAK2aDJropBjRgZ9nTkWsum2fddkLbF\r\nODLIg2y6+iQUFETcQvoI11CiNVFtPUJTG9eFpPJC9wW74EG/p7gEJo6LanZ6\r\nnmv5hstEVFBolvCrnEpcotEdFws8k+xVi3g9nCvF61JnldlxMs+M+4N6RjE+\r\novwjoDJBgkwAeuWlxX1wt8xWFOFUDOUwDQY=\r\n=lJs6\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"sebamarynissen","email":"sebastiaan.marynissen@gmail.com"},"directories":{},"maintainers":[{"name":"sebamarynissen","email":"sebastiaan.marynissen@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/create-esm-loader_0.2.3_1679518142151_0.6955007247948588"},"_hasShrinkwrap":false},"0.2.4":{"name":"create-esm-loader","version":"0.2.4","description":"A utility library for creating Node loader hooks","type":"module","main":"lib/create-loader.js","exports":{".":"./lib/create-loader.js"},"imports":{"#test/files/*":"./test/files/*"},"engines":{"node":">=14.x"},"scripts":{"test":"mocha","lint":"eslint lib test"},"repository":{"type":"git","url":"git+https://github.com/sebamarynissen/create-esm-loader.git"},"keywords":["esm","loader","node"],"author":{"name":"Sebastiaan Marynissen","email":"sebastiaan.marynissen@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/sebamarynissen/create-esm-loader/issues"},"homepage":"https://github.com/sebamarynissen/create-esm-loader#readme","devDependencies":{"@whisthub/eslint-config":"^1.0.2","chai":"^4.3.4","chai-spies":"^1.0.0","eslint":"^8.36.0","mocha":"^9.1.3","ts-loader":"^9.4.2","typescript":"^4.4.4","webpack":"^5.75.0"},"dependencies":{"semver":"^7.3.5"},"_id":"create-esm-loader@0.2.4","gitHead":"5bd9a5b183d2487854acde2dc9ed1f7ab8da6405","_nodeVersion":"18.18.0","_npmVersion":"9.8.1","dist":{"integrity":"sha512-COjlrIKjDjMy1NGpZCn69wYxwMuA/YCfe94YYoO+4nGuDm2Q3V1Q3yo/FzJtgdSAsjuA7E8yoVGU5UdcTSj5+w==","shasum":"b8167adbb297ac68fd6146f12e00c2c398e1374d","tarball":"https://registry.npmjs.org/create-esm-loader/-/create-esm-loader-0.2.4.tgz","fileCount":5,"unpackedSize":31624,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICxfXKNnUBgx0B7GpwWbF8e9hldLAH8uKs6ac/3/XyW8AiEAt0yhvwvegUuPKTo2otUo7ySax03dFZFPBUCuDZS4pWo="}]},"_npmUser":{"name":"sebamarynissen","email":"sebastiaan.marynissen@gmail.com"},"directories":{},"maintainers":[{"name":"sebamarynissen","email":"sebastiaan.marynissen@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/create-esm-loader_0.2.4_1695215262938_0.15588607194519466"},"_hasShrinkwrap":false},"0.2.5":{"name":"create-esm-loader","version":"0.2.5","description":"A utility library for creating Node loader hooks","type":"module","main":"lib/create-loader.js","exports":{".":"./lib/create-loader.js"},"imports":{"#test/files/*":"./test/files/*"},"engines":{"node":">=14.x"},"scripts":{"test":"mocha","lint":"eslint lib test"},"repository":{"type":"git","url":"git+https://github.com/sebamarynissen/create-esm-loader.git"},"keywords":["esm","loader","node"],"author":{"name":"Sebastiaan Marynissen","email":"sebastiaan.marynissen@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/sebamarynissen/create-esm-loader/issues"},"homepage":"https://github.com/sebamarynissen/create-esm-loader#readme","devDependencies":{"@whisthub/eslint-config":"^1.0.2","chai":"^4.3.4","chai-spies":"^1.0.0","eslint":"^8.36.0","mocha":"^9.1.3","ts-loader":"^9.4.2","typescript":"^4.4.4","webpack":"^5.75.0"},"dependencies":{"semver":"^7.3.5"},"_id":"create-esm-loader@0.2.5","gitHead":"8b39ef30c57a074dc28a57ad212b6edc6220281f","_nodeVersion":"20.7.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-WSg6l2sre6yVp0C4HYzYSJUn6H5tp7av6ZkGyiIKayR+xBqEYPrtxL+LAz8f+wD2VJs7/PDlK+SokaMkCxIGpw==","shasum":"6d97b3e95e5b6da6ba3623e5b1e293aec7a6492e","tarball":"https://registry.npmjs.org/create-esm-loader/-/create-esm-loader-0.2.5.tgz","fileCount":5,"unpackedSize":32317,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDTO/u9kJ1Nty0DyxTA64Ft378ztyhJsYHzmx8/b1ituwIhAI5VmDK/IqAzM1kMpa6d310ZLQzTGnTuXwoXNfkpZkMf"}]},"_npmUser":{"name":"sebamarynissen","email":"sebastiaan.marynissen@gmail.com"},"directories":{},"maintainers":[{"name":"sebamarynissen","email":"sebastiaan.marynissen@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/create-esm-loader_0.2.5_1695284612522_0.7951604144178226"},"_hasShrinkwrap":false}},"time":{"created":"2020-11-16T13:42:41.539Z","0.0.1-alpha.0":"2020-11-16T13:42:41.784Z","modified":"2023-09-21T08:23:32.929Z","0.0.1":"2021-10-25T17:58:23.504Z","0.1.0":"2021-10-26T07:45:52.801Z","0.1.1":"2021-10-27T07:15:18.120Z","0.1.2":"2022-08-26T11:17:26.481Z","0.2.0":"2023-03-22T15:57:09.946Z","0.2.1":"2023-03-22T16:05:10.317Z","0.2.2":"2023-03-22T16:45:05.313Z","0.2.3":"2023-03-22T20:49:02.331Z","0.2.4":"2023-09-20T13:07:43.151Z","0.2.5":"2023-09-21T08:23:32.731Z"},"maintainers":[{"name":"sebamarynissen","email":"sebastiaan.marynissen@gmail.com"}],"description":"A utility library for creating Node loader hooks","homepage":"https://github.com/sebamarynissen/create-esm-loader#readme","keywords":["esm","loader","node"],"repository":{"type":"git","url":"git+https://github.com/sebamarynissen/create-esm-loader.git"},"author":{"name":"Sebastiaan Marynissen","email":"sebastiaan.marynissen@gmail.com"},"bugs":{"url":"https://github.com/sebamarynissen/create-esm-loader/issues"},"license":"MIT","readme":"# create-esm-loader\r\n\r\n> A utility library for creating esm loader hooks\r\n\r\n**DISCLAIMER** Loaders [are still experimental](https://nodejs.org/api/esm.html#esm_experimental_loaders) in Node and may still change, which means this module is still experimental as well.\r\nUse at own risk and **DO NOT** rely on it in production.\r\n\r\nNode 14 provides full support for native ES Modules without the need for transpilation.\r\nWhile CommonJS is likely not to go anywhere soon, it is good practice to [at least start thinking about migrating your codebase from CommonJS to ESM](https://blog.sindresorhus.com/get-ready-for-esm-aa53530b3f77).\r\nIn the `require`-world, we had [require.extensions](https://nodejs.org/api/modules.html#modules_require_extensions) if we wanted to load non-JS files into Node.\r\nYou could use this, for example, to load TypeScript files and compile them just-in-time.\r\nWhile this was not a good idea in production, it was a nice to have in development.\r\nFor example, you could run tests without having to transpile them first.\r\n\r\nIn the ESM world we no longer have `require.extensions`, but Node provides us with [loader hooks](https://nodejs.org/api/esm.html#esm_experimental_loaders) which can be used to provide the same functionality, and even more.\r\nThe goal of this module is to make it easier to write such loaders, especially when composing loaders.\r\nIt is **strongly disadvised** to use this module in production.\r\nThe aim is not to eliminate the necessity of a build step, but to make your life easier **during development**.\r\n\r\n## Installation\r\n\r\n```npm install --save-dev create-esm-loader```\r\n\r\nbut you guessed that, right?\r\n\r\n## Usage\r\n\r\n`create-esm-loader` is inspired by Webpack.\r\nYou can pass it a configuration object and it will return a set of [loader hooks](https://nodejs.org/api/esm.html#hooks) which you then have to export manually.\r\nThis typically looks like\r\n```js\r\n// loader.js\r\nimport createLoader from 'create-esm-loader';\r\nexport const { resolve, load } = await createLoader(config);\r\n```\r\n\r\nSubsequently you have to run node as \r\n```\r\nnode --experimental-loader ./path/to/loader.mjs your-file.js\r\n```\r\n\r\nOn Node 20.7 however [it is discouraged](https://nodejs.org/dist/latest-v20.x/docs/api/cli.html#--experimental-loadermodule) to use the `--experimental-loader` flag, and instead you should use `--import` in combination with `register()` from `node:module`\r\n```sh\r\nnode --import ./register.js your-file.js\r\n```\r\n```js\r\n// register.js\r\nimport { register } from 'node:module';\r\nregister('./path/to/loader.mjs', import.meta.url);\r\n```\r\n\r\nAlso have a look at [node-esm-loader](https://www.npmjs.com/package/node-esm-loader), which is built on top of this package and allows you to simply do\r\n```sh\r\nnode --import node-esm-loader/register your-file.js\r\n```\r\n\r\n### Node 16.11 and lower\r\n\r\nNote that in Node 16.12, the loader hooks [have changed](https://nodejs.org/docs/v16.12.0/api/esm.html#esm_loaders).\r\nIn previous versions, **including `16.11`**, you had to export `resolve()`, `getFormat()`, `getSource()` and `transformSource()`.\r\nIn Node `>=16.12.0`, you have to export `resolve()` and `load()` instead.\r\n\r\n`create-esm-loader` is backwards compatible and is able to handle both.\r\nThis means that if you're writing a loader that needs to support `<16.12`, you have to export\r\n```js\r\nexport const {\r\n  resolve,\r\n  getFormat,\r\n  getSource,\r\n  transformSource,\r\n  load,\r\n} = await createLoader(config);\r\n```\r\n\r\nESM loaders must be written in ESM format.\r\nThis means that Node needs to interpret it as an ES Module as well, which means you either need to use the `.mjs` extension, or make sure that the nearest `package.json` contains a `{ \"type\": \"module\" }` field.\r\nFor more info, see https://nodejs.org/api/esm.html#esm_enabling.\r\n\r\n### Basic configuration\r\n\r\nA basic loader configuration looks like this:\r\n```js\r\nconst config = {\r\n  resolve(specifier, opts) {\r\n    return { url };\r\n  },\r\n  format(url, opts) {\r\n    return { format };\r\n  },\r\n  fetch(url, opts) {\r\n    return { source };\r\n  },\r\n  transform(source, opts) {\r\n    return { source };\r\n  },\r\n};\r\n```\r\nThose methods used to correspond respectively to the `resolve()`, `getFormat()`, `getSource()` and `transform()` [loader hooks](https://nodejs.org/docs/latest-v14.x/api/esm.html#esm_loaders) from Node, but as mentioned above the `getFormat()`, `getSource()` and `transform()` hooks have now been merged into a single `load()` hook.\r\nThe api of this module has not changed as it's explicit goal is to hide how Node handles loaders internally.\r\n\r\nEvery hook is optional and can be an async function, which is useful if you need to do some async logic within it.\r\nIf the hook doesn't return anything, other hooks will be tried until the handling of the hook is given back to Node.\r\n\r\n### Webpack support\r\n\r\nSince version 0.2.0, *experimental* support for Webpack like configurations has been added.\r\nThe goal of this is to make it easier to create loaders that do a simple source transform and to provide support for existing webpack loaders, such as `ts-loader`.\r\nThis means that you can write your loaders as\r\n```js\r\nconst config = {\r\n  loaders: [{\r\n    test: /\\.csv$/,\r\n    use: [\r\n      {\r\n        loader: 'csv-loader',\r\n        options: {},\r\n      },\r\n    ],\r\n  }],\r\n};\r\nexport default config;\r\nexport const { resolve, load } = await createLoader(config);\r\n```\r\nUnder the hood this will be translated to a `{ resolve, format, fetch, transform }` configuration that is functionally equivalent.\r\n\r\nThere is also support for Webpack's [asset modules](https://webpack.js.org/guides/asset-modules/):\r\n\r\n```js\r\nconst config = {\r\n  loaders: [{\r\n    test: /\\.(png|gif|jpe?g)$/,\r\n    \r\n    // Supports all 3 asset types.\r\n    type: 'asset/resource',\r\n    type: 'asset/inline',\r\n    type: 'asset/source',\r\n\r\n  }],\r\n};\r\n```\r\n\r\n**IMPORTANT** When using *existing* webpack loaders, it is important that the loader's source transform returns an *ES module*!\r\nThis is a limitation of [how loader hooks work in Node](https://nodejs.org/api/esm.html#loadurl-context-nextload).\r\nThis means that if you want to use Webpack's `ts-loader` for example, you have to configure it to output ESM in `tsconfig.json`!\r\n\r\n```js\r\n{\r\n  \"compilerOptions\": {\r\n    \"module\": \"es2020\"\r\n  }\r\n}\r\n```\r\n\r\n### Node `^16.12`\r\n\r\nIf you only target node 16.12 and above, you can simplify your life a bit by specifying the format in the `resolve()` hook, omitting the need for a separate `format()` hook.\r\n```js\r\n// Will not work in Node < 16.12!!\r\nexport const { resolve, load } = await createLoader({\r\n  resolve(specifier, opts) {\r\n    let url = new URL(specifier, opts.parentURL);\r\n    if (url.pathname.endsWith('.vue')) {\r\n      return {\r\n        format: 'module',\r\n        url: url.href,\r\n      };\r\n    }\r\n  },\r\n});\r\n```\r\n\r\n### Advanced configurations\r\n\r\nUsing the basic loader configuration as a building block, it's possible to create more advanced loader setups.\r\nThe structure of a full configuration object looks like this:\r\n```js\r\nexport const { resolve, load } = await createLoader({\r\n  loaders: [{\r\n    hooks: {\r\n      resolve() {},\r\n      format() {},\r\n      fetch() {},\r\n      transform() {},\r\n    },\r\n    // These options are passed as second argument to the hooks.\r\n    options: {\r\n      foo: 'bar',\r\n    },\r\n  }],\r\n  // Global options, will be overriden by the individual loader options.\r\n  options: {\r\n    foo: 'baz',\r\n  },\r\n});\r\n```\r\n\r\nIt's also possible to specify an external loader by specifying a string, much like how webpack does it.\r\n```js\r\nexport const { resolve, load } = await createLoader({\r\n  loaders: [\r\n    'external-loader',\r\n    {\r\n      // If you use absolute paths, they must be urls instead of paths!\r\n      loader: 'file://path/to/another-external-loader.js',\r\n      options: {\r\n        foo: 'bar',\r\n      },\r\n    },\r\n  ],\r\n});\r\n```\r\nThe goal of this is that other developers can publish commonly used loaders on npm so that you can easily setup common configurations.\r\n\r\nIf you only have to configure a single loader, you can use the shorthand\r\n```js\r\nexport const { resolve, load } = await createLoader({\r\n  resolve() {},\r\n  format() {},\r\n  async transform(source, opts) {\r\n    return { source: await transpile(source) };\r\n  },\r\n});\r\n```\r\n\r\n## Combining loaders\r\n\r\nIt's important to understand that the signature of the loader hooks look like this:\r\n```js\r\nresolve: specifier -> { url }\r\nformat: url -> { format }\r\nfetch: url -> { source }\r\ntransform: source -> { source }\r\n```\r\nThis means that except for the transform hook, every hook returns something fundamentally different than its input.\r\nAs a consequence, `resolve()`, `format()` and `fetch()` *will not* loop the entire stack.\r\nOnce a hook returns something truthy, the other functions registered for that hook *will not be called*.\r\nAs such the order of the loaders is important to take into account.\r\n\r\nThe only difference here is the transform hook.\r\nIf you register multiple transform hooks, they will all be called and properly chained:\r\n\r\n```js\r\nfunction transform(source, ctx) {\r\n  return {\r\n    source: String(source).repeat(2),\r\n  };\r\n}\r\n\r\n// Source will be 4 times as big.\r\ncreateLoader({\r\n  loaders: [ { transform }, { transform } ],\r\n});\r\n```\r\n\r\n## Standalone vs composable loaders\r\n\r\nThe primary goal of this module is to make it easier to simultaneously use multiple loaders.\r\nTherefore, if you're writing a loader that is meant to be used by other people, the preferred pattern is\r\n```js\r\nimport createLoader from 'create-esm-loader';\r\n\r\nconst config = {\r\n  resolve() {},\r\n  transform() {},\r\n};\r\nexport default config;\r\n\r\nexport const {\r\n  resolve,\r\n  getFormat,\r\n  getSource,\r\n  transformSource,\r\n  load,\r\n} = await createLoader(config);\r\n```\r\nUsing this approach, the loader can be used as a standalone loader with `node --experimental-loader=your-loader file.js`, but also in combination with another one\r\n```js\r\nimport createLoader from 'create-esm-loader';\r\n\r\nexport const { resolve, load } = await createLoader([\r\n  'your-loader',\r\n  'someone-elses-loader',\r\n  {\r\n    resolve() {},\r\n    transform() {},\r\n  },\r\n]);\r\n```\r\nIf you use [node-esm-loader](https://npmjs.com/package/node-esm-loader), this can even be simplified to\r\n```js\r\n// .loaderrc.js\r\nexport default [\r\n  'your-loader',\r\n  {\r\n    loader: 'someone-elses-loader',\r\n    options: {},\r\n  },\r\n];\r\n```\r\nwith `node --experimental-loader=node-esm-loader`.\r\n\r\n## Examples\r\n### 1. Compile TypeScript on the fly\r\n\r\n```js\r\nimport createLoader from 'create-esm-loader'\r\nimport ts from 'typescript'\r\n\r\nconst tsLoader = {\r\n  resolve(specifier, opts) {\r\n    if (specifier.endsWith('.ts')) {\r\n      let { parentURL } = opts;\r\n      let url = new URL(specifier, parentURL).href;\r\n      return { url };\r\n    }\r\n  },\r\n  format(url, opts) {\r\n    if (url.endsWith('.ts')) {\r\n      return { format: 'module' };\r\n    }\r\n  },\r\n  transform(source, opts) {\r\n    const { url } = opts\r\n    if (url.endsWith('.ts')) {\r\n      const { outputText } = ts.transpileModule(String(source), {\r\n        compilerOptions: {\r\n          module: ts.ModuleKind.ES2020,\r\n        },\r\n      })\r\n      return { source: outputText };\r\n    }\r\n  },\r\n};\r\nexport const { resolve, load } = await createLoader(tsLoader);\r\n\r\n// Usage:\r\nimport file from './file.ts';\r\n```\r\n\r\n### 2. Use a third-party loader in combination with asset modules\r\n\r\n```js\r\nexport const { resolve, load } = await createLoader({\r\n  loaders: [\r\n    'vue-esm-loader',\r\n    {\r\n      test: /\\.(png|gif|jpe?g|svg)$/,\r\n      type: 'asset/resource',\r\n    },\r\n  ],\r\n});\r\n```\r\n\r\n### 3. Create directory aliases\r\n\r\n```js\r\nimport path from 'path';\r\nimport { pathToFileURL } from 'url';\r\n\r\nconst components = '/path/to/components';\r\nconst directoryLoader = {\r\n  resolve(specifier, ctx) {\r\n    if (specifier.startsWith('@components/')) {\r\n      let name = specifier.replace(/^@components\\//, '');\r\n      let file = path.join(components, name);\r\n      let url = pathToFileURL(file).href;\r\n      return { url };\r\n    }\r\n  },\r\n};\r\nexport const { resolve, load } = await createLoader(directoryLoader);\r\n\r\n// Usage:\r\nimport Component from '@components/component.js';\r\n```\r\n\r\n### 4. Loaders in the Wild\r\n\r\nYou can find an active [list of loaders][loaderlist] that use\r\n`create-esm-loader`, here:\r\n\r\n[loaderlist]: https://www.npmjs.com/package/create-esm-loader?activeTab=dependents\r\n\r\n","readmeFilename":"README.md"}