mirror of
https://github.com/acamarata/nrel-spa.git
synced 2026-06-30 19:04:25 +00:00
Complete modernization of the package. The core SPA algorithm is unchanged and validated; everything else is rebuilt to match current JavaScript ecosystem standards. Changes: - TypeScript wrapper in src/ with full type definitions - Dual CJS/ESM build via tsup (dist/index.cjs, dist/index.mjs) - Core algorithm moved from dist/spa.js to lib/spa.js (same code) - Input validation with descriptive TypeError/RangeError messages - formatTime() and SPA function code constants as named exports - getSpa() / calcSpa() accept null for optional args (tz, options) - Test suite: 61 ESM assertions and 17 CJS assertions - GitHub Actions CI: Node 20/22/24 matrix, typecheck, pack-check - GitHub Wiki: Home, API Reference, Architecture, Twilight, NREL SPA - NREL attribution in LICENSE and README per their license terms - package.json: exports map, files, engines >=20, sideEffects: false - Author corrected to Aric Camarata; repository.url uses git+https:// - LICENSE year corrected to 2023-2026 - Removed: index.js, test.js, dist/spa.js (superseded by above)
30 lines
844 B
TypeScript
30 lines
844 B
TypeScript
import { defineConfig } from 'tsup';
|
|
|
|
export default defineConfig({
|
|
entry: ['src/index.ts'],
|
|
format: ['cjs', 'esm'],
|
|
dts: true,
|
|
clean: true,
|
|
outDir: 'dist',
|
|
splitting: false,
|
|
sourcemap: true,
|
|
target: 'es2020',
|
|
platform: 'node',
|
|
outExtension({ format }) {
|
|
return {
|
|
js: format === 'cjs' ? '.cjs' : '.mjs',
|
|
};
|
|
},
|
|
banner({ format }) {
|
|
if (format === 'esm') {
|
|
return {
|
|
js: `import { createRequire as __cr } from 'node:module';\nconst __require = __cr(import.meta.url);`,
|
|
};
|
|
}
|
|
return {};
|
|
},
|
|
// The core SPA algorithm lives in lib/spa.js (the JS port of the NREL C source).
|
|
// It is checked into git and ships with the package. We load it at runtime so it
|
|
// is kept external (not bundled) and resolves via the createRequire shim in ESM.
|
|
external: ['../lib/spa.js'],
|
|
});
|