mirror of
https://github.com/acamarata/nrel-spa.git
synced 2026-06-30 19:04:25 +00:00
Fixed: - calcSpa with empty angles array no longer crashes (consistent guard with getSpa) - getSpa with SPA_ZA/SPA_ZA_INC now returns NaN for sunrise/solarNoon/sunset instead of misleading 0; calcSpa returns "N/A" for those fields - lib/spa.js header comment corrected from dist/spa.js to lib/spa.js - dist/spa.js removed (file moved to lib/spa.js in v2.0.0, stale copy deleted) - wiki-sync.yml handles first-run when GitHub Wiki repo does not yet exist - CI pack-check grep uses word-boundary pattern to prevent false prefix matches - Removed package-import-method=hardlink from .npmrc (pnpm default, caused npm warn) Added: - options.function validated before calculation; invalid code throws RangeError - angles with non-RTS function code throws RangeError (requires suntransit) - TypeScript function overloads for getSpa and calcSpa; angles typed as [number, ...number[]] non-empty tuple, narrows return type automatically - SpaFormattedAnglesResult interface, consistent with SpaAnglesResult - CI jobs declare explicit permissions: contents: read - Wiki: Implementation Comparison page with accuracy table (8 locations vs C reference, max delta 0.49 s) and performance benchmarks (nrel-spa vs solar-spa vs C, both SPA_ZA_RTS and SPA_ZA modes, 200k iterations on Node v24.6.0) - Wiki: API Reference updated with named types, all throws, Named Types block - Wiki: Architecture updated with all exported interfaces
71 lines
1.6 KiB
JSON
71 lines
1.6 KiB
JSON
{
|
|
"name": "nrel-spa",
|
|
"version": "2.0.1",
|
|
"description": "Pure JavaScript implementation of the NREL Solar Position Algorithm (SPA). Calculates solar zenith, azimuth, sunrise, sunset, and solar noon for any location and date.",
|
|
"author": "Aric Camarata",
|
|
"license": "MIT",
|
|
"main": "./dist/index.cjs",
|
|
"module": "./dist/index.mjs",
|
|
"types": "./dist/index.d.ts",
|
|
"exports": {
|
|
".": {
|
|
"import": {
|
|
"types": "./dist/index.d.mts",
|
|
"default": "./dist/index.mjs"
|
|
},
|
|
"require": {
|
|
"types": "./dist/index.d.ts",
|
|
"default": "./dist/index.cjs"
|
|
}
|
|
}
|
|
},
|
|
"sideEffects": false,
|
|
"files": [
|
|
"dist/",
|
|
"lib/",
|
|
"README.md",
|
|
"CHANGELOG.md",
|
|
"LICENSE"
|
|
],
|
|
"scripts": {
|
|
"build": "tsup",
|
|
"typecheck": "tsc --noEmit",
|
|
"pretest": "tsup",
|
|
"test": "node test.mjs && node test-cjs.cjs",
|
|
"prepublishOnly": "tsup"
|
|
},
|
|
"keywords": [
|
|
"solar",
|
|
"spa",
|
|
"nrel",
|
|
"sunrise",
|
|
"sunset",
|
|
"solar-noon",
|
|
"zenith",
|
|
"azimuth",
|
|
"solar-position",
|
|
"astronomy",
|
|
"twilight",
|
|
"javascript"
|
|
],
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "git+https://github.com/acamarata/nrel-spa.git"
|
|
},
|
|
"homepage": "https://github.com/acamarata/nrel-spa#readme",
|
|
"bugs": {
|
|
"url": "https://github.com/acamarata/nrel-spa/issues"
|
|
},
|
|
"engines": {
|
|
"node": ">=20"
|
|
},
|
|
"publishConfig": {
|
|
"access": "public",
|
|
"registry": "https://registry.npmjs.org/"
|
|
},
|
|
"devDependencies": {
|
|
"@types/node": "^25.3.0",
|
|
"tsup": "^8.5.1",
|
|
"typescript": "^5.9.3"
|
|
}
|
|
}
|