fix: validate worker node event to wait
[poolifier.git] / rollup.config.mjs
index 1eca9997c4ef4ddbf26b03f095c89f0491bdff4d..763a3e3c2a03dc87220846390705a64c0ab8308d 100644 (file)
@@ -1,16 +1,18 @@
 import * as os from 'node:os'
 import { env } from 'node:process'
-import { dts } from 'rollup-plugin-dts'
+
 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()
@@ -22,8 +24,8 @@ const availableParallelism = () => {
 }
 
 const isDevelopmentBuild = env.BUILD === 'development'
-const isAnalyzeBuild = env.ANALYZE
-const isDocumentationBuild = env.DOCUMENTATION
+const isAnalyzeBuild = Boolean(env.ANALYZE)
+const isDocumentationBuild = Boolean(env.DOCUMENTATION)
 const sourcemap = env.SOURCEMAP !== 'false'
 
 const maxWorkers = Math.floor(availableParallelism() / 2)
@@ -35,38 +37,42 @@ export default defineConfig([
     output: [
       {
         format: 'cjs',
-        ...(isDevelopmentBuild && {
-          dir: './lib',
-          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',
-          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:*/],
+    external: [/^node:*/],
     plugins: [
       typescript({
         tsconfig: './tsconfig.build.json',
@@ -77,21 +83,22 @@ export default defineConfig([
       del({
         targets: ['./lib/*']
       }),
-      Boolean(isAnalyzeBuild) && analyze(),
-      Boolean(isDocumentationBuild) && command('pnpm typedoc')
+      isAnalyzeBuild && analyze(),
+      isDocumentationBuild && command('pnpm typedoc')
     ]
   },
   {
     input: './lib/dts/index.d.ts',
+    strictDeprecations: true,
     output: [{ format: 'esm', file: './lib/index.d.ts' }],
-    external: [/node:*/],
+    external: [/^node:*/],
     plugins: [
       dts(),
       del({
         targets: ['./lib/dts'],
         hook: 'buildEnd'
       }),
-      Boolean(isAnalyzeBuild) && analyze()
+      isAnalyzeBuild && analyze()
     ]
   }
 ])