fix: validate worker node event to wait
[poolifier.git] / rollup.config.mjs
index 9e8cd65bb0317152141a539de08f8d64c16a2c6c..763a3e3c2a03dc87220846390705a64c0ab8308d 100644 (file)
@@ -1,15 +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 { defineConfig } from 'rollup'
+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()
@@ -20,9 +23,10 @@ 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)
 
@@ -33,48 +37,48 @@ export default defineConfig([
     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',
-          chunkFileNames: '[name]-[hash].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/*']
@@ -85,14 +89,9 @@ export default defineConfig([
   },
   {
     input: './lib/dts/index.d.ts',
+    strictDeprecations: true,
     output: [{ format: 'esm', file: './lib/index.d.ts' }],
-    external: [
-      'node:async_hooks',
-      'node:cluster',
-      'node:events',
-      'node:perf_hooks',
-      'node:worker_threads'
-    ],
+    external: [/^node:*/],
     plugins: [
       dts(),
       del({