From a5391dfd44a7aaff5dbdc8dd8690249304b43bd5 Mon Sep 17 00:00:00 2001 From: Chris Duncan Date: Sun, 5 Apr 2026 02:01:19 -0700 Subject: [PATCH] Refactor builds and exports --- esbuild.mjs | 45 ++++++++++++++++++++++----------------- package.json | 8 +++---- src/bin/server.ts | 8 +++---- src/lib/generate/index.ts | 8 +++---- tsconfig.json | 2 +- 5 files changed, 38 insertions(+), 33 deletions(-) diff --git a/esbuild.mjs b/esbuild.mjs index a0ff603..6b61e33 100644 --- a/esbuild.mjs +++ b/esbuild.mjs @@ -3,22 +3,17 @@ import { build } from 'esbuild' import { glsl } from 'esbuild-plugin-glsl' +/** @import { BuildOptions } from 'esbuild' */ -await build({ +/** @type BuildOptions */ +const sharedOptions = { bundle: true, - platform: 'browser', - entryPoints: [ - { in: './src/main.ts', out: 'main.min' }, - { in: './src/types.d.ts', out: 'types.d' } - ], + format: 'esm', + outdir: 'dist', loader: { - '.d.ts': 'copy', '.wasm': 'binary' }, - format: 'esm', legalComments: 'inline', - outdir: 'dist', - target: 'es2022', dropLabels: process.env.NODE_ENV === 'development' ? [] : ['LOG'], plugins: [ glsl({ @@ -26,18 +21,30 @@ await build({ preserveLegalComments: true }) ] -}) +} -await build({ - bundle: true, +/** @type BuildOptions */ +const bundleOptions = { + ...sharedOptions, + platform: 'browser', + target: 'es2022', + entryPoints: [ + './src/index.ts' + ] +} + +/** @type BuildOptions */ +const cliOptions = { + ...sharedOptions, platform: 'node', + target: 'node22', + outdir: 'dist/bin', entryPoints: [ './src/bin/cli.ts', './src/bin/server.ts' ], - format: 'esm', - legalComments: 'inline', - outdir: 'dist/bin', - packages: 'external', - target: 'node22' -}) + packages: 'external' +} + +await build(bundleOptions) +await build(cliOptions) diff --git a/package.json b/package.json index ca648b3..de36bf7 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,6 @@ "AUTHORS.md", "package.json.license" ], - "main": "./dist/main.min.js", "bin": { "nano-pow": "dist/bin/nano-pow.sh" }, @@ -66,10 +65,9 @@ "type": "module", "exports": { ".": { - "types": "./dist/types.d.ts", - "default": "./dist/main.min.js" + "types": "./dist/index.d.ts", + "default": "./dist/index.js" } }, - "types": "./dist/types.d.ts", - "unpkg": "./dist/main.min.js" + "types": "./dist/index.d.ts" } diff --git a/src/bin/server.ts b/src/bin/server.ts index f3d1acc..655e23e 100755 --- a/src/bin/server.ts +++ b/src/bin/server.ts @@ -2,15 +2,15 @@ //! SPDX-FileCopyrightText: 2025 Chris Duncan //! SPDX-License-Identifier: GPL-3.0-or-later -import * as http from 'node:http' +import { WorkErrorResponse, WorkGenerateResponse, WorkValidateResponse } from '#types' +import { isHex32, isHex8, Logger } from '#utils' import { Serializable } from 'node:child_process' import { hash } from 'node:crypto' import { readFile, writeFile } from 'node:fs/promises' +import * as http from 'node:http' import { homedir } from 'node:os' import { join } from 'node:path' import { launch } from 'puppeteer' -import { WorkErrorResponse, WorkGenerateResponse, WorkValidateResponse } from '#types' -import { isHex8, isHex32, Logger } from '#utils' /** * Used to define NanoPow server configuration. @@ -90,7 +90,7 @@ await loadConfig() // Initialize puppeteer LOG: logger.log('starting work server') -const NanoPow = await readFile(new URL('../main.min.js', import.meta.url), 'utf-8') +const NanoPow = await readFile(new URL('../index.js', import.meta.url), 'utf-8') LOG: logger.log('launching puppeteer browser') const browser = await launch({ handleSIGHUP: false, diff --git a/src/lib/generate/index.ts b/src/lib/generate/index.ts index 9fd5b9f..c083030 100644 --- a/src/lib/generate/index.ts +++ b/src/lib/generate/index.ts @@ -1,7 +1,7 @@ //! SPDX-FileCopyrightText: 2025 Chris Duncan //! SPDX-License-Identifier: GPL-3.0-or-later -export { generate as NanoPowCpu } from '#lib/generate/cpu' -export { generate as NanoPowWasm } from '#lib/generate/wasm' -export { generate as NanoPowWebgl } from '#lib/generate/webgl' -export { generate as NanoPowWebgpu } from '#lib/generate/webgpu' +export { generate as NanoPowCpu } from './cpu' +export { generate as NanoPowWasm } from './wasm' +export { generate as NanoPowWebgl } from './webgl' +export { generate as NanoPowWebgpu } from './webgpu' diff --git a/tsconfig.json b/tsconfig.json index f6f98b7..70c3033 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -30,7 +30,7 @@ ] }, "include": [ - "src/main.ts", + "src/index.ts", "src/**/*.ts" ], "exclude": [ -- 2.47.3