diff --git a/CHANGELOG.md b/CHANGELOG.md index 915c65e..4baf234 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ ## Changelog -- **v5.0.11** +- **v5.0.12** - fixed: ./types was not being properly exported - **v5.0.10** - fixed: response formatters in finally stage could still cross pollute headers in Node diff --git a/package.json b/package.json index c67aeac..f36662c 100644 --- a/package.json +++ b/package.json @@ -4,107 +4,102 @@ "description": "A tiny, zero-dependency router, designed to make beautiful APIs in any environment.", "main": "./index.js", "module": "./index.mjs", - "types": "./index.d.ts", + "types": "./types.d.ts", "exports": { ".": { "import": "./index.mjs", "require": "./index.js", - "types": "./index.d.ts" + "types": "./types.d.ts" }, "./AutoRouter": { "import": "./AutoRouter.mjs", "require": "./AutoRouter.js", - "types": "./AutoRouter.d.ts" + "types": "./types.d.ts" }, "./cors": { "import": "./cors.mjs", "require": "./cors.js", - "types": "./cors.d.ts" + "types": "./types.d.ts" }, "./createResponse": { "import": "./createResponse.mjs", "require": "./createResponse.js", - "types": "./createResponse.d.ts" + "types": "./types.d.ts" }, "./error": { "import": "./error.mjs", "require": "./error.js", - "types": "./error.d.ts" + "types": "./types.d.ts" }, "./html": { "import": "./html.mjs", "require": "./html.js", - "types": "./html.d.ts" + "types": "./types.d.ts" }, "./IttyRouter": { "import": "./IttyRouter.mjs", "require": "./IttyRouter.js", - "types": "./IttyRouter.d.ts" + "types": "./types.d.ts" }, "./jpeg": { "import": "./jpeg.mjs", "require": "./jpeg.js", - "types": "./jpeg.d.ts" + "types": "./types.d.ts" }, "./json": { "import": "./json.mjs", "require": "./json.js", - "types": "./json.d.ts" + "types": "./types.d.ts" }, "./png": { "import": "./png.mjs", "require": "./png.js", - "types": "./png.d.ts" + "types": "./types.d.ts" }, "./Router": { "import": "./Router.mjs", "require": "./Router.js", - "types": "./Router.d.ts" + "types": "./types.d.ts" }, "./status": { "import": "./status.mjs", "require": "./status.js", - "types": "./status.d.ts" + "types": "./types.d.ts" }, "./StatusError": { "import": "./StatusError.mjs", "require": "./StatusError.js", - "types": "./StatusError.d.ts" + "types": "./types.d.ts" }, "./text": { "import": "./text.mjs", "require": "./text.js", - "types": "./text.d.ts" - }, - "./types": { - "import": "./types.mjs", - "require": "./types.js", "types": "./types.d.ts" }, "./webp": { "import": "./webp.mjs", "require": "./webp.js", - "types": "./webp.d.ts" + "types": "./types.d.ts" }, "./websocket": { "import": "./websocket.mjs", "require": "./websocket.js", - "types": "./websocket.d.ts" + "types": "./types.d.ts" }, "./withContent": { "import": "./withContent.mjs", "require": "./withContent.js", - "types": "./withContent.d.ts" + "types": "./types.d.ts" }, "./withCookies": { "import": "./withCookies.mjs", "require": "./withCookies.js", - "types": "./withCookies.d.ts" + "types": "./types.d.ts" }, "./withParams": { "import": "./withParams.mjs", "require": "./withParams.js", - "types": "./withParams.d.ts" + "types": "./types.d.ts" } }, "keywords": [ @@ -171,6 +166,7 @@ "rollup": "^4.14.1", "rollup-plugin-bundle-size": "^1.0.3", "rollup-plugin-copy": "^3.5.0", + "rollup-plugin-dts": "^6.1.0", "rollup-plugin-multi-input": "^1.4.1", "typescript": "^5.4.4", "vite": "^5.2.8", diff --git a/rollup.config.mjs b/rollup.config.mjs index 595f66f..42fbf58 100644 --- a/rollup.config.mjs +++ b/rollup.config.mjs @@ -1,19 +1,20 @@ import terser from '@rollup/plugin-terser' import typescript from '@rollup/plugin-typescript' +import fs from 'fs-extra' import { globby } from 'globby' import bundleSize from 'rollup-plugin-bundle-size' import copy from 'rollup-plugin-copy' -import fs from 'fs-extra' +import { dts } from 'rollup-plugin-dts' // scan files to build const files = (await globby('./src/*.ts', { - ignore: ['**/*.spec.ts', 'examples'], + ignore: ['**/*.spec.ts', 'examples', '**/types', 'src/types.d.ts'], })).map(path => ({ path, shortPath: path.replace(/(\/src)|(\.ts)/g, '').replace('./index', '.'), esm: path.replace('/src/', '/dist/').replace('.ts', '.mjs'), cjs: path.replace('/src/', '/dist/').replace('.ts', '.js'), - types: path.replace('/src/', '/dist/').replace('.ts', '.d.ts'), + // types: path.replace('/src/', '/dist/').replace('.ts', '.d.ts'), })).sort((a, b) => a.shortPath.toLowerCase() < b.shortPath.toLowerCase() ? -1 : 1) @@ -25,7 +26,7 @@ pkg.exports = files.reduce((acc, file) => { acc[file.shortPath] = { import: file.esm.replace('/dist', ''), require: file.cjs.replace('/dist', ''), - types: file.types.replace('/dist', ''), + types: './types.d.ts', } return acc @@ -37,7 +38,8 @@ await fs.writeJSON('./package.json', pkg, { spaces: 2 }) export default async () => { console.log(files.map(f => f.path)) - return files.map(file => ({ + // export base files + const baseFiles = files.map(file => ({ input: file.path, output: [ { @@ -65,4 +67,15 @@ export default async () => { }), ], })) + + // export and bundle types here + const types = [ + { + input: './src/types.d.ts', + output: [{ file: 'dist/types.d.ts', format: 'es' }], + plugins: [ dts() ], + } + ] + + return [...types, ...baseFiles] } diff --git a/src/index.ts b/src/index.ts index 3fac003..a83a321 100644 --- a/src/index.ts +++ b/src/index.ts @@ -26,6 +26,3 @@ export * from './withParams' // CORS export * from './cors' - -// TYPES -export * from './types' diff --git a/src/types.ts b/src/types.d.ts similarity index 100% rename from src/types.ts rename to src/types.d.ts diff --git a/tsconfig.json b/tsconfig.json index 951909c..d9eadb2 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,8 +3,8 @@ "allowJs": true, "allowSyntheticDefaultImports": true, "baseUrl": "src", - "declaration": true, - "sourceMap": true, + "declaration": false, // true (default) + "sourceMap": false, // true (default) "esModuleInterop": true, "inlineSourceMap": false, "lib": ["esnext", "dom", "dom.iterable"], diff --git a/yarn.lock b/yarn.lock index 077bc3a..397f7c9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15,6 +15,14 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" +"@babel/code-frame@^7.22.13": + version "7.24.2" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae" + integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ== + dependencies: + "@babel/highlight" "^7.24.2" + picocolors "^1.0.0" + "@babel/helper-string-parser@^7.23.4": version "7.23.4" resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz" @@ -25,6 +33,16 @@ resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz" integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== +"@babel/highlight@^7.24.2": + version "7.24.2" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.2.tgz#3f539503efc83d3c59080a10e6634306e0370d26" + integrity sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + picocolors "^1.0.0" + "@babel/parser@^7.23.6": version "7.24.0" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz" @@ -958,6 +976,13 @@ ansi-styles@^2.2.1: resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + ansi-styles@^4.0.0: version "4.3.0" resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" @@ -1127,6 +1152,15 @@ chalk@^1.0.0, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" +chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + chalk@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz" @@ -1167,6 +1201,13 @@ cli-width@^3.0.0: resolved "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz" integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + color-convert@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" @@ -1174,6 +1215,11 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + color-name@~1.1.4: version "1.1.4" resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" @@ -1886,6 +1932,11 @@ has-ansi@^2.0.0: dependencies: ansi-regex "^2.0.0" +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + has-flag@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" @@ -2118,6 +2169,11 @@ jackspeak@^2.3.5: optionalDependencies: "@pkgjs/parseargs" "^0.11.0" +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + js-tokens@^8.0.2: version "8.0.3" resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-8.0.3.tgz" @@ -2283,6 +2339,13 @@ lru-cache@^6.0.0: resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz" integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q== +magic-string@^0.30.4: + version "0.30.9" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.9.tgz#8927ae21bfdd856310e07a1bc8dd5e73cb6c251d" + integrity sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.15" + magic-string@^0.30.5: version "0.30.8" resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz" @@ -2779,6 +2842,15 @@ rollup-plugin-copy@^3.5.0: globby "10.0.1" is-plain-object "^3.0.0" +rollup-plugin-dts@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-dts/-/rollup-plugin-dts-6.1.0.tgz#56e9c5548dac717213c6a4aa9df523faf04f75ae" + integrity sha512-ijSCPICkRMDKDLBK9torss07+8dl9UpY9z1N/zTeA1cIqdzMlpkV3MOOC7zukyvQfDyxa1s3Dl2+DeiP/G6DOw== + dependencies: + magic-string "^0.30.4" + optionalDependencies: + "@babel/code-frame" "^7.22.13" + rollup-plugin-multi-input@^1.4.1: version "1.4.1" resolved "https://registry.npmjs.org/rollup-plugin-multi-input/-/rollup-plugin-multi-input-1.4.1.tgz" @@ -3062,6 +3134,13 @@ supports-color@^2.0.0: resolved "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + supports-color@^7.1.0: version "7.1.0" resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz"