diff --git a/bun-test/.gitignore b/bun-test/.gitignore new file mode 100644 index 0000000..76add87 --- /dev/null +++ b/bun-test/.gitignore @@ -0,0 +1,2 @@ +node_modules +dist \ No newline at end of file diff --git a/bun-test/package.json b/bun-test/package.json new file mode 100644 index 0000000..2205132 --- /dev/null +++ b/bun-test/package.json @@ -0,0 +1,22 @@ +{ + "name": "bun-test", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "packageManager": "pnpm@10.25.0", + "devDependencies": { + "@types/bun": "^1.3.4" + }, + "dependencies": { + "@rollup/plugin-node-resolve": "^16.0.3", + "esbuild": "^0.27.2", + "lodash-es": "^4.17.22", + "rollup": "^4.54.0" + } +} diff --git a/bun-test/rollup.config.ts b/bun-test/rollup.config.ts new file mode 100644 index 0000000..eee1e26 --- /dev/null +++ b/bun-test/rollup.config.ts @@ -0,0 +1,31 @@ +// rollup.config.ts +import type { Plugin, RollupOptions } from 'rollup'; +import { nodeResolve } from '@rollup/plugin-node-resolve'; + +const cdnRewritePlugin: Plugin = { + name: 'rewrite-lodash-to-cdn', + resolveId(id) { + if (id === 'lodash-es') { + return 'https://esm.sh/lodash-es@5'; + } + if (id.startsWith('lodash-es/')) { + const [, sub] = id.split('/', 2); + return `https://esm.sh/lodash-es@5/${sub}`; + } + return null; + }, +}; + +const config: RollupOptions = { + input: 'src/index.ts', + output: { + dir: 'dist', + format: 'esm', + }, + plugins: [cdnRewritePlugin, nodeResolve({ browser: true })], + external(id) { + return id.startsWith('https://'); + }, +}; + +export default config; \ No newline at end of file diff --git a/bun-test/src/index.ts b/bun-test/src/index.ts new file mode 100644 index 0000000..19752cf --- /dev/null +++ b/bun-test/src/index.ts @@ -0,0 +1,3 @@ +import { debounce } from 'lodash-es'; + +export const debounceFn = debounce; \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 881085a..6fbae85 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,6 +18,25 @@ importers: specifier: ^17.2.3 version: 17.2.3 + bun-test: + dependencies: + '@rollup/plugin-node-resolve': + specifier: ^16.0.3 + version: 16.0.3(rollup@4.54.0) + esbuild: + specifier: ^0.27.2 + version: 0.27.2 + lodash-es: + specifier: ^4.17.22 + version: 4.17.22 + rollup: + specifier: ^4.54.0 + version: 4.54.0 + devDependencies: + '@types/bun': + specifier: ^1.3.4 + version: 1.3.4 + web: devDependencies: '@kevisual/types': @@ -188,6 +207,24 @@ packages: '@kevisual/types@0.0.10': resolution: {integrity: sha512-Q73uzzjk9UidumnmCvOpgzqDDvQxsblz22bIFuoiioUFJWwaparx8bpd8ArRyFojicYL1YJoFDzDZ9j9NN8grA==} + '@rollup/plugin-node-resolve@16.0.3': + resolution: {integrity: sha512-lUYM3UBGuM93CnMPG1YocWu7X802BrNF3jW2zny5gQyLQgRFJhV1Sq0Zi74+dh/6NBx1DxFC4b4GXg9wUCG5Qg==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.78.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/pluginutils@5.3.0': + resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + '@rollup/rollup-android-arm-eabi@4.54.0': resolution: {integrity: sha512-OywsdRHrFvCdvsewAInDKCNyR3laPA2mc9bRYJ6LBp5IyvF3fvXbbNR0bSzHlZVFtn6E0xw2oZlyjg4rKCVcng==} cpu: [arm] @@ -307,9 +344,16 @@ packages: '@types/node@25.0.2': resolution: {integrity: sha512-gWEkeiyYE4vqjON/+Obqcoeffmk0NF15WSBwSs7zwVA2bAbTaE0SJ7P0WNGoJn8uE7fiaV5a7dKYIJriEqOrmA==} + '@types/resolve@1.20.2': + resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} + bun-types@1.3.4: resolution: {integrity: sha512-5ua817+BZPZOlNaRgGBpZJOSAQ9RQ17pkwPD0yR7CfJg+r8DgIILByFifDTa+IPDDxzf5VNhtNlcKqFzDgJvlQ==} + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + dotenv@17.2.3: resolution: {integrity: sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==} engines: {node: '>=12'} @@ -319,6 +363,9 @@ packages: engines: {node: '>=18'} hasBin: true + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} @@ -333,11 +380,31 @@ packages: engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-module@1.0.0: + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + + lodash-es@4.17.22: + resolution: {integrity: sha512-XEawp1t0gxSi9x01glktRZ5HDy0HXqrM0x5pXQM98EaI0NxO6jVM7omDOxsuEo5UIASAnm2bRp1Jt/e0a2XU8Q==} + nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -349,6 +416,11 @@ packages: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} + resolve@1.22.11: + resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} + engines: {node: '>= 0.4'} + hasBin: true + rollup@4.54.0: resolution: {integrity: sha512-3nk8Y3a9Ea8szgKhinMlGMhGMw89mqule3KWczxhIzqudyHdCIOHw8WJlj/r329fACjKLEh13ZSk7oE22kyeIw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -358,6 +430,10 @@ packages: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + tinyglobby@0.2.15: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} @@ -487,6 +563,24 @@ snapshots: '@kevisual/types@0.0.10': {} + '@rollup/plugin-node-resolve@16.0.3(rollup@4.54.0)': + dependencies: + '@rollup/pluginutils': 5.3.0(rollup@4.54.0) + '@types/resolve': 1.20.2 + deepmerge: 4.3.1 + is-module: 1.0.0 + resolve: 1.22.11 + optionalDependencies: + rollup: 4.54.0 + + '@rollup/pluginutils@5.3.0(rollup@4.54.0)': + dependencies: + '@types/estree': 1.0.8 + estree-walker: 2.0.2 + picomatch: 4.0.3 + optionalDependencies: + rollup: 4.54.0 + '@rollup/rollup-android-arm-eabi@4.54.0': optional: true @@ -563,10 +657,14 @@ snapshots: dependencies: undici-types: 7.16.0 + '@types/resolve@1.20.2': {} + bun-types@1.3.4: dependencies: '@types/node': 25.0.2 + deepmerge@4.3.1: {} + dotenv@17.2.3: {} esbuild@0.27.2: @@ -598,6 +696,8 @@ snapshots: '@esbuild/win32-ia32': 0.27.2 '@esbuild/win32-x64': 0.27.2 + estree-walker@2.0.2: {} + fdir@6.5.0(picomatch@4.0.3): optionalDependencies: picomatch: 4.0.3 @@ -605,8 +705,24 @@ snapshots: fsevents@2.3.3: optional: true + function-bind@1.1.2: {} + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-module@1.0.0: {} + + lodash-es@4.17.22: {} + nanoid@3.3.11: {} + path-parse@1.0.7: {} + picocolors@1.1.1: {} picomatch@4.0.3: {} @@ -617,6 +733,12 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + resolve@1.22.11: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + rollup@4.54.0: dependencies: '@types/estree': 1.0.8 @@ -647,6 +769,8 @@ snapshots: source-map-js@1.2.1: {} + supports-preserve-symlinks-flag@1.0.0: {} + tinyglobby@0.2.15: dependencies: fdir: 6.5.0(picomatch@4.0.3) diff --git a/web/public/sw.js b/web/public/sw.js index dbf315a..f1d4241 100644 --- a/web/public/sw.js +++ b/web/public/sw.js @@ -1,4 +1,4 @@ -import { main } from './sw2.js'; +import { main } from '/sw2.js'; self.onmessage = function (e) { console.log(e.data, typeof e.data); main(e.data); diff --git a/web/src/main.ts b/web/src/main.ts index 19576d2..804d95f 100644 --- a/web/src/main.ts +++ b/web/src/main.ts @@ -1,7 +1,7 @@ const root = document.querySelector('#root'); root.innerHTML = '

Hello World

'; -const worker = new Worker('./public/sw.js', { type: 'module' }); +const worker = new Worker('/sw.js', { type: 'module' }); worker.onmessage = (event) => { console.log(event.data);