solar-spa/.github/wiki/api/functions/spa.md
Aric Camarata 3c848806ab docs: add TypeDoc API generation (typedoc@0.28.19 + typedoc-plugin-markdown@4.11.0)
Add typedoc and typedoc-plugin-markdown as devDependencies. Add typedoc.json config
targeting src/index.ts with markdown output to .github/wiki/api. Add docs script to
package.json. Generate initial API reference pages.

Part of T-E8-03 — TypeDoc automation for all 12 JS/TS packages.
2026-05-30 16:41:57 -04:00

1.8 KiB

solar-spa v2.0.1


solar-spa / spa

Function: spa()

spa(date, latitude, longitude, options?): Promise<SpaResult>

Defined in: index.ts:204

Purpose: Compute solar position using the NREL SPA algorithm via WASM. Inputs: date, latitude (-90..90), longitude (-180..180), optional SpaOptions Outputs: Promise with zenith, azimuth, incidence, sunrise/sunset/transit, eot Constraints: WASM module is a singleton; first call incurs ~3-5 ms init cost. Pass explicit timezone for server-side code (system may be UTC, not local). Input validation runs before WASM call; invalid inputs throw before allocating. SPORT: packages.md → solar-spa row

Parameters

date

Date

Date and time for the calculation

latitude

number

Observer latitude in degrees (-90 to 90)

longitude

number

Observer longitude in degrees (-180 to 180)

options?

SpaOptions

Optional observer and algorithm parameters (timezone, elevation, etc.)

Returns

Promise<SpaResult>

Solar position result with all computed values

Throws

If date is not a valid Date, or if latitude/longitude/option fields are not numbers

Throws

If latitude/longitude are out of bounds, or if option fields are Infinity/NaN

Throws

If WASM memory allocation fails or SPA returns a non-zero error code

Example

import { spa } from 'solar-spa';
const result = await spa(new Date('2025-06-21T12:00:00Z'), 40.7128, -74.006, { timezone: -4 });
console.log(result.zenith);   // ~27 degrees
console.log(result.sunrise);  // ~5.4 fractional hours