fix: validate worker node event to wait
[poolifier.git] / rollup.config.mjs
index fd0452ecda4ec28eef891149ba07bae2c730a2a8..763a3e3c2a03dc87220846390705a64c0ab8308d 100644 (file)
@@ -1,14 +1,18 @@
 import * as os from 'node:os'
-import { dts } from 'rollup-plugin-dts'
+import { env } from 'node:process'
+
 import terser from '@rollup/plugin-terser'
 import typescript from '@rollup/plugin-typescript'
+import { defineConfig } from 'rollup'
 import analyze from 'rollup-plugin-analyzer'
 import command from 'rollup-plugin-command'
 import del from 'rollup-plugin-delete'
+import { dts } from 'rollup-plugin-dts'
 
 const availableParallelism = () => {
   let availableParallelism = 1
   try {
+    // eslint-disable-next-line n/no-unsupported-features/node-builtins
     availableParallelism = os.availableParallelism()
   } catch {
     const cpus = os.cpus()
@@ -19,63 +23,65 @@ const availableParallelism = () => {
   return availableParallelism
 }
 
-const isDevelopmentBuild = process.env.BUILD === 'development'
-const isAnalyzeBuild = process.env.ANALYZE
-const isDocumentationBuild = process.env.DOCUMENTATION
+const isDevelopmentBuild = env.BUILD === 'development'
+const isAnalyzeBuild = Boolean(env.ANALYZE)
+const isDocumentationBuild = Boolean(env.DOCUMENTATION)
+const sourcemap = env.SOURCEMAP !== 'false'
 
 const maxWorkers = Math.floor(availableParallelism() / 2)
 
-export default [
+export default defineConfig([
   {
-    input: 'src/index.ts',
+    input: './src/index.ts',
     strictDeprecations: true,
     output: [
       {
         format: 'cjs',
-        ...(isDevelopmentBuild && {
-          dir: 'lib',
-          sourcemap: true,
-          preserveModules: true,
-          preserveModulesRoot: 'src'
-        }),
-        ...(!isDevelopmentBuild && {
-          file: 'lib/index.js',
-          plugins: [terser({ maxWorkers })]
+        ...(isDevelopmentBuild
+          ? {
+              dir: './lib',
+              entryFileNames: '[name].cjs',
+              chunkFileNames: '[name]-[hash].cjs',
+              preserveModules: true,
+              preserveModulesRoot: './src'
+            }
+          : {
+              file: './lib/index.cjs',
+              plugins: [terser({ maxWorkers })]
+            }),
+        ...(sourcemap && {
+          sourcemap
         })
       },
       {
         format: 'esm',
-        ...(isDevelopmentBuild && {
-          dir: 'lib',
-          sourcemap: true,
-          entryFileNames: '[name].mjs',
-          preserveModules: true,
-          preserveModulesRoot: 'src'
-        }),
-        ...(!isDevelopmentBuild && {
-          file: 'lib/index.mjs',
-          plugins: [terser({ maxWorkers })]
+        ...(isDevelopmentBuild
+          ? {
+              dir: './lib',
+              entryFileNames: '[name].mjs',
+              chunkFileNames: '[name]-[hash].mjs',
+              preserveModules: true,
+              preserveModulesRoot: './src'
+            }
+          : {
+              file: './lib/index.mjs',
+              plugins: [terser({ maxWorkers })]
+            }),
+        ...(sourcemap && {
+          sourcemap
         })
       }
     ],
-    external: [
-      'node:async_hooks',
-      'node:cluster',
-      'node:crypto',
-      'node:events',
-      'node:fs',
-      'node:os',
-      'node:perf_hooks',
-      'node:worker_threads'
-    ],
+    external: [/^node:*/],
     plugins: [
       typescript({
-        tsconfig: isDevelopmentBuild
-          ? 'tsconfig.development.json'
-          : 'tsconfig.production.json'
+        tsconfig: './tsconfig.build.json',
+        compilerOptions: {
+          sourceMap: sourcemap
+        }
       }),
       del({
-        targets: ['lib/*']
+        targets: ['./lib/*']
       }),
       isAnalyzeBuild && analyze(),
       isDocumentationBuild && command('pnpm typedoc')
@@ -83,20 +89,16 @@ export default [
   },
   {
     input: './lib/dts/index.d.ts',
-    output: [{ format: 'esm', file: 'lib/index.d.ts' }],
-    external: [
-      'node:async_hooks',
-      'node:cluster',
-      'node:events',
-      'node:perf_hooks',
-      'node:worker_threads'
-    ],
+    strictDeprecations: true,
+    output: [{ format: 'esm', file: './lib/index.d.ts' }],
+    external: [/^node:*/],
     plugins: [
       dts(),
       del({
-        targets: ['lib/dts'],
+        targets: ['./lib/dts'],
         hook: 'buildEnd'
-      })
+      }),
+      isAnalyzeBuild && analyze()
     ]
   }
-]
+])