diff --git a/README.md b/README.md index c98fa1a..339e15a 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,23 @@ # ๐Ÿงถ knitwork -[![npm version][npm-version-src]][npm-version-href] -[![npm downloads][npm-downloads-src]][npm-downloads-href] -[![Github Actions][github-actions-src]][github-actions-href] -[![Codecov][codecov-src]][codecov-href] + -> Utilities to generate JavaScript code. +[![npm version](https://img.shields.io/npm/v/knitwork?color=yellow)](https://npmjs.com/package/knitwork) +[![npm downloads](https://img.shields.io/npm/dm/knitwork?color=yellow)](https://npmjs.com/package/knitwork) +[![codecov](https://img.shields.io/codecov/c/gh/unjs/knitwork?color=yellow)](https://codecov.io/gh/unjs/knitwork) + + + +Utilities to generate JavaScript code. ## Install + + ```sh +# โœจ Auto-detect +npx nypm install knitwork + # npm npm install knitwork @@ -18,128 +26,159 @@ yarn add knitwork # pnpm pnpm install knitwork + +# bun +bun install knitwork ``` + + ## Usage **Generating ESM syntax:** ```js -import { genImport, genExport } from 'knitwork' +import { genImport, genExport } from "knitwork"; // import foo from "pkg" -console.log(genImport('pkg', 'foo')) +console.log(genImport("pkg", "foo")); // import { foo } from "pkg" -console.log(genImport('pkg', ['foo'])) +console.log(genImport("pkg", ["foo"])); // import { a, b } from "pkg" -console.log(genImport('pkg', ['a', 'b'])) +console.log(genImport("pkg", ["a", "b"])); // import { default as bar } from "pkg"; -console.log(genImport('pkg', [{ name: 'default', as: 'bar' }])) +console.log(genImport("pkg", [{ name: "default", as: "bar" }])); // import { foo as bar } from "pkg"; -console.log(genImport('pkg', [{ name: 'foo', as: 'bar' }])) +console.log(genImport("pkg", [{ name: "foo", as: "bar" }])); // import foo from "pkg" assert { type: "json" }; -console.log(genImport('pkg', 'foo', { assert: { type: 'json' } })) +console.log(genImport("pkg", "foo", { assert: { type: "json" } })); // export foo from "pkg" -console.log(genExport('pkg', 'foo')) +console.log(genExport("pkg", "foo")); // export { a, b } from "pkg" -console.log(genExport('pkg', ['a', 'b'])) +console.log(genExport("pkg", ["a", "b"])); // export * as bar from "pkg" -console.log(genExport('pkg', { name: '*', as: 'bar' })) +console.log(genExport("pkg", { name: "*", as: "bar" })); // export foo from "pkg" assert { type: "json" }; -console.log(genExport('pkg', 'foo', { assert: { type: 'json' } })) +console.log(genExport("pkg", "foo", { assert: { type: "json" } })); ``` **Generating TS:** ```js -import { genInterface, genAugmentation, genInlineTypeImport, genTypeImport, genTypeExport } from 'knitwork' +import { + genInterface, + genAugmentation, + genInlineTypeImport, + genTypeImport, + genTypeExport, +} from "knitwork"; // interface FooInterface extends A, B { // name: boolean // optional?: string // } -console.log(genInterface('FooInterface', { name: 'boolean', 'optional?': 'string' }, { extends: ['A', 'B'] })) +console.log( + genInterface( + "FooInterface", + { name: "boolean", "optional?": "string" }, + { extends: ["A", "B"] }, + ), +); // declare module "my-module" { // interface MyInterface {} // } -console.log(genAugmentation('my-module', { MyInterface: {} })) +console.log(genAugmentation("my-module", { MyInterface: {} })); // typeof import("my-module").genString' -console.log(genInlineTypeImport('my-module', 'genString')) +console.log(genInlineTypeImport("my-module", "genString")); // typeof import("my-module").default' -console.log(genInlineTypeImport('my-module')) +console.log(genInlineTypeImport("my-module")); // import type { test as value } from "my-module"; -console.log(genTypeImport('my-module', [{ name: 'test', as: 'value' }])) +console.log(genTypeImport("my-module", [{ name: "test", as: "value" }])); // export type { test } from "my-module"; -console.log(genTypeExport('my-module', ['test'])) +console.log(genTypeExport("my-module", ["test"])); ``` **Serializing JS objects:** ```js -import { genObjectFromRaw, genObjectFromRawEntries, genArrayFromRaw } from 'knitwork' +import { + genObjectFromRaw, + genObjectFromRawEntries, + genArrayFromRaw, +} from "knitwork"; // { foo: 'bar', test: () => import("pkg") } -console.log(genObjectFromValues({ foo: 'bar', test: '() => import("pkg")' })) +console.log(genObjectFromValues({ foo: "bar", test: '() => import("pkg")' })); // { test: () => import("pkg") } -console.log(genObjectFromRaw({ test: '() => import("pkg")' })) +console.log(genObjectFromRaw({ test: '() => import("pkg")' })); // { 0: [ test, () => import("pkg") ] } -console.log(genObjectFromRaw([ ['test', '() => import("pkg")'] ])) +console.log(genObjectFromRaw([["test", '() => import("pkg")']])); const entries = Object.entries({ - a: 1, b: null, c: '"c"', nest: { hello: '"world"', fn: () => 1 } -}) + a: 1, + b: null, + c: '"c"', + nest: { hello: '"world"', fn: () => 1 }, +}); // { a: 1, b: null, c: "c", nest: { hello: "world", fn: () => 1 } } -console.log(genObjectFromRawEntries(entries)) +console.log(genObjectFromRawEntries(entries)); // [ 1, 2, () => import("pkg") ] -console.log(genArrayFromRaw(['1', '2', '() => import("pkg")'])) +console.log(genArrayFromRaw(["1", "2", '() => import("pkg")'])); ``` **Generating safe variable names:** ```js -import { genSafeVariableName } from 'knitwork' +import { genSafeVariableName } from "knitwork"; // _123_32foo -genSafeVariableName('123 foo') +genSafeVariableName("123 foo"); // _for -genSafeVariableName('for') +genSafeVariableName("for"); ``` -## Development +## Contribution + +
+ Local development - Clone this repository -- Install latest LTS version of [Node.js](https://nodejs.org/en/) -- Enable [Corepack](https://github.com/nodejs/corepack) using corepack enable -- Install dependencies using pnpm install -- Run interactive tests using pnpm dev +- Install the latest LTS version of [Node.js](https://nodejs.org/en/) +- Enable [Corepack](https://github.com/nodejs/corepack) using `corepack enable` +- Install dependencies using `bun install` +- Run tests using `bun dev` + +
## License -Made with ๐Ÿ’› + + +Published under the [MIT](https://github.com/unjs/knitwork/blob/main/LICENSE) license. +Made by [@pi0](https://github.com/pi0), [@danielroe](https://github.com/danielroe) and [community](https://github.com/unjs/knitwork/graphs/contributors) ๐Ÿ’› +

+ + + -Published under [MIT License](./LICENSE). + - -[npm-version-src]: https://img.shields.io/npm/v/knitwork?style=flat-square -[npm-version-href]: https://npmjs.com/package/knitwork + -[npm-downloads-src]: https://img.shields.io/npm/dm/knitwork?style=flat-square -[npm-downloads-href]: https://npmjs.com/package/knitwork +--- -[github-actions-src]: https://img.shields.io/github/actions/workflow/status/unjs/knitwork/ci.yml?branch=main&style=flat-square -[github-actions-href]: https://github.com/unjs/knitwork/actions?query=workflow%3Aci +_๐Ÿค– auto updated with [automd](https://automd.unjs.io)_ -[codecov-src]: https://img.shields.io/codecov/c/gh/unjs/knitwork/main?style=flat-square -[codecov-href]: https://codecov.io/gh/unjs/knitwork + diff --git a/package.json b/package.json index 63f14a4..3f0b533 100644 --- a/package.json +++ b/package.json @@ -23,13 +23,14 @@ "build": "unbuild", "dev": "vitest dev --coverage", "lint": "eslint --cache --ext .ts,.js,.mjs,.cjs . && prettier -c src test", - "lint:fix": "eslint --cache --ext .ts,.js,.mjs,.cjs . --fix && prettier -c src test -w", + "lint:fix": "automd && eslint --cache --ext .ts,.js,.mjs,.cjs . --fix && prettier -c src test -w", "prepack": "pnpm run build", "release": "pnpm test && changelogen --release && npm publish && git push --follow-tags", "test": "pnpm lint && vitest run --coverage" }, "devDependencies": { "@vitest/coverage-v8": "^1.4.0", + "automd": "^0.3.7", "changelogen": "^0.5.5", "esbuild": "^0.20.2", "eslint": "^8.57.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5c8bef4..719bd1d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,6 +8,9 @@ devDependencies: '@vitest/coverage-v8': specifier: ^1.4.0 version: 1.4.0(vitest@1.4.0) + automd: + specifier: ^0.3.7 + version: 0.3.7 changelogen: specifier: ^0.5.5 version: 0.5.5 @@ -205,6 +208,13 @@ packages: '@babel/types': 7.24.0 dev: true + /@babel/runtime@7.24.1: + resolution: {integrity: sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.1 + dev: true + /@babel/standalone@7.24.3: resolution: {integrity: sha512-PbObiI21Z/1DoJLr6DKsdmyp7uUIuw6zv5zIMorH98rOBE/TehkjK7xqXiwJmbCqi7deVbIksDerZ9Ds9hRLGw==} engines: {node: '>=6.9.0'} @@ -784,6 +794,137 @@ packages: fastq: 1.17.1 dev: true + /@parcel/watcher-android-arm64@2.4.1: + resolution: {integrity: sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@parcel/watcher-darwin-arm64@2.4.1: + resolution: {integrity: sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@parcel/watcher-darwin-x64@2.4.1: + resolution: {integrity: sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@parcel/watcher-freebsd-x64@2.4.1: + resolution: {integrity: sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@parcel/watcher-linux-arm-glibc@2.4.1: + resolution: {integrity: sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@parcel/watcher-linux-arm64-glibc@2.4.1: + resolution: {integrity: sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@parcel/watcher-linux-arm64-musl@2.4.1: + resolution: {integrity: sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@parcel/watcher-linux-x64-glibc@2.4.1: + resolution: {integrity: sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@parcel/watcher-linux-x64-musl@2.4.1: + resolution: {integrity: sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@parcel/watcher-win32-arm64@2.4.1: + resolution: {integrity: sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@parcel/watcher-win32-ia32@2.4.1: + resolution: {integrity: sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==} + engines: {node: '>= 10.0.0'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@parcel/watcher-win32-x64@2.4.1: + resolution: {integrity: sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@parcel/watcher@2.4.1: + resolution: {integrity: sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==} + engines: {node: '>= 10.0.0'} + dependencies: + detect-libc: 1.0.3 + is-glob: 4.0.3 + micromatch: 4.0.5 + node-addon-api: 7.1.0 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.4.1 + '@parcel/watcher-darwin-arm64': 2.4.1 + '@parcel/watcher-darwin-x64': 2.4.1 + '@parcel/watcher-freebsd-x64': 2.4.1 + '@parcel/watcher-linux-arm-glibc': 2.4.1 + '@parcel/watcher-linux-arm64-glibc': 2.4.1 + '@parcel/watcher-linux-arm64-musl': 2.4.1 + '@parcel/watcher-linux-x64-glibc': 2.4.1 + '@parcel/watcher-linux-x64-musl': 2.4.1 + '@parcel/watcher-win32-arm64': 2.4.1 + '@parcel/watcher-win32-ia32': 2.4.1 + '@parcel/watcher-win32-x64': 2.4.1 + dev: true + /@rollup/plugin-alias@5.1.0(rollup@3.29.4): resolution: {integrity: sha512-lpA3RZ9PdIG7qqhEfv79tBffNaoDuukFDrmhLqg9ifv99u/ehn+lOg30x2zmhf8AQqQUZaMk/B9fZraQ6/acDQ==} engines: {node: '>=14.0.0'} @@ -999,6 +1140,11 @@ packages: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true + /@sindresorhus/merge-streams@2.3.0: + resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} + engines: {node: '>=18'} + dev: true + /@trysound/sax@0.2.0: resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} engines: {node: '>=10.13.0'} @@ -1369,6 +1515,31 @@ packages: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true + /automd@0.3.7: + resolution: {integrity: sha512-h+w7Z1xQSdIuGmgDKVVvCl6fwj7V9b7BqUs6LlelvTcrwkLzqJnxpzcK0HoiesPb0xsf1yTfngeoDgYs2NN2Tw==} + hasBin: true + dependencies: + '@parcel/watcher': 2.4.1 + c12: 1.10.0 + citty: 0.1.6 + consola: 3.2.3 + defu: 6.1.4 + destr: 2.0.3 + didyoumean2: 6.0.1 + globby: 14.0.1 + magic-string: 0.30.8 + mdbox: 0.1.0 + mlly: 1.6.1 + ofetch: 1.3.4 + pathe: 1.1.2 + perfect-debounce: 1.0.0 + pkg-types: 1.0.3 + scule: 1.3.0 + untyped: 1.4.2 + transitivePeerDependencies: + - supports-color + dev: true + /autoprefixer@10.4.19(postcss@8.4.38): resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==} engines: {node: ^10 || ^12 || >=14} @@ -1915,6 +2086,21 @@ packages: resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} dev: true + /detect-libc@1.0.3: + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + engines: {node: '>=0.10'} + hasBin: true + dev: true + + /didyoumean2@6.0.1: + resolution: {integrity: sha512-PSy0zQwMg5O+LjT5Mz7vnKC8I7DfWLPF6M7oepqW7WP5mn2CY3hz46xZOa1GJY+KVfyXhdmz6+tdgXwrHlZc5g==} + engines: {node: ^16.14.0 || >=18.12.0} + dependencies: + '@babel/runtime': 7.24.1 + fastest-levenshtein: 1.0.16 + lodash.deburr: 4.1.0 + dev: true + /diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -2612,6 +2798,11 @@ packages: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true + /fastest-levenshtein@1.0.16: + resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} + engines: {node: '>= 4.9.1'} + dev: true + /fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} dependencies: @@ -2859,6 +3050,18 @@ packages: slash: 4.0.0 dev: true + /globby@14.0.1: + resolution: {integrity: sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==} + engines: {node: '>=18'} + dependencies: + '@sindresorhus/merge-streams': 2.3.0 + fast-glob: 3.3.2 + ignore: 5.3.1 + path-type: 5.0.0 + slash: 5.1.0 + unicorn-magic: 0.1.0 + dev: true + /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: @@ -3341,6 +3544,10 @@ packages: p-locate: 5.0.0 dev: true + /lodash.deburr@4.1.0: + resolution: {integrity: sha512-m/M1U1f3ddMCs6Hq2tAsYThTBDaAKFDX3dwDo97GEYzamXi9SqUpjWi/Rrj/gf3X2n8ktwgZrlP1z6E3v/IExQ==} + dev: true + /lodash.memoize@4.1.2: resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} dev: true @@ -3398,6 +3605,16 @@ packages: semver: 7.6.0 dev: true + /md4w@0.2.6: + resolution: {integrity: sha512-CBLQ2PxVe9WA+/nndZCx/Y+1C3DtmtSeubmXTPhMIgsXtq9gVGleikREko5FYnV6Dz4cHDWm0Ea+YMLpIjP4Kw==} + dev: true + + /mdbox@0.1.0: + resolution: {integrity: sha512-eQA+6vf5XM4LqdfLsfPMxqUBSU8AMzSCSFbojWLXSDL2jZeO+xgHhxTggrG2jfGPAyyIWIukj6SuoFBd9a7XZw==} + dependencies: + md4w: 0.2.6 + dev: true + /mdn-data@2.0.28: resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} dev: true @@ -3545,6 +3762,11 @@ packages: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true + /node-addon-api@7.1.0: + resolution: {integrity: sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==} + engines: {node: ^16 || ^18 || >= 20} + dev: true + /node-fetch-native@1.6.4: resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} dev: true @@ -3791,6 +4013,11 @@ packages: engines: {node: '>=8'} dev: true + /path-type@5.0.0: + resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} + engines: {node: '>=12'} + dev: true + /pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} dev: true @@ -4215,6 +4442,10 @@ packages: picomatch: 2.3.1 dev: true + /regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + dev: true + /regexp-tree@0.1.27: resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} hasBin: true @@ -4446,6 +4677,11 @@ packages: engines: {node: '>=12'} dev: true + /slash@5.1.0: + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} + engines: {node: '>=14.16'} + dev: true + /source-map-js@1.2.0: resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} engines: {node: '>=0.10.0'} @@ -4806,6 +5042,11 @@ packages: - supports-color dev: true + /unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} + dev: true + /universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'}