From f335a03f7c9b6db84c3cd338d5245a5bd5bbc56c Mon Sep 17 00:00:00 2001 From: Aric Camarata Date: Tue, 30 Jun 2026 15:56:57 -0400 Subject: [PATCH] add opt-in anonymous telemetry (#1) * add opt-in telemetry via @acamarata/telemetry (off by default) * chore: update lockfile for @acamarata/telemetry devDep * chore: fix prettier formatting on telemetry import --- README.md | 5 +++++ TELEMETRY.md | 8 ++++++++ package.json | 3 ++- pnpm-lock.yaml | 9 +++++++++ src/index.ts | 9 +++++++++ 5 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 TELEMETRY.md diff --git a/README.md b/README.md index 2ee1422..d4164e9 100644 --- a/README.md +++ b/README.md @@ -59,6 +59,11 @@ This package includes the Solar Position Algorithm (SPA) developed at the Nation > Reda, I., Andreas, A. (2004). "Solar Position Algorithm for Solar Radiation Applications." *Solar Energy*, 76(5), 577-589. +## Telemetry + +This package supports opt-in anonymous usage telemetry — off by default. +Enable: `ACAMARATA_TELEMETRY=1`. See [TELEMETRY.md](./TELEMETRY.md) for what is sent and how to disable. + ## License MIT (wrapper, TypeScript source, and build tooling). The NREL SPA C source (`src/spa.c`, `src/spa.h`) is subject to its own terms; see the notice in those files. diff --git a/TELEMETRY.md b/TELEMETRY.md new file mode 100644 index 0000000..99cfaa4 --- /dev/null +++ b/TELEMETRY.md @@ -0,0 +1,8 @@ +# Telemetry Disclosure + +This package supports opt-in anonymous usage telemetry via [`@acamarata/telemetry`](https://github.com/acamarata/telemetry). + +Telemetry is **off by default**. No data is sent unless you set `ACAMARATA_TELEMETRY=1`. + +Full disclosure (what is sent, where it goes, how to disable): +[github.com/acamarata/telemetry/blob/main/TELEMETRY.md](https://github.com/acamarata/telemetry/blob/main/TELEMETRY.md) diff --git a/package.json b/package.json index 97af663..2310965 100644 --- a/package.json +++ b/package.json @@ -88,7 +88,8 @@ "typedoc": "^0.28.19", "typedoc-plugin-markdown": "^4.11.0", "typescript": "^5.9.3", - "typescript-eslint": "^8.56.1" + "typescript-eslint": "^8.56.1", + "@acamarata/telemetry": "^0.1.0" }, "packageManager": "pnpm@10.11.1", "prettier": "@acamarata/prettier-config" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a75d367..e801109 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,6 +14,9 @@ importers: '@acamarata/prettier-config': specifier: ^0.1.0 version: 0.1.0(prettier@3.8.1) + '@acamarata/telemetry': + specifier: ^0.1.0 + version: 0.1.0 '@acamarata/tsconfig': specifier: ^0.1.0 version: 0.1.0 @@ -81,6 +84,10 @@ packages: peerDependencies: prettier: '>=3.0.0' + '@acamarata/telemetry@0.1.0': + resolution: {integrity: sha512-iP09ZD0bHencHLbv6kQZDgwN9crLCWGKxmiMrfJjhBCoWTgv4koSgg0Li/LFKwCCFluua6orj9fVeQ8eqcJXSQ==} + engines: {node: '>=20'} + '@acamarata/tsconfig@0.1.0': resolution: {integrity: sha512-bgzyBak43mE+0HhduZX3cvaPjKcggtGGZZMjr35qtYWolsIWgZ9nx7OOswbVYoU35qoUv6rZ0mTK6GbZ8QTYjw==} engines: {node: '>=20'} @@ -1225,6 +1232,8 @@ snapshots: dependencies: prettier: 3.8.1 + '@acamarata/telemetry@0.1.0': {} + '@acamarata/tsconfig@0.1.0': {} '@bcoe/v8-coverage@1.0.2': {} diff --git a/src/index.ts b/src/index.ts index 2210ffc..904d2af 100644 --- a/src/index.ts +++ b/src/index.ts @@ -309,3 +309,12 @@ export async function spaFormatted( } export default spa; + +// ── Opt-in anonymous telemetry ──────────────────────────────────────────────── +// Off by default. Enable: ACAMARATA_TELEMETRY=1 +// What is sent + how to disable: https://github.com/acamarata/telemetry/blob/main/TELEMETRY.md +import("@acamarata/telemetry") + .then(({ track }) => track("load", { package: "solar-spa", version: "2.0.2" })) + .catch(() => { + // telemetry not installed or disabled — that is fine + });